<?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>213884</bug_id>
          
          <creation_ts>2020-07-02 08:20:05 -0700</creation_ts>
          <short_desc>[WK2] Add API to allow embedder to set a timezone override</short_desc>
          <delta_ts>2022-05-11 18:23:02 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Philippe Normand">pnormand</reporter>
          <assigned_to name="Philippe Normand">pnormand</assigned_to>
          <cc>achristensen</cc>
    
    <cc>benjamin</cc>
    
    <cc>berto</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>msaboff</cc>
    
    <cc>pfeldman</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1668248</commentid>
    <comment_count>0</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-07-02 08:20:05 -0700</bug_when>
    <thetext>There are ways to configure the timezone with the TZ environment variable, but having a generic API for this in the WebsiteDataStoreConfiguration would be nice to have as well. It would also allow fine-grained control over multiple pages, for instance it&apos;s not possible currently to have two pages in different timezones. For automation and testing purposes this is a limitation currently.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668251</commentid>
    <comment_count>1</comment_count>
      <attachid>403368</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-07-02 08:33:32 -0700</bug_when>
    <thetext>Created attachment 403368
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668252</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2020-07-02 08:34:29 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668533</commentid>
    <comment_count>3</comment_count>
      <attachid>403451</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-07-03 04:58:02 -0700</bug_when>
    <thetext>Created attachment 403451
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669055</commentid>
    <comment_count>4</comment_count>
      <attachid>403451</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-07-06 09:56:06 -0700</bug_when>
    <thetext>Comment on attachment 403451
Patch

This isn&apos;t really website data or associated with a network session.  I think this should go on WKPageConfigurationRef/WKWebViewConfiguration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669766</commentid>
    <comment_count>5</comment_count>
      <attachid>403787</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-07-08 09:12:14 -0700</bug_when>
    <thetext>Created attachment 403787
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669768</commentid>
    <comment_count>6</comment_count>
      <attachid>403789</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-07-08 09:15:55 -0700</bug_when>
    <thetext>Created attachment 403789
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670419</commentid>
    <comment_count>7</comment_count>
      <attachid>403789</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-07-10 05:31:56 -0700</bug_when>
    <thetext>Comment on attachment 403789
Patch

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

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:486
&gt; +        WTF::setTimeZoneOverride(*parameters.timeZoneOverride);

There&apos;s no error handling here. If this returns false it might make sense to send an error message back to the UIProcess...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671852</commentid>
    <comment_count>8</comment_count>
      <attachid>403789</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-07-15 12:01:38 -0700</bug_when>
    <thetext>Comment on attachment 403789
Patch

V3 coming ... soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672435</commentid>
    <comment_count>9</comment_count>
      <attachid>404553</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-07-17 03:51:28 -0700</bug_when>
    <thetext>Created attachment 404553
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675586</commentid>
    <comment_count>10</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-07-28 06:21:50 -0700</bug_when>
    <thetext>Ping?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679718</commentid>
    <comment_count>11</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-08-12 03:08:28 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #4)
&gt; Comment on attachment 403451 [details]
&gt; Patch
&gt; 
&gt; This isn&apos;t really website data or associated with a network session.  I
&gt; think this should go on WKPageConfigurationRef/WKWebViewConfiguration.

This is the case now. A new review would be most welcome ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679739</commentid>
    <comment_count>12</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-08-12 09:09:17 -0700</bug_when>
    <thetext>I&apos;m curious what the motivation for the addition of this API is.  Who needs this ability?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679947</commentid>
    <comment_count>13</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-08-13 01:58:25 -0700</bug_when>
    <thetext>It&apos;s often needed for testing purposes. See these posts for instance:

https://stackoverflow.com/questions/16448754/how-to-use-a-custom-time-in-browser-to-test-for-client-vs-server-time-difference
https://stackoverflow.com/questions/12220717/how-to-mock-the-browsers-timezone/31379288#comment60641443_31379288
https://stackoverflow.com/questions/11453740/fake-time-zone-for-web-app-testing

One way to simulate different timezone is to set the TZ env variable but it doesn&apos;t work the same way on all platforms, and it affects all webviews of the browser context. With this API you can simulate timezones on a per-webview basis.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680025</commentid>
    <comment_count>14</comment_count>
      <attachid>404553</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-08-13 11:20:20 -0700</bug_when>
    <thetext>Comment on attachment 404553
Patch

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

&gt; Source/WTF/wtf/DateMath.cpp:339
&gt; +    if (tz.cal) {

I believe this uses uninitialized memory.  Add a { nullptr } to its declaration.

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/TimeZoneOverride.mm:7
&gt; + * modify it under the terms of the GNU Library General Public
&gt; + * License as published by the Free Software Foundation; either
&gt; + * version 2 of the License, or (at your option) any later version.

Is there a reason this is not using the 2-clause BSD we usually use for new files?  I think I&apos;d prefer that unless there&apos;s a good reason to do this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680249</commentid>
    <comment_count>15</comment_count>
      <attachid>404553</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-08-14 02:48:14 -0700</bug_when>
    <thetext>Comment on attachment 404553
Patch

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

&gt; Source/WTF/wtf/DateMath.cpp:1096
&gt; +    // Timezone is ascii.
&gt; +    Vector&lt;UChar&gt; buffer(timeZone.length());
&gt; +    UChar* bufferStart = buffer.data();
&gt; +    CString ctz = timeZone.utf8();
&gt; +    if (!Unicode::convertUTF8ToUTF16(ctz.data(), ctz.data() + ctz.length(), &amp;bufferStart, bufferStart + timeZone.length()))
&gt; +        return false;
&gt; +
&gt; +    Vector&lt;UChar, 32&gt; canonicalBuffer(32);
&gt; +    UErrorCode status = U_ZERO_ERROR;
&gt; +    auto canonicalLength = ucal_getCanonicalTimeZoneID(buffer.data(), buffer.size(), canonicalBuffer.data(), canonicalBuffer.size(), nullptr, &amp;status);
&gt; +    if (status == U_BUFFER_OVERFLOW_ERROR) {
&gt; +        status = U_ZERO_ERROR;
&gt; +        canonicalBuffer.grow(canonicalLength);
&gt; +        ucal_getCanonicalTimeZoneID(buffer.data(), buffer.size(), canonicalBuffer.data(), canonicalLength, nullptr, &amp;status);
&gt; +    }
&gt; +    if (!U_SUCCESS(status))
&gt; +        return false;

This is duplicated in isTimeZoneValid(). Could we make isTimeZoneValid() return an Optional&lt;Vector&lt;UChar, 32&gt;&gt;, for example?

&gt; Source/WTF/wtf/DateMath.cpp:1119
&gt; +String timeZoneOverride()

String&amp; ? or do we really need to always copy?

&gt; Source/WTF/wtf/DateMath.cpp:1124
&gt; +String timeZoneDisplayNameOverride()

Ditto.

&gt; Source/WebKit/Shared/WebPageCreationParameters.cpp:165
&gt; +    encoder &lt;&lt; timeZoneOverride;

The time zone is applied globally to the web process, not specific to a page, so I think it would be better in WebProcessCreationParameters

&gt; Source/WebKit/UIProcess/API/APIPageConfiguration.h:167
&gt; +    const WTF::String timeZoneOverride() const { return m_timeZoneOverride; }

String&amp;

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfiguration.mm:1289
&gt; +- (void)_setTimeZoneOverride:(NSString *)timeZone

I don&apos;t know if the cocoa api ensures one process per page nowadays, but if it doesn&apos;t I think this isn&apos;t the right place to set it.

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp:354
&gt; +        g_value_set_string(value, context-&gt;priv-&gt;timeZoneOverride.data());

I would add a public getter for the property.

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp:387
&gt; +        context-&gt;priv-&gt;timeZoneOverride = g_value_get_string(value);

I think we should validate the given timezone here, before setting it.

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp:580
&gt; +     * The timezone override for this web context.

We should explain here what the timezone override is for and the expected format.

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp:1939
&gt; +    pageConfiguration-&gt;setTimeZoneOverride(context-&gt;priv-&gt;timeZoneOverride.data());

String::fromUTF8()

&gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebContext.cpp:468
&gt; +static void testWebContextTimeZone(WebViewTest* test, gconstpointer)

I would call this testWebContextDefaultTimeZone or NoOverride. You could also probably use a single test and just create two web contexts.

&gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebContext.cpp:475
&gt; +    // By default the test harness uses the Pacific/Los_Angeles timezone which is +7 hours (420
&gt; +    // minutes) compared to GMT.

This could be one line.

&gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebContext.cpp:476
&gt; +    g_assert_cmpint(WebViewTest::javascriptResultToNumber(javascriptResult), ==, 420);

Doesn&apos;t this depend on the current locale? or do we change it always for tests?

&gt; Tools/TestWebKitAPI/glib/WebKitGLib/TestMain.cpp:32
&gt; +const char* Test::timeZoneOverride = &quot;&quot;;

Better leave it uninitialized an nullptr will be passed when not set.

&gt; Tools/TestWebKitAPI/glib/WebKitGLib/TestMain.h:144
&gt; +            &quot;time-zone-override&quot;, timeZoneOverride,

We don&apos;t need this is you simply create a custom web context in the test.

&gt; Tools/flatpak/flatpakutils.py:720
&gt; -                &quot;TZ&quot;: &quot;PST8PDT&quot;,
&gt; +                &quot;TZ&quot;: &quot;America/Los_Angeles&quot;,

Ah! here it&apos;s. So, the test will always fail when run manually or using jhbuild. We shouldn&apos;t make the tests depend on this. Can&apos;t we change the environment variable in TestMain.cpp?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680255</commentid>
    <comment_count>16</comment_count>
      <attachid>404553</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-08-14 04:06:30 -0700</bug_when>
    <thetext>Comment on attachment 404553
Patch

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

&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfiguration.mm:1289
&gt;&gt; +- (void)_setTimeZoneOverride:(NSString *)timeZone
&gt; 
&gt; I don&apos;t know if the cocoa api ensures one process per page nowadays, but if it doesn&apos;t I think this isn&apos;t the right place to set it.

Alex, what do you think about this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680261</commentid>
    <comment_count>17</comment_count>
      <attachid>404553</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-08-14 05:11:44 -0700</bug_when>
    <thetext>Comment on attachment 404553
Patch

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

&gt;&gt; Source/WTF/wtf/DateMath.cpp:1096
&gt;&gt; +        return false;
&gt; 
&gt; This is duplicated in isTimeZoneValid(). Could we make isTimeZoneValid() return an Optional&lt;Vector&lt;UChar, 32&gt;&gt;, for example?

The canonicalLength would need to be returned as well. We could return an Optional&lt;Vector&lt;...&gt;, int32_t&gt;... I suppose. I&apos;m not sure it would pay off though.

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebContext.cpp:468
&gt;&gt; +static void testWebContextTimeZone(WebViewTest* test, gconstpointer)
&gt; 
&gt; I would call this testWebContextDefaultTimeZone or NoOverride. You could also probably use a single test and just create two web contexts.

But then I can&apos;t reuse the API of WebViewTest to run JS code and wait for the result.

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebContext.cpp:476
&gt;&gt; +    g_assert_cmpint(WebViewTest::javascriptResultToNumber(javascriptResult), ==, 420);
&gt; 
&gt; Doesn&apos;t this depend on the current locale? or do we change it always for tests?

I can sprinkle a setenv call before this code and hope for the best!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680264</commentid>
    <comment_count>18</comment_count>
      <attachid>404553</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-08-14 05:25:53 -0700</bug_when>
    <thetext>Comment on attachment 404553
Patch

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

&gt;&gt; Source/WebKit/Shared/WebPageCreationParameters.cpp:165
&gt;&gt; +    encoder &lt;&lt; timeZoneOverride;
&gt; 
&gt; The time zone is applied globally to the web process, not specific to a page, so I think it would be better in WebProcessCreationParameters

This contradicts comment 4 then? Before moving this flag from APIPageConfiguration to APIProcessPoolConfiguration I would like to reach an agreement between the reviewers involved here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680267</commentid>
    <comment_count>19</comment_count>
      <attachid>404553</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-08-14 06:16:47 -0700</bug_when>
    <thetext>Comment on attachment 404553
Patch

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

&gt;&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebContext.cpp:468
&gt;&gt;&gt; +static void testWebContextTimeZone(WebViewTest* test, gconstpointer)
&gt;&gt; 
&gt;&gt; I would call this testWebContextDefaultTimeZone or NoOverride. You could also probably use a single test and just create two web contexts.
&gt; 
&gt; But then I can&apos;t reuse the API of WebViewTest to run JS code and wait for the result.

Yes, it&apos;s just a function call, and you can use a lambda for the callback. I think it&apos;s weird to have two test cases for the same thing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680276</commentid>
    <comment_count>20</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-08-14 08:18:04 -0700</bug_when>
    <thetext>(In reply to Philippe Normand from comment #16)
&gt; Comment on attachment 404553 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=404553&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfiguration.mm:1289
&gt; &gt;&gt; +- (void)_setTimeZoneOverride:(NSString *)timeZone
&gt; &gt; 
&gt; &gt; I don&apos;t know if the cocoa api ensures one process per page nowadays, but if it doesn&apos;t I think this isn&apos;t the right place to set it.
&gt; 
&gt; Alex, what do you think about this?

Not quite, but close.  This property should definitely be on the WKWebViewConfiguration instead of WebsiteDataStoreConfiguration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680283</commentid>
    <comment_count>21</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-08-14 08:44:36 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #20)
&gt; (In reply to Philippe Normand from comment #16)
&gt; &gt; Comment on attachment 404553 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=404553&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfiguration.mm:1289
&gt; &gt; &gt;&gt; +- (void)_setTimeZoneOverride:(NSString *)timeZone
&gt; &gt; &gt; 
&gt; &gt; &gt; I don&apos;t know if the cocoa api ensures one process per page nowadays, but if it doesn&apos;t I think this isn&apos;t the right place to set it.
&gt; &gt; 
&gt; &gt; Alex, what do you think about this?
&gt; 
&gt; Not quite, but close.  This property should definitely be on the
&gt; WKWebViewConfiguration instead of WebsiteDataStoreConfiguration.

Not website data sore, but process pool, since it&apos;s global to the web process, it&apos;s not specific to the web view.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682295</commentid>
    <comment_count>22</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-08-24 04:47:25 -0700</bug_when>
    <thetext>Hi Alex, back to this patch after a week off. So, would you agree to have this API in _WKProcessPoolConfiguration as Carlos is suggesting?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682374</commentid>
    <comment_count>23</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-08-24 10:17:43 -0700</bug_when>
    <thetext>The implementation currently uses a process-global override in the web process.  There is no reason it must be process-global, right?  It seems like an implementation shortcut.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682389</commentid>
    <comment_count>24</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-08-24 10:35:41 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #23)
&gt; The implementation currently uses a process-global override in the web
&gt; process.  There is no reason it must be process-global, right?  It seems
&gt; like an implementation shortcut.

It&apos;s a process-global implementation because the DateTime functions like formatDateTime() are not context-aware, AFAICT. The timezone information is retrieved from ICU or from the override static struct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682394</commentid>
    <comment_count>25</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-08-24 10:50:39 -0700</bug_when>
    <thetext>formatDateTime might not be context aware now, but could it be made context aware?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682616</commentid>
    <comment_count>26</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-08-25 03:23:16 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #25)
&gt; formatDateTime might not be context aware now, but could it be made context
&gt; aware?

Maybe yes, the TimeZoneOverride struct could move to the JSC::VM, for instance. But then another issue is with calculateLocalTimeOffset() which is called from various places in WebCore, that does look like a non-trivial amount of work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682700</commentid>
    <comment_count>27</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-08-25 10:37:03 -0700</bug_when>
    <thetext>I agree it&apos;s not a trivial amount of work, but I think it&apos;s better than cementing us into an API shape that is based on how convenient it is to implement a certain way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686931</commentid>
    <comment_count>28</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-09-09 02:10:12 -0700</bug_when>
    <thetext>I think it makes sense to override the timezone globally, since we are emulating the system has a different timezone. This is just for testing and should be documented as such, so I don&apos;t think it&apos;s worth the effort to make the timezone per web view just for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1689416</commentid>
    <comment_count>29</comment_count>
      <attachid>409021</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-09-17 04:37:01 -0700</bug_when>
    <thetext>Created attachment 409021
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1689418</commentid>
    <comment_count>30</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2020-09-17 04:38:09 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See https://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1689460</commentid>
    <comment_count>31</comment_count>
      <attachid>409036</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-09-17 08:44:29 -0700</bug_when>
    <thetext>Created attachment 409036
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1690184</commentid>
    <comment_count>32</comment_count>
      <attachid>409036</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-20 11:11:10 -0700</bug_when>
    <thetext>Comment on attachment 409036
Patch

Test is failing on macOS. Need a revised version that resolves that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698494</commentid>
    <comment_count>33</comment_count>
      <attachid>411545</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-10-16 01:17:38 -0700</bug_when>
    <thetext>Created attachment 411545
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698520</commentid>
    <comment_count>34</comment_count>
      <attachid>411545</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-10-16 03:18:14 -0700</bug_when>
    <thetext>Comment on attachment 411545
Patch

Failed
    TestWebKitAPI.TimeZoneOverrideTest.TimeZoneOverride
        _RegisterApplication(), FAILED TO establish the default connection to the WindowServer, _CGSDefaultConnection() is NULL.
        
        /Volumes/Data/worker/macOS-Mojave-Release-Build-EWS/build/Tools/TestWebKitAPI/Tests/WebKitCocoa/TimeZoneOverride.mm:66
        Expected equality of these values:
          [result stringValue]
            Which is: &quot;420&quot;
          &quot;-120&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861871</commentid>
    <comment_count>35</comment_count>
      <attachid>457711</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2022-04-15 12:05:42 -0700</bug_when>
    <thetext>Created attachment 457711
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861872</commentid>
    <comment_count>36</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2022-04-15 12:08:33 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #32)
&gt; Comment on attachment 409036 [details]
&gt; Patch
&gt; 
&gt; Test is failing on macOS. Need a revised version that resolves that.

Resurrecting this patch. I&apos;ve updated the implementation to make it work on all platforms, the macOS test is no passing.

Darin, Alex, can you do a review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861888</commentid>
    <comment_count>37</comment_count>
      <attachid>457711</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-04-15 13:20:27 -0700</bug_when>
    <thetext>Comment on attachment 457711
Patch

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

Looks fine assuming all tests pass, but I think they’re not all passing yet

&gt; Source/JavaScriptCore/ChangeLog:3
&gt; +        [WK2] Add API to allow embedder to set a timezone override

I’m not sure I love the use of &quot;override&quot; here as a noun meaning &quot;an explicitly set value that overrides the normal automatic time zone determination&quot;. I wish there was a less peculiar term of art. But for now, I just went with it.

&gt; Source/JavaScriptCore/runtime/DateConversion.cpp:101
&gt; +            String timeZoneOverride = WTF::timeZoneDisplayNameOverride();

This is not how we currently handle namespace in WTF. There should be a &quot;using&quot; in the header and no WTF prefix here.

&gt; Source/JavaScriptCore/runtime/DateConversion.cpp:102
&gt; +            if (!timeZoneOverride.isEmpty())

Nice style to scope the value by putting it inside the if, also allows using a one word name:

    if (auto&amp; override = timeZoneDisplayNameOverride(); !override.isEmpty())
        timeZoneName = override;

&gt; Source/JavaScriptCore/runtime/DateConversion.cpp:109
&gt; +                const WCHAR* winTimeZoneName = t.isDST() ? timeZoneInformation.DaylightName : timeZoneInformation.StandardName;
&gt; +                timeZoneName = String(winTimeZoneName);

Can we merge these into one line?

    timeZoneName = String { t.isDST() ? timeZoneInformation.DaylightName : timeZoneInformation.StandardName };

&gt; Source/JavaScriptCore/runtime/DateConversion.cpp:114
&gt; +                struct tm gtm = t;
&gt; +                char tzName[70];
&gt; +                strftime(tzName, sizeof(tzName), &quot;%Z&quot;, &amp;gtm);
&gt; +                timeZoneName = String::fromUTF8(tzName);

This code is, and always has been, incorrect for cases where the time zone doesn’t fit into the buffer. In that case, strftime returns 0, and the contents of the buffer are *indeterminate*. We should fix this small mistake in how we are calling strftime by not looking at tzName if strftime returns 0.

We also could give the local variables better names, but that’s not required.

&gt; Source/JavaScriptCore/runtime/JSDateMath.cpp:337
&gt; +    String tz = WTF::timeZoneOverride();
&gt; +    if (!tz.isEmpty())
&gt; +        return tz;

In new code, please follow WebKit coding style and use words, not abbreviations, for variable names:

    if (auto&amp; override = timeZoneOverride; !override.isEmpty())
        return override;

&gt; Source/JavaScriptCore/runtime/JSDateMath.cpp:421
&gt; +        m_timeZoneCache = std::unique_ptr&lt;OpaqueICUTimeZone, OpaqueICUTimeZoneDeleter&gt;(bitwise_cast&lt;OpaqueICUTimeZone*&gt;(timezone));

Frustrating that this requires direct use of bitwise_cast. We should find a safer way to encapsulate that.

I’d also like this to be more like a one-liner the way the code just below is; want the memory allocation and the taking ownership to be as tightly bound as possible. If the line is too long, we can help by naming the specific std::unique_ptr with arguments so we don’t have to write it out.

&gt; Source/WTF/wtf/DateMath.cpp:343
&gt; +        int32_t offset = ucal_get(tz.cal, UCAL_ZONE_OFFSET, &amp;status);
&gt; +        int32_t dstOffset = ucal_get(tz.cal, UCAL_DST_OFFSET, &amp;status);

May need some error checking here. We are just ignoring status. That’s not necessarily safe.

&gt; Source/WTF/wtf/DateMath.cpp:1046
&gt; +    // Timezone is ascii.

Not clear on the purpose of this comment.

&gt; Source/WTF/wtf/DateMath.cpp:1051
&gt; +    UChar* bufferStart = buffer.data();
&gt; +    CString ctz = timeZone.utf8();
&gt; +    if (!Unicode::convertUTF8ToUTF16(ctz.data(), ctz.data() + ctz.length(), &amp;bufferStart, bufferStart + timeZone.length()))
&gt; +        return std::nullopt;

This is a very strange way to convert a WTF::String to UTF-16. There is no reason to first convert the UTF-8 and then back to UTF-16. A better way is:

  StringView { timeZone }.getCharactersWithUpconvert(buffer.data());

We can possibly optimize even further. Changing the argument to this function to already be StringView will optimize still further.

&gt; Source/WTF/wtf/DateMath.h:396
&gt; +WTF_EXPORT_PRIVATE std::optional&lt;Vector&lt;UChar, 32&gt;&gt; isTimeZoneValid(const String&amp;);

I suggest changing the argument type here to StringView, since this function takes no advantage of the fact that it’s already in a String.

This is not the correct name for a function that parses a time zone and returns the canonical form. I would call this parseTimeZone or computeCanonicalTimeZone, or something like that.

If the external caller only wants to check *if* the time zone is valid, I suggest publishing only the version that returns a bool rather than returning the parsed time zone to that caller. That can be a cover that just converts the optional to a boolean on the way out.

&gt; Source/WTF/wtf/DateMath.h:397
&gt; +WTF_EXPORT_PRIVATE bool setTimeZoneOverride(const String&amp;);

Callers are making WTF::String just to pass to this function, but that is unnecessary. Given how it’s used, I suggest we instead have this function take a StringView, or even a const char*. It would be easy for the callers to deal with either of those. If we must use UTF-16, then I suggest StringView rather than const String&amp;, but I think const char* would work well.

&gt; Source/WTF/wtf/DateMath.h:399
&gt; +WTF_EXPORT_PRIVATE String&amp; timeZoneOverride();
&gt; +WTF_EXPORT_PRIVATE String&amp; timeZoneDisplayNameOverride();

These should return const String&amp;, unlesss we intend callers to use the returned references to modify the values.

&gt; Source/WebKit/Shared/WebProcessCreationParameters.h:259
&gt; +    std::optional&lt;String&gt; timeZoneOverride;

I suggest we use String here, since String has a null value. Using std::optional&lt;String&gt; is unnecessary. When the code is not generic across multiple types, I strongly suggest not ever using optional&lt;String&gt;.

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp:400
&gt; +    case PROP_TIME_ZONE_OVERRIDE: {
&gt; +        const char* timeZoneOverride = g_value_get_string(value);
&gt; +        if (timeZoneOverride)
&gt; +            webkit_web_context_set_time_zone_override(context, timeZoneOverride);
&gt; +        break;
&gt; +    }

No braces needed:

    if (auto* override = g_value_get_string(value))
        webkit_web_context_set_time_zone_override(context, override);
    break;

&gt; Source/WebKit/WebProcess/WebProcess.cpp:505
&gt; +    if (parameters.timeZoneOverride)
&gt; +        WTF::setTimeZoneOverride(*parameters.timeZoneOverride);
&gt; +    else
&gt; +        WTF::setTimeZoneOverride({ });

Should not have WTF:: prefixes here. See my comments above.

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/TimeZoneOverride.mm:28
&gt; +#if PLATFORM(MAC)

This should be COCOA instead of MAC. Unless there’s some reason this doesn’t work on iOS?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861980</commentid>
    <comment_count>38</comment_count>
      <attachid>457711</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-04-15 17:00:19 -0700</bug_when>
    <thetext>Comment on attachment 457711
Patch

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

&gt;&gt; Source/JavaScriptCore/runtime/JSDateMath.cpp:337
&gt;&gt; +        return tz;
&gt; 
&gt; In new code, please follow WebKit coding style and use words, not abbreviations, for variable names:
&gt; 
&gt;     if (auto&amp; override = timeZoneOverride; !override.isEmpty())
&gt;         return override;

Or if you prefer the word &quot;zone&quot; to &quot;override&quot;, or even &quot;timeZone&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861999</commentid>
    <comment_count>39</comment_count>
      <attachid>457711</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2022-04-15 18:22:00 -0700</bug_when>
    <thetext>Comment on attachment 457711
Patch

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:3
&gt;&gt; +        [WK2] Add API to allow embedder to set a timezone override
&gt; 
&gt; I’m not sure I love the use of &quot;override&quot; here as a noun meaning &quot;an explicitly set value that overrides the normal automatic time zone determination&quot;. I wish there was a less peculiar term of art. But for now, I just went with it.

Some of the methods in the code use *ForAutomation suffix, we could employ it here as well to make its intent clear (e.g. timeZoneForAutomation/setTimeZoneForAutomation), it makes less sense in the public WebKit API though.

&gt;&gt; Source/JavaScriptCore/runtime/DateConversion.cpp:101
&gt;&gt; +            String timeZoneOverride = WTF::timeZoneDisplayNameOverride();
&gt; 
&gt; This is not how we currently handle namespace in WTF. There should be a &quot;using&quot; in the header and no WTF prefix here.

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/DateConversion.cpp:102
&gt;&gt; +            if (!timeZoneOverride.isEmpty())
&gt; 
&gt; Nice style to scope the value by putting it inside the if, also allows using a one word name:
&gt; 
&gt;     if (auto&amp; override = timeZoneDisplayNameOverride(); !override.isEmpty())
&gt;         timeZoneName = override;

Done.

&gt;&gt; Source/JavaScriptCore/runtime/DateConversion.cpp:109
&gt;&gt; +                timeZoneName = String(winTimeZoneName);
&gt; 
&gt; Can we merge these into one line?
&gt; 
&gt;     timeZoneName = String { t.isDST() ? timeZoneInformation.DaylightName : timeZoneInformation.StandardName };

Done.

&gt;&gt; Source/JavaScriptCore/runtime/DateConversion.cpp:114
&gt;&gt; +                timeZoneName = String::fromUTF8(tzName);
&gt; 
&gt; This code is, and always has been, incorrect for cases where the time zone doesn’t fit into the buffer. In that case, strftime returns 0, and the contents of the buffer are *indeterminate*. We should fix this small mistake in how we are calling strftime by not looking at tzName if strftime returns 0.
&gt; 
&gt; We also could give the local variables better names, but that’s not required.

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/JSDateMath.cpp:337
&gt;&gt; +        return tz;
&gt; 
&gt; In new code, please follow WebKit coding style and use words, not abbreviations, for variable names:
&gt; 
&gt;     if (auto&amp; override = timeZoneOverride; !override.isEmpty())
&gt;         return override;

Done.

&gt;&gt; Source/JavaScriptCore/runtime/JSDateMath.cpp:421
&gt;&gt; +        m_timeZoneCache = std::unique_ptr&lt;OpaqueICUTimeZone, OpaqueICUTimeZoneDeleter&gt;(bitwise_cast&lt;OpaqueICUTimeZone*&gt;(timezone));
&gt; 
&gt; Frustrating that this requires direct use of bitwise_cast. We should find a safer way to encapsulate that.
&gt; 
&gt; I’d also like this to be more like a one-liner the way the code just below is; want the memory allocation and the taking ownership to be as tightly bound as possible. If the line is too long, we can help by naming the specific std::unique_ptr with arguments so we don’t have to write it out.

Changed this into one-liner, the line length is ok-ish (shorter than several other in this file).

As for bitwise_cast I don&apos;t see an easy way to change this considering the comment in the header file that icu::TimeZone cannot be exposed in the header. Leaving it consistent with the existing code.

&gt;&gt; Source/WTF/wtf/DateMath.cpp:343
&gt;&gt; +        int32_t dstOffset = ucal_get(tz.cal, UCAL_DST_OFFSET, &amp;status);
&gt; 
&gt; May need some error checking here. We are just ignoring status. That’s not necessarily safe.

Added checks that return 0 offset in case of error.

&gt;&gt; Source/WTF/wtf/DateMath.cpp:1046
&gt;&gt; +    // Timezone is ascii.
&gt; 
&gt; Not clear on the purpose of this comment.

Removed.

&gt;&gt; Source/WTF/wtf/DateMath.cpp:1051
&gt;&gt; +        return std::nullopt;
&gt; 
&gt; This is a very strange way to convert a WTF::String to UTF-16. There is no reason to first convert the UTF-8 and then back to UTF-16. A better way is:
&gt; 
&gt;   StringView { timeZone }.getCharactersWithUpconvert(buffer.data());
&gt; 
&gt; We can possibly optimize even further. Changing the argument to this function to already be StringView will optimize still further.

Done. Updated parameter type to StringView.

&gt;&gt; Source/WTF/wtf/DateMath.h:396
&gt;&gt; +WTF_EXPORT_PRIVATE std::optional&lt;Vector&lt;UChar, 32&gt;&gt; isTimeZoneValid(const String&amp;);
&gt; 
&gt; I suggest changing the argument type here to StringView, since this function takes no advantage of the fact that it’s already in a String.
&gt; 
&gt; This is not the correct name for a function that parses a time zone and returns the canonical form. I would call this parseTimeZone or computeCanonicalTimeZone, or something like that.
&gt; 
&gt; If the external caller only wants to check *if* the time zone is valid, I suggest publishing only the version that returns a bool rather than returning the parsed time zone to that caller. That can be a cover that just converts the optional to a boolean on the way out.

Changed argument to StringView, renamed the method to validateTimeZone and made it private to DateMath.cpp. Only isTimeZoneValid exposed in the header now.

&gt;&gt; Source/WTF/wtf/DateMath.h:397
&gt;&gt; +WTF_EXPORT_PRIVATE bool setTimeZoneOverride(const String&amp;);
&gt; 
&gt; Callers are making WTF::String just to pass to this function, but that is unnecessary. Given how it’s used, I suggest we instead have this function take a StringView, or even a const char*. It would be easy for the callers to deal with either of those. If we must use UTF-16, then I suggest StringView rather than const String&amp;, but I think const char* would work well.

Changed the argument type to StringView for consistency, but this method is only invoked during WebProcess initialization with the value that comes from the creating parameters, i.e. always a String.

&gt;&gt; Source/WTF/wtf/DateMath.h:399
&gt;&gt; +WTF_EXPORT_PRIVATE String&amp; timeZoneDisplayNameOverride();
&gt; 
&gt; These should return const String&amp;, unlesss we intend callers to use the returned references to modify the values.

Done.

&gt;&gt; Source/WebKit/Shared/WebProcessCreationParameters.h:259
&gt;&gt; +    std::optional&lt;String&gt; timeZoneOverride;
&gt; 
&gt; I suggest we use String here, since String has a null value. Using std::optional&lt;String&gt; is unnecessary. When the code is not generic across multiple types, I strongly suggest not ever using optional&lt;String&gt;.

Good point. Changed to String.

&gt;&gt; Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp:400
&gt;&gt; +    }
&gt; 
&gt; No braces needed:
&gt; 
&gt;     if (auto* override = g_value_get_string(value))
&gt;         webkit_web_context_set_time_zone_override(context, override);
&gt;     break;

Done.

&gt;&gt; Source/WebKit/WebProcess/WebProcess.cpp:505
&gt;&gt; +        WTF::setTimeZoneOverride({ });
&gt; 
&gt; Should not have WTF:: prefixes here. See my comments above.

Done.

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/TimeZoneOverride.mm:28
&gt;&gt; +#if PLATFORM(MAC)
&gt; 
&gt; This should be COCOA instead of MAC. Unless there’s some reason this doesn’t work on iOS?

Changed to COCOA.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862002</commentid>
    <comment_count>40</comment_count>
      <attachid>457739</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2022-04-15 18:22:31 -0700</bug_when>
    <thetext>Created attachment 457739
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862003</commentid>
    <comment_count>41</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2022-04-15 18:24:17 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #38)
&gt; Comment on attachment 457711 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=457711&amp;action=review
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/runtime/JSDateMath.cpp:337
&gt; &gt;&gt; +        return tz;
&gt; &gt; 
&gt; &gt; In new code, please follow WebKit coding style and use words, not abbreviations, for variable names:
&gt; &gt; 
&gt; &gt;     if (auto&amp; override = timeZoneOverride; !override.isEmpty())
&gt; &gt;         return override;
&gt; 
&gt; Or if you prefer the word &quot;zone&quot; to &quot;override&quot;, or even &quot;timeZone&quot;.

&quot;override&quot; compiled well, leaving it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862004</commentid>
    <comment_count>42</comment_count>
      <attachid>457711</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-04-15 18:27:33 -0700</bug_when>
    <thetext>Comment on attachment 457711
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/runtime/JSDateMath.cpp:421
&gt;&gt;&gt; +        m_timeZoneCache = std::unique_ptr&lt;OpaqueICUTimeZone, OpaqueICUTimeZoneDeleter&gt;(bitwise_cast&lt;OpaqueICUTimeZone*&gt;(timezone));
&gt;&gt; 
&gt;&gt; Frustrating that this requires direct use of bitwise_cast. We should find a safer way to encapsulate that.
&gt;&gt; 
&gt;&gt; I’d also like this to be more like a one-liner the way the code just below is; want the memory allocation and the taking ownership to be as tightly bound as possible. If the line is too long, we can help by naming the specific std::unique_ptr with arguments so we don’t have to write it out.
&gt; 
&gt; Changed this into one-liner, the line length is ok-ish (shorter than several other in this file).
&gt; 
&gt; As for bitwise_cast I don&apos;t see an easy way to change this considering the comment in the header file that icu::TimeZone cannot be exposed in the header. Leaving it consistent with the existing code.

The change I was suggesting, sorry I was not more explicit, for bitwise_cast is to *encapsulate* the technique in a single pair of inline functions to convert between icu::TimeZone* and OpaqueICUTimeZone*; all the call sites would use this in a type-safe way and wouldn’t literally have individual calls to bitwise_cast.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862006</commentid>
    <comment_count>43</comment_count>
      <attachid>457739</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-04-15 18:49:49 -0700</bug_when>
    <thetext>Comment on attachment 457739
Patch

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

Commented.

&gt; Source/JavaScriptCore/runtime/DateConversion.cpp:104
&gt; +            String timeZoneName;
&gt; +            String timeZoneOverride = timeZoneDisplayNameOverride();
&gt; +            if (auto&amp; override = timeZoneDisplayNameOverride(); !override.isEmpty())
&gt; +                timeZoneName = override;
&gt; +            else {

Can we avoid String ref-churn here? (And we need to do that since String is not thread safe).

&gt; Source/WTF/wtf/DateMath.cpp:101
&gt; +    UCalendar* cal { nullptr };

Use std::unique_ptr&lt;UCalendar, ICUDeleter&lt;ucal_close&gt;&gt; instead.

&gt; Source/WTF/wtf/DateMath.cpp:103
&gt; +    String id;
&gt; +    String displayName;

This does not work since String is not thread safe.
If it is used by multiple threads, we need another way to keep String.
Maybe Vector&lt;UChar, ...&gt; instead?

&gt; Source/WTF/wtf/DateMath.cpp:108
&gt; +    static NeverDestroyed&lt;TimeZoneOverride&gt; timeZoneOverride;

static in WebKit C++ is not thread safe. Let&apos;s use

LazyNeverDestroyed&lt;TimeZoneOverride&gt;

and std::call_once to initialize it once.

&gt; Source/WTF/wtf/DateMath.cpp:1080
&gt; +    if (innerTimeZoneOverride().cal) {
&gt; +        ucal_close(innerTimeZoneOverride().cal);
&gt; +        innerTimeZoneOverride().cal = nullptr;
&gt; +    }

Let&apos;s not do that, and instead, use std::unique_ptr.

&gt; Source/WTF/wtf/DateMath.cpp:1093
&gt; +    UCalendar* cal = ucal_open(canonicalBuffer-&gt;data(), canonicalLength, nullptr, UCAL_TRADITIONAL, &amp;status);

For ICU data structures, we use

std::unique_ptr&lt;UCalendar, ICUDeleter&lt;ucal_close&gt;&gt;

etc. to avoid memory leak. See Intl code in JSC.

&gt; Source/WTF/wtf/DateMath.cpp:1105
&gt; +    Vector&lt;UChar, 32&gt; displayNameBuffer(32);
&gt; +    auto displayNameLength = ucal_getTimeZoneDisplayName(cal, UCAL_STANDARD, defaultLanguage().utf8().data(), displayNameBuffer.data(), displayNameBuffer.size(), &amp;status);
&gt; +    if (status == U_BUFFER_OVERFLOW_ERROR) {
&gt; +        status = U_ZERO_ERROR;
&gt; +        displayNameBuffer.grow(displayNameLength);
&gt; +        ucal_getTimeZoneDisplayName(cal, UCAL_STANDARD, defaultLanguage().utf8().data(), displayNameBuffer.data(), displayNameLength, &amp;status);
&gt; +    }
&gt; +    if (!U_SUCCESS(status))
&gt; +        return false;

We should use callBufferProducingFunction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862007</commentid>
    <comment_count>44</comment_count>
      <attachid>457739</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-04-15 18:51:17 -0700</bug_when>
    <thetext>Comment on attachment 457739
Patch

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

&gt; Source/WTF/wtf/DateMath.cpp:1075
&gt; +bool setTimeZoneOverride(const StringView&amp; timeZone)
&gt; +{

This function is modifying global state. Do we need to have Lock to ensure this function can be a thread safe?
If so, then, it is also true that accessors (timeZoneOverride etc.) also need to take a lock.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862019</commentid>
    <comment_count>45</comment_count>
      <attachid>457739</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2022-04-15 20:16:46 -0700</bug_when>
    <thetext>Comment on attachment 457739
Patch

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

&gt;&gt; Source/WTF/wtf/DateMath.cpp:108
&gt;&gt; +    static NeverDestroyed&lt;TimeZoneOverride&gt; timeZoneOverride;
&gt; 
&gt; static in WebKit C++ is not thread safe. Let&apos;s use
&gt; 
&gt; LazyNeverDestroyed&lt;TimeZoneOverride&gt;
&gt; 
&gt; and std::call_once to initialize it once.

I believe it is thread-safe since c++11, see &quot;Static local variables&quot; section in https://en.cppreference.com/w/cpp/language/storage_duration: &quot;If multiple threads attempt to initialize the same static local variable concurrently, the initialization occurs exactly once (similar behavior can be obtained for arbitrary functions with std::call_once).&quot;

&gt;&gt; Source/WTF/wtf/DateMath.cpp:1075
&gt;&gt; +{
&gt; 
&gt; This function is modifying global state. Do we need to have Lock to ensure this function can be a thread safe?
&gt; If so, then, it is also true that accessors (timeZoneOverride etc.) also need to take a lock.

This function itself is only called once when WebProcess start, so perhaps we can rename it to initializeTimeZoneOverride and make sure it&apos;s called only once. If I understand correctly, web workers will have JSDateMath instances that are used on different threads and they will access timeZoneOverride() concurrently. Even though the access to timeZoneOverride() is always on a slow path it&apos;s a bit annoying that we need to introduce locks to access it. I thought maybe there is a trick/technique that could be used here to avoid locking and e.g. just get the override in the DateCache/VM constructor at some point where another (global?) lock is already held? If not I will just introduce locks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862074</commentid>
    <comment_count>46</comment_count>
      <attachid>457739</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-04-16 12:49:11 -0700</bug_when>
    <thetext>Comment on attachment 457739
Patch

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

&gt;&gt;&gt; Source/WTF/wtf/DateMath.cpp:108
&gt;&gt;&gt; +    static NeverDestroyed&lt;TimeZoneOverride&gt; timeZoneOverride;
&gt;&gt; 
&gt;&gt; static in WebKit C++ is not thread safe. Let&apos;s use
&gt;&gt; 
&gt;&gt; LazyNeverDestroyed&lt;TimeZoneOverride&gt;
&gt;&gt; 
&gt;&gt; and std::call_once to initialize it once.
&gt; 
&gt; I believe it is thread-safe since c++11, see &quot;Static local variables&quot; section in https://en.cppreference.com/w/cpp/language/storage_duration: &quot;If multiple threads attempt to initialize the same static local variable concurrently, the initialization occurs exactly once (similar behavior can be obtained for arbitrary functions with std::call_once).&quot;

It is *not*, because WebKit is compiled in a non-standard mode that turns that thread safety off, at least for Apple platforms.

The option is -fno-threadsafe-statics</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862399</commentid>
    <comment_count>47</comment_count>
      <attachid>457711</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2022-04-18 18:41:06 -0700</bug_when>
    <thetext>Comment on attachment 457711
Patch

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

&gt;&gt;&gt;&gt; Source/JavaScriptCore/runtime/JSDateMath.cpp:421
&gt;&gt;&gt;&gt; +        m_timeZoneCache = std::unique_ptr&lt;OpaqueICUTimeZone, OpaqueICUTimeZoneDeleter&gt;(bitwise_cast&lt;OpaqueICUTimeZone*&gt;(timezone));
&gt;&gt;&gt; 
&gt;&gt;&gt; Frustrating that this requires direct use of bitwise_cast. We should find a safer way to encapsulate that.
&gt;&gt;&gt; 
&gt;&gt;&gt; I’d also like this to be more like a one-liner the way the code just below is; want the memory allocation and the taking ownership to be as tightly bound as possible. If the line is too long, we can help by naming the specific std::unique_ptr with arguments so we don’t have to write it out.
&gt;&gt; 
&gt;&gt; Changed this into one-liner, the line length is ok-ish (shorter than several other in this file).
&gt;&gt; 
&gt;&gt; As for bitwise_cast I don&apos;t see an easy way to change this considering the comment in the header file that icu::TimeZone cannot be exposed in the header. Leaving it consistent with the existing code.
&gt; 
&gt; The change I was suggesting, sorry I was not more explicit, for bitwise_cast is to *encapsulate* the technique in a single pair of inline functions to convert between icu::TimeZone* and OpaqueICUTimeZone*; all the call sites would use this in a type-safe way and wouldn’t literally have individual calls to bitwise_cast.

Moved bitwise_cast into 2 functions as you suggested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862402</commentid>
    <comment_count>48</comment_count>
      <attachid>457847</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2022-04-18 18:45:18 -0700</bug_when>
    <thetext>Created attachment 457847
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862403</commentid>
    <comment_count>49</comment_count>
      <attachid>457739</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2022-04-18 18:47:09 -0700</bug_when>
    <thetext>Comment on attachment 457739
Patch

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

&gt;&gt; Source/JavaScriptCore/runtime/DateConversion.cpp:104
&gt;&gt; +            else {
&gt; 
&gt; Can we avoid String ref-churn here? (And we need to do that since String is not thread safe).

Changed timeZoneDisplayNameOverride to return a new instance of the string.

&gt;&gt; Source/WTF/wtf/DateMath.cpp:101
&gt;&gt; +    UCalendar* cal { nullptr };
&gt; 
&gt; Use std::unique_ptr&lt;UCalendar, ICUDeleter&lt;ucal_close&gt;&gt; instead.

Done.

&gt;&gt; Source/WTF/wtf/DateMath.cpp:103
&gt;&gt; +    String displayName;
&gt; 
&gt; This does not work since String is not thread safe.
&gt; If it is used by multiple threads, we need another way to keep String.
&gt; Maybe Vector&lt;UChar, ...&gt; instead?

Done.

&gt;&gt;&gt;&gt; Source/WTF/wtf/DateMath.cpp:108
&gt;&gt;&gt;&gt; +    static NeverDestroyed&lt;TimeZoneOverride&gt; timeZoneOverride;
&gt;&gt;&gt; 
&gt;&gt;&gt; static in WebKit C++ is not thread safe. Let&apos;s use
&gt;&gt;&gt; 
&gt;&gt;&gt; LazyNeverDestroyed&lt;TimeZoneOverride&gt;
&gt;&gt;&gt; 
&gt;&gt;&gt; and std::call_once to initialize it once.
&gt;&gt; 
&gt;&gt; I believe it is thread-safe since c++11, see &quot;Static local variables&quot; section in https://en.cppreference.com/w/cpp/language/storage_duration: &quot;If multiple threads attempt to initialize the same static local variable concurrently, the initialization occurs exactly once (similar behavior can be obtained for arbitrary functions with std::call_once).&quot;
&gt; 
&gt; It is *not*, because WebKit is compiled in a non-standard mode that turns that thread safety off, at least for Apple platforms.
&gt; 
&gt; The option is -fno-threadsafe-statics

Got it, updated the code to use a lock while accessing innerTimeZoneOverride.

&gt;&gt; Source/WTF/wtf/DateMath.cpp:1080
&gt;&gt; +    }
&gt; 
&gt; Let&apos;s not do that, and instead, use std::unique_ptr.

Done.

&gt;&gt; Source/WTF/wtf/DateMath.cpp:1093
&gt;&gt; +    UCalendar* cal = ucal_open(canonicalBuffer-&gt;data(), canonicalLength, nullptr, UCAL_TRADITIONAL, &amp;status);
&gt; 
&gt; For ICU data structures, we use
&gt; 
&gt; std::unique_ptr&lt;UCalendar, ICUDeleter&lt;ucal_close&gt;&gt;
&gt; 
&gt; etc. to avoid memory leak. See Intl code in JSC.

Done.

&gt;&gt; Source/WTF/wtf/DateMath.cpp:1105
&gt;&gt; +        return false;
&gt; 
&gt; We should use callBufferProducingFunction.

Done. Thanks for the pointers!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862404</commentid>
    <comment_count>50</comment_count>
      <attachid>457739</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2022-04-18 18:50:56 -0700</bug_when>
    <thetext>Comment on attachment 457739
Patch

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

&gt;&gt;&gt;&gt;&gt; Source/WTF/wtf/DateMath.cpp:108
&gt;&gt;&gt;&gt;&gt; +    static NeverDestroyed&lt;TimeZoneOverride&gt; timeZoneOverride;
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; static in WebKit C++ is not thread safe. Let&apos;s use
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; LazyNeverDestroyed&lt;TimeZoneOverride&gt;
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; and std::call_once to initialize it once.
&gt;&gt;&gt; 
&gt;&gt;&gt; I believe it is thread-safe since c++11, see &quot;Static local variables&quot; section in https://en.cppreference.com/w/cpp/language/storage_duration: &quot;If multiple threads attempt to initialize the same static local variable concurrently, the initialization occurs exactly once (similar behavior can be obtained for arbitrary functions with std::call_once).&quot;
&gt;&gt; 
&gt;&gt; It is *not*, because WebKit is compiled in a non-standard mode that turns that thread safety off, at least for Apple platforms.
&gt;&gt; 
&gt;&gt; The option is -fno-threadsafe-statics
&gt; 
&gt; Got it, updated the code to use a lock while accessing innerTimeZoneOverride.

I also added a test that runs the code in workers, it should provide some coverage for the multi-threaded case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862999</commentid>
    <comment_count>51</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2022-04-20 11:25:54 -0700</bug_when>
    <thetext>Darin, Yusuke, I&apos;ve addressed your comments, can you have another look at the patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863033</commentid>
    <comment_count>52</comment_count>
      <attachid>457847</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-04-20 13:21:03 -0700</bug_when>
    <thetext>Comment on attachment 457847
Patch

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

I want to be sure that we have been careful enough about performance implications here. How are we measuring the performance impact? Typically when touching code like this I want to improve performance and to me it seems here there is a risk of slowing things down

Typically getting thread safety right while preserving high performance is a challenge; the thread safety is difficult to test and may have to be assessed by code inspection, but the performance typically can be tested

I’m mostly concerned about performance when there is no override, not performance when there is an override, but that is a secondary concern

&gt; Source/JavaScriptCore/runtime/DateConversion.cpp:101
&gt; +            if (auto override = timeZoneDisplayNameOverride(); !override.isEmpty())

So we are now taking and releasing a lock every time this function is called. Have we proven that is that OK for JavaScript performance? Yusuke, maybe you have a sense of this. Maybe strftime is already slow enough that this is not a concern?

&gt; Source/JavaScriptCore/runtime/DateConversion.cpp:102
&gt; +                timeZoneName = override;

Quite unfortunate to convert this to a temporary WTF::String every time; that’s not needed to append a time zone name to a StringBuilder. I’m really unclear on how performance critical this code is. The way it’s currently working is overusing String. There’s no need to create and destroy a String to append some character to a StringBuilder. This applies to the strftime code below just as much to this override code.

&gt; Source/JavaScriptCore/runtime/JSDateMath.cpp:345
&gt; +    if (auto override = timeZoneOverride(); !override.isEmpty())
&gt; +        return String::adopt(WTFMove(override));

Seems we would want this to be fast when called multiple times, and this object is called a &quot;cache&quot;. Can we find a way to not lock/unlock every time this is called just to check if an override is in effect?

&gt; Source/JavaScriptCore/runtime/JSDateMath.cpp:399
&gt; +    Vector&lt;UChar&gt; override = timeZoneOverride();

Seems unfortunate we make no attempt to optimize this to not use the heap. These are short strings and always doing malloc/free is costly.

&gt; Source/WTF/wtf/DateMath.cpp:1055
&gt; +static std::optional&lt;Vector&lt;UChar&gt;&gt; validateTimeZone(const StringView&amp; timeZone)

Type should be StringView, not const StringView&amp;, in all these cases. In production builds a StringView fits into registers, and passing const StringView&amp; instead typically just hurts performance and has no benefit.

&gt; Source/WTF/wtf/DateMath.cpp:1057
&gt; +    Vector&lt;UChar&gt; buffer(timeZone.length());

In a case like this we almost always use inline capacity so there’s no unnecessary heap allocation. This allocates/deallocates every time, which is unnecessary.

&gt; Source/WTF/wtf/DateMath.cpp:1061
&gt; +    canonicalBuffer.reserveCapacity(buffer.size());

Not sure this is a good optimization. It could cause a problem if the canonical ID is often slightly larger than the non-canonical.

&gt; Source/WTF/wtf/DateMath.cpp:1065
&gt; +    return canonicalBuffer;

I believe we may need WTFMove here to avoid allocating a new heap buffer, since the return type is not Vector&lt;UChar&gt; but std::optional&lt;Vector&lt;UChar&gt;&gt;.

&gt; Source/WTF/wtf/DateMath.cpp:1068
&gt; +bool isTimeZoneValid(const StringView&amp; timeZone)

StringView

&gt; Source/WTF/wtf/DateMath.cpp:1073
&gt; +bool setTimeZoneOverride(const StringView&amp; timeZone)

StringView

&gt; Source/WTF/wtf/DateMath.cpp:1116
&gt; +    auto&amp; displayName = innerTimeZoneOverride().displayName;
&gt; +    return String(displayName);

This should be a single line.

&gt; Source/WTF/wtf/DateMath.h:432
&gt; +using WTF::isTimeZoneValid;
&gt; +using WTF::setTimeZoneOverride;
&gt; +using WTF::timeZoneOverride;
&gt; +using WTF::timeZoneDisplayNameOverride;
&gt;  using WTF::calculateLocalTimeOffset;
&gt;  using WTF::timeClip;
&gt;  using WTF::jsCurrentTime;

We sort these alphabetically. The new ones should be sorted in with the existing ones.

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/TimeZoneOverride.mm:2
&gt; + * Copyright (C) 2020 Igalia S.L.

2022?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1864313</commentid>
    <comment_count>53</comment_count>
      <attachid>457847</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2022-04-25 17:34:26 -0700</bug_when>
    <thetext>Comment on attachment 457847
Patch

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

&gt;&gt; Source/JavaScriptCore/runtime/DateConversion.cpp:101
&gt;&gt; +            if (auto override = timeZoneDisplayNameOverride(); !override.isEmpty())
&gt; 
&gt; So we are now taking and releasing a lock every time this function is called. Have we proven that is that OK for JavaScript performance? Yusuke, maybe you have a sense of this. Maybe strftime is already slow enough that this is not a concern?

Looking at this code I see that GregorianDateTime already contains timezone information (in utcOffsetInMinute()) and we should not need to pass the name separately as it should have been picked at the construction time. However, `strftime` below seems to ignore timezone information in tm.tm_gmtoff and always returns &apos;system&apos; value of the timezone. The code that overrides time zone can (and I think should) override that value as well. But maybe the general code can be switched to use ucal_getTimeZoneDisplayName or something similar from ucal instead of strftime? Do you know what&apos;s the reason strftime is called here to format the timezone name while rest of the code uses ucal to manipulate date/time?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1864947</commentid>
    <comment_count>54</comment_count>
      <attachid>457847</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2022-04-27 15:27:13 -0700</bug_when>
    <thetext>Comment on attachment 457847
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/runtime/DateConversion.cpp:101
&gt;&gt;&gt; +            if (auto override = timeZoneDisplayNameOverride(); !override.isEmpty())
&gt;&gt; 
&gt;&gt; So we are now taking and releasing a lock every time this function is called. Have we proven that is that OK for JavaScript performance? Yusuke, maybe you have a sense of this. Maybe strftime is already slow enough that this is not a concern?
&gt; 
&gt; Looking at this code I see that GregorianDateTime already contains timezone information (in utcOffsetInMinute()) and we should not need to pass the name separately as it should have been picked at the construction time. However, `strftime` below seems to ignore timezone information in tm.tm_gmtoff and always returns &apos;system&apos; value of the timezone. The code that overrides time zone can (and I think should) override that value as well. But maybe the general code can be switched to use ucal_getTimeZoneDisplayName or something similar from ucal instead of strftime? Do you know what&apos;s the reason strftime is called here to format the timezone name while rest of the code uses ucal to manipulate date/time?

Removed this call altogether in favor of setting &quot;TZ&quot; environment variable, it will change result of strftime accordingly. On Windows though explicit override for the timezone name is used but it now uses override value stored in DateCache once.

&gt;&gt; Source/JavaScriptCore/runtime/DateConversion.cpp:102
&gt;&gt; +                timeZoneName = override;
&gt; 
&gt; Quite unfortunate to convert this to a temporary WTF::String every time; that’s not needed to append a time zone name to a StringBuilder. I’m really unclear on how performance critical this code is. The way it’s currently working is overusing String. There’s no need to create and destroy a String to append some character to a StringBuilder. This applies to the strftime code below just as much to this override code.

Switched the code to StringView to avoid extra copies.

&gt;&gt; Source/JavaScriptCore/runtime/JSDateMath.cpp:345
&gt;&gt; +        return String::adopt(WTFMove(override));
&gt; 
&gt; Seems we would want this to be fast when called multiple times, and this object is called a &quot;cache&quot;. Can we find a way to not lock/unlock every time this is called just to check if an override is in effect?

Removed this call altogether. The override is now only accessed in DateCache::timeZoneCacheSlow which should be called only once per DateCache instance unless system timezone changes.

&gt;&gt; Source/JavaScriptCore/runtime/JSDateMath.cpp:399
&gt;&gt; +    Vector&lt;UChar&gt; override = timeZoneOverride();
&gt; 
&gt; Seems unfortunate we make no attempt to optimize this to not use the heap. These are short strings and always doing malloc/free is costly.

Changed to use Vector&lt;UChar, 32&gt; and pass it as param to timeZoneOverride().

&gt;&gt; Source/WTF/wtf/DateMath.cpp:1055
&gt;&gt; +static std::optional&lt;Vector&lt;UChar&gt;&gt; validateTimeZone(const StringView&amp; timeZone)
&gt; 
&gt; Type should be StringView, not const StringView&amp;, in all these cases. In production builds a StringView fits into registers, and passing const StringView&amp; instead typically just hurts performance and has no benefit.

Done.

&gt;&gt; Source/WTF/wtf/DateMath.cpp:1057
&gt;&gt; +    Vector&lt;UChar&gt; buffer(timeZone.length());
&gt; 
&gt; In a case like this we almost always use inline capacity so there’s no unnecessary heap allocation. This allocates/deallocates every time, which is unnecessary.

changed type to Vector&lt;UChar, 32&gt;

&gt;&gt; Source/WTF/wtf/DateMath.cpp:1061
&gt;&gt; +    canonicalBuffer.reserveCapacity(buffer.size());
&gt; 
&gt; Not sure this is a good optimization. It could cause a problem if the canonical ID is often slightly larger than the non-canonical.

Removed reserveCapacity call, instead changed type to Vector&lt;UChar, 32&gt;.

&gt;&gt; Source/WTF/wtf/DateMath.cpp:1065
&gt;&gt; +    return canonicalBuffer;
&gt; 
&gt; I believe we may need WTFMove here to avoid allocating a new heap buffer, since the return type is not Vector&lt;UChar&gt; but std::optional&lt;Vector&lt;UChar&gt;&gt;.

Good catch! Done.

&gt;&gt; Source/WTF/wtf/DateMath.cpp:1068
&gt;&gt; +bool isTimeZoneValid(const StringView&amp; timeZone)
&gt; 
&gt; StringView

Done.

&gt;&gt; Source/WTF/wtf/DateMath.cpp:1073
&gt;&gt; +bool setTimeZoneOverride(const StringView&amp; timeZone)
&gt; 
&gt; StringView

Done.

&gt;&gt; Source/WTF/wtf/DateMath.cpp:1116
&gt;&gt; +    return String(displayName);
&gt; 
&gt; This should be a single line.

Merged this method with timeZoneOverride.

&gt;&gt; Source/WTF/wtf/DateMath.h:432
&gt;&gt;  using WTF::jsCurrentTime;
&gt; 
&gt; We sort these alphabetically. The new ones should be sorted in with the existing ones.

Done. Restored alphabetic order.

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/TimeZoneOverride.mm:2
&gt;&gt; + * Copyright (C) 2020 Igalia S.L.
&gt; 
&gt; 2022?

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1864948</commentid>
    <comment_count>55</comment_count>
      <attachid>458474</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2022-04-27 15:28:19 -0700</bug_when>
    <thetext>Created attachment 458474
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1864954</commentid>
    <comment_count>56</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2022-04-27 15:42:02 -0700</bug_when>
    <thetext>Darin, PTAL.

I&apos;ve update the code to make sure the reading of the timezone override that requires a lock is only performed from DateCache::timeZoneCacheSlow(). In other places cached information is used and doesn&apos;t require locking.

On a side note, I don&apos;t know the history behind formatDateTime and why it uses platform calls (GetTimeZoneInformation on Windows and strftime on other systems) to format the time zone name but having it use ICU similar to the rest of the code base would allow to simplify the overrides logic. Switching that to ICU would affect the timezone formatting in the Web API though (make it similar to what Firefox and Chromium produce but still), so probably not worth it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1864962</commentid>
    <comment_count>57</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-04-27 15:49:58 -0700</bug_when>
    <thetext>(In reply to Yury Semikhatsky from comment #56)
&gt; On a side note, I don&apos;t know the history behind formatDateTime and why it
&gt; uses platform calls (GetTimeZoneInformation on Windows and strftime on other
&gt; systems) to format the time zone name but having it use ICU similar to the
&gt; rest of the code base would allow to simplify the overrides logic.

Not sure the history matters much at this point. I suspect it had to do with getting good formatting that adapts to the user’s locale and preferences, and long predates significant support for this in ICU.

&gt; Switching
&gt; that to ICU would affect the timezone formatting in the Web API though

This is the thing that matters now. If the result is better with ICU, we can make the change, and the consistency with other browsers would be great! But if the result debatably not as good at respecting user’s preferences and locale with ICU, then we would have to think more before making a change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1864972</commentid>
    <comment_count>58</comment_count>
      <attachid>458478</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2022-04-27 16:06:34 -0700</bug_when>
    <thetext>Created attachment 458478
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1864979</commentid>
    <comment_count>59</comment_count>
      <attachid>458478</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-04-27 16:23:44 -0700</bug_when>
    <thetext>Comment on attachment 458478
Patch

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

&gt; Source/JavaScriptCore/runtime/JSDateMath.cpp:112
&gt; +static icu::TimeZone* toICUTimezZone(OpaqueICUTimeZone* timeZone)

I think TimezZone is a typo here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865021</commentid>
    <comment_count>60</comment_count>
      <attachid>458478</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2022-04-27 19:00:48 -0700</bug_when>
    <thetext>Comment on attachment 458478
Patch

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

&gt;&gt; Source/JavaScriptCore/runtime/JSDateMath.cpp:112
&gt;&gt; +static icu::TimeZone* toICUTimezZone(OpaqueICUTimeZone* timeZone)
&gt; 
&gt; I think TimezZone is a typo here?

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865022</commentid>
    <comment_count>61</comment_count>
      <attachid>458485</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2022-04-27 19:01:28 -0700</bug_when>
    <thetext>Created attachment 458485
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865025</commentid>
    <comment_count>62</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2022-04-27 19:12:31 -0700</bug_when>
    <thetext>(In reply to Yury Semikhatsky from comment #60)
&gt; Comment on attachment 458478 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=458478&amp;action=review
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/runtime/JSDateMath.cpp:112
&gt; &gt;&gt; +static icu::TimeZone* toICUTimezZone(OpaqueICUTimeZone* timeZone)
&gt; &gt; 
&gt; &gt; I think TimezZone is a typo here?
&gt; 
&gt; Fixed.

Is there anything else you want me to improve in this patch?


(In reply to Darin Adler from comment #57)
&gt; (In reply to Yury Semikhatsky from comment #56)
&gt; &gt; Switching
&gt; &gt; that to ICU would affect the timezone formatting in the Web API though
&gt; 
&gt; This is the thing that matters now. If the result is better with ICU, we can
&gt; make the change, and the consistency with other browsers would be great! But
&gt; if the result debatably not as good at respecting user’s preferences and
&gt; locale with ICU, then we would have to think more before making a change.

I can give it a try in a separate patch but I can&apos;t assess how many changes it entails and if the result will be acceptable, so I&apos;d rather not commit to it. Given that this patch preserves existing behavior can we proceed with it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865228</commentid>
    <comment_count>63</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-04-28 13:05:25 -0700</bug_when>
    <thetext>(In reply to Yury Semikhatsky from comment #62)
&gt; Is there anything else you want me to improve in this patch?

Sorry, haven’t yet had time to carefully read it through again. I plan to when I have an opportunity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865603</commentid>
    <comment_count>64</comment_count>
      <attachid>458624</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2022-04-29 19:11:15 -0700</bug_when>
    <thetext>Created attachment 458624
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865604</commentid>
    <comment_count>65</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2022-04-29 19:12:58 -0700</bug_when>
    <thetext>(In reply to Yury Semikhatsky from comment #64)
&gt; Created attachment 458624 [details]
&gt; Patch

Rebased on top of r293625</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865889</commentid>
    <comment_count>66</comment_count>
      <attachid>458694</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2022-05-02 11:22:36 -0700</bug_when>
    <thetext>Created attachment 458694
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865890</commentid>
    <comment_count>67</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2022-05-02 11:23:17 -0700</bug_when>
    <thetext>(In reply to Yury Semikhatsky from comment #66)
&gt; Created attachment 458694 [details]
&gt; Patch

Updated tests to not depend on current time as it would produce different result during winter time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1866017</commentid>
    <comment_count>68</comment_count>
      <attachid>458694</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-05-02 18:16:33 -0700</bug_when>
    <thetext>Comment on attachment 458694
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1866168</commentid>
    <comment_count>69</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-05-03 10:07:13 -0700</bug_when>
    <thetext>Committed r293729 (250217@main): &lt;https://commits.webkit.org/250217@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 458694.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1866169</commentid>
    <comment_count>70</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-05-03 10:08:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/92676360&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868252</commentid>
    <comment_count>71</comment_count>
      <attachid>458694</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2022-05-11 17:05:07 -0700</bug_when>
    <thetext>Comment on attachment 458694
Patch

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

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp:1903
&gt; +    return context-&gt;priv-&gt;timeZoneOverride.utf8().data();

Hi, this is a use-after-free vulnerability. The CString object is already destroyed when the function returns, so the caller receives a pointer to an invalid buffer. To fix this, please store a CString in the priv struct, not a String.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868278</commentid>
    <comment_count>72</comment_count>
      <attachid>458694</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2022-05-11 18:23:02 -0700</bug_when>
    <thetext>Comment on attachment 458694
Patch

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

&gt;&gt; Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp:1903
&gt;&gt; +    return context-&gt;priv-&gt;timeZoneOverride.utf8().data();
&gt; 
&gt; Hi, this is a use-after-free vulnerability. The CString object is already destroyed when the function returns, so the caller receives a pointer to an invalid buffer. To fix this, please store a CString in the priv struct, not a String.

Sent a fix to https://bugs.webkit.org/show_bug.cgi?id=240327</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403368</attachid>
            <date>2020-07-02 08:33:32 -0700</date>
            <delta_ts>2020-07-03 04:57:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213884-20200702083330.patch</filename>
            <type>text/plain</type>
            <size>42073</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzODQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
M2M4ZWE2ZGZlMTgyZjEyYWE1YjY5MDBjMGZhY2QwODRiYWJlYjJjLi45MDQxMTQyY2U0ZjY4NDMw
YzdhNTdlZWQxZDY0NzEzODA1OTZmZTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAyMC0wNy0wMiAgUGhpbGlwcGUgTm9ybWFuZCAgPHBoaWxuQGlnYWxpYS5j
b20+IGFuZCBQYXZlbCBGZWxkbWFuIDxwYXZlbC5mZWxkbWFuQGdtYWlsLmNvbT4KKworICAgICAg
ICBbV0syXSBBZGQgQVBJIHRvIGFsbG93IGVtYmVkZGVyIHRvIHNldCBhIHRpbWV6b25lIG92ZXJy
aWRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM4
ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGlu
c3BlY3Rvci9wcm90b2NvbC9QYWdlLmpzb246IEFkZCBzZXRUaW1lWm9uZSBBUEkgYWxsb3dpbmcg
dG8gb3ZlcnJpZGUgdGhlIHBhZ2UgdGltZXpvbmUuCisgICAgICAgICogcnVudGltZS9EYXRlQ29u
dmVyc2lvbi5jcHA6CisgICAgICAgIChKU0M6OmZvcm1hdERhdGVUaW1lKTogRm9ybWF0IHRoZSBv
dmVycmlkZGVuIHRpbWV6b25lIGlmIGl0J3MgZW5hYmxlZC4KKyAgICAgICAgKiBydW50aW1lL0lu
dGxEYXRlVGltZUZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6OmRlZmF1bHRUaW1lWm9uZSk6IFJl
dHVybiB0aGUgb3ZlcnJpZGRlbiB0aW1lem9uZSBpZiBpdCdzIGVuYWJsZWQuCisKIDIwMjAtMDct
MDIgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBD
b25maWd1cmUgb3B0aW9uLW9mZmVyZWQgbnVtYmVyaW5nU3lzdGVtIGluIEludGwuTnVtYmVyRm9y
bWF0IHRocm91Z2ggbG9jYWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGZhY2ExZTY4YzNkMTI4NmJhMWRlZWQwMGEyYzcwMjU1
ZDA5MDgxZDMuLmUxZjllOTI4MTFlOTFhNTE2MWFmMWE3MzQ3NzllMTA3NTc5MmQ1ZjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMjAtMDctMDIgIFBoaWxpcHBlIE5vcm1hbmQgIDxwaGlsbkBpZ2Fs
aWEuY29tPiBhbmQgUGF2ZWwgRmVsZG1hbiA8cGF2ZWwuZmVsZG1hbkBnbWFpbC5jb20+CisKKyAg
ICAgICAgW1dLMl0gQWRkIEFQSSB0byBhbGxvdyBlbWJlZGRlciB0byBzZXQgYSB0aW1lem9uZSBv
dmVycmlkZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjEzODg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiB3dGYvRGF0ZU1hdGguY3BwOiBBZGQgbmV3IEFQSXMgdG8gY29udHJvbCBhbmQgcXVlcnkgdGhl
IHRpbWV6b25lIG92ZXJyaWRlLgorICAgICAgICAoV1RGOjppbm5lclRpbWVab25lT3ZlcnJpZGUp
OiBTdGF0aWMgc3RvcmFnZSBvZiB0aGUgb3ZlcnJpZGUgaW5mb3JtYXRpb25zLgorICAgICAgICAo
V1RGOjpjYWxjdWxhdGVMb2NhbFRpbWVPZmZzZXQpOiBDYWxjdWxhdGUgb2Zmc2V0IGZvciBvdmVy
cmlkZGVuIHRpbWV6b25lLCBpZiBpdCdzIHByZXNlbnQuCisgICAgICAgIChXVEY6OnNldFRpbWVa
b25lT3ZlcnJpZGUpOiBOZXcgQVBJIHRvIHNldCB0aGUgdGltZXpvbmUgb3ZlcnJpZGUsIHRoaXMg
aXMgbWVhbnQgdG8gYmUKKyAgICAgICAgdXNlZCBieSB0aGUgV2ViSW5zcGVjdG9yIFBhZ2UgYWdl
bnQuCisgICAgICAgIChXVEY6OnRpbWVab25lT3ZlcnJpZGUpOiBRdWVyeSB0aGUgdGltZXpvbmUg
b3ZlcnJpZGUuCisgICAgICAgIChXVEY6OnRpbWVab25lRGlzcGxheU5hbWVPdmVycmlkZSk6IEdl
dCB0aGUgdGltZXpvbmUgbmFtZSBvZiB0aGUgb3ZlcnJpZGRlbiB0aW1lem9uZS4KKyAgICAgICAg
KiB3dGYvRGF0ZU1hdGguaDoKKwogMjAyMC0wNy0wMSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9y
dG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBVcHN0cmVhbSBhcHBsaWNhdGlvbiBhY2NlbnQgY29s
b3Igc3VwcG9ydApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCBhNjA0ZDU0ODZiYzViMWFkMmM1NzlmMThlMmRjYWYwZWMw
MjkyOTlkLi5hZTJiMjRjYTAzZWNhNjU4MjZhN2FlZjc2OWVmMjIxOGNlOTI3ZjJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDU3IEBACisyMDIwLTA3LTAyICBQaGlsaXBwZSBOb3JtYW5kICA8cGhpbG5A
aWdhbGlhLmNvbT4KKworICAgICAgICBbV0syXSBBZGQgQVBJIHRvIGFsbG93IGVtYmVkZGVyIHRv
IHNldCBhIHRpbWV6b25lIG92ZXJyaWRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTM4ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHM6CisKKyAgICAgICAgLSBuZXcgQ29jb2Eg
QVBJCisgICAgICAgIC0gbmV3IEdsaWIgQVBJICh0YXJnZXR0aW5nIGJvdGggV1BFIGFuZCBHVEsg
cG9ydHMpCisgICAgICAgIC0gbmV3IEMgQVBJIChmb3IgdGhlIHdpbiBwb3J0KQorCisgICAgICAg
IHRoYXQgYWxsb3dzIHRoZSBlbWJlZGRlciB0byBzZXQgYSB0aW1lem9uZSBvdmVycmlkZSBmb3Ig
dGhlIFdlYnNpdGVEYXRhU3RvcmUgYW5kIGl0cworICAgICAgICB1bmRlcmx5aW5nIFdlYlZpZXcu
IEl0IHdvdWxkIGFsc28gYWxsb3cgZmluZS1ncmFpbmVkIGNvbnRyb2wgb3ZlciBtdWx0aXBsZSBw
YWdlcywgZm9yCisgICAgICAgIGluc3RhbmNlIGl0J3Mgbm90IHBvc3NpYmxlIGN1cnJlbnRseSB0
byBoYXZlIHR3byBwYWdlcyBpbiBkaWZmZXJlbnQgdGltZXpvbmVzLgorCisgICAgICAgICogU2hh
cmVkL1dlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzLmg6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBT
aGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVk
L1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25SZWYuY3BwOgorICAgICAgICAoV0tXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbkNvcHlUaW1lWm9uZU92ZXJyaWRlKToKKyAgICAgICAg
KFdLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25TZXRUaW1lWm9uZU92ZXJyaWRlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvblJl
Zi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uLm1tOgorICAgICAgICAoLVtfV0tXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbiB0aW1lWm9uZU92ZXJyaWRlXSk6CisgICAgICAgICgtW19XS1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uIHNldFRpbWVab25lT3ZlcnJpZGU6XSk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5jcHA6CisgICAgICAg
ICh3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJHZXRQcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRX
ZWJzaXRlRGF0YU1hbmFnZXJTZXRQcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRfd2Vic2l0ZV9k
YXRhX21hbmFnZXJfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRXZWJzaXRlRGF0YU1hbmFn
ZXJHZXREYXRhU3RvcmUpOgorICAgICAgICAod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dl
dF90aW1lX3pvbmVfb3ZlcnJpZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYnNpdGVEYXRhTWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mv
d2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3Bl
L1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3Bl
L2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OndlYlByb2Nlc3NE
YXRhU3RvcmVQYXJhbWV0ZXJzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnBh
cmFtZXRlcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnRpbWVab25lT3ZlcnJp
ZGUgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbjo6dGltZVpvbmVPdmVycmlkZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpzZXRUaW1lWm9uZU92ZXJyaWRlKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzOjpzZXRXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyk6CisKIDIwMjAtMDctMDIgIENhcmxv
cyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3
ZWQuIEZpeCBHVEs0IGJ1aWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EYXRlQ29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
YXRlQ29udmVyc2lvbi5jcHAKaW5kZXggOTU1NzU2YmE0MDVmNDAwOTcwNjEwZjlhNjhjN2VkNDJh
NjdjYjAxNS4uMzYxZTY5Mzk3OTQ5OTExZTZlZTAzMzFhNTBkNDE3ZTkyYWY3MTcyMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb252ZXJzaW9uLmNwcApAQCAt
MTAwLDE3ICsxMDAsMjMgQEAgU3RyaW5nIGZvcm1hdERhdGVUaW1lKGNvbnN0IEdyZWdvcmlhbkRh
dGVUaW1lJiB0LCBEYXRlVGltZUZvcm1hdCBmb3JtYXQsIGJvb2wgYXMKICAgICAgICAgICAgIGFw
cGVuZE51bWJlcjwyPihidWlsZGVyLCBvZmZzZXQgLyA2MCk7CiAgICAgICAgICAgICBhcHBlbmRO
dW1iZXI8Mj4oYnVpbGRlciwgb2Zmc2V0ICUgNjApOwogCisgICAgICAgICAgICBTdHJpbmcgdGlt
ZVpvbmVOYW1lOworICAgICAgICAgICAgaWYgKCFXVEY6OnRpbWVab25lRGlzcGxheU5hbWVPdmVy
cmlkZSgpLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICB0aW1lWm9uZU5hbWUgPSBXVEY6OnRp
bWVab25lRGlzcGxheU5hbWVPdmVycmlkZSgpOworICAgICAgICAgICAgZWxzZSB7CiAjaWYgT1Mo
V0lORE9XUykKLSAgICAgICAgICAgIFRJTUVfWk9ORV9JTkZPUk1BVElPTiB0aW1lWm9uZUluZm9y
bWF0aW9uOwotICAgICAgICAgICAgR2V0VGltZVpvbmVJbmZvcm1hdGlvbigmdGltZVpvbmVJbmZv
cm1hdGlvbik7Ci0gICAgICAgICAgICBjb25zdCBXQ0hBUiogd2luVGltZVpvbmVOYW1lID0gdC5p
c0RTVCgpID8gdGltZVpvbmVJbmZvcm1hdGlvbi5EYXlsaWdodE5hbWUgOiB0aW1lWm9uZUluZm9y
bWF0aW9uLlN0YW5kYXJkTmFtZTsKLSAgICAgICAgICAgIFN0cmluZyB0aW1lWm9uZU5hbWUod2lu
VGltZVpvbmVOYW1lKTsKKyAgICAgICAgICAgICAgICBUSU1FX1pPTkVfSU5GT1JNQVRJT04gdGlt
ZVpvbmVJbmZvcm1hdGlvbjsKKyAgICAgICAgICAgICAgICBHZXRUaW1lWm9uZUluZm9ybWF0aW9u
KCZ0aW1lWm9uZUluZm9ybWF0aW9uKTsKKyAgICAgICAgICAgICAgICBjb25zdCBXQ0hBUiogd2lu
VGltZVpvbmVOYW1lID0gdC5pc0RTVCgpID8gdGltZVpvbmVJbmZvcm1hdGlvbi5EYXlsaWdodE5h
bWUgOiB0aW1lWm9uZUluZm9ybWF0aW9uLlN0YW5kYXJkTmFtZTsKKyAgICAgICAgICAgICAgICB0
aW1lWm9uZU5hbWUgPSBTdHJpbmcod2luVGltZVpvbmVOYW1lKTsKICNlbHNlCi0gICAgICAgICAg
ICBzdHJ1Y3QgdG0gZ3RtID0gdDsKLSAgICAgICAgICAgIGNoYXIgdGltZVpvbmVOYW1lWzcwXTsK
LSAgICAgICAgICAgIHN0cmZ0aW1lKHRpbWVab25lTmFtZSwgc2l6ZW9mKHRpbWVab25lTmFtZSks
ICIlWiIsICZndG0pOworICAgICAgICAgICAgICAgIHN0cnVjdCB0bSBndG0gPSB0OworICAgICAg
ICAgICAgICAgIGNoYXIgdHpOYW1lWzcwXTsKKyAgICAgICAgICAgICAgICBzdHJmdGltZSh0ek5h
bWUsIHNpemVvZih0ek5hbWUpLCAiJVoiLCAmZ3RtKTsKKyAgICAgICAgICAgICAgICB0aW1lWm9u
ZU5hbWUgPSBTdHJpbmcodHpOYW1lKTsKICNlbmRpZgotICAgICAgICAgICAgaWYgKHRpbWVab25l
TmFtZVswXSkgeworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCF0aW1lWm9uZU5hbWUu
aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgKCIp
OwogICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHRpbWVab25lTmFtZSk7CiAgICAgICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyknKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCmluZGV4IDdkZmJjMzY3Y2Y0ZmI0
Mjk4YWRmNjExZDEyYzZhZTJmNDY3NjEzODUuLjViYzNlNWFlNWE3OTMyNzQwODAyYmZhMjVmNmQ3
MDE3MjRkOTIzMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxEYXRlVGltZUZvcm1hdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bERhdGVUaW1lRm9ybWF0LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgPHVuaWNv
ZGUvdWNhbC5oPgogI2luY2x1ZGUgPHVuaWNvZGUvdWRhdHBnLmg+CiAjaW5jbHVkZSA8dW5pY29k
ZS91ZW51bS5oPgorI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5o
PgogCkBAIC0xMDIsNiArMTAzLDEwIEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgaXNVVENF
cXVpdmFsZW50KFN0cmluZ1ZpZXcgdGltZVpvbmUpCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQw
Mi8jc2VjLWRlZmF1bHR0aW1lem9uZQogc3RhdGljIFN0cmluZyBkZWZhdWx0VGltZVpvbmUoKQog
eworICAgIFN0cmluZyB0eiA9IFdURjo6dGltZVpvbmVPdmVycmlkZSgpOworICAgIGlmICghdHou
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdHo7CisKICAgICBTdHJpbmcgY2Fub25pY2FsOwog
CiAgICAgVmVjdG9yPFVDaGFyLCAzMj4gYnVmZmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvRGF0ZU1hdGguY3BwIGIvU291cmNlL1dURi93dGYvRGF0ZU1hdGguY3BwCmluZGV4IGFmOTJm
Njc0NzcwMzQ5Y2M4ZTdiZTlhNTNiMWNlZTZlNzg0MGU3ODEuLjEyMjJiYjUyNjBiMzUxZjA1ZjVi
ZDgzNmRjZTE0ZTZkYzkxZjc5ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRo
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5jcHAKQEAgLTc2LDkgKzc2LDE0IEBA
CiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHRpbWUu
aD4KKyNpbmNsdWRlIDx1bmljb2RlL3VjYWwuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5o
PgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CisjaW5jbHVkZSA8d3RmL0xhbmd1YWdlLmg+
CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNw
ZWNpZmljLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUg
PHd0Zi91bmljb2RlL1VURjhDb252ZXJzaW9uLmg+CiAKICNpZiBPUyhXSU5ET1dTKQogI2luY2x1
ZGUgPHdpbmRvd3MuaD4KQEAgLTkyLDYgKzk3LDE4IEBAIHRlbXBsYXRlPHVuc2lnbmVkIGxlbmd0
aD4gaW5saW5lIGJvb2wgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBj
CiAgICAgcmV0dXJuIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZywgbG93ZXJj
YXNlTGV0dGVycywgbGVuZ3RoIC0gMSk7CiB9CiAKK3N0cnVjdCBUaW1lWm9uZU92ZXJyaWRlIHsK
KyAgICBVQ2FsZW5kYXIqIGNhbDsKKyAgICBTdHJpbmcgaWQ7CisgICAgU3RyaW5nIGRpc3BsYXlO
YW1lOworfTsKKworc3RhdGljIFRpbWVab25lT3ZlcnJpZGUmIGlubmVyVGltZVpvbmVPdmVycmlk
ZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRpbWVab25lT3ZlcnJpZGU+IHRpbWVa
b25lT3ZlcnJpZGU7CisgICAgcmV0dXJuIHRpbWVab25lT3ZlcnJpZGU7Cit9CisKIC8qIENvbnN0
YW50cyAqLwogCiBjb25zdCBjaGFyKiBjb25zdCB3ZWVrZGF5TmFtZVs3XSA9IHsgIk1vbiIsICJU
dWUiLCAiV2VkIiwgIlRodSIsICJGcmkiLCAiU2F0IiwgIlN1biIgfTsKQEAgLTMxOCw2ICszMzUs
MTQgQEAgc3RhdGljIGRvdWJsZSBjYWxjdWxhdGVEU1RPZmZzZXQodGltZV90IGxvY2FsVGltZSwg
ZG91YmxlIHV0Y09mZnNldCkKIC8vIFJldHVybnMgY29tYmluZWQgb2Zmc2V0IGluIG1pbGxpc2Vj
b25kIChVVEMgKyBEU1QpLgogTG9jYWxUaW1lT2Zmc2V0IGNhbGN1bGF0ZUxvY2FsVGltZU9mZnNl
dChkb3VibGUgbXMsIFRpbWVUeXBlIGlucHV0VGltZVR5cGUpCiB7CisgICAgYXV0byYgdHogPSBp
bm5lclRpbWVab25lT3ZlcnJpZGUoKTsKKyAgICBpZiAodHouY2FsKSB7CisgICAgICAgIFVFcnJv
ckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgICAgICB1Y2FsX3NldE1pbGxpcyh0ei5j
YWwsIG1zLCAmc3RhdHVzKTsKKyAgICAgICAgaW50MzJfdCBvZmZzZXQgPSB1Y2FsX2dldCh0ei5j
YWwsIFVDQUxfWk9ORV9PRkZTRVQsICZzdGF0dXMpOworICAgICAgICBpbnQzMl90IGRzdE9mZnNl
dCA9IHVjYWxfZ2V0KHR6LmNhbCwgVUNBTF9EU1RfT0ZGU0VULCAmc3RhdHVzKTsKKyAgICAgICAg
cmV0dXJuIExvY2FsVGltZU9mZnNldChkc3RPZmZzZXQsIG9mZnNldCArIGRzdE9mZnNldCk7Cisg
ICAgfQogI2lmIEhBVkUoVE1fR01UT0ZGKQogICAgIGRvdWJsZSBsb2NhbFRvVVRDVGltZU9mZnNl
dCA9IGlucHV0VGltZVR5cGUgPT0gTG9jYWxUaW1lID8gY2FsY3VsYXRlVVRDT2Zmc2V0KCkgOiAw
OwogI2Vsc2UKQEAgLTEwMTksNCArMTA0NCw2NiBAQCBTdHJpbmcgbWFrZVJGQzI4MjJEYXRlU3Ry
aW5nKHVuc2lnbmVkIGRheU9mV2VlaywgdW5zaWduZWQgZGF5LCB1bnNpZ25lZCBtb250aCwgdQog
ICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKK2Jvb2wgc2V0VGltZVpv
bmVPdmVycmlkZShjb25zdCBTdHJpbmcmIHRpbWVab25lKQoreworICAgIGlubmVyVGltZVpvbmVP
dmVycmlkZSgpLmRpc3BsYXlOYW1lID0gU3RyaW5nKCk7CisgICAgaWYgKGlubmVyVGltZVpvbmVP
dmVycmlkZSgpLmNhbCkgeworICAgICAgICB1Y2FsX2Nsb3NlKGlubmVyVGltZVpvbmVPdmVycmlk
ZSgpLmNhbCk7CisgICAgICAgIGlubmVyVGltZVpvbmVPdmVycmlkZSgpLmNhbCA9IG51bGxwdHI7
CisgICAgfQorCisgICAgaWYgKHRpbWVab25lLmlzRW1wdHkoKSkgeworICAgICAgICBpbm5lclRp
bWVab25lT3ZlcnJpZGUoKS5pZCA9IFN0cmluZygpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisKKyAgICAvLyBUaW1lem9uZSBpcyBhc2NpaS4KKyAgICBWZWN0b3I8VUNoYXI+IGJ1ZmZl
cih0aW1lWm9uZS5sZW5ndGgoKSk7CisgICAgVUNoYXIqIGJ1ZmZlclN0YXJ0ID0gYnVmZmVyLmRh
dGEoKTsKKyAgICBDU3RyaW5nIGN0eiA9IHRpbWVab25lLnV0ZjgoKTsKKyAgICBpZiAoIVVuaWNv
ZGU6OmNvbnZlcnRVVEY4VG9VVEYxNihjdHouZGF0YSgpLCBjdHouZGF0YSgpICsgY3R6Lmxlbmd0
aCgpLCAmYnVmZmVyU3RhcnQsIGJ1ZmZlclN0YXJ0ICsgdGltZVpvbmUubGVuZ3RoKCkpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBWZWN0b3I8VUNoYXIsIDMyPiBjYW5vbmljYWxCdWZm
ZXIoMzIpOworICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIGF1dG8g
Y2Fub25pY2FsTGVuZ3RoID0gdWNhbF9nZXRDYW5vbmljYWxUaW1lWm9uZUlEKGJ1ZmZlci5kYXRh
KCksIGJ1ZmZlci5zaXplKCksIGNhbm9uaWNhbEJ1ZmZlci5kYXRhKCksIGNhbm9uaWNhbEJ1ZmZl
ci5zaXplKCksIG51bGxwdHIsICZzdGF0dXMpOworICAgIGlmIChzdGF0dXMgPT0gVV9CVUZGRVJf
T1ZFUkZMT1dfRVJST1IpIHsKKyAgICAgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgICAg
ICBjYW5vbmljYWxCdWZmZXIuZ3JvdyhjYW5vbmljYWxMZW5ndGgpOworICAgICAgICB1Y2FsX2dl
dENhbm9uaWNhbFRpbWVab25lSUQoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSwgY2Fub25p
Y2FsQnVmZmVyLmRhdGEoKSwgY2Fub25pY2FsTGVuZ3RoLCBudWxscHRyLCAmc3RhdHVzKTsKKyAg
ICB9CisgICAgaWYgKCFVX1NVQ0NFU1Moc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgVUNhbGVuZGFyKiBjYWwgPSB1Y2FsX29wZW4oY2Fub25pY2FsQnVmZmVyLmRhdGEoKSwg
Y2Fub25pY2FsTGVuZ3RoLCBudWxscHRyLCBVQ0FMX1RSQURJVElPTkFMLCAmc3RhdHVzKTsKKyAg
ICBpZiAoIVVfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBW
ZWN0b3I8VUNoYXIsIDMyPiBkaXNwbGF5TmFtZUJ1ZmZlcigzMik7CisgICAgYXV0byBkaXNwbGF5
TmFtZUxlbmd0aCA9IHVjYWxfZ2V0VGltZVpvbmVEaXNwbGF5TmFtZShjYWwsIFVDQUxfU1RBTkRB
UkQsIGRlZmF1bHRMYW5ndWFnZSgpLnV0ZjgoKS5kYXRhKCksIGRpc3BsYXlOYW1lQnVmZmVyLmRh
dGEoKSwgZGlzcGxheU5hbWVCdWZmZXIuc2l6ZSgpLCAmc3RhdHVzKTsKKyAgICBpZiAoc3RhdHVz
ID09IFVfQlVGRkVSX09WRVJGTE9XX0VSUk9SKSB7CisgICAgICAgIHN0YXR1cyA9IFVfWkVST19F
UlJPUjsKKyAgICAgICAgZGlzcGxheU5hbWVCdWZmZXIuZ3JvdyhkaXNwbGF5TmFtZUxlbmd0aCk7
CisgICAgICAgIHVjYWxfZ2V0VGltZVpvbmVEaXNwbGF5TmFtZShjYWwsIFVDQUxfU1RBTkRBUkQs
IGRlZmF1bHRMYW5ndWFnZSgpLnV0ZjgoKS5kYXRhKCksIGRpc3BsYXlOYW1lQnVmZmVyLmRhdGEo
KSwgZGlzcGxheU5hbWVMZW5ndGgsICZzdGF0dXMpOworICAgIH0KKyAgICBpZiAoIVVfU1VDQ0VT
UyhzdGF0dXMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvJiB0aW1lWm9uZU92
ZXJyaWRlID0gaW5uZXJUaW1lWm9uZU92ZXJyaWRlKCk7CisgICAgdGltZVpvbmVPdmVycmlkZS5j
YWwgPSBjYWw7CisgICAgdGltZVpvbmVPdmVycmlkZS5pZCA9IFN0cmluZyhjYW5vbmljYWxCdWZm
ZXIuZGF0YSgpLCBjYW5vbmljYWxMZW5ndGgpOworICAgIHRpbWVab25lT3ZlcnJpZGUuZGlzcGxh
eU5hbWUgPSBTdHJpbmcoZGlzcGxheU5hbWVCdWZmZXIuZGF0YSgpLCBkaXNwbGF5TmFtZUxlbmd0
aCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1N0cmluZyB0aW1lWm9uZU92ZXJyaWRlKCkKK3sK
KyAgICByZXR1cm4gaW5uZXJUaW1lWm9uZU92ZXJyaWRlKCkuaWQ7Cit9CisKK1N0cmluZyB0aW1l
Wm9uZURpc3BsYXlOYW1lT3ZlcnJpZGUoKQoreworICAgIHJldHVybiBpbm5lclRpbWVab25lT3Zl
cnJpZGUoKS5kaXNwbGF5TmFtZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5oIGIvU291cmNlL1dURi93dGYvRGF0ZU1hdGguaApp
bmRleCAyNDZiYTY3Yzc2NGI2MjkwNDJhNzkyN2QyNGZlODliMDQ5ZDgyYTBiLi5iMTNmYzFkODYw
ZGE1NjBlYjU3NzViYmRiMGZlYzRhNzI1MjJjNmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9EYXRlTWF0aC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmgKQEAgLTM4OSw2ICsz
ODksMTAgQEAgaW5saW5lIGludCBkYXlJbk1vbnRoRnJvbURheUluWWVhcihpbnQgZGF5SW5ZZWFy
LCBib29sIGxlYXBZZWFyKQogICAgIHJldHVybiBkIC0gc3RlcDsKIH0KIAorV1RGX0VYUE9SVF9Q
UklWQVRFIGJvb2wgc2V0VGltZVpvbmVPdmVycmlkZShjb25zdCBTdHJpbmcmKTsKK1dURl9FWFBP
UlRfUFJJVkFURSBTdHJpbmcgdGltZVpvbmVPdmVycmlkZSgpOworV1RGX0VYUE9SVF9QUklWQVRF
IFN0cmluZyB0aW1lWm9uZURpc3BsYXlOYW1lT3ZlcnJpZGUoKTsKKwogLy8gUmV0dXJucyBjb21i
aW5lZCBvZmZzZXQgaW4gbWlsbGlzZWNvbmQgKFVUQyArIERTVCkuCiBXVEZfRVhQT1JUX1BSSVZB
VEUgTG9jYWxUaW1lT2Zmc2V0IGNhbGN1bGF0ZUxvY2FsVGltZU9mZnNldChkb3VibGUgdXRjSW5N
aWxsaXNlY29uZHMsIFRpbWVUeXBlID0gVVRDVGltZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oCmluZGV4IGU2MjYzNDI0
NGU4MWE5ZWM1ZTc2N2NiNzJhZjA3MWVkZTM1ZGY5NTMuLmM3ZTdlYzZjODI2MmRjZTYyYmFiNDE2
ZGQzYjg0NDIzNTE1YTRiODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBy
b2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
UHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMuaApAQCAtNTEsNiArNTEsNyBAQCBzdHJ1Y3QgV2Vi
UHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMgewogICAgIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4+IGRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uOwogI2VuZGlmCiAgICAgYm9v
bCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCB7IGZhbHNlIH07CisgICAgU3RyaW5nIHRp
bWVab25lT3ZlcnJpZGU7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29k
ZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9w
dGlvbmFsPFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzPiBkZWNvZGUoRGVjb2RlciYpOwpA
QCAtNzcsNiArNzgsNyBAQCB2b2lkIFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzOjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IGRvbWFpbnNXaXRoVXNl
ckludGVyYWN0aW9uOwogI2VuZGlmCiAgICAgZW5jb2RlciA8PCByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRW5hYmxlZDsKKyAgICBlbmNvZGVyIDw8IHRpbWVab25lT3ZlcnJpZGU7CiB9CiAKIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+CkBAIC0xNTcsNiArMTU5LDEwIEBAIE9wdGlvbmFsPFdlYlByb2Nl
c3NEYXRhU3RvcmVQYXJhbWV0ZXJzPiBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVyczo6ZGVj
b2RlKERlCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5h
YmxlZCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKKyAgICBTdHJpbmcgdGltZVpv
bmVPdmVycmlkZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHRpbWVab25lT3ZlcnJpZGUpKQor
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCiAgICAgcmV0dXJuIFdlYlByb2Nlc3NEYXRh
U3RvcmVQYXJhbWV0ZXJzIHsKICAgICAgICAgV1RGTW92ZSgqc2Vzc2lvbklEKSwKICAgICAgICAg
V1RGTW92ZShhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KSwKQEAgLTE3NSw3ICsxODEsOCBAQCBP
cHRpb25hbDxXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycz4gV2ViUHJvY2Vzc0RhdGFTdG9y
ZVBhcmFtZXRlcnM6OmRlY29kZShEZQogICAgICAgICAqdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
TW9kZSwKICAgICAgICAgV1RGTW92ZSgqZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb24pLAogI2Vu
ZGlmCi0gICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkCisgICAgICAgIHJlc291
cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkLAorICAgICAgICBXVEZNb3ZlKHRpbWVab25lT3ZlcnJp
ZGUpCiAgICAgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0
ZURhdGFTdG9yZVBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURh
dGFTdG9yZVBhcmFtZXRlcnMuY3BwCmluZGV4IDZkMGMxMjlhNzQwNTEwZDM4Njk3MzcwNWFkMDky
ZWYxMzJjYzA3NWEuLmY0ZDk5NGQ5YmJmNWRiYzg4NDM4YzgwOTAyZjBhZWVlZTJjNjE5NWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVy
cy5jcHAKQEAgLTU5LDYgKzU5LDggQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczo6
ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIAogICAgIGVuY29kZXIgPDwgcGVy
T3JpZ2luU3RvcmFnZVF1b3RhOwogICAgIGVuY29kZXIgPDwgcGVyVGhpcmRQYXJ0eU9yaWdpblN0
b3JhZ2VRdW90YTsKKworICAgIGVuY29kZXIgPDwgdGltZVpvbmVPdmVycmlkZTsKIH0KIAogT3B0
aW9uYWw8V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM+IFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0
ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQpAQCAtMTY2LDcgKzE2OCwxMyBAQCBP
cHRpb25hbDxXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycz4gV2Vic2l0ZURhdGFTdG9yZVBhcmFt
ZXRlcnM6OmRlY29kZShJUEM6OkRlYwogICAgIGlmICghcGVyVGhpcmRQYXJ0eU9yaWdpblN0b3Jh
Z2VRdW90YSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJzLnBl
clRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGEgPSAqcGVyVGhpcmRQYXJ0eU9yaWdpblN0b3Jh
Z2VRdW90YTsKLSAgICAKKworICAgIE9wdGlvbmFsPFN0cmluZz4gdGltZVpvbmVPdmVycmlkZTsK
KyAgICBkZWNvZGVyID4+IHRpbWVab25lT3ZlcnJpZGU7CisgICAgaWYgKCF0aW1lWm9uZU92ZXJy
aWRlKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHBhcmFtZXRlcnMudGltZVpv
bmVPdmVycmlkZSA9IFdURk1vdmUoKnRpbWVab25lT3ZlcnJpZGUpOworCiAgICAgcmV0dXJuIHBh
cmFtZXRlcnM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVE
YXRhU3RvcmVQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0
b3JlUGFyYW1ldGVycy5oCmluZGV4IGYyN2RmNDg5ODA5ZjMxOTYwOGI2ODBjYjJhOGExYzE0Yjcw
MTg0MzkuLjMyODE2MjgwNTRiZGFiNDViMWNjYzRiNGJkODIxNDJmY2U5ODE0ZjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaApAQCAt
NzYsNiArNzYsOCBAQCBzdHJ1Y3QgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgewogCiAgICAg
dWludDY0X3QgcGVyT3JpZ2luU3RvcmFnZVF1b3RhIHsgV2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFu
YWdlcjo6ZGVmYXVsdFF1b3RhKCkgfTsKICAgICB1aW50NjRfdCBwZXJUaGlyZFBhcnR5T3JpZ2lu
U3RvcmFnZVF1b3RhIHsgV2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFuYWdlcjo6ZGVmYXVsdFRoaXJk
UGFydHlRdW90YSgpIH07CisKKyAgICBTdHJpbmcgdGltZVpvbmVPdmVycmlkZTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvblJlZi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uUmVmLmNw
cAppbmRleCBjYTEzMzUyNzQ1OTJjNmQ4ZGRhZDI0Njk1NWQyNTAwOGM1N2QxZTZlLi5iYzA2YjQz
YWQ4NTVlNzVhZWVjMWZkZjJlZTU2ZDM0NDllNGFkMWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uUmVmLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uUmVmLmNwcApAQCAtMTY5LDMgKzE2OSwxMyBAQCB2b2lkIFdLV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb25TZXRTdGFsZVdoaWxlUmV2YWxpZGF0ZUVuYWJsZWQoV0tXZWJz
aXRlRGF0YQogewogICAgIFdlYktpdDo6dG9JbXBsKGNvbmZpZ3VyYXRpb24pLT5zZXRTdGFsZVdo
aWxlUmV2YWxpZGF0ZUVuYWJsZWQoZW5hYmxlZCk7CiB9CisKK1dLU3RyaW5nUmVmIFdLV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25Db3B5VGltZVpvbmVPdmVycmlkZShXS1dlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24pCit7CisgICAgcmV0dXJuIFdlYktp
dDo6dG9Db3BpZWRBUEkoV2ViS2l0Ojp0b0ltcGwoY29uZmlndXJhdGlvbiktPnRpbWVab25lT3Zl
cnJpZGUoKSk7Cit9CisKK3ZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvblNldFRp
bWVab25lT3ZlcnJpZGUoV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvblJlZiBjb25maWd1
cmF0aW9uLCBXS1N0cmluZ1JlZiB0aW1lWm9uZSkKK3sKKyAgICBXZWJLaXQ6OnRvSW1wbChjb25m
aWd1cmF0aW9uKS0+c2V0VGltZVpvbmVPdmVycmlkZShXZWJLaXQ6OnRvSW1wbCh0aW1lWm9uZSkt
PnN0cmluZygpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25SZWYuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25SZWYuaAppbmRleCA3
MjllZTBhNGIxMzhhOWJjOGVmMTg1Y2ZiNjBkZDRiY2FkZjMzZmI1Li41MTdjNzhmZGQxYzQ4YzVk
NDRjMjRlNTNjMjJkNDFiNzAxM2RkMTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uUmVmLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
blJlZi5oCkBAIC03NSw2ICs3NSw5IEBAIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb25TZXRUZXN0aW5nU2Vzc2lvbkVuYWJsZWQoV0tXZWJzaXRlCiBXS19FWFBP
UlQgYm9vbCBXS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uR2V0U3RhbGVXaGlsZVJldmFs
aWRhdGVFbmFibGVkKFdLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJh
dGlvbik7CiBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uU2V0
U3RhbGVXaGlsZVJldmFsaWRhdGVFbmFibGVkKFdLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b25SZWYgY29uZmlndXJhdGlvbiwgYm9vbCBlbmFibGVkKTsKIAorV0tfRVhQT1JUIFdLU3RyaW5n
UmVmIFdLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25Db3B5VGltZVpvbmVPdmVycmlkZShX
S1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24pOworV0tfRVhQ
T1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvblNldFRpbWVab25lT3ZlcnJp
ZGUoV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uLCBXS1N0
cmluZ1JlZiB0aW1lWm9uZSk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCmluZGV4IDI5ZDhjNTk0Y2FmM2VkNzEy
MTZmYTc2Y2E3ZTdmMTc2ODMwNDViZmQuLmI0MDY4ZGNjNjNlOWE1OGI0MjQ0NDRkN2FiYWVjNGU3
YjVmMWVhN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCkBAIC01
Miw2ICs1Miw3IEBAIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvcygxMC4xMyksIGlvcygxMS4wKSkK
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCBudWxsYWJsZSwgY29weSkgTlNTdHJpbmcgKmRhdGFDb25u
ZWN0aW9uU2VydmljZVR5cGUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9z
KFdLX0lPU19UQkEpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHByZXZlbnRzU3lzdGVt
SFRUUFByb3h5QXV0aGVudGljYXRpb24gV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJB
KSwgaW9zKFdLX0lPU19UQkEpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHJlcXVpcmVz
U2VjdXJlSFRUUFNQcm94eUNvbm5lY3Rpb24gV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNf
VEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBudWxsYWJsZSwg
Y29weSkgTlNTdHJpbmcgKnRpbWVab25lT3ZlcnJpZGUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhX
S19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAogLy8gVGhlc2UgcHJvcGVydGllcyBvbmx5
IG1ha2Ugc2Vuc2UgZm9yIHBlcnNpc3RlbnQgZGF0YSBzdG9yZXMsIGFuZCB3aWxsIHRocm93CiAv
LyBhbiBleGNlcHRpb24gaWYgc2V0IGZvciBub24tcGVyc2lzdGVudCBzdG9yZXMuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24ubW0KaW5kZXggMDE1MzExNjAwNTY0ODAzYTlk
MGI4ZGU5YmYxZmU3OWZmMTAyYmVhMC4uYWFkZWI1ZThlYjFkNTYyMzU4M2MyYWEyMTFiMGY0MWFl
NTJmNWRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5tbQpAQCAt
NDM4LDYgKzQzOCwxNiBAQCBzdGF0aWMgdm9pZCBjaGVja1VSTEFyZ3VtZW50KE5TVVJMICp1cmwp
CiAgICAgX2NvbmZpZ3VyYXRpb24tPnNldFJlcXVpcmVzU2VjdXJlSFRUUFNQcm94eUNvbm5lY3Rp
b24ocmVxdWlyZXMpOwogfQogCistIChOU1N0cmluZyAqKXRpbWVab25lT3ZlcnJpZGUKK3sKKyAg
ICByZXR1cm4gX2NvbmZpZ3VyYXRpb24tPnRpbWVab25lT3ZlcnJpZGUoKTsKK30KKworLSAodm9p
ZClzZXRUaW1lWm9uZU92ZXJyaWRlOihOU1N0cmluZyAqKXRpbWVab25lCit7CisgICAgX2NvbmZp
Z3VyYXRpb24tPnNldFRpbWVab25lT3ZlcnJpZGUodGltZVpvbmUpOworfQorCiAtICh2b2lkKXNl
dFByb3h5Q29uZmlndXJhdGlvbjooTlNEaWN0aW9uYXJ5ICopY29uZmlndXJhdGlvbgogewogICAg
IF9jb25maWd1cmF0aW9uLT5zZXRQcm94eUNvbmZpZ3VyYXRpb24oKF9fYnJpZGdlIENGRGljdGlv
bmFyeVJlZilbY29uZmlndXJhdGlvbiBjb3B5XSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcApp
bmRleCBhMWI2OGYzYTA2YTE4MTJjZjBmZmNjMzUwYTUyZGQxNDcwYTJiNjE1Li4wZDJiNzg3MmMx
OWFkYThjNzg0NDRlYzE0NzMxMzRjMjQ5ZmM0MzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5j
cHAKQEAgLTg5LDcgKzg5LDggQEAgZW51bSB7CiAgICAgUFJPUF9JVFBfRElSRUNUT1JZLAogICAg
IFBST1BfU0VSVklDRV9XT1JLRVJfUkVHSVNUUkFUSU9OU19ESVJFQ1RPUlksCiAgICAgUFJPUF9E
T01fQ0FDSEVfRElSRUNUT1JZLAotICAgIFBST1BfSVNfRVBIRU1FUkFMCisgICAgUFJPUF9JU19F
UEhFTUVSQUwsCisgICAgUFJPUF9USU1FX1pPTkVfT1ZFUlJJREUKIH07CiAKIHN0cnVjdCBfV2Vi
S2l0V2Vic2l0ZURhdGFNYW5hZ2VyUHJpdmF0ZSB7CkBAIC0xMTAsNiArMTExLDcgQEAgc3RydWN0
IF9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRlIHsKICAgICBHVW5pcXVlUHRyPGNoYXI+
IGl0cERpcmVjdG9yeTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IHN3UmVnaXN0cmF0aW9uc0RpcmVj
dG9yeTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IGRvbUNhY2hlRGlyZWN0b3J5OworICAgIEdVbmlx
dWVQdHI8Y2hhcj4gdGltZVpvbmVPdmVycmlkZTsKIAogICAgIEdSZWZQdHI8V2ViS2l0Q29va2ll
TWFuYWdlcj4gY29va2llTWFuYWdlcjsKICAgICBWZWN0b3I8V2ViUHJvY2Vzc1Bvb2wqPiBwcm9j
ZXNzUG9vbHM7CkBAIC0xNjAsNiArMTYyLDkgQEAgc3RhdGljIHZvaWQgd2Via2l0V2Vic2l0ZURh
dGFNYW5hZ2VyR2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSUQsIEcKICAg
ICBjYXNlIFBST1BfSVNfRVBIRU1FUkFMOgogICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZh
bHVlLCB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfaXNfZXBoZW1lcmFsKG1hbmFnZXIpKTsK
ICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1RJTUVfWk9ORV9PVkVSUklERToKKyAgICAg
ICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZhbHVlLCB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJf
Z2V0X3RpbWVfem9uZV9vdmVycmlkZShtYW5hZ2VyKSk7CisgICAgICAgIGJyZWFrOwogICAgIGRl
ZmF1bHQ6CiAgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3Qs
IHByb3BJRCwgcGFyYW1TcGVjKTsKICAgICB9CkBAIC0yMDcsNiArMjEyLDkgQEAgc3RhdGljIHZv
aWQgd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyU2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBn
dWludCBwcm9wSUQsIGMKICAgICAgICAgaWYgKGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKQog
ICAgICAgICAgICAgbWFuYWdlci0+cHJpdi0+d2Vic2l0ZURhdGFTdG9yZSA9IFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6Y3JlYXRlTm9uUGVyc2lzdGVudCgpOwogICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFBST1BfVElNRV9aT05FX09WRVJSSURFOgorICAgICAgICBtYW5hZ2VyLT5wcml2LT50
aW1lWm9uZU92ZXJyaWRlLnJlc2V0KGdfdmFsdWVfZHVwX3N0cmluZyh2YWx1ZSkpOworICAgICAg
ICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJP
UEVSVFlfSUQob2JqZWN0LCBwcm9wSUQsIHBhcmFtU3BlYyk7CiAgICAgfQpAQCAtNDYwLDYgKzQ2
OCwyNSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfY2xhc3NfaW5p
dChXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJDbGFzcwogICAgICAgICAgICAgXygiV2hldGhlciB0
aGUgV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyIGlzIGVwaGVtZXJhbCIpLAogICAgICAgICAgICAg
RkFMU0UsCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHUGFyYW1GbGFncz4oV0VCS0lUX1BBUkFN
X1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RSVUNUX09OTFkpKSk7CisKKworICAgIC8qKgorICAg
ICAqIFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlcjp0aW1lLXpvbmUtb3ZlcnJpZGU6CisgICAgICoK
KyAgICAgKiBUaGUgdGltZXpvbmUgb3ZlcnJpZGUgZm9yIHRoaXMgI1dlYktpdFdlYnNpdGVEYXRh
TWFuYWdlci4KKyAgICAgKgorICAgICAqIFNpbmNlOiAyLjMwCisgICAgICovCisgICAgZ19vYmpl
Y3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKKyAgICAgICAgZ09iamVjdENsYXNzLAorICAgICAg
ICBQUk9QX1RJTUVfWk9ORV9PVkVSUklERSwKKyAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygK
KyAgICAgICAgICAgICJ0aW1lLXpvbmUtb3ZlcnJpZGUiLAorICAgICAgICAgICAgXygiVGltZSBa
b25lIE92ZXJyaWRlIiksCisgICAgICAgICAgICBfKCJUaGUgdGltZSB6b25lIHRvIHVzZSBpbnN0
ZWFkIG9mIHRoZSBzeXN0ZW0gb25lIiksCisgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9SRUFEV1JJVEUgfCBHX1BB
UkFNX0NPTlNUUlVDVF9PTkxZKSkpOworCiB9CiAKIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYg
d2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0RGF0YVN0b3JlKFdlYktpdFdlYnNpdGVEYXRhTWFu
YWdlciogbWFuYWdlcikKQEAgLTQ4NSw2ICs1MTIsOCBAQCBXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmUmIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldERhdGFTdG9yZShXZWJLaXRXZWJzaXRlRGF0
YQogICAgICAgICAgICAgY29uZmlndXJhdGlvbi0+c2V0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bkRpcmVjdG9yeShGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KHByaXYtPnN3UmVnaXN0cmF0aW9uc0RpcmVjdG9yeS5nZXQoKSkpOwogICAgICAgICBpZiAocHJp
di0+ZG9tQ2FjaGVEaXJlY3RvcnkpCiAgICAgICAgICAgICBjb25maWd1cmF0aW9uLT5zZXRDYWNo
ZVN0b3JhZ2VEaXJlY3RvcnkoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihwcml2LT5kb21DYWNoZURpcmVjdG9yeS5nZXQoKSkpOworICAgICAgICBpZiAocHJp
di0+dGltZVpvbmVPdmVycmlkZSkKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24tPnNldFRpbWVa
b25lT3ZlcnJpZGUocHJpdi0+dGltZVpvbmVPdmVycmlkZS5nZXQoKSk7CiAgICAgICAgIHByaXYt
PndlYnNpdGVEYXRhU3RvcmUgPSBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZShXVEZN
b3ZlKGNvbmZpZ3VyYXRpb24pLCBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsK
ICAgICB9CiAKQEAgLTExMTIsMyArMTE0MSwyNCBAQCBnYm9vbGVhbiB3ZWJraXRfd2Vic2l0ZV9k
YXRhX21hbmFnZXJfY2xlYXJfZmluaXNoKFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciogbWFuYQog
CiAgICAgcmV0dXJuIGdfdGFza19wcm9wYWdhdGVfYm9vbGVhbihHX1RBU0socmVzdWx0KSwgZXJy
b3IpOwogfQorCisvKioKKyAqIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfdGltZV96
b25lX292ZXJyaWRlOgorICogQG1hbmFnZXI6IGEgI1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlcgor
ICoKKyAqIEdldCB0aGUgI1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlcjp0aW1lLXpvbmUtb3ZlcnJp
ZGUgcHJvcGVydHkuCisgKgorICogUmV0dXJuczogKGFsbG93LW5vbmUpOiB0aGUgdGltZSB6b25l
IGZvciBXZWJzaXRlIGRhdGEsIG9yICVOVUxMIGlmCisgKiAgICAjV2ViS2l0V2Vic2l0ZURhdGFN
YW5hZ2VyOnRpbWUtem9uZS1vdmVycmlkZSB3YXMgbm90IHByb3ZpZGVkIG9yIEBtYW5hZ2VyIGlz
IGVwaGVtZXJhbC4KKyAqCisgKiBTaW5jZTogMi4zMAorICovCitjb25zdCBnY2hhciogd2Via2l0
X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF90aW1lX3pvbmVfb3ZlcnJpZGUoV2ViS2l0V2Vic2l0
ZURhdGFNYW5hZ2VyKiBtYW5hZ2VyKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJ
VF9JU19XRUJTSVRFX0RBVEFfTUFOQUdFUihtYW5hZ2VyKSwgbnVsbHB0cik7CisKKyAgICBpZiAo
bWFuYWdlci0+cHJpdi0+dGltZVpvbmVPdmVycmlkZSAmJiAhbWFuYWdlci0+cHJpdi0+d2Vic2l0
ZURhdGFTdG9yZS0+aXNQZXJzaXN0ZW50KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgcmV0dXJuIG1hbmFnZXItPnByaXYtPnRpbWVab25lT3ZlcnJpZGUuZ2V0KCk7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYnNpdGVEYXRh
TWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJzaXRl
RGF0YU1hbmFnZXIuaAppbmRleCBjNzExMmM1YmJkMzRiNjgwMDMxZWJiNDJkYjkzZGZkMDIxMDA0
Mzc4Li42N2ExNmU3YTA1ZmE0Njg5OGU2MmYwOTRkNzg5ZTI0OWNjNzRlMzljIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vic2l0ZURh
dGFNYW5hZ2VyLmgKQEAgLTEwNSw2ICsxMDUsOSBAQCB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFn
ZXJfZ2V0X2RvbV9jYWNoZV9kaXJlY3RvcnkgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYgog
V0VCS0lUX0FQSSBXZWJLaXRDb29raWVNYW5hZ2VyICoKIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFu
YWdlcl9nZXRfY29va2llX21hbmFnZXIgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2Vi
c2l0ZURhdGFNYW5hZ2VyICptYW5hZ2VyKTsKIAorV0VCS0lUX0FQSSBjb25zdCBnY2hhcioKK3dl
YmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfdGltZV96b25lX292ZXJyaWRlICAgICAgICAg
ICAgICAgICAgICAoV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiBtYW5hZ2VyKTsKKwogV0VCS0lU
X0FQSSB2b2lkCiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfc2V0X2l0cF9lbmFibGVkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciAqbWFuYWdl
ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gICAgICAgICAgICAgICAgICBlbmFibGVkKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3Rr
LTQuMC1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mv
d2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CmluZGV4IDYyYjBlMTA4NmIwOThmMzE1MmZjZDE3
OTNhMTNhYTFkM2VlYjA0ODMuLjYzODk3NGQ5NGM2MGY1MjA1YWQwNzA3ZWI1ZjYyOWQ3Nzc2OWUz
MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJr
aXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dApAQCAtMTQ2NCw2ICsxNDY0LDcg
QEAgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9vZmZsaW5lX2FwcGxpY2F0aW9uX2Nh
Y2hlX2RpcmVjdG9yeQogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9pbmRleGVkZGJf
ZGlyZWN0b3J5CiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X3dlYnNxbF9kaXJlY3Rv
cnkKIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaHN0c19jYWNoZV9kaXJlY3RvcnkK
K3dlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfdGltZV96b25lX292ZXJyaWRlCiB3ZWJr
aXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2l0cF9kaXJlY3RvcnkKIHdlYmtpdF93ZWJzaXRl
X2RhdGFfbWFuYWdlcl9nZXRfc2VydmljZV93b3JrZXJfcmVnaXN0cmF0aW9uc19kaXJlY3RvcnkK
IHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfZG9tX2NhY2hlX2RpcmVjdG9yeQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJzaXRlRGF0
YU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2Vic2l0
ZURhdGFNYW5hZ2VyLmgKaW5kZXggYWU0MzhmZWFmZWIxMTFkYTFjODVmZjVlNGMwZDBjYWI2MjAw
MTRjZS4uODI1ZjY5Y2I3NTMwNWJiNzAzMTA4N2FlNDlmOGQ5NzBjNzViYzcyMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJzaXRlRGF0YU1hbmFn
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYnNpdGVE
YXRhTWFuYWdlci5oCkBAIC0xMDUsNiArMTA1LDkgQEAgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5h
Z2VyX2dldF9kb21fY2FjaGVfZGlyZWN0b3J5ICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWIK
IFdFQktJVF9BUEkgV2ViS2l0Q29va2llTWFuYWdlciAqCiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21h
bmFnZXJfZ2V0X2Nvb2tpZV9tYW5hZ2VyICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdl
YnNpdGVEYXRhTWFuYWdlciAqbWFuYWdlcik7CiAKK1dFQktJVF9BUEkgY29uc3QgZ2NoYXIqCit3
ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X3RpbWVfem9uZV9vdmVycmlkZSAgICAgICAg
ICAgICAgICAgICAgKFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciogbWFuYWdlcik7CisKIFdFQktJ
VF9BUEkgdm9pZAogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX3NldF9pdHBfZW5hYmxlZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIgKm1hbmFn
ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdib29sZWFuICAgICAgICAgICAgICAgICAgZW5hYmxlZCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEuMC1z
ZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEu
MC1zZWN0aW9ucy50eHQKaW5kZXggN2QxMjE0YjFjYjE1NzcyOGVlYTk1OWM4MGVjNjA0NjliODY0
ODhhNC4uMjc3NmU1NGNmNDYyOTZiNzcxNTg5MDhhYWMzOTdlNDM4NTc2NGM0NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlvbnMu
dHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMS4wLXNl
Y3Rpb25zLnR4dApAQCAtMTQwMiw2ICsxNDAyLDcgQEAgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5h
Z2VyX2dldF9pdHBfZGlyZWN0b3J5CiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X3Nl
cnZpY2Vfd29ya2VyX3JlZ2lzdHJhdGlvbnNfZGlyZWN0b3J5CiB3ZWJraXRfd2Vic2l0ZV9kYXRh
X21hbmFnZXJfZ2V0X2RvbV9jYWNoZV9kaXJlY3RvcnkKIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFu
YWdlcl9nZXRfY29va2llX21hbmFnZXIKK3dlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRf
dGltZV96b25lX292ZXJyaWRlCiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfc2V0X2l0cF9l
bmFibGVkCiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2l0cF9lbmFibGVkCiB3ZWJr
aXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfc2V0X3BlcnNpc3RlbnRfY3JlZGVudGlhbF9zdG9yYWdl
X2VuYWJsZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRl
eCAyMGNmOTI2YWM4MDNkOWIzZmIwMzRlMDAwYjk2ZGVjNWFiMTJiZDA0Li4yOWNhODZiNmNjYTg5
MDUyNjBlZDk0ZWVjZTc1ZGI1ZWUyMTUzZjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC05ODMsNiArOTgzLDggQEAgV2ViUHJvY2Vzc0RhdGFTdG9y
ZVBhcmFtZXRlcnMgV2ViUHJvY2Vzc1Bvb2w6OndlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJz
KFdlYlAKICAgICAgICAgCiAgICAgYXV0byBwbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMgPSBt
X3BsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmF1dG9TdGFydE9yaWdpbkhhc2hlc0NvcHkod2Vic2l0
ZURhdGFTdG9yZS5zZXNzaW9uSUQoKSk7CiAKKyAgICBTdHJpbmcgdGltZVpvbmVPdmVycmlkZSA9
IHdlYnNpdGVEYXRhU3RvcmUudGltZVpvbmVPdmVycmlkZSgpOworCiAgICAgcmV0dXJuIFdlYlBy
b2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzIHsKICAgICAgICAgd2Vic2l0ZURhdGFTdG9yZS5zZXNz
aW9uSUQoKSwKICAgICAgICAgV1RGTW92ZShhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KSwKQEAg
LTEwMDEsNyArMTAwMyw4IEBAIFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYlByb2Nl
c3NQb29sOjp3ZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycyhXZWJQCiAgICAgICAgIHdlYnNp
dGVEYXRhU3RvcmUudGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSgpLAogICAgICAgICBtX2Rv
bWFpbnNXaXRoVXNlckludGVyYWN0aW9uLAogI2VuZGlmCi0gICAgICAgIHdlYnNpdGVEYXRhU3Rv
cmUucmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKQorICAgICAgICB3ZWJzaXRlRGF0YVN0
b3JlLnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCksCisgICAgICAgIFdURk1vdmUodGlt
ZVpvbmVPdmVycmlkZSkKICAgICB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IGNlOWJkN2Y4
Yjg0MTE5ZDkwYTgzOGI1YWZlZTA0YjhiZjc5ZTJkZDIuLjQ0NTEyOWVmYmU1NWM2NGZiMmI5ODcw
ODIwMGNkMWM5Yzk1YjU4MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0yMzQ3LDYgKzIzNDcsOCBA
QCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJz
KCkKICNlbmRpZgogICAgIHBsYXRmb3JtU2V0TmV0d29ya1BhcmFtZXRlcnMocGFyYW1ldGVycyk7
CiAKKyAgICBwYXJhbWV0ZXJzLnRpbWVab25lT3ZlcnJpZGUgPSB0aGlzLT50aW1lWm9uZU92ZXJy
aWRlKCk7CisKICAgICByZXR1cm4gcGFyYW1ldGVyczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IGU0
MjJhZGNmZjA5OTJlMmI1MjhhZmE0OWQ2ZWYzMWFiYjdjNDc5MWIuLmEwMzY3ZDUzNTg4M2YxYTZk
MjE0OTVjMWE4OTRkZDljZGJkM2U2MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKQEAgLTIyNSw2ICsyMjUsOCBA
QCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiByZXNvbHZlZFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+
c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpOyB9CiAgICAgY29uc3QgU3RyaW5n
JiByZXNvbHZlZFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVy
biBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9y
eSgpOyB9CiAKKyAgICBjb25zdCBTdHJpbmcmIHRpbWVab25lT3ZlcnJpZGUoKSBjb25zdCB7IHJl
dHVybiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+dGltZVpvbmVPdmVycmlkZSgpOyB9CisKICAg
ICBEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZSYgZGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UoKSB7IHJl
dHVybiBtX2RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmdldCgpOyB9CiAKICAgICBXZWJQcm9jZXNz
UG9vbCogcHJvY2Vzc1Bvb2xGb3JDb29raWVTdG9yYWdlT3BlcmF0aW9ucygpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgKaW5kZXggNWRjNzIyMWNkOGQzYTU5ZDY0NDZmNGUw
MDg5YTAyYjA2MmUyMjk4YS4uMTY3ODcxNGY2OTMzZDgxMjA5ODEyN2Q3OTZjNmI4MzVjZjRlZjI4
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCkBAIC0xNjIsNiArMTYy
LDkgQEAgcHVibGljOgogICAgIGNvbnN0IFVSTCYgc3RhbmRhbG9uZUFwcGxpY2F0aW9uVVJMKCkg
Y29uc3QgeyByZXR1cm4gbV9zdGFuZGFsb25lQXBwbGljYXRpb25VUkw7IH0KICAgICB2b2lkIHNl
dFN0YW5kYWxvbmVBcHBsaWNhdGlvblVSTChVUkwmJiB1cmwpIHsgbV9zdGFuZGFsb25lQXBwbGlj
YXRpb25VUkwgPSBXVEZNb3ZlKHVybCk7IH0KIAorICAgIGNvbnN0IFN0cmluZyYgdGltZVpvbmVP
dmVycmlkZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZVpvbmVPdmVycmlkZTsgfQorICAgIHZvaWQg
c2V0VGltZVpvbmVPdmVycmlkZShTdHJpbmcmJiB0aW1lWm9uZSkgeyBtX3RpbWVab25lT3ZlcnJp
ZGUgPSBXVEZNb3ZlKHRpbWVab25lKTsgfQorCiBwcml2YXRlOgogICAgIElzUGVyc2lzdGVudCBt
X2lzUGVyc2lzdGVudCB7IElzUGVyc2lzdGVudDo6Tm8gfTsKIApAQCAtMjEwLDYgKzIxMyw3IEBA
IHByaXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFy
eVJlZj4gbV9wcm94eUNvbmZpZ3VyYXRpb247CiAjZW5kaWYKKyAgICBTdHJpbmcgbV90aW1lWm9u
ZU92ZXJyaWRlOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
CmluZGV4IDM1Mjc1YTc0ZDJmM2E0YzljMjNlYmRkZDc3MDZiMjBjODIzZmVhZTQuLmEwZmIzZjE4
ZTk5ZmMzMjllYTdiODc4NzBkNWM0YzQwYTY5NjljNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTEyNyw2ICsxMjcsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
VXNlckdlc3R1cmVJbmRpY2F0b3IuaD4KICNpbmNsdWRlIDx3dGYvQWxnb3JpdGhtcy5oPgogI2lu
Y2x1ZGUgPHd0Zi9DYWxsYmFja0FnZ3JlZ2F0b3IuaD4KKyNpbmNsdWRlIDx3dGYvRGF0ZU1hdGgu
aD4KICNpbmNsdWRlIDx3dGYvTGFuZ3VhZ2UuaD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vzc1ByaXZp
bGVnZS5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CkBAIC01MTgsNiArNTE5LDkgQEAgdm9p
ZCBXZWJQcm9jZXNzOjpzZXRXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyhXZWJQcm9jZXNzRGF0
YVN0b3JlUGFyYW1ldGVycyYmIHAKIAogICAgIHJlc2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFz
aGVzKFdURk1vdmUocGFyYW1ldGVycy5wbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMpKTsKIAor
ICAgIGlmICghcGFyYW1ldGVycy50aW1lWm9uZU92ZXJyaWRlLmlzRW1wdHkoKSkKKyAgICAgICAg
c2V0VGltZVpvbmVPdmVycmlkZShwYXJhbWV0ZXJzLnRpbWVab25lT3ZlcnJpZGUpOworCiAgICAg
Zm9yIChhdXRvJiBzdXBwbGVtZW50IDogbV9zdXBwbGVtZW50cy52YWx1ZXMoKSkKICAgICAgICAg
c3VwcGxlbWVudC0+c2V0V2Vic2l0ZURhdGFTdG9yZShwYXJhbWV0ZXJzKTsKIApkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDIxNzRjMThiNTYxMzcx
MzA0YWIzMDlhNmRlNWEyMDJkM2M4OTg2MzcuLmM0ZDQ4NTA3YzlkODIwYTdjOGFiM2Y0NWNiNjE4
YzNlZDY2NGFhNGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAyMC0wNy0wMiAgUGhpbGlwcGUgTm9ybWFuZCAgPHBo
aWxuQGlnYWxpYS5jb20+CisKKyAgICAgICAgW1dLMl0gQWRkIEFQSSB0byBhbGxvdyBlbWJlZGRl
ciB0byBzZXQgYSB0aW1lem9uZSBvdmVycmlkZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzODg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIHRlc3RzIGZvciB0aGUgbmV3IEFQSVMuCisKKyAgICAg
ICAgKiBNaW5pQnJvd3Nlci9ndGsvbWFpbi5jOgorICAgICAgICAoYWN0aXZhdGUpOiBBZGQgYSBu
ZXcgLXQgcnVudGltZSBvcHRpb24gdG8gYWxsb3cgdHdlYWtpbmcgdGhlIHRpbWV6b25lIHVzZWQg
YnkgdGhlIGJyb3dzZXIuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9XS1dlYnNpdGVEYXRhc3RvcmUubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKTog
QWRkIHRlc3QgZm9yIHRoZSBuZXcgQ29jb2EgQVBJLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9UZXN0V2Vic2l0ZURhdGEuY3BwOiBBZGQgdGVzdCBmb3IgdGhlIG5l
dyBnbGliIEFQSS4KKyAgICAgICAgKHNlcnZlckNhbGxiYWNrKToKKyAgICAgICAgKHRpdGxlQ2hh
bmdlZCk6CisgICAgICAgICh0ZXN0V2Vic2l0ZURhdGFUaW1lem9uZU92ZXJyaWRlKToKKyAgICAg
ICAgKGJlZm9yZUFsbCk6CisgICAgICAgICogZmxhdHBhay9mbGF0cGFrdXRpbHMucHk6IFNldCB0
aW1lem9uZSB0byBBbWVyaWNhL0xvc19BbmdlbGVzLCBpdCdzIGVxdWl2YWxlbnQgdG8gUERUIGJ1
dAorICAgICAgICBlYXNpZXIgdG8gdW5kZXJzdGFuZC4KKyAgICAgICAgKFdlYmtpdEZsYXRwYWsu
cnVuX2luX3NhbmRib3gpOgorCiAyMDIwLTA3LTAyICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNn
YXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBGaXggR1RLNCBidWlsZApk
aWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYyBiL1Rvb2xzL01pbmlCcm93
c2VyL2d0ay9tYWluLmMKaW5kZXggNjFjYjcyOWU5ZThlMjRkODVjMGQ2NzhjNjRhM2RiYWUxYzA4
NWY2My4uYzkwM2Q2ZmI3ZWE3MjRmZWUzNjVjZjQ0YjMwMGNhMmI1YWRhY2ZmOCAxMDA2NDQKLS0t
IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYworKysgYi9Ub29scy9NaW5pQnJvd3Nlci9n
dGsvbWFpbi5jCkBAIC01Niw2ICs1Niw3IEBAIHN0YXRpYyBjb25zdCBjaGFyICpwcm94eTsKIHN0
YXRpYyBnYm9vbGVhbiBkYXJrTW9kZTsKIHN0YXRpYyBnYm9vbGVhbiBlbmFibGVJVFA7CiBzdGF0
aWMgZ2Jvb2xlYW4gcHJpbnRWZXJzaW9uOworc3RhdGljIGNoYXIqIHRpbWVab25lOwogCiB0eXBl
ZGVmIGVudW0gewogICAgIE1JTklfQlJPV1NFUl9FUlJPUl9JTlZBTElEX0FCT1VUX1BBVEgKQEAg
LTE0Niw2ICsxNDcsNyBAQCBzdGF0aWMgY29uc3QgR09wdGlvbkVudHJ5IGNvbW1hbmRMaW5lT3B0
aW9uc1tdID0KICAgICB7ICJpZ25vcmUtdGxzLWVycm9ycyIsIDAsIDAsIEdfT1BUSU9OX0FSR19O
T05FLCAmaWdub3JlVExTRXJyb3JzLCAiSWdub3JlIFRMUyBlcnJvcnMiLCBOVUxMIH0sCiAgICAg
eyAiY29udGVudC1maWx0ZXIiLCAwLCAwLCBHX09QVElPTl9BUkdfRklMRU5BTUUsICZjb250ZW50
RmlsdGVyLCAiSlNPTiB3aXRoIGNvbnRlbnQgZmlsdGVyaW5nIHJ1bGVzIiwgIkZJTEUiIH0sCiAg
ICAgeyAiZW5hYmxlLWl0cCIsIDAsIDAsIEdfT1BUSU9OX0FSR19OT05FLCAmZW5hYmxlSVRQLCAi
RW5hYmxlIEludGVsbGlnZW50IFRyYWNraW5nIFByZXZlbnRpb24gKElUUCkiLCBOVUxMIH0sCisg
ICAgeyAidGltZS16b25lIiwgJ3QnLCAwLCBHX09QVElPTl9BUkdfU1RSSU5HLCAmdGltZVpvbmUs
ICJTZXQgdGltZSB6b25lIiwgIlRJTUVaT05FIn0sCiAgICAgeyAidmVyc2lvbiIsICd2JywgMCwg
R19PUFRJT05fQVJHX05PTkUsICZwcmludFZlcnNpb24sICJQcmludCB0aGUgV2ViS2l0R1RLIHZl
cnNpb24iLCBOVUxMIH0sCiAgICAgeyBHX09QVElPTl9SRU1BSU5JTkcsIDAsIDAsIEdfT1BUSU9O
X0FSR19GSUxFTkFNRV9BUlJBWSwgJnVyaUFyZ3VtZW50cywgMCwgIltVUkzigKZdIiB9LAogICAg
IHsgMCwgMCwgMCwgMCwgMCwgMCwgMCB9CkBAIC01NjYsNyArNTY4LDggQEAgc3RhdGljIHZvaWQg
YWN0aXZhdGUoR0FwcGxpY2F0aW9uICphcHBsaWNhdGlvbiwgV2ViS2l0U2V0dGluZ3MgKndlYmtp
dFNldHRpbmdzKQogICAgIGVsc2UgewogICAgICAgICBjaGFyICpkYXRhRGlyZWN0b3J5ID0gZ19i
dWlsZF9maWxlbmFtZShnX2dldF91c2VyX2RhdGFfZGlyKCksICJ3ZWJraXRndGstIiBXRUJLSVRH
VEtfQVBJX1ZFUlNJT05fU1RSSU5HLCAiTWluaUJyb3dzZXIiLCBOVUxMKTsKICAgICAgICAgY2hh
ciAqY2FjaGVEaXJlY3RvcnkgPSBnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfY2FjaGVfZGly
KCksICJ3ZWJraXRndGstIiBXRUJLSVRHVEtfQVBJX1ZFUlNJT05fU1RSSU5HLCAiTWluaUJyb3dz
ZXIiLCBOVUxMKTsKLSAgICAgICAgbWFuYWdlciA9IHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdl
cl9uZXcoImJhc2UtZGF0YS1kaXJlY3RvcnkiLCBkYXRhRGlyZWN0b3J5LCAiYmFzZS1jYWNoZS1k
aXJlY3RvcnkiLCBjYWNoZURpcmVjdG9yeSwgTlVMTCk7CisgICAgICAgIG1hbmFnZXIgPSB3ZWJr
aXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfbmV3KCJiYXNlLWRhdGEtZGlyZWN0b3J5IiwgZGF0YURp
cmVjdG9yeSwgImJhc2UtY2FjaGUtZGlyZWN0b3J5IiwgY2FjaGVEaXJlY3RvcnksCisgICAgICAg
ICAgICAidGltZS16b25lLW92ZXJyaWRlIiwgdGltZVpvbmUsIE5VTEwpOwogICAgICAgICBnX2Zy
ZWUoZGF0YURpcmVjdG9yeSk7CiAgICAgICAgIGdfZnJlZShjYWNoZURpcmVjdG9yeSk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dl
YnNpdGVEYXRhc3RvcmUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1dLV2Vic2l0ZURhdGFzdG9yZS5tbQppbmRleCBiOTU4ZjNiMjNkMGJhYzkzOWVlMGU4Y2IwNTM2
OGZkNWU3ZDkzNzU5Li4wZjNkM2M4MjlmNWYzNjgzN2Y3NjUwNzI0ZjRkNTY5NzhlNWEwODA1IDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2Vic2l0
ZURhdGFzdG9yZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1dLV2Vic2l0ZURhdGFzdG9yZS5tbQpAQCAtMzA5LDQgKzMwOSwzMCBAQCBURVNUKFdLV2Vic2l0
ZURhdGFTdG9yZSwgRmV0Y2hOb25QZXJzaXN0ZW50V2ViU3RvcmFnZSkKICAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJnJlYWR5VG9Db250aW51ZSk7CiB9CiAKK1RFU1QoV0tXZWJzaXRlRGF0
YVN0b3JlLCBUaW1lWm9uZU92ZXJyaWRlKQoreworICAgIGF1dG8gY2hlY2tUaW1lWm9uZU9mZnNl
dCA9IFtdKE9wdGlvbmFsPFN0cmluZz4gdGltZVpvbmUsIFN0cmluZyBleHBlY3RlZE9mZnNldCkg
eworICAgICAgICBhdXRvIGRhdGFTdG9yZUNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLV2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXROb25QZXJzaXN0ZW50Q29uZmln
dXJhdGlvbl0pOworICAgICAgICBpZiAodGltZVpvbmUpCisgICAgICAgICAgICBbZGF0YVN0b3Jl
Q29uZmlndXJhdGlvbiBzZXRUaW1lWm9uZU92ZXJyaWRlOip0aW1lWm9uZV07CisgICAgICAgIGF1
dG8gd2Vic2l0ZURhdGFTdG9yZSA9IFtXS1dlYnNpdGVEYXRhU3RvcmUgbm9uUGVyc2lzdGVudERh
dGFTdG9yZV07CisgICAgICAgIFt3ZWJzaXRlRGF0YVN0b3JlIF9pbml0V2l0aENvbmZpZ3VyYXRp
b246ZGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV07CisKKyAgICAgICAgYXV0byBjb25maWd1
cmF0aW9uID0gYWRvcHROUyhbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddKTsKKyAgICAgICAg
W2NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTp3ZWJzaXRlRGF0YVN0b3JlXTsKKyAg
ICAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRp
b24uZ2V0KCldKTsKKworICAgICAgICByZWFkeVRvQ29udGludWUgPSBmYWxzZTsKKyAgICAgICAg
W3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAibGV0IG5vdyA9IG5ldyBEYXRlKCk7IG5vdy5n
ZXRUaW1lem9uZU9mZnNldCgpIiBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIHJlc3VsdCwgTlNFcnJv
ciAqKSB7CisgICAgICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWxUb1N0cmluZzpl
eHBlY3RlZE9mZnNldF0pOworICAgICAgICAgICAgcmVhZHlUb0NvbnRpbnVlID0gdHJ1ZTsKKyAg
ICAgICAgfV07CisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRp
bnVlKTsKKyAgICB9OworCisgICAgLy8gVGhlIHRlc3QgYm90cyB1c2UgdGhlIEFtZXJpY2EvTG9z
X0FuZ2VsZXMgdGltZXpvbmUsIG1lYW5pbmcgYSA3IGhvdXJzIEdNVCBvZmZzZXQsIDQyMCBtaW51
dGVzLgorICAgIGNoZWNrVGltZVpvbmVPZmZzZXQoV1RGOjpudWxsb3B0LCAiNDIwIik7CisgICAg
Y2hlY2tUaW1lWm9uZU9mZnNldChPcHRpb25hbDxTdHJpbmc+IHsgIkV1cm9wZS9CZXJsaW4iIH0s
ICItMTIwIik7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R0xpYi9UZXN0V2Vic2l0ZURhdGEuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHTGliL1Rlc3RXZWJzaXRlRGF0YS5jcHAKaW5kZXggZGM0YjE3Y2Y4NjMxMjE4OWQ1
NjRmNDE1Y2Y4OGIxOTQwYjRiOTVmYi4uOWU2NTJiM2EzODAyMjQyNTA2N2M4ZDc1ZGI4ZjUwNmVh
NDQxM2Y1MyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGli
L1Rlc3RXZWJzaXRlRGF0YS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRHTGliL1Rlc3RXZWJzaXRlRGF0YS5jcHAKQEAgLTg4LDYgKzg4LDExIEBAIHN0YXRpYyB2b2lk
IHNlcnZlckNhbGxiYWNrKFNvdXBTZXJ2ZXIqIHNlcnZlciwgU291cE1lc3NhZ2UqIG1lc3NhZ2Us
IGNvbnN0IGNoYXIqCiAgICAgfSBlbHNlIGlmIChnX3N0cl9lcXVhbChwYXRoLCAiL3NlcnZpY2Uv
ZW1wdHktd29ya2VyLmpzIikpIHsKICAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfY29tcGxldGUo
bWVzc2FnZS0+cmVzcG9uc2VfYm9keSk7CiAgICAgICAgIHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVz
KG1lc3NhZ2UsIFNPVVBfU1RBVFVTX09LKTsKKyAgICB9IGVsc2UgaWYgKGdfc3RyX2VxdWFsKHBh
dGgsICIvdGltZXpvbmUtb2Zmc2V0IikpIHsKKyAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHF1
ZXJ5VGltZXpvbmVPZmZzZXRIVE1MID0gIjxodG1sPjxib2R5IG9ubG9hZD1cImxldCBub3cgPSBu
ZXcgRGF0ZSgpOyBkb2N1bWVudC50aXRsZSA9IG5vdy5nZXRUaW1lem9uZU9mZnNldCgpO1wiLz48
L2h0bWw+IjsKKyAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKG1lc3NhZ2UtPnJlc3Bv
bnNlX2JvZHksIFNPVVBfTUVNT1JZX1NUQVRJQywgcXVlcnlUaW1lem9uZU9mZnNldEhUTUwgLCBz
dHJsZW4ocXVlcnlUaW1lem9uZU9mZnNldEhUTUwpKTsKKyAgICAgICAgc291cF9tZXNzYWdlX2Jv
ZHlfY29tcGxldGUobWVzc2FnZS0+cmVzcG9uc2VfYm9keSk7CisgICAgICAgIHNvdXBfbWVzc2Fn
ZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX09LKTsKICAgICB9IGVsc2UKICAgICAg
ICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfTk9UX0ZPVU5E
KTsKIH0KQEAgLTc4Miw2ICs3ODcsMzQgQEAgZ19hc3NlcnRfbm9ubnVsbChkYXRhKTsKICAgICBn
X2Fzc2VydF9udWxsKGRhdGFMaXN0KTsKIH0KIAorc3RhdGljIHZvaWQgdGl0bGVDaGFuZ2VkKFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcsIEdQYXJhbVNwZWMqLCBXZWJzaXRlRGF0YVRlc3QqIHRlc3Qp
Cit7CisgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF93ZWJfdmlld19nZXRfdGl0bGUod2ViVmll
dyksID09LCAiLTEyMCIpOworICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVu
Yyh3ZWJWaWV3LCByZWludGVycHJldF9jYXN0PHZvaWQqPih0aXRsZUNoYW5nZWQpLCB0ZXN0KTsK
KyAgICBnX21haW5fbG9vcF9xdWl0KHRlc3QtPm1fbWFpbkxvb3ApOworfQorCitzdGF0aWMgdm9p
ZCB0ZXN0V2Vic2l0ZURhdGFUaW1lem9uZU92ZXJyaWRlKFdlYnNpdGVEYXRhVGVzdCogdGVzdCwg
Z2NvbnN0cG9pbnRlcikKK3sKKyAgICAvLyBCeSBkZWZhdWx0IHRoZSB0ZXN0IGhhcm5lc3MgcnVu
cyBpbiB0aGUgQW1lcmljYS9Mb3NfQW5nZWxlcyB0aW1lem9uZSwgd2hpY2ggaGFzIGEgR01UIG9m
ZnNldAorICAgIC8vIG9mIDQyMCBtaW51dGVzICg3IGhvdXJzKS4KKyAgICBnX2Fzc2VydF9udWxs
KHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfdGltZV96b25lX292ZXJyaWRlKHRlc3Qt
Pm1fbWFuYWdlcikpOworICAgIHRlc3QtPmxvYWRVUkkoa1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgi
L3RpbWV6b25lLW9mZnNldCIpLmRhdGEoKSk7CisgICAgdGVzdC0+d2FpdFVudGlsVGl0bGVDaGFu
Z2VkVG8oIjQyMCIpOworCisgICAgLy8gU3dpdGNoIHRvIEJlcmxpbiwgd2hpY2ggaXMgMiBob3Vy
cyAoMTIwIG1pbnV0ZXMpIGJlZm9yZSBHTVQuCisgICAgR1JlZlB0cjxXZWJLaXRXZWJzaXRlRGF0
YU1hbmFnZXI+IG1hbmFnZXIgPSBhZG9wdEdSZWYoV0VCS0lUX1dFQlNJVEVfREFUQV9NQU5BR0VS
KGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJTSVRFX0RBVEFfTUFOQUdFUiwgInRpbWUtem9u
ZS1vdmVycmlkZSIsICJFdXJvcGUvQmVybGluIiwgbnVsbHB0cikpKTsKKworICAgIEdSZWZQdHI8
V2ViS2l0V2ViQ29udGV4dD4gd2ViQ29udGV4dCA9IGFkb3B0R1JlZih3ZWJraXRfd2ViX2NvbnRl
eHRfbmV3X3dpdGhfd2Vic2l0ZV9kYXRhX21hbmFnZXIobWFuYWdlci5nZXQoKSkpOworICAgIGF1
dG8gd2ViVmlldyA9IFRlc3Q6OmFkb3B0VmlldyhUZXN0OjpjcmVhdGVXZWJWaWV3KHdlYkNvbnRl
eHQuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0
ZV9kYXRhX21hbmFnZXIod2ViVmlldy5nZXQoKSkgPT0gbWFuYWdlci5nZXQoKSk7CisgICAgZ19h
c3NlcnRfY21wc3RyKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfdGltZV96b25lX292
ZXJyaWRlKG1hbmFnZXIuZ2V0KCkpLCA9PSwgIkV1cm9wZS9CZXJsaW4iKTsKKworICAgIGdfc2ln
bmFsX2Nvbm5lY3Qod2ViVmlldy5nZXQoKSwgIm5vdGlmeTo6dGl0bGUiLCBHX0NBTExCQUNLKHRp
dGxlQ2hhbmdlZCksIHRlc3QpOworICAgIHdlYmtpdF93ZWJfdmlld19sb2FkX3VyaSh3ZWJWaWV3
LmdldCgpLCBrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvdGltZXpvbmUtb2Zmc2V0IikuZGF0YSgp
KTsKKyAgICBnX21haW5fbG9vcF9ydW4odGVzdC0+bV9tYWluTG9vcCk7Cit9CisKIHZvaWQgYmVm
b3JlQWxsKCkKIHsKICAgICBrU2VydmVyID0gbmV3IFdlYktpdFRlc3RTZXJ2ZXIoKTsKQEAgLTgw
NSw2ICs4MzgsNyBAQCB2b2lkIGJlZm9yZUFsbCgpCiAgICAgV2Vic2l0ZURhdGFUZXN0OjphZGQo
IldlYktpdFdlYnNpdGVEYXRhIiwgIml0cCIsIHRlc3RXZWJzaXRlRGF0YUlUUCk7CiAgICAgV2Vi
c2l0ZURhdGFUZXN0OjphZGQoIldlYktpdFdlYnNpdGVEYXRhIiwgInNlcnZpY2Utd29ya2VyLXJl
Z2lzdHJhdGlvbnMiLCB0ZXN0V2Vic2l0ZURhdGFTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucyk7
CiAgICAgV2Vic2l0ZURhdGFUZXN0OjphZGQoIldlYktpdFdlYnNpdGVEYXRhIiwgImRvbS1jYWNo
ZSIsIHRlc3RXZWJzaXRlRGF0YURPTUNhY2hlKTsKKyAgICBXZWJzaXRlRGF0YVRlc3Q6OmFkZCgi
V2ViS2l0V2Vic2l0ZURhdGEiLCAidGltZXpvbmUtb3ZlcnJpZGUiLCB0ZXN0V2Vic2l0ZURhdGFU
aW1lem9uZU92ZXJyaWRlKTsKIH0KIAogdm9pZCBhZnRlckFsbCgpCmRpZmYgLS1naXQgYS9Ub29s
cy9mbGF0cGFrL2ZsYXRwYWt1dGlscy5weSBiL1Rvb2xzL2ZsYXRwYWsvZmxhdHBha3V0aWxzLnB5
CmluZGV4IGYxZWMxZTQ5MTk4OTlhOGZhNDgwMWUzYjQwODFhYTQ1ZjJjMDljZDYuLmQ1Y2E3Yzg5
ZmQyOGRiNTMwMjllNjMzNDI2Y2Y1NDc4Zjk4ODE0ZjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2ZsYXRw
YWsvZmxhdHBha3V0aWxzLnB5CisrKyBiL1Rvb2xzL2ZsYXRwYWsvZmxhdHBha3V0aWxzLnB5CkBA
IC03MTAsNyArNzEwLDcgQEAgY2xhc3MgV2Via2l0RmxhdHBhazoKICAgICAgICAgICAgIF0pCiAK
ICAgICAgICAgICAgIHNhbmRib3hfZW52aXJvbm1lbnQudXBkYXRlKHsKLSAgICAgICAgICAgICAg
ICAiVFoiOiAiUFNUOFBEVCIsCisgICAgICAgICAgICAgICAgIlRaIjogIkFtZXJpY2EvTG9zX0Fu
Z2VsZXMiLAogICAgICAgICAgICAgfSkKIAogICAgICAgICBlbnZfdmFyX3ByZWZpeGVzX3RvX2tl
ZXAgPSBbCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403451</attachid>
            <date>2020-07-03 04:58:02 -0700</date>
            <delta_ts>2020-07-08 09:12:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213884-20200703045800.patch</filename>
            <type>text/plain</type>
            <size>42890</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzODkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ODI3ZjRiMjc2ZGEyNTA0YTY3MjE1YzRmYzdlNmViZjliYzcwYTI3Li42ZjU4NjY1YTFiYjMzMjM4
MmQ3ZDNmOTRjN2M0MTgxM2E4ODdkM2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAyMC0wNy0wMiAgUGhpbGlwcGUgTm9ybWFuZCAgPHBoaWxuQGlnYWxpYS5j
b20+IGFuZCBQYXZlbCBGZWxkbWFuIDxwYXZlbC5mZWxkbWFuQGdtYWlsLmNvbT4KKworICAgICAg
ICBbV0syXSBBZGQgQVBJIHRvIGFsbG93IGVtYmVkZGVyIHRvIHNldCBhIHRpbWV6b25lIG92ZXJy
aWRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM4
ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGlu
c3BlY3Rvci9wcm90b2NvbC9QYWdlLmpzb246IEFkZCBzZXRUaW1lWm9uZSBBUEkgYWxsb3dpbmcg
dG8gb3ZlcnJpZGUgdGhlIHBhZ2UgdGltZXpvbmUuCisgICAgICAgICogcnVudGltZS9EYXRlQ29u
dmVyc2lvbi5jcHA6CisgICAgICAgIChKU0M6OmZvcm1hdERhdGVUaW1lKTogRm9ybWF0IHRoZSBv
dmVycmlkZGVuIHRpbWV6b25lIGlmIGl0J3MgZW5hYmxlZC4KKyAgICAgICAgKiBydW50aW1lL0lu
dGxEYXRlVGltZUZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6OmRlZmF1bHRUaW1lWm9uZSk6IFJl
dHVybiB0aGUgb3ZlcnJpZGRlbiB0aW1lem9uZSBpZiBpdCdzIGVuYWJsZWQuCisKIDIwMjAtMDct
MDMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBB
ZGQgZXhjZXB0aW9uIGNoZWNrcyBpbiBKU1N0cmluZ0J1aWxkZXIgYW5kIEFycmF5I2pvaW4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5k
ZXggM2Y2MTJmYjQxZTcwMzE3NWM3OTM0YTE5YjNhYmNlYzJhZTI2YzMzMS4uZjhhYjBlZTBlNzY5
MjBhNThhMzcyNzFjYmEwYjFhM2I5YjNjNmQxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMC0w
Ny0wMiAgUGhpbGlwcGUgTm9ybWFuZCAgPHBoaWxuQGlnYWxpYS5jb20+IGFuZCBQYXZlbCBGZWxk
bWFuIDxwYXZlbC5mZWxkbWFuQGdtYWlsLmNvbT4KKworICAgICAgICBbV0syXSBBZGQgQVBJIHRv
IGFsbG93IGVtYmVkZGVyIHRvIHNldCBhIHRpbWV6b25lIG92ZXJyaWRlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM4ODQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9EYXRlTWF0aC5jcHA6IEFk
ZCBuZXcgQVBJcyB0byBjb250cm9sIGFuZCBxdWVyeSB0aGUgdGltZXpvbmUgb3ZlcnJpZGUuCisg
ICAgICAgIChXVEY6OmlubmVyVGltZVpvbmVPdmVycmlkZSk6IFN0YXRpYyBzdG9yYWdlIG9mIHRo
ZSBvdmVycmlkZSBpbmZvcm1hdGlvbnMuCisgICAgICAgIChXVEY6OmNhbGN1bGF0ZUxvY2FsVGlt
ZU9mZnNldCk6IENhbGN1bGF0ZSBvZmZzZXQgZm9yIG92ZXJyaWRkZW4gdGltZXpvbmUsIGlmIGl0
J3MgcHJlc2VudC4KKyAgICAgICAgKFdURjo6c2V0VGltZVpvbmVPdmVycmlkZSk6IE5ldyBBUEkg
dG8gc2V0IHRoZSB0aW1lem9uZSBvdmVycmlkZSwgdGhpcyBpcyBtZWFudCB0byBiZQorICAgICAg
ICB1c2VkIGJ5IHRoZSBXZWJJbnNwZWN0b3IgUGFnZSBhZ2VudC4KKyAgICAgICAgKFdURjo6dGlt
ZVpvbmVPdmVycmlkZSk6IFF1ZXJ5IHRoZSB0aW1lem9uZSBvdmVycmlkZS4KKyAgICAgICAgKFdU
Rjo6dGltZVpvbmVEaXNwbGF5TmFtZU92ZXJyaWRlKTogR2V0IHRoZSB0aW1lem9uZSBuYW1lIG9m
IHRoZSBvdmVycmlkZGVuIHRpbWV6b25lLgorICAgICAgICAqIHd0Zi9EYXRlTWF0aC5oOgorCiAy
MDIwLTA3LTAyICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgTWFrZSBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBTUEkgZm9yIEhT
VFMgc3RvcmFnZSB0byByZXBsYWNlIF9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oc3RzU3Rv
cmFnZURpcmVjdG9yeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiZTY1M2JhMTAzYzI0NzVlNjc4NjIzMjAxMjQ2ZDJl
N2RmYzI3ZDhkLi42YmU2ZjE5ZGJhZmI1MWY1NjY3YjMzNDVhM2QyYjE2ZjgxNzIzYWU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDIwLTA3LTAyICBQaGlsaXBwZSBOb3JtYW5kICA8cGhp
bG5AaWdhbGlhLmNvbT4KKworICAgICAgICBbV0syXSBBZGQgQVBJIHRvIGFsbG93IGVtYmVkZGVy
IHRvIHNldCBhIHRpbWV6b25lIG92ZXJyaWRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM4ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHM6CisKKyAgICAgICAgLSBuZXcgQ29j
b2EgQVBJCisgICAgICAgIC0gbmV3IEdsaWIgQVBJICh0YXJnZXR0aW5nIGJvdGggV1BFIGFuZCBH
VEsgcG9ydHMpCisgICAgICAgIC0gbmV3IEMgQVBJIChmb3IgdGhlIHdpbiBwb3J0KQorCisgICAg
ICAgIHRoYXQgYWxsb3dzIHRoZSBlbWJlZGRlciB0byBzZXQgYSB0aW1lem9uZSBvdmVycmlkZSBm
b3IgdGhlIFdlYnNpdGVEYXRhU3RvcmUgYW5kIGl0cworICAgICAgICB1bmRlcmx5aW5nIFdlYlZp
ZXcuIEl0IHdvdWxkIGFsc28gYWxsb3cgZmluZS1ncmFpbmVkIGNvbnRyb2wgb3ZlciBtdWx0aXBs
ZSBwYWdlcywgZm9yCisgICAgICAgIGluc3RhbmNlIGl0J3Mgbm90IHBvc3NpYmxlIGN1cnJlbnRs
eSB0byBoYXZlIHR3byBwYWdlcyBpbiBkaWZmZXJlbnQgdGltZXpvbmVzLgorCisgICAgICAgICog
U2hhcmVkL1dlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzLmg6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAg
KiBTaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hh
cmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9DL1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25SZWYuY3BwOgorICAgICAgICAoV0tX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbkNvcHlUaW1lWm9uZU92ZXJyaWRlKToKKyAgICAg
ICAgKFdLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25TZXRUaW1lWm9uZU92ZXJyaWRlKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
blJlZi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLm1tOgorICAgICAgICAoLVtfV0tXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbiB0aW1lWm9uZU92ZXJyaWRlXSk6CisgICAgICAgICgtW19XS1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIHNldFRpbWVab25lT3ZlcnJpZGU6XSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5jcHA6CisgICAg
ICAgICh3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJHZXRQcm9wZXJ0eSk6CisgICAgICAgICh3ZWJr
aXRXZWJzaXRlRGF0YU1hbmFnZXJTZXRQcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRfd2Vic2l0
ZV9kYXRhX21hbmFnZXJfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRXZWJzaXRlRGF0YU1h
bmFnZXJHZXREYXRhU3RvcmUpOgorICAgICAgICAod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2Vy
X2dldF90aW1lX3pvbmVfb3ZlcnJpZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYnNpdGVEYXRhTWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2Rv
Y3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
d3BlL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
d3BlL2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OndlYlByb2Nl
c3NEYXRhU3RvcmVQYXJhbWV0ZXJzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6
OnBhcmFtZXRlcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnRpbWVab25lT3Zl
cnJpZGUgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbjo6dGltZVpvbmVPdmVycmlkZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpzZXRUaW1lWm9uZU92ZXJyaWRlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzOjpzZXRXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyk6CisKIDIwMjAtMDctMDMgIFNh
aWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KIAogICAgICAgICBDaGFu
Z2UgdGhlIG5hbWVzIG9mIE1JTUVUeXBlUmVnaXN0cnkgbWV0aG9kcyB0byBjb21wbHkgd2l0aCB3
ZWJraXQgbmFtaW5nIHN0eWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EYXRlQ29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
YXRlQ29udmVyc2lvbi5jcHAKaW5kZXggOTU1NzU2YmE0MDVmNDAwOTcwNjEwZjlhNjhjN2VkNDJh
NjdjYjAxNS4uMzYxZTY5Mzk3OTQ5OTExZTZlZTAzMzFhNTBkNDE3ZTkyYWY3MTcyMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb252ZXJzaW9uLmNwcApAQCAt
MTAwLDE3ICsxMDAsMjMgQEAgU3RyaW5nIGZvcm1hdERhdGVUaW1lKGNvbnN0IEdyZWdvcmlhbkRh
dGVUaW1lJiB0LCBEYXRlVGltZUZvcm1hdCBmb3JtYXQsIGJvb2wgYXMKICAgICAgICAgICAgIGFw
cGVuZE51bWJlcjwyPihidWlsZGVyLCBvZmZzZXQgLyA2MCk7CiAgICAgICAgICAgICBhcHBlbmRO
dW1iZXI8Mj4oYnVpbGRlciwgb2Zmc2V0ICUgNjApOwogCisgICAgICAgICAgICBTdHJpbmcgdGlt
ZVpvbmVOYW1lOworICAgICAgICAgICAgaWYgKCFXVEY6OnRpbWVab25lRGlzcGxheU5hbWVPdmVy
cmlkZSgpLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICB0aW1lWm9uZU5hbWUgPSBXVEY6OnRp
bWVab25lRGlzcGxheU5hbWVPdmVycmlkZSgpOworICAgICAgICAgICAgZWxzZSB7CiAjaWYgT1Mo
V0lORE9XUykKLSAgICAgICAgICAgIFRJTUVfWk9ORV9JTkZPUk1BVElPTiB0aW1lWm9uZUluZm9y
bWF0aW9uOwotICAgICAgICAgICAgR2V0VGltZVpvbmVJbmZvcm1hdGlvbigmdGltZVpvbmVJbmZv
cm1hdGlvbik7Ci0gICAgICAgICAgICBjb25zdCBXQ0hBUiogd2luVGltZVpvbmVOYW1lID0gdC5p
c0RTVCgpID8gdGltZVpvbmVJbmZvcm1hdGlvbi5EYXlsaWdodE5hbWUgOiB0aW1lWm9uZUluZm9y
bWF0aW9uLlN0YW5kYXJkTmFtZTsKLSAgICAgICAgICAgIFN0cmluZyB0aW1lWm9uZU5hbWUod2lu
VGltZVpvbmVOYW1lKTsKKyAgICAgICAgICAgICAgICBUSU1FX1pPTkVfSU5GT1JNQVRJT04gdGlt
ZVpvbmVJbmZvcm1hdGlvbjsKKyAgICAgICAgICAgICAgICBHZXRUaW1lWm9uZUluZm9ybWF0aW9u
KCZ0aW1lWm9uZUluZm9ybWF0aW9uKTsKKyAgICAgICAgICAgICAgICBjb25zdCBXQ0hBUiogd2lu
VGltZVpvbmVOYW1lID0gdC5pc0RTVCgpID8gdGltZVpvbmVJbmZvcm1hdGlvbi5EYXlsaWdodE5h
bWUgOiB0aW1lWm9uZUluZm9ybWF0aW9uLlN0YW5kYXJkTmFtZTsKKyAgICAgICAgICAgICAgICB0
aW1lWm9uZU5hbWUgPSBTdHJpbmcod2luVGltZVpvbmVOYW1lKTsKICNlbHNlCi0gICAgICAgICAg
ICBzdHJ1Y3QgdG0gZ3RtID0gdDsKLSAgICAgICAgICAgIGNoYXIgdGltZVpvbmVOYW1lWzcwXTsK
LSAgICAgICAgICAgIHN0cmZ0aW1lKHRpbWVab25lTmFtZSwgc2l6ZW9mKHRpbWVab25lTmFtZSks
ICIlWiIsICZndG0pOworICAgICAgICAgICAgICAgIHN0cnVjdCB0bSBndG0gPSB0OworICAgICAg
ICAgICAgICAgIGNoYXIgdHpOYW1lWzcwXTsKKyAgICAgICAgICAgICAgICBzdHJmdGltZSh0ek5h
bWUsIHNpemVvZih0ek5hbWUpLCAiJVoiLCAmZ3RtKTsKKyAgICAgICAgICAgICAgICB0aW1lWm9u
ZU5hbWUgPSBTdHJpbmcodHpOYW1lKTsKICNlbmRpZgotICAgICAgICAgICAgaWYgKHRpbWVab25l
TmFtZVswXSkgeworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCF0aW1lWm9uZU5hbWUu
aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgKCIp
OwogICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHRpbWVab25lTmFtZSk7CiAgICAgICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyknKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCmluZGV4IDdkZmJjMzY3Y2Y0ZmI0
Mjk4YWRmNjExZDEyYzZhZTJmNDY3NjEzODUuLjViYzNlNWFlNWE3OTMyNzQwODAyYmZhMjVmNmQ3
MDE3MjRkOTIzMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxEYXRlVGltZUZvcm1hdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bERhdGVUaW1lRm9ybWF0LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgPHVuaWNv
ZGUvdWNhbC5oPgogI2luY2x1ZGUgPHVuaWNvZGUvdWRhdHBnLmg+CiAjaW5jbHVkZSA8dW5pY29k
ZS91ZW51bS5oPgorI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5o
PgogCkBAIC0xMDIsNiArMTAzLDEwIEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgaXNVVENF
cXVpdmFsZW50KFN0cmluZ1ZpZXcgdGltZVpvbmUpCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQw
Mi8jc2VjLWRlZmF1bHR0aW1lem9uZQogc3RhdGljIFN0cmluZyBkZWZhdWx0VGltZVpvbmUoKQog
eworICAgIFN0cmluZyB0eiA9IFdURjo6dGltZVpvbmVPdmVycmlkZSgpOworICAgIGlmICghdHou
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdHo7CisKICAgICBTdHJpbmcgY2Fub25pY2FsOwog
CiAgICAgVmVjdG9yPFVDaGFyLCAzMj4gYnVmZmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvRGF0ZU1hdGguY3BwIGIvU291cmNlL1dURi93dGYvRGF0ZU1hdGguY3BwCmluZGV4IGFmOTJm
Njc0NzcwMzQ5Y2M4ZTdiZTlhNTNiMWNlZTZlNzg0MGU3ODEuLjEyMjJiYjUyNjBiMzUxZjA1ZjVi
ZDgzNmRjZTE0ZTZkYzkxZjc5ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRo
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5jcHAKQEAgLTc2LDkgKzc2LDE0IEBA
CiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHRpbWUu
aD4KKyNpbmNsdWRlIDx1bmljb2RlL3VjYWwuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5o
PgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CisjaW5jbHVkZSA8d3RmL0xhbmd1YWdlLmg+
CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNw
ZWNpZmljLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUg
PHd0Zi91bmljb2RlL1VURjhDb252ZXJzaW9uLmg+CiAKICNpZiBPUyhXSU5ET1dTKQogI2luY2x1
ZGUgPHdpbmRvd3MuaD4KQEAgLTkyLDYgKzk3LDE4IEBAIHRlbXBsYXRlPHVuc2lnbmVkIGxlbmd0
aD4gaW5saW5lIGJvb2wgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBj
CiAgICAgcmV0dXJuIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZywgbG93ZXJj
YXNlTGV0dGVycywgbGVuZ3RoIC0gMSk7CiB9CiAKK3N0cnVjdCBUaW1lWm9uZU92ZXJyaWRlIHsK
KyAgICBVQ2FsZW5kYXIqIGNhbDsKKyAgICBTdHJpbmcgaWQ7CisgICAgU3RyaW5nIGRpc3BsYXlO
YW1lOworfTsKKworc3RhdGljIFRpbWVab25lT3ZlcnJpZGUmIGlubmVyVGltZVpvbmVPdmVycmlk
ZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRpbWVab25lT3ZlcnJpZGU+IHRpbWVa
b25lT3ZlcnJpZGU7CisgICAgcmV0dXJuIHRpbWVab25lT3ZlcnJpZGU7Cit9CisKIC8qIENvbnN0
YW50cyAqLwogCiBjb25zdCBjaGFyKiBjb25zdCB3ZWVrZGF5TmFtZVs3XSA9IHsgIk1vbiIsICJU
dWUiLCAiV2VkIiwgIlRodSIsICJGcmkiLCAiU2F0IiwgIlN1biIgfTsKQEAgLTMxOCw2ICszMzUs
MTQgQEAgc3RhdGljIGRvdWJsZSBjYWxjdWxhdGVEU1RPZmZzZXQodGltZV90IGxvY2FsVGltZSwg
ZG91YmxlIHV0Y09mZnNldCkKIC8vIFJldHVybnMgY29tYmluZWQgb2Zmc2V0IGluIG1pbGxpc2Vj
b25kIChVVEMgKyBEU1QpLgogTG9jYWxUaW1lT2Zmc2V0IGNhbGN1bGF0ZUxvY2FsVGltZU9mZnNl
dChkb3VibGUgbXMsIFRpbWVUeXBlIGlucHV0VGltZVR5cGUpCiB7CisgICAgYXV0byYgdHogPSBp
bm5lclRpbWVab25lT3ZlcnJpZGUoKTsKKyAgICBpZiAodHouY2FsKSB7CisgICAgICAgIFVFcnJv
ckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgICAgICB1Y2FsX3NldE1pbGxpcyh0ei5j
YWwsIG1zLCAmc3RhdHVzKTsKKyAgICAgICAgaW50MzJfdCBvZmZzZXQgPSB1Y2FsX2dldCh0ei5j
YWwsIFVDQUxfWk9ORV9PRkZTRVQsICZzdGF0dXMpOworICAgICAgICBpbnQzMl90IGRzdE9mZnNl
dCA9IHVjYWxfZ2V0KHR6LmNhbCwgVUNBTF9EU1RfT0ZGU0VULCAmc3RhdHVzKTsKKyAgICAgICAg
cmV0dXJuIExvY2FsVGltZU9mZnNldChkc3RPZmZzZXQsIG9mZnNldCArIGRzdE9mZnNldCk7Cisg
ICAgfQogI2lmIEhBVkUoVE1fR01UT0ZGKQogICAgIGRvdWJsZSBsb2NhbFRvVVRDVGltZU9mZnNl
dCA9IGlucHV0VGltZVR5cGUgPT0gTG9jYWxUaW1lID8gY2FsY3VsYXRlVVRDT2Zmc2V0KCkgOiAw
OwogI2Vsc2UKQEAgLTEwMTksNCArMTA0NCw2NiBAQCBTdHJpbmcgbWFrZVJGQzI4MjJEYXRlU3Ry
aW5nKHVuc2lnbmVkIGRheU9mV2VlaywgdW5zaWduZWQgZGF5LCB1bnNpZ25lZCBtb250aCwgdQog
ICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKK2Jvb2wgc2V0VGltZVpv
bmVPdmVycmlkZShjb25zdCBTdHJpbmcmIHRpbWVab25lKQoreworICAgIGlubmVyVGltZVpvbmVP
dmVycmlkZSgpLmRpc3BsYXlOYW1lID0gU3RyaW5nKCk7CisgICAgaWYgKGlubmVyVGltZVpvbmVP
dmVycmlkZSgpLmNhbCkgeworICAgICAgICB1Y2FsX2Nsb3NlKGlubmVyVGltZVpvbmVPdmVycmlk
ZSgpLmNhbCk7CisgICAgICAgIGlubmVyVGltZVpvbmVPdmVycmlkZSgpLmNhbCA9IG51bGxwdHI7
CisgICAgfQorCisgICAgaWYgKHRpbWVab25lLmlzRW1wdHkoKSkgeworICAgICAgICBpbm5lclRp
bWVab25lT3ZlcnJpZGUoKS5pZCA9IFN0cmluZygpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisKKyAgICAvLyBUaW1lem9uZSBpcyBhc2NpaS4KKyAgICBWZWN0b3I8VUNoYXI+IGJ1ZmZl
cih0aW1lWm9uZS5sZW5ndGgoKSk7CisgICAgVUNoYXIqIGJ1ZmZlclN0YXJ0ID0gYnVmZmVyLmRh
dGEoKTsKKyAgICBDU3RyaW5nIGN0eiA9IHRpbWVab25lLnV0ZjgoKTsKKyAgICBpZiAoIVVuaWNv
ZGU6OmNvbnZlcnRVVEY4VG9VVEYxNihjdHouZGF0YSgpLCBjdHouZGF0YSgpICsgY3R6Lmxlbmd0
aCgpLCAmYnVmZmVyU3RhcnQsIGJ1ZmZlclN0YXJ0ICsgdGltZVpvbmUubGVuZ3RoKCkpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBWZWN0b3I8VUNoYXIsIDMyPiBjYW5vbmljYWxCdWZm
ZXIoMzIpOworICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIGF1dG8g
Y2Fub25pY2FsTGVuZ3RoID0gdWNhbF9nZXRDYW5vbmljYWxUaW1lWm9uZUlEKGJ1ZmZlci5kYXRh
KCksIGJ1ZmZlci5zaXplKCksIGNhbm9uaWNhbEJ1ZmZlci5kYXRhKCksIGNhbm9uaWNhbEJ1ZmZl
ci5zaXplKCksIG51bGxwdHIsICZzdGF0dXMpOworICAgIGlmIChzdGF0dXMgPT0gVV9CVUZGRVJf
T1ZFUkZMT1dfRVJST1IpIHsKKyAgICAgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgICAg
ICBjYW5vbmljYWxCdWZmZXIuZ3JvdyhjYW5vbmljYWxMZW5ndGgpOworICAgICAgICB1Y2FsX2dl
dENhbm9uaWNhbFRpbWVab25lSUQoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSwgY2Fub25p
Y2FsQnVmZmVyLmRhdGEoKSwgY2Fub25pY2FsTGVuZ3RoLCBudWxscHRyLCAmc3RhdHVzKTsKKyAg
ICB9CisgICAgaWYgKCFVX1NVQ0NFU1Moc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgVUNhbGVuZGFyKiBjYWwgPSB1Y2FsX29wZW4oY2Fub25pY2FsQnVmZmVyLmRhdGEoKSwg
Y2Fub25pY2FsTGVuZ3RoLCBudWxscHRyLCBVQ0FMX1RSQURJVElPTkFMLCAmc3RhdHVzKTsKKyAg
ICBpZiAoIVVfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBW
ZWN0b3I8VUNoYXIsIDMyPiBkaXNwbGF5TmFtZUJ1ZmZlcigzMik7CisgICAgYXV0byBkaXNwbGF5
TmFtZUxlbmd0aCA9IHVjYWxfZ2V0VGltZVpvbmVEaXNwbGF5TmFtZShjYWwsIFVDQUxfU1RBTkRB
UkQsIGRlZmF1bHRMYW5ndWFnZSgpLnV0ZjgoKS5kYXRhKCksIGRpc3BsYXlOYW1lQnVmZmVyLmRh
dGEoKSwgZGlzcGxheU5hbWVCdWZmZXIuc2l6ZSgpLCAmc3RhdHVzKTsKKyAgICBpZiAoc3RhdHVz
ID09IFVfQlVGRkVSX09WRVJGTE9XX0VSUk9SKSB7CisgICAgICAgIHN0YXR1cyA9IFVfWkVST19F
UlJPUjsKKyAgICAgICAgZGlzcGxheU5hbWVCdWZmZXIuZ3JvdyhkaXNwbGF5TmFtZUxlbmd0aCk7
CisgICAgICAgIHVjYWxfZ2V0VGltZVpvbmVEaXNwbGF5TmFtZShjYWwsIFVDQUxfU1RBTkRBUkQs
IGRlZmF1bHRMYW5ndWFnZSgpLnV0ZjgoKS5kYXRhKCksIGRpc3BsYXlOYW1lQnVmZmVyLmRhdGEo
KSwgZGlzcGxheU5hbWVMZW5ndGgsICZzdGF0dXMpOworICAgIH0KKyAgICBpZiAoIVVfU1VDQ0VT
UyhzdGF0dXMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvJiB0aW1lWm9uZU92
ZXJyaWRlID0gaW5uZXJUaW1lWm9uZU92ZXJyaWRlKCk7CisgICAgdGltZVpvbmVPdmVycmlkZS5j
YWwgPSBjYWw7CisgICAgdGltZVpvbmVPdmVycmlkZS5pZCA9IFN0cmluZyhjYW5vbmljYWxCdWZm
ZXIuZGF0YSgpLCBjYW5vbmljYWxMZW5ndGgpOworICAgIHRpbWVab25lT3ZlcnJpZGUuZGlzcGxh
eU5hbWUgPSBTdHJpbmcoZGlzcGxheU5hbWVCdWZmZXIuZGF0YSgpLCBkaXNwbGF5TmFtZUxlbmd0
aCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1N0cmluZyB0aW1lWm9uZU92ZXJyaWRlKCkKK3sK
KyAgICByZXR1cm4gaW5uZXJUaW1lWm9uZU92ZXJyaWRlKCkuaWQ7Cit9CisKK1N0cmluZyB0aW1l
Wm9uZURpc3BsYXlOYW1lT3ZlcnJpZGUoKQoreworICAgIHJldHVybiBpbm5lclRpbWVab25lT3Zl
cnJpZGUoKS5kaXNwbGF5TmFtZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5oIGIvU291cmNlL1dURi93dGYvRGF0ZU1hdGguaApp
bmRleCAyNDZiYTY3Yzc2NGI2MjkwNDJhNzkyN2QyNGZlODliMDQ5ZDgyYTBiLi5iMTNmYzFkODYw
ZGE1NjBlYjU3NzViYmRiMGZlYzRhNzI1MjJjNmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9EYXRlTWF0aC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmgKQEAgLTM4OSw2ICsz
ODksMTAgQEAgaW5saW5lIGludCBkYXlJbk1vbnRoRnJvbURheUluWWVhcihpbnQgZGF5SW5ZZWFy
LCBib29sIGxlYXBZZWFyKQogICAgIHJldHVybiBkIC0gc3RlcDsKIH0KIAorV1RGX0VYUE9SVF9Q
UklWQVRFIGJvb2wgc2V0VGltZVpvbmVPdmVycmlkZShjb25zdCBTdHJpbmcmKTsKK1dURl9FWFBP
UlRfUFJJVkFURSBTdHJpbmcgdGltZVpvbmVPdmVycmlkZSgpOworV1RGX0VYUE9SVF9QUklWQVRF
IFN0cmluZyB0aW1lWm9uZURpc3BsYXlOYW1lT3ZlcnJpZGUoKTsKKwogLy8gUmV0dXJucyBjb21i
aW5lZCBvZmZzZXQgaW4gbWlsbGlzZWNvbmQgKFVUQyArIERTVCkuCiBXVEZfRVhQT1JUX1BSSVZB
VEUgTG9jYWxUaW1lT2Zmc2V0IGNhbGN1bGF0ZUxvY2FsVGltZU9mZnNldChkb3VibGUgdXRjSW5N
aWxsaXNlY29uZHMsIFRpbWVUeXBlID0gVVRDVGltZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oCmluZGV4IGU2MjYzNDI0
NGU4MWE5ZWM1ZTc2N2NiNzJhZjA3MWVkZTM1ZGY5NTMuLmM3ZTdlYzZjODI2MmRjZTYyYmFiNDE2
ZGQzYjg0NDIzNTE1YTRiODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBy
b2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
UHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMuaApAQCAtNTEsNiArNTEsNyBAQCBzdHJ1Y3QgV2Vi
UHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMgewogICAgIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4+IGRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uOwogI2VuZGlmCiAgICAgYm9v
bCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCB7IGZhbHNlIH07CisgICAgU3RyaW5nIHRp
bWVab25lT3ZlcnJpZGU7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29k
ZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9w
dGlvbmFsPFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzPiBkZWNvZGUoRGVjb2RlciYpOwpA
QCAtNzcsNiArNzgsNyBAQCB2b2lkIFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzOjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IGRvbWFpbnNXaXRoVXNl
ckludGVyYWN0aW9uOwogI2VuZGlmCiAgICAgZW5jb2RlciA8PCByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRW5hYmxlZDsKKyAgICBlbmNvZGVyIDw8IHRpbWVab25lT3ZlcnJpZGU7CiB9CiAKIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+CkBAIC0xNTcsNiArMTU5LDEwIEBAIE9wdGlvbmFsPFdlYlByb2Nl
c3NEYXRhU3RvcmVQYXJhbWV0ZXJzPiBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVyczo6ZGVj
b2RlKERlCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5h
YmxlZCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKKyAgICBTdHJpbmcgdGltZVpv
bmVPdmVycmlkZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHRpbWVab25lT3ZlcnJpZGUpKQor
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCiAgICAgcmV0dXJuIFdlYlByb2Nlc3NEYXRh
U3RvcmVQYXJhbWV0ZXJzIHsKICAgICAgICAgV1RGTW92ZSgqc2Vzc2lvbklEKSwKICAgICAgICAg
V1RGTW92ZShhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KSwKQEAgLTE3NSw3ICsxODEsOCBAQCBP
cHRpb25hbDxXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycz4gV2ViUHJvY2Vzc0RhdGFTdG9y
ZVBhcmFtZXRlcnM6OmRlY29kZShEZQogICAgICAgICAqdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
TW9kZSwKICAgICAgICAgV1RGTW92ZSgqZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb24pLAogI2Vu
ZGlmCi0gICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkCisgICAgICAgIHJlc291
cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkLAorICAgICAgICBXVEZNb3ZlKHRpbWVab25lT3ZlcnJp
ZGUpCiAgICAgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0
ZURhdGFTdG9yZVBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURh
dGFTdG9yZVBhcmFtZXRlcnMuY3BwCmluZGV4IDZkMGMxMjlhNzQwNTEwZDM4Njk3MzcwNWFkMDky
ZWYxMzJjYzA3NWEuLmY0ZDk5NGQ5YmJmNWRiYzg4NDM4YzgwOTAyZjBhZWVlZTJjNjE5NWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVy
cy5jcHAKQEAgLTU5LDYgKzU5LDggQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczo6
ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIAogICAgIGVuY29kZXIgPDwgcGVy
T3JpZ2luU3RvcmFnZVF1b3RhOwogICAgIGVuY29kZXIgPDwgcGVyVGhpcmRQYXJ0eU9yaWdpblN0
b3JhZ2VRdW90YTsKKworICAgIGVuY29kZXIgPDwgdGltZVpvbmVPdmVycmlkZTsKIH0KIAogT3B0
aW9uYWw8V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM+IFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0
ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQpAQCAtMTY2LDcgKzE2OCwxMyBAQCBP
cHRpb25hbDxXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycz4gV2Vic2l0ZURhdGFTdG9yZVBhcmFt
ZXRlcnM6OmRlY29kZShJUEM6OkRlYwogICAgIGlmICghcGVyVGhpcmRQYXJ0eU9yaWdpblN0b3Jh
Z2VRdW90YSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJzLnBl
clRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGEgPSAqcGVyVGhpcmRQYXJ0eU9yaWdpblN0b3Jh
Z2VRdW90YTsKLSAgICAKKworICAgIE9wdGlvbmFsPFN0cmluZz4gdGltZVpvbmVPdmVycmlkZTsK
KyAgICBkZWNvZGVyID4+IHRpbWVab25lT3ZlcnJpZGU7CisgICAgaWYgKCF0aW1lWm9uZU92ZXJy
aWRlKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHBhcmFtZXRlcnMudGltZVpv
bmVPdmVycmlkZSA9IFdURk1vdmUoKnRpbWVab25lT3ZlcnJpZGUpOworCiAgICAgcmV0dXJuIHBh
cmFtZXRlcnM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVE
YXRhU3RvcmVQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0
b3JlUGFyYW1ldGVycy5oCmluZGV4IGYyN2RmNDg5ODA5ZjMxOTYwOGI2ODBjYjJhOGExYzE0Yjcw
MTg0MzkuLjMyODE2MjgwNTRiZGFiNDViMWNjYzRiNGJkODIxNDJmY2U5ODE0ZjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaApAQCAt
NzYsNiArNzYsOCBAQCBzdHJ1Y3QgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgewogCiAgICAg
dWludDY0X3QgcGVyT3JpZ2luU3RvcmFnZVF1b3RhIHsgV2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFu
YWdlcjo6ZGVmYXVsdFF1b3RhKCkgfTsKICAgICB1aW50NjRfdCBwZXJUaGlyZFBhcnR5T3JpZ2lu
U3RvcmFnZVF1b3RhIHsgV2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFuYWdlcjo6ZGVmYXVsdFRoaXJk
UGFydHlRdW90YSgpIH07CisKKyAgICBTdHJpbmcgdGltZVpvbmVPdmVycmlkZTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvblJlZi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uUmVmLmNw
cAppbmRleCBjYTEzMzUyNzQ1OTJjNmQ4ZGRhZDI0Njk1NWQyNTAwOGM1N2QxZTZlLi5iYzA2YjQz
YWQ4NTVlNzVhZWVjMWZkZjJlZTU2ZDM0NDllNGFkMWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uUmVmLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uUmVmLmNwcApAQCAtMTY5LDMgKzE2OSwxMyBAQCB2b2lkIFdLV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb25TZXRTdGFsZVdoaWxlUmV2YWxpZGF0ZUVuYWJsZWQoV0tXZWJz
aXRlRGF0YQogewogICAgIFdlYktpdDo6dG9JbXBsKGNvbmZpZ3VyYXRpb24pLT5zZXRTdGFsZVdo
aWxlUmV2YWxpZGF0ZUVuYWJsZWQoZW5hYmxlZCk7CiB9CisKK1dLU3RyaW5nUmVmIFdLV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25Db3B5VGltZVpvbmVPdmVycmlkZShXS1dlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24pCit7CisgICAgcmV0dXJuIFdlYktp
dDo6dG9Db3BpZWRBUEkoV2ViS2l0Ojp0b0ltcGwoY29uZmlndXJhdGlvbiktPnRpbWVab25lT3Zl
cnJpZGUoKSk7Cit9CisKK3ZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvblNldFRp
bWVab25lT3ZlcnJpZGUoV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvblJlZiBjb25maWd1
cmF0aW9uLCBXS1N0cmluZ1JlZiB0aW1lWm9uZSkKK3sKKyAgICBXZWJLaXQ6OnRvSW1wbChjb25m
aWd1cmF0aW9uKS0+c2V0VGltZVpvbmVPdmVycmlkZShXZWJLaXQ6OnRvSW1wbCh0aW1lWm9uZSkt
PnN0cmluZygpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25SZWYuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25SZWYuaAppbmRleCA3
MjllZTBhNGIxMzhhOWJjOGVmMTg1Y2ZiNjBkZDRiY2FkZjMzZmI1Li41MTdjNzhmZGQxYzQ4YzVk
NDRjMjRlNTNjMjJkNDFiNzAxM2RkMTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uUmVmLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
blJlZi5oCkBAIC03NSw2ICs3NSw5IEBAIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb25TZXRUZXN0aW5nU2Vzc2lvbkVuYWJsZWQoV0tXZWJzaXRlCiBXS19FWFBP
UlQgYm9vbCBXS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uR2V0U3RhbGVXaGlsZVJldmFs
aWRhdGVFbmFibGVkKFdLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJh
dGlvbik7CiBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uU2V0
U3RhbGVXaGlsZVJldmFsaWRhdGVFbmFibGVkKFdLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b25SZWYgY29uZmlndXJhdGlvbiwgYm9vbCBlbmFibGVkKTsKIAorV0tfRVhQT1JUIFdLU3RyaW5n
UmVmIFdLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25Db3B5VGltZVpvbmVPdmVycmlkZShX
S1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24pOworV0tfRVhQ
T1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvblNldFRpbWVab25lT3ZlcnJp
ZGUoV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uLCBXS1N0
cmluZ1JlZiB0aW1lWm9uZSk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCmluZGV4IDcxYzEzZDgwYWNhODZiMTk3
NGI4YTgzMjIzYTdkYTdmNWY2NjY3ODYuLjViMDFjMWZmNDllNWNkNDg3NWMzYTAyNzllZmZkZDA3
YmVlNTJiOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCkBAIC01
Miw2ICs1Miw3IEBAIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvcygxMC4xMyksIGlvcygxMS4wKSkK
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCBudWxsYWJsZSwgY29weSkgTlNTdHJpbmcgKmRhdGFDb25u
ZWN0aW9uU2VydmljZVR5cGUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9z
KFdLX0lPU19UQkEpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHByZXZlbnRzU3lzdGVt
SFRUUFByb3h5QXV0aGVudGljYXRpb24gV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJB
KSwgaW9zKFdLX0lPU19UQkEpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHJlcXVpcmVz
U2VjdXJlSFRUUFNQcm94eUNvbm5lY3Rpb24gV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNf
VEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBudWxsYWJsZSwg
Y29weSkgTlNTdHJpbmcgKnRpbWVab25lT3ZlcnJpZGUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhX
S19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAogLy8gVGhlc2UgcHJvcGVydGllcyBvbmx5
IG1ha2Ugc2Vuc2UgZm9yIHBlcnNpc3RlbnQgZGF0YSBzdG9yZXMsIGFuZCB3aWxsIHRocm93CiAv
LyBhbiBleGNlcHRpb24gaWYgc2V0IGZvciBub24tcGVyc2lzdGVudCBzdG9yZXMuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24ubW0KaW5kZXggMGZhZjc5ZjU3N2I1Y2M2ZDM4
ZmJhNWI5NzY5YjQzYjJhZTZmNjQzMC4uYmE0Y2QzYTA1YjYwZjYzZjk5NjdhMjczYmI1YTIxNGZl
ODBhZGUxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5tbQpAQCAt
NDUxLDYgKzQ1MSwxNiBAQCBzdGF0aWMgdm9pZCBjaGVja1VSTEFyZ3VtZW50KE5TVVJMICp1cmwp
CiAgICAgX2NvbmZpZ3VyYXRpb24tPnNldFJlcXVpcmVzU2VjdXJlSFRUUFNQcm94eUNvbm5lY3Rp
b24ocmVxdWlyZXMpOwogfQogCistIChOU1N0cmluZyAqKXRpbWVab25lT3ZlcnJpZGUKK3sKKyAg
ICByZXR1cm4gX2NvbmZpZ3VyYXRpb24tPnRpbWVab25lT3ZlcnJpZGUoKTsKK30KKworLSAodm9p
ZClzZXRUaW1lWm9uZU92ZXJyaWRlOihOU1N0cmluZyAqKXRpbWVab25lCit7CisgICAgX2NvbmZp
Z3VyYXRpb24tPnNldFRpbWVab25lT3ZlcnJpZGUodGltZVpvbmUpOworfQorCiAtICh2b2lkKXNl
dFByb3h5Q29uZmlndXJhdGlvbjooTlNEaWN0aW9uYXJ5ICopY29uZmlndXJhdGlvbgogewogICAg
IF9jb25maWd1cmF0aW9uLT5zZXRQcm94eUNvbmZpZ3VyYXRpb24oKF9fYnJpZGdlIENGRGljdGlv
bmFyeVJlZilbY29uZmlndXJhdGlvbiBjb3B5XSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcApp
bmRleCBhMWI2OGYzYTA2YTE4MTJjZjBmZmNjMzUwYTUyZGQxNDcwYTJiNjE1Li4wZDJiNzg3MmMx
OWFkYThjNzg0NDRlYzE0NzMxMzRjMjQ5ZmM0MzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5j
cHAKQEAgLTg5LDcgKzg5LDggQEAgZW51bSB7CiAgICAgUFJPUF9JVFBfRElSRUNUT1JZLAogICAg
IFBST1BfU0VSVklDRV9XT1JLRVJfUkVHSVNUUkFUSU9OU19ESVJFQ1RPUlksCiAgICAgUFJPUF9E
T01fQ0FDSEVfRElSRUNUT1JZLAotICAgIFBST1BfSVNfRVBIRU1FUkFMCisgICAgUFJPUF9JU19F
UEhFTUVSQUwsCisgICAgUFJPUF9USU1FX1pPTkVfT1ZFUlJJREUKIH07CiAKIHN0cnVjdCBfV2Vi
S2l0V2Vic2l0ZURhdGFNYW5hZ2VyUHJpdmF0ZSB7CkBAIC0xMTAsNiArMTExLDcgQEAgc3RydWN0
IF9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRlIHsKICAgICBHVW5pcXVlUHRyPGNoYXI+
IGl0cERpcmVjdG9yeTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IHN3UmVnaXN0cmF0aW9uc0RpcmVj
dG9yeTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IGRvbUNhY2hlRGlyZWN0b3J5OworICAgIEdVbmlx
dWVQdHI8Y2hhcj4gdGltZVpvbmVPdmVycmlkZTsKIAogICAgIEdSZWZQdHI8V2ViS2l0Q29va2ll
TWFuYWdlcj4gY29va2llTWFuYWdlcjsKICAgICBWZWN0b3I8V2ViUHJvY2Vzc1Bvb2wqPiBwcm9j
ZXNzUG9vbHM7CkBAIC0xNjAsNiArMTYyLDkgQEAgc3RhdGljIHZvaWQgd2Via2l0V2Vic2l0ZURh
dGFNYW5hZ2VyR2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSUQsIEcKICAg
ICBjYXNlIFBST1BfSVNfRVBIRU1FUkFMOgogICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZh
bHVlLCB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfaXNfZXBoZW1lcmFsKG1hbmFnZXIpKTsK
ICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1RJTUVfWk9ORV9PVkVSUklERToKKyAgICAg
ICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZhbHVlLCB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJf
Z2V0X3RpbWVfem9uZV9vdmVycmlkZShtYW5hZ2VyKSk7CisgICAgICAgIGJyZWFrOwogICAgIGRl
ZmF1bHQ6CiAgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3Qs
IHByb3BJRCwgcGFyYW1TcGVjKTsKICAgICB9CkBAIC0yMDcsNiArMjEyLDkgQEAgc3RhdGljIHZv
aWQgd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyU2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBn
dWludCBwcm9wSUQsIGMKICAgICAgICAgaWYgKGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKQog
ICAgICAgICAgICAgbWFuYWdlci0+cHJpdi0+d2Vic2l0ZURhdGFTdG9yZSA9IFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6Y3JlYXRlTm9uUGVyc2lzdGVudCgpOwogICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFBST1BfVElNRV9aT05FX09WRVJSSURFOgorICAgICAgICBtYW5hZ2VyLT5wcml2LT50
aW1lWm9uZU92ZXJyaWRlLnJlc2V0KGdfdmFsdWVfZHVwX3N0cmluZyh2YWx1ZSkpOworICAgICAg
ICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJP
UEVSVFlfSUQob2JqZWN0LCBwcm9wSUQsIHBhcmFtU3BlYyk7CiAgICAgfQpAQCAtNDYwLDYgKzQ2
OCwyNSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfY2xhc3NfaW5p
dChXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJDbGFzcwogICAgICAgICAgICAgXygiV2hldGhlciB0
aGUgV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyIGlzIGVwaGVtZXJhbCIpLAogICAgICAgICAgICAg
RkFMU0UsCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHUGFyYW1GbGFncz4oV0VCS0lUX1BBUkFN
X1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RSVUNUX09OTFkpKSk7CisKKworICAgIC8qKgorICAg
ICAqIFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlcjp0aW1lLXpvbmUtb3ZlcnJpZGU6CisgICAgICoK
KyAgICAgKiBUaGUgdGltZXpvbmUgb3ZlcnJpZGUgZm9yIHRoaXMgI1dlYktpdFdlYnNpdGVEYXRh
TWFuYWdlci4KKyAgICAgKgorICAgICAqIFNpbmNlOiAyLjMwCisgICAgICovCisgICAgZ19vYmpl
Y3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKKyAgICAgICAgZ09iamVjdENsYXNzLAorICAgICAg
ICBQUk9QX1RJTUVfWk9ORV9PVkVSUklERSwKKyAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygK
KyAgICAgICAgICAgICJ0aW1lLXpvbmUtb3ZlcnJpZGUiLAorICAgICAgICAgICAgXygiVGltZSBa
b25lIE92ZXJyaWRlIiksCisgICAgICAgICAgICBfKCJUaGUgdGltZSB6b25lIHRvIHVzZSBpbnN0
ZWFkIG9mIHRoZSBzeXN0ZW0gb25lIiksCisgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9SRUFEV1JJVEUgfCBHX1BB
UkFNX0NPTlNUUlVDVF9PTkxZKSkpOworCiB9CiAKIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYg
d2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0RGF0YVN0b3JlKFdlYktpdFdlYnNpdGVEYXRhTWFu
YWdlciogbWFuYWdlcikKQEAgLTQ4NSw2ICs1MTIsOCBAQCBXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmUmIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldERhdGFTdG9yZShXZWJLaXRXZWJzaXRlRGF0
YQogICAgICAgICAgICAgY29uZmlndXJhdGlvbi0+c2V0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bkRpcmVjdG9yeShGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KHByaXYtPnN3UmVnaXN0cmF0aW9uc0RpcmVjdG9yeS5nZXQoKSkpOwogICAgICAgICBpZiAocHJp
di0+ZG9tQ2FjaGVEaXJlY3RvcnkpCiAgICAgICAgICAgICBjb25maWd1cmF0aW9uLT5zZXRDYWNo
ZVN0b3JhZ2VEaXJlY3RvcnkoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihwcml2LT5kb21DYWNoZURpcmVjdG9yeS5nZXQoKSkpOworICAgICAgICBpZiAocHJp
di0+dGltZVpvbmVPdmVycmlkZSkKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24tPnNldFRpbWVa
b25lT3ZlcnJpZGUocHJpdi0+dGltZVpvbmVPdmVycmlkZS5nZXQoKSk7CiAgICAgICAgIHByaXYt
PndlYnNpdGVEYXRhU3RvcmUgPSBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZShXVEZN
b3ZlKGNvbmZpZ3VyYXRpb24pLCBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsK
ICAgICB9CiAKQEAgLTExMTIsMyArMTE0MSwyNCBAQCBnYm9vbGVhbiB3ZWJraXRfd2Vic2l0ZV9k
YXRhX21hbmFnZXJfY2xlYXJfZmluaXNoKFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciogbWFuYQog
CiAgICAgcmV0dXJuIGdfdGFza19wcm9wYWdhdGVfYm9vbGVhbihHX1RBU0socmVzdWx0KSwgZXJy
b3IpOwogfQorCisvKioKKyAqIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfdGltZV96
b25lX292ZXJyaWRlOgorICogQG1hbmFnZXI6IGEgI1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlcgor
ICoKKyAqIEdldCB0aGUgI1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlcjp0aW1lLXpvbmUtb3ZlcnJp
ZGUgcHJvcGVydHkuCisgKgorICogUmV0dXJuczogKGFsbG93LW5vbmUpOiB0aGUgdGltZSB6b25l
IGZvciBXZWJzaXRlIGRhdGEsIG9yICVOVUxMIGlmCisgKiAgICAjV2ViS2l0V2Vic2l0ZURhdGFN
YW5hZ2VyOnRpbWUtem9uZS1vdmVycmlkZSB3YXMgbm90IHByb3ZpZGVkIG9yIEBtYW5hZ2VyIGlz
IGVwaGVtZXJhbC4KKyAqCisgKiBTaW5jZTogMi4zMAorICovCitjb25zdCBnY2hhciogd2Via2l0
X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF90aW1lX3pvbmVfb3ZlcnJpZGUoV2ViS2l0V2Vic2l0
ZURhdGFNYW5hZ2VyKiBtYW5hZ2VyKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJ
VF9JU19XRUJTSVRFX0RBVEFfTUFOQUdFUihtYW5hZ2VyKSwgbnVsbHB0cik7CisKKyAgICBpZiAo
bWFuYWdlci0+cHJpdi0+dGltZVpvbmVPdmVycmlkZSAmJiAhbWFuYWdlci0+cHJpdi0+d2Vic2l0
ZURhdGFTdG9yZS0+aXNQZXJzaXN0ZW50KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgcmV0dXJuIG1hbmFnZXItPnByaXYtPnRpbWVab25lT3ZlcnJpZGUuZ2V0KCk7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYnNpdGVEYXRh
TWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJzaXRl
RGF0YU1hbmFnZXIuaAppbmRleCBjNzExMmM1YmJkMzRiNjgwMDMxZWJiNDJkYjkzZGZkMDIxMDA0
Mzc4Li42N2ExNmU3YTA1ZmE0Njg5OGU2MmYwOTRkNzg5ZTI0OWNjNzRlMzljIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vic2l0ZURh
dGFNYW5hZ2VyLmgKQEAgLTEwNSw2ICsxMDUsOSBAQCB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFn
ZXJfZ2V0X2RvbV9jYWNoZV9kaXJlY3RvcnkgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYgog
V0VCS0lUX0FQSSBXZWJLaXRDb29raWVNYW5hZ2VyICoKIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFu
YWdlcl9nZXRfY29va2llX21hbmFnZXIgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2Vi
c2l0ZURhdGFNYW5hZ2VyICptYW5hZ2VyKTsKIAorV0VCS0lUX0FQSSBjb25zdCBnY2hhcioKK3dl
YmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfdGltZV96b25lX292ZXJyaWRlICAgICAgICAg
ICAgICAgICAgICAoV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiBtYW5hZ2VyKTsKKwogV0VCS0lU
X0FQSSB2b2lkCiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfc2V0X2l0cF9lbmFibGVkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciAqbWFuYWdl
ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gICAgICAgICAgICAgICAgICBlbmFibGVkKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3Rr
LTQuMC1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mv
d2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CmluZGV4IDYyYjBlMTA4NmIwOThmMzE1MmZjZDE3
OTNhMTNhYTFkM2VlYjA0ODMuLjYzODk3NGQ5NGM2MGY1MjA1YWQwNzA3ZWI1ZjYyOWQ3Nzc2OWUz
MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJr
aXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dApAQCAtMTQ2NCw2ICsxNDY0LDcg
QEAgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9vZmZsaW5lX2FwcGxpY2F0aW9uX2Nh
Y2hlX2RpcmVjdG9yeQogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9pbmRleGVkZGJf
ZGlyZWN0b3J5CiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X3dlYnNxbF9kaXJlY3Rv
cnkKIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaHN0c19jYWNoZV9kaXJlY3RvcnkK
K3dlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfdGltZV96b25lX292ZXJyaWRlCiB3ZWJr
aXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2l0cF9kaXJlY3RvcnkKIHdlYmtpdF93ZWJzaXRl
X2RhdGFfbWFuYWdlcl9nZXRfc2VydmljZV93b3JrZXJfcmVnaXN0cmF0aW9uc19kaXJlY3RvcnkK
IHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfZG9tX2NhY2hlX2RpcmVjdG9yeQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJzaXRlRGF0
YU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2Vic2l0
ZURhdGFNYW5hZ2VyLmgKaW5kZXggYWU0MzhmZWFmZWIxMTFkYTFjODVmZjVlNGMwZDBjYWI2MjAw
MTRjZS4uODI1ZjY5Y2I3NTMwNWJiNzAzMTA4N2FlNDlmOGQ5NzBjNzViYzcyMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJzaXRlRGF0YU1hbmFn
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYnNpdGVE
YXRhTWFuYWdlci5oCkBAIC0xMDUsNiArMTA1LDkgQEAgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5h
Z2VyX2dldF9kb21fY2FjaGVfZGlyZWN0b3J5ICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWIK
IFdFQktJVF9BUEkgV2ViS2l0Q29va2llTWFuYWdlciAqCiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21h
bmFnZXJfZ2V0X2Nvb2tpZV9tYW5hZ2VyICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdl
YnNpdGVEYXRhTWFuYWdlciAqbWFuYWdlcik7CiAKK1dFQktJVF9BUEkgY29uc3QgZ2NoYXIqCit3
ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X3RpbWVfem9uZV9vdmVycmlkZSAgICAgICAg
ICAgICAgICAgICAgKFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciogbWFuYWdlcik7CisKIFdFQktJ
VF9BUEkgdm9pZAogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX3NldF9pdHBfZW5hYmxlZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIgKm1hbmFn
ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdib29sZWFuICAgICAgICAgICAgICAgICAgZW5hYmxlZCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEuMC1z
ZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEu
MC1zZWN0aW9ucy50eHQKaW5kZXggN2QxMjE0YjFjYjE1NzcyOGVlYTk1OWM4MGVjNjA0NjliODY0
ODhhNC4uMjc3NmU1NGNmNDYyOTZiNzcxNTg5MDhhYWMzOTdlNDM4NTc2NGM0NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlvbnMu
dHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMS4wLXNl
Y3Rpb25zLnR4dApAQCAtMTQwMiw2ICsxNDAyLDcgQEAgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5h
Z2VyX2dldF9pdHBfZGlyZWN0b3J5CiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X3Nl
cnZpY2Vfd29ya2VyX3JlZ2lzdHJhdGlvbnNfZGlyZWN0b3J5CiB3ZWJraXRfd2Vic2l0ZV9kYXRh
X21hbmFnZXJfZ2V0X2RvbV9jYWNoZV9kaXJlY3RvcnkKIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFu
YWdlcl9nZXRfY29va2llX21hbmFnZXIKK3dlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRf
dGltZV96b25lX292ZXJyaWRlCiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfc2V0X2l0cF9l
bmFibGVkCiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2l0cF9lbmFibGVkCiB3ZWJr
aXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfc2V0X3BlcnNpc3RlbnRfY3JlZGVudGlhbF9zdG9yYWdl
X2VuYWJsZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRl
eCAyMGNmOTI2YWM4MDNkOWIzZmIwMzRlMDAwYjk2ZGVjNWFiMTJiZDA0Li4yOWNhODZiNmNjYTg5
MDUyNjBlZDk0ZWVjZTc1ZGI1ZWUyMTUzZjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC05ODMsNiArOTgzLDggQEAgV2ViUHJvY2Vzc0RhdGFTdG9y
ZVBhcmFtZXRlcnMgV2ViUHJvY2Vzc1Bvb2w6OndlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJz
KFdlYlAKICAgICAgICAgCiAgICAgYXV0byBwbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMgPSBt
X3BsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmF1dG9TdGFydE9yaWdpbkhhc2hlc0NvcHkod2Vic2l0
ZURhdGFTdG9yZS5zZXNzaW9uSUQoKSk7CiAKKyAgICBTdHJpbmcgdGltZVpvbmVPdmVycmlkZSA9
IHdlYnNpdGVEYXRhU3RvcmUudGltZVpvbmVPdmVycmlkZSgpOworCiAgICAgcmV0dXJuIFdlYlBy
b2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzIHsKICAgICAgICAgd2Vic2l0ZURhdGFTdG9yZS5zZXNz
aW9uSUQoKSwKICAgICAgICAgV1RGTW92ZShhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KSwKQEAg
LTEwMDEsNyArMTAwMyw4IEBAIFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYlByb2Nl
c3NQb29sOjp3ZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycyhXZWJQCiAgICAgICAgIHdlYnNp
dGVEYXRhU3RvcmUudGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSgpLAogICAgICAgICBtX2Rv
bWFpbnNXaXRoVXNlckludGVyYWN0aW9uLAogI2VuZGlmCi0gICAgICAgIHdlYnNpdGVEYXRhU3Rv
cmUucmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKQorICAgICAgICB3ZWJzaXRlRGF0YVN0
b3JlLnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCksCisgICAgICAgIFdURk1vdmUodGlt
ZVpvbmVPdmVycmlkZSkKICAgICB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IGQ2YWUxYzg4
YzNiMzc4YTFlMjc3Mjg5ODQ2YmFiYjI0YTk2ZmZiZjIuLjAyM2M1NWM2YWM2MDdhMDMwNWQxZjU2
OTc4Y2UzNmE2OWNmODViZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0yMzU2LDYgKzIzNTYsOCBA
QCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJz
KCkKICNlbmRpZgogICAgIHBsYXRmb3JtU2V0TmV0d29ya1BhcmFtZXRlcnMocGFyYW1ldGVycyk7
CiAKKyAgICBwYXJhbWV0ZXJzLnRpbWVab25lT3ZlcnJpZGUgPSB0aGlzLT50aW1lWm9uZU92ZXJy
aWRlKCk7CisKICAgICByZXR1cm4gcGFyYW1ldGVyczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IDcx
Yzg1YTJhYmEwYTkyMWRjMDliZjJkZGMzZjAxZGZlNGM5YjAyYjUuLmVhMWRmZTU2YzgxMzg0N2Vh
ZmQ1OGE1NmIyYzlhZWUzYmRiY2Q4MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKQEAgLTIyNiw2ICsyMjYsOCBA
QCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiByZXNvbHZlZFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+cmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOyB9CiAgICAgY29uc3QgU3RyaW5nJiByZXNv
bHZlZEhTVFNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZENvbmZp
Z3VyYXRpb24tPmhzdHNTdG9yYWdlRGlyZWN0b3J5KCk7IH0KIAorICAgIGNvbnN0IFN0cmluZyYg
dGltZVpvbmVPdmVycmlkZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9u
LT50aW1lWm9uZU92ZXJyaWRlKCk7IH0KKwogICAgIERldmljZUlkSGFzaFNhbHRTdG9yYWdlJiBk
ZXZpY2VJZEhhc2hTYWx0U3RvcmFnZSgpIHsgcmV0dXJuIG1fZGV2aWNlSWRIYXNoU2FsdFN0b3Jh
Z2UuZ2V0KCk7IH0KIAogICAgIFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbEZvckNvb2tpZVN0
b3JhZ2VPcGVyYXRpb25zKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5j
cHAKaW5kZXggMWIxYmZhOTgxMjU4MzFjOGQxYTZlODRmMGNiM2JkMjIxMDRjMmUxMy4uZTBmOWRj
ZjQ4OTY3YmZlOWUwMGY4ZjVmZWY3NmZkMjNhMDcyNzZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uLmNwcApAQCAtOTYsNiArOTYsNyBAQCBSZWY8V2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24+IFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpjb3B5KCkg
Y29uc3QKICAgICBpZiAobV9wcm94eUNvbmZpZ3VyYXRpb24pCiAgICAgICAgIGNvcHktPm1fcHJv
eHlDb25maWd1cmF0aW9uID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVDb3B5KG51bGxwdHIs
IHRoaXMtPm1fcHJveHlDb25maWd1cmF0aW9uLmdldCgpKSk7CiAjZW5kaWYKKyAgICBjb3B5LT5t
X3RpbWVab25lT3ZlcnJpZGUgPSB0aGlzLT5tX3RpbWVab25lT3ZlcnJpZGU7CiAKICAgICByZXR1
cm4gY29weTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCmluZGV4IGNi
YjdlZGM0YjBkOThlOGQ5NzNmZDAxZTY0NjVjOGRmZThiM2FiOTMuLjJhMDcwNTdhNTg4OWM2ZDg1
OWUyZmYzZGU3NWU1NDBkZmRlMDY3ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24uaApAQCAtMTYyLDYgKzE2Miw5IEBAIHB1YmxpYzoKICAgICBjb25zdCBVUkwmIHN0YW5k
YWxvbmVBcHBsaWNhdGlvblVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhbmRhbG9uZUFwcGxpY2F0
aW9uVVJMOyB9CiAgICAgdm9pZCBzZXRTdGFuZGFsb25lQXBwbGljYXRpb25VUkwoVVJMJiYgdXJs
KSB7IG1fc3RhbmRhbG9uZUFwcGxpY2F0aW9uVVJMID0gV1RGTW92ZSh1cmwpOyB9CiAKKyAgICBj
b25zdCBTdHJpbmcmIHRpbWVab25lT3ZlcnJpZGUoKSBjb25zdCB7IHJldHVybiBtX3RpbWVab25l
T3ZlcnJpZGU7IH0KKyAgICB2b2lkIHNldFRpbWVab25lT3ZlcnJpZGUoU3RyaW5nJiYgdGltZVpv
bmUpIHsgbV90aW1lWm9uZU92ZXJyaWRlID0gV1RGTW92ZSh0aW1lWm9uZSk7IH0KKwogcHJpdmF0
ZToKICAgICBJc1BlcnNpc3RlbnQgbV9pc1BlcnNpc3RlbnQgeyBJc1BlcnNpc3RlbnQ6Ok5vIH07
CiAKQEAgLTIxMCw2ICsyMTMsNyBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IG1fcHJveHlDb25maWd1cmF0aW9uOwogI2VuZGlm
CisgICAgU3RyaW5nIG1fdGltZVpvbmVPdmVycmlkZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCAzNTI3NWE3NGQyZjNhNGM5YzIzZWJkZGQ3NzA2
YjIwYzgyM2ZlYWU0Li5hMGZiM2YxOGU5OWZjMzI5ZWE3Yjg3ODcwZDVjNGM0MGE2OTY5Yzc0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xMjcsNiArMTI3LDcg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmg+CiAjaW5jbHVkZSA8
d3RmL0FsZ29yaXRobXMuaD4KICNpbmNsdWRlIDx3dGYvQ2FsbGJhY2tBZ2dyZWdhdG9yLmg+Cisj
aW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+CiAjaW5jbHVkZSA8d3RmL0xhbmd1YWdlLmg+CiAjaW5j
bHVkZSA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgpA
QCAtNTE4LDYgKzUxOSw5IEBAIHZvaWQgV2ViUHJvY2Vzczo6c2V0V2Vic2l0ZURhdGFTdG9yZVBh
cmFtZXRlcnMoV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMmJiBwCiAKICAgICByZXNldFBs
dWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcyhXVEZNb3ZlKHBhcmFtZXRlcnMucGx1Z0luQXV0b1N0
YXJ0T3JpZ2luSGFzaGVzKSk7CiAKKyAgICBpZiAoIXBhcmFtZXRlcnMudGltZVpvbmVPdmVycmlk
ZS5pc0VtcHR5KCkpCisgICAgICAgIHNldFRpbWVab25lT3ZlcnJpZGUocGFyYW1ldGVycy50aW1l
Wm9uZU92ZXJyaWRlKTsKKwogICAgIGZvciAoYXV0byYgc3VwcGxlbWVudCA6IG1fc3VwcGxlbWVu
dHMudmFsdWVzKCkpCiAgICAgICAgIHN1cHBsZW1lbnQtPnNldFdlYnNpdGVEYXRhU3RvcmUocGFy
YW1ldGVycyk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCBmNDkzM2VkYjU0Yzk5OGJlYzFlM2UzNTQzNmZlMTMxYWFkMTgxMjBkLi4wODQ3NDg4
YmMyZTE1ZjI3Nzk2ZDlhMjI1YzZlZTFlYmRhMzhiMzdmIDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjAtMDctMDIg
IFBoaWxpcHBlIE5vcm1hbmQgIDxwaGlsbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtXSzJdIEFk
ZCBBUEkgdG8gYWxsb3cgZW1iZWRkZXIgdG8gc2V0IGEgdGltZXpvbmUgb3ZlcnJpZGUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzg4NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0cyBmb3Ig
dGhlIG5ldyBBUElTLgorCisgICAgICAgICogTWluaUJyb3dzZXIvZ3RrL21haW4uYzoKKyAgICAg
ICAgKGFjdGl2YXRlKTogQWRkIGEgbmV3IC10IHJ1bnRpbWUgb3B0aW9uIHRvIGFsbG93IHR3ZWFr
aW5nIHRoZSB0aW1lem9uZSB1c2VkIGJ5IHRoZSBicm93c2VyLgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJzaXRlRGF0YXN0b3JlLm1tOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VEVTVCk6IEFkZCB0ZXN0IGZvciB0aGUgbmV3IENvY29hIEFQSS4KKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYnNpdGVEYXRhLmNw
cDogQWRkIHRlc3QgZm9yIHRoZSBuZXcgZ2xpYiBBUEkuCisgICAgICAgIChzZXJ2ZXJDYWxsYmFj
ayk6CisgICAgICAgICh0aXRsZUNoYW5nZWQpOgorICAgICAgICAodGVzdFdlYnNpdGVEYXRhVGlt
ZXpvbmVPdmVycmlkZSk6CisgICAgICAgIChiZWZvcmVBbGwpOgorICAgICAgICAqIGZsYXRwYWsv
ZmxhdHBha3V0aWxzLnB5OiBTZXQgdGltZXpvbmUgdG8gQW1lcmljYS9Mb3NfQW5nZWxlcywgaXQn
cyBlcXVpdmFsZW50IHRvIFBEVCBidXQKKyAgICAgICAgZWFzaWVyIHRvIHVuZGVyc3RhbmQuCisg
ICAgICAgIChXZWJraXRGbGF0cGFrLnJ1bl9pbl9zYW5kYm94KToKKwogMjAyMC0wNy0wMiAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFVwZGF0
ZSBNYWMgQ01ha2UgYnVpbGQKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWlu
LmMgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCmluZGV4IDYxY2I3MjllOWU4ZTI0ZDg1
YzBkNjc4YzY0YTNkYmFlMWMwODVmNjMuLmM5MDNkNmZiN2VhNzI0ZmVlMzY1Y2Y0NGIzMDBjYTJi
NWFkYWNmZjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMKKysrIGIv
VG9vbHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYwpAQCAtNTYsNiArNTYsNyBAQCBzdGF0aWMgY29u
c3QgY2hhciAqcHJveHk7CiBzdGF0aWMgZ2Jvb2xlYW4gZGFya01vZGU7CiBzdGF0aWMgZ2Jvb2xl
YW4gZW5hYmxlSVRQOwogc3RhdGljIGdib29sZWFuIHByaW50VmVyc2lvbjsKK3N0YXRpYyBjaGFy
KiB0aW1lWm9uZTsKIAogdHlwZWRlZiBlbnVtIHsKICAgICBNSU5JX0JST1dTRVJfRVJST1JfSU5W
QUxJRF9BQk9VVF9QQVRICkBAIC0xNDYsNiArMTQ3LDcgQEAgc3RhdGljIGNvbnN0IEdPcHRpb25F
bnRyeSBjb21tYW5kTGluZU9wdGlvbnNbXSA9CiAgICAgeyAiaWdub3JlLXRscy1lcnJvcnMiLCAw
LCAwLCBHX09QVElPTl9BUkdfTk9ORSwgJmlnbm9yZVRMU0Vycm9ycywgIklnbm9yZSBUTFMgZXJy
b3JzIiwgTlVMTCB9LAogICAgIHsgImNvbnRlbnQtZmlsdGVyIiwgMCwgMCwgR19PUFRJT05fQVJH
X0ZJTEVOQU1FLCAmY29udGVudEZpbHRlciwgIkpTT04gd2l0aCBjb250ZW50IGZpbHRlcmluZyBy
dWxlcyIsICJGSUxFIiB9LAogICAgIHsgImVuYWJsZS1pdHAiLCAwLCAwLCBHX09QVElPTl9BUkdf
Tk9ORSwgJmVuYWJsZUlUUCwgIkVuYWJsZSBJbnRlbGxpZ2VudCBUcmFja2luZyBQcmV2ZW50aW9u
IChJVFApIiwgTlVMTCB9LAorICAgIHsgInRpbWUtem9uZSIsICd0JywgMCwgR19PUFRJT05fQVJH
X1NUUklORywgJnRpbWVab25lLCAiU2V0IHRpbWUgem9uZSIsICJUSU1FWk9ORSJ9LAogICAgIHsg
InZlcnNpb24iLCAndicsIDAsIEdfT1BUSU9OX0FSR19OT05FLCAmcHJpbnRWZXJzaW9uLCAiUHJp
bnQgdGhlIFdlYktpdEdUSyB2ZXJzaW9uIiwgTlVMTCB9LAogICAgIHsgR19PUFRJT05fUkVNQUlO
SU5HLCAwLCAwLCBHX09QVElPTl9BUkdfRklMRU5BTUVfQVJSQVksICZ1cmlBcmd1bWVudHMsIDAs
ICJbVVJM4oCmXSIgfSwKICAgICB7IDAsIDAsIDAsIDAsIDAsIDAsIDAgfQpAQCAtNTY2LDcgKzU2
OCw4IEBAIHN0YXRpYyB2b2lkIGFjdGl2YXRlKEdBcHBsaWNhdGlvbiAqYXBwbGljYXRpb24sIFdl
YktpdFNldHRpbmdzICp3ZWJraXRTZXR0aW5ncykKICAgICBlbHNlIHsKICAgICAgICAgY2hhciAq
ZGF0YURpcmVjdG9yeSA9IGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRhX2RpcigpLCAi
d2Via2l0Z3RrLSIgV0VCS0lUR1RLX0FQSV9WRVJTSU9OX1NUUklORywgIk1pbmlCcm93c2VyIiwg
TlVMTCk7CiAgICAgICAgIGNoYXIgKmNhY2hlRGlyZWN0b3J5ID0gZ19idWlsZF9maWxlbmFtZShn
X2dldF91c2VyX2NhY2hlX2RpcigpLCAid2Via2l0Z3RrLSIgV0VCS0lUR1RLX0FQSV9WRVJTSU9O
X1NUUklORywgIk1pbmlCcm93c2VyIiwgTlVMTCk7Ci0gICAgICAgIG1hbmFnZXIgPSB3ZWJraXRf
d2Vic2l0ZV9kYXRhX21hbmFnZXJfbmV3KCJiYXNlLWRhdGEtZGlyZWN0b3J5IiwgZGF0YURpcmVj
dG9yeSwgImJhc2UtY2FjaGUtZGlyZWN0b3J5IiwgY2FjaGVEaXJlY3RvcnksIE5VTEwpOworICAg
ICAgICBtYW5hZ2VyID0gd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX25ldygiYmFzZS1kYXRh
LWRpcmVjdG9yeSIsIGRhdGFEaXJlY3RvcnksICJiYXNlLWNhY2hlLWRpcmVjdG9yeSIsIGNhY2hl
RGlyZWN0b3J5LAorICAgICAgICAgICAgInRpbWUtem9uZS1vdmVycmlkZSIsIHRpbWVab25lLCBO
VUxMKTsKICAgICAgICAgZ19mcmVlKGRhdGFEaXJlY3RvcnkpOwogICAgICAgICBnX2ZyZWUoY2Fj
aGVEaXJlY3RvcnkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvV0tXZWJzaXRlRGF0YXN0b3JlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYnNpdGVEYXRhc3RvcmUubW0KaW5kZXggYjk1OGYzYjIz
ZDBiYWM5MzllZTBlOGNiMDUzNjhmZDVlN2Q5Mzc1OS4uOGExMzc4NjFjYWUxYmRkMTRkMWE4MjEz
NDUxNDNhZGQ0ZmQ5MGVkMCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9XS1dlYnNpdGVEYXRhc3RvcmUubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYnNpdGVEYXRhc3RvcmUubW0KQEAgLTMwOSw0ICszMDks
MjkgQEAgVEVTVChXS1dlYnNpdGVEYXRhU3RvcmUsIEZldGNoTm9uUGVyc2lzdGVudFdlYlN0b3Jh
Z2UpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWFkeVRvQ29udGludWUpOwogfQog
CitURVNUKFdLV2Vic2l0ZURhdGFTdG9yZSwgVGltZVpvbmVPdmVycmlkZSkKK3sKKyAgICBhdXRv
IGNoZWNrVGltZVpvbmVPZmZzZXQgPSBbJl0oT3B0aW9uYWw8U3RyaW5nPiB0aW1lWm9uZSwgU3Ry
aW5nIGV4cGVjdGVkT2Zmc2V0KSB7CisgICAgICAgIGF1dG8gZGF0YVN0b3JlQ29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dE5vblBlcnNpc3RlbnRDb25maWd1cmF0aW9uXSk7CisgICAgICAgIGlmICh0aW1lWm9uZSkKKyAg
ICAgICAgICAgIFtkYXRhU3RvcmVDb25maWd1cmF0aW9uIHNldFRpbWVab25lT3ZlcnJpZGU6KnRp
bWVab25lXTsKKyAgICAgICAgYXV0byB3ZWJzaXRlRGF0YVN0b3JlID0gW1dLV2Vic2l0ZURhdGFT
dG9yZSBub25QZXJzaXN0ZW50RGF0YVN0b3JlXTsKKyAgICAgICAgW3dlYnNpdGVEYXRhU3RvcmUg
X2luaXRXaXRoQ29uZmlndXJhdGlvbjpkYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpXTsKKwor
ICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtXS1dlYlZpZXdDb25maWd1cmF0
aW9uIG5ld10pOworICAgICAgICBbY29uZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOndl
YnNpdGVEYXRhU3RvcmVdOworICAgICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZp
Z3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgICAgICByZWFkeVRvQ29udGludWUg
PSBmYWxzZTsKKyAgICAgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAibGV0IG5vdyA9
IG5ldyBEYXRlKCk7IG5vdy5nZXRUaW1lem9uZU9mZnNldCgpIiBjb21wbGV0aW9uSGFuZGxlcjpe
KGlkIHJlc3VsdCwgTlNFcnJvciAqKSB7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXhw
ZWN0ZWRPZmZzZXQsIFtyZXN1bHQgc3RyaW5nVmFsdWVdKTsKKyAgICAgICAgICAgIHJlYWR5VG9D
b250aW51ZSA9IHRydWU7CisgICAgICAgIH1dOworICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJnJlYWR5VG9Db250aW51ZSk7CisgICAgfTsKKworICAgIC8vIFRoZSB0ZXN0IGJvdHMg
dXNlIHRoZSBBbWVyaWNhL0xvc19BbmdlbGVzIHRpbWV6b25lLCBtZWFuaW5nIGEgNyBob3VycyBH
TVQgb2Zmc2V0LCA0MjAgbWludXRlcy4KKyAgICBjaGVja1RpbWVab25lT2Zmc2V0KFdURjo6bnVs
bG9wdCwgIjQyMCIpOworICAgIGNoZWNrVGltZVpvbmVPZmZzZXQoT3B0aW9uYWw8U3RyaW5nPiB7
ICJFdXJvcGUvQmVybGluIiB9LCAiLTEyMCIpOworfQorCiB9CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYnNpdGVEYXRhLmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2Vic2l0ZURhdGEuY3BwCmluZGV4
IGRjNGIxN2NmODYzMTIxODlkNTY0ZjQxNWNmODhiMTk0MGI0Yjk1ZmIuLjllNjUyYjNhMzgwMjI0
MjUwNjdjOGQ3NWRiOGY1MDZlYTQ0MTNmNTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2Vic2l0ZURhdGEuY3BwCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2Vic2l0ZURhdGEuY3BwCkBAIC04OCw2ICs4
OCwxMSBAQCBzdGF0aWMgdm9pZCBzZXJ2ZXJDYWxsYmFjayhTb3VwU2VydmVyKiBzZXJ2ZXIsIFNv
dXBNZXNzYWdlKiBtZXNzYWdlLCBjb25zdCBjaGFyKgogICAgIH0gZWxzZSBpZiAoZ19zdHJfZXF1
YWwocGF0aCwgIi9zZXJ2aWNlL2VtcHR5LXdvcmtlci5qcyIpKSB7CiAgICAgICAgIHNvdXBfbWVz
c2FnZV9ib2R5X2NvbXBsZXRlKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHkpOwogICAgICAgICBzb3Vw
X21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19PSyk7CisgICAgfSBlbHNl
IGlmIChnX3N0cl9lcXVhbChwYXRoLCAiL3RpbWV6b25lLW9mZnNldCIpKSB7CisgICAgICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBxdWVyeVRpbWV6b25lT2Zmc2V0SFRNTCA9ICI8aHRtbD48Ym9keSBv
bmxvYWQ9XCJsZXQgbm93ID0gbmV3IERhdGUoKTsgZG9jdW1lbnQudGl0bGUgPSBub3cuZ2V0VGlt
ZXpvbmVPZmZzZXQoKTtcIi8+PC9odG1sPiI7CisgICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2Fw
cGVuZChtZXNzYWdlLT5yZXNwb25zZV9ib2R5LCBTT1VQX01FTU9SWV9TVEFUSUMsIHF1ZXJ5VGlt
ZXpvbmVPZmZzZXRIVE1MICwgc3RybGVuKHF1ZXJ5VGltZXpvbmVPZmZzZXRIVE1MKSk7CisgICAg
ICAgIHNvdXBfbWVzc2FnZV9ib2R5X2NvbXBsZXRlKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHkpOwor
ICAgICAgICBzb3VwX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19PSyk7
CiAgICAgfSBlbHNlCiAgICAgICAgIHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNP
VVBfU1RBVFVTX05PVF9GT1VORCk7CiB9CkBAIC03ODIsNiArNzg3LDM0IEBAIGdfYXNzZXJ0X25v
bm51bGwoZGF0YSk7CiAgICAgZ19hc3NlcnRfbnVsbChkYXRhTGlzdCk7CiB9CiAKK3N0YXRpYyB2
b2lkIHRpdGxlQ2hhbmdlZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBHUGFyYW1TcGVjKiwgV2Vi
c2l0ZURhdGFUZXN0KiB0ZXN0KQoreworICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X3RpdGxlKHdlYlZpZXcpLCA9PSwgIi0xMjAiKTsKKyAgICBnX3NpZ25hbF9oYW5kbGVy
c19kaXNjb25uZWN0X2J5X2Z1bmMod2ViVmlldywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odGl0
bGVDaGFuZ2VkKSwgdGVzdCk7CisgICAgZ19tYWluX2xvb3BfcXVpdCh0ZXN0LT5tX21haW5Mb29w
KTsKK30KKworc3RhdGljIHZvaWQgdGVzdFdlYnNpdGVEYXRhVGltZXpvbmVPdmVycmlkZShXZWJz
aXRlRGF0YVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCit7CisgICAgLy8gQnkgZGVmYXVsdCB0
aGUgdGVzdCBoYXJuZXNzIHJ1bnMgaW4gdGhlIEFtZXJpY2EvTG9zX0FuZ2VsZXMgdGltZXpvbmUs
IHdoaWNoIGhhcyBhIEdNVCBvZmZzZXQKKyAgICAvLyBvZiA0MjAgbWludXRlcyAoNyBob3Vycyku
CisgICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X3RpbWVf
em9uZV9vdmVycmlkZSh0ZXN0LT5tX21hbmFnZXIpKTsKKyAgICB0ZXN0LT5sb2FkVVJJKGtTZXJ2
ZXItPmdldFVSSUZvclBhdGgoIi90aW1lem9uZS1vZmZzZXQiKS5kYXRhKCkpOworICAgIHRlc3Qt
PndhaXRVbnRpbFRpdGxlQ2hhbmdlZFRvKCI0MjAiKTsKKworICAgIC8vIFN3aXRjaCB0byBCZXJs
aW4sIHdoaWNoIGlzIDIgaG91cnMgKDEyMCBtaW51dGVzKSBiZWZvcmUgR01ULgorICAgIEdSZWZQ
dHI8V2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyPiBtYW5hZ2VyID0gYWRvcHRHUmVmKFdFQktJVF9X
RUJTSVRFX0RBVEFfTUFOQUdFUihnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCU0lURV9EQVRB
X01BTkFHRVIsICJ0aW1lLXpvbmUtb3ZlcnJpZGUiLCAiRXVyb3BlL0JlcmxpbiIsIG51bGxwdHIp
KSk7CisKKyAgICBHUmVmUHRyPFdlYktpdFdlYkNvbnRleHQ+IHdlYkNvbnRleHQgPSBhZG9wdEdS
ZWYod2Via2l0X3dlYl9jb250ZXh0X25ld193aXRoX3dlYnNpdGVfZGF0YV9tYW5hZ2VyKG1hbmFn
ZXIuZ2V0KCkpKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBUZXN0OjphZG9wdFZpZXcoVGVzdDo6Y3Jl
YXRlV2ViVmlldyh3ZWJDb250ZXh0LmdldCgpKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRf
d2ViX3ZpZXdfZ2V0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyKHdlYlZpZXcuZ2V0KCkpID09IG1hbmFn
ZXIuZ2V0KCkpOworICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFn
ZXJfZ2V0X3RpbWVfem9uZV9vdmVycmlkZShtYW5hZ2VyLmdldCgpKSwgPT0sICJFdXJvcGUvQmVy
bGluIik7CisKKyAgICBnX3NpZ25hbF9jb25uZWN0KHdlYlZpZXcuZ2V0KCksICJub3RpZnk6OnRp
dGxlIiwgR19DQUxMQkFDSyh0aXRsZUNoYW5nZWQpLCB0ZXN0KTsKKyAgICB3ZWJraXRfd2ViX3Zp
ZXdfbG9hZF91cmkod2ViVmlldy5nZXQoKSwga1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL3RpbWV6
b25lLW9mZnNldCIpLmRhdGEoKSk7CisgICAgZ19tYWluX2xvb3BfcnVuKHRlc3QtPm1fbWFpbkxv
b3ApOworfQorCiB2b2lkIGJlZm9yZUFsbCgpCiB7CiAgICAga1NlcnZlciA9IG5ldyBXZWJLaXRU
ZXN0U2VydmVyKCk7CkBAIC04MDUsNiArODM4LDcgQEAgdm9pZCBiZWZvcmVBbGwoKQogICAgIFdl
YnNpdGVEYXRhVGVzdDo6YWRkKCJXZWJLaXRXZWJzaXRlRGF0YSIsICJpdHAiLCB0ZXN0V2Vic2l0
ZURhdGFJVFApOwogICAgIFdlYnNpdGVEYXRhVGVzdDo6YWRkKCJXZWJLaXRXZWJzaXRlRGF0YSIs
ICJzZXJ2aWNlLXdvcmtlci1yZWdpc3RyYXRpb25zIiwgdGVzdFdlYnNpdGVEYXRhU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbnMpOwogICAgIFdlYnNpdGVEYXRhVGVzdDo6YWRkKCJXZWJLaXRXZWJz
aXRlRGF0YSIsICJkb20tY2FjaGUiLCB0ZXN0V2Vic2l0ZURhdGFET01DYWNoZSk7CisgICAgV2Vi
c2l0ZURhdGFUZXN0OjphZGQoIldlYktpdFdlYnNpdGVEYXRhIiwgInRpbWV6b25lLW92ZXJyaWRl
IiwgdGVzdFdlYnNpdGVEYXRhVGltZXpvbmVPdmVycmlkZSk7CiB9CiAKIHZvaWQgYWZ0ZXJBbGwo
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvZmxhdHBhay9mbGF0cGFrdXRpbHMucHkgYi9Ub29scy9mbGF0
cGFrL2ZsYXRwYWt1dGlscy5weQppbmRleCBmMWVjMWU0OTE5ODk5YThmYTQ4MDFlM2I0MDgxYWE0
NWYyYzA5Y2Q2Li5kNWNhN2M4OWZkMjhkYjUzMDI5ZTYzMzQyNmNmNTQ3OGY5ODgxNGY1IDEwMDY0
NAotLS0gYS9Ub29scy9mbGF0cGFrL2ZsYXRwYWt1dGlscy5weQorKysgYi9Ub29scy9mbGF0cGFr
L2ZsYXRwYWt1dGlscy5weQpAQCAtNzEwLDcgKzcxMCw3IEBAIGNsYXNzIFdlYmtpdEZsYXRwYWs6
CiAgICAgICAgICAgICBdKQogCiAgICAgICAgICAgICBzYW5kYm94X2Vudmlyb25tZW50LnVwZGF0
ZSh7Ci0gICAgICAgICAgICAgICAgIlRaIjogIlBTVDhQRFQiLAorICAgICAgICAgICAgICAgICJU
WiI6ICJBbWVyaWNhL0xvc19BbmdlbGVzIiwKICAgICAgICAgICAgIH0pCiAKICAgICAgICAgZW52
X3Zhcl9wcmVmaXhlc190b19rZWVwID0gWwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403787</attachid>
            <date>2020-07-08 09:12:14 -0700</date>
            <delta_ts>2020-07-08 09:15:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213884-20200708091212.patch</filename>
            <type>text/plain</type>
            <size>46101</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0MDk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
NTNkMzJlZjk0MGU0Y2IyYTc1OGQyMzZkNWMxNzk0MjdkNTQ1OGQ2Li43YTU4NmFkOWEzMDhmNzE3
Yzk4ZWQzYTZmM2Y0YWQ2YWUwMzM2MzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAyMC0wNy0wMiAgUGhpbGlwcGUgTm9ybWFuZCAgPHBoaWxuQGlnYWxpYS5j
b20+IGFuZCBQYXZlbCBGZWxkbWFuIDxwYXZlbC5mZWxkbWFuQGdtYWlsLmNvbT4KKworICAgICAg
ICBbV0syXSBBZGQgQVBJIHRvIGFsbG93IGVtYmVkZGVyIHRvIHNldCBhIHRpbWV6b25lIG92ZXJy
aWRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM4
ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGlu
c3BlY3Rvci9wcm90b2NvbC9QYWdlLmpzb246IEFkZCBzZXRUaW1lWm9uZSBBUEkgYWxsb3dpbmcg
dG8gb3ZlcnJpZGUgdGhlIHBhZ2UgdGltZXpvbmUuCisgICAgICAgICogcnVudGltZS9EYXRlQ29u
dmVyc2lvbi5jcHA6CisgICAgICAgIChKU0M6OmZvcm1hdERhdGVUaW1lKTogRm9ybWF0IHRoZSBv
dmVycmlkZGVuIHRpbWV6b25lIGlmIGl0J3MgZW5hYmxlZC4KKyAgICAgICAgKiBydW50aW1lL0lu
dGxEYXRlVGltZUZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6OmRlZmF1bHRUaW1lWm9uZSk6IFJl
dHVybiB0aGUgb3ZlcnJpZGRlbiB0aW1lem9uZSBpZiBpdCdzIGVuYWJsZWQuCisKIDIwMjAtMDct
MDcgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBC
eXRlY29kZUdlbmVyYXRvciBzaG91bGQgYmUgcm9idXN0IGFnYWluc3QgZmFpbGVkIGNvbnN0YW50
IGdlbmVyYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKaW5kZXggM2I5ZjExMDg2MDBjYzMwZmUzMjI0ZTY3ZGI1MWFmMDg1MmExZjg0
ZC4uMmNkMjZjYzYwZDNiNTE3NzdmN2QwNDdkMDhlZGExZTIwNmIwY2QzYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxOSBAQAorMjAyMC0wNy0wMiAgUGhpbGlwcGUgTm9ybWFuZCAgPHBoaWxuQGlnYWxpYS5jb20+
IGFuZCBQYXZlbCBGZWxkbWFuIDxwYXZlbC5mZWxkbWFuQGdtYWlsLmNvbT4KKworICAgICAgICBb
V0syXSBBZGQgQVBJIHRvIGFsbG93IGVtYmVkZGVyIHRvIHNldCBhIHRpbWV6b25lIG92ZXJyaWRl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM4ODQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9E
YXRlTWF0aC5jcHA6IEFkZCBuZXcgQVBJcyB0byBjb250cm9sIGFuZCBxdWVyeSB0aGUgdGltZXpv
bmUgb3ZlcnJpZGUuCisgICAgICAgIChXVEY6OmlubmVyVGltZVpvbmVPdmVycmlkZSk6IFN0YXRp
YyBzdG9yYWdlIG9mIHRoZSBvdmVycmlkZSBpbmZvcm1hdGlvbnMuCisgICAgICAgIChXVEY6OmNh
bGN1bGF0ZUxvY2FsVGltZU9mZnNldCk6IENhbGN1bGF0ZSBvZmZzZXQgZm9yIG92ZXJyaWRkZW4g
dGltZXpvbmUsIGlmIGl0J3MgcHJlc2VudC4KKyAgICAgICAgKFdURjo6c2V0VGltZVpvbmVPdmVy
cmlkZSk6IE5ldyBBUEkgdG8gc2V0IHRoZSB0aW1lem9uZSBvdmVycmlkZSwgdGhpcyBpcyBtZWFu
dCB0byBiZQorICAgICAgICB1c2VkIGJ5IHRoZSBXZWJJbnNwZWN0b3IgUGFnZSBhZ2VudC4KKyAg
ICAgICAgKFdURjo6dGltZVpvbmVPdmVycmlkZSk6IFF1ZXJ5IHRoZSB0aW1lem9uZSBvdmVycmlk
ZS4KKyAgICAgICAgKFdURjo6dGltZVpvbmVEaXNwbGF5TmFtZU92ZXJyaWRlKTogR2V0IHRoZSB0
aW1lem9uZSBuYW1lIG9mIHRoZSBvdmVycmlkZGVuIHRpbWV6b25lLgorICAgICAgICAqIHd0Zi9E
YXRlTWF0aC5oOgorCiAyMDIwLTA3LTA3ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFA
aWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBXZWJQcm9jZXNzIGhhbmdzIHdoZW4gYnJvd3Np
bmcgR2l0SHViCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDVjOTM4OWFlYTcwOGRiMTQ3NjM5OWUxYTlmMWRlYWM1ZjRi
YjNkMjQuLjY0ZTVmMjQxMzQ5Y2IyYTU4NDcxYWQ4YjlhNzJmZGM5ZjljODZiYjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNTQgQEAKKzIwMjAtMDctMDggIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFu
ZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtXSzJdIEFkZCBBUEkgdG8gYWxsb3cgZW1iZWRkZXIg
dG8gc2V0IGEgdGltZXpvbmUgb3ZlcnJpZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMzg4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkczoKKworICAgICAgICAtIG5ldyBDb2Nv
YSBBUEkKKyAgICAgICAgLSBuZXcgR2xpYiBBUEkgKHRhcmdldHRpbmcgYm90aCBXUEUgYW5kIEdU
SyBwb3J0cykKKyAgICAgICAgLSBuZXcgQyBBUEkgKGZvciB0aGUgd2luIHBvcnQpCisKKyAgICAg
ICAgdGhhdCBhbGxvd3MgdGhlIGVtYmVkZGVyIHRvIHNldCBhIHRpbWV6b25lIG92ZXJyaWRlIGZv
ciB0aGUgV2ViVmlld0NvbmZpZ3VyYXRpb24uIFNpbmNlIHRoaXMKKyAgICAgICAgQVBJIGlzIG5v
dCBleHBvc2VkIGluIGdsaWIgcG9ydHMsIGEgbmV3IGNvbnRydWN0LXRpbWUtb25seSBwcm9wZXJ0
eSB3YXMgYWRkZWQgdG8gdGhlCisgICAgICAgIFdlYktpdFdlYlZpZXcgQVBJLiBJdCB3b3VsZCBh
bHNvIGFsbG93IGZpbmUtZ3JhaW5lZCBjb250cm9sIG92ZXIgbXVsdGlwbGUgcGFnZXMsIGZvcgor
ICAgICAgICBpbnN0YW5jZSBpdCdzIG5vdCBwb3NzaWJsZSBjdXJyZW50bHkgdG8gaGF2ZSB0d28g
cGFnZXMgaW4gZGlmZmVyZW50IHRpbWV6b25lcy4KKworICAgICAgICAqIFNoYXJlZC9XZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRp
b24uY3BwOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6Y29weSBjb25zdCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAo
QVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6c2V0VGltZVpvbmVPdmVycmlkZSk6CisgICAgICAgIChB
UEk6OlBhZ2VDb25maWd1cmF0aW9uOjp0aW1lWm9uZU92ZXJyaWRlIGNvbnN0KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW06CisgICAgICAg
ICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3RpbWVab25lT3ZlcnJpZGVdKToKKyAgICAgICAg
KC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfc2V0VGltZVpvbmVPdmVycmlkZTpdKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwOgorICAg
ICAgICAod2Via2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICh3ZWJraXRXZWJW
aWV3U2V0UHJvcGVydHkpOgorICAgICAgICAod2Via2l0V2ViVmlld0dldFByb3BlcnR5KToKKyAg
ICAgICAgKHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdF93ZWJf
dmlld19nZXRfdGltZV96b25lX292ZXJyaWRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlld0d0ay5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfcmVsYXRlZF92
aWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNl
Y3Rpb25zLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlld1dQRS5jcHA6CisgICAg
ICAgICh3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfcmVsYXRlZF92aWV3KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlvbnMudHh0OgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmNyZWF0aW9uUGFyYW1ldGVycyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwOgorICAgICAgICAoV2ViS2l0OjptX2xpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERv
bWFpbnMpOgorCiAyMDIwLTA3LTA4ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlh
LmNvbT4KIAogICAgICAgICBbV1BFXVtRdF0gRGVwcmVjYXRpb24gd2FybmluZ3MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb252ZXJzaW9uLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb252ZXJzaW9uLmNwcAppbmRleCA5NTU3
NTZiYTQwNWY0MDA5NzA2MTBmOWE2OGM3ZWQ0MmE2N2NiMDE1Li4zNjFlNjkzOTc5NDk5MTFlNmVl
MDMzMWE1MGQ0MTdlOTJhZjcxNzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9EYXRlQ29udmVyc2lvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwCkBAIC0xMDAsMTcgKzEwMCwyMyBAQCBTdHJpbmcgZm9y
bWF0RGF0ZVRpbWUoY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUmIHQsIERhdGVUaW1lRm9ybWF0IGZv
cm1hdCwgYm9vbCBhcwogICAgICAgICAgICAgYXBwZW5kTnVtYmVyPDI+KGJ1aWxkZXIsIG9mZnNl
dCAvIDYwKTsKICAgICAgICAgICAgIGFwcGVuZE51bWJlcjwyPihidWlsZGVyLCBvZmZzZXQgJSA2
MCk7CiAKKyAgICAgICAgICAgIFN0cmluZyB0aW1lWm9uZU5hbWU7CisgICAgICAgICAgICBpZiAo
IVdURjo6dGltZVpvbmVEaXNwbGF5TmFtZU92ZXJyaWRlKCkuaXNFbXB0eSgpKQorICAgICAgICAg
ICAgICAgIHRpbWVab25lTmFtZSA9IFdURjo6dGltZVpvbmVEaXNwbGF5TmFtZU92ZXJyaWRlKCk7
CisgICAgICAgICAgICBlbHNlIHsKICNpZiBPUyhXSU5ET1dTKQotICAgICAgICAgICAgVElNRV9a
T05FX0lORk9STUFUSU9OIHRpbWVab25lSW5mb3JtYXRpb247Ci0gICAgICAgICAgICBHZXRUaW1l
Wm9uZUluZm9ybWF0aW9uKCZ0aW1lWm9uZUluZm9ybWF0aW9uKTsKLSAgICAgICAgICAgIGNvbnN0
IFdDSEFSKiB3aW5UaW1lWm9uZU5hbWUgPSB0LmlzRFNUKCkgPyB0aW1lWm9uZUluZm9ybWF0aW9u
LkRheWxpZ2h0TmFtZSA6IHRpbWVab25lSW5mb3JtYXRpb24uU3RhbmRhcmROYW1lOwotICAgICAg
ICAgICAgU3RyaW5nIHRpbWVab25lTmFtZSh3aW5UaW1lWm9uZU5hbWUpOworICAgICAgICAgICAg
ICAgIFRJTUVfWk9ORV9JTkZPUk1BVElPTiB0aW1lWm9uZUluZm9ybWF0aW9uOworICAgICAgICAg
ICAgICAgIEdldFRpbWVab25lSW5mb3JtYXRpb24oJnRpbWVab25lSW5mb3JtYXRpb24pOworICAg
ICAgICAgICAgICAgIGNvbnN0IFdDSEFSKiB3aW5UaW1lWm9uZU5hbWUgPSB0LmlzRFNUKCkgPyB0
aW1lWm9uZUluZm9ybWF0aW9uLkRheWxpZ2h0TmFtZSA6IHRpbWVab25lSW5mb3JtYXRpb24uU3Rh
bmRhcmROYW1lOworICAgICAgICAgICAgICAgIHRpbWVab25lTmFtZSA9IFN0cmluZyh3aW5UaW1l
Wm9uZU5hbWUpOwogI2Vsc2UKLSAgICAgICAgICAgIHN0cnVjdCB0bSBndG0gPSB0OwotICAgICAg
ICAgICAgY2hhciB0aW1lWm9uZU5hbWVbNzBdOwotICAgICAgICAgICAgc3RyZnRpbWUodGltZVpv
bmVOYW1lLCBzaXplb2YodGltZVpvbmVOYW1lKSwgIiVaIiwgJmd0bSk7CisgICAgICAgICAgICAg
ICAgc3RydWN0IHRtIGd0bSA9IHQ7CisgICAgICAgICAgICAgICAgY2hhciB0ek5hbWVbNzBdOwor
ICAgICAgICAgICAgICAgIHN0cmZ0aW1lKHR6TmFtZSwgc2l6ZW9mKHR6TmFtZSksICIlWiIsICZn
dG0pOworICAgICAgICAgICAgICAgIHRpbWVab25lTmFtZSA9IFN0cmluZyh0ek5hbWUpOwogI2Vu
ZGlmCi0gICAgICAgICAgICBpZiAodGltZVpvbmVOYW1lWzBdKSB7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBpZiAoIXRpbWVab25lTmFtZS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiAoIik7CiAgICAgICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmQodGltZVpvbmVOYW1lKTsKICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnKScp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1l
Rm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZv
cm1hdC5jcHAKaW5kZXggN2RmYmMzNjdjZjRmYjQyOThhZGY2MTFkMTJjNmFlMmY0Njc2MTM4NS4u
NWJjM2U1YWU1YTc5MzI3NDA4MDJiZmEyNWY2ZDcwMTcyNGQ5MjMwZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCkBAIC0z
NCw2ICszNCw3IEBACiAjaW5jbHVkZSA8dW5pY29kZS91Y2FsLmg+CiAjaW5jbHVkZSA8dW5pY29k
ZS91ZGF0cGcuaD4KICNpbmNsdWRlIDx1bmljb2RlL3VlbnVtLmg+CisjaW5jbHVkZSA8d3RmL0Rh
dGVNYXRoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUg
PHd0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmg+CiAKQEAgLTEwMiw2ICsxMDMsMTAgQEAgc3Rh
dGljIEFMV0FZU19JTkxJTkUgYm9vbCBpc1VUQ0VxdWl2YWxlbnQoU3RyaW5nVmlldyB0aW1lWm9u
ZSkKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtZGVmYXVsdHRpbWV6b25lCiBzdGF0
aWMgU3RyaW5nIGRlZmF1bHRUaW1lWm9uZSgpCiB7CisgICAgU3RyaW5nIHR6ID0gV1RGOjp0aW1l
Wm9uZU92ZXJyaWRlKCk7CisgICAgaWYgKCF0ei5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB0
ejsKKwogICAgIFN0cmluZyBjYW5vbmljYWw7CiAKICAgICBWZWN0b3I8VUNoYXIsIDMyPiBidWZm
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi9EYXRlTWF0aC5jcHAKaW5kZXggYWY5MmY2NzQ3NzAzNDljYzhlN2JlOWE1M2IxY2VlNmU3
ODQwZTc4MS4uMTIyMmJiNTI2MGIzNTFmMDVmNWJkODM2ZGNlMTRlNmRjOTFmNzlmMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvRGF0ZU1hdGguY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Rh
dGVNYXRoLmNwcApAQCAtNzYsOSArNzYsMTQgQEAKICNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVk
ZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8dGltZS5oPgorI2luY2x1ZGUgPHVuaWNvZGUvdWNhbC5o
PgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUu
aD4KKyNpbmNsdWRlIDx3dGYvTGFuZ3VhZ2UuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU3BlY2lmaWMuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3VuaWNvZGUvVVRGOENvbnZlcnNpb24u
aD4KIAogI2lmIE9TKFdJTkRPV1MpCiAjaW5jbHVkZSA8d2luZG93cy5oPgpAQCAtOTIsNiArOTcs
MTggQEAgdGVtcGxhdGU8dW5zaWduZWQgbGVuZ3RoPiBpbmxpbmUgYm9vbCBzdGFydHNXaXRoTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IGMKICAgICByZXR1cm4gZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCBsb3dlcmNhc2VMZXR0ZXJzLCBsZW5ndGggLSAxKTsKIH0K
IAorc3RydWN0IFRpbWVab25lT3ZlcnJpZGUgeworICAgIFVDYWxlbmRhciogY2FsOworICAgIFN0
cmluZyBpZDsKKyAgICBTdHJpbmcgZGlzcGxheU5hbWU7Cit9OworCitzdGF0aWMgVGltZVpvbmVP
dmVycmlkZSYgaW5uZXJUaW1lWm9uZU92ZXJyaWRlKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8VGltZVpvbmVPdmVycmlkZT4gdGltZVpvbmVPdmVycmlkZTsKKyAgICByZXR1cm4gdGlt
ZVpvbmVPdmVycmlkZTsKK30KKwogLyogQ29uc3RhbnRzICovCiAKIGNvbnN0IGNoYXIqIGNvbnN0
IHdlZWtkYXlOYW1lWzddID0geyAiTW9uIiwgIlR1ZSIsICJXZWQiLCAiVGh1IiwgIkZyaSIsICJT
YXQiLCAiU3VuIiB9OwpAQCAtMzE4LDYgKzMzNSwxNCBAQCBzdGF0aWMgZG91YmxlIGNhbGN1bGF0
ZURTVE9mZnNldCh0aW1lX3QgbG9jYWxUaW1lLCBkb3VibGUgdXRjT2Zmc2V0KQogLy8gUmV0dXJu
cyBjb21iaW5lZCBvZmZzZXQgaW4gbWlsbGlzZWNvbmQgKFVUQyArIERTVCkuCiBMb2NhbFRpbWVP
ZmZzZXQgY2FsY3VsYXRlTG9jYWxUaW1lT2Zmc2V0KGRvdWJsZSBtcywgVGltZVR5cGUgaW5wdXRU
aW1lVHlwZSkKIHsKKyAgICBhdXRvJiB0eiA9IGlubmVyVGltZVpvbmVPdmVycmlkZSgpOworICAg
IGlmICh0ei5jYWwpIHsKKyAgICAgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7
CisgICAgICAgIHVjYWxfc2V0TWlsbGlzKHR6LmNhbCwgbXMsICZzdGF0dXMpOworICAgICAgICBp
bnQzMl90IG9mZnNldCA9IHVjYWxfZ2V0KHR6LmNhbCwgVUNBTF9aT05FX09GRlNFVCwgJnN0YXR1
cyk7CisgICAgICAgIGludDMyX3QgZHN0T2Zmc2V0ID0gdWNhbF9nZXQodHouY2FsLCBVQ0FMX0RT
VF9PRkZTRVQsICZzdGF0dXMpOworICAgICAgICByZXR1cm4gTG9jYWxUaW1lT2Zmc2V0KGRzdE9m
ZnNldCwgb2Zmc2V0ICsgZHN0T2Zmc2V0KTsKKyAgICB9CiAjaWYgSEFWRShUTV9HTVRPRkYpCiAg
ICAgZG91YmxlIGxvY2FsVG9VVENUaW1lT2Zmc2V0ID0gaW5wdXRUaW1lVHlwZSA9PSBMb2NhbFRp
bWUgPyBjYWxjdWxhdGVVVENPZmZzZXQoKSA6IDA7CiAjZWxzZQpAQCAtMTAxOSw0ICsxMDQ0LDY2
IEBAIFN0cmluZyBtYWtlUkZDMjgyMkRhdGVTdHJpbmcodW5zaWduZWQgZGF5T2ZXZWVrLCB1bnNp
Z25lZCBkYXksIHVuc2lnbmVkIG1vbnRoLCB1CiAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9T
dHJpbmcoKTsKIH0KIAorYm9vbCBzZXRUaW1lWm9uZU92ZXJyaWRlKGNvbnN0IFN0cmluZyYgdGlt
ZVpvbmUpCit7CisgICAgaW5uZXJUaW1lWm9uZU92ZXJyaWRlKCkuZGlzcGxheU5hbWUgPSBTdHJp
bmcoKTsKKyAgICBpZiAoaW5uZXJUaW1lWm9uZU92ZXJyaWRlKCkuY2FsKSB7CisgICAgICAgIHVj
YWxfY2xvc2UoaW5uZXJUaW1lWm9uZU92ZXJyaWRlKCkuY2FsKTsKKyAgICAgICAgaW5uZXJUaW1l
Wm9uZU92ZXJyaWRlKCkuY2FsID0gbnVsbHB0cjsKKyAgICB9CisKKyAgICBpZiAodGltZVpvbmUu
aXNFbXB0eSgpKSB7CisgICAgICAgIGlubmVyVGltZVpvbmVPdmVycmlkZSgpLmlkID0gU3RyaW5n
KCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8vIFRpbWV6b25lIGlzIGFz
Y2lpLgorICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyKHRpbWVab25lLmxlbmd0aCgpKTsKKyAgICBV
Q2hhciogYnVmZmVyU3RhcnQgPSBidWZmZXIuZGF0YSgpOworICAgIENTdHJpbmcgY3R6ID0gdGlt
ZVpvbmUudXRmOCgpOworICAgIGlmICghVW5pY29kZTo6Y29udmVydFVURjhUb1VURjE2KGN0ei5k
YXRhKCksIGN0ei5kYXRhKCkgKyBjdHoubGVuZ3RoKCksICZidWZmZXJTdGFydCwgYnVmZmVyU3Rh
cnQgKyB0aW1lWm9uZS5sZW5ndGgoKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFZl
Y3RvcjxVQ2hhciwgMzI+IGNhbm9uaWNhbEJ1ZmZlcigzMik7CisgICAgVUVycm9yQ29kZSBzdGF0
dXMgPSBVX1pFUk9fRVJST1I7CisgICAgYXV0byBjYW5vbmljYWxMZW5ndGggPSB1Y2FsX2dldENh
bm9uaWNhbFRpbWVab25lSUQoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSwgY2Fub25pY2Fs
QnVmZmVyLmRhdGEoKSwgY2Fub25pY2FsQnVmZmVyLnNpemUoKSwgbnVsbHB0ciwgJnN0YXR1cyk7
CisgICAgaWYgKHN0YXR1cyA9PSBVX0JVRkZFUl9PVkVSRkxPV19FUlJPUikgeworICAgICAgICBz
dGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgICAgIGNhbm9uaWNhbEJ1ZmZlci5ncm93KGNhbm9u
aWNhbExlbmd0aCk7CisgICAgICAgIHVjYWxfZ2V0Q2Fub25pY2FsVGltZVpvbmVJRChidWZmZXIu
ZGF0YSgpLCBidWZmZXIuc2l6ZSgpLCBjYW5vbmljYWxCdWZmZXIuZGF0YSgpLCBjYW5vbmljYWxM
ZW5ndGgsIG51bGxwdHIsICZzdGF0dXMpOworICAgIH0KKyAgICBpZiAoIVVfU1VDQ0VTUyhzdGF0
dXMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBVQ2FsZW5kYXIqIGNhbCA9IHVjYWxf
b3BlbihjYW5vbmljYWxCdWZmZXIuZGF0YSgpLCBjYW5vbmljYWxMZW5ndGgsIG51bGxwdHIsIFVD
QUxfVFJBRElUSU9OQUwsICZzdGF0dXMpOworICAgIGlmICghVV9TVUNDRVNTKHN0YXR1cykpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFZlY3RvcjxVQ2hhciwgMzI+IGRpc3BsYXlOYW1l
QnVmZmVyKDMyKTsKKyAgICBhdXRvIGRpc3BsYXlOYW1lTGVuZ3RoID0gdWNhbF9nZXRUaW1lWm9u
ZURpc3BsYXlOYW1lKGNhbCwgVUNBTF9TVEFOREFSRCwgZGVmYXVsdExhbmd1YWdlKCkudXRmOCgp
LmRhdGEoKSwgZGlzcGxheU5hbWVCdWZmZXIuZGF0YSgpLCBkaXNwbGF5TmFtZUJ1ZmZlci5zaXpl
KCksICZzdGF0dXMpOworICAgIGlmIChzdGF0dXMgPT0gVV9CVUZGRVJfT1ZFUkZMT1dfRVJST1Ip
IHsKKyAgICAgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgICAgICBkaXNwbGF5TmFtZUJ1
ZmZlci5ncm93KGRpc3BsYXlOYW1lTGVuZ3RoKTsKKyAgICAgICAgdWNhbF9nZXRUaW1lWm9uZURp
c3BsYXlOYW1lKGNhbCwgVUNBTF9TVEFOREFSRCwgZGVmYXVsdExhbmd1YWdlKCkudXRmOCgpLmRh
dGEoKSwgZGlzcGxheU5hbWVCdWZmZXIuZGF0YSgpLCBkaXNwbGF5TmFtZUxlbmd0aCwgJnN0YXR1
cyk7CisgICAgfQorICAgIGlmICghVV9TVUNDRVNTKHN0YXR1cykpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGF1dG8mIHRpbWVab25lT3ZlcnJpZGUgPSBpbm5lclRpbWVab25lT3ZlcnJp
ZGUoKTsKKyAgICB0aW1lWm9uZU92ZXJyaWRlLmNhbCA9IGNhbDsKKyAgICB0aW1lWm9uZU92ZXJy
aWRlLmlkID0gU3RyaW5nKGNhbm9uaWNhbEJ1ZmZlci5kYXRhKCksIGNhbm9uaWNhbExlbmd0aCk7
CisgICAgdGltZVpvbmVPdmVycmlkZS5kaXNwbGF5TmFtZSA9IFN0cmluZyhkaXNwbGF5TmFtZUJ1
ZmZlci5kYXRhKCksIGRpc3BsYXlOYW1lTGVuZ3RoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
U3RyaW5nIHRpbWVab25lT3ZlcnJpZGUoKQoreworICAgIHJldHVybiBpbm5lclRpbWVab25lT3Zl
cnJpZGUoKS5pZDsKK30KKworU3RyaW5nIHRpbWVab25lRGlzcGxheU5hbWVPdmVycmlkZSgpCit7
CisgICAgcmV0dXJuIGlubmVyVGltZVpvbmVPdmVycmlkZSgpLmRpc3BsYXlOYW1lOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5oCmluZGV4IDI0NmJhNjdjNzY0YjYyOTA0MmE3OTI3
ZDI0ZmU4OWIwNDlkODJhMGIuLmIxM2ZjMWQ4NjBkYTU2MGViNTc3NWJiZGIwZmVjNGE3MjUyMmM2
YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvRGF0ZU1hdGguaApAQCAtMzg5LDYgKzM4OSwxMCBAQCBpbmxpbmUgaW50IGRheUluTW9u
dGhGcm9tRGF5SW5ZZWFyKGludCBkYXlJblllYXIsIGJvb2wgbGVhcFllYXIpCiAgICAgcmV0dXJu
IGQgLSBzdGVwOwogfQogCitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBzZXRUaW1lWm9uZU92ZXJy
aWRlKGNvbnN0IFN0cmluZyYpOworV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyB0aW1lWm9uZU92
ZXJyaWRlKCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHRpbWVab25lRGlzcGxheU5hbWVP
dmVycmlkZSgpOworCiAvLyBSZXR1cm5zIGNvbWJpbmVkIG9mZnNldCBpbiBtaWxsaXNlY29uZCAo
VVRDICsgRFNUKS4KIFdURl9FWFBPUlRfUFJJVkFURSBMb2NhbFRpbWVPZmZzZXQgY2FsY3VsYXRl
TG9jYWxUaW1lT2Zmc2V0KGRvdWJsZSB1dGNJbk1pbGxpc2Vjb25kcywgVGltZVR5cGUgPSBVVENU
aW1lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcAppbmRleCBhM2I2MTU2ZTFlYjIwNjk1YjE4MWIyYWFiNjQ0MDQwOGFjZTY1Zjhl
Li5kZTlhYTc3OGE1YTMyODI2MDBlMzA1N2VlYmVmOTNiNTlhZjVjZTA5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtMTYx
LDYgKzE2MSw4IEBAIHZvaWQgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICNpZiBQTEFURk9STShHVEspCiAgICAgZW5jb2RlciA8
PCB0aGVtZU5hbWU7CiAjZW5kaWYKKworICAgIGVuY29kZXIgPDwgdGltZVpvbmVPdmVycmlkZTsK
IH0KIAogT3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKQEAgLTUwOSw2ICs1MTEs
MTIgQEAgT3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2QKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKICNlbmRpZgogCisgICAgT3B0aW9uYWw8T3B0aW9uYWw8U3RyaW5nPj4gdGltZVpvbmVPdmVy
cmlkZTsKKyAgICBkZWNvZGVyID4+IHRpbWVab25lT3ZlcnJpZGU7CisgICAgaWYgKCF0aW1lWm9u
ZU92ZXJyaWRlKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHBhcmFtZXRlcnMu
dGltZVpvbmVPdmVycmlkZSA9IFdURk1vdmUoKnRpbWVab25lT3ZlcnJpZGUpOworCiAgICAgcmV0
dXJuIHBhcmFtZXRlcnM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCA2NjZiNTk0ZTU0Njk2ZjMyMjY1YWUyMDA4M2ExNGM4
YjE3ZjIxNWJkLi5iYTE2OGU3MTBlNDQ4MzE5MjYwZGVhMmY5YjVlNmJiNGQ4NDRhMDQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCkBA
IC0yMzQsNiArMjM0LDggQEAgc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogI2lm
IFBMQVRGT1JNKEdUSykKICAgICBTdHJpbmcgdGhlbWVOYW1lOwogI2VuZGlmCisKKyAgICBPcHRp
b25hbDxTdHJpbmc+IHRpbWVab25lT3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmln
dXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3Vy
YXRpb24uY3BwCmluZGV4IDQzMWZjZWY3ODZjOWI1YzMwMDQ3NmEzMTJhNDc4OGUwOTQwNDRlNDku
LjNmN2ZkZTNkMjYwYjI0ZmM2YzAzZTBhYjBjYjMzMzM1MWM4NGVkOTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcApAQCAt
OTgsNiArOTgsNyBAQCBSZWY8UGFnZUNvbmZpZ3VyYXRpb24+IFBhZ2VDb25maWd1cmF0aW9uOjpj
b3B5KCkgY29uc3QKICAgICBjb3B5LT5tX2xvYWRzU3VicmVzb3VyY2VzID0gdGhpcy0+bV9sb2Fk
c1N1YnJlc291cmNlczsKICAgICBjb3B5LT5tX2xvYWRzRnJvbU5ldHdvcmsgPSB0aGlzLT5tX2xv
YWRzRnJvbU5ldHdvcms7CiAgICAgY29weS0+bV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmRE
b21haW5zID0gdGhpcy0+bV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zOworICAg
IGNvcHktPm1fdGltZVpvbmVPdmVycmlkZSA9IHRoaXMtPm1fdGltZVpvbmVPdmVycmlkZTsKIAog
ICAgIHJldHVybiBjb3B5OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJUGFnZUNvbmZpZ3VyYXRpb24uaAppbmRleCAxMjA5YzM2ZThjZmRmMDM3NzQyOWM3YjE5NDdm
OWU2NWM5MmZmYmRlLi5mZTM3MzMzYWUzNTA0M2ZjODg5OTNlZjM1Mjk1ZWQ1M2M2ZDI3NGM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRp
b24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRp
b24uaApAQCAtMTYyLDcgKzE2MiwxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFNob3VsZFJl
bGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKFdlYkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nIHZhbHVlKSB7IG1fc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmcgPSB2YWx1ZTsgfQogICAgIFdlYkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9zaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZzsgfQotICAgIAorCisg
ICAgdm9pZCBzZXRUaW1lWm9uZU92ZXJyaWRlKGNvbnN0IFdURjo6U3RyaW5nJiB0aW1lWm9uZU92
ZXJyaWRlKSB7IG1fdGltZVpvbmVPdmVycmlkZSA9IHRpbWVab25lT3ZlcnJpZGU7IH0KKyAgICBj
b25zdCBXVEY6OlN0cmluZyB0aW1lWm9uZU92ZXJyaWRlKCkgY29uc3QgeyByZXR1cm4gbV90aW1l
Wm9uZU92ZXJyaWRlOyB9CisKIHByaXZhdGU6CiAKICAgICBSZWZQdHI8V2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbD4gbV9wcm9jZXNzUG9vbDsKQEAgLTIwNyw2ICsyMTAsOCBAQCBwcml2YXRlOgogICAg
IGJvb2wgbV9sb2Fkc0Zyb21OZXR3b3JrIHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9saW1pdHNOYXZp
Z2F0aW9uc1RvQXBwQm91bmREb21haW5zIHsgZmFsc2UgfTsKICAgICBXZWJDb3JlOjpTaG91bGRS
ZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBtX3Nob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nIHsgV2ViQ29yZTo6U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc6
Ok5vIH07CisKKyAgICBXVEY6OlN0cmluZyBtX3RpbWVab25lT3ZlcnJpZGU7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KaW5kZXggYmVmMWUyNWEzOTgzYzgx
MjlmYjliZmY3ZjJjZTBkY2U2NzViNjFlZi4uNzQ5NDNhNDUyYTU4MWFiNDBhZGI3ZDkwODMyYmRj
ODBhZjU4NzdlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KQEAgLTEyODEsNiArMTI4MSwxNiBA
QCBzdGF0aWMgX1dLV2ViVmlld0NhdGVnb3J5IHRvV0tXZWJWaWV3Q2F0ZWdvcnkoV2ViS2l0OjpX
ZWJWaWV3Q2F0ZWdvcnkgY2F0ZWdvcnkpCiAgICAgX3BhZ2VDb25maWd1cmF0aW9uLT5zZXRQcm9j
ZXNzRGlzcGxheU5hbWUobHNEaXNwbGF5TmFtZSk7CiB9CiAKKy0gKE5TU3RyaW5nICopX3RpbWVa
b25lT3ZlcnJpZGUKK3sKKyAgICByZXR1cm4gX3BhZ2VDb25maWd1cmF0aW9uLT50aW1lWm9uZU92
ZXJyaWRlKCk7Cit9CisKKy0gKHZvaWQpX3NldFRpbWVab25lT3ZlcnJpZGU6KE5TU3RyaW5nICop
dGltZVpvbmUKK3sKKyAgICBfcGFnZUNvbmZpZ3VyYXRpb24tPnNldFRpbWVab25lT3ZlcnJpZGUo
dGltZVpvbmUpOworfQorCiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXdDb25maWd1
cmF0aW9uIChXS0RlcHJlY2F0ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oCmlu
ZGV4IDQ3OGFmYjBlNWFmNmJiODhhODFkOTlmNzVlNTJmOGFkMzI1OGVlMGYuLjVlODk3YTNmMDZl
YjkyMzBkMDk2ZDZiYWQxMzNmYzkwYWQwMjUzNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9u
UHJpdmF0ZS5oCkBAIC0xMjgsNSArMTI4LDYgQEAgdHlwZWRlZiBOU19FTlVNKE5TVUludGVnZXIs
IF9XS1dlYlZpZXdDYXRlZ29yeSkgewogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0
SWdub3Jlc0FwcEJvdW5kRG9tYWluczopIEJPT0wgX2lnbm9yZXNBcHBCb3VuZERvbWFpbnMgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nOikgQk9PTCBfc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIEBwcm9wZXJ0
eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFByb2Nlc3NEaXNwbGF5TmFtZTopIE5TU3RyaW5nICpf
cHJvY2Vzc0Rpc3BsYXlOYW1lIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlv
cyhXS19JT1NfVEJBKSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRUaW1lWm9u
ZU92ZXJyaWRlOikgTlNTdHJpbmcgKl90aW1lWm9uZU92ZXJyaWRlIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKIEBlbmQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKaW5k
ZXggMzAwYTBiZTEyMDk5NmMyNWUzNTdiNGJhNDIzNDk1MTM1ZjlhMmZlMC4uNDkyNWNkOWJmZThl
MDgzYzEyNGRhYjRjZTU1NWZkMzZmMzE5ZWU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTE5MTAsNiArMTkx
MCw3IEBAIHZvaWQgd2Via2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KFdlYktpdFdl
YkNvbnRleHQqIGNvbnRleHQsIFdlYktpdFdlYlZpCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNl
dFJlbGF0ZWRQYWdlKHJlbGF0ZWRWaWV3ID8gJndlYmtpdFdlYlZpZXdHZXRQYWdlKHJlbGF0ZWRW
aWV3KSA6IG51bGxwdHIpOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRVc2VyQ29udGVudENv
bnRyb2xsZXIodXNlckNvbnRlbnRNYW5hZ2VyID8gd2Via2l0VXNlckNvbnRlbnRNYW5hZ2VyR2V0
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkodXNlckNvbnRlbnRNYW5hZ2VyKSA6IG51bGxwdHIp
OwogICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRDb250cm9sbGVkQnlBdXRvbWF0aW9uKHdlYmtp
dF93ZWJfdmlld19pc19jb250cm9sbGVkX2J5X2F1dG9tYXRpb24od2ViVmlldykpOworICAgIHBh
Z2VDb25maWd1cmF0aW9uLT5zZXRUaW1lWm9uZU92ZXJyaWRlKHdlYmtpdF93ZWJfdmlld19nZXRf
dGltZV96b25lX292ZXJyaWRlKHdlYlZpZXcpKTsKIAogICAgIFdlYktpdFdlYnNpdGVEYXRhTWFu
YWdlciogbWFuYWdlciA9IHdlYmtpdFdlYlZpZXdHZXRXZWJzaXRlRGF0YU1hbmFnZXIod2ViVmll
dyk7CiAgICAgaWYgKCFtYW5hZ2VyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCBjYWY4ZWZlODgxZjYzMzM3MjYwNzEwMGU4
ZDUxYjIyZGIxNjA3Y2U4Li41MTM3ODc4ZmM5ZDA5ZWQ2NzE4OWFjMjk5NjE5NjBlMzUxMDIxMjdk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJW
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJW
aWV3LmNwcApAQCAtMjAzLDcgKzIwMyw4IEBAIGVudW0gewogICAgIFBST1BfRURJVEFCTEUsCiAg
ICAgUFJPUF9QQUdFX0lELAogICAgIFBST1BfSVNfTVVURUQsCi0gICAgUFJPUF9XRUJTSVRFX1BP
TElDSUVTCisgICAgUFJPUF9XRUJTSVRFX1BPTElDSUVTLAorICAgIFBST1BfVElNRV9aT05FX09W
RVJSSURFCiB9OwogCiB0eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIEdSZWZQdHI8V2ViS2l0V2Vi
UmVzb3VyY2U+ID4gTG9hZGluZ1Jlc291cmNlc01hcDsKQEAgLTMwNiw2ICszMDcsOCBAQCBzdHJ1
Y3QgX1dlYktpdFdlYlZpZXdQcml2YXRlIHsKIAogICAgIEdSZWZQdHI8V2ViS2l0V2Vic2l0ZURh
dGFNYW5hZ2VyPiB3ZWJzaXRlRGF0YU1hbmFnZXI7CiAgICAgR1JlZlB0cjxXZWJLaXRXZWJzaXRl
UG9saWNpZXM+IHdlYnNpdGVQb2xpY2llczsKKworICAgIENTdHJpbmcgdGltZVpvbmVPdmVycmlk
ZTsKIH07CiAKIHN0YXRpYyBndWludCBzaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwgfTsKQEAg
LTg0OCw2ICs4NTEsOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3U2V0UHJvcGVydHkoR09i
amVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIGNvbnN0IEdWYWx1ZQogICAgIGNhc2UgUFJPUF9X
RUJTSVRFX1BPTElDSUVTOgogICAgICAgICB3ZWJWaWV3LT5wcml2LT53ZWJzaXRlUG9saWNpZXMg
PSBzdGF0aWNfY2FzdDxXZWJLaXRXZWJzaXRlUG9saWNpZXMqPihnX3ZhbHVlX2dldF9vYmplY3Qo
dmFsdWUpKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1RJTUVfWk9ORV9PVkVSUklE
RToKKyAgICAgICAgd2ViVmlldy0+cHJpdi0+dGltZVpvbmVPdmVycmlkZSA9IGdfdmFsdWVfZ2V0
X3N0cmluZyh2YWx1ZSk7CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEdf
T0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJZCwgcGFyYW1TcGVj
KTsKICAgICB9CkBAIC05MTYsNiArOTIyLDkgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0dl
dFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBHVmFsdWUqIHZhbHUKICAg
ICBjYXNlIFBST1BfV0VCU0lURV9QT0xJQ0lFUzoKICAgICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0
KHZhbHVlLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfcG9saWNpZXMod2ViVmlldykpOwog
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfVElNRV9aT05FX09WRVJSSURFOgorICAgICAg
ICBnX3ZhbHVlX3NldF9zdHJpbmcodmFsdWUsIHdlYmtpdF93ZWJfdmlld19nZXRfdGltZV96b25l
X292ZXJyaWRlKHdlYlZpZXcpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAg
ICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElkLCBwYXJh
bVNwZWMpOwogICAgIH0KQEAgLTEzMjAsNiArMTMyOSwyMyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRf
d2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAg
ICAgICAgICAgIFdFQktJVF9UWVBFX1dFQlNJVEVfUE9MSUNJRVMsCiAgICAgICAgICAgICBzdGF0
aWNfY2FzdDxHUGFyYW1GbGFncz4oV0VCS0lUX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09O
U1RSVUNUX09OTFkpKSk7CiAKKyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJWaWV3Ojp0aW1lLXpv
bmUtb3ZlcnJpZGU6CisgICAgICoKKyAgICAgKiBUaGUgdGltZXpvbmUgb3ZlcnJpZGUgZm9yIHRo
aXMgd2ViLXZpZXcuCisgICAgICoKKyAgICAgKiBTaW5jZTogMi4zMAorICAgICAqLworICAgIGdf
b2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCisgICAgICAgIGdPYmplY3RDbGFzcywKKyAg
ICAgICAgUFJPUF9USU1FX1pPTkVfT1ZFUlJJREUsCisgICAgICAgIGdfcGFyYW1fc3BlY19zdHJp
bmcoCisgICAgICAgICAgICAidGltZS16b25lLW92ZXJyaWRlIiwKKyAgICAgICAgICAgIF8oIlRp
bWUgWm9uZSBPdmVycmlkZSIpLAorICAgICAgICAgICAgXygiVGhlIHRpbWUgem9uZSB0byB1c2Ug
aW5zdGVhZCBvZiB0aGUgc3lzdGVtIG9uZSIpLAorICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAg
ICAgICAgIHN0YXRpY19jYXN0PEdQYXJhbUZsYWdzPihXRUJLSVRfUEFSQU1fUkVBRFdSSVRFIHwg
R19QQVJBTV9DT05TVFJVQ1RfT05MWSkpKTsKKwogICAgIC8qKgogICAgICAqIFdlYktpdFdlYlZp
ZXc6OmxvYWQtY2hhbmdlZDoKICAgICAgKiBAd2ViX3ZpZXc6IHRoZSAjV2ViS2l0V2ViVmlldyBv
biB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKQEAgLTQ2OTksMyArNDcyNSwyMSBAQCBXZWJL
aXRXZWJzaXRlUG9saWNpZXMqIHdlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9wb2xpY2llcyhX
ZWJLaXRXZWJWaWV3KiB3ZWJWaQogCiAgICAgcmV0dXJuIHdlYlZpZXctPnByaXYtPndlYnNpdGVQ
b2xpY2llcy5nZXQoKTsKIH0KKworLyoqCisgKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3RpbWVfem9u
ZV9vdmVycmlkZToKKyAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldworICoKKyAqIEdldCB0
aGUgI1dlYktpdFdlYlZpZXc6dGltZS16b25lLW92ZXJyaWRlIHByb3BlcnR5LgorICoKKyAqIFJl
dHVybnM6IChhbGxvdy1ub25lKTogdGhlIHRpbWUgem9uZSBmb3IgV2ViVmlldywgb3IgJU5VTEwg
aWYgI1dlYktpdFdlYlZpZXc6dGltZS16b25lLW92ZXJyaWRlCisgKiB3YXMgbm90IHNldC4KKyAq
CisgKiBTaW5jZTogMi4zMAorICovCitjb25zdCBnY2hhciogd2Via2l0X3dlYl92aWV3X2dldF90
aW1lX3pvbmVfb3ZlcnJpZGUoV2ViS2l0V2ViVmlldyogd2ViVmlldykKK3sKKyAgICBnX3JldHVy
bl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldyksIG51bGxwdHIpOworCisg
ICAgcmV0dXJuIHdlYlZpZXctPnByaXYtPnRpbWVab25lT3ZlcnJpZGUuZGF0YSgpOworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaAppbmRleCBh
YzUxNjgzYjY3NWQ1YTk4YjY2NTUzMjNmOWE1MWM0OWU3NjIzYTFlLi4wMTg5NGMxY2Q0ZWMxN2Zh
YTQwNTJlMGM3ZWUzNmNhMzBhNTNiZWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaApAQCAtNTg5LDYgKzU4OSw4IEBAIHdlYmtpdF93ZWJf
dmlld19nZXRfaW5wdXRfbWV0aG9kX2NvbnRleHQgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcK
IFdFQktJVF9BUEkgV2ViS2l0V2Vic2l0ZVBvbGljaWVzICoKIHdlYmtpdF93ZWJfdmlld19nZXRf
d2Vic2l0ZV9wb2xpY2llcyAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAg
ICAgKndlYl92aWV3KTsKIAorV0VCS0lUX0FQSSBjb25zdCBnY2hhciAqCit3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X3RpbWVfem9uZV9vdmVycmlkZSAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAg
ICAgICAgICAgICp3ZWJfdmlldyk7CiAKIEdfRU5EX0RFQ0xTCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0d0ay5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdHdGsuY3BwCmluZGV4IDliOTky
NzViMjRlZmM0YWNjN2FmMDE1NTBjMWVmM2Y3NzhlMDRlMTUuLjRjNGE0MzA3NDIwMjk0Zjk1MTFm
YzRlMWMyZWJmMWI4MGUwZWZiZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlld0d0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3R3RrLmNwcApAQCAtMzUzLDYgKzM1Myw3IEBAIEd0a1dp
ZGdldCogd2Via2l0X3dlYl92aWV3X25ld193aXRoX3JlbGF0ZWRfdmlldyhXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3KQogICAgICAgICAic2V0dGluZ3MiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRp
bmdzKHdlYlZpZXcpLAogICAgICAgICAicmVsYXRlZC12aWV3Iiwgd2ViVmlldywKICAgICAgICAg
IndlYnNpdGUtcG9saWNpZXMiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfcG9saWNpZXMo
d2ViVmlldyksCisgICAgICAgICJ0aW1lLXpvbmUtb3ZlcnJpZGUiLCB3ZWJraXRfd2ViX3ZpZXdf
Z2V0X3RpbWVfem9uZV9vdmVycmlkZSh3ZWJWaWV3KSwKICAgICAgICAgbnVsbHB0cikpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0
Mmd0ay00LjAtc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9k
b2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dAppbmRleCA2MmIwZTEwODZiMDk4ZjMxNTJm
Y2QxNzkzYTEzYWExZDNlZWIwNDgzLi5hZmQyNGY5MWM2YTE2NTNiYzkzMWQ3ZDgyZDY1YjE5ZmY3
NzE3NTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mv
d2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKQEAgLTI5MCw2ICsyOTAs
NyBAQCB3ZWJraXRfd2ViX3ZpZXdfc2VuZF9tZXNzYWdlX3RvX3BhZ2VfZmluaXNoCiB3ZWJraXRf
d2ViX3ZpZXdfc2V0X2lucHV0X21ldGhvZF9jb250ZXh0CiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2lu
cHV0X21ldGhvZF9jb250ZXh0CiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfcG9saWNpZXMK
K3dlYmtpdF93ZWJfdmlld19nZXRfdGltZV96b25lX292ZXJyaWRlCiAKIDxTVUJTRUNUSU9OIFdl
YktpdEphdmFzY3JpcHRSZXN1bHQ+CiBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlldy5oCmluZGV4IDIzMTQ5YjBi
Zjc0YWQwYjY2ODM5MWZmOWQ2Y2YxZDk4ZmJjMTU4YTguLmU1NzU0YzUwNzcxYThiMTk1YWE4MDM5
Mjc4YTBmZTk1ZGE4ZmI5YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS93cGUvV2ViS2l0V2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93
cGUvV2ViS2l0V2ViVmlldy5oCkBAIC01NjUsNiArNTY1LDkgQEAgd2Via2l0X3dlYl92aWV3X2dl
dF9pbnB1dF9tZXRob2RfY29udGV4dCAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldwogV0VCS0lU
X0FQSSBXZWJLaXRXZWJzaXRlUG9saWNpZXMgKgogd2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRl
X3BvbGljaWVzICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2Vi
X3ZpZXcpOwogCitXRUJLSVRfQVBJIGNvbnN0IGdjaGFyICoKK3dlYmtpdF93ZWJfdmlld19nZXRf
dGltZV96b25lX292ZXJyaWRlICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAg
ICAgKndlYl92aWV3KTsKKwogR19FTkRfREVDTFMKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXdXUEUuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3V1BFLmNwcAppbmRleCA1OTYz
NjY4NTViZjM1ZWU1NDEwMWM2MGRlNWQ1YTM5NTY3MTBiMGMxLi40MWI2ZTNkNmExMGRjNzQwMThk
MzA5NjhmZjJhYTY4MGU2NzY2NTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvd3BlL1dlYktpdFdlYlZpZXdXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlld1dQRS5jcHAKQEAgLTEzNiw2ICsxMzYsNyBAQCBXZWJL
aXRXZWJWaWV3KiB3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfcmVsYXRlZF92aWV3KFdlYktpdFdl
YlZpZXdCYWNrZW5kKiBiYWNrZQogICAgICAgICAidXNlci1jb250ZW50LW1hbmFnZXIiLCB3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29udGVudF9tYW5hZ2VyKHdlYlZpZXcpLAogICAgICAgICAi
c2V0dGluZ3MiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHdlYlZpZXcpLAogICAgICAg
ICAicmVsYXRlZC12aWV3Iiwgd2ViVmlldywKKyAgICAgICAgInRpbWUtem9uZS1vdmVycmlkZSIs
IHdlYmtpdF93ZWJfdmlld19nZXRfdGltZV96b25lX292ZXJyaWRlKHdlYlZpZXcpLAogICAgICAg
ICBudWxscHRyKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS93cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS93cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4dAppbmRleCA3ZDEyMTRiMWNiMTU3NzI4
ZWVhOTU5YzgwZWM2MDQ2OWI4NjQ4OGE0Li5iNWY4MWYwOGI5MGQ5MGU1YTY3YzQ1NmI0MzA1ZmQ0
MzEzNTJmZjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2Rv
Y3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlvbnMudHh0CkBAIC0yNjIsNiArMjYyLDcgQEAgd2Via2l0
X3dlYl92aWV3X3NlbmRfbWVzc2FnZV90b19wYWdlX2ZpbmlzaAogd2Via2l0X3dlYl92aWV3X3Nl
dF9pbnB1dF9tZXRob2RfY29udGV4dAogd2Via2l0X3dlYl92aWV3X2dldF9pbnB1dF9tZXRob2Rf
Y29udGV4dAogd2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX3BvbGljaWVzCit3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X3RpbWVfem9uZV9vdmVycmlkZQogCiA8U1VCU0VDVElPTiBXZWJLaXRKYXZhc2Ny
aXB0UmVzdWx0PgogV2ViS2l0SmF2YXNjcmlwdFJlc3VsdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggNWMxODNiNWNkMzgyMmE5NmE0NTA0MWU3NTIxYjU2MjFm
MTVlY2U1Yy4uMGRhM2M2NmU2YWVlMWJjMTdkNWQxMjI1NDU1ODQ2ODBkMzdkZDk2MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC03ODMwLDYgKzc4MzAsNyBA
QCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0
ZXJzKFdlYlByb2Nlc3NQcm94eSYgcHJvYwogICAgIHBhcmFtZXRlcnMuc2hvdWxkQ2FwdHVyZURp
c3BsYXlJblVJUHJvY2VzcyA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5jb25maWd1cmF0aW9u
KCkuc2hvdWxkQ2FwdHVyZURpc3BsYXlJblVJUHJvY2VzcygpOwogICAgIHBhcmFtZXRlcnMubGlt
aXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyA9IG1fbGltaXRzTmF2aWdhdGlvbnNUb0Fw
cEJvdW5kRG9tYWluczsKICAgICBwYXJhbWV0ZXJzLnNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nID0gbV9jb25maWd1cmF0aW9uLT5zaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVC
bG9ja2luZygpOworICAgIHBhcmFtZXRlcnMudGltZVpvbmVPdmVycmlkZSA9IG1fY29uZmlndXJh
dGlvbi0+dGltZVpvbmVPdmVycmlkZSgpOwogCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIHBhcmFt
ZXRlcnMudGhlbWVOYW1lID0gcGFnZUNsaWVudCgpLnRoZW1lTmFtZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBiNzEyNGU4ZWQzMDRhYjdi
MjAwOTUwMmQ2YWMyODc2NzdhZWIxYmUyLi43Mzk3NWUwYzFlNWRlOWQwNmUwM2ViM2Y3YjNmODA4
NWM5NDNmMTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcApAQCAtNDgyLDYgKzQ4Miw5IEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIg
cGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKICAgICBB
U1NFUlQobV9pZGVudGlmaWVyKTsKIAorICAgIGlmIChwYXJhbWV0ZXJzLnRpbWVab25lT3ZlcnJp
ZGUpCisgICAgICAgIFdURjo6c2V0VGltZVpvbmVPdmVycmlkZSgqcGFyYW1ldGVycy50aW1lWm9u
ZU92ZXJyaWRlKTsKKwogICAgIG1fcGFnZUdyb3VwID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
d2ViUGFnZUdyb3VwKHBhcmFtZXRlcnMucGFnZUdyb3VwRGF0YSk7CiAKICAgICBQYWdlQ29uZmln
dXJhdGlvbiBwYWdlQ29uZmlndXJhdGlvbigKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjODBmZjUyYzNmODlhYzZmMWEwMzAzNmYxMzFiNDRmYTBl
NzY3ZGE0Li45Y2JlYzhjMzcxNzRjYTU2YWJmZjViYjgwMjk5MzJhMzJjYjYyNDFhIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcg
QEAKKzIwMjAtMDctMDggIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgor
CisgICAgICAgIFtXSzJdIEFkZCBBUEkgdG8gYWxsb3cgZW1iZWRkZXIgdG8gc2V0IGEgdGltZXpv
bmUgb3ZlcnJpZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxMzg4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZCBhIG5ldyAtdCBydW50aW1lIG9wdGlvbiB0byBhbGxvdyB0d2Vha2luZyB0aGUgdGlt
ZXpvbmUgdXNlZCBieSB0aGUgR1RLIGFuZCBXUEUgTWluaUJyb3dzZXJzLgorICAgICAgICBOZXcg
Z2xpYiBhbmQgQ29jb2EgQVBJIHRlc3RzIHdlcmUgYWxzbyBhZGRlZCBmb3IgdGhlIG5ldyBBUEku
CisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jOgorICAgICAgICAo
d2ViVmlld0RlY2lkZVBvbGljeSk6CisgICAgICAgIChuZXdUYWJDYWxsYmFjayk6CisgICAgICAg
IChvcGVuUHJpdmF0ZVdpbmRvdyk6CisgICAgICAgIChicm93c2VyX3dpbmRvd19nZXRfb3JfY3Jl
YXRlX3dlYl92aWV3X2Zvcl9hdXRvbWF0aW9uKToKKyAgICAgICAgKGJyb3dzZXJfd2luZG93X2Ny
ZWF0ZV93ZWJfdmlld19pbl9uZXdfdGFiX2Zvcl9hdXRvbWF0aW9uKToKKyAgICAgICAgKiBNaW5p
QnJvd3Nlci9ndGsvbWFpbi5jOgorICAgICAgICAoY3JlYXRlQnJvd3NlclRhYik6CisgICAgICAg
ICogTWluaUJyb3dzZXIvd3BlL21haW4uY3BwOgorICAgICAgICAobWFpbik6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UaW1lWm9uZU92ZXJyaWRl
Lm1tOiBBZGRlZC4KKyAgICAgICAgKFRpbWVab25lT3ZlcnJpZGVUZXN0OjpydW5TY3JpcHRBbmRF
eGVjdXRlQ2FsbGJhY2spOgorICAgICAgICAoVEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYlZpZXcuY3BwOgorICAgICAgICAodGVz
dFdlYlZpZXdUaW1lWm9uZU92ZXJyaWRlKToKKyAgICAgICAgKGJlZm9yZUFsbCk6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuY3BwOgorICAgICAg
ICAoV2ViVmlld1Rlc3Q6OmluaXRpYWxpemVXZWJWaWV3KToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5oOgorICAgICAgICAqIGZsYXRwYWsvZmxh
dHBha3V0aWxzLnB5OgorICAgICAgICAoV2Via2l0RmxhdHBhay5ydW5faW5fc2FuZGJveCk6IFNl
dCB0aW1lem9uZSB0byBBbWVyaWNhL0xvc19BbmdlbGVzLCBpdCdzIGVxdWl2YWxlbnQgdG8gUERU
IGJ1dAorICAgICAgICBlYXNpZXIgdG8gdW5kZXJzdGFuZC4KKwogMjAyMC0wNy0wOCAgUGhpbGlw
cGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0ZsYXRwYWsgU0RL
XSBQcmUtc3RhcnQgc2NjYWNoZSBzZXJ2ZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2Vy
L2d0ay9Ccm93c2VyV2luZG93LmMgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRv
dy5jCmluZGV4IDVjZDg0ZGFjM2QzNDljYzYxMTk5Y2IyMmJjZTNhODE2NzA2YzIyNTAuLmQ1MTk2
MmE3YmNlNmZmZDRiNTJkYjIxMzdiODliYTU2NTIxM2ZlNTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01p
bmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3Rr
L0Jyb3dzZXJXaW5kb3cuYwpAQCAtNDQ5LDYgKzQ0OSw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJW
aWV3RGVjaWRlUG9saWN5KFdlYktpdFdlYlZpZXcgKndlYlZpZXcsIFdlYktpdFBvbGljeURlY2lz
aW9uCiAgICAgICAgICJ1c2VyLWNvbnRlbnQtbWFuYWdlciIsIHdlYmtpdF93ZWJfdmlld19nZXRf
dXNlcl9jb250ZW50X21hbmFnZXIod2ViVmlldyksCiAgICAgICAgICJpcy1jb250cm9sbGVkLWJ5
LWF1dG9tYXRpb24iLCB3ZWJraXRfd2ViX3ZpZXdfaXNfY29udHJvbGxlZF9ieV9hdXRvbWF0aW9u
KHdlYlZpZXcpLAogICAgICAgICAid2Vic2l0ZS1wb2xpY2llcyIsIHdlYmtpdF93ZWJfdmlld19n
ZXRfd2Vic2l0ZV9wb2xpY2llcyh3ZWJWaWV3KSwKKyAgICAgICAgInRpbWUtem9uZS1vdmVycmlk
ZSIsIHdlYmtpdF93ZWJfdmlld19nZXRfdGltZV96b25lX292ZXJyaWRlKHdlYlZpZXcpLAogICAg
ICAgICBOVUxMKSk7CiAgICAgYnJvd3Nlcl93aW5kb3dfYXBwZW5kX3ZpZXcod2luZG93LCBuZXdX
ZWJWaWV3KTsKICAgICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9yZXF1ZXN0KG5ld1dlYlZpZXcsIHdl
YmtpdF9uYXZpZ2F0aW9uX2FjdGlvbl9nZXRfcmVxdWVzdChuYXZpZ2F0aW9uQWN0aW9uKSk7CkBA
IC02MzUsNiArNjM2LDcgQEAgc3RhdGljIHZvaWQgbmV3VGFiQ2FsbGJhY2soR1NpbXBsZUFjdGlv
biAqYWN0aW9uLCBHVmFyaWFudCAqcGFyYW1ldGVyLCBncG9pbnRlcgogICAgICAgICAidXNlci1j
b250ZW50LW1hbmFnZXIiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29udGVudF9tYW5hZ2Vy
KHdlYlZpZXcpLAogICAgICAgICAiaXMtY29udHJvbGxlZC1ieS1hdXRvbWF0aW9uIiwgd2Via2l0
X3dlYl92aWV3X2lzX2NvbnRyb2xsZWRfYnlfYXV0b21hdGlvbih3ZWJWaWV3KSwKICAgICAgICAg
IndlYnNpdGUtcG9saWNpZXMiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfcG9saWNpZXMo
d2ViVmlldyksCisgICAgICAgICJ0aW1lLXpvbmUtb3ZlcnJpZGUiLCB3ZWJraXRfd2ViX3ZpZXdf
Z2V0X3RpbWVfem9uZV9vdmVycmlkZSh3ZWJWaWV3KSwKICAgICAgICAgTlVMTCkpKTsKICAgICBn
dGtfd2lkZ2V0X2dyYWJfZm9jdXMod2luZG93LT51cmlFbnRyeSk7CiAgICAgZ3RrX25vdGVib29r
X3NldF9jdXJyZW50X3BhZ2UoR1RLX05PVEVCT09LKHdpbmRvdy0+bm90ZWJvb2spLCAtMSk7CkBA
IC02NTYsNiArNjU4LDcgQEAgc3RhdGljIHZvaWQgb3BlblByaXZhdGVXaW5kb3coR1NpbXBsZUFj
dGlvbiAqYWN0aW9uLCBHVmFyaWFudCAqcGFyYW1ldGVyLCBncG9pbnQKICAgICAgICAgImlzLWVw
aGVtZXJhbCIsIFRSVUUsCiAgICAgICAgICJpcy1jb250cm9sbGVkLWJ5LWF1dG9tYXRpb24iLCB3
ZWJraXRfd2ViX3ZpZXdfaXNfY29udHJvbGxlZF9ieV9hdXRvbWF0aW9uKHdlYlZpZXcpLAogICAg
ICAgICAid2Vic2l0ZS1wb2xpY2llcyIsIHdlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9wb2xp
Y2llcyh3ZWJWaWV3KSwKKyAgICAgICAgInRpbWUtem9uZS1vdmVycmlkZSIsIHdlYmtpdF93ZWJf
dmlld19nZXRfdGltZV96b25lX292ZXJyaWRlKHdlYlZpZXcpLAogICAgICAgICBOVUxMKSk7CiAg
ICAgR3RrV2lkZ2V0ICpuZXdXaW5kb3cgPSBicm93c2VyX3dpbmRvd19uZXcoR1RLX1dJTkRPVyh3
aW5kb3cpLCB3aW5kb3ctPndlYkNvbnRleHQpOwogICAgIGd0a193aW5kb3dfc2V0X2FwcGxpY2F0
aW9uKEdUS19XSU5ET1cobmV3V2luZG93KSwgZ3RrX3dpbmRvd19nZXRfYXBwbGljYXRpb24oR1RL
X1dJTkRPVyh3aW5kb3cpKSk7CkBAIC0xNDU3LDYgKzE0NjAsNyBAQCBXZWJLaXRXZWJWaWV3ICpi
cm93c2VyX3dpbmRvd19nZXRfb3JfY3JlYXRlX3dlYl92aWV3X2Zvcl9hdXRvbWF0aW9uKEJyb3dz
ZXJXaW5kbwogICAgICAgICAidXNlci1jb250ZW50LW1hbmFnZXIiLCB3ZWJraXRfd2ViX3ZpZXdf
Z2V0X3VzZXJfY29udGVudF9tYW5hZ2VyKHdlYlZpZXcpLAogICAgICAgICAiaXMtY29udHJvbGxl
ZC1ieS1hdXRvbWF0aW9uIiwgVFJVRSwKICAgICAgICAgIndlYnNpdGUtcG9saWNpZXMiLCB3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfcG9saWNpZXMod2ViVmlldyksCisgICAgICAgICJ0aW1l
LXpvbmUtb3ZlcnJpZGUiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3RpbWVfem9uZV9vdmVycmlkZSh3
ZWJWaWV3KSwKICAgICAgICAgTlVMTCkpOwogICAgIEd0a1dpZGdldCAqbmV3V2luZG93ID0gYnJv
d3Nlcl93aW5kb3dfbmV3KEdUS19XSU5ET1cod2luZG93KSwgd2luZG93LT53ZWJDb250ZXh0KTsK
ICAgICBndGtfd2luZG93X3NldF9hcHBsaWNhdGlvbihHVEtfV0lORE9XKG5ld1dpbmRvdyksIGd0
a193aW5kb3dfZ2V0X2FwcGxpY2F0aW9uKEdUS19XSU5ET1cod2luZG93KSkpOwpAQCAtMTQ3OSw2
ICsxNDgzLDcgQEAgV2ViS2l0V2ViVmlldyAqYnJvd3Nlcl93aW5kb3dfY3JlYXRlX3dlYl92aWV3
X2luX25ld190YWJfZm9yX2F1dG9tYXRpb24oQnJvd3NlclcKICAgICAgICAgImlzLWNvbnRyb2xs
ZWQtYnktYXV0b21hdGlvbiIsIFRSVUUsCiAgICAgICAgICJhdXRvbWF0aW9uLXByZXNlbnRhdGlv
bi10eXBlIiwgV0VCS0lUX0FVVE9NQVRJT05fQlJPV1NJTkdfQ09OVEVYVF9QUkVTRU5UQVRJT05f
VEFCLAogICAgICAgICAid2Vic2l0ZS1wb2xpY2llcyIsIHdlYmtpdF93ZWJfdmlld19nZXRfd2Vi
c2l0ZV9wb2xpY2llcyh3ZWJWaWV3KSwKKyAgICAgICAgInRpbWUtem9uZS1vdmVycmlkZSIsIHdl
YmtpdF93ZWJfdmlld19nZXRfdGltZV96b25lX292ZXJyaWRlKHdlYlZpZXcpLAogICAgICAgICBO
VUxMKSk7CiAgICAgYnJvd3Nlcl93aW5kb3dfYXBwZW5kX3ZpZXcod2luZG93LCBuZXdXZWJWaWV3
KTsKICAgICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF91cmkobmV3V2ViVmlldywgImFib3V0OmJsYW5r
Iik7CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jIGIvVG9vbHMvTWlu
aUJyb3dzZXIvZ3RrL21haW4uYwppbmRleCA2MWNiNzI5ZTllOGUyNGQ4NWMwZDY3OGM2NGEzZGJh
ZTFjMDg1ZjYzLi4zNzYzNmQzYmMzODViZWIwYzU4NmE2NDM4NWJjZTRjYTc4OTM4YTBkIDEwMDY0
NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCisrKyBiL1Rvb2xzL01pbmlCcm93
c2VyL2d0ay9tYWluLmMKQEAgLTU2LDYgKzU2LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgKnByb3h5
Owogc3RhdGljIGdib29sZWFuIGRhcmtNb2RlOwogc3RhdGljIGdib29sZWFuIGVuYWJsZUlUUDsK
IHN0YXRpYyBnYm9vbGVhbiBwcmludFZlcnNpb247CitzdGF0aWMgY2hhciogdGltZVpvbmU7CiAK
IHR5cGVkZWYgZW51bSB7CiAgICAgTUlOSV9CUk9XU0VSX0VSUk9SX0lOVkFMSURfQUJPVVRfUEFU
SApAQCAtODYsNiArODcsNyBAQCBzdGF0aWMgV2ViS2l0V2ViVmlldyAqY3JlYXRlQnJvd3NlclRh
YihCcm93c2VyV2luZG93ICp3aW5kb3csIFdlYktpdFNldHRpbmdzICp3ZQogICAgICAgICAidXNl
ci1jb250ZW50LW1hbmFnZXIiLCB1c2VyQ29udGVudE1hbmFnZXIsCiAgICAgICAgICJpcy1jb250
cm9sbGVkLWJ5LWF1dG9tYXRpb24iLCBhdXRvbWF0aW9uTW9kZSwKICAgICAgICAgIndlYnNpdGUt
cG9saWNpZXMiLCBkZWZhdWx0V2Vic2l0ZVBvbGljaWVzLAorICAgICAgICAidGltZS16b25lLW92
ZXJyaWRlIiwgdGltZVpvbmUsCiAgICAgICAgIE5VTEwpKTsKIAogICAgIGlmIChlZGl0b3JNb2Rl
KQpAQCAtMTQ2LDYgKzE0OCw3IEBAIHN0YXRpYyBjb25zdCBHT3B0aW9uRW50cnkgY29tbWFuZExp
bmVPcHRpb25zW10gPQogICAgIHsgImlnbm9yZS10bHMtZXJyb3JzIiwgMCwgMCwgR19PUFRJT05f
QVJHX05PTkUsICZpZ25vcmVUTFNFcnJvcnMsICJJZ25vcmUgVExTIGVycm9ycyIsIE5VTEwgfSwK
ICAgICB7ICJjb250ZW50LWZpbHRlciIsIDAsIDAsIEdfT1BUSU9OX0FSR19GSUxFTkFNRSwgJmNv
bnRlbnRGaWx0ZXIsICJKU09OIHdpdGggY29udGVudCBmaWx0ZXJpbmcgcnVsZXMiLCAiRklMRSIg
fSwKICAgICB7ICJlbmFibGUtaXRwIiwgMCwgMCwgR19PUFRJT05fQVJHX05PTkUsICZlbmFibGVJ
VFAsICJFbmFibGUgSW50ZWxsaWdlbnQgVHJhY2tpbmcgUHJldmVudGlvbiAoSVRQKSIsIE5VTEwg
fSwKKyAgICB7ICJ0aW1lLXpvbmUiLCAndCcsIDAsIEdfT1BUSU9OX0FSR19TVFJJTkcsICZ0aW1l
Wm9uZSwgIlNldCB0aW1lIHpvbmUiLCAiVElNRVpPTkUifSwKICAgICB7ICJ2ZXJzaW9uIiwgJ3Yn
LCAwLCBHX09QVElPTl9BUkdfTk9ORSwgJnByaW50VmVyc2lvbiwgIlByaW50IHRoZSBXZWJLaXRH
VEsgdmVyc2lvbiIsIE5VTEwgfSwKICAgICB7IEdfT1BUSU9OX1JFTUFJTklORywgMCwgMCwgR19P
UFRJT05fQVJHX0ZJTEVOQU1FX0FSUkFZLCAmdXJpQXJndW1lbnRzLCAwLCAiW1VSTOKApl0iIH0s
CiAgICAgeyAwLCAwLCAwLCAwLCAwLCAwLCAwIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93
c2VyL3dwZS9tYWluLmNwcCBiL1Rvb2xzL01pbmlCcm93c2VyL3dwZS9tYWluLmNwcAppbmRleCBk
NmMxNjRmYmE4ZGVlZjM0M2IyMmQ1OTgwMzA0NzllMTYwODQxZDY4Li5kZjhlYWRjNGU3N2VmY2E4
NWI1ZmQwMmYwZmI4N2Q3ZWJhZTA3ODk1IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci93
cGUvbWFpbi5jcHAKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvd3BlL21haW4uY3BwCkBAIC01MSw2
ICs1MSw3IEBAIGNvbnN0IGNoYXIqIGJnQ29sb3I7CiBzdGF0aWMgZ2Jvb2xlYW4gZW5hYmxlSVRQ
Owogc3RhdGljIGdib29sZWFuIHByaW50VmVyc2lvbjsKIHN0YXRpYyBHSGFzaFRhYmxlKiBvcGVu
Vmlld3M7CitzdGF0aWMgY2hhciogdGltZVpvbmU7CiAKIHN0YXRpYyBjb25zdCBHT3B0aW9uRW50
cnkgY29tbWFuZExpbmVPcHRpb25zW10gPQogewpAQCAtNjUsNiArNjYsNyBAQCBzdGF0aWMgY29u
c3QgR09wdGlvbkVudHJ5IGNvbW1hbmRMaW5lT3B0aW9uc1tdID0KICAgICB7ICJjb250ZW50LWZp
bHRlciIsIDAsIDAsIEdfT1BUSU9OX0FSR19GSUxFTkFNRSwgJmNvbnRlbnRGaWx0ZXIsICJKU09O
IHdpdGggY29udGVudCBmaWx0ZXJpbmcgcnVsZXMiLCAiRklMRSIgfSwKICAgICB7ICJiZy1jb2xv
ciIsIDAsIDAsIEdfT1BUSU9OX0FSR19TVFJJTkcsICZiZ0NvbG9yLCAiV2luZG93IGJhY2tncm91
bmQgY29sb3IuIERlZmF1bHQ6IHdoaXRlIiwgIkNPTE9SIiB9LAogICAgIHsgImVuYWJsZS1pdHAi
LCAwLCAwLCBHX09QVElPTl9BUkdfTk9ORSwgJmVuYWJsZUlUUCwgIkVuYWJsZSBJbnRlbGxpZ2Vu
dCBUcmFja2luZyBQcmV2ZW50aW9uIChJVFApIiwgbnVsbHB0ciB9LAorICAgIHsgInRpbWUtem9u
ZSIsICd0JywgMCwgR19PUFRJT05fQVJHX1NUUklORywgJnRpbWVab25lLCAiU2V0IHRpbWUgem9u
ZSIsICJUSU1FWk9ORSJ9LAogICAgIHsgInZlcnNpb24iLCAndicsIDAsIEdfT1BUSU9OX0FSR19O
T05FLCAmcHJpbnRWZXJzaW9uLCAiUHJpbnQgdGhlIFdQRSB2ZXJzaW9uIiwgbnVsbHB0ciB9LAog
ICAgIHsgR19PUFRJT05fUkVNQUlOSU5HLCAwLCAwLCBHX09QVElPTl9BUkdfRklMRU5BTUVfQVJS
QVksICZ1cmlBcmd1bWVudHMsIG51bGxwdHIsICJbVVJMXSIgfSwKICAgICB7IG51bGxwdHIsIDAs
IDAsIEdfT1BUSU9OX0FSR19OT05FLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyIH0KQEAgLTI5
Niw2ICsyOTgsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogICAgICAgICAi
c2V0dGluZ3MiLCBzZXR0aW5ncywKICAgICAgICAgInVzZXItY29udGVudC1tYW5hZ2VyIiwgdXNl
ckNvbnRlbnRNYW5hZ2VyLAogICAgICAgICAiaXMtY29udHJvbGxlZC1ieS1hdXRvbWF0aW9uIiwg
YXV0b21hdGlvbk1vZGUsCisgICAgICAgICJ0aW1lLXpvbmUtb3ZlcnJpZGUiLCB0aW1lWm9uZSwK
ICAgICAgICAgbnVsbHB0cikpOwogICAgIGdfb2JqZWN0X3VucmVmKHNldHRpbmdzKTsKIApkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCAyZTI2YzhlZWVjNmJkOGIxNWYxNjEwNjJiYThkYzlkZTUy
YTVmYjM1Li5hNmQ2MzhiNWYyZmVjY2U5OTJhMzQ3NjY4OWJkYWVmNjA5ZWYwMzU3IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtODA2LDYgKzgwNiw3IEBACiAJCTk5ODRGQUNDMUNGRkFGNjAw
MDhEMTk4QyAvKiBXS1dlYlZpZXdUZXh0SW5wdXQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTg0RkFDQTFDRkZBRUVFMDA4RDE5OEMgLyogV0tXZWJW
aWV3VGV4dElucHV0Lm1tICovOyB9OwogCQk5OTg0RkFDRTFDRkZCMDkwMDA4RDE5OEMgLyogZWRp
dGFibGUtYm9keS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk5ODRGQUNEMUNGRkIwMzgwMDhEMTk4QyAvKiBlZGl0YWJsZS1ib2R5Lmh0
bWwgKi87IH07CiAJCTk5OTkxMDhCMUYzOTNDOTYwMDhBRDQ1NSAvKiBDb3B5aW5nLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk5OTEwOEExRjM5M0M4
QjAwOEFENDU1IC8qIENvcHlpbmcubW0gKi87IH07CisJCTlBMThFNDE5MjRCNjFCRTgwMDBCQjM1
MSAvKiBUaW1lWm9uZU92ZXJyaWRlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOUExOEU0MTcyNEI2MTVEOTAwMEJCMzUxIC8qIFRpbWVab25lT3ZlcnJp
ZGUubW0gKi87IH07CiAJCTlCMDJFMEQ2MjM1RkE0N0QwMDQwNDRCMiAvKiBUZXh0TWFuaXB1bGF0
aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIw
MkUwRDUyMzVGQTQ3RDAwNDA0NEIyIC8qIFRleHRNYW5pcHVsYXRpb24ubW0gKi87IH07CiAJCTlC
MDc4NkE1MUM1ODg1QzMwMEQxNTlFMyAvKiBJbmplY3RlZEJ1bmRsZU1ha2VBbGxTaGFkb3dSb290
c09wZW5fQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDlCMDc4NkE0MUM1ODg1QzMwMEQxNTlFMyAvKiBJbmplY3RlZEJ1bmRsZU1ha2VBbGxT
aGFkb3dSb290c09wZW5fQnVuZGxlLmNwcCAqLzsgfTsKIAkJOUIxOUNEQTAxRjA2REZFMzAwMDU0
OEREIC8qIE5ldHdvcmtQcm9jZXNzQ3Jhc2hXaXRoUGVuZGluZ0Nvbm5lY3Rpb24ubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjE5Q0Q5RTFGMDZERkUz
MDAwNTQ4REQgLyogTmV0d29ya1Byb2Nlc3NDcmFzaFdpdGhQZW5kaW5nQ29ubmVjdGlvbi5tbSAq
LzsgfTsKQEAgLTIzNjUsNiArMjM2Niw3IEBACiAJCTk5ODRGQUNBMUNGRkFFRUUwMDhEMTk4QyAv
KiBXS1dlYlZpZXdUZXh0SW5wdXQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBXS1dlYlZpZXdUZXh0SW5wdXQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTk5ODRGQUNEMUNGRkIwMzgwMDhEMTk4QyAvKiBlZGl0YWJsZS1ib2R5Lmh0bWwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiZWRpdGFibGUtYm9keS5odG1sIjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTk5OTEwOEExRjM5M0M4QjAwOEFENDU1IC8qIENvcHlpbmcubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb3B5aW5nLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QTE4RTQxNzI0QjYxNUQ5MDAwQkIzNTEgLyogVGlt
ZVpvbmVPdmVycmlkZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFRpbWVab25lT3ZlcnJpZGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMDJF
MEQ1MjM1RkE0N0QwMDQwNDRCMiAvKiBUZXh0TWFuaXB1bGF0aW9uLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gVGV4dE1hbmlwdWxhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOUIwNzg2QTIxQzU4ODMwRjAwRDE1OUUzIC8qIEluamVjdGVkQnVuZGxlTWFrZUFsbFNoYWRv
d1Jvb3RzT3Blbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmpl
Y3RlZEJ1bmRsZU1ha2VBbGxTaGFkb3dSb290c09wZW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5QjA3ODZBNDFDNTg4NUMzMDBEMTU5RTMgLyogSW5qZWN0ZWRCdW5kbGVNYWtl
QWxsU2hhZG93Um9vdHNPcGVuX0J1bmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJbmplY3RlZEJ1bmRsZU1ha2VBbGxTaGFkb3dSb290c09wZW5fQnVuZGxlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMwNTMsNiArMzA1NSw3IEBACiAJCTFB
QkMzREVDMTg5OUJFNTUwMDRGMDYyNiAvKiBXZWJLaXQgQ29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTlBMThFNDE3MjRCNjE1RDkwMDBCQjM1MSAv
KiBUaW1lWm9uZU92ZXJyaWRlLm1tICovLAogCQkJCUExNkY2NkI4MUM0MEU5RTEwMEJENEQyNCAv
KiBSZXNvdXJjZXMgKi8sCiAJCQkJNUNFQUI1REYxRkE5MzdDQjAwQTc3RkFBIC8qIF9XS0lucHV0
RGVsZWdhdGUubW0gKi8sCiAJCQkJOTEyNDc5RjkyM0UyNjlBMTAwQzZDRUM4IC8qIF9XS0luc3Bl
Y3RvckRlbGVnYXRlLm1tICovLApAQCAtNDg4Myw2ICs0ODg2LDcgQEAKIAkJCQkwN0MwNDZDQTFF
NDI2MkE4MDA3MjAxRTcgLyogQ0FSaW5nQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU3
MzAzQkNCMjAwODM3NjUwMDM1NTk2NSAvKiBDQk9SUmVhZGVyVGVzdC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1NzMwM0JDOTIwMDgyNEQzMDAzNTU5NjUgLyogQ0JPUlZhbHVlVGVzdC5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk5QTE4RTQxOTI0QjYxQkU4MDAwQkIzNTEgLyogVGltZVpvbmVPdmVy
cmlkZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTU3MzAzQkNBMjAwODJDMDEwMDM1NTk2NSAvKiBD
Qk9SV3JpdGVyVGVzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzIzREYwQjIyNDYwMTU4MDBG
NDU0QjYgLyogQ2hhbGxlbmdlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRjQyMkEzRTkyMzVBQ0E5
QjAwQ0YwMENBIC8qIENsaXBib2FyZFRlc3RzLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1RpbWVab25lT3ZlcnJpZGUu
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1RpbWVab25lT3ZlcnJp
ZGUubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMTBjMTlhODQ4NWNiYWEzOTViMDM0OGRjMDU5MGM0ZmU2ODczZTlh
NwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvVGltZVpvbmVPdmVycmlkZS5tbQpAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaWYgUExBVEZPUk0o
TUFDKQorCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdFdLV2Vi
Vmlldy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg+
CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgorI2ltcG9ydCA8d3RmL0Z1bmN0
aW9uLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworY2xhc3MgVGltZVpvbmVP
dmVycmlkZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CitwdWJsaWM6CisgICAgdm9pZCBT
ZXRVcCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBfY29uZmlndXJhdGlvbiA9IGFkb3B0TlMo
W1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgICAgIFtfY29uZmln
dXJhdGlvbiBfc2V0VGltZVpvbmVPdmVycmlkZTpAIkV1cm9wZS9CZXJsaW4iXTsKKworICAgICAg
ICBfd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgMzAwLCAzMDApIGNvbmZpZ3VyYXRpb246X2NvbmZpZ3VyYXRpb24u
Z2V0KCldKTsKKyAgICB9CisKKyAgICB2b2lkIHJ1blNjcmlwdEFuZEV4ZWN1dGVDYWxsYmFjayhj
b25zdCBTdHJpbmcmIHNjcmlwdCwgRnVuY3Rpb248dm9pZChpZCk+JiYgY2FsbGJhY2spCisgICAg
eworICAgICAgICBib29sIGNvbXBsZXRlID0gZmFsc2U7CisgICAgICAgIFtfd2ViVmlldyBldmFs
dWF0ZUphdmFTY3JpcHQ6c2NyaXB0IGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBO
U0Vycm9yICopIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7CisgICAgICAgICAgICBj
b21wbGV0ZSA9IHRydWU7CisgICAgICAgIH1dOworICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJmNvbXBsZXRlKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgUmV0YWluUHRyPFdLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24+IF9jb25maWd1cmF0aW9uOworICAgIFJldGFpblB0cjxUZXN0V0tX
ZWJWaWV3PiBfd2ViVmlldzsKK307CisKK1RFU1RfRihUaW1lWm9uZU92ZXJyaWRlVGVzdCwgVGlt
ZVpvbmVPdmVycmlkZSkKK3sKKyAgICBydW5TY3JpcHRBbmRFeGVjdXRlQ2FsbGJhY2soImxldCBu
b3cgPSBuZXcgRGF0ZSgpOyBub3cuZ2V0VGltZXpvbmVPZmZzZXQoKSIsIFtdKGlkIHJlc3VsdCkg
eworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoW3Jlc3VsdCBzdHJpbmdWYWx1ZV0sICItMTIwIik7
CisgICAgfSk7Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViVmlldy5jcHAKaW5kZXggZDdjYWZmZDBl
OTkyY2MzMTU3M2Q4YmI0NWQ5ZjBlZDY3NTk2MGZlMS4uN2MzYWI2OTNiOWU3MzI2OGE3MzcyYzY2
NjJhOTYzZTI0YTM2N2MyOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYlZpZXcuY3BwCkBAIC0xMTkxLDYgKzExOTEs
MzEgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdCYWNrZ3JvdW5kQ29sb3IoV2ViVmlld1Rlc3Qq
IHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgLy8gTWluaUJyb3dzZXIgLS1iZy1jb2xvcj0iPGNv
bG9yLXZhbHVlPiIgZm9yIG1hbnVhbGx5IHRlc3RpbmcgdGhpcyBBUEkuCiB9CiAKK2NsYXNzIFRp
bWVab25lT3ZlcnJpZGVXZWJWaWV3VGVzdDogcHVibGljIFdlYlZpZXdUZXN0IHsKK3B1YmxpYzoK
KyAgICBNQUtFX0dMSUJfVEVTVF9GSVhUVVJFX1dJVEhfU0VUVVBfVEVBUkRPV04oVGltZVpvbmVP
dmVycmlkZVdlYlZpZXdUZXN0LCBzZXR1cCwgdGVhcmRvd24pOworCisgICAgc3RhdGljIHZvaWQg
c2V0dXAoKQorICAgIHsKKyAgICAgICAgV2ViVmlld1Rlc3Q6OnRpbWVab25lT3ZlcnJpZGUgPSAi
RXVyb3BlL0JlcmxpbiI7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgdGVhcmRvd24oKQorICAg
IHsKKyAgICAgICAgV2ViVmlld1Rlc3Q6OnRpbWVab25lT3ZlcnJpZGUgPSAiIjsKKyAgICB9Cit9
OworCitzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1RpbWVab25lT3ZlcnJpZGUoVGltZVpvbmVPdmVy
cmlkZVdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAgIEdVbmlxdWVPdXRQ
dHI8R0Vycm9yPiBlcnJvcjsKKyAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBqYXZhc2NyaXB0
UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJsZXQgbm93
ID0gbmV3IERhdGUoKTsgbm93LmdldFRpbWV6b25lT2Zmc2V0KCkiLCAmZXJyb3Iub3V0UHRyKCkp
OworICAgIGdfYXNzZXJ0X25vbm51bGwoamF2YXNjcmlwdFJlc3VsdCk7CisgICAgZ19hc3NlcnRf
bm9fZXJyb3IoZXJyb3IuZ2V0KCkpOworICAgIC8vIEJlcmxpbiBpcyAxMjAgbWludXRlcyBhaGVh
ZCBvZiB0aGUgR01UIG9mZnNldC4KKyAgICBnX2Fzc2VydF9jbXBpbnQoV2ViVmlld1Rlc3Q6Omph
dmFzY3JpcHRSZXN1bHRUb051bWJlcihqYXZhc2NyaXB0UmVzdWx0KSwgPT0sIC0xMjApOworfQor
CiAjaWYgUExBVEZPUk0oR1RLKQogc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdQcmVmZXJyZWRTaXpl
KFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewpAQCAtMTQwNiw2ICsxNDMxLDcg
QEAgdm9pZCBiZWZvcmVBbGwoKQogI2VuZGlmCiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0
V2ViVmlldyIsICJpcy1hdWRpby1tdXRlZCIsIHRlc3RXZWJWaWV3SXNBdWRpb011dGVkKTsKICAg
ICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImF1dG9wbGF5LXBvbGljeSIsIHRl
c3RXZWJWaWV3QXV0b3BsYXlQb2xpY3kpOworICAgIFRpbWVab25lT3ZlcnJpZGVXZWJWaWV3VGVz
dDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInRpbWUtem9uZS1vdmVycmlkZSIsIHRlc3RXZWJWaWV3
VGltZVpvbmVPdmVycmlkZSk7CiB9CiAKIHZvaWQgYWZ0ZXJBbGwoKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuY3BwIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuY3BwCmluZGV4IDdhMTNl
YjhmODQwMmRmMDUxN2FmMDY4ZDkxZDJhZmNkMDlkZTk2NDYuLjQxMjhjYTRjMTYwMmI3ZjNlZjE0
ZWJkYmQ3YTFhNTRjOTQxZjkwOWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xp
Yi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2ds
aWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKIAogYm9vbCBX
ZWJWaWV3VGVzdDo6c2hvdWxkSW5pdGlhbGl6ZVdlYlZpZXdJbkNvbnN0cnVjdG9yID0gdHJ1ZTsK
IGJvb2wgV2ViVmlld1Rlc3Q6OnNob3VsZENyZWF0ZUVwaGVtZXJhbFdlYlZpZXcgPSBmYWxzZTsK
K2NvbnN0IGNoYXIqIFdlYlZpZXdUZXN0Ojp0aW1lWm9uZU92ZXJyaWRlID0gIiI7CiAKIFdlYlZp
ZXdUZXN0OjpXZWJWaWV3VGVzdCgpCiAgICAgOiBtX3VzZXJDb250ZW50TWFuYWdlcihhZG9wdEdS
ZWYod2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX25ldygpKSkKQEAgLTU5LDYgKzYwLDcgQEAg
dm9pZCBXZWJWaWV3VGVzdDo6aW5pdGlhbGl6ZVdlYlZpZXcoKQogICAgICAgICAid2ViLWNvbnRl
eHQiLCBtX3dlYkNvbnRleHQuZ2V0KCksCiAgICAgICAgICJ1c2VyLWNvbnRlbnQtbWFuYWdlciIs
IG1fdXNlckNvbnRlbnRNYW5hZ2VyLmdldCgpLAogICAgICAgICAiaXMtZXBoZW1lcmFsIiwgc2hv
dWxkQ3JlYXRlRXBoZW1lcmFsV2ViVmlldywKKyAgICAgICAgInRpbWUtem9uZS1vdmVycmlkZSIs
IHRpbWVab25lT3ZlcnJpZGUsCiAgICAgICAgIG51bGxwdHIpKTsKICAgICBwbGF0Zm9ybUluaXRp
YWxpemVXZWJWaWV3KCk7CiAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hl
cyhHX09CSkVDVChtX3dlYlZpZXcpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Z2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIv
V2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5oCmluZGV4IDZlOWVkZTc4MDUxZmI1ZjE4ODEzMjQ4MWRk
MTZmMmZkNmQyNDNkYTQuLjM4Nzg1YzU4M2UwNTkyZjA2MzQ0Zjk5NDM1MzZkNWRjNzU5MGEyN2Qg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdU
ZXN0LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rl
c3QuaApAQCAtMzEsNiArMzEsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJ
bml0aWFsaXplV2ViVmlld0luQ29uc3RydWN0b3I7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkQ3Jl
YXRlRXBoZW1lcmFsV2ViVmlldzsKKyAgICBzdGF0aWMgY29uc3QgY2hhciogdGltZVpvbmVPdmVy
cmlkZTsKICAgICB2b2lkIGluaXRpYWxpemVXZWJWaWV3KCk7CiAKICAgICB2b2lkIHBsYXRmb3Jt
SW5pdGlhbGl6ZVdlYlZpZXcoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL2ZsYXRwYWsvZmxhdHBha3V0
aWxzLnB5IGIvVG9vbHMvZmxhdHBhay9mbGF0cGFrdXRpbHMucHkKaW5kZXggZjQ5ZjlmMDY1MmZl
M2Y0Nzc4YTM4M2ExODc1OTQ3NjVjYjk4MGYxMS4uOTg0MjIwYThhOWM5Mzg3NTJlMjA5NWYzMjA5
NGNlNzg5YTQxOGQ5NyAxMDA2NDQKLS0tIGEvVG9vbHMvZmxhdHBhay9mbGF0cGFrdXRpbHMucHkK
KysrIGIvVG9vbHMvZmxhdHBhay9mbGF0cGFrdXRpbHMucHkKQEAgLTcxNyw3ICs3MTcsNyBAQCBj
bGFzcyBXZWJraXRGbGF0cGFrOgogICAgICAgICAgICAgXSkKIAogICAgICAgICAgICAgc2FuZGJv
eF9lbnZpcm9ubWVudC51cGRhdGUoewotICAgICAgICAgICAgICAgICJUWiI6ICJQU1Q4UERUIiwK
KyAgICAgICAgICAgICAgICAiVFoiOiAiQW1lcmljYS9Mb3NfQW5nZWxlcyIsCiAgICAgICAgICAg
ICB9KQogCiAgICAgICAgIGVudl92YXJfcHJlZml4ZXNfdG9fa2VlcCA9IFsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403789</attachid>
            <date>2020-07-08 09:15:55 -0700</date>
            <delta_ts>2020-07-17 03:51:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213884-20200708091553.patch</filename>
            <type>text/plain</type>
            <size>46171</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0MDk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
NTNkMzJlZjk0MGU0Y2IyYTc1OGQyMzZkNWMxNzk0MjdkNTQ1OGQ2Li43YTU4NmFkOWEzMDhmNzE3
Yzk4ZWQzYTZmM2Y0YWQ2YWUwMzM2MzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAyMC0wNy0wMiAgUGhpbGlwcGUgTm9ybWFuZCAgPHBoaWxuQGlnYWxpYS5j
b20+IGFuZCBQYXZlbCBGZWxkbWFuIDxwYXZlbC5mZWxkbWFuQGdtYWlsLmNvbT4KKworICAgICAg
ICBbV0syXSBBZGQgQVBJIHRvIGFsbG93IGVtYmVkZGVyIHRvIHNldCBhIHRpbWV6b25lIG92ZXJy
aWRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM4
ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGlu
c3BlY3Rvci9wcm90b2NvbC9QYWdlLmpzb246IEFkZCBzZXRUaW1lWm9uZSBBUEkgYWxsb3dpbmcg
dG8gb3ZlcnJpZGUgdGhlIHBhZ2UgdGltZXpvbmUuCisgICAgICAgICogcnVudGltZS9EYXRlQ29u
dmVyc2lvbi5jcHA6CisgICAgICAgIChKU0M6OmZvcm1hdERhdGVUaW1lKTogRm9ybWF0IHRoZSBv
dmVycmlkZGVuIHRpbWV6b25lIGlmIGl0J3MgZW5hYmxlZC4KKyAgICAgICAgKiBydW50aW1lL0lu
dGxEYXRlVGltZUZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6OmRlZmF1bHRUaW1lWm9uZSk6IFJl
dHVybiB0aGUgb3ZlcnJpZGRlbiB0aW1lem9uZSBpZiBpdCdzIGVuYWJsZWQuCisKIDIwMjAtMDct
MDcgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBC
eXRlY29kZUdlbmVyYXRvciBzaG91bGQgYmUgcm9idXN0IGFnYWluc3QgZmFpbGVkIGNvbnN0YW50
IGdlbmVyYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKaW5kZXggM2I5ZjExMDg2MDBjYzMwZmUzMjI0ZTY3ZGI1MWFmMDg1MmExZjg0
ZC4uMmNkMjZjYzYwZDNiNTE3NzdmN2QwNDdkMDhlZGExZTIwNmIwY2QzYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxOSBAQAorMjAyMC0wNy0wMiAgUGhpbGlwcGUgTm9ybWFuZCAgPHBoaWxuQGlnYWxpYS5jb20+
IGFuZCBQYXZlbCBGZWxkbWFuIDxwYXZlbC5mZWxkbWFuQGdtYWlsLmNvbT4KKworICAgICAgICBb
V0syXSBBZGQgQVBJIHRvIGFsbG93IGVtYmVkZGVyIHRvIHNldCBhIHRpbWV6b25lIG92ZXJyaWRl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM4ODQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9E
YXRlTWF0aC5jcHA6IEFkZCBuZXcgQVBJcyB0byBjb250cm9sIGFuZCBxdWVyeSB0aGUgdGltZXpv
bmUgb3ZlcnJpZGUuCisgICAgICAgIChXVEY6OmlubmVyVGltZVpvbmVPdmVycmlkZSk6IFN0YXRp
YyBzdG9yYWdlIG9mIHRoZSBvdmVycmlkZSBpbmZvcm1hdGlvbnMuCisgICAgICAgIChXVEY6OmNh
bGN1bGF0ZUxvY2FsVGltZU9mZnNldCk6IENhbGN1bGF0ZSBvZmZzZXQgZm9yIG92ZXJyaWRkZW4g
dGltZXpvbmUsIGlmIGl0J3MgcHJlc2VudC4KKyAgICAgICAgKFdURjo6c2V0VGltZVpvbmVPdmVy
cmlkZSk6IE5ldyBBUEkgdG8gc2V0IHRoZSB0aW1lem9uZSBvdmVycmlkZSwgdGhpcyBpcyBtZWFu
dCB0byBiZQorICAgICAgICB1c2VkIGJ5IHRoZSBXZWJJbnNwZWN0b3IgUGFnZSBhZ2VudC4KKyAg
ICAgICAgKFdURjo6dGltZVpvbmVPdmVycmlkZSk6IFF1ZXJ5IHRoZSB0aW1lem9uZSBvdmVycmlk
ZS4KKyAgICAgICAgKFdURjo6dGltZVpvbmVEaXNwbGF5TmFtZU92ZXJyaWRlKTogR2V0IHRoZSB0
aW1lem9uZSBuYW1lIG9mIHRoZSBvdmVycmlkZGVuIHRpbWV6b25lLgorICAgICAgICAqIHd0Zi9E
YXRlTWF0aC5oOgorCiAyMDIwLTA3LTA3ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFA
aWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBXZWJQcm9jZXNzIGhhbmdzIHdoZW4gYnJvd3Np
bmcgR2l0SHViCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDVjOTM4OWFlYTcwOGRiMTQ3NjM5OWUxYTlmMWRlYWM1ZjRi
YjNkMjQuLjY0ZTVmMjQxMzQ5Y2IyYTU4NDcxYWQ4YjlhNzJmZGM5ZjljODZiYjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNTQgQEAKKzIwMjAtMDctMDggIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFu
ZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtXSzJdIEFkZCBBUEkgdG8gYWxsb3cgZW1iZWRkZXIg
dG8gc2V0IGEgdGltZXpvbmUgb3ZlcnJpZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMzg4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkczoKKworICAgICAgICAtIG5ldyBDb2Nv
YSBBUEkKKyAgICAgICAgLSBuZXcgR2xpYiBBUEkgKHRhcmdldHRpbmcgYm90aCBXUEUgYW5kIEdU
SyBwb3J0cykKKyAgICAgICAgLSBuZXcgQyBBUEkgKGZvciB0aGUgd2luIHBvcnQpCisKKyAgICAg
ICAgdGhhdCBhbGxvd3MgdGhlIGVtYmVkZGVyIHRvIHNldCBhIHRpbWV6b25lIG92ZXJyaWRlIGZv
ciB0aGUgV2ViVmlld0NvbmZpZ3VyYXRpb24uIFNpbmNlIHRoaXMKKyAgICAgICAgQVBJIGlzIG5v
dCBleHBvc2VkIGluIGdsaWIgcG9ydHMsIGEgbmV3IGNvbnRydWN0LXRpbWUtb25seSBwcm9wZXJ0
eSB3YXMgYWRkZWQgdG8gdGhlCisgICAgICAgIFdlYktpdFdlYlZpZXcgQVBJLiBJdCB3b3VsZCBh
bHNvIGFsbG93IGZpbmUtZ3JhaW5lZCBjb250cm9sIG92ZXIgbXVsdGlwbGUgcGFnZXMsIGZvcgor
ICAgICAgICBpbnN0YW5jZSBpdCdzIG5vdCBwb3NzaWJsZSBjdXJyZW50bHkgdG8gaGF2ZSB0d28g
cGFnZXMgaW4gZGlmZmVyZW50IHRpbWV6b25lcy4KKworICAgICAgICAqIFNoYXJlZC9XZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRp
b24uY3BwOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6Y29weSBjb25zdCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAo
QVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6c2V0VGltZVpvbmVPdmVycmlkZSk6CisgICAgICAgIChB
UEk6OlBhZ2VDb25maWd1cmF0aW9uOjp0aW1lWm9uZU92ZXJyaWRlIGNvbnN0KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW06CisgICAgICAg
ICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3RpbWVab25lT3ZlcnJpZGVdKToKKyAgICAgICAg
KC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfc2V0VGltZVpvbmVPdmVycmlkZTpdKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwOgorICAg
ICAgICAod2Via2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICh3ZWJraXRXZWJW
aWV3U2V0UHJvcGVydHkpOgorICAgICAgICAod2Via2l0V2ViVmlld0dldFByb3BlcnR5KToKKyAg
ICAgICAgKHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdF93ZWJf
dmlld19nZXRfdGltZV96b25lX292ZXJyaWRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlld0d0ay5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfcmVsYXRlZF92
aWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNl
Y3Rpb25zLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlld1dQRS5jcHA6CisgICAg
ICAgICh3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfcmVsYXRlZF92aWV3KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlvbnMudHh0OgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmNyZWF0aW9uUGFyYW1ldGVycyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwOgorICAgICAgICAoV2ViS2l0OjptX2xpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERv
bWFpbnMpOgorCiAyMDIwLTA3LTA4ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlh
LmNvbT4KIAogICAgICAgICBbV1BFXVtRdF0gRGVwcmVjYXRpb24gd2FybmluZ3MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb252ZXJzaW9uLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb252ZXJzaW9uLmNwcAppbmRleCA5NTU3
NTZiYTQwNWY0MDA5NzA2MTBmOWE2OGM3ZWQ0MmE2N2NiMDE1Li4zNjFlNjkzOTc5NDk5MTFlNmVl
MDMzMWE1MGQ0MTdlOTJhZjcxNzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9EYXRlQ29udmVyc2lvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwCkBAIC0xMDAsMTcgKzEwMCwyMyBAQCBTdHJpbmcgZm9y
bWF0RGF0ZVRpbWUoY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUmIHQsIERhdGVUaW1lRm9ybWF0IGZv
cm1hdCwgYm9vbCBhcwogICAgICAgICAgICAgYXBwZW5kTnVtYmVyPDI+KGJ1aWxkZXIsIG9mZnNl
dCAvIDYwKTsKICAgICAgICAgICAgIGFwcGVuZE51bWJlcjwyPihidWlsZGVyLCBvZmZzZXQgJSA2
MCk7CiAKKyAgICAgICAgICAgIFN0cmluZyB0aW1lWm9uZU5hbWU7CisgICAgICAgICAgICBpZiAo
IVdURjo6dGltZVpvbmVEaXNwbGF5TmFtZU92ZXJyaWRlKCkuaXNFbXB0eSgpKQorICAgICAgICAg
ICAgICAgIHRpbWVab25lTmFtZSA9IFdURjo6dGltZVpvbmVEaXNwbGF5TmFtZU92ZXJyaWRlKCk7
CisgICAgICAgICAgICBlbHNlIHsKICNpZiBPUyhXSU5ET1dTKQotICAgICAgICAgICAgVElNRV9a
T05FX0lORk9STUFUSU9OIHRpbWVab25lSW5mb3JtYXRpb247Ci0gICAgICAgICAgICBHZXRUaW1l
Wm9uZUluZm9ybWF0aW9uKCZ0aW1lWm9uZUluZm9ybWF0aW9uKTsKLSAgICAgICAgICAgIGNvbnN0
IFdDSEFSKiB3aW5UaW1lWm9uZU5hbWUgPSB0LmlzRFNUKCkgPyB0aW1lWm9uZUluZm9ybWF0aW9u
LkRheWxpZ2h0TmFtZSA6IHRpbWVab25lSW5mb3JtYXRpb24uU3RhbmRhcmROYW1lOwotICAgICAg
ICAgICAgU3RyaW5nIHRpbWVab25lTmFtZSh3aW5UaW1lWm9uZU5hbWUpOworICAgICAgICAgICAg
ICAgIFRJTUVfWk9ORV9JTkZPUk1BVElPTiB0aW1lWm9uZUluZm9ybWF0aW9uOworICAgICAgICAg
ICAgICAgIEdldFRpbWVab25lSW5mb3JtYXRpb24oJnRpbWVab25lSW5mb3JtYXRpb24pOworICAg
ICAgICAgICAgICAgIGNvbnN0IFdDSEFSKiB3aW5UaW1lWm9uZU5hbWUgPSB0LmlzRFNUKCkgPyB0
aW1lWm9uZUluZm9ybWF0aW9uLkRheWxpZ2h0TmFtZSA6IHRpbWVab25lSW5mb3JtYXRpb24uU3Rh
bmRhcmROYW1lOworICAgICAgICAgICAgICAgIHRpbWVab25lTmFtZSA9IFN0cmluZyh3aW5UaW1l
Wm9uZU5hbWUpOwogI2Vsc2UKLSAgICAgICAgICAgIHN0cnVjdCB0bSBndG0gPSB0OwotICAgICAg
ICAgICAgY2hhciB0aW1lWm9uZU5hbWVbNzBdOwotICAgICAgICAgICAgc3RyZnRpbWUodGltZVpv
bmVOYW1lLCBzaXplb2YodGltZVpvbmVOYW1lKSwgIiVaIiwgJmd0bSk7CisgICAgICAgICAgICAg
ICAgc3RydWN0IHRtIGd0bSA9IHQ7CisgICAgICAgICAgICAgICAgY2hhciB0ek5hbWVbNzBdOwor
ICAgICAgICAgICAgICAgIHN0cmZ0aW1lKHR6TmFtZSwgc2l6ZW9mKHR6TmFtZSksICIlWiIsICZn
dG0pOworICAgICAgICAgICAgICAgIHRpbWVab25lTmFtZSA9IFN0cmluZyh0ek5hbWUpOwogI2Vu
ZGlmCi0gICAgICAgICAgICBpZiAodGltZVpvbmVOYW1lWzBdKSB7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBpZiAoIXRpbWVab25lTmFtZS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiAoIik7CiAgICAgICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmQodGltZVpvbmVOYW1lKTsKICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnKScp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1l
Rm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZv
cm1hdC5jcHAKaW5kZXggN2RmYmMzNjdjZjRmYjQyOThhZGY2MTFkMTJjNmFlMmY0Njc2MTM4NS4u
NWJjM2U1YWU1YTc5MzI3NDA4MDJiZmEyNWY2ZDcwMTcyNGQ5MjMwZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCkBAIC0z
NCw2ICszNCw3IEBACiAjaW5jbHVkZSA8dW5pY29kZS91Y2FsLmg+CiAjaW5jbHVkZSA8dW5pY29k
ZS91ZGF0cGcuaD4KICNpbmNsdWRlIDx1bmljb2RlL3VlbnVtLmg+CisjaW5jbHVkZSA8d3RmL0Rh
dGVNYXRoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUg
PHd0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmg+CiAKQEAgLTEwMiw2ICsxMDMsMTAgQEAgc3Rh
dGljIEFMV0FZU19JTkxJTkUgYm9vbCBpc1VUQ0VxdWl2YWxlbnQoU3RyaW5nVmlldyB0aW1lWm9u
ZSkKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtZGVmYXVsdHRpbWV6b25lCiBzdGF0
aWMgU3RyaW5nIGRlZmF1bHRUaW1lWm9uZSgpCiB7CisgICAgU3RyaW5nIHR6ID0gV1RGOjp0aW1l
Wm9uZU92ZXJyaWRlKCk7CisgICAgaWYgKCF0ei5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB0
ejsKKwogICAgIFN0cmluZyBjYW5vbmljYWw7CiAKICAgICBWZWN0b3I8VUNoYXIsIDMyPiBidWZm
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi9EYXRlTWF0aC5jcHAKaW5kZXggYWY5MmY2NzQ3NzAzNDljYzhlN2JlOWE1M2IxY2VlNmU3
ODQwZTc4MS4uMTIyMmJiNTI2MGIzNTFmMDVmNWJkODM2ZGNlMTRlNmRjOTFmNzlmMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvRGF0ZU1hdGguY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Rh
dGVNYXRoLmNwcApAQCAtNzYsOSArNzYsMTQgQEAKICNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVk
ZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8dGltZS5oPgorI2luY2x1ZGUgPHVuaWNvZGUvdWNhbC5o
PgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUu
aD4KKyNpbmNsdWRlIDx3dGYvTGFuZ3VhZ2UuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU3BlY2lmaWMuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3VuaWNvZGUvVVRGOENvbnZlcnNpb24u
aD4KIAogI2lmIE9TKFdJTkRPV1MpCiAjaW5jbHVkZSA8d2luZG93cy5oPgpAQCAtOTIsNiArOTcs
MTggQEAgdGVtcGxhdGU8dW5zaWduZWQgbGVuZ3RoPiBpbmxpbmUgYm9vbCBzdGFydHNXaXRoTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IGMKICAgICByZXR1cm4gZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCBsb3dlcmNhc2VMZXR0ZXJzLCBsZW5ndGggLSAxKTsKIH0K
IAorc3RydWN0IFRpbWVab25lT3ZlcnJpZGUgeworICAgIFVDYWxlbmRhciogY2FsOworICAgIFN0
cmluZyBpZDsKKyAgICBTdHJpbmcgZGlzcGxheU5hbWU7Cit9OworCitzdGF0aWMgVGltZVpvbmVP
dmVycmlkZSYgaW5uZXJUaW1lWm9uZU92ZXJyaWRlKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8VGltZVpvbmVPdmVycmlkZT4gdGltZVpvbmVPdmVycmlkZTsKKyAgICByZXR1cm4gdGlt
ZVpvbmVPdmVycmlkZTsKK30KKwogLyogQ29uc3RhbnRzICovCiAKIGNvbnN0IGNoYXIqIGNvbnN0
IHdlZWtkYXlOYW1lWzddID0geyAiTW9uIiwgIlR1ZSIsICJXZWQiLCAiVGh1IiwgIkZyaSIsICJT
YXQiLCAiU3VuIiB9OwpAQCAtMzE4LDYgKzMzNSwxNCBAQCBzdGF0aWMgZG91YmxlIGNhbGN1bGF0
ZURTVE9mZnNldCh0aW1lX3QgbG9jYWxUaW1lLCBkb3VibGUgdXRjT2Zmc2V0KQogLy8gUmV0dXJu
cyBjb21iaW5lZCBvZmZzZXQgaW4gbWlsbGlzZWNvbmQgKFVUQyArIERTVCkuCiBMb2NhbFRpbWVP
ZmZzZXQgY2FsY3VsYXRlTG9jYWxUaW1lT2Zmc2V0KGRvdWJsZSBtcywgVGltZVR5cGUgaW5wdXRU
aW1lVHlwZSkKIHsKKyAgICBhdXRvJiB0eiA9IGlubmVyVGltZVpvbmVPdmVycmlkZSgpOworICAg
IGlmICh0ei5jYWwpIHsKKyAgICAgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7
CisgICAgICAgIHVjYWxfc2V0TWlsbGlzKHR6LmNhbCwgbXMsICZzdGF0dXMpOworICAgICAgICBp
bnQzMl90IG9mZnNldCA9IHVjYWxfZ2V0KHR6LmNhbCwgVUNBTF9aT05FX09GRlNFVCwgJnN0YXR1
cyk7CisgICAgICAgIGludDMyX3QgZHN0T2Zmc2V0ID0gdWNhbF9nZXQodHouY2FsLCBVQ0FMX0RT
VF9PRkZTRVQsICZzdGF0dXMpOworICAgICAgICByZXR1cm4gTG9jYWxUaW1lT2Zmc2V0KGRzdE9m
ZnNldCwgb2Zmc2V0ICsgZHN0T2Zmc2V0KTsKKyAgICB9CiAjaWYgSEFWRShUTV9HTVRPRkYpCiAg
ICAgZG91YmxlIGxvY2FsVG9VVENUaW1lT2Zmc2V0ID0gaW5wdXRUaW1lVHlwZSA9PSBMb2NhbFRp
bWUgPyBjYWxjdWxhdGVVVENPZmZzZXQoKSA6IDA7CiAjZWxzZQpAQCAtMTAxOSw0ICsxMDQ0LDY2
IEBAIFN0cmluZyBtYWtlUkZDMjgyMkRhdGVTdHJpbmcodW5zaWduZWQgZGF5T2ZXZWVrLCB1bnNp
Z25lZCBkYXksIHVuc2lnbmVkIG1vbnRoLCB1CiAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9T
dHJpbmcoKTsKIH0KIAorYm9vbCBzZXRUaW1lWm9uZU92ZXJyaWRlKGNvbnN0IFN0cmluZyYgdGlt
ZVpvbmUpCit7CisgICAgaW5uZXJUaW1lWm9uZU92ZXJyaWRlKCkuZGlzcGxheU5hbWUgPSBTdHJp
bmcoKTsKKyAgICBpZiAoaW5uZXJUaW1lWm9uZU92ZXJyaWRlKCkuY2FsKSB7CisgICAgICAgIHVj
YWxfY2xvc2UoaW5uZXJUaW1lWm9uZU92ZXJyaWRlKCkuY2FsKTsKKyAgICAgICAgaW5uZXJUaW1l
Wm9uZU92ZXJyaWRlKCkuY2FsID0gbnVsbHB0cjsKKyAgICB9CisKKyAgICBpZiAodGltZVpvbmUu
aXNFbXB0eSgpKSB7CisgICAgICAgIGlubmVyVGltZVpvbmVPdmVycmlkZSgpLmlkID0gU3RyaW5n
KCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8vIFRpbWV6b25lIGlzIGFz
Y2lpLgorICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyKHRpbWVab25lLmxlbmd0aCgpKTsKKyAgICBV
Q2hhciogYnVmZmVyU3RhcnQgPSBidWZmZXIuZGF0YSgpOworICAgIENTdHJpbmcgY3R6ID0gdGlt
ZVpvbmUudXRmOCgpOworICAgIGlmICghVW5pY29kZTo6Y29udmVydFVURjhUb1VURjE2KGN0ei5k
YXRhKCksIGN0ei5kYXRhKCkgKyBjdHoubGVuZ3RoKCksICZidWZmZXJTdGFydCwgYnVmZmVyU3Rh
cnQgKyB0aW1lWm9uZS5sZW5ndGgoKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFZl
Y3RvcjxVQ2hhciwgMzI+IGNhbm9uaWNhbEJ1ZmZlcigzMik7CisgICAgVUVycm9yQ29kZSBzdGF0
dXMgPSBVX1pFUk9fRVJST1I7CisgICAgYXV0byBjYW5vbmljYWxMZW5ndGggPSB1Y2FsX2dldENh
bm9uaWNhbFRpbWVab25lSUQoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSwgY2Fub25pY2Fs
QnVmZmVyLmRhdGEoKSwgY2Fub25pY2FsQnVmZmVyLnNpemUoKSwgbnVsbHB0ciwgJnN0YXR1cyk7
CisgICAgaWYgKHN0YXR1cyA9PSBVX0JVRkZFUl9PVkVSRkxPV19FUlJPUikgeworICAgICAgICBz
dGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgICAgIGNhbm9uaWNhbEJ1ZmZlci5ncm93KGNhbm9u
aWNhbExlbmd0aCk7CisgICAgICAgIHVjYWxfZ2V0Q2Fub25pY2FsVGltZVpvbmVJRChidWZmZXIu
ZGF0YSgpLCBidWZmZXIuc2l6ZSgpLCBjYW5vbmljYWxCdWZmZXIuZGF0YSgpLCBjYW5vbmljYWxM
ZW5ndGgsIG51bGxwdHIsICZzdGF0dXMpOworICAgIH0KKyAgICBpZiAoIVVfU1VDQ0VTUyhzdGF0
dXMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBVQ2FsZW5kYXIqIGNhbCA9IHVjYWxf
b3BlbihjYW5vbmljYWxCdWZmZXIuZGF0YSgpLCBjYW5vbmljYWxMZW5ndGgsIG51bGxwdHIsIFVD
QUxfVFJBRElUSU9OQUwsICZzdGF0dXMpOworICAgIGlmICghVV9TVUNDRVNTKHN0YXR1cykpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFZlY3RvcjxVQ2hhciwgMzI+IGRpc3BsYXlOYW1l
QnVmZmVyKDMyKTsKKyAgICBhdXRvIGRpc3BsYXlOYW1lTGVuZ3RoID0gdWNhbF9nZXRUaW1lWm9u
ZURpc3BsYXlOYW1lKGNhbCwgVUNBTF9TVEFOREFSRCwgZGVmYXVsdExhbmd1YWdlKCkudXRmOCgp
LmRhdGEoKSwgZGlzcGxheU5hbWVCdWZmZXIuZGF0YSgpLCBkaXNwbGF5TmFtZUJ1ZmZlci5zaXpl
KCksICZzdGF0dXMpOworICAgIGlmIChzdGF0dXMgPT0gVV9CVUZGRVJfT1ZFUkZMT1dfRVJST1Ip
IHsKKyAgICAgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgICAgICBkaXNwbGF5TmFtZUJ1
ZmZlci5ncm93KGRpc3BsYXlOYW1lTGVuZ3RoKTsKKyAgICAgICAgdWNhbF9nZXRUaW1lWm9uZURp
c3BsYXlOYW1lKGNhbCwgVUNBTF9TVEFOREFSRCwgZGVmYXVsdExhbmd1YWdlKCkudXRmOCgpLmRh
dGEoKSwgZGlzcGxheU5hbWVCdWZmZXIuZGF0YSgpLCBkaXNwbGF5TmFtZUxlbmd0aCwgJnN0YXR1
cyk7CisgICAgfQorICAgIGlmICghVV9TVUNDRVNTKHN0YXR1cykpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGF1dG8mIHRpbWVab25lT3ZlcnJpZGUgPSBpbm5lclRpbWVab25lT3ZlcnJp
ZGUoKTsKKyAgICB0aW1lWm9uZU92ZXJyaWRlLmNhbCA9IGNhbDsKKyAgICB0aW1lWm9uZU92ZXJy
aWRlLmlkID0gU3RyaW5nKGNhbm9uaWNhbEJ1ZmZlci5kYXRhKCksIGNhbm9uaWNhbExlbmd0aCk7
CisgICAgdGltZVpvbmVPdmVycmlkZS5kaXNwbGF5TmFtZSA9IFN0cmluZyhkaXNwbGF5TmFtZUJ1
ZmZlci5kYXRhKCksIGRpc3BsYXlOYW1lTGVuZ3RoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
U3RyaW5nIHRpbWVab25lT3ZlcnJpZGUoKQoreworICAgIHJldHVybiBpbm5lclRpbWVab25lT3Zl
cnJpZGUoKS5pZDsKK30KKworU3RyaW5nIHRpbWVab25lRGlzcGxheU5hbWVPdmVycmlkZSgpCit7
CisgICAgcmV0dXJuIGlubmVyVGltZVpvbmVPdmVycmlkZSgpLmRpc3BsYXlOYW1lOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5oCmluZGV4IDI0NmJhNjdjNzY0YjYyOTA0MmE3OTI3
ZDI0ZmU4OWIwNDlkODJhMGIuLmIxM2ZjMWQ4NjBkYTU2MGViNTc3NWJiZGIwZmVjNGE3MjUyMmM2
YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvRGF0ZU1hdGguaApAQCAtMzg5LDYgKzM4OSwxMCBAQCBpbmxpbmUgaW50IGRheUluTW9u
dGhGcm9tRGF5SW5ZZWFyKGludCBkYXlJblllYXIsIGJvb2wgbGVhcFllYXIpCiAgICAgcmV0dXJu
IGQgLSBzdGVwOwogfQogCitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBzZXRUaW1lWm9uZU92ZXJy
aWRlKGNvbnN0IFN0cmluZyYpOworV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyB0aW1lWm9uZU92
ZXJyaWRlKCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHRpbWVab25lRGlzcGxheU5hbWVP
dmVycmlkZSgpOworCiAvLyBSZXR1cm5zIGNvbWJpbmVkIG9mZnNldCBpbiBtaWxsaXNlY29uZCAo
VVRDICsgRFNUKS4KIFdURl9FWFBPUlRfUFJJVkFURSBMb2NhbFRpbWVPZmZzZXQgY2FsY3VsYXRl
TG9jYWxUaW1lT2Zmc2V0KGRvdWJsZSB1dGNJbk1pbGxpc2Vjb25kcywgVGltZVR5cGUgPSBVVENU
aW1lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcAppbmRleCBhM2I2MTU2ZTFlYjIwNjk1YjE4MWIyYWFiNjQ0MDQwOGFjZTY1Zjhl
Li5kZTlhYTc3OGE1YTMyODI2MDBlMzA1N2VlYmVmOTNiNTlhZjVjZTA5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtMTYx
LDYgKzE2MSw4IEBAIHZvaWQgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICNpZiBQTEFURk9STShHVEspCiAgICAgZW5jb2RlciA8
PCB0aGVtZU5hbWU7CiAjZW5kaWYKKworICAgIGVuY29kZXIgPDwgdGltZVpvbmVPdmVycmlkZTsK
IH0KIAogT3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKQEAgLTUwOSw2ICs1MTEs
MTIgQEAgT3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2QKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKICNlbmRpZgogCisgICAgT3B0aW9uYWw8T3B0aW9uYWw8U3RyaW5nPj4gdGltZVpvbmVPdmVy
cmlkZTsKKyAgICBkZWNvZGVyID4+IHRpbWVab25lT3ZlcnJpZGU7CisgICAgaWYgKCF0aW1lWm9u
ZU92ZXJyaWRlKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHBhcmFtZXRlcnMu
dGltZVpvbmVPdmVycmlkZSA9IFdURk1vdmUoKnRpbWVab25lT3ZlcnJpZGUpOworCiAgICAgcmV0
dXJuIHBhcmFtZXRlcnM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCA2NjZiNTk0ZTU0Njk2ZjMyMjY1YWUyMDA4M2ExNGM4
YjE3ZjIxNWJkLi5iYTE2OGU3MTBlNDQ4MzE5MjYwZGVhMmY5YjVlNmJiNGQ4NDRhMDQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCkBA
IC0yMzQsNiArMjM0LDggQEAgc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogI2lm
IFBMQVRGT1JNKEdUSykKICAgICBTdHJpbmcgdGhlbWVOYW1lOwogI2VuZGlmCisKKyAgICBPcHRp
b25hbDxTdHJpbmc+IHRpbWVab25lT3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmln
dXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3Vy
YXRpb24uY3BwCmluZGV4IDQzMWZjZWY3ODZjOWI1YzMwMDQ3NmEzMTJhNDc4OGUwOTQwNDRlNDku
LjNmN2ZkZTNkMjYwYjI0ZmM2YzAzZTBhYjBjYjMzMzM1MWM4NGVkOTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcApAQCAt
OTgsNiArOTgsNyBAQCBSZWY8UGFnZUNvbmZpZ3VyYXRpb24+IFBhZ2VDb25maWd1cmF0aW9uOjpj
b3B5KCkgY29uc3QKICAgICBjb3B5LT5tX2xvYWRzU3VicmVzb3VyY2VzID0gdGhpcy0+bV9sb2Fk
c1N1YnJlc291cmNlczsKICAgICBjb3B5LT5tX2xvYWRzRnJvbU5ldHdvcmsgPSB0aGlzLT5tX2xv
YWRzRnJvbU5ldHdvcms7CiAgICAgY29weS0+bV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmRE
b21haW5zID0gdGhpcy0+bV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zOworICAg
IGNvcHktPm1fdGltZVpvbmVPdmVycmlkZSA9IHRoaXMtPm1fdGltZVpvbmVPdmVycmlkZTsKIAog
ICAgIHJldHVybiBjb3B5OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJUGFnZUNvbmZpZ3VyYXRpb24uaAppbmRleCAxMjA5YzM2ZThjZmRmMDM3NzQyOWM3YjE5NDdm
OWU2NWM5MmZmYmRlLi5mZTM3MzMzYWUzNTA0M2ZjODg5OTNlZjM1Mjk1ZWQ1M2M2ZDI3NGM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRp
b24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRp
b24uaApAQCAtMTYyLDcgKzE2MiwxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFNob3VsZFJl
bGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKFdlYkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nIHZhbHVlKSB7IG1fc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmcgPSB2YWx1ZTsgfQogICAgIFdlYkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9zaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZzsgfQotICAgIAorCisg
ICAgdm9pZCBzZXRUaW1lWm9uZU92ZXJyaWRlKGNvbnN0IFdURjo6U3RyaW5nJiB0aW1lWm9uZU92
ZXJyaWRlKSB7IG1fdGltZVpvbmVPdmVycmlkZSA9IHRpbWVab25lT3ZlcnJpZGU7IH0KKyAgICBj
b25zdCBXVEY6OlN0cmluZyB0aW1lWm9uZU92ZXJyaWRlKCkgY29uc3QgeyByZXR1cm4gbV90aW1l
Wm9uZU92ZXJyaWRlOyB9CisKIHByaXZhdGU6CiAKICAgICBSZWZQdHI8V2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbD4gbV9wcm9jZXNzUG9vbDsKQEAgLTIwNyw2ICsyMTAsOCBAQCBwcml2YXRlOgogICAg
IGJvb2wgbV9sb2Fkc0Zyb21OZXR3b3JrIHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9saW1pdHNOYXZp
Z2F0aW9uc1RvQXBwQm91bmREb21haW5zIHsgZmFsc2UgfTsKICAgICBXZWJDb3JlOjpTaG91bGRS
ZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBtX3Nob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nIHsgV2ViQ29yZTo6U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc6
Ok5vIH07CisKKyAgICBXVEY6OlN0cmluZyBtX3RpbWVab25lT3ZlcnJpZGU7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KaW5kZXggYmVmMWUyNWEzOTgzYzgx
MjlmYjliZmY3ZjJjZTBkY2U2NzViNjFlZi4uNzQ5NDNhNDUyYTU4MWFiNDBhZGI3ZDkwODMyYmRj
ODBhZjU4NzdlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KQEAgLTEyODEsNiArMTI4MSwxNiBA
QCBzdGF0aWMgX1dLV2ViVmlld0NhdGVnb3J5IHRvV0tXZWJWaWV3Q2F0ZWdvcnkoV2ViS2l0OjpX
ZWJWaWV3Q2F0ZWdvcnkgY2F0ZWdvcnkpCiAgICAgX3BhZ2VDb25maWd1cmF0aW9uLT5zZXRQcm9j
ZXNzRGlzcGxheU5hbWUobHNEaXNwbGF5TmFtZSk7CiB9CiAKKy0gKE5TU3RyaW5nICopX3RpbWVa
b25lT3ZlcnJpZGUKK3sKKyAgICByZXR1cm4gX3BhZ2VDb25maWd1cmF0aW9uLT50aW1lWm9uZU92
ZXJyaWRlKCk7Cit9CisKKy0gKHZvaWQpX3NldFRpbWVab25lT3ZlcnJpZGU6KE5TU3RyaW5nICop
dGltZVpvbmUKK3sKKyAgICBfcGFnZUNvbmZpZ3VyYXRpb24tPnNldFRpbWVab25lT3ZlcnJpZGUo
dGltZVpvbmUpOworfQorCiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXdDb25maWd1
cmF0aW9uIChXS0RlcHJlY2F0ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oCmlu
ZGV4IDQ3OGFmYjBlNWFmNmJiODhhODFkOTlmNzVlNTJmOGFkMzI1OGVlMGYuLjVlODk3YTNmMDZl
YjkyMzBkMDk2ZDZiYWQxMzNmYzkwYWQwMjUzNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9u
UHJpdmF0ZS5oCkBAIC0xMjgsNSArMTI4LDYgQEAgdHlwZWRlZiBOU19FTlVNKE5TVUludGVnZXIs
IF9XS1dlYlZpZXdDYXRlZ29yeSkgewogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0
SWdub3Jlc0FwcEJvdW5kRG9tYWluczopIEJPT0wgX2lnbm9yZXNBcHBCb3VuZERvbWFpbnMgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nOikgQk9PTCBfc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIEBwcm9wZXJ0
eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFByb2Nlc3NEaXNwbGF5TmFtZTopIE5TU3RyaW5nICpf
cHJvY2Vzc0Rpc3BsYXlOYW1lIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlv
cyhXS19JT1NfVEJBKSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRUaW1lWm9u
ZU92ZXJyaWRlOikgTlNTdHJpbmcgKl90aW1lWm9uZU92ZXJyaWRlIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKIEBlbmQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKaW5k
ZXggMzAwYTBiZTEyMDk5NmMyNWUzNTdiNGJhNDIzNDk1MTM1ZjlhMmZlMC4uNDkyNWNkOWJmZThl
MDgzYzEyNGRhYjRjZTU1NWZkMzZmMzE5ZWU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTE5MTAsNiArMTkx
MCw3IEBAIHZvaWQgd2Via2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KFdlYktpdFdl
YkNvbnRleHQqIGNvbnRleHQsIFdlYktpdFdlYlZpCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNl
dFJlbGF0ZWRQYWdlKHJlbGF0ZWRWaWV3ID8gJndlYmtpdFdlYlZpZXdHZXRQYWdlKHJlbGF0ZWRW
aWV3KSA6IG51bGxwdHIpOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRVc2VyQ29udGVudENv
bnRyb2xsZXIodXNlckNvbnRlbnRNYW5hZ2VyID8gd2Via2l0VXNlckNvbnRlbnRNYW5hZ2VyR2V0
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkodXNlckNvbnRlbnRNYW5hZ2VyKSA6IG51bGxwdHIp
OwogICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRDb250cm9sbGVkQnlBdXRvbWF0aW9uKHdlYmtp
dF93ZWJfdmlld19pc19jb250cm9sbGVkX2J5X2F1dG9tYXRpb24od2ViVmlldykpOworICAgIHBh
Z2VDb25maWd1cmF0aW9uLT5zZXRUaW1lWm9uZU92ZXJyaWRlKHdlYmtpdF93ZWJfdmlld19nZXRf
dGltZV96b25lX292ZXJyaWRlKHdlYlZpZXcpKTsKIAogICAgIFdlYktpdFdlYnNpdGVEYXRhTWFu
YWdlciogbWFuYWdlciA9IHdlYmtpdFdlYlZpZXdHZXRXZWJzaXRlRGF0YU1hbmFnZXIod2ViVmll
dyk7CiAgICAgaWYgKCFtYW5hZ2VyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCBjYWY4ZWZlODgxZjYzMzM3MjYwNzEwMGU4
ZDUxYjIyZGIxNjA3Y2U4Li41MTM3ODc4ZmM5ZDA5ZWQ2NzE4OWFjMjk5NjE5NjBlMzUxMDIxMjdk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJW
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJW
aWV3LmNwcApAQCAtMjAzLDcgKzIwMyw4IEBAIGVudW0gewogICAgIFBST1BfRURJVEFCTEUsCiAg
ICAgUFJPUF9QQUdFX0lELAogICAgIFBST1BfSVNfTVVURUQsCi0gICAgUFJPUF9XRUJTSVRFX1BP
TElDSUVTCisgICAgUFJPUF9XRUJTSVRFX1BPTElDSUVTLAorICAgIFBST1BfVElNRV9aT05FX09W
RVJSSURFCiB9OwogCiB0eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIEdSZWZQdHI8V2ViS2l0V2Vi
UmVzb3VyY2U+ID4gTG9hZGluZ1Jlc291cmNlc01hcDsKQEAgLTMwNiw2ICszMDcsOCBAQCBzdHJ1
Y3QgX1dlYktpdFdlYlZpZXdQcml2YXRlIHsKIAogICAgIEdSZWZQdHI8V2ViS2l0V2Vic2l0ZURh
dGFNYW5hZ2VyPiB3ZWJzaXRlRGF0YU1hbmFnZXI7CiAgICAgR1JlZlB0cjxXZWJLaXRXZWJzaXRl
UG9saWNpZXM+IHdlYnNpdGVQb2xpY2llczsKKworICAgIENTdHJpbmcgdGltZVpvbmVPdmVycmlk
ZTsKIH07CiAKIHN0YXRpYyBndWludCBzaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwgfTsKQEAg
LTg0OCw2ICs4NTEsOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3U2V0UHJvcGVydHkoR09i
amVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIGNvbnN0IEdWYWx1ZQogICAgIGNhc2UgUFJPUF9X
RUJTSVRFX1BPTElDSUVTOgogICAgICAgICB3ZWJWaWV3LT5wcml2LT53ZWJzaXRlUG9saWNpZXMg
PSBzdGF0aWNfY2FzdDxXZWJLaXRXZWJzaXRlUG9saWNpZXMqPihnX3ZhbHVlX2dldF9vYmplY3Qo
dmFsdWUpKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1RJTUVfWk9ORV9PVkVSUklE
RToKKyAgICAgICAgd2ViVmlldy0+cHJpdi0+dGltZVpvbmVPdmVycmlkZSA9IGdfdmFsdWVfZ2V0
X3N0cmluZyh2YWx1ZSk7CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEdf
T0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJZCwgcGFyYW1TcGVj
KTsKICAgICB9CkBAIC05MTYsNiArOTIyLDkgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0dl
dFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBHVmFsdWUqIHZhbHUKICAg
ICBjYXNlIFBST1BfV0VCU0lURV9QT0xJQ0lFUzoKICAgICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0
KHZhbHVlLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfcG9saWNpZXMod2ViVmlldykpOwog
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfVElNRV9aT05FX09WRVJSSURFOgorICAgICAg
ICBnX3ZhbHVlX3NldF9zdHJpbmcodmFsdWUsIHdlYmtpdF93ZWJfdmlld19nZXRfdGltZV96b25l
X292ZXJyaWRlKHdlYlZpZXcpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAg
ICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElkLCBwYXJh
bVNwZWMpOwogICAgIH0KQEAgLTEzMjAsNiArMTMyOSwyMyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRf
d2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAg
ICAgICAgICAgIFdFQktJVF9UWVBFX1dFQlNJVEVfUE9MSUNJRVMsCiAgICAgICAgICAgICBzdGF0
aWNfY2FzdDxHUGFyYW1GbGFncz4oV0VCS0lUX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09O
U1RSVUNUX09OTFkpKSk7CiAKKyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJWaWV3Ojp0aW1lLXpv
bmUtb3ZlcnJpZGU6CisgICAgICoKKyAgICAgKiBUaGUgdGltZXpvbmUgb3ZlcnJpZGUgZm9yIHRo
aXMgd2ViLXZpZXcuCisgICAgICoKKyAgICAgKiBTaW5jZTogMi4zMAorICAgICAqLworICAgIGdf
b2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCisgICAgICAgIGdPYmplY3RDbGFzcywKKyAg
ICAgICAgUFJPUF9USU1FX1pPTkVfT1ZFUlJJREUsCisgICAgICAgIGdfcGFyYW1fc3BlY19zdHJp
bmcoCisgICAgICAgICAgICAidGltZS16b25lLW92ZXJyaWRlIiwKKyAgICAgICAgICAgIF8oIlRp
bWUgWm9uZSBPdmVycmlkZSIpLAorICAgICAgICAgICAgXygiVGhlIHRpbWUgem9uZSB0byB1c2Ug
aW5zdGVhZCBvZiB0aGUgc3lzdGVtIG9uZSIpLAorICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAg
ICAgICAgIHN0YXRpY19jYXN0PEdQYXJhbUZsYWdzPihXRUJLSVRfUEFSQU1fUkVBRFdSSVRFIHwg
R19QQVJBTV9DT05TVFJVQ1RfT05MWSkpKTsKKwogICAgIC8qKgogICAgICAqIFdlYktpdFdlYlZp
ZXc6OmxvYWQtY2hhbmdlZDoKICAgICAgKiBAd2ViX3ZpZXc6IHRoZSAjV2ViS2l0V2ViVmlldyBv
biB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKQEAgLTQ2OTksMyArNDcyNSwyMSBAQCBXZWJL
aXRXZWJzaXRlUG9saWNpZXMqIHdlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9wb2xpY2llcyhX
ZWJLaXRXZWJWaWV3KiB3ZWJWaQogCiAgICAgcmV0dXJuIHdlYlZpZXctPnByaXYtPndlYnNpdGVQ
b2xpY2llcy5nZXQoKTsKIH0KKworLyoqCisgKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3RpbWVfem9u
ZV9vdmVycmlkZToKKyAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldworICoKKyAqIEdldCB0
aGUgI1dlYktpdFdlYlZpZXc6dGltZS16b25lLW92ZXJyaWRlIHByb3BlcnR5LgorICoKKyAqIFJl
dHVybnM6IChhbGxvdy1ub25lKTogdGhlIHRpbWUgem9uZSBmb3IgV2ViVmlldywgb3IgJU5VTEwg
aWYgI1dlYktpdFdlYlZpZXc6dGltZS16b25lLW92ZXJyaWRlCisgKiB3YXMgbm90IHNldC4KKyAq
CisgKiBTaW5jZTogMi4zMAorICovCitjb25zdCBnY2hhciogd2Via2l0X3dlYl92aWV3X2dldF90
aW1lX3pvbmVfb3ZlcnJpZGUoV2ViS2l0V2ViVmlldyogd2ViVmlldykKK3sKKyAgICBnX3JldHVy
bl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldyksIG51bGxwdHIpOworCisg
ICAgcmV0dXJuIHdlYlZpZXctPnByaXYtPnRpbWVab25lT3ZlcnJpZGUuZGF0YSgpOworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaAppbmRleCBh
YzUxNjgzYjY3NWQ1YTk4YjY2NTUzMjNmOWE1MWM0OWU3NjIzYTFlLi4wMTg5NGMxY2Q0ZWMxN2Zh
YTQwNTJlMGM3ZWUzNmNhMzBhNTNiZWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaApAQCAtNTg5LDYgKzU4OSw4IEBAIHdlYmtpdF93ZWJf
dmlld19nZXRfaW5wdXRfbWV0aG9kX2NvbnRleHQgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcK
IFdFQktJVF9BUEkgV2ViS2l0V2Vic2l0ZVBvbGljaWVzICoKIHdlYmtpdF93ZWJfdmlld19nZXRf
d2Vic2l0ZV9wb2xpY2llcyAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAg
ICAgKndlYl92aWV3KTsKIAorV0VCS0lUX0FQSSBjb25zdCBnY2hhciAqCit3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X3RpbWVfem9uZV9vdmVycmlkZSAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAg
ICAgICAgICAgICp3ZWJfdmlldyk7CiAKIEdfRU5EX0RFQ0xTCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0d0ay5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdHdGsuY3BwCmluZGV4IDliOTky
NzViMjRlZmM0YWNjN2FmMDE1NTBjMWVmM2Y3NzhlMDRlMTUuLjRjNGE0MzA3NDIwMjk0Zjk1MTFm
YzRlMWMyZWJmMWI4MGUwZWZiZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlld0d0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3R3RrLmNwcApAQCAtMzUzLDYgKzM1Myw3IEBAIEd0a1dp
ZGdldCogd2Via2l0X3dlYl92aWV3X25ld193aXRoX3JlbGF0ZWRfdmlldyhXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3KQogICAgICAgICAic2V0dGluZ3MiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRp
bmdzKHdlYlZpZXcpLAogICAgICAgICAicmVsYXRlZC12aWV3Iiwgd2ViVmlldywKICAgICAgICAg
IndlYnNpdGUtcG9saWNpZXMiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfcG9saWNpZXMo
d2ViVmlldyksCisgICAgICAgICJ0aW1lLXpvbmUtb3ZlcnJpZGUiLCB3ZWJraXRfd2ViX3ZpZXdf
Z2V0X3RpbWVfem9uZV9vdmVycmlkZSh3ZWJWaWV3KSwKICAgICAgICAgbnVsbHB0cikpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0
Mmd0ay00LjAtc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9k
b2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dAppbmRleCA2MmIwZTEwODZiMDk4ZjMxNTJm
Y2QxNzkzYTEzYWExZDNlZWIwNDgzLi5hZmQyNGY5MWM2YTE2NTNiYzkzMWQ3ZDgyZDY1YjE5ZmY3
NzE3NTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mv
d2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKQEAgLTI5MCw2ICsyOTAs
NyBAQCB3ZWJraXRfd2ViX3ZpZXdfc2VuZF9tZXNzYWdlX3RvX3BhZ2VfZmluaXNoCiB3ZWJraXRf
d2ViX3ZpZXdfc2V0X2lucHV0X21ldGhvZF9jb250ZXh0CiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2lu
cHV0X21ldGhvZF9jb250ZXh0CiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfcG9saWNpZXMK
K3dlYmtpdF93ZWJfdmlld19nZXRfdGltZV96b25lX292ZXJyaWRlCiAKIDxTVUJTRUNUSU9OIFdl
YktpdEphdmFzY3JpcHRSZXN1bHQ+CiBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlldy5oCmluZGV4IDIzMTQ5YjBi
Zjc0YWQwYjY2ODM5MWZmOWQ2Y2YxZDk4ZmJjMTU4YTguLmU1NzU0YzUwNzcxYThiMTk1YWE4MDM5
Mjc4YTBmZTk1ZGE4ZmI5YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS93cGUvV2ViS2l0V2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93
cGUvV2ViS2l0V2ViVmlldy5oCkBAIC01NjUsNiArNTY1LDkgQEAgd2Via2l0X3dlYl92aWV3X2dl
dF9pbnB1dF9tZXRob2RfY29udGV4dCAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldwogV0VCS0lU
X0FQSSBXZWJLaXRXZWJzaXRlUG9saWNpZXMgKgogd2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRl
X3BvbGljaWVzICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2Vi
X3ZpZXcpOwogCitXRUJLSVRfQVBJIGNvbnN0IGdjaGFyICoKK3dlYmtpdF93ZWJfdmlld19nZXRf
dGltZV96b25lX292ZXJyaWRlICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAg
ICAgKndlYl92aWV3KTsKKwogR19FTkRfREVDTFMKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXdXUEUuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3V1BFLmNwcAppbmRleCA1OTYz
NjY4NTViZjM1ZWU1NDEwMWM2MGRlNWQ1YTM5NTY3MTBiMGMxLi40MWI2ZTNkNmExMGRjNzQwMThk
MzA5NjhmZjJhYTY4MGU2NzY2NTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvd3BlL1dlYktpdFdlYlZpZXdXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlld1dQRS5jcHAKQEAgLTEzNiw2ICsxMzYsNyBAQCBXZWJL
aXRXZWJWaWV3KiB3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfcmVsYXRlZF92aWV3KFdlYktpdFdl
YlZpZXdCYWNrZW5kKiBiYWNrZQogICAgICAgICAidXNlci1jb250ZW50LW1hbmFnZXIiLCB3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29udGVudF9tYW5hZ2VyKHdlYlZpZXcpLAogICAgICAgICAi
c2V0dGluZ3MiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHdlYlZpZXcpLAogICAgICAg
ICAicmVsYXRlZC12aWV3Iiwgd2ViVmlldywKKyAgICAgICAgInRpbWUtem9uZS1vdmVycmlkZSIs
IHdlYmtpdF93ZWJfdmlld19nZXRfdGltZV96b25lX292ZXJyaWRlKHdlYlZpZXcpLAogICAgICAg
ICBudWxscHRyKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS93cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS93cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4dAppbmRleCA3ZDEyMTRiMWNiMTU3NzI4
ZWVhOTU5YzgwZWM2MDQ2OWI4NjQ4OGE0Li5iNWY4MWYwOGI5MGQ5MGU1YTY3YzQ1NmI0MzA1ZmQ0
MzEzNTJmZjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2Rv
Y3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlvbnMudHh0CkBAIC0yNjIsNiArMjYyLDcgQEAgd2Via2l0
X3dlYl92aWV3X3NlbmRfbWVzc2FnZV90b19wYWdlX2ZpbmlzaAogd2Via2l0X3dlYl92aWV3X3Nl
dF9pbnB1dF9tZXRob2RfY29udGV4dAogd2Via2l0X3dlYl92aWV3X2dldF9pbnB1dF9tZXRob2Rf
Y29udGV4dAogd2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX3BvbGljaWVzCit3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X3RpbWVfem9uZV9vdmVycmlkZQogCiA8U1VCU0VDVElPTiBXZWJLaXRKYXZhc2Ny
aXB0UmVzdWx0PgogV2ViS2l0SmF2YXNjcmlwdFJlc3VsdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggNWMxODNiNWNkMzgyMmE5NmE0NTA0MWU3NTIxYjU2MjFm
MTVlY2U1Yy4uMGRhM2M2NmU2YWVlMWJjMTdkNWQxMjI1NDU1ODQ2ODBkMzdkZDk2MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC03ODMwLDYgKzc4MzAsNyBA
QCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0
ZXJzKFdlYlByb2Nlc3NQcm94eSYgcHJvYwogICAgIHBhcmFtZXRlcnMuc2hvdWxkQ2FwdHVyZURp
c3BsYXlJblVJUHJvY2VzcyA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5jb25maWd1cmF0aW9u
KCkuc2hvdWxkQ2FwdHVyZURpc3BsYXlJblVJUHJvY2VzcygpOwogICAgIHBhcmFtZXRlcnMubGlt
aXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyA9IG1fbGltaXRzTmF2aWdhdGlvbnNUb0Fw
cEJvdW5kRG9tYWluczsKICAgICBwYXJhbWV0ZXJzLnNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nID0gbV9jb25maWd1cmF0aW9uLT5zaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVC
bG9ja2luZygpOworICAgIHBhcmFtZXRlcnMudGltZVpvbmVPdmVycmlkZSA9IG1fY29uZmlndXJh
dGlvbi0+dGltZVpvbmVPdmVycmlkZSgpOwogCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIHBhcmFt
ZXRlcnMudGhlbWVOYW1lID0gcGFnZUNsaWVudCgpLnRoZW1lTmFtZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBiNzEyNGU4ZWQzMDRhYjdi
MjAwOTUwMmQ2YWMyODc2NzdhZWIxYmUyLi43Mzk3NWUwYzFlNWRlOWQwNmUwM2ViM2Y3YjNmODA4
NWM5NDNmMTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcApAQCAtNDgyLDYgKzQ4Miw5IEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIg
cGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKICAgICBB
U1NFUlQobV9pZGVudGlmaWVyKTsKIAorICAgIGlmIChwYXJhbWV0ZXJzLnRpbWVab25lT3ZlcnJp
ZGUpCisgICAgICAgIFdURjo6c2V0VGltZVpvbmVPdmVycmlkZSgqcGFyYW1ldGVycy50aW1lWm9u
ZU92ZXJyaWRlKTsKKwogICAgIG1fcGFnZUdyb3VwID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
d2ViUGFnZUdyb3VwKHBhcmFtZXRlcnMucGFnZUdyb3VwRGF0YSk7CiAKICAgICBQYWdlQ29uZmln
dXJhdGlvbiBwYWdlQ29uZmlndXJhdGlvbigKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjODBmZjUyYzNmODlhYzZmMWEwMzAzNmYxMzFiNDRmYTBl
NzY3ZGE0Li45Y2JlYzhjMzcxNzRjYTU2YWJmZjViYjgwMjk5MzJhMzJjYjYyNDFhIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcg
QEAKKzIwMjAtMDctMDggIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgor
CisgICAgICAgIFtXSzJdIEFkZCBBUEkgdG8gYWxsb3cgZW1iZWRkZXIgdG8gc2V0IGEgdGltZXpv
bmUgb3ZlcnJpZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxMzg4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZCBhIG5ldyAtdCBydW50aW1lIG9wdGlvbiB0byBhbGxvdyB0d2Vha2luZyB0aGUgdGlt
ZXpvbmUgdXNlZCBieSB0aGUgR1RLIGFuZCBXUEUgTWluaUJyb3dzZXJzLgorICAgICAgICBOZXcg
Z2xpYiBhbmQgQ29jb2EgQVBJIHRlc3RzIHdlcmUgYWxzbyBhZGRlZCBmb3IgdGhlIG5ldyBBUEku
CisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jOgorICAgICAgICAo
d2ViVmlld0RlY2lkZVBvbGljeSk6CisgICAgICAgIChuZXdUYWJDYWxsYmFjayk6CisgICAgICAg
IChvcGVuUHJpdmF0ZVdpbmRvdyk6CisgICAgICAgIChicm93c2VyX3dpbmRvd19nZXRfb3JfY3Jl
YXRlX3dlYl92aWV3X2Zvcl9hdXRvbWF0aW9uKToKKyAgICAgICAgKGJyb3dzZXJfd2luZG93X2Ny
ZWF0ZV93ZWJfdmlld19pbl9uZXdfdGFiX2Zvcl9hdXRvbWF0aW9uKToKKyAgICAgICAgKiBNaW5p
QnJvd3Nlci9ndGsvbWFpbi5jOgorICAgICAgICAoY3JlYXRlQnJvd3NlclRhYik6CisgICAgICAg
ICogTWluaUJyb3dzZXIvd3BlL21haW4uY3BwOgorICAgICAgICAobWFpbik6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UaW1lWm9uZU92ZXJyaWRl
Lm1tOiBBZGRlZC4KKyAgICAgICAgKFRpbWVab25lT3ZlcnJpZGVUZXN0OjpydW5TY3JpcHRBbmRF
eGVjdXRlQ2FsbGJhY2spOgorICAgICAgICAoVEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYlZpZXcuY3BwOgorICAgICAgICAodGVz
dFdlYlZpZXdUaW1lWm9uZU92ZXJyaWRlKToKKyAgICAgICAgKGJlZm9yZUFsbCk6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuY3BwOgorICAgICAg
ICAoV2ViVmlld1Rlc3Q6OmluaXRpYWxpemVXZWJWaWV3KToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5oOgorICAgICAgICAqIGZsYXRwYWsvZmxh
dHBha3V0aWxzLnB5OgorICAgICAgICAoV2Via2l0RmxhdHBhay5ydW5faW5fc2FuZGJveCk6IFNl
dCB0aW1lem9uZSB0byBBbWVyaWNhL0xvc19BbmdlbGVzLCBpdCdzIGVxdWl2YWxlbnQgdG8gUERU
IGJ1dAorICAgICAgICBlYXNpZXIgdG8gdW5kZXJzdGFuZC4KKwogMjAyMC0wNy0wOCAgUGhpbGlw
cGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0ZsYXRwYWsgU0RL
XSBQcmUtc3RhcnQgc2NjYWNoZSBzZXJ2ZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2Vy
L2d0ay9Ccm93c2VyV2luZG93LmMgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRv
dy5jCmluZGV4IDVjZDg0ZGFjM2QzNDljYzYxMTk5Y2IyMmJjZTNhODE2NzA2YzIyNTAuLmQ1MTk2
MmE3YmNlNmZmZDRiNTJkYjIxMzdiODliYTU2NTIxM2ZlNTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01p
bmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3Rr
L0Jyb3dzZXJXaW5kb3cuYwpAQCAtNDQ5LDYgKzQ0OSw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJW
aWV3RGVjaWRlUG9saWN5KFdlYktpdFdlYlZpZXcgKndlYlZpZXcsIFdlYktpdFBvbGljeURlY2lz
aW9uCiAgICAgICAgICJ1c2VyLWNvbnRlbnQtbWFuYWdlciIsIHdlYmtpdF93ZWJfdmlld19nZXRf
dXNlcl9jb250ZW50X21hbmFnZXIod2ViVmlldyksCiAgICAgICAgICJpcy1jb250cm9sbGVkLWJ5
LWF1dG9tYXRpb24iLCB3ZWJraXRfd2ViX3ZpZXdfaXNfY29udHJvbGxlZF9ieV9hdXRvbWF0aW9u
KHdlYlZpZXcpLAogICAgICAgICAid2Vic2l0ZS1wb2xpY2llcyIsIHdlYmtpdF93ZWJfdmlld19n
ZXRfd2Vic2l0ZV9wb2xpY2llcyh3ZWJWaWV3KSwKKyAgICAgICAgInRpbWUtem9uZS1vdmVycmlk
ZSIsIHdlYmtpdF93ZWJfdmlld19nZXRfdGltZV96b25lX292ZXJyaWRlKHdlYlZpZXcpLAogICAg
ICAgICBOVUxMKSk7CiAgICAgYnJvd3Nlcl93aW5kb3dfYXBwZW5kX3ZpZXcod2luZG93LCBuZXdX
ZWJWaWV3KTsKICAgICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9yZXF1ZXN0KG5ld1dlYlZpZXcsIHdl
YmtpdF9uYXZpZ2F0aW9uX2FjdGlvbl9nZXRfcmVxdWVzdChuYXZpZ2F0aW9uQWN0aW9uKSk7CkBA
IC02MzUsNiArNjM2LDcgQEAgc3RhdGljIHZvaWQgbmV3VGFiQ2FsbGJhY2soR1NpbXBsZUFjdGlv
biAqYWN0aW9uLCBHVmFyaWFudCAqcGFyYW1ldGVyLCBncG9pbnRlcgogICAgICAgICAidXNlci1j
b250ZW50LW1hbmFnZXIiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29udGVudF9tYW5hZ2Vy
KHdlYlZpZXcpLAogICAgICAgICAiaXMtY29udHJvbGxlZC1ieS1hdXRvbWF0aW9uIiwgd2Via2l0
X3dlYl92aWV3X2lzX2NvbnRyb2xsZWRfYnlfYXV0b21hdGlvbih3ZWJWaWV3KSwKICAgICAgICAg
IndlYnNpdGUtcG9saWNpZXMiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfcG9saWNpZXMo
d2ViVmlldyksCisgICAgICAgICJ0aW1lLXpvbmUtb3ZlcnJpZGUiLCB3ZWJraXRfd2ViX3ZpZXdf
Z2V0X3RpbWVfem9uZV9vdmVycmlkZSh3ZWJWaWV3KSwKICAgICAgICAgTlVMTCkpKTsKICAgICBn
dGtfd2lkZ2V0X2dyYWJfZm9jdXMod2luZG93LT51cmlFbnRyeSk7CiAgICAgZ3RrX25vdGVib29r
X3NldF9jdXJyZW50X3BhZ2UoR1RLX05PVEVCT09LKHdpbmRvdy0+bm90ZWJvb2spLCAtMSk7CkBA
IC02NTYsNiArNjU4LDcgQEAgc3RhdGljIHZvaWQgb3BlblByaXZhdGVXaW5kb3coR1NpbXBsZUFj
dGlvbiAqYWN0aW9uLCBHVmFyaWFudCAqcGFyYW1ldGVyLCBncG9pbnQKICAgICAgICAgImlzLWVw
aGVtZXJhbCIsIFRSVUUsCiAgICAgICAgICJpcy1jb250cm9sbGVkLWJ5LWF1dG9tYXRpb24iLCB3
ZWJraXRfd2ViX3ZpZXdfaXNfY29udHJvbGxlZF9ieV9hdXRvbWF0aW9uKHdlYlZpZXcpLAogICAg
ICAgICAid2Vic2l0ZS1wb2xpY2llcyIsIHdlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9wb2xp
Y2llcyh3ZWJWaWV3KSwKKyAgICAgICAgInRpbWUtem9uZS1vdmVycmlkZSIsIHdlYmtpdF93ZWJf
dmlld19nZXRfdGltZV96b25lX292ZXJyaWRlKHdlYlZpZXcpLAogICAgICAgICBOVUxMKSk7CiAg
ICAgR3RrV2lkZ2V0ICpuZXdXaW5kb3cgPSBicm93c2VyX3dpbmRvd19uZXcoR1RLX1dJTkRPVyh3
aW5kb3cpLCB3aW5kb3ctPndlYkNvbnRleHQpOwogICAgIGd0a193aW5kb3dfc2V0X2FwcGxpY2F0
aW9uKEdUS19XSU5ET1cobmV3V2luZG93KSwgZ3RrX3dpbmRvd19nZXRfYXBwbGljYXRpb24oR1RL
X1dJTkRPVyh3aW5kb3cpKSk7CkBAIC0xNDU3LDYgKzE0NjAsNyBAQCBXZWJLaXRXZWJWaWV3ICpi
cm93c2VyX3dpbmRvd19nZXRfb3JfY3JlYXRlX3dlYl92aWV3X2Zvcl9hdXRvbWF0aW9uKEJyb3dz
ZXJXaW5kbwogICAgICAgICAidXNlci1jb250ZW50LW1hbmFnZXIiLCB3ZWJraXRfd2ViX3ZpZXdf
Z2V0X3VzZXJfY29udGVudF9tYW5hZ2VyKHdlYlZpZXcpLAogICAgICAgICAiaXMtY29udHJvbGxl
ZC1ieS1hdXRvbWF0aW9uIiwgVFJVRSwKICAgICAgICAgIndlYnNpdGUtcG9saWNpZXMiLCB3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfcG9saWNpZXMod2ViVmlldyksCisgICAgICAgICJ0aW1l
LXpvbmUtb3ZlcnJpZGUiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3RpbWVfem9uZV9vdmVycmlkZSh3
ZWJWaWV3KSwKICAgICAgICAgTlVMTCkpOwogICAgIEd0a1dpZGdldCAqbmV3V2luZG93ID0gYnJv
d3Nlcl93aW5kb3dfbmV3KEdUS19XSU5ET1cod2luZG93KSwgd2luZG93LT53ZWJDb250ZXh0KTsK
ICAgICBndGtfd2luZG93X3NldF9hcHBsaWNhdGlvbihHVEtfV0lORE9XKG5ld1dpbmRvdyksIGd0
a193aW5kb3dfZ2V0X2FwcGxpY2F0aW9uKEdUS19XSU5ET1cod2luZG93KSkpOwpAQCAtMTQ3OSw2
ICsxNDgzLDcgQEAgV2ViS2l0V2ViVmlldyAqYnJvd3Nlcl93aW5kb3dfY3JlYXRlX3dlYl92aWV3
X2luX25ld190YWJfZm9yX2F1dG9tYXRpb24oQnJvd3NlclcKICAgICAgICAgImlzLWNvbnRyb2xs
ZWQtYnktYXV0b21hdGlvbiIsIFRSVUUsCiAgICAgICAgICJhdXRvbWF0aW9uLXByZXNlbnRhdGlv
bi10eXBlIiwgV0VCS0lUX0FVVE9NQVRJT05fQlJPV1NJTkdfQ09OVEVYVF9QUkVTRU5UQVRJT05f
VEFCLAogICAgICAgICAid2Vic2l0ZS1wb2xpY2llcyIsIHdlYmtpdF93ZWJfdmlld19nZXRfd2Vi
c2l0ZV9wb2xpY2llcyh3ZWJWaWV3KSwKKyAgICAgICAgInRpbWUtem9uZS1vdmVycmlkZSIsIHdl
YmtpdF93ZWJfdmlld19nZXRfdGltZV96b25lX292ZXJyaWRlKHdlYlZpZXcpLAogICAgICAgICBO
VUxMKSk7CiAgICAgYnJvd3Nlcl93aW5kb3dfYXBwZW5kX3ZpZXcod2luZG93LCBuZXdXZWJWaWV3
KTsKICAgICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF91cmkobmV3V2ViVmlldywgImFib3V0OmJsYW5r
Iik7CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jIGIvVG9vbHMvTWlu
aUJyb3dzZXIvZ3RrL21haW4uYwppbmRleCA2MWNiNzI5ZTllOGUyNGQ4NWMwZDY3OGM2NGEzZGJh
ZTFjMDg1ZjYzLi4zNzYzNmQzYmMzODViZWIwYzU4NmE2NDM4NWJjZTRjYTc4OTM4YTBkIDEwMDY0
NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCisrKyBiL1Rvb2xzL01pbmlCcm93
c2VyL2d0ay9tYWluLmMKQEAgLTU2LDYgKzU2LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgKnByb3h5
Owogc3RhdGljIGdib29sZWFuIGRhcmtNb2RlOwogc3RhdGljIGdib29sZWFuIGVuYWJsZUlUUDsK
IHN0YXRpYyBnYm9vbGVhbiBwcmludFZlcnNpb247CitzdGF0aWMgY2hhciogdGltZVpvbmU7CiAK
IHR5cGVkZWYgZW51bSB7CiAgICAgTUlOSV9CUk9XU0VSX0VSUk9SX0lOVkFMSURfQUJPVVRfUEFU
SApAQCAtODYsNiArODcsNyBAQCBzdGF0aWMgV2ViS2l0V2ViVmlldyAqY3JlYXRlQnJvd3NlclRh
YihCcm93c2VyV2luZG93ICp3aW5kb3csIFdlYktpdFNldHRpbmdzICp3ZQogICAgICAgICAidXNl
ci1jb250ZW50LW1hbmFnZXIiLCB1c2VyQ29udGVudE1hbmFnZXIsCiAgICAgICAgICJpcy1jb250
cm9sbGVkLWJ5LWF1dG9tYXRpb24iLCBhdXRvbWF0aW9uTW9kZSwKICAgICAgICAgIndlYnNpdGUt
cG9saWNpZXMiLCBkZWZhdWx0V2Vic2l0ZVBvbGljaWVzLAorICAgICAgICAidGltZS16b25lLW92
ZXJyaWRlIiwgdGltZVpvbmUsCiAgICAgICAgIE5VTEwpKTsKIAogICAgIGlmIChlZGl0b3JNb2Rl
KQpAQCAtMTQ2LDYgKzE0OCw3IEBAIHN0YXRpYyBjb25zdCBHT3B0aW9uRW50cnkgY29tbWFuZExp
bmVPcHRpb25zW10gPQogICAgIHsgImlnbm9yZS10bHMtZXJyb3JzIiwgMCwgMCwgR19PUFRJT05f
QVJHX05PTkUsICZpZ25vcmVUTFNFcnJvcnMsICJJZ25vcmUgVExTIGVycm9ycyIsIE5VTEwgfSwK
ICAgICB7ICJjb250ZW50LWZpbHRlciIsIDAsIDAsIEdfT1BUSU9OX0FSR19GSUxFTkFNRSwgJmNv
bnRlbnRGaWx0ZXIsICJKU09OIHdpdGggY29udGVudCBmaWx0ZXJpbmcgcnVsZXMiLCAiRklMRSIg
fSwKICAgICB7ICJlbmFibGUtaXRwIiwgMCwgMCwgR19PUFRJT05fQVJHX05PTkUsICZlbmFibGVJ
VFAsICJFbmFibGUgSW50ZWxsaWdlbnQgVHJhY2tpbmcgUHJldmVudGlvbiAoSVRQKSIsIE5VTEwg
fSwKKyAgICB7ICJ0aW1lLXpvbmUiLCAndCcsIDAsIEdfT1BUSU9OX0FSR19TVFJJTkcsICZ0aW1l
Wm9uZSwgIlNldCB0aW1lIHpvbmUiLCAiVElNRVpPTkUifSwKICAgICB7ICJ2ZXJzaW9uIiwgJ3Yn
LCAwLCBHX09QVElPTl9BUkdfTk9ORSwgJnByaW50VmVyc2lvbiwgIlByaW50IHRoZSBXZWJLaXRH
VEsgdmVyc2lvbiIsIE5VTEwgfSwKICAgICB7IEdfT1BUSU9OX1JFTUFJTklORywgMCwgMCwgR19P
UFRJT05fQVJHX0ZJTEVOQU1FX0FSUkFZLCAmdXJpQXJndW1lbnRzLCAwLCAiW1VSTOKApl0iIH0s
CiAgICAgeyAwLCAwLCAwLCAwLCAwLCAwLCAwIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93
c2VyL3dwZS9tYWluLmNwcCBiL1Rvb2xzL01pbmlCcm93c2VyL3dwZS9tYWluLmNwcAppbmRleCBk
NmMxNjRmYmE4ZGVlZjM0M2IyMmQ1OTgwMzA0NzllMTYwODQxZDY4Li5kZjhlYWRjNGU3N2VmY2E4
NWI1ZmQwMmYwZmI4N2Q3ZWJhZTA3ODk1IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci93
cGUvbWFpbi5jcHAKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvd3BlL21haW4uY3BwCkBAIC01MSw2
ICs1MSw3IEBAIGNvbnN0IGNoYXIqIGJnQ29sb3I7CiBzdGF0aWMgZ2Jvb2xlYW4gZW5hYmxlSVRQ
Owogc3RhdGljIGdib29sZWFuIHByaW50VmVyc2lvbjsKIHN0YXRpYyBHSGFzaFRhYmxlKiBvcGVu
Vmlld3M7CitzdGF0aWMgY2hhciogdGltZVpvbmU7CiAKIHN0YXRpYyBjb25zdCBHT3B0aW9uRW50
cnkgY29tbWFuZExpbmVPcHRpb25zW10gPQogewpAQCAtNjUsNiArNjYsNyBAQCBzdGF0aWMgY29u
c3QgR09wdGlvbkVudHJ5IGNvbW1hbmRMaW5lT3B0aW9uc1tdID0KICAgICB7ICJjb250ZW50LWZp
bHRlciIsIDAsIDAsIEdfT1BUSU9OX0FSR19GSUxFTkFNRSwgJmNvbnRlbnRGaWx0ZXIsICJKU09O
IHdpdGggY29udGVudCBmaWx0ZXJpbmcgcnVsZXMiLCAiRklMRSIgfSwKICAgICB7ICJiZy1jb2xv
ciIsIDAsIDAsIEdfT1BUSU9OX0FSR19TVFJJTkcsICZiZ0NvbG9yLCAiV2luZG93IGJhY2tncm91
bmQgY29sb3IuIERlZmF1bHQ6IHdoaXRlIiwgIkNPTE9SIiB9LAogICAgIHsgImVuYWJsZS1pdHAi
LCAwLCAwLCBHX09QVElPTl9BUkdfTk9ORSwgJmVuYWJsZUlUUCwgIkVuYWJsZSBJbnRlbGxpZ2Vu
dCBUcmFja2luZyBQcmV2ZW50aW9uIChJVFApIiwgbnVsbHB0ciB9LAorICAgIHsgInRpbWUtem9u
ZSIsICd0JywgMCwgR19PUFRJT05fQVJHX1NUUklORywgJnRpbWVab25lLCAiU2V0IHRpbWUgem9u
ZSIsICJUSU1FWk9ORSJ9LAogICAgIHsgInZlcnNpb24iLCAndicsIDAsIEdfT1BUSU9OX0FSR19O
T05FLCAmcHJpbnRWZXJzaW9uLCAiUHJpbnQgdGhlIFdQRSB2ZXJzaW9uIiwgbnVsbHB0ciB9LAog
ICAgIHsgR19PUFRJT05fUkVNQUlOSU5HLCAwLCAwLCBHX09QVElPTl9BUkdfRklMRU5BTUVfQVJS
QVksICZ1cmlBcmd1bWVudHMsIG51bGxwdHIsICJbVVJMXSIgfSwKICAgICB7IG51bGxwdHIsIDAs
IDAsIEdfT1BUSU9OX0FSR19OT05FLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyIH0KQEAgLTI5
Niw2ICsyOTgsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogICAgICAgICAi
c2V0dGluZ3MiLCBzZXR0aW5ncywKICAgICAgICAgInVzZXItY29udGVudC1tYW5hZ2VyIiwgdXNl
ckNvbnRlbnRNYW5hZ2VyLAogICAgICAgICAiaXMtY29udHJvbGxlZC1ieS1hdXRvbWF0aW9uIiwg
YXV0b21hdGlvbk1vZGUsCisgICAgICAgICJ0aW1lLXpvbmUtb3ZlcnJpZGUiLCB0aW1lWm9uZSwK
ICAgICAgICAgbnVsbHB0cikpOwogICAgIGdfb2JqZWN0X3VucmVmKHNldHRpbmdzKTsKIApkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCAyZTI2YzhlZWVjNmJkOGIxNWYxNjEwNjJiYThkYzlkZTUy
YTVmYjM1Li5iOTBmN2UyMWI2NjdjMWQ4ZGRlOTgyYWYyNjMyYTZjYzQyODJhZTUxIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtODA2LDYgKzgwNiw3IEBACiAJCTk5ODRGQUNDMUNGRkFGNjAw
MDhEMTk4QyAvKiBXS1dlYlZpZXdUZXh0SW5wdXQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTg0RkFDQTFDRkZBRUVFMDA4RDE5OEMgLyogV0tXZWJW
aWV3VGV4dElucHV0Lm1tICovOyB9OwogCQk5OTg0RkFDRTFDRkZCMDkwMDA4RDE5OEMgLyogZWRp
dGFibGUtYm9keS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk5ODRGQUNEMUNGRkIwMzgwMDhEMTk4QyAvKiBlZGl0YWJsZS1ib2R5Lmh0
bWwgKi87IH07CiAJCTk5OTkxMDhCMUYzOTNDOTYwMDhBRDQ1NSAvKiBDb3B5aW5nLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk5OTEwOEExRjM5M0M4
QjAwOEFENDU1IC8qIENvcHlpbmcubW0gKi87IH07CisJCTlBMThFNDE5MjRCNjFCRTgwMDBCQjM1
MSAvKiBUaW1lWm9uZU92ZXJyaWRlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOUExOEU0MTcyNEI2MTVEOTAwMEJCMzUxIC8qIFRpbWVab25lT3ZlcnJp
ZGUubW0gKi87IH07CiAJCTlCMDJFMEQ2MjM1RkE0N0QwMDQwNDRCMiAvKiBUZXh0TWFuaXB1bGF0
aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIw
MkUwRDUyMzVGQTQ3RDAwNDA0NEIyIC8qIFRleHRNYW5pcHVsYXRpb24ubW0gKi87IH07CiAJCTlC
MDc4NkE1MUM1ODg1QzMwMEQxNTlFMyAvKiBJbmplY3RlZEJ1bmRsZU1ha2VBbGxTaGFkb3dSb290
c09wZW5fQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDlCMDc4NkE0MUM1ODg1QzMwMEQxNTlFMyAvKiBJbmplY3RlZEJ1bmRsZU1ha2VBbGxT
aGFkb3dSb290c09wZW5fQnVuZGxlLmNwcCAqLzsgfTsKIAkJOUIxOUNEQTAxRjA2REZFMzAwMDU0
OEREIC8qIE5ldHdvcmtQcm9jZXNzQ3Jhc2hXaXRoUGVuZGluZ0Nvbm5lY3Rpb24ubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjE5Q0Q5RTFGMDZERkUz
MDAwNTQ4REQgLyogTmV0d29ya1Byb2Nlc3NDcmFzaFdpdGhQZW5kaW5nQ29ubmVjdGlvbi5tbSAq
LzsgfTsKQEAgLTIzNjUsNiArMjM2Niw3IEBACiAJCTk5ODRGQUNBMUNGRkFFRUUwMDhEMTk4QyAv
KiBXS1dlYlZpZXdUZXh0SW5wdXQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBXS1dlYlZpZXdUZXh0SW5wdXQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTk5ODRGQUNEMUNGRkIwMzgwMDhEMTk4QyAvKiBlZGl0YWJsZS1ib2R5Lmh0bWwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiZWRpdGFibGUtYm9keS5odG1sIjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTk5OTEwOEExRjM5M0M4QjAwOEFENDU1IC8qIENvcHlpbmcubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb3B5aW5nLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QTE4RTQxNzI0QjYxNUQ5MDAwQkIzNTEgLyogVGlt
ZVpvbmVPdmVycmlkZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFRpbWVab25lT3ZlcnJpZGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMDJF
MEQ1MjM1RkE0N0QwMDQwNDRCMiAvKiBUZXh0TWFuaXB1bGF0aW9uLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gVGV4dE1hbmlwdWxhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOUIwNzg2QTIxQzU4ODMwRjAwRDE1OUUzIC8qIEluamVjdGVkQnVuZGxlTWFrZUFsbFNoYWRv
d1Jvb3RzT3Blbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmpl
Y3RlZEJ1bmRsZU1ha2VBbGxTaGFkb3dSb290c09wZW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5QjA3ODZBNDFDNTg4NUMzMDBEMTU5RTMgLyogSW5qZWN0ZWRCdW5kbGVNYWtl
QWxsU2hhZG93Um9vdHNPcGVuX0J1bmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJbmplY3RlZEJ1bmRsZU1ha2VBbGxTaGFkb3dSb290c09wZW5fQnVuZGxlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMyNTgsNiArMzI2MCw3IEBACiAJCQkJ
OUIwMkUwRDUyMzVGQTQ3RDAwNDA0NEIyIC8qIFRleHRNYW5pcHVsYXRpb24ubW0gKi8sCiAJCQkJ
NUMxNkY4RkIyMzBDOTQyQjAwNzRDNEE4IC8qIFRleHRTaXplLm1tICovLAogCQkJCUMyMkZBMzJB
MjI4Rjg3MDgwMDlENzk4OCAvKiBUZXh0V2lkdGgubW0gKi8sCisJCQkJOUExOEU0MTcyNEI2MTVE
OTAwMEJCMzUxIC8qIFRpbWVab25lT3ZlcnJpZGUubW0gKi8sCiAJCQkJNUM3M0E4MUEyMzIzMDU5
ODAwREVBODVBIC8qIFRMU0RlcHJlY2F0aW9uLm1tICovLAogCQkJCUNERTE5NUIzMUNGRTBBREUw
MDUzRDI1NiAvKiBUb3BDb250ZW50SW5zZXQubW0gKi8sCiAJCQkJNUNCNDBCNEQxRjRCOThCRTAw
N0RDN0I5IC8qIFVJRGVsZWdhdGUubW0gKi8sCkBAIC01MjYyLDYgKzUyNjUsNyBAQAogCQkJCTVD
MTZGOEZDMjMwQzk0MzcwMDc0QzRBOCAvKiBUZXh0U2l6ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CUMyMkZBMzJCMjI4Rjg3MDgwMDlENzk4OCAvKiBUZXh0V2lkdGgubW0gaW4gU291cmNlcyAqLywK
IAkJCQk3Q0NFN0VERDFBNDExQTkyMDA0NDdDNEMgLyogVGltZVJhbmdlcy5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk5QTE4RTQxOTI0QjYxQkU4MDAwQkIzNTEgLyogVGltZVpvbmVPdmVycmlkZS5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTdDODNFMEJEMUQwQTY1MEMwMEZFQkNGMyAvKiBUb3BDb250
ZW50SW5zZXQubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VEMzFBNDExQTdFMDA0NDdDNEMg
LyogVHlwaW5nU3R5bGVDcmFzaC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTU3MTUyQjc4MjFERDRF
OEQwMDBDMzdDQSAvKiBVMmZDb21tYW5kQ29uc3RydWN0b3JUZXN0LmNwcCBpbiBTb3VyY2VzICov
LApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UaW1l
Wm9uZU92ZXJyaWRlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9U
aW1lWm9uZU92ZXJyaWRlLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEwYzE5YTg0ODVjYmFhMzk1YjAzNDhkYzA1
OTBjNGZlNjg3M2U5YTcKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1RpbWVab25lT3ZlcnJpZGUubW0KQEAgLTAsMCArMSw2MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKwor
I2lmIFBMQVRGT1JNKE1BQykKKworI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBv
cnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0
aW9uUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KKyNpbXBv
cnQgPHd0Zi9GdW5jdGlvbi5oPgorI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK2Ns
YXNzIFRpbWVab25lT3ZlcnJpZGVUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworcHVibGlj
OgorICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgX2NvbmZpZ3VyYXRp
b24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAg
ICAgICBbX2NvbmZpZ3VyYXRpb24gX3NldFRpbWVab25lT3ZlcnJpZGU6QCJFdXJvcGUvQmVybGlu
Il07CisKKyAgICAgICAgX3dlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDMwMCwgMzAwKSBjb25maWd1cmF0aW9uOl9j
b25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgfQorCisgICAgdm9pZCBydW5TY3JpcHRBbmRFeGVj
dXRlQ2FsbGJhY2soY29uc3QgU3RyaW5nJiBzY3JpcHQsIEZ1bmN0aW9uPHZvaWQoaWQpPiYmIGNh
bGxiYWNrKQorICAgIHsKKyAgICAgICAgYm9vbCBjb21wbGV0ZSA9IGZhbHNlOworICAgICAgICBb
X3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OnNjcmlwdCBjb21wbGV0aW9uSGFuZGxlcjpbJl0g
KGlkIHJlc3VsdCwgTlNFcnJvciAqKSB7CisgICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOwor
ICAgICAgICAgICAgY29tcGxldGUgPSB0cnVlOworICAgICAgICB9XTsKKyAgICAgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZjb21wbGV0ZSk7CisgICAgfQorCitwcml2YXRlOgorICAgIFJl
dGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBfY29uZmlndXJhdGlvbjsKKyAgICBSZXRh
aW5QdHI8VGVzdFdLV2ViVmlldz4gX3dlYlZpZXc7Cit9OworCitURVNUX0YoVGltZVpvbmVPdmVy
cmlkZVRlc3QsIFRpbWVab25lT3ZlcnJpZGUpCit7CisgICAgcnVuU2NyaXB0QW5kRXhlY3V0ZUNh
bGxiYWNrKCJsZXQgbm93ID0gbmV3IERhdGUoKTsgbm93LmdldFRpbWV6b25lT2Zmc2V0KCkiLCBb
XShpZCByZXN1bHQpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKFtyZXN1bHQgc3RyaW5nVmFs
dWVdLCAiLTEyMCIpOworICAgIH0pOworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViVmlldy5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYlZpZXcuY3BwCmlu
ZGV4IGQ3Y2FmZmQwZTk5MmNjMzE1NzNkOGJiNDVkOWYwZWQ2NzU5NjBmZTEuLjdjM2FiNjkzYjll
NzMyNjhhNzM3MmM2NjYyYTk2M2UyNGEzNjdjMjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViVmlldy5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcApAQCAt
MTE5MSw2ICsxMTkxLDMxIEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3QmFja2dyb3VuZENvbG9y
KFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIC8vIE1pbmlCcm93c2VyIC0t
YmctY29sb3I9Ijxjb2xvci12YWx1ZT4iIGZvciBtYW51YWxseSB0ZXN0aW5nIHRoaXMgQVBJLgog
fQogCitjbGFzcyBUaW1lWm9uZU92ZXJyaWRlV2ViVmlld1Rlc3Q6IHB1YmxpYyBXZWJWaWV3VGVz
dCB7CitwdWJsaWM6CisgICAgTUFLRV9HTElCX1RFU1RfRklYVFVSRV9XSVRIX1NFVFVQX1RFQVJE
T1dOKFRpbWVab25lT3ZlcnJpZGVXZWJWaWV3VGVzdCwgc2V0dXAsIHRlYXJkb3duKTsKKworICAg
IHN0YXRpYyB2b2lkIHNldHVwKCkKKyAgICB7CisgICAgICAgIFdlYlZpZXdUZXN0Ojp0aW1lWm9u
ZU92ZXJyaWRlID0gIkV1cm9wZS9CZXJsaW4iOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHRl
YXJkb3duKCkKKyAgICB7CisgICAgICAgIFdlYlZpZXdUZXN0Ojp0aW1lWm9uZU92ZXJyaWRlID0g
IiI7CisgICAgfQorfTsKKworc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdUaW1lWm9uZU92ZXJyaWRl
KFRpbWVab25lT3ZlcnJpZGVXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAg
ICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CisgICAgV2ViS2l0SmF2YXNjcmlwdFJlc3Vs
dCogamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5p
c2hlZCgibGV0IG5vdyA9IG5ldyBEYXRlKCk7IG5vdy5nZXRUaW1lem9uZU9mZnNldCgpIiwgJmVy
cm9yLm91dFB0cigpKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGphdmFzY3JpcHRSZXN1bHQpOwor
ICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKKyAgICAvLyBCZXJsaW4gaXMgMTIw
IG1pbnV0ZXMgYWhlYWQgb2YgdGhlIEdNVCBvZmZzZXQuCisgICAgZ19hc3NlcnRfY21waW50KFdl
YlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9OdW1iZXIoamF2YXNjcmlwdFJlc3VsdCksID09
LCAtMTIwKTsKK30KKwogI2lmIFBMQVRGT1JNKEdUSykKIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3
UHJlZmVycmVkU2l6ZShXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKQEAgLTE0
MDYsNiArMTQzMSw3IEBAIHZvaWQgYmVmb3JlQWxsKCkKICNlbmRpZgogICAgIFdlYlZpZXdUZXN0
OjphZGQoIldlYktpdFdlYlZpZXciLCAiaXMtYXVkaW8tbXV0ZWQiLCB0ZXN0V2ViVmlld0lzQXVk
aW9NdXRlZCk7CiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJhdXRvcGxh
eS1wb2xpY3kiLCB0ZXN0V2ViVmlld0F1dG9wbGF5UG9saWN5KTsKKyAgICBUaW1lWm9uZU92ZXJy
aWRlV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJ0aW1lLXpvbmUtb3ZlcnJpZGUi
LCB0ZXN0V2ViVmlld1RpbWVab25lT3ZlcnJpZGUpOwogfQogCiB2b2lkIGFmdGVyQWxsKCkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmNw
cAppbmRleCA3YTEzZWI4Zjg0MDJkZjA1MTdhZjA2OGQ5MWQyYWZjZDA5ZGU5NjQ2Li40MTI4Y2E0
YzE2MDJiN2YzZWYxNGViZGJkN2ExYTU0Yzk0MWY5MDljIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5jcHAKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuY3BwCkBAIC0yNiw2ICsyNiw3
IEBACiAKIGJvb2wgV2ViVmlld1Rlc3Q6OnNob3VsZEluaXRpYWxpemVXZWJWaWV3SW5Db25zdHJ1
Y3RvciA9IHRydWU7CiBib29sIFdlYlZpZXdUZXN0OjpzaG91bGRDcmVhdGVFcGhlbWVyYWxXZWJW
aWV3ID0gZmFsc2U7Citjb25zdCBjaGFyKiBXZWJWaWV3VGVzdDo6dGltZVpvbmVPdmVycmlkZSA9
ICIiOwogCiBXZWJWaWV3VGVzdDo6V2ViVmlld1Rlc3QoKQogICAgIDogbV91c2VyQ29udGVudE1h
bmFnZXIoYWRvcHRHUmVmKHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9uZXcoKSkpCkBAIC01
OSw2ICs2MCw3IEBAIHZvaWQgV2ViVmlld1Rlc3Q6OmluaXRpYWxpemVXZWJWaWV3KCkKICAgICAg
ICAgIndlYi1jb250ZXh0IiwgbV93ZWJDb250ZXh0LmdldCgpLAogICAgICAgICAidXNlci1jb250
ZW50LW1hbmFnZXIiLCBtX3VzZXJDb250ZW50TWFuYWdlci5nZXQoKSwKICAgICAgICAgImlzLWVw
aGVtZXJhbCIsIHNob3VsZENyZWF0ZUVwaGVtZXJhbFdlYlZpZXcsCisgICAgICAgICJ0aW1lLXpv
bmUtb3ZlcnJpZGUiLCB0aW1lWm9uZU92ZXJyaWRlLAogICAgICAgICBudWxscHRyKSk7CiAgICAg
cGxhdGZvcm1Jbml0aWFsaXplV2ViVmlldygpOwogICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdo
ZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QobV93ZWJWaWV3KSk7CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5oIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuaAppbmRleCA2ZTllZGU3ODA1MWZi
NWYxODgxMzI0ODFkZDE2ZjJmZDZkMjQzZGE0Li4zODc4NWM1ODNlMDU5MmYwNjM0NGY5OTQzNTM2
ZDVkYzc1OTBhMjdkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0
R0xpYi9XZWJWaWV3VGVzdC5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRH
TGliL1dlYlZpZXdUZXN0LmgKQEAgLTMxLDYgKzMxLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGlj
IGJvb2wgc2hvdWxkSW5pdGlhbGl6ZVdlYlZpZXdJbkNvbnN0cnVjdG9yOwogICAgIHN0YXRpYyBi
b29sIHNob3VsZENyZWF0ZUVwaGVtZXJhbFdlYlZpZXc7CisgICAgc3RhdGljIGNvbnN0IGNoYXIq
IHRpbWVab25lT3ZlcnJpZGU7CiAgICAgdm9pZCBpbml0aWFsaXplV2ViVmlldygpOwogCiAgICAg
dm9pZCBwbGF0Zm9ybUluaXRpYWxpemVXZWJWaWV3KCk7CmRpZmYgLS1naXQgYS9Ub29scy9mbGF0
cGFrL2ZsYXRwYWt1dGlscy5weSBiL1Rvb2xzL2ZsYXRwYWsvZmxhdHBha3V0aWxzLnB5CmluZGV4
IGY0OWY5ZjA2NTJmZTNmNDc3OGEzODNhMTg3NTk0NzY1Y2I5ODBmMTEuLjk4NDIyMGE4YTljOTM4
NzUyZTIwOTVmMzIwOTRjZTc4OWE0MThkOTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2ZsYXRwYWsvZmxh
dHBha3V0aWxzLnB5CisrKyBiL1Rvb2xzL2ZsYXRwYWsvZmxhdHBha3V0aWxzLnB5CkBAIC03MTcs
NyArNzE3LDcgQEAgY2xhc3MgV2Via2l0RmxhdHBhazoKICAgICAgICAgICAgIF0pCiAKICAgICAg
ICAgICAgIHNhbmRib3hfZW52aXJvbm1lbnQudXBkYXRlKHsKLSAgICAgICAgICAgICAgICAiVFoi
OiAiUFNUOFBEVCIsCisgICAgICAgICAgICAgICAgIlRaIjogIkFtZXJpY2EvTG9zX0FuZ2VsZXMi
LAogICAgICAgICAgICAgfSkKIAogICAgICAgICBlbnZfdmFyX3ByZWZpeGVzX3RvX2tlZXAgPSBb
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404553</attachid>
            <date>2020-07-17 03:51:28 -0700</date>
            <delta_ts>2020-09-17 04:36:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213884-20200717035126.patch</filename>
            <type>text/plain</type>
            <size>40191</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0NTAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
MTc2OTFhMjE2ZTgzNTNkYjFkZjVhNjYzNTM3NDdkYzcwYmJkNTZkLi4yMDJiYjRlMDQ2ZjA0NzRk
MGZlM2NjZjM2OGM5NTMwMDE1OWUyZWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAyMC0wNy0xNyAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxp
YS5jb20+IGFuZCBQYXZlbCBGZWxkbWFuIDxwYXZlbC5mZWxkbWFuQGdtYWlsLmNvbT4KKworICAg
ICAgICBbV0syXSBBZGQgQVBJIHRvIGFsbG93IGVtYmVkZGVyIHRvIHNldCBhIHRpbWV6b25lIG92
ZXJyaWRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTM4ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHJ1bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwOgorICAgICAgICAoSlNDOjpmb3JtYXREYXRlVGlt
ZSk6IEZvcm1hdCB0aGUgb3ZlcnJpZGRlbiB0aW1lem9uZSBpZiBpdCdzIGVuYWJsZWQuCisgICAg
ICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwOgorICAgICAgICAoSlNDOjpkZWZh
dWx0VGltZVpvbmUpOiBSZXR1cm4gdGhlIG92ZXJyaWRkZW4gdGltZXpvbmUgaWYgaXQncyBlbmFi
bGVkLgorCiAyMDIwLTA3LTE2ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAK
ICAgICAgICAgW0pTQ10gQ2xlYW4gdXAgSW50bCBvcHRpb24gcGFyc2luZyBjb2RlIGJ5IGludHJv
ZHVjaW5nIGludGxPcHRpb248PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCAzZmRjMjFmZjEwOGM1MDBkNDQxODk4OGM3M2FiYzcw
YWRhMDgyMGQ0Li45YjhiOWU3OWFiMTRmYjYzZWFmN2Q4MzViNzQ2Y2JiZDU3ZWQ3OTc0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIwIEBACisyMDIwLTA3LTE3ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRA
aWdhbGlhLmNvbT4gYW5kIFBhdmVsIEZlbGRtYW4gPHBhdmVsLmZlbGRtYW5AZ21haWwuY29tPgor
CisgICAgICAgIFtXSzJdIEFkZCBBUEkgdG8gYWxsb3cgZW1iZWRkZXIgdG8gc2V0IGEgdGltZXpv
bmUgb3ZlcnJpZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxMzg4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogd3RmL0RhdGVNYXRoLmNwcDogQWRkIG5ldyBBUElzIHRvIGNvbnRyb2wgYW5kIHF1ZXJ5
IHRoZSB0aW1lem9uZSBvdmVycmlkZS4KKyAgICAgICAgKFdURjo6aW5uZXJUaW1lWm9uZU92ZXJy
aWRlKTogU3RhdGljIHN0b3JhZ2Ugb2YgdGhlIG92ZXJyaWRlIGluZm9ybWF0aW9ucy4KKyAgICAg
ICAgKFdURjo6Y2FsY3VsYXRlTG9jYWxUaW1lT2Zmc2V0KTogQ2FsY3VsYXRlIG9mZnNldCBmb3Ig
b3ZlcnJpZGRlbiB0aW1lem9uZSwgaWYgaXQncyBwcmVzZW50LgorICAgICAgICAoV1RGOjppc1Rp
bWVab25lVmFsaWQpOiBOZXcgZnVuY3Rpb24gYWxsb3dpbmcgdG8gY2hlY2sgaWYgYSB0aW1lem9u
ZSBpZGVudGlmaWVyIGlzIHZhbGlkIGFjY29yZGluZyB0byBJQ1UncyBkYXRhYmFzZS4KKyAgICAg
ICAgKFdURjo6c2V0VGltZVpvbmVPdmVycmlkZSk6IE5ldyBBUEkgdG8gc2V0IHRoZSB0aW1lem9u
ZSBvdmVycmlkZSwgdGhpcyBpcyBtZWFudCB0byBiZQorICAgICAgICB1c2VkIG9uIG5ld2x5IGNy
ZWF0ZWQgV2ViUHJvY2Vzc2VzLgorICAgICAgICAoV1RGOjp0aW1lWm9uZU92ZXJyaWRlKTpRdWVy
eSB0aGUgdGltZXpvbmUgb3ZlcnJpZGUuCisgICAgICAgIChXVEY6OnRpbWVab25lRGlzcGxheU5h
bWVPdmVycmlkZSk6IEdldCB0aGUgdGltZXpvbmUgbmFtZSBvZiB0aGUgb3ZlcnJpZGRlbiB0aW1l
em9uZS4KKyAgICAgICAgKiB3dGYvRGF0ZU1hdGguaDoKKwogMjAyMC0wNy0xNiAgWGFiaWVyIFJv
ZHJpZ3VleiBDYWx2YXIgIDxjYWx2YXJpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFJlbmFtZSBj
cmVhdGVCb3hQdHIgaW50byBhZG9wdEJveFB0cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAyNmZlYWU1NzI1ZTdlMTBm
YzBhY2UwNzlkNDdmZGE3NjkzYmUyMDE5Li42NzQwZTVkYzE5NDE2YWIyZmQzZWQ3NTkxMzIwYzAy
YjQxMzdhZDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIwLTA3LTE3ICBQaGlsaXBw
ZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbV0syXSBBZGQgQVBJ
IHRvIGFsbG93IGVtYmVkZGVyIHRvIHNldCBhIHRpbWV6b25lIG92ZXJyaWRlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM4ODQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHM6CisK
KyAgICAgICAgLSBuZXcgQ29jb2EgQVBJCisgICAgICAgIC0gbmV3IEdsaWIgQVBJICh0YXJnZXR0
aW5nIGJvdGggV1BFIGFuZCBHVEsgcG9ydHMpCisgICAgICAgIC0gbmV3IEMgQVBJIChmb3IgdGhl
IHdpbiBwb3J0KQorCisgICAgICAgIHRoYXQgYWxsb3dzIHRoZSBlbWJlZGRlciB0byBzZXQgYSB0
aW1lem9uZSBvdmVycmlkZSBmb3IgdGhlIHVuZGVybHlpbmcgUGFnZUNvbmZpZ3VyYXRpb24uCisg
ICAgICAgIFNpbmNlIHRoaXMgQVBJIGlzIG5vdCBleHBvc2VkIGluIGdsaWIgcG9ydHMsIGEgbmV3
IGNvbnRydWN0LXRpbWUtb25seSBwcm9wZXJ0eSB3YXMgYWRkZWQgdG8KKyAgICAgICAgdGhlIFdl
YktpdFdlYkNvbnRleHQgQVBJLiBJdCB3b3VsZCBhbHNvIGFsbG93IGZpbmUtZ3JhaW5lZCBjb250
cm9sIG92ZXIgbXVsdGlwbGUgcGFnZXMsIGZvcgorICAgICAgICBpbnN0YW5jZSBpdCdzIG5vdCBw
b3NzaWJsZSBjdXJyZW50bHkgdG8gaGF2ZSB0d28gcGFnZXMgaW4gZGlmZmVyZW50IHRpbWV6b25l
cy4KKworICAgICAgICBObyBuZXcgbGF5b3V0IHRlc3RzLCB0aGlzIGNoYW5nZSBpcyBjb3ZlcmVk
IGJ5IG5ldyBBUEkgdGVzdHMuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6
OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcDoKKyAg
ICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OmNvcHkgY29uc3QpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKEFQSTo6UGFnZUNv
bmZpZ3VyYXRpb246OnNldFRpbWVab25lT3ZlcnJpZGUpOgorICAgICAgICAoQVBJOjpQYWdlQ29u
ZmlndXJhdGlvbjo6dGltZVpvbmVPdmVycmlkZSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tOgorICAgICAgICAoLVtXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIF90aW1lWm9uZU92ZXJyaWRlXSk6CisgICAgICAgICgtW1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24gX3NldFRpbWVab25lT3ZlcnJpZGU6XSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKHdlYmtp
dFdlYkNvbnRleHRHZXRQcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRXZWJDb250ZXh0U2V0UHJv
cGVydHkpOgorICAgICAgICAod2Via2l0X3dlYl9jb250ZXh0X2NsYXNzX2luaXQpOgorICAgICAg
ICAod2Via2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpj
cmVhdGlvblBhcmFtZXRlcnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21h
aW5zKToKKwogMjAyMC0wNy0xNiAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFtXZWJBdXRobl0gQWRkIGEgY29uc29sZSBtZXNzYWdlOiAiVXNlciBnZXN0dXJl
IGlzIHJlcXVpcmVkIHRvIHVzZSB0aGUgcGxhdGZvcm0gYXV0aGVudGljYXRvci4iCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29udmVyc2lvbi5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29udmVyc2lvbi5jcHAKaW5kZXggOTU1
NzU2YmE0MDVmNDAwOTcwNjEwZjlhNjhjN2VkNDJhNjdjYjAxNS4uMzYxZTY5Mzk3OTQ5OTExZTZl
ZTAzMzFhNTBkNDE3ZTkyYWY3MTcyMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0RhdGVDb252ZXJzaW9uLmNwcApAQCAtMTAwLDE3ICsxMDAsMjMgQEAgU3RyaW5nIGZv
cm1hdERhdGVUaW1lKGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lJiB0LCBEYXRlVGltZUZvcm1hdCBm
b3JtYXQsIGJvb2wgYXMKICAgICAgICAgICAgIGFwcGVuZE51bWJlcjwyPihidWlsZGVyLCBvZmZz
ZXQgLyA2MCk7CiAgICAgICAgICAgICBhcHBlbmROdW1iZXI8Mj4oYnVpbGRlciwgb2Zmc2V0ICUg
NjApOwogCisgICAgICAgICAgICBTdHJpbmcgdGltZVpvbmVOYW1lOworICAgICAgICAgICAgaWYg
KCFXVEY6OnRpbWVab25lRGlzcGxheU5hbWVPdmVycmlkZSgpLmlzRW1wdHkoKSkKKyAgICAgICAg
ICAgICAgICB0aW1lWm9uZU5hbWUgPSBXVEY6OnRpbWVab25lRGlzcGxheU5hbWVPdmVycmlkZSgp
OworICAgICAgICAgICAgZWxzZSB7CiAjaWYgT1MoV0lORE9XUykKLSAgICAgICAgICAgIFRJTUVf
Wk9ORV9JTkZPUk1BVElPTiB0aW1lWm9uZUluZm9ybWF0aW9uOwotICAgICAgICAgICAgR2V0VGlt
ZVpvbmVJbmZvcm1hdGlvbigmdGltZVpvbmVJbmZvcm1hdGlvbik7Ci0gICAgICAgICAgICBjb25z
dCBXQ0hBUiogd2luVGltZVpvbmVOYW1lID0gdC5pc0RTVCgpID8gdGltZVpvbmVJbmZvcm1hdGlv
bi5EYXlsaWdodE5hbWUgOiB0aW1lWm9uZUluZm9ybWF0aW9uLlN0YW5kYXJkTmFtZTsKLSAgICAg
ICAgICAgIFN0cmluZyB0aW1lWm9uZU5hbWUod2luVGltZVpvbmVOYW1lKTsKKyAgICAgICAgICAg
ICAgICBUSU1FX1pPTkVfSU5GT1JNQVRJT04gdGltZVpvbmVJbmZvcm1hdGlvbjsKKyAgICAgICAg
ICAgICAgICBHZXRUaW1lWm9uZUluZm9ybWF0aW9uKCZ0aW1lWm9uZUluZm9ybWF0aW9uKTsKKyAg
ICAgICAgICAgICAgICBjb25zdCBXQ0hBUiogd2luVGltZVpvbmVOYW1lID0gdC5pc0RTVCgpID8g
dGltZVpvbmVJbmZvcm1hdGlvbi5EYXlsaWdodE5hbWUgOiB0aW1lWm9uZUluZm9ybWF0aW9uLlN0
YW5kYXJkTmFtZTsKKyAgICAgICAgICAgICAgICB0aW1lWm9uZU5hbWUgPSBTdHJpbmcod2luVGlt
ZVpvbmVOYW1lKTsKICNlbHNlCi0gICAgICAgICAgICBzdHJ1Y3QgdG0gZ3RtID0gdDsKLSAgICAg
ICAgICAgIGNoYXIgdGltZVpvbmVOYW1lWzcwXTsKLSAgICAgICAgICAgIHN0cmZ0aW1lKHRpbWVa
b25lTmFtZSwgc2l6ZW9mKHRpbWVab25lTmFtZSksICIlWiIsICZndG0pOworICAgICAgICAgICAg
ICAgIHN0cnVjdCB0bSBndG0gPSB0OworICAgICAgICAgICAgICAgIGNoYXIgdHpOYW1lWzcwXTsK
KyAgICAgICAgICAgICAgICBzdHJmdGltZSh0ek5hbWUsIHNpemVvZih0ek5hbWUpLCAiJVoiLCAm
Z3RtKTsKKyAgICAgICAgICAgICAgICB0aW1lWm9uZU5hbWUgPSBTdHJpbmcodHpOYW1lKTsKICNl
bmRpZgotICAgICAgICAgICAgaWYgKHRpbWVab25lTmFtZVswXSkgeworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgaWYgKCF0aW1lWm9uZU5hbWUuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgKCIpOwogICAgICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKHRpbWVab25lTmFtZSk7CiAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJykn
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGlt
ZUZvcm1hdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVG
b3JtYXQuY3BwCmluZGV4IDFlNjljOGU3YzUxYWE4ZTg0N2QwMjMyY2Q4NzRmMDMyYTFjZDA0OGMu
LjJhYWQxN2Q1MTM2NjQ2NmI1MmM3N2NlMmE1MTk5N2E2MGI0N2E0MmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcApAQCAt
MzQsNiArMzQsNyBAQAogI2luY2x1ZGUgPHVuaWNvZGUvdWNhbC5oPgogI2luY2x1ZGUgPHVuaWNv
ZGUvdWRhdHBnLmg+CiAjaW5jbHVkZSA8dW5pY29kZS91ZW51bS5oPgorI2luY2x1ZGUgPHd0Zi9E
YXRlTWF0aC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRl
IDx3dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5oPgogCkBAIC0xMDIsNiArMTAzLDEwIEBAIHN0
YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgaXNVVENFcXVpdmFsZW50KFN0cmluZ1ZpZXcgdGltZVpv
bmUpCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLWRlZmF1bHR0aW1lem9uZQogc3Rh
dGljIFN0cmluZyBkZWZhdWx0VGltZVpvbmUoKQogeworICAgIFN0cmluZyB0eiA9IFdURjo6dGlt
ZVpvbmVPdmVycmlkZSgpOworICAgIGlmICghdHouaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4g
dHo7CisKICAgICBTdHJpbmcgY2Fub25pY2FsOwogCiAgICAgVmVjdG9yPFVDaGFyLCAzMj4gYnVm
ZmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRGF0ZU1hdGguY3BwIGIvU291cmNlL1dU
Ri93dGYvRGF0ZU1hdGguY3BwCmluZGV4IGFmOTJmNjc0NzcwMzQ5Y2M4ZTdiZTlhNTNiMWNlZTZl
Nzg0MGU3ODEuLjQ1MzNiMTkzNTI2YWEyZDU3ODUxZjA3OGUxNjZlMmU3YTAwYjAyZTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9E
YXRlTWF0aC5jcHAKQEAgLTc2LDkgKzc2LDE0IEBACiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1
ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHRpbWUuaD4KKyNpbmNsdWRlIDx1bmljb2RlL3VjYWwu
aD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBl
Lmg+CisjaW5jbHVkZSA8d3RmL0xhbmd1YWdlLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi91bmljb2RlL1VURjhDb252ZXJzaW9u
Lmg+CiAKICNpZiBPUyhXSU5ET1dTKQogI2luY2x1ZGUgPHdpbmRvd3MuaD4KQEAgLTkyLDYgKzk3
LDE4IEBAIHRlbXBsYXRlPHVuc2lnbmVkIGxlbmd0aD4gaW5saW5lIGJvb2wgc3RhcnRzV2l0aExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBjCiAgICAgcmV0dXJuIGVxdWFsTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKHN0cmluZywgbG93ZXJjYXNlTGV0dGVycywgbGVuZ3RoIC0gMSk7CiB9
CiAKK3N0cnVjdCBUaW1lWm9uZU92ZXJyaWRlIHsKKyAgICBVQ2FsZW5kYXIqIGNhbDsKKyAgICBT
dHJpbmcgaWQ7CisgICAgU3RyaW5nIGRpc3BsYXlOYW1lOworfTsKKworc3RhdGljIFRpbWVab25l
T3ZlcnJpZGUmIGlubmVyVGltZVpvbmVPdmVycmlkZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFRpbWVab25lT3ZlcnJpZGU+IHRpbWVab25lT3ZlcnJpZGU7CisgICAgcmV0dXJuIHRp
bWVab25lT3ZlcnJpZGU7Cit9CisKIC8qIENvbnN0YW50cyAqLwogCiBjb25zdCBjaGFyKiBjb25z
dCB3ZWVrZGF5TmFtZVs3XSA9IHsgIk1vbiIsICJUdWUiLCAiV2VkIiwgIlRodSIsICJGcmkiLCAi
U2F0IiwgIlN1biIgfTsKQEAgLTMxOCw2ICszMzUsMTQgQEAgc3RhdGljIGRvdWJsZSBjYWxjdWxh
dGVEU1RPZmZzZXQodGltZV90IGxvY2FsVGltZSwgZG91YmxlIHV0Y09mZnNldCkKIC8vIFJldHVy
bnMgY29tYmluZWQgb2Zmc2V0IGluIG1pbGxpc2Vjb25kIChVVEMgKyBEU1QpLgogTG9jYWxUaW1l
T2Zmc2V0IGNhbGN1bGF0ZUxvY2FsVGltZU9mZnNldChkb3VibGUgbXMsIFRpbWVUeXBlIGlucHV0
VGltZVR5cGUpCiB7CisgICAgYXV0byYgdHogPSBpbm5lclRpbWVab25lT3ZlcnJpZGUoKTsKKyAg
ICBpZiAodHouY2FsKSB7CisgICAgICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9S
OworICAgICAgICB1Y2FsX3NldE1pbGxpcyh0ei5jYWwsIG1zLCAmc3RhdHVzKTsKKyAgICAgICAg
aW50MzJfdCBvZmZzZXQgPSB1Y2FsX2dldCh0ei5jYWwsIFVDQUxfWk9ORV9PRkZTRVQsICZzdGF0
dXMpOworICAgICAgICBpbnQzMl90IGRzdE9mZnNldCA9IHVjYWxfZ2V0KHR6LmNhbCwgVUNBTF9E
U1RfT0ZGU0VULCAmc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuIExvY2FsVGltZU9mZnNldChkc3RP
ZmZzZXQsIG9mZnNldCArIGRzdE9mZnNldCk7CisgICAgfQogI2lmIEhBVkUoVE1fR01UT0ZGKQog
ICAgIGRvdWJsZSBsb2NhbFRvVVRDVGltZU9mZnNldCA9IGlucHV0VGltZVR5cGUgPT0gTG9jYWxU
aW1lID8gY2FsY3VsYXRlVVRDT2Zmc2V0KCkgOiAwOwogI2Vsc2UKQEAgLTEwMTksNCArMTA0NCw4
NiBAQCBTdHJpbmcgbWFrZVJGQzI4MjJEYXRlU3RyaW5nKHVuc2lnbmVkIGRheU9mV2VlaywgdW5z
aWduZWQgZGF5LCB1bnNpZ25lZCBtb250aCwgdQogICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRv
U3RyaW5nKCk7CiB9CiAKK2Jvb2wgaXNUaW1lWm9uZVZhbGlkKGNvbnN0IFN0cmluZyYgdGltZVpv
bmUpCit7CisgICAgLy8gVGltZXpvbmUgaXMgYXNjaWkuCisgICAgVmVjdG9yPFVDaGFyPiBidWZm
ZXIodGltZVpvbmUubGVuZ3RoKCkpOworICAgIFVDaGFyKiBidWZmZXJTdGFydCA9IGJ1ZmZlci5k
YXRhKCk7CisgICAgQ1N0cmluZyBjdHogPSB0aW1lWm9uZS51dGY4KCk7CisgICAgaWYgKCFVbmlj
b2RlOjpjb252ZXJ0VVRGOFRvVVRGMTYoY3R6LmRhdGEoKSwgY3R6LmRhdGEoKSArIGN0ei5sZW5n
dGgoKSwgJmJ1ZmZlclN0YXJ0LCBidWZmZXJTdGFydCArIHRpbWVab25lLmxlbmd0aCgpKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgVmVjdG9yPFVDaGFyLCAzMj4gY2Fub25pY2FsQnVm
ZmVyKDMyKTsKKyAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICBhdXRv
IGNhbm9uaWNhbExlbmd0aCA9IHVjYWxfZ2V0Q2Fub25pY2FsVGltZVpvbmVJRChidWZmZXIuZGF0
YSgpLCBidWZmZXIuc2l6ZSgpLCBjYW5vbmljYWxCdWZmZXIuZGF0YSgpLCBjYW5vbmljYWxCdWZm
ZXIuc2l6ZSgpLCBudWxscHRyLCAmc3RhdHVzKTsKKyAgICBpZiAoc3RhdHVzID09IFVfQlVGRkVS
X09WRVJGTE9XX0VSUk9SKSB7CisgICAgICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICAg
ICAgY2Fub25pY2FsQnVmZmVyLmdyb3coY2Fub25pY2FsTGVuZ3RoKTsKKyAgICAgICAgdWNhbF9n
ZXRDYW5vbmljYWxUaW1lWm9uZUlEKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCksIGNhbm9u
aWNhbEJ1ZmZlci5kYXRhKCksIGNhbm9uaWNhbExlbmd0aCwgbnVsbHB0ciwgJnN0YXR1cyk7Cisg
ICAgfQorICAgIHJldHVybiBVX1NVQ0NFU1Moc3RhdHVzKTsKK30KKworYm9vbCBzZXRUaW1lWm9u
ZU92ZXJyaWRlKGNvbnN0IFN0cmluZyYgdGltZVpvbmUpCit7CisgICAgaW5uZXJUaW1lWm9uZU92
ZXJyaWRlKCkuZGlzcGxheU5hbWUgPSBTdHJpbmcoKTsKKyAgICBpZiAoaW5uZXJUaW1lWm9uZU92
ZXJyaWRlKCkuY2FsKSB7CisgICAgICAgIHVjYWxfY2xvc2UoaW5uZXJUaW1lWm9uZU92ZXJyaWRl
KCkuY2FsKTsKKyAgICAgICAgaW5uZXJUaW1lWm9uZU92ZXJyaWRlKCkuY2FsID0gbnVsbHB0cjsK
KyAgICB9CisKKyAgICBpZiAodGltZVpvbmUuaXNFbXB0eSgpKSB7CisgICAgICAgIGlubmVyVGlt
ZVpvbmVPdmVycmlkZSgpLmlkID0gU3RyaW5nKCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKworICAgIC8vIFRpbWV6b25lIGlzIGFzY2lpLgorICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVy
KHRpbWVab25lLmxlbmd0aCgpKTsKKyAgICBVQ2hhciogYnVmZmVyU3RhcnQgPSBidWZmZXIuZGF0
YSgpOworICAgIENTdHJpbmcgY3R6ID0gdGltZVpvbmUudXRmOCgpOworICAgIGlmICghVW5pY29k
ZTo6Y29udmVydFVURjhUb1VURjE2KGN0ei5kYXRhKCksIGN0ei5kYXRhKCkgKyBjdHoubGVuZ3Ro
KCksICZidWZmZXJTdGFydCwgYnVmZmVyU3RhcnQgKyB0aW1lWm9uZS5sZW5ndGgoKSkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIFZlY3RvcjxVQ2hhciwgMzI+IGNhbm9uaWNhbEJ1ZmZl
cigzMik7CisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgYXV0byBj
YW5vbmljYWxMZW5ndGggPSB1Y2FsX2dldENhbm9uaWNhbFRpbWVab25lSUQoYnVmZmVyLmRhdGEo
KSwgYnVmZmVyLnNpemUoKSwgY2Fub25pY2FsQnVmZmVyLmRhdGEoKSwgY2Fub25pY2FsQnVmZmVy
LnNpemUoKSwgbnVsbHB0ciwgJnN0YXR1cyk7CisgICAgaWYgKHN0YXR1cyA9PSBVX0JVRkZFUl9P
VkVSRkxPV19FUlJPUikgeworICAgICAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgICAg
IGNhbm9uaWNhbEJ1ZmZlci5ncm93KGNhbm9uaWNhbExlbmd0aCk7CisgICAgICAgIHVjYWxfZ2V0
Q2Fub25pY2FsVGltZVpvbmVJRChidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpLCBjYW5vbmlj
YWxCdWZmZXIuZGF0YSgpLCBjYW5vbmljYWxMZW5ndGgsIG51bGxwdHIsICZzdGF0dXMpOworICAg
IH0KKyAgICBpZiAoIVVfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBVQ2FsZW5kYXIqIGNhbCA9IHVjYWxfb3BlbihjYW5vbmljYWxCdWZmZXIuZGF0YSgpLCBj
YW5vbmljYWxMZW5ndGgsIG51bGxwdHIsIFVDQUxfVFJBRElUSU9OQUwsICZzdGF0dXMpOworICAg
IGlmICghVV9TVUNDRVNTKHN0YXR1cykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFZl
Y3RvcjxVQ2hhciwgMzI+IGRpc3BsYXlOYW1lQnVmZmVyKDMyKTsKKyAgICBhdXRvIGRpc3BsYXlO
YW1lTGVuZ3RoID0gdWNhbF9nZXRUaW1lWm9uZURpc3BsYXlOYW1lKGNhbCwgVUNBTF9TVEFOREFS
RCwgZGVmYXVsdExhbmd1YWdlKCkudXRmOCgpLmRhdGEoKSwgZGlzcGxheU5hbWVCdWZmZXIuZGF0
YSgpLCBkaXNwbGF5TmFtZUJ1ZmZlci5zaXplKCksICZzdGF0dXMpOworICAgIGlmIChzdGF0dXMg
PT0gVV9CVUZGRVJfT1ZFUkZMT1dfRVJST1IpIHsKKyAgICAgICAgc3RhdHVzID0gVV9aRVJPX0VS
Uk9SOworICAgICAgICBkaXNwbGF5TmFtZUJ1ZmZlci5ncm93KGRpc3BsYXlOYW1lTGVuZ3RoKTsK
KyAgICAgICAgdWNhbF9nZXRUaW1lWm9uZURpc3BsYXlOYW1lKGNhbCwgVUNBTF9TVEFOREFSRCwg
ZGVmYXVsdExhbmd1YWdlKCkudXRmOCgpLmRhdGEoKSwgZGlzcGxheU5hbWVCdWZmZXIuZGF0YSgp
LCBkaXNwbGF5TmFtZUxlbmd0aCwgJnN0YXR1cyk7CisgICAgfQorICAgIGlmICghVV9TVUNDRVNT
KHN0YXR1cykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8mIHRpbWVab25lT3Zl
cnJpZGUgPSBpbm5lclRpbWVab25lT3ZlcnJpZGUoKTsKKyAgICB0aW1lWm9uZU92ZXJyaWRlLmNh
bCA9IGNhbDsKKyAgICB0aW1lWm9uZU92ZXJyaWRlLmlkID0gU3RyaW5nKGNhbm9uaWNhbEJ1ZmZl
ci5kYXRhKCksIGNhbm9uaWNhbExlbmd0aCk7CisgICAgdGltZVpvbmVPdmVycmlkZS5kaXNwbGF5
TmFtZSA9IFN0cmluZyhkaXNwbGF5TmFtZUJ1ZmZlci5kYXRhKCksIGRpc3BsYXlOYW1lTGVuZ3Ro
KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworU3RyaW5nIHRpbWVab25lT3ZlcnJpZGUoKQorewor
ICAgIHJldHVybiBpbm5lclRpbWVab25lT3ZlcnJpZGUoKS5pZDsKK30KKworU3RyaW5nIHRpbWVa
b25lRGlzcGxheU5hbWVPdmVycmlkZSgpCit7CisgICAgcmV0dXJuIGlubmVyVGltZVpvbmVPdmVy
cmlkZSgpLmRpc3BsYXlOYW1lOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmggYi9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5oCmlu
ZGV4IDI0NmJhNjdjNzY0YjYyOTA0MmE3OTI3ZDI0ZmU4OWIwNDlkODJhMGIuLmY3MWI5YjFiZWY2
OWM3ZmVjNDJmOGY1YWM5OGJmYmQ5MGU2ZjA2YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L0RhdGVNYXRoLmgKKysrIGIvU291cmNlL1dURi93dGYvRGF0ZU1hdGguaApAQCAtMzg5LDYgKzM4
OSwxMSBAQCBpbmxpbmUgaW50IGRheUluTW9udGhGcm9tRGF5SW5ZZWFyKGludCBkYXlJblllYXIs
IGJvb2wgbGVhcFllYXIpCiAgICAgcmV0dXJuIGQgLSBzdGVwOwogfQogCitXVEZfRVhQT1JUX1BS
SVZBVEUgYm9vbCBpc1RpbWVab25lVmFsaWQoY29uc3QgU3RyaW5nJik7CitXVEZfRVhQT1JUX1BS
SVZBVEUgYm9vbCBzZXRUaW1lWm9uZU92ZXJyaWRlKGNvbnN0IFN0cmluZyYpOworV1RGX0VYUE9S
VF9QUklWQVRFIFN0cmluZyB0aW1lWm9uZU92ZXJyaWRlKCk7CitXVEZfRVhQT1JUX1BSSVZBVEUg
U3RyaW5nIHRpbWVab25lRGlzcGxheU5hbWVPdmVycmlkZSgpOworCiAvLyBSZXR1cm5zIGNvbWJp
bmVkIG9mZnNldCBpbiBtaWxsaXNlY29uZCAoVVRDICsgRFNUKS4KIFdURl9FWFBPUlRfUFJJVkFU
RSBMb2NhbFRpbWVPZmZzZXQgY2FsY3VsYXRlTG9jYWxUaW1lT2Zmc2V0KGRvdWJsZSB1dGNJbk1p
bGxpc2Vjb25kcywgVGltZVR5cGUgPSBVVENUaW1lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAppbmRleCBhM2I2MTU2ZTFlYjIw
Njk1YjE4MWIyYWFiNjQ0MDQwOGFjZTY1ZjhlLi5kZTlhYTc3OGE1YTMyODI2MDBlMzA1N2VlYmVm
OTNiNTlhZjVjZTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtMTYxLDYgKzE2MSw4IEBAIHZvaWQgV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICNpZiBQ
TEFURk9STShHVEspCiAgICAgZW5jb2RlciA8PCB0aGVtZU5hbWU7CiAjZW5kaWYKKworICAgIGVu
Y29kZXIgPDwgdGltZVpvbmVPdmVycmlkZTsKIH0KIAogT3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2Rl
ciYgZGVjb2RlcikKQEAgLTUwOSw2ICs1MTEsMTIgQEAgT3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2QK
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICNlbmRpZgogCisgICAgT3B0aW9uYWw8T3B0
aW9uYWw8U3RyaW5nPj4gdGltZVpvbmVPdmVycmlkZTsKKyAgICBkZWNvZGVyID4+IHRpbWVab25l
T3ZlcnJpZGU7CisgICAgaWYgKCF0aW1lWm9uZU92ZXJyaWRlKQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgIHBhcmFtZXRlcnMudGltZVpvbmVPdmVycmlkZSA9IFdURk1vdmUoKnRp
bWVab25lT3ZlcnJpZGUpOworCiAgICAgcmV0dXJuIHBhcmFtZXRlcnM7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCA2NjZi
NTk0ZTU0Njk2ZjMyMjY1YWUyMDA4M2ExNGM4YjE3ZjIxNWJkLi5iYTE2OGU3MTBlNDQ4MzE5MjYw
ZGVhMmY5YjVlNmJiNGQ4NDRhMDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC0yMzQsNiArMjM0LDggQEAgc3RydWN0IFdlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMgewogI2lmIFBMQVRGT1JNKEdUSykKICAgICBTdHJpbmcgdGhl
bWVOYW1lOwogI2VuZGlmCisKKyAgICBPcHRpb25hbDxTdHJpbmc+IHRpbWVab25lT3ZlcnJpZGU7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCmluZGV4IDQzMWZjZWY3ODZjOWI1
YzMwMDQ3NmEzMTJhNDc4OGUwOTQwNDRlNDkuLjNmN2ZkZTNkMjYwYjI0ZmM2YzAzZTBhYjBjYjMz
MzM1MWM4NGVkOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQ
YWdlQ29uZmlndXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SVBhZ2VDb25maWd1cmF0aW9uLmNwcApAQCAtOTgsNiArOTgsNyBAQCBSZWY8UGFnZUNvbmZpZ3Vy
YXRpb24+IFBhZ2VDb25maWd1cmF0aW9uOjpjb3B5KCkgY29uc3QKICAgICBjb3B5LT5tX2xvYWRz
U3VicmVzb3VyY2VzID0gdGhpcy0+bV9sb2Fkc1N1YnJlc291cmNlczsKICAgICBjb3B5LT5tX2xv
YWRzRnJvbU5ldHdvcmsgPSB0aGlzLT5tX2xvYWRzRnJvbU5ldHdvcms7CiAgICAgY29weS0+bV9s
aW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zID0gdGhpcy0+bV9saW1pdHNOYXZpZ2F0
aW9uc1RvQXBwQm91bmREb21haW5zOworICAgIGNvcHktPm1fdGltZVpvbmVPdmVycmlkZSA9IHRo
aXMtPm1fdGltZVpvbmVPdmVycmlkZTsKIAogICAgIHJldHVybiBjb3B5OwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaAppbmRleCAx
MjA5YzM2ZThjZmRmMDM3NzQyOWM3YjE5NDdmOWU2NWM5MmZmYmRlLi5mZTM3MzMzYWUzNTA0M2Zj
ODg5OTNlZjM1Mjk1ZWQ1M2M2ZDI3NGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaApAQCAtMTYyLDcgKzE2MiwxMCBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIHNldFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKFdl
YkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHZhbHVlKSB7IG1fc2hv
dWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgPSB2YWx1ZTsgfQogICAgIFdlYkNvcmU6
OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJlbGF4VGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRSZWxheFRoaXJkUGFydHlD
b29raWVCbG9ja2luZzsgfQotICAgIAorCisgICAgdm9pZCBzZXRUaW1lWm9uZU92ZXJyaWRlKGNv
bnN0IFdURjo6U3RyaW5nJiB0aW1lWm9uZU92ZXJyaWRlKSB7IG1fdGltZVpvbmVPdmVycmlkZSA9
IHRpbWVab25lT3ZlcnJpZGU7IH0KKyAgICBjb25zdCBXVEY6OlN0cmluZyB0aW1lWm9uZU92ZXJy
aWRlKCkgY29uc3QgeyByZXR1cm4gbV90aW1lWm9uZU92ZXJyaWRlOyB9CisKIHByaXZhdGU6CiAK
ICAgICBSZWZQdHI8V2ViS2l0OjpXZWJQcm9jZXNzUG9vbD4gbV9wcm9jZXNzUG9vbDsKQEAgLTIw
Nyw2ICsyMTAsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9sb2Fkc0Zyb21OZXR3b3JrIHsgdHJ1
ZSB9OwogICAgIGJvb2wgbV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zIHsgZmFs
c2UgfTsKICAgICBXZWJDb3JlOjpTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBt
X3Nob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHsgV2ViQ29yZTo6U2hvdWxkUmVs
YXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc6Ok5vIH07CisKKyAgICBXVEY6OlN0cmluZyBtX3Rp
bWVab25lT3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24ubW0KaW5kZXggYmVmMWUyNWEzOTgzYzgxMjlmYjliZmY3ZjJjZTBkY2U2NzViNjFlZi4uNzQ5
NDNhNDUyYTU4MWFiNDBhZGI3ZDkwODMyYmRjODBhZjU4NzdlNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24ubW0KQEAgLTEyODEsNiArMTI4MSwxNiBAQCBzdGF0aWMgX1dLV2ViVmlld0NhdGVnb3J5IHRv
V0tXZWJWaWV3Q2F0ZWdvcnkoV2ViS2l0OjpXZWJWaWV3Q2F0ZWdvcnkgY2F0ZWdvcnkpCiAgICAg
X3BhZ2VDb25maWd1cmF0aW9uLT5zZXRQcm9jZXNzRGlzcGxheU5hbWUobHNEaXNwbGF5TmFtZSk7
CiB9CiAKKy0gKE5TU3RyaW5nICopX3RpbWVab25lT3ZlcnJpZGUKK3sKKyAgICByZXR1cm4gX3Bh
Z2VDb25maWd1cmF0aW9uLT50aW1lWm9uZU92ZXJyaWRlKCk7Cit9CisKKy0gKHZvaWQpX3NldFRp
bWVab25lT3ZlcnJpZGU6KE5TU3RyaW5nICopdGltZVpvbmUKK3sKKyAgICBfcGFnZUNvbmZpZ3Vy
YXRpb24tPnNldFRpbWVab25lT3ZlcnJpZGUodGltZVpvbmUpOworfQorCiBAZW5kCiAKIEBpbXBs
ZW1lbnRhdGlvbiBXS1dlYlZpZXdDb25maWd1cmF0aW9uIChXS0RlcHJlY2F0ZWQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJh
dGlvblByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oCmluZGV4IDQ3OGFmYjBlNWFmNmJiODhhODFkOTlmNzVl
NTJmOGFkMzI1OGVlMGYuLjVlODk3YTNmMDZlYjkyMzBkMDk2ZDZiYWQxMzNmYzkwYWQwMjUzNjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdD
b25maWd1cmF0aW9uUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oCkBAIC0xMjgsNSArMTI4LDYgQEAg
dHlwZWRlZiBOU19FTlVNKE5TVUludGVnZXIsIF9XS1dlYlZpZXdDYXRlZ29yeSkgewogQHByb3Bl
cnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0SWdub3Jlc0FwcEJvdW5kRG9tYWluczopIEJPT0wg
X2lnbm9yZXNBcHBCb3VuZERvbWFpbnMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJB
KSwgaW9zKFdLX0lPU19UQkEpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFNo
b3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOikgQk9PTCBfc2hvdWxkUmVsYXhUaGly
ZFBhcnR5Q29va2llQmxvY2tpbmcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwg
aW9zKFdLX0lPU19UQkEpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFByb2Nl
c3NEaXNwbGF5TmFtZTopIE5TU3RyaW5nICpfcHJvY2Vzc0Rpc3BsYXlOYW1lIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CitAcHJvcGVydHkgKG5v
bmF0b21pYywgc2V0dGVyPV9zZXRUaW1lWm9uZU92ZXJyaWRlOikgTlNTdHJpbmcgKl90aW1lWm9u
ZU92ZXJyaWRlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSk7CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFdlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKaW5kZXggMzAwYTBiZTEyMDk5NmMyNWUzNTdiNGJhNDIz
NDk1MTM1ZjlhMmZlMC4uZjMwNjc4OTE5NTE4OTFhNDA2NTMxNzAzZjJhNDYzYWFiMGU4Y2FiYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29u
dGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
Q29udGV4dC5jcHAKQEAgLTEyNCw5ICsxMjQsMTAgQEAgZW51bSB7CiAjaWYgUExBVEZPUk0oR1RL
KQogICAgIFBST1BfUFNPTl9FTkFCTEVELAogI2lmICFVU0UoR1RLNCkKLSAgICBQUk9QX1VTRV9T
WVNZRU1fQVBQRUFSQU5DRV9GT1JfU0NST0xMQkFSUworICAgIFBST1BfVVNFX1NZU1RFTV9BUFBF
QVJBTkNFX0ZPUl9TQ1JPTExCQVJTLAogI2VuZGlmCiAjZW5kaWYKKyAgICBQUk9QX1RJTUVfWk9O
RV9PVkVSUklERQogfTsKIAogZW51bSB7CkBAIC0yNDIsNiArMjQzLDggQEAgc3RydWN0IF9XZWJL
aXRXZWJDb250ZXh0UHJpdmF0ZSB7CiAKICAgICBIYXNoU2V0PFN0cmluZz4gZG5zUHJlZmV0Y2hl
ZEhvc3RzOwogICAgIFBBTDo6SHlzdGVyZXNpc0FjdGl2aXR5IGRuc1ByZWZldGNoSHlzdGVyZXJp
czsKKworICAgIENTdHJpbmcgdGltZVpvbmVPdmVycmlkZTsKIH07CiAKIHN0YXRpYyBndWludCBz
aWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwgfTsKQEAgLTM0MiwxMSArMzQ1LDE0IEBAIHN0YXRp
YyB2b2lkIHdlYmtpdFdlYkNvbnRleHRHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50
IHByb3BJRCwgR1ZhbHVlKiB2CiAgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIGNv
bnRleHQtPnByaXYtPnBzb25FbmFibGVkKTsKICAgICAgICAgYnJlYWs7CiAjaWYgIVVTRShHVEs0
KQotICAgIGNhc2UgUFJPUF9VU0VfU1lTWUVNX0FQUEVBUkFOQ0VfRk9SX1NDUk9MTEJBUlM6Cisg
ICAgY2FzZSBQUk9QX1VTRV9TWVNURU1fQVBQRUFSQU5DRV9GT1JfU0NST0xMQkFSUzoKICAgICAg
ICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3dlYl9jb250ZXh0X2dldF91c2Vf
c3lzdGVtX2FwcGVhcmFuY2VfZm9yX3Njcm9sbGJhcnMoY29udGV4dCkpOwogICAgICAgICBicmVh
azsKICNlbmRpZgogI2VuZGlmCisgICAgY2FzZSBQUk9QX1RJTUVfWk9ORV9PVkVSUklERToKKyAg
ICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZhbHVlLCBjb250ZXh0LT5wcml2LT50aW1lWm9uZU92
ZXJyaWRlLmRhdGEoKSk7CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEdf
T0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJRCwgcGFyYW1TcGVj
KTsKICAgICB9CkBAIC0zNzIsMTEgKzM3OCwxNCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJDb250
ZXh0U2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSUQsIGNvbnN0IEdWYQog
ICAgICAgICBjb250ZXh0LT5wcml2LT5wc29uRW5hYmxlZCA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4o
dmFsdWUpOwogICAgICAgICBicmVhazsKICNpZiAhVVNFKEdUSzQpCi0gICAgY2FzZSBQUk9QX1VT
RV9TWVNZRU1fQVBQRUFSQU5DRV9GT1JfU0NST0xMQkFSUzoKKyAgICBjYXNlIFBST1BfVVNFX1NZ
U1RFTV9BUFBFQVJBTkNFX0ZPUl9TQ1JPTExCQVJTOgogICAgICAgICB3ZWJraXRfd2ViX2NvbnRl
eHRfc2V0X3VzZV9zeXN0ZW1fYXBwZWFyYW5jZV9mb3Jfc2Nyb2xsYmFycyhjb250ZXh0LCBnX3Zh
bHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CiAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAjZW5kaWYK
KyAgICBjYXNlIFBST1BfVElNRV9aT05FX09WRVJSSURFOgorICAgICAgICBjb250ZXh0LT5wcml2
LT50aW1lWm9uZU92ZXJyaWRlID0gZ192YWx1ZV9nZXRfc3RyaW5nKHZhbHVlKTsKKyAgICAgICAg
YnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BF
UlRZX0lEKG9iamVjdCwgcHJvcElELCBwYXJhbVNwZWMpOwogICAgIH0KQEAgLTU1NSw3ICs1NjQs
NyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfY2xhc3NfaW5pdChXZWJLaXRXZWJD
b250ZXh0Q2xhc3MqIHdlYkNvbnRleHRDbGFzcwogICAgICAqLwogICAgIGdfb2JqZWN0X2NsYXNz
X2luc3RhbGxfcHJvcGVydHkoCiAgICAgICAgIGdPYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9V
U0VfU1lTWUVNX0FQUEVBUkFOQ0VfRk9SX1NDUk9MTEJBUlMsCisgICAgICAgIFBST1BfVVNFX1NZ
U1RFTV9BUFBFQVJBTkNFX0ZPUl9TQ1JPTExCQVJTLAogICAgICAgICBnX3BhcmFtX3NwZWNfYm9v
bGVhbigKICAgICAgICAgICAgICJ1c2Utc3lzdGVtLWFwcGVhcmFuY2UtZm9yLXNjcm9sbGJhcnMi
LAogICAgICAgICAgICAgXygiVXNlIHN5c3RlbSBhcHBlYXJhbmNlIGZvciBzY3JvbGxiYXJzIiks
CkBAIC01NjUsNiArNTc0LDIzIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfY29udGV4dF9jbGFz
c19pbml0KFdlYktpdFdlYkNvbnRleHRDbGFzcyogd2ViQ29udGV4dENsYXNzCiAjZW5kaWYKICNl
bmRpZgogCisgICAgLyoqCisgICAgICogV2ViS2l0V2ViQ29udGV4dDp0aW1lLXpvbmUtb3ZlcnJp
ZGU6CisgICAgICoKKyAgICAgKiBUaGUgdGltZXpvbmUgb3ZlcnJpZGUgZm9yIHRoaXMgd2ViIGNv
bnRleHQuCisgICAgICoKKyAgICAgKiBTaW5jZTogMi4zMAorICAgICAqLworICAgIGdfb2JqZWN0
X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCisgICAgICAgIGdPYmplY3RDbGFzcywKKyAgICAgICAg
UFJPUF9USU1FX1pPTkVfT1ZFUlJJREUsCisgICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoCisg
ICAgICAgICAgICAidGltZS16b25lLW92ZXJyaWRlIiwKKyAgICAgICAgICAgIF8oIlRpbWUgWm9u
ZSBPdmVycmlkZSIpLAorICAgICAgICAgICAgXygiVGhlIHRpbWUgem9uZSB0byB1c2UgaW5zdGVh
ZCBvZiB0aGUgc3lzdGVtIG9uZSIpLAorICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAg
IHN0YXRpY19jYXN0PEdQYXJhbUZsYWdzPihXRUJLSVRfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJB
TV9DT05TVFJVQ1RfT05MWSkpKTsKKwogICAgIC8qKgogICAgICAqIFdlYktpdFdlYkNvbnRleHQ6
OmRvd25sb2FkLXN0YXJ0ZWQ6CiAgICAgICogQGNvbnRleHQ6IHRoZSAjV2ViS2l0V2ViQ29udGV4
dApAQCAtMTkxMCw2ICsxOTM2LDcgQEAgdm9pZCB3ZWJraXRXZWJDb250ZXh0Q3JlYXRlUGFnZUZv
cldlYlZpZXcoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCwgV2ViS2l0V2ViVmkKICAgICBwYWdl
Q29uZmlndXJhdGlvbi0+c2V0UmVsYXRlZFBhZ2UocmVsYXRlZFZpZXcgPyAmd2Via2l0V2ViVmll
d0dldFBhZ2UocmVsYXRlZFZpZXcpIDogbnVsbHB0cik7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24t
PnNldFVzZXJDb250ZW50Q29udHJvbGxlcih1c2VyQ29udGVudE1hbmFnZXIgPyB3ZWJraXRVc2Vy
Q29udGVudE1hbmFnZXJHZXRVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSh1c2VyQ29udGVudE1h
bmFnZXIpIDogbnVsbHB0cik7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldENvbnRyb2xsZWRC
eUF1dG9tYXRpb24od2Via2l0X3dlYl92aWV3X2lzX2NvbnRyb2xsZWRfYnlfYXV0b21hdGlvbih3
ZWJWaWV3KSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFRpbWVab25lT3ZlcnJpZGUoY29u
dGV4dC0+cHJpdi0+dGltZVpvbmVPdmVycmlkZS5kYXRhKCkpOwogCiAgICAgV2ViS2l0V2Vic2l0
ZURhdGFNYW5hZ2VyKiBtYW5hZ2VyID0gd2Via2l0V2ViVmlld0dldFdlYnNpdGVEYXRhTWFuYWdl
cih3ZWJWaWV3KTsKICAgICBpZiAoIW1hbmFnZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAppbmRleCA3NzYxOGY0YjQ4NTJjZThlN2ZiNjk1MjdjNTIwYWZiNzE5MWNm
YjgzLi44NzYxMDU4ZGRhNTNiOTVlYzNkMzk1NGVmNzg0NzUzZDEwOTVhOTA2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTc4NjEsNiArNzg2MSw3IEBAIFdl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMo
V2ViUHJvY2Vzc1Byb3h5JiBwcm9jCiAgICAgcGFyYW1ldGVycy5zaG91bGRDYXB0dXJlRGlzcGxh
eUluVUlQcm9jZXNzID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmNvbmZpZ3VyYXRpb24oKS5z
aG91bGRDYXB0dXJlRGlzcGxheUluVUlQcm9jZXNzKCk7CiAgICAgcGFyYW1ldGVycy5saW1pdHNO
YXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zID0gbV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91
bmREb21haW5zOwogICAgIHBhcmFtZXRlcnMuc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmcgPSBtX2NvbmZpZ3VyYXRpb24tPnNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nKCk7CisgICAgcGFyYW1ldGVycy50aW1lWm9uZU92ZXJyaWRlID0gbV9jb25maWd1cmF0aW9u
LT50aW1lWm9uZU92ZXJyaWRlKCk7CiAKICNpZiBQTEFURk9STShHVEspCiAgICAgcGFyYW1ldGVy
cy50aGVtZU5hbWUgPSBwYWdlQ2xpZW50KCkudGhlbWVOYW1lKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGZjNzI0OThmNDcyNDJlNmY3ODQ0
ZGYzM2QyNTQ1OThjMzc2OTMzMWIuLjg1YjRjZWVmNTg3MDNmYTgzZWQ5YmNjMGQzZTI4OTM3ZDVj
ZjVmZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CkBAIC0yNDAsNiArMjQwLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1dyaXRpbmdEaXJlY3Rpb24u
aD4KICNpbmNsdWRlIDxXZWJDb3JlL21hcmt1cC5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQu
aD4KKyNpbmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+
CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4K
QEAgLTQ4Miw2ICs0ODMsMTEgQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdl
SUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogewogICAgIEFTU0VS
VChtX2lkZW50aWZpZXIpOwogCisgICAgaWYgKHBhcmFtZXRlcnMudGltZVpvbmVPdmVycmlkZSkK
KyAgICAgICAgV1RGOjpzZXRUaW1lWm9uZU92ZXJyaWRlKCpwYXJhbWV0ZXJzLnRpbWVab25lT3Zl
cnJpZGUpOworICAgIGVsc2UKKyAgICAgICAgV1RGOjpzZXRUaW1lWm9uZU92ZXJyaWRlKHsgfSk7
CisKICAgICBtX3BhZ2VHcm91cCA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2VHcm91
cChwYXJhbWV0ZXJzLnBhZ2VHcm91cERhdGEpOwogCiAgICAgUGFnZUNvbmZpZ3VyYXRpb24gcGFn
ZUNvbmZpZ3VyYXRpb24oCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFu
Z2VMb2cKaW5kZXggOGFmZjZmMTYzZTA1ZjcyZmMzMmZjZmU3YzQyODQyMjNiYjQ3MzU4My4uZWM5
Y2FhOWViZGRlMzA4MzFhZjU0YWNlMGVhNTI3MTRmZmZkNjg5MiAxMDA2NDQKLS0tIGEvVG9vbHMv
Q2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIwLTA3
LTE3ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBb
V0syXSBBZGQgQVBJIHRvIGFsbG93IGVtYmVkZGVyIHRvIHNldCBhIHRpbWV6b25lIG92ZXJyaWRl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM4ODQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgQVBJ
IHRlc3RzIGZvciB0aGUgdGltZXpvbmUgY29uZmlndXJhdGlvbiBBUEkuIFRoZSBHVEsgYW5kIFdQ
RSBNaW5pQnJvd3NlcnMgYWxzbyBnYWluZWQKKyAgICAgICAgbmV3IHJ1bnRpbWUgb3B0aW9ucyBh
bGxvd2luZyB0byBleGVyY2lzZSB0aGlzIG5ldyBBUEkuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nl
ci9ndGsvbWFpbi5jOgorICAgICAgICAoYWN0aXZhdGUpOgorICAgICAgICAqIE1pbmlCcm93c2Vy
L3dwZS9tYWluLmNwcDoKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVGltZVpvbmVPdmVycmlkZS5tbTogQWRkZWQuCisg
ICAgICAgIChUaW1lWm9uZU92ZXJyaWRlVGVzdDo6cnVuU2NyaXB0QW5kRXhlY3V0ZUNhbGxiYWNr
KToKKyAgICAgICAgKFRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRHTGliL1Rlc3RXZWJLaXRXZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKHRlc3RXZWJDb250ZXh0
VGltZVpvbmUpOgorICAgICAgICAodGVzdFdlYlZpZXdUaW1lWm9uZU92ZXJyaWRlKToKKyAgICAg
ICAgKGJlZm9yZUFsbCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIv
VGVzdE1haW4uY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1Rl
c3RNYWluLmg6CisgICAgICAgIChUZXN0OjpUZXN0KToKKyAgICAgICAgKiBmbGF0cGFrL2ZsYXRw
YWt1dGlscy5weToKKyAgICAgICAgKFdlYmtpdEZsYXRwYWsucnVuX2luX3NhbmRib3gpOgorCiAy
MDIwLTA3LTE2ICBYYWJpZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+
CiAKICAgICAgICAgUmVuYW1lIGNyZWF0ZUJveFB0ciBpbnRvIGFkb3B0Qm94UHRyCmRpZmYgLS1n
aXQgYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3Rr
L21haW4uYwppbmRleCA2MWNiNzI5ZTllOGUyNGQ4NWMwZDY3OGM2NGEzZGJhZTFjMDg1ZjYzLi40
MmZmYjY2Y2JmODczNTg3NjQ2ZGJhZTE5Y2RmMGEzMzQ5ZTIwMWQ0IDEwMDY0NAotLS0gYS9Ub29s
cy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWlu
LmMKQEAgLTU0LDYgKzU0LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmNvb2tpZXNGaWxlOwogc3Rh
dGljIGNvbnN0IGNoYXIgKmNvb2tpZXNQb2xpY3k7CiBzdGF0aWMgY29uc3QgY2hhciAqcHJveHk7
CiBzdGF0aWMgZ2Jvb2xlYW4gZGFya01vZGU7CitzdGF0aWMgY2hhciogdGltZVpvbmU7CiBzdGF0
aWMgZ2Jvb2xlYW4gZW5hYmxlSVRQOwogc3RhdGljIGdib29sZWFuIHByaW50VmVyc2lvbjsKIApA
QCAtMTQ2LDYgKzE0Nyw3IEBAIHN0YXRpYyBjb25zdCBHT3B0aW9uRW50cnkgY29tbWFuZExpbmVP
cHRpb25zW10gPQogICAgIHsgImlnbm9yZS10bHMtZXJyb3JzIiwgMCwgMCwgR19PUFRJT05fQVJH
X05PTkUsICZpZ25vcmVUTFNFcnJvcnMsICJJZ25vcmUgVExTIGVycm9ycyIsIE5VTEwgfSwKICAg
ICB7ICJjb250ZW50LWZpbHRlciIsIDAsIDAsIEdfT1BUSU9OX0FSR19GSUxFTkFNRSwgJmNvbnRl
bnRGaWx0ZXIsICJKU09OIHdpdGggY29udGVudCBmaWx0ZXJpbmcgcnVsZXMiLCAiRklMRSIgfSwK
ICAgICB7ICJlbmFibGUtaXRwIiwgMCwgMCwgR19PUFRJT05fQVJHX05PTkUsICZlbmFibGVJVFAs
ICJFbmFibGUgSW50ZWxsaWdlbnQgVHJhY2tpbmcgUHJldmVudGlvbiAoSVRQKSIsIE5VTEwgfSwK
KyAgICB7ICJ0aW1lLXpvbmUiLCAndCcsIDAsIEdfT1BUSU9OX0FSR19TVFJJTkcsICZ0aW1lWm9u
ZSwgIlNldCB0aW1lIHpvbmUiLCAiVElNRVpPTkUiIH0sCiAgICAgeyAidmVyc2lvbiIsICd2Jywg
MCwgR19PUFRJT05fQVJHX05PTkUsICZwcmludFZlcnNpb24sICJQcmludCB0aGUgV2ViS2l0R1RL
IHZlcnNpb24iLCBOVUxMIH0sCiAgICAgeyBHX09QVElPTl9SRU1BSU5JTkcsIDAsIDAsIEdfT1BU
SU9OX0FSR19GSUxFTkFNRV9BUlJBWSwgJnVyaUFyZ3VtZW50cywgMCwgIltVUkzigKZdIiB9LAog
ICAgIHsgMCwgMCwgMCwgMCwgMCwgMCwgMCB9CkBAIC01NzYsNiArNTc4LDcgQEAgc3RhdGljIHZv
aWQgYWN0aXZhdGUoR0FwcGxpY2F0aW9uICphcHBsaWNhdGlvbiwgV2ViS2l0U2V0dGluZ3MgKndl
YmtpdFNldHRpbmdzKQogI2lmICFHVEtfQ0hFQ0tfVkVSU0lPTigzLCA5OCwgMCkKICAgICAgICAg
InVzZS1zeXN0ZW0tYXBwZWFyYW5jZS1mb3Itc2Nyb2xsYmFycyIsIEZBTFNFLAogI2VuZGlmCisg
ICAgICAgICJ0aW1lLXpvbmUtb3ZlcnJpZGUiLCB0aW1lWm9uZSwKICAgICAgICAgTlVMTCk7CiAg
ICAgZ19vYmplY3RfdW5yZWYobWFuYWdlcik7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93
c2VyL3dwZS9tYWluLmNwcCBiL1Rvb2xzL01pbmlCcm93c2VyL3dwZS9tYWluLmNwcAppbmRleCBk
NmMxNjRmYmE4ZGVlZjM0M2IyMmQ1OTgwMzA0NzllMTYwODQxZDY4Li45MWQ4M2M0ZDMwYmNlMjMx
Y2EwNDMzODkwNTE4ZGI1YTA1YmJkYzMzIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci93
cGUvbWFpbi5jcHAKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvd3BlL21haW4uY3BwCkBAIC00OCw2
ICs0OCw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBjb29raWVzRmlsZTsKIHN0YXRpYyBjb25zdCBj
aGFyKiBjb29raWVzUG9saWN5Owogc3RhdGljIGNvbnN0IGNoYXIqIHByb3h5OwogY29uc3QgY2hh
ciogYmdDb2xvcjsKK3N0YXRpYyBjaGFyKiB0aW1lWm9uZTsKIHN0YXRpYyBnYm9vbGVhbiBlbmFi
bGVJVFA7CiBzdGF0aWMgZ2Jvb2xlYW4gcHJpbnRWZXJzaW9uOwogc3RhdGljIEdIYXNoVGFibGUq
IG9wZW5WaWV3czsKQEAgLTY1LDYgKzY2LDcgQEAgc3RhdGljIGNvbnN0IEdPcHRpb25FbnRyeSBj
b21tYW5kTGluZU9wdGlvbnNbXSA9CiAgICAgeyAiY29udGVudC1maWx0ZXIiLCAwLCAwLCBHX09Q
VElPTl9BUkdfRklMRU5BTUUsICZjb250ZW50RmlsdGVyLCAiSlNPTiB3aXRoIGNvbnRlbnQgZmls
dGVyaW5nIHJ1bGVzIiwgIkZJTEUiIH0sCiAgICAgeyAiYmctY29sb3IiLCAwLCAwLCBHX09QVElP
Tl9BUkdfU1RSSU5HLCAmYmdDb2xvciwgIldpbmRvdyBiYWNrZ3JvdW5kIGNvbG9yLiBEZWZhdWx0
OiB3aGl0ZSIsICJDT0xPUiIgfSwKICAgICB7ICJlbmFibGUtaXRwIiwgMCwgMCwgR19PUFRJT05f
QVJHX05PTkUsICZlbmFibGVJVFAsICJFbmFibGUgSW50ZWxsaWdlbnQgVHJhY2tpbmcgUHJldmVu
dGlvbiAoSVRQKSIsIG51bGxwdHIgfSwKKyAgICB7ICJ0aW1lLXpvbmUiLCAndCcsIDAsIEdfT1BU
SU9OX0FSR19TVFJJTkcsICZ0aW1lWm9uZSwgIlNldCB0aW1lIHpvbmUiLCAiVElNRVpPTkUiIH0s
CiAgICAgeyAidmVyc2lvbiIsICd2JywgMCwgR19PUFRJT05fQVJHX05PTkUsICZwcmludFZlcnNp
b24sICJQcmludCB0aGUgV1BFIHZlcnNpb24iLCBudWxscHRyIH0sCiAgICAgeyBHX09QVElPTl9S
RU1BSU5JTkcsIDAsIDAsIEdfT1BUSU9OX0FSR19GSUxFTkFNRV9BUlJBWSwgJnVyaUFyZ3VtZW50
cywgbnVsbHB0ciwgIltVUkxdIiB9LAogICAgIHsgbnVsbHB0ciwgMCwgMCwgR19PUFRJT05fQVJH
X05PTkUsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIgfQpAQCAtMjI0LDcgKzIyNiw3IEBAIGlu
dCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAKICAgICBhdXRvKiBtYW5hZ2VyID0gKHBy
aXZhdGVNb2RlIHx8IGF1dG9tYXRpb25Nb2RlKSA/IHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdl
cl9uZXdfZXBoZW1lcmFsKCkgOiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfbmV3KG51bGxw
dHIpOwogICAgIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9zZXRfaXRwX2VuYWJsZWQobWFu
YWdlciwgZW5hYmxlSVRQKTsKLSAgICBhdXRvKiB3ZWJDb250ZXh0ID0gd2Via2l0X3dlYl9jb250
ZXh0X25ld193aXRoX3dlYnNpdGVfZGF0YV9tYW5hZ2VyKG1hbmFnZXIpOworICAgIGF1dG8qIHdl
YkNvbnRleHQgPSBXRUJLSVRfV0VCX0NPTlRFWFQoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dF
Ql9DT05URVhULCAid2Vic2l0ZS1kYXRhLW1hbmFnZXIiLCBtYW5hZ2VyLCAidGltZS16b25lLW92
ZXJyaWRlIiwgdGltZVpvbmUsIG51bGxwdHIpKTsKICAgICBnX29iamVjdF91bnJlZihtYW5hZ2Vy
KTsKIAogICAgIGlmIChjb29raWVzUG9saWN5KSB7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGM0Mjc4OTEwODhhYTBjN2Y3YjhlNGU5ZDUzYjEyZjFhZTA0YTc4Y2IuLmY0Mzg3MGMxZGQyNzA3
OWNiYTg0ZTE3NmUxMTMwMzUwMWY3MzFjODIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04
MTAsNiArODEwLDcgQEAKIAkJOTk4NEZBQ0MxQ0ZGQUY2MDAwOEQxOThDIC8qIFdLV2ViVmlld1Rl
eHRJbnB1dC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDk5ODRGQUNBMUNGRkFFRUUwMDhEMTk4QyAvKiBXS1dlYlZpZXdUZXh0SW5wdXQubW0gKi87IH07
CiAJCTk5ODRGQUNFMUNGRkIwOTAwMDhEMTk4QyAvKiBlZGl0YWJsZS1ib2R5Lmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk4NEZBQ0Qx
Q0ZGQjAzODAwOEQxOThDIC8qIGVkaXRhYmxlLWJvZHkuaHRtbCAqLzsgfTsKIAkJOTk5OTEwOEIx
RjM5M0M5NjAwOEFENDU1IC8qIENvcHlpbmcubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5OTk5MTA4QTFGMzkzQzhCMDA4QUQ0NTUgLyogQ29weWluZy5t
bSAqLzsgfTsKKwkJOUExOEU0MTkyNEI2MUJFODAwMEJCMzUxIC8qIFRpbWVab25lT3ZlcnJpZGUu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QTE4RTQx
NzI0QjYxNUQ5MDAwQkIzNTEgLyogVGltZVpvbmVPdmVycmlkZS5tbSAqLzsgfTsKIAkJOUIwMkUw
RDYyMzVGQTQ3RDAwNDA0NEIyIC8qIFRleHRNYW5pcHVsYXRpb24ubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAyRTBENTIzNUZBNDdEMDA0MDQ0QjIg
LyogVGV4dE1hbmlwdWxhdGlvbi5tbSAqLzsgfTsKIAkJOUIwNzg2QTUxQzU4ODVDMzAwRDE1OUUz
IC8qIEluamVjdGVkQnVuZGxlTWFrZUFsbFNoYWRvd1Jvb3RzT3Blbl9CdW5kbGUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwNzg2QTQxQzU4ODVD
MzAwRDE1OUUzIC8qIEluamVjdGVkQnVuZGxlTWFrZUFsbFNoYWRvd1Jvb3RzT3Blbl9CdW5kbGUu
Y3BwICovOyB9OwogCQk5QjE5Q0RBMDFGMDZERkUzMDAwNTQ4REQgLyogTmV0d29ya1Byb2Nlc3ND
cmFzaFdpdGhQZW5kaW5nQ29ubmVjdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDlCMTlDRDlFMUYwNkRGRTMwMDA1NDhERCAvKiBOZXR3b3JrUHJv
Y2Vzc0NyYXNoV2l0aFBlbmRpbmdDb25uZWN0aW9uLm1tICovOyB9OwpAQCAtMjM3OCw2ICsyMzc5
LDcgQEAKIAkJOTk4NEZBQ0ExQ0ZGQUVFRTAwOEQxOThDIC8qIFdLV2ViVmlld1RleHRJbnB1dC5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2ViVmlld1RleHRJ
bnB1dC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk4NEZBQ0QxQ0ZGQjAzODAw
OEQxOThDIC8qIGVkaXRhYmxlLWJvZHkuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9
ICJlZGl0YWJsZS1ib2R5Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTk5
MTA4QTFGMzkzQzhCMDA4QUQ0NTUgLyogQ29weWluZy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IENvcHlpbmcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTlBMThFNDE3MjRCNjE1RDkwMDBCQjM1MSAvKiBUaW1lWm9uZU92ZXJyaWRlLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVGltZVpvbmVPdmVycmlkZS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIwMkUwRDUyMzVGQTQ3RDAwNDA0NEIyIC8q
IFRleHRNYW5pcHVsYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBUZXh0TWFuaXB1bGF0
aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjA3ODZBMjFDNTg4MzBGMDBE
MTU5RTMgLyogSW5qZWN0ZWRCdW5kbGVNYWtlQWxsU2hhZG93Um9vdHNPcGVuLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluamVjdGVkQnVuZGxlTWFrZUFsbFNoYWRv
d1Jvb3RzT3Blbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMDc4NkE0MUM1
ODg1QzMwMEQxNTlFMyAvKiBJbmplY3RlZEJ1bmRsZU1ha2VBbGxTaGFkb3dSb290c09wZW5fQnVu
ZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluamVjdGVkQnVu
ZGxlTWFrZUFsbFNoYWRvd1Jvb3RzT3Blbl9CdW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMzI4Myw2ICszMjg1LDcgQEAKIAkJCQk5QjAyRTBENTIzNUZBNDdEMDA0MDQ0
QjIgLyogVGV4dE1hbmlwdWxhdGlvbi5tbSAqLywKIAkJCQk1QzE2RjhGQjIzMEM5NDJCMDA3NEM0
QTggLyogVGV4dFNpemUubW0gKi8sCiAJCQkJQzIyRkEzMkEyMjhGODcwODAwOUQ3OTg4IC8qIFRl
eHRXaWR0aC5tbSAqLywKKwkJCQk5QTE4RTQxNzI0QjYxNUQ5MDAwQkIzNTEgLyogVGltZVpvbmVP
dmVycmlkZS5tbSAqLywKIAkJCQk1QzczQTgxQTIzMjMwNTk4MDBERUE4NUEgLyogVExTRGVwcmVj
YXRpb24ubW0gKi8sCiAJCQkJQ0RFMTk1QjMxQ0ZFMEFERTAwNTNEMjU2IC8qIFRvcENvbnRlbnRJ
bnNldC5tbSAqLywKIAkJCQk1Q0I0MEI0RDFGNEI5OEJFMDA3REM3QjkgLyogVUlEZWxlZ2F0ZS5t
bSAqLywKQEAgLTUyOTcsNiArNTMwMCw3IEBACiAJCQkJNUMxNkY4RkMyMzBDOTQzNzAwNzRDNEE4
IC8qIFRleHRTaXplLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQzIyRkEzMkIyMjhGODcwODAwOUQ3
OTg4IC8qIFRleHRXaWR0aC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUREMUE0MTFBOTIw
MDQ0N0M0QyAvKiBUaW1lUmFuZ2VzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTlBMThFNDE5MjRC
NjFCRTgwMDBCQjM1MSAvKiBUaW1lWm9uZU92ZXJyaWRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
N0M4M0UwQkQxRDBBNjUwQzAwRkVCQ0YzIC8qIFRvcENvbnRlbnRJbnNldC5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTdDQ0U3RUQzMUE0MTFBN0UwMDQ0N0M0QyAvKiBUeXBpbmdTdHlsZUNyYXNoLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTcxNTJCNzgyMURENEU4RDAwMEMzN0NBIC8qIFUyZkNvbW1h
bmRDb25zdHJ1Y3RvclRlc3QuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1RpbWVab25lT3ZlcnJpZGUubW0gYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1RpbWVab25lT3ZlcnJpZGUubW0KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTBjMTlhODQ4NWNiYWEzOTViMDM0OGRjMDU5MGM0ZmU2ODczZTlhNwotLS0gL2Rl
di9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVGltZVpv
bmVPdmVycmlkZS5tbQpAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaWYgUExBVEZPUk0oTUFDKQorCisj
aW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgor
I2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg+CisjaW1wb3J0
IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgorI2ltcG9ydCA8d3RmL0Z1bmN0aW9uLmg+Cisj
aW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworY2xhc3MgVGltZVpvbmVPdmVycmlkZVRl
c3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CitwdWJsaWM6CisgICAgdm9pZCBTZXRVcCgpIG92
ZXJyaWRlCisgICAgeworICAgICAgICBfY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgICAgIFtfY29uZmlndXJhdGlvbiBf
c2V0VGltZVpvbmVPdmVycmlkZTpAIkV1cm9wZS9CZXJsaW4iXTsKKworICAgICAgICBfd2ViVmll
dyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJl
Y3QoMCwgMCwgMzAwLCAzMDApIGNvbmZpZ3VyYXRpb246X2NvbmZpZ3VyYXRpb24uZ2V0KCldKTsK
KyAgICB9CisKKyAgICB2b2lkIHJ1blNjcmlwdEFuZEV4ZWN1dGVDYWxsYmFjayhjb25zdCBTdHJp
bmcmIHNjcmlwdCwgRnVuY3Rpb248dm9pZChpZCk+JiYgY2FsbGJhY2spCisgICAgeworICAgICAg
ICBib29sIGNvbXBsZXRlID0gZmFsc2U7CisgICAgICAgIFtfd2ViVmlldyBldmFsdWF0ZUphdmFT
Y3JpcHQ6c2NyaXB0IGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICop
IHsKKyAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7CisgICAgICAgICAgICBjb21wbGV0ZSA9
IHRydWU7CisgICAgICAgIH1dOworICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmNv
bXBsZXRlKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZp
Z3VyYXRpb24+IF9jb25maWd1cmF0aW9uOworICAgIFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiBf
d2ViVmlldzsKK307CisKK1RFU1RfRihUaW1lWm9uZU92ZXJyaWRlVGVzdCwgVGltZVpvbmVPdmVy
cmlkZSkKK3sKKyAgICBydW5TY3JpcHRBbmRFeGVjdXRlQ2FsbGJhY2soImxldCBub3cgPSBuZXcg
RGF0ZSgpOyBub3cuZ2V0VGltZXpvbmVPZmZzZXQoKSIsIFtdKGlkIHJlc3VsdCkgeworICAgICAg
ICBFWFBFQ1RfV0tfU1RSRVEoW3Jlc3VsdCBzdHJpbmdWYWx1ZV0sICItMTIwIik7CisgICAgfSk7
Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRHTGliL1Rlc3RXZWJLaXRXZWJDb250ZXh0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViQ29udGV4dC5jcHAKaW5kZXggYjM0MzVhNDcwNmQw
NjE5YzZlZmE4ZTE0MzJhMDVlYTdhZmNmZmI1ZS4uNWViM2Y0OWJkN2EyZWY2M2ZkOGJlZWUwZTM4
NGIxZjdjM2I2MGQ1MiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRHTGliL1Rlc3RXZWJLaXRXZWJDb250ZXh0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYkNvbnRleHQuY3BwCkBAIC00NjQsNiArNDY0
LDQzIEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJDb250ZXh0TGFuZ3VhZ2VzKFdlYlZpZXdUZXN0KiB0
ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGdfYXNzZXJ0X2Vycm9yKGVycm9yLmdldCgpLCBXRUJL
SVRfSkFWQVNDUklQVF9FUlJPUiwgV0VCS0lUX0pBVkFTQ1JJUFRfRVJST1JfU0NSSVBUX0ZBSUxF
RCk7CiB9CiAKKworc3RhdGljIHZvaWQgdGVzdFdlYkNvbnRleHRUaW1lWm9uZShXZWJWaWV3VGVz
dCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJy
b3I7CisgICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdCA9IHRlc3Qt
PnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgibGV0IG5vdyA9IG5ldyBEYXRlKCk7
IG5vdy5nZXRUaW1lem9uZU9mZnNldCgpIiwgJmVycm9yLm91dFB0cigpKTsKKyAgICBnX2Fzc2Vy
dF9ub25udWxsKGphdmFzY3JpcHRSZXN1bHQpOworICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9y
LmdldCgpKTsKKyAgICAvLyBCeSBkZWZhdWx0IHRoZSB0ZXN0IGhhcm5lc3MgdXNlcyB0aGUgUGFj
aWZpYy9Mb3NfQW5nZWxlcyB0aW1lem9uZSB3aGljaCBpcyArNyBob3VycyAoNDIwCisgICAgLy8g
bWludXRlcykgY29tcGFyZWQgdG8gR01ULgorICAgIGdfYXNzZXJ0X2NtcGludChXZWJWaWV3VGVz
dDo6amF2YXNjcmlwdFJlc3VsdFRvTnVtYmVyKGphdmFzY3JpcHRSZXN1bHQpLCA9PSwgNDIwKTsK
K30KKworY2xhc3MgVGltZVpvbmVPdmVycmlkZVdlYlZpZXdUZXN0OnB1YmxpYyBXZWJWaWV3VGVz
dCB7CitwdWJsaWM6CisgICAgTUFLRV9HTElCX1RFU1RfRklYVFVSRV9XSVRIX1NFVFVQX1RFQVJE
T1dOKFRpbWVab25lT3ZlcnJpZGVXZWJWaWV3VGVzdCwgc2V0dXAsIHRlYXJkb3duKTsKKworICAg
IHN0YXRpYyB2b2lkIHNldHVwKCkKKyAgICB7CisgICAgICAgIFRlc3Q6OnRpbWVab25lT3ZlcnJp
ZGUgPSAiRXVyb3BlL0JlcmxpbiI7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgdGVhcmRvd24o
KQorICAgIHsKKyAgICAgICAgVGVzdDo6dGltZVpvbmVPdmVycmlkZSA9ICIiOworICAgIH0KK307
CisKK3N0YXRpYyB2b2lkIHRlc3RXZWJWaWV3VGltZVpvbmVPdmVycmlkZShUaW1lWm9uZU92ZXJy
aWRlV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCit7CisgICAgR1VuaXF1ZU91dFB0
cjxHRXJyb3I+IGVycm9yOworICAgIFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGphdmFzY3JpcHRS
ZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoImxldCBub3cg
PSBuZXcgRGF0ZSgpOyBub3cuZ2V0VGltZXpvbmVPZmZzZXQoKSIsICZlcnJvci5vdXRQdHIoKSk7
CisgICAgZ19hc3NlcnRfbm9ubnVsbChqYXZhc2NyaXB0UmVzdWx0KTsKKyAgICBnX2Fzc2VydF9u
b19lcnJvcihlcnJvci5nZXQoKSk7CisgICAgLy8gQmVybGluIGlzIDEyMCBtaW51dGVzIGFoZWFk
IG9mIHRoZSBHTVQgb2Zmc2V0LgorICAgIGdfYXNzZXJ0X2NtcGludChXZWJWaWV3VGVzdDo6amF2
YXNjcmlwdFJlc3VsdFRvTnVtYmVyKGphdmFzY3JpcHRSZXN1bHQpLCA9PSwgLTEyMCk7Cit9CisK
IHN0YXRpYyB2b2lkIHNlcnZlckNhbGxiYWNrKFNvdXBTZXJ2ZXIqIHNlcnZlciwgU291cE1lc3Nh
Z2UqIG1lc3NhZ2UsIGNvbnN0IGNoYXIqIHBhdGgsIEdIYXNoVGFibGUqLCBTb3VwQ2xpZW50Q29u
dGV4dCosIGdwb2ludGVyKQogewogICAgIGlmIChtZXNzYWdlLT5tZXRob2QgIT0gU09VUF9NRVRI
T0RfR0VUKSB7CkBAIC04NDYsNiArODgzLDggQEAgdm9pZCBiZWZvcmVBbGwoKQogICAgIFNlY3Vy
aXR5UG9saWN5VGVzdDo6YWRkKCJXZWJLaXRTZWN1cml0eU1hbmFnZXIiLCAic2VjdXJpdHktcG9s
aWN5IiwgdGVzdFdlYkNvbnRleHRTZWN1cml0eVBvbGljeSk7CiAgICAgV2ViVmlld1Rlc3Q6OmFk
ZCgiV2ViS2l0U2VjdXJpdHlNYW5hZ2VyIiwgImZpbGUteGhyIiwgdGVzdFdlYkNvbnRleHRTZWN1
cml0eUZpbGVYSFIpOwogICAgIFByb3h5VGVzdDo6YWRkKCJXZWJLaXRXZWJDb250ZXh0IiwgInBy
b3h5IiwgdGVzdFdlYkNvbnRleHRQcm94eVNldHRpbmdzKTsKKyAgICBXZWJWaWV3VGVzdDo6YWRk
KCJXZWJLaXRXZWJDb250ZXh0IiwgInRpbWV6b25lIiwgdGVzdFdlYkNvbnRleHRUaW1lWm9uZSk7
CisgICAgVGltZVpvbmVPdmVycmlkZVdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAi
dGltZS16b25lLW92ZXJyaWRlIiwgdGVzdFdlYlZpZXdUaW1lWm9uZU92ZXJyaWRlKTsKIH0KIAog
dm9pZCBhZnRlckFsbCgpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2Vi
S2l0R0xpYi9UZXN0TWFpbi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xp
Yi9UZXN0TWFpbi5jcHAKaW5kZXggZmE1YmUxNjI3MmRjMjY1YWEzOTU2MjBiMTY5MTI2N2ViYWM5
ZDkzNS4uN2Y4NWI2ZGIwYmU0MWQwYzExYzY4NjhhN2E3NmQ1NWFlNjVmMWViNyAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvVGVzdE1haW4uY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1Rlc3RNYWluLmNwcApAQCAtMjks
NiArMjksNyBAQAogR1JlZlB0cjxHREJ1c1NlcnZlcj4gVGVzdDo6c19kYnVzU2VydmVyOwogVmVj
dG9yPEdSZWZQdHI8R0RCdXNDb25uZWN0aW9uPj4gVGVzdDo6c19kYnVzQ29ubmVjdGlvbnM7CiBI
YXNoTWFwPHVpbnQ2NF90LCBHREJ1c0Nvbm5lY3Rpb24qPiBUZXN0OjpzX2RidXNDb25uZWN0aW9u
UGFnZU1hcDsKK2NvbnN0IGNoYXIqIFRlc3Q6OnRpbWVab25lT3ZlcnJpZGUgPSAiIjsKIAogdm9p
ZCBiZWZvcmVBbGwoKTsKIHZvaWQgYWZ0ZXJBbGwoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1Rlc3RNYWluLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L2dsaWIvV2ViS2l0R0xpYi9UZXN0TWFpbi5oCmluZGV4IGUwZjZjZWE5NjEzNDdhMmU1MDA2MjQ0
OTAzMmVlMmZhZTA1ZDkwOGMuLmIxMjFmMzAwMTlkMmZhMTE4MTRiM2U2OTQyNjc5ZmM3ZThkNTU5
YTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1Rlc3RN
YWluLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvVGVzdE1haW4u
aApAQCAtMTEwLDYgKzExMCw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBzdGF0aWMgY29uc3Qg
Y2hhciogZGF0YURpcmVjdG9yeSgpOworICAgIHN0YXRpYyBjb25zdCBjaGFyKiB0aW1lWm9uZU92
ZXJyaWRlOwogCiAgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVdlYkV4dGVuc2lvbnNDYWxsYmFj
ayhXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCBUZXN0KiB0ZXN0KQogICAgIHsKQEAgLTE0MCw2
ICsxNDEsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAicHJvY2Vzcy1zd2FwLW9uLWNyb3NzLXNp
dGUtbmF2aWdhdGlvbi1lbmFibGVkIiwgVFJVRSwKICAgICAgICAgICAgICJ1c2Utc3lzdGVtLWFw
cGVhcmFuY2UtZm9yLXNjcm9sbGJhcnMiLCBGQUxTRSwKICNlbmRpZgorICAgICAgICAgICAgInRp
bWUtem9uZS1vdmVycmlkZSIsIHRpbWVab25lT3ZlcnJpZGUsCiAgICAgICAgICAgICBudWxscHRy
KSkpOwogICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JK
RUNUKG1fd2ViQ29udGV4dC5nZXQoKSkpOwogICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2Vi
Q29udGV4dC5nZXQoKSwgImluaXRpYWxpemUtd2ViLWV4dGVuc2lvbnMiLCBHX0NBTExCQUNLKGlu
aXRpYWxpemVXZWJFeHRlbnNpb25zQ2FsbGJhY2spLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L2ZsYXRwYWsvZmxhdHBha3V0aWxzLnB5IGIvVG9vbHMvZmxhdHBhay9mbGF0cGFrdXRpbHMucHkK
aW5kZXggNTA2YzlmOGU5YjQwNzk3OGU1MGQ5Y2FjZjFiYmEyNDRjNzIyZDFmZi4uNTIwZWYzZjUx
OTBiZjQ2NDJhZWIwZTY3OTU2YjBiYWVjNTJkZmZiMCAxMDA2NDQKLS0tIGEvVG9vbHMvZmxhdHBh
ay9mbGF0cGFrdXRpbHMucHkKKysrIGIvVG9vbHMvZmxhdHBhay9mbGF0cGFrdXRpbHMucHkKQEAg
LTcxNyw3ICs3MTcsNyBAQCBjbGFzcyBXZWJraXRGbGF0cGFrOgogICAgICAgICAgICAgXSkKIAog
ICAgICAgICAgICAgc2FuZGJveF9lbnZpcm9ubWVudC51cGRhdGUoewotICAgICAgICAgICAgICAg
ICJUWiI6ICJQU1Q4UERUIiwKKyAgICAgICAgICAgICAgICAiVFoiOiAiQW1lcmljYS9Mb3NfQW5n
ZWxlcyIsCiAgICAgICAgICAgICB9KQogCiAgICAgICAgIGVudl92YXJfcHJlZml4ZXNfdG9fa2Vl
cCA9IFsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409021</attachid>
            <date>2020-09-17 04:37:01 -0700</date>
            <delta_ts>2020-09-17 08:44:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213884-20200917043659.patch</filename>
            <type>text/plain</type>
            <size>47521</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3MTg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
ZjRlNTE1MThiN2U5N2Q2YTNlODVmYmYwOTExYTg4NjdlZjIxMzVlLi44NDAzMWNlYzIzYjk4MjRm
MDA3ZjQyMGZjZWNmODNjNTc0YTA5NTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAyMC0wNy0xNyAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxp
YS5jb20+IGFuZCBQYXZlbCBGZWxkbWFuIDxwYXZlbC5mZWxkbWFuQGdtYWlsLmNvbT4KKworICAg
ICAgICBbV0syXSBBZGQgQVBJIHRvIGFsbG93IGVtYmVkZGVyIHRvIHNldCBhIHRpbWV6b25lIG92
ZXJyaWRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTM4ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHJ1bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwOgorICAgICAgICAoSlNDOjpmb3JtYXREYXRlVGlt
ZSk6IEZvcm1hdCB0aGUgb3ZlcnJpZGRlbiB0aW1lem9uZSBpZiBpdCdzIGVuYWJsZWQuCisgICAg
ICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwOgorICAgICAgICAoSlNDOjpkZWZh
dWx0VGltZVpvbmUpOiBSZXR1cm4gdGhlIG92ZXJyaWRkZW4gdGltZXpvbmUgaWYgaXQncyBlbmFi
bGVkLgorCiAyMDIwLTA5LTE3ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAK
ICAgICAgICAgU3VwcG9ydCBleHBvcnQgbmFtZXNwYWNlIGBleHBvcnQgKiBhcyBuc2AKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXgg
MzM3MmNiOTY3M2U3MzllMDIzOWY2MDc4ZDJjNjJlNDNlZTVhMWVkOS4uZjk1YzZiOTQzY2Y4NTEw
YjRiMjAyMWZkNzE4YTlmNDg1ZjE0ZGQ4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMC0wNy0x
NyAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+IGFuZCBQYXZlbCBGZWxk
bWFuIDxwYXZlbC5mZWxkbWFuQGdtYWlsLmNvbT4KKworICAgICAgICBbV0syXSBBZGQgQVBJIHRv
IGFsbG93IGVtYmVkZGVyIHRvIHNldCBhIHRpbWV6b25lIG92ZXJyaWRlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM4ODQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9EYXRlTWF0aC5jcHA6IEFk
ZCBuZXcgQVBJcyB0byBjb250cm9sIGFuZCBxdWVyeSB0aGUgdGltZXpvbmUgb3ZlcnJpZGUuCisg
ICAgICAgIChXVEY6OmlubmVyVGltZVpvbmVPdmVycmlkZSk6IFN0YXRpYyBzdG9yYWdlIG9mIHRo
ZSBvdmVycmlkZSBpbmZvcm1hdGlvbnMuCisgICAgICAgIChXVEY6OmNhbGN1bGF0ZUxvY2FsVGlt
ZU9mZnNldCk6IENhbGN1bGF0ZSBvZmZzZXQgZm9yIG92ZXJyaWRkZW4gdGltZXpvbmUsIGlmIGl0
J3MgcHJlc2VudC4KKyAgICAgICAgKFdURjo6aXNUaW1lWm9uZVZhbGlkKTogTmV3IGZ1bmN0aW9u
IGFsbG93aW5nIHRvIGNoZWNrIGlmIGEgdGltZXpvbmUgaWRlbnRpZmllciBpcyB2YWxpZCBhY2Nv
cmRpbmcgdG8gSUNVJ3MgZGF0YWJhc2UuCisgICAgICAgIChXVEY6OnNldFRpbWVab25lT3ZlcnJp
ZGUpOiBOZXcgQVBJIHRvIHNldCB0aGUgdGltZXpvbmUgb3ZlcnJpZGUsIHRoaXMgaXMgbWVhbnQg
dG8gYmUKKyAgICAgICAgdXNlZCBvbiBuZXdseSBjcmVhdGVkIFdlYlByb2Nlc3Nlcy4KKyAgICAg
ICAgKFdURjo6dGltZVpvbmVPdmVycmlkZSk6UXVlcnkgdGhlIHRpbWV6b25lIG92ZXJyaWRlLgor
ICAgICAgICAoV1RGOjp0aW1lWm9uZURpc3BsYXlOYW1lT3ZlcnJpZGUpOiBHZXQgdGhlIHRpbWV6
b25lIG5hbWUgb2YgdGhlIG92ZXJyaWRkZW4gdGltZXpvbmUuCisgICAgICAgICogd3RmL0RhdGVN
YXRoLmg6CisKIDIwMjAtMDktMTYgIFN0ZXBoYW4gU3phYm8gIDxzdGVwaGFuLnN6YWJvQHNvbnku
Y29tPgogCiAgICAgICAgIFJlbW92ZSBFTkFCTEVfTUVURVJfRUxFTUVOVApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAz
OGU0YmY0ZTIyYTZhOWE3YWQ2NDdhOWU3YzUxODU2ZmNhMjFkYWVhLi5jYWIwYmY5NTUyNDlhZjZi
MzkzYTc4MzE2Yjk2MmFlNjY3NmZlYzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIw
LTA3LTE3ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAg
ICBbV0syXSBBZGQgQVBJIHRvIGFsbG93IGVtYmVkZGVyIHRvIHNldCBhIHRpbWV6b25lIG92ZXJy
aWRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM4
ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHBhdGNoIGFkZHM6CisKKyAgICAgICAgLSBuZXcgQ29jb2EgQVBJCisgICAgICAgIC0gbmV3IEds
aWIgQVBJICh0YXJnZXR0aW5nIGJvdGggV1BFIGFuZCBHVEsgcG9ydHMpCisgICAgICAgIC0gbmV3
IEMgQVBJIChmb3IgdGhlIHdpbiBwb3J0KQorCisgICAgICAgIHRoYXQgYWxsb3dzIHRoZSBlbWJl
ZGRlciB0byBzZXQgYSB0aW1lem9uZSBvdmVycmlkZSBmb3IgdGhlIHVuZGVybHlpbmcgUGFnZUNv
bmZpZ3VyYXRpb24uCisgICAgICAgIFNpbmNlIHRoaXMgQVBJIGlzIG5vdCBleHBvc2VkIGluIGds
aWIgcG9ydHMsIGEgbmV3IGNvbnRydWN0LXRpbWUtb25seSBwcm9wZXJ0eSB3YXMgYWRkZWQgdG8K
KyAgICAgICAgdGhlIFdlYktpdFdlYkNvbnRleHQgQVBJLiBJdCB3b3VsZCBhbHNvIGFsbG93IGZp
bmUtZ3JhaW5lZCBjb250cm9sIG92ZXIgbXVsdGlwbGUgcGFnZXMsIGZvcgorICAgICAgICBpbnN0
YW5jZSBpdCdzIG5vdCBwb3NzaWJsZSBjdXJyZW50bHkgdG8gaGF2ZSB0d28gcGFnZXMgaW4gZGlm
ZmVyZW50IHRpbWV6b25lcy4KKworICAgICAgICBObyBuZXcgbGF5b3V0IHRlc3RzLCB0aGlzIGNo
YW5nZSBpcyBjb3ZlcmVkIGJ5IG5ldyBBUEkgdGVzdHMuCisKKyAgICAgICAgKiBTaGFyZWQvV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1
cmF0aW9uLmNwcDoKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OmNvcHkgY29uc3Qp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaDoKKyAgICAg
ICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OnNldFRpbWVab25lT3ZlcnJpZGUpOgorICAgICAg
ICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6dGltZVpvbmVPdmVycmlkZSBjb25zdCk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tOgorICAg
ICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90aW1lWm9uZU92ZXJyaWRlXSk6CisgICAg
ICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3NldFRpbWVab25lT3ZlcnJpZGU6XSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0
ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcDoK
KyAgICAgICAgKHdlYmtpdFdlYkNvbnRleHRHZXRQcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRX
ZWJDb250ZXh0U2V0UHJvcGVydHkpOgorICAgICAgICAod2Via2l0X3dlYl9jb250ZXh0X2NsYXNz
X2luaXQpOgorICAgICAgICAod2Via2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9saW1pdHNOYXZpZ2F0aW9u
c1RvQXBwQm91bmREb21haW5zKToKKwogMjAyMC0wOS0xNyAgSmVyIE5vYmxlICA8amVyLm5vYmxl
QGFwcGxlLmNvbT4KIAogICAgICAgICBVbmlmaWVkIGJ1aWxkIGZpeCBmb3IgInJlZGVmaW5pdGlv
biBvZiAna0NNVmlkZW9Db2RlY1R5cGVfVlA5IgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwCmluZGV4IDk1NTc1NmJhNDA1ZjQwMDk3MDYxMGY5
YTY4YzdlZDQyYTY3Y2IwMTUuLmViYzUzNGNiNDg1NDI5MDlhNjM1OTc5OTZmZmY5MTU0NTE3OGZl
NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb252ZXJz
aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29udmVyc2lv
bi5jcHAKQEAgLTEwMCwxNyArMTAwLDI0IEBAIFN0cmluZyBmb3JtYXREYXRlVGltZShjb25zdCBH
cmVnb3JpYW5EYXRlVGltZSYgdCwgRGF0ZVRpbWVGb3JtYXQgZm9ybWF0LCBib29sIGFzCiAgICAg
ICAgICAgICBhcHBlbmROdW1iZXI8Mj4oYnVpbGRlciwgb2Zmc2V0IC8gNjApOwogICAgICAgICAg
ICAgYXBwZW5kTnVtYmVyPDI+KGJ1aWxkZXIsIG9mZnNldCAlIDYwKTsKIAorICAgICAgICAgICAg
U3RyaW5nIHRpbWVab25lTmFtZTsKKyAgICAgICAgICAgIFN0cmluZyB0aW1lWm9uZU92ZXJyaWRl
ID0gV1RGOjp0aW1lWm9uZURpc3BsYXlOYW1lT3ZlcnJpZGUoKTsKKyAgICAgICAgICAgIGlmICgh
dGltZVpvbmVPdmVycmlkZS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgdGltZVpvbmVOYW1l
ID0gdGltZVpvbmVPdmVycmlkZTsKKyAgICAgICAgICAgIGVsc2UgewogI2lmIE9TKFdJTkRPV1Mp
Ci0gICAgICAgICAgICBUSU1FX1pPTkVfSU5GT1JNQVRJT04gdGltZVpvbmVJbmZvcm1hdGlvbjsK
LSAgICAgICAgICAgIEdldFRpbWVab25lSW5mb3JtYXRpb24oJnRpbWVab25lSW5mb3JtYXRpb24p
OwotICAgICAgICAgICAgY29uc3QgV0NIQVIqIHdpblRpbWVab25lTmFtZSA9IHQuaXNEU1QoKSA/
IHRpbWVab25lSW5mb3JtYXRpb24uRGF5bGlnaHROYW1lIDogdGltZVpvbmVJbmZvcm1hdGlvbi5T
dGFuZGFyZE5hbWU7Ci0gICAgICAgICAgICBTdHJpbmcgdGltZVpvbmVOYW1lKHdpblRpbWVab25l
TmFtZSk7CisgICAgICAgICAgICAgICAgVElNRV9aT05FX0lORk9STUFUSU9OIHRpbWVab25lSW5m
b3JtYXRpb247CisgICAgICAgICAgICAgICAgR2V0VGltZVpvbmVJbmZvcm1hdGlvbigmdGltZVpv
bmVJbmZvcm1hdGlvbik7CisgICAgICAgICAgICAgICAgY29uc3QgV0NIQVIqIHdpblRpbWVab25l
TmFtZSA9IHQuaXNEU1QoKSA/IHRpbWVab25lSW5mb3JtYXRpb24uRGF5bGlnaHROYW1lIDogdGlt
ZVpvbmVJbmZvcm1hdGlvbi5TdGFuZGFyZE5hbWU7CisgICAgICAgICAgICAgICAgdGltZVpvbmVO
YW1lID0gU3RyaW5nKHdpblRpbWVab25lTmFtZSk7CiAjZWxzZQotICAgICAgICAgICAgc3RydWN0
IHRtIGd0bSA9IHQ7Ci0gICAgICAgICAgICBjaGFyIHRpbWVab25lTmFtZVs3MF07Ci0gICAgICAg
ICAgICBzdHJmdGltZSh0aW1lWm9uZU5hbWUsIHNpemVvZih0aW1lWm9uZU5hbWUpLCAiJVoiLCAm
Z3RtKTsKKyAgICAgICAgICAgICAgICBzdHJ1Y3QgdG0gZ3RtID0gdDsKKyAgICAgICAgICAgICAg
ICBjaGFyIHR6TmFtZVs3MF07CisgICAgICAgICAgICAgICAgc3RyZnRpbWUodHpOYW1lLCBzaXpl
b2YodHpOYW1lKSwgIiVaIiwgJmd0bSk7CisgICAgICAgICAgICAgICAgdGltZVpvbmVOYW1lID0g
U3RyaW5nKHR6TmFtZSk7CiAjZW5kaWYKLSAgICAgICAgICAgIGlmICh0aW1lWm9uZU5hbWVbMF0p
IHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghdGltZVpvbmVOYW1lLmlzRW1wdHko
KSkgewogICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiICgiKTsKICAgICAg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZCh0aW1lWm9uZU5hbWUpOwogICAgICAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCcpJyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcAppbmRleCBmNTFjYjAyZWU4OGQ4NmM5OTdhMjMz
MmM1Y2MwZDAxYjQ2NDFiZTFjLi5mNWZhOTc0NGZjNTVlNGZjZjkwNWExZmY0NDAzMDIwZDg4NmU1
YzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRp
bWVGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRl
VGltZUZvcm1hdC5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1
Y3Rvci5oIgogI2luY2x1ZGUgPHVuaWNvZGUvdWNhbC5oPgogI2luY2x1ZGUgPHVuaWNvZGUvdWVu
dW0uaD4KKyNpbmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvaWN1L0lDVUhlbHBlcnMuaD4KIApA
QCAtOTMsNiArOTQsMTAgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBpc1VUQ0VxdWl2YWxl
bnQoU3RyaW5nVmlldyB0aW1lWm9uZSkKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMt
ZGVmYXVsdHRpbWV6b25lCiBzdGF0aWMgU3RyaW5nIGRlZmF1bHRUaW1lWm9uZSgpCiB7CisgICAg
U3RyaW5nIHR6ID0gV1RGOjp0aW1lWm9uZU92ZXJyaWRlKCk7CisgICAgaWYgKCF0ei5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybiB0ejsKKwogICAgIFN0cmluZyBjYW5vbmljYWw7CiAKICAgICBW
ZWN0b3I8VUNoYXIsIDMyPiBidWZmZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9EYXRl
TWF0aC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5jcHAKaW5kZXggYWY5MmY2NzQ3NzAz
NDljYzhlN2JlOWE1M2IxY2VlNmU3ODQwZTc4MS4uYzFjNmQ3NzIzMTEzNDY4ODQwYWQxYzhlMDlj
MmM1NWYxNzRmMDQ4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRGF0ZU1hdGguY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmNwcApAQCAtNzYsOSArNzYsMTQgQEAKICNpbmNs
dWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8dGltZS5oPgorI2lu
Y2x1ZGUgPHVuaWNvZGUvdWNhbC5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5j
bHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KKyNpbmNsdWRlIDx3dGYvTGFuZ3VhZ2UuaD4KKyNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU3BlY2lmaWMu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3Vu
aWNvZGUvVVRGOENvbnZlcnNpb24uaD4KIAogI2lmIE9TKFdJTkRPV1MpCiAjaW5jbHVkZSA8d2lu
ZG93cy5oPgpAQCAtOTIsNiArOTcsMTggQEAgdGVtcGxhdGU8dW5zaWduZWQgbGVuZ3RoPiBpbmxp
bmUgYm9vbCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IGMKICAgICBy
ZXR1cm4gZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCBsb3dlcmNhc2VMZXR0
ZXJzLCBsZW5ndGggLSAxKTsKIH0KIAorc3RydWN0IFRpbWVab25lT3ZlcnJpZGUgeworICAgIFVD
YWxlbmRhciogY2FsIHsgbnVsbHB0ciB9OworICAgIFN0cmluZyBpZDsKKyAgICBTdHJpbmcgZGlz
cGxheU5hbWU7Cit9OworCitzdGF0aWMgVGltZVpvbmVPdmVycmlkZSYgaW5uZXJUaW1lWm9uZU92
ZXJyaWRlKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGltZVpvbmVPdmVycmlkZT4g
dGltZVpvbmVPdmVycmlkZTsKKyAgICByZXR1cm4gdGltZVpvbmVPdmVycmlkZTsKK30KKwogLyog
Q29uc3RhbnRzICovCiAKIGNvbnN0IGNoYXIqIGNvbnN0IHdlZWtkYXlOYW1lWzddID0geyAiTW9u
IiwgIlR1ZSIsICJXZWQiLCAiVGh1IiwgIkZyaSIsICJTYXQiLCAiU3VuIiB9OwpAQCAtMzE4LDYg
KzMzNSwxNCBAQCBzdGF0aWMgZG91YmxlIGNhbGN1bGF0ZURTVE9mZnNldCh0aW1lX3QgbG9jYWxU
aW1lLCBkb3VibGUgdXRjT2Zmc2V0KQogLy8gUmV0dXJucyBjb21iaW5lZCBvZmZzZXQgaW4gbWls
bGlzZWNvbmQgKFVUQyArIERTVCkuCiBMb2NhbFRpbWVPZmZzZXQgY2FsY3VsYXRlTG9jYWxUaW1l
T2Zmc2V0KGRvdWJsZSBtcywgVGltZVR5cGUgaW5wdXRUaW1lVHlwZSkKIHsKKyAgICBhdXRvJiB0
eiA9IGlubmVyVGltZVpvbmVPdmVycmlkZSgpOworICAgIGlmICh0ei5jYWwpIHsKKyAgICAgICAg
VUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgICAgIHVjYWxfc2V0TWlsbGlz
KHR6LmNhbCwgbXMsICZzdGF0dXMpOworICAgICAgICBpbnQzMl90IG9mZnNldCA9IHVjYWxfZ2V0
KHR6LmNhbCwgVUNBTF9aT05FX09GRlNFVCwgJnN0YXR1cyk7CisgICAgICAgIGludDMyX3QgZHN0
T2Zmc2V0ID0gdWNhbF9nZXQodHouY2FsLCBVQ0FMX0RTVF9PRkZTRVQsICZzdGF0dXMpOworICAg
ICAgICByZXR1cm4gTG9jYWxUaW1lT2Zmc2V0KGRzdE9mZnNldCwgb2Zmc2V0ICsgZHN0T2Zmc2V0
KTsKKyAgICB9CiAjaWYgSEFWRShUTV9HTVRPRkYpCiAgICAgZG91YmxlIGxvY2FsVG9VVENUaW1l
T2Zmc2V0ID0gaW5wdXRUaW1lVHlwZSA9PSBMb2NhbFRpbWUgPyBjYWxjdWxhdGVVVENPZmZzZXQo
KSA6IDA7CiAjZWxzZQpAQCAtMTAxOSw0ICsxMDQ0LDc1IEBAIFN0cmluZyBtYWtlUkZDMjgyMkRh
dGVTdHJpbmcodW5zaWduZWQgZGF5T2ZXZWVrLCB1bnNpZ25lZCBkYXksIHVuc2lnbmVkIG1vbnRo
LCB1CiAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKIH0KIAorT3B0aW9uYWw8
VmVjdG9yPFVDaGFyLCAzMj4+IGlzVGltZVpvbmVWYWxpZChjb25zdCBTdHJpbmcmIHRpbWVab25l
KQoreworICAgIC8vIFRpbWV6b25lIGlzIGFzY2lpLgorICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVy
KHRpbWVab25lLmxlbmd0aCgpKTsKKyAgICBVQ2hhciogYnVmZmVyU3RhcnQgPSBidWZmZXIuZGF0
YSgpOworICAgIENTdHJpbmcgY3R6ID0gdGltZVpvbmUudXRmOCgpOworICAgIGlmICghVW5pY29k
ZTo6Y29udmVydFVURjhUb1VURjE2KGN0ei5kYXRhKCksIGN0ei5kYXRhKCkgKyBjdHoubGVuZ3Ro
KCksICZidWZmZXJTdGFydCwgYnVmZmVyU3RhcnQgKyB0aW1lWm9uZS5sZW5ndGgoKSkpCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBWZWN0b3I8VUNoYXIsIDMyPiBjYW5vbmlj
YWxCdWZmZXIoMzIpOworICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAg
IGF1dG8gY2Fub25pY2FsTGVuZ3RoID0gdWNhbF9nZXRDYW5vbmljYWxUaW1lWm9uZUlEKGJ1ZmZl
ci5kYXRhKCksIGJ1ZmZlci5zaXplKCksIGNhbm9uaWNhbEJ1ZmZlci5kYXRhKCksIGNhbm9uaWNh
bEJ1ZmZlci5zaXplKCksIG51bGxwdHIsICZzdGF0dXMpOworICAgIGlmIChzdGF0dXMgPT0gVV9C
VUZGRVJfT1ZFUkZMT1dfRVJST1IpIHsKKyAgICAgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwor
ICAgICAgICBjYW5vbmljYWxCdWZmZXIuZ3JvdyhjYW5vbmljYWxMZW5ndGgpOworICAgICAgICB1
Y2FsX2dldENhbm9uaWNhbFRpbWVab25lSUQoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSwg
Y2Fub25pY2FsQnVmZmVyLmRhdGEoKSwgY2Fub25pY2FsTGVuZ3RoLCBudWxscHRyLCAmc3RhdHVz
KTsKKyAgICB9IGVsc2UKKyAgICAgICAgY2Fub25pY2FsQnVmZmVyLnJlc2l6ZShjYW5vbmljYWxM
ZW5ndGgpOworICAgIHJldHVybiBjYW5vbmljYWxCdWZmZXI7Cit9CisKK2Jvb2wgc2V0VGltZVpv
bmVPdmVycmlkZShjb25zdCBTdHJpbmcmIHRpbWVab25lKQoreworICAgIGlubmVyVGltZVpvbmVP
dmVycmlkZSgpLmRpc3BsYXlOYW1lID0gU3RyaW5nKCk7CisgICAgaWYgKGlubmVyVGltZVpvbmVP
dmVycmlkZSgpLmNhbCkgeworICAgICAgICB1Y2FsX2Nsb3NlKGlubmVyVGltZVpvbmVPdmVycmlk
ZSgpLmNhbCk7CisgICAgICAgIGlubmVyVGltZVpvbmVPdmVycmlkZSgpLmNhbCA9IG51bGxwdHI7
CisgICAgfQorCisgICAgaWYgKHRpbWVab25lLmlzRW1wdHkoKSkgeworICAgICAgICBpbm5lclRp
bWVab25lT3ZlcnJpZGUoKS5pZCA9IFN0cmluZygpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisKKyAgICBhdXRvIGNhbm9uaWNhbEJ1ZmZlciA9IGlzVGltZVpvbmVWYWxpZCh0aW1lWm9u
ZSk7CisgICAgaWYgKCFjYW5vbmljYWxCdWZmZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGF1dG8gY2Fub25pY2FsTGVuZ3RoID0gY2Fub25pY2FsQnVmZmVyLT5zaXplKCk7CisgICAg
VUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgVUNhbGVuZGFyKiBjYWwgPSB1
Y2FsX29wZW4oY2Fub25pY2FsQnVmZmVyLT5kYXRhKCksIGNhbm9uaWNhbExlbmd0aCwgbnVsbHB0
ciwgVUNBTF9UUkFESVRJT05BTCwgJnN0YXR1cyk7CisgICAgaWYgKCFVX1NVQ0NFU1Moc3RhdHVz
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgVmVjdG9yPFVDaGFyLCAzMj4gZGlzcGxh
eU5hbWVCdWZmZXIoMzIpOworICAgIGF1dG8gZGlzcGxheU5hbWVMZW5ndGggPSB1Y2FsX2dldFRp
bWVab25lRGlzcGxheU5hbWUoY2FsLCBVQ0FMX1NUQU5EQVJELCBkZWZhdWx0TGFuZ3VhZ2UoKS51
dGY4KCkuZGF0YSgpLCBkaXNwbGF5TmFtZUJ1ZmZlci5kYXRhKCksIGRpc3BsYXlOYW1lQnVmZmVy
LnNpemUoKSwgJnN0YXR1cyk7CisgICAgaWYgKHN0YXR1cyA9PSBVX0JVRkZFUl9PVkVSRkxPV19F
UlJPUikgeworICAgICAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgICAgIGRpc3BsYXlO
YW1lQnVmZmVyLmdyb3coZGlzcGxheU5hbWVMZW5ndGgpOworICAgICAgICB1Y2FsX2dldFRpbWVa
b25lRGlzcGxheU5hbWUoY2FsLCBVQ0FMX1NUQU5EQVJELCBkZWZhdWx0TGFuZ3VhZ2UoKS51dGY4
KCkuZGF0YSgpLCBkaXNwbGF5TmFtZUJ1ZmZlci5kYXRhKCksIGRpc3BsYXlOYW1lTGVuZ3RoLCAm
c3RhdHVzKTsKKyAgICB9CisgICAgaWYgKCFVX1NVQ0NFU1Moc3RhdHVzKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgYXV0byYgdGltZVpvbmVPdmVycmlkZSA9IGlubmVyVGltZVpvbmVP
dmVycmlkZSgpOworICAgIHRpbWVab25lT3ZlcnJpZGUuY2FsID0gY2FsOworICAgIHRpbWVab25l
T3ZlcnJpZGUuaWQgPSBTdHJpbmcoY2Fub25pY2FsQnVmZmVyLT5kYXRhKCksIGNhbm9uaWNhbExl
bmd0aCk7CisgICAgdGltZVpvbmVPdmVycmlkZS5kaXNwbGF5TmFtZSA9IFN0cmluZyhkaXNwbGF5
TmFtZUJ1ZmZlci5kYXRhKCksIGRpc3BsYXlOYW1lTGVuZ3RoKTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworU3RyaW5nJiB0aW1lWm9uZU92ZXJyaWRlKCkKK3sKKyAgICByZXR1cm4gaW5uZXJUaW1l
Wm9uZU92ZXJyaWRlKCkuaWQ7Cit9CisKK1N0cmluZyYgdGltZVpvbmVEaXNwbGF5TmFtZU92ZXJy
aWRlKCkKK3sKKyAgICByZXR1cm4gaW5uZXJUaW1lWm9uZU92ZXJyaWRlKCkuZGlzcGxheU5hbWU7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRGF0
ZU1hdGguaCBiL1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmgKaW5kZXggMjQ2YmE2N2M3NjRiNjI5
MDQyYTc5MjdkMjRmZTg5YjA0OWQ4MmEwYi4uNGZmNGE2MzA5MDBiYWQ0N2YxOTZjYzdlMjljM2Vl
OTRkMjFhOTQ2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRGF0ZU1hdGguaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5oCkBAIC0zODksNiArMzg5LDExIEBAIGlubGluZSBpbnQg
ZGF5SW5Nb250aEZyb21EYXlJblllYXIoaW50IGRheUluWWVhciwgYm9vbCBsZWFwWWVhcikKICAg
ICByZXR1cm4gZCAtIHN0ZXA7CiB9CiAKK1dURl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDxWZWN0
b3I8VUNoYXIsIDMyPj4gaXNUaW1lWm9uZVZhbGlkKGNvbnN0IFN0cmluZyYpOworV1RGX0VYUE9S
VF9QUklWQVRFIGJvb2wgc2V0VGltZVpvbmVPdmVycmlkZShjb25zdCBTdHJpbmcmKTsKK1dURl9F
WFBPUlRfUFJJVkFURSBTdHJpbmcmIHRpbWVab25lT3ZlcnJpZGUoKTsKK1dURl9FWFBPUlRfUFJJ
VkFURSBTdHJpbmcmIHRpbWVab25lRGlzcGxheU5hbWVPdmVycmlkZSgpOworCiAvLyBSZXR1cm5z
IGNvbWJpbmVkIG9mZnNldCBpbiBtaWxsaXNlY29uZCAoVVRDICsgRFNUKS4KIFdURl9FWFBPUlRf
UFJJVkFURSBMb2NhbFRpbWVPZmZzZXQgY2FsY3VsYXRlTG9jYWxUaW1lT2Zmc2V0KGRvdWJsZSB1
dGNJbk1pbGxpc2Vjb25kcywgVGltZVR5cGUgPSBVVENUaW1lKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAppbmRleCA2
ZGU4OTAzOWE4NzM1ZjFiNGM0MzljOTNhZmRhZjI2MTI3YzY0N2JmLi4yYWVjYWZlNGQ2ZDBiOGI5
ZjBiZWYxZDFjYzE4ZDMyMGVjZmRhMTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtMTk2LDYgKzE5Niw4IEBA
IHZvaWQgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKICNpZiBIQVZFKENBVEFMWVNUX1VTRVJfSU5URVJGQUNFX0lESU9NX0FO
RF9TQ0FMRV9GQUNUT1IpCiAgICAgZW5jb2RlciA8PCBvdmVycmlkZVVzZXJJbnRlcmZhY2VJZGlv
bUFuZFNjYWxlOwogI2VuZGlmCisKKyAgICBlbmNvZGVyIDw8IHRpbWVab25lT3ZlcnJpZGU7CiB9
CiAKIGJvb2wgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2Rl
ciYgZGVjb2RlciwgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKQEAg
LTUyOSw2ICs1MzEsMTIgQEAgYm9vbCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNv
ZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBXZWJQcm9jZXNzQ3JlYXQKICAgICBwYXJhbWV0ZXJz
Lm92ZXJyaWRlVXNlckludGVyZmFjZUlkaW9tQW5kU2NhbGUgPSBXVEZNb3ZlKCpvdmVycmlkZVVz
ZXJJbnRlcmZhY2VJZGlvbUFuZFNjYWxlKTsKICNlbmRpZgogCisgICAgT3B0aW9uYWw8T3B0aW9u
YWw8U3RyaW5nPj4gdGltZVpvbmVPdmVycmlkZTsKKyAgICBkZWNvZGVyID4+IHRpbWVab25lT3Zl
cnJpZGU7CisgICAgaWYgKCF0aW1lWm9uZU92ZXJyaWRlKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgcGFyYW1ldGVycy50aW1lWm9uZU92ZXJyaWRlID0gV1RGTW92ZSgqdGltZVpvbmVPdmVy
cmlkZSk7CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IDE0MGNlYjYwMzMyOTg0
NTk1ZGY2MjdhYzg5ZmM0ZWE0NmEzZjU4YzUuLjA5NmJkNjk3MDgxYTk4ZjhhMWZlZmYyYjc5NTdm
OTNkMWMyYTZmYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTIzOSw2ICsyMzksOCBAQCBzdHJ1Y3QgV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycyB7CiAjaWYgSEFWRShDQVRBTFlTVF9VU0VSX0lOVEVSRkFDRV9J
RElPTV9BTkRfU0NBTEVfRkFDVE9SKQogICAgIHN0ZDo6cGFpcjxpbnQ2NF90LCBkb3VibGU+IG92
ZXJyaWRlVXNlckludGVyZmFjZUlkaW9tQW5kU2NhbGU7CiAjZW5kaWYKKworICAgIE9wdGlvbmFs
PFN0cmluZz4gdGltZVpvbmVPdmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLmNwcAppbmRleCAxODU4NWY2MWJiNmVjYWJlYzM5ZmYwYzAzYjg2MmM2
NTg1NmRjYTI0Li5hNmQyNmU0MGE1MTYzY2IzMGNmNmM5YTRlMmRiNDk1NTEwZWYwZGUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLmNwcApAQCAtNzYsNiArNzYsNyBAQCBSZWY8UHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uPiBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNvcHkoKQogICAgIGNvcHktPm1f
bmV0d29ya1Byb2Nlc3NQYXRoID0gdGhpcy0+bV9uZXR3b3JrUHJvY2Vzc1BhdGg7CiAgICAgY29w
eS0+bV91c2VySWQgPSB0aGlzLT5tX3VzZXJJZDsKICNlbmRpZgorICAgIGNvcHktPm1fdGltZVpv
bmVPdmVycmlkZSA9IHRoaXMtPm1fdGltZVpvbmVPdmVycmlkZTsKICAgICByZXR1cm4gY29weTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbi5oCmluZGV4IDY0OTI0OTAyZjE5ODExNzkyNTM3YTE1YTMyZWQ0
ZDcwNmRhZjk2NzAuLjYxZmNiOWE0MTg4YzRhNDdiMGE5YjI0NmU1YmQzZDBkZTllMmJlNWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLmgKQEAgLTE0Nyw2ICsxNDcsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRVc2VySWQoY29uc3QgaW50MzJfdCB1c2VySWQpIHsgbV91c2VySWQgPSB1c2VySWQ7IH0KICNl
bmRpZgogCisgICAgdm9pZCBzZXRUaW1lWm9uZU92ZXJyaWRlKGNvbnN0IFdURjo6U3RyaW5nJiB0
aW1lWm9uZU92ZXJyaWRlKSB7IG1fdGltZVpvbmVPdmVycmlkZSA9IHRpbWVab25lT3ZlcnJpZGU7
IH0KKyAgICBjb25zdCBXVEY6OlN0cmluZyYgdGltZVpvbmVPdmVycmlkZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdGltZVpvbmVPdmVycmlkZTsgfQorCiBwcml2YXRlOgogICAgIFdURjo6U3RyaW5nIG1f
aW5qZWN0ZWRCdW5kbGVQYXRoOwogICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gbV9jdXN0b21DbGFz
c2VzRm9yUGFyYW1ldGVyQ29kZXI7CkBAIC0xODEsNiArMTg0LDcgQEAgcHJpdmF0ZToKICAgICBX
VEY6OlN0cmluZyBtX25ldHdvcmtQcm9jZXNzUGF0aDsKICAgICBpbnQzMl90IG1fdXNlcklkIHsg
LTEgfTsKICNlbmRpZgorICAgIFdURjo6U3RyaW5nIG1fdGltZVpvbmVPdmVycmlkZTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQppbmRleCA3NmI2Y2RmMzBk
MjhjYTViNjg5NmI2NDczNDJiMzcxNzVjYjRhN2ExLi5lYzVmZDhhNWY2MjQ5YjM5ZDI5MWQwMzhj
YjAzYjQ0NzY5N2JlOGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQpAQCAtMTI3NSw2ICsxMjc1
LDE2IEBAIHN0YXRpYyBfV0tXZWJWaWV3Q2F0ZWdvcnkgdG9XS1dlYlZpZXdDYXRlZ29yeShXZWJL
aXQ6OldlYlZpZXdDYXRlZ29yeSBjYXRlZ29yeSkKICAgICBfcGFnZUNvbmZpZ3VyYXRpb24tPnNl
dFByb2Nlc3NEaXNwbGF5TmFtZShsc0Rpc3BsYXlOYW1lKTsKIH0KIAorLSAoTlNTdHJpbmcgKilf
dGltZVpvbmVPdmVycmlkZQoreworICAgIHJldHVybiBfcGFnZUNvbmZpZ3VyYXRpb24tPnRpbWVa
b25lT3ZlcnJpZGUoKTsKK30KKworLSAodm9pZClfc2V0VGltZVpvbmVPdmVycmlkZTooTlNTdHJp
bmcgKil0aW1lWm9uZQoreworICAgIF9wYWdlQ29uZmlndXJhdGlvbi0+c2V0VGltZVpvbmVPdmVy
cmlkZSh0aW1lWm9uZSk7Cit9CisKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gKFdLRGVwcmVjYXRlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRl
LmgKaW5kZXggN2VkMjZkZTg1M2IwN2M0YTAxY2IyYzQyYjgwMDIxYTNjZTdiNTk4Ny4uYTZhNGI4
NzVjZWJjOTUyY2M1NzYwNjEzOTVjMWZhZWRhYzhlNmJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb25Qcml2YXRlLmgKQEAgLTEyNyw1ICsxMjcsNiBAQCB0eXBlZGVmIE5TX0VOVU0oTlNVSW50
ZWdlciwgX1dLV2ViVmlld0NhdGVnb3J5KSB7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVy
PV9zZXRXZWJWaWV3Q2F0ZWdvcnk6KSBfV0tXZWJWaWV3Q2F0ZWdvcnkgX3dlYlZpZXdDYXRlZ29y
eSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwog
QHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmc6KSBCT09MIF9zaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBX
S19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogQHBy
b3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0UHJvY2Vzc0Rpc3BsYXlOYW1lOikgTlNTdHJp
bmcgKl9wcm9jZXNzRGlzcGxheU5hbWUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJB
KSwgaW9zKFdLX0lPU19UQkEpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFRp
bWVab25lT3ZlcnJpZGU6KSBOU1N0cmluZyAqX3RpbWVab25lT3ZlcnJpZGUgV0tfQVBJX0FWQUlM
QUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAogQGVuZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNw
cAppbmRleCA4OWJlNTZhZDcxZDcxNTY5MTJhMjY5MTUzMDU3ZGY1MjdjZGQ0NDYwLi4zNjdlZTQx
ZmIwMDQ0NDc0MGU4ODZiMTczNDVhMTdhZjc0Mjk2YWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtNjMsNiAr
NjMsNyBAQAogI2luY2x1ZGUgPGxpYmludGwuaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVk
ZSA8cGFsL0h5c3RlcmVzaXNBY3Rpdml0eS5oPgorI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgog
I2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgpAQCAtMTI0LDkgKzEyNSwxMCBAQCBlbnVtIHsKICNpZiBQ
TEFURk9STShHVEspCiAgICAgUFJPUF9QU09OX0VOQUJMRUQsCiAjaWYgIVVTRShHVEs0KQotICAg
IFBST1BfVVNFX1NZU1lFTV9BUFBFQVJBTkNFX0ZPUl9TQ1JPTExCQVJTCisgICAgUFJPUF9VU0Vf
U1lTVEVNX0FQUEVBUkFOQ0VfRk9SX1NDUk9MTEJBUlMsCiAjZW5kaWYKICNlbmRpZgorICAgIFBS
T1BfVElNRV9aT05FX09WRVJSSURFCiB9OwogCiBlbnVtIHsKQEAgLTI0Miw2ICsyNDQsOCBAQCBz
dHJ1Y3QgX1dlYktpdFdlYkNvbnRleHRQcml2YXRlIHsKIAogICAgIEhhc2hTZXQ8U3RyaW5nPiBk
bnNQcmVmZXRjaGVkSG9zdHM7CiAgICAgUEFMOjpIeXN0ZXJlc2lzQWN0aXZpdHkgZG5zUHJlZmV0
Y2hIeXN0ZXJlcmlzOworCisgICAgQ1N0cmluZyB0aW1lWm9uZU92ZXJyaWRlOwogfTsKIAogc3Rh
dGljIGd1aW50IHNpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwLCB9OwpAQCAtMzQyLDExICszNDYs
MTQgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViQ29udGV4dEdldFByb3BlcnR5KEdPYmplY3QqIG9i
amVjdCwgZ3VpbnQgcHJvcElELCBHVmFsdWUqIHYKICAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVh
bih2YWx1ZSwgY29udGV4dC0+cHJpdi0+cHNvbkVuYWJsZWQpOwogICAgICAgICBicmVhazsKICNp
ZiAhVVNFKEdUSzQpCi0gICAgY2FzZSBQUk9QX1VTRV9TWVNZRU1fQVBQRUFSQU5DRV9GT1JfU0NS
T0xMQkFSUzoKKyAgICBjYXNlIFBST1BfVVNFX1NZU1RFTV9BUFBFQVJBTkNFX0ZPUl9TQ1JPTExC
QVJTOgogICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfd2ViX2NvbnRl
eHRfZ2V0X3VzZV9zeXN0ZW1fYXBwZWFyYW5jZV9mb3Jfc2Nyb2xsYmFycyhjb250ZXh0KSk7CiAg
ICAgICAgIGJyZWFrOwogI2VuZGlmCiAjZW5kaWYKKyAgICBjYXNlIFBST1BfVElNRV9aT05FX09W
RVJSSURFOgorICAgICAgICBnX3ZhbHVlX3NldF9zdHJpbmcodmFsdWUsIGNvbnRleHQtPnByaXYt
PnRpbWVab25lT3ZlcnJpZGUuZGF0YSgpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoK
ICAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElE
LCBwYXJhbVNwZWMpOwogICAgIH0KQEAgLTM3MiwxMSArMzc5LDE3IEBAIHN0YXRpYyB2b2lkIHdl
YmtpdFdlYkNvbnRleHRTZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJRCwg
Y29uc3QgR1ZhCiAgICAgICAgIGNvbnRleHQtPnByaXYtPnBzb25FbmFibGVkID0gZ192YWx1ZV9n
ZXRfYm9vbGVhbih2YWx1ZSk7CiAgICAgICAgIGJyZWFrOwogI2lmICFVU0UoR1RLNCkKLSAgICBj
YXNlIFBST1BfVVNFX1NZU1lFTV9BUFBFQVJBTkNFX0ZPUl9TQ1JPTExCQVJTOgorICAgIGNhc2Ug
UFJPUF9VU0VfU1lTVEVNX0FQUEVBUkFOQ0VfRk9SX1NDUk9MTEJBUlM6CiAgICAgICAgIHdlYmtp
dF93ZWJfY29udGV4dF9zZXRfdXNlX3N5c3RlbV9hcHBlYXJhbmNlX2Zvcl9zY3JvbGxiYXJzKGNv
bnRleHQsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKICAgICAgICAgYnJlYWs7CiAjZW5k
aWYKICNlbmRpZgorICAgIGNhc2UgUFJPUF9USU1FX1pPTkVfT1ZFUlJJREU6IHsKKyAgICAgICAg
Y29uc3QgY2hhciogdGltZVpvbmVPdmVycmlkZSA9IGdfdmFsdWVfZ2V0X3N0cmluZyh2YWx1ZSk7
CisgICAgICAgIGlmICh0aW1lWm9uZU92ZXJyaWRlKQorICAgICAgICAgICAgd2Via2l0X3dlYl9j
b250ZXh0X3NldF90aW1lX3pvbmVfb3ZlcnJpZGUoY29udGV4dCwgdGltZVpvbmVPdmVycmlkZSk7
CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBkZWZhdWx0OgogICAgICAgICBHX09CSkVDVF9X
QVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wSUQsIHBhcmFtU3BlYyk7CiAgICAg
fQpAQCAtMzk5LDYgKzQxMiw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYkNvbnRleHRDb25zdHJ1
Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAgICAgY29uZmlndXJhdGlvbi5zZXRVc2VTeXN0ZW1BcHBl
YXJhbmNlRm9yU2Nyb2xsYmFycyhwcml2LT51c2VTeXN0ZW1BcHBlYXJhbmNlRm9yU2Nyb2xsYmFy
cyk7CiAjZW5kaWYKICNlbmRpZgorICAgIGNvbmZpZ3VyYXRpb24uc2V0VGltZVpvbmVPdmVycmlk
ZShTdHJpbmc6OmZyb21VVEY4KHByaXYtPnRpbWVab25lT3ZlcnJpZGUuZGF0YSgpKSk7CiAKICAg
ICBpZiAoIXByaXYtPndlYnNpdGVEYXRhTWFuYWdlcikKICAgICAgICAgcHJpdi0+d2Vic2l0ZURh
dGFNYW5hZ2VyID0gYWRvcHRHUmVmKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9uZXcoImxv
Y2FsLXN0b3JhZ2UtZGlyZWN0b3J5IiwgcHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5LmRhdGEo
KSwgbnVsbHB0cikpOwpAQCAtNTUyLDcgKzU2Niw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJf
Y29udGV4dF9jbGFzc19pbml0KFdlYktpdFdlYkNvbnRleHRDbGFzcyogd2ViQ29udGV4dENsYXNz
CiAgICAgICovCiAgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKICAgICAgICAg
Z09iamVjdENsYXNzLAotICAgICAgICBQUk9QX1VTRV9TWVNZRU1fQVBQRUFSQU5DRV9GT1JfU0NS
T0xMQkFSUywKKyAgICAgICAgUFJPUF9VU0VfU1lTVEVNX0FQUEVBUkFOQ0VfRk9SX1NDUk9MTEJB
UlMsCiAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKAogICAgICAgICAgICAgInVzZS1zeXN0
ZW0tYXBwZWFyYW5jZS1mb3Itc2Nyb2xsYmFycyIsCiAgICAgICAgICAgICBfKCJVc2Ugc3lzdGVt
IGFwcGVhcmFuY2UgZm9yIHNjcm9sbGJhcnMiKSwKQEAgLTU2Miw2ICs1NzYsMzAgQEAgc3RhdGlj
IHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X2NsYXNzX2luaXQoV2ViS2l0V2ViQ29udGV4dENsYXNz
KiB3ZWJDb250ZXh0Q2xhc3MKICNlbmRpZgogI2VuZGlmCiAKKyAgICAvKioKKyAgICAgKiBXZWJL
aXRXZWJDb250ZXh0OnRpbWUtem9uZS1vdmVycmlkZToKKyAgICAgKgorICAgICAqIFRoZSB0aW1l
em9uZSBvdmVycmlkZSBmb3IgdGhpcyB3ZWIgY29udGV4dC4gU2V0dGluZyB0aGlzIHByb3BlcnR5
IHByb3ZpZGVzIGEgYmV0dGVyCisgICAgICogYWx0ZXJuYXRpdmUgdG8gY29uZmlndXJlIHRoZSB0
aW1lem9uZSBpbmZvcm1hdGlvbiBmb3IgYWxsIHdlYnZpZXdzIG1hbmFnZWQgYnkgdGhlIFdlYkNv
bnRleHQuCisgICAgICogVGhlIG90aGVyLCBsZXNzIG9wdGltYWwsIGFwcHJvYWNoIGlzIHRvIGds
b2JhbGx5IHNldCB0aGUgVFogZW52aXJvbm1lbnQgdmFyaWFibGUgaW4gdGhlCisgICAgICogcHJv
Y2VzcyBiZWZvcmUgY3JlYXRpbmcgdGhlIGNvbnRleHQuIEhvd2V2ZXIgdGhpcyBhcHByb2FjaCBt
aWdodCBub3QgYmUgdmVyeSBjb252ZW5pZW50IGFuZAorICAgICAqIGNhbiBoYXZlIHNpZGUtZWZm
ZWN0cyBpbiB5b3VyIGFwcGxpY2F0aW9uLgorICAgICAqCisgICAgICogVGhlIGV4cGVjdGVkIHZh
bHVlcyBmb3IgdGhpcyBwcm9wZXJ0eSBhcmUgZGVmaW5lZCBpbiB0aGUgSUFOQSB0aW1lem9uZSBk
YXRhYmFzZS4gU2VlIHRoaXMKKyAgICAgKiB3aWtpcGVkaWEgcGFnZSBmb3IgaW5zdGFuY2UsIGh0
dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xpc3Rfb2ZfdHpfZGF0YWJhc2VfdGltZV96b25l
cy4KKyAgICAgKgorICAgICAqIFNpbmNlOiAyLjMyCisgICAgICovCisgICAgZ19vYmplY3RfY2xh
c3NfaW5zdGFsbF9wcm9wZXJ0eSgKKyAgICAgICAgZ09iamVjdENsYXNzLAorICAgICAgICBQUk9Q
X1RJTUVfWk9ORV9PVkVSUklERSwKKyAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygKKyAgICAg
ICAgICAgICJ0aW1lLXpvbmUtb3ZlcnJpZGUiLAorICAgICAgICAgICAgXygiVGltZSBab25lIE92
ZXJyaWRlIiksCisgICAgICAgICAgICBfKCJUaGUgdGltZSB6b25lIHRvIHVzZSBpbnN0ZWFkIG9m
IHRoZSBzeXN0ZW0gb25lIiksCisgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgc3Rh
dGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX0NP
TlNUUlVDVF9PTkxZKSkpOworCiAgICAgLyoqCiAgICAgICogV2ViS2l0V2ViQ29udGV4dDo6ZG93
bmxvYWQtc3RhcnRlZDoKICAgICAgKiBAY29udGV4dDogdGhlICNXZWJLaXRXZWJDb250ZXh0CkBA
IC0xODM4LDYgKzE4NzYsMzkgQEAgZ2Jvb2xlYW4gd2Via2l0X3dlYl9jb250ZXh0X2dldF91c2Vf
c3lzdGVtX2FwcGVhcmFuY2VfZm9yX3Njcm9sbGJhcnMoV2ViS2l0V2ViQ28KIH0KICNlbmRpZgog
CisvKioKKyAqIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfdGltZV96b25lX292ZXJyaWRlOgorICog
QGNvbnRleHQ6IGEgI1dlYktpdFdlYkNvbnRleHQKKyAqIEB0aW1lX3pvbmVfb3ZlcnJpZGU6IHZh
bHVlIHRvIHNldAorICoKKyAqIFNldCB0aGUgI1dlYktpdFdlYkNvbnRleHQ6dGltZS16b25lLW92
ZXJyaWRlIHByb3BlcnR5LiBSZWZlciB0byB0aGUgSUFOQSBkYXRhYmFzZSBmb3IgdmFsaWQKKyAq
IHNwZWNpZmllcnMsIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xpc3Rfb2ZfdHpfZGF0
YWJhc2VfdGltZV96b25lcworICoKKyAqIFNpbmNlOiAyLjMyCisgKi8KK3ZvaWQgd2Via2l0X3dl
Yl9jb250ZXh0X3NldF90aW1lX3pvbmVfb3ZlcnJpZGUoV2ViS2l0V2ViQ29udGV4dCogY29udGV4
dCwgY29uc3QgZ2NoYXIqIHRpbWVab25lT3ZlcnJpZGUpCit7CisgICAgZ19yZXR1cm5faWZfZmFp
bChXRUJLSVRfSVNfV0VCX0NPTlRFWFQoY29udGV4dCkpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwo
V1RGOjppc1RpbWVab25lVmFsaWQodGltZVpvbmVPdmVycmlkZSkpOworCisgICAgY29udGV4dC0+
cHJpdi0+dGltZVpvbmVPdmVycmlkZSA9IHRpbWVab25lT3ZlcnJpZGU7Cit9CisKKy8qKgorICog
d2Via2l0X3dlYl9jb250ZXh0X2dldF90aW1lX3pvbmVfb3ZlcnJpZGU6CisgKiBAY29udGV4dDog
YSAjV2ViS2l0V2ViQ29udGV4dAorICoKKyAqIEdldCB0aGUgI1dlYktpdFdlYkNvbnRleHQ6dGlt
ZS16b25lLW92ZXJyaWRlIHByb3BlcnR5LgorICoKKyAqIFNpbmNlOiAyLjMyCisgKi8KK2NvbnN0
IGdjaGFyKiB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3RpbWVfem9uZV9vdmVycmlkZShXZWJLaXRX
ZWJDb250ZXh0KiBjb250ZXh0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9J
U19XRUJfQ09OVEVYVChjb250ZXh0KSwgbnVsbHB0cik7CisKKyAgICByZXR1cm4gY29udGV4dC0+
cHJpdi0+dGltZVpvbmVPdmVycmlkZS5kYXRhKCk7Cit9CisKIHZvaWQgd2Via2l0V2ViQ29udGV4
dEluaXRpYWxpemVOb3RpZmljYXRpb25QZXJtaXNzaW9ucyhXZWJLaXRXZWJDb250ZXh0KiBjb250
ZXh0KQogewogICAgIGdfc2lnbmFsX2VtaXQoY29udGV4dCwgc2lnbmFsc1tJTklUSUFMSVpFX05P
VElGSUNBVElPTl9QRVJNSVNTSU9OU10sIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuaAppbmRleCBkYmY2MmJjZjE2OGJjODcyZGY4
YjUyOTNhZTA1YWM4NDllY2I2ZDJmLi5mYzNiN2ZlNDgxYTRiYmJlYzViN2IyMzE5YTNlNTE3NmZm
ODczMzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYkNvbnRleHQuaApAQCAtMzMxLDYgKzMzMSwxMyBAQCB3ZWJraXRfd2ViX2NvbnRleHRfc2V0
X3VzZV9zeXN0ZW1fYXBwZWFyYW5jZV9mb3Jfc2Nyb2xsYmFycyAoV2ViS2l0V2ViQ29udGV4dAog
V0VCS0lUX0FQSSBnYm9vbGVhbgogd2Via2l0X3dlYl9jb250ZXh0X2dldF91c2Vfc3lzdGVtX2Fw
cGVhcmFuY2VfZm9yX3Njcm9sbGJhcnMgKFdlYktpdFdlYkNvbnRleHQgICAgICAqY29udGV4dCk7
CiAKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl9jb250ZXh0X3NldF90aW1lX3pvbmVfb3Zl
cnJpZGUgICAgICAgICAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAgICAgICAqY29udGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2NoYXIgICAgICAgICAgICAgICAgICAgKnRpbWVfem9uZV9vdmVycmlkZSk7CisKK1dFQktJ
VF9BUEkgY29uc3QgZ2NoYXIqCit3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3RpbWVfem9uZV9vdmVy
cmlkZSAgICAgICAgICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICAgICAgICpjb250ZXh0KTsK
KwogR19FTkRfREVDTFMKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0IGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dApp
bmRleCAyZGFiY2NjNDRkNzc1ODY2ZTEyMDljMzRkNjU0MmIxY2IyZDY4OTg4Li5kMDNhMWJjOGU1
NzJkZDc5Mjk2ZjIyNWYxNjlmNzhhMWZlMzQ0MGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0
aW9ucy50eHQKQEAgLTczLDYgKzczLDggQEAgd2Via2l0X3dlYl9jb250ZXh0X2luaXRpYWxpemVf
bm90aWZpY2F0aW9uX3Blcm1pc3Npb25zCiB3ZWJraXRfd2ViX2NvbnRleHRfc2VuZF9tZXNzYWdl
X3RvX2FsbF9leHRlbnNpb25zCiB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3VzZV9zeXN0ZW1fYXBw
ZWFyYW5jZV9mb3Jfc2Nyb2xsYmFycwogd2Via2l0X3dlYl9jb250ZXh0X2dldF91c2Vfc3lzdGVt
X2FwcGVhcmFuY2VfZm9yX3Njcm9sbGJhcnMKK3dlYmtpdF93ZWJfY29udGV4dF9zZXRfdGltZV96
b25lX292ZXJyaWRlCit3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3RpbWVfem9uZV9vdmVycmlkZQog
CiA8U1VCU0VDVElPTiBVUkkgU2NoZW1lPgogV2ViS2l0VVJJU2NoZW1lUmVxdWVzdENhbGxiYWNr
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYkNv
bnRleHQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViQ29udGV4
dC5oCmluZGV4IDk4ZDY5MjlhMjBiMjY5YTg4MjRlOTQwNTA0N2VjYWJhZjdlZmM1NDMuLmJjMjk3
MzYzM2RkMzJjNTMzOTQ5ZGEyNzE4NDJmNzI2ZjMyYWI0YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViQ29udGV4dC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViQ29udGV4dC5oCkBAIC0zMjAsNiArMzIw
LDEzIEBAIFdFQktJVF9BUEkgdm9pZAogd2Via2l0X3dlYl9jb250ZXh0X3NlbmRfbWVzc2FnZV90
b19hbGxfZXh0ZW5zaW9ucyAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAgICAgICAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
V2ViS2l0VXNlck1lc3NhZ2UgICAgICAgICAgICAgKm1lc3NhZ2UpOwogCitXRUJLSVRfQVBJIHZv
aWQKK3dlYmtpdF93ZWJfY29udGV4dF9zZXRfdGltZV96b25lX292ZXJyaWRlICAgICAgICAgICAo
V2ViS2l0V2ViQ29udGV4dCAgICAgICAgICAgICAgKmNvbnRleHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAg
ICAgICAgICAgICp0aW1lX3pvbmVfb3ZlcnJpZGUpOworCitXRUJLSVRfQVBJIGNvbnN0IGdjaGFy
Kgord2Via2l0X3dlYl9jb250ZXh0X2dldF90aW1lX3pvbmVfb3ZlcnJpZGUgICAgICAgICAgIChX
ZWJLaXRXZWJDb250ZXh0ICAgICAgICAgICAgICAqY29udGV4dCk7CisKIEdfRU5EX0RFQ0xTCiAK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9kb2Nz
L3dwZS0xLjAtc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9k
b2NzL3dwZS0xLjAtc2VjdGlvbnMudHh0CmluZGV4IDE1NWFlNjU5ZTljOWY5ODhmYjI3ODI0MGM2
MTJlMDE3M2NiYjZlMzEuLmI0YWNiZjBmM2E1ZTRhNmI1MWM2ODc5YWE4MjVkMTMyOTRmMjcxNGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMS4w
LXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mv
d3BlLTEuMC1zZWN0aW9ucy50eHQKQEAgLTQ4LDYgKzQ4LDggQEAgd2Via2l0X3dlYl9jb250ZXh0
X2dldF9wcm9jZXNzX21vZGVsCiB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3Byb2Nlc3NfbW9kZWwK
IHdlYmtpdF93ZWJfY29udGV4dF9pbml0aWFsaXplX25vdGlmaWNhdGlvbl9wZXJtaXNzaW9ucwog
d2Via2l0X3dlYl9jb250ZXh0X3NlbmRfbWVzc2FnZV90b19hbGxfZXh0ZW5zaW9ucword2Via2l0
X3dlYl9jb250ZXh0X3NldF90aW1lX3pvbmVfb3ZlcnJpZGUKK3dlYmtpdF93ZWJfY29udGV4dF9n
ZXRfdGltZV96b25lX292ZXJyaWRlCiAKIDxTVUJTRUNUSU9OIFVSSSBTY2hlbWU+CiBXZWJLaXRV
UklTY2hlbWVSZXF1ZXN0Q2FsbGJhY2sKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcAppbmRleCBkOTMxZTQ1MjdlNjMzNDhkYzkyMWFkODljY2QwOTIxZjQ2MzBjMzhi
Li43MTY3ZWM3YzBlYTZmMGZlYjhiYmFjMTExMWVjNTUzMmM0OGMxZDljIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0xMTA0LDYgKzExMDQsOCBAQCB2
b2lkIFdlYlByb2Nlc3NQb29sOjppbml0aWFsaXplTmV3V2ViUHJvY2VzcyhXZWJQcm9jZXNzUHJv
eHkmIHByb2Nlc3MsIFdlYnNpdGVEYQogCiAgICAgcGFyYW1ldGVycy5wcmVzZW50aW5nQXBwbGlj
YXRpb25QSUQgPSBtX2NvbmZpZ3VyYXRpb24tPnByZXNlbnRpbmdBcHBsaWNhdGlvblBJRCgpOwog
CisgICAgcGFyYW1ldGVycy50aW1lWm9uZU92ZXJyaWRlID0gbV9jb25maWd1cmF0aW9uLT50aW1l
Wm9uZU92ZXJyaWRlKCk7CisKICAgICAvLyBBZGQgYW55IHBsYXRmb3JtIHNwZWNpZmljIHBhcmFt
ZXRlcnMKICAgICBwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKHByb2Nlc3MsIHBhcmFtZXRl
cnMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nl
c3NQb29sR0xpYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQ
b29sR0xpYi5jcHAKaW5kZXggYmUxOTc5NmVkOTZkMDcwNTQyOGYwODE5OTU4MDYyNTRlMmYyYWQz
Ni4uNzBhMmUyMjk4NmFhNDcxZTI3NzVmMjQwMTI3MTE2ZTJjZWVlZTFjYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUG9vbEdMaWIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcApAQCAt
MTA4LDYgKzEwOCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVdl
YlByb2Nlc3MoY29uc3QgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzCiAjaWYgUExBVEZPUk0oR1RL
KSAmJiAhVVNFKEdUSzQpCiAgICAgcGFyYW1ldGVycy51c2VTeXN0ZW1BcHBlYXJhbmNlRm9yU2Ny
b2xsYmFycyA9IG1fY29uZmlndXJhdGlvbi0+dXNlU3lzdGVtQXBwZWFyYW5jZUZvclNjcm9sbGJh
cnMoKTsKICNlbmRpZgorICAgIHBhcmFtZXRlcnMudGltZVpvbmVPdmVycmlkZSA9IG1fY29uZmln
dXJhdGlvbi0+dGltZVpvbmVPdmVycmlkZSgpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpw
bGF0Zm9ybUludmFsaWRhdGVDb250ZXh0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NHTGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9nbGliL1dlYlByb2Nlc3NHTGliLmNwcAppbmRleCA3ODgzNTRjMWM3MjE2ZDAyNjQ3N2EwOWEw
Njg5YWFhNjc1YTc3ZmEyLi5lMWM4YjAyMzg1MTkyOTY1NDRjNGVlYmIyNjhlNDM1ZjJjZGEzNDgy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzR0xp
Yi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc0dMaWIu
Y3BwCkBAIC01MCw2ICs1MCw4IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxiYXJUaGVtZUd0
ay5oPgogI2VuZGlmCiAKKyNpbmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4KKwogbmFtZXNwYWNlIFdl
YktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtOTcsNiArOTksMTEgQEAgdm9p
ZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMmIHBhcmEKICNpZiBQTEFURk9STShHVEspICYmICFVU0UoR1RLNCkKICAg
ICBzZXRVc2VTeXN0ZW1BcHBlYXJhbmNlRm9yU2Nyb2xsYmFycyhwYXJhbWV0ZXJzLnVzZVN5c3Rl
bUFwcGVhcmFuY2VGb3JTY3JvbGxiYXJzKTsKICNlbmRpZgorCisgICAgaWYgKHBhcmFtZXRlcnMu
dGltZVpvbmVPdmVycmlkZSkKKyAgICAgICAgV1RGOjpzZXRUaW1lWm9uZU92ZXJyaWRlKCpwYXJh
bWV0ZXJzLnRpbWVab25lT3ZlcnJpZGUpOworICAgIGVsc2UKKyAgICAgICAgV1RGOjpzZXRUaW1l
Wm9uZU92ZXJyaWRlKHsgfSk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1TZXRXZWJz
aXRlRGF0YVN0b3JlUGFyYW1ldGVycyhXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycyYmKQpk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDc3ODA3
ZTJmYjg1NWJkN2VkMjE1YzIyYWFkOTU0NzlhZGQ2MzBlMGYuLmY3OWNjNDM1NmJmNDU4MDk0Mzg5
MzY1M2JmMWRmMmU3Yjg4ODY4Y2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAyMC0wNy0xNyAgUGhpbGlwcGUgTm9y
bWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgW1dLMl0gQWRkIEFQSSB0byBh
bGxvdyBlbWJlZGRlciB0byBzZXQgYSB0aW1lem9uZSBvdmVycmlkZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzODg0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEFQSSB0ZXN0cyBmb3IgdGhlIHRp
bWV6b25lIGNvbmZpZ3VyYXRpb24gQVBJLiBUaGUgR1RLIGFuZCBXUEUgTWluaUJyb3dzZXJzIGFs
c28gZ2FpbmVkCisgICAgICAgIG5ldyBydW50aW1lIG9wdGlvbnMgYWxsb3dpbmcgdG8gZXhlcmNp
c2UgdGhpcyBuZXcgQVBJLgorCisgICAgICAgICogTWluaUJyb3dzZXIvZ3RrL21haW4uYzoKKyAg
ICAgICAgKGFjdGl2YXRlKToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci93cGUvbWFpbi5jcHA6Cisg
ICAgICAgIChtYWluKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1RpbWVab25lT3ZlcnJpZGUubW06IEFkZGVkLgorICAgICAgICAoVGltZVpvbmVP
dmVycmlkZVRlc3Q6OnJ1blNjcmlwdEFuZEV4ZWN1dGVDYWxsYmFjayk6CisgICAgICAgIChURVNU
X0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0
V2ViQ29udGV4dC5jcHA6CisgICAgICAgICh0ZXN0V2ViQ29udGV4dFRpbWVab25lKToKKyAgICAg
ICAgKHRlc3RXZWJWaWV3VGltZVpvbmVPdmVycmlkZSk6CisgICAgICAgIChiZWZvcmVBbGwpOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1Rlc3RNYWluLmNwcDoKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9UZXN0TWFpbi5oOgorICAgICAg
ICAoVGVzdDo6VGVzdCk6CisgICAgICAgICogZmxhdHBhay9mbGF0cGFrdXRpbHMucHk6CisgICAg
ICAgIChXZWJraXRGbGF0cGFrLnJ1bl9pbl9zYW5kYm94KToKKwogMjAyMC0wOS0xNiAgRnVqaWkg
SGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBbQ01ha2VdIEFk
ZCBhIG5ldyBsaWJyYXJ5IHRhcmdldCBUZXN0UnVubmVyU2hhcmVkCmRpZmYgLS1naXQgYS9Ub29s
cy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYwpp
bmRleCBkNjg0ZjljODkzZDQxZGUxZWRjMTkzZTE3NTk5ZTQ4NDQ0OTRhYzY2Li4wYTQ3NjkyNGNi
OTYyZWNmYTgzOGJmZjgxNGRiMjE1Y2ZjMjNiYzI2IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJv
d3Nlci9ndGsvbWFpbi5jCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMKQEAgLTUx
LDYgKzUxLDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmNvb2tpZXNGaWxlOwogc3RhdGljIGNvbnN0
IGNoYXIgKmNvb2tpZXNQb2xpY3k7CiBzdGF0aWMgY29uc3QgY2hhciAqcHJveHk7CiBzdGF0aWMg
Z2Jvb2xlYW4gZGFya01vZGU7CitzdGF0aWMgY2hhciogdGltZVpvbmU7CiBzdGF0aWMgZ2Jvb2xl
YW4gZW5hYmxlSVRQOwogc3RhdGljIGdib29sZWFuIHByaW50VmVyc2lvbjsKIApAQCAtMTQzLDYg
KzE0NCw3IEBAIHN0YXRpYyBjb25zdCBHT3B0aW9uRW50cnkgY29tbWFuZExpbmVPcHRpb25zW10g
PQogICAgIHsgImlnbm9yZS10bHMtZXJyb3JzIiwgMCwgMCwgR19PUFRJT05fQVJHX05PTkUsICZp
Z25vcmVUTFNFcnJvcnMsICJJZ25vcmUgVExTIGVycm9ycyIsIE5VTEwgfSwKICAgICB7ICJjb250
ZW50LWZpbHRlciIsIDAsIDAsIEdfT1BUSU9OX0FSR19GSUxFTkFNRSwgJmNvbnRlbnRGaWx0ZXIs
ICJKU09OIHdpdGggY29udGVudCBmaWx0ZXJpbmcgcnVsZXMiLCAiRklMRSIgfSwKICAgICB7ICJl
bmFibGUtaXRwIiwgMCwgMCwgR19PUFRJT05fQVJHX05PTkUsICZlbmFibGVJVFAsICJFbmFibGUg
SW50ZWxsaWdlbnQgVHJhY2tpbmcgUHJldmVudGlvbiAoSVRQKSIsIE5VTEwgfSwKKyAgICB7ICJ0
aW1lLXpvbmUiLCAndCcsIDAsIEdfT1BUSU9OX0FSR19TVFJJTkcsICZ0aW1lWm9uZSwgIlNldCB0
aW1lIHpvbmUiLCAiVElNRVpPTkUiIH0sCiAgICAgeyAidmVyc2lvbiIsICd2JywgMCwgR19PUFRJ
T05fQVJHX05PTkUsICZwcmludFZlcnNpb24sICJQcmludCB0aGUgV2ViS2l0R1RLIHZlcnNpb24i
LCBOVUxMIH0sCiAgICAgeyBHX09QVElPTl9SRU1BSU5JTkcsIDAsIDAsIEdfT1BUSU9OX0FSR19G
SUxFTkFNRV9BUlJBWSwgJnVyaUFyZ3VtZW50cywgMCwgIltVUkzigKZdIiB9LAogICAgIHsgMCwg
MCwgMCwgMCwgMCwgMCwgMCB9CkBAIC02MzAsNiArNjMyLDcgQEAgc3RhdGljIHZvaWQgYWN0aXZh
dGUoR0FwcGxpY2F0aW9uICphcHBsaWNhdGlvbiwgV2ViS2l0U2V0dGluZ3MgKndlYmtpdFNldHRp
bmdzKQogI2lmICFHVEtfQ0hFQ0tfVkVSU0lPTigzLCA5OCwgMCkKICAgICAgICAgInVzZS1zeXN0
ZW0tYXBwZWFyYW5jZS1mb3Itc2Nyb2xsYmFycyIsIEZBTFNFLAogI2VuZGlmCisgICAgICAgICJ0
aW1lLXpvbmUtb3ZlcnJpZGUiLCB0aW1lWm9uZSwKICAgICAgICAgTlVMTCk7CiAgICAgZ19vYmpl
Y3RfdW5yZWYobWFuYWdlcik7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3dwZS9t
YWluLmNwcCBiL1Rvb2xzL01pbmlCcm93c2VyL3dwZS9tYWluLmNwcAppbmRleCA1MzQ4NmQyYjQw
MjJlZTg4MDA3ZWExZGVlMTFiOTVhYmYxZDJlNWU3Li43ODBmZTI4MTZkOGUyYzgyNzkwZjgzN2U5
NDVkMjJlY2I0YmQzNWY2IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci93cGUvbWFpbi5j
cHAKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvd3BlL21haW4uY3BwCkBAIC00NSw2ICs0NSw3IEBA
IHN0YXRpYyBjb25zdCBjaGFyKiBjb29raWVzRmlsZTsKIHN0YXRpYyBjb25zdCBjaGFyKiBjb29r
aWVzUG9saWN5Owogc3RhdGljIGNvbnN0IGNoYXIqIHByb3h5OwogY29uc3QgY2hhciogYmdDb2xv
cjsKK3N0YXRpYyBjaGFyKiB0aW1lWm9uZTsKIHN0YXRpYyBnYm9vbGVhbiBlbmFibGVJVFA7CiBz
dGF0aWMgZ2Jvb2xlYW4gcHJpbnRWZXJzaW9uOwogc3RhdGljIEdIYXNoVGFibGUqIG9wZW5WaWV3
czsKQEAgLTYyLDYgKzYzLDcgQEAgc3RhdGljIGNvbnN0IEdPcHRpb25FbnRyeSBjb21tYW5kTGlu
ZU9wdGlvbnNbXSA9CiAgICAgeyAiY29udGVudC1maWx0ZXIiLCAwLCAwLCBHX09QVElPTl9BUkdf
RklMRU5BTUUsICZjb250ZW50RmlsdGVyLCAiSlNPTiB3aXRoIGNvbnRlbnQgZmlsdGVyaW5nIHJ1
bGVzIiwgIkZJTEUiIH0sCiAgICAgeyAiYmctY29sb3IiLCAwLCAwLCBHX09QVElPTl9BUkdfU1RS
SU5HLCAmYmdDb2xvciwgIldpbmRvdyBiYWNrZ3JvdW5kIGNvbG9yLiBEZWZhdWx0OiB3aGl0ZSIs
ICJDT0xPUiIgfSwKICAgICB7ICJlbmFibGUtaXRwIiwgMCwgMCwgR19PUFRJT05fQVJHX05PTkUs
ICZlbmFibGVJVFAsICJFbmFibGUgSW50ZWxsaWdlbnQgVHJhY2tpbmcgUHJldmVudGlvbiAoSVRQ
KSIsIG51bGxwdHIgfSwKKyAgICB7ICJ0aW1lLXpvbmUiLCAndCcsIDAsIEdfT1BUSU9OX0FSR19T
VFJJTkcsICZ0aW1lWm9uZSwgIlNldCB0aW1lIHpvbmUiLCAiVElNRVpPTkUiIH0sCiAgICAgeyAi
dmVyc2lvbiIsICd2JywgMCwgR19PUFRJT05fQVJHX05PTkUsICZwcmludFZlcnNpb24sICJQcmlu
dCB0aGUgV1BFIHZlcnNpb24iLCBudWxscHRyIH0sCiAgICAgeyBHX09QVElPTl9SRU1BSU5JTkcs
IDAsIDAsIEdfT1BUSU9OX0FSR19GSUxFTkFNRV9BUlJBWSwgJnVyaUFyZ3VtZW50cywgbnVsbHB0
ciwgIltVUkxdIiB9LAogICAgIHsgbnVsbHB0ciwgMCwgMCwgR19PUFRJT05fQVJHX05PTkUsIG51
bGxwdHIsIG51bGxwdHIsIG51bGxwdHIgfQpAQCAtMjE4LDcgKzIyMCw3IEBAIGludCBtYWluKGlu
dCBhcmdjLCBjaGFyICphcmd2W10pCiAKICAgICBhdXRvKiBtYW5hZ2VyID0gKHByaXZhdGVNb2Rl
IHx8IGF1dG9tYXRpb25Nb2RlKSA/IHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9uZXdfZXBo
ZW1lcmFsKCkgOiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfbmV3KG51bGxwdHIpOwogICAg
IHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9zZXRfaXRwX2VuYWJsZWQobWFuYWdlciwgZW5h
YmxlSVRQKTsKLSAgICBhdXRvKiB3ZWJDb250ZXh0ID0gd2Via2l0X3dlYl9jb250ZXh0X25ld193
aXRoX3dlYnNpdGVfZGF0YV9tYW5hZ2VyKG1hbmFnZXIpOworICAgIGF1dG8qIHdlYkNvbnRleHQg
PSBXRUJLSVRfV0VCX0NPTlRFWFQoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9DT05URVhU
LCAid2Vic2l0ZS1kYXRhLW1hbmFnZXIiLCBtYW5hZ2VyLCAidGltZS16b25lLW92ZXJyaWRlIiwg
dGltZVpvbmUsIG51bGxwdHIpKTsKICAgICBnX29iamVjdF91bnJlZihtYW5hZ2VyKTsKIAogICAg
IGlmIChjb29raWVzUG9saWN5KSB7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDU0OWMzZTU4
OWVhZWYyZDJhNTMyYjNhYzVjZDc1MDY3ODRiMzk1MGEuLjJiMDdjOWUyNTBmYWE5MDBlYWZjMDE4
N2FhMTliOGIwYTYyMzY4MzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04MjgsNiArODI4
LDcgQEAKIAkJOTk4NEZBQ0UxQ0ZGQjA5MDAwOEQxOThDIC8qIGVkaXRhYmxlLWJvZHkuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTg0
RkFDRDFDRkZCMDM4MDA4RDE5OEMgLyogZWRpdGFibGUtYm9keS5odG1sICovOyB9OwogCQk5OTk5
MTA4QjFGMzkzQzk2MDA4QUQ0NTUgLyogQ29weWluZy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5OTkxMDhBMUYzOTNDOEIwMDhBRDQ1NSAvKiBDb3B5
aW5nLm1tICovOyB9OwogCQk5OUI0RjlDNjI0RURFRDk3MDAwMjJCODIgLyogV0tJbnNwZWN0b3JE
ZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDk5QjRGOUM1MjRFREVEOTYwMDAyMkI4MiAvKiBXS0luc3BlY3RvckRlbGVnYXRlLm1tICovOyB9
OworCQk5QTE4RTQxOTI0QjYxQkU4MDAwQkIzNTEgLyogVGltZVpvbmVPdmVycmlkZS5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlBMThFNDE3MjRCNjE1
RDkwMDBCQjM1MSAvKiBUaW1lWm9uZU92ZXJyaWRlLm1tICovOyB9OwogCQk5QjAyRTBENjIzNUZB
NDdEMDA0MDQ0QjIgLyogVGV4dE1hbmlwdWxhdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDJFMEQ1MjM1RkE0N0QwMDQwNDRCMiAvKiBUZXh0
TWFuaXB1bGF0aW9uLm1tICovOyB9OwogCQk5QjA3ODZBNTFDNTg4NUMzMDBEMTU5RTMgLyogSW5q
ZWN0ZWRCdW5kbGVNYWtlQWxsU2hhZG93Um9vdHNPcGVuX0J1bmRsZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjA3ODZBNDFDNTg4NUMzMDBEMTU5
RTMgLyogSW5qZWN0ZWRCdW5kbGVNYWtlQWxsU2hhZG93Um9vdHNPcGVuX0J1bmRsZS5jcHAgKi87
IH07CiAJCTlCMEMwNTE5MjRGREZCN0QwMEYyRkUzMSAvKiBDb21wYWN0VW5pcXVlUHRyVHVwbGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwQzA1
MTgyNEZERkI3MDAwRjJGRTMxIC8qIENvbXBhY3RVbmlxdWVQdHJUdXBsZS5jcHAgKi87IH07CkBA
IC0yNDI1LDYgKzI0MjYsNyBAQAogCQk5OTg0RkFDRDFDRkZCMDM4MDA4RDE5OEMgLyogZWRpdGFi
bGUtYm9keS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImVkaXRhYmxlLWJvZHku
aHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5OTkxMDhBMUYzOTNDOEIwMDhB
RDQ1NSAvKiBDb3B5aW5nLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gQ29weWluZy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTlCNEY5QzUyNEVE
RUQ5NjAwMDIyQjgyIC8qIFdLSW5zcGVjdG9yRGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS0luc3BlY3RvckRlbGVnYXRlLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk5QTE4RTQxNzI0QjYxNUQ5MDAwQkIzNTEgLyogVGltZVpvbmVP
dmVycmlkZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRpbWVa
b25lT3ZlcnJpZGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMDJFMEQ1MjM1
RkE0N0QwMDQwNDRCMiAvKiBUZXh0TWFuaXB1bGF0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gVGV4dE1hbmlwdWxhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIw
Nzg2QTIxQzU4ODMwRjAwRDE1OUUzIC8qIEluamVjdGVkQnVuZGxlTWFrZUFsbFNoYWRvd1Jvb3Rz
T3Blbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZEJ1
bmRsZU1ha2VBbGxTaGFkb3dSb290c09wZW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5QjA3ODZBNDFDNTg4NUMzMDBEMTU5RTMgLyogSW5qZWN0ZWRCdW5kbGVNYWtlQWxsU2hh
ZG93Um9vdHNPcGVuX0J1bmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBJbmplY3RlZEJ1bmRsZU1ha2VBbGxTaGFkb3dSb290c09wZW5fQnVuZGxlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMzNDgsNiArMzM1MCw3IEBACiAJCQkJOUIwMkUw
RDUyMzVGQTQ3RDAwNDA0NEIyIC8qIFRleHRNYW5pcHVsYXRpb24ubW0gKi8sCiAJCQkJNUMxNkY4
RkIyMzBDOTQyQjAwNzRDNEE4IC8qIFRleHRTaXplLm1tICovLAogCQkJCUMyMkZBMzJBMjI4Rjg3
MDgwMDlENzk4OCAvKiBUZXh0V2lkdGgubW0gKi8sCisJCQkJOUExOEU0MTcyNEI2MTVEOTAwMEJC
MzUxIC8qIFRpbWVab25lT3ZlcnJpZGUubW0gKi8sCiAJCQkJNUM3M0E4MUEyMzIzMDU5ODAwREVB
ODVBIC8qIFRMU0RlcHJlY2F0aW9uLm1tICovLAogCQkJCUNERTE5NUIzMUNGRTBBREUwMDUzRDI1
NiAvKiBUb3BDb250ZW50SW5zZXQubW0gKi8sCiAJCQkJNUNCNDBCNEQxRjRCOThCRTAwN0RDN0I5
IC8qIFVJRGVsZWdhdGUubW0gKi8sCkBAIC01NDE3LDYgKzU0MjAsNyBAQAogCQkJCTVDMTZGOEZD
MjMwQzk0MzcwMDc0QzRBOCAvKiBUZXh0U2l6ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUMyMkZB
MzJCMjI4Rjg3MDgwMDlENzk4OCAvKiBUZXh0V2lkdGgubW0gaW4gU291cmNlcyAqLywKIAkJCQk3
Q0NFN0VERDFBNDExQTkyMDA0NDdDNEMgLyogVGltZVJhbmdlcy5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk5QTE4RTQxOTI0QjYxQkU4MDAwQkIzNTEgLyogVGltZVpvbmVPdmVycmlkZS5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTdDODNFMEJEMUQwQTY1MEMwMEZFQkNGMyAvKiBUb3BDb250ZW50SW5z
ZXQubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VEMzFBNDExQTdFMDA0NDdDNEMgLyogVHlw
aW5nU3R5bGVDcmFzaC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTU3MTUyQjc4MjFERDRFOEQwMDBD
MzdDQSAvKiBVMmZDb21tYW5kQ29uc3RydWN0b3JUZXN0LmNwcCBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UaW1lWm9uZU92
ZXJyaWRlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UaW1lWm9u
ZU92ZXJyaWRlLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJlNzhlM2EzZjZiNmQzMDkyOTMxMWU3MWJhMTQ5YmVm
YTIxODY4MzIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1RpbWVab25lT3ZlcnJpZGUubW0KQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcu
aCIKKworI2lmIFBMQVRGT1JNKE1BQykKKworI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIK
KyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdDb25m
aWd1cmF0aW9uUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4K
KyNpbXBvcnQgPHd0Zi9GdW5jdGlvbi5oPgorI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CisKK2NsYXNzIFRpbWVab25lT3ZlcnJpZGVUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3Qgewor
cHVibGljOgorICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgX2NvbmZp
Z3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0p
OworICAgICAgICBbX2NvbmZpZ3VyYXRpb24gX3NldFRpbWVab25lT3ZlcnJpZGU6QCJFdXJvcGUv
QmVybGluIl07CisKKyAgICAgICAgX3dlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDMwMCwgMzAwKSBjb25maWd1cmF0
aW9uOl9jb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgfQorCisgICAgdm9pZCBydW5TY3JpcHRB
bmRFeGVjdXRlQ2FsbGJhY2soY29uc3QgU3RyaW5nJiBzY3JpcHQsIEZ1bmN0aW9uPHZvaWQoaWQp
PiYmIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgYm9vbCBjb21wbGV0ZSA9IGZhbHNlOworICAg
ICAgICBbX3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OnNjcmlwdCBjb21wbGV0aW9uSGFuZGxl
cjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqKSB7CisgICAgICAgICAgICBjYWxsYmFjayhyZXN1
bHQpOworICAgICAgICAgICAgY29tcGxldGUgPSB0cnVlOworICAgICAgICB9XTsKKyAgICAgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZjb21wbGV0ZSk7CisgICAgfQorCitwcml2YXRlOgor
ICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBfY29uZmlndXJhdGlvbjsKKyAg
ICBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gX3dlYlZpZXc7Cit9OworCitURVNUX0YoVGltZVpv
bmVPdmVycmlkZVRlc3QsIFRpbWVab25lT3ZlcnJpZGUpCit7CisgICAgcnVuU2NyaXB0QW5kRXhl
Y3V0ZUNhbGxiYWNrKCJsZXQgbm93ID0gbmV3IERhdGUoKTsgbm93LmdldFRpbWV6b25lT2Zmc2V0
KCkiLCBbXShpZCByZXN1bHQpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKFtyZXN1bHQgc3Ry
aW5nVmFsdWVdLCAiLTEyMCIpOworICAgIH0pOworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViQ29udGV4dC5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYkNv
bnRleHQuY3BwCmluZGV4IGIwODJjNWJiNmJhYjAxMjQ4YTYxMzhiY2M0Y2U0NmRmODVjNmU5YjQu
Ljc4ODlmMWZiMGEwNmUzYTI1MGE1Yjg5ZjlmOWRjNmI3NDk0NzRmYTggMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViQ29udGV4dC5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRX
ZWJDb250ZXh0LmNwcApAQCAtMzg2LDYgKzM4NiwyNiBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViQ29u
dGV4dExhbmd1YWdlcyhXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBnX2Fz
c2VydF9lcnJvcihlcnJvci5nZXQoKSwgV0VCS0lUX0pBVkFTQ1JJUFRfRVJST1IsIFdFQktJVF9K
QVZBU0NSSVBUX0VSUk9SX1NDUklQVF9GQUlMRUQpOwogfQogCisKK3N0YXRpYyB2b2lkIHRlc3RX
ZWJDb250ZXh0VGltZVpvbmVPdmVycmlkZShXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRl
cikKK3sKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CisgICAgV2ViS2l0SmF2YXNj
cmlwdFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0
VW50aWxGaW5pc2hlZCgibGV0IG5vdyA9IG5ldyBEYXRlKCk7IG5vdy5nZXRUaW1lem9uZU9mZnNl
dCgpIiwgJmVycm9yLm91dFB0cigpKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGphdmFzY3JpcHRS
ZXN1bHQpOworICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKKyAgICAvLyBCeSBk
ZWZhdWx0IHRoZSB0ZXN0IGhhcm5lc3MgdXNlcyB0aGUgUGFjaWZpYy9Mb3NfQW5nZWxlcyB0aW1l
em9uZSB3aGljaCBpcyArNyBob3VycyAoNDIwIG1pbnV0ZXMpIGNvbXBhcmVkIHRvIEdNVC4KKyAg
ICBnX2Fzc2VydF9jbXBpbnQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb051bWJlcihq
YXZhc2NyaXB0UmVzdWx0KSwgPT0sIDQyMCk7CisKKyAgICAvLyBDcmVhdGUgYSBuZXcgY29udGV4
dCBjb25maWd1cmVkIHdpdGggdGltZSB6b25lIG92ZXJpZGUgc2V0IHRvIEJlcmxpbiB3aGljaCBp
cyAxMjAgbWludXRlcyBhaGVhZCBvZiB0aGUgR01UIG9mZnNldC4KKyAgICBhdXRvIHdlYkNvbnRl
eHQgPSBhZG9wdEdSZWYoV0VCS0lUX1dFQl9DT05URVhUKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQ
RV9XRUJfQ09OVEVYVCwKKyAgICAgICAgInRpbWUtem9uZS1vdmVycmlkZSIsICJFdXJvcGUvQmVy
bGluIiwgbnVsbHB0cikpKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBUZXN0OjphZG9wdFZpZXcoVGVz
dDo6Y3JlYXRlV2ViVmlldyh3ZWJDb250ZXh0LmdldCgpKSk7CisgICAgamF2YXNjcmlwdFJlc3Vs
dCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgibGV0IG5vdyA9IG5l
dyBEYXRlKCk7IG5vdy5nZXRUaW1lem9uZU9mZnNldCgpIiwgJmVycm9yLm91dFB0cigpLCB3ZWJW
aWV3LmdldCgpKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGphdmFzY3JpcHRSZXN1bHQpOworICAg
IGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoV2Vi
Vmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb051bWJlcihqYXZhc2NyaXB0UmVzdWx0KSwgPT0s
IC0xMjApOworfQorCiBzdGF0aWMgdm9pZCBzZXJ2ZXJDYWxsYmFjayhTb3VwU2VydmVyKiBzZXJ2
ZXIsIFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBjb25zdCBjaGFyKiBwYXRoLCBHSGFzaFRhYmxlKiwg
U291cENsaWVudENvbnRleHQqLCBncG9pbnRlcikKIHsKICAgICBpZiAobWVzc2FnZS0+bWV0aG9k
ICE9IFNPVVBfTUVUSE9EX0dFVCkgewpAQCAtNzY1LDYgKzc4NSw3IEBAIHZvaWQgYmVmb3JlQWxs
KCkKICAgICBTZWN1cml0eVBvbGljeVRlc3Q6OmFkZCgiV2ViS2l0U2VjdXJpdHlNYW5hZ2VyIiwg
InNlY3VyaXR5LXBvbGljeSIsIHRlc3RXZWJDb250ZXh0U2VjdXJpdHlQb2xpY3kpOwogICAgIFdl
YlZpZXdUZXN0OjphZGQoIldlYktpdFNlY3VyaXR5TWFuYWdlciIsICJmaWxlLXhociIsIHRlc3RX
ZWJDb250ZXh0U2VjdXJpdHlGaWxlWEhSKTsKICAgICBQcm94eVRlc3Q6OmFkZCgiV2ViS2l0V2Vi
Q29udGV4dCIsICJwcm94eSIsIHRlc3RXZWJDb250ZXh0UHJveHlTZXR0aW5ncyk7CisgICAgV2Vi
Vmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViQ29udGV4dCIsICJ0aW1lem9uZSIsIHRlc3RXZWJDb250
ZXh0VGltZVpvbmVPdmVycmlkZSk7CiB9CiAKIHZvaWQgYWZ0ZXJBbGwoKQpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvVGVzdE1haW4uY3BwIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvVGVzdE1haW4uY3BwCmluZGV4IGZhNWJlMTYy
NzJkYzI2NWFhMzk1NjIwYjE2OTEyNjdlYmFjOWQ5MzUuLjVlYTM2NWVhMDY1NTZhZTc0ODFiYmRh
N2Y0YjY0NTM2ZTk3Njc4YTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9X
ZWJLaXRHTGliL1Rlc3RNYWluLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2Vi
S2l0R0xpYi9UZXN0TWFpbi5jcHAKQEAgLTEyOSw2ICsxMjksNyBAQCBpbnQgbWFpbihpbnQgYXJn
YywgY2hhcioqIGFyZ3YpCiAgICAgZ19zZXRlbnYoIkdTRVRUSU5HU19CQUNLRU5EIiwgIm1lbW9y
eSIsIFRSVUUpOwogICAgIC8vIEdldCByaWQgb2YgcnVudGltZSB3YXJuaW5ncyBhYm91dCBkZXBy
ZWNhdGVkIHByb3BlcnRpZXMgYW5kIHNpZ25hbHMsIHNpbmNlIHRoZXkgYnJlYWsgdGhlIHRlc3Rz
LgogICAgIGdfc2V0ZW52KCJHX0VOQUJMRV9ESUFHTk9TVElDIiwgIjAiLCBUUlVFKTsKKyAgICBn
X3NldGVudigiVFoiLCAiQW1lcmljYS9Mb3NfQW5nZWxlcyIsIFRSVUUpOwogICAgIGdfdGVzdF9i
dWdfYmFzZSgiaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvIik7CiAKICAgICByZWdpc3RlckdSZXNv
dXJjZSgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIv
V2ViVmlld1Rlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2Vi
Vmlld1Rlc3QuY3BwCmluZGV4IDdhMTNlYjhmODQwMmRmMDUxN2FmMDY4ZDkxZDJhZmNkMDlkZTk2
NDYuLjMxOGNkZTk4MzBhYWU0YjEyNDNlMmY5YTAyNWIzNDY3ZjYwZmFiMjUgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmNwcAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5jcHAKQEAg
LTI4Miw5ICsyODIsOSBAQCBjb25zdCBjaGFyKiBXZWJWaWV3VGVzdDo6bWFpblJlc291cmNlRGF0
YShzaXplX3QmIG1haW5SZXNvdXJjZURhdGFTaXplKQogICAgIHJldHVybiBtX3Jlc291cmNlRGF0
YS5nZXQoKTsKIH0KIAotc3RhdGljIHZvaWQgcnVuSmF2YVNjcmlwdFJlYWR5Q2FsbGJhY2soR09i
amVjdCosIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBXZWJWaWV3VGVzdCogdGVzdCkKK3N0YXRpYyB2
b2lkIHJ1bkphdmFTY3JpcHRSZWFkeUNhbGxiYWNrKEdPYmplY3QqIG9iamVjdCwgR0FzeW5jUmVz
dWx0KiByZXN1bHQsIFdlYlZpZXdUZXN0KiB0ZXN0KQogewotICAgIHRlc3QtPm1famF2YXNjcmlw
dFJlc3VsdCA9IHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlwdF9maW5pc2godGVzdC0+bV93
ZWJWaWV3LCByZXN1bHQsIHRlc3QtPm1famF2YXNjcmlwdEVycm9yKTsKKyAgICB0ZXN0LT5tX2ph
dmFzY3JpcHRSZXN1bHQgPSB3ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFzY3JpcHRfZmluaXNoKFdF
QktJVF9XRUJfVklFVyhvYmplY3QpLCByZXN1bHQsIHRlc3QtPm1famF2YXNjcmlwdEVycm9yKTsK
ICAgICBnX21haW5fbG9vcF9xdWl0KHRlc3QtPm1fbWFpbkxvb3ApOwogfQogCkBAIC0zMDAsMTMg
KzMwMCwxNSBAQCBzdGF0aWMgdm9pZCBydW5KYXZhU2NyaXB0SW5Xb3JsZFJlYWR5Q2FsbGJhY2so
R09iamVjdCosIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBXZQogICAgIGdfbWFpbl9sb29wX3F1aXQo
dGVzdC0+bV9tYWluTG9vcCk7CiB9CiAKLVdlYktpdEphdmFzY3JpcHRSZXN1bHQqIFdlYlZpZXdU
ZXN0OjpydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoY29uc3QgY2hhciogamF2YXNj
cmlwdCwgR0Vycm9yKiogZXJyb3IpCitXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBXZWJWaWV3VGVz
dDo6cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKGNvbnN0IGNoYXIqIGphdmFzY3Jp
cHQsIEdFcnJvcioqIGVycm9yLCBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewogICAgIGlmICht
X2phdmFzY3JpcHRSZXN1bHQpCiAgICAgICAgIHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF91bnJl
ZihtX2phdmFzY3JpcHRSZXN1bHQpOwogICAgIG1famF2YXNjcmlwdFJlc3VsdCA9IDA7CiAgICAg
bV9qYXZhc2NyaXB0RXJyb3IgPSBlcnJvcjsKLSAgICB3ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFz
Y3JpcHQobV93ZWJWaWV3LCBqYXZhc2NyaXB0LCAwLCByZWludGVycHJldF9jYXN0PEdBc3luY1Jl
YWR5Q2FsbGJhY2s+KHJ1bkphdmFTY3JpcHRSZWFkeUNhbGxiYWNrKSwgdGhpcyk7CisgICAgaWYg
KCF3ZWJWaWV3KQorICAgICAgICB3ZWJWaWV3ID0gbV93ZWJWaWV3OworICAgIHdlYmtpdF93ZWJf
dmlld19ydW5famF2YXNjcmlwdCh3ZWJWaWV3LCBqYXZhc2NyaXB0LCAwLCByZWludGVycHJldF9j
YXN0PEdBc3luY1JlYWR5Q2FsbGJhY2s+KHJ1bkphdmFTY3JpcHRSZWFkeUNhbGxiYWNrKSwgdGhp
cyk7CiAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOwogCiAgICAgcmV0dXJuIG1famF2
YXNjcmlwdFJlc3VsdDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJL
aXRHTGliL1dlYlZpZXdUZXN0LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xp
Yi9XZWJWaWV3VGVzdC5oCmluZGV4IDcwZDc5MzdhOGFiNWViYTFlZTA0MTRmZTU3MjFlNDRjMTdk
M2U5MjUuLjQ5ZGVjNTNhOGI2MWI5NzU5OTJjNGVkMDY3MTZlZDk2N2QwZTMxMzQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmgKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuaApAQCAt
NzEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbWl0UG9wdXBNZW51U2lnbmFsKCk7CiAj
ZW5kaWYKIAotICAgIFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIHJ1bkphdmFTY3JpcHRBbmRXYWl0
VW50aWxGaW5pc2hlZChjb25zdCBjaGFyKiBqYXZhc2NyaXB0LCBHRXJyb3IqKik7CisgICAgV2Vi
S2l0SmF2YXNjcmlwdFJlc3VsdCogcnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKGNv
bnN0IGNoYXIqIGphdmFzY3JpcHQsIEdFcnJvcioqLCBXZWJLaXRXZWJWaWV3KiA9IG51bGxwdHIp
OwogICAgIFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIHJ1bkphdmFTY3JpcHRGcm9tR1Jlc291cmNl
QW5kV2FpdFVudGlsRmluaXNoZWQoY29uc3QgY2hhciogcmVzb3VyY2UsIEdFcnJvcioqKTsKICAg
ICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBydW5KYXZhU2NyaXB0SW5Xb3JsZEFuZFdhaXRVbnRp
bEZpbmlzaGVkKGNvbnN0IGNoYXIqIGphdmFzY3JpcHQsIGNvbnN0IGNoYXIqIHdvcmxkLCBHRXJy
b3IqKik7CiAgICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogcnVuSmF2YVNjcmlwdFdpdGhvdXRG
b3JjZWRVc2VyR2VzdHVyZXNBbmRXYWl0VW50aWxGaW5pc2hlZChjb25zdCBjaGFyKiBqYXZhc2Ny
aXB0LCBHRXJyb3IqKik7CmRpZmYgLS1naXQgYS9Ub29scy9mbGF0cGFrL2ZsYXRwYWt1dGlscy5w
eSBiL1Rvb2xzL2ZsYXRwYWsvZmxhdHBha3V0aWxzLnB5CmluZGV4IDViMTZkNDQzMDQyOWY2MDFi
NWYzNjljNGNhM2Q2ZjNkYzIxYzMyODYuLjNhN2YxMTM3YmI5ZTliNzU3NGQwNDRmNjgyMWJiNWYz
ODM5YTAzZjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2ZsYXRwYWsvZmxhdHBha3V0aWxzLnB5CisrKyBi
L1Rvb2xzL2ZsYXRwYWsvZmxhdHBha3V0aWxzLnB5CkBAIC03MTksNyArNzE5LDcgQEAgY2xhc3Mg
V2Via2l0RmxhdHBhazoKICAgICAgICAgICAgIF0pCiAKICAgICAgICAgICAgIHNhbmRib3hfZW52
aXJvbm1lbnQudXBkYXRlKHsKLSAgICAgICAgICAgICAgICAiVFoiOiAiUFNUOFBEVCIsCisgICAg
ICAgICAgICAgICAgIlRaIjogIkFtZXJpY2EvTG9zX0FuZ2VsZXMiLAogICAgICAgICAgICAgfSkK
IAogICAgICAgICBlbnZfdmFyX3ByZWZpeGVzX3RvX2tlZXAgPSBbCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409036</attachid>
            <date>2020-09-17 08:44:29 -0700</date>
            <delta_ts>2020-10-16 01:17:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213884-20200917084427.patch</filename>
            <type>text/plain</type>
            <size>47428</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3MTg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
ZjRlNTE1MThiN2U5N2Q2YTNlODVmYmYwOTExYTg4NjdlZjIxMzVlLi44NDAzMWNlYzIzYjk4MjRm
MDA3ZjQyMGZjZWNmODNjNTc0YTA5NTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAyMC0wNy0xNyAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxp
YS5jb20+IGFuZCBQYXZlbCBGZWxkbWFuIDxwYXZlbC5mZWxkbWFuQGdtYWlsLmNvbT4KKworICAg
ICAgICBbV0syXSBBZGQgQVBJIHRvIGFsbG93IGVtYmVkZGVyIHRvIHNldCBhIHRpbWV6b25lIG92
ZXJyaWRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTM4ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHJ1bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwOgorICAgICAgICAoSlNDOjpmb3JtYXREYXRlVGlt
ZSk6IEZvcm1hdCB0aGUgb3ZlcnJpZGRlbiB0aW1lem9uZSBpZiBpdCdzIGVuYWJsZWQuCisgICAg
ICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwOgorICAgICAgICAoSlNDOjpkZWZh
dWx0VGltZVpvbmUpOiBSZXR1cm4gdGhlIG92ZXJyaWRkZW4gdGltZXpvbmUgaWYgaXQncyBlbmFi
bGVkLgorCiAyMDIwLTA5LTE3ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAK
ICAgICAgICAgU3VwcG9ydCBleHBvcnQgbmFtZXNwYWNlIGBleHBvcnQgKiBhcyBuc2AKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXgg
MzM3MmNiOTY3M2U3MzllMDIzOWY2MDc4ZDJjNjJlNDNlZTVhMWVkOS4uZjk1YzZiOTQzY2Y4NTEw
YjRiMjAyMWZkNzE4YTlmNDg1ZjE0ZGQ4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMC0wNy0x
NyAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+IGFuZCBQYXZlbCBGZWxk
bWFuIDxwYXZlbC5mZWxkbWFuQGdtYWlsLmNvbT4KKworICAgICAgICBbV0syXSBBZGQgQVBJIHRv
IGFsbG93IGVtYmVkZGVyIHRvIHNldCBhIHRpbWV6b25lIG92ZXJyaWRlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM4ODQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9EYXRlTWF0aC5jcHA6IEFk
ZCBuZXcgQVBJcyB0byBjb250cm9sIGFuZCBxdWVyeSB0aGUgdGltZXpvbmUgb3ZlcnJpZGUuCisg
ICAgICAgIChXVEY6OmlubmVyVGltZVpvbmVPdmVycmlkZSk6IFN0YXRpYyBzdG9yYWdlIG9mIHRo
ZSBvdmVycmlkZSBpbmZvcm1hdGlvbnMuCisgICAgICAgIChXVEY6OmNhbGN1bGF0ZUxvY2FsVGlt
ZU9mZnNldCk6IENhbGN1bGF0ZSBvZmZzZXQgZm9yIG92ZXJyaWRkZW4gdGltZXpvbmUsIGlmIGl0
J3MgcHJlc2VudC4KKyAgICAgICAgKFdURjo6aXNUaW1lWm9uZVZhbGlkKTogTmV3IGZ1bmN0aW9u
IGFsbG93aW5nIHRvIGNoZWNrIGlmIGEgdGltZXpvbmUgaWRlbnRpZmllciBpcyB2YWxpZCBhY2Nv
cmRpbmcgdG8gSUNVJ3MgZGF0YWJhc2UuCisgICAgICAgIChXVEY6OnNldFRpbWVab25lT3ZlcnJp
ZGUpOiBOZXcgQVBJIHRvIHNldCB0aGUgdGltZXpvbmUgb3ZlcnJpZGUsIHRoaXMgaXMgbWVhbnQg
dG8gYmUKKyAgICAgICAgdXNlZCBvbiBuZXdseSBjcmVhdGVkIFdlYlByb2Nlc3Nlcy4KKyAgICAg
ICAgKFdURjo6dGltZVpvbmVPdmVycmlkZSk6UXVlcnkgdGhlIHRpbWV6b25lIG92ZXJyaWRlLgor
ICAgICAgICAoV1RGOjp0aW1lWm9uZURpc3BsYXlOYW1lT3ZlcnJpZGUpOiBHZXQgdGhlIHRpbWV6
b25lIG5hbWUgb2YgdGhlIG92ZXJyaWRkZW4gdGltZXpvbmUuCisgICAgICAgICogd3RmL0RhdGVN
YXRoLmg6CisKIDIwMjAtMDktMTYgIFN0ZXBoYW4gU3phYm8gIDxzdGVwaGFuLnN6YWJvQHNvbnku
Y29tPgogCiAgICAgICAgIFJlbW92ZSBFTkFCTEVfTUVURVJfRUxFTUVOVApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAz
OGU0YmY0ZTIyYTZhOWE3YWQ2NDdhOWU3YzUxODU2ZmNhMjFkYWVhLi5jYWIwYmY5NTUyNDlhZjZi
MzkzYTc4MzE2Yjk2MmFlNjY3NmZlYzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIw
LTA3LTE3ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAg
ICBbV0syXSBBZGQgQVBJIHRvIGFsbG93IGVtYmVkZGVyIHRvIHNldCBhIHRpbWV6b25lIG92ZXJy
aWRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM4
ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHBhdGNoIGFkZHM6CisKKyAgICAgICAgLSBuZXcgQ29jb2EgQVBJCisgICAgICAgIC0gbmV3IEds
aWIgQVBJICh0YXJnZXR0aW5nIGJvdGggV1BFIGFuZCBHVEsgcG9ydHMpCisgICAgICAgIC0gbmV3
IEMgQVBJIChmb3IgdGhlIHdpbiBwb3J0KQorCisgICAgICAgIHRoYXQgYWxsb3dzIHRoZSBlbWJl
ZGRlciB0byBzZXQgYSB0aW1lem9uZSBvdmVycmlkZSBmb3IgdGhlIHVuZGVybHlpbmcgUGFnZUNv
bmZpZ3VyYXRpb24uCisgICAgICAgIFNpbmNlIHRoaXMgQVBJIGlzIG5vdCBleHBvc2VkIGluIGds
aWIgcG9ydHMsIGEgbmV3IGNvbnRydWN0LXRpbWUtb25seSBwcm9wZXJ0eSB3YXMgYWRkZWQgdG8K
KyAgICAgICAgdGhlIFdlYktpdFdlYkNvbnRleHQgQVBJLiBJdCB3b3VsZCBhbHNvIGFsbG93IGZp
bmUtZ3JhaW5lZCBjb250cm9sIG92ZXIgbXVsdGlwbGUgcGFnZXMsIGZvcgorICAgICAgICBpbnN0
YW5jZSBpdCdzIG5vdCBwb3NzaWJsZSBjdXJyZW50bHkgdG8gaGF2ZSB0d28gcGFnZXMgaW4gZGlm
ZmVyZW50IHRpbWV6b25lcy4KKworICAgICAgICBObyBuZXcgbGF5b3V0IHRlc3RzLCB0aGlzIGNo
YW5nZSBpcyBjb3ZlcmVkIGJ5IG5ldyBBUEkgdGVzdHMuCisKKyAgICAgICAgKiBTaGFyZWQvV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1
cmF0aW9uLmNwcDoKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OmNvcHkgY29uc3Qp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaDoKKyAgICAg
ICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OnNldFRpbWVab25lT3ZlcnJpZGUpOgorICAgICAg
ICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6dGltZVpvbmVPdmVycmlkZSBjb25zdCk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tOgorICAg
ICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90aW1lWm9uZU92ZXJyaWRlXSk6CisgICAg
ICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3NldFRpbWVab25lT3ZlcnJpZGU6XSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0
ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcDoK
KyAgICAgICAgKHdlYmtpdFdlYkNvbnRleHRHZXRQcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRX
ZWJDb250ZXh0U2V0UHJvcGVydHkpOgorICAgICAgICAod2Via2l0X3dlYl9jb250ZXh0X2NsYXNz
X2luaXQpOgorICAgICAgICAod2Via2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9saW1pdHNOYXZpZ2F0aW9u
c1RvQXBwQm91bmREb21haW5zKToKKwogMjAyMC0wOS0xNyAgSmVyIE5vYmxlICA8amVyLm5vYmxl
QGFwcGxlLmNvbT4KIAogICAgICAgICBVbmlmaWVkIGJ1aWxkIGZpeCBmb3IgInJlZGVmaW5pdGlv
biBvZiAna0NNVmlkZW9Db2RlY1R5cGVfVlA5IgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwCmluZGV4IDk1NTc1NmJhNDA1ZjQwMDk3MDYxMGY5
YTY4YzdlZDQyYTY3Y2IwMTUuLmViYzUzNGNiNDg1NDI5MDlhNjM1OTc5OTZmZmY5MTU0NTE3OGZl
NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb252ZXJz
aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29udmVyc2lv
bi5jcHAKQEAgLTEwMCwxNyArMTAwLDI0IEBAIFN0cmluZyBmb3JtYXREYXRlVGltZShjb25zdCBH
cmVnb3JpYW5EYXRlVGltZSYgdCwgRGF0ZVRpbWVGb3JtYXQgZm9ybWF0LCBib29sIGFzCiAgICAg
ICAgICAgICBhcHBlbmROdW1iZXI8Mj4oYnVpbGRlciwgb2Zmc2V0IC8gNjApOwogICAgICAgICAg
ICAgYXBwZW5kTnVtYmVyPDI+KGJ1aWxkZXIsIG9mZnNldCAlIDYwKTsKIAorICAgICAgICAgICAg
U3RyaW5nIHRpbWVab25lTmFtZTsKKyAgICAgICAgICAgIFN0cmluZyB0aW1lWm9uZU92ZXJyaWRl
ID0gV1RGOjp0aW1lWm9uZURpc3BsYXlOYW1lT3ZlcnJpZGUoKTsKKyAgICAgICAgICAgIGlmICgh
dGltZVpvbmVPdmVycmlkZS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgdGltZVpvbmVOYW1l
ID0gdGltZVpvbmVPdmVycmlkZTsKKyAgICAgICAgICAgIGVsc2UgewogI2lmIE9TKFdJTkRPV1Mp
Ci0gICAgICAgICAgICBUSU1FX1pPTkVfSU5GT1JNQVRJT04gdGltZVpvbmVJbmZvcm1hdGlvbjsK
LSAgICAgICAgICAgIEdldFRpbWVab25lSW5mb3JtYXRpb24oJnRpbWVab25lSW5mb3JtYXRpb24p
OwotICAgICAgICAgICAgY29uc3QgV0NIQVIqIHdpblRpbWVab25lTmFtZSA9IHQuaXNEU1QoKSA/
IHRpbWVab25lSW5mb3JtYXRpb24uRGF5bGlnaHROYW1lIDogdGltZVpvbmVJbmZvcm1hdGlvbi5T
dGFuZGFyZE5hbWU7Ci0gICAgICAgICAgICBTdHJpbmcgdGltZVpvbmVOYW1lKHdpblRpbWVab25l
TmFtZSk7CisgICAgICAgICAgICAgICAgVElNRV9aT05FX0lORk9STUFUSU9OIHRpbWVab25lSW5m
b3JtYXRpb247CisgICAgICAgICAgICAgICAgR2V0VGltZVpvbmVJbmZvcm1hdGlvbigmdGltZVpv
bmVJbmZvcm1hdGlvbik7CisgICAgICAgICAgICAgICAgY29uc3QgV0NIQVIqIHdpblRpbWVab25l
TmFtZSA9IHQuaXNEU1QoKSA/IHRpbWVab25lSW5mb3JtYXRpb24uRGF5bGlnaHROYW1lIDogdGlt
ZVpvbmVJbmZvcm1hdGlvbi5TdGFuZGFyZE5hbWU7CisgICAgICAgICAgICAgICAgdGltZVpvbmVO
YW1lID0gU3RyaW5nKHdpblRpbWVab25lTmFtZSk7CiAjZWxzZQotICAgICAgICAgICAgc3RydWN0
IHRtIGd0bSA9IHQ7Ci0gICAgICAgICAgICBjaGFyIHRpbWVab25lTmFtZVs3MF07Ci0gICAgICAg
ICAgICBzdHJmdGltZSh0aW1lWm9uZU5hbWUsIHNpemVvZih0aW1lWm9uZU5hbWUpLCAiJVoiLCAm
Z3RtKTsKKyAgICAgICAgICAgICAgICBzdHJ1Y3QgdG0gZ3RtID0gdDsKKyAgICAgICAgICAgICAg
ICBjaGFyIHR6TmFtZVs3MF07CisgICAgICAgICAgICAgICAgc3RyZnRpbWUodHpOYW1lLCBzaXpl
b2YodHpOYW1lKSwgIiVaIiwgJmd0bSk7CisgICAgICAgICAgICAgICAgdGltZVpvbmVOYW1lID0g
U3RyaW5nKHR6TmFtZSk7CiAjZW5kaWYKLSAgICAgICAgICAgIGlmICh0aW1lWm9uZU5hbWVbMF0p
IHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghdGltZVpvbmVOYW1lLmlzRW1wdHko
KSkgewogICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiICgiKTsKICAgICAg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZCh0aW1lWm9uZU5hbWUpOwogICAgICAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCcpJyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcAppbmRleCBmNTFjYjAyZWU4OGQ4NmM5OTdhMjMz
MmM1Y2MwZDAxYjQ2NDFiZTFjLi5mNWZhOTc0NGZjNTVlNGZjZjkwNWExZmY0NDAzMDIwZDg4NmU1
YzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRp
bWVGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRl
VGltZUZvcm1hdC5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1
Y3Rvci5oIgogI2luY2x1ZGUgPHVuaWNvZGUvdWNhbC5oPgogI2luY2x1ZGUgPHVuaWNvZGUvdWVu
dW0uaD4KKyNpbmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvaWN1L0lDVUhlbHBlcnMuaD4KIApA
QCAtOTMsNiArOTQsMTAgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBpc1VUQ0VxdWl2YWxl
bnQoU3RyaW5nVmlldyB0aW1lWm9uZSkKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMt
ZGVmYXVsdHRpbWV6b25lCiBzdGF0aWMgU3RyaW5nIGRlZmF1bHRUaW1lWm9uZSgpCiB7CisgICAg
U3RyaW5nIHR6ID0gV1RGOjp0aW1lWm9uZU92ZXJyaWRlKCk7CisgICAgaWYgKCF0ei5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybiB0ejsKKwogICAgIFN0cmluZyBjYW5vbmljYWw7CiAKICAgICBW
ZWN0b3I8VUNoYXIsIDMyPiBidWZmZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9EYXRl
TWF0aC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5jcHAKaW5kZXggYWY5MmY2NzQ3NzAz
NDljYzhlN2JlOWE1M2IxY2VlNmU3ODQwZTc4MS4uYzFjNmQ3NzIzMTEzNDY4ODQwYWQxYzhlMDlj
MmM1NWYxNzRmMDQ4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRGF0ZU1hdGguY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmNwcApAQCAtNzYsOSArNzYsMTQgQEAKICNpbmNs
dWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8dGltZS5oPgorI2lu
Y2x1ZGUgPHVuaWNvZGUvdWNhbC5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5j
bHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KKyNpbmNsdWRlIDx3dGYvTGFuZ3VhZ2UuaD4KKyNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU3BlY2lmaWMu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3Vu
aWNvZGUvVVRGOENvbnZlcnNpb24uaD4KIAogI2lmIE9TKFdJTkRPV1MpCiAjaW5jbHVkZSA8d2lu
ZG93cy5oPgpAQCAtOTIsNiArOTcsMTggQEAgdGVtcGxhdGU8dW5zaWduZWQgbGVuZ3RoPiBpbmxp
bmUgYm9vbCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IGMKICAgICBy
ZXR1cm4gZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCBsb3dlcmNhc2VMZXR0
ZXJzLCBsZW5ndGggLSAxKTsKIH0KIAorc3RydWN0IFRpbWVab25lT3ZlcnJpZGUgeworICAgIFVD
YWxlbmRhciogY2FsIHsgbnVsbHB0ciB9OworICAgIFN0cmluZyBpZDsKKyAgICBTdHJpbmcgZGlz
cGxheU5hbWU7Cit9OworCitzdGF0aWMgVGltZVpvbmVPdmVycmlkZSYgaW5uZXJUaW1lWm9uZU92
ZXJyaWRlKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGltZVpvbmVPdmVycmlkZT4g
dGltZVpvbmVPdmVycmlkZTsKKyAgICByZXR1cm4gdGltZVpvbmVPdmVycmlkZTsKK30KKwogLyog
Q29uc3RhbnRzICovCiAKIGNvbnN0IGNoYXIqIGNvbnN0IHdlZWtkYXlOYW1lWzddID0geyAiTW9u
IiwgIlR1ZSIsICJXZWQiLCAiVGh1IiwgIkZyaSIsICJTYXQiLCAiU3VuIiB9OwpAQCAtMzE4LDYg
KzMzNSwxNCBAQCBzdGF0aWMgZG91YmxlIGNhbGN1bGF0ZURTVE9mZnNldCh0aW1lX3QgbG9jYWxU
aW1lLCBkb3VibGUgdXRjT2Zmc2V0KQogLy8gUmV0dXJucyBjb21iaW5lZCBvZmZzZXQgaW4gbWls
bGlzZWNvbmQgKFVUQyArIERTVCkuCiBMb2NhbFRpbWVPZmZzZXQgY2FsY3VsYXRlTG9jYWxUaW1l
T2Zmc2V0KGRvdWJsZSBtcywgVGltZVR5cGUgaW5wdXRUaW1lVHlwZSkKIHsKKyAgICBhdXRvJiB0
eiA9IGlubmVyVGltZVpvbmVPdmVycmlkZSgpOworICAgIGlmICh0ei5jYWwpIHsKKyAgICAgICAg
VUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgICAgIHVjYWxfc2V0TWlsbGlz
KHR6LmNhbCwgbXMsICZzdGF0dXMpOworICAgICAgICBpbnQzMl90IG9mZnNldCA9IHVjYWxfZ2V0
KHR6LmNhbCwgVUNBTF9aT05FX09GRlNFVCwgJnN0YXR1cyk7CisgICAgICAgIGludDMyX3QgZHN0
T2Zmc2V0ID0gdWNhbF9nZXQodHouY2FsLCBVQ0FMX0RTVF9PRkZTRVQsICZzdGF0dXMpOworICAg
ICAgICByZXR1cm4gTG9jYWxUaW1lT2Zmc2V0KGRzdE9mZnNldCwgb2Zmc2V0ICsgZHN0T2Zmc2V0
KTsKKyAgICB9CiAjaWYgSEFWRShUTV9HTVRPRkYpCiAgICAgZG91YmxlIGxvY2FsVG9VVENUaW1l
T2Zmc2V0ID0gaW5wdXRUaW1lVHlwZSA9PSBMb2NhbFRpbWUgPyBjYWxjdWxhdGVVVENPZmZzZXQo
KSA6IDA7CiAjZWxzZQpAQCAtMTAxOSw0ICsxMDQ0LDc1IEBAIFN0cmluZyBtYWtlUkZDMjgyMkRh
dGVTdHJpbmcodW5zaWduZWQgZGF5T2ZXZWVrLCB1bnNpZ25lZCBkYXksIHVuc2lnbmVkIG1vbnRo
LCB1CiAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKIH0KIAorT3B0aW9uYWw8
VmVjdG9yPFVDaGFyLCAzMj4+IGlzVGltZVpvbmVWYWxpZChjb25zdCBTdHJpbmcmIHRpbWVab25l
KQoreworICAgIC8vIFRpbWV6b25lIGlzIGFzY2lpLgorICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVy
KHRpbWVab25lLmxlbmd0aCgpKTsKKyAgICBVQ2hhciogYnVmZmVyU3RhcnQgPSBidWZmZXIuZGF0
YSgpOworICAgIENTdHJpbmcgY3R6ID0gdGltZVpvbmUudXRmOCgpOworICAgIGlmICghVW5pY29k
ZTo6Y29udmVydFVURjhUb1VURjE2KGN0ei5kYXRhKCksIGN0ei5kYXRhKCkgKyBjdHoubGVuZ3Ro
KCksICZidWZmZXJTdGFydCwgYnVmZmVyU3RhcnQgKyB0aW1lWm9uZS5sZW5ndGgoKSkpCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBWZWN0b3I8VUNoYXIsIDMyPiBjYW5vbmlj
YWxCdWZmZXIoMzIpOworICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAg
IGF1dG8gY2Fub25pY2FsTGVuZ3RoID0gdWNhbF9nZXRDYW5vbmljYWxUaW1lWm9uZUlEKGJ1ZmZl
ci5kYXRhKCksIGJ1ZmZlci5zaXplKCksIGNhbm9uaWNhbEJ1ZmZlci5kYXRhKCksIGNhbm9uaWNh
bEJ1ZmZlci5zaXplKCksIG51bGxwdHIsICZzdGF0dXMpOworICAgIGlmIChzdGF0dXMgPT0gVV9C
VUZGRVJfT1ZFUkZMT1dfRVJST1IpIHsKKyAgICAgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwor
ICAgICAgICBjYW5vbmljYWxCdWZmZXIuZ3JvdyhjYW5vbmljYWxMZW5ndGgpOworICAgICAgICB1
Y2FsX2dldENhbm9uaWNhbFRpbWVab25lSUQoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSwg
Y2Fub25pY2FsQnVmZmVyLmRhdGEoKSwgY2Fub25pY2FsTGVuZ3RoLCBudWxscHRyLCAmc3RhdHVz
KTsKKyAgICB9IGVsc2UKKyAgICAgICAgY2Fub25pY2FsQnVmZmVyLnJlc2l6ZShjYW5vbmljYWxM
ZW5ndGgpOworICAgIHJldHVybiBjYW5vbmljYWxCdWZmZXI7Cit9CisKK2Jvb2wgc2V0VGltZVpv
bmVPdmVycmlkZShjb25zdCBTdHJpbmcmIHRpbWVab25lKQoreworICAgIGlubmVyVGltZVpvbmVP
dmVycmlkZSgpLmRpc3BsYXlOYW1lID0gU3RyaW5nKCk7CisgICAgaWYgKGlubmVyVGltZVpvbmVP
dmVycmlkZSgpLmNhbCkgeworICAgICAgICB1Y2FsX2Nsb3NlKGlubmVyVGltZVpvbmVPdmVycmlk
ZSgpLmNhbCk7CisgICAgICAgIGlubmVyVGltZVpvbmVPdmVycmlkZSgpLmNhbCA9IG51bGxwdHI7
CisgICAgfQorCisgICAgaWYgKHRpbWVab25lLmlzRW1wdHkoKSkgeworICAgICAgICBpbm5lclRp
bWVab25lT3ZlcnJpZGUoKS5pZCA9IFN0cmluZygpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisKKyAgICBhdXRvIGNhbm9uaWNhbEJ1ZmZlciA9IGlzVGltZVpvbmVWYWxpZCh0aW1lWm9u
ZSk7CisgICAgaWYgKCFjYW5vbmljYWxCdWZmZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGF1dG8gY2Fub25pY2FsTGVuZ3RoID0gY2Fub25pY2FsQnVmZmVyLT5zaXplKCk7CisgICAg
VUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgVUNhbGVuZGFyKiBjYWwgPSB1
Y2FsX29wZW4oY2Fub25pY2FsQnVmZmVyLT5kYXRhKCksIGNhbm9uaWNhbExlbmd0aCwgbnVsbHB0
ciwgVUNBTF9UUkFESVRJT05BTCwgJnN0YXR1cyk7CisgICAgaWYgKCFVX1NVQ0NFU1Moc3RhdHVz
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgVmVjdG9yPFVDaGFyLCAzMj4gZGlzcGxh
eU5hbWVCdWZmZXIoMzIpOworICAgIGF1dG8gZGlzcGxheU5hbWVMZW5ndGggPSB1Y2FsX2dldFRp
bWVab25lRGlzcGxheU5hbWUoY2FsLCBVQ0FMX1NUQU5EQVJELCBkZWZhdWx0TGFuZ3VhZ2UoKS51
dGY4KCkuZGF0YSgpLCBkaXNwbGF5TmFtZUJ1ZmZlci5kYXRhKCksIGRpc3BsYXlOYW1lQnVmZmVy
LnNpemUoKSwgJnN0YXR1cyk7CisgICAgaWYgKHN0YXR1cyA9PSBVX0JVRkZFUl9PVkVSRkxPV19F
UlJPUikgeworICAgICAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgICAgIGRpc3BsYXlO
YW1lQnVmZmVyLmdyb3coZGlzcGxheU5hbWVMZW5ndGgpOworICAgICAgICB1Y2FsX2dldFRpbWVa
b25lRGlzcGxheU5hbWUoY2FsLCBVQ0FMX1NUQU5EQVJELCBkZWZhdWx0TGFuZ3VhZ2UoKS51dGY4
KCkuZGF0YSgpLCBkaXNwbGF5TmFtZUJ1ZmZlci5kYXRhKCksIGRpc3BsYXlOYW1lTGVuZ3RoLCAm
c3RhdHVzKTsKKyAgICB9CisgICAgaWYgKCFVX1NVQ0NFU1Moc3RhdHVzKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgYXV0byYgdGltZVpvbmVPdmVycmlkZSA9IGlubmVyVGltZVpvbmVP
dmVycmlkZSgpOworICAgIHRpbWVab25lT3ZlcnJpZGUuY2FsID0gY2FsOworICAgIHRpbWVab25l
T3ZlcnJpZGUuaWQgPSBTdHJpbmcoY2Fub25pY2FsQnVmZmVyLT5kYXRhKCksIGNhbm9uaWNhbExl
bmd0aCk7CisgICAgdGltZVpvbmVPdmVycmlkZS5kaXNwbGF5TmFtZSA9IFN0cmluZyhkaXNwbGF5
TmFtZUJ1ZmZlci5kYXRhKCksIGRpc3BsYXlOYW1lTGVuZ3RoKTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworU3RyaW5nJiB0aW1lWm9uZU92ZXJyaWRlKCkKK3sKKyAgICByZXR1cm4gaW5uZXJUaW1l
Wm9uZU92ZXJyaWRlKCkuaWQ7Cit9CisKK1N0cmluZyYgdGltZVpvbmVEaXNwbGF5TmFtZU92ZXJy
aWRlKCkKK3sKKyAgICByZXR1cm4gaW5uZXJUaW1lWm9uZU92ZXJyaWRlKCkuZGlzcGxheU5hbWU7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRGF0
ZU1hdGguaCBiL1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmgKaW5kZXggMjQ2YmE2N2M3NjRiNjI5
MDQyYTc5MjdkMjRmZTg5YjA0OWQ4MmEwYi4uNGZmNGE2MzA5MDBiYWQ0N2YxOTZjYzdlMjljM2Vl
OTRkMjFhOTQ2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRGF0ZU1hdGguaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5oCkBAIC0zODksNiArMzg5LDExIEBAIGlubGluZSBpbnQg
ZGF5SW5Nb250aEZyb21EYXlJblllYXIoaW50IGRheUluWWVhciwgYm9vbCBsZWFwWWVhcikKICAg
ICByZXR1cm4gZCAtIHN0ZXA7CiB9CiAKK1dURl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDxWZWN0
b3I8VUNoYXIsIDMyPj4gaXNUaW1lWm9uZVZhbGlkKGNvbnN0IFN0cmluZyYpOworV1RGX0VYUE9S
VF9QUklWQVRFIGJvb2wgc2V0VGltZVpvbmVPdmVycmlkZShjb25zdCBTdHJpbmcmKTsKK1dURl9F
WFBPUlRfUFJJVkFURSBTdHJpbmcmIHRpbWVab25lT3ZlcnJpZGUoKTsKK1dURl9FWFBPUlRfUFJJ
VkFURSBTdHJpbmcmIHRpbWVab25lRGlzcGxheU5hbWVPdmVycmlkZSgpOworCiAvLyBSZXR1cm5z
IGNvbWJpbmVkIG9mZnNldCBpbiBtaWxsaXNlY29uZCAoVVRDICsgRFNUKS4KIFdURl9FWFBPUlRf
UFJJVkFURSBMb2NhbFRpbWVPZmZzZXQgY2FsY3VsYXRlTG9jYWxUaW1lT2Zmc2V0KGRvdWJsZSB1
dGNJbk1pbGxpc2Vjb25kcywgVGltZVR5cGUgPSBVVENUaW1lKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAppbmRleCA2
ZGU4OTAzOWE4NzM1ZjFiNGM0MzljOTNhZmRhZjI2MTI3YzY0N2JmLi4yYWVjYWZlNGQ2ZDBiOGI5
ZjBiZWYxZDFjYzE4ZDMyMGVjZmRhMTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtMTk2LDYgKzE5Niw4IEBA
IHZvaWQgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKICNpZiBIQVZFKENBVEFMWVNUX1VTRVJfSU5URVJGQUNFX0lESU9NX0FO
RF9TQ0FMRV9GQUNUT1IpCiAgICAgZW5jb2RlciA8PCBvdmVycmlkZVVzZXJJbnRlcmZhY2VJZGlv
bUFuZFNjYWxlOwogI2VuZGlmCisKKyAgICBlbmNvZGVyIDw8IHRpbWVab25lT3ZlcnJpZGU7CiB9
CiAKIGJvb2wgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2Rl
ciYgZGVjb2RlciwgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKQEAg
LTUyOSw2ICs1MzEsMTIgQEAgYm9vbCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNv
ZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBXZWJQcm9jZXNzQ3JlYXQKICAgICBwYXJhbWV0ZXJz
Lm92ZXJyaWRlVXNlckludGVyZmFjZUlkaW9tQW5kU2NhbGUgPSBXVEZNb3ZlKCpvdmVycmlkZVVz
ZXJJbnRlcmZhY2VJZGlvbUFuZFNjYWxlKTsKICNlbmRpZgogCisgICAgT3B0aW9uYWw8T3B0aW9u
YWw8U3RyaW5nPj4gdGltZVpvbmVPdmVycmlkZTsKKyAgICBkZWNvZGVyID4+IHRpbWVab25lT3Zl
cnJpZGU7CisgICAgaWYgKCF0aW1lWm9uZU92ZXJyaWRlKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgcGFyYW1ldGVycy50aW1lWm9uZU92ZXJyaWRlID0gV1RGTW92ZSgqdGltZVpvbmVPdmVy
cmlkZSk7CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IDE0MGNlYjYwMzMyOTg0
NTk1ZGY2MjdhYzg5ZmM0ZWE0NmEzZjU4YzUuLjA5NmJkNjk3MDgxYTk4ZjhhMWZlZmYyYjc5NTdm
OTNkMWMyYTZmYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTIzOSw2ICsyMzksOCBAQCBzdHJ1Y3QgV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycyB7CiAjaWYgSEFWRShDQVRBTFlTVF9VU0VSX0lOVEVSRkFDRV9J
RElPTV9BTkRfU0NBTEVfRkFDVE9SKQogICAgIHN0ZDo6cGFpcjxpbnQ2NF90LCBkb3VibGU+IG92
ZXJyaWRlVXNlckludGVyZmFjZUlkaW9tQW5kU2NhbGU7CiAjZW5kaWYKKworICAgIE9wdGlvbmFs
PFN0cmluZz4gdGltZVpvbmVPdmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLmNwcAppbmRleCAxODU4NWY2MWJiNmVjYWJlYzM5ZmYwYzAzYjg2MmM2
NTg1NmRjYTI0Li5hNmQyNmU0MGE1MTYzY2IzMGNmNmM5YTRlMmRiNDk1NTEwZWYwZGUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLmNwcApAQCAtNzYsNiArNzYsNyBAQCBSZWY8UHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uPiBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNvcHkoKQogICAgIGNvcHktPm1f
bmV0d29ya1Byb2Nlc3NQYXRoID0gdGhpcy0+bV9uZXR3b3JrUHJvY2Vzc1BhdGg7CiAgICAgY29w
eS0+bV91c2VySWQgPSB0aGlzLT5tX3VzZXJJZDsKICNlbmRpZgorICAgIGNvcHktPm1fdGltZVpv
bmVPdmVycmlkZSA9IHRoaXMtPm1fdGltZVpvbmVPdmVycmlkZTsKICAgICByZXR1cm4gY29weTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbi5oCmluZGV4IDY0OTI0OTAyZjE5ODExNzkyNTM3YTE1YTMyZWQ0
ZDcwNmRhZjk2NzAuLjYxZmNiOWE0MTg4YzRhNDdiMGE5YjI0NmU1YmQzZDBkZTllMmJlNWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLmgKQEAgLTE0Nyw2ICsxNDcsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRVc2VySWQoY29uc3QgaW50MzJfdCB1c2VySWQpIHsgbV91c2VySWQgPSB1c2VySWQ7IH0KICNl
bmRpZgogCisgICAgdm9pZCBzZXRUaW1lWm9uZU92ZXJyaWRlKGNvbnN0IFdURjo6U3RyaW5nJiB0
aW1lWm9uZU92ZXJyaWRlKSB7IG1fdGltZVpvbmVPdmVycmlkZSA9IHRpbWVab25lT3ZlcnJpZGU7
IH0KKyAgICBjb25zdCBXVEY6OlN0cmluZyYgdGltZVpvbmVPdmVycmlkZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdGltZVpvbmVPdmVycmlkZTsgfQorCiBwcml2YXRlOgogICAgIFdURjo6U3RyaW5nIG1f
aW5qZWN0ZWRCdW5kbGVQYXRoOwogICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gbV9jdXN0b21DbGFz
c2VzRm9yUGFyYW1ldGVyQ29kZXI7CkBAIC0xODEsNiArMTg0LDcgQEAgcHJpdmF0ZToKICAgICBX
VEY6OlN0cmluZyBtX25ldHdvcmtQcm9jZXNzUGF0aDsKICAgICBpbnQzMl90IG1fdXNlcklkIHsg
LTEgfTsKICNlbmRpZgorICAgIFdURjo6U3RyaW5nIG1fdGltZVpvbmVPdmVycmlkZTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCmluZGV4IDcy
MjZjYzJjYjYwNWQyMzg0YjVmZGY5MjEwYWM3MzFiNDE2MTBjMWUuLmU2Y2JhZWZjNjg2N2Q5NTE1
YzhkYmRmYWRjZjNlNjhjMWZlZWI4YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgK
QEAgLTI0LDYgKzI0LDcgQEAKICAqLwogCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24u
aD4KKyNpbXBvcnQgPFdlYktpdC9XS0Jhc2UuaD4KICNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRp
b24uaD4KIAogTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KQEAgLTcyLDYgKzczLDggQEAgV0tfQ0xB
U1NfQVZBSUxBQkxFKG1hY29zKDEwLjEwKSwgaW9zKDguMCkpCiAKIEBwcm9wZXJ0eSAobm9uYXRv
bWljKSBCT09MIGNvbmZpZ3VyZUpTQ0ZvclRlc3RpbmcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhX
S19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAorQHByb3BlcnR5IChub25hdG9taWMsIG51
bGxhYmxlLCBjb3B5KSBOU1N0cmluZyAqdGltZVpvbmVPdmVycmlkZSBXS19BUElfQVZBSUxBQkxF
KG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiBAZW5kCiAKIE5TX0FTU1VN
RV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubW0KaW5kZXggYjRjMzVl
ODg1NGM2MTA1NTY1NWFlZmYyYmZiOTA5Y2RjNTQyODM5Yy4uNTgwZmRhNmY1MTM4ZDg2OTRjNmU1
MDZkMmE3MDE0MDZkNGQ3OGI3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1tCkBA
IC0zNjcsNiArMzY3LDE2IEBACiAgICAgX3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi0+c2V0U2hv
dWxkQ29uZmlndXJlSlNDRm9yVGVzdGluZyh2YWx1ZSk7CiB9CiAKKy0gKE5TU3RyaW5nICopdGlt
ZVpvbmVPdmVycmlkZQoreworICAgIHJldHVybiBfcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLT50
aW1lWm9uZU92ZXJyaWRlKCk7Cit9CisKKy0gKHZvaWQpc2V0VGltZVpvbmVPdmVycmlkZTooTlNT
dHJpbmcgKil0aW1lWm9uZQoreworICAgIF9wcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24tPnNldFRp
bWVab25lT3ZlcnJpZGUodGltZVpvbmUpOworfQorCiAjcHJhZ21hIG1hcmsgV0tPYmplY3QgcHJv
dG9jb2wgaW1wbGVtZW50YXRpb24KIAogLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5j
cHAKaW5kZXggODliZTU2YWQ3MWQ3MTU2OTEyYTI2OTE1MzA1N2RmNTI3Y2RkNDQ2MC4uMzY3ZWU0
MWZiMDA0NDQ3NDBlODg2YjE3MzQ1YTE3YWY3NDI5NmFmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTYzLDYg
KzYzLDcgQEAKICNpbmNsdWRlIDxsaWJpbnRsLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1
ZGUgPHBhbC9IeXN0ZXJlc2lzQWN0aXZpdHkuaD4KKyNpbmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4K
ICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTEyNCw5ICsxMjUsMTAgQEAgZW51bSB7CiAjaWYg
UExBVEZPUk0oR1RLKQogICAgIFBST1BfUFNPTl9FTkFCTEVELAogI2lmICFVU0UoR1RLNCkKLSAg
ICBQUk9QX1VTRV9TWVNZRU1fQVBQRUFSQU5DRV9GT1JfU0NST0xMQkFSUworICAgIFBST1BfVVNF
X1NZU1RFTV9BUFBFQVJBTkNFX0ZPUl9TQ1JPTExCQVJTLAogI2VuZGlmCiAjZW5kaWYKKyAgICBQ
Uk9QX1RJTUVfWk9ORV9PVkVSUklERQogfTsKIAogZW51bSB7CkBAIC0yNDIsNiArMjQ0LDggQEAg
c3RydWN0IF9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZSB7CiAKICAgICBIYXNoU2V0PFN0cmluZz4g
ZG5zUHJlZmV0Y2hlZEhvc3RzOwogICAgIFBBTDo6SHlzdGVyZXNpc0FjdGl2aXR5IGRuc1ByZWZl
dGNoSHlzdGVyZXJpczsKKworICAgIENTdHJpbmcgdGltZVpvbmVPdmVycmlkZTsKIH07CiAKIHN0
YXRpYyBndWludCBzaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwgfTsKQEAgLTM0MiwxMSArMzQ2
LDE0IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYkNvbnRleHRHZXRQcm9wZXJ0eShHT2JqZWN0KiBv
YmplY3QsIGd1aW50IHByb3BJRCwgR1ZhbHVlKiB2CiAgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xl
YW4odmFsdWUsIGNvbnRleHQtPnByaXYtPnBzb25FbmFibGVkKTsKICAgICAgICAgYnJlYWs7CiAj
aWYgIVVTRShHVEs0KQotICAgIGNhc2UgUFJPUF9VU0VfU1lTWUVNX0FQUEVBUkFOQ0VfRk9SX1ND
Uk9MTEJBUlM6CisgICAgY2FzZSBQUk9QX1VTRV9TWVNURU1fQVBQRUFSQU5DRV9GT1JfU0NST0xM
QkFSUzoKICAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3dlYl9jb250
ZXh0X2dldF91c2Vfc3lzdGVtX2FwcGVhcmFuY2VfZm9yX3Njcm9sbGJhcnMoY29udGV4dCkpOwog
ICAgICAgICBicmVhazsKICNlbmRpZgogI2VuZGlmCisgICAgY2FzZSBQUk9QX1RJTUVfWk9ORV9P
VkVSUklERToKKyAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZhbHVlLCBjb250ZXh0LT5wcml2
LT50aW1lWm9uZU92ZXJyaWRlLmRhdGEoKSk7CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJ
RCwgcGFyYW1TcGVjKTsKICAgICB9CkBAIC0zNzIsMTEgKzM3OSwxNyBAQCBzdGF0aWMgdm9pZCB3
ZWJraXRXZWJDb250ZXh0U2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSUQs
IGNvbnN0IEdWYQogICAgICAgICBjb250ZXh0LT5wcml2LT5wc29uRW5hYmxlZCA9IGdfdmFsdWVf
Z2V0X2Jvb2xlYW4odmFsdWUpOwogICAgICAgICBicmVhazsKICNpZiAhVVNFKEdUSzQpCi0gICAg
Y2FzZSBQUk9QX1VTRV9TWVNZRU1fQVBQRUFSQU5DRV9GT1JfU0NST0xMQkFSUzoKKyAgICBjYXNl
IFBST1BfVVNFX1NZU1RFTV9BUFBFQVJBTkNFX0ZPUl9TQ1JPTExCQVJTOgogICAgICAgICB3ZWJr
aXRfd2ViX2NvbnRleHRfc2V0X3VzZV9zeXN0ZW1fYXBwZWFyYW5jZV9mb3Jfc2Nyb2xsYmFycyhj
b250ZXh0LCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CiAgICAgICAgIGJyZWFrOwogI2Vu
ZGlmCiAjZW5kaWYKKyAgICBjYXNlIFBST1BfVElNRV9aT05FX09WRVJSSURFOiB7CisgICAgICAg
IGNvbnN0IGNoYXIqIHRpbWVab25lT3ZlcnJpZGUgPSBnX3ZhbHVlX2dldF9zdHJpbmcodmFsdWUp
OworICAgICAgICBpZiAodGltZVpvbmVPdmVycmlkZSkKKyAgICAgICAgICAgIHdlYmtpdF93ZWJf
Y29udGV4dF9zZXRfdGltZV96b25lX292ZXJyaWRlKGNvbnRleHQsIHRpbWVab25lT3ZlcnJpZGUp
OworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgZGVmYXVsdDoKICAgICAgICAgR19PQkpFQ1Rf
V0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElELCBwYXJhbVNwZWMpOwogICAg
IH0KQEAgLTM5OSw2ICs0MTIsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJDb250ZXh0Q29uc3Ry
dWN0ZWQoR09iamVjdCogb2JqZWN0KQogICAgIGNvbmZpZ3VyYXRpb24uc2V0VXNlU3lzdGVtQXBw
ZWFyYW5jZUZvclNjcm9sbGJhcnMocHJpdi0+dXNlU3lzdGVtQXBwZWFyYW5jZUZvclNjcm9sbGJh
cnMpOwogI2VuZGlmCiAjZW5kaWYKKyAgICBjb25maWd1cmF0aW9uLnNldFRpbWVab25lT3ZlcnJp
ZGUoU3RyaW5nOjpmcm9tVVRGOChwcml2LT50aW1lWm9uZU92ZXJyaWRlLmRhdGEoKSkpOwogCiAg
ICAgaWYgKCFwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIpCiAgICAgICAgIHByaXYtPndlYnNpdGVE
YXRhTWFuYWdlciA9IGFkb3B0R1JlZih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfbmV3KCJs
b2NhbC1zdG9yYWdlLWRpcmVjdG9yeSIsIHByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeS5kYXRh
KCksIG51bGxwdHIpKTsKQEAgLTU1Miw3ICs1NjYsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2Vi
X2NvbnRleHRfY2xhc3NfaW5pdChXZWJLaXRXZWJDb250ZXh0Q2xhc3MqIHdlYkNvbnRleHRDbGFz
cwogICAgICAqLwogICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCiAgICAgICAg
IGdPYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9VU0VfU1lTWUVNX0FQUEVBUkFOQ0VfRk9SX1ND
Uk9MTEJBUlMsCisgICAgICAgIFBST1BfVVNFX1NZU1RFTV9BUFBFQVJBTkNFX0ZPUl9TQ1JPTExC
QVJTLAogICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKICAgICAgICAgICAgICJ1c2Utc3lz
dGVtLWFwcGVhcmFuY2UtZm9yLXNjcm9sbGJhcnMiLAogICAgICAgICAgICAgXygiVXNlIHN5c3Rl
bSBhcHBlYXJhbmNlIGZvciBzY3JvbGxiYXJzIiksCkBAIC01NjIsNiArNTc2LDMwIEBAIHN0YXRp
YyB2b2lkIHdlYmtpdF93ZWJfY29udGV4dF9jbGFzc19pbml0KFdlYktpdFdlYkNvbnRleHRDbGFz
cyogd2ViQ29udGV4dENsYXNzCiAjZW5kaWYKICNlbmRpZgogCisgICAgLyoqCisgICAgICogV2Vi
S2l0V2ViQ29udGV4dDp0aW1lLXpvbmUtb3ZlcnJpZGU6CisgICAgICoKKyAgICAgKiBUaGUgdGlt
ZXpvbmUgb3ZlcnJpZGUgZm9yIHRoaXMgd2ViIGNvbnRleHQuIFNldHRpbmcgdGhpcyBwcm9wZXJ0
eSBwcm92aWRlcyBhIGJldHRlcgorICAgICAqIGFsdGVybmF0aXZlIHRvIGNvbmZpZ3VyZSB0aGUg
dGltZXpvbmUgaW5mb3JtYXRpb24gZm9yIGFsbCB3ZWJ2aWV3cyBtYW5hZ2VkIGJ5IHRoZSBXZWJD
b250ZXh0LgorICAgICAqIFRoZSBvdGhlciwgbGVzcyBvcHRpbWFsLCBhcHByb2FjaCBpcyB0byBn
bG9iYWxseSBzZXQgdGhlIFRaIGVudmlyb25tZW50IHZhcmlhYmxlIGluIHRoZQorICAgICAqIHBy
b2Nlc3MgYmVmb3JlIGNyZWF0aW5nIHRoZSBjb250ZXh0LiBIb3dldmVyIHRoaXMgYXBwcm9hY2gg
bWlnaHQgbm90IGJlIHZlcnkgY29udmVuaWVudCBhbmQKKyAgICAgKiBjYW4gaGF2ZSBzaWRlLWVm
ZmVjdHMgaW4geW91ciBhcHBsaWNhdGlvbi4KKyAgICAgKgorICAgICAqIFRoZSBleHBlY3RlZCB2
YWx1ZXMgZm9yIHRoaXMgcHJvcGVydHkgYXJlIGRlZmluZWQgaW4gdGhlIElBTkEgdGltZXpvbmUg
ZGF0YWJhc2UuIFNlZSB0aGlzCisgICAgICogd2lraXBlZGlhIHBhZ2UgZm9yIGluc3RhbmNlLCBo
dHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MaXN0X29mX3R6X2RhdGFiYXNlX3RpbWVfem9u
ZXMuCisgICAgICoKKyAgICAgKiBTaW5jZTogMi4zMgorICAgICAqLworICAgIGdfb2JqZWN0X2Ns
YXNzX2luc3RhbGxfcHJvcGVydHkoCisgICAgICAgIGdPYmplY3RDbGFzcywKKyAgICAgICAgUFJP
UF9USU1FX1pPTkVfT1ZFUlJJREUsCisgICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoCisgICAg
ICAgICAgICAidGltZS16b25lLW92ZXJyaWRlIiwKKyAgICAgICAgICAgIF8oIlRpbWUgWm9uZSBP
dmVycmlkZSIpLAorICAgICAgICAgICAgXygiVGhlIHRpbWUgem9uZSB0byB1c2UgaW5zdGVhZCBv
ZiB0aGUgc3lzdGVtIG9uZSIpLAorICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgIHN0
YXRpY19jYXN0PEdQYXJhbUZsYWdzPihXRUJLSVRfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9D
T05TVFJVQ1RfT05MWSkpKTsKKwogICAgIC8qKgogICAgICAqIFdlYktpdFdlYkNvbnRleHQ6OmRv
d25sb2FkLXN0YXJ0ZWQ6CiAgICAgICogQGNvbnRleHQ6IHRoZSAjV2ViS2l0V2ViQ29udGV4dApA
QCAtMTgzOCw2ICsxODc2LDM5IEBAIGdib29sZWFuIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfdXNl
X3N5c3RlbV9hcHBlYXJhbmNlX2Zvcl9zY3JvbGxiYXJzKFdlYktpdFdlYkNvCiB9CiAjZW5kaWYK
IAorLyoqCisgKiB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3RpbWVfem9uZV9vdmVycmlkZToKKyAq
IEBjb250ZXh0OiBhICNXZWJLaXRXZWJDb250ZXh0CisgKiBAdGltZV96b25lX292ZXJyaWRlOiB2
YWx1ZSB0byBzZXQKKyAqCisgKiBTZXQgdGhlICNXZWJLaXRXZWJDb250ZXh0OnRpbWUtem9uZS1v
dmVycmlkZSBwcm9wZXJ0eS4gUmVmZXIgdG8gdGhlIElBTkEgZGF0YWJhc2UgZm9yIHZhbGlkCisg
KiBzcGVjaWZpZXJzLCBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MaXN0X29mX3R6X2Rh
dGFiYXNlX3RpbWVfem9uZXMKKyAqCisgKiBTaW5jZTogMi4zMgorICovCit2b2lkIHdlYmtpdF93
ZWJfY29udGV4dF9zZXRfdGltZV96b25lX292ZXJyaWRlKFdlYktpdFdlYkNvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IGdjaGFyKiB0aW1lWm9uZU92ZXJyaWRlKQoreworICAgIGdfcmV0dXJuX2lmX2Zh
aWwoV0VCS0lUX0lTX1dFQl9DT05URVhUKGNvbnRleHQpKTsKKyAgICBnX3JldHVybl9pZl9mYWls
KFdURjo6aXNUaW1lWm9uZVZhbGlkKHRpbWVab25lT3ZlcnJpZGUpKTsKKworICAgIGNvbnRleHQt
PnByaXYtPnRpbWVab25lT3ZlcnJpZGUgPSB0aW1lWm9uZU92ZXJyaWRlOworfQorCisvKioKKyAq
IHdlYmtpdF93ZWJfY29udGV4dF9nZXRfdGltZV96b25lX292ZXJyaWRlOgorICogQGNvbnRleHQ6
IGEgI1dlYktpdFdlYkNvbnRleHQKKyAqCisgKiBHZXQgdGhlICNXZWJLaXRXZWJDb250ZXh0OnRp
bWUtem9uZS1vdmVycmlkZSBwcm9wZXJ0eS4KKyAqCisgKiBTaW5jZTogMi4zMgorICovCitjb25z
dCBnY2hhciogd2Via2l0X3dlYl9jb250ZXh0X2dldF90aW1lX3pvbmVfb3ZlcnJpZGUoV2ViS2l0
V2ViQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRf
SVNfV0VCX0NPTlRFWFQoY29udGV4dCksIG51bGxwdHIpOworCisgICAgcmV0dXJuIGNvbnRleHQt
PnByaXYtPnRpbWVab25lT3ZlcnJpZGUuZGF0YSgpOworfQorCiB2b2lkIHdlYmtpdFdlYkNvbnRl
eHRJbml0aWFsaXplTm90aWZpY2F0aW9uUGVybWlzc2lvbnMoV2ViS2l0V2ViQ29udGV4dCogY29u
dGV4dCkKIHsKICAgICBnX3NpZ25hbF9lbWl0KGNvbnRleHQsIHNpZ25hbHNbSU5JVElBTElaRV9O
T1RJRklDQVRJT05fUEVSTUlTU0lPTlNdLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmgKaW5kZXggZGJmNjJiY2YxNjhiYzg3MmRm
OGI1MjkzYWUwNWFjODQ5ZWNiNmQyZi4uZmMzYjdmZTQ4MWE0YmJiZWM1YjdiMjMxOWEzZTUxNzZm
Zjg3MzM2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJDb250ZXh0LmgKQEAgLTMzMSw2ICszMzEsMTMgQEAgd2Via2l0X3dlYl9jb250ZXh0X3Nl
dF91c2Vfc3lzdGVtX2FwcGVhcmFuY2VfZm9yX3Njcm9sbGJhcnMgKFdlYktpdFdlYkNvbnRleHQK
IFdFQktJVF9BUEkgZ2Jvb2xlYW4KIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfdXNlX3N5c3RlbV9h
cHBlYXJhbmNlX2Zvcl9zY3JvbGxiYXJzIChXZWJLaXRXZWJDb250ZXh0ICAgICAgKmNvbnRleHQp
OwogCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfY29udGV4dF9zZXRfdGltZV96b25lX292
ZXJyaWRlICAgICAgICAgICAoV2ViS2l0V2ViQ29udGV4dCAgICAgICAgICAgICAgKmNvbnRleHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdjaGFyICAgICAgICAgICAgICAgICAgICp0aW1lX3pvbmVfb3ZlcnJpZGUpOworCitXRUJL
SVRfQVBJIGNvbnN0IGdjaGFyKgord2Via2l0X3dlYl9jb250ZXh0X2dldF90aW1lX3pvbmVfb3Zl
cnJpZGUgICAgICAgICAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAgICAgICAqY29udGV4dCk7
CisKIEdfRU5EX0RFQ0xTCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQK
aW5kZXggMmRhYmNjYzQ0ZDc3NTg2NmUxMjA5YzM0ZDY1NDJiMWNiMmQ2ODk4OC4uZDAzYTFiYzhl
NTcyZGQ3OTI5NmYyMjVmMTY5Zjc4YTFmZTM0NDBhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2Vj
dGlvbnMudHh0CkBAIC03Myw2ICs3Myw4IEBAIHdlYmtpdF93ZWJfY29udGV4dF9pbml0aWFsaXpl
X25vdGlmaWNhdGlvbl9wZXJtaXNzaW9ucwogd2Via2l0X3dlYl9jb250ZXh0X3NlbmRfbWVzc2Fn
ZV90b19hbGxfZXh0ZW5zaW9ucwogd2Via2l0X3dlYl9jb250ZXh0X3NldF91c2Vfc3lzdGVtX2Fw
cGVhcmFuY2VfZm9yX3Njcm9sbGJhcnMKIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfdXNlX3N5c3Rl
bV9hcHBlYXJhbmNlX2Zvcl9zY3JvbGxiYXJzCit3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3RpbWVf
em9uZV9vdmVycmlkZQord2Via2l0X3dlYl9jb250ZXh0X2dldF90aW1lX3pvbmVfb3ZlcnJpZGUK
IAogPFNVQlNFQ1RJT04gVVJJIFNjaGVtZT4KIFdlYktpdFVSSVNjaGVtZVJlcXVlc3RDYWxsYmFj
awpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJD
b250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYkNvbnRl
eHQuaAppbmRleCA5OGQ2OTI5YTIwYjI2OWE4ODI0ZTk0MDUwNDdlY2FiYWY3ZWZjNTQzLi5iYzI5
NzM2MzNkZDMyYzUzMzk0OWRhMjcxODQyZjcyNmYzMmFiNGE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYkNvbnRleHQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYkNvbnRleHQuaApAQCAtMzIwLDYgKzMy
MCwxMyBAQCBXRUJLSVRfQVBJIHZvaWQKIHdlYmtpdF93ZWJfY29udGV4dF9zZW5kX21lc3NhZ2Vf
dG9fYWxsX2V4dGVuc2lvbnMgICAoV2ViS2l0V2ViQ29udGV4dCAgICAgICAgICAgICAgKmNvbnRl
eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFdlYktpdFVzZXJNZXNzYWdlICAgICAgICAgICAgICptZXNzYWdlKTsKIAorV0VCS0lUX0FQSSB2
b2lkCit3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3RpbWVfem9uZV9vdmVycmlkZSAgICAgICAgICAg
KFdlYktpdFdlYkNvbnRleHQgICAgICAgICAgICAgICpjb250ZXh0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAg
ICAgICAgICAgICAqdGltZV96b25lX292ZXJyaWRlKTsKKworV0VCS0lUX0FQSSBjb25zdCBnY2hh
cioKK3dlYmtpdF93ZWJfY29udGV4dF9nZXRfdGltZV96b25lX292ZXJyaWRlICAgICAgICAgICAo
V2ViS2l0V2ViQ29udGV4dCAgICAgICAgICAgICAgKmNvbnRleHQpOworCiBHX0VORF9ERUNMUwog
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9j
cy93cGUtMS4wLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUv
ZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4dAppbmRleCAxNTVhZTY1OWU5YzlmOTg4ZmIyNzgyNDBj
NjEyZTAxNzNjYmI2ZTMxLi5iNGFjYmYwZjNhNWU0YTZiNTFjNjg3OWFhODI1ZDEzMjk0ZjI3MTRm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEu
MC1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9kb2Nz
L3dwZS0xLjAtc2VjdGlvbnMudHh0CkBAIC00OCw2ICs0OCw4IEBAIHdlYmtpdF93ZWJfY29udGV4
dF9nZXRfcHJvY2Vzc19tb2RlbAogd2Via2l0X3dlYl9jb250ZXh0X3NldF9wcm9jZXNzX21vZGVs
CiB3ZWJraXRfd2ViX2NvbnRleHRfaW5pdGlhbGl6ZV9ub3RpZmljYXRpb25fcGVybWlzc2lvbnMK
IHdlYmtpdF93ZWJfY29udGV4dF9zZW5kX21lc3NhZ2VfdG9fYWxsX2V4dGVuc2lvbnMKK3dlYmtp
dF93ZWJfY29udGV4dF9zZXRfdGltZV96b25lX292ZXJyaWRlCit3ZWJraXRfd2ViX2NvbnRleHRf
Z2V0X3RpbWVfem9uZV9vdmVycmlkZQogCiA8U1VCU0VDVElPTiBVUkkgU2NoZW1lPgogV2ViS2l0
VVJJU2NoZW1lUmVxdWVzdENhbGxiYWNrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAKaW5kZXggZDkzMWU0NTI3ZTYzMzQ4ZGM5MjFhZDg5Y2NkMDkyMWY0NjMwYzM4
Yi4uNzE2N2VjN2MwZWE2ZjBmZWI4YmJhYzExMTFlYzU1MzJjNDhjMWQ5YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMTEwNCw2ICsxMTA0LDggQEAg
dm9pZCBXZWJQcm9jZXNzUG9vbDo6aW5pdGlhbGl6ZU5ld1dlYlByb2Nlc3MoV2ViUHJvY2Vzc1By
b3h5JiBwcm9jZXNzLCBXZWJzaXRlRGEKIAogICAgIHBhcmFtZXRlcnMucHJlc2VudGluZ0FwcGxp
Y2F0aW9uUElEID0gbV9jb25maWd1cmF0aW9uLT5wcmVzZW50aW5nQXBwbGljYXRpb25QSUQoKTsK
IAorICAgIHBhcmFtZXRlcnMudGltZVpvbmVPdmVycmlkZSA9IG1fY29uZmlndXJhdGlvbi0+dGlt
ZVpvbmVPdmVycmlkZSgpOworCiAgICAgLy8gQWRkIGFueSBwbGF0Zm9ybSBzcGVjaWZpYyBwYXJh
bWV0ZXJzCiAgICAgcGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyhwcm9jZXNzLCBwYXJhbWV0
ZXJzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9j
ZXNzUG9vbEdMaWIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNz
UG9vbEdMaWIuY3BwCmluZGV4IGJlMTk3OTZlZDk2ZDA3MDU0MjhmMDgxOTk1ODA2MjU0ZTJmMmFk
MzYuLjcwYTJlMjI5ODZhYTQ3MWUyNzc1ZjI0MDEyNzExNmUyY2VlZWUxY2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQb29sR0xpYi5jcHAKQEAg
LTEwOCw2ICsxMDgsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVX
ZWJQcm9jZXNzKGNvbnN0IFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcwogI2lmIFBMQVRGT1JNKEdU
SykgJiYgIVVTRShHVEs0KQogICAgIHBhcmFtZXRlcnMudXNlU3lzdGVtQXBwZWFyYW5jZUZvclNj
cm9sbGJhcnMgPSBtX2NvbmZpZ3VyYXRpb24tPnVzZVN5c3RlbUFwcGVhcmFuY2VGb3JTY3JvbGxi
YXJzKCk7CiAjZW5kaWYKKyAgICBwYXJhbWV0ZXJzLnRpbWVab25lT3ZlcnJpZGUgPSBtX2NvbmZp
Z3VyYXRpb24tPnRpbWVab25lT3ZlcnJpZGUoKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6
cGxhdGZvcm1JbnZhbGlkYXRlQ29udGV4dCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzR0xpYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvZ2xpYi9XZWJQcm9jZXNzR0xpYi5jcHAKaW5kZXggNzg4MzU0YzFjNzIxNmQwMjY0NzdhMDlh
MDY4OWFhYTY3NWE3N2ZhMi4uZTFjOGIwMjM4NTE5Mjk2NTQ0YzRlZWJiMjY4ZTQzNWYyY2RhMzQ4
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc0dM
aWIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NHTGli
LmNwcApAQCAtNTAsNiArNTAsOCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsYmFyVGhlbWVH
dGsuaD4KICNlbmRpZgogCisjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+CisKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTk3LDYgKzk5LDExIEBAIHZv
aWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzJiBwYXJhCiAjaWYgUExBVEZPUk0oR1RLKSAmJiAhVVNFKEdUSzQpCiAg
ICAgc2V0VXNlU3lzdGVtQXBwZWFyYW5jZUZvclNjcm9sbGJhcnMocGFyYW1ldGVycy51c2VTeXN0
ZW1BcHBlYXJhbmNlRm9yU2Nyb2xsYmFycyk7CiAjZW5kaWYKKworICAgIGlmIChwYXJhbWV0ZXJz
LnRpbWVab25lT3ZlcnJpZGUpCisgICAgICAgIFdURjo6c2V0VGltZVpvbmVPdmVycmlkZSgqcGFy
YW1ldGVycy50aW1lWm9uZU92ZXJyaWRlKTsKKyAgICBlbHNlCisgICAgICAgIFdURjo6c2V0VGlt
ZVpvbmVPdmVycmlkZSh7IH0pOwogfQogCiB2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtU2V0V2Vi
c2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMoV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMmJikK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3Nzgw
N2UyZmI4NTViZDdlZDIxNWMyMmFhZDk1NDc5YWRkNjMwZTBmLi5mNzljYzQzNTZiZjQ1ODA5NDM4
OTM2NTNiZjFkZjJlN2I4ODg2OGNiIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjAtMDctMTcgIFBoaWxpcHBlIE5v
cm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtXSzJdIEFkZCBBUEkgdG8g
YWxsb3cgZW1iZWRkZXIgdG8gc2V0IGEgdGltZXpvbmUgb3ZlcnJpZGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzg4NAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBBUEkgdGVzdHMgZm9yIHRoZSB0
aW1lem9uZSBjb25maWd1cmF0aW9uIEFQSS4gVGhlIEdUSyBhbmQgV1BFIE1pbmlCcm93c2VycyBh
bHNvIGdhaW5lZAorICAgICAgICBuZXcgcnVudGltZSBvcHRpb25zIGFsbG93aW5nIHRvIGV4ZXJj
aXNlIHRoaXMgbmV3IEFQSS4KKworICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9tYWluLmM6Cisg
ICAgICAgIChhY3RpdmF0ZSk6CisgICAgICAgICogTWluaUJyb3dzZXIvd3BlL21haW4uY3BwOgor
ICAgICAgICAobWFpbik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9UaW1lWm9uZU92ZXJyaWRlLm1tOiBBZGRlZC4KKyAgICAgICAgKFRpbWVab25l
T3ZlcnJpZGVUZXN0OjpydW5TY3JpcHRBbmRFeGVjdXRlQ2FsbGJhY2spOgorICAgICAgICAoVEVT
VF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktp
dFdlYkNvbnRleHQuY3BwOgorICAgICAgICAodGVzdFdlYkNvbnRleHRUaW1lWm9uZSk6CisgICAg
ICAgICh0ZXN0V2ViVmlld1RpbWVab25lT3ZlcnJpZGUpOgorICAgICAgICAoYmVmb3JlQWxsKToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9UZXN0TWFpbi5jcHA6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvVGVzdE1haW4uaDoKKyAgICAg
ICAgKFRlc3Q6OlRlc3QpOgorICAgICAgICAqIGZsYXRwYWsvZmxhdHBha3V0aWxzLnB5OgorICAg
ICAgICAoV2Via2l0RmxhdHBhay5ydW5faW5fc2FuZGJveCk6CisKIDIwMjAtMDktMTYgIEZ1amlp
IEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgW0NNYWtlXSBB
ZGQgYSBuZXcgbGlicmFyeSB0YXJnZXQgVGVzdFJ1bm5lclNoYXJlZApkaWZmIC0tZ2l0IGEvVG9v
bHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMK
aW5kZXggZDY4NGY5Yzg5M2Q0MWRlMWVkYzE5M2UxNzU5OWU0ODQ0NDk0YWM2Ni4uMGE0NzY5MjRj
Yjk2MmVjZmE4MzhiZmY4MTRkYjIxNWNmYzIzYmMyNiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJy
b3dzZXIvZ3RrL21haW4uYworKysgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCkBAIC01
MSw2ICs1MSw3IEBAIHN0YXRpYyBjb25zdCBjaGFyICpjb29raWVzRmlsZTsKIHN0YXRpYyBjb25z
dCBjaGFyICpjb29raWVzUG9saWN5Owogc3RhdGljIGNvbnN0IGNoYXIgKnByb3h5Owogc3RhdGlj
IGdib29sZWFuIGRhcmtNb2RlOworc3RhdGljIGNoYXIqIHRpbWVab25lOwogc3RhdGljIGdib29s
ZWFuIGVuYWJsZUlUUDsKIHN0YXRpYyBnYm9vbGVhbiBwcmludFZlcnNpb247CiAKQEAgLTE0Myw2
ICsxNDQsNyBAQCBzdGF0aWMgY29uc3QgR09wdGlvbkVudHJ5IGNvbW1hbmRMaW5lT3B0aW9uc1td
ID0KICAgICB7ICJpZ25vcmUtdGxzLWVycm9ycyIsIDAsIDAsIEdfT1BUSU9OX0FSR19OT05FLCAm
aWdub3JlVExTRXJyb3JzLCAiSWdub3JlIFRMUyBlcnJvcnMiLCBOVUxMIH0sCiAgICAgeyAiY29u
dGVudC1maWx0ZXIiLCAwLCAwLCBHX09QVElPTl9BUkdfRklMRU5BTUUsICZjb250ZW50RmlsdGVy
LCAiSlNPTiB3aXRoIGNvbnRlbnQgZmlsdGVyaW5nIHJ1bGVzIiwgIkZJTEUiIH0sCiAgICAgeyAi
ZW5hYmxlLWl0cCIsIDAsIDAsIEdfT1BUSU9OX0FSR19OT05FLCAmZW5hYmxlSVRQLCAiRW5hYmxl
IEludGVsbGlnZW50IFRyYWNraW5nIFByZXZlbnRpb24gKElUUCkiLCBOVUxMIH0sCisgICAgeyAi
dGltZS16b25lIiwgJ3QnLCAwLCBHX09QVElPTl9BUkdfU1RSSU5HLCAmdGltZVpvbmUsICJTZXQg
dGltZSB6b25lIiwgIlRJTUVaT05FIiB9LAogICAgIHsgInZlcnNpb24iLCAndicsIDAsIEdfT1BU
SU9OX0FSR19OT05FLCAmcHJpbnRWZXJzaW9uLCAiUHJpbnQgdGhlIFdlYktpdEdUSyB2ZXJzaW9u
IiwgTlVMTCB9LAogICAgIHsgR19PUFRJT05fUkVNQUlOSU5HLCAwLCAwLCBHX09QVElPTl9BUkdf
RklMRU5BTUVfQVJSQVksICZ1cmlBcmd1bWVudHMsIDAsICJbVVJM4oCmXSIgfSwKICAgICB7IDAs
IDAsIDAsIDAsIDAsIDAsIDAgfQpAQCAtNjMwLDYgKzYzMiw3IEBAIHN0YXRpYyB2b2lkIGFjdGl2
YXRlKEdBcHBsaWNhdGlvbiAqYXBwbGljYXRpb24sIFdlYktpdFNldHRpbmdzICp3ZWJraXRTZXR0
aW5ncykKICNpZiAhR1RLX0NIRUNLX1ZFUlNJT04oMywgOTgsIDApCiAgICAgICAgICJ1c2Utc3lz
dGVtLWFwcGVhcmFuY2UtZm9yLXNjcm9sbGJhcnMiLCBGQUxTRSwKICNlbmRpZgorICAgICAgICAi
dGltZS16b25lLW92ZXJyaWRlIiwgdGltZVpvbmUsCiAgICAgICAgIE5VTEwpOwogICAgIGdfb2Jq
ZWN0X3VucmVmKG1hbmFnZXIpOwogCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci93cGUv
bWFpbi5jcHAgYi9Ub29scy9NaW5pQnJvd3Nlci93cGUvbWFpbi5jcHAKaW5kZXggNTM0ODZkMmI0
MDIyZWU4ODAwN2VhMWRlZTExYjk1YWJmMWQyZTVlNy4uNzgwZmUyODE2ZDhlMmM4Mjc5MGY4Mzdl
OTQ1ZDIyZWNiNGJkMzVmNiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvd3BlL21haW4u
Y3BwCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3dwZS9tYWluLmNwcApAQCAtNDUsNiArNDUsNyBA
QCBzdGF0aWMgY29uc3QgY2hhciogY29va2llc0ZpbGU7CiBzdGF0aWMgY29uc3QgY2hhciogY29v
a2llc1BvbGljeTsKIHN0YXRpYyBjb25zdCBjaGFyKiBwcm94eTsKIGNvbnN0IGNoYXIqIGJnQ29s
b3I7CitzdGF0aWMgY2hhciogdGltZVpvbmU7CiBzdGF0aWMgZ2Jvb2xlYW4gZW5hYmxlSVRQOwog
c3RhdGljIGdib29sZWFuIHByaW50VmVyc2lvbjsKIHN0YXRpYyBHSGFzaFRhYmxlKiBvcGVuVmll
d3M7CkBAIC02Miw2ICs2Myw3IEBAIHN0YXRpYyBjb25zdCBHT3B0aW9uRW50cnkgY29tbWFuZExp
bmVPcHRpb25zW10gPQogICAgIHsgImNvbnRlbnQtZmlsdGVyIiwgMCwgMCwgR19PUFRJT05fQVJH
X0ZJTEVOQU1FLCAmY29udGVudEZpbHRlciwgIkpTT04gd2l0aCBjb250ZW50IGZpbHRlcmluZyBy
dWxlcyIsICJGSUxFIiB9LAogICAgIHsgImJnLWNvbG9yIiwgMCwgMCwgR19PUFRJT05fQVJHX1NU
UklORywgJmJnQ29sb3IsICJXaW5kb3cgYmFja2dyb3VuZCBjb2xvci4gRGVmYXVsdDogd2hpdGUi
LCAiQ09MT1IiIH0sCiAgICAgeyAiZW5hYmxlLWl0cCIsIDAsIDAsIEdfT1BUSU9OX0FSR19OT05F
LCAmZW5hYmxlSVRQLCAiRW5hYmxlIEludGVsbGlnZW50IFRyYWNraW5nIFByZXZlbnRpb24gKElU
UCkiLCBudWxscHRyIH0sCisgICAgeyAidGltZS16b25lIiwgJ3QnLCAwLCBHX09QVElPTl9BUkdf
U1RSSU5HLCAmdGltZVpvbmUsICJTZXQgdGltZSB6b25lIiwgIlRJTUVaT05FIiB9LAogICAgIHsg
InZlcnNpb24iLCAndicsIDAsIEdfT1BUSU9OX0FSR19OT05FLCAmcHJpbnRWZXJzaW9uLCAiUHJp
bnQgdGhlIFdQRSB2ZXJzaW9uIiwgbnVsbHB0ciB9LAogICAgIHsgR19PUFRJT05fUkVNQUlOSU5H
LCAwLCAwLCBHX09QVElPTl9BUkdfRklMRU5BTUVfQVJSQVksICZ1cmlBcmd1bWVudHMsIG51bGxw
dHIsICJbVVJMXSIgfSwKICAgICB7IG51bGxwdHIsIDAsIDAsIEdfT1BUSU9OX0FSR19OT05FLCBu
dWxscHRyLCBudWxscHRyLCBudWxscHRyIH0KQEAgLTIxOCw3ICsyMjAsNyBAQCBpbnQgbWFpbihp
bnQgYXJnYywgY2hhciAqYXJndltdKQogCiAgICAgYXV0byogbWFuYWdlciA9IChwcml2YXRlTW9k
ZSB8fCBhdXRvbWF0aW9uTW9kZSkgPyB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfbmV3X2Vw
aGVtZXJhbCgpIDogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX25ldyhudWxscHRyKTsKICAg
ICB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfc2V0X2l0cF9lbmFibGVkKG1hbmFnZXIsIGVu
YWJsZUlUUCk7Ci0gICAgYXV0byogd2ViQ29udGV4dCA9IHdlYmtpdF93ZWJfY29udGV4dF9uZXdf
d2l0aF93ZWJzaXRlX2RhdGFfbWFuYWdlcihtYW5hZ2VyKTsKKyAgICBhdXRvKiB3ZWJDb250ZXh0
ID0gV0VCS0lUX1dFQl9DT05URVhUKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfQ09OVEVY
VCwgIndlYnNpdGUtZGF0YS1tYW5hZ2VyIiwgbWFuYWdlciwgInRpbWUtem9uZS1vdmVycmlkZSIs
IHRpbWVab25lLCBudWxscHRyKSk7CiAgICAgZ19vYmplY3RfdW5yZWYobWFuYWdlcik7CiAKICAg
ICBpZiAoY29va2llc1BvbGljeSkgewpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1NDljM2U1
ODllYWVmMmQyYTUzMmIzYWM1Y2Q3NTA2Nzg0YjM5NTBhLi4yYjA3YzllMjUwZmFhOTAwZWFmYzAx
ODdhYTE5YjhiMGE2MjM2ODMxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODI4LDYgKzgy
OCw3IEBACiAJCTk5ODRGQUNFMUNGRkIwOTAwMDhEMTk4QyAvKiBlZGl0YWJsZS1ib2R5Lmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk4
NEZBQ0QxQ0ZGQjAzODAwOEQxOThDIC8qIGVkaXRhYmxlLWJvZHkuaHRtbCAqLzsgfTsKIAkJOTk5
OTEwOEIxRjM5M0M5NjAwOEFENDU1IC8qIENvcHlpbmcubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTk5MTA4QTFGMzkzQzhCMDA4QUQ0NTUgLyogQ29w
eWluZy5tbSAqLzsgfTsKIAkJOTlCNEY5QzYyNEVERUQ5NzAwMDIyQjgyIC8qIFdLSW5zcGVjdG9y
RGVsZWdhdGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5OUI0RjlDNTI0RURFRDk2MDAwMjJCODIgLyogV0tJbnNwZWN0b3JEZWxlZ2F0ZS5tbSAqLzsg
fTsKKwkJOUExOEU0MTkyNEI2MUJFODAwMEJCMzUxIC8qIFRpbWVab25lT3ZlcnJpZGUubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QTE4RTQxNzI0QjYx
NUQ5MDAwQkIzNTEgLyogVGltZVpvbmVPdmVycmlkZS5tbSAqLzsgfTsKIAkJOUIwMkUwRDYyMzVG
QTQ3RDAwNDA0NEIyIC8qIFRleHRNYW5pcHVsYXRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAyRTBENTIzNUZBNDdEMDA0MDQ0QjIgLyogVGV4
dE1hbmlwdWxhdGlvbi5tbSAqLzsgfTsKIAkJOUIwNzg2QTUxQzU4ODVDMzAwRDE1OUUzIC8qIElu
amVjdGVkQnVuZGxlTWFrZUFsbFNoYWRvd1Jvb3RzT3Blbl9CdW5kbGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwNzg2QTQxQzU4ODVDMzAwRDE1
OUUzIC8qIEluamVjdGVkQnVuZGxlTWFrZUFsbFNoYWRvd1Jvb3RzT3Blbl9CdW5kbGUuY3BwICov
OyB9OwogCQk5QjBDMDUxOTI0RkRGQjdEMDBGMkZFMzEgLyogQ29tcGFjdFVuaXF1ZVB0clR1cGxl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMEMw
NTE4MjRGREZCNzAwMEYyRkUzMSAvKiBDb21wYWN0VW5pcXVlUHRyVHVwbGUuY3BwICovOyB9OwpA
QCAtMjQyNSw2ICsyNDI2LDcgQEAKIAkJOTk4NEZBQ0QxQ0ZGQjAzODAwOEQxOThDIC8qIGVkaXRh
YmxlLWJvZHkuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJlZGl0YWJsZS1ib2R5
Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTk5MTA4QTFGMzkzQzhCMDA4
QUQ0NTUgLyogQ29weWluZy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IENvcHlpbmcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5QjRGOUM1MjRF
REVEOTYwMDAyMkI4MiAvKiBXS0luc3BlY3RvckRlbGVnYXRlLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tJbnNwZWN0b3JEZWxlZ2F0ZS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUExOEU0MTcyNEI2MTVEOTAwMEJCMzUxIC8qIFRpbWVab25l
T3ZlcnJpZGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBUaW1l
Wm9uZU92ZXJyaWRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjAyRTBENTIz
NUZBNDdEMDA0MDQ0QjIgLyogVGV4dE1hbmlwdWxhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFRleHRNYW5pcHVsYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlC
MDc4NkEyMUM1ODgzMEYwMEQxNTlFMyAvKiBJbmplY3RlZEJ1bmRsZU1ha2VBbGxTaGFkb3dSb290
c09wZW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5qZWN0ZWRC
dW5kbGVNYWtlQWxsU2hhZG93Um9vdHNPcGVuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOUIwNzg2QTQxQzU4ODVDMzAwRDE1OUUzIC8qIEluamVjdGVkQnVuZGxlTWFrZUFsbFNo
YWRvd1Jvb3RzT3Blbl9CdW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSW5qZWN0ZWRCdW5kbGVNYWtlQWxsU2hhZG93Um9vdHNPcGVuX0J1bmRsZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMzQ4LDYgKzMzNTAsNyBAQAogCQkJCTlCMDJF
MEQ1MjM1RkE0N0QwMDQwNDRCMiAvKiBUZXh0TWFuaXB1bGF0aW9uLm1tICovLAogCQkJCTVDMTZG
OEZCMjMwQzk0MkIwMDc0QzRBOCAvKiBUZXh0U2l6ZS5tbSAqLywKIAkJCQlDMjJGQTMyQTIyOEY4
NzA4MDA5RDc5ODggLyogVGV4dFdpZHRoLm1tICovLAorCQkJCTlBMThFNDE3MjRCNjE1RDkwMDBC
QjM1MSAvKiBUaW1lWm9uZU92ZXJyaWRlLm1tICovLAogCQkJCTVDNzNBODFBMjMyMzA1OTgwMERF
QTg1QSAvKiBUTFNEZXByZWNhdGlvbi5tbSAqLywKIAkJCQlDREUxOTVCMzFDRkUwQURFMDA1M0Qy
NTYgLyogVG9wQ29udGVudEluc2V0Lm1tICovLAogCQkJCTVDQjQwQjREMUY0Qjk4QkUwMDdEQzdC
OSAvKiBVSURlbGVnYXRlLm1tICovLApAQCAtNTQxNyw2ICs1NDIwLDcgQEAKIAkJCQk1QzE2RjhG
QzIzMEM5NDM3MDA3NEM0QTggLyogVGV4dFNpemUubW0gaW4gU291cmNlcyAqLywKIAkJCQlDMjJG
QTMyQjIyOEY4NzA4MDA5RDc5ODggLyogVGV4dFdpZHRoLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
N0NDRTdFREQxQTQxMUE5MjAwNDQ3QzRDIC8qIFRpbWVSYW5nZXMuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJOUExOEU0MTkyNEI2MUJFODAwMEJCMzUxIC8qIFRpbWVab25lT3ZlcnJpZGUubW0gaW4g
U291cmNlcyAqLywKIAkJCQk3QzgzRTBCRDFEMEE2NTBDMDBGRUJDRjMgLyogVG9wQ29udGVudElu
c2V0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRDMxQTQxMUE3RTAwNDQ3QzRDIC8qIFR5
cGluZ1N0eWxlQ3Jhc2gubW0gaW4gU291cmNlcyAqLywKIAkJCQk1NzE1MkI3ODIxREQ0RThEMDAw
QzM3Q0EgLyogVTJmQ29tbWFuZENvbnN0cnVjdG9yVGVzdC5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVGltZVpvbmVP
dmVycmlkZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVGltZVpv
bmVPdmVycmlkZS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMzg1ZDQzNTg0MTliMmMyNDgyMTk0MWE0OTQ3ZGEy
Y2U3ZGY4ZTdmCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9UaW1lWm9uZU92ZXJyaWRlLm1tCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmln
LmgiCisKKyNpZiBQTEFURk9STShNQUMpCisKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgi
CisjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Q29u
ZmlndXJhdGlvblByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+
CisjaW1wb3J0IDxXZWJLaXQvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg+CisjaW1wb3J0
IDx3dGYvRnVuY3Rpb24uaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitjbGFz
cyBUaW1lWm9uZU92ZXJyaWRlVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK3B1YmxpYzoK
KyAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGF1dG8gY29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Cisg
ICAgICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWcgPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgICAgIFtwcm9jZXNzUG9vbENvbmZpZyBz
ZXRUaW1lWm9uZU92ZXJyaWRlOkAiRXVyb3BlL0JlcmxpbiJdOworCisgICAgICAgIF93ZWJWaWV3
ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVj
dCgwLCAwLCAzMDAsIDMwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIHByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZy5nZXQoKV0pOworICAgIH0KKwor
ICAgIHZvaWQgcnVuU2NyaXB0QW5kRXhlY3V0ZUNhbGxiYWNrKGNvbnN0IFN0cmluZyYgc2NyaXB0
LCBGdW5jdGlvbjx2b2lkKGlkKT4mJiBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIGJvb2wgY29t
cGxldGUgPSBmYWxzZTsKKyAgICAgICAgW193ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpzY3Jp
cHQgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKikgeworICAgICAg
ICAgICAgY2FsbGJhY2socmVzdWx0KTsKKyAgICAgICAgICAgIGNvbXBsZXRlID0gdHJ1ZTsKKyAg
ICAgICAgfV07CisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmY29tcGxldGUpOwor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gX3dlYlZpZXc7
Cit9OworCitURVNUX0YoVGltZVpvbmVPdmVycmlkZVRlc3QsIFRpbWVab25lT3ZlcnJpZGUpCit7
CisgICAgcnVuU2NyaXB0QW5kRXhlY3V0ZUNhbGxiYWNrKCJsZXQgbm93ID0gbmV3IERhdGUoKTsg
bm93LmdldFRpbWV6b25lT2Zmc2V0KCkiLCBbXShpZCByZXN1bHQpIHsKKyAgICAgICAgRVhQRUNU
X1dLX1NUUkVRKFtyZXN1bHQgc3RyaW5nVmFsdWVdLCAiLTEyMCIpOworICAgIH0pOworfQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9U
ZXN0V2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEdMaWIvVGVzdFdlYktpdFdlYkNvbnRleHQuY3BwCmluZGV4IGIwODJjNWJiNmJhYjAxMjQ4YTYx
MzhiY2M0Y2U0NmRmODVjNmU5YjQuLjc4ODlmMWZiMGEwNmUzYTI1MGE1Yjg5ZjlmOWRjNmI3NDk0
NzRmYTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9U
ZXN0V2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtMzg2LDYgKzM4NiwyNiBAQCBz
dGF0aWMgdm9pZCB0ZXN0V2ViQ29udGV4dExhbmd1YWdlcyhXZWJWaWV3VGVzdCogdGVzdCwgZ2Nv
bnN0cG9pbnRlcikKICAgICBnX2Fzc2VydF9lcnJvcihlcnJvci5nZXQoKSwgV0VCS0lUX0pBVkFT
Q1JJUFRfRVJST1IsIFdFQktJVF9KQVZBU0NSSVBUX0VSUk9SX1NDUklQVF9GQUlMRUQpOwogfQog
CisKK3N0YXRpYyB2b2lkIHRlc3RXZWJDb250ZXh0VGltZVpvbmVPdmVycmlkZShXZWJWaWV3VGVz
dCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJy
b3I7CisgICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdCA9IHRlc3Qt
PnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgibGV0IG5vdyA9IG5ldyBEYXRlKCk7
IG5vdy5nZXRUaW1lem9uZU9mZnNldCgpIiwgJmVycm9yLm91dFB0cigpKTsKKyAgICBnX2Fzc2Vy
dF9ub25udWxsKGphdmFzY3JpcHRSZXN1bHQpOworICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9y
LmdldCgpKTsKKyAgICAvLyBCeSBkZWZhdWx0IHRoZSB0ZXN0IGhhcm5lc3MgdXNlcyB0aGUgUGFj
aWZpYy9Mb3NfQW5nZWxlcyB0aW1lem9uZSB3aGljaCBpcyArNyBob3VycyAoNDIwIG1pbnV0ZXMp
IGNvbXBhcmVkIHRvIEdNVC4KKyAgICBnX2Fzc2VydF9jbXBpbnQoV2ViVmlld1Rlc3Q6OmphdmFz
Y3JpcHRSZXN1bHRUb051bWJlcihqYXZhc2NyaXB0UmVzdWx0KSwgPT0sIDQyMCk7CisKKyAgICAv
LyBDcmVhdGUgYSBuZXcgY29udGV4dCBjb25maWd1cmVkIHdpdGggdGltZSB6b25lIG92ZXJpZGUg
c2V0IHRvIEJlcmxpbiB3aGljaCBpcyAxMjAgbWludXRlcyBhaGVhZCBvZiB0aGUgR01UIG9mZnNl
dC4KKyAgICBhdXRvIHdlYkNvbnRleHQgPSBhZG9wdEdSZWYoV0VCS0lUX1dFQl9DT05URVhUKGdf
b2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfQ09OVEVYVCwKKyAgICAgICAgInRpbWUtem9uZS1v
dmVycmlkZSIsICJFdXJvcGUvQmVybGluIiwgbnVsbHB0cikpKTsKKyAgICBhdXRvIHdlYlZpZXcg
PSBUZXN0OjphZG9wdFZpZXcoVGVzdDo6Y3JlYXRlV2ViVmlldyh3ZWJDb250ZXh0LmdldCgpKSk7
CisgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxG
aW5pc2hlZCgibGV0IG5vdyA9IG5ldyBEYXRlKCk7IG5vdy5nZXRUaW1lem9uZU9mZnNldCgpIiwg
JmVycm9yLm91dFB0cigpLCB3ZWJWaWV3LmdldCgpKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGph
dmFzY3JpcHRSZXN1bHQpOworICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKKyAg
ICBnX2Fzc2VydF9jbXBpbnQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb051bWJlcihq
YXZhc2NyaXB0UmVzdWx0KSwgPT0sIC0xMjApOworfQorCiBzdGF0aWMgdm9pZCBzZXJ2ZXJDYWxs
YmFjayhTb3VwU2VydmVyKiBzZXJ2ZXIsIFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBjb25zdCBjaGFy
KiBwYXRoLCBHSGFzaFRhYmxlKiwgU291cENsaWVudENvbnRleHQqLCBncG9pbnRlcikKIHsKICAg
ICBpZiAobWVzc2FnZS0+bWV0aG9kICE9IFNPVVBfTUVUSE9EX0dFVCkgewpAQCAtNzY1LDYgKzc4
NSw3IEBAIHZvaWQgYmVmb3JlQWxsKCkKICAgICBTZWN1cml0eVBvbGljeVRlc3Q6OmFkZCgiV2Vi
S2l0U2VjdXJpdHlNYW5hZ2VyIiwgInNlY3VyaXR5LXBvbGljeSIsIHRlc3RXZWJDb250ZXh0U2Vj
dXJpdHlQb2xpY3kpOwogICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFNlY3VyaXR5TWFuYWdl
ciIsICJmaWxlLXhociIsIHRlc3RXZWJDb250ZXh0U2VjdXJpdHlGaWxlWEhSKTsKICAgICBQcm94
eVRlc3Q6OmFkZCgiV2ViS2l0V2ViQ29udGV4dCIsICJwcm94eSIsIHRlc3RXZWJDb250ZXh0UHJv
eHlTZXR0aW5ncyk7CisgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViQ29udGV4dCIsICJ0
aW1lem9uZSIsIHRlc3RXZWJDb250ZXh0VGltZVpvbmVPdmVycmlkZSk7CiB9CiAKIHZvaWQgYWZ0
ZXJBbGwoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIv
VGVzdE1haW4uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvVGVzdE1h
aW4uY3BwCmluZGV4IGZhNWJlMTYyNzJkYzI2NWFhMzk1NjIwYjE2OTEyNjdlYmFjOWQ5MzUuLjVl
YTM2NWVhMDY1NTZhZTc0ODFiYmRhN2Y0YjY0NTM2ZTk3Njc4YTYgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1Rlc3RNYWluLmNwcAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9UZXN0TWFpbi5jcHAKQEAgLTEyOSw2ICsxMjks
NyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAgICAgZ19zZXRlbnYoIkdTRVRU
SU5HU19CQUNLRU5EIiwgIm1lbW9yeSIsIFRSVUUpOwogICAgIC8vIEdldCByaWQgb2YgcnVudGlt
ZSB3YXJuaW5ncyBhYm91dCBkZXByZWNhdGVkIHByb3BlcnRpZXMgYW5kIHNpZ25hbHMsIHNpbmNl
IHRoZXkgYnJlYWsgdGhlIHRlc3RzLgogICAgIGdfc2V0ZW52KCJHX0VOQUJMRV9ESUFHTk9TVElD
IiwgIjAiLCBUUlVFKTsKKyAgICBnX3NldGVudigiVFoiLCAiQW1lcmljYS9Mb3NfQW5nZWxlcyIs
IFRSVUUpOwogICAgIGdfdGVzdF9idWdfYmFzZSgiaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvIik7
CiAKICAgICByZWdpc3RlckdSZXNvdXJjZSgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuY3BwCmluZGV4IDdhMTNlYjhmODQwMmRmMDUx
N2FmMDY4ZDkxZDJhZmNkMDlkZTk2NDYuLjMxOGNkZTk4MzBhYWU0YjEyNDNlMmY5YTAyNWIzNDY3
ZjYwZmFiMjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGli
L1dlYlZpZXdUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xp
Yi9XZWJWaWV3VGVzdC5jcHAKQEAgLTI4Miw5ICsyODIsOSBAQCBjb25zdCBjaGFyKiBXZWJWaWV3
VGVzdDo6bWFpblJlc291cmNlRGF0YShzaXplX3QmIG1haW5SZXNvdXJjZURhdGFTaXplKQogICAg
IHJldHVybiBtX3Jlc291cmNlRGF0YS5nZXQoKTsKIH0KIAotc3RhdGljIHZvaWQgcnVuSmF2YVNj
cmlwdFJlYWR5Q2FsbGJhY2soR09iamVjdCosIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBXZWJWaWV3
VGVzdCogdGVzdCkKK3N0YXRpYyB2b2lkIHJ1bkphdmFTY3JpcHRSZWFkeUNhbGxiYWNrKEdPYmpl
Y3QqIG9iamVjdCwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIFdlYlZpZXdUZXN0KiB0ZXN0KQogewot
ICAgIHRlc3QtPm1famF2YXNjcmlwdFJlc3VsdCA9IHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNj
cmlwdF9maW5pc2godGVzdC0+bV93ZWJWaWV3LCByZXN1bHQsIHRlc3QtPm1famF2YXNjcmlwdEVy
cm9yKTsKKyAgICB0ZXN0LT5tX2phdmFzY3JpcHRSZXN1bHQgPSB3ZWJraXRfd2ViX3ZpZXdfcnVu
X2phdmFzY3JpcHRfZmluaXNoKFdFQktJVF9XRUJfVklFVyhvYmplY3QpLCByZXN1bHQsIHRlc3Qt
Pm1famF2YXNjcmlwdEVycm9yKTsKICAgICBnX21haW5fbG9vcF9xdWl0KHRlc3QtPm1fbWFpbkxv
b3ApOwogfQogCkBAIC0zMDAsMTMgKzMwMCwxNSBAQCBzdGF0aWMgdm9pZCBydW5KYXZhU2NyaXB0
SW5Xb3JsZFJlYWR5Q2FsbGJhY2soR09iamVjdCosIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBXZQog
ICAgIGdfbWFpbl9sb29wX3F1aXQodGVzdC0+bV9tYWluTG9vcCk7CiB9CiAKLVdlYktpdEphdmFz
Y3JpcHRSZXN1bHQqIFdlYlZpZXdUZXN0OjpydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNo
ZWQoY29uc3QgY2hhciogamF2YXNjcmlwdCwgR0Vycm9yKiogZXJyb3IpCitXZWJLaXRKYXZhc2Ny
aXB0UmVzdWx0KiBXZWJWaWV3VGVzdDo6cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVk
KGNvbnN0IGNoYXIqIGphdmFzY3JpcHQsIEdFcnJvcioqIGVycm9yLCBXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3KQogewogICAgIGlmIChtX2phdmFzY3JpcHRSZXN1bHQpCiAgICAgICAgIHdlYmtpdF9q
YXZhc2NyaXB0X3Jlc3VsdF91bnJlZihtX2phdmFzY3JpcHRSZXN1bHQpOwogICAgIG1famF2YXNj
cmlwdFJlc3VsdCA9IDA7CiAgICAgbV9qYXZhc2NyaXB0RXJyb3IgPSBlcnJvcjsKLSAgICB3ZWJr
aXRfd2ViX3ZpZXdfcnVuX2phdmFzY3JpcHQobV93ZWJWaWV3LCBqYXZhc2NyaXB0LCAwLCByZWlu
dGVycHJldF9jYXN0PEdBc3luY1JlYWR5Q2FsbGJhY2s+KHJ1bkphdmFTY3JpcHRSZWFkeUNhbGxi
YWNrKSwgdGhpcyk7CisgICAgaWYgKCF3ZWJWaWV3KQorICAgICAgICB3ZWJWaWV3ID0gbV93ZWJW
aWV3OworICAgIHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlwdCh3ZWJWaWV3LCBqYXZhc2Ny
aXB0LCAwLCByZWludGVycHJldF9jYXN0PEdBc3luY1JlYWR5Q2FsbGJhY2s+KHJ1bkphdmFTY3Jp
cHRSZWFkeUNhbGxiYWNrKSwgdGhpcyk7CiAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3Ap
OwogCiAgICAgcmV0dXJuIG1famF2YXNjcmlwdFJlc3VsdDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmggYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5oCmluZGV4IDcwZDc5MzdhOGFiNWVi
YTFlZTA0MTRmZTU3MjFlNDRjMTdkM2U5MjUuLjQ5ZGVjNTNhOGI2MWI5NzU5OTJjNGVkMDY3MTZl
ZDk2N2QwZTMxMzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRH
TGliL1dlYlZpZXdUZXN0LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdM
aWIvV2ViVmlld1Rlc3QuaApAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbWl0
UG9wdXBNZW51U2lnbmFsKCk7CiAjZW5kaWYKIAotICAgIFdlYktpdEphdmFzY3JpcHRSZXN1bHQq
IHJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZChjb25zdCBjaGFyKiBqYXZhc2NyaXB0
LCBHRXJyb3IqKik7CisgICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogcnVuSmF2YVNjcmlwdEFu
ZFdhaXRVbnRpbEZpbmlzaGVkKGNvbnN0IGNoYXIqIGphdmFzY3JpcHQsIEdFcnJvcioqLCBXZWJL
aXRXZWJWaWV3KiA9IG51bGxwdHIpOwogICAgIFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIHJ1bkph
dmFTY3JpcHRGcm9tR1Jlc291cmNlQW5kV2FpdFVudGlsRmluaXNoZWQoY29uc3QgY2hhciogcmVz
b3VyY2UsIEdFcnJvcioqKTsKICAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBydW5KYXZhU2Ny
aXB0SW5Xb3JsZEFuZFdhaXRVbnRpbEZpbmlzaGVkKGNvbnN0IGNoYXIqIGphdmFzY3JpcHQsIGNv
bnN0IGNoYXIqIHdvcmxkLCBHRXJyb3IqKik7CiAgICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCog
cnVuSmF2YVNjcmlwdFdpdGhvdXRGb3JjZWRVc2VyR2VzdHVyZXNBbmRXYWl0VW50aWxGaW5pc2hl
ZChjb25zdCBjaGFyKiBqYXZhc2NyaXB0LCBHRXJyb3IqKik7CmRpZmYgLS1naXQgYS9Ub29scy9m
bGF0cGFrL2ZsYXRwYWt1dGlscy5weSBiL1Rvb2xzL2ZsYXRwYWsvZmxhdHBha3V0aWxzLnB5Cmlu
ZGV4IDViMTZkNDQzMDQyOWY2MDFiNWYzNjljNGNhM2Q2ZjNkYzIxYzMyODYuLjNhN2YxMTM3YmI5
ZTliNzU3NGQwNDRmNjgyMWJiNWYzODM5YTAzZjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2ZsYXRwYWsv
ZmxhdHBha3V0aWxzLnB5CisrKyBiL1Rvb2xzL2ZsYXRwYWsvZmxhdHBha3V0aWxzLnB5CkBAIC03
MTksNyArNzE5LDcgQEAgY2xhc3MgV2Via2l0RmxhdHBhazoKICAgICAgICAgICAgIF0pCiAKICAg
ICAgICAgICAgIHNhbmRib3hfZW52aXJvbm1lbnQudXBkYXRlKHsKLSAgICAgICAgICAgICAgICAi
VFoiOiAiUFNUOFBEVCIsCisgICAgICAgICAgICAgICAgIlRaIjogIkFtZXJpY2EvTG9zX0FuZ2Vs
ZXMiLAogICAgICAgICAgICAgfSkKIAogICAgICAgICBlbnZfdmFyX3ByZWZpeGVzX3RvX2tlZXAg
PSBbCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411545</attachid>
            <date>2020-10-16 01:17:38 -0700</date>
            <delta_ts>2022-04-15 12:05:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213884-20201016011736.patch</filename>
            <type>text/plain</type>
            <size>47405</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MTg5ZGFhOWFmZTBlOWU3MjQxMDFkYzRhYWI0OTRiMGUxOTI5Y2U1Li5mZTVmOGY5MjMwOTUwMGVh
YzdhOTYwMmQ3YjViMWZiYThjYWRmYjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAyMC0wNy0xNyAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxp
YS5jb20+IGFuZCBQYXZlbCBGZWxkbWFuIDxwYXZlbC5mZWxkbWFuQGdtYWlsLmNvbT4KKworICAg
ICAgICBbV0syXSBBZGQgQVBJIHRvIGFsbG93IGVtYmVkZGVyIHRvIHNldCBhIHRpbWV6b25lIG92
ZXJyaWRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTM4ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHJ1bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwOgorICAgICAgICAoSlNDOjpmb3JtYXREYXRlVGlt
ZSk6IEZvcm1hdCB0aGUgb3ZlcnJpZGRlbiB0aW1lem9uZSBpZiBpdCdzIGVuYWJsZWQuCisgICAg
ICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwOgorICAgICAgICAoSlNDOjpkZWZh
dWx0VGltZVpvbmUpOiBSZXR1cm4gdGhlIG92ZXJyaWRkZW4gdGltZXpvbmUgaWYgaXQncyBlbmFi
bGVkLgorCiAyMDIwLTEwLTE1ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAg
ICAgICAgIERvbid0IGFzc2lnbiBhIGJvZ3VzIHJlZ2lzdGVyIHRvIExvYWQvRm9yd2FyZFZhcmFy
Z3MgaW4gQXZhaWxhYmlsaXR5QW5hbHlzaXMgYmVmb3JlIHN0YWNrIGxheW91dApkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBjZWZh
ZDI2MjZiYWZlM2M2ZTk5MTMwZDNlZTYwOTc4ZDhkNjU2ZGEyLi5mZDUwOWY1MTA0NjE0YmQxNWI1
ZTg5NDlhZmVhOTI2YTZkYWI3N2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIwLTA3LTE3ICBQ
aGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4gYW5kIFBhdmVsIEZlbGRtYW4g
PHBhdmVsLmZlbGRtYW5AZ21haWwuY29tPgorCisgICAgICAgIFtXSzJdIEFkZCBBUEkgdG8gYWxs
b3cgZW1iZWRkZXIgdG8gc2V0IGEgdGltZXpvbmUgb3ZlcnJpZGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzg4NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0RhdGVNYXRoLmNwcDogQWRkIG5l
dyBBUElzIHRvIGNvbnRyb2wgYW5kIHF1ZXJ5IHRoZSB0aW1lem9uZSBvdmVycmlkZS4KKyAgICAg
ICAgKFdURjo6aW5uZXJUaW1lWm9uZU92ZXJyaWRlKTogU3RhdGljIHN0b3JhZ2Ugb2YgdGhlIG92
ZXJyaWRlIGluZm9ybWF0aW9ucy4KKyAgICAgICAgKFdURjo6Y2FsY3VsYXRlTG9jYWxUaW1lT2Zm
c2V0KTogQ2FsY3VsYXRlIG9mZnNldCBmb3Igb3ZlcnJpZGRlbiB0aW1lem9uZSwgaWYgaXQncyBw
cmVzZW50LgorICAgICAgICAoV1RGOjppc1RpbWVab25lVmFsaWQpOiBOZXcgZnVuY3Rpb24gYWxs
b3dpbmcgdG8gY2hlY2sgaWYgYSB0aW1lem9uZSBpZGVudGlmaWVyIGlzIHZhbGlkIGFjY29yZGlu
ZyB0byBJQ1UncyBkYXRhYmFzZS4KKyAgICAgICAgKFdURjo6c2V0VGltZVpvbmVPdmVycmlkZSk6
IE5ldyBBUEkgdG8gc2V0IHRoZSB0aW1lem9uZSBvdmVycmlkZSwgdGhpcyBpcyBtZWFudCB0byBi
ZQorICAgICAgICB1c2VkIG9uIG5ld2x5IGNyZWF0ZWQgV2ViUHJvY2Vzc2VzLgorICAgICAgICAo
V1RGOjp0aW1lWm9uZU92ZXJyaWRlKTpRdWVyeSB0aGUgdGltZXpvbmUgb3ZlcnJpZGUuCisgICAg
ICAgIChXVEY6OnRpbWVab25lRGlzcGxheU5hbWVPdmVycmlkZSk6IEdldCB0aGUgdGltZXpvbmUg
bmFtZSBvZiB0aGUgb3ZlcnJpZGRlbiB0aW1lem9uZS4KKyAgICAgICAgKiB3dGYvRGF0ZU1hdGgu
aDoKKwogMjAyMC0xMC0xNSAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFtXZWJBdXRobl0gTW92ZSBBcHBBdHRlc3RJbnRlcm5hbCByZWxhdGVkIGNvZGUgZnJv
bSBXS0EgdG8gT3BlblNvdXJjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAwYjBmZTg2YTUxNzQ2MzBmNmU2N2MzMTI4
NDI4MzkyYmQ3NmViZDNmLi4wYTdjZDZmZDZlYjM0MjU0ZjIwN2E0ZWVkMzQzM2IwNGVkMGIwNWU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIwLTA3LTE3ICBQaGlsaXBwZSBOb3JtYW5k
ICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbV0syXSBBZGQgQVBJIHRvIGFsbG93
IGVtYmVkZGVyIHRvIHNldCBhIHRpbWV6b25lIG92ZXJyaWRlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM4ODQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHM6CisKKyAgICAgICAg
LSBuZXcgQ29jb2EgQVBJCisgICAgICAgIC0gbmV3IEdsaWIgQVBJICh0YXJnZXR0aW5nIGJvdGgg
V1BFIGFuZCBHVEsgcG9ydHMpCisgICAgICAgIC0gbmV3IEMgQVBJIChmb3IgdGhlIHdpbiBwb3J0
KQorCisgICAgICAgIHRoYXQgYWxsb3dzIHRoZSBlbWJlZGRlciB0byBzZXQgYSB0aW1lem9uZSBv
dmVycmlkZSBmb3IgdGhlIHVuZGVybHlpbmcgUGFnZUNvbmZpZ3VyYXRpb24uCisgICAgICAgIFNp
bmNlIHRoaXMgQVBJIGlzIG5vdCBleHBvc2VkIGluIGdsaWIgcG9ydHMsIGEgbmV3IGNvbnRydWN0
LXRpbWUtb25seSBwcm9wZXJ0eSB3YXMgYWRkZWQgdG8KKyAgICAgICAgdGhlIFdlYktpdFdlYkNv
bnRleHQgQVBJLiBJdCB3b3VsZCBhbHNvIGFsbG93IGZpbmUtZ3JhaW5lZCBjb250cm9sIG92ZXIg
bXVsdGlwbGUgcGFnZXMsIGZvcgorICAgICAgICBpbnN0YW5jZSBpdCdzIG5vdCBwb3NzaWJsZSBj
dXJyZW50bHkgdG8gaGF2ZSB0d28gcGFnZXMgaW4gZGlmZmVyZW50IHRpbWV6b25lcy4KKworICAg
ICAgICBObyBuZXcgbGF5b3V0IHRlc3RzLCB0aGlzIGNoYW5nZSBpcyBjb3ZlcmVkIGJ5IG5ldyBB
UEkgdGVzdHMuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29k
ZSk6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKEFQ
STo6UGFnZUNvbmZpZ3VyYXRpb246OmNvcHkgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRp
b246OnNldFRpbWVab25lT3ZlcnJpZGUpOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlv
bjo6dGltZVpvbmVPdmVycmlkZSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tOgorICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1
cmF0aW9uIF90aW1lWm9uZU92ZXJyaWRlXSk6CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gX3NldFRpbWVab25lT3ZlcnJpZGU6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYkNvbnRl
eHRHZXRQcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRXZWJDb250ZXh0U2V0UHJvcGVydHkpOgor
ICAgICAgICAod2Via2l0X3dlYl9jb250ZXh0X2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0
V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGlvblBh
cmFtZXRlcnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6bV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zKToKKwog
MjAyMC0xMC0xNSAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFtXZWJBdXRobl0gTW92ZSBBcHBBdHRlc3RJbnRlcm5hbCByZWxhdGVkIGNvZGUgZnJvbSBXS0Eg
dG8gT3BlblNvdXJjZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RGF0ZUNvbnZlcnNpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNv
bnZlcnNpb24uY3BwCmluZGV4IDk1NTc1NmJhNDA1ZjQwMDk3MDYxMGY5YTY4YzdlZDQyYTY3Y2Iw
MTUuLmViYzUzNGNiNDg1NDI5MDlhNjM1OTc5OTZmZmY5MTU0NTE3OGZlNTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb252ZXJzaW9uLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29udmVyc2lvbi5jcHAKQEAgLTEwMCwx
NyArMTAwLDI0IEBAIFN0cmluZyBmb3JtYXREYXRlVGltZShjb25zdCBHcmVnb3JpYW5EYXRlVGlt
ZSYgdCwgRGF0ZVRpbWVGb3JtYXQgZm9ybWF0LCBib29sIGFzCiAgICAgICAgICAgICBhcHBlbmRO
dW1iZXI8Mj4oYnVpbGRlciwgb2Zmc2V0IC8gNjApOwogICAgICAgICAgICAgYXBwZW5kTnVtYmVy
PDI+KGJ1aWxkZXIsIG9mZnNldCAlIDYwKTsKIAorICAgICAgICAgICAgU3RyaW5nIHRpbWVab25l
TmFtZTsKKyAgICAgICAgICAgIFN0cmluZyB0aW1lWm9uZU92ZXJyaWRlID0gV1RGOjp0aW1lWm9u
ZURpc3BsYXlOYW1lT3ZlcnJpZGUoKTsKKyAgICAgICAgICAgIGlmICghdGltZVpvbmVPdmVycmlk
ZS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgdGltZVpvbmVOYW1lID0gdGltZVpvbmVPdmVy
cmlkZTsKKyAgICAgICAgICAgIGVsc2UgewogI2lmIE9TKFdJTkRPV1MpCi0gICAgICAgICAgICBU
SU1FX1pPTkVfSU5GT1JNQVRJT04gdGltZVpvbmVJbmZvcm1hdGlvbjsKLSAgICAgICAgICAgIEdl
dFRpbWVab25lSW5mb3JtYXRpb24oJnRpbWVab25lSW5mb3JtYXRpb24pOwotICAgICAgICAgICAg
Y29uc3QgV0NIQVIqIHdpblRpbWVab25lTmFtZSA9IHQuaXNEU1QoKSA/IHRpbWVab25lSW5mb3Jt
YXRpb24uRGF5bGlnaHROYW1lIDogdGltZVpvbmVJbmZvcm1hdGlvbi5TdGFuZGFyZE5hbWU7Ci0g
ICAgICAgICAgICBTdHJpbmcgdGltZVpvbmVOYW1lKHdpblRpbWVab25lTmFtZSk7CisgICAgICAg
ICAgICAgICAgVElNRV9aT05FX0lORk9STUFUSU9OIHRpbWVab25lSW5mb3JtYXRpb247CisgICAg
ICAgICAgICAgICAgR2V0VGltZVpvbmVJbmZvcm1hdGlvbigmdGltZVpvbmVJbmZvcm1hdGlvbik7
CisgICAgICAgICAgICAgICAgY29uc3QgV0NIQVIqIHdpblRpbWVab25lTmFtZSA9IHQuaXNEU1Qo
KSA/IHRpbWVab25lSW5mb3JtYXRpb24uRGF5bGlnaHROYW1lIDogdGltZVpvbmVJbmZvcm1hdGlv
bi5TdGFuZGFyZE5hbWU7CisgICAgICAgICAgICAgICAgdGltZVpvbmVOYW1lID0gU3RyaW5nKHdp
blRpbWVab25lTmFtZSk7CiAjZWxzZQotICAgICAgICAgICAgc3RydWN0IHRtIGd0bSA9IHQ7Ci0g
ICAgICAgICAgICBjaGFyIHRpbWVab25lTmFtZVs3MF07Ci0gICAgICAgICAgICBzdHJmdGltZSh0
aW1lWm9uZU5hbWUsIHNpemVvZih0aW1lWm9uZU5hbWUpLCAiJVoiLCAmZ3RtKTsKKyAgICAgICAg
ICAgICAgICBzdHJ1Y3QgdG0gZ3RtID0gdDsKKyAgICAgICAgICAgICAgICBjaGFyIHR6TmFtZVs3
MF07CisgICAgICAgICAgICAgICAgc3RyZnRpbWUodHpOYW1lLCBzaXplb2YodHpOYW1lKSwgIiVa
IiwgJmd0bSk7CisgICAgICAgICAgICAgICAgdGltZVpvbmVOYW1lID0gU3RyaW5nKHR6TmFtZSk7
CiAjZW5kaWYKLSAgICAgICAgICAgIGlmICh0aW1lWm9uZU5hbWVbMF0pIHsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGlmICghdGltZVpvbmVOYW1lLmlzRW1wdHkoKSkgewogICAgICAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiICgiKTsKICAgICAgICAgICAgICAgICBidWls
ZGVyLmFwcGVuZCh0aW1lWm9uZU5hbWUpOwogICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCcpJyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0
ZVRpbWVGb3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVU
aW1lRm9ybWF0LmNwcAppbmRleCBmNTFjYjAyZWU4OGQ4NmM5OTdhMjMzMmM1Y2MwZDAxYjQ2NDFi
ZTFjLi5mNWZhOTc0NGZjNTVlNGZjZjkwNWExZmY0NDAzMDIwZDg4NmU1YzY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAK
QEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1
ZGUgPHVuaWNvZGUvdWNhbC5oPgogI2luY2x1ZGUgPHVuaWNvZGUvdWVudW0uaD4KKyNpbmNsdWRl
IDx3dGYvRGF0ZU1hdGguaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAj
aW5jbHVkZSA8d3RmL3VuaWNvZGUvaWN1L0lDVUhlbHBlcnMuaD4KIApAQCAtOTMsNiArOTQsMTAg
QEAgc3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBpc1VUQ0VxdWl2YWxlbnQoU3RyaW5nVmlldyB0
aW1lWm9uZSkKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtZGVmYXVsdHRpbWV6b25l
CiBzdGF0aWMgU3RyaW5nIGRlZmF1bHRUaW1lWm9uZSgpCiB7CisgICAgU3RyaW5nIHR6ID0gV1RG
Ojp0aW1lWm9uZU92ZXJyaWRlKCk7CisgICAgaWYgKCF0ei5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiB0ejsKKwogICAgIFN0cmluZyBjYW5vbmljYWw7CiAKICAgICBWZWN0b3I8VUNoYXIsIDMy
PiBidWZmZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5jcHAgYi9Tb3Vy
Y2UvV1RGL3d0Zi9EYXRlTWF0aC5jcHAKaW5kZXggYWY5MmY2NzQ3NzAzNDljYzhlN2JlOWE1M2Ix
Y2VlNmU3ODQwZTc4MS4uYzFjNmQ3NzIzMTEzNDY4ODQwYWQxYzhlMDljMmM1NWYxNzRmMDQ4ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRGF0ZU1hdGguY3BwCisrKyBiL1NvdXJjZS9XVEYv
d3RmL0RhdGVNYXRoLmNwcApAQCAtNzYsOSArNzYsMTQgQEAKICNpbmNsdWRlIDxsaW1pdHM+CiAj
aW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8dGltZS5oPgorI2luY2x1ZGUgPHVuaWNvZGUv
dWNhbC5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0FTQ0lJ
Q1R5cGUuaD4KKyNpbmNsdWRlIDx3dGYvTGFuZ3VhZ2UuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU3BlY2lmaWMuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3VuaWNvZGUvVVRGOENvbnZl
cnNpb24uaD4KIAogI2lmIE9TKFdJTkRPV1MpCiAjaW5jbHVkZSA8d2luZG93cy5oPgpAQCAtOTIs
NiArOTcsMTggQEAgdGVtcGxhdGU8dW5zaWduZWQgbGVuZ3RoPiBpbmxpbmUgYm9vbCBzdGFydHNX
aXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IGMKICAgICByZXR1cm4gZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCBsb3dlcmNhc2VMZXR0ZXJzLCBsZW5ndGggLSAx
KTsKIH0KIAorc3RydWN0IFRpbWVab25lT3ZlcnJpZGUgeworICAgIFVDYWxlbmRhciogY2FsIHsg
bnVsbHB0ciB9OworICAgIFN0cmluZyBpZDsKKyAgICBTdHJpbmcgZGlzcGxheU5hbWU7Cit9Owor
CitzdGF0aWMgVGltZVpvbmVPdmVycmlkZSYgaW5uZXJUaW1lWm9uZU92ZXJyaWRlKCkKK3sKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGltZVpvbmVPdmVycmlkZT4gdGltZVpvbmVPdmVycmlk
ZTsKKyAgICByZXR1cm4gdGltZVpvbmVPdmVycmlkZTsKK30KKwogLyogQ29uc3RhbnRzICovCiAK
IGNvbnN0IGNoYXIqIGNvbnN0IHdlZWtkYXlOYW1lWzddID0geyAiTW9uIiwgIlR1ZSIsICJXZWQi
LCAiVGh1IiwgIkZyaSIsICJTYXQiLCAiU3VuIiB9OwpAQCAtMzE4LDYgKzMzNSwxNCBAQCBzdGF0
aWMgZG91YmxlIGNhbGN1bGF0ZURTVE9mZnNldCh0aW1lX3QgbG9jYWxUaW1lLCBkb3VibGUgdXRj
T2Zmc2V0KQogLy8gUmV0dXJucyBjb21iaW5lZCBvZmZzZXQgaW4gbWlsbGlzZWNvbmQgKFVUQyAr
IERTVCkuCiBMb2NhbFRpbWVPZmZzZXQgY2FsY3VsYXRlTG9jYWxUaW1lT2Zmc2V0KGRvdWJsZSBt
cywgVGltZVR5cGUgaW5wdXRUaW1lVHlwZSkKIHsKKyAgICBhdXRvJiB0eiA9IGlubmVyVGltZVpv
bmVPdmVycmlkZSgpOworICAgIGlmICh0ei5jYWwpIHsKKyAgICAgICAgVUVycm9yQ29kZSBzdGF0
dXMgPSBVX1pFUk9fRVJST1I7CisgICAgICAgIHVjYWxfc2V0TWlsbGlzKHR6LmNhbCwgbXMsICZz
dGF0dXMpOworICAgICAgICBpbnQzMl90IG9mZnNldCA9IHVjYWxfZ2V0KHR6LmNhbCwgVUNBTF9a
T05FX09GRlNFVCwgJnN0YXR1cyk7CisgICAgICAgIGludDMyX3QgZHN0T2Zmc2V0ID0gdWNhbF9n
ZXQodHouY2FsLCBVQ0FMX0RTVF9PRkZTRVQsICZzdGF0dXMpOworICAgICAgICByZXR1cm4gTG9j
YWxUaW1lT2Zmc2V0KGRzdE9mZnNldCwgb2Zmc2V0ICsgZHN0T2Zmc2V0KTsKKyAgICB9CiAjaWYg
SEFWRShUTV9HTVRPRkYpCiAgICAgZG91YmxlIGxvY2FsVG9VVENUaW1lT2Zmc2V0ID0gaW5wdXRU
aW1lVHlwZSA9PSBMb2NhbFRpbWUgPyBjYWxjdWxhdGVVVENPZmZzZXQoKSA6IDA7CiAjZWxzZQpA
QCAtMTAxOSw0ICsxMDQ0LDc1IEBAIFN0cmluZyBtYWtlUkZDMjgyMkRhdGVTdHJpbmcodW5zaWdu
ZWQgZGF5T2ZXZWVrLCB1bnNpZ25lZCBkYXksIHVuc2lnbmVkIG1vbnRoLCB1CiAgICAgcmV0dXJu
IHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKIH0KIAorT3B0aW9uYWw8VmVjdG9yPFVDaGFyLCAz
Mj4+IGlzVGltZVpvbmVWYWxpZChjb25zdCBTdHJpbmcmIHRpbWVab25lKQoreworICAgIC8vIFRp
bWV6b25lIGlzIGFzY2lpLgorICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyKHRpbWVab25lLmxlbmd0
aCgpKTsKKyAgICBVQ2hhciogYnVmZmVyU3RhcnQgPSBidWZmZXIuZGF0YSgpOworICAgIENTdHJp
bmcgY3R6ID0gdGltZVpvbmUudXRmOCgpOworICAgIGlmICghVW5pY29kZTo6Y29udmVydFVURjhU
b1VURjE2KGN0ei5kYXRhKCksIGN0ei5kYXRhKCkgKyBjdHoubGVuZ3RoKCksICZidWZmZXJTdGFy
dCwgYnVmZmVyU3RhcnQgKyB0aW1lWm9uZS5sZW5ndGgoKSkpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisKKyAgICBWZWN0b3I8VUNoYXIsIDMyPiBjYW5vbmljYWxCdWZmZXIoMzIpOwor
ICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIGF1dG8gY2Fub25pY2Fs
TGVuZ3RoID0gdWNhbF9nZXRDYW5vbmljYWxUaW1lWm9uZUlEKGJ1ZmZlci5kYXRhKCksIGJ1ZmZl
ci5zaXplKCksIGNhbm9uaWNhbEJ1ZmZlci5kYXRhKCksIGNhbm9uaWNhbEJ1ZmZlci5zaXplKCks
IG51bGxwdHIsICZzdGF0dXMpOworICAgIGlmIChzdGF0dXMgPT0gVV9CVUZGRVJfT1ZFUkZMT1df
RVJST1IpIHsKKyAgICAgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgICAgICBjYW5vbmlj
YWxCdWZmZXIuZ3JvdyhjYW5vbmljYWxMZW5ndGgpOworICAgICAgICB1Y2FsX2dldENhbm9uaWNh
bFRpbWVab25lSUQoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSwgY2Fub25pY2FsQnVmZmVy
LmRhdGEoKSwgY2Fub25pY2FsTGVuZ3RoLCBudWxscHRyLCAmc3RhdHVzKTsKKyAgICB9IGVsc2UK
KyAgICAgICAgY2Fub25pY2FsQnVmZmVyLnJlc2l6ZShjYW5vbmljYWxMZW5ndGgpOworICAgIHJl
dHVybiBjYW5vbmljYWxCdWZmZXI7Cit9CisKK2Jvb2wgc2V0VGltZVpvbmVPdmVycmlkZShjb25z
dCBTdHJpbmcmIHRpbWVab25lKQoreworICAgIGlubmVyVGltZVpvbmVPdmVycmlkZSgpLmRpc3Bs
YXlOYW1lID0gU3RyaW5nKCk7CisgICAgaWYgKGlubmVyVGltZVpvbmVPdmVycmlkZSgpLmNhbCkg
eworICAgICAgICB1Y2FsX2Nsb3NlKGlubmVyVGltZVpvbmVPdmVycmlkZSgpLmNhbCk7CisgICAg
ICAgIGlubmVyVGltZVpvbmVPdmVycmlkZSgpLmNhbCA9IG51bGxwdHI7CisgICAgfQorCisgICAg
aWYgKHRpbWVab25lLmlzRW1wdHkoKSkgeworICAgICAgICBpbm5lclRpbWVab25lT3ZlcnJpZGUo
KS5pZCA9IFN0cmluZygpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBhdXRv
IGNhbm9uaWNhbEJ1ZmZlciA9IGlzVGltZVpvbmVWYWxpZCh0aW1lWm9uZSk7CisgICAgaWYgKCFj
YW5vbmljYWxCdWZmZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gY2Fub25p
Y2FsTGVuZ3RoID0gY2Fub25pY2FsQnVmZmVyLT5zaXplKCk7CisgICAgVUVycm9yQ29kZSBzdGF0
dXMgPSBVX1pFUk9fRVJST1I7CisgICAgVUNhbGVuZGFyKiBjYWwgPSB1Y2FsX29wZW4oY2Fub25p
Y2FsQnVmZmVyLT5kYXRhKCksIGNhbm9uaWNhbExlbmd0aCwgbnVsbHB0ciwgVUNBTF9UUkFESVRJ
T05BTCwgJnN0YXR1cyk7CisgICAgaWYgKCFVX1NVQ0NFU1Moc3RhdHVzKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgVmVjdG9yPFVDaGFyLCAzMj4gZGlzcGxheU5hbWVCdWZmZXIoMzIp
OworICAgIGF1dG8gZGlzcGxheU5hbWVMZW5ndGggPSB1Y2FsX2dldFRpbWVab25lRGlzcGxheU5h
bWUoY2FsLCBVQ0FMX1NUQU5EQVJELCBkZWZhdWx0TGFuZ3VhZ2UoKS51dGY4KCkuZGF0YSgpLCBk
aXNwbGF5TmFtZUJ1ZmZlci5kYXRhKCksIGRpc3BsYXlOYW1lQnVmZmVyLnNpemUoKSwgJnN0YXR1
cyk7CisgICAgaWYgKHN0YXR1cyA9PSBVX0JVRkZFUl9PVkVSRkxPV19FUlJPUikgeworICAgICAg
ICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgICAgIGRpc3BsYXlOYW1lQnVmZmVyLmdyb3co
ZGlzcGxheU5hbWVMZW5ndGgpOworICAgICAgICB1Y2FsX2dldFRpbWVab25lRGlzcGxheU5hbWUo
Y2FsLCBVQ0FMX1NUQU5EQVJELCBkZWZhdWx0TGFuZ3VhZ2UoKS51dGY4KCkuZGF0YSgpLCBkaXNw
bGF5TmFtZUJ1ZmZlci5kYXRhKCksIGRpc3BsYXlOYW1lTGVuZ3RoLCAmc3RhdHVzKTsKKyAgICB9
CisgICAgaWYgKCFVX1NVQ0NFU1Moc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgYXV0byYgdGltZVpvbmVPdmVycmlkZSA9IGlubmVyVGltZVpvbmVPdmVycmlkZSgpOworICAg
IHRpbWVab25lT3ZlcnJpZGUuY2FsID0gY2FsOworICAgIHRpbWVab25lT3ZlcnJpZGUuaWQgPSBT
dHJpbmcoY2Fub25pY2FsQnVmZmVyLT5kYXRhKCksIGNhbm9uaWNhbExlbmd0aCk7CisgICAgdGlt
ZVpvbmVPdmVycmlkZS5kaXNwbGF5TmFtZSA9IFN0cmluZyhkaXNwbGF5TmFtZUJ1ZmZlci5kYXRh
KCksIGRpc3BsYXlOYW1lTGVuZ3RoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworU3RyaW5nJiB0
aW1lWm9uZU92ZXJyaWRlKCkKK3sKKyAgICByZXR1cm4gaW5uZXJUaW1lWm9uZU92ZXJyaWRlKCku
aWQ7Cit9CisKK1N0cmluZyYgdGltZVpvbmVEaXNwbGF5TmFtZU92ZXJyaWRlKCkKK3sKKyAgICBy
ZXR1cm4gaW5uZXJUaW1lWm9uZU92ZXJyaWRlKCkuZGlzcGxheU5hbWU7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRGF0ZU1hdGguaCBiL1NvdXJj
ZS9XVEYvd3RmL0RhdGVNYXRoLmgKaW5kZXggMjQ2YmE2N2M3NjRiNjI5MDQyYTc5MjdkMjRmZTg5
YjA0OWQ4MmEwYi4uNGZmNGE2MzA5MDBiYWQ0N2YxOTZjYzdlMjljM2VlOTRkMjFhOTQ2ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvRGF0ZU1hdGguaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9E
YXRlTWF0aC5oCkBAIC0zODksNiArMzg5LDExIEBAIGlubGluZSBpbnQgZGF5SW5Nb250aEZyb21E
YXlJblllYXIoaW50IGRheUluWWVhciwgYm9vbCBsZWFwWWVhcikKICAgICByZXR1cm4gZCAtIHN0
ZXA7CiB9CiAKK1dURl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDxWZWN0b3I8VUNoYXIsIDMyPj4g
aXNUaW1lWm9uZVZhbGlkKGNvbnN0IFN0cmluZyYpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wg
c2V0VGltZVpvbmVPdmVycmlkZShjb25zdCBTdHJpbmcmKTsKK1dURl9FWFBPUlRfUFJJVkFURSBT
dHJpbmcmIHRpbWVab25lT3ZlcnJpZGUoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcmIHRp
bWVab25lRGlzcGxheU5hbWVPdmVycmlkZSgpOworCiAvLyBSZXR1cm5zIGNvbWJpbmVkIG9mZnNl
dCBpbiBtaWxsaXNlY29uZCAoVVRDICsgRFNUKS4KIFdURl9FWFBPUlRfUFJJVkFURSBMb2NhbFRp
bWVPZmZzZXQgY2FsY3VsYXRlTG9jYWxUaW1lT2Zmc2V0KGRvdWJsZSB1dGNJbk1pbGxpc2Vjb25k
cywgVGltZVR5cGUgPSBVVENUaW1lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAppbmRleCA1Y2NmNGY1NzNiNWQ2NmM4
ZTAzMDk3ZDkyMzliOWNiY2NkMTg4OGZhLi40OGVkM2M5ODI5NTc2NzhjZGFjNjdkMTZhOWFhZWZi
NGY3NjFkMzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtMTk4LDYgKzE5OCw4IEBAIHZvaWQgV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QK
ICNpZiBIQVZFKENBVEFMWVNUX1VTRVJfSU5URVJGQUNFX0lESU9NX0FORF9TQ0FMRV9GQUNUT1Ip
CiAgICAgZW5jb2RlciA8PCBvdmVycmlkZVVzZXJJbnRlcmZhY2VJZGlvbUFuZFNjYWxlOwogI2Vu
ZGlmCisKKyAgICBlbmNvZGVyIDw8IHRpbWVab25lT3ZlcnJpZGU7CiB9CiAKIGJvb2wgV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKQEAgLTU0NCw2ICs1NDYsMTIg
QEAgYm9vbCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVy
JiBkZWNvZGVyLCBXZWJQcm9jZXNzQ3JlYXQKICAgICBwYXJhbWV0ZXJzLm92ZXJyaWRlVXNlcklu
dGVyZmFjZUlkaW9tQW5kU2NhbGUgPSBXVEZNb3ZlKCpvdmVycmlkZVVzZXJJbnRlcmZhY2VJZGlv
bUFuZFNjYWxlKTsKICNlbmRpZgogCisgICAgT3B0aW9uYWw8T3B0aW9uYWw8U3RyaW5nPj4gdGlt
ZVpvbmVPdmVycmlkZTsKKyAgICBkZWNvZGVyID4+IHRpbWVab25lT3ZlcnJpZGU7CisgICAgaWYg
KCF0aW1lWm9uZU92ZXJyaWRlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcGFyYW1ldGVy
cy50aW1lWm9uZU92ZXJyaWRlID0gV1RGTW92ZSgqdGltZVpvbmVPdmVycmlkZSk7CisKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IGIwMWEyNmJmMzlhODRjMTY1NDMxMDUyYzliMDU4
ZmU2MmRhNDViMTcuLjcxZTIwZWUyMjhjOTBjYTQ3MjY4YWZmOTA1NzQzNjY0MzMzNmVhNTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmgKQEAgLTIzNiw2ICsyMzYsOCBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycyB7CiAjaWYgSEFWRShDQVRBTFlTVF9VU0VSX0lOVEVSRkFDRV9JRElPTV9BTkRfU0NBTEVf
RkFDVE9SKQogICAgIHN0ZDo6cGFpcjxpbnQ2NF90LCBkb3VibGU+IG92ZXJyaWRlVXNlckludGVy
ZmFjZUlkaW9tQW5kU2NhbGU7CiAjZW5kaWYKKworICAgIE9wdGlvbmFsPFN0cmluZz4gdGltZVpv
bmVPdmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
LmNwcAppbmRleCAxODU4NWY2MWJiNmVjYWJlYzM5ZmYwYzAzYjg2MmM2NTg1NmRjYTI0Li5hNmQy
NmU0MGE1MTYzY2IzMGNmNmM5YTRlMmRiNDk1NTEwZWYwZGUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
LmNwcApAQCAtNzYsNiArNzYsNyBAQCBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb246OmNvcHkoKQogICAgIGNvcHktPm1fbmV0d29ya1Byb2Nlc3NQ
YXRoID0gdGhpcy0+bV9uZXR3b3JrUHJvY2Vzc1BhdGg7CiAgICAgY29weS0+bV91c2VySWQgPSB0
aGlzLT5tX3VzZXJJZDsKICNlbmRpZgorICAgIGNvcHktPm1fdGltZVpvbmVPdmVycmlkZSA9IHRo
aXMtPm1fdGltZVpvbmVPdmVycmlkZTsKICAgICByZXR1cm4gY29weTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5oCmluZGV4IDY0OTI0OTAyZjE5ODExNzkyNTM3YTE1YTMyZWQ0ZDcwNmRhZjk2NzAuLjYx
ZmNiOWE0MTg4YzRhNDdiMGE5YjI0NmU1YmQzZDBkZTllMmJlNWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
LmgKQEAgLTE0Nyw2ICsxNDcsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRVc2VySWQoY29uc3Qg
aW50MzJfdCB1c2VySWQpIHsgbV91c2VySWQgPSB1c2VySWQ7IH0KICNlbmRpZgogCisgICAgdm9p
ZCBzZXRUaW1lWm9uZU92ZXJyaWRlKGNvbnN0IFdURjo6U3RyaW5nJiB0aW1lWm9uZU92ZXJyaWRl
KSB7IG1fdGltZVpvbmVPdmVycmlkZSA9IHRpbWVab25lT3ZlcnJpZGU7IH0KKyAgICBjb25zdCBX
VEY6OlN0cmluZyYgdGltZVpvbmVPdmVycmlkZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZVpvbmVP
dmVycmlkZTsgfQorCiBwcml2YXRlOgogICAgIFdURjo6U3RyaW5nIG1faW5qZWN0ZWRCdW5kbGVQ
YXRoOwogICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gbV9jdXN0b21DbGFzc2VzRm9yUGFyYW1ldGVy
Q29kZXI7CkBAIC0xODEsNiArMTg0LDcgQEAgcHJpdmF0ZToKICAgICBXVEY6OlN0cmluZyBtX25l
dHdvcmtQcm9jZXNzUGF0aDsKICAgICBpbnQzMl90IG1fdXNlcklkIHsgLTEgfTsKICNlbmRpZgor
ICAgIFdURjo6U3RyaW5nIG1fdGltZVpvbmVPdmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1By
b2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCmluZGV4IDcyMjZjYzJjYjYwNWQyMzg0
YjVmZGY5MjEwYWM3MzFiNDE2MTBjMWUuLmU2Y2JhZWZjNjg2N2Q5NTE1YzhkYmRmYWRjZjNlNjhj
MWZlZWI4YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgKQEAgLTI0LDYgKzI0LDcg
QEAKICAqLwogCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPFdl
YktpdC9XS0Jhc2UuaD4KICNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KIAogTlNfQVNT
VU1FX05PTk5VTExfQkVHSU4KQEAgLTcyLDYgKzczLDggQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1h
Y29zKDEwLjEwKSwgaW9zKDguMCkpCiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGNvbmZp
Z3VyZUpTQ0ZvclRlc3RpbmcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9z
KFdLX0lPU19UQkEpKTsKIAorQHByb3BlcnR5IChub25hdG9taWMsIG51bGxhYmxlLCBjb3B5KSBO
U1N0cmluZyAqdGltZVpvbmVPdmVycmlkZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19U
QkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiBAZW5kCiAKIE5TX0FTU1VNRV9OT05OVUxMX0VORApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubW0KaW5kZXggYjRjMzVlODg1NGM2MTA1NTY1NWFl
ZmYyYmZiOTA5Y2RjNTQyODM5Yy4uNTgwZmRhNmY1MTM4ZDg2OTRjNmU1MDZkMmE3MDE0MDZkNGQ3
OGI3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1By
b2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1tCkBAIC0zNjcsNiArMzY3LDE2
IEBACiAgICAgX3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi0+c2V0U2hvdWxkQ29uZmlndXJlSlND
Rm9yVGVzdGluZyh2YWx1ZSk7CiB9CiAKKy0gKE5TU3RyaW5nICopdGltZVpvbmVPdmVycmlkZQor
eworICAgIHJldHVybiBfcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLT50aW1lWm9uZU92ZXJyaWRl
KCk7Cit9CisKKy0gKHZvaWQpc2V0VGltZVpvbmVPdmVycmlkZTooTlNTdHJpbmcgKil0aW1lWm9u
ZQoreworICAgIF9wcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24tPnNldFRpbWVab25lT3ZlcnJpZGUo
dGltZVpvbmUpOworfQorCiAjcHJhZ21hIG1hcmsgV0tPYmplY3QgcHJvdG9jb2wgaW1wbGVtZW50
YXRpb24KIAogLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKaW5kZXggZjdmYWE1
ODgwYmYwMmIyODE1NzI3NmI2MGNhMTAwZWQzOGZiZjk5MC4uY2NhODczYWM5ODVjZDU4NGUxN2U0
ZmE5NWE5MDVlNTYxODc2ZjI4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTYyLDYgKzYyLDcgQEAKICNpbmNs
dWRlIDxsaWJpbnRsLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHBhbC9IeXN0ZXJl
c2lzQWN0aXZpdHkuaD4KKyNpbmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4KICNpbmNsdWRlIDx3dGYv
RmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KQEAgLTEyMyw5ICsxMjQsMTAgQEAgZW51bSB7CiAjaWYgUExBVEZPUk0oR1RLKQog
ICAgIFBST1BfUFNPTl9FTkFCTEVELAogI2lmICFVU0UoR1RLNCkKLSAgICBQUk9QX1VTRV9TWVNZ
RU1fQVBQRUFSQU5DRV9GT1JfU0NST0xMQkFSUworICAgIFBST1BfVVNFX1NZU1RFTV9BUFBFQVJB
TkNFX0ZPUl9TQ1JPTExCQVJTLAogI2VuZGlmCiAjZW5kaWYKKyAgICBQUk9QX1RJTUVfWk9ORV9P
VkVSUklERQogfTsKIAogZW51bSB7CkBAIC0yNDAsNiArMjQyLDggQEAgc3RydWN0IF9XZWJLaXRX
ZWJDb250ZXh0UHJpdmF0ZSB7CiAKICAgICBIYXNoU2V0PFN0cmluZz4gZG5zUHJlZmV0Y2hlZEhv
c3RzOwogICAgIFBBTDo6SHlzdGVyZXNpc0FjdGl2aXR5IGRuc1ByZWZldGNoSHlzdGVyZXJpczsK
KworICAgIENTdHJpbmcgdGltZVpvbmVPdmVycmlkZTsKIH07CiAKIHN0YXRpYyBndWludCBzaWdu
YWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwgfTsKQEAgLTM0MCwxMSArMzQ0LDE0IEBAIHN0YXRpYyB2
b2lkIHdlYmtpdFdlYkNvbnRleHRHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHBy
b3BJRCwgR1ZhbHVlKiB2CiAgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIGNvbnRl
eHQtPnByaXYtPnBzb25FbmFibGVkKTsKICAgICAgICAgYnJlYWs7CiAjaWYgIVVTRShHVEs0KQot
ICAgIGNhc2UgUFJPUF9VU0VfU1lTWUVNX0FQUEVBUkFOQ0VfRk9SX1NDUk9MTEJBUlM6CisgICAg
Y2FzZSBQUk9QX1VTRV9TWVNURU1fQVBQRUFSQU5DRV9GT1JfU0NST0xMQkFSUzoKICAgICAgICAg
Z192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3dlYl9jb250ZXh0X2dldF91c2Vfc3lz
dGVtX2FwcGVhcmFuY2VfZm9yX3Njcm9sbGJhcnMoY29udGV4dCkpOwogICAgICAgICBicmVhazsK
ICNlbmRpZgogI2VuZGlmCisgICAgY2FzZSBQUk9QX1RJTUVfWk9ORV9PVkVSUklERToKKyAgICAg
ICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZhbHVlLCBjb250ZXh0LT5wcml2LT50aW1lWm9uZU92ZXJy
aWRlLmRhdGEoKSk7CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEdfT0JK
RUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJRCwgcGFyYW1TcGVjKTsK
ICAgICB9CkBAIC0zNzAsMTEgKzM3NywxNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJDb250ZXh0
U2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSUQsIGNvbnN0IEdWYQogICAg
ICAgICBjb250ZXh0LT5wcml2LT5wc29uRW5hYmxlZCA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFs
dWUpOwogICAgICAgICBicmVhazsKICNpZiAhVVNFKEdUSzQpCi0gICAgY2FzZSBQUk9QX1VTRV9T
WVNZRU1fQVBQRUFSQU5DRV9GT1JfU0NST0xMQkFSUzoKKyAgICBjYXNlIFBST1BfVVNFX1NZU1RF
TV9BUFBFQVJBTkNFX0ZPUl9TQ1JPTExCQVJTOgogICAgICAgICB3ZWJraXRfd2ViX2NvbnRleHRf
c2V0X3VzZV9zeXN0ZW1fYXBwZWFyYW5jZV9mb3Jfc2Nyb2xsYmFycyhjb250ZXh0LCBnX3ZhbHVl
X2dldF9ib29sZWFuKHZhbHVlKSk7CiAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAjZW5kaWYKKyAg
ICBjYXNlIFBST1BfVElNRV9aT05FX09WRVJSSURFOiB7CisgICAgICAgIGNvbnN0IGNoYXIqIHRp
bWVab25lT3ZlcnJpZGUgPSBnX3ZhbHVlX2dldF9zdHJpbmcodmFsdWUpOworICAgICAgICBpZiAo
dGltZVpvbmVPdmVycmlkZSkKKyAgICAgICAgICAgIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfdGlt
ZV96b25lX292ZXJyaWRlKGNvbnRleHQsIHRpbWVab25lT3ZlcnJpZGUpOworICAgICAgICBicmVh
azsKKyAgICB9CiAgICAgZGVmYXVsdDoKICAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BS
T1BFUlRZX0lEKG9iamVjdCwgcHJvcElELCBwYXJhbVNwZWMpOwogICAgIH0KQEAgLTM5Nyw2ICs0
MTAsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJDb250ZXh0Q29uc3RydWN0ZWQoR09iamVjdCog
b2JqZWN0KQogICAgIGNvbmZpZ3VyYXRpb24uc2V0VXNlU3lzdGVtQXBwZWFyYW5jZUZvclNjcm9s
bGJhcnMocHJpdi0+dXNlU3lzdGVtQXBwZWFyYW5jZUZvclNjcm9sbGJhcnMpOwogI2VuZGlmCiAj
ZW5kaWYKKyAgICBjb25maWd1cmF0aW9uLnNldFRpbWVab25lT3ZlcnJpZGUoU3RyaW5nOjpmcm9t
VVRGOChwcml2LT50aW1lWm9uZU92ZXJyaWRlLmRhdGEoKSkpOwogCiAgICAgaWYgKCFwcml2LT53
ZWJzaXRlRGF0YU1hbmFnZXIpCiAgICAgICAgIHByaXYtPndlYnNpdGVEYXRhTWFuYWdlciA9IGFk
b3B0R1JlZih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfbmV3KCJsb2NhbC1zdG9yYWdlLWRp
cmVjdG9yeSIsIHByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeS5kYXRhKCksIG51bGxwdHIpKTsK
QEAgLTUzOSw3ICs1NTMsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfY2xhc3Nf
aW5pdChXZWJLaXRXZWJDb250ZXh0Q2xhc3MqIHdlYkNvbnRleHRDbGFzcwogICAgICAqLwogICAg
IGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCiAgICAgICAgIGdPYmplY3RDbGFzcywK
LSAgICAgICAgUFJPUF9VU0VfU1lTWUVNX0FQUEVBUkFOQ0VfRk9SX1NDUk9MTEJBUlMsCisgICAg
ICAgIFBST1BfVVNFX1NZU1RFTV9BUFBFQVJBTkNFX0ZPUl9TQ1JPTExCQVJTLAogICAgICAgICBn
X3BhcmFtX3NwZWNfYm9vbGVhbigKICAgICAgICAgICAgICJ1c2Utc3lzdGVtLWFwcGVhcmFuY2Ut
Zm9yLXNjcm9sbGJhcnMiLAogICAgICAgICAgICAgXygiVXNlIHN5c3RlbSBhcHBlYXJhbmNlIGZv
ciBzY3JvbGxiYXJzIiksCkBAIC01NDksNiArNTYzLDMwIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93
ZWJfY29udGV4dF9jbGFzc19pbml0KFdlYktpdFdlYkNvbnRleHRDbGFzcyogd2ViQ29udGV4dENs
YXNzCiAjZW5kaWYKICNlbmRpZgogCisgICAgLyoqCisgICAgICogV2ViS2l0V2ViQ29udGV4dDp0
aW1lLXpvbmUtb3ZlcnJpZGU6CisgICAgICoKKyAgICAgKiBUaGUgdGltZXpvbmUgb3ZlcnJpZGUg
Zm9yIHRoaXMgd2ViIGNvbnRleHQuIFNldHRpbmcgdGhpcyBwcm9wZXJ0eSBwcm92aWRlcyBhIGJl
dHRlcgorICAgICAqIGFsdGVybmF0aXZlIHRvIGNvbmZpZ3VyZSB0aGUgdGltZXpvbmUgaW5mb3Jt
YXRpb24gZm9yIGFsbCB3ZWJ2aWV3cyBtYW5hZ2VkIGJ5IHRoZSBXZWJDb250ZXh0LgorICAgICAq
IFRoZSBvdGhlciwgbGVzcyBvcHRpbWFsLCBhcHByb2FjaCBpcyB0byBnbG9iYWxseSBzZXQgdGhl
IFRaIGVudmlyb25tZW50IHZhcmlhYmxlIGluIHRoZQorICAgICAqIHByb2Nlc3MgYmVmb3JlIGNy
ZWF0aW5nIHRoZSBjb250ZXh0LiBIb3dldmVyIHRoaXMgYXBwcm9hY2ggbWlnaHQgbm90IGJlIHZl
cnkgY29udmVuaWVudCBhbmQKKyAgICAgKiBjYW4gaGF2ZSBzaWRlLWVmZmVjdHMgaW4geW91ciBh
cHBsaWNhdGlvbi4KKyAgICAgKgorICAgICAqIFRoZSBleHBlY3RlZCB2YWx1ZXMgZm9yIHRoaXMg
cHJvcGVydHkgYXJlIGRlZmluZWQgaW4gdGhlIElBTkEgdGltZXpvbmUgZGF0YWJhc2UuIFNlZSB0
aGlzCisgICAgICogd2lraXBlZGlhIHBhZ2UgZm9yIGluc3RhbmNlLCBodHRwczovL2VuLndpa2lw
ZWRpYS5vcmcvd2lraS9MaXN0X29mX3R6X2RhdGFiYXNlX3RpbWVfem9uZXMuCisgICAgICoKKyAg
ICAgKiBTaW5jZTogMi4zMgorICAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJv
cGVydHkoCisgICAgICAgIGdPYmplY3RDbGFzcywKKyAgICAgICAgUFJPUF9USU1FX1pPTkVfT1ZF
UlJJREUsCisgICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoCisgICAgICAgICAgICAidGltZS16
b25lLW92ZXJyaWRlIiwKKyAgICAgICAgICAgIF8oIlRpbWUgWm9uZSBPdmVycmlkZSIpLAorICAg
ICAgICAgICAgXygiVGhlIHRpbWUgem9uZSB0byB1c2UgaW5zdGVhZCBvZiB0aGUgc3lzdGVtIG9u
ZSIpLAorICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PEdQYXJh
bUZsYWdzPihXRUJLSVRfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1RfT05MWSkp
KTsKKwogICAgIC8qKgogICAgICAqIFdlYktpdFdlYkNvbnRleHQ6OmRvd25sb2FkLXN0YXJ0ZWQ6
CiAgICAgICogQGNvbnRleHQ6IHRoZSAjV2ViS2l0V2ViQ29udGV4dApAQCAtMTgwOCw2ICsxODQ2
LDM5IEBAIGdib29sZWFuIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfdXNlX3N5c3RlbV9hcHBlYXJh
bmNlX2Zvcl9zY3JvbGxiYXJzKFdlYktpdFdlYkNvCiB9CiAjZW5kaWYKIAorLyoqCisgKiB3ZWJr
aXRfd2ViX2NvbnRleHRfc2V0X3RpbWVfem9uZV9vdmVycmlkZToKKyAqIEBjb250ZXh0OiBhICNX
ZWJLaXRXZWJDb250ZXh0CisgKiBAdGltZV96b25lX292ZXJyaWRlOiB2YWx1ZSB0byBzZXQKKyAq
CisgKiBTZXQgdGhlICNXZWJLaXRXZWJDb250ZXh0OnRpbWUtem9uZS1vdmVycmlkZSBwcm9wZXJ0
eS4gUmVmZXIgdG8gdGhlIElBTkEgZGF0YWJhc2UgZm9yIHZhbGlkCisgKiBzcGVjaWZpZXJzLCBo
dHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MaXN0X29mX3R6X2RhdGFiYXNlX3RpbWVfem9u
ZXMKKyAqCisgKiBTaW5jZTogMi4zMgorICovCit2b2lkIHdlYmtpdF93ZWJfY29udGV4dF9zZXRf
dGltZV96b25lX292ZXJyaWRlKFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IGdjaGFy
KiB0aW1lWm9uZU92ZXJyaWRlKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dF
Ql9DT05URVhUKGNvbnRleHQpKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKFdURjo6aXNUaW1lWm9u
ZVZhbGlkKHRpbWVab25lT3ZlcnJpZGUpKTsKKworICAgIGNvbnRleHQtPnByaXYtPnRpbWVab25l
T3ZlcnJpZGUgPSB0aW1lWm9uZU92ZXJyaWRlOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfY29u
dGV4dF9nZXRfdGltZV96b25lX292ZXJyaWRlOgorICogQGNvbnRleHQ6IGEgI1dlYktpdFdlYkNv
bnRleHQKKyAqCisgKiBHZXQgdGhlICNXZWJLaXRXZWJDb250ZXh0OnRpbWUtem9uZS1vdmVycmlk
ZSBwcm9wZXJ0eS4KKyAqCisgKiBTaW5jZTogMi4zMgorICovCitjb25zdCBnY2hhciogd2Via2l0
X3dlYl9jb250ZXh0X2dldF90aW1lX3pvbmVfb3ZlcnJpZGUoV2ViS2l0V2ViQ29udGV4dCogY29u
dGV4dCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0NPTlRFWFQo
Y29udGV4dCksIG51bGxwdHIpOworCisgICAgcmV0dXJuIGNvbnRleHQtPnByaXYtPnRpbWVab25l
T3ZlcnJpZGUuZGF0YSgpOworfQorCiB2b2lkIHdlYmtpdFdlYkNvbnRleHRJbml0aWFsaXplTm90
aWZpY2F0aW9uUGVybWlzc2lvbnMoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCkKIHsKICAgICBn
X3NpZ25hbF9lbWl0KGNvbnRleHQsIHNpZ25hbHNbSU5JVElBTElaRV9OT1RJRklDQVRJT05fUEVS
TUlTU0lPTlNdLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViQ29udGV4dC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJDb250ZXh0LmgKaW5kZXggNWE0YWRmOGI4ZWIzNDg4ZTQ5M2NjZTg4NjYzNzQxYzI5
ODQ3NzFiOC4uMzM4ZjAwZjk5NWY3ZWU2MDRhZWNkYzM4YjcwNWIxYWUzMTU5OTZiOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmgK
QEAgLTMwMCw2ICszMDAsMTMgQEAgd2Via2l0X3dlYl9jb250ZXh0X3NldF91c2Vfc3lzdGVtX2Fw
cGVhcmFuY2VfZm9yX3Njcm9sbGJhcnMgKFdlYktpdFdlYkNvbnRleHQKIFdFQktJVF9BUEkgZ2Jv
b2xlYW4KIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfdXNlX3N5c3RlbV9hcHBlYXJhbmNlX2Zvcl9z
Y3JvbGxiYXJzIChXZWJLaXRXZWJDb250ZXh0ICAgICAgKmNvbnRleHQpOwogCitXRUJLSVRfQVBJ
IHZvaWQKK3dlYmtpdF93ZWJfY29udGV4dF9zZXRfdGltZV96b25lX292ZXJyaWRlICAgICAgICAg
ICAoV2ViS2l0V2ViQ29udGV4dCAgICAgICAgICAgICAgKmNvbnRleHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAg
ICAgICAgICAgICAgICp0aW1lX3pvbmVfb3ZlcnJpZGUpOworCitXRUJLSVRfQVBJIGNvbnN0IGdj
aGFyKgord2Via2l0X3dlYl9jb250ZXh0X2dldF90aW1lX3pvbmVfb3ZlcnJpZGUgICAgICAgICAg
IChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAgICAgICAqY29udGV4dCk7CisKIEdfRU5EX0RFQ0xT
CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9k
b2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKaW5kZXggNjQwMzg0YzI4
NTE3NjI2YjdiMjU1MWRkMTcxYThkOGM4MTcxMjMzMS4uM2I2ZjNkYTgyMmJiOTk4NDQ4ZWQ3ZGRk
MGY2OTNiM2NmMzcyZTAxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CkBAIC03
MSw2ICs3MSw4IEBAIHdlYmtpdF93ZWJfY29udGV4dF9pbml0aWFsaXplX25vdGlmaWNhdGlvbl9w
ZXJtaXNzaW9ucwogd2Via2l0X3dlYl9jb250ZXh0X3NlbmRfbWVzc2FnZV90b19hbGxfZXh0ZW5z
aW9ucwogd2Via2l0X3dlYl9jb250ZXh0X3NldF91c2Vfc3lzdGVtX2FwcGVhcmFuY2VfZm9yX3Nj
cm9sbGJhcnMKIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfdXNlX3N5c3RlbV9hcHBlYXJhbmNlX2Zv
cl9zY3JvbGxiYXJzCit3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3RpbWVfem9uZV9vdmVycmlkZQor
d2Via2l0X3dlYl9jb250ZXh0X2dldF90aW1lX3pvbmVfb3ZlcnJpZGUKIAogPFNVQlNFQ1RJT04g
VVJJIFNjaGVtZT4KIFdlYktpdFVSSVNjaGVtZVJlcXVlc3RDYWxsYmFjawpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJDb250ZXh0LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYkNvbnRleHQuaAppbmRleCA0Y2U5
M2E0ZTA3OTA5MjJmOTEzOTU2MmU3Y2JmNmY4NDA5YWQ4ZGY4Li5lNGM1ZTkzZTdhOTk5ZDUxNDVk
M2IzYzI2ZjJlZGVhMjM2ODI5NDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvd3BlL1dlYktpdFdlYkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvd3BlL1dlYktpdFdlYkNvbnRleHQuaApAQCAtMjg5LDYgKzI4OSwxMyBAQCBXRUJLSVRf
QVBJIHZvaWQKIHdlYmtpdF93ZWJfY29udGV4dF9zZW5kX21lc3NhZ2VfdG9fYWxsX2V4dGVuc2lv
bnMgICAoV2ViS2l0V2ViQ29udGV4dCAgICAgICAgICAgICAgKmNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFVzZXJNZXNz
YWdlICAgICAgICAgICAgICptZXNzYWdlKTsKIAorV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2Vi
X2NvbnRleHRfc2V0X3RpbWVfem9uZV9vdmVycmlkZSAgICAgICAgICAgKFdlYktpdFdlYkNvbnRl
eHQgICAgICAgICAgICAgICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAgICAgICAgICAqdGlt
ZV96b25lX292ZXJyaWRlKTsKKworV0VCS0lUX0FQSSBjb25zdCBnY2hhcioKK3dlYmtpdF93ZWJf
Y29udGV4dF9nZXRfdGltZV96b25lX292ZXJyaWRlICAgICAgICAgICAoV2ViS2l0V2ViQ29udGV4
dCAgICAgICAgICAgICAgKmNvbnRleHQpOworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMS4wLXNlY3Rp
b25zLnR4dCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMS4wLXNl
Y3Rpb25zLnR4dAppbmRleCBhNDM1OTUzMWY5OTIzNjIzZGVjODkxNjFmNzkxMWY3NTFiMTg1MDVj
Li5jYmI3MWVkYzcxNzlkMzhjYzNjMzZmMzYxYmQ4ZmE5Zjk3MGUyM2ViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlv
bnMudHh0CkBAIC00Niw2ICs0Niw4IEBAIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfcHJvY2Vzc19t
b2RlbAogd2Via2l0X3dlYl9jb250ZXh0X3NldF9wcm9jZXNzX21vZGVsCiB3ZWJraXRfd2ViX2Nv
bnRleHRfaW5pdGlhbGl6ZV9ub3RpZmljYXRpb25fcGVybWlzc2lvbnMKIHdlYmtpdF93ZWJfY29u
dGV4dF9zZW5kX21lc3NhZ2VfdG9fYWxsX2V4dGVuc2lvbnMKK3dlYmtpdF93ZWJfY29udGV4dF9z
ZXRfdGltZV96b25lX292ZXJyaWRlCit3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3RpbWVfem9uZV9v
dmVycmlkZQogCiA8U1VCU0VDVElPTiBVUkkgU2NoZW1lPgogV2ViS2l0VVJJU2NoZW1lUmVxdWVz
dENhbGxiYWNrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5k
ZXggNDc2MWQ5MzIxMTllMGM4YjhjZDBkODJmZWRiNWZiNTYzODhhZmE4Ni4uYTRhMjU0ZTU0NDlh
ZGIxMjYxNjU3MDAzZWQ5YTAxNzhmZTIxMDU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcApAQCAtODAwLDYgKzgwMCw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OmluaXRpYWxpemVOZXdXZWJQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgV2Vi
c2l0ZURhCiAKICAgICBwYXJhbWV0ZXJzLnByZXNlbnRpbmdBcHBsaWNhdGlvblBJRCA9IG1fY29u
ZmlndXJhdGlvbi0+cHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKCk7CiAKKyAgICBwYXJhbWV0ZXJz
LnRpbWVab25lT3ZlcnJpZGUgPSBtX2NvbmZpZ3VyYXRpb24tPnRpbWVab25lT3ZlcnJpZGUoKTsK
KwogICAgIC8vIEFkZCBhbnkgcGxhdGZvcm0gc3BlY2lmaWMgcGFyYW1ldGVycwogICAgIHBsYXRm
b3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MocHJvY2VzcywgcGFyYW1ldGVycyk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcAppbmRl
eCBmNzRmOTIzMjVkZTQyMWIwMzQ3NzlhMDhlZWE4NWZjMTJkNGVkODg1Li5mOThkN2U3NmFjMTRh
NjEwYzU4YWU2MGI4NjUwMTQ2NTRjNzkxZjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQb29sR0xpYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUG9vbEdMaWIuY3BwCkBAIC0xMDcsNiArMTA3LDcgQEAg
dm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyhjb25zdCBX
ZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MKICNpZiBQTEFURk9STShHVEspICYmICFVU0UoR1RLNCkK
ICAgICBwYXJhbWV0ZXJzLnVzZVN5c3RlbUFwcGVhcmFuY2VGb3JTY3JvbGxiYXJzID0gbV9jb25m
aWd1cmF0aW9uLT51c2VTeXN0ZW1BcHBlYXJhbmNlRm9yU2Nyb2xsYmFycygpOwogI2VuZGlmCisg
ICAgcGFyYW1ldGVycy50aW1lWm9uZU92ZXJyaWRlID0gbV9jb25maWd1cmF0aW9uLT50aW1lWm9u
ZU92ZXJyaWRlKCk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW52YWxpZGF0
ZUNvbnRleHQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2dsaWIvV2Vi
UHJvY2Vzc0dMaWIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2dsaWIvV2ViUHJvY2Vz
c0dMaWIuY3BwCmluZGV4IDc4ODM1NGMxYzcyMTZkMDI2NDc3YTA5YTA2ODlhYWE2NzVhNzdmYTIu
LmUxYzhiMDIzODUxOTI5NjU0NGM0ZWViYjI2OGU0MzVmMmNkYTM0ODIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NHTGliLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzR0xpYi5jcHAKQEAgLTUwLDYgKzUw
LDggQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbGJhclRoZW1lR3RrLmg+CiAjZW5kaWYKIAor
I2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CkBAIC05Nyw2ICs5OSwxMSBAQCB2b2lkIFdlYlByb2Nlc3M6OnBs
YXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYg
cGFyYQogI2lmIFBMQVRGT1JNKEdUSykgJiYgIVVTRShHVEs0KQogICAgIHNldFVzZVN5c3RlbUFw
cGVhcmFuY2VGb3JTY3JvbGxiYXJzKHBhcmFtZXRlcnMudXNlU3lzdGVtQXBwZWFyYW5jZUZvclNj
cm9sbGJhcnMpOwogI2VuZGlmCisKKyAgICBpZiAocGFyYW1ldGVycy50aW1lWm9uZU92ZXJyaWRl
KQorICAgICAgICBXVEY6OnNldFRpbWVab25lT3ZlcnJpZGUoKnBhcmFtZXRlcnMudGltZVpvbmVP
dmVycmlkZSk7CisgICAgZWxzZQorICAgICAgICBXVEY6OnNldFRpbWVab25lT3ZlcnJpZGUoeyB9
KTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybVNldFdlYnNpdGVEYXRhU3RvcmVQYXJh
bWV0ZXJzKFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzJiYpCmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMmZjOWE5NGNiMzBjY2NiNWY1ODQ3
NzdjOGZkNWVhMjM2MTU2ZmQxZi4uZmNkYzllYTU2Mjc1ODFkYTYyMmZiODcxZTQzNzUyMDIzYmRh
MDgyOSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDMxIEBACisyMDIwLTA3LTE3ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRA
aWdhbGlhLmNvbT4KKworICAgICAgICBbV0syXSBBZGQgQVBJIHRvIGFsbG93IGVtYmVkZGVyIHRv
IHNldCBhIHRpbWV6b25lIG92ZXJyaWRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTM4ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgQVBJIHRlc3RzIGZvciB0aGUgdGltZXpvbmUgY29uZmlndXJh
dGlvbiBBUEkuIFRoZSBHVEsgYW5kIFdQRSBNaW5pQnJvd3NlcnMgYWxzbyBnYWluZWQKKyAgICAg
ICAgbmV3IHJ1bnRpbWUgb3B0aW9ucyBhbGxvd2luZyB0byBleGVyY2lzZSB0aGlzIG5ldyBBUEku
CisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9ndGsvbWFpbi5jOgorICAgICAgICAoYWN0aXZhdGUp
OgorICAgICAgICAqIE1pbmlCcm93c2VyL3dwZS9tYWluLmNwcDoKKyAgICAgICAgKG1haW4pOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVGltZVpv
bmVPdmVycmlkZS5tbTogQWRkZWQuCisgICAgICAgIChUaW1lWm9uZU92ZXJyaWRlVGVzdDo6cnVu
U2NyaXB0QW5kRXhlY3V0ZUNhbGxiYWNrKToKKyAgICAgICAgKFRFU1RfRik6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJDb250ZXh0LmNwcDoK
KyAgICAgICAgKHRlc3RXZWJDb250ZXh0VGltZVpvbmUpOgorICAgICAgICAodGVzdFdlYlZpZXdU
aW1lWm9uZU92ZXJyaWRlKToKKyAgICAgICAgKGJlZm9yZUFsbCk6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9nbGliL1dlYktpdEdMaWIvVGVzdE1haW4uY3BwOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvZ2xpYi9XZWJLaXRHTGliL1Rlc3RNYWluLmg6CisgICAgICAgIChUZXN0OjpUZXN0KToK
KyAgICAgICAgKiBmbGF0cGFrL2ZsYXRwYWt1dGlscy5weToKKyAgICAgICAgKFdlYmtpdEZsYXRw
YWsucnVuX2luX3NhbmRib3gpOgorCiAyMDIwLTEwLTE1ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFw
cGxlLmNvbT4KIAogICAgICAgICBBdHRlbXB0IHRvIGZpeCB0aGUgYnVpbGQuCmRpZmYgLS1naXQg
YS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21h
aW4uYwppbmRleCBkYzUzZGIwYzI1OGIwNDAxZTBhMmRjYTQzZTAzODBmMTA3NGNlMDI0Li5lZTNi
MTdiMGZlZTI5Y2I2ZDhlM2ZjYjFhMTVmZDZiMmQxNTQxZmNmIDEwMDY0NAotLS0gYS9Ub29scy9N
aW5pQnJvd3Nlci9ndGsvbWFpbi5jCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMK
QEAgLTUxLDYgKzUxLDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmNvb2tpZXNGaWxlOwogc3RhdGlj
IGNvbnN0IGNoYXIgKmNvb2tpZXNQb2xpY3k7CiBzdGF0aWMgY29uc3QgY2hhciAqcHJveHk7CiBz
dGF0aWMgZ2Jvb2xlYW4gZGFya01vZGU7CitzdGF0aWMgY2hhciogdGltZVpvbmU7CiBzdGF0aWMg
Z2Jvb2xlYW4gZW5hYmxlSVRQOwogc3RhdGljIGdib29sZWFuIHByaW50VmVyc2lvbjsKIApAQCAt
MTQzLDYgKzE0NCw3IEBAIHN0YXRpYyBjb25zdCBHT3B0aW9uRW50cnkgY29tbWFuZExpbmVPcHRp
b25zW10gPQogICAgIHsgImlnbm9yZS10bHMtZXJyb3JzIiwgMCwgMCwgR19PUFRJT05fQVJHX05P
TkUsICZpZ25vcmVUTFNFcnJvcnMsICJJZ25vcmUgVExTIGVycm9ycyIsIE5VTEwgfSwKICAgICB7
ICJjb250ZW50LWZpbHRlciIsIDAsIDAsIEdfT1BUSU9OX0FSR19GSUxFTkFNRSwgJmNvbnRlbnRG
aWx0ZXIsICJKU09OIHdpdGggY29udGVudCBmaWx0ZXJpbmcgcnVsZXMiLCAiRklMRSIgfSwKICAg
ICB7ICJlbmFibGUtaXRwIiwgMCwgMCwgR19PUFRJT05fQVJHX05PTkUsICZlbmFibGVJVFAsICJF
bmFibGUgSW50ZWxsaWdlbnQgVHJhY2tpbmcgUHJldmVudGlvbiAoSVRQKSIsIE5VTEwgfSwKKyAg
ICB7ICJ0aW1lLXpvbmUiLCAndCcsIDAsIEdfT1BUSU9OX0FSR19TVFJJTkcsICZ0aW1lWm9uZSwg
IlNldCB0aW1lIHpvbmUiLCAiVElNRVpPTkUiIH0sCiAgICAgeyAidmVyc2lvbiIsICd2JywgMCwg
R19PUFRJT05fQVJHX05PTkUsICZwcmludFZlcnNpb24sICJQcmludCB0aGUgV2ViS2l0R1RLIHZl
cnNpb24iLCBOVUxMIH0sCiAgICAgeyBHX09QVElPTl9SRU1BSU5JTkcsIDAsIDAsIEdfT1BUSU9O
X0FSR19GSUxFTkFNRV9BUlJBWSwgJnVyaUFyZ3VtZW50cywgMCwgIltVUkzigKZdIiB9LAogICAg
IHsgMCwgMCwgMCwgMCwgMCwgMCwgMCB9CkBAIC02NDAsNiArNjQyLDcgQEAgc3RhdGljIHZvaWQg
YWN0aXZhdGUoR0FwcGxpY2F0aW9uICphcHBsaWNhdGlvbiwgV2ViS2l0U2V0dGluZ3MgKndlYmtp
dFNldHRpbmdzKQogI2lmICFHVEtfQ0hFQ0tfVkVSU0lPTigzLCA5OCwgMCkKICAgICAgICAgInVz
ZS1zeXN0ZW0tYXBwZWFyYW5jZS1mb3Itc2Nyb2xsYmFycyIsIEZBTFNFLAogI2VuZGlmCisgICAg
ICAgICJ0aW1lLXpvbmUtb3ZlcnJpZGUiLCB0aW1lWm9uZSwKICAgICAgICAgTlVMTCk7CiAgICAg
Z19vYmplY3RfdW5yZWYobWFuYWdlcik7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2Vy
L3dwZS9tYWluLmNwcCBiL1Rvb2xzL01pbmlCcm93c2VyL3dwZS9tYWluLmNwcAppbmRleCAyYWIw
NGNlMDYxY2ZmYmZjYmJjNGU2NGM2NjgzOTk2YjY3MmFiYmNlLi5hOGZmZjZiZTNkNGRmYWNjNWFm
OGY1MTk3OTlhNWY5MjRiMjM4YmIxIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci93cGUv
bWFpbi5jcHAKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvd3BlL21haW4uY3BwCkBAIC00NSw2ICs0
NSw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBjb29raWVzRmlsZTsKIHN0YXRpYyBjb25zdCBjaGFy
KiBjb29raWVzUG9saWN5Owogc3RhdGljIGNvbnN0IGNoYXIqIHByb3h5OwogY29uc3QgY2hhciog
YmdDb2xvcjsKK3N0YXRpYyBjaGFyKiB0aW1lWm9uZTsKIHN0YXRpYyBnYm9vbGVhbiBlbmFibGVJ
VFA7CiBzdGF0aWMgZ2Jvb2xlYW4gcHJpbnRWZXJzaW9uOwogc3RhdGljIEdIYXNoVGFibGUqIG9w
ZW5WaWV3czsKQEAgLTYyLDYgKzYzLDcgQEAgc3RhdGljIGNvbnN0IEdPcHRpb25FbnRyeSBjb21t
YW5kTGluZU9wdGlvbnNbXSA9CiAgICAgeyAiY29udGVudC1maWx0ZXIiLCAwLCAwLCBHX09QVElP
Tl9BUkdfRklMRU5BTUUsICZjb250ZW50RmlsdGVyLCAiSlNPTiB3aXRoIGNvbnRlbnQgZmlsdGVy
aW5nIHJ1bGVzIiwgIkZJTEUiIH0sCiAgICAgeyAiYmctY29sb3IiLCAwLCAwLCBHX09QVElPTl9B
UkdfU1RSSU5HLCAmYmdDb2xvciwgIldpbmRvdyBiYWNrZ3JvdW5kIGNvbG9yLiBEZWZhdWx0OiB3
aGl0ZSIsICJDT0xPUiIgfSwKICAgICB7ICJlbmFibGUtaXRwIiwgMCwgMCwgR19PUFRJT05fQVJH
X05PTkUsICZlbmFibGVJVFAsICJFbmFibGUgSW50ZWxsaWdlbnQgVHJhY2tpbmcgUHJldmVudGlv
biAoSVRQKSIsIG51bGxwdHIgfSwKKyAgICB7ICJ0aW1lLXpvbmUiLCAndCcsIDAsIEdfT1BUSU9O
X0FSR19TVFJJTkcsICZ0aW1lWm9uZSwgIlNldCB0aW1lIHpvbmUiLCAiVElNRVpPTkUiIH0sCiAg
ICAgeyAidmVyc2lvbiIsICd2JywgMCwgR19PUFRJT05fQVJHX05PTkUsICZwcmludFZlcnNpb24s
ICJQcmludCB0aGUgV1BFIHZlcnNpb24iLCBudWxscHRyIH0sCiAgICAgeyBHX09QVElPTl9SRU1B
SU5JTkcsIDAsIDAsIEdfT1BUSU9OX0FSR19GSUxFTkFNRV9BUlJBWSwgJnVyaUFyZ3VtZW50cywg
bnVsbHB0ciwgIltVUkxdIiB9LAogICAgIHsgbnVsbHB0ciwgMCwgMCwgR19PUFRJT05fQVJHX05P
TkUsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIgfQpAQCAtMjI4LDcgKzIzMCw3IEBAIGludCBt
YWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAgICAgaWYgKGlnbm9yZVRMU0Vycm9ycykKICAg
ICAgICAgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX3NldF90bHNfZXJyb3JzX3BvbGljeSht
YW5hZ2VyLCBXRUJLSVRfVExTX0VSUk9SU19QT0xJQ1lfSUdOT1JFKTsKIAotICAgIGF1dG8qIHdl
YkNvbnRleHQgPSB3ZWJraXRfd2ViX2NvbnRleHRfbmV3X3dpdGhfd2Vic2l0ZV9kYXRhX21hbmFn
ZXIobWFuYWdlcik7CisgICAgYXV0byogd2ViQ29udGV4dCA9IFdFQktJVF9XRUJfQ09OVEVYVChn
X29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX0NPTlRFWFQsICJ3ZWJzaXRlLWRhdGEtbWFuYWdl
ciIsIG1hbmFnZXIsICJ0aW1lLXpvbmUtb3ZlcnJpZGUiLCB0aW1lWm9uZSwgbnVsbHB0cikpOwog
ICAgIGdfb2JqZWN0X3VucmVmKG1hbmFnZXIpOwogCiAgICAgaWYgKGNvb2tpZXNQb2xpY3kpIHsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNDM5NGM5NzZiZmIxZjJkNTgxNTc4ODdiM2Q2ZjZk
ZWU1OTUyNjE2Ni4uMjQ2MTQ3NGVlNDNlN2ZhNWFlZjY4NDY5MTNlNTY0NWJhM2FkYmI5NCAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTgzNSw2ICs4MzUsNyBAQAogCQk5OTg0RkFDRTFDRkZC
MDkwMDA4RDE5OEMgLyogZWRpdGFibGUtYm9keS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5ODRGQUNEMUNGRkIwMzgwMDhEMTk4QyAv
KiBlZGl0YWJsZS1ib2R5Lmh0bWwgKi87IH07CiAJCTk5OTkxMDhCMUYzOTNDOTYwMDhBRDQ1NSAv
KiBDb3B5aW5nLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTk5OTEwOEExRjM5M0M4QjAwOEFENDU1IC8qIENvcHlpbmcubW0gKi87IH07CiAJCTk5QjRG
OUM2MjRFREVEOTcwMDAyMkI4MiAvKiBXS0luc3BlY3RvckRlbGVnYXRlLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlCNEY5QzUyNEVERUQ5NjAwMDIy
QjgyIC8qIFdLSW5zcGVjdG9yRGVsZWdhdGUubW0gKi87IH07CisJCTlBMThFNDE5MjRCNjFCRTgw
MDBCQjM1MSAvKiBUaW1lWm9uZU92ZXJyaWRlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOUExOEU0MTcyNEI2MTVEOTAwMEJCMzUxIC8qIFRpbWVab25l
T3ZlcnJpZGUubW0gKi87IH07CiAJCTlCMDJFMEQ2MjM1RkE0N0QwMDQwNDRCMiAvKiBUZXh0TWFu
aXB1bGF0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOUIwMkUwRDUyMzVGQTQ3RDAwNDA0NEIyIC8qIFRleHRNYW5pcHVsYXRpb24ubW0gKi87IH07
CiAJCTlCMDc4NkE1MUM1ODg1QzMwMEQxNTlFMyAvKiBJbmplY3RlZEJ1bmRsZU1ha2VBbGxTaGFk
b3dSb290c09wZW5fQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDlCMDc4NkE0MUM1ODg1QzMwMEQxNTlFMyAvKiBJbmplY3RlZEJ1bmRsZU1h
a2VBbGxTaGFkb3dSb290c09wZW5fQnVuZGxlLmNwcCAqLzsgfTsKIAkJOUIwQzA1MTkyNEZERkI3
RDAwRjJGRTMxIC8qIENvbXBhY3RVbmlxdWVQdHJUdXBsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjBDMDUxODI0RkRGQjcwMDBGMkZFMzEgLyog
Q29tcGFjdFVuaXF1ZVB0clR1cGxlLmNwcCAqLzsgfTsKQEAgLTI0NDYsNiArMjQ0Nyw3IEBACiAJ
CTk5ODRGQUNEMUNGRkIwMzgwMDhEMTk4QyAvKiBlZGl0YWJsZS1ib2R5Lmh0bWwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0Lmh0bWw7IHBhdGggPSAiZWRpdGFibGUtYm9keS5odG1sIjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTk5OTEwOEExRjM5M0M4QjAwOEFENDU1IC8qIENvcHlpbmcubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb3B5aW5nLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5OUI0RjlDNTI0RURFRDk2MDAwMjJCODIgLyogV0tJbnNw
ZWN0b3JEZWxlZ2F0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFdLSW5zcGVjdG9yRGVsZWdhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlB
MThFNDE3MjRCNjE1RDkwMDBCQjM1MSAvKiBUaW1lWm9uZU92ZXJyaWRlLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVGltZVpvbmVPdmVycmlkZS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIwMkUwRDUyMzVGQTQ3RDAwNDA0NEIyIC8qIFRleHRN
YW5pcHVsYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBUZXh0TWFuaXB1bGF0aW9uLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjA3ODZBMjFDNTg4MzBGMDBEMTU5RTMg
LyogSW5qZWN0ZWRCdW5kbGVNYWtlQWxsU2hhZG93Um9vdHNPcGVuLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluamVjdGVkQnVuZGxlTWFrZUFsbFNoYWRvd1Jvb3Rz
T3Blbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMDc4NkE0MUM1ODg1QzMw
MEQxNTlFMyAvKiBJbmplY3RlZEJ1bmRsZU1ha2VBbGxTaGFkb3dSb290c09wZW5fQnVuZGxlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluamVjdGVkQnVuZGxlTWFr
ZUFsbFNoYWRvd1Jvb3RzT3Blbl9CdW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMzM3NSw2ICszMzc3LDcgQEAKIAkJCQk5QjAyRTBENTIzNUZBNDdEMDA0MDQ0QjIgLyog
VGV4dE1hbmlwdWxhdGlvbi5tbSAqLywKIAkJCQk1QzE2RjhGQjIzMEM5NDJCMDA3NEM0QTggLyog
VGV4dFNpemUubW0gKi8sCiAJCQkJQzIyRkEzMkEyMjhGODcwODAwOUQ3OTg4IC8qIFRleHRXaWR0
aC5tbSAqLywKKwkJCQk5QTE4RTQxNzI0QjYxNUQ5MDAwQkIzNTEgLyogVGltZVpvbmVPdmVycmlk
ZS5tbSAqLywKIAkJCQk1QzczQTgxQTIzMjMwNTk4MDBERUE4NUEgLyogVExTRGVwcmVjYXRpb24u
bW0gKi8sCiAJCQkJQ0RFMTk1QjMxQ0ZFMEFERTAwNTNEMjU2IC8qIFRvcENvbnRlbnRJbnNldC5t
bSAqLywKIAkJCQk1Q0I0MEI0RDFGNEI5OEJFMDA3REM3QjkgLyogVUlEZWxlZ2F0ZS5tbSAqLywK
QEAgLTU0NTYsNiArNTQ1OSw3IEBACiAJCQkJNUMxNkY4RkMyMzBDOTQzNzAwNzRDNEE4IC8qIFRl
eHRTaXplLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQzIyRkEzMkIyMjhGODcwODAwOUQ3OTg4IC8q
IFRleHRXaWR0aC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUREMUE0MTFBOTIwMDQ0N0M0
QyAvKiBUaW1lUmFuZ2VzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTlBMThFNDE5MjRCNjFCRTgw
MDBCQjM1MSAvKiBUaW1lWm9uZU92ZXJyaWRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0Uw
QkQxRDBBNjUwQzAwRkVCQ0YzIC8qIFRvcENvbnRlbnRJbnNldC5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTdDQ0U3RUQzMUE0MTFBN0UwMDQ0N0M0QyAvKiBUeXBpbmdTdHlsZUNyYXNoLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTcxNTJCNzgyMURENEU4RDAwMEMzN0NBIC8qIFUyZkNvbW1hbmRDb25z
dHJ1Y3RvclRlc3QuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1RpbWVab25lT3ZlcnJpZGUubW0gYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1RpbWVab25lT3ZlcnJpZGUubW0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZDM4NWQ0MzU4NDE5YjJjMjQ4MjE5NDFhNDk0N2RhMmNlN2RmOGU3ZgotLS0gL2Rldi9udWxs
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVGltZVpvbmVPdmVy
cmlkZS5tbQpAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIElnYWxp
YSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaWYgUExBVEZPUk0oTUFD
KQorCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdFdLV2ViVmll
dy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg+Cisj
aW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L19XS1By
b2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oPgorI2ltcG9ydCA8d3RmL0Z1bmN0aW9uLmg+CisjaW1w
b3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworY2xhc3MgVGltZVpvbmVPdmVycmlkZVRlc3Qg
OiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CitwdWJsaWM6CisgICAgdm9pZCBTZXRVcCgpIG92ZXJy
aWRlCisgICAgeworICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgICAgICBhdXRvIHByb2Nlc3NQb29s
Q29uZmlnID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF0pOworICAgICAgICBbcHJvY2Vzc1Bvb2xDb25maWcgc2V0VGltZVpvbmVPdmVycmlkZTpAIkV1
cm9wZS9CZXJsaW4iXTsKKworICAgICAgICBfd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMzAwLCAzMDApIGNvbmZp
Z3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246cHJv
Y2Vzc1Bvb2xDb25maWcuZ2V0KCldKTsKKyAgICB9CisKKyAgICB2b2lkIHJ1blNjcmlwdEFuZEV4
ZWN1dGVDYWxsYmFjayhjb25zdCBTdHJpbmcmIHNjcmlwdCwgRnVuY3Rpb248dm9pZChpZCk+JiYg
Y2FsbGJhY2spCisgICAgeworICAgICAgICBib29sIGNvbXBsZXRlID0gZmFsc2U7CisgICAgICAg
IFtfd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6c2NyaXB0IGNvbXBsZXRpb25IYW5kbGVyOlsm
XSAoaWQgcmVzdWx0LCBOU0Vycm9yICopIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7
CisgICAgICAgICAgICBjb21wbGV0ZSA9IHRydWU7CisgICAgICAgIH1dOworICAgICAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmNvbXBsZXRlKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
UmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IF93ZWJWaWV3OworfTsKKworVEVTVF9GKFRpbWVab25l
T3ZlcnJpZGVUZXN0LCBUaW1lWm9uZU92ZXJyaWRlKQoreworICAgIHJ1blNjcmlwdEFuZEV4ZWN1
dGVDYWxsYmFjaygibGV0IG5vdyA9IG5ldyBEYXRlKCk7IG5vdy5nZXRUaW1lem9uZU9mZnNldCgp
IiwgW10oaWQgcmVzdWx0KSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShbcmVzdWx0IHN0cmlu
Z1ZhbHVlXSwgIi0xMjAiKTsKKyAgICB9KTsKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYkNvbnRleHQuY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJDb250
ZXh0LmNwcAppbmRleCAyZjNhMmIyZjczNDUxMGJhNWY0ZGE0OTg2YmM2MDEzZjExMjYzOTU0Li5i
ZmU3MDUyMzYwMzI1ZTg2ZWNjOGJkZDJlMGY4MjljZDVhNjQ1OTNmIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYkNvbnRleHQuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2Vi
Q29udGV4dC5jcHAKQEAgLTM4Niw2ICszODYsMjYgQEAgc3RhdGljIHZvaWQgdGVzdFdlYkNvbnRl
eHRMYW5ndWFnZXMoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgZ19hc3Nl
cnRfZXJyb3IoZXJyb3IuZ2V0KCksIFdFQktJVF9KQVZBU0NSSVBUX0VSUk9SLCBXRUJLSVRfSkFW
QVNDUklQVF9FUlJPUl9TQ1JJUFRfRkFJTEVEKTsKIH0KIAorCitzdGF0aWMgdm9pZCB0ZXN0V2Vi
Q29udGV4dFRpbWVab25lT3ZlcnJpZGUoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIp
Cit7CisgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOworICAgIFdlYktpdEphdmFzY3Jp
cHRSZXN1bHQqIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVu
dGlsRmluaXNoZWQoImxldCBub3cgPSBuZXcgRGF0ZSgpOyBub3cuZ2V0VGltZXpvbmVPZmZzZXQo
KSIsICZlcnJvci5vdXRQdHIoKSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChqYXZhc2NyaXB0UmVz
dWx0KTsKKyAgICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7CisgICAgLy8gQnkgZGVm
YXVsdCB0aGUgdGVzdCBoYXJuZXNzIHVzZXMgdGhlIFBhY2lmaWMvTG9zX0FuZ2VsZXMgdGltZXpv
bmUgd2hpY2ggaXMgKzcgaG91cnMgKDQyMCBtaW51dGVzKSBjb21wYXJlZCB0byBHTVQuCisgICAg
Z19hc3NlcnRfY21waW50KFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9OdW1iZXIoamF2
YXNjcmlwdFJlc3VsdCksID09LCA0MjApOworCisgICAgLy8gQ3JlYXRlIGEgbmV3IGNvbnRleHQg
Y29uZmlndXJlZCB3aXRoIHRpbWUgem9uZSBvdmVyaWRlIHNldCB0byBCZXJsaW4gd2hpY2ggaXMg
MTIwIG1pbnV0ZXMgYWhlYWQgb2YgdGhlIEdNVCBvZmZzZXQuCisgICAgYXV0byB3ZWJDb250ZXh0
ID0gYWRvcHRHUmVmKFdFQktJVF9XRUJfQ09OVEVYVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVf
V0VCX0NPTlRFWFQsCisgICAgICAgICJ0aW1lLXpvbmUtb3ZlcnJpZGUiLCAiRXVyb3BlL0Jlcmxp
biIsIG51bGxwdHIpKSk7CisgICAgYXV0byB3ZWJWaWV3ID0gVGVzdDo6YWRvcHRWaWV3KFRlc3Q6
OmNyZWF0ZVdlYlZpZXcod2ViQ29udGV4dC5nZXQoKSkpOworICAgIGphdmFzY3JpcHRSZXN1bHQg
PSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoImxldCBub3cgPSBuZXcg
RGF0ZSgpOyBub3cuZ2V0VGltZXpvbmVPZmZzZXQoKSIsICZlcnJvci5vdXRQdHIoKSwgd2ViVmll
dy5nZXQoKSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChqYXZhc2NyaXB0UmVzdWx0KTsKKyAgICBn
X2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7CisgICAgZ19hc3NlcnRfY21waW50KFdlYlZp
ZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9OdW1iZXIoamF2YXNjcmlwdFJlc3VsdCksID09LCAt
MTIwKTsKK30KKwogc3RhdGljIHZvaWQgc2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2VydmVy
LCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hhciogcGF0aCwgR0hhc2hUYWJsZSosIFNv
dXBDbGllbnRDb250ZXh0KiwgZ3BvaW50ZXIpCiB7CiAgICAgaWYgKG1lc3NhZ2UtPm1ldGhvZCAh
PSBTT1VQX01FVEhPRF9HRVQpIHsKQEAgLTc2Niw2ICs3ODYsNyBAQCB2b2lkIGJlZm9yZUFsbCgp
CiAgICAgU2VjdXJpdHlQb2xpY3lUZXN0OjphZGQoIldlYktpdFNlY3VyaXR5TWFuYWdlciIsICJz
ZWN1cml0eS1wb2xpY3kiLCB0ZXN0V2ViQ29udGV4dFNlY3VyaXR5UG9saWN5KTsKICAgICBXZWJW
aWV3VGVzdDo6YWRkKCJXZWJLaXRTZWN1cml0eU1hbmFnZXIiLCAiZmlsZS14aHIiLCB0ZXN0V2Vi
Q29udGV4dFNlY3VyaXR5RmlsZVhIUik7CiAgICAgUHJveHlUZXN0OjphZGQoIldlYktpdFdlYkNv
bnRleHQiLCAicHJveHkiLCB0ZXN0V2ViQ29udGV4dFByb3h5U2V0dGluZ3MpOworICAgIFdlYlZp
ZXdUZXN0OjphZGQoIldlYktpdFdlYkNvbnRleHQiLCAidGltZXpvbmUiLCB0ZXN0V2ViQ29udGV4
dFRpbWVab25lT3ZlcnJpZGUpOwogfQogCiB2b2lkIGFmdGVyQWxsKCkKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1Rlc3RNYWluLmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1Rlc3RNYWluLmNwcAppbmRleCBmYTViZTE2Mjcy
ZGMyNjVhYTM5NTYyMGIxNjkxMjY3ZWJhYzlkOTM1Li41ZWEzNjVlYTA2NTU2YWU3NDgxYmJkYTdm
NGI2NDUzNmU5NzY3OGE2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2Vi
S2l0R0xpYi9UZXN0TWFpbi5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktp
dEdMaWIvVGVzdE1haW4uY3BwCkBAIC0xMjksNiArMTI5LDcgQEAgaW50IG1haW4oaW50IGFyZ2Ms
IGNoYXIqKiBhcmd2KQogICAgIGdfc2V0ZW52KCJHU0VUVElOR1NfQkFDS0VORCIsICJtZW1vcnki
LCBUUlVFKTsKICAgICAvLyBHZXQgcmlkIG9mIHJ1bnRpbWUgd2FybmluZ3MgYWJvdXQgZGVwcmVj
YXRlZCBwcm9wZXJ0aWVzIGFuZCBzaWduYWxzLCBzaW5jZSB0aGV5IGJyZWFrIHRoZSB0ZXN0cy4K
ICAgICBnX3NldGVudigiR19FTkFCTEVfRElBR05PU1RJQyIsICIwIiwgVFJVRSk7CisgICAgZ19z
ZXRlbnYoIlRaIiwgIkFtZXJpY2EvTG9zX0FuZ2VsZXMiLCBUUlVFKTsKICAgICBnX3Rlc3RfYnVn
X2Jhc2UoImh0dHBzOi8vYnVncy53ZWJraXQub3JnLyIpOwogCiAgICAgcmVnaXN0ZXJHUmVzb3Vy
Y2UoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dl
YlZpZXdUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZp
ZXdUZXN0LmNwcAppbmRleCA3YTEzZWI4Zjg0MDJkZjA1MTdhZjA2OGQ5MWQyYWZjZDA5ZGU5NjQ2
Li4zMThjZGU5ODMwYWFlNGIxMjQzZTJmOWEwMjViMzQ2N2Y2MGZhYjI1IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5jcHAKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuY3BwCkBAIC0y
ODIsOSArMjgyLDkgQEAgY29uc3QgY2hhciogV2ViVmlld1Rlc3Q6Om1haW5SZXNvdXJjZURhdGEo
c2l6ZV90JiBtYWluUmVzb3VyY2VEYXRhU2l6ZSkKICAgICByZXR1cm4gbV9yZXNvdXJjZURhdGEu
Z2V0KCk7CiB9CiAKLXN0YXRpYyB2b2lkIHJ1bkphdmFTY3JpcHRSZWFkeUNhbGxiYWNrKEdPYmpl
Y3QqLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgV2ViVmlld1Rlc3QqIHRlc3QpCitzdGF0aWMgdm9p
ZCBydW5KYXZhU2NyaXB0UmVhZHlDYWxsYmFjayhHT2JqZWN0KiBvYmplY3QsIEdBc3luY1Jlc3Vs
dCogcmVzdWx0LCBXZWJWaWV3VGVzdCogdGVzdCkKIHsKLSAgICB0ZXN0LT5tX2phdmFzY3JpcHRS
ZXN1bHQgPSB3ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFzY3JpcHRfZmluaXNoKHRlc3QtPm1fd2Vi
VmlldywgcmVzdWx0LCB0ZXN0LT5tX2phdmFzY3JpcHRFcnJvcik7CisgICAgdGVzdC0+bV9qYXZh
c2NyaXB0UmVzdWx0ID0gd2Via2l0X3dlYl92aWV3X3J1bl9qYXZhc2NyaXB0X2ZpbmlzaChXRUJL
SVRfV0VCX1ZJRVcob2JqZWN0KSwgcmVzdWx0LCB0ZXN0LT5tX2phdmFzY3JpcHRFcnJvcik7CiAg
ICAgZ19tYWluX2xvb3BfcXVpdCh0ZXN0LT5tX21haW5Mb29wKTsKIH0KIApAQCAtMzAwLDEzICsz
MDAsMTUgQEAgc3RhdGljIHZvaWQgcnVuSmF2YVNjcmlwdEluV29ybGRSZWFkeUNhbGxiYWNrKEdP
YmplY3QqLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgV2UKICAgICBnX21haW5fbG9vcF9xdWl0KHRl
c3QtPm1fbWFpbkxvb3ApOwogfQogCi1XZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBXZWJWaWV3VGVz
dDo6cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKGNvbnN0IGNoYXIqIGphdmFzY3Jp
cHQsIEdFcnJvcioqIGVycm9yKQorV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogV2ViVmlld1Rlc3Q6
OnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZChjb25zdCBjaGFyKiBqYXZhc2NyaXB0
LCBHRXJyb3IqKiBlcnJvciwgV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKICAgICBpZiAobV9q
YXZhc2NyaXB0UmVzdWx0KQogICAgICAgICB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfdW5yZWYo
bV9qYXZhc2NyaXB0UmVzdWx0KTsKICAgICBtX2phdmFzY3JpcHRSZXN1bHQgPSAwOwogICAgIG1f
amF2YXNjcmlwdEVycm9yID0gZXJyb3I7Ci0gICAgd2Via2l0X3dlYl92aWV3X3J1bl9qYXZhc2Ny
aXB0KG1fd2ViVmlldywgamF2YXNjcmlwdCwgMCwgcmVpbnRlcnByZXRfY2FzdDxHQXN5bmNSZWFk
eUNhbGxiYWNrPihydW5KYXZhU2NyaXB0UmVhZHlDYWxsYmFjayksIHRoaXMpOworICAgIGlmICgh
d2ViVmlldykKKyAgICAgICAgd2ViVmlldyA9IG1fd2ViVmlldzsKKyAgICB3ZWJraXRfd2ViX3Zp
ZXdfcnVuX2phdmFzY3JpcHQod2ViVmlldywgamF2YXNjcmlwdCwgMCwgcmVpbnRlcnByZXRfY2Fz
dDxHQXN5bmNSZWFkeUNhbGxiYWNrPihydW5KYXZhU2NyaXB0UmVhZHlDYWxsYmFjayksIHRoaXMp
OwogICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29wKTsKIAogICAgIHJldHVybiBtX2phdmFz
Y3JpcHRSZXN1bHQ7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0
R0xpYi9XZWJWaWV3VGVzdC5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIv
V2ViVmlld1Rlc3QuaAppbmRleCA3MGQ3OTM3YThhYjVlYmExZWUwNDE0ZmU1NzIxZTQ0YzE3ZDNl
OTI1Li40OWRlYzUzYThiNjFiOTc1OTkyYzRlZDA2NzE2ZWQ5NjdkMGUzMTM0IDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5oCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmgKQEAgLTcx
LDcgKzcxLDcgQEAgcHVibGljOgogICAgIHZvaWQgZW1pdFBvcHVwTWVudVNpZ25hbCgpOwogI2Vu
ZGlmCiAKLSAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBydW5KYXZhU2NyaXB0QW5kV2FpdFVu
dGlsRmluaXNoZWQoY29uc3QgY2hhciogamF2YXNjcmlwdCwgR0Vycm9yKiopOworICAgIFdlYktp
dEphdmFzY3JpcHRSZXN1bHQqIHJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZChjb25z
dCBjaGFyKiBqYXZhc2NyaXB0LCBHRXJyb3IqKiwgV2ViS2l0V2ViVmlldyogPSBudWxscHRyKTsK
ICAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBydW5KYXZhU2NyaXB0RnJvbUdSZXNvdXJjZUFu
ZFdhaXRVbnRpbEZpbmlzaGVkKGNvbnN0IGNoYXIqIHJlc291cmNlLCBHRXJyb3IqKik7CiAgICAg
V2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogcnVuSmF2YVNjcmlwdEluV29ybGRBbmRXYWl0VW50aWxG
aW5pc2hlZChjb25zdCBjaGFyKiBqYXZhc2NyaXB0LCBjb25zdCBjaGFyKiB3b3JsZCwgR0Vycm9y
KiopOwogICAgIFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIHJ1bkphdmFTY3JpcHRXaXRob3V0Rm9y
Y2VkVXNlckdlc3R1cmVzQW5kV2FpdFVudGlsRmluaXNoZWQoY29uc3QgY2hhciogamF2YXNjcmlw
dCwgR0Vycm9yKiopOwpkaWZmIC0tZ2l0IGEvVG9vbHMvZmxhdHBhay9mbGF0cGFrdXRpbHMucHkg
Yi9Ub29scy9mbGF0cGFrL2ZsYXRwYWt1dGlscy5weQppbmRleCBjMjgwODU2MGNmN2JmMThiZjM0
ZmRjNGI1NDM2YWRmZWI0NWNjNjc4Li41ODE4OTY5Mjg3MjA1NzYzZjk1OWFhMzFmYWRlZGI2MzRm
OTNmYzI4IDEwMDY0NAotLS0gYS9Ub29scy9mbGF0cGFrL2ZsYXRwYWt1dGlscy5weQorKysgYi9U
b29scy9mbGF0cGFrL2ZsYXRwYWt1dGlscy5weQpAQCAtNzI2LDcgKzcyNiw3IEBAIGNsYXNzIFdl
YmtpdEZsYXRwYWs6CiAgICAgICAgICAgICBdKQogCiAgICAgICAgICAgICBzYW5kYm94X2Vudmly
b25tZW50LnVwZGF0ZSh7Ci0gICAgICAgICAgICAgICAgIlRaIjogIlBTVDhQRFQiLAorICAgICAg
ICAgICAgICAgICJUWiI6ICJBbWVyaWNhL0xvc19BbmdlbGVzIiwKICAgICAgICAgICAgIH0pCiAK
ICAgICAgICAgZW52X3Zhcl9wcmVmaXhlc190b19rZWVwID0gWwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457711</attachid>
            <date>2022-04-15 12:05:42 -0700</date>
            <delta_ts>2022-04-15 18:22:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213884-20220415120541.patch</filename>
            <type>text/plain</type>
            <size>45388</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyOTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NjEyNGZmMTU5ZTBiZDI3MGEwMTk4MmRlZGQ0MjNhMDVmMjM0OGY5Li42MDgzNWVhNGQ5MTliNGIy
YjJkYzQwOGNkZTM1YTRmNWU3OTc0ZDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAyMi0wNC0xMyAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxp
YS5jb20+IGFuZCBQYXZlbCBGZWxkbWFuIDxwYXZlbC5mZWxkbWFuQGdtYWlsLmNvbT4gYW5kIFl1
cnkgU2VtaWtoYXRza3kgPHl1cnlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBbV0syXSBBZGQg
QVBJIHRvIGFsbG93IGVtYmVkZGVyIHRvIHNldCBhIHRpbWV6b25lIG92ZXJyaWRlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM4ODQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHJ1bnRpbWUvRGF0ZUNv
bnZlcnNpb24uY3BwOgorICAgICAgICAoSlNDOjpmb3JtYXREYXRlVGltZSk6IEZvcm1hdCB0aGUg
b3ZlcnJpZGRlbiB0aW1lem9uZSBpZiBpdCdzIGVuYWJsZWQuCisgICAgICAgICogcnVudGltZS9K
U0RhdGVNYXRoLmNwcDoKKyAgICAgICAgKEpTQzo6RGF0ZUNhY2hlOjpkZWZhdWx0VGltZVpvbmUp
OiBSZXR1cm4gdGhlIG92ZXJyaWRkZW4gdGltZXpvbmUgaWYgaXQncyBlbmFibGVkLgorICAgICAg
ICAoSlNDOjpEYXRlQ2FjaGU6OnRpbWVab25lQ2FjaGVTbG93KTogQXBwbHkgdGltZXpvbmUgb3Zl
cnJpZGUgaWYgaXQgaXMgc2V0LgorCiAyMDIyLTA0LTE0ICBDYWl0bGluIFBvdHRlciAgPGNhaXRw
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0pTQ10gU2hhZG93UmVhbG0gZ2xvYmFsIG9iamVjdCBo
YXMgYSBtdXRhYmxlIHByb3RvdHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA0MDdmYzljYzBkZjIzZjUzMTUxYmVkNGM5MTY1
YmFhNzYxZGZiYWZkLi43YjQyNzQwMzM5MDA3Yjc3MjYzODE1M2M3YjM1ZjA1NDBhNzY1YjVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIwIEBACisyMDIyLTA0LTEzICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1h
bmRAaWdhbGlhLmNvbT4gYW5kIFBhdmVsIEZlbGRtYW4gPHBhdmVsLmZlbGRtYW5AZ21haWwuY29t
PiBhbmQgWXVyeSBTZW1pa2hhdHNreSA8eXVyeXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtX
SzJdIEFkZCBBUEkgdG8gYWxsb3cgZW1iZWRkZXIgdG8gc2V0IGEgdGltZXpvbmUgb3ZlcnJpZGUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzg4NAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0Rh
dGVNYXRoLmNwcDogQWRkIG5ldyBBUElzIHRvIGNvbnRyb2wgYW5kIHF1ZXJ5IHRoZSB0aW1lem9u
ZSBvdmVycmlkZS4KKyAgICAgICAgKFdURjo6aW5uZXJUaW1lWm9uZU92ZXJyaWRlKTogU3RhdGlj
IHN0b3JhZ2Ugb2YgdGhlIG92ZXJyaWRlIGluZm9ybWF0aW9ucy4KKyAgICAgICAgKFdURjo6Y2Fs
Y3VsYXRlTG9jYWxUaW1lT2Zmc2V0KTogQ2FsY3VsYXRlIG9mZnNldCBmb3Igb3ZlcnJpZGRlbiB0
aW1lem9uZSwgaWYgaXQncyBwcmVzZW50LgorICAgICAgICAoV1RGOjppc1RpbWVab25lVmFsaWQp
OiBOZXcgZnVuY3Rpb24gYWxsb3dpbmcgdG8gY2hlY2sgaWYgYSB0aW1lem9uZSBpZGVudGlmaWVy
IGlzIHZhbGlkIGFjY29yZGluZyB0byBJQ1UncyBkYXRhYmFzZS4KKyAgICAgICAgKFdURjo6c2V0
VGltZVpvbmVPdmVycmlkZSk6IE5ldyBBUEkgdG8gc2V0IHRoZSB0aW1lem9uZSBvdmVycmlkZSwg
dGhpcyBpcyBtZWFudCB0byBiZQorICAgICAgICB1c2VkIG9uIG5ld2x5IGNyZWF0ZWQgV2ViUHJv
Y2Vzc2VzLgorICAgICAgICAoV1RGOjp0aW1lWm9uZU92ZXJyaWRlKTpRdWVyeSB0aGUgdGltZXpv
bmUgb3ZlcnJpZGUuCisgICAgICAgIChXVEY6OnRpbWVab25lRGlzcGxheU5hbWVPdmVycmlkZSk6
IEdldCB0aGUgdGltZXpvbmUgbmFtZSBvZiB0aGUgb3ZlcnJpZGRlbiB0aW1lem9uZS4KKyAgICAg
ICAgKiB3dGYvRGF0ZU1hdGguaDoKKwogMjAyMi0wNC0xNSAgWmFuIERvYmVyc2VrICA8emRvYmVy
c2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bV1BFXSBSZW1vdmUgZXhjbHVzaXZlIGJ1
aWxkIGd1YXJkcyBhcm91bmQgR1BVIHByb2Nlc3MgcHJlZmVyZW5jZXMsIGNvZGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5k
ZXggNjU4ODVmZWUxYTY4MGQyNjI0ZDA5ZDNjYzA5MDU1ZjM5ODdjYjhlZC4uZjE2N2MyZTE5N2E1
YzcxMjRmNTQyZjNiMGE1OWQ0N2FjNTEyZTVjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NiBAQAor
MjAyMi0wNC0xMyAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+IGFuZCBZ
dXJ5IFNlbWlraGF0c2t5IDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1dLMl0gQWRk
IEFQSSB0byBhbGxvdyBlbWJlZGRlciB0byBzZXQgYSB0aW1lem9uZSBvdmVycmlkZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzODg0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRz
OgorCisgICAgICAgIC0gbmV3IENvY29hIEFQSQorICAgICAgICAtIG5ldyBHbGliIEFQSSAodGFy
Z2V0dGluZyBib3RoIFdQRSBhbmQgR1RLIHBvcnRzKQorICAgICAgICAtIG5ldyBDIEFQSSAoZm9y
IHRoZSB3aW4gcG9ydCkKKworICAgICAgICB0aGF0IGFsbG93cyB0aGUgZW1iZWRkZXIgdG8gc2V0
IGEgdGltZXpvbmUgb3ZlcnJpZGUgZm9yIHRoZSB1bmRlcmx5aW5nIFBhZ2VDb25maWd1cmF0aW9u
LgorICAgICAgICBTaW5jZSB0aGlzIEFQSSBpcyBub3QgZXhwb3NlZCBpbiBnbGliIHBvcnRzLCBh
IG5ldyBjb250cnVjdC10aW1lLW9ubHkgcHJvcGVydHkgd2FzIGFkZGVkIHRvCisgICAgICAgIHRo
ZSBXZWJLaXRXZWJDb250ZXh0IEFQSS4gSXQgd291bGQgYWxzbyBhbGxvdyBmaW5lLWdyYWluZWQg
Y29udHJvbCBvdmVyIG11bHRpcGxlIHBhZ2VzLCBmb3IKKyAgICAgICAgaW5zdGFuY2UgaXQncyBu
b3QgcG9zc2libGUgY3VycmVudGx5IHRvIGhhdmUgdHdvIHBhZ2VzIGluIGRpZmZlcmVudCB0aW1l
em9uZXMuCisKKyAgICAgICAgTm8gbmV3IGxheW91dCB0ZXN0cywgdGhpcyBjaGFuZ2UgaXMgY292
ZXJlZCBieSBuZXcgQVBJIHRlc3RzLgorCisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHA6
CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpjb3B5IGNvbnN0KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmg6CisgICAgICAgIChBUEk6OlBh
Z2VDb25maWd1cmF0aW9uOjpzZXRUaW1lWm9uZU92ZXJyaWRlKToKKyAgICAgICAgKEFQSTo6UGFn
ZUNvbmZpZ3VyYXRpb246OnRpbWVab25lT3ZlcnJpZGUgY29uc3QpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbToKKyAgICAgICAgKC1bV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBfdGltZVpvbmVPdmVycmlkZV0pOgorICAgICAgICAoLVtXS1dl
YlZpZXdDb25maWd1cmF0aW9uIF9zZXRUaW1lWm9uZU92ZXJyaWRlOl0pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHA6CisgICAgICAgICh3
ZWJraXRXZWJDb250ZXh0R2V0UHJvcGVydHkpOgorICAgICAgICAod2Via2l0V2ViQ29udGV4dFNl
dFByb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdF93ZWJfY29udGV4dF9jbGFzc19pbml0KToKKyAg
ICAgICAgKHdlYmtpdFdlYkNvbnRleHRDcmVhdGVQYWdlRm9yV2ViVmlldyk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5k
RG9tYWlucyk6CisKIDIwMjItMDQtMTUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29t
PgogCiAgICAgICAgIFNlcnZpY2VXb3JrZXIucG9zdE1lc3NhZ2UoKSBkb2Vzbid0IHdvcmsgZnJv
bSBpbnNpZGUgaWZyYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EYXRlQ29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRl
Q29udmVyc2lvbi5jcHAKaW5kZXggMmRlY2Y4YTgzYzgwZTgwY2E4Njc3ZjRjNzg3YmY3OWM2YzI5
OTVmYS4uMDNlZTlkZjg4NGZmMzc1YTI0NzBhNzE1Yjk4MDQ5ODJhOGZhMTk0NCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb252ZXJzaW9uLmNwcApAQCAtOTcs
MTcgKzk3LDI0IEBAIFN0cmluZyBmb3JtYXREYXRlVGltZShjb25zdCBHcmVnb3JpYW5EYXRlVGlt
ZSYgdCwgRGF0ZVRpbWVGb3JtYXQgZm9ybWF0LCBib29sIGFzCiAgICAgICAgICAgICBhcHBlbmRO
dW1iZXI8Mj4oYnVpbGRlciwgb2Zmc2V0IC8gNjApOwogICAgICAgICAgICAgYXBwZW5kTnVtYmVy
PDI+KGJ1aWxkZXIsIG9mZnNldCAlIDYwKTsKIAorICAgICAgICAgICAgU3RyaW5nIHRpbWVab25l
TmFtZTsKKyAgICAgICAgICAgIFN0cmluZyB0aW1lWm9uZU92ZXJyaWRlID0gV1RGOjp0aW1lWm9u
ZURpc3BsYXlOYW1lT3ZlcnJpZGUoKTsKKyAgICAgICAgICAgIGlmICghdGltZVpvbmVPdmVycmlk
ZS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgdGltZVpvbmVOYW1lID0gdGltZVpvbmVPdmVy
cmlkZTsKKyAgICAgICAgICAgIGVsc2UgewogI2lmIE9TKFdJTkRPV1MpCi0gICAgICAgICAgICBU
SU1FX1pPTkVfSU5GT1JNQVRJT04gdGltZVpvbmVJbmZvcm1hdGlvbjsKLSAgICAgICAgICAgIEdl
dFRpbWVab25lSW5mb3JtYXRpb24oJnRpbWVab25lSW5mb3JtYXRpb24pOwotICAgICAgICAgICAg
Y29uc3QgV0NIQVIqIHdpblRpbWVab25lTmFtZSA9IHQuaXNEU1QoKSA/IHRpbWVab25lSW5mb3Jt
YXRpb24uRGF5bGlnaHROYW1lIDogdGltZVpvbmVJbmZvcm1hdGlvbi5TdGFuZGFyZE5hbWU7Ci0g
ICAgICAgICAgICBTdHJpbmcgdGltZVpvbmVOYW1lKHdpblRpbWVab25lTmFtZSk7CisgICAgICAg
ICAgICAgICAgVElNRV9aT05FX0lORk9STUFUSU9OIHRpbWVab25lSW5mb3JtYXRpb247CisgICAg
ICAgICAgICAgICAgR2V0VGltZVpvbmVJbmZvcm1hdGlvbigmdGltZVpvbmVJbmZvcm1hdGlvbik7
CisgICAgICAgICAgICAgICAgY29uc3QgV0NIQVIqIHdpblRpbWVab25lTmFtZSA9IHQuaXNEU1Qo
KSA/IHRpbWVab25lSW5mb3JtYXRpb24uRGF5bGlnaHROYW1lIDogdGltZVpvbmVJbmZvcm1hdGlv
bi5TdGFuZGFyZE5hbWU7CisgICAgICAgICAgICAgICAgdGltZVpvbmVOYW1lID0gU3RyaW5nKHdp
blRpbWVab25lTmFtZSk7CiAjZWxzZQotICAgICAgICAgICAgc3RydWN0IHRtIGd0bSA9IHQ7Ci0g
ICAgICAgICAgICBjaGFyIHRpbWVab25lTmFtZVs3MF07Ci0gICAgICAgICAgICBzdHJmdGltZSh0
aW1lWm9uZU5hbWUsIHNpemVvZih0aW1lWm9uZU5hbWUpLCAiJVoiLCAmZ3RtKTsKKyAgICAgICAg
ICAgICAgICBzdHJ1Y3QgdG0gZ3RtID0gdDsKKyAgICAgICAgICAgICAgICBjaGFyIHR6TmFtZVs3
MF07CisgICAgICAgICAgICAgICAgc3RyZnRpbWUodHpOYW1lLCBzaXplb2YodHpOYW1lKSwgIiVa
IiwgJmd0bSk7CisgICAgICAgICAgICAgICAgdGltZVpvbmVOYW1lID0gU3RyaW5nOjpmcm9tVVRG
OCh0ek5hbWUpOwogI2VuZGlmCi0gICAgICAgICAgICBpZiAodGltZVpvbmVOYW1lWzBdKQorICAg
ICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCF0aW1lWm9uZU5hbWUuaXNFbXB0eSgpKQogICAg
ICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIgKCIsIHRpbWVab25lTmFtZSwgJyknKTsKICAg
ICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRGF0ZU1hdGguY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRlTWF0
aC5jcHAKaW5kZXggZmM2ZmQzOGVjYjM5MmU5ZDVlYTU0ZDU3MDI1Nzg1NjIyODk0MzRmYi4uNmU5
ZjViZmYwZTE0MDA5YzJhMzMwYjk1ZGIwNjVkNDMzMGJjYmE5YyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRlTWF0aC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRlTWF0aC5jcHAKQEAgLTMzMiw2ICszMzIsMTAgQEAgZG91
YmxlIERhdGVDYWNoZTo6cGFyc2VEYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZN
JiB2bSwgY29uc3QgU3RyaW5nJgogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1kZWZh
dWx0dGltZXpvbmUKIFN0cmluZyBEYXRlQ2FjaGU6OmRlZmF1bHRUaW1lWm9uZSgpCiB7CisgICAg
U3RyaW5nIHR6ID0gV1RGOjp0aW1lWm9uZU92ZXJyaWRlKCk7CisgICAgaWYgKCF0ei5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybiB0ejsKKwogI2lmIEhBVkUoSUNVX0NfVElNRVpPTkVfQVBJKQog
ICAgIHJldHVybiB0aW1lWm9uZUNhY2hlKCktPm1fY2Fub25pY2FsVGltZVpvbmVJRDsKICNlbHNl
CkBAIC0zODMsMTIgKzM4NywxOSBAQCBSZWY8RGF0ZUluc3RhbmNlRGF0YT4gRGF0ZUNhY2hlOjpj
YWNoZWREYXRlSW5zdGFuY2VEYXRhKGRvdWJsZSBtaWxsaXNlY29uZHNGcm9tRQogdm9pZCBEYXRl
Q2FjaGU6OnRpbWVab25lQ2FjaGVTbG93KCkKIHsKICAgICBBU1NFUlQoIW1fdGltZVpvbmVDYWNo
ZSk7CisKKyAgICBTdHJpbmcgb3ZlcnJpZGUgPSBXVEY6OnRpbWVab25lT3ZlcnJpZGUoKTsKICNp
ZiBIQVZFKElDVV9DX1RJTUVaT05FX0FQSSkKICAgICBhdXRvKiBjYWNoZSA9IG5ldyBPcGFxdWVJ
Q1VUaW1lWm9uZTsKIAogICAgIFN0cmluZyBjYW5vbmljYWw7CisgICAgVUVycm9yQ29kZSBzdGF0
dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgVmVjdG9yPFVDaGFyLCAzMj4gdGltZVpvbmVJRDsKLSAg
ICBhdXRvIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1Y2FsX2dldEhvc3RU
aW1lWm9uZSwgdGltZVpvbmVJRCk7CisgICAgaWYgKG92ZXJyaWRlLmlzRW1wdHkoKSkgeworICAg
ICAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odWNhbF9nZXRIb3N0VGlt
ZVpvbmUsIHRpbWVab25lSUQpOworICAgICAgICBBU1NFUlRfVU5VU0VEKHN0YXR1cywgVV9TVUND
RVNTKHN0YXR1cykpOworICAgIH0gZWxzZQorICAgICAgICB0aW1lWm9uZUlEID0gb3ZlcnJpZGUu
Y2hhcmFjdGVyc1dpdGhvdXROdWxsVGVybWluYXRpb24oKTsKICAgICBpZiAoVV9TVUNDRVNTKHN0
YXR1cykpIHsKICAgICAgICAgVmVjdG9yPFVDaGFyLCAzMj4gY2Fub25pY2FsQnVmZmVyOwogICAg
ICAgICBhdXRvIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1Y2FsX2dldENh
bm9uaWNhbFRpbWVab25lSUQsIHRpbWVab25lSUQuZGF0YSgpLCB0aW1lWm9uZUlELnNpemUoKSwg
Y2Fub25pY2FsQnVmZmVyLCBudWxscHRyKTsKQEAgLTQwNSw2ICs0MTYsMTEgQEAgdm9pZCBEYXRl
Q2FjaGU6OnRpbWVab25lQ2FjaGVTbG93KCkKICAgICB1Y2FsX3NldEdyZWdvcmlhbkNoYW5nZShj
YWNoZS0+bV9jYWxlbmRhci5nZXQoKSwgbWluRUNNQVNjcmlwdFRpbWUsICZzdGF0dXMpOyAvLyBJ
Z25vcmUgInVuc3VwcG9ydGVkIiBlcnJvci4KICAgICBtX3RpbWVab25lQ2FjaGUgPSBzdGQ6OnVu
aXF1ZV9wdHI8T3BhcXVlSUNVVGltZVpvbmUsIE9wYXF1ZUlDVVRpbWVab25lRGVsZXRlcj4oY2Fj
aGUpOwogI2Vsc2UKKyAgICBpZiAoIW92ZXJyaWRlLmlzRW1wdHkoKSkgeworICAgICAgICBhdXRv
KiB0aW1lem9uZSA9IGljdTo6VGltZVpvbmU6OmNyZWF0ZVRpbWVab25lKG92ZXJyaWRlLnV0Zjgo
KS5kYXRhKCkpOworICAgICAgICBtX3RpbWVab25lQ2FjaGUgPSBzdGQ6OnVuaXF1ZV9wdHI8T3Bh
cXVlSUNVVGltZVpvbmUsIE9wYXF1ZUlDVVRpbWVab25lRGVsZXRlcj4oYml0d2lzZV9jYXN0PE9w
YXF1ZUlDVVRpbWVab25lKj4odGltZXpvbmUpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAg
ICAvLyBEbyBub3QgdXNlIGljdTo6VGltZVpvbmU6OmNyZWF0ZURlZmF1bHQuIElDVSBpbnRlcm5h
bGx5IGhhcyBhIGNhY2hlIGZvciB0aW1lem9uZSBhbmQgY3JlYXRlRGVmYXVsdCByZXR1cm5zIHRo
aXMgY2FjaGVkIHZhbHVlLgogICAgIG1fdGltZVpvbmVDYWNoZSA9IHN0ZDo6dW5pcXVlX3B0cjxP
cGFxdWVJQ1VUaW1lWm9uZSwgT3BhcXVlSUNVVGltZVpvbmVEZWxldGVyPihiaXR3aXNlX2Nhc3Q8
T3BhcXVlSUNVVGltZVpvbmUqPihpY3U6OlRpbWVab25lOjpkZXRlY3RIb3N0VGltZVpvbmUoKSkp
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5jcHAgYi9Tb3Vy
Y2UvV1RGL3d0Zi9EYXRlTWF0aC5jcHAKaW5kZXggYjVmMjI4MzA4ZDE2MWI2ZTE2YzljNDVhYmY4
MmIxNTJiNTc2Y2M2ZS4uOGIxM2ZmMmI4MTMxNWUwMmU5ZmJhNGM3ZGRlMTc1YWQ3YWQ0OGI1ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRGF0ZU1hdGguY3BwCisrKyBiL1NvdXJjZS9XVEYv
d3RmL0RhdGVNYXRoLmNwcApAQCAtNzYsOSArNzYsMTQgQEAKICNpbmNsdWRlIDxsaW1pdHM+CiAj
aW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8dGltZS5oPgorI2luY2x1ZGUgPHVuaWNvZGUv
dWNhbC5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0FTQ0lJ
Q1R5cGUuaD4KKyNpbmNsdWRlIDx3dGYvTGFuZ3VhZ2UuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU3BlY2lmaWMuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3VuaWNvZGUvVVRGOENvbnZl
cnNpb24uaD4KIAogI2lmIE9TKFdJTkRPV1MpCiAjaW5jbHVkZSA8d2luZG93cy5oPgpAQCAtOTIs
NiArOTcsMTggQEAgdGVtcGxhdGU8dW5zaWduZWQgbGVuZ3RoPiBpbmxpbmUgYm9vbCBzdGFydHNX
aXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IGMKICAgICByZXR1cm4gZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCBsb3dlcmNhc2VMZXR0ZXJzLCBsZW5ndGggLSAx
KTsKIH0KIAorc3RydWN0IFRpbWVab25lT3ZlcnJpZGUgeworICAgIFVDYWxlbmRhciogY2FsIHsg
bnVsbHB0ciB9OworICAgIFN0cmluZyBpZDsKKyAgICBTdHJpbmcgZGlzcGxheU5hbWU7Cit9Owor
CitzdGF0aWMgVGltZVpvbmVPdmVycmlkZSYgaW5uZXJUaW1lWm9uZU92ZXJyaWRlKCkKK3sKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGltZVpvbmVPdmVycmlkZT4gdGltZVpvbmVPdmVycmlk
ZTsKKyAgICByZXR1cm4gdGltZVpvbmVPdmVycmlkZTsKK30KKwogLyogQ29uc3RhbnRzICovCiAK
IGNvbnN0IEFTQ0lJTGl0ZXJhbCB3ZWVrZGF5TmFtZVs3XSA9IHsgIk1vbiJfcywgIlR1ZSJfcywg
IldlZCJfcywgIlRodSJfcywgIkZyaSJfcywgIlNhdCJfcywgIlN1biJfcyB9OwpAQCAtMzE4LDYg
KzMzNSwxNCBAQCBzdGF0aWMgZG91YmxlIGNhbGN1bGF0ZURTVE9mZnNldCh0aW1lX3QgbG9jYWxU
aW1lLCBkb3VibGUgdXRjT2Zmc2V0KQogLy8gUmV0dXJucyBjb21iaW5lZCBvZmZzZXQgaW4gbWls
bGlzZWNvbmQgKFVUQyArIERTVCkuCiBMb2NhbFRpbWVPZmZzZXQgY2FsY3VsYXRlTG9jYWxUaW1l
T2Zmc2V0KGRvdWJsZSBtcywgVGltZVR5cGUgaW5wdXRUaW1lVHlwZSkKIHsKKyAgICBhdXRvJiB0
eiA9IGlubmVyVGltZVpvbmVPdmVycmlkZSgpOworICAgIGlmICh0ei5jYWwpIHsKKyAgICAgICAg
VUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgICAgIHVjYWxfc2V0TWlsbGlz
KHR6LmNhbCwgbXMsICZzdGF0dXMpOworICAgICAgICBpbnQzMl90IG9mZnNldCA9IHVjYWxfZ2V0
KHR6LmNhbCwgVUNBTF9aT05FX09GRlNFVCwgJnN0YXR1cyk7CisgICAgICAgIGludDMyX3QgZHN0
T2Zmc2V0ID0gdWNhbF9nZXQodHouY2FsLCBVQ0FMX0RTVF9PRkZTRVQsICZzdGF0dXMpOworICAg
ICAgICByZXR1cm4gTG9jYWxUaW1lT2Zmc2V0KGRzdE9mZnNldCwgb2Zmc2V0ICsgZHN0T2Zmc2V0
KTsKKyAgICB9CiAjaWYgSEFWRShUTV9HTVRPRkYpCiAgICAgZG91YmxlIGxvY2FsVG9VVENUaW1l
T2Zmc2V0ID0gaW5wdXRUaW1lVHlwZSA9PSBMb2NhbFRpbWUgPyBjYWxjdWxhdGVVVENPZmZzZXQo
KSA6IDA7CiAjZWxzZQpAQCAtMTAxNiw0ICsxMDQxLDc1IEBAIFN0cmluZyBtYWtlUkZDMjgyMkRh
dGVTdHJpbmcodW5zaWduZWQgZGF5T2ZXZWVrLCB1bnNpZ25lZCBkYXksIHVuc2lnbmVkIG1vbnRo
LCB1CiAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKIH0KIAorc3RkOjpvcHRp
b25hbDxWZWN0b3I8VUNoYXIsIDMyPj4gaXNUaW1lWm9uZVZhbGlkKGNvbnN0IFN0cmluZyYgdGlt
ZVpvbmUpCit7CisgICAgLy8gVGltZXpvbmUgaXMgYXNjaWkuCisgICAgVmVjdG9yPFVDaGFyPiBi
dWZmZXIodGltZVpvbmUubGVuZ3RoKCkpOworICAgIFVDaGFyKiBidWZmZXJTdGFydCA9IGJ1ZmZl
ci5kYXRhKCk7CisgICAgQ1N0cmluZyBjdHogPSB0aW1lWm9uZS51dGY4KCk7CisgICAgaWYgKCFV
bmljb2RlOjpjb252ZXJ0VVRGOFRvVVRGMTYoY3R6LmRhdGEoKSwgY3R6LmRhdGEoKSArIGN0ei5s
ZW5ndGgoKSwgJmJ1ZmZlclN0YXJ0LCBidWZmZXJTdGFydCArIHRpbWVab25lLmxlbmd0aCgpKSkK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIFZlY3RvcjxVQ2hhciwgMzI+IGNh
bm9uaWNhbEJ1ZmZlcigzMik7CisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7
CisgICAgYXV0byBjYW5vbmljYWxMZW5ndGggPSB1Y2FsX2dldENhbm9uaWNhbFRpbWVab25lSUQo
YnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSwgY2Fub25pY2FsQnVmZmVyLmRhdGEoKSwgY2Fu
b25pY2FsQnVmZmVyLnNpemUoKSwgbnVsbHB0ciwgJnN0YXR1cyk7CisgICAgaWYgKHN0YXR1cyA9
PSBVX0JVRkZFUl9PVkVSRkxPV19FUlJPUikgeworICAgICAgICBzdGF0dXMgPSBVX1pFUk9fRVJS
T1I7CisgICAgICAgIGNhbm9uaWNhbEJ1ZmZlci5ncm93KGNhbm9uaWNhbExlbmd0aCk7CisgICAg
ICAgIHVjYWxfZ2V0Q2Fub25pY2FsVGltZVpvbmVJRChidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6
ZSgpLCBjYW5vbmljYWxCdWZmZXIuZGF0YSgpLCBjYW5vbmljYWxMZW5ndGgsIG51bGxwdHIsICZz
dGF0dXMpOworICAgIH0gZWxzZQorICAgICAgICBjYW5vbmljYWxCdWZmZXIucmVzaXplKGNhbm9u
aWNhbExlbmd0aCk7CisgICAgcmV0dXJuIGNhbm9uaWNhbEJ1ZmZlcjsKK30KKworYm9vbCBzZXRU
aW1lWm9uZU92ZXJyaWRlKGNvbnN0IFN0cmluZyYgdGltZVpvbmUpCit7CisgICAgaW5uZXJUaW1l
Wm9uZU92ZXJyaWRlKCkuZGlzcGxheU5hbWUgPSBTdHJpbmcoKTsKKyAgICBpZiAoaW5uZXJUaW1l
Wm9uZU92ZXJyaWRlKCkuY2FsKSB7CisgICAgICAgIHVjYWxfY2xvc2UoaW5uZXJUaW1lWm9uZU92
ZXJyaWRlKCkuY2FsKTsKKyAgICAgICAgaW5uZXJUaW1lWm9uZU92ZXJyaWRlKCkuY2FsID0gbnVs
bHB0cjsKKyAgICB9CisKKyAgICBpZiAodGltZVpvbmUuaXNFbXB0eSgpKSB7CisgICAgICAgIGlu
bmVyVGltZVpvbmVPdmVycmlkZSgpLmlkID0gU3RyaW5nKCk7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKworICAgIGF1dG8gY2Fub25pY2FsQnVmZmVyID0gaXNUaW1lWm9uZVZhbGlkKHRp
bWVab25lKTsKKyAgICBpZiAoIWNhbm9uaWNhbEJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgYXV0byBjYW5vbmljYWxMZW5ndGggPSBjYW5vbmljYWxCdWZmZXItPnNpemUoKTsK
KyAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICBVQ2FsZW5kYXIqIGNh
bCA9IHVjYWxfb3BlbihjYW5vbmljYWxCdWZmZXItPmRhdGEoKSwgY2Fub25pY2FsTGVuZ3RoLCBu
dWxscHRyLCBVQ0FMX1RSQURJVElPTkFMLCAmc3RhdHVzKTsKKyAgICBpZiAoIVVfU1VDQ0VTUyhz
dGF0dXMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBWZWN0b3I8VUNoYXIsIDMyPiBk
aXNwbGF5TmFtZUJ1ZmZlcigzMik7CisgICAgYXV0byBkaXNwbGF5TmFtZUxlbmd0aCA9IHVjYWxf
Z2V0VGltZVpvbmVEaXNwbGF5TmFtZShjYWwsIFVDQUxfU1RBTkRBUkQsIGRlZmF1bHRMYW5ndWFn
ZSgpLnV0ZjgoKS5kYXRhKCksIGRpc3BsYXlOYW1lQnVmZmVyLmRhdGEoKSwgZGlzcGxheU5hbWVC
dWZmZXIuc2l6ZSgpLCAmc3RhdHVzKTsKKyAgICBpZiAoc3RhdHVzID09IFVfQlVGRkVSX09WRVJG
TE9XX0VSUk9SKSB7CisgICAgICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICAgICAgZGlz
cGxheU5hbWVCdWZmZXIuZ3JvdyhkaXNwbGF5TmFtZUxlbmd0aCk7CisgICAgICAgIHVjYWxfZ2V0
VGltZVpvbmVEaXNwbGF5TmFtZShjYWwsIFVDQUxfU1RBTkRBUkQsIGRlZmF1bHRMYW5ndWFnZSgp
LnV0ZjgoKS5kYXRhKCksIGRpc3BsYXlOYW1lQnVmZmVyLmRhdGEoKSwgZGlzcGxheU5hbWVMZW5n
dGgsICZzdGF0dXMpOworICAgIH0KKyAgICBpZiAoIVVfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvJiB0aW1lWm9uZU92ZXJyaWRlID0gaW5uZXJUaW1l
Wm9uZU92ZXJyaWRlKCk7CisgICAgdGltZVpvbmVPdmVycmlkZS5jYWwgPSBjYWw7CisgICAgdGlt
ZVpvbmVPdmVycmlkZS5pZCA9IFN0cmluZyhjYW5vbmljYWxCdWZmZXItPmRhdGEoKSwgY2Fub25p
Y2FsTGVuZ3RoKTsKKyAgICB0aW1lWm9uZU92ZXJyaWRlLmRpc3BsYXlOYW1lID0gU3RyaW5nKGRp
c3BsYXlOYW1lQnVmZmVyLmRhdGEoKSwgZGlzcGxheU5hbWVMZW5ndGgpOworICAgIHJldHVybiB0
cnVlOworfQorCitTdHJpbmcmIHRpbWVab25lT3ZlcnJpZGUoKQoreworICAgIHJldHVybiBpbm5l
clRpbWVab25lT3ZlcnJpZGUoKS5pZDsKK30KKworU3RyaW5nJiB0aW1lWm9uZURpc3BsYXlOYW1l
T3ZlcnJpZGUoKQoreworICAgIHJldHVybiBpbm5lclRpbWVab25lT3ZlcnJpZGUoKS5kaXNwbGF5
TmFtZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9EYXRlTWF0aC5oIGIvU291cmNlL1dURi93dGYvRGF0ZU1hdGguaAppbmRleCAxNzRlNmMwN2I2
ZjVjZjRiY2YwNDY5ZjIwZjhjZjAyMWJlZDI1MTAzLi4xYWRjOGIxMzU3NmM5M2Q4NTBhOWRjMTRm
MThkOWRiZmMyOTQxOGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmgKQEAgLTM5Myw2ICszOTMsMTEgQEAgaW5saW5l
IGRvdWJsZSB0aW1lVG9NUyhkb3VibGUgaG91ciwgZG91YmxlIG1pbiwgZG91YmxlIHNlYywgZG91
YmxlIG1zKQogICAgIHJldHVybiAoKChob3VyICogV1RGOjptaW51dGVzUGVySG91ciArIG1pbikg
KiBXVEY6OnNlY29uZHNQZXJNaW51dGUgKyBzZWMpICogV1RGOjptc1BlclNlY29uZCArIG1zKTsK
IH0KIAorV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFVDaGFyLCAzMj4+
IGlzVGltZVpvbmVWYWxpZChjb25zdCBTdHJpbmcmKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29s
IHNldFRpbWVab25lT3ZlcnJpZGUoY29uc3QgU3RyaW5nJik7CitXVEZfRVhQT1JUX1BSSVZBVEUg
U3RyaW5nJiB0aW1lWm9uZU92ZXJyaWRlKCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nJiB0
aW1lWm9uZURpc3BsYXlOYW1lT3ZlcnJpZGUoKTsKKwogLy8gUmV0dXJucyBjb21iaW5lZCBvZmZz
ZXQgaW4gbWlsbGlzZWNvbmQgKFVUQyArIERTVCkuCiBXVEZfRVhQT1JUX1BSSVZBVEUgTG9jYWxU
aW1lT2Zmc2V0IGNhbGN1bGF0ZUxvY2FsVGltZU9mZnNldChkb3VibGUgdXRjSW5NaWxsaXNlY29u
ZHMsIFRpbWVUeXBlID0gVVRDVGltZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggNTE0MmUyYzYwOTUzMWU1
YWY4MDljNDZkYTZmYzQyNjUwY2U0ZDY5YS4uZDk4NGVkNjg2Yjg3OTJkZjhkYjA5YzUzNWFkNjUy
ODc4NGRhMDMwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTIxNCw2ICsyMTQsOCBAQCB2b2lkIFdlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0
CiAjaWYgVVNFKEFUU1BJKQogICAgIGVuY29kZXIgPDwgYWNjZXNzaWJpbGl0eUJ1c0FkZHJlc3M7
CiAjZW5kaWYKKworICAgIGVuY29kZXIgPDwgdGltZVpvbmVPdmVycmlkZTsKIH0KIAogYm9vbCBX
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVy
LCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQpAQCAtNTcxLDYgKzU3
MywxMiBAQCBib29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRl
Y29kZXImIGRlY29kZXIsIFdlYlByb2Nlc3NDcmVhdAogICAgIHBhcmFtZXRlcnMuYWNjZXNzaWJp
bGl0eUJ1c0FkZHJlc3MgPSBXVEZNb3ZlKCphY2Nlc3NpYmlsaXR5QnVzQWRkcmVzcyk7CiAjZW5k
aWYKIAorICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxTdHJpbmc+PiB0aW1lWm9uZU92
ZXJyaWRlOworICAgIGRlY29kZXIgPj4gdGltZVpvbmVPdmVycmlkZTsKKyAgICBpZiAoIXRpbWVa
b25lT3ZlcnJpZGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBwYXJhbWV0ZXJzLnRpbWVa
b25lT3ZlcnJpZGUgPSBXVEZNb3ZlKCp0aW1lWm9uZU92ZXJyaWRlKTsKKwogICAgIHJldHVybiB0
cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmgKaW5kZXggOGQzNzJjYjY2MTljMjg0OWJkNDYxZjI0M2E1MWE4Njc5NDhk
OTcyMy4uOWQxZGQ4Mzc1YWM4N2ExMTljZWU0YzIwNWM5ZGQ1N2ZiOWNmOGE2MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaApA
QCAtMjU1LDYgKzI1NSw4IEBAIHN0cnVjdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsK
ICNpZiBVU0UoQVRTUEkpCiAgICAgU3RyaW5nIGFjY2Vzc2liaWxpdHlCdXNBZGRyZXNzOwogI2Vu
ZGlmCisKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gdGltZVpvbmVPdmVycmlkZTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcAppbmRleCBjZmQ5YzM5
ODEzMzdjN2RkMDJjNjIzY2U4YmE2ODZlYTM2YmJmZmI5Li5hMTZmZTEzYzA4NTc2MTk0ZWM4YzQz
ZTlkYWU2MmEyMDU2NjkwNGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcApAQCAtODQsNiArODQs
NyBAQCBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b246OmNvcHkoKQogI2lmIEhBVkUoQVVESVRfVE9LRU4pCiAgICAgY29weS0+bV9wcmVzZW50aW5n
QXBwbGljYXRpb25Qcm9jZXNzVG9rZW4gPSB0aGlzLT5tX3ByZXNlbnRpbmdBcHBsaWNhdGlvblBy
b2Nlc3NUb2tlbjsKICNlbmRpZgorICAgIGNvcHktPm1fdGltZVpvbmVPdmVycmlkZSA9IHRoaXMt
Pm1fdGltZVpvbmVPdmVycmlkZTsKICAgICByZXR1cm4gY29weTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bi5oCmluZGV4IGNjNjQyYzUxYmE2NjNlODQzZGY1NGQxNGNmY2NiNmQ0ZWY4MTcyNmMuLmM3Nzlk
MDQ1NTAwYmIyYWM5ZWZlNTM1YzJjM2M2NGI2NGE2ZTEyMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgK
QEAgLTE2NCw2ICsxNjQsOSBAQCBwdWJsaWM6CiAgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxNZW1v
cnlQcmVzc3VyZUhhbmRsZXI6OkNvbmZpZ3VyYXRpb24+JiBtZW1vcnlQcmVzc3VyZUhhbmRsZXJD
b25maWd1cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9tZW1vcnlQcmVzc3VyZUhhbmRsZXJDb25m
aWd1cmF0aW9uOyB9CiAjZW5kaWYKIAorICAgIHZvaWQgc2V0VGltZVpvbmVPdmVycmlkZShjb25z
dCBXVEY6OlN0cmluZyYgdGltZVpvbmVPdmVycmlkZSkgeyBtX3RpbWVab25lT3ZlcnJpZGUgPSB0
aW1lWm9uZU92ZXJyaWRlOyB9CisgICAgY29uc3QgV1RGOjpTdHJpbmcmIHRpbWVab25lT3ZlcnJp
ZGUoKSBjb25zdCB7IHJldHVybiBtX3RpbWVab25lT3ZlcnJpZGU7IH0KKwogcHJpdmF0ZToKICAg
ICBXVEY6OlN0cmluZyBtX2luamVjdGVkQnVuZGxlUGF0aDsKICAgICBWZWN0b3I8V1RGOjpTdHJp
bmc+IG1fY3VzdG9tQ2xhc3Nlc0ZvclBhcmFtZXRlckNvZGVyOwpAQCAtMjA2LDYgKzIwOSw3IEBA
IHByaXZhdGU6CiAjaWYgSEFWRShBVURJVF9UT0tFTikKICAgICBzdGQ6Om9wdGlvbmFsPGF1ZGl0
X3Rva2VuX3Q+IG1fcHJlc2VudGluZ0FwcGxpY2F0aW9uUHJvY2Vzc1Rva2VuOwogI2VuZGlmCisg
ICAgV1RGOjpTdHJpbmcgbV90aW1lWm9uZU92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
QVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgKaW5kZXggNzg0OTgzYzEwM2IyOWNhM2M3
NzRjNjIwNDkyNjU5NGViYzhkZmVlNC4uYTRiNmQ3NTdlMDY2MzM0YWY5OGRlYzIxOGFjNTIyNjFi
OWQ1Y2NkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaApAQCAtMjQsNiArMjQsNyBA
QAogICovCiAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8V2Vi
S2l0L1dLQmFzZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgogCiBOU19BU1NV
TUVfTk9OTlVMTF9CRUdJTgpAQCAtNzcsNiArNzgsOCBAQCBXS19DTEFTU19BVkFJTEFCTEUobWFj
b3MoMTAuMTApLCBpb3MoOC4wKSkKIAogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgY29uZmln
dXJlSlNDRm9yVGVzdGluZyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE1LjQpLCBpb3MoMTMu
NCkpOwogCitAcHJvcGVydHkgKG5vbmF0b21pYywgbnVsbGFibGUsIGNvcHkpIE5TU3RyaW5nICp0
aW1lWm9uZU92ZXJyaWRlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSk7CisKIEBlbmQKIAogTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbi5tbQppbmRleCA5MmI1MDlhZDQ4MmY0ZDNiNWE2OWEwMGIwZmQyM2M0
ZDBhYWIxNmFlLi5jYjc0NDViN2ZlODE0ZmVmZjUwYTE0YjhkZDI1ZjVhMzJmNzBhMTdkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubW0KQEAgLTQwMyw2ICs0MDMsMTYgQEAKICAgICBf
cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLT5zZXRTaG91bGRDb25maWd1cmVKU0NGb3JUZXN0aW5n
KHZhbHVlKTsKIH0KIAorLSAoTlNTdHJpbmcgKil0aW1lWm9uZU92ZXJyaWRlCit7CisgICAgcmV0
dXJuIF9wcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24tPnRpbWVab25lT3ZlcnJpZGUoKTsKK30KKwor
LSAodm9pZClzZXRUaW1lWm9uZU92ZXJyaWRlOihOU1N0cmluZyAqKXRpbWVab25lCit7CisgICAg
X3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi0+c2V0VGltZVpvbmVPdmVycmlkZSh0aW1lWm9uZSk7
Cit9CisKICNwcmFnbWEgbWFyayBXS09iamVjdCBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbgogCiAt
IChBUEk6Ok9iamVjdCYpX2FwaU9iamVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCA5YjZiNTQxZGY0NWM5MjVk
MjIwZjcyODg0NDZjMzdmY2Y0ZDcwOGJhLi40ZGFjODg5MzhlMjMzNTNiMTk3ODQyMDBjNDA2ZTk3
MjkxYjE3NjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRXZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtNjUsNiArNjUsNyBAQAogI2luY2x1ZGUgPGxpYmlu
dGwuaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8cGFsL0h5c3RlcmVzaXNBY3Rpdml0
eS5oPgorI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgogI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVt
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpA
QCAtMTI3LDYgKzEyOCw3IEBAIGVudW0gewogI2VuZGlmCiAjZW5kaWYKICAgICBQUk9QX01FTU9S
WV9QUkVTU1VSRV9TRVRUSU5HUywKKyAgICBQUk9QX1RJTUVfWk9ORV9PVkVSUklERSwKICAgICBO
X1BST1BFUlRJRVMsCiB9OwogCkBAIC0yNDUsNiArMjQ3LDggQEAgc3RydWN0IF9XZWJLaXRXZWJD
b250ZXh0UHJpdmF0ZSB7CiAgICAgUEFMOjpIeXN0ZXJlc2lzQWN0aXZpdHkgZG5zUHJlZmV0Y2hI
eXN0ZXJlcmlzOwogCiAgICAgV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyogbWVtb3J5UHJl
c3N1cmVTZXR0aW5nczsKKworICAgIENTdHJpbmcgdGltZVpvbmVPdmVycmlkZTsKIH07CiAKIHN0
YXRpYyBndWludCBzaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwgfTsKQEAgLTM1MCw2ICszNTQs
OSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJDb250ZXh0R2V0UHJvcGVydHkoR09iamVjdCogb2Jq
ZWN0LCBndWludCBwcm9wSUQsIEdWYWx1ZSogdgogICAgICAgICBicmVhazsKICNlbmRpZgogI2Vu
ZGlmCisgICAgY2FzZSBQUk9QX1RJTUVfWk9ORV9PVkVSUklERToKKyAgICAgICAgZ192YWx1ZV9z
ZXRfc3RyaW5nKHZhbHVlLCB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3RpbWVfem9uZV9vdmVycmlk
ZShjb250ZXh0KSk7CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEdfT0JK
RUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJRCwgcGFyYW1TcGVjKTsK
ICAgICB9CkBAIC0zODUsNiArMzkyLDEyIEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYkNvbnRleHRT
ZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJRCwgY29uc3QgR1ZhCiAgICAg
ICAgIGNvbnRleHQtPnByaXYtPm1lbW9yeVByZXNzdXJlU2V0dGluZ3MgPSBzZXR0aW5ncyA/IHdl
YmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfY29weShzdGF0aWNfY2FzdDxXZWJLaXRNZW1v
cnlQcmVzc3VyZVNldHRpbmdzKj4oc2V0dGluZ3MpKSA6IG51bGxwdHI7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KKyAgICBjYXNlIFBST1BfVElNRV9aT05FX09WRVJSSURFOiB7CisgICAgICAgIGNv
bnN0IGNoYXIqIHRpbWVab25lT3ZlcnJpZGUgPSBnX3ZhbHVlX2dldF9zdHJpbmcodmFsdWUpOwor
ICAgICAgICBpZiAodGltZVpvbmVPdmVycmlkZSkKKyAgICAgICAgICAgIHdlYmtpdF93ZWJfY29u
dGV4dF9zZXRfdGltZV96b25lX292ZXJyaWRlKGNvbnRleHQsIHRpbWVab25lT3ZlcnJpZGUpOwor
ICAgICAgICBicmVhazsKKyAgICB9CiAgICAgZGVmYXVsdDoKICAgICAgICAgR19PQkpFQ1RfV0FS
Tl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElELCBwYXJhbVNwZWMpOwogICAgIH0K
QEAgLTQxMyw2ICs0MjYsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJDb250ZXh0Q29uc3RydWN0
ZWQoR09iamVjdCogb2JqZWN0KQogICAgICAgICAvLyBPbmNlIHRoZSBzZXR0aW5ncyBoYXZlIGJl
ZW4gcGFzc2VkIHRvIHRoZSBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24sIHdlIGRvbid0IG5lZWQg
dGhlbSBhbnltb3JlIHNvIHdlIGNhbiBmcmVlIHRoZW0uCiAgICAgICAgIGdfY2xlYXJfcG9pbnRl
cigmcHJpdi0+bWVtb3J5UHJlc3N1cmVTZXR0aW5ncywgd2Via2l0X21lbW9yeV9wcmVzc3VyZV9z
ZXR0aW5nc19mcmVlKTsKICAgICB9CisgICAgY29uZmlndXJhdGlvbi5zZXRUaW1lWm9uZU92ZXJy
aWRlKFN0cmluZzo6ZnJvbVVURjgocHJpdi0+dGltZVpvbmVPdmVycmlkZS5kYXRhKCkpKTsKIAog
ICAgIGlmICghcHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyKQogICAgICAgICBwcml2LT53ZWJzaXRl
RGF0YU1hbmFnZXIgPSBhZG9wdEdSZWYod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX25ldygi
bG9jYWwtc3RvcmFnZS1kaXJlY3RvcnkiLCBwcml2LT5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkuZGF0
YSgpLCBudWxscHRyKSk7CkBAIC01NzIsNiArNTg2LDI4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93
ZWJfY29udGV4dF9jbGFzc19pbml0KFdlYktpdFdlYkNvbnRleHRDbGFzcyogd2ViQ29udGV4dENs
YXNzCiAgICAgICAgICAgICBXRUJLSVRfVFlQRV9NRU1PUllfUFJFU1NVUkVfU0VUVElOR1MsCiAg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxHUGFyYW1GbGFncz4oV0VCS0lUX1BBUkFNX1dSSVRBQkxF
IHwgR19QQVJBTV9DT05TVFJVQ1RfT05MWSkpOwogCisgICAgLyoqCisgICAgICogV2ViS2l0V2Vi
Q29udGV4dDp0aW1lLXpvbmUtb3ZlcnJpZGU6CisgICAgICoKKyAgICAgKiBUaGUgdGltZXpvbmUg
b3ZlcnJpZGUgZm9yIHRoaXMgd2ViIGNvbnRleHQuIFNldHRpbmcgdGhpcyBwcm9wZXJ0eSBwcm92
aWRlcyBhIGJldHRlcgorICAgICAqIGFsdGVybmF0aXZlIHRvIGNvbmZpZ3VyZSB0aGUgdGltZXpv
bmUgaW5mb3JtYXRpb24gZm9yIGFsbCB3ZWJ2aWV3cyBtYW5hZ2VkIGJ5IHRoZSBXZWJDb250ZXh0
LgorICAgICAqIFRoZSBvdGhlciwgbGVzcyBvcHRpbWFsLCBhcHByb2FjaCBpcyB0byBnbG9iYWxs
eSBzZXQgdGhlIFRaIGVudmlyb25tZW50IHZhcmlhYmxlIGluIHRoZQorICAgICAqIHByb2Nlc3Mg
YmVmb3JlIGNyZWF0aW5nIHRoZSBjb250ZXh0LiBIb3dldmVyIHRoaXMgYXBwcm9hY2ggbWlnaHQg
bm90IGJlIHZlcnkgY29udmVuaWVudCBhbmQKKyAgICAgKiBjYW4gaGF2ZSBzaWRlLWVmZmVjdHMg
aW4geW91ciBhcHBsaWNhdGlvbi4KKyAgICAgKgorICAgICAqIFRoZSBleHBlY3RlZCB2YWx1ZXMg
Zm9yIHRoaXMgcHJvcGVydHkgYXJlIGRlZmluZWQgaW4gdGhlIElBTkEgdGltZXpvbmUgZGF0YWJh
c2UuIFNlZSB0aGlzCisgICAgICogd2lraXBlZGlhIHBhZ2UgZm9yIGluc3RhbmNlLCBodHRwczov
L2VuLndpa2lwZWRpYS5vcmcvd2lraS9MaXN0X29mX3R6X2RhdGFiYXNlX3RpbWVfem9uZXMuCisg
ICAgICoKKyAgICAgKiBTaW5jZTogMi4zOAorICAgICAqLworICAgIHNPYmpQcm9wZXJ0aWVzW1BS
T1BfVElNRV9aT05FX09WRVJSSURFXSA9CisgICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoCisg
ICAgICAgICAgICAidGltZS16b25lLW92ZXJyaWRlIiwKKyAgICAgICAgICAgIF8oIlRpbWUgWm9u
ZSBPdmVycmlkZSIpLAorICAgICAgICAgICAgXygiVGhlIHRpbWUgem9uZSB0byB1c2UgaW5zdGVh
ZCBvZiB0aGUgc3lzdGVtIG9uZSIpLAorICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAg
IHN0YXRpY19jYXN0PEdQYXJhbUZsYWdzPihXRUJLSVRfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJB
TV9DT05TVFJVQ1RfT05MWSkpOworCiAgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0
aWVzKGdPYmplY3RDbGFzcywgTl9QUk9QRVJUSUVTLCBzT2JqUHJvcGVydGllcyk7CiAKICAgICAv
KioKQEAgLTE4MzUsNiArMTg3MSwzOSBAQCBnYm9vbGVhbiB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0
X3VzZV9zeXN0ZW1fYXBwZWFyYW5jZV9mb3Jfc2Nyb2xsYmFycyhXZWJLaXRXZWJDbwogfQogI2Vu
ZGlmCiAKKy8qKgorICogd2Via2l0X3dlYl9jb250ZXh0X3NldF90aW1lX3pvbmVfb3ZlcnJpZGU6
CisgKiBAY29udGV4dDogYSAjV2ViS2l0V2ViQ29udGV4dAorICogQHRpbWVfem9uZV9vdmVycmlk
ZTogdmFsdWUgdG8gc2V0CisgKgorICogU2V0IHRoZSAjV2ViS2l0V2ViQ29udGV4dDp0aW1lLXpv
bmUtb3ZlcnJpZGUgcHJvcGVydHkuIFJlZmVyIHRvIHRoZSBJQU5BIGRhdGFiYXNlIGZvciB2YWxp
ZAorICogc3BlY2lmaWVycywgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGlzdF9vZl90
el9kYXRhYmFzZV90aW1lX3pvbmVzCisgKgorICogU2luY2U6IDIuMzgKKyAqLwordm9pZCB3ZWJr
aXRfd2ViX2NvbnRleHRfc2V0X3RpbWVfem9uZV9vdmVycmlkZShXZWJLaXRXZWJDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBnY2hhciogdGltZVpvbmVPdmVycmlkZSkKK3sKKyAgICBnX3JldHVybl9p
Zl9mYWlsKFdFQktJVF9JU19XRUJfQ09OVEVYVChjb250ZXh0KSk7CisgICAgZ19yZXR1cm5faWZf
ZmFpbChXVEY6OmlzVGltZVpvbmVWYWxpZChTdHJpbmc6OmZyb21VVEY4KHRpbWVab25lT3ZlcnJp
ZGUpKSk7CisKKyAgICBjb250ZXh0LT5wcml2LT50aW1lWm9uZU92ZXJyaWRlID0gdGltZVpvbmVP
dmVycmlkZTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3RpbWVfem9uZV9v
dmVycmlkZToKKyAqIEBjb250ZXh0OiBhICNXZWJLaXRXZWJDb250ZXh0CisgKgorICogR2V0IHRo
ZSAjV2ViS2l0V2ViQ29udGV4dDp0aW1lLXpvbmUtb3ZlcnJpZGUgcHJvcGVydHkuCisgKgorICog
U2luY2U6IDIuMzgKKyAqLworY29uc3QgZ2NoYXIqIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfdGlt
ZV96b25lX292ZXJyaWRlKFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQpCit7CisgICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9DT05URVhUKGNvbnRleHQpLCBudWxscHRyKTsK
KworICAgIHJldHVybiBjb250ZXh0LT5wcml2LT50aW1lWm9uZU92ZXJyaWRlLmRhdGEoKTsKK30K
Kwogdm9pZCB3ZWJraXRXZWJDb250ZXh0SW5pdGlhbGl6ZU5vdGlmaWNhdGlvblBlcm1pc3Npb25z
KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgZ19zaWduYWxfZW1pdChjb250ZXh0
LCBzaWduYWxzW0lOSVRJQUxJWkVfTk9USUZJQ0FUSU9OX1BFUk1JU1NJT05TXSwgMCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oCmlu
ZGV4IGJkZDkxMjU1Y2NkODJlYTU3NzQyMjI3ODNiNTk0NzZhMzFiY2ZiMmUuLjk3YTRkNThmMjY3
Nzc0M2FjOGE5Yjk2ZGQ0ZTBiYTNkOGEwNGQyYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oCkBAIC0zMDIsNiArMzAyLDEzIEBA
IHdlYmtpdF93ZWJfY29udGV4dF9zZXRfdXNlX3N5c3RlbV9hcHBlYXJhbmNlX2Zvcl9zY3JvbGxi
YXJzIChXZWJLaXRXZWJDb250ZXh0CiBXRUJLSVRfQVBJIGdib29sZWFuCiB3ZWJraXRfd2ViX2Nv
bnRleHRfZ2V0X3VzZV9zeXN0ZW1fYXBwZWFyYW5jZV9mb3Jfc2Nyb2xsYmFycyAoV2ViS2l0V2Vi
Q29udGV4dCAgICAgICpjb250ZXh0KTsKIAorV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX2Nv
bnRleHRfc2V0X3RpbWVfem9uZV9vdmVycmlkZSAgICAgICAgICAgKFdlYktpdFdlYkNvbnRleHQg
ICAgICAgICAgICAgICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAgICAgICAgICAqdGltZV96
b25lX292ZXJyaWRlKTsKKworV0VCS0lUX0FQSSBjb25zdCBnY2hhcioKK3dlYmtpdF93ZWJfY29u
dGV4dF9nZXRfdGltZV96b25lX292ZXJyaWRlICAgICAgICAgICAoV2ViS2l0V2ViQ29udGV4dCAg
ICAgICAgICAgICAgKmNvbnRleHQpOworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViQ29udGV4dC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJDb250ZXh0LmgKaW5kZXgg
Njg0MWMwNzlhYTRiNjFkODljMDhiMWE5NjlmOTEzN2Q5YjhhMDQzNC4uZWE1NWY4NzZjMzFlYmQw
YmViZWI0YmJmZGNhY2M5MzdhOWM3OTdiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJDb250ZXh0LmgKQEAgLTI5MSw2ICsyOTEsMTMgQEAgV0VC
S0lUX0FQSSB2b2lkCiB3ZWJraXRfd2ViX2NvbnRleHRfc2VuZF9tZXNzYWdlX3RvX2FsbF9leHRl
bnNpb25zICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICAgICAgICpjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRVc2Vy
TWVzc2FnZSAgICAgICAgICAgICAqbWVzc2FnZSk7CiAKK1dFQktJVF9BUEkgdm9pZAord2Via2l0
X3dlYl9jb250ZXh0X3NldF90aW1lX3pvbmVfb3ZlcnJpZGUgICAgICAgICAgIChXZWJLaXRXZWJD
b250ZXh0ICAgICAgICAgICAgICAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgICAgICAgICAg
KnRpbWVfem9uZV9vdmVycmlkZSk7CisKK1dFQktJVF9BUEkgY29uc3QgZ2NoYXIqCit3ZWJraXRf
d2ViX2NvbnRleHRfZ2V0X3RpbWVfem9uZV9vdmVycmlkZSAgICAgICAgICAgKFdlYktpdFdlYkNv
bnRleHQgICAgICAgICAgICAgICpjb250ZXh0KTsKKwogR19FTkRfREVDTFMKIAogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggYmUzNjg5ZmE1
YTBlYWY2ZDQ1NWQyMjVmZjgzNDJiOTA4OGFkNmMwZi4uYWYzNzEyZmZiYzk1Y2EzNzkyMzJmZmFk
NTY5MzkwOTc5MzgzMDM4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcApAQCAtODc0LDYgKzg3NCw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmluaXRpYWxp
emVOZXdXZWJQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgV2Vic2l0ZURhCiAKICAg
ICBwYXJhbWV0ZXJzLnByZXNlbnRpbmdBcHBsaWNhdGlvblBJRCA9IG1fY29uZmlndXJhdGlvbi0+
cHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKCk7CiAKKyAgICBwYXJhbWV0ZXJzLnRpbWVab25lT3Zl
cnJpZGUgPSBtX2NvbmZpZ3VyYXRpb24tPnRpbWVab25lT3ZlcnJpZGUoKTsKKwogICAgIC8vIEFk
ZCBhbnkgcGxhdGZvcm0gc3BlY2lmaWMgcGFyYW1ldGVycwogICAgIHBsYXRmb3JtSW5pdGlhbGl6
ZVdlYlByb2Nlc3MocHJvY2VzcywgcGFyYW1ldGVycyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcAppbmRleCBkNzdlMDNkYjEyN2E1YWFhZDQxMDkxNmEyZDUxNjhhNGIx
MjRhNzMwLi4xMzc1ZDAwMjk4NzgzY2IzOWJlMWZiNzBhYWEzYWQ1YjliMzA3ZWZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xNDIsNiArMTQyLDcgQEAKICNp
bmNsdWRlIDxwYWwvTG9nZ2luZy5oPgogI2luY2x1ZGUgPHd0Zi9BbGdvcml0aG1zLmg+CiAjaW5j
bHVkZSA8d3RmL0NhbGxiYWNrQWdncmVnYXRvci5oPgorI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5o
PgogI2luY2x1ZGUgPHd0Zi9MYW5ndWFnZS5oPgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzUHJpdmls
ZWdlLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTQ5OCw2ICs0OTksMTEgQEAgdm9p
ZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzJiYgcGFyYW1ldGVycykKIAogICAgIHNldENhY2hlTW9kZWwocGFyYW1ldGVycy5jYWNo
ZU1vZGVsKTsKIAorICAgIGlmIChwYXJhbWV0ZXJzLnRpbWVab25lT3ZlcnJpZGUpCisgICAgICAg
IFdURjo6c2V0VGltZVpvbmVPdmVycmlkZSgqcGFyYW1ldGVycy50aW1lWm9uZU92ZXJyaWRlKTsK
KyAgICBlbHNlCisgICAgICAgIFdURjo6c2V0VGltZVpvbmVPdmVycmlkZSh7IH0pOworCiAgICAg
aWYgKCFwYXJhbWV0ZXJzLm92ZXJyaWRlTGFuZ3VhZ2VzLmlzRW1wdHkoKSkgewogICAgICAgICBM
T0dfV0lUSF9TVFJFQU0oTGFuZ3VhZ2UsIHN0cmVhbSA8PCAiV2ViIFByb2Nlc3MgaW5pdGlhbGl6
YXRpb24gaXMgc2V0dGluZyBvdmVycmlkZUxhbmd1YWdlczogIiA8PCBwYXJhbWV0ZXJzLm92ZXJy
aWRlTGFuZ3VhZ2VzKTsKICAgICAgICAgb3ZlcnJpZGVVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKHBh
cmFtZXRlcnMub3ZlcnJpZGVMYW5ndWFnZXMpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGE0ZjE2N2IwNTg2NDk2YmY0ZTA4OTNiOTIzMGY4NTMw
ZWZiMjk4YmEuLjE0NDgwOTMwZjU4MDY2N2M5ODUxZDk0N2Y4Y2I1MGEzMDg1ODE3MGUgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
MSBAQAorMjAyMi0wNC0xMyAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+
IGFuZCBZdXJ5IFNlbWlraGF0c2t5IDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1dL
Ml0gQWRkIEFQSSB0byBhbGxvdyBlbWJlZGRlciB0byBzZXQgYSB0aW1lem9uZSBvdmVycmlkZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzODg0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEFQSSB0
ZXN0cyBmb3IgdGhlIHRpbWV6b25lIGNvbmZpZ3VyYXRpb24gQVBJLiBUaGUgR1RLIGFuZCBXUEUg
TWluaUJyb3dzZXJzIGFsc28gZ2FpbmVkCisgICAgICAgIG5ldyBydW50aW1lIG9wdGlvbnMgYWxs
b3dpbmcgdG8gZXhlcmNpc2UgdGhpcyBuZXcgQVBJLgorCisgICAgICAgICogTWluaUJyb3dzZXIv
Z3RrL21haW4uYzoKKyAgICAgICAgKGFjdGl2YXRlKToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci93
cGUvbWFpbi5jcHA6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1RpbWVab25lT3ZlcnJpZGUubW06IEFkZGVkLgorICAg
ICAgICAoVGltZVpvbmVPdmVycmlkZVRlc3Q6OnJ1blNjcmlwdEFuZEV4ZWN1dGVDYWxsYmFjayk6
CisgICAgICAgIChURVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R0xpYi9UZXN0V2ViS2l0V2ViQ29udGV4dC5jcHA6CisgICAgICAgICh0ZXN0V2ViQ29udGV4dFRp
bWVab25lKToKKyAgICAgICAgKHRlc3RXZWJWaWV3VGltZVpvbmVPdmVycmlkZSk6CisgICAgICAg
IChiZWZvcmVBbGwpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1Rl
c3RNYWluLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9UZXN0
TWFpbi5oOgorICAgICAgICAoVGVzdDo6VGVzdCk6CisgICAgICAgICogZmxhdHBhay9mbGF0cGFr
dXRpbHMucHk6CisgICAgICAgIChXZWJraXRGbGF0cGFrLnJ1bl9pbl9zYW5kYm94KToKKwogMjAy
Mi0wNC0xNCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAg
ICBVbmRvIG9wdGlvbiBhZnRlciBpbnZva2luZyAiTWFya3VwIEltYWdlIiBzYXlzICJVbmRvIFBh
c3RlIgpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYyBiL1Rvb2xzL01p
bmlCcm93c2VyL2d0ay9tYWluLmMKaW5kZXggOWU3ODYzYjYxYjNlOWRiNzZlMDRlMTRmNDUxMTY2
ODRkYWU0NGUzNy4uODE3ZThmZWM3ZTE4YjNmYmRlODVhYTUzNDI2M2RlZjYwNDU4YjFhOCAxMDA2
NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYworKysgYi9Ub29scy9NaW5pQnJv
d3Nlci9ndGsvbWFpbi5jCkBAIC01Miw2ICs1Miw3IEBAIHN0YXRpYyBjb25zdCBjaGFyICpjb29r
aWVzRmlsZTsKIHN0YXRpYyBjb25zdCBjaGFyICpjb29raWVzUG9saWN5Owogc3RhdGljIGNvbnN0
IGNoYXIgKnByb3h5Owogc3RhdGljIGdib29sZWFuIGRhcmtNb2RlOworc3RhdGljIGNoYXIqIHRp
bWVab25lOwogc3RhdGljIGdib29sZWFuIGVuYWJsZUlUUDsKIHN0YXRpYyBnYm9vbGVhbiBlbmFi
bGVTYW5kYm94Owogc3RhdGljIGdib29sZWFuIGV4aXRBZnRlckxvYWQ7CkBAIC0xNDksNiArMTUw
LDcgQEAgc3RhdGljIGNvbnN0IEdPcHRpb25FbnRyeSBjb21tYW5kTGluZU9wdGlvbnNbXSA9CiAg
ICAgeyAiZW5hYmxlLWl0cCIsIDAsIDAsIEdfT1BUSU9OX0FSR19OT05FLCAmZW5hYmxlSVRQLCAi
RW5hYmxlIEludGVsbGlnZW50IFRyYWNraW5nIFByZXZlbnRpb24gKElUUCkiLCBOVUxMIH0sCiAg
ICAgeyAiZW5hYmxlLXNhbmRib3giLCAwLCAwLCBHX09QVElPTl9BUkdfTk9ORSwgJmVuYWJsZVNh
bmRib3gsICJFbmFibGUgd2ViIHByb2Nlc3Mgc2FuZGJveCBzdXBwb3J0IiwgTlVMTCB9LAogICAg
IHsgImV4aXQtYWZ0ZXItbG9hZCIsIDAsIDAsIEdfT1BUSU9OX0FSR19OT05FLCAmZXhpdEFmdGVy
TG9hZCwgIlF1aXQgdGhlIGJyb3dzZXIgYWZ0ZXIgdGhlIGxvYWQgZmluaXNoZXMiLCBOVUxMIH0s
CisgICAgeyAidGltZS16b25lIiwgJ3QnLCAwLCBHX09QVElPTl9BUkdfU1RSSU5HLCAmdGltZVpv
bmUsICJTZXQgdGltZSB6b25lIiwgIlRJTUVaT05FIiB9LAogICAgIHsgInZlcnNpb24iLCAndics
IDAsIEdfT1BUSU9OX0FSR19OT05FLCAmcHJpbnRWZXJzaW9uLCAiUHJpbnQgdGhlIFdlYktpdEdU
SyB2ZXJzaW9uIiwgTlVMTCB9LAogICAgIHsgR19PUFRJT05fUkVNQUlOSU5HLCAwLCAwLCBHX09Q
VElPTl9BUkdfRklMRU5BTUVfQVJSQVksICZ1cmlBcmd1bWVudHMsIDAsICJbVVJM4oCmXSIgfSwK
ICAgICB7IDAsIDAsIDAsIDAsIDAsIDAsIDAgfQpAQCAtNjc0LDYgKzY3Niw3IEBAIHN0YXRpYyB2
b2lkIGFjdGl2YXRlKEdBcHBsaWNhdGlvbiAqYXBwbGljYXRpb24sIFdlYktpdFNldHRpbmdzICp3
ZWJraXRTZXR0aW5ncykKICNpZiAhR1RLX0NIRUNLX1ZFUlNJT04oMywgOTgsIDApCiAgICAgICAg
ICJ1c2Utc3lzdGVtLWFwcGVhcmFuY2UtZm9yLXNjcm9sbGJhcnMiLCBGQUxTRSwKICNlbmRpZgor
ICAgICAgICAidGltZS16b25lLW92ZXJyaWRlIiwgdGltZVpvbmUsCiAgICAgICAgIE5VTEwpOwog
ICAgIGdfb2JqZWN0X3VucmVmKG1hbmFnZXIpOwogCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJv
d3Nlci93cGUvbWFpbi5jcHAgYi9Ub29scy9NaW5pQnJvd3Nlci93cGUvbWFpbi5jcHAKaW5kZXgg
NDU4NGQ5NTczYmE3ZDExZDIyNDlmMTc1NTJlZTVjOTQ3YWY1MzlkMi4uY2QxZDM2NDdjOGJmYWE2
Y2M5NjQyY2U2MzA2MGE1YWE2YzU5NDc5MSAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIv
d3BlL21haW4uY3BwCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3dwZS9tYWluLmNwcApAQCAtNDYs
NiArNDYsNyBAQCBzdGF0aWMgY29uc3QgY2hhciogY29va2llc0ZpbGU7CiBzdGF0aWMgY29uc3Qg
Y2hhciogY29va2llc1BvbGljeTsKIHN0YXRpYyBjb25zdCBjaGFyKiBwcm94eTsKIGNvbnN0IGNo
YXIqIGJnQ29sb3I7CitzdGF0aWMgY2hhciogdGltZVpvbmU7CiBzdGF0aWMgZ2Jvb2xlYW4gZW5h
YmxlSVRQOwogc3RhdGljIGdib29sZWFuIHByaW50VmVyc2lvbjsKIHN0YXRpYyBHSGFzaFRhYmxl
KiBvcGVuVmlld3M7CkBAIC02Myw2ICs2NCw3IEBAIHN0YXRpYyBjb25zdCBHT3B0aW9uRW50cnkg
Y29tbWFuZExpbmVPcHRpb25zW10gPQogICAgIHsgImNvbnRlbnQtZmlsdGVyIiwgMCwgMCwgR19P
UFRJT05fQVJHX0ZJTEVOQU1FLCAmY29udGVudEZpbHRlciwgIkpTT04gd2l0aCBjb250ZW50IGZp
bHRlcmluZyBydWxlcyIsICJGSUxFIiB9LAogICAgIHsgImJnLWNvbG9yIiwgMCwgMCwgR19PUFRJ
T05fQVJHX1NUUklORywgJmJnQ29sb3IsICJXaW5kb3cgYmFja2dyb3VuZCBjb2xvci4gRGVmYXVs
dDogd2hpdGUiLCAiQ09MT1IiIH0sCiAgICAgeyAiZW5hYmxlLWl0cCIsIDAsIDAsIEdfT1BUSU9O
X0FSR19OT05FLCAmZW5hYmxlSVRQLCAiRW5hYmxlIEludGVsbGlnZW50IFRyYWNraW5nIFByZXZl
bnRpb24gKElUUCkiLCBudWxscHRyIH0sCisgICAgeyAidGltZS16b25lIiwgJ3QnLCAwLCBHX09Q
VElPTl9BUkdfU1RSSU5HLCAmdGltZVpvbmUsICJTZXQgdGltZSB6b25lIiwgIlRJTUVaT05FIiB9
LAogICAgIHsgInZlcnNpb24iLCAndicsIDAsIEdfT1BUSU9OX0FSR19OT05FLCAmcHJpbnRWZXJz
aW9uLCAiUHJpbnQgdGhlIFdQRSB2ZXJzaW9uIiwgbnVsbHB0ciB9LAogICAgIHsgR19PUFRJT05f
UkVNQUlOSU5HLCAwLCAwLCBHX09QVElPTl9BUkdfRklMRU5BTUVfQVJSQVksICZ1cmlBcmd1bWVu
dHMsIG51bGxwdHIsICJbVVJMXSIgfSwKICAgICB7IG51bGxwdHIsIDAsIDAsIEdfT1BUSU9OX0FS
R19OT05FLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyIH0KQEAgLTIyOSw3ICsyMzEsNyBAQCBp
bnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogICAgIGlmIChpZ25vcmVUTFNFcnJvcnMp
CiAgICAgICAgIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9zZXRfdGxzX2Vycm9yc19wb2xp
Y3kobWFuYWdlciwgV0VCS0lUX1RMU19FUlJPUlNfUE9MSUNZX0lHTk9SRSk7CiAKLSAgICBhdXRv
KiB3ZWJDb250ZXh0ID0gd2Via2l0X3dlYl9jb250ZXh0X25ld193aXRoX3dlYnNpdGVfZGF0YV9t
YW5hZ2VyKG1hbmFnZXIpOworICAgIGF1dG8qIHdlYkNvbnRleHQgPSBXRUJLSVRfV0VCX0NPTlRF
WFQoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9DT05URVhULCAid2Vic2l0ZS1kYXRhLW1h
bmFnZXIiLCBtYW5hZ2VyLCAidGltZS16b25lLW92ZXJyaWRlIiwgdGltZVpvbmUsIG51bGxwdHIp
KTsKICAgICBnX29iamVjdF91bnJlZihtYW5hZ2VyKTsKIAogICAgIGlmIChjb29raWVzUG9saWN5
KSB7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1NvdXJjZXNDb2NvYS50eHQgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMzZhZDM0NzVhOTAzNGVj
ZmVlN2Q2ZjVlYjJjOWQ3NGM4MDZjMmUyZC4uMDE2YzJjNDc2ZDE1ODM1YWU0OTQ0YTJiZjIwNzBj
ZjAwYzM3MGM4NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Tb3VyY2VzQ29jb2Eu
dHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvU291cmNlc0NvY29hLnR4dApAQCAtMjQwLDYg
KzI0MCw3IEBAIFRlc3RzL1dlYktpdENvY29hL1Rlc3RVUkxTY2hlbWVIYW5kbGVyLm1tCiBUZXN0
cy9XZWJLaXRDb2NvYS9UZXh0TWFuaXB1bGF0aW9uLm1tCiBUZXN0cy9XZWJLaXRDb2NvYS9UZXh0
U2l6ZS5tbQogVGVzdHMvV2ViS2l0Q29jb2EvVGV4dFdpZHRoLm1tCitUZXN0cy9XZWJLaXRDb2Nv
YS9UaW1lWm9uZU92ZXJyaWRlLm1tCiBUZXN0cy9XZWJLaXRDb2NvYS9Ub3BDb250ZW50SW5zZXQu
bW0KIFRlc3RzL1dlYktpdENvY29hL1VJRGVsZWdhdGUubW0KIFRlc3RzL1dlYktpdENvY29hL1Vw
bG9hZERpcmVjdG9yeS5tbQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2MjEyYzkzMDE2M2Qx
ZjlhZjA1Mzc2YzZkZGU5NjU4MzE1YzMxNDQzLi41N2ZhMGQ5ODBlZDY3N2JlMDMyZjIyZTdlZDdh
OWE5MTgyZjBjOTliIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzAyNCw2ICszMDI0LDcg
QEAKIAkJRUJBNzVDNDgyNzVFRDdCRTAwRDZEMzFDIC8qIFB1c2hNZXNzYWdlQ3J5cHRvLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFB1c2hNZXNzYWdlQ3J5cHRvLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRUM3OUYxNjhCRTQ1NEU1NzlFNDE3QjA1IC8qIE1hcmthYmxlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hcmthYmxlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRUNBNjgwQ0QxRTY4Q0MwOTAwNzMxRDIwIC8qIFN0cmlu
Z1V0aWxpdGllcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN0
cmluZ1V0aWxpdGllcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjNDRUY2Qjgy
ODA4RjJEMzAwMUUyM0E1IC8qIFRpbWVab25lT3ZlcnJpZGUubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBUaW1lWm9uZU92ZXJyaWRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
M0ZDM0VFMjEzNjc4QjczMDAxMjZBNjUgLyogbGliZ3Rlc3QuYSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGFyY2hpdmUuYXI7IHBhdGggPSBsaWJndGVz
dC5hOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlGNDAxMEI3RjI0REEy
NEFDMDBBODc2RTIgLyogTmF2aWdhdGlvblN3aXBlVGVzdHMubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBOYXZpZ2F0aW9uU3dpcGVUZXN0cy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQwMTBCODEyNERBMjY3RjAwQTg3NkUyIC8qIFBvc2VBc0Ns
YXNzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gUG9zZUFzQ2xh
c3MubW07IHBhdGggPSAuLi9UZXN0UnVubmVyU2hhcmVkL2NvY29hL1Bvc2VBc0NsYXNzLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzY5Miw2ICszNjkzLDcgQEAKIAkJCQk5QjAy
RTBENTIzNUZBNDdEMDA0MDQ0QjIgLyogVGV4dE1hbmlwdWxhdGlvbi5tbSAqLywKIAkJCQk1QzE2
RjhGQjIzMEM5NDJCMDA3NEM0QTggLyogVGV4dFNpemUubW0gKi8sCiAJCQkJQzIyRkEzMkEyMjhG
ODcwODAwOUQ3OTg4IC8qIFRleHRXaWR0aC5tbSAqLywKKwkJCQlGM0NFRjZCODI4MDhGMkQzMDAx
RTIzQTUgLyogVGltZVpvbmVPdmVycmlkZS5tbSAqLywKIAkJCQk1QzczQTgxQTIzMjMwNTk4MDBE
RUE4NUEgLyogVExTRGVwcmVjYXRpb24ubW0gKi8sCiAJCQkJQ0RFMTk1QjMxQ0ZFMEFERTAwNTNE
MjU2IC8qIFRvcENvbnRlbnRJbnNldC5tbSAqLywKIAkJCQk1Q0I0MEI0RDFGNEI5OEJFMDA3REM3
QjkgLyogVUlEZWxlZ2F0ZS5tbSAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvVGltZVpvbmVPdmVycmlkZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvVGltZVpvbmVPdmVycmlkZS5tbQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41M2M4
ZTE0NWI5ODA1YTg4ZDE4MGFhMmQzNjFiYjc2NGNlYTk0ODdmCi0tLSAvZGV2L251bGwKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UaW1lWm9uZU92ZXJyaWRlLm1t
CkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpZiBQTEFURk9STShNQUMpCisKKyNp
bXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCisj
aW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaD4KKyNpbXBvcnQg
PFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLmg+CisjaW1wb3J0IDx3dGYvRnVuY3Rpb24uaD4KKyNpbXBvcnQgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgorCitjbGFzcyBUaW1lWm9uZU92ZXJyaWRlVGVzdCA6IHB1Ymxp
YyB0ZXN0aW5nOjpUZXN0IHsKK3B1YmxpYzoKKyAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKKyAg
ICB7CisgICAgICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25m
aWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWcg
PSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Cisg
ICAgICAgIFtwcm9jZXNzUG9vbENvbmZpZyBzZXRUaW1lWm9uZU92ZXJyaWRlOkAiRXVyb3BlL0Jl
cmxpbiJdOworCisgICAgICAgIF93ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAzMDAsIDMwMCkgY29uZmlndXJhdGlv
bjpjb25maWd1cmF0aW9uLmdldCgpIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9v
bENvbmZpZy5nZXQoKV0pOworICAgIH0KKworICAgIHZvaWQgcnVuU2NyaXB0QW5kRXhlY3V0ZUNh
bGxiYWNrKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBGdW5jdGlvbjx2b2lkKGlkKT4mJiBjYWxsYmFj
aykKKyAgICB7CisgICAgICAgIGJvb2wgY29tcGxldGUgPSBmYWxzZTsKKyAgICAgICAgW193ZWJW
aWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpzY3JpcHQgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCBy
ZXN1bHQsIE5TRXJyb3IgKikgeworICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0KTsKKyAgICAg
ICAgICAgIGNvbXBsZXRlID0gdHJ1ZTsKKyAgICAgICAgfV07CisgICAgICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmY29tcGxldGUpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBSZXRhaW5Q
dHI8VGVzdFdLV2ViVmlldz4gX3dlYlZpZXc7Cit9OworCitURVNUX0YoVGltZVpvbmVPdmVycmlk
ZVRlc3QsIFRpbWVab25lT3ZlcnJpZGUpCit7CisgICAgcnVuU2NyaXB0QW5kRXhlY3V0ZUNhbGxi
YWNrKCJsZXQgbm93ID0gbmV3IERhdGUoKTsgbm93LmdldFRpbWV6b25lT2Zmc2V0KCkiX3MsIFtd
KGlkIHJlc3VsdCkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoW3Jlc3VsdCBzdHJpbmdWYWx1
ZV0sICItMTIwIik7CisgICAgfSk7Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJDb250ZXh0LmNwcCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViQ29udGV4dC5j
cHAKaW5kZXggMzEyMDc4ZjdjYTRhYTkwNzlkYjQ2ODMwOTQ4MDVlYWJlZjkyMzhmZS4uN2IwMzVk
OTI2ZjZiODgzMWYwYjVlYjkxZTUyODkyMzYzYTFhZjBmMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJDb250ZXh0LmNwcAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYkNvbnRl
eHQuY3BwCkBAIC05OTEsNiArOTkxLDI2IEBAIHN0YXRpYyB2b2lkIHRlc3RNZW1vcnlQcmVzc3Vy
ZVNldHRpbmdzKE1lbW9yeVByZXNzdXJlVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBn
X2Fzc2VydF9jbXB1aW50KHRlc3QtPm1fdGVybWluYXRpb25SZWFzb24sID09LCBXRUJLSVRfV0VC
X1BST0NFU1NfRVhDRUVERURfTUVNT1JZX0xJTUlUKTsKIH0KIAorc3RhdGljIHZvaWQgdGVzdFdl
YkNvbnRleHRUaW1lWm9uZU92ZXJyaWRlKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVy
KQoreworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBXZWJLaXRKYXZhc2Ny
aXB0UmVzdWx0KiBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRV
bnRpbEZpbmlzaGVkKCJsZXQgbm93ID0gbmV3IERhdGUoKTsgbm93LmdldFRpbWV6b25lT2Zmc2V0
KCkiLCAmZXJyb3Iub3V0UHRyKCkpOworICAgIGdfYXNzZXJ0X25vbm51bGwoamF2YXNjcmlwdFJl
c3VsdCk7CisgICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0KCkpOworICAgIC8vIEJ5IGRl
ZmF1bHQgdGhlIHRlc3QgaGFybmVzcyB1c2VzIHRoZSBQYWNpZmljL0xvc19BbmdlbGVzIHRpbWV6
b25lIHdoaWNoIGlzIDcgaG91cnMgKDQyMCBtaW51dGVzKSBjb21wYXJlZCB0byBHTVQuCisgICAg
Z19hc3NlcnRfY21waW50KFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9OdW1iZXIoamF2
YXNjcmlwdFJlc3VsdCksID09LCA0MjApOworCisgICAgLy8gQ3JlYXRlIGEgbmV3IGNvbnRleHQg
Y29uZmlndXJlZCB3aXRoIHRpbWUgem9uZSBvdmVyaWRlIHNldCB0byBCZXJsaW4gd2hpY2ggaXMg
MTIwIG1pbnV0ZXMgYWhlYWQgb2YgdGhlIEdNVCBvZmZzZXQuCisgICAgYXV0byB3ZWJDb250ZXh0
ID0gYWRvcHRHUmVmKFdFQktJVF9XRUJfQ09OVEVYVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVf
V0VCX0NPTlRFWFQsCisgICAgICAgICJ0aW1lLXpvbmUtb3ZlcnJpZGUiLCAiRXVyb3BlL0Jlcmxp
biIsIG51bGxwdHIpKSk7CisgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF93ZWJfY29udGV4dF9n
ZXRfdGltZV96b25lX292ZXJyaWRlKHdlYkNvbnRleHQuZ2V0KCkpLCA9PSwgIkV1cm9wZS9CZXJs
aW4iKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBUZXN0OjphZG9wdFZpZXcoVGVzdDo6Y3JlYXRlV2Vi
Vmlldyh3ZWJDb250ZXh0LmdldCgpKSk7CisgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1
bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgibGV0IG5vdyA9IG5ldyBEYXRlKCk7IG5v
dy5nZXRUaW1lem9uZU9mZnNldCgpIiwgJmVycm9yLm91dFB0cigpLCB3ZWJWaWV3LmdldCgpKTsK
KyAgICBnX2Fzc2VydF9ub25udWxsKGphdmFzY3JpcHRSZXN1bHQpOworICAgIGdfYXNzZXJ0X25v
X2Vycm9yKGVycm9yLmdldCgpKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoV2ViVmlld1Rlc3Q6Omph
dmFzY3JpcHRSZXN1bHRUb051bWJlcihqYXZhc2NyaXB0UmVzdWx0KSwgPT0sIC0xMjApOworfQor
CiB2b2lkIGJlZm9yZUFsbCgpCiB7CiAgICAga1NlcnZlciA9IG5ldyBXZWJLaXRUZXN0U2VydmVy
KCk7CkBAIC0xMDA4LDYgKzEwMjgsNyBAQCB2b2lkIGJlZm9yZUFsbCgpCiAgICAgV2ViVmlld1Rl
c3Q6OmFkZCgiV2ViS2l0U2VjdXJpdHlNYW5hZ2VyIiwgImZpbGUteGhyIiwgdGVzdFdlYkNvbnRl
eHRTZWN1cml0eUZpbGVYSFIpOwogICAgIFByb3h5VGVzdDo6YWRkKCJXZWJLaXRXZWJDb250ZXh0
IiwgInByb3h5IiwgdGVzdFdlYkNvbnRleHRQcm94eVNldHRpbmdzKTsKICAgICBNZW1vcnlQcmVz
c3VyZVRlc3Q6OmFkZCgiV2ViS2l0V2ViQ29udGV4dCIsICJtZW1vcnktcHJlc3N1cmUiLCB0ZXN0
TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyk7CisgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2Vi
Q29udGV4dCIsICJ0aW1lem9uZSIsIHRlc3RXZWJDb250ZXh0VGltZVpvbmVPdmVycmlkZSk7CiB9
CiAKIHZvaWQgYWZ0ZXJBbGwoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGli
L1dlYktpdEdMaWIvVGVzdE1haW4uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktp
dEdMaWIvVGVzdE1haW4uY3BwCmluZGV4IGU4NWIzYzFlZmRlNzIxMzM2MmRlNjk3ZDczMmM1MzZk
NWQ3ZmZlMTkuLjM5NzQxNzQ2YTc1NjNjOWNlMjg0ZDBlOWYyYTI5YjA1ZTNlZGM1MDcgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1Rlc3RNYWluLmNwcAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9UZXN0TWFpbi5jcHAKQEAg
LTEzMiw2ICsxMzIsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAgICAgZ19z
ZXRlbnYoIkdTRVRUSU5HU19CQUNLRU5EIiwgIm1lbW9yeSIsIFRSVUUpOwogICAgIC8vIEdldCBy
aWQgb2YgcnVudGltZSB3YXJuaW5ncyBhYm91dCBkZXByZWNhdGVkIHByb3BlcnRpZXMgYW5kIHNp
Z25hbHMsIHNpbmNlIHRoZXkgYnJlYWsgdGhlIHRlc3RzLgogICAgIGdfc2V0ZW52KCJHX0VOQUJM
RV9ESUFHTk9TVElDIiwgIjAiLCBUUlVFKTsKKyAgICBnX3NldGVudigiVFoiLCAiQW1lcmljYS9M
b3NfQW5nZWxlcyIsIFRSVUUpOwogICAgIGdfdGVzdF9idWdfYmFzZSgiaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvIik7CiAKICAgICByZWdpc3RlckdSZXNvdXJjZSgpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuY3BwIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuY3BwCmluZGV4IDkwZjVk
MzUxYzE3ZGRlOGEwYTFmZjhjMmEyNGY5ZGJhMmFiNGYzNzguLmEyMWEwMDQyYjRjNzU1OWJjNzI1
YzFmYWMwNjU4ZTQwM2MxOTFjYWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xp
Yi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2ds
aWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5jcHAKQEAgLTMwNiw5ICszMDYsOSBAQCBjb25zdCBj
aGFyKiBXZWJWaWV3VGVzdDo6bWFpblJlc291cmNlRGF0YShzaXplX3QmIG1haW5SZXNvdXJjZURh
dGFTaXplKQogICAgIHJldHVybiBtX3Jlc291cmNlRGF0YS5nZXQoKTsKIH0KIAotc3RhdGljIHZv
aWQgcnVuSmF2YVNjcmlwdFJlYWR5Q2FsbGJhY2soR09iamVjdCosIEdBc3luY1Jlc3VsdCogcmVz
dWx0LCBXZWJWaWV3VGVzdCogdGVzdCkKK3N0YXRpYyB2b2lkIHJ1bkphdmFTY3JpcHRSZWFkeUNh
bGxiYWNrKEdPYmplY3QqIG9iamVjdCwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIFdlYlZpZXdUZXN0
KiB0ZXN0KQogewotICAgIHRlc3QtPm1famF2YXNjcmlwdFJlc3VsdCA9IHdlYmtpdF93ZWJfdmll
d19ydW5famF2YXNjcmlwdF9maW5pc2godGVzdC0+bV93ZWJWaWV3LCByZXN1bHQsIHRlc3QtPm1f
amF2YXNjcmlwdEVycm9yKTsKKyAgICB0ZXN0LT5tX2phdmFzY3JpcHRSZXN1bHQgPSB3ZWJraXRf
d2ViX3ZpZXdfcnVuX2phdmFzY3JpcHRfZmluaXNoKFdFQktJVF9XRUJfVklFVyhvYmplY3QpLCBy
ZXN1bHQsIHRlc3QtPm1famF2YXNjcmlwdEVycm9yKTsKICAgICBnX21haW5fbG9vcF9xdWl0KHRl
c3QtPm1fbWFpbkxvb3ApOwogfQogCkBAIC0zMjQsMTMgKzMyNCwxNSBAQCBzdGF0aWMgdm9pZCBy
dW5KYXZhU2NyaXB0SW5Xb3JsZFJlYWR5Q2FsbGJhY2soR09iamVjdCosIEdBc3luY1Jlc3VsdCog
cmVzdWx0LCBXZQogICAgIGdfbWFpbl9sb29wX3F1aXQodGVzdC0+bV9tYWluTG9vcCk7CiB9CiAK
LVdlYktpdEphdmFzY3JpcHRSZXN1bHQqIFdlYlZpZXdUZXN0OjpydW5KYXZhU2NyaXB0QW5kV2Fp
dFVudGlsRmluaXNoZWQoY29uc3QgY2hhciogamF2YXNjcmlwdCwgR0Vycm9yKiogZXJyb3IpCitX
ZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBXZWJWaWV3VGVzdDo6cnVuSmF2YVNjcmlwdEFuZFdhaXRV
bnRpbEZpbmlzaGVkKGNvbnN0IGNoYXIqIGphdmFzY3JpcHQsIEdFcnJvcioqIGVycm9yLCBXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3KQogewogICAgIGlmIChtX2phdmFzY3JpcHRSZXN1bHQpCiAgICAg
ICAgIHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF91bnJlZihtX2phdmFzY3JpcHRSZXN1bHQpOwog
ICAgIG1famF2YXNjcmlwdFJlc3VsdCA9IDA7CiAgICAgbV9qYXZhc2NyaXB0RXJyb3IgPSBlcnJv
cjsKLSAgICB3ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFzY3JpcHQobV93ZWJWaWV3LCBqYXZhc2Ny
aXB0LCAwLCByZWludGVycHJldF9jYXN0PEdBc3luY1JlYWR5Q2FsbGJhY2s+KHJ1bkphdmFTY3Jp
cHRSZWFkeUNhbGxiYWNrKSwgdGhpcyk7CisgICAgaWYgKCF3ZWJWaWV3KQorICAgICAgICB3ZWJW
aWV3ID0gbV93ZWJWaWV3OworICAgIHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlwdCh3ZWJW
aWV3LCBqYXZhc2NyaXB0LCAwLCByZWludGVycHJldF9jYXN0PEdBc3luY1JlYWR5Q2FsbGJhY2s+
KHJ1bkphdmFTY3JpcHRSZWFkeUNhbGxiYWNrKSwgdGhpcyk7CiAgICAgZ19tYWluX2xvb3BfcnVu
KG1fbWFpbkxvb3ApOwogCiAgICAgcmV0dXJuIG1famF2YXNjcmlwdFJlc3VsdDsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmggYi9U
b29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5oCmluZGV4IGEy
OGE1ZWRjOGQ0MGY1OGI1MDVhYjY0YjFlZjQ4YWEwYjY1OTczMzMuLjAyZDU4NDk1ZDZkNzdiZmIz
YTczYmEyOGI2YTVkOTMwYzQ2ZmYyZGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Z2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9n
bGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuaApAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBlbWl0UG9wdXBNZW51U2lnbmFsKCk7CiAjZW5kaWYKIAotICAgIFdlYktpdEphdmFz
Y3JpcHRSZXN1bHQqIHJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZChjb25zdCBjaGFy
KiBqYXZhc2NyaXB0LCBHRXJyb3IqKik7CisgICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogcnVu
SmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKGNvbnN0IGNoYXIqIGphdmFzY3JpcHQsIEdF
cnJvcioqLCBXZWJLaXRXZWJWaWV3KiA9IG51bGxwdHIpOwogICAgIFdlYktpdEphdmFzY3JpcHRS
ZXN1bHQqIHJ1bkphdmFTY3JpcHRGcm9tR1Jlc291cmNlQW5kV2FpdFVudGlsRmluaXNoZWQoY29u
c3QgY2hhciogcmVzb3VyY2UsIEdFcnJvcioqKTsKICAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0
KiBydW5KYXZhU2NyaXB0SW5Xb3JsZEFuZFdhaXRVbnRpbEZpbmlzaGVkKGNvbnN0IGNoYXIqIGph
dmFzY3JpcHQsIGNvbnN0IGNoYXIqIHdvcmxkLCBHRXJyb3IqKik7CiAgICAgV2ViS2l0SmF2YXNj
cmlwdFJlc3VsdCogcnVuSmF2YVNjcmlwdFdpdGhvdXRGb3JjZWRVc2VyR2VzdHVyZXNBbmRXYWl0
VW50aWxGaW5pc2hlZChjb25zdCBjaGFyKiBqYXZhc2NyaXB0LCBHRXJyb3IqKik7CmRpZmYgLS1n
aXQgYS9Ub29scy9mbGF0cGFrL2ZsYXRwYWt1dGlscy5weSBiL1Rvb2xzL2ZsYXRwYWsvZmxhdHBh
a3V0aWxzLnB5CmluZGV4IGFiMWRiYTk4MjA2YmU4MTBiMWQ0ZTYwY2E3NDZkOWI3N2FiMmIwZWQu
LjU2NjI2YTM2NjQxMmFiMzZmMGVmY2I3ZDM4ZTdkN2YxNjc1MWFhNmIgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL2ZsYXRwYWsvZmxhdHBha3V0aWxzLnB5CisrKyBiL1Rvb2xzL2ZsYXRwYWsvZmxhdHBha3V0
aWxzLnB5CkBAIC04NTcsNyArODU3LDcgQEAgY2xhc3MgV2Via2l0RmxhdHBhazoKICAgICAgICAg
ICAgIF0pCiAKICAgICAgICAgICAgIHNhbmRib3hfZW52aXJvbm1lbnQudXBkYXRlKHsKLSAgICAg
ICAgICAgICAgICAiVFoiOiAiUFNUOFBEVCIsCisgICAgICAgICAgICAgICAgIlRaIjogIkFtZXJp
Y2EvTG9zX0FuZ2VsZXMiLAogICAgICAgICAgICAgfSkKIAogICAgICAgICBlbnZfdmFyX3ByZWZp
eGVzX3RvX2tlZXAgPSBbCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457739</attachid>
            <date>2022-04-15 18:22:31 -0700</date>
            <delta_ts>2022-04-18 18:47:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213884-20220415182231.patch</filename>
            <type>text/plain</type>
            <size>45834</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyOTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NjEyNGZmMTU5ZTBiZDI3MGEwMTk4MmRlZGQ0MjNhMDVmMjM0OGY5Li42MDgzNWVhNGQ5MTliNGIy
YjJkYzQwOGNkZTM1YTRmNWU3OTc0ZDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAyMi0wNC0xMyAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxp
YS5jb20+IGFuZCBQYXZlbCBGZWxkbWFuIDxwYXZlbC5mZWxkbWFuQGdtYWlsLmNvbT4gYW5kIFl1
cnkgU2VtaWtoYXRza3kgPHl1cnlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBbV0syXSBBZGQg
QVBJIHRvIGFsbG93IGVtYmVkZGVyIHRvIHNldCBhIHRpbWV6b25lIG92ZXJyaWRlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM4ODQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHJ1bnRpbWUvRGF0ZUNv
bnZlcnNpb24uY3BwOgorICAgICAgICAoSlNDOjpmb3JtYXREYXRlVGltZSk6IEZvcm1hdCB0aGUg
b3ZlcnJpZGRlbiB0aW1lem9uZSBpZiBpdCdzIGVuYWJsZWQuCisgICAgICAgICogcnVudGltZS9K
U0RhdGVNYXRoLmNwcDoKKyAgICAgICAgKEpTQzo6RGF0ZUNhY2hlOjpkZWZhdWx0VGltZVpvbmUp
OiBSZXR1cm4gdGhlIG92ZXJyaWRkZW4gdGltZXpvbmUgaWYgaXQncyBlbmFibGVkLgorICAgICAg
ICAoSlNDOjpEYXRlQ2FjaGU6OnRpbWVab25lQ2FjaGVTbG93KTogQXBwbHkgdGltZXpvbmUgb3Zl
cnJpZGUgaWYgaXQgaXMgc2V0LgorCiAyMDIyLTA0LTE0ICBDYWl0bGluIFBvdHRlciAgPGNhaXRw
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0pTQ10gU2hhZG93UmVhbG0gZ2xvYmFsIG9iamVjdCBo
YXMgYSBtdXRhYmxlIHByb3RvdHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA0MDdmYzljYzBkZjIzZjUzMTUxYmVkNGM5MTY1
YmFhNzYxZGZiYWZkLi4zMDAxMDZkNTIyODQ5Nzg5YmI2MjNkYzE1ZTM4ZGE1YjUzODVhZjAxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIxIEBACisyMDIyLTA0LTEzICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1h
bmRAaWdhbGlhLmNvbT4gYW5kIFBhdmVsIEZlbGRtYW4gPHBhdmVsLmZlbGRtYW5AZ21haWwuY29t
PiBhbmQgWXVyeSBTZW1pa2hhdHNreSA8eXVyeXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtX
SzJdIEFkZCBBUEkgdG8gYWxsb3cgZW1iZWRkZXIgdG8gc2V0IGEgdGltZXpvbmUgb3ZlcnJpZGUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzg4NAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0Rh
dGVNYXRoLmNwcDogQWRkIG5ldyBBUElzIHRvIGNvbnRyb2wgYW5kIHF1ZXJ5IHRoZSB0aW1lem9u
ZSBvdmVycmlkZS4KKyAgICAgICAgKFdURjo6aW5uZXJUaW1lWm9uZU92ZXJyaWRlKTogU3RhdGlj
IHN0b3JhZ2Ugb2YgdGhlIG92ZXJyaWRlIGluZm9ybWF0aW9ucy4KKyAgICAgICAgKFdURjo6Y2Fs
Y3VsYXRlTG9jYWxUaW1lT2Zmc2V0KTogQ2FsY3VsYXRlIG9mZnNldCBmb3Igb3ZlcnJpZGRlbiB0
aW1lem9uZSwgaWYgaXQncyBwcmVzZW50LgorICAgICAgICAoV1RGOjp2YWxpZGF0ZVRpbWVab25l
KTogTmV3IGZ1bmN0aW9uIGFsbG93aW5nIHRvIGNoZWNrIGlmIGEgdGltZXpvbmUgaWRlbnRpZmll
ciBpcyB2YWxpZCBhY2NvcmRpbmcgdG8gSUNVJ3MgZGF0YWJhc2UgYW5kIGNvdmVydCBpdAorICAg
ICAgICB0byBVQ2hhciBidWZmZXIgc3VpdGFibGUgZm9yIHBhc3NpbmcgdG8gdWNhbC4KKyAgICAg
ICAgKFdURjo6c2V0VGltZVpvbmVPdmVycmlkZSk6IE5ldyBBUEkgdG8gc2V0IHRoZSB0aW1lem9u
ZSBvdmVycmlkZSwgdGhpcyBpcyBtZWFudCB0byBiZQorICAgICAgICB1c2VkIG9uIG5ld2x5IGNy
ZWF0ZWQgV2ViUHJvY2Vzc2VzLgorICAgICAgICAoV1RGOjp0aW1lWm9uZU92ZXJyaWRlKTpRdWVy
eSB0aGUgdGltZXpvbmUgb3ZlcnJpZGUuCisgICAgICAgIChXVEY6OnRpbWVab25lRGlzcGxheU5h
bWVPdmVycmlkZSk6IEdldCB0aGUgdGltZXpvbmUgbmFtZSBvZiB0aGUgb3ZlcnJpZGRlbiB0aW1l
em9uZS4KKyAgICAgICAgKiB3dGYvRGF0ZU1hdGguaDoKKwogMjAyMi0wNC0xNSAgWmFuIERvYmVy
c2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bV1BFXSBSZW1vdmUg
ZXhjbHVzaXZlIGJ1aWxkIGd1YXJkcyBhcm91bmQgR1BVIHByb2Nlc3MgcHJlZmVyZW5jZXMsIGNv
ZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggNjU4ODVmZWUxYTY4MGQyNjI0ZDA5ZDNjYzA5MDU1ZjM5ODdjYjhlZC4u
ZjE2N2MyZTE5N2E1YzcxMjRmNTQyZjNiMGE1OWQ0N2FjNTEyZTVjNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NiBAQAorMjAyMi0wNC0xMyAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxp
YS5jb20+IGFuZCBZdXJ5IFNlbWlraGF0c2t5IDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgW1dLMl0gQWRkIEFQSSB0byBhbGxvdyBlbWJlZGRlciB0byBzZXQgYSB0aW1lem9uZSBvdmVy
cmlkZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEz
ODg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBhZGRzOgorCisgICAgICAgIC0gbmV3IENvY29hIEFQSQorICAgICAgICAtIG5ldyBH
bGliIEFQSSAodGFyZ2V0dGluZyBib3RoIFdQRSBhbmQgR1RLIHBvcnRzKQorICAgICAgICAtIG5l
dyBDIEFQSSAoZm9yIHRoZSB3aW4gcG9ydCkKKworICAgICAgICB0aGF0IGFsbG93cyB0aGUgZW1i
ZWRkZXIgdG8gc2V0IGEgdGltZXpvbmUgb3ZlcnJpZGUgZm9yIHRoZSB1bmRlcmx5aW5nIFBhZ2VD
b25maWd1cmF0aW9uLgorICAgICAgICBTaW5jZSB0aGlzIEFQSSBpcyBub3QgZXhwb3NlZCBpbiBn
bGliIHBvcnRzLCBhIG5ldyBjb250cnVjdC10aW1lLW9ubHkgcHJvcGVydHkgd2FzIGFkZGVkIHRv
CisgICAgICAgIHRoZSBXZWJLaXRXZWJDb250ZXh0IEFQSS4gSXQgd291bGQgYWxzbyBhbGxvdyBm
aW5lLWdyYWluZWQgY29udHJvbCBvdmVyIG11bHRpcGxlIHBhZ2VzLCBmb3IKKyAgICAgICAgaW5z
dGFuY2UgaXQncyBub3QgcG9zc2libGUgY3VycmVudGx5IHRvIGhhdmUgdHdvIHBhZ2VzIGluIGRp
ZmZlcmVudCB0aW1lem9uZXMuCisKKyAgICAgICAgTm8gbmV3IGxheW91dCB0ZXN0cywgdGhpcyBj
aGFuZ2UgaXMgY292ZXJlZCBieSBuZXcgQVBJIHRlc3RzLgorCisgICAgICAgICogU2hhcmVkL1dl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmln
dXJhdGlvbi5jcHA6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpjb3B5IGNvbnN0
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmg6CisgICAg
ICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpzZXRUaW1lWm9uZU92ZXJyaWRlKToKKyAgICAg
ICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OnRpbWVab25lT3ZlcnJpZGUgY29uc3QpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGltZVpvbmVPdmVycmlkZV0pOgorICAg
ICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF9zZXRUaW1lWm9uZU92ZXJyaWRlOl0pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZh
dGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHA6
CisgICAgICAgICh3ZWJraXRXZWJDb250ZXh0R2V0UHJvcGVydHkpOgorICAgICAgICAod2Via2l0
V2ViQ29udGV4dFNldFByb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdF93ZWJfY29udGV4dF9jbGFz
c19pbml0KToKKyAgICAgICAgKHdlYmtpdFdlYkNvbnRleHRDcmVhdGVQYWdlRm9yV2ViVmlldyk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fbGltaXRzTmF2aWdhdGlv
bnNUb0FwcEJvdW5kRG9tYWlucyk6CisKIDIwMjItMDQtMTUgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgogCiAgICAgICAgIFNlcnZpY2VXb3JrZXIucG9zdE1lc3NhZ2UoKSBkb2Vz
bid0IHdvcmsgZnJvbSBpbnNpZGUgaWZyYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9EYXRlQ29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9EYXRlQ29udmVyc2lvbi5jcHAKaW5kZXggMmRlY2Y4YTgzYzgwZTgwY2E4Njc3ZjRj
Nzg3YmY3OWM2YzI5OTVmYS4uMmI4ZjliNzNmNTNiMDQ3NDQyODYzNzg3MzYyYjg1YTVlMDZjYjBh
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnZlcnNp
b24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb252ZXJzaW9u
LmNwcApAQCAtOTcsMTcgKzk3LDIzIEBAIFN0cmluZyBmb3JtYXREYXRlVGltZShjb25zdCBHcmVn
b3JpYW5EYXRlVGltZSYgdCwgRGF0ZVRpbWVGb3JtYXQgZm9ybWF0LCBib29sIGFzCiAgICAgICAg
ICAgICBhcHBlbmROdW1iZXI8Mj4oYnVpbGRlciwgb2Zmc2V0IC8gNjApOwogICAgICAgICAgICAg
YXBwZW5kTnVtYmVyPDI+KGJ1aWxkZXIsIG9mZnNldCAlIDYwKTsKIAorICAgICAgICAgICAgU3Ry
aW5nIHRpbWVab25lTmFtZTsKKyAgICAgICAgICAgIFN0cmluZyB0aW1lWm9uZU92ZXJyaWRlID0g
dGltZVpvbmVEaXNwbGF5TmFtZU92ZXJyaWRlKCk7CisgICAgICAgICAgICBpZiAoYXV0byYgb3Zl
cnJpZGUgPSB0aW1lWm9uZURpc3BsYXlOYW1lT3ZlcnJpZGUoKTsgIW92ZXJyaWRlLmlzRW1wdHko
KSkKKyAgICAgICAgICAgICAgICB0aW1lWm9uZU5hbWUgPSBvdmVycmlkZTsKKyAgICAgICAgICAg
IGVsc2UgewogI2lmIE9TKFdJTkRPV1MpCi0gICAgICAgICAgICBUSU1FX1pPTkVfSU5GT1JNQVRJ
T04gdGltZVpvbmVJbmZvcm1hdGlvbjsKLSAgICAgICAgICAgIEdldFRpbWVab25lSW5mb3JtYXRp
b24oJnRpbWVab25lSW5mb3JtYXRpb24pOwotICAgICAgICAgICAgY29uc3QgV0NIQVIqIHdpblRp
bWVab25lTmFtZSA9IHQuaXNEU1QoKSA/IHRpbWVab25lSW5mb3JtYXRpb24uRGF5bGlnaHROYW1l
IDogdGltZVpvbmVJbmZvcm1hdGlvbi5TdGFuZGFyZE5hbWU7Ci0gICAgICAgICAgICBTdHJpbmcg
dGltZVpvbmVOYW1lKHdpblRpbWVab25lTmFtZSk7CisgICAgICAgICAgICAgICAgVElNRV9aT05F
X0lORk9STUFUSU9OIHRpbWVab25lSW5mb3JtYXRpb247CisgICAgICAgICAgICAgICAgR2V0VGlt
ZVpvbmVJbmZvcm1hdGlvbigmdGltZVpvbmVJbmZvcm1hdGlvbik7CisgICAgICAgICAgICAgICAg
dGltZVpvbmVOYW1lID0gU3RyaW5nKHQuaXNEU1QoKSA/IHRpbWVab25lSW5mb3JtYXRpb24uRGF5
bGlnaHROYW1lIDogdGltZVpvbmVJbmZvcm1hdGlvbi5TdGFuZGFyZE5hbWUpOwogI2Vsc2UKLSAg
ICAgICAgICAgIHN0cnVjdCB0bSBndG0gPSB0OwotICAgICAgICAgICAgY2hhciB0aW1lWm9uZU5h
bWVbNzBdOwotICAgICAgICAgICAgc3RyZnRpbWUodGltZVpvbmVOYW1lLCBzaXplb2YodGltZVpv
bmVOYW1lKSwgIiVaIiwgJmd0bSk7CisgICAgICAgICAgICAgICAgc3RydWN0IHRtIGd0bSA9IHQ7
CisgICAgICAgICAgICAgICAgY2hhciB0aW1lWm9uZU5hbWVDaGFyc1s3MF07CisgICAgICAgICAg
ICAgICAgaWYgKHN0cmZ0aW1lKHRpbWVab25lTmFtZUNoYXJzLCBzaXplb2YodGltZVpvbmVOYW1l
Q2hhcnMpLCAiJVoiLCAmZ3RtKSkKKyAgICAgICAgICAgICAgICAgICAgdGltZVpvbmVOYW1lID0g
U3RyaW5nOjpmcm9tVVRGOCh0aW1lWm9uZU5hbWVDaGFycyk7CiAjZW5kaWYKLSAgICAgICAgICAg
IGlmICh0aW1lWm9uZU5hbWVbMF0pCisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIXRp
bWVab25lTmFtZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIiAo
IiwgdGltZVpvbmVOYW1lLCAnKScpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRlTWF0aC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0RhdGVNYXRoLmNwcAppbmRleCBmYzZmZDM4ZWNiMzkyZTlkNWVh
NTRkNTcwMjU3ODU2MjI4OTQzNGZiLi5mZWI0MWRkNzcyNjA0ZDAzZDZjYjM5NjZjNGNiNWFlZGQx
MTI4NzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGVN
YXRoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGVNYXRoLmNw
cApAQCAtMzMyLDYgKzMzMiw5IEBAIGRvdWJsZSBEYXRlQ2FjaGU6OnBhcnNlRGF0ZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIGNvbnN0IFN0cmluZyYKIC8vIGh0dHBzOi8v
dGMzOS5lcy9lY21hNDAyLyNzZWMtZGVmYXVsdHRpbWV6b25lCiBTdHJpbmcgRGF0ZUNhY2hlOjpk
ZWZhdWx0VGltZVpvbmUoKQogeworICAgIGlmIChhdXRvJiBvdmVycmlkZSA9IHRpbWVab25lT3Zl
cnJpZGUoKTsgIW92ZXJyaWRlLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG92ZXJyaWRlOwor
CiAjaWYgSEFWRShJQ1VfQ19USU1FWk9ORV9BUEkpCiAgICAgcmV0dXJuIHRpbWVab25lQ2FjaGUo
KS0+bV9jYW5vbmljYWxUaW1lWm9uZUlEOwogI2Vsc2UKQEAgLTM4MywxMiArMzg2LDE5IEBAIFJl
ZjxEYXRlSW5zdGFuY2VEYXRhPiBEYXRlQ2FjaGU6OmNhY2hlZERhdGVJbnN0YW5jZURhdGEoZG91
YmxlIG1pbGxpc2Vjb25kc0Zyb21FCiB2b2lkIERhdGVDYWNoZTo6dGltZVpvbmVDYWNoZVNsb3co
KQogewogICAgIEFTU0VSVCghbV90aW1lWm9uZUNhY2hlKTsKKworICAgIFN0cmluZyBvdmVycmlk
ZSA9IHRpbWVab25lT3ZlcnJpZGUoKTsKICNpZiBIQVZFKElDVV9DX1RJTUVaT05FX0FQSSkKICAg
ICBhdXRvKiBjYWNoZSA9IG5ldyBPcGFxdWVJQ1VUaW1lWm9uZTsKIAogICAgIFN0cmluZyBjYW5v
bmljYWw7CisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgVmVjdG9y
PFVDaGFyLCAzMj4gdGltZVpvbmVJRDsKLSAgICBhdXRvIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9k
dWNpbmdGdW5jdGlvbih1Y2FsX2dldEhvc3RUaW1lWm9uZSwgdGltZVpvbmVJRCk7CisgICAgaWYg
KG92ZXJyaWRlLmlzRW1wdHkoKSkgeworICAgICAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVj
aW5nRnVuY3Rpb24odWNhbF9nZXRIb3N0VGltZVpvbmUsIHRpbWVab25lSUQpOworICAgICAgICBB
U1NFUlRfVU5VU0VEKHN0YXR1cywgVV9TVUNDRVNTKHN0YXR1cykpOworICAgIH0gZWxzZQorICAg
ICAgICB0aW1lWm9uZUlEID0gb3ZlcnJpZGUuY2hhcmFjdGVyc1dpdGhvdXROdWxsVGVybWluYXRp
b24oKTsKICAgICBpZiAoVV9TVUNDRVNTKHN0YXR1cykpIHsKICAgICAgICAgVmVjdG9yPFVDaGFy
LCAzMj4gY2Fub25pY2FsQnVmZmVyOwogICAgICAgICBhdXRvIHN0YXR1cyA9IGNhbGxCdWZmZXJQ
cm9kdWNpbmdGdW5jdGlvbih1Y2FsX2dldENhbm9uaWNhbFRpbWVab25lSUQsIHRpbWVab25lSUQu
ZGF0YSgpLCB0aW1lWm9uZUlELnNpemUoKSwgY2Fub25pY2FsQnVmZmVyLCBudWxscHRyKTsKQEAg
LTQwNSw2ICs0MTUsMTAgQEAgdm9pZCBEYXRlQ2FjaGU6OnRpbWVab25lQ2FjaGVTbG93KCkKICAg
ICB1Y2FsX3NldEdyZWdvcmlhbkNoYW5nZShjYWNoZS0+bV9jYWxlbmRhci5nZXQoKSwgbWluRUNN
QVNjcmlwdFRpbWUsICZzdGF0dXMpOyAvLyBJZ25vcmUgInVuc3VwcG9ydGVkIiBlcnJvci4KICAg
ICBtX3RpbWVab25lQ2FjaGUgPSBzdGQ6OnVuaXF1ZV9wdHI8T3BhcXVlSUNVVGltZVpvbmUsIE9w
YXF1ZUlDVVRpbWVab25lRGVsZXRlcj4oY2FjaGUpOwogI2Vsc2UKKyAgICBpZiAoIW92ZXJyaWRl
LmlzRW1wdHkoKSkgeworICAgICAgICBtX3RpbWVab25lQ2FjaGUgPSBzdGQ6OnVuaXF1ZV9wdHI8
T3BhcXVlSUNVVGltZVpvbmUsIE9wYXF1ZUlDVVRpbWVab25lRGVsZXRlcj4oYml0d2lzZV9jYXN0
PE9wYXF1ZUlDVVRpbWVab25lKj4oaWN1OjpUaW1lWm9uZTo6Y3JlYXRlVGltZVpvbmUob3ZlcnJp
ZGUudXRmOCgpLmRhdGEoKSkpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICAvLyBEbyBu
b3QgdXNlIGljdTo6VGltZVpvbmU6OmNyZWF0ZURlZmF1bHQuIElDVSBpbnRlcm5hbGx5IGhhcyBh
IGNhY2hlIGZvciB0aW1lem9uZSBhbmQgY3JlYXRlRGVmYXVsdCByZXR1cm5zIHRoaXMgY2FjaGVk
IHZhbHVlLgogICAgIG1fdGltZVpvbmVDYWNoZSA9IHN0ZDo6dW5pcXVlX3B0cjxPcGFxdWVJQ1VU
aW1lWm9uZSwgT3BhcXVlSUNVVGltZVpvbmVEZWxldGVyPihiaXR3aXNlX2Nhc3Q8T3BhcXVlSUNV
VGltZVpvbmUqPihpY3U6OlRpbWVab25lOjpkZXRlY3RIb3N0VGltZVpvbmUoKSkpOwogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5jcHAgYi9Tb3VyY2UvV1RGL3d0
Zi9EYXRlTWF0aC5jcHAKaW5kZXggYjVmMjI4MzA4ZDE2MWI2ZTE2YzljNDVhYmY4MmIxNTJiNTc2
Y2M2ZS4uNGQ1MjZiYTU1NjE0ZmQxNzVkYmJiOTE2MmYyYThiZjcyYmI0NjBhMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvRGF0ZU1hdGguY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0RhdGVN
YXRoLmNwcApAQCAtNzYsOSArNzYsMTQgQEAKICNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8
c3RkaW50Lmg+CiAjaW5jbHVkZSA8dGltZS5oPgorI2luY2x1ZGUgPHVuaWNvZGUvdWNhbC5oPgog
I2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4K
KyNpbmNsdWRlIDx3dGYvTGFuZ3VhZ2UuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU3BlY2lmaWMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3VuaWNvZGUvVVRGOENvbnZlcnNpb24uaD4K
IAogI2lmIE9TKFdJTkRPV1MpCiAjaW5jbHVkZSA8d2luZG93cy5oPgpAQCAtOTIsNiArOTcsMTgg
QEAgdGVtcGxhdGU8dW5zaWduZWQgbGVuZ3RoPiBpbmxpbmUgYm9vbCBzdGFydHNXaXRoTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IGMKICAgICByZXR1cm4gZXF1YWxMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2Uoc3RyaW5nLCBsb3dlcmNhc2VMZXR0ZXJzLCBsZW5ndGggLSAxKTsKIH0KIAor
c3RydWN0IFRpbWVab25lT3ZlcnJpZGUgeworICAgIFVDYWxlbmRhciogY2FsIHsgbnVsbHB0ciB9
OworICAgIFN0cmluZyBpZDsKKyAgICBTdHJpbmcgZGlzcGxheU5hbWU7Cit9OworCitzdGF0aWMg
VGltZVpvbmVPdmVycmlkZSYgaW5uZXJUaW1lWm9uZU92ZXJyaWRlKCkKK3sKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8VGltZVpvbmVPdmVycmlkZT4gdGltZVpvbmVPdmVycmlkZTsKKyAgICBy
ZXR1cm4gdGltZVpvbmVPdmVycmlkZTsKK30KKwogLyogQ29uc3RhbnRzICovCiAKIGNvbnN0IEFT
Q0lJTGl0ZXJhbCB3ZWVrZGF5TmFtZVs3XSA9IHsgIk1vbiJfcywgIlR1ZSJfcywgIldlZCJfcywg
IlRodSJfcywgIkZyaSJfcywgIlNhdCJfcywgIlN1biJfcyB9OwpAQCAtMzE4LDYgKzMzNSwyMCBA
QCBzdGF0aWMgZG91YmxlIGNhbGN1bGF0ZURTVE9mZnNldCh0aW1lX3QgbG9jYWxUaW1lLCBkb3Vi
bGUgdXRjT2Zmc2V0KQogLy8gUmV0dXJucyBjb21iaW5lZCBvZmZzZXQgaW4gbWlsbGlzZWNvbmQg
KFVUQyArIERTVCkuCiBMb2NhbFRpbWVPZmZzZXQgY2FsY3VsYXRlTG9jYWxUaW1lT2Zmc2V0KGRv
dWJsZSBtcywgVGltZVR5cGUgaW5wdXRUaW1lVHlwZSkKIHsKKyAgICBhdXRvJiB0eiA9IGlubmVy
VGltZVpvbmVPdmVycmlkZSgpOworICAgIGlmICh0ei5jYWwpIHsKKyAgICAgICAgVUVycm9yQ29k
ZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgICAgIHVjYWxfc2V0TWlsbGlzKHR6LmNhbCwg
bXMsICZzdGF0dXMpOworICAgICAgICBpZiAoIVVfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICAg
ICAgcmV0dXJuIHsgfTsKKyAgICAgICAgaW50MzJfdCBvZmZzZXQgPSB1Y2FsX2dldCh0ei5jYWws
IFVDQUxfWk9ORV9PRkZTRVQsICZzdGF0dXMpOworICAgICAgICBpZiAoIVVfU1VDQ0VTUyhzdGF0
dXMpKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgaW50MzJfdCBkc3RPZmZzZXQg
PSB1Y2FsX2dldCh0ei5jYWwsIFVDQUxfRFNUX09GRlNFVCwgJnN0YXR1cyk7CisgICAgICAgIGlm
ICghVV9TVUNDRVNTKHN0YXR1cykpCisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICBy
ZXR1cm4gTG9jYWxUaW1lT2Zmc2V0KGRzdE9mZnNldCwgb2Zmc2V0ICsgZHN0T2Zmc2V0KTsKKyAg
ICB9CiAjaWYgSEFWRShUTV9HTVRPRkYpCiAgICAgZG91YmxlIGxvY2FsVG9VVENUaW1lT2Zmc2V0
ID0gaW5wdXRUaW1lVHlwZSA9PSBMb2NhbFRpbWUgPyBjYWxjdWxhdGVVVENPZmZzZXQoKSA6IDA7
CiAjZWxzZQpAQCAtMTAxNiw0ICsxMDQ3LDc4IEBAIFN0cmluZyBtYWtlUkZDMjgyMkRhdGVTdHJp
bmcodW5zaWduZWQgZGF5T2ZXZWVrLCB1bnNpZ25lZCBkYXksIHVuc2lnbmVkIG1vbnRoLCB1CiAg
ICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKIH0KIAorc3RhdGljIHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPFVDaGFyLCAzMj4+IHZhbGlkYXRlVGltZVpvbmUoY29uc3QgU3RyaW5nVmll
dyYgdGltZVpvbmUpCit7CisgICAgVmVjdG9yPFVDaGFyPiBidWZmZXIodGltZVpvbmUubGVuZ3Ro
KCkpOworICAgIHRpbWVab25lLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGJ1ZmZlci5kYXRh
KCkpOworCisgICAgVmVjdG9yPFVDaGFyLCAzMj4gY2Fub25pY2FsQnVmZmVyKDMyKTsKKyAgICBV
RXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICBhdXRvIGNhbm9uaWNhbExlbmd0
aCA9IHVjYWxfZ2V0Q2Fub25pY2FsVGltZVpvbmVJRChidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6
ZSgpLCBjYW5vbmljYWxCdWZmZXIuZGF0YSgpLCBjYW5vbmljYWxCdWZmZXIuc2l6ZSgpLCBudWxs
cHRyLCAmc3RhdHVzKTsKKyAgICBpZiAoc3RhdHVzID09IFVfQlVGRkVSX09WRVJGTE9XX0VSUk9S
KSB7CisgICAgICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICAgICAgY2Fub25pY2FsQnVm
ZmVyLmdyb3coY2Fub25pY2FsTGVuZ3RoKTsKKyAgICAgICAgdWNhbF9nZXRDYW5vbmljYWxUaW1l
Wm9uZUlEKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCksIGNhbm9uaWNhbEJ1ZmZlci5kYXRh
KCksIGNhbm9uaWNhbExlbmd0aCwgbnVsbHB0ciwgJnN0YXR1cyk7CisgICAgfSBlbHNlCisgICAg
ICAgIGNhbm9uaWNhbEJ1ZmZlci5yZXNpemUoY2Fub25pY2FsTGVuZ3RoKTsKKyAgICBpZiAoIVVf
U1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHJldHVy
biBjYW5vbmljYWxCdWZmZXI7Cit9CisKK2Jvb2wgaXNUaW1lWm9uZVZhbGlkKGNvbnN0IFN0cmlu
Z1ZpZXcmIHRpbWVab25lKQoreworICAgIHJldHVybiB2YWxpZGF0ZVRpbWVab25lKHRpbWVab25l
KS5oYXNfdmFsdWUoKTsKK30KKworYm9vbCBzZXRUaW1lWm9uZU92ZXJyaWRlKGNvbnN0IFN0cmlu
Z1ZpZXcmIHRpbWVab25lKQoreworICAgIGlubmVyVGltZVpvbmVPdmVycmlkZSgpLmRpc3BsYXlO
YW1lID0gU3RyaW5nKCk7CisgICAgaWYgKGlubmVyVGltZVpvbmVPdmVycmlkZSgpLmNhbCkgewor
ICAgICAgICB1Y2FsX2Nsb3NlKGlubmVyVGltZVpvbmVPdmVycmlkZSgpLmNhbCk7CisgICAgICAg
IGlubmVyVGltZVpvbmVPdmVycmlkZSgpLmNhbCA9IG51bGxwdHI7CisgICAgfQorCisgICAgaWYg
KHRpbWVab25lLmlzRW1wdHkoKSkgeworICAgICAgICBpbm5lclRpbWVab25lT3ZlcnJpZGUoKS5p
ZCA9IFN0cmluZygpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBhdXRvIGNh
bm9uaWNhbEJ1ZmZlciA9IHZhbGlkYXRlVGltZVpvbmUodGltZVpvbmUpOworICAgIGlmICghY2Fu
b25pY2FsQnVmZmVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGNhbm9uaWNh
bExlbmd0aCA9IGNhbm9uaWNhbEJ1ZmZlci0+c2l6ZSgpOworICAgIFVFcnJvckNvZGUgc3RhdHVz
ID0gVV9aRVJPX0VSUk9SOworICAgIFVDYWxlbmRhciogY2FsID0gdWNhbF9vcGVuKGNhbm9uaWNh
bEJ1ZmZlci0+ZGF0YSgpLCBjYW5vbmljYWxMZW5ndGgsIG51bGxwdHIsIFVDQUxfVFJBRElUSU9O
QUwsICZzdGF0dXMpOworICAgIGlmICghVV9TVUNDRVNTKHN0YXR1cykpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIFZlY3RvcjxVQ2hhciwgMzI+IGRpc3BsYXlOYW1lQnVmZmVyKDMyKTsK
KyAgICBhdXRvIGRpc3BsYXlOYW1lTGVuZ3RoID0gdWNhbF9nZXRUaW1lWm9uZURpc3BsYXlOYW1l
KGNhbCwgVUNBTF9TVEFOREFSRCwgZGVmYXVsdExhbmd1YWdlKCkudXRmOCgpLmRhdGEoKSwgZGlz
cGxheU5hbWVCdWZmZXIuZGF0YSgpLCBkaXNwbGF5TmFtZUJ1ZmZlci5zaXplKCksICZzdGF0dXMp
OworICAgIGlmIChzdGF0dXMgPT0gVV9CVUZGRVJfT1ZFUkZMT1dfRVJST1IpIHsKKyAgICAgICAg
c3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgICAgICBkaXNwbGF5TmFtZUJ1ZmZlci5ncm93KGRp
c3BsYXlOYW1lTGVuZ3RoKTsKKyAgICAgICAgdWNhbF9nZXRUaW1lWm9uZURpc3BsYXlOYW1lKGNh
bCwgVUNBTF9TVEFOREFSRCwgZGVmYXVsdExhbmd1YWdlKCkudXRmOCgpLmRhdGEoKSwgZGlzcGxh
eU5hbWVCdWZmZXIuZGF0YSgpLCBkaXNwbGF5TmFtZUxlbmd0aCwgJnN0YXR1cyk7CisgICAgfQor
ICAgIGlmICghVV9TVUNDRVNTKHN0YXR1cykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGF1dG8mIHRpbWVab25lT3ZlcnJpZGUgPSBpbm5lclRpbWVab25lT3ZlcnJpZGUoKTsKKyAgICB0
aW1lWm9uZU92ZXJyaWRlLmNhbCA9IGNhbDsKKyAgICB0aW1lWm9uZU92ZXJyaWRlLmlkID0gU3Ry
aW5nKGNhbm9uaWNhbEJ1ZmZlci0+ZGF0YSgpLCBjYW5vbmljYWxMZW5ndGgpOworICAgIHRpbWVa
b25lT3ZlcnJpZGUuZGlzcGxheU5hbWUgPSBTdHJpbmcoZGlzcGxheU5hbWVCdWZmZXIuZGF0YSgp
LCBkaXNwbGF5TmFtZUxlbmd0aCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2NvbnN0IFN0cmlu
ZyYgdGltZVpvbmVPdmVycmlkZSgpCit7CisgICAgcmV0dXJuIGlubmVyVGltZVpvbmVPdmVycmlk
ZSgpLmlkOworfQorCitjb25zdCBTdHJpbmcmIHRpbWVab25lRGlzcGxheU5hbWVPdmVycmlkZSgp
Cit7CisgICAgcmV0dXJuIGlubmVyVGltZVpvbmVPdmVycmlkZSgpLmRpc3BsYXlOYW1lOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRo
LmggYi9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5oCmluZGV4IDE3NGU2YzA3YjZmNWNmNGJjZjA0
NjlmMjBmOGNmMDIxYmVkMjUxMDMuLmJjZGVkNjg4Y2VjMjgxNGZkNWM0ZWRhNmVmMjkwNTE0NzE3
YmJiZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmgKKysrIGIvU291cmNl
L1dURi93dGYvRGF0ZU1hdGguaApAQCAtMzkzLDYgKzM5MywxMSBAQCBpbmxpbmUgZG91YmxlIHRp
bWVUb01TKGRvdWJsZSBob3VyLCBkb3VibGUgbWluLCBkb3VibGUgc2VjLCBkb3VibGUgbXMpCiAg
ICAgcmV0dXJuICgoKGhvdXIgKiBXVEY6Om1pbnV0ZXNQZXJIb3VyICsgbWluKSAqIFdURjo6c2Vj
b25kc1Blck1pbnV0ZSArIHNlYykgKiBXVEY6Om1zUGVyU2Vjb25kICsgbXMpOwogfQogCitXVEZf
RVhQT1JUX1BSSVZBVEUgYm9vbCBpc1RpbWVab25lVmFsaWQoY29uc3QgU3RyaW5nVmlldyYpOwor
V1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgc2V0VGltZVpvbmVPdmVycmlkZShjb25zdCBTdHJpbmdW
aWV3Jik7CitXVEZfRVhQT1JUX1BSSVZBVEUgY29uc3QgU3RyaW5nJiB0aW1lWm9uZU92ZXJyaWRl
KCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgY29uc3QgU3RyaW5nJiB0aW1lWm9uZURpc3BsYXlOYW1l
T3ZlcnJpZGUoKTsKKwogLy8gUmV0dXJucyBjb21iaW5lZCBvZmZzZXQgaW4gbWlsbGlzZWNvbmQg
KFVUQyArIERTVCkuCiBXVEZfRVhQT1JUX1BSSVZBVEUgTG9jYWxUaW1lT2Zmc2V0IGNhbGN1bGF0
ZUxvY2FsVGltZU9mZnNldChkb3VibGUgdXRjSW5NaWxsaXNlY29uZHMsIFRpbWVUeXBlID0gVVRD
VGltZSk7CiAKQEAgLTQxOCw2ICs0MjMsMTAgQEAgdXNpbmcgV1RGOjpwYXJzZURhdGVGcm9tTnVs
bFRlcm1pbmF0ZWRDaGFyYWN0ZXJzOwogdXNpbmcgV1RGOjp0aW1lVG9NUzsKIHVzaW5nIFdURjo6
bWFrZVJGQzI4MjJEYXRlU3RyaW5nOwogdXNpbmcgV1RGOjpMb2NhbFRpbWVPZmZzZXQ7Cit1c2lu
ZyBXVEY6OmlzVGltZVpvbmVWYWxpZDsKK3VzaW5nIFdURjo6c2V0VGltZVpvbmVPdmVycmlkZTsK
K3VzaW5nIFdURjo6dGltZVpvbmVPdmVycmlkZTsKK3VzaW5nIFdURjo6dGltZVpvbmVEaXNwbGF5
TmFtZU92ZXJyaWRlOwogdXNpbmcgV1RGOjpjYWxjdWxhdGVMb2NhbFRpbWVPZmZzZXQ7CiB1c2lu
ZyBXVEY6OnRpbWVDbGlwOwogdXNpbmcgV1RGOjpqc0N1cnJlbnRUaW1lOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAppbmRl
eCA1MTQyZTJjNjA5NTMxZTVhZjgwOWM0NmRhNmZjNDI2NTBjZTRkNjlhLi45Y2E4MTExYTIwNDRl
NWE2YjExOTcxN2Q1YTRkOTc3YjVkODgxNDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtMjE0LDYgKzIxNCw4
IEBAIHZvaWQgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKICNpZiBVU0UoQVRTUEkpCiAgICAgZW5jb2RlciA8PCBhY2Nlc3Np
YmlsaXR5QnVzQWRkcmVzczsKICNlbmRpZgorCisgICAgZW5jb2RlciA8PCB0aW1lWm9uZU92ZXJy
aWRlOwogfQogCiBib29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6
OkRlY29kZXImIGRlY29kZXIsIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRl
cnMpCkBAIC01NzEsNiArNTczLDEyIEBAIGJvb2wgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
czo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgV2ViUHJvY2Vzc0NyZWF0CiAgICAgcGFy
YW1ldGVycy5hY2Nlc3NpYmlsaXR5QnVzQWRkcmVzcyA9IFdURk1vdmUoKmFjY2Vzc2liaWxpdHlC
dXNBZGRyZXNzKTsKICNlbmRpZgogCisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHRpbWVab25l
T3ZlcnJpZGU7CisgICAgZGVjb2RlciA+PiB0aW1lWm9uZU92ZXJyaWRlOworICAgIGlmICghdGlt
ZVpvbmVPdmVycmlkZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHBhcmFtZXRlcnMudGlt
ZVpvbmVPdmVycmlkZSA9IFdURk1vdmUoKnRpbWVab25lT3ZlcnJpZGUpOworCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuaAppbmRleCA4ZDM3MmNiNjYxOWMyODQ5YmQ0NjFmMjQzYTUxYTg2Nzk0
OGQ5NzIzLi4yOWRhMjNkODNlNTYwMjhmYmIwMDlkOTc1ZTUwZmY5OTkyOTc0NGI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5o
CkBAIC0yNTUsNiArMjU1LDggQEAgc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMg
ewogI2lmIFVTRShBVFNQSSkKICAgICBTdHJpbmcgYWNjZXNzaWJpbGl0eUJ1c0FkZHJlc3M7CiAj
ZW5kaWYKKworICAgIFN0cmluZyB0aW1lWm9uZU92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwCmluZGV4IGNmZDljMzk4MTMzN2M3ZGQwMmM2
MjNjZThiYTY4NmVhMzZiYmZmYjkuLmExNmZlMTNjMDg1NzYxOTRlYzhjNDNlOWRhZTYyYTIwNTY2
OTA0YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwCkBAIC04NCw2ICs4NCw3IEBAIFJlZjxQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24+IFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y29weSgpCiAj
aWYgSEFWRShBVURJVF9UT0tFTikKICAgICBjb3B5LT5tX3ByZXNlbnRpbmdBcHBsaWNhdGlvblBy
b2Nlc3NUb2tlbiA9IHRoaXMtPm1fcHJlc2VudGluZ0FwcGxpY2F0aW9uUHJvY2Vzc1Rva2VuOwog
I2VuZGlmCisgICAgY29weS0+bV90aW1lWm9uZU92ZXJyaWRlID0gdGhpcy0+bV90aW1lWm9uZU92
ZXJyaWRlOwogICAgIHJldHVybiBjb3B5OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgKaW5kZXggY2M2
NDJjNTFiYTY2M2U4NDNkZjU0ZDE0Y2ZjY2I2ZDRlZjgxNzI2Yy4uYzc3OWQwNDU1MDBiYjJhYzll
ZmU1MzVjMmMzYzY0YjY0YTZlMTIxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaApAQCAtMTY0LDYgKzE2
NCw5IEBAIHB1YmxpYzoKICAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPE1lbW9yeVByZXNzdXJlSGFu
ZGxlcjo6Q29uZmlndXJhdGlvbj4mIG1lbW9yeVByZXNzdXJlSGFuZGxlckNvbmZpZ3VyYXRpb24o
KSBjb25zdCB7IHJldHVybiBtX21lbW9yeVByZXNzdXJlSGFuZGxlckNvbmZpZ3VyYXRpb247IH0K
ICNlbmRpZgogCisgICAgdm9pZCBzZXRUaW1lWm9uZU92ZXJyaWRlKGNvbnN0IFdURjo6U3RyaW5n
JiB0aW1lWm9uZU92ZXJyaWRlKSB7IG1fdGltZVpvbmVPdmVycmlkZSA9IHRpbWVab25lT3ZlcnJp
ZGU7IH0KKyAgICBjb25zdCBXVEY6OlN0cmluZyYgdGltZVpvbmVPdmVycmlkZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdGltZVpvbmVPdmVycmlkZTsgfQorCiBwcml2YXRlOgogICAgIFdURjo6U3RyaW5n
IG1faW5qZWN0ZWRCdW5kbGVQYXRoOwogICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gbV9jdXN0b21D
bGFzc2VzRm9yUGFyYW1ldGVyQ29kZXI7CkBAIC0yMDYsNiArMjA5LDcgQEAgcHJpdmF0ZToKICNp
ZiBIQVZFKEFVRElUX1RPS0VOKQogICAgIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gbV9w
cmVzZW50aW5nQXBwbGljYXRpb25Qcm9jZXNzVG9rZW47CiAjZW5kaWYKKyAgICBXVEY6OlN0cmlu
ZyBtX3RpbWVab25lT3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24uaAppbmRleCA3ODQ5ODNjMTAzYjI5Y2EzYzc3NGM2MjA0OTI2NTk0
ZWJjOGRmZWU0Li5hNGI2ZDc1N2UwNjYzMzRhZjk4ZGVjMjE4YWM1MjI2MWI5ZDVjY2Q4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCkBAIC0yNCw2ICsyNCw3IEBACiAgKi8KIAogI2lt
cG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tCYXNlLmg+
CiAjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CiAKIE5TX0FTU1VNRV9OT05OVUxMX0JF
R0lOCkBAIC03Nyw2ICs3OCw4IEBAIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvcygxMC4xMCksIGlv
cyg4LjApKQogCiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBjb25maWd1cmVKU0NGb3JUZXN0
aW5nIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTUuNCksIGlvcygxMy40KSk7CiAKK0Bwcm9w
ZXJ0eSAobm9uYXRvbWljLCBudWxsYWJsZSwgY29weSkgTlNTdHJpbmcgKnRpbWVab25lT3ZlcnJp
ZGUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsK
KwogQGVuZAogCiBOU19BU1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLm1tCmluZGV4IDkyYjUwOWFkNDgyZjRkM2I1YTY5YTAwYjBmZDIzYzRkMGFhYjE2YWUuLmNi
NzQ0NWI3ZmU4MTRmZWZmNTBhMTRiOGRkMjVmNWEzMmY3MGExN2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24u
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29s
Q29uZmlndXJhdGlvbi5tbQpAQCAtNDAzLDYgKzQwMywxNiBAQAogICAgIF9wcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24tPnNldFNob3VsZENvbmZpZ3VyZUpTQ0ZvclRlc3RpbmcodmFsdWUpOwogfQog
CistIChOU1N0cmluZyAqKXRpbWVab25lT3ZlcnJpZGUKK3sKKyAgICByZXR1cm4gX3Byb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbi0+dGltZVpvbmVPdmVycmlkZSgpOworfQorCistICh2b2lkKXNldFRp
bWVab25lT3ZlcnJpZGU6KE5TU3RyaW5nICopdGltZVpvbmUKK3sKKyAgICBfcHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uLT5zZXRUaW1lWm9uZU92ZXJyaWRlKHRpbWVab25lKTsKK30KKwogI3ByYWdt
YSBtYXJrIFdLT2JqZWN0IHByb3RvY29sIGltcGxlbWVudGF0aW9uCiAKIC0gKEFQSTo6T2JqZWN0
JilfYXBpT2JqZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRXZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFdlYkNvbnRleHQuY3BwCmluZGV4IDliNmI1NDFkZjQ1YzkyNWQyMjBmNzI4ODQ0NmMz
N2ZjZjRkNzA4YmEuLjc4ZDM4MjkwZjJiZjNjMmM5OWZjNTRlMjI4NWQwMzYyZmU2ODIzY2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNv
bnRleHQuY3BwCkBAIC02NSw2ICs2NSw3IEBACiAjaW5jbHVkZSA8bGliaW50bC5oPgogI2luY2x1
ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxwYWwvSHlzdGVyZXNpc0FjdGl2aXR5Lmg+CisjaW5jbHVk
ZSA8d3RmL0RhdGVNYXRoLmg+CiAjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC0xMjcsNiArMTI4
LDcgQEAgZW51bSB7CiAjZW5kaWYKICNlbmRpZgogICAgIFBST1BfTUVNT1JZX1BSRVNTVVJFX1NF
VFRJTkdTLAorICAgIFBST1BfVElNRV9aT05FX09WRVJSSURFLAogICAgIE5fUFJPUEVSVElFUywK
IH07CiAKQEAgLTI0NSw2ICsyNDcsOCBAQCBzdHJ1Y3QgX1dlYktpdFdlYkNvbnRleHRQcml2YXRl
IHsKICAgICBQQUw6Okh5c3RlcmVzaXNBY3Rpdml0eSBkbnNQcmVmZXRjaEh5c3RlcmVyaXM7CiAK
ICAgICBXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzKiBtZW1vcnlQcmVzc3VyZVNldHRpbmdz
OworCisgICAgU3RyaW5nIHRpbWVab25lT3ZlcnJpZGU7CiB9OwogCiBzdGF0aWMgZ3VpbnQgc2ln
bmFsc1tMQVNUX1NJR05BTF0gPSB7IDAsIH07CkBAIC0zNTAsNiArMzU0LDkgQEAgc3RhdGljIHZv
aWQgd2Via2l0V2ViQ29udGV4dEdldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJv
cElELCBHVmFsdWUqIHYKICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICNlbmRpZgorICAgIGNhc2Ug
UFJPUF9USU1FX1pPTkVfT1ZFUlJJREU6CisgICAgICAgIGdfdmFsdWVfc2V0X3N0cmluZyh2YWx1
ZSwgd2Via2l0X3dlYl9jb250ZXh0X2dldF90aW1lX3pvbmVfb3ZlcnJpZGUoY29udGV4dCkpOwor
ICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFM
SURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wSUQsIHBhcmFtU3BlYyk7CiAgICAgfQpAQCAtMzg1
LDYgKzM5MiwxMSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJDb250ZXh0U2V0UHJvcGVydHkoR09i
amVjdCogb2JqZWN0LCBndWludCBwcm9wSUQsIGNvbnN0IEdWYQogICAgICAgICBjb250ZXh0LT5w
cml2LT5tZW1vcnlQcmVzc3VyZVNldHRpbmdzID0gc2V0dGluZ3MgPyB3ZWJraXRfbWVtb3J5X3By
ZXNzdXJlX3NldHRpbmdzX2NvcHkoc3RhdGljX2Nhc3Q8V2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0
aW5ncyo+KHNldHRpbmdzKSkgOiBudWxscHRyOwogICAgICAgICBicmVhazsKICAgICB9CisgICAg
Y2FzZSBQUk9QX1RJTUVfWk9ORV9PVkVSUklERTogeworICAgICAgICBpZiAoY29uc3QgYXV0byog
b3ZlcnJpZGUgPSBnX3ZhbHVlX2dldF9zdHJpbmcodmFsdWUpKQorICAgICAgICAgICAgd2Via2l0
X3dlYl9jb250ZXh0X3NldF90aW1lX3pvbmVfb3ZlcnJpZGUoY29udGV4dCwgb3ZlcnJpZGUpOwor
ICAgICAgICBicmVhazsKKyAgICB9CiAgICAgZGVmYXVsdDoKICAgICAgICAgR19PQkpFQ1RfV0FS
Tl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElELCBwYXJhbVNwZWMpOwogICAgIH0K
QEAgLTQxMyw2ICs0MjUsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJDb250ZXh0Q29uc3RydWN0
ZWQoR09iamVjdCogb2JqZWN0KQogICAgICAgICAvLyBPbmNlIHRoZSBzZXR0aW5ncyBoYXZlIGJl
ZW4gcGFzc2VkIHRvIHRoZSBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24sIHdlIGRvbid0IG5lZWQg
dGhlbSBhbnltb3JlIHNvIHdlIGNhbiBmcmVlIHRoZW0uCiAgICAgICAgIGdfY2xlYXJfcG9pbnRl
cigmcHJpdi0+bWVtb3J5UHJlc3N1cmVTZXR0aW5ncywgd2Via2l0X21lbW9yeV9wcmVzc3VyZV9z
ZXR0aW5nc19mcmVlKTsKICAgICB9CisgICAgY29uZmlndXJhdGlvbi5zZXRUaW1lWm9uZU92ZXJy
aWRlKHByaXYtPnRpbWVab25lT3ZlcnJpZGUpOwogCiAgICAgaWYgKCFwcml2LT53ZWJzaXRlRGF0
YU1hbmFnZXIpCiAgICAgICAgIHByaXYtPndlYnNpdGVEYXRhTWFuYWdlciA9IGFkb3B0R1JlZih3
ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfbmV3KCJsb2NhbC1zdG9yYWdlLWRpcmVjdG9yeSIs
IHByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeS5kYXRhKCksIG51bGxwdHIpKTsKQEAgLTU3Miw2
ICs1ODUsMjggQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X2NsYXNzX2luaXQoV2Vi
S2l0V2ViQ29udGV4dENsYXNzKiB3ZWJDb250ZXh0Q2xhc3MKICAgICAgICAgICAgIFdFQktJVF9U
WVBFX01FTU9SWV9QUkVTU1VSRV9TRVRUSU5HUywKICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdQ
YXJhbUZsYWdzPihXRUJLSVRfUEFSQU1fV1JJVEFCTEUgfCBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZ
KSk7CiAKKyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJDb250ZXh0OnRpbWUtem9uZS1vdmVycmlk
ZToKKyAgICAgKgorICAgICAqIFRoZSB0aW1lem9uZSBvdmVycmlkZSBmb3IgdGhpcyB3ZWIgY29u
dGV4dC4gU2V0dGluZyB0aGlzIHByb3BlcnR5IHByb3ZpZGVzIGEgYmV0dGVyCisgICAgICogYWx0
ZXJuYXRpdmUgdG8gY29uZmlndXJlIHRoZSB0aW1lem9uZSBpbmZvcm1hdGlvbiBmb3IgYWxsIHdl
YnZpZXdzIG1hbmFnZWQgYnkgdGhlIFdlYkNvbnRleHQuCisgICAgICogVGhlIG90aGVyLCBsZXNz
IG9wdGltYWwsIGFwcHJvYWNoIGlzIHRvIGdsb2JhbGx5IHNldCB0aGUgVFogZW52aXJvbm1lbnQg
dmFyaWFibGUgaW4gdGhlCisgICAgICogcHJvY2VzcyBiZWZvcmUgY3JlYXRpbmcgdGhlIGNvbnRl
eHQuIEhvd2V2ZXIgdGhpcyBhcHByb2FjaCBtaWdodCBub3QgYmUgdmVyeSBjb252ZW5pZW50IGFu
ZAorICAgICAqIGNhbiBoYXZlIHNpZGUtZWZmZWN0cyBpbiB5b3VyIGFwcGxpY2F0aW9uLgorICAg
ICAqCisgICAgICogVGhlIGV4cGVjdGVkIHZhbHVlcyBmb3IgdGhpcyBwcm9wZXJ0eSBhcmUgZGVm
aW5lZCBpbiB0aGUgSUFOQSB0aW1lem9uZSBkYXRhYmFzZS4gU2VlIHRoaXMKKyAgICAgKiB3aWtp
cGVkaWEgcGFnZSBmb3IgaW5zdGFuY2UsIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xp
c3Rfb2ZfdHpfZGF0YWJhc2VfdGltZV96b25lcy4KKyAgICAgKgorICAgICAqIFNpbmNlOiAyLjM4
CisgICAgICovCisgICAgc09ialByb3BlcnRpZXNbUFJPUF9USU1FX1pPTkVfT1ZFUlJJREVdID0K
KyAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygKKyAgICAgICAgICAgICJ0aW1lLXpvbmUtb3Zl
cnJpZGUiLAorICAgICAgICAgICAgXygiVGltZSBab25lIE92ZXJyaWRlIiksCisgICAgICAgICAg
ICBfKCJUaGUgdGltZSB6b25lIHRvIHVzZSBpbnN0ZWFkIG9mIHRoZSBzeXN0ZW0gb25lIiksCisg
ICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+
KFdFQktJVF9QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZKSk7CisKICAg
ICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnRpZXMoZ09iamVjdENsYXNzLCBOX1BST1BF
UlRJRVMsIHNPYmpQcm9wZXJ0aWVzKTsKIAogICAgIC8qKgpAQCAtMTgzNSw2ICsxODcwLDM5IEBA
IGdib29sZWFuIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfdXNlX3N5c3RlbV9hcHBlYXJhbmNlX2Zv
cl9zY3JvbGxiYXJzKFdlYktpdFdlYkNvCiB9CiAjZW5kaWYKIAorLyoqCisgKiB3ZWJraXRfd2Vi
X2NvbnRleHRfc2V0X3RpbWVfem9uZV9vdmVycmlkZToKKyAqIEBjb250ZXh0OiBhICNXZWJLaXRX
ZWJDb250ZXh0CisgKiBAdGltZV96b25lX292ZXJyaWRlOiB2YWx1ZSB0byBzZXQKKyAqCisgKiBT
ZXQgdGhlICNXZWJLaXRXZWJDb250ZXh0OnRpbWUtem9uZS1vdmVycmlkZSBwcm9wZXJ0eS4gUmVm
ZXIgdG8gdGhlIElBTkEgZGF0YWJhc2UgZm9yIHZhbGlkCisgKiBzcGVjaWZpZXJzLCBodHRwczov
L2VuLndpa2lwZWRpYS5vcmcvd2lraS9MaXN0X29mX3R6X2RhdGFiYXNlX3RpbWVfem9uZXMKKyAq
CisgKiBTaW5jZTogMi4zOAorICovCit2b2lkIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfdGltZV96
b25lX292ZXJyaWRlKFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IGdjaGFyKiB0aW1l
Wm9uZU92ZXJyaWRlKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9DT05U
RVhUKGNvbnRleHQpKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKGlzVGltZVpvbmVWYWxpZCh0aW1l
Wm9uZU92ZXJyaWRlKSk7CisKKyAgICBjb250ZXh0LT5wcml2LT50aW1lWm9uZU92ZXJyaWRlID0g
U3RyaW5nOjpmcm9tVVRGOCh0aW1lWm9uZU92ZXJyaWRlKTsKK30KKworLyoqCisgKiB3ZWJraXRf
d2ViX2NvbnRleHRfZ2V0X3RpbWVfem9uZV9vdmVycmlkZToKKyAqIEBjb250ZXh0OiBhICNXZWJL
aXRXZWJDb250ZXh0CisgKgorICogR2V0IHRoZSAjV2ViS2l0V2ViQ29udGV4dDp0aW1lLXpvbmUt
b3ZlcnJpZGUgcHJvcGVydHkuCisgKgorICogU2luY2U6IDIuMzgKKyAqLworY29uc3QgZ2NoYXIq
IHdlYmtpdF93ZWJfY29udGV4dF9nZXRfdGltZV96b25lX292ZXJyaWRlKFdlYktpdFdlYkNvbnRl
eHQqIGNvbnRleHQpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9D
T05URVhUKGNvbnRleHQpLCBudWxscHRyKTsKKworICAgIHJldHVybiBjb250ZXh0LT5wcml2LT50
aW1lWm9uZU92ZXJyaWRlLnV0ZjgoKS5kYXRhKCk7Cit9CisKIHZvaWQgd2Via2l0V2ViQ29udGV4
dEluaXRpYWxpemVOb3RpZmljYXRpb25QZXJtaXNzaW9ucyhXZWJLaXRXZWJDb250ZXh0KiBjb250
ZXh0KQogewogICAgIGdfc2lnbmFsX2VtaXQoY29udGV4dCwgc2lnbmFsc1tJTklUSUFMSVpFX05P
VElGSUNBVElPTl9QRVJNSVNTSU9OU10sIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuaAppbmRleCBiZGQ5MTI1NWNjZDgyZWE1Nzc0
MjIyNzgzYjU5NDc2YTMxYmNmYjJlLi45N2E0ZDU4ZjI2Nzc3NDNhYzhhOWI5NmRkNGUwYmEzZDhh
MDRkMmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYkNvbnRleHQuaApAQCAtMzAyLDYgKzMwMiwxMyBAQCB3ZWJraXRfd2ViX2NvbnRleHRfc2V0
X3VzZV9zeXN0ZW1fYXBwZWFyYW5jZV9mb3Jfc2Nyb2xsYmFycyAoV2ViS2l0V2ViQ29udGV4dAog
V0VCS0lUX0FQSSBnYm9vbGVhbgogd2Via2l0X3dlYl9jb250ZXh0X2dldF91c2Vfc3lzdGVtX2Fw
cGVhcmFuY2VfZm9yX3Njcm9sbGJhcnMgKFdlYktpdFdlYkNvbnRleHQgICAgICAqY29udGV4dCk7
CiAKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl9jb250ZXh0X3NldF90aW1lX3pvbmVfb3Zl
cnJpZGUgICAgICAgICAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAgICAgICAqY29udGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2NoYXIgICAgICAgICAgICAgICAgICAgKnRpbWVfem9uZV9vdmVycmlkZSk7CisKK1dFQktJ
VF9BUEkgY29uc3QgZ2NoYXIqCit3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3RpbWVfem9uZV9vdmVy
cmlkZSAgICAgICAgICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICAgICAgICpjb250ZXh0KTsK
KwogR19FTkRfREVDTFMKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvd3BlL1dlYktpdFdlYkNvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS93cGUvV2ViS2l0V2ViQ29udGV4dC5oCmluZGV4IDY4NDFjMDc5YWE0YjYxZDg5YzA4YjFh
OTY5ZjkxMzdkOWI4YTA0MzQuLmVhNTVmODc2YzMxZWJkMGJlYmViNGJiZmRjYWNjOTM3YTljNzk3
YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2Vi
Q29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2Vi
Q29udGV4dC5oCkBAIC0yOTEsNiArMjkxLDEzIEBAIFdFQktJVF9BUEkgdm9pZAogd2Via2l0X3dl
Yl9jb250ZXh0X3NlbmRfbWVzc2FnZV90b19hbGxfZXh0ZW5zaW9ucyAgIChXZWJLaXRXZWJDb250
ZXh0ICAgICAgICAgICAgICAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0VXNlck1lc3NhZ2UgICAgICAgICAgICAgKm1l
c3NhZ2UpOwogCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfY29udGV4dF9zZXRfdGltZV96
b25lX292ZXJyaWRlICAgICAgICAgICAoV2ViS2l0V2ViQ29udGV4dCAgICAgICAgICAgICAgKmNv
bnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGdjaGFyICAgICAgICAgICAgICAgICAgICp0aW1lX3pvbmVfb3ZlcnJpZGUpOwor
CitXRUJLSVRfQVBJIGNvbnN0IGdjaGFyKgord2Via2l0X3dlYl9jb250ZXh0X2dldF90aW1lX3pv
bmVfb3ZlcnJpZGUgICAgICAgICAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAgICAgICAqY29u
dGV4dCk7CisKIEdfRU5EX0RFQ0xTCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IGJlMzY4OWZhNWEwZWFmNmQ0NTVkMjI1ZmY4MzQyYjkw
ODhhZDZjMGYuLmFmMzcxMmZmYmM5NWNhMzc5MjMyZmZhZDU2OTM5MDk3OTM4MzAzOGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTg3NCw2ICs4NzQs
OCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjppbml0aWFsaXplTmV3V2ViUHJvY2VzcyhXZWJQcm9j
ZXNzUHJveHkmIHByb2Nlc3MsIFdlYnNpdGVEYQogCiAgICAgcGFyYW1ldGVycy5wcmVzZW50aW5n
QXBwbGljYXRpb25QSUQgPSBtX2NvbmZpZ3VyYXRpb24tPnByZXNlbnRpbmdBcHBsaWNhdGlvblBJ
RCgpOwogCisgICAgcGFyYW1ldGVycy50aW1lWm9uZU92ZXJyaWRlID0gbV9jb25maWd1cmF0aW9u
LT50aW1lWm9uZU92ZXJyaWRlKCk7CisKICAgICAvLyBBZGQgYW55IHBsYXRmb3JtIHNwZWNpZmlj
IHBhcmFtZXRlcnMKICAgICBwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKHByb2Nlc3MsIHBh
cmFtZXRlcnMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXgg
ZDc3ZTAzZGIxMjdhNWFhYWQ0MTA5MTZhMmQ1MTY4YTRiMTI0YTczMC4uYjRhOTBkNjk0MjYwZTll
ZDJjNThkMzBlOGJhY2EyYzk0MjA0YjRhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcApAQCAtMTQyLDYgKzE0Miw3IEBACiAjaW5jbHVkZSA8cGFsL0xvZ2dpbmcuaD4K
ICNpbmNsdWRlIDx3dGYvQWxnb3JpdGhtcy5oPgogI2luY2x1ZGUgPHd0Zi9DYWxsYmFja0FnZ3Jl
Z2F0b3IuaD4KKyNpbmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4KICNpbmNsdWRlIDx3dGYvTGFuZ3Vh
Z2UuaD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogI2luY2x1ZGUgPHd0Zi9S
dW5Mb29wLmg+CkBAIC00OTgsNiArNDk5LDkgQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXpl
V2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIAog
ICAgIHNldENhY2hlTW9kZWwocGFyYW1ldGVycy5jYWNoZU1vZGVsKTsKIAorICAgIGlmICghcGFy
YW1ldGVycy50aW1lWm9uZU92ZXJyaWRlLmlzRW1wdHkoKSkKKyAgICAgICAgc2V0VGltZVpvbmVP
dmVycmlkZShwYXJhbWV0ZXJzLnRpbWVab25lT3ZlcnJpZGUpOworCiAgICAgaWYgKCFwYXJhbWV0
ZXJzLm92ZXJyaWRlTGFuZ3VhZ2VzLmlzRW1wdHkoKSkgewogICAgICAgICBMT0dfV0lUSF9TVFJF
QU0oTGFuZ3VhZ2UsIHN0cmVhbSA8PCAiV2ViIFByb2Nlc3MgaW5pdGlhbGl6YXRpb24gaXMgc2V0
dGluZyBvdmVycmlkZUxhbmd1YWdlczogIiA8PCBwYXJhbWV0ZXJzLm92ZXJyaWRlTGFuZ3VhZ2Vz
KTsKICAgICAgICAgb3ZlcnJpZGVVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKHBhcmFtZXRlcnMub3Zl
cnJpZGVMYW5ndWFnZXMpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IGE0ZjE2N2IwNTg2NDk2YmY0ZTA4OTNiOTIzMGY4NTMwZWZiMjk4YmEuLjE0
NDgwOTMwZjU4MDY2N2M5ODUxZDk0N2Y4Y2I1MGEzMDg1ODE3MGUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAyMi0w
NC0xMyAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+IGFuZCBZdXJ5IFNl
bWlraGF0c2t5IDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1dLMl0gQWRkIEFQSSB0
byBhbGxvdyBlbWJlZGRlciB0byBzZXQgYSB0aW1lem9uZSBvdmVycmlkZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzODg0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEFQSSB0ZXN0cyBmb3IgdGhl
IHRpbWV6b25lIGNvbmZpZ3VyYXRpb24gQVBJLiBUaGUgR1RLIGFuZCBXUEUgTWluaUJyb3dzZXJz
IGFsc28gZ2FpbmVkCisgICAgICAgIG5ldyBydW50aW1lIG9wdGlvbnMgYWxsb3dpbmcgdG8gZXhl
cmNpc2UgdGhpcyBuZXcgQVBJLgorCisgICAgICAgICogTWluaUJyb3dzZXIvZ3RrL21haW4uYzoK
KyAgICAgICAgKGFjdGl2YXRlKToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci93cGUvbWFpbi5jcHA6
CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1RpbWVab25lT3ZlcnJpZGUubW06IEFkZGVkLgorICAgICAgICAoVGltZVpv
bmVPdmVycmlkZVRlc3Q6OnJ1blNjcmlwdEFuZEV4ZWN1dGVDYWxsYmFjayk6CisgICAgICAgIChU
RVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2Vi
S2l0V2ViQ29udGV4dC5jcHA6CisgICAgICAgICh0ZXN0V2ViQ29udGV4dFRpbWVab25lKToKKyAg
ICAgICAgKHRlc3RXZWJWaWV3VGltZVpvbmVPdmVycmlkZSk6CisgICAgICAgIChiZWZvcmVBbGwp
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1Rlc3RNYWluLmNwcDoK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9UZXN0TWFpbi5oOgorICAg
ICAgICAoVGVzdDo6VGVzdCk6CisgICAgICAgICogZmxhdHBhay9mbGF0cGFrdXRpbHMucHk6Cisg
ICAgICAgIChXZWJraXRGbGF0cGFrLnJ1bl9pbl9zYW5kYm94KToKKwogMjAyMi0wNC0xNCAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBVbmRvIG9wdGlv
biBhZnRlciBpbnZva2luZyAiTWFya3VwIEltYWdlIiBzYXlzICJVbmRvIFBhc3RlIgpkaWZmIC0t
Z2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0
ay9tYWluLmMKaW5kZXggOWU3ODYzYjYxYjNlOWRiNzZlMDRlMTRmNDUxMTY2ODRkYWU0NGUzNy4u
ODE3ZThmZWM3ZTE4YjNmYmRlODVhYTUzNDI2M2RlZjYwNDU4YjFhOCAxMDA2NDQKLS0tIGEvVG9v
bHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYworKysgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFp
bi5jCkBAIC01Miw2ICs1Miw3IEBAIHN0YXRpYyBjb25zdCBjaGFyICpjb29raWVzRmlsZTsKIHN0
YXRpYyBjb25zdCBjaGFyICpjb29raWVzUG9saWN5Owogc3RhdGljIGNvbnN0IGNoYXIgKnByb3h5
Owogc3RhdGljIGdib29sZWFuIGRhcmtNb2RlOworc3RhdGljIGNoYXIqIHRpbWVab25lOwogc3Rh
dGljIGdib29sZWFuIGVuYWJsZUlUUDsKIHN0YXRpYyBnYm9vbGVhbiBlbmFibGVTYW5kYm94Owog
c3RhdGljIGdib29sZWFuIGV4aXRBZnRlckxvYWQ7CkBAIC0xNDksNiArMTUwLDcgQEAgc3RhdGlj
IGNvbnN0IEdPcHRpb25FbnRyeSBjb21tYW5kTGluZU9wdGlvbnNbXSA9CiAgICAgeyAiZW5hYmxl
LWl0cCIsIDAsIDAsIEdfT1BUSU9OX0FSR19OT05FLCAmZW5hYmxlSVRQLCAiRW5hYmxlIEludGVs
bGlnZW50IFRyYWNraW5nIFByZXZlbnRpb24gKElUUCkiLCBOVUxMIH0sCiAgICAgeyAiZW5hYmxl
LXNhbmRib3giLCAwLCAwLCBHX09QVElPTl9BUkdfTk9ORSwgJmVuYWJsZVNhbmRib3gsICJFbmFi
bGUgd2ViIHByb2Nlc3Mgc2FuZGJveCBzdXBwb3J0IiwgTlVMTCB9LAogICAgIHsgImV4aXQtYWZ0
ZXItbG9hZCIsIDAsIDAsIEdfT1BUSU9OX0FSR19OT05FLCAmZXhpdEFmdGVyTG9hZCwgIlF1aXQg
dGhlIGJyb3dzZXIgYWZ0ZXIgdGhlIGxvYWQgZmluaXNoZXMiLCBOVUxMIH0sCisgICAgeyAidGlt
ZS16b25lIiwgJ3QnLCAwLCBHX09QVElPTl9BUkdfU1RSSU5HLCAmdGltZVpvbmUsICJTZXQgdGlt
ZSB6b25lIiwgIlRJTUVaT05FIiB9LAogICAgIHsgInZlcnNpb24iLCAndicsIDAsIEdfT1BUSU9O
X0FSR19OT05FLCAmcHJpbnRWZXJzaW9uLCAiUHJpbnQgdGhlIFdlYktpdEdUSyB2ZXJzaW9uIiwg
TlVMTCB9LAogICAgIHsgR19PUFRJT05fUkVNQUlOSU5HLCAwLCAwLCBHX09QVElPTl9BUkdfRklM
RU5BTUVfQVJSQVksICZ1cmlBcmd1bWVudHMsIDAsICJbVVJM4oCmXSIgfSwKICAgICB7IDAsIDAs
IDAsIDAsIDAsIDAsIDAgfQpAQCAtNjc0LDYgKzY3Niw3IEBAIHN0YXRpYyB2b2lkIGFjdGl2YXRl
KEdBcHBsaWNhdGlvbiAqYXBwbGljYXRpb24sIFdlYktpdFNldHRpbmdzICp3ZWJraXRTZXR0aW5n
cykKICNpZiAhR1RLX0NIRUNLX1ZFUlNJT04oMywgOTgsIDApCiAgICAgICAgICJ1c2Utc3lzdGVt
LWFwcGVhcmFuY2UtZm9yLXNjcm9sbGJhcnMiLCBGQUxTRSwKICNlbmRpZgorICAgICAgICAidGlt
ZS16b25lLW92ZXJyaWRlIiwgdGltZVpvbmUsCiAgICAgICAgIE5VTEwpOwogICAgIGdfb2JqZWN0
X3VucmVmKG1hbmFnZXIpOwogCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci93cGUvbWFp
bi5jcHAgYi9Ub29scy9NaW5pQnJvd3Nlci93cGUvbWFpbi5jcHAKaW5kZXggNDU4NGQ5NTczYmE3
ZDExZDIyNDlmMTc1NTJlZTVjOTQ3YWY1MzlkMi4uY2QxZDM2NDdjOGJmYWE2Y2M5NjQyY2U2MzA2
MGE1YWE2YzU5NDc5MSAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvd3BlL21haW4uY3Bw
CisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3dwZS9tYWluLmNwcApAQCAtNDYsNiArNDYsNyBAQCBz
dGF0aWMgY29uc3QgY2hhciogY29va2llc0ZpbGU7CiBzdGF0aWMgY29uc3QgY2hhciogY29va2ll
c1BvbGljeTsKIHN0YXRpYyBjb25zdCBjaGFyKiBwcm94eTsKIGNvbnN0IGNoYXIqIGJnQ29sb3I7
CitzdGF0aWMgY2hhciogdGltZVpvbmU7CiBzdGF0aWMgZ2Jvb2xlYW4gZW5hYmxlSVRQOwogc3Rh
dGljIGdib29sZWFuIHByaW50VmVyc2lvbjsKIHN0YXRpYyBHSGFzaFRhYmxlKiBvcGVuVmlld3M7
CkBAIC02Myw2ICs2NCw3IEBAIHN0YXRpYyBjb25zdCBHT3B0aW9uRW50cnkgY29tbWFuZExpbmVP
cHRpb25zW10gPQogICAgIHsgImNvbnRlbnQtZmlsdGVyIiwgMCwgMCwgR19PUFRJT05fQVJHX0ZJ
TEVOQU1FLCAmY29udGVudEZpbHRlciwgIkpTT04gd2l0aCBjb250ZW50IGZpbHRlcmluZyBydWxl
cyIsICJGSUxFIiB9LAogICAgIHsgImJnLWNvbG9yIiwgMCwgMCwgR19PUFRJT05fQVJHX1NUUklO
RywgJmJnQ29sb3IsICJXaW5kb3cgYmFja2dyb3VuZCBjb2xvci4gRGVmYXVsdDogd2hpdGUiLCAi
Q09MT1IiIH0sCiAgICAgeyAiZW5hYmxlLWl0cCIsIDAsIDAsIEdfT1BUSU9OX0FSR19OT05FLCAm
ZW5hYmxlSVRQLCAiRW5hYmxlIEludGVsbGlnZW50IFRyYWNraW5nIFByZXZlbnRpb24gKElUUCki
LCBudWxscHRyIH0sCisgICAgeyAidGltZS16b25lIiwgJ3QnLCAwLCBHX09QVElPTl9BUkdfU1RS
SU5HLCAmdGltZVpvbmUsICJTZXQgdGltZSB6b25lIiwgIlRJTUVaT05FIiB9LAogICAgIHsgInZl
cnNpb24iLCAndicsIDAsIEdfT1BUSU9OX0FSR19OT05FLCAmcHJpbnRWZXJzaW9uLCAiUHJpbnQg
dGhlIFdQRSB2ZXJzaW9uIiwgbnVsbHB0ciB9LAogICAgIHsgR19PUFRJT05fUkVNQUlOSU5HLCAw
LCAwLCBHX09QVElPTl9BUkdfRklMRU5BTUVfQVJSQVksICZ1cmlBcmd1bWVudHMsIG51bGxwdHIs
ICJbVVJMXSIgfSwKICAgICB7IG51bGxwdHIsIDAsIDAsIEdfT1BUSU9OX0FSR19OT05FLCBudWxs
cHRyLCBudWxscHRyLCBudWxscHRyIH0KQEAgLTIyOSw3ICsyMzEsNyBAQCBpbnQgbWFpbihpbnQg
YXJnYywgY2hhciAqYXJndltdKQogICAgIGlmIChpZ25vcmVUTFNFcnJvcnMpCiAgICAgICAgIHdl
YmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9zZXRfdGxzX2Vycm9yc19wb2xpY3kobWFuYWdlciwg
V0VCS0lUX1RMU19FUlJPUlNfUE9MSUNZX0lHTk9SRSk7CiAKLSAgICBhdXRvKiB3ZWJDb250ZXh0
ID0gd2Via2l0X3dlYl9jb250ZXh0X25ld193aXRoX3dlYnNpdGVfZGF0YV9tYW5hZ2VyKG1hbmFn
ZXIpOworICAgIGF1dG8qIHdlYkNvbnRleHQgPSBXRUJLSVRfV0VCX0NPTlRFWFQoZ19vYmplY3Rf
bmV3KFdFQktJVF9UWVBFX1dFQl9DT05URVhULCAid2Vic2l0ZS1kYXRhLW1hbmFnZXIiLCBtYW5h
Z2VyLCAidGltZS16b25lLW92ZXJyaWRlIiwgdGltZVpvbmUsIG51bGxwdHIpKTsKICAgICBnX29i
amVjdF91bnJlZihtYW5hZ2VyKTsKIAogICAgIGlmIChjb29raWVzUG9saWN5KSB7CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1NvdXJjZXNDb2NvYS50eHQgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMzZhZDM0NzVhOTAzNGVjZmVlN2Q2ZjVlYjJj
OWQ3NGM4MDZjMmUyZC4uMDE2YzJjNDc2ZDE1ODM1YWU0OTQ0YTJiZjIwNzBjZjAwYzM3MGM4NyAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvU291cmNlc0NvY29hLnR4dApAQCAtMjQwLDYgKzI0MCw3IEBAIFRl
c3RzL1dlYktpdENvY29hL1Rlc3RVUkxTY2hlbWVIYW5kbGVyLm1tCiBUZXN0cy9XZWJLaXRDb2Nv
YS9UZXh0TWFuaXB1bGF0aW9uLm1tCiBUZXN0cy9XZWJLaXRDb2NvYS9UZXh0U2l6ZS5tbQogVGVz
dHMvV2ViS2l0Q29jb2EvVGV4dFdpZHRoLm1tCitUZXN0cy9XZWJLaXRDb2NvYS9UaW1lWm9uZU92
ZXJyaWRlLm1tCiBUZXN0cy9XZWJLaXRDb2NvYS9Ub3BDb250ZW50SW5zZXQubW0KIFRlc3RzL1dl
YktpdENvY29hL1VJRGVsZWdhdGUubW0KIFRlc3RzL1dlYktpdENvY29hL1VwbG9hZERpcmVjdG9y
eS5tbQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2MjEyYzkzMDE2M2QxZjlhZjA1Mzc2YzZk
ZGU5NjU4MzE1YzMxNDQzLi41N2ZhMGQ5ODBlZDY3N2JlMDMyZjIyZTdlZDdhOWE5MTgyZjBjOTli
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzAyNCw2ICszMDI0LDcgQEAKIAkJRUJBNzVD
NDgyNzVFRDdCRTAwRDZEMzFDIC8qIFB1c2hNZXNzYWdlQ3J5cHRvLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFB1c2hNZXNzYWdlQ3J5cHRvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRUM3OUYxNjhCRTQ1NEU1NzlFNDE3QjA1IC8qIE1hcmthYmxlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hcmthYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRUNBNjgwQ0QxRTY4Q0MwOTAwNzMxRDIwIC8qIFN0cmluZ1V0aWxpdGllcy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN0cmluZ1V0aWxpdGll
cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjNDRUY2QjgyODA4RjJEMzAwMUUy
M0E1IC8qIFRpbWVab25lT3ZlcnJpZGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBUaW1lWm9u
ZU92ZXJyaWRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGM0ZDM0VFMjEzNjc4
QjczMDAxMjZBNjUgLyogbGliZ3Rlc3QuYSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IGFyY2hpdmUuYXI7IHBhdGggPSBsaWJndGVzdC5hOyBzb3VyY2VU
cmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlGNDAxMEI3RjI0REEyNEFDMDBBODc2RTIg
LyogTmF2aWdhdGlvblN3aXBlVGVzdHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBOYXZpZ2F0aW9uU3dpcGVUZXN0cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRjQwMTBCODEyNERBMjY3RjAwQTg3NkUyIC8qIFBvc2VBc0NsYXNzLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gUG9zZUFzQ2xhc3MubW07IHBhdGgg
PSAuLi9UZXN0UnVubmVyU2hhcmVkL2NvY29hL1Bvc2VBc0NsYXNzLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMzY5Miw2ICszNjkzLDcgQEAKIAkJCQk5QjAyRTBENTIzNUZBNDdE
MDA0MDQ0QjIgLyogVGV4dE1hbmlwdWxhdGlvbi5tbSAqLywKIAkJCQk1QzE2RjhGQjIzMEM5NDJC
MDA3NEM0QTggLyogVGV4dFNpemUubW0gKi8sCiAJCQkJQzIyRkEzMkEyMjhGODcwODAwOUQ3OTg4
IC8qIFRleHRXaWR0aC5tbSAqLywKKwkJCQlGM0NFRjZCODI4MDhGMkQzMDAxRTIzQTUgLyogVGlt
ZVpvbmVPdmVycmlkZS5tbSAqLywKIAkJCQk1QzczQTgxQTIzMjMwNTk4MDBERUE4NUEgLyogVExT
RGVwcmVjYXRpb24ubW0gKi8sCiAJCQkJQ0RFMTk1QjMxQ0ZFMEFERTAwNTNEMjU2IC8qIFRvcENv
bnRlbnRJbnNldC5tbSAqLywKIAkJCQk1Q0I0MEI0RDFGNEI5OEJFMDA3REM3QjkgLyogVUlEZWxl
Z2F0ZS5tbSAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvVGltZVpvbmVPdmVycmlkZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvVGltZVpvbmVPdmVycmlkZS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40OTI4NTk0OGM1ZmJiYmJh
ZTJhMDllZDZiMjFiNDljOTAwYjE2ZTk4Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UaW1lWm9uZU92ZXJyaWRlLm1tCkBAIC0wLDAgKzEs
NzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2ltcG9ydCAiY29uZmlnLmgiCisKKyNpZiBQTEFURk9STShDT0NPQSkKKworI2ltcG9ydCAiUGxh
dGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQgPFdl
YktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dL
V2ViVmlld1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24uaD4KKyNpbXBvcnQgPHd0Zi9GdW5jdGlvbi5oPgorI2ltcG9ydCA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CisKK2NsYXNzIFRpbWVab25lT3ZlcnJpZGVUZXN0IDogcHVibGljIHRlc3Rpbmc6
OlRlc3QgeworcHVibGljOgorICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQorICAgIHsKKyAgICAg
ICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
YWxsb2NdIGluaXRdKTsKKyAgICAgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZyA9IGFkb3B0TlMo
W1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICAgICAgW3By
b2Nlc3NQb29sQ29uZmlnIHNldFRpbWVab25lT3ZlcnJpZGU6QCJFdXJvcGUvQmVybGluIl07CisK
KyAgICAgICAgX3dlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDMwMCwgMzAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3Vy
YXRpb24uZ2V0KCkgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlnLmdl
dCgpXSk7CisgICAgfQorCisgICAgdm9pZCBydW5TY3JpcHRBbmRFeGVjdXRlQ2FsbGJhY2soY29u
c3QgU3RyaW5nJiBzY3JpcHQsIEZ1bmN0aW9uPHZvaWQoaWQpPiYmIGNhbGxiYWNrKQorICAgIHsK
KyAgICAgICAgYm9vbCBjb21wbGV0ZSA9IGZhbHNlOworICAgICAgICBbX3dlYlZpZXcgZXZhbHVh
dGVKYXZhU2NyaXB0OnNjcmlwdCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNF
cnJvciAqKSB7CisgICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOworICAgICAgICAgICAgY29t
cGxldGUgPSB0cnVlOworICAgICAgICB9XTsKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZjb21wbGV0ZSk7CisgICAgfQorCitwcml2YXRlOgorICAgIFJldGFpblB0cjxUZXN0V0tX
ZWJWaWV3PiBfd2ViVmlldzsKK307CisKK1RFU1RfRihUaW1lWm9uZU92ZXJyaWRlVGVzdCwgVGlt
ZVpvbmVPdmVycmlkZSkKK3sKKyAgICBydW5TY3JpcHRBbmRFeGVjdXRlQ2FsbGJhY2soImxldCBu
b3cgPSBuZXcgRGF0ZSgpOyBub3cuZ2V0VGltZXpvbmVPZmZzZXQoKSJfcywgW10oaWQgcmVzdWx0
KSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShbcmVzdWx0IHN0cmluZ1ZhbHVlXSwgIi0xMjAi
KTsKKyAgICB9KTsKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYkNvbnRleHQuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCAz
MTIwNzhmN2NhNGFhOTA3OWRiNDY4MzA5NDgwNWVhYmVmOTIzOGZlLi43YjAzNWQ5MjZmNmI4ODMx
ZjBiNWViOTFlNTI4OTIzNjNhMWFmMGYxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYkNvbnRleHQuY3BwCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViQ29udGV4dC5jcHAKQEAg
LTk5MSw2ICs5OTEsMjYgQEAgc3RhdGljIHZvaWQgdGVzdE1lbW9yeVByZXNzdXJlU2V0dGluZ3Mo
TWVtb3J5UHJlc3N1cmVUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGdfYXNzZXJ0X2Nt
cHVpbnQodGVzdC0+bV90ZXJtaW5hdGlvblJlYXNvbiwgPT0sIFdFQktJVF9XRUJfUFJPQ0VTU19F
WENFRURFRF9NRU1PUllfTElNSVQpOwogfQogCitzdGF0aWMgdm9pZCB0ZXN0V2ViQ29udGV4dFRp
bWVab25lT3ZlcnJpZGUoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCit7CisgICAg
R1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOworICAgIFdlYktpdEphdmFzY3JpcHRSZXN1bHQq
IGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNo
ZWQoImxldCBub3cgPSBuZXcgRGF0ZSgpOyBub3cuZ2V0VGltZXpvbmVPZmZzZXQoKSIsICZlcnJv
ci5vdXRQdHIoKSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChqYXZhc2NyaXB0UmVzdWx0KTsKKyAg
ICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7CisgICAgLy8gQnkgZGVmYXVsdCB0aGUg
dGVzdCBoYXJuZXNzIHVzZXMgdGhlIFBhY2lmaWMvTG9zX0FuZ2VsZXMgdGltZXpvbmUgd2hpY2gg
aXMgNyBob3VycyAoNDIwIG1pbnV0ZXMpIGNvbXBhcmVkIHRvIEdNVC4KKyAgICBnX2Fzc2VydF9j
bXBpbnQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb051bWJlcihqYXZhc2NyaXB0UmVz
dWx0KSwgPT0sIDQyMCk7CisKKyAgICAvLyBDcmVhdGUgYSBuZXcgY29udGV4dCBjb25maWd1cmVk
IHdpdGggdGltZSB6b25lIG92ZXJpZGUgc2V0IHRvIEJlcmxpbiB3aGljaCBpcyAxMjAgbWludXRl
cyBhaGVhZCBvZiB0aGUgR01UIG9mZnNldC4KKyAgICBhdXRvIHdlYkNvbnRleHQgPSBhZG9wdEdS
ZWYoV0VCS0lUX1dFQl9DT05URVhUKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfQ09OVEVY
VCwKKyAgICAgICAgInRpbWUtem9uZS1vdmVycmlkZSIsICJFdXJvcGUvQmVybGluIiwgbnVsbHB0
cikpKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3dlYl9jb250ZXh0X2dldF90aW1lX3pv
bmVfb3ZlcnJpZGUod2ViQ29udGV4dC5nZXQoKSksID09LCAiRXVyb3BlL0JlcmxpbiIpOworICAg
IGF1dG8gd2ViVmlldyA9IFRlc3Q6OmFkb3B0VmlldyhUZXN0OjpjcmVhdGVXZWJWaWV3KHdlYkNv
bnRleHQuZ2V0KCkpKTsKKyAgICBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlw
dEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJsZXQgbm93ID0gbmV3IERhdGUoKTsgbm93LmdldFRpbWV6
b25lT2Zmc2V0KCkiLCAmZXJyb3Iub3V0UHRyKCksIHdlYlZpZXcuZ2V0KCkpOworICAgIGdfYXNz
ZXJ0X25vbm51bGwoamF2YXNjcmlwdFJlc3VsdCk7CisgICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJy
b3IuZ2V0KCkpOworICAgIGdfYXNzZXJ0X2NtcGludChXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJl
c3VsdFRvTnVtYmVyKGphdmFzY3JpcHRSZXN1bHQpLCA9PSwgLTEyMCk7Cit9CisKIHZvaWQgYmVm
b3JlQWxsKCkKIHsKICAgICBrU2VydmVyID0gbmV3IFdlYktpdFRlc3RTZXJ2ZXIoKTsKQEAgLTEw
MDgsNiArMTAyOCw3IEBAIHZvaWQgYmVmb3JlQWxsKCkKICAgICBXZWJWaWV3VGVzdDo6YWRkKCJX
ZWJLaXRTZWN1cml0eU1hbmFnZXIiLCAiZmlsZS14aHIiLCB0ZXN0V2ViQ29udGV4dFNlY3VyaXR5
RmlsZVhIUik7CiAgICAgUHJveHlUZXN0OjphZGQoIldlYktpdFdlYkNvbnRleHQiLCAicHJveHki
LCB0ZXN0V2ViQ29udGV4dFByb3h5U2V0dGluZ3MpOwogICAgIE1lbW9yeVByZXNzdXJlVGVzdDo6
YWRkKCJXZWJLaXRXZWJDb250ZXh0IiwgIm1lbW9yeS1wcmVzc3VyZSIsIHRlc3RNZW1vcnlQcmVz
c3VyZVNldHRpbmdzKTsKKyAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJDb250ZXh0Iiwg
InRpbWV6b25lIiwgdGVzdFdlYkNvbnRleHRUaW1lWm9uZU92ZXJyaWRlKTsKIH0KIAogdm9pZCBh
ZnRlckFsbCgpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xp
Yi9UZXN0TWFpbi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9UZXN0
TWFpbi5jcHAKaW5kZXggZTg1YjNjMWVmZGU3MjEzMzYyZGU2OTdkNzMyYzUzNmQ1ZDdmZmUxOS4u
Mzk3NDE3NDZhNzU2M2M5Y2UyODRkMGU5ZjJhMjliMDVlM2VkYzUwNyAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvVGVzdE1haW4uY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1Rlc3RNYWluLmNwcApAQCAtMTMyLDYgKzEz
Miw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKICAgICBnX3NldGVudigiR1NF
VFRJTkdTX0JBQ0tFTkQiLCAibWVtb3J5IiwgVFJVRSk7CiAgICAgLy8gR2V0IHJpZCBvZiBydW50
aW1lIHdhcm5pbmdzIGFib3V0IGRlcHJlY2F0ZWQgcHJvcGVydGllcyBhbmQgc2lnbmFscywgc2lu
Y2UgdGhleSBicmVhayB0aGUgdGVzdHMuCiAgICAgZ19zZXRlbnYoIkdfRU5BQkxFX0RJQUdOT1NU
SUMiLCAiMCIsIFRSVUUpOworICAgIGdfc2V0ZW52KCJUWiIsICJBbWVyaWNhL0xvc19BbmdlbGVz
IiwgVFJVRSk7CiAgICAgZ190ZXN0X2J1Z19iYXNlKCJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy8i
KTsKIAogICAgIHJlZ2lzdGVyR1Jlc291cmNlKCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5jcHAKaW5kZXggOTBmNWQzNTFjMTdkZGU4
YTBhMWZmOGMyYTI0ZjlkYmEyYWI0ZjM3OC4uYTIxYTAwNDJiNGM3NTU5YmM3MjVjMWZhYzA2NThl
NDAzYzE5MWNhZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdM
aWIvV2ViVmlld1Rlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRH
TGliL1dlYlZpZXdUZXN0LmNwcApAQCAtMzA2LDkgKzMwNiw5IEBAIGNvbnN0IGNoYXIqIFdlYlZp
ZXdUZXN0OjptYWluUmVzb3VyY2VEYXRhKHNpemVfdCYgbWFpblJlc291cmNlRGF0YVNpemUpCiAg
ICAgcmV0dXJuIG1fcmVzb3VyY2VEYXRhLmdldCgpOwogfQogCi1zdGF0aWMgdm9pZCBydW5KYXZh
U2NyaXB0UmVhZHlDYWxsYmFjayhHT2JqZWN0KiwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIFdlYlZp
ZXdUZXN0KiB0ZXN0KQorc3RhdGljIHZvaWQgcnVuSmF2YVNjcmlwdFJlYWR5Q2FsbGJhY2soR09i
amVjdCogb2JqZWN0LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgV2ViVmlld1Rlc3QqIHRlc3QpCiB7
Ci0gICAgdGVzdC0+bV9qYXZhc2NyaXB0UmVzdWx0ID0gd2Via2l0X3dlYl92aWV3X3J1bl9qYXZh
c2NyaXB0X2ZpbmlzaCh0ZXN0LT5tX3dlYlZpZXcsIHJlc3VsdCwgdGVzdC0+bV9qYXZhc2NyaXB0
RXJyb3IpOworICAgIHRlc3QtPm1famF2YXNjcmlwdFJlc3VsdCA9IHdlYmtpdF93ZWJfdmlld19y
dW5famF2YXNjcmlwdF9maW5pc2goV0VCS0lUX1dFQl9WSUVXKG9iamVjdCksIHJlc3VsdCwgdGVz
dC0+bV9qYXZhc2NyaXB0RXJyb3IpOwogICAgIGdfbWFpbl9sb29wX3F1aXQodGVzdC0+bV9tYWlu
TG9vcCk7CiB9CiAKQEAgLTMyNCwxMyArMzI0LDE1IEBAIHN0YXRpYyB2b2lkIHJ1bkphdmFTY3Jp
cHRJbldvcmxkUmVhZHlDYWxsYmFjayhHT2JqZWN0KiwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIFdl
CiAgICAgZ19tYWluX2xvb3BfcXVpdCh0ZXN0LT5tX21haW5Mb29wKTsKIH0KIAotV2ViS2l0SmF2
YXNjcmlwdFJlc3VsdCogV2ViVmlld1Rlc3Q6OnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5p
c2hlZChjb25zdCBjaGFyKiBqYXZhc2NyaXB0LCBHRXJyb3IqKiBlcnJvcikKK1dlYktpdEphdmFz
Y3JpcHRSZXN1bHQqIFdlYlZpZXdUZXN0OjpydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNo
ZWQoY29uc3QgY2hhciogamF2YXNjcmlwdCwgR0Vycm9yKiogZXJyb3IsIFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcpCiB7CiAgICAgaWYgKG1famF2YXNjcmlwdFJlc3VsdCkKICAgICAgICAgd2Via2l0
X2phdmFzY3JpcHRfcmVzdWx0X3VucmVmKG1famF2YXNjcmlwdFJlc3VsdCk7CiAgICAgbV9qYXZh
c2NyaXB0UmVzdWx0ID0gMDsKICAgICBtX2phdmFzY3JpcHRFcnJvciA9IGVycm9yOwotICAgIHdl
YmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlwdChtX3dlYlZpZXcsIGphdmFzY3JpcHQsIDAsIHJl
aW50ZXJwcmV0X2Nhc3Q8R0FzeW5jUmVhZHlDYWxsYmFjaz4ocnVuSmF2YVNjcmlwdFJlYWR5Q2Fs
bGJhY2spLCB0aGlzKTsKKyAgICBpZiAoIXdlYlZpZXcpCisgICAgICAgIHdlYlZpZXcgPSBtX3dl
YlZpZXc7CisgICAgd2Via2l0X3dlYl92aWV3X3J1bl9qYXZhc2NyaXB0KHdlYlZpZXcsIGphdmFz
Y3JpcHQsIDAsIHJlaW50ZXJwcmV0X2Nhc3Q8R0FzeW5jUmVhZHlDYWxsYmFjaz4ocnVuSmF2YVNj
cmlwdFJlYWR5Q2FsbGJhY2spLCB0aGlzKTsKICAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9v
cCk7CiAKICAgICByZXR1cm4gbV9qYXZhc2NyaXB0UmVzdWx0OwpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuaCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmgKaW5kZXggYTI4YTVlZGM4ZDQw
ZjU4YjUwNWFiNjRiMWVmNDhhYTBiNjU5NzMzMy4uMDJkNTg0OTVkNmQ3N2JmYjNhNzNiYTI4YjZh
NWQ5MzBjNDZmZjJkYSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktp
dEdMaWIvV2ViVmlld1Rlc3QuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0
R0xpYi9XZWJWaWV3VGVzdC5oCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGVt
aXRQb3B1cE1lbnVTaWduYWwoKTsKICNlbmRpZgogCi0gICAgV2ViS2l0SmF2YXNjcmlwdFJlc3Vs
dCogcnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKGNvbnN0IGNoYXIqIGphdmFzY3Jp
cHQsIEdFcnJvcioqKTsKKyAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBydW5KYXZhU2NyaXB0
QW5kV2FpdFVudGlsRmluaXNoZWQoY29uc3QgY2hhciogamF2YXNjcmlwdCwgR0Vycm9yKiosIFdl
YktpdFdlYlZpZXcqID0gbnVsbHB0cik7CiAgICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogcnVu
SmF2YVNjcmlwdEZyb21HUmVzb3VyY2VBbmRXYWl0VW50aWxGaW5pc2hlZChjb25zdCBjaGFyKiBy
ZXNvdXJjZSwgR0Vycm9yKiopOwogICAgIFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIHJ1bkphdmFT
Y3JpcHRJbldvcmxkQW5kV2FpdFVudGlsRmluaXNoZWQoY29uc3QgY2hhciogamF2YXNjcmlwdCwg
Y29uc3QgY2hhciogd29ybGQsIEdFcnJvcioqKTsKICAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0
KiBydW5KYXZhU2NyaXB0V2l0aG91dEZvcmNlZFVzZXJHZXN0dXJlc0FuZFdhaXRVbnRpbEZpbmlz
aGVkKGNvbnN0IGNoYXIqIGphdmFzY3JpcHQsIEdFcnJvcioqKTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L2ZsYXRwYWsvZmxhdHBha3V0aWxzLnB5IGIvVG9vbHMvZmxhdHBhay9mbGF0cGFrdXRpbHMucHkK
aW5kZXggYWIxZGJhOTgyMDZiZTgxMGIxZDRlNjBjYTc0NmQ5Yjc3YWIyYjBlZC4uNTY2MjZhMzY2
NDEyYWIzNmYwZWZjYjdkMzhlN2Q3ZjE2NzUxYWE2YiAxMDA2NDQKLS0tIGEvVG9vbHMvZmxhdHBh
ay9mbGF0cGFrdXRpbHMucHkKKysrIGIvVG9vbHMvZmxhdHBhay9mbGF0cGFrdXRpbHMucHkKQEAg
LTg1Nyw3ICs4NTcsNyBAQCBjbGFzcyBXZWJraXRGbGF0cGFrOgogICAgICAgICAgICAgXSkKIAog
ICAgICAgICAgICAgc2FuZGJveF9lbnZpcm9ubWVudC51cGRhdGUoewotICAgICAgICAgICAgICAg
ICJUWiI6ICJQU1Q4UERUIiwKKyAgICAgICAgICAgICAgICAiVFoiOiAiQW1lcmljYS9Mb3NfQW5n
ZWxlcyIsCiAgICAgICAgICAgICB9KQogCiAgICAgICAgIGVudl92YXJfcHJlZml4ZXNfdG9fa2Vl
cCA9IFsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457847</attachid>
            <date>2022-04-18 18:45:18 -0700</date>
            <delta_ts>2022-04-27 15:28:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213884-20220418184518.patch</filename>
            <type>text/plain</type>
            <size>50624</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyOTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NjEyNGZmMTU5ZTBiZDI3MGEwMTk4MmRlZGQ0MjNhMDVmMjM0OGY5Li42MDgzNWVhNGQ5MTliNGIy
YjJkYzQwOGNkZTM1YTRmNWU3OTc0ZDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAyMi0wNC0xMyAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxp
YS5jb20+IGFuZCBQYXZlbCBGZWxkbWFuIDxwYXZlbC5mZWxkbWFuQGdtYWlsLmNvbT4gYW5kIFl1
cnkgU2VtaWtoYXRza3kgPHl1cnlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBbV0syXSBBZGQg
QVBJIHRvIGFsbG93IGVtYmVkZGVyIHRvIHNldCBhIHRpbWV6b25lIG92ZXJyaWRlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM4ODQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHJ1bnRpbWUvRGF0ZUNv
bnZlcnNpb24uY3BwOgorICAgICAgICAoSlNDOjpmb3JtYXREYXRlVGltZSk6IEZvcm1hdCB0aGUg
b3ZlcnJpZGRlbiB0aW1lem9uZSBpZiBpdCdzIGVuYWJsZWQuCisgICAgICAgICogcnVudGltZS9K
U0RhdGVNYXRoLmNwcDoKKyAgICAgICAgKEpTQzo6RGF0ZUNhY2hlOjpkZWZhdWx0VGltZVpvbmUp
OiBSZXR1cm4gdGhlIG92ZXJyaWRkZW4gdGltZXpvbmUgaWYgaXQncyBlbmFibGVkLgorICAgICAg
ICAoSlNDOjpEYXRlQ2FjaGU6OnRpbWVab25lQ2FjaGVTbG93KTogQXBwbHkgdGltZXpvbmUgb3Zl
cnJpZGUgaWYgaXQgaXMgc2V0LgorCiAyMDIyLTA0LTE0ICBDYWl0bGluIFBvdHRlciAgPGNhaXRw
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0pTQ10gU2hhZG93UmVhbG0gZ2xvYmFsIG9iamVjdCBo
YXMgYSBtdXRhYmxlIHByb3RvdHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA0MDdmYzljYzBkZjIzZjUzMTUxYmVkNGM5MTY1
YmFhNzYxZGZiYWZkLi4zMDAxMDZkNTIyODQ5Nzg5YmI2MjNkYzE1ZTM4ZGE1YjUzODVhZjAxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIxIEBACisyMDIyLTA0LTEzICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1h
bmRAaWdhbGlhLmNvbT4gYW5kIFBhdmVsIEZlbGRtYW4gPHBhdmVsLmZlbGRtYW5AZ21haWwuY29t
PiBhbmQgWXVyeSBTZW1pa2hhdHNreSA8eXVyeXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtX
SzJdIEFkZCBBUEkgdG8gYWxsb3cgZW1iZWRkZXIgdG8gc2V0IGEgdGltZXpvbmUgb3ZlcnJpZGUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzg4NAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0Rh
dGVNYXRoLmNwcDogQWRkIG5ldyBBUElzIHRvIGNvbnRyb2wgYW5kIHF1ZXJ5IHRoZSB0aW1lem9u
ZSBvdmVycmlkZS4KKyAgICAgICAgKFdURjo6aW5uZXJUaW1lWm9uZU92ZXJyaWRlKTogU3RhdGlj
IHN0b3JhZ2Ugb2YgdGhlIG92ZXJyaWRlIGluZm9ybWF0aW9ucy4KKyAgICAgICAgKFdURjo6Y2Fs
Y3VsYXRlTG9jYWxUaW1lT2Zmc2V0KTogQ2FsY3VsYXRlIG9mZnNldCBmb3Igb3ZlcnJpZGRlbiB0
aW1lem9uZSwgaWYgaXQncyBwcmVzZW50LgorICAgICAgICAoV1RGOjp2YWxpZGF0ZVRpbWVab25l
KTogTmV3IGZ1bmN0aW9uIGFsbG93aW5nIHRvIGNoZWNrIGlmIGEgdGltZXpvbmUgaWRlbnRpZmll
ciBpcyB2YWxpZCBhY2NvcmRpbmcgdG8gSUNVJ3MgZGF0YWJhc2UgYW5kIGNvdmVydCBpdAorICAg
ICAgICB0byBVQ2hhciBidWZmZXIgc3VpdGFibGUgZm9yIHBhc3NpbmcgdG8gdWNhbC4KKyAgICAg
ICAgKFdURjo6c2V0VGltZVpvbmVPdmVycmlkZSk6IE5ldyBBUEkgdG8gc2V0IHRoZSB0aW1lem9u
ZSBvdmVycmlkZSwgdGhpcyBpcyBtZWFudCB0byBiZQorICAgICAgICB1c2VkIG9uIG5ld2x5IGNy
ZWF0ZWQgV2ViUHJvY2Vzc2VzLgorICAgICAgICAoV1RGOjp0aW1lWm9uZU92ZXJyaWRlKTpRdWVy
eSB0aGUgdGltZXpvbmUgb3ZlcnJpZGUuCisgICAgICAgIChXVEY6OnRpbWVab25lRGlzcGxheU5h
bWVPdmVycmlkZSk6IEdldCB0aGUgdGltZXpvbmUgbmFtZSBvZiB0aGUgb3ZlcnJpZGRlbiB0aW1l
em9uZS4KKyAgICAgICAgKiB3dGYvRGF0ZU1hdGguaDoKKwogMjAyMi0wNC0xNSAgWmFuIERvYmVy
c2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bV1BFXSBSZW1vdmUg
ZXhjbHVzaXZlIGJ1aWxkIGd1YXJkcyBhcm91bmQgR1BVIHByb2Nlc3MgcHJlZmVyZW5jZXMsIGNv
ZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggNjU4ODVmZWUxYTY4MGQyNjI0ZDA5ZDNjYzA5MDU1ZjM5ODdjYjhlZC4u
ZjE2N2MyZTE5N2E1YzcxMjRmNTQyZjNiMGE1OWQ0N2FjNTEyZTVjNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NiBAQAorMjAyMi0wNC0xMyAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxp
YS5jb20+IGFuZCBZdXJ5IFNlbWlraGF0c2t5IDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgW1dLMl0gQWRkIEFQSSB0byBhbGxvdyBlbWJlZGRlciB0byBzZXQgYSB0aW1lem9uZSBvdmVy
cmlkZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEz
ODg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBhZGRzOgorCisgICAgICAgIC0gbmV3IENvY29hIEFQSQorICAgICAgICAtIG5ldyBH
bGliIEFQSSAodGFyZ2V0dGluZyBib3RoIFdQRSBhbmQgR1RLIHBvcnRzKQorICAgICAgICAtIG5l
dyBDIEFQSSAoZm9yIHRoZSB3aW4gcG9ydCkKKworICAgICAgICB0aGF0IGFsbG93cyB0aGUgZW1i
ZWRkZXIgdG8gc2V0IGEgdGltZXpvbmUgb3ZlcnJpZGUgZm9yIHRoZSB1bmRlcmx5aW5nIFBhZ2VD
b25maWd1cmF0aW9uLgorICAgICAgICBTaW5jZSB0aGlzIEFQSSBpcyBub3QgZXhwb3NlZCBpbiBn
bGliIHBvcnRzLCBhIG5ldyBjb250cnVjdC10aW1lLW9ubHkgcHJvcGVydHkgd2FzIGFkZGVkIHRv
CisgICAgICAgIHRoZSBXZWJLaXRXZWJDb250ZXh0IEFQSS4gSXQgd291bGQgYWxzbyBhbGxvdyBm
aW5lLWdyYWluZWQgY29udHJvbCBvdmVyIG11bHRpcGxlIHBhZ2VzLCBmb3IKKyAgICAgICAgaW5z
dGFuY2UgaXQncyBub3QgcG9zc2libGUgY3VycmVudGx5IHRvIGhhdmUgdHdvIHBhZ2VzIGluIGRp
ZmZlcmVudCB0aW1lem9uZXMuCisKKyAgICAgICAgTm8gbmV3IGxheW91dCB0ZXN0cywgdGhpcyBj
aGFuZ2UgaXMgY292ZXJlZCBieSBuZXcgQVBJIHRlc3RzLgorCisgICAgICAgICogU2hhcmVkL1dl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmln
dXJhdGlvbi5jcHA6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpjb3B5IGNvbnN0
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmg6CisgICAg
ICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpzZXRUaW1lWm9uZU92ZXJyaWRlKToKKyAgICAg
ICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OnRpbWVab25lT3ZlcnJpZGUgY29uc3QpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGltZVpvbmVPdmVycmlkZV0pOgorICAg
ICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF9zZXRUaW1lWm9uZU92ZXJyaWRlOl0pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZh
dGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHA6
CisgICAgICAgICh3ZWJraXRXZWJDb250ZXh0R2V0UHJvcGVydHkpOgorICAgICAgICAod2Via2l0
V2ViQ29udGV4dFNldFByb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdF93ZWJfY29udGV4dF9jbGFz
c19pbml0KToKKyAgICAgICAgKHdlYmtpdFdlYkNvbnRleHRDcmVhdGVQYWdlRm9yV2ViVmlldyk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fbGltaXRzTmF2aWdhdGlv
bnNUb0FwcEJvdW5kRG9tYWlucyk6CisKIDIwMjItMDQtMTUgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgogCiAgICAgICAgIFNlcnZpY2VXb3JrZXIucG9zdE1lc3NhZ2UoKSBkb2Vz
bid0IHdvcmsgZnJvbSBpbnNpZGUgaWZyYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9EYXRlQ29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9EYXRlQ29udmVyc2lvbi5jcHAKaW5kZXggMmRlY2Y4YTgzYzgwZTgwY2E4Njc3ZjRj
Nzg3YmY3OWM2YzI5OTVmYS4uODIwYmM5ZWNmZDI1ZDgzNDYzZTU5OTcyYjM5MzA2YjBjYjkwMDEx
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnZlcnNp
b24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb252ZXJzaW9u
LmNwcApAQCAtOTcsMTcgKzk3LDIyIEBAIFN0cmluZyBmb3JtYXREYXRlVGltZShjb25zdCBHcmVn
b3JpYW5EYXRlVGltZSYgdCwgRGF0ZVRpbWVGb3JtYXQgZm9ybWF0LCBib29sIGFzCiAgICAgICAg
ICAgICBhcHBlbmROdW1iZXI8Mj4oYnVpbGRlciwgb2Zmc2V0IC8gNjApOwogICAgICAgICAgICAg
YXBwZW5kTnVtYmVyPDI+KGJ1aWxkZXIsIG9mZnNldCAlIDYwKTsKIAorICAgICAgICAgICAgU3Ry
aW5nIHRpbWVab25lTmFtZTsKKyAgICAgICAgICAgIGlmIChhdXRvIG92ZXJyaWRlID0gdGltZVpv
bmVEaXNwbGF5TmFtZU92ZXJyaWRlKCk7ICFvdmVycmlkZS5pc0VtcHR5KCkpCisgICAgICAgICAg
ICAgICAgdGltZVpvbmVOYW1lID0gb3ZlcnJpZGU7CisgICAgICAgICAgICBlbHNlIHsKICNpZiBP
UyhXSU5ET1dTKQotICAgICAgICAgICAgVElNRV9aT05FX0lORk9STUFUSU9OIHRpbWVab25lSW5m
b3JtYXRpb247Ci0gICAgICAgICAgICBHZXRUaW1lWm9uZUluZm9ybWF0aW9uKCZ0aW1lWm9uZUlu
Zm9ybWF0aW9uKTsKLSAgICAgICAgICAgIGNvbnN0IFdDSEFSKiB3aW5UaW1lWm9uZU5hbWUgPSB0
LmlzRFNUKCkgPyB0aW1lWm9uZUluZm9ybWF0aW9uLkRheWxpZ2h0TmFtZSA6IHRpbWVab25lSW5m
b3JtYXRpb24uU3RhbmRhcmROYW1lOwotICAgICAgICAgICAgU3RyaW5nIHRpbWVab25lTmFtZSh3
aW5UaW1lWm9uZU5hbWUpOworICAgICAgICAgICAgICAgIFRJTUVfWk9ORV9JTkZPUk1BVElPTiB0
aW1lWm9uZUluZm9ybWF0aW9uOworICAgICAgICAgICAgICAgIEdldFRpbWVab25lSW5mb3JtYXRp
b24oJnRpbWVab25lSW5mb3JtYXRpb24pOworICAgICAgICAgICAgICAgIHRpbWVab25lTmFtZSA9
IFN0cmluZyh0LmlzRFNUKCkgPyB0aW1lWm9uZUluZm9ybWF0aW9uLkRheWxpZ2h0TmFtZSA6IHRp
bWVab25lSW5mb3JtYXRpb24uU3RhbmRhcmROYW1lKTsKICNlbHNlCi0gICAgICAgICAgICBzdHJ1
Y3QgdG0gZ3RtID0gdDsKLSAgICAgICAgICAgIGNoYXIgdGltZVpvbmVOYW1lWzcwXTsKLSAgICAg
ICAgICAgIHN0cmZ0aW1lKHRpbWVab25lTmFtZSwgc2l6ZW9mKHRpbWVab25lTmFtZSksICIlWiIs
ICZndG0pOworICAgICAgICAgICAgICAgIHN0cnVjdCB0bSBndG0gPSB0OworICAgICAgICAgICAg
ICAgIGNoYXIgdGltZVpvbmVOYW1lQ2hhcnNbNzBdOworICAgICAgICAgICAgICAgIGlmIChzdHJm
dGltZSh0aW1lWm9uZU5hbWVDaGFycywgc2l6ZW9mKHRpbWVab25lTmFtZUNoYXJzKSwgIiVaIiwg
Jmd0bSkpCisgICAgICAgICAgICAgICAgICAgIHRpbWVab25lTmFtZSA9IFN0cmluZzo6ZnJvbVVU
RjgodGltZVpvbmVOYW1lQ2hhcnMpOwogI2VuZGlmCi0gICAgICAgICAgICBpZiAodGltZVpvbmVO
YW1lWzBdKQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCF0aW1lWm9uZU5hbWUuaXNF
bXB0eSgpKQogICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIgKCIsIHRpbWVab25lTmFt
ZSwgJyknKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRGF0ZU1hdGguY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNEYXRlTWF0aC5jcHAKaW5kZXggZmM2ZmQzOGVjYjM5MmU5ZDVlYTU0ZDU3MDI1Nzg1NjIy
ODk0MzRmYi4uMTg5NjkzNjI0M2E3NThkOTUzNGYwNTI1Y2E5NjFhYzk4NmM1OWEzYSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRlTWF0aC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRlTWF0aC5jcHAKQEAgLTEwOCw2ICsx
MDgsMTUgQEAgcHVibGljOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxVQ2FsZW5kYXIsIElDVURlbGV0
ZXI8dWNhbF9jbG9zZT4+IG1fY2FsZW5kYXI7CiAgICAgU3RyaW5nIG1fY2Fub25pY2FsVGltZVpv
bmVJRDsKIH07CisjZWxzZQorc3RhdGljIGljdTo6VGltZVpvbmUqIHRvSUNVVGltZXpab25lKE9w
YXF1ZUlDVVRpbWVab25lKiB0aW1lWm9uZSkKK3sKKyAgICByZXR1cm4gYml0d2lzZV9jYXN0PGlj
dTo6VGltZVpvbmUqPih0aW1lWm9uZSk7Cit9CitzdGF0aWMgT3BhcXVlSUNVVGltZVpvbmUqIHRv
T3BhcXVlSUNVVGltZVpvbmUoaWN1OjpUaW1lWm9uZSogdGltZVpvbmUpCit7CisgICAgcmV0dXJu
IGJpdHdpc2VfY2FzdDxPcGFxdWVJQ1VUaW1lWm9uZSo+KHRpbWVab25lKTsKK30KICNlbmRpZgog
CiB2b2lkIE9wYXF1ZUlDVVRpbWVab25lRGVsZXRlcjo6b3BlcmF0b3IoKShPcGFxdWVJQ1VUaW1l
Wm9uZSogdGltZVpvbmUpCkBAIC0xMTYsNyArMTI1LDcgQEAgdm9pZCBPcGFxdWVJQ1VUaW1lWm9u
ZURlbGV0ZXI6Om9wZXJhdG9yKCkoT3BhcXVlSUNVVGltZVpvbmUqIHRpbWVab25lKQogI2lmIEhB
VkUoSUNVX0NfVElNRVpPTkVfQVBJKQogICAgICAgICBkZWxldGUgdGltZVpvbmU7CiAjZWxzZQot
ICAgICAgICBkZWxldGUgYml0d2lzZV9jYXN0PGljdTo6VGltZVpvbmUqPih0aW1lWm9uZSk7Cisg
ICAgICAgIGRlbGV0ZSB0b0lDVVRpbWV6Wm9uZSh0aW1lWm9uZSk7CiAjZW5kaWYKICAgICB9CiB9
CkBAIC0xNTUsNyArMTY0LDcgQEAgTG9jYWxUaW1lT2Zmc2V0IERhdGVDYWNoZTo6Y2FsY3VsYXRl
TG9jYWxUaW1lT2Zmc2V0KGRvdWJsZSBtaWxsaXNlY29uZHNGcm9tRXBvY2gKICAgICAgICAgICAg
IHJldHVybiBmYWlsZWQ7CiAgICAgfQogI2Vsc2UKLSAgICBhdXRvJiB0aW1lWm9uZUNhY2hlID0g
KmJpdHdpc2VfY2FzdDxpY3U6OlRpbWVab25lKj4odGhpcy0+dGltZVpvbmVDYWNoZSgpKTsKKyAg
ICBhdXRvJiB0aW1lWm9uZUNhY2hlID0gKnRvSUNVVGltZXpab25lKHRoaXMtPnRpbWVab25lQ2Fj
aGUoKSk7CiAgICAgaWYgKGlucHV0VGltZVR5cGUgIT0gV1RGOjpMb2NhbFRpbWUpIHsKICAgICAg
ICAgY29uc3RleHByIGJvb2wgaXNMb2NhbFRpbWUgPSBmYWxzZTsKICAgICAgICAgdGltZVpvbmVD
YWNoZS5nZXRPZmZzZXQobWlsbGlzZWNvbmRzRnJvbUVwb2NoLCBpc0xvY2FsVGltZSwgcmF3T2Zm
c2V0LCBkc3RPZmZzZXQsIHN0YXR1cyk7CkBAIC0zMzIsMTIgKzM0MSwxNSBAQCBkb3VibGUgRGF0
ZUNhY2hlOjpwYXJzZURhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBj
b25zdCBTdHJpbmcmCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLWRlZmF1bHR0aW1l
em9uZQogU3RyaW5nIERhdGVDYWNoZTo6ZGVmYXVsdFRpbWVab25lKCkKIHsKKyAgICBpZiAoYXV0
byBvdmVycmlkZSA9IHRpbWVab25lT3ZlcnJpZGUoKTsgIW92ZXJyaWRlLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuIFN0cmluZzo6YWRvcHQoV1RGTW92ZShvdmVycmlkZSkpOworCiAjaWYgSEFW
RShJQ1VfQ19USU1FWk9ORV9BUEkpCiAgICAgcmV0dXJuIHRpbWVab25lQ2FjaGUoKS0+bV9jYW5v
bmljYWxUaW1lWm9uZUlEOwogI2Vsc2UKICAgICBpY3U6OlVuaWNvZGVTdHJpbmcgdGltZVpvbmVJ
RDsKICAgICBpY3U6OlVuaWNvZGVTdHJpbmcgY2Fub25pY2FsVGltZVpvbmVJRDsKLSAgICBhdXRv
JiB0aW1lWm9uZSA9ICpiaXR3aXNlX2Nhc3Q8aWN1OjpUaW1lWm9uZSo+KHRpbWVab25lQ2FjaGUo
KSk7CisgICAgYXV0byYgdGltZVpvbmUgPSAqdG9JQ1VUaW1lelpvbmUodGltZVpvbmVDYWNoZSgp
KTsKICAgICB0aW1lWm9uZS5nZXRJRCh0aW1lWm9uZUlEKTsKIAogICAgIFVFcnJvckNvZGUgc3Rh
dHVzID0gVV9aRVJPX0VSUk9SOwpAQCAtMzgzLDEyICszOTUsMTkgQEAgUmVmPERhdGVJbnN0YW5j
ZURhdGE+IERhdGVDYWNoZTo6Y2FjaGVkRGF0ZUluc3RhbmNlRGF0YShkb3VibGUgbWlsbGlzZWNv
bmRzRnJvbUUKIHZvaWQgRGF0ZUNhY2hlOjp0aW1lWm9uZUNhY2hlU2xvdygpCiB7CiAgICAgQVNT
RVJUKCFtX3RpbWVab25lQ2FjaGUpOworCisgICAgVmVjdG9yPFVDaGFyPiBvdmVycmlkZSA9IHRp
bWVab25lT3ZlcnJpZGUoKTsKICNpZiBIQVZFKElDVV9DX1RJTUVaT05FX0FQSSkKICAgICBhdXRv
KiBjYWNoZSA9IG5ldyBPcGFxdWVJQ1VUaW1lWm9uZTsKIAogICAgIFN0cmluZyBjYW5vbmljYWw7
CisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgVmVjdG9yPFVDaGFy
LCAzMj4gdGltZVpvbmVJRDsKLSAgICBhdXRvIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdG
dW5jdGlvbih1Y2FsX2dldEhvc3RUaW1lWm9uZSwgdGltZVpvbmVJRCk7CisgICAgaWYgKG92ZXJy
aWRlLmlzRW1wdHkoKSkgeworICAgICAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVu
Y3Rpb24odWNhbF9nZXRIb3N0VGltZVpvbmUsIHRpbWVab25lSUQpOworICAgICAgICBBU1NFUlRf
VU5VU0VEKHN0YXR1cywgVV9TVUNDRVNTKHN0YXR1cykpOworICAgIH0gZWxzZQorICAgICAgICB0
aW1lWm9uZUlEID0gb3ZlcnJpZGU7CiAgICAgaWYgKFVfU1VDQ0VTUyhzdGF0dXMpKSB7CiAgICAg
ICAgIFZlY3RvcjxVQ2hhciwgMzI+IGNhbm9uaWNhbEJ1ZmZlcjsKICAgICAgICAgYXV0byBzdGF0
dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odWNhbF9nZXRDYW5vbmljYWxUaW1lWm9u
ZUlELCB0aW1lWm9uZUlELmRhdGEoKSwgdGltZVpvbmVJRC5zaXplKCksIGNhbm9uaWNhbEJ1ZmZl
ciwgbnVsbHB0cik7CkBAIC00MDUsOCArNDI0LDEyIEBAIHZvaWQgRGF0ZUNhY2hlOjp0aW1lWm9u
ZUNhY2hlU2xvdygpCiAgICAgdWNhbF9zZXRHcmVnb3JpYW5DaGFuZ2UoY2FjaGUtPm1fY2FsZW5k
YXIuZ2V0KCksIG1pbkVDTUFTY3JpcHRUaW1lLCAmc3RhdHVzKTsgLy8gSWdub3JlICJ1bnN1cHBv
cnRlZCIgZXJyb3IuCiAgICAgbV90aW1lWm9uZUNhY2hlID0gc3RkOjp1bmlxdWVfcHRyPE9wYXF1
ZUlDVVRpbWVab25lLCBPcGFxdWVJQ1VUaW1lWm9uZURlbGV0ZXI+KGNhY2hlKTsKICNlbHNlCisg
ICAgaWYgKCFvdmVycmlkZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgbV90aW1lWm9uZUNhY2hlID0g
c3RkOjp1bmlxdWVfcHRyPE9wYXF1ZUlDVVRpbWVab25lLCBPcGFxdWVJQ1VUaW1lWm9uZURlbGV0
ZXI+KHRvT3BhcXVlSUNVVGltZVpvbmUoaWN1OjpUaW1lWm9uZTo6Y3JlYXRlVGltZVpvbmUoaWN1
OjpVbmljb2RlU3RyaW5nKG92ZXJyaWRlLmRhdGEoKSwgb3ZlcnJpZGUuc2l6ZSgpKSkpKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KICAgICAvLyBEbyBub3QgdXNlIGljdTo6VGltZVpvbmU6OmNy
ZWF0ZURlZmF1bHQuIElDVSBpbnRlcm5hbGx5IGhhcyBhIGNhY2hlIGZvciB0aW1lem9uZSBhbmQg
Y3JlYXRlRGVmYXVsdCByZXR1cm5zIHRoaXMgY2FjaGVkIHZhbHVlLgotICAgIG1fdGltZVpvbmVD
YWNoZSA9IHN0ZDo6dW5pcXVlX3B0cjxPcGFxdWVJQ1VUaW1lWm9uZSwgT3BhcXVlSUNVVGltZVpv
bmVEZWxldGVyPihiaXR3aXNlX2Nhc3Q8T3BhcXVlSUNVVGltZVpvbmUqPihpY3U6OlRpbWVab25l
OjpkZXRlY3RIb3N0VGltZVpvbmUoKSkpOworICAgIG1fdGltZVpvbmVDYWNoZSA9IHN0ZDo6dW5p
cXVlX3B0cjxPcGFxdWVJQ1VUaW1lWm9uZSwgT3BhcXVlSUNVVGltZVpvbmVEZWxldGVyPih0b09w
YXF1ZUlDVVRpbWVab25lKGljdTo6VGltZVpvbmU6OmRldGVjdEhvc3RUaW1lWm9uZSgpKSk7CiAj
ZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRGF0ZU1hdGguY3BwIGIvU291
cmNlL1dURi93dGYvRGF0ZU1hdGguY3BwCmluZGV4IGI1ZjIyODMwOGQxNjFiNmUxNmM5YzQ1YWJm
ODJiMTUyYjU3NmNjNmUuLmRlNTdlMzRjNzgyNjMxMTEyODA1OWM2ZmEwODAwZjQ5YTZkNzQ4ZDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9EYXRlTWF0aC5jcHAKQEAgLTc2LDkgKzc2LDE1IEBACiAjaW5jbHVkZSA8bGltaXRzPgog
I2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHRpbWUuaD4KKyNpbmNsdWRlIDx1bmljb2Rl
L3VjYWwuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9BU0NJ
SUNUeXBlLmg+CisjaW5jbHVkZSA8d3RmL0xhbmd1YWdlLmg+CisjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi91bmljb2RlL1VURjhDb252
ZXJzaW9uLmg+CisjaW5jbHVkZSA8d3RmL3VuaWNvZGUvaWN1L0lDVUhlbHBlcnMuaD4KIAogI2lm
IE9TKFdJTkRPV1MpCiAjaW5jbHVkZSA8d2luZG93cy5oPgpAQCAtOTIsNiArOTgsMTkgQEAgdGVt
cGxhdGU8dW5zaWduZWQgbGVuZ3RoPiBpbmxpbmUgYm9vbCBzdGFydHNXaXRoTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKGNvbnN0IGMKICAgICByZXR1cm4gZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2Uoc3RyaW5nLCBsb3dlcmNhc2VMZXR0ZXJzLCBsZW5ndGggLSAxKTsKIH0KIAorc3RydWN0
IFRpbWVab25lT3ZlcnJpZGUgeworICAgIHN0ZDo6dW5pcXVlX3B0cjxVQ2FsZW5kYXIsIElDVURl
bGV0ZXI8dWNhbF9jbG9zZT4+IGNhbGVuZGFyOworICAgIFZlY3RvcjxVQ2hhcj4gaWQ7CisgICAg
VmVjdG9yPFVDaGFyPiBkaXNwbGF5TmFtZTsKK307CisKK3N0YXRpYyBMb2NrIGlubmVyVGltZVpv
bmVPdmVycmlkZUxvY2s7CitzdGF0aWMgVGltZVpvbmVPdmVycmlkZSYgaW5uZXJUaW1lWm9uZU92
ZXJyaWRlKCkgV1RGX1JFUVVJUkVTX0xPQ0soaW5uZXJUaW1lWm9uZU92ZXJyaWRlTG9jaykKK3sK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGltZVpvbmVPdmVycmlkZT4gdGltZVpvbmVPdmVy
cmlkZTsKKyAgICByZXR1cm4gdGltZVpvbmVPdmVycmlkZTsKK30KKwogLyogQ29uc3RhbnRzICov
CiAKIGNvbnN0IEFTQ0lJTGl0ZXJhbCB3ZWVrZGF5TmFtZVs3XSA9IHsgIk1vbiJfcywgIlR1ZSJf
cywgIldlZCJfcywgIlRodSJfcywgIkZyaSJfcywgIlNhdCJfcywgIlN1biJfcyB9OwpAQCAtMzE4
LDYgKzMzNywyMyBAQCBzdGF0aWMgZG91YmxlIGNhbGN1bGF0ZURTVE9mZnNldCh0aW1lX3QgbG9j
YWxUaW1lLCBkb3VibGUgdXRjT2Zmc2V0KQogLy8gUmV0dXJucyBjb21iaW5lZCBvZmZzZXQgaW4g
bWlsbGlzZWNvbmQgKFVUQyArIERTVCkuCiBMb2NhbFRpbWVPZmZzZXQgY2FsY3VsYXRlTG9jYWxU
aW1lT2Zmc2V0KGRvdWJsZSBtcywgVGltZVR5cGUgaW5wdXRUaW1lVHlwZSkKIHsKKyAgICB7Cisg
ICAgICAgIExvY2tlciBsb2NrZXIgeyBpbm5lclRpbWVab25lT3ZlcnJpZGVMb2NrIH07CisgICAg
ICAgIGF1dG8mIHRpbWVab25lID0gaW5uZXJUaW1lWm9uZU92ZXJyaWRlKCk7CisgICAgICAgIGlm
ICh0aW1lWm9uZS5jYWxlbmRhcikgeworICAgICAgICAgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBV
X1pFUk9fRVJST1I7CisgICAgICAgICAgICB1Y2FsX3NldE1pbGxpcyh0aW1lWm9uZS5jYWxlbmRh
ci5nZXQoKSwgbXMsICZzdGF0dXMpOworICAgICAgICAgICAgaWYgKCFVX1NVQ0NFU1Moc3RhdHVz
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICAgICAgaW50MzJfdCBvZmZz
ZXQgPSB1Y2FsX2dldCh0aW1lWm9uZS5jYWxlbmRhci5nZXQoKSwgVUNBTF9aT05FX09GRlNFVCwg
JnN0YXR1cyk7CisgICAgICAgICAgICBpZiAoIVVfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICAg
ICAgICAgIHJldHVybiB7IH07CisgICAgICAgICAgICBpbnQzMl90IGRzdE9mZnNldCA9IHVjYWxf
Z2V0KHRpbWVab25lLmNhbGVuZGFyLmdldCgpLCBVQ0FMX0RTVF9PRkZTRVQsICZzdGF0dXMpOwor
ICAgICAgICAgICAgaWYgKCFVX1NVQ0NFU1Moc3RhdHVzKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4geyB9OworICAgICAgICAgICAgcmV0dXJuIExvY2FsVGltZU9mZnNldChkc3RPZmZzZXQsIG9m
ZnNldCArIGRzdE9mZnNldCk7CisgICAgICAgIH0KKyAgICB9CiAjaWYgSEFWRShUTV9HTVRPRkYp
CiAgICAgZG91YmxlIGxvY2FsVG9VVENUaW1lT2Zmc2V0ID0gaW5wdXRUaW1lVHlwZSA9PSBMb2Nh
bFRpbWUgPyBjYWxjdWxhdGVVVENPZmZzZXQoKSA6IDA7CiAjZWxzZQpAQCAtMTAxNiw0ICsxMDUy
LDY4IEBAIFN0cmluZyBtYWtlUkZDMjgyMkRhdGVTdHJpbmcodW5zaWduZWQgZGF5T2ZXZWVrLCB1
bnNpZ25lZCBkYXksIHVuc2lnbmVkIG1vbnRoLCB1CiAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIu
dG9TdHJpbmcoKTsKIH0KIAorc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFVDaGFyPj4gdmFs
aWRhdGVUaW1lWm9uZShjb25zdCBTdHJpbmdWaWV3JiB0aW1lWm9uZSkKK3sKKyAgICBWZWN0b3I8
VUNoYXI+IGJ1ZmZlcih0aW1lWm9uZS5sZW5ndGgoKSk7CisgICAgdGltZVpvbmUuZ2V0Q2hhcmFj
dGVyc1dpdGhVcGNvbnZlcnQoYnVmZmVyLmRhdGEoKSk7CisKKyAgICBWZWN0b3I8VUNoYXI+IGNh
bm9uaWNhbEJ1ZmZlcjsKKyAgICBjYW5vbmljYWxCdWZmZXIucmVzZXJ2ZUNhcGFjaXR5KGJ1ZmZl
ci5zaXplKCkpOworICAgIGF1dG8gc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9u
KHVjYWxfZ2V0Q2Fub25pY2FsVGltZVpvbmVJRCwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUo
KSwgY2Fub25pY2FsQnVmZmVyLCBudWxscHRyKTsKKyAgICBpZiAoIVVfU1VDQ0VTUyhzdGF0dXMp
KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHJldHVybiBjYW5vbmljYWxCdWZm
ZXI7Cit9CisKK2Jvb2wgaXNUaW1lWm9uZVZhbGlkKGNvbnN0IFN0cmluZ1ZpZXcmIHRpbWVab25l
KQoreworICAgIHJldHVybiB2YWxpZGF0ZVRpbWVab25lKHRpbWVab25lKS5oYXNfdmFsdWUoKTsK
K30KKworYm9vbCBzZXRUaW1lWm9uZU92ZXJyaWRlKGNvbnN0IFN0cmluZ1ZpZXcmIHRpbWVab25l
KQoreworICAgIGlmICh0aW1lWm9uZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgTG9ja2VyIGxvY2tl
ciB7IGlubmVyVGltZVpvbmVPdmVycmlkZUxvY2sgfTsKKyAgICAgICAgaW5uZXJUaW1lWm9uZU92
ZXJyaWRlKCkgPSBUaW1lWm9uZU92ZXJyaWRlKCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKworICAgIGF1dG8gY2Fub25pY2FsQnVmZmVyID0gdmFsaWRhdGVUaW1lWm9uZSh0aW1lWm9u
ZSk7CisgICAgaWYgKCFjYW5vbmljYWxCdWZmZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGF1dG8gY2Fub25pY2FsTGVuZ3RoID0gY2Fub25pY2FsQnVmZmVyLT5zaXplKCk7CisgICAg
VUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgYXV0byBjYWxlbmRhciA9IHN0
ZDo6dW5pcXVlX3B0cjxVQ2FsZW5kYXIsIElDVURlbGV0ZXI8dWNhbF9jbG9zZT4+KHVjYWxfb3Bl
bihjYW5vbmljYWxCdWZmZXItPmRhdGEoKSwgY2Fub25pY2FsTGVuZ3RoLCBudWxscHRyLCBVQ0FM
X1RSQURJVElPTkFMLCAmc3RhdHVzKSk7CisgICAgaWYgKCFVX1NVQ0NFU1Moc3RhdHVzKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgVmVjdG9yPFVDaGFyPiBkaXNwbGF5TmFtZUJ1ZmZl
cjsKKyAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odWNhbF9nZXRUaW1l
Wm9uZURpc3BsYXlOYW1lLCBjYWxlbmRhci5nZXQoKSwgVUNBTF9TVEFOREFSRCwgZGVmYXVsdExh
bmd1YWdlKCkudXRmOCgpLmRhdGEoKSwgZGlzcGxheU5hbWVCdWZmZXIpOworICAgIGlmICghVV9T
VUNDRVNTKHN0YXR1cykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHsKKyAgICAgICAg
TG9ja2VyIGxvY2tlciB7IGlubmVyVGltZVpvbmVPdmVycmlkZUxvY2sgfTsKKyAgICAgICAgYXV0
byYgb3ZlcnJpZGUgPSBpbm5lclRpbWVab25lT3ZlcnJpZGUoKTsKKyAgICAgICAgb3ZlcnJpZGUu
Y2FsZW5kYXIgPSBXVEZNb3ZlKGNhbGVuZGFyKTsKKyAgICAgICAgb3ZlcnJpZGUuaWQgPSBXVEZN
b3ZlKCpjYW5vbmljYWxCdWZmZXIpOworICAgICAgICBvdmVycmlkZS5kaXNwbGF5TmFtZSA9IFdU
Rk1vdmUoZGlzcGxheU5hbWVCdWZmZXIpOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
VmVjdG9yPFVDaGFyPiB0aW1lWm9uZU92ZXJyaWRlKCkKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsg
aW5uZXJUaW1lWm9uZU92ZXJyaWRlTG9jayB9OworICAgIHJldHVybiBpbm5lclRpbWVab25lT3Zl
cnJpZGUoKS5pZDsKK30KKworU3RyaW5nIHRpbWVab25lRGlzcGxheU5hbWVPdmVycmlkZSgpCit7
CisgICAgTG9ja2VyIGxvY2tlciB7IGlubmVyVGltZVpvbmVPdmVycmlkZUxvY2sgfTsKKyAgICBh
dXRvJiBkaXNwbGF5TmFtZSA9IGlubmVyVGltZVpvbmVPdmVycmlkZSgpLmRpc3BsYXlOYW1lOwor
ICAgIHJldHVybiBTdHJpbmcoZGlzcGxheU5hbWUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmggYi9Tb3VyY2UvV1RGL3d0Zi9E
YXRlTWF0aC5oCmluZGV4IDE3NGU2YzA3YjZmNWNmNGJjZjA0NjlmMjBmOGNmMDIxYmVkMjUxMDMu
LjRkZTU4NTRhNTZjOTBkMjNmZjg5MWEyMTc2NDc4YWNmYmU3OWM2NjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL0RhdGVNYXRoLmgKKysrIGIvU291cmNlL1dURi93dGYvRGF0ZU1hdGguaApA
QCAtMzkzLDYgKzM5MywxMSBAQCBpbmxpbmUgZG91YmxlIHRpbWVUb01TKGRvdWJsZSBob3VyLCBk
b3VibGUgbWluLCBkb3VibGUgc2VjLCBkb3VibGUgbXMpCiAgICAgcmV0dXJuICgoKGhvdXIgKiBX
VEY6Om1pbnV0ZXNQZXJIb3VyICsgbWluKSAqIFdURjo6c2Vjb25kc1Blck1pbnV0ZSArIHNlYykg
KiBXVEY6Om1zUGVyU2Vjb25kICsgbXMpOwogfQogCitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBp
c1RpbWVab25lVmFsaWQoY29uc3QgU3RyaW5nVmlldyYpOworV1RGX0VYUE9SVF9QUklWQVRFIGJv
b2wgc2V0VGltZVpvbmVPdmVycmlkZShjb25zdCBTdHJpbmdWaWV3Jik7CitXVEZfRVhQT1JUX1BS
SVZBVEUgVmVjdG9yPFVDaGFyPiB0aW1lWm9uZU92ZXJyaWRlKCk7CitXVEZfRVhQT1JUX1BSSVZB
VEUgU3RyaW5nIHRpbWVab25lRGlzcGxheU5hbWVPdmVycmlkZSgpOworCiAvLyBSZXR1cm5zIGNv
bWJpbmVkIG9mZnNldCBpbiBtaWxsaXNlY29uZCAoVVRDICsgRFNUKS4KIFdURl9FWFBPUlRfUFJJ
VkFURSBMb2NhbFRpbWVPZmZzZXQgY2FsY3VsYXRlTG9jYWxUaW1lT2Zmc2V0KGRvdWJsZSB1dGNJ
bk1pbGxpc2Vjb25kcywgVGltZVR5cGUgPSBVVENUaW1lKTsKIApAQCAtNDE4LDYgKzQyMywxMCBA
QCB1c2luZyBXVEY6OnBhcnNlRGF0ZUZyb21OdWxsVGVybWluYXRlZENoYXJhY3RlcnM7CiB1c2lu
ZyBXVEY6OnRpbWVUb01TOwogdXNpbmcgV1RGOjptYWtlUkZDMjgyMkRhdGVTdHJpbmc7CiB1c2lu
ZyBXVEY6OkxvY2FsVGltZU9mZnNldDsKK3VzaW5nIFdURjo6aXNUaW1lWm9uZVZhbGlkOwordXNp
bmcgV1RGOjpzZXRUaW1lWm9uZU92ZXJyaWRlOwordXNpbmcgV1RGOjp0aW1lWm9uZU92ZXJyaWRl
OwordXNpbmcgV1RGOjp0aW1lWm9uZURpc3BsYXlOYW1lT3ZlcnJpZGU7CiB1c2luZyBXVEY6OmNh
bGN1bGF0ZUxvY2FsVGltZU9mZnNldDsKIHVzaW5nIFdURjo6dGltZUNsaXA7CiB1c2luZyBXVEY6
OmpzQ3VycmVudFRpbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IDUxNDJlMmM2MDk1MzFlNWFmODA5YzQ2ZGE2
ZmM0MjY1MGNlNGQ2OWEuLjljYTgxMTFhMjA0NGU1YTZiMTE5NzE3ZDVhNGQ5NzdiNWQ4ODE0ODUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuY3BwCkBAIC0yMTQsNiArMjE0LDggQEAgdm9pZCBXZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogI2lmIFVTRShB
VFNQSSkKICAgICBlbmNvZGVyIDw8IGFjY2Vzc2liaWxpdHlCdXNBZGRyZXNzOwogI2VuZGlmCisK
KyAgICBlbmNvZGVyIDw8IHRpbWVab25lT3ZlcnJpZGU7CiB9CiAKIGJvb2wgV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKQEAgLTU3MSw2ICs1NzMsMTIgQEAgYm9v
bCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNv
ZGVyLCBXZWJQcm9jZXNzQ3JlYXQKICAgICBwYXJhbWV0ZXJzLmFjY2Vzc2liaWxpdHlCdXNBZGRy
ZXNzID0gV1RGTW92ZSgqYWNjZXNzaWJpbGl0eUJ1c0FkZHJlc3MpOwogI2VuZGlmCiAKKyAgICBz
dGQ6Om9wdGlvbmFsPFN0cmluZz4gdGltZVpvbmVPdmVycmlkZTsKKyAgICBkZWNvZGVyID4+IHRp
bWVab25lT3ZlcnJpZGU7CisgICAgaWYgKCF0aW1lWm9uZU92ZXJyaWRlKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgcGFyYW1ldGVycy50aW1lWm9uZU92ZXJyaWRlID0gV1RGTW92ZSgqdGlt
ZVpvbmVPdmVycmlkZSk7CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IDhkMzcy
Y2I2NjE5YzI4NDliZDQ2MWYyNDNhNTFhODY3OTQ4ZDk3MjMuLjI5ZGEyM2Q4M2U1NjAyOGZiYjAw
OWQ5NzVlNTBmZjk5OTI5NzQ0YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTI1NSw2ICsyNTUsOCBAQCBzdHJ1Y3Qg
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAjaWYgVVNFKEFUU1BJKQogICAgIFN0cmlu
ZyBhY2Nlc3NpYmlsaXR5QnVzQWRkcmVzczsKICNlbmRpZgorCisgICAgU3RyaW5nIHRpbWVab25l
T3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5j
cHAKaW5kZXggY2ZkOWMzOTgxMzM3YzdkZDAyYzYyM2NlOGJhNjg2ZWEzNmJiZmZiOS4uYTE2ZmUx
M2MwODU3NjE5NGVjOGM0M2U5ZGFlNjJhMjA1NjY5MDRiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5j
cHAKQEAgLTg0LDYgKzg0LDcgQEAgUmVmPFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4gUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uOjpjb3B5KCkKICNpZiBIQVZFKEFVRElUX1RPS0VOKQogICAgIGNv
cHktPm1fcHJlc2VudGluZ0FwcGxpY2F0aW9uUHJvY2Vzc1Rva2VuID0gdGhpcy0+bV9wcmVzZW50
aW5nQXBwbGljYXRpb25Qcm9jZXNzVG9rZW47CiAjZW5kaWYKKyAgICBjb3B5LT5tX3RpbWVab25l
T3ZlcnJpZGUgPSB0aGlzLT5tX3RpbWVab25lT3ZlcnJpZGU7CiAgICAgcmV0dXJuIGNvcHk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24uaAppbmRleCBjYzY0MmM1MWJhNjYzZTg0M2RmNTRkMTRjZmNjYjZk
NGVmODE3MjZjLi5jNzc5ZDA0NTUwMGJiMmFjOWVmZTUzNWMyYzNjNjRiNjRhNmUxMjEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbi5oCkBAIC0xNjQsNiArMTY0LDkgQEAgcHVibGljOgogICAgIGNvbnN0IHN0
ZDo6b3B0aW9uYWw8TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpDb25maWd1cmF0aW9uPiYgbWVtb3J5
UHJlc3N1cmVIYW5kbGVyQ29uZmlndXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWVtb3J5UHJl
c3N1cmVIYW5kbGVyQ29uZmlndXJhdGlvbjsgfQogI2VuZGlmCiAKKyAgICB2b2lkIHNldFRpbWVa
b25lT3ZlcnJpZGUoY29uc3QgV1RGOjpTdHJpbmcmIHRpbWVab25lT3ZlcnJpZGUpIHsgbV90aW1l
Wm9uZU92ZXJyaWRlID0gdGltZVpvbmVPdmVycmlkZTsgfQorICAgIGNvbnN0IFdURjo6U3RyaW5n
JiB0aW1lWm9uZU92ZXJyaWRlKCkgY29uc3QgeyByZXR1cm4gbV90aW1lWm9uZU92ZXJyaWRlOyB9
CisKIHByaXZhdGU6CiAgICAgV1RGOjpTdHJpbmcgbV9pbmplY3RlZEJ1bmRsZVBhdGg7CiAgICAg
VmVjdG9yPFdURjo6U3RyaW5nPiBtX2N1c3RvbUNsYXNzZXNGb3JQYXJhbWV0ZXJDb2RlcjsKQEAg
LTIwNiw2ICsyMDksNyBAQCBwcml2YXRlOgogI2lmIEhBVkUoQVVESVRfVE9LRU4pCiAgICAgc3Rk
OjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBtX3ByZXNlbnRpbmdBcHBsaWNhdGlvblByb2Nlc3NU
b2tlbjsKICNlbmRpZgorICAgIFdURjo6U3RyaW5nIG1fdGltZVpvbmVPdmVycmlkZTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCmluZGV4IDc4
NDk4M2MxMDNiMjljYTNjNzc0YzYyMDQ5MjY1OTRlYmM4ZGZlZTQuLmE0YjZkNzU3ZTA2NjMzNGFm
OThkZWMyMThhYzUyMjYxYjlkNWNjZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgK
QEAgLTI0LDYgKzI0LDcgQEAKICAqLwogCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24u
aD4KKyNpbXBvcnQgPFdlYktpdC9XS0Jhc2UuaD4KICNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRp
b24uaD4KIAogTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KQEAgLTc3LDYgKzc4LDggQEAgV0tfQ0xB
U1NfQVZBSUxBQkxFKG1hY29zKDEwLjEwKSwgaW9zKDguMCkpCiAKIEBwcm9wZXJ0eSAobm9uYXRv
bWljKSBCT09MIGNvbmZpZ3VyZUpTQ0ZvclRlc3RpbmcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygx
MC4xNS40KSwgaW9zKDEzLjQpKTsKIAorQHByb3BlcnR5IChub25hdG9taWMsIG51bGxhYmxlLCBj
b3B5KSBOU1N0cmluZyAqdGltZVpvbmVPdmVycmlkZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdL
X01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiBAZW5kCiAKIE5TX0FTU1VNRV9OT05OVUxM
X0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1By
b2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubW0KaW5kZXggOTJiNTA5YWQ0ODJmNGQz
YjVhNjlhMDBiMGZkMjNjNGQwYWFiMTZhZS4uY2I3NDQ1YjdmZTgxNGZlZmY1MGExNGI4ZGQyNWY1
YTMyZjcwYTE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1tCkBAIC00MDMsNiAr
NDAzLDE2IEBACiAgICAgX3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi0+c2V0U2hvdWxkQ29uZmln
dXJlSlNDRm9yVGVzdGluZyh2YWx1ZSk7CiB9CiAKKy0gKE5TU3RyaW5nICopdGltZVpvbmVPdmVy
cmlkZQoreworICAgIHJldHVybiBfcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLT50aW1lWm9uZU92
ZXJyaWRlKCk7Cit9CisKKy0gKHZvaWQpc2V0VGltZVpvbmVPdmVycmlkZTooTlNTdHJpbmcgKil0
aW1lWm9uZQoreworICAgIF9wcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24tPnNldFRpbWVab25lT3Zl
cnJpZGUodGltZVpvbmUpOworfQorCiAjcHJhZ21hIG1hcmsgV0tPYmplY3QgcHJvdG9jb2wgaW1w
bGVtZW50YXRpb24KIAogLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKaW5kZXgg
OWI2YjU0MWRmNDVjOTI1ZDIyMGY3Mjg4NDQ2YzM3ZmNmNGQ3MDhiYS4uNzhkMzgyOTBmMmJmM2My
Yzk5ZmM1NGUyMjg1ZDAzNjJmZTY4MjNjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTY1LDYgKzY1LDcgQEAK
ICNpbmNsdWRlIDxsaWJpbnRsLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHBhbC9I
eXN0ZXJlc2lzQWN0aXZpdHkuaD4KKyNpbmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4KICNpbmNsdWRl
IDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hTZXQuaD4KQEAgLTEyNyw2ICsxMjgsNyBAQCBlbnVtIHsKICNlbmRpZgogI2VuZGlm
CiAgICAgUFJPUF9NRU1PUllfUFJFU1NVUkVfU0VUVElOR1MsCisgICAgUFJPUF9USU1FX1pPTkVf
T1ZFUlJJREUsCiAgICAgTl9QUk9QRVJUSUVTLAogfTsKIApAQCAtMjQ1LDYgKzI0Nyw4IEBAIHN0
cnVjdCBfV2ViS2l0V2ViQ29udGV4dFByaXZhdGUgewogICAgIFBBTDo6SHlzdGVyZXNpc0FjdGl2
aXR5IGRuc1ByZWZldGNoSHlzdGVyZXJpczsKIAogICAgIFdlYktpdE1lbW9yeVByZXNzdXJlU2V0
dGluZ3MqIG1lbW9yeVByZXNzdXJlU2V0dGluZ3M7CisKKyAgICBTdHJpbmcgdGltZVpvbmVPdmVy
cmlkZTsKIH07CiAKIHN0YXRpYyBndWludCBzaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwgfTsK
QEAgLTM1MCw2ICszNTQsOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJDb250ZXh0R2V0UHJvcGVy
dHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSUQsIEdWYWx1ZSogdgogICAgICAgICBicmVh
azsKICNlbmRpZgogI2VuZGlmCisgICAgY2FzZSBQUk9QX1RJTUVfWk9ORV9PVkVSUklERToKKyAg
ICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZhbHVlLCB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3Rp
bWVfem9uZV9vdmVycmlkZShjb250ZXh0KSk7CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJ
RCwgcGFyYW1TcGVjKTsKICAgICB9CkBAIC0zODUsNiArMzkyLDExIEBAIHN0YXRpYyB2b2lkIHdl
YmtpdFdlYkNvbnRleHRTZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJRCwg
Y29uc3QgR1ZhCiAgICAgICAgIGNvbnRleHQtPnByaXYtPm1lbW9yeVByZXNzdXJlU2V0dGluZ3Mg
PSBzZXR0aW5ncyA/IHdlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfY29weShzdGF0aWNf
Y2FzdDxXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzKj4oc2V0dGluZ3MpKSA6IG51bGxwdHI7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBjYXNlIFBST1BfVElNRV9aT05FX09WRVJSSURF
OiB7CisgICAgICAgIGlmIChjb25zdCBhdXRvKiBvdmVycmlkZSA9IGdfdmFsdWVfZ2V0X3N0cmlu
Zyh2YWx1ZSkpCisgICAgICAgICAgICB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3RpbWVfem9uZV9v
dmVycmlkZShjb250ZXh0LCBvdmVycmlkZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBk
ZWZhdWx0OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0
LCBwcm9wSUQsIHBhcmFtU3BlYyk7CiAgICAgfQpAQCAtNDEzLDYgKzQyNSw3IEBAIHN0YXRpYyB2
b2lkIHdlYmtpdFdlYkNvbnRleHRDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAgICAgICAg
IC8vIE9uY2UgdGhlIHNldHRpbmdzIGhhdmUgYmVlbiBwYXNzZWQgdG8gdGhlIFByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbiwgd2UgZG9uJ3QgbmVlZCB0aGVtIGFueW1vcmUgc28gd2UgY2FuIGZyZWUg
dGhlbS4KICAgICAgICAgZ19jbGVhcl9wb2ludGVyKCZwcml2LT5tZW1vcnlQcmVzc3VyZVNldHRp
bmdzLCB3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2ZyZWUpOwogICAgIH0KKyAgICBj
b25maWd1cmF0aW9uLnNldFRpbWVab25lT3ZlcnJpZGUocHJpdi0+dGltZVpvbmVPdmVycmlkZSk7
CiAKICAgICBpZiAoIXByaXYtPndlYnNpdGVEYXRhTWFuYWdlcikKICAgICAgICAgcHJpdi0+d2Vi
c2l0ZURhdGFNYW5hZ2VyID0gYWRvcHRHUmVmKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9u
ZXcoImxvY2FsLXN0b3JhZ2UtZGlyZWN0b3J5IiwgcHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5
LmRhdGEoKSwgbnVsbHB0cikpOwpAQCAtNTcyLDYgKzU4NSwyOCBAQCBzdGF0aWMgdm9pZCB3ZWJr
aXRfd2ViX2NvbnRleHRfY2xhc3NfaW5pdChXZWJLaXRXZWJDb250ZXh0Q2xhc3MqIHdlYkNvbnRl
eHRDbGFzcwogICAgICAgICAgICAgV0VCS0lUX1RZUEVfTUVNT1JZX1BSRVNTVVJFX1NFVFRJTkdT
LAogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9XUklU
QUJMRSB8IEdfUEFSQU1fQ09OU1RSVUNUX09OTFkpKTsKIAorICAgIC8qKgorICAgICAqIFdlYktp
dFdlYkNvbnRleHQ6dGltZS16b25lLW92ZXJyaWRlOgorICAgICAqCisgICAgICogVGhlIHRpbWV6
b25lIG92ZXJyaWRlIGZvciB0aGlzIHdlYiBjb250ZXh0LiBTZXR0aW5nIHRoaXMgcHJvcGVydHkg
cHJvdmlkZXMgYSBiZXR0ZXIKKyAgICAgKiBhbHRlcm5hdGl2ZSB0byBjb25maWd1cmUgdGhlIHRp
bWV6b25lIGluZm9ybWF0aW9uIGZvciBhbGwgd2Vidmlld3MgbWFuYWdlZCBieSB0aGUgV2ViQ29u
dGV4dC4KKyAgICAgKiBUaGUgb3RoZXIsIGxlc3Mgb3B0aW1hbCwgYXBwcm9hY2ggaXMgdG8gZ2xv
YmFsbHkgc2V0IHRoZSBUWiBlbnZpcm9ubWVudCB2YXJpYWJsZSBpbiB0aGUKKyAgICAgKiBwcm9j
ZXNzIGJlZm9yZSBjcmVhdGluZyB0aGUgY29udGV4dC4gSG93ZXZlciB0aGlzIGFwcHJvYWNoIG1p
Z2h0IG5vdCBiZSB2ZXJ5IGNvbnZlbmllbnQgYW5kCisgICAgICogY2FuIGhhdmUgc2lkZS1lZmZl
Y3RzIGluIHlvdXIgYXBwbGljYXRpb24uCisgICAgICoKKyAgICAgKiBUaGUgZXhwZWN0ZWQgdmFs
dWVzIGZvciB0aGlzIHByb3BlcnR5IGFyZSBkZWZpbmVkIGluIHRoZSBJQU5BIHRpbWV6b25lIGRh
dGFiYXNlLiBTZWUgdGhpcworICAgICAqIHdpa2lwZWRpYSBwYWdlIGZvciBpbnN0YW5jZSwgaHR0
cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGlzdF9vZl90el9kYXRhYmFzZV90aW1lX3pvbmVz
LgorICAgICAqCisgICAgICogU2luY2U6IDIuMzgKKyAgICAgKi8KKyAgICBzT2JqUHJvcGVydGll
c1tQUk9QX1RJTUVfWk9ORV9PVkVSUklERV0gPQorICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5n
KAorICAgICAgICAgICAgInRpbWUtem9uZS1vdmVycmlkZSIsCisgICAgICAgICAgICBfKCJUaW1l
IFpvbmUgT3ZlcnJpZGUiKSwKKyAgICAgICAgICAgIF8oIlRoZSB0aW1lIHpvbmUgdG8gdXNlIGlu
c3RlYWQgb2YgdGhlIHN5c3RlbSBvbmUiKSwKKyAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAg
ICAgICBzdGF0aWNfY2FzdDxHUGFyYW1GbGFncz4oV0VCS0lUX1BBUkFNX1JFQURXUklURSB8IEdf
UEFSQU1fQ09OU1RSVUNUX09OTFkpKTsKKwogICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJv
cGVydGllcyhnT2JqZWN0Q2xhc3MsIE5fUFJPUEVSVElFUywgc09ialByb3BlcnRpZXMpOwogCiAg
ICAgLyoqCkBAIC0xODM1LDYgKzE4NzAsMzkgQEAgZ2Jvb2xlYW4gd2Via2l0X3dlYl9jb250ZXh0
X2dldF91c2Vfc3lzdGVtX2FwcGVhcmFuY2VfZm9yX3Njcm9sbGJhcnMoV2ViS2l0V2ViQ28KIH0K
ICNlbmRpZgogCisvKioKKyAqIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfdGltZV96b25lX292ZXJy
aWRlOgorICogQGNvbnRleHQ6IGEgI1dlYktpdFdlYkNvbnRleHQKKyAqIEB0aW1lX3pvbmVfb3Zl
cnJpZGU6IHZhbHVlIHRvIHNldAorICoKKyAqIFNldCB0aGUgI1dlYktpdFdlYkNvbnRleHQ6dGlt
ZS16b25lLW92ZXJyaWRlIHByb3BlcnR5LiBSZWZlciB0byB0aGUgSUFOQSBkYXRhYmFzZSBmb3Ig
dmFsaWQKKyAqIHNwZWNpZmllcnMsIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xpc3Rf
b2ZfdHpfZGF0YWJhc2VfdGltZV96b25lcworICoKKyAqIFNpbmNlOiAyLjM4CisgKi8KK3ZvaWQg
d2Via2l0X3dlYl9jb250ZXh0X3NldF90aW1lX3pvbmVfb3ZlcnJpZGUoV2ViS2l0V2ViQ29udGV4
dCogY29udGV4dCwgY29uc3QgZ2NoYXIqIHRpbWVab25lT3ZlcnJpZGUpCit7CisgICAgZ19yZXR1
cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX0NPTlRFWFQoY29udGV4dCkpOworICAgIGdfcmV0dXJu
X2lmX2ZhaWwoaXNUaW1lWm9uZVZhbGlkKHRpbWVab25lT3ZlcnJpZGUpKTsKKworICAgIGNvbnRl
eHQtPnByaXYtPnRpbWVab25lT3ZlcnJpZGUgPSBTdHJpbmc6OmZyb21VVEY4KHRpbWVab25lT3Zl
cnJpZGUpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfdGltZV96b25lX292
ZXJyaWRlOgorICogQGNvbnRleHQ6IGEgI1dlYktpdFdlYkNvbnRleHQKKyAqCisgKiBHZXQgdGhl
ICNXZWJLaXRXZWJDb250ZXh0OnRpbWUtem9uZS1vdmVycmlkZSBwcm9wZXJ0eS4KKyAqCisgKiBT
aW5jZTogMi4zOAorICovCitjb25zdCBnY2hhciogd2Via2l0X3dlYl9jb250ZXh0X2dldF90aW1l
X3pvbmVfb3ZlcnJpZGUoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBnX3JldHVy
bl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0NPTlRFWFQoY29udGV4dCksIG51bGxwdHIpOwor
CisgICAgcmV0dXJuIGNvbnRleHQtPnByaXYtPnRpbWVab25lT3ZlcnJpZGUudXRmOCgpLmRhdGEo
KTsKK30KKwogdm9pZCB3ZWJraXRXZWJDb250ZXh0SW5pdGlhbGl6ZU5vdGlmaWNhdGlvblBlcm1p
c3Npb25zKFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgZ19zaWduYWxfZW1pdChj
b250ZXh0LCBzaWduYWxzW0lOSVRJQUxJWkVfTk9USUZJQ0FUSU9OX1BFUk1JU1NJT05TXSwgMCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNv
bnRleHQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4
dC5oCmluZGV4IGJkZDkxMjU1Y2NkODJlYTU3NzQyMjI3ODNiNTk0NzZhMzFiY2ZiMmUuLjk3YTRk
NThmMjY3Nzc0M2FjOGE5Yjk2ZGQ0ZTBiYTNkOGEwNGQyYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oCkBAIC0zMDIsNiArMzAy
LDEzIEBAIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfdXNlX3N5c3RlbV9hcHBlYXJhbmNlX2Zvcl9z
Y3JvbGxiYXJzIChXZWJLaXRXZWJDb250ZXh0CiBXRUJLSVRfQVBJIGdib29sZWFuCiB3ZWJraXRf
d2ViX2NvbnRleHRfZ2V0X3VzZV9zeXN0ZW1fYXBwZWFyYW5jZV9mb3Jfc2Nyb2xsYmFycyAoV2Vi
S2l0V2ViQ29udGV4dCAgICAgICpjb250ZXh0KTsKIAorV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRf
d2ViX2NvbnRleHRfc2V0X3RpbWVfem9uZV9vdmVycmlkZSAgICAgICAgICAgKFdlYktpdFdlYkNv
bnRleHQgICAgICAgICAgICAgICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAgICAgICAgICAq
dGltZV96b25lX292ZXJyaWRlKTsKKworV0VCS0lUX0FQSSBjb25zdCBnY2hhcioKK3dlYmtpdF93
ZWJfY29udGV4dF9nZXRfdGltZV96b25lX292ZXJyaWRlICAgICAgICAgICAoV2ViS2l0V2ViQ29u
dGV4dCAgICAgICAgICAgICAgKmNvbnRleHQpOworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViQ29udGV4
dC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJDb250ZXh0LmgK
aW5kZXggNjg0MWMwNzlhYTRiNjFkODljMDhiMWE5NjlmOTEzN2Q5YjhhMDQzNC4uZWE1NWY4NzZj
MzFlYmQwYmViZWI0YmJmZGNhY2M5MzdhOWM3OTdiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJDb250ZXh0LmgKQEAgLTI5MSw2ICsyOTEsMTMg
QEAgV0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRfd2ViX2NvbnRleHRfc2VuZF9tZXNzYWdlX3RvX2Fs
bF9leHRlbnNpb25zICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICAgICAgICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJL
aXRVc2VyTWVzc2FnZSAgICAgICAgICAgICAqbWVzc2FnZSk7CiAKK1dFQktJVF9BUEkgdm9pZAor
d2Via2l0X3dlYl9jb250ZXh0X3NldF90aW1lX3pvbmVfb3ZlcnJpZGUgICAgICAgICAgIChXZWJL
aXRXZWJDb250ZXh0ICAgICAgICAgICAgICAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgICAg
ICAgICAgKnRpbWVfem9uZV9vdmVycmlkZSk7CisKK1dFQktJVF9BUEkgY29uc3QgZ2NoYXIqCit3
ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3RpbWVfem9uZV9vdmVycmlkZSAgICAgICAgICAgKFdlYktp
dFdlYkNvbnRleHQgICAgICAgICAgICAgICpjb250ZXh0KTsKKwogR19FTkRfREVDTFMKIAogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggYmUz
Njg5ZmE1YTBlYWY2ZDQ1NWQyMjVmZjgzNDJiOTA4OGFkNmMwZi4uYWYzNzEyZmZiYzk1Y2EzNzky
MzJmZmFkNTY5MzkwOTc5MzgzMDM4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcApAQCAtODc0LDYgKzg3NCw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6Omlu
aXRpYWxpemVOZXdXZWJQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgV2Vic2l0ZURh
CiAKICAgICBwYXJhbWV0ZXJzLnByZXNlbnRpbmdBcHBsaWNhdGlvblBJRCA9IG1fY29uZmlndXJh
dGlvbi0+cHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKCk7CiAKKyAgICBwYXJhbWV0ZXJzLnRpbWVa
b25lT3ZlcnJpZGUgPSBtX2NvbmZpZ3VyYXRpb24tPnRpbWVab25lT3ZlcnJpZGUoKTsKKwogICAg
IC8vIEFkZCBhbnkgcGxhdGZvcm0gc3BlY2lmaWMgcGFyYW1ldGVycwogICAgIHBsYXRmb3JtSW5p
dGlhbGl6ZVdlYlByb2Nlc3MocHJvY2VzcywgcGFyYW1ldGVycyk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBkNzdlMDNkYjEyN2E1YWFhZDQxMDkxNmEyZDUx
NjhhNGIxMjRhNzMwLi5iNGE5MGQ2OTQyNjBlOWVkMmM1OGQzMGU4YmFjYTJjOTQyMDRiNGEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xNDIsNiArMTQyLDcg
QEAKICNpbmNsdWRlIDxwYWwvTG9nZ2luZy5oPgogI2luY2x1ZGUgPHd0Zi9BbGdvcml0aG1zLmg+
CiAjaW5jbHVkZSA8d3RmL0NhbGxiYWNrQWdncmVnYXRvci5oPgorI2luY2x1ZGUgPHd0Zi9EYXRl
TWF0aC5oPgogI2luY2x1ZGUgPHd0Zi9MYW5ndWFnZS5oPgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNz
UHJpdmlsZWdlLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTQ5OCw2ICs0OTksOSBA
QCB2b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogCiAgICAgc2V0Q2FjaGVNb2RlbChwYXJhbWV0ZXJz
LmNhY2hlTW9kZWwpOwogCisgICAgaWYgKCFwYXJhbWV0ZXJzLnRpbWVab25lT3ZlcnJpZGUuaXNF
bXB0eSgpKQorICAgICAgICBzZXRUaW1lWm9uZU92ZXJyaWRlKHBhcmFtZXRlcnMudGltZVpvbmVP
dmVycmlkZSk7CisKICAgICBpZiAoIXBhcmFtZXRlcnMub3ZlcnJpZGVMYW5ndWFnZXMuaXNFbXB0
eSgpKSB7CiAgICAgICAgIExPR19XSVRIX1NUUkVBTShMYW5ndWFnZSwgc3RyZWFtIDw8ICJXZWIg
UHJvY2VzcyBpbml0aWFsaXphdGlvbiBpcyBzZXR0aW5nIG92ZXJyaWRlTGFuZ3VhZ2VzOiAiIDw8
IHBhcmFtZXRlcnMub3ZlcnJpZGVMYW5ndWFnZXMpOwogICAgICAgICBvdmVycmlkZVVzZXJQcmVm
ZXJyZWRMYW5ndWFnZXMocGFyYW1ldGVycy5vdmVycmlkZUxhbmd1YWdlcyk7CmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTRmMTY3YjA1ODY0OTZi
ZjRlMDg5M2I5MjMwZjg1MzBlZmIyOThiYS4uMTQ0ODA5MzBmNTgwNjY3Yzk4NTFkOTQ3ZjhjYjUw
YTMwODU4MTcwZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIyLTA0LTEzICBQaGlsaXBwZSBOb3JtYW5kICA8cG5v
cm1hbmRAaWdhbGlhLmNvbT4gYW5kIFl1cnkgU2VtaWtoYXRza3kgPHl1cnlzQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBbV0syXSBBZGQgQVBJIHRvIGFsbG93IGVtYmVkZGVyIHRvIHNldCBhIHRp
bWV6b25lIG92ZXJyaWRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTM4ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgQVBJIHRlc3RzIGZvciB0aGUgdGltZXpvbmUgY29uZmlndXJhdGlvbiBBUEku
IFRoZSBHVEsgYW5kIFdQRSBNaW5pQnJvd3NlcnMgYWxzbyBnYWluZWQKKyAgICAgICAgbmV3IHJ1
bnRpbWUgb3B0aW9ucyBhbGxvd2luZyB0byBleGVyY2lzZSB0aGlzIG5ldyBBUEkuCisKKyAgICAg
ICAgKiBNaW5pQnJvd3Nlci9ndGsvbWFpbi5jOgorICAgICAgICAoYWN0aXZhdGUpOgorICAgICAg
ICAqIE1pbmlCcm93c2VyL3dwZS9tYWluLmNwcDoKKyAgICAgICAgKG1haW4pOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVGltZVpvbmVPdmVycmlk
ZS5tbTogQWRkZWQuCisgICAgICAgIChUaW1lWm9uZU92ZXJyaWRlVGVzdDo6cnVuU2NyaXB0QW5k
RXhlY3V0ZUNhbGxiYWNrKToKKyAgICAgICAgKFRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJDb250ZXh0LmNwcDoKKyAgICAgICAg
KHRlc3RXZWJDb250ZXh0VGltZVpvbmUpOgorICAgICAgICAodGVzdFdlYlZpZXdUaW1lWm9uZU92
ZXJyaWRlKToKKyAgICAgICAgKGJlZm9yZUFsbCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9n
bGliL1dlYktpdEdMaWIvVGVzdE1haW4uY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvZ2xp
Yi9XZWJLaXRHTGliL1Rlc3RNYWluLmg6CisgICAgICAgIChUZXN0OjpUZXN0KToKKyAgICAgICAg
KiBmbGF0cGFrL2ZsYXRwYWt1dGlscy5weToKKyAgICAgICAgKFdlYmtpdEZsYXRwYWsucnVuX2lu
X3NhbmRib3gpOgorCiAyMDIyLTA0LTE0ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBw
bGUuY29tPgogCiAgICAgICAgIFVuZG8gb3B0aW9uIGFmdGVyIGludm9raW5nICJNYXJrdXAgSW1h
Z2UiIHNheXMgIlVuZG8gUGFzdGUiCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsv
bWFpbi5jIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYwppbmRleCA5ZTc4NjNiNjFiM2U5
ZGI3NmUwNGUxNGY0NTExNjY4NGRhZTQ0ZTM3Li44MTdlOGZlYzdlMThiM2ZiZGU4NWFhNTM0MjYz
ZGVmNjA0NThiMWE4IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCisr
KyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMKQEAgLTUyLDYgKzUyLDcgQEAgc3RhdGlj
IGNvbnN0IGNoYXIgKmNvb2tpZXNGaWxlOwogc3RhdGljIGNvbnN0IGNoYXIgKmNvb2tpZXNQb2xp
Y3k7CiBzdGF0aWMgY29uc3QgY2hhciAqcHJveHk7CiBzdGF0aWMgZ2Jvb2xlYW4gZGFya01vZGU7
CitzdGF0aWMgY2hhciogdGltZVpvbmU7CiBzdGF0aWMgZ2Jvb2xlYW4gZW5hYmxlSVRQOwogc3Rh
dGljIGdib29sZWFuIGVuYWJsZVNhbmRib3g7CiBzdGF0aWMgZ2Jvb2xlYW4gZXhpdEFmdGVyTG9h
ZDsKQEAgLTE0OSw2ICsxNTAsNyBAQCBzdGF0aWMgY29uc3QgR09wdGlvbkVudHJ5IGNvbW1hbmRM
aW5lT3B0aW9uc1tdID0KICAgICB7ICJlbmFibGUtaXRwIiwgMCwgMCwgR19PUFRJT05fQVJHX05P
TkUsICZlbmFibGVJVFAsICJFbmFibGUgSW50ZWxsaWdlbnQgVHJhY2tpbmcgUHJldmVudGlvbiAo
SVRQKSIsIE5VTEwgfSwKICAgICB7ICJlbmFibGUtc2FuZGJveCIsIDAsIDAsIEdfT1BUSU9OX0FS
R19OT05FLCAmZW5hYmxlU2FuZGJveCwgIkVuYWJsZSB3ZWIgcHJvY2VzcyBzYW5kYm94IHN1cHBv
cnQiLCBOVUxMIH0sCiAgICAgeyAiZXhpdC1hZnRlci1sb2FkIiwgMCwgMCwgR19PUFRJT05fQVJH
X05PTkUsICZleGl0QWZ0ZXJMb2FkLCAiUXVpdCB0aGUgYnJvd3NlciBhZnRlciB0aGUgbG9hZCBm
aW5pc2hlcyIsIE5VTEwgfSwKKyAgICB7ICJ0aW1lLXpvbmUiLCAndCcsIDAsIEdfT1BUSU9OX0FS
R19TVFJJTkcsICZ0aW1lWm9uZSwgIlNldCB0aW1lIHpvbmUiLCAiVElNRVpPTkUiIH0sCiAgICAg
eyAidmVyc2lvbiIsICd2JywgMCwgR19PUFRJT05fQVJHX05PTkUsICZwcmludFZlcnNpb24sICJQ
cmludCB0aGUgV2ViS2l0R1RLIHZlcnNpb24iLCBOVUxMIH0sCiAgICAgeyBHX09QVElPTl9SRU1B
SU5JTkcsIDAsIDAsIEdfT1BUSU9OX0FSR19GSUxFTkFNRV9BUlJBWSwgJnVyaUFyZ3VtZW50cywg
MCwgIltVUkzigKZdIiB9LAogICAgIHsgMCwgMCwgMCwgMCwgMCwgMCwgMCB9CkBAIC02NzQsNiAr
Njc2LDcgQEAgc3RhdGljIHZvaWQgYWN0aXZhdGUoR0FwcGxpY2F0aW9uICphcHBsaWNhdGlvbiwg
V2ViS2l0U2V0dGluZ3MgKndlYmtpdFNldHRpbmdzKQogI2lmICFHVEtfQ0hFQ0tfVkVSU0lPTigz
LCA5OCwgMCkKICAgICAgICAgInVzZS1zeXN0ZW0tYXBwZWFyYW5jZS1mb3Itc2Nyb2xsYmFycyIs
IEZBTFNFLAogI2VuZGlmCisgICAgICAgICJ0aW1lLXpvbmUtb3ZlcnJpZGUiLCB0aW1lWm9uZSwK
ICAgICAgICAgTlVMTCk7CiAgICAgZ19vYmplY3RfdW5yZWYobWFuYWdlcik7CiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL01pbmlCcm93c2VyL3dwZS9tYWluLmNwcCBiL1Rvb2xzL01pbmlCcm93c2VyL3dw
ZS9tYWluLmNwcAppbmRleCA0NTg0ZDk1NzNiYTdkMTFkMjI0OWYxNzU1MmVlNWM5NDdhZjUzOWQy
Li5jZDFkMzY0N2M4YmZhYTZjYzk2NDJjZTYzMDYwYTVhYTZjNTk0NzkxIDEwMDY0NAotLS0gYS9U
b29scy9NaW5pQnJvd3Nlci93cGUvbWFpbi5jcHAKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvd3Bl
L21haW4uY3BwCkBAIC00Niw2ICs0Niw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBjb29raWVzRmls
ZTsKIHN0YXRpYyBjb25zdCBjaGFyKiBjb29raWVzUG9saWN5Owogc3RhdGljIGNvbnN0IGNoYXIq
IHByb3h5OwogY29uc3QgY2hhciogYmdDb2xvcjsKK3N0YXRpYyBjaGFyKiB0aW1lWm9uZTsKIHN0
YXRpYyBnYm9vbGVhbiBlbmFibGVJVFA7CiBzdGF0aWMgZ2Jvb2xlYW4gcHJpbnRWZXJzaW9uOwog
c3RhdGljIEdIYXNoVGFibGUqIG9wZW5WaWV3czsKQEAgLTYzLDYgKzY0LDcgQEAgc3RhdGljIGNv
bnN0IEdPcHRpb25FbnRyeSBjb21tYW5kTGluZU9wdGlvbnNbXSA9CiAgICAgeyAiY29udGVudC1m
aWx0ZXIiLCAwLCAwLCBHX09QVElPTl9BUkdfRklMRU5BTUUsICZjb250ZW50RmlsdGVyLCAiSlNP
TiB3aXRoIGNvbnRlbnQgZmlsdGVyaW5nIHJ1bGVzIiwgIkZJTEUiIH0sCiAgICAgeyAiYmctY29s
b3IiLCAwLCAwLCBHX09QVElPTl9BUkdfU1RSSU5HLCAmYmdDb2xvciwgIldpbmRvdyBiYWNrZ3Jv
dW5kIGNvbG9yLiBEZWZhdWx0OiB3aGl0ZSIsICJDT0xPUiIgfSwKICAgICB7ICJlbmFibGUtaXRw
IiwgMCwgMCwgR19PUFRJT05fQVJHX05PTkUsICZlbmFibGVJVFAsICJFbmFibGUgSW50ZWxsaWdl
bnQgVHJhY2tpbmcgUHJldmVudGlvbiAoSVRQKSIsIG51bGxwdHIgfSwKKyAgICB7ICJ0aW1lLXpv
bmUiLCAndCcsIDAsIEdfT1BUSU9OX0FSR19TVFJJTkcsICZ0aW1lWm9uZSwgIlNldCB0aW1lIHpv
bmUiLCAiVElNRVpPTkUiIH0sCiAgICAgeyAidmVyc2lvbiIsICd2JywgMCwgR19PUFRJT05fQVJH
X05PTkUsICZwcmludFZlcnNpb24sICJQcmludCB0aGUgV1BFIHZlcnNpb24iLCBudWxscHRyIH0s
CiAgICAgeyBHX09QVElPTl9SRU1BSU5JTkcsIDAsIDAsIEdfT1BUSU9OX0FSR19GSUxFTkFNRV9B
UlJBWSwgJnVyaUFyZ3VtZW50cywgbnVsbHB0ciwgIltVUkxdIiB9LAogICAgIHsgbnVsbHB0ciwg
MCwgMCwgR19PUFRJT05fQVJHX05PTkUsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIgfQpAQCAt
MjI5LDcgKzIzMSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAgICAgaWYg
KGlnbm9yZVRMU0Vycm9ycykKICAgICAgICAgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX3Nl
dF90bHNfZXJyb3JzX3BvbGljeShtYW5hZ2VyLCBXRUJLSVRfVExTX0VSUk9SU19QT0xJQ1lfSUdO
T1JFKTsKIAotICAgIGF1dG8qIHdlYkNvbnRleHQgPSB3ZWJraXRfd2ViX2NvbnRleHRfbmV3X3dp
dGhfd2Vic2l0ZV9kYXRhX21hbmFnZXIobWFuYWdlcik7CisgICAgYXV0byogd2ViQ29udGV4dCA9
IFdFQktJVF9XRUJfQ09OVEVYVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX0NPTlRFWFQs
ICJ3ZWJzaXRlLWRhdGEtbWFuYWdlciIsIG1hbmFnZXIsICJ0aW1lLXpvbmUtb3ZlcnJpZGUiLCB0
aW1lWm9uZSwgbnVsbHB0cikpOwogICAgIGdfb2JqZWN0X3VucmVmKG1hbmFnZXIpOwogCiAgICAg
aWYgKGNvb2tpZXNQb2xpY3kpIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvU291
cmNlc0NvY29hLnR4dCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvU291cmNlc0NvY29hLnR4dAppbmRl
eCAzNmFkMzQ3NWE5MDM0ZWNmZWU3ZDZmNWViMmM5ZDc0YzgwNmMyZTJkLi4wMTZjMmM0NzZkMTU4
MzVhZTQ5NDRhMmJmMjA3MGNmMDBjMzcwYzg3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Tb3VyY2VzQ29j
b2EudHh0CkBAIC0yNDAsNiArMjQwLDcgQEAgVGVzdHMvV2ViS2l0Q29jb2EvVGVzdFVSTFNjaGVt
ZUhhbmRsZXIubW0KIFRlc3RzL1dlYktpdENvY29hL1RleHRNYW5pcHVsYXRpb24ubW0KIFRlc3Rz
L1dlYktpdENvY29hL1RleHRTaXplLm1tCiBUZXN0cy9XZWJLaXRDb2NvYS9UZXh0V2lkdGgubW0K
K1Rlc3RzL1dlYktpdENvY29hL1RpbWVab25lT3ZlcnJpZGUubW0KIFRlc3RzL1dlYktpdENvY29h
L1RvcENvbnRlbnRJbnNldC5tbQogVGVzdHMvV2ViS2l0Q29jb2EvVUlEZWxlZ2F0ZS5tbQogVGVz
dHMvV2ViS2l0Q29jb2EvVXBsb2FkRGlyZWN0b3J5Lm1tCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDYyMTJjOTMwMTYzZDFmOWFmMDUzNzZjNmRkZTk2NTgzMTVjMzE0NDMuLjU3ZmEwZDk4MGVk
Njc3YmUwMzJmMjJlN2VkN2E5YTkxODJmMGM5OWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0zMDI0LDYgKzMwMjQsNyBAQAogCQlFQkE3NUM0ODI3NUVEN0JFMDBENkQzMUMgLyogUHVzaE1l
c3NhZ2VDcnlwdG8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHVzaE1lc3NhZ2VDcnlwdG8uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFQzc5RjE2OEJFNDU0RTU3OUU0MTdCMDUg
LyogTWFya2FibGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFy
a2FibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFQ0E2ODBDRDFFNjhDQzA5
MDA3MzFEMjAgLyogU3RyaW5nVXRpbGl0aWVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gU3RyaW5nVXRpbGl0aWVzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlGM0NFRjZCODI4MDhGMkQzMDAxRTIzQTUgLyogVGltZVpvbmVPdmVycmlkZS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRpbWVab25lT3ZlcnJpZGUubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUYzRkMzRUUyMTM2NzhCNzMwMDEyNkE2NSAvKiBsaWJndGVzdC5hICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gYXJjaGl2ZS5h
cjsgcGF0aCA9IGxpYmd0ZXN0LmE7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07
CiAJCUY0MDEwQjdGMjREQTI0QUMwMEE4NzZFMiAvKiBOYXZpZ2F0aW9uU3dpcGVUZXN0cy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5hdmlnYXRpb25Td2lwZVRl
c3RzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDAxMEI4MTI0REEyNjdGMDBB
ODc2RTIgLyogUG9zZUFzQ2xhc3MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IG5hbWUgPSBQb3NlQXNDbGFzcy5tbTsgcGF0aCA9IC4uL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2Ev
UG9zZUFzQ2xhc3MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNjkyLDYgKzM2
OTMsNyBAQAogCQkJCTlCMDJFMEQ1MjM1RkE0N0QwMDQwNDRCMiAvKiBUZXh0TWFuaXB1bGF0aW9u
Lm1tICovLAogCQkJCTVDMTZGOEZCMjMwQzk0MkIwMDc0QzRBOCAvKiBUZXh0U2l6ZS5tbSAqLywK
IAkJCQlDMjJGQTMyQTIyOEY4NzA4MDA5RDc5ODggLyogVGV4dFdpZHRoLm1tICovLAorCQkJCUYz
Q0VGNkI4MjgwOEYyRDMwMDFFMjNBNSAvKiBUaW1lWm9uZU92ZXJyaWRlLm1tICovLAogCQkJCTVD
NzNBODFBMjMyMzA1OTgwMERFQTg1QSAvKiBUTFNEZXByZWNhdGlvbi5tbSAqLywKIAkJCQlDREUx
OTVCMzFDRkUwQURFMDA1M0QyNTYgLyogVG9wQ29udGVudEluc2V0Lm1tICovLAogCQkJCTVDQjQw
QjREMUY0Qjk4QkUwMDdEQzdCOSAvKiBVSURlbGVnYXRlLm1tICovLApkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UaW1lWm9uZU92ZXJyaWRlLm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UaW1lWm9uZU92ZXJyaWRlLm1t
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjVkZTk1MDE0ZDdjMzlhMWYwYmM0NmVkZDQ4YTdmM2VhZTVkOTQzNDgKLS0t
IC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Rp
bWVab25lT3ZlcnJpZGUubW0KQEAgLTAsMCArMSwxMDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpZiBQ
TEFURk9STShDT0NPQSkKKworI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQg
IlRlc3QuaCIKKyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQgPFdlYktpdC9XS1dl
YlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1By
aXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaD4K
KyNpbXBvcnQgPHd0Zi9GdW5jdGlvbi5oPgorI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CisKK2NsYXNzIFRpbWVab25lT3ZlcnJpZGVUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3Qgewor
cHVibGljOgorICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgYXV0byBj
b25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGlu
aXRdKTsKKyAgICAgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZyA9IGFkb3B0TlMoW1tfV0tQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICAgICAgW3Byb2Nlc3NQb29s
Q29uZmlnIHNldFRpbWVab25lT3ZlcnJpZGU6QCJFdXJvcGUvQmVybGluIl07CisKKyAgICAgICAg
X3dlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U01ha2VSZWN0KDAsIDAsIDMwMCwgMzAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0
KCkgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlnLmdldCgpXSk7Cisg
ICAgfQorCisgICAgdm9pZCBydW5TY3JpcHRBbmRFeGVjdXRlQ2FsbGJhY2soY29uc3QgU3RyaW5n
JiBzY3JpcHQsIEZ1bmN0aW9uPHZvaWQoaWQpPiYmIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAg
Ym9vbCBjb21wbGV0ZSA9IGZhbHNlOworICAgICAgICBbX3dlYlZpZXcgZXZhbHVhdGVKYXZhU2Ny
aXB0OnNjcmlwdCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJy
b3IpIHsKKyAgICAgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAgICAgIGNhbGxi
YWNrKHJlc3VsdCk7CisgICAgICAgICAgICBjb21wbGV0ZSA9IHRydWU7CisgICAgICAgIH1dOwor
ICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmNvbXBsZXRlKTsKKyAgICB9CisKKyAg
ICB2b2lkIGNhbGxBc3luY0Z1bmN0aW9uQm9keShjb25zdCBTdHJpbmcmIGZ1bmN0aW9uQm9keSwg
RnVuY3Rpb248dm9pZChpZCk+JiYgY2FsbGJhY2spCisgICAgeworICAgICAgICBib29sIGNvbXBs
ZXRlID0gZmFsc2U7CisgICAgICAgIFtfd2ViVmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0OmZ1bmN0
aW9uQm9keSBhcmd1bWVudHM6bmlsIGluRnJhbWU6bmlsIGluQ29udGVudFdvcmxkOldLQ29udGVu
dFdvcmxkLnBhZ2VXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJv
ciAqZXJyb3IpIHsKKyAgICAgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAgICAg
IGNhbGxiYWNrKHJlc3VsdCk7CisgICAgICAgICAgICBjb21wbGV0ZSA9IHRydWU7CisgICAgICAg
IH1dOworICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmNvbXBsZXRlKTsKKyAgICB9
CisKKworcHJpdmF0ZToKKyAgICBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gX3dlYlZpZXc7Cit9
OworCitURVNUX0YoVGltZVpvbmVPdmVycmlkZVRlc3QsIFRpbWVab25lT3ZlcnJpZGUpCit7Cisg
ICAgcnVuU2NyaXB0QW5kRXhlY3V0ZUNhbGxiYWNrKCJsZXQgbm93ID0gbmV3IERhdGUoKTsgbm93
LmdldFRpbWV6b25lT2Zmc2V0KCkiX3MsIFtdKGlkIHJlc3VsdCkgeworICAgICAgICBFWFBFQ1Rf
V0tfU1RSRVEoW3Jlc3VsdCBzdHJpbmdWYWx1ZV0sICItMTIwIik7CisgICAgfSk7Cit9CisKK1RF
U1RfRihUaW1lWm9uZU92ZXJyaWRlVGVzdCwgVGltZVpvbmVPdmVycmlkZUluV29ya2VycykKK3sK
KyAgICBTdHJpbmcgZnVuY3Rpb25Cb2R5ID0KKyAgICAgICAgInJldHVybiBuZXcgUHJvbWlzZShm
dWxmaWxsID0+IHsiCisgICAgICAgICIgIGNvbnN0IHJlc3VsdHMgPSBbXTsiCisgICAgICAgICIg
IGZvciAobGV0IGkgPSAwOyBpIDwgMzsgaSsrKSB7IgorICAgICAgICAiICAgIGNvbnN0IHdvcmtl
ciA9IG5ldyBXb3JrZXIoJ2RhdGE6dGV4dC9qYXZhc2NyaXB0LHNlbGYucG9zdE1lc3NhZ2UoSW50
bC5EYXRlVGltZUZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLnRpbWVab25lKScpOyIKKyAgICAg
ICAgIiAgICB3b3JrZXIub25tZXNzYWdlID0gbWVzc2FnZSA9PiB7IgorICAgICAgICAiICAgICAg
cmVzdWx0cy5wdXNoKG1lc3NhZ2UuZGF0YSk7IgorICAgICAgICAiICAgICAgaWYgKHJlc3VsdHMu
bGVuZ3RoID09PSAzKSIKKyAgICAgICAgIiAgICAgICAgZnVsZmlsbChyZXN1bHRzLmpvaW4oJywg
JykpOyIKKyAgICAgICAgIiAgICB9OyIKKyAgICAgICAgIiAgfSIKKyAgICAgICAgIn0pOyJfczsK
KyAgICBjYWxsQXN5bmNGdW5jdGlvbkJvZHkoZnVuY3Rpb25Cb2R5LCBbXShpZCByZXN1bHQpIHsK
KyAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFz
c11dKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3VsdCwgQCJFdXJvcGUvQmVybGluLCBF
dXJvcGUvQmVybGluLCBFdXJvcGUvQmVybGluIik7CisgICAgfSk7Cit9CisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRX
ZWJDb250ZXh0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0
V2ViS2l0V2ViQ29udGV4dC5jcHAKaW5kZXggMzEyMDc4ZjdjYTRhYTkwNzlkYjQ2ODMwOTQ4MDVl
YWJlZjkyMzhmZS4uYjFiODdkMmE5NDg5MGM3MmI4MWIxZjMzMDVkMDI4YzhiYzhmMzk4NyAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRX
ZWJDb250ZXh0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIv
VGVzdFdlYktpdFdlYkNvbnRleHQuY3BwCkBAIC05OTEsNiArOTkxLDU4IEBAIHN0YXRpYyB2b2lk
IHRlc3RNZW1vcnlQcmVzc3VyZVNldHRpbmdzKE1lbW9yeVByZXNzdXJlVGVzdCogdGVzdCwgZ2Nv
bnN0cG9pbnRlcikKICAgICBnX2Fzc2VydF9jbXB1aW50KHRlc3QtPm1fdGVybWluYXRpb25SZWFz
b24sID09LCBXRUJLSVRfV0VCX1BST0NFU1NfRVhDRUVERURfTUVNT1JZX0xJTUlUKTsKIH0KIAor
c3RhdGljIHZvaWQgdGVzdFdlYkNvbnRleHRUaW1lWm9uZU92ZXJyaWRlKFdlYlZpZXdUZXN0KiB0
ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsK
KyAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVu
SmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJsZXQgbm93ID0gbmV3IERhdGUoKTsgbm93
LmdldFRpbWV6b25lT2Zmc2V0KCkiLCAmZXJyb3Iub3V0UHRyKCkpOworICAgIGdfYXNzZXJ0X25v
bm51bGwoamF2YXNjcmlwdFJlc3VsdCk7CisgICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0
KCkpOworICAgIC8vIEJ5IGRlZmF1bHQgdGhlIHRlc3QgaGFybmVzcyB1c2VzIHRoZSBQYWNpZmlj
L0xvc19BbmdlbGVzIHRpbWV6b25lIHdoaWNoIGlzIDcgaG91cnMgKDQyMCBtaW51dGVzKSBjb21w
YXJlZCB0byBHTVQuCisgICAgZ19hc3NlcnRfY21waW50KFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0
UmVzdWx0VG9OdW1iZXIoamF2YXNjcmlwdFJlc3VsdCksID09LCA0MjApOworCisgICAgLy8gQ3Jl
YXRlIGEgbmV3IGNvbnRleHQgY29uZmlndXJlZCB3aXRoIHRpbWUgem9uZSBvdmVyaWRlIHNldCB0
byBCZXJsaW4gd2hpY2ggaXMgMTIwIG1pbnV0ZXMgYWhlYWQgb2YgdGhlIEdNVCBvZmZzZXQuCisg
ICAgYXV0byB3ZWJDb250ZXh0ID0gYWRvcHRHUmVmKFdFQktJVF9XRUJfQ09OVEVYVChnX29iamVj
dF9uZXcoV0VCS0lUX1RZUEVfV0VCX0NPTlRFWFQsCisgICAgICAgICJ0aW1lLXpvbmUtb3ZlcnJp
ZGUiLCAiRXVyb3BlL0JlcmxpbiIsIG51bGxwdHIpKSk7CisgICAgZ19hc3NlcnRfY21wc3RyKHdl
YmtpdF93ZWJfY29udGV4dF9nZXRfdGltZV96b25lX292ZXJyaWRlKHdlYkNvbnRleHQuZ2V0KCkp
LCA9PSwgIkV1cm9wZS9CZXJsaW4iKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBUZXN0OjphZG9wdFZp
ZXcoVGVzdDo6Y3JlYXRlV2ViVmlldyh3ZWJDb250ZXh0LmdldCgpKSk7CisgICAgamF2YXNjcmlw
dFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgibGV0IG5v
dyA9IG5ldyBEYXRlKCk7IG5vdy5nZXRUaW1lem9uZU9mZnNldCgpIiwgJmVycm9yLm91dFB0cigp
LCB3ZWJWaWV3LmdldCgpKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGphdmFzY3JpcHRSZXN1bHQp
OworICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKKyAgICBnX2Fzc2VydF9jbXBp
bnQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb051bWJlcihqYXZhc2NyaXB0UmVzdWx0
KSwgPT0sIC0xMjApOworfQorCitzdGF0aWMgdm9pZCB0ZXN0V2ViQ29udGV4dFRpbWVab25lT3Zl
cnJpZGVJbldvcmtlcihXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICBH
VW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CisgICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCog
amF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hl
ZCgiSW50bC5EYXRlVGltZUZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLnRpbWVab25lIiwgJmVy
cm9yLm91dFB0cigpKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGphdmFzY3JpcHRSZXN1bHQpOwor
ICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKKyAgICAvLyBCeSBkZWZhdWx0IHRo
ZSB0ZXN0IGhhcm5lc3MgdXNlcyB0aGUgUGFjaWZpYy9Mb3NfQW5nZWxlcy4KKyAgICBnX2Fzc2Vy
dF9jbXBzdHIoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlw
dFJlc3VsdCksID09LCAiQW1lcmljYS9Mb3NfQW5nZWxlcyIpOworICAgIC8vIENyZWF0ZSBhIG5l
dyBjb250ZXh0IGNvbmZpZ3VyZWQgd2l0aCB0aW1lIHpvbmUgb3ZlcmlkZSBzZXQgdG8gQmVybGlu
IHdoaWNoIGlzIDEyMCBtaW51dGVzIGFoZWFkIG9mIHRoZSBHTVQgb2Zmc2V0LgorICAgIGF1dG8g
d2ViQ29udGV4dCA9IGFkb3B0R1JlZihXRUJLSVRfV0VCX0NPTlRFWFQoZ19vYmplY3RfbmV3KFdF
QktJVF9UWVBFX1dFQl9DT05URVhULAorICAgICAgICAidGltZS16b25lLW92ZXJyaWRlIiwgIkV1
cm9wZS9CZXJsaW4iLCBudWxscHRyKSkpOworICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfd2Vi
X2NvbnRleHRfZ2V0X3RpbWVfem9uZV9vdmVycmlkZSh3ZWJDb250ZXh0LmdldCgpKSwgPT0sICJF
dXJvcGUvQmVybGluIik7CisgICAgYXV0byB3ZWJWaWV3ID0gVGVzdDo6YWRvcHRWaWV3KFRlc3Q6
OmNyZWF0ZVdlYlZpZXcod2ViQ29udGV4dC5nZXQoKSkpOworCisgICAgdGVzdC0+cnVuSmF2YVNj
cmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKAorICAgICAgICAid2luZG93LnJlc3VsdHMgPSBbXTsi
CisgICAgICAgICJmb3IgKGxldCBpID0gMDsgaSA8IDM7IGkrKykgeyIKKyAgICAgICAgIiAgY29u
c3Qgd29ya2VyID0gbmV3IFdvcmtlcignZGF0YTp0ZXh0L2phdmFzY3JpcHQsc2VsZi5wb3N0TWVz
c2FnZShJbnRsLkRhdGVUaW1lRm9ybWF0KCkucmVzb2x2ZWRPcHRpb25zKCkudGltZVpvbmUpJyk7
IgorICAgICAgICAiICB3b3JrZXIub25tZXNzYWdlID0gbWVzc2FnZSA9PiByZXN1bHRzLnB1c2go
bWVzc2FnZS5kYXRhKTsiCisgICAgICAgICJ9IiwgJmVycm9yLm91dFB0cigpLCB3ZWJWaWV3Lmdl
dCgpKTsKKyAgICBkbyB7CisgICAgICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZh
U2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoInJlc3VsdHMubGVuZ3RoIiwgJmVycm9yLm91dFB0
cigpLCB3ZWJWaWV3LmdldCgpKTsKKyAgICAgICAgZ19hc3NlcnRfbm9ubnVsbChqYXZhc2NyaXB0
UmVzdWx0KTsKKyAgICAgICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0KCkpOworICAgIH0g
d2hpbGUgKFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9OdW1iZXIoamF2YXNjcmlwdFJl
c3VsdCkgPCAzKTsKKworICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0
QW5kV2FpdFVudGlsRmluaXNoZWQoInJlc3VsdHMuam9pbignLCAnKSIsICZlcnJvci5vdXRQdHIo
KSwgd2ViVmlldy5nZXQoKSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChqYXZhc2NyaXB0UmVzdWx0
KTsKKyAgICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7CisgICAgZ19hc3NlcnRfY21w
c3RyKFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1
bHQpLCA9PSwgIkV1cm9wZS9CZXJsaW4sIEV1cm9wZS9CZXJsaW4sIEV1cm9wZS9CZXJsaW4iKTsK
K30KKwogdm9pZCBiZWZvcmVBbGwoKQogewogICAgIGtTZXJ2ZXIgPSBuZXcgV2ViS2l0VGVzdFNl
cnZlcigpOwpAQCAtMTAwOCw2ICsxMDYwLDggQEAgdm9pZCBiZWZvcmVBbGwoKQogICAgIFdlYlZp
ZXdUZXN0OjphZGQoIldlYktpdFNlY3VyaXR5TWFuYWdlciIsICJmaWxlLXhociIsIHRlc3RXZWJD
b250ZXh0U2VjdXJpdHlGaWxlWEhSKTsKICAgICBQcm94eVRlc3Q6OmFkZCgiV2ViS2l0V2ViQ29u
dGV4dCIsICJwcm94eSIsIHRlc3RXZWJDb250ZXh0UHJveHlTZXR0aW5ncyk7CiAgICAgTWVtb3J5
UHJlc3N1cmVUZXN0OjphZGQoIldlYktpdFdlYkNvbnRleHQiLCAibWVtb3J5LXByZXNzdXJlIiwg
dGVzdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MpOworICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktp
dFdlYkNvbnRleHQiLCAidGltZXpvbmUiLCB0ZXN0V2ViQ29udGV4dFRpbWVab25lT3ZlcnJpZGUp
OworICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYkNvbnRleHQiLCAidGltZXpvbmUtd29y
a2VyIiwgdGVzdFdlYkNvbnRleHRUaW1lWm9uZU92ZXJyaWRlSW5Xb3JrZXIpOwogfQogCiB2b2lk
IGFmdGVyQWxsKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRH
TGliL1Rlc3RNYWluLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1Rl
c3RNYWluLmNwcAppbmRleCBlODViM2MxZWZkZTcyMTMzNjJkZTY5N2Q3MzJjNTM2ZDVkN2ZmZTE5
Li4zOTc0MTc0NmE3NTYzYzljZTI4NGQwZTlmMmEyOWIwNWUzZWRjNTA3IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9UZXN0TWFpbi5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvVGVzdE1haW4uY3BwCkBAIC0xMzIsNiAr
MTMyLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogICAgIGdfc2V0ZW52KCJH
U0VUVElOR1NfQkFDS0VORCIsICJtZW1vcnkiLCBUUlVFKTsKICAgICAvLyBHZXQgcmlkIG9mIHJ1
bnRpbWUgd2FybmluZ3MgYWJvdXQgZGVwcmVjYXRlZCBwcm9wZXJ0aWVzIGFuZCBzaWduYWxzLCBz
aW5jZSB0aGV5IGJyZWFrIHRoZSB0ZXN0cy4KICAgICBnX3NldGVudigiR19FTkFCTEVfRElBR05P
U1RJQyIsICIwIiwgVFJVRSk7CisgICAgZ19zZXRlbnYoIlRaIiwgIkFtZXJpY2EvTG9zX0FuZ2Vs
ZXMiLCBUUlVFKTsKICAgICBnX3Rlc3RfYnVnX2Jhc2UoImh0dHBzOi8vYnVncy53ZWJraXQub3Jn
LyIpOwogCiAgICAgcmVnaXN0ZXJHUmVzb3VyY2UoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmNwcAppbmRleCA5MGY1ZDM1MWMxN2Rk
ZThhMGExZmY4YzJhMjRmOWRiYTJhYjRmMzc4Li5hMjFhMDA0MmI0Yzc1NTliYzcyNWMxZmFjMDY1
OGU0MDNjMTkxY2FmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0
R0xpYi9XZWJWaWV3VGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktp
dEdMaWIvV2ViVmlld1Rlc3QuY3BwCkBAIC0zMDYsOSArMzA2LDkgQEAgY29uc3QgY2hhciogV2Vi
Vmlld1Rlc3Q6Om1haW5SZXNvdXJjZURhdGEoc2l6ZV90JiBtYWluUmVzb3VyY2VEYXRhU2l6ZSkK
ICAgICByZXR1cm4gbV9yZXNvdXJjZURhdGEuZ2V0KCk7CiB9CiAKLXN0YXRpYyB2b2lkIHJ1bkph
dmFTY3JpcHRSZWFkeUNhbGxiYWNrKEdPYmplY3QqLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgV2Vi
Vmlld1Rlc3QqIHRlc3QpCitzdGF0aWMgdm9pZCBydW5KYXZhU2NyaXB0UmVhZHlDYWxsYmFjayhH
T2JqZWN0KiBvYmplY3QsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBXZWJWaWV3VGVzdCogdGVzdCkK
IHsKLSAgICB0ZXN0LT5tX2phdmFzY3JpcHRSZXN1bHQgPSB3ZWJraXRfd2ViX3ZpZXdfcnVuX2ph
dmFzY3JpcHRfZmluaXNoKHRlc3QtPm1fd2ViVmlldywgcmVzdWx0LCB0ZXN0LT5tX2phdmFzY3Jp
cHRFcnJvcik7CisgICAgdGVzdC0+bV9qYXZhc2NyaXB0UmVzdWx0ID0gd2Via2l0X3dlYl92aWV3
X3J1bl9qYXZhc2NyaXB0X2ZpbmlzaChXRUJLSVRfV0VCX1ZJRVcob2JqZWN0KSwgcmVzdWx0LCB0
ZXN0LT5tX2phdmFzY3JpcHRFcnJvcik7CiAgICAgZ19tYWluX2xvb3BfcXVpdCh0ZXN0LT5tX21h
aW5Mb29wKTsKIH0KIApAQCAtMzI0LDEzICszMjQsMTUgQEAgc3RhdGljIHZvaWQgcnVuSmF2YVNj
cmlwdEluV29ybGRSZWFkeUNhbGxiYWNrKEdPYmplY3QqLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwg
V2UKICAgICBnX21haW5fbG9vcF9xdWl0KHRlc3QtPm1fbWFpbkxvb3ApOwogfQogCi1XZWJLaXRK
YXZhc2NyaXB0UmVzdWx0KiBXZWJWaWV3VGVzdDo6cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZp
bmlzaGVkKGNvbnN0IGNoYXIqIGphdmFzY3JpcHQsIEdFcnJvcioqIGVycm9yKQorV2ViS2l0SmF2
YXNjcmlwdFJlc3VsdCogV2ViVmlld1Rlc3Q6OnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5p
c2hlZChjb25zdCBjaGFyKiBqYXZhc2NyaXB0LCBHRXJyb3IqKiBlcnJvciwgV2ViS2l0V2ViVmll
dyogd2ViVmlldykKIHsKICAgICBpZiAobV9qYXZhc2NyaXB0UmVzdWx0KQogICAgICAgICB3ZWJr
aXRfamF2YXNjcmlwdF9yZXN1bHRfdW5yZWYobV9qYXZhc2NyaXB0UmVzdWx0KTsKICAgICBtX2ph
dmFzY3JpcHRSZXN1bHQgPSAwOwogICAgIG1famF2YXNjcmlwdEVycm9yID0gZXJyb3I7Ci0gICAg
d2Via2l0X3dlYl92aWV3X3J1bl9qYXZhc2NyaXB0KG1fd2ViVmlldywgamF2YXNjcmlwdCwgMCwg
cmVpbnRlcnByZXRfY2FzdDxHQXN5bmNSZWFkeUNhbGxiYWNrPihydW5KYXZhU2NyaXB0UmVhZHlD
YWxsYmFjayksIHRoaXMpOworICAgIGlmICghd2ViVmlldykKKyAgICAgICAgd2ViVmlldyA9IG1f
d2ViVmlldzsKKyAgICB3ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFzY3JpcHQod2ViVmlldywgamF2
YXNjcmlwdCwgMCwgcmVpbnRlcnByZXRfY2FzdDxHQXN5bmNSZWFkeUNhbGxiYWNrPihydW5KYXZh
U2NyaXB0UmVhZHlDYWxsYmFjayksIHRoaXMpOwogICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5M
b29wKTsKIAogICAgIHJldHVybiBtX2phdmFzY3JpcHRSZXN1bHQ7CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5oIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuaAppbmRleCBhMjhhNWVkYzhk
NDBmNThiNTA1YWI2NGIxZWY0OGFhMGI2NTk3MzMzLi4wMmQ1ODQ5NWQ2ZDc3YmZiM2E3M2JhMjhi
NmE1ZDkzMGM0NmZmMmRhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2Vi
S2l0R0xpYi9XZWJWaWV3VGVzdC5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJL
aXRHTGliL1dlYlZpZXdUZXN0LmgKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogICAgIHZvaWQg
ZW1pdFBvcHVwTWVudVNpZ25hbCgpOwogI2VuZGlmCiAKLSAgICBXZWJLaXRKYXZhc2NyaXB0UmVz
dWx0KiBydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoY29uc3QgY2hhciogamF2YXNj
cmlwdCwgR0Vycm9yKiopOworICAgIFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIHJ1bkphdmFTY3Jp
cHRBbmRXYWl0VW50aWxGaW5pc2hlZChjb25zdCBjaGFyKiBqYXZhc2NyaXB0LCBHRXJyb3IqKiwg
V2ViS2l0V2ViVmlldyogPSBudWxscHRyKTsKICAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBy
dW5KYXZhU2NyaXB0RnJvbUdSZXNvdXJjZUFuZFdhaXRVbnRpbEZpbmlzaGVkKGNvbnN0IGNoYXIq
IHJlc291cmNlLCBHRXJyb3IqKik7CiAgICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogcnVuSmF2
YVNjcmlwdEluV29ybGRBbmRXYWl0VW50aWxGaW5pc2hlZChjb25zdCBjaGFyKiBqYXZhc2NyaXB0
LCBjb25zdCBjaGFyKiB3b3JsZCwgR0Vycm9yKiopOwogICAgIFdlYktpdEphdmFzY3JpcHRSZXN1
bHQqIHJ1bkphdmFTY3JpcHRXaXRob3V0Rm9yY2VkVXNlckdlc3R1cmVzQW5kV2FpdFVudGlsRmlu
aXNoZWQoY29uc3QgY2hhciogamF2YXNjcmlwdCwgR0Vycm9yKiopOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvZmxhdHBhay9mbGF0cGFrdXRpbHMucHkgYi9Ub29scy9mbGF0cGFrL2ZsYXRwYWt1dGlscy5w
eQppbmRleCBhYjFkYmE5ODIwNmJlODEwYjFkNGU2MGNhNzQ2ZDliNzdhYjJiMGVkLi41NjYyNmEz
NjY0MTJhYjM2ZjBlZmNiN2QzOGU3ZDdmMTY3NTFhYTZiIDEwMDY0NAotLS0gYS9Ub29scy9mbGF0
cGFrL2ZsYXRwYWt1dGlscy5weQorKysgYi9Ub29scy9mbGF0cGFrL2ZsYXRwYWt1dGlscy5weQpA
QCAtODU3LDcgKzg1Nyw3IEBAIGNsYXNzIFdlYmtpdEZsYXRwYWs6CiAgICAgICAgICAgICBdKQog
CiAgICAgICAgICAgICBzYW5kYm94X2Vudmlyb25tZW50LnVwZGF0ZSh7Ci0gICAgICAgICAgICAg
ICAgIlRaIjogIlBTVDhQRFQiLAorICAgICAgICAgICAgICAgICJUWiI6ICJBbWVyaWNhL0xvc19B
bmdlbGVzIiwKICAgICAgICAgICAgIH0pCiAKICAgICAgICAgZW52X3Zhcl9wcmVmaXhlc190b19r
ZWVwID0gWwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458474</attachid>
            <date>2022-04-27 15:28:19 -0700</date>
            <delta_ts>2022-04-27 16:06:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213884-20220427152818.patch</filename>
            <type>text/plain</type>
            <size>58632</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyOTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NjEyNGZmMTU5ZTBiZDI3MGEwMTk4MmRlZGQ0MjNhMDVmMjM0OGY5Li4wNWQ5YmJhM2ExYzNjOGYz
MmMyOWU3ZTEyZGQzZDQxY2VlNDcyN2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAyMi0wNC0yNyAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxp
YS5jb20+IGFuZCBQYXZlbCBGZWxkbWFuIDxwYXZlbC5mZWxkbWFuQGdtYWlsLmNvbT4gYW5kIFl1
cnkgU2VtaWtoYXRza3kgPHl1cnlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBbV0syXSBBZGQg
QVBJIHRvIGFsbG93IGVtYmVkZGVyIHRvIHNldCBhIHRpbWV6b25lIG92ZXJyaWRlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM4ODQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHJ1bnRpbWUvRGF0ZUNv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToK
KyAgICAgICAgKiBydW50aW1lL0RhdGVDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKEpTQzo6Zm9y
bWF0RGF0ZVRpbWUpOiBGb3JtYXQgdGhlIG92ZXJyaWRkZW4gdGltZXpvbmUgaWYgaXQncyBlbmFi
bGVkLgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZUNvbnZlcnNpb24uaDoKKyAgICAgICAgKiBydW50
aW1lL0RhdGVQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpmb3JtYXRlRGF0ZUluc3RhbmNl
KToKKyAgICAgICAgKiBydW50aW1lL0pTRGF0ZU1hdGguY3BwOgorICAgICAgICAoSlNDOjp0b0lD
VVRpbWV6Wm9uZSk6CisgICAgICAgIChKU0M6OnRvT3BhcXVlSUNVVGltZVpvbmUpOgorICAgICAg
ICAoSlNDOjpPcGFxdWVJQ1VUaW1lWm9uZURlbGV0ZXI6Om9wZXJhdG9yKCkpOgorICAgICAgICAo
SlNDOjpEYXRlQ2FjaGU6OmNhbGN1bGF0ZUxvY2FsVGltZU9mZnNldCk6CisgICAgICAgIChKU0M6
OkRhdGVDYWNoZTo6ZGVmYXVsdFRpbWVab25lKToKKyAgICAgICAgKEpTQzo6RGF0ZUNhY2hlOjp0
aW1lWm9uZURpc3BsYXlOYW1lT3ZlcnJpZGUpOgorICAgICAgICAoSlNDOjpEYXRlQ2FjaGU6OnRp
bWVab25lQ2FjaGVTbG93KTogQXBwbHkgdGltZXpvbmUgb3ZlcnJpZGUgaWYgaXQgaXMgc2V0Lgor
ICAgICAgICAoSlNDOjpEYXRlQ2FjaGU6OnJlc2V0SWZOZWNlc3NhcnkpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNEYXRlTWF0aC5oOgorCisKIDIwMjItMDQtMTQgIENhaXRsaW4gUG90dGVyICA8Y2Fp
dHBAaWdhbGlhLmNvbT4KIAogICAgICAgICBbSlNDXSBTaGFkb3dSZWFsbSBnbG9iYWwgb2JqZWN0
IGhhcyBhIG11dGFibGUgcHJvdG90eXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDQwN2ZjOWNjMGRmMjNmNTMxNTFiZWQ0Yzkx
NjViYWE3NjFkZmJhZmQuLjY4ODYyODJmYWUzZDkzOTFiYWY5MDhiZjFmZTE5YmQ3YjQ1NjVlMmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMjItMDQtMjcgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9y
bWFuZEBpZ2FsaWEuY29tPiBhbmQgUGF2ZWwgRmVsZG1hbiA8cGF2ZWwuZmVsZG1hbkBnbWFpbC5j
b20+IGFuZCBZdXJ5IFNlbWlraGF0c2t5IDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
W1dLMl0gQWRkIEFQSSB0byBhbGxvdyBlbWJlZGRlciB0byBzZXQgYSB0aW1lem9uZSBvdmVycmlk
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzODg0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYv
RGF0ZU1hdGguY3BwOiBOZXcgQVBJcyB0byBjb250cm9sIGFuZCBxdWVyeSB0aGUgdGltZXpvbmUg
b3ZlcnJpZGUuCisgICAgICAgIChXVEY6OmlubmVyVGltZVpvbmVPdmVycmlkZSk6IFN0YXRpYyBz
dG9yYWdlIG9mIHRoZSBvdmVycmlkZSBpbmZvcm1hdGlvbnMuCisgICAgICAgIChXVEY6OldURl9S
RVFVSVJFU19MT0NLKToKKyAgICAgICAgKFdURjo6dmFsaWRhdGVUaW1lWm9uZSk6IE5ldyBmdW5j
dGlvbiBhbGxvd2luZyB0byBjaGVjayBpZiBhIHRpbWV6b25lIGlkZW50aWZpZXIgaXMgdmFsaWQg
YWNjb3JkaW5nIHRvIElDVSdzIGRhdGFiYXNlIGFuZCBjb3ZlcnQgaXQKKyAgICAgICAgdG8gVUNo
YXIgYnVmZmVyIHN1aXRhYmxlIGZvciBwYXNzaW5nIHRvIHVjYWwuCisgICAgICAgIChXVEY6Omlz
VGltZVpvbmVWYWxpZCk6CisgICAgICAgIChXVEY6OnNldFRpbWVab25lT3ZlcnJpZGUpOiBOZXcg
QVBJIHRvIHNldCB0aGUgdGltZXpvbmUgb3ZlcnJpZGUsIHRoaXMgaXMgbWVhbnQgdG8gYmUKKyAg
ICAgICAgdXNlZCBvbiBuZXdseSBjcmVhdGVkIFdlYlByb2Nlc3Nlcy4gSW4gYWRkaXRpb24gdG8g
cHJvdmlkaW5nIGFsdGVybmF0aXZlIG5hbWUgZm9yIHRoZSBjb2RlCisgICAgICAgIHRoYXQgY2Fs
bHMgaW50byBJQ1UgbGlicmFyeSwgb24gUE9TSVggc3lzdGVtcyB3cml0ZXMgbmV3IHRpbWV6b25l
IHRvICJUWiIgZW52aXJvbmVtZW50CisgICAgICAgIHZhcmlhYmxlIHRvIGFkanVzdCByZXN1bHQg
b2Ygc3RyZnRpbWUgKGNhbGxlZCBpbiBmb3JtYXREYXRlVGltZSkuCisgICAgICAgIChXVEY6Omdl
dFRpbWVab25lT3ZlcnJpZGUpOiBRdWVyeSB0aGUgdGltZXpvbmUgb3ZlcnJpZGUuCisgICAgICAg
ICogd3RmL0RhdGVNYXRoLmg6CisKIDIwMjItMDQtMTUgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNl
a0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW1dQRV0gUmVtb3ZlIGV4Y2x1c2l2ZSBidWls
ZCBndWFyZHMgYXJvdW5kIEdQVSBwcm9jZXNzIHByZWZlcmVuY2VzLCBjb2RlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IDY1ODg1ZmVlMWE2ODBkMjYyNGQwOWQzY2MwOTA1NWYzOTg3Y2I4ZWQuLjIyMDgzNTQxMjMxYWMy
NGI1ZDExOTA2NmI0NDJlODYyYzdlZDlkYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIw
MjItMDQtMjcgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPiBhbmQgWXVy
eSBTZW1pa2hhdHNreSA8eXVyeXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtXSzJdIEFkZCBB
UEkgdG8gYWxsb3cgZW1iZWRkZXIgdG8gc2V0IGEgdGltZXpvbmUgb3ZlcnJpZGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzg4NAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkczoK
KworICAgICAgICAtIG5ldyBDb2NvYSBBUEkKKyAgICAgICAgLSBuZXcgR2xpYiBBUEkgKHRhcmdl
dHRpbmcgYm90aCBXUEUgYW5kIEdUSyBwb3J0cykKKyAgICAgICAgLSBuZXcgQyBBUEkgKGZvciB0
aGUgd2luIHBvcnQpCisKKyAgICAgICAgdGhhdCBhbGxvd3MgdGhlIGVtYmVkZGVyIHRvIHNldCBh
IHRpbWV6b25lIG92ZXJyaWRlIGZvciB0aGUgdW5kZXJseWluZyBQYWdlQ29uZmlndXJhdGlvbi4K
KyAgICAgICAgU2luY2UgdGhpcyBBUEkgaXMgbm90IGV4cG9zZWQgaW4gZ2xpYiBwb3J0cywgYSBu
ZXcgY29udHJ1Y3QtdGltZS1vbmx5IHByb3BlcnR5IHdhcyBhZGRlZCB0bworICAgICAgICB0aGUg
V2ViS2l0V2ViQ29udGV4dCBBUEkuIEl0IHdvdWxkIGFsc28gYWxsb3cgZmluZS1ncmFpbmVkIGNv
bnRyb2wgb3ZlciBtdWx0aXBsZSBwYWdlcywgZm9yCisgICAgICAgIGluc3RhbmNlIGl0J3Mgbm90
IHBvc3NpYmxlIGN1cnJlbnRseSB0byBoYXZlIHR3byBwYWdlcyBpbiBkaWZmZXJlbnQgdGltZXpv
bmVzLgorCisgICAgICAgIE5vIG5ldyBsYXlvdXQgdGVzdHMsIHRoaXMgY2hhbmdlIGlzIGNvdmVy
ZWQgYnkgbmV3IEFQSSB0ZXN0cy4KKworICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
Ojpjb3B5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRDb25maWd1cmF0aW9u
UmVmLmNwcDoKKyAgICAgICAgKFdLQ29udGV4dENvbmZpZ3VyYXRpb25Db3B5VGltZVpvbmVPdmVy
cmlkZSk6CisgICAgICAgIChXS0NvbnRleHRDb25maWd1cmF0aW9uU2V0VGltZVpvbmVPdmVycmlk
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uLm1tOgorICAgICAgICAoLVtfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gdGlt
ZVpvbmVPdmVycmlkZV0pOgorICAgICAgICAoLVtfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24g
c2V0VGltZVpvbmVPdmVycmlkZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0V2ViQ29udGV4dC5jcHA6CisgICAgICAgICh3ZWJraXRXZWJDb250ZXh0R2V0UHJvcGVydHkp
OgorICAgICAgICAod2Via2l0V2ViQ29udGV4dFNldFByb3BlcnR5KToKKyAgICAgICAgKHdlYmtp
dFdlYkNvbnRleHRDb25zdHJ1Y3RlZCk6CisgICAgICAgICh3ZWJraXRfd2ViX2NvbnRleHRfY2xh
c3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3RpbWVfem9uZV9vdmVy
cmlkZSk6CisgICAgICAgICh3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3RpbWVfem9uZV9vdmVycmlk
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYkNvbnRleHQuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6aW5pdGlhbGl6ZU5ld1dlYlByb2Nlc3MpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQ
cm9jZXNzKTogQXBwbHkgdGltZXpvbmUgb3ZlcnJpZGUgaWYgYW55IG9uIHByb2Nlc3Mgc3RhcnQu
CisKIDIwMjItMDQtMTUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFNlcnZpY2VXb3JrZXIucG9zdE1lc3NhZ2UoKSBkb2Vzbid0IHdvcmsgZnJvbSBpbnNpZGUg
aWZyYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29u
c3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVj
dG9yLmNwcAppbmRleCA2ZDA5MDJjOWZjYzk0YWQwZDUxZTUxZGUyOGVhMmM5NjUyOTRjN2EzLi5k
ZDVkNDM1NzlhZjA2ZTVmM2ZkYjA4NTBhNGY3NjRhYWEzMjUyYjQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKQEAgLTE1MCw3ICsx
NTAsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY2FsbERhdGUsIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKSkKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgR3JlZ29yaWFuRGF0ZVRpbWUgdHM7CiAgICAgdm0uZGF0ZUNhY2hlLm1zVG9H
cmVnb3JpYW5EYXRlVGltZShXYWxsVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKS5taWxs
aXNlY29uZHMoKSwgV1RGOjpMb2NhbFRpbWUsIHRzKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzTm9udHJpdmlhbFN0cmluZyh2bSwgZm9ybWF0RGF0ZVRpbWUodHMsIERhdGVUaW1lRm9y
bWF0RGF0ZUFuZFRpbWUsIGZhbHNlKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNO
b250cml2aWFsU3RyaW5nKHZtLCBmb3JtYXREYXRlVGltZSh0cywgRGF0ZVRpbWVGb3JtYXREYXRl
QW5kVGltZSwgZmFsc2UsIHZtLmRhdGVDYWNoZSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGRhdGVQYXJzZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0RhdGVDb252ZXJzaW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVD
b252ZXJzaW9uLmNwcAppbmRleCAyZGVjZjhhODNjODBlODBjYTg2NzdmNGM3ODdiZjc5YzZjMjk5
NWZhLi4zMzFlNTY2ZjBhNDhiZTVlZDhhNjVlMDZlZThlOTdlMzQ4ZGYwZjVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29udmVyc2lvbi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwCkBAIC01OCw3
ICs1OCw3IEBAIHZvaWQgYXBwZW5kTnVtYmVyPDI+KFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGlu
dCB2YWx1ZSkKICAgICBidWlsZGVyLmFwcGVuZChzdGF0aWNfY2FzdDxjaGFyPignMCcgKyB2YWx1
ZSAlIDEwKSk7CiB9CiAKLVN0cmluZyBmb3JtYXREYXRlVGltZShjb25zdCBHcmVnb3JpYW5EYXRl
VGltZSYgdCwgRGF0ZVRpbWVGb3JtYXQgZm9ybWF0LCBib29sIGFzVVRDVmFyaWFudCkKK1N0cmlu
ZyBmb3JtYXREYXRlVGltZShjb25zdCBHcmVnb3JpYW5EYXRlVGltZSYgdCwgRGF0ZVRpbWVGb3Jt
YXQgZm9ybWF0LCBib29sIGFzVVRDVmFyaWFudCwgRGF0ZUNhY2hlJiBkYXRlQ2FjaGUpCiB7CiAg
ICAgYm9vbCBhcHBlbmREYXRlID0gZm9ybWF0ICYgRGF0ZVRpbWVGb3JtYXREYXRlOwogICAgIGJv
b2wgYXBwZW5kVGltZSA9IGZvcm1hdCAmIERhdGVUaW1lRm9ybWF0VGltZTsKQEAgLTk3LDE3ICs5
NywyMiBAQCBTdHJpbmcgZm9ybWF0RGF0ZVRpbWUoY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUmIHQs
IERhdGVUaW1lRm9ybWF0IGZvcm1hdCwgYm9vbCBhcwogICAgICAgICAgICAgYXBwZW5kTnVtYmVy
PDI+KGJ1aWxkZXIsIG9mZnNldCAvIDYwKTsKICAgICAgICAgICAgIGFwcGVuZE51bWJlcjwyPihi
dWlsZGVyLCBvZmZzZXQgJSA2MCk7CiAKKyAgICAgICAgICAgIFN0cmluZ1ZpZXcgdGltZVpvbmVO
YW1lOwogI2lmIE9TKFdJTkRPV1MpCisgICAgICAgICAgICB0aW1lWm9uZU5hbWUgPSBkYXRlQ2Fj
aGUudGltZVpvbmVEaXNwbGF5TmFtZU92ZXJyaWRlKHQuaXNEU1QoKSk7CiAgICAgICAgICAgICBU
SU1FX1pPTkVfSU5GT1JNQVRJT04gdGltZVpvbmVJbmZvcm1hdGlvbjsKLSAgICAgICAgICAgIEdl
dFRpbWVab25lSW5mb3JtYXRpb24oJnRpbWVab25lSW5mb3JtYXRpb24pOwotICAgICAgICAgICAg
Y29uc3QgV0NIQVIqIHdpblRpbWVab25lTmFtZSA9IHQuaXNEU1QoKSA/IHRpbWVab25lSW5mb3Jt
YXRpb24uRGF5bGlnaHROYW1lIDogdGltZVpvbmVJbmZvcm1hdGlvbi5TdGFuZGFyZE5hbWU7Ci0g
ICAgICAgICAgICBTdHJpbmcgdGltZVpvbmVOYW1lKHdpblRpbWVab25lTmFtZSk7CisgICAgICAg
ICAgICBpZiAodGltZVpvbmVOYW1lLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgIEdldFRp
bWVab25lSW5mb3JtYXRpb24oJnRpbWVab25lSW5mb3JtYXRpb24pOworICAgICAgICAgICAgICAg
IHdjaGFyX3QqIG5hbWUgPSB0LmlzRFNUKCkgPyAmdGltZVpvbmVJbmZvcm1hdGlvbi5EYXlsaWdo
dE5hbWVbMF0gOiAmdGltZVpvbmVJbmZvcm1hdGlvbi5TdGFuZGFyZE5hbWVbMF07CisgICAgICAg
ICAgICAgICAgdGltZVpvbmVOYW1lID0gU3RyaW5nVmlldyh1Y2hhckZyb20obmFtZSksIHdjc2xl
bihuYW1lKSk7CisgICAgICAgICAgICB9CiAjZWxzZQogICAgICAgICAgICAgc3RydWN0IHRtIGd0
bSA9IHQ7Ci0gICAgICAgICAgICBjaGFyIHRpbWVab25lTmFtZVs3MF07Ci0gICAgICAgICAgICBz
dHJmdGltZSh0aW1lWm9uZU5hbWUsIHNpemVvZih0aW1lWm9uZU5hbWUpLCAiJVoiLCAmZ3RtKTsK
KyAgICAgICAgICAgIGNoYXIgdGltZVpvbmVDaGFyc1s3MF07CisgICAgICAgICAgICBpZiAoc2l6
ZV90IGxlbmd0aCA9IHN0cmZ0aW1lKHRpbWVab25lQ2hhcnMsIHNpemVvZih0aW1lWm9uZUNoYXJz
KSwgIiVaIiwgJmd0bSkpCisgICAgICAgICAgICAgICAgdGltZVpvbmVOYW1lID0gU3RyaW5nVmll
dyh0aW1lWm9uZUNoYXJzLCBsZW5ndGgpOwogI2VuZGlmCi0gICAgICAgICAgICBpZiAodGltZVpv
bmVOYW1lWzBdKQorICAgICAgICAgICAgaWYgKCF0aW1lWm9uZU5hbWUuaXNFbXB0eSgpKQogICAg
ICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIgKCIsIHRpbWVab25lTmFtZSwgJyknKTsKICAg
ICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0RhdGVDb252ZXJzaW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29u
dmVyc2lvbi5oCmluZGV4IDhlYWZhOTU0YjZhY2Q0YTA2OWY5YWZkY2MzMTI3ZjE5NjI1ZWNiYWUu
LjVmN2YyY2Y0ZGQyNDliYjgzNmY2MzgwOGZiZGUxODUzNjZiNTViYzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb252ZXJzaW9uLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnZlcnNpb24uaApAQCAtMjksMTIgKzI5LDE0
IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBEYXRlQ2FjaGU7CisKIGVudW0gRGF0ZVRp
bWVGb3JtYXQgewogICAgIERhdGVUaW1lRm9ybWF0RGF0ZSA9IDEsCiAgICAgRGF0ZVRpbWVGb3Jt
YXRUaW1lID0gMiwKICAgICBEYXRlVGltZUZvcm1hdERhdGVBbmRUaW1lID0gRGF0ZVRpbWVGb3Jt
YXREYXRlIHwgRGF0ZVRpbWVGb3JtYXRUaW1lCiB9OwogCi1KU19FWFBPUlRfUFJJVkFURSBXVEY6
OlN0cmluZyBmb3JtYXREYXRlVGltZShjb25zdCBHcmVnb3JpYW5EYXRlVGltZSYsIERhdGVUaW1l
Rm9ybWF0LCBib29sIGFzVVRDVmFyaWFudCk7CitKU19FWFBPUlRfUFJJVkFURSBXVEY6OlN0cmlu
ZyBmb3JtYXREYXRlVGltZShjb25zdCBHcmVnb3JpYW5EYXRlVGltZSYsIERhdGVUaW1lRm9ybWF0
LCBib29sIGFzVVRDVmFyaWFudCwgRGF0ZUNhY2hlJik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAppbmRl
eCA0ZDA0YTUyYmVkOGZjMjIxM2I1MjFiZGE1NmI3YjhjMzk1MWQxMTVlLi5mNDVkYThkZGQ3YzJi
MDNkYzcyNmI4YTdjYmNmZjJhZTU1MDFhNDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBmb3JtYXRlRGF0ZUluc3RhbmNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtCiAgICAgaWYgKCFncmVnb3JpYW5EYXRlVGltZSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcodm0sIFN0cmluZygiSW52YWxp
ZCBEYXRlIl9zKSkpOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxT
dHJpbmcodm0sIGZvcm1hdERhdGVUaW1lKCpncmVnb3JpYW5EYXRlVGltZSwgZm9ybWF0LCBhc1VU
Q1ZhcmlhbnQpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJp
bmcodm0sIGZvcm1hdERhdGVUaW1lKCpncmVnb3JpYW5EYXRlVGltZSwgZm9ybWF0LCBhc1VUQ1Zh
cmlhbnQsIGNhY2hlKSkpOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRGF0ZU1hdGguY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNEYXRlTWF0aC5jcHAKaW5kZXggZmM2ZmQzOGVjYjM5MmU5ZDVlYTU0ZDU3MDI1Nzg1NjIyODk0
MzRmYi4uM2E0OGU2YmI5YTg1YThlZmVjNDZlNWU0Y2RhMDVkYTIzMDBjM2JlNCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRlTWF0aC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRlTWF0aC5jcHAKQEAgLTEwOCw2ICsxMDgs
MTUgQEAgcHVibGljOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxVQ2FsZW5kYXIsIElDVURlbGV0ZXI8
dWNhbF9jbG9zZT4+IG1fY2FsZW5kYXI7CiAgICAgU3RyaW5nIG1fY2Fub25pY2FsVGltZVpvbmVJ
RDsKIH07CisjZWxzZQorc3RhdGljIGljdTo6VGltZVpvbmUqIHRvSUNVVGltZXpab25lKE9wYXF1
ZUlDVVRpbWVab25lKiB0aW1lWm9uZSkKK3sKKyAgICByZXR1cm4gYml0d2lzZV9jYXN0PGljdTo6
VGltZVpvbmUqPih0aW1lWm9uZSk7Cit9CitzdGF0aWMgT3BhcXVlSUNVVGltZVpvbmUqIHRvT3Bh
cXVlSUNVVGltZVpvbmUoaWN1OjpUaW1lWm9uZSogdGltZVpvbmUpCit7CisgICAgcmV0dXJuIGJp
dHdpc2VfY2FzdDxPcGFxdWVJQ1VUaW1lWm9uZSo+KHRpbWVab25lKTsKK30KICNlbmRpZgogCiB2
b2lkIE9wYXF1ZUlDVVRpbWVab25lRGVsZXRlcjo6b3BlcmF0b3IoKShPcGFxdWVJQ1VUaW1lWm9u
ZSogdGltZVpvbmUpCkBAIC0xMTYsNyArMTI1LDcgQEAgdm9pZCBPcGFxdWVJQ1VUaW1lWm9uZURl
bGV0ZXI6Om9wZXJhdG9yKCkoT3BhcXVlSUNVVGltZVpvbmUqIHRpbWVab25lKQogI2lmIEhBVkUo
SUNVX0NfVElNRVpPTkVfQVBJKQogICAgICAgICBkZWxldGUgdGltZVpvbmU7CiAjZWxzZQotICAg
ICAgICBkZWxldGUgYml0d2lzZV9jYXN0PGljdTo6VGltZVpvbmUqPih0aW1lWm9uZSk7CisgICAg
ICAgIGRlbGV0ZSB0b0lDVVRpbWV6Wm9uZSh0aW1lWm9uZSk7CiAjZW5kaWYKICAgICB9CiB9CkBA
IC0xNTUsNyArMTY0LDcgQEAgTG9jYWxUaW1lT2Zmc2V0IERhdGVDYWNoZTo6Y2FsY3VsYXRlTG9j
YWxUaW1lT2Zmc2V0KGRvdWJsZSBtaWxsaXNlY29uZHNGcm9tRXBvY2gKICAgICAgICAgICAgIHJl
dHVybiBmYWlsZWQ7CiAgICAgfQogI2Vsc2UKLSAgICBhdXRvJiB0aW1lWm9uZUNhY2hlID0gKmJp
dHdpc2VfY2FzdDxpY3U6OlRpbWVab25lKj4odGhpcy0+dGltZVpvbmVDYWNoZSgpKTsKKyAgICBh
dXRvJiB0aW1lWm9uZUNhY2hlID0gKnRvSUNVVGltZXpab25lKHRoaXMtPnRpbWVab25lQ2FjaGUo
KSk7CiAgICAgaWYgKGlucHV0VGltZVR5cGUgIT0gV1RGOjpMb2NhbFRpbWUpIHsKICAgICAgICAg
Y29uc3RleHByIGJvb2wgaXNMb2NhbFRpbWUgPSBmYWxzZTsKICAgICAgICAgdGltZVpvbmVDYWNo
ZS5nZXRPZmZzZXQobWlsbGlzZWNvbmRzRnJvbUVwb2NoLCBpc0xvY2FsVGltZSwgcmF3T2Zmc2V0
LCBkc3RPZmZzZXQsIHN0YXR1cyk7CkBAIC0zMzcsNyArMzQ2LDcgQEAgU3RyaW5nIERhdGVDYWNo
ZTo6ZGVmYXVsdFRpbWVab25lKCkKICNlbHNlCiAgICAgaWN1OjpVbmljb2RlU3RyaW5nIHRpbWVa
b25lSUQ7CiAgICAgaWN1OjpVbmljb2RlU3RyaW5nIGNhbm9uaWNhbFRpbWVab25lSUQ7Ci0gICAg
YXV0byYgdGltZVpvbmUgPSAqYml0d2lzZV9jYXN0PGljdTo6VGltZVpvbmUqPih0aW1lWm9uZUNh
Y2hlKCkpOworICAgIGF1dG8mIHRpbWVab25lID0gKnRvSUNVVGltZXpab25lKHRpbWVab25lQ2Fj
aGUoKSk7CiAgICAgdGltZVpvbmUuZ2V0SUQodGltZVpvbmVJRCk7CiAKICAgICBVRXJyb3JDb2Rl
IHN0YXR1cyA9IFVfWkVST19FUlJPUjsKQEAgLTM1NCw2ICszNjMsMTYgQEAgU3RyaW5nIERhdGVD
YWNoZTo6ZGVmYXVsdFRpbWVab25lKCkKICNlbmRpZgogfQogCisjaWYgT1MoV0lORE9XUykKK1N0
cmluZ1ZpZXcgRGF0ZUNhY2hlOjp0aW1lWm9uZURpc3BsYXlOYW1lT3ZlcnJpZGUoYm9vbCBpc0RT
VCkKK3sKKyAgICB0aW1lWm9uZUNhY2hlKCk7CisgICAgaWYgKGlzRFNUKQorICAgICAgICByZXR1
cm4gbV90aW1lWm9uZURTVERpc3BsYXlOYW1lT3ZlcnJpZGVDYWNoZTsKKyAgICByZXR1cm4gbV90
aW1lWm9uZVN0YW5kYXJkRGlzcGxheU5hbWVPdmVycmlkZUNhY2hlOworfQorI2VuZGlmCisKICNp
ZiBQTEFURk9STShDT0NPQSkKIHN0YXRpYyB2b2lkIHRpbWVab25lQ2hhbmdlTm90aWZpY2F0aW9u
KENGTm90aWZpY2F0aW9uQ2VudGVyUmVmLCB2b2lkKiwgQ0ZTdHJpbmdSZWYsIGNvbnN0IHZvaWQq
LCBDRkRpY3Rpb25hcnlSZWYpCiB7CkBAIC0zODMsMTIgKzQwMiwyMiBAQCBSZWY8RGF0ZUluc3Rh
bmNlRGF0YT4gRGF0ZUNhY2hlOjpjYWNoZWREYXRlSW5zdGFuY2VEYXRhKGRvdWJsZSBtaWxsaXNl
Y29uZHNGcm9tRQogdm9pZCBEYXRlQ2FjaGU6OnRpbWVab25lQ2FjaGVTbG93KCkKIHsKICAgICBB
U1NFUlQoIW1fdGltZVpvbmVDYWNoZSk7CisKKyAgICBWZWN0b3I8VUNoYXIsIDMyPiB0aW1lWm9u
ZUlEOworI2lmIE9TKFdJTkRPV1MpCisgICAgZ2V0VGltZVpvbmVPdmVycmlkZSh0aW1lWm9uZUlE
LCBtX3RpbWVab25lU3RhbmRhcmREaXNwbGF5TmFtZU92ZXJyaWRlQ2FjaGUsIG1fdGltZVpvbmVE
U1REaXNwbGF5TmFtZU92ZXJyaWRlQ2FjaGUpOworI2Vsc2UKKyAgICBnZXRUaW1lWm9uZU92ZXJy
aWRlKHRpbWVab25lSUQpOworI2VuZGlmCiAjaWYgSEFWRShJQ1VfQ19USU1FWk9ORV9BUEkpCiAg
ICAgYXV0byogY2FjaGUgPSBuZXcgT3BhcXVlSUNVVGltZVpvbmU7CiAKICAgICBTdHJpbmcgY2Fu
b25pY2FsOwotICAgIFZlY3RvcjxVQ2hhciwgMzI+IHRpbWVab25lSUQ7Ci0gICAgYXV0byBzdGF0
dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odWNhbF9nZXRIb3N0VGltZVpvbmUsIHRp
bWVab25lSUQpOworICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIGlm
ICh0aW1lWm9uZUlELmlzRW1wdHkoKSkgeworICAgICAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJv
ZHVjaW5nRnVuY3Rpb24odWNhbF9nZXRIb3N0VGltZVpvbmUsIHRpbWVab25lSUQpOworICAgICAg
ICBBU1NFUlRfVU5VU0VEKHN0YXR1cywgVV9TVUNDRVNTKHN0YXR1cykpOworICAgIH0KICAgICBp
ZiAoVV9TVUNDRVNTKHN0YXR1cykpIHsKICAgICAgICAgVmVjdG9yPFVDaGFyLCAzMj4gY2Fub25p
Y2FsQnVmZmVyOwogICAgICAgICBhdXRvIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5j
dGlvbih1Y2FsX2dldENhbm9uaWNhbFRpbWVab25lSUQsIHRpbWVab25lSUQuZGF0YSgpLCB0aW1l
Wm9uZUlELnNpemUoKSwgY2Fub25pY2FsQnVmZmVyLCBudWxscHRyKTsKQEAgLTQwNSw4ICs0MzQs
MTIgQEAgdm9pZCBEYXRlQ2FjaGU6OnRpbWVab25lQ2FjaGVTbG93KCkKICAgICB1Y2FsX3NldEdy
ZWdvcmlhbkNoYW5nZShjYWNoZS0+bV9jYWxlbmRhci5nZXQoKSwgbWluRUNNQVNjcmlwdFRpbWUs
ICZzdGF0dXMpOyAvLyBJZ25vcmUgInVuc3VwcG9ydGVkIiBlcnJvci4KICAgICBtX3RpbWVab25l
Q2FjaGUgPSBzdGQ6OnVuaXF1ZV9wdHI8T3BhcXVlSUNVVGltZVpvbmUsIE9wYXF1ZUlDVVRpbWVa
b25lRGVsZXRlcj4oY2FjaGUpOwogI2Vsc2UKKyAgICBpZiAoIXRpbWVab25lSUQuaXNFbXB0eSgp
KSB7CisgICAgICAgIG1fdGltZVpvbmVDYWNoZSA9IHN0ZDo6dW5pcXVlX3B0cjxPcGFxdWVJQ1VU
aW1lWm9uZSwgT3BhcXVlSUNVVGltZVpvbmVEZWxldGVyPih0b09wYXF1ZUlDVVRpbWVab25lKGlj
dTo6VGltZVpvbmU6OmNyZWF0ZVRpbWVab25lKGljdTo6VW5pY29kZVN0cmluZyh0aW1lWm9uZUlE
LmRhdGEoKSwgdGltZVpvbmVJRC5zaXplKCkpKSkpOworICAgICAgICByZXR1cm47CisgICAgfQog
ICAgIC8vIERvIG5vdCB1c2UgaWN1OjpUaW1lWm9uZTo6Y3JlYXRlRGVmYXVsdC4gSUNVIGludGVy
bmFsbHkgaGFzIGEgY2FjaGUgZm9yIHRpbWV6b25lIGFuZCBjcmVhdGVEZWZhdWx0IHJldHVybnMg
dGhpcyBjYWNoZWQgdmFsdWUuCi0gICAgbV90aW1lWm9uZUNhY2hlID0gc3RkOjp1bmlxdWVfcHRy
PE9wYXF1ZUlDVVRpbWVab25lLCBPcGFxdWVJQ1VUaW1lWm9uZURlbGV0ZXI+KGJpdHdpc2VfY2Fz
dDxPcGFxdWVJQ1VUaW1lWm9uZSo+KGljdTo6VGltZVpvbmU6OmRldGVjdEhvc3RUaW1lWm9uZSgp
KSk7CisgICAgbV90aW1lWm9uZUNhY2hlID0gc3RkOjp1bmlxdWVfcHRyPE9wYXF1ZUlDVVRpbWVa
b25lLCBPcGFxdWVJQ1VUaW1lWm9uZURlbGV0ZXI+KHRvT3BhcXVlSUNVVGltZVpvbmUoaWN1OjpU
aW1lWm9uZTo6ZGV0ZWN0SG9zdFRpbWVab25lKCkpKTsKICNlbmRpZgogfQogCkBAIC00MjYsNiAr
NDU5LDEwIEBAIHZvaWQgRGF0ZUNhY2hlOjpyZXNldElmTmVjZXNzYXJ5KCkKICAgICBtX2NhY2hl
ZERhdGVTdHJpbmcgPSBTdHJpbmcoKTsKICAgICBtX2NhY2hlZERhdGVTdHJpbmdWYWx1ZSA9IHN0
ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCk7CiAgICAgbV9kYXRlSW5zdGFu
Y2VDYWNoZS5yZXNldCgpOworI2lmIE9TKFdJTkRPV1MpCisgICAgbV90aW1lWm9uZVN0YW5kYXJk
RGlzcGxheU5hbWVPdmVycmlkZUNhY2hlID0gU3RyaW5nKCk7CisgICAgbV90aW1lWm9uZURTVERp
c3BsYXlOYW1lT3ZlcnJpZGVDYWNoZSA9IFN0cmluZygpOworI2VuZGlmCiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNE
YXRlTWF0aC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRlTWF0aC5oCmlu
ZGV4IGUzYWE1OGJiZDI3ZjA5MDg1YjU1NWIzYjE4NzhhZWU3NTk1ZTUwNzYuLmJhOTQ1ZjcxNTMz
MDQ2ZTI5MTg1ZTliZDE0ZjM5YWFmN2MwZGFlYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRGF0ZU1hdGguaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0RhdGVNYXRoLmgKQEAgLTgwLDcgKzgwLDkgQEAgcHVibGljOgogICAgIEpTX0VY
UE9SVF9QUklWQVRFIHZvaWQgcmVzZXRJZk5lY2Vzc2FyeSgpOwogCiAgICAgU3RyaW5nIGRlZmF1
bHRUaW1lWm9uZSgpOwotCisjaWYgT1MoV0lORE9XUykKKyAgICBTdHJpbmdWaWV3IHRpbWVab25l
RGlzcGxheU5hbWVPdmVycmlkZShib29sIGlzRFNUKTsKKyNlbmRpZgogICAgIFJlZjxEYXRlSW5z
dGFuY2VEYXRhPiBjYWNoZWREYXRlSW5zdGFuY2VEYXRhKGRvdWJsZSBtaWxsaXNlY29uZHNGcm9t
RXBvY2gpOwogCiAgICAgdm9pZCBtc1RvR3JlZ29yaWFuRGF0ZVRpbWUoZG91YmxlIG1pbGxpc2Vj
b25kc0Zyb21FcG9jaCwgV1RGOjpUaW1lVHlwZSBvdXRwdXRUaW1lVHlwZSwgR3JlZ29yaWFuRGF0
ZVRpbWUmKTsKQEAgLTEwOCw2ICsxMTAsMTAgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgbV9jYWNo
ZWREYXRlU3RyaW5nVmFsdWU7CiAgICAgRGF0ZUluc3RhbmNlQ2FjaGUgbV9kYXRlSW5zdGFuY2VD
YWNoZTsKICAgICB1aW50NjRfdCBtX2NhY2hlZFRpbWV6b25lSUQgeyAwIH07CisjaWYgT1MoV0lO
RE9XUykKKyAgICBTdHJpbmcgbV90aW1lWm9uZVN0YW5kYXJkRGlzcGxheU5hbWVPdmVycmlkZUNh
Y2hlOworICAgIFN0cmluZyBtX3RpbWVab25lRFNURGlzcGxheU5hbWVPdmVycmlkZUNhY2hlOwor
I2VuZGlmCiB9OwogCiBBTFdBWVNfSU5MSU5FIGJvb2wgaXNVVENFcXVpdmFsZW50KFN0cmluZ1Zp
ZXcgdGltZVpvbmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5jcHAgYi9T
b3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5jcHAKaW5kZXggYjVmMjI4MzA4ZDE2MWI2ZTE2YzljNDVh
YmY4MmIxNTJiNTc2Y2M2ZS4uMGYyOGJlYjZjMGQ1MzAyNzExMWU1MmM2ZDM0ZGNkMGFiN2M1M2Ri
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRGF0ZU1hdGguY3BwCisrKyBiL1NvdXJjZS9X
VEYvd3RmL0RhdGVNYXRoLmNwcApAQCAtNzYsOSArNzYsMTUgQEAKICNpbmNsdWRlIDxsaW1pdHM+
CiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8dGltZS5oPgorI2luY2x1ZGUgPHVuaWNv
ZGUvdWNhbC5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0FT
Q0lJQ1R5cGUuaD4KKyNpbmNsdWRlIDx3dGYvTGFuZ3VhZ2UuaD4KKyNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU3BlY2lmaWMuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3VuaWNvZGUvVVRGOENv
bnZlcnNpb24uaD4KKyNpbmNsdWRlIDx3dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5oPgogCiAj
aWYgT1MoV0lORE9XUykKICNpbmNsdWRlIDx3aW5kb3dzLmg+CkBAIC05Miw2ICs5OCwyMCBAQCB0
ZW1wbGF0ZTx1bnNpZ25lZCBsZW5ndGg+IGlubGluZSBib29sIHN0YXJ0c1dpdGhMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UoY29uc3QgYwogICAgIHJldHVybiBlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShzdHJpbmcsIGxvd2VyY2FzZUxldHRlcnMsIGxlbmd0aCAtIDEpOwogfQogCitzdHJ1
Y3QgVGltZVpvbmVPdmVycmlkZSB7CisgICAgc3RkOjp1bmlxdWVfcHRyPFVDYWxlbmRhciwgSUNV
RGVsZXRlcjx1Y2FsX2Nsb3NlPj4gY2FsZW5kYXI7CisgICAgVmVjdG9yPFVDaGFyPiBpZDsKKyAg
ICBWZWN0b3I8VUNoYXI+IGRpc3BsYXlOYW1lU3RhbmRhcmQ7CisgICAgVmVjdG9yPFVDaGFyPiBk
aXNwbGF5TmFtZURTVDsKK307CisKK3N0YXRpYyBMb2NrIGlubmVyVGltZVpvbmVPdmVycmlkZUxv
Y2s7CitzdGF0aWMgVGltZVpvbmVPdmVycmlkZSYgaW5uZXJUaW1lWm9uZU92ZXJyaWRlKCkgV1RG
X1JFUVVJUkVTX0xPQ0soaW5uZXJUaW1lWm9uZU92ZXJyaWRlTG9jaykKK3sKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8VGltZVpvbmVPdmVycmlkZT4gdGltZVpvbmVPdmVycmlkZTsKKyAgICBy
ZXR1cm4gdGltZVpvbmVPdmVycmlkZTsKK30KKwogLyogQ29uc3RhbnRzICovCiAKIGNvbnN0IEFT
Q0lJTGl0ZXJhbCB3ZWVrZGF5TmFtZVs3XSA9IHsgIk1vbiJfcywgIlR1ZSJfcywgIldlZCJfcywg
IlRodSJfcywgIkZyaSJfcywgIlNhdCJfcywgIlN1biJfcyB9OwpAQCAtMTAxNiw0ICsxMDM2LDg2
IEBAIFN0cmluZyBtYWtlUkZDMjgyMkRhdGVTdHJpbmcodW5zaWduZWQgZGF5T2ZXZWVrLCB1bnNp
Z25lZCBkYXksIHVuc2lnbmVkIG1vbnRoLCB1CiAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9T
dHJpbmcoKTsKIH0KIAorc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFVDaGFyLCAzMj4+IHZh
bGlkYXRlVGltZVpvbmUoU3RyaW5nVmlldyB0aW1lWm9uZSkKK3sKKyAgICBWZWN0b3I8VUNoYXIs
IDMyPiBidWZmZXIodGltZVpvbmUubGVuZ3RoKCkpOworICAgIHRpbWVab25lLmdldENoYXJhY3Rl
cnNXaXRoVXBjb252ZXJ0KGJ1ZmZlci5kYXRhKCkpOworCisgICAgVmVjdG9yPFVDaGFyLCAzMj4g
Y2Fub25pY2FsQnVmZmVyOworICAgIGF1dG8gc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1
bmN0aW9uKHVjYWxfZ2V0Q2Fub25pY2FsVGltZVpvbmVJRCwgYnVmZmVyLmRhdGEoKSwgYnVmZmVy
LnNpemUoKSwgY2Fub25pY2FsQnVmZmVyLCBudWxscHRyKTsKKyAgICBpZiAoIVVfU1VDQ0VTUyhz
dGF0dXMpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHJldHVybiBXVEZNb3Zl
KGNhbm9uaWNhbEJ1ZmZlcik7Cit9CisKK2Jvb2wgaXNUaW1lWm9uZVZhbGlkKFN0cmluZ1ZpZXcg
dGltZVpvbmUpCit7CisgICAgcmV0dXJuIHZhbGlkYXRlVGltZVpvbmUodGltZVpvbmUpLmhhc192
YWx1ZSgpOworfQorCitib29sIHNldFRpbWVab25lT3ZlcnJpZGUoU3RyaW5nVmlldyB0aW1lWm9u
ZSkKK3sKKyAgICBpZiAodGltZVpvbmUuaXNFbXB0eSgpKSB7CisgICAgICAgIExvY2tlciBsb2Nr
ZXIgeyBpbm5lclRpbWVab25lT3ZlcnJpZGVMb2NrIH07CisgICAgICAgIGlubmVyVGltZVpvbmVP
dmVycmlkZSgpID0gVGltZVpvbmVPdmVycmlkZSgpOworI2lmICFPUyhXSU5ET1dTKQorICAgICAg
ICBpZiAodW5zZXRlbnYoIlRaIikpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgYXV0byBjYW5vbmljYWxCdWZmZXIg
PSB2YWxpZGF0ZVRpbWVab25lKHRpbWVab25lKTsKKyAgICBpZiAoIWNhbm9uaWNhbEJ1ZmZlcikK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBjYW5vbmljYWxMZW5ndGggPSBjYW5v
bmljYWxCdWZmZXItPnNpemUoKTsKKyAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJP
UjsKKyAgICBhdXRvIGNhbGVuZGFyID0gc3RkOjp1bmlxdWVfcHRyPFVDYWxlbmRhciwgSUNVRGVs
ZXRlcjx1Y2FsX2Nsb3NlPj4odWNhbF9vcGVuKGNhbm9uaWNhbEJ1ZmZlci0+ZGF0YSgpLCBjYW5v
bmljYWxMZW5ndGgsIG51bGxwdHIsIFVDQUxfVFJBRElUSU9OQUwsICZzdGF0dXMpKTsKKyAgICBp
ZiAoIVVfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyNpZiBPUyhX
SU5ET1dTKQorICAgIFZlY3RvcjxVQ2hhciwgMzI+IGRpc3BsYXlOYW1lU3RhbmRhcmRCdWZmZXI7
CisgICAgc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVjYWxfZ2V0VGltZVpv
bmVEaXNwbGF5TmFtZSwgY2FsZW5kYXIuZ2V0KCksIFVDQUxfU1RBTkRBUkQsIGRlZmF1bHRMYW5n
dWFnZSgpLnV0ZjgoKS5kYXRhKCksIGRpc3BsYXlOYW1lU3RhbmRhcmRCdWZmZXIpOworICAgIGlm
ICghVV9TVUNDRVNTKHN0YXR1cykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBWZWN0b3I8
VUNoYXIsIDMyPiBkaXNwbGF5TmFtZURTVEJ1ZmZlcjsKKyAgICBzdGF0dXMgPSBjYWxsQnVmZmVy
UHJvZHVjaW5nRnVuY3Rpb24odWNhbF9nZXRUaW1lWm9uZURpc3BsYXlOYW1lLCBjYWxlbmRhci5n
ZXQoKSwgVUNBTF9EU1QsIGRlZmF1bHRMYW5ndWFnZSgpLnV0ZjgoKS5kYXRhKCksIGRpc3BsYXlO
YW1lRFNUQnVmZmVyKTsKKyAgICBpZiAoIVVfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisjZWxzZQorICAgIC8vIFRaIGlzIHVzZWQgYnkgc3RyZnRpbWUgdG8gZGV0ZXJt
aW5lIGN1cnJlbnQgdGltZXpvbmUuCisgICAgaWYgKHNldGVudigiVFoiLCB0aW1lWm9uZS51dGY4
KCkuZGF0YSgpLCAxKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHR6c2V0KCk7CisjZW5k
aWYKKyAgICB7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBpbm5lclRpbWVab25lT3ZlcnJpZGVM
b2NrIH07CisgICAgICAgIGF1dG8mIG92ZXJyaWRlID0gaW5uZXJUaW1lWm9uZU92ZXJyaWRlKCk7
CisgICAgICAgIG92ZXJyaWRlLmNhbGVuZGFyID0gV1RGTW92ZShjYWxlbmRhcik7CisgICAgICAg
IG92ZXJyaWRlLmlkID0gV1RGTW92ZSgqY2Fub25pY2FsQnVmZmVyKTsKKyNpZiBPUyhXSU5ET1dT
KQorICAgICAgICBvdmVycmlkZS5kaXNwbGF5TmFtZVN0YW5kYXJkID0gV1RGTW92ZShkaXNwbGF5
TmFtZVN0YW5kYXJkQnVmZmVyKTsKKyAgICAgICAgb3ZlcnJpZGUuZGlzcGxheU5hbWVEU1QgPSBX
VEZNb3ZlKGRpc3BsYXlOYW1lRFNUQnVmZmVyKTsKKyNlbmRpZgorICAgIH0KKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworI2lmIE9TKFdJTkRPV1MpCit2b2lkIGdldFRpbWVab25lT3ZlcnJpZGUoVmVj
dG9yPFVDaGFyLCAzMj4mIHRpbWVab25lSUQsIFN0cmluZyYgc3RhbmRhcmREaXNwbGF5TmFtZSwg
U3RyaW5nJiBkc3REaXNwbGF5TmFtZSkKKyNlbHNlCit2b2lkIGdldFRpbWVab25lT3ZlcnJpZGUo
VmVjdG9yPFVDaGFyLCAzMj4mIHRpbWVab25lSUQpCisjZW5kaWYKK3sKKyAgICBMb2NrZXIgbG9j
a2VyIHsgaW5uZXJUaW1lWm9uZU92ZXJyaWRlTG9jayB9OworICAgIGF1dG8mIG92ZXJyaWRlID0g
aW5uZXJUaW1lWm9uZU92ZXJyaWRlKCk7CisgICAgdGltZVpvbmVJRCA9IG92ZXJyaWRlLmlkOwor
I2lmIE9TKFdJTkRPV1MpCisgICAgc3RhbmRhcmREaXNwbGF5TmFtZSA9IFN0cmluZyhvdmVycmlk
ZS5kaXNwbGF5TmFtZVN0YW5kYXJkKTsKKyAgICBkc3REaXNwbGF5TmFtZSA9IFN0cmluZyhvdmVy
cmlkZS5kaXNwbGF5TmFtZURTVCk7CisjZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RGCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5oIGIvU291cmNlL1dURi93dGYvRGF0
ZU1hdGguaAppbmRleCAxNzRlNmMwN2I2ZjVjZjRiY2YwNDY5ZjIwZjhjZjAyMWJlZDI1MTAzLi5l
MGFkYTVlYjZlZmUwZDlmMGU3YmFmMDUxMzIwMjFiMWYzZTc0ZGNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9EYXRlTWF0aC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmgKQEAg
LTM5MywzMSArMzkzLDQyIEBAIGlubGluZSBkb3VibGUgdGltZVRvTVMoZG91YmxlIGhvdXIsIGRv
dWJsZSBtaW4sIGRvdWJsZSBzZWMsIGRvdWJsZSBtcykKICAgICByZXR1cm4gKCgoaG91ciAqIFdU
Rjo6bWludXRlc1BlckhvdXIgKyBtaW4pICogV1RGOjpzZWNvbmRzUGVyTWludXRlICsgc2VjKSAq
IFdURjo6bXNQZXJTZWNvbmQgKyBtcyk7CiB9CiAKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGlz
VGltZVpvbmVWYWxpZChTdHJpbmdWaWV3KTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIHNldFRp
bWVab25lT3ZlcnJpZGUoU3RyaW5nVmlldyk7CisjaWYgT1MoV0lORE9XUykKK1dURl9FWFBPUlRf
UFJJVkFURSB2b2lkIGdldFRpbWVab25lT3ZlcnJpZGUoVmVjdG9yPFVDaGFyLCAzMj4mIHRpbWVa
b25lSUQsIFN0cmluZyYgc3RhbmRhcmREaXNwbGF5TmFtZSwgU3RyaW5nJiBkc3REaXNwbGF5TmFt
ZSk7CisjZWxzZQorV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZ2V0VGltZVpvbmVPdmVycmlkZShW
ZWN0b3I8VUNoYXIsIDMyPiYgdGltZVpvbmVJRCk7CisjZW5kaWYKKwogLy8gUmV0dXJucyBjb21i
aW5lZCBvZmZzZXQgaW4gbWlsbGlzZWNvbmQgKFVUQyArIERTVCkuCiBXVEZfRVhQT1JUX1BSSVZB
VEUgTG9jYWxUaW1lT2Zmc2V0IGNhbGN1bGF0ZUxvY2FsVGltZU9mZnNldChkb3VibGUgdXRjSW5N
aWxsaXNlY29uZHMsIFRpbWVUeXBlID0gVVRDVGltZSk7CiAKIH0gLy8gbmFtZXNwYWNlIFdURgog
Ci11c2luZyBXVEY6OmlzTGVhcFllYXI7Cit1c2luZyBXVEY6OmNhbGN1bGF0ZUxvY2FsVGltZU9m
ZnNldDsKIHVzaW5nIFdURjo6ZGF0ZVRvRGF5c0Zyb20xOTcwOwogdXNpbmcgV1RGOjpkYXlJbk1v
bnRoRnJvbURheUluWWVhcjsKIHVzaW5nIFdURjo6ZGF5SW5ZZWFyOwordXNpbmcgV1RGOjpnZXRU
aW1lWm9uZU92ZXJyaWRlOwordXNpbmcgV1RGOjppc0xlYXBZZWFyOwordXNpbmcgV1RGOjppc1Rp
bWVab25lVmFsaWQ7Cit1c2luZyBXVEY6OmpzQ3VycmVudFRpbWU7Cit1c2luZyBXVEY6OkxvY2Fs
VGltZU9mZnNldDsKK3VzaW5nIFdURjo6bWFrZVJGQzI4MjJEYXRlU3RyaW5nOwogdXNpbmcgV1RG
OjptaW51dGVzUGVySG91cjsKIHVzaW5nIFdURjo6bW9udGhGcm9tRGF5SW5ZZWFyOwogdXNpbmcg
V1RGOjptc1BlckRheTsKIHVzaW5nIFdURjo6bXNQZXJIb3VyOwogdXNpbmcgV1RGOjptc1Blck1p
bnV0ZTsKIHVzaW5nIFdURjo6bXNQZXJTZWNvbmQ7Ci11c2luZyBXVEY6Om1zVG9ZZWFyOwogdXNp
bmcgV1RGOjptc1RvRGF5czsKLXVzaW5nIFdURjo6bXNUb01pbnV0ZXM7CiB1c2luZyBXVEY6Om1z
VG9Ib3VyczsKK3VzaW5nIFdURjo6bXNUb01pbnV0ZXM7Cit1c2luZyBXVEY6Om1zVG9ZZWFyOwor
dXNpbmcgV1RGOjpwYXJzZURhdGVGcm9tTnVsbFRlcm1pbmF0ZWRDaGFyYWN0ZXJzOwogdXNpbmcg
V1RGOjpzZWNvbmRzUGVyRGF5OwogdXNpbmcgV1RGOjpzZWNvbmRzUGVyTWludXRlOwotdXNpbmcg
V1RGOjpwYXJzZURhdGVGcm9tTnVsbFRlcm1pbmF0ZWRDaGFyYWN0ZXJzOwotdXNpbmcgV1RGOjp0
aW1lVG9NUzsKLXVzaW5nIFdURjo6bWFrZVJGQzI4MjJEYXRlU3RyaW5nOwotdXNpbmcgV1RGOjpM
b2NhbFRpbWVPZmZzZXQ7Ci11c2luZyBXVEY6OmNhbGN1bGF0ZUxvY2FsVGltZU9mZnNldDsKK3Vz
aW5nIFdURjo6c2V0VGltZVpvbmVPdmVycmlkZTsKIHVzaW5nIFdURjo6dGltZUNsaXA7Ci11c2lu
ZyBXVEY6OmpzQ3VycmVudFRpbWU7Cit1c2luZyBXVEY6OnRpbWVUb01TOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAppbmRl
eCA1MTQyZTJjNjA5NTMxZTVhZjgwOWM0NmRhNmZjNDI2NTBjZTRkNjlhLi45Y2E4MTExYTIwNDRl
NWE2YjExOTcxN2Q1YTRkOTc3YjVkODgxNDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtMjE0LDYgKzIxNCw4
IEBAIHZvaWQgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKICNpZiBVU0UoQVRTUEkpCiAgICAgZW5jb2RlciA8PCBhY2Nlc3Np
YmlsaXR5QnVzQWRkcmVzczsKICNlbmRpZgorCisgICAgZW5jb2RlciA8PCB0aW1lWm9uZU92ZXJy
aWRlOwogfQogCiBib29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6
OkRlY29kZXImIGRlY29kZXIsIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRl
cnMpCkBAIC01NzEsNiArNTczLDEyIEBAIGJvb2wgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
czo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgV2ViUHJvY2Vzc0NyZWF0CiAgICAgcGFy
YW1ldGVycy5hY2Nlc3NpYmlsaXR5QnVzQWRkcmVzcyA9IFdURk1vdmUoKmFjY2Vzc2liaWxpdHlC
dXNBZGRyZXNzKTsKICNlbmRpZgogCisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHRpbWVab25l
T3ZlcnJpZGU7CisgICAgZGVjb2RlciA+PiB0aW1lWm9uZU92ZXJyaWRlOworICAgIGlmICghdGlt
ZVpvbmVPdmVycmlkZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHBhcmFtZXRlcnMudGlt
ZVpvbmVPdmVycmlkZSA9IFdURk1vdmUoKnRpbWVab25lT3ZlcnJpZGUpOworCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuaAppbmRleCA4ZDM3MmNiNjYxOWMyODQ5YmQ0NjFmMjQzYTUxYTg2Nzk0
OGQ5NzIzLi4yOWRhMjNkODNlNTYwMjhmYmIwMDlkOTc1ZTUwZmY5OTkyOTc0NGI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5o
CkBAIC0yNTUsNiArMjU1LDggQEAgc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMg
ewogI2lmIFVTRShBVFNQSSkKICAgICBTdHJpbmcgYWNjZXNzaWJpbGl0eUJ1c0FkZHJlc3M7CiAj
ZW5kaWYKKworICAgIFN0cmluZyB0aW1lWm9uZU92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwCmluZGV4IGNmZDljMzk4MTMzN2M3ZGQwMmM2
MjNjZThiYTY4NmVhMzZiYmZmYjkuLmExNmZlMTNjMDg1NzYxOTRlYzhjNDNlOWRhZTYyYTIwNTY2
OTA0YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwCkBAIC04NCw2ICs4NCw3IEBAIFJlZjxQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24+IFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y29weSgpCiAj
aWYgSEFWRShBVURJVF9UT0tFTikKICAgICBjb3B5LT5tX3ByZXNlbnRpbmdBcHBsaWNhdGlvblBy
b2Nlc3NUb2tlbiA9IHRoaXMtPm1fcHJlc2VudGluZ0FwcGxpY2F0aW9uUHJvY2Vzc1Rva2VuOwog
I2VuZGlmCisgICAgY29weS0+bV90aW1lWm9uZU92ZXJyaWRlID0gdGhpcy0+bV90aW1lWm9uZU92
ZXJyaWRlOwogICAgIHJldHVybiBjb3B5OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgKaW5kZXggY2M2
NDJjNTFiYTY2M2U4NDNkZjU0ZDE0Y2ZjY2I2ZDRlZjgxNzI2Yy4uYzc3OWQwNDU1MDBiYjJhYzll
ZmU1MzVjMmMzYzY0YjY0YTZlMTIxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaApAQCAtMTY0LDYgKzE2
NCw5IEBAIHB1YmxpYzoKICAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPE1lbW9yeVByZXNzdXJlSGFu
ZGxlcjo6Q29uZmlndXJhdGlvbj4mIG1lbW9yeVByZXNzdXJlSGFuZGxlckNvbmZpZ3VyYXRpb24o
KSBjb25zdCB7IHJldHVybiBtX21lbW9yeVByZXNzdXJlSGFuZGxlckNvbmZpZ3VyYXRpb247IH0K
ICNlbmRpZgogCisgICAgdm9pZCBzZXRUaW1lWm9uZU92ZXJyaWRlKGNvbnN0IFdURjo6U3RyaW5n
JiB0aW1lWm9uZU92ZXJyaWRlKSB7IG1fdGltZVpvbmVPdmVycmlkZSA9IHRpbWVab25lT3ZlcnJp
ZGU7IH0KKyAgICBjb25zdCBXVEY6OlN0cmluZyYgdGltZVpvbmVPdmVycmlkZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdGltZVpvbmVPdmVycmlkZTsgfQorCiBwcml2YXRlOgogICAgIFdURjo6U3RyaW5n
IG1faW5qZWN0ZWRCdW5kbGVQYXRoOwogICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gbV9jdXN0b21D
bGFzc2VzRm9yUGFyYW1ldGVyQ29kZXI7CkBAIC0yMDYsNiArMjA5LDcgQEAgcHJpdmF0ZToKICNp
ZiBIQVZFKEFVRElUX1RPS0VOKQogICAgIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gbV9w
cmVzZW50aW5nQXBwbGljYXRpb25Qcm9jZXNzVG9rZW47CiAjZW5kaWYKKyAgICBXVEY6OlN0cmlu
ZyBtX3RpbWVab25lT3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dENvbmZpZ3VyYXRpb25S
ZWYuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0Q29uZmlndXJh
dGlvblJlZi5jcHAKaW5kZXggNmRlZTI4YmU1ZjY2ZjhlMGFkOTEwNTBiYzU1OTg5ZDM3YWU1Mjk0
MS4uNjNlMDZhN2RhMmRjNTIwYWY1ZTM0YWMzZmU2MmY1MjVjODQxZmU5NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0Q29uZmlndXJh
dGlvblJlZi5jcHAKQEAgLTIyMiwzICsyMjIsMTMgQEAgdm9pZCBXS0NvbnRleHRDb25maWd1cmF0
aW9uU2V0U2hvdWxkQ29uZmlndXJlSlNDRm9yVGVzdGluZyhXS0NvbnRleHRDb25maWd1cmF0aW8K
IHsKICAgICB0b0ltcGwoY29uZmlndXJhdGlvbiktPnNldFNob3VsZENvbmZpZ3VyZUpTQ0ZvclRl
c3RpbmcodmFsdWUpOwogfQorCitXS1N0cmluZ1JlZiBXS0NvbnRleHRDb25maWd1cmF0aW9uQ29w
eVRpbWVab25lT3ZlcnJpZGUoV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9u
KQoreworICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwoY29uZmlndXJhdGlvbiktPnRpbWVa
b25lT3ZlcnJpZGUoKSk7Cit9CisKK3ZvaWQgV0tDb250ZXh0Q29uZmlndXJhdGlvblNldFRpbWVa
b25lT3ZlcnJpZGUoV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uLCBXS1N0
cmluZ1JlZiB0aW1lWm9uZU92ZXJyaWRlKQoreworICAgIHRvSW1wbChjb25maWd1cmF0aW9uKS0+
c2V0VGltZVpvbmVPdmVycmlkZSh0b0ltcGwodGltZVpvbmVPdmVycmlkZSktPnN0cmluZygpKTsK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dENv
bmZpZ3VyYXRpb25SZWYuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4
dENvbmZpZ3VyYXRpb25SZWYuaAppbmRleCAwZDFiMTY0NjAzNGIxNDc3YjgzM2FlYzZjMjY0M2Qy
MWY4MDExNDk5Li5hOTEyMWI4YWRiNTIzNWUzZTc5MzczNTY5ZGZjYTQ1Mjg4ZmFmZWVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRDb25maWd1cmF0
aW9uUmVmLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0Q29u
ZmlndXJhdGlvblJlZi5oCkBAIC05NSw2ICs5NSw5IEBAIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4
dENvbmZpZ3VyYXRpb25TZXREaXNrQ2FjaGVTaXplT3ZlcnJpZGUoV0tDb250ZXh0Q29uZmlndXJh
CiAgICAgCiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRDb25maWd1cmF0aW9uU2V0U2hvdWxkQ29u
ZmlndXJlSlNDRm9yVGVzdGluZyhXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRp
b24sIGJvb2wgdmFsdWUpOwogCitXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tDb250ZXh0Q29uZmln
dXJhdGlvbkNvcHlUaW1lWm9uZU92ZXJyaWRlKFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYgY29u
ZmlndXJhdGlvbik7CitXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRDb25maWd1cmF0aW9uU2V0VGlt
ZVpvbmVPdmVycmlkZShXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIFdL
U3RyaW5nUmVmIHRpbWVab25lT3ZlcnJpZGUpOworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1By
b2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCmluZGV4IDc4NDk4M2MxMDNiMjljYTNj
Nzc0YzYyMDQ5MjY1OTRlYmM4ZGZlZTQuLmE0YjZkNzU3ZTA2NjMzNGFmOThkZWMyMThhYzUyMjYx
YjlkNWNjZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgKQEAgLTI0LDYgKzI0LDcg
QEAKICAqLwogCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPFdl
YktpdC9XS0Jhc2UuaD4KICNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KIAogTlNfQVNT
VU1FX05PTk5VTExfQkVHSU4KQEAgLTc3LDYgKzc4LDggQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1h
Y29zKDEwLjEwKSwgaW9zKDguMCkpCiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGNvbmZp
Z3VyZUpTQ0ZvclRlc3RpbmcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNS40KSwgaW9zKDEz
LjQpKTsKIAorQHByb3BlcnR5IChub25hdG9taWMsIG51bGxhYmxlLCBjb3B5KSBOU1N0cmluZyAq
dGltZVpvbmVPdmVycmlkZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3Mo
V0tfSU9TX1RCQSkpOworCiBAZW5kCiAKIE5TX0FTU1VNRV9OT05OVUxMX0VORApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24ubW0KaW5kZXggOTJiNTA5YWQ0ODJmNGQzYjVhNjlhMDBiMGZkMjNj
NGQwYWFiMTZhZS4uY2I3NDQ1YjdmZTgxNGZlZmY1MGExNGI4ZGQyNWY1YTMyZjcwYTE3ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29s
Q29uZmlndXJhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1tCkBAIC00MDMsNiArNDAzLDE2IEBACiAgICAg
X3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi0+c2V0U2hvdWxkQ29uZmlndXJlSlNDRm9yVGVzdGlu
Zyh2YWx1ZSk7CiB9CiAKKy0gKE5TU3RyaW5nICopdGltZVpvbmVPdmVycmlkZQoreworICAgIHJl
dHVybiBfcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLT50aW1lWm9uZU92ZXJyaWRlKCk7Cit9CisK
Ky0gKHZvaWQpc2V0VGltZVpvbmVPdmVycmlkZTooTlNTdHJpbmcgKil0aW1lWm9uZQoreworICAg
IF9wcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24tPnNldFRpbWVab25lT3ZlcnJpZGUodGltZVpvbmUp
OworfQorCiAjcHJhZ21hIG1hcmsgV0tPYmplY3QgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24KIAog
LSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKaW5kZXggOWI2YjU0MWRmNDVjOTI1
ZDIyMGY3Mjg4NDQ2YzM3ZmNmNGQ3MDhiYS4uNzhkMzgyOTBmMmJmM2MyYzk5ZmM1NGUyMjg1ZDAz
NjJmZTY4MjNjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTY1LDYgKzY1LDcgQEAKICNpbmNsdWRlIDxsaWJp
bnRsLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHBhbC9IeXN0ZXJlc2lzQWN0aXZp
dHkuaD4KKyNpbmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4KICNpbmNsdWRlIDx3dGYvRmlsZVN5c3Rl
bS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4K
QEAgLTEyNyw2ICsxMjgsNyBAQCBlbnVtIHsKICNlbmRpZgogI2VuZGlmCiAgICAgUFJPUF9NRU1P
UllfUFJFU1NVUkVfU0VUVElOR1MsCisgICAgUFJPUF9USU1FX1pPTkVfT1ZFUlJJREUsCiAgICAg
Tl9QUk9QRVJUSUVTLAogfTsKIApAQCAtMjQ1LDYgKzI0Nyw4IEBAIHN0cnVjdCBfV2ViS2l0V2Vi
Q29udGV4dFByaXZhdGUgewogICAgIFBBTDo6SHlzdGVyZXNpc0FjdGl2aXR5IGRuc1ByZWZldGNo
SHlzdGVyZXJpczsKIAogICAgIFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MqIG1lbW9yeVBy
ZXNzdXJlU2V0dGluZ3M7CisKKyAgICBTdHJpbmcgdGltZVpvbmVPdmVycmlkZTsKIH07CiAKIHN0
YXRpYyBndWludCBzaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwgfTsKQEAgLTM1MCw2ICszNTQs
OSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJDb250ZXh0R2V0UHJvcGVydHkoR09iamVjdCogb2Jq
ZWN0LCBndWludCBwcm9wSUQsIEdWYWx1ZSogdgogICAgICAgICBicmVhazsKICNlbmRpZgogI2Vu
ZGlmCisgICAgY2FzZSBQUk9QX1RJTUVfWk9ORV9PVkVSUklERToKKyAgICAgICAgZ192YWx1ZV9z
ZXRfc3RyaW5nKHZhbHVlLCB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3RpbWVfem9uZV9vdmVycmlk
ZShjb250ZXh0KSk7CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEdfT0JK
RUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJRCwgcGFyYW1TcGVjKTsK
ICAgICB9CkBAIC0zODUsNiArMzkyLDExIEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYkNvbnRleHRT
ZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJRCwgY29uc3QgR1ZhCiAgICAg
ICAgIGNvbnRleHQtPnByaXYtPm1lbW9yeVByZXNzdXJlU2V0dGluZ3MgPSBzZXR0aW5ncyA/IHdl
YmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfY29weShzdGF0aWNfY2FzdDxXZWJLaXRNZW1v
cnlQcmVzc3VyZVNldHRpbmdzKj4oc2V0dGluZ3MpKSA6IG51bGxwdHI7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KKyAgICBjYXNlIFBST1BfVElNRV9aT05FX09WRVJSSURFOiB7CisgICAgICAgIGlm
IChjb25zdCBhdXRvKiBvdmVycmlkZSA9IGdfdmFsdWVfZ2V0X3N0cmluZyh2YWx1ZSkpCisgICAg
ICAgICAgICB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3RpbWVfem9uZV9vdmVycmlkZShjb250ZXh0
LCBvdmVycmlkZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBkZWZhdWx0OgogICAgICAg
ICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wSUQsIHBhcmFt
U3BlYyk7CiAgICAgfQpAQCAtNDEzLDYgKzQyNSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYkNv
bnRleHRDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAgICAgICAgIC8vIE9uY2UgdGhlIHNl
dHRpbmdzIGhhdmUgYmVlbiBwYXNzZWQgdG8gdGhlIFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiwg
d2UgZG9uJ3QgbmVlZCB0aGVtIGFueW1vcmUgc28gd2UgY2FuIGZyZWUgdGhlbS4KICAgICAgICAg
Z19jbGVhcl9wb2ludGVyKCZwcml2LT5tZW1vcnlQcmVzc3VyZVNldHRpbmdzLCB3ZWJraXRfbWVt
b3J5X3ByZXNzdXJlX3NldHRpbmdzX2ZyZWUpOwogICAgIH0KKyAgICBjb25maWd1cmF0aW9uLnNl
dFRpbWVab25lT3ZlcnJpZGUocHJpdi0+dGltZVpvbmVPdmVycmlkZSk7CiAKICAgICBpZiAoIXBy
aXYtPndlYnNpdGVEYXRhTWFuYWdlcikKICAgICAgICAgcHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2Vy
ID0gYWRvcHRHUmVmKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9uZXcoImxvY2FsLXN0b3Jh
Z2UtZGlyZWN0b3J5IiwgcHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5LmRhdGEoKSwgbnVsbHB0
cikpOwpAQCAtNTcyLDYgKzU4NSwyOCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX2NvbnRleHRf
Y2xhc3NfaW5pdChXZWJLaXRXZWJDb250ZXh0Q2xhc3MqIHdlYkNvbnRleHRDbGFzcwogICAgICAg
ICAgICAgV0VCS0lUX1RZUEVfTUVNT1JZX1BSRVNTVVJFX1NFVFRJTkdTLAogICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9XUklUQUJMRSB8IEdfUEFSQU1f
Q09OU1RSVUNUX09OTFkpKTsKIAorICAgIC8qKgorICAgICAqIFdlYktpdFdlYkNvbnRleHQ6dGlt
ZS16b25lLW92ZXJyaWRlOgorICAgICAqCisgICAgICogVGhlIHRpbWV6b25lIG92ZXJyaWRlIGZv
ciB0aGlzIHdlYiBjb250ZXh0LiBTZXR0aW5nIHRoaXMgcHJvcGVydHkgcHJvdmlkZXMgYSBiZXR0
ZXIKKyAgICAgKiBhbHRlcm5hdGl2ZSB0byBjb25maWd1cmUgdGhlIHRpbWV6b25lIGluZm9ybWF0
aW9uIGZvciBhbGwgd2Vidmlld3MgbWFuYWdlZCBieSB0aGUgV2ViQ29udGV4dC4KKyAgICAgKiBU
aGUgb3RoZXIsIGxlc3Mgb3B0aW1hbCwgYXBwcm9hY2ggaXMgdG8gZ2xvYmFsbHkgc2V0IHRoZSBU
WiBlbnZpcm9ubWVudCB2YXJpYWJsZSBpbiB0aGUKKyAgICAgKiBwcm9jZXNzIGJlZm9yZSBjcmVh
dGluZyB0aGUgY29udGV4dC4gSG93ZXZlciB0aGlzIGFwcHJvYWNoIG1pZ2h0IG5vdCBiZSB2ZXJ5
IGNvbnZlbmllbnQgYW5kCisgICAgICogY2FuIGhhdmUgc2lkZS1lZmZlY3RzIGluIHlvdXIgYXBw
bGljYXRpb24uCisgICAgICoKKyAgICAgKiBUaGUgZXhwZWN0ZWQgdmFsdWVzIGZvciB0aGlzIHBy
b3BlcnR5IGFyZSBkZWZpbmVkIGluIHRoZSBJQU5BIHRpbWV6b25lIGRhdGFiYXNlLiBTZWUgdGhp
cworICAgICAqIHdpa2lwZWRpYSBwYWdlIGZvciBpbnN0YW5jZSwgaHR0cHM6Ly9lbi53aWtpcGVk
aWEub3JnL3dpa2kvTGlzdF9vZl90el9kYXRhYmFzZV90aW1lX3pvbmVzLgorICAgICAqCisgICAg
ICogU2luY2U6IDIuMzgKKyAgICAgKi8KKyAgICBzT2JqUHJvcGVydGllc1tQUk9QX1RJTUVfWk9O
RV9PVkVSUklERV0gPQorICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKAorICAgICAgICAgICAg
InRpbWUtem9uZS1vdmVycmlkZSIsCisgICAgICAgICAgICBfKCJUaW1lIFpvbmUgT3ZlcnJpZGUi
KSwKKyAgICAgICAgICAgIF8oIlRoZSB0aW1lIHpvbmUgdG8gdXNlIGluc3RlYWQgb2YgdGhlIHN5
c3RlbSBvbmUiKSwKKyAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxHUGFyYW1GbGFncz4oV0VCS0lUX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RSVUNU
X09OTFkpKTsKKwogICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydGllcyhnT2JqZWN0
Q2xhc3MsIE5fUFJPUEVSVElFUywgc09ialByb3BlcnRpZXMpOwogCiAgICAgLyoqCkBAIC0xODM1
LDYgKzE4NzAsMzkgQEAgZ2Jvb2xlYW4gd2Via2l0X3dlYl9jb250ZXh0X2dldF91c2Vfc3lzdGVt
X2FwcGVhcmFuY2VfZm9yX3Njcm9sbGJhcnMoV2ViS2l0V2ViQ28KIH0KICNlbmRpZgogCisvKioK
KyAqIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfdGltZV96b25lX292ZXJyaWRlOgorICogQGNvbnRl
eHQ6IGEgI1dlYktpdFdlYkNvbnRleHQKKyAqIEB0aW1lX3pvbmVfb3ZlcnJpZGU6IHZhbHVlIHRv
IHNldAorICoKKyAqIFNldCB0aGUgI1dlYktpdFdlYkNvbnRleHQ6dGltZS16b25lLW92ZXJyaWRl
IHByb3BlcnR5LiBSZWZlciB0byB0aGUgSUFOQSBkYXRhYmFzZSBmb3IgdmFsaWQKKyAqIHNwZWNp
ZmllcnMsIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xpc3Rfb2ZfdHpfZGF0YWJhc2Vf
dGltZV96b25lcworICoKKyAqIFNpbmNlOiAyLjM4CisgKi8KK3ZvaWQgd2Via2l0X3dlYl9jb250
ZXh0X3NldF90aW1lX3pvbmVfb3ZlcnJpZGUoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCwgY29u
c3QgZ2NoYXIqIHRpbWVab25lT3ZlcnJpZGUpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJL
SVRfSVNfV0VCX0NPTlRFWFQoY29udGV4dCkpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoaXNUaW1l
Wm9uZVZhbGlkKHRpbWVab25lT3ZlcnJpZGUpKTsKKworICAgIGNvbnRleHQtPnByaXYtPnRpbWVa
b25lT3ZlcnJpZGUgPSBTdHJpbmc6OmZyb21VVEY4KHRpbWVab25lT3ZlcnJpZGUpOworfQorCisv
KioKKyAqIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfdGltZV96b25lX292ZXJyaWRlOgorICogQGNv
bnRleHQ6IGEgI1dlYktpdFdlYkNvbnRleHQKKyAqCisgKiBHZXQgdGhlICNXZWJLaXRXZWJDb250
ZXh0OnRpbWUtem9uZS1vdmVycmlkZSBwcm9wZXJ0eS4KKyAqCisgKiBTaW5jZTogMi4zOAorICov
Citjb25zdCBnY2hhciogd2Via2l0X3dlYl9jb250ZXh0X2dldF90aW1lX3pvbmVfb3ZlcnJpZGUo
V2ViS2l0V2ViQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChX
RUJLSVRfSVNfV0VCX0NPTlRFWFQoY29udGV4dCksIG51bGxwdHIpOworCisgICAgcmV0dXJuIGNv
bnRleHQtPnByaXYtPnRpbWVab25lT3ZlcnJpZGUudXRmOCgpLmRhdGEoKTsKK30KKwogdm9pZCB3
ZWJraXRXZWJDb250ZXh0SW5pdGlhbGl6ZU5vdGlmaWNhdGlvblBlcm1pc3Npb25zKFdlYktpdFdl
YkNvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgZ19zaWduYWxfZW1pdChjb250ZXh0LCBzaWduYWxz
W0lOSVRJQUxJWkVfTk9USUZJQ0FUSU9OX1BFUk1JU1NJT05TXSwgMCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oCmluZGV4IGJkZDkx
MjU1Y2NkODJlYTU3NzQyMjI3ODNiNTk0NzZhMzFiY2ZiMmUuLjk3YTRkNThmMjY3Nzc0M2FjOGE5
Yjk2ZGQ0ZTBiYTNkOGEwNGQyYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oCkBAIC0zMDIsNiArMzAyLDEzIEBAIHdlYmtpdF93
ZWJfY29udGV4dF9zZXRfdXNlX3N5c3RlbV9hcHBlYXJhbmNlX2Zvcl9zY3JvbGxiYXJzIChXZWJL
aXRXZWJDb250ZXh0CiBXRUJLSVRfQVBJIGdib29sZWFuCiB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0
X3VzZV9zeXN0ZW1fYXBwZWFyYW5jZV9mb3Jfc2Nyb2xsYmFycyAoV2ViS2l0V2ViQ29udGV4dCAg
ICAgICpjb250ZXh0KTsKIAorV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX2NvbnRleHRfc2V0
X3RpbWVfem9uZV9vdmVycmlkZSAgICAgICAgICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICAg
ICAgICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAgICAgICAgICAqdGltZV96b25lX292ZXJy
aWRlKTsKKworV0VCS0lUX0FQSSBjb25zdCBnY2hhcioKK3dlYmtpdF93ZWJfY29udGV4dF9nZXRf
dGltZV96b25lX292ZXJyaWRlICAgICAgICAgICAoV2ViS2l0V2ViQ29udGV4dCAgICAgICAgICAg
ICAgKmNvbnRleHQpOworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViQ29udGV4dC5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJDb250ZXh0LmgKaW5kZXggNjg0MWMwNzlh
YTRiNjFkODljMDhiMWE5NjlmOTEzN2Q5YjhhMDQzNC4uZWE1NWY4NzZjMzFlYmQwYmViZWI0YmJm
ZGNhY2M5MzdhOWM3OTdiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L3dwZS9XZWJLaXRXZWJDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L3dwZS9XZWJLaXRXZWJDb250ZXh0LmgKQEAgLTI5MSw2ICsyOTEsMTMgQEAgV0VCS0lUX0FQSSB2
b2lkCiB3ZWJraXRfd2ViX2NvbnRleHRfc2VuZF9tZXNzYWdlX3RvX2FsbF9leHRlbnNpb25zICAg
KFdlYktpdFdlYkNvbnRleHQgICAgICAgICAgICAgICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRVc2VyTWVzc2FnZSAg
ICAgICAgICAgICAqbWVzc2FnZSk7CiAKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl9jb250
ZXh0X3NldF90aW1lX3pvbmVfb3ZlcnJpZGUgICAgICAgICAgIChXZWJLaXRXZWJDb250ZXh0ICAg
ICAgICAgICAgICAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgICAgICAgICAgKnRpbWVfem9u
ZV9vdmVycmlkZSk7CisKK1dFQktJVF9BUEkgY29uc3QgZ2NoYXIqCit3ZWJraXRfd2ViX2NvbnRl
eHRfZ2V0X3RpbWVfem9uZV9vdmVycmlkZSAgICAgICAgICAgKFdlYktpdFdlYkNvbnRleHQgICAg
ICAgICAgICAgICpjb250ZXh0KTsKKwogR19FTkRfREVDTFMKIAogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggYmUzNjg5ZmE1YTBlYWY2ZDQ1
NWQyMjVmZjgzNDJiOTA4OGFkNmMwZi4uYWYzNzEyZmZiYzk1Y2EzNzkyMzJmZmFkNTY5MzkwOTc5
MzgzMDM4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApA
QCAtODc0LDYgKzg3NCw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmluaXRpYWxpemVOZXdXZWJQ
cm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgV2Vic2l0ZURhCiAKICAgICBwYXJhbWV0
ZXJzLnByZXNlbnRpbmdBcHBsaWNhdGlvblBJRCA9IG1fY29uZmlndXJhdGlvbi0+cHJlc2VudGlu
Z0FwcGxpY2F0aW9uUElEKCk7CiAKKyAgICBwYXJhbWV0ZXJzLnRpbWVab25lT3ZlcnJpZGUgPSBt
X2NvbmZpZ3VyYXRpb24tPnRpbWVab25lT3ZlcnJpZGUoKTsKKwogICAgIC8vIEFkZCBhbnkgcGxh
dGZvcm0gc3BlY2lmaWMgcGFyYW1ldGVycwogICAgIHBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nl
c3MocHJvY2VzcywgcGFyYW1ldGVycyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcAppbmRleCBkNzdlMDNkYjEyN2E1YWFhZDQxMDkxNmEyZDUxNjhhNGIxMjRhNzMwLi5i
NGE5MGQ2OTQyNjBlOWVkMmM1OGQzMGU4YmFjYTJjOTQyMDRiNGEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xNDIsNiArMTQyLDcgQEAKICNpbmNsdWRlIDxw
YWwvTG9nZ2luZy5oPgogI2luY2x1ZGUgPHd0Zi9BbGdvcml0aG1zLmg+CiAjaW5jbHVkZSA8d3Rm
L0NhbGxiYWNrQWdncmVnYXRvci5oPgorI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgogI2luY2x1
ZGUgPHd0Zi9MYW5ndWFnZS5oPgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CiAj
aW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTQ5OCw2ICs0OTksOSBAQCB2b2lkIFdlYlByb2Nl
c3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmJiBw
YXJhbWV0ZXJzKQogCiAgICAgc2V0Q2FjaGVNb2RlbChwYXJhbWV0ZXJzLmNhY2hlTW9kZWwpOwog
CisgICAgaWYgKCFwYXJhbWV0ZXJzLnRpbWVab25lT3ZlcnJpZGUuaXNFbXB0eSgpKQorICAgICAg
ICBzZXRUaW1lWm9uZU92ZXJyaWRlKHBhcmFtZXRlcnMudGltZVpvbmVPdmVycmlkZSk7CisKICAg
ICBpZiAoIXBhcmFtZXRlcnMub3ZlcnJpZGVMYW5ndWFnZXMuaXNFbXB0eSgpKSB7CiAgICAgICAg
IExPR19XSVRIX1NUUkVBTShMYW5ndWFnZSwgc3RyZWFtIDw8ICJXZWIgUHJvY2VzcyBpbml0aWFs
aXphdGlvbiBpcyBzZXR0aW5nIG92ZXJyaWRlTGFuZ3VhZ2VzOiAiIDw8IHBhcmFtZXRlcnMub3Zl
cnJpZGVMYW5ndWFnZXMpOwogICAgICAgICBvdmVycmlkZVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMo
cGFyYW1ldGVycy5vdmVycmlkZUxhbmd1YWdlcyk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTRmMTY3YjA1ODY0OTZiZjRlMDg5M2I5MjMwZjg1
MzBlZmIyOThiYS4uYTYzODliOTYzMDEyZWY1MjFiMTE2M2UzMjUwNDQ4ZGY5MTQ5ODczYSAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDM2IEBACisyMDIyLTA0LTI3ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNv
bT4gYW5kIFl1cnkgU2VtaWtoYXRza3kgPHl1cnlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBb
V0syXSBBZGQgQVBJIHRvIGFsbG93IGVtYmVkZGVyIHRvIHNldCBhIHRpbWV6b25lIG92ZXJyaWRl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM4ODQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgQVBJ
IHRlc3RzIGZvciB0aGUgdGltZXpvbmUgY29uZmlndXJhdGlvbiBBUEkuIFRoZSBHVEsgYW5kIFdQ
RSBNaW5pQnJvd3NlcnMgYWxzbyBnYWluZWQKKyAgICAgICAgbmV3IHJ1bnRpbWUgb3B0aW9ucyBh
bGxvd2luZyB0byBleGVyY2lzZSB0aGlzIG5ldyBBUEkuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nl
ci9ndGsvbWFpbi5jOgorICAgICAgICAoYWN0aXZhdGUpOgorICAgICAgICAqIE1pbmlCcm93c2Vy
L3dwZS9tYWluLmNwcDoKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
U291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1RpbWVab25lT3ZlcnJpZGUubW06IEFkZGVkLgorICAgICAgICAoVGltZVpv
bmVPdmVycmlkZVRlc3Q6OnJ1blNjcmlwdEFuZEV4ZWN1dGVDYWxsYmFjayk6CisgICAgICAgIChU
aW1lWm9uZU92ZXJyaWRlVGVzdDo6Y2FsbEFzeW5jRnVuY3Rpb25Cb2R5KToKKyAgICAgICAgKFRF
U1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJL
aXRXZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKHRlc3RXZWJDb250ZXh0VGltZVpvbmVPdmVycmlk
ZSk6CisgICAgICAgICh0ZXN0V2ViQ29udGV4dFRpbWVab25lT3ZlcnJpZGVJbldvcmtlcik6Cisg
ICAgICAgIChiZWZvcmVBbGwpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRH
TGliL1Rlc3RNYWluLmNwcDoKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmNwcDoKKyAgICAgICAgKHJ1bkphdmFTY3Jp
cHRSZWFkeUNhbGxiYWNrKToKKyAgICAgICAgKFdlYlZpZXdUZXN0OjpydW5KYXZhU2NyaXB0QW5k
V2FpdFVudGlsRmluaXNoZWQpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRH
TGliL1dlYlZpZXdUZXN0Lmg6CisgICAgICAgICogZmxhdHBhay9mbGF0cGFrdXRpbHMucHk6Cisg
ICAgICAgIChXZWJraXRGbGF0cGFrLnJ1bl9pbl9zYW5kYm94KToKKwogMjAyMi0wNC0xNCAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBVbmRvIG9wdGlv
biBhZnRlciBpbnZva2luZyAiTWFya3VwIEltYWdlIiBzYXlzICJVbmRvIFBhc3RlIgpkaWZmIC0t
Z2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0
ay9tYWluLmMKaW5kZXggOWU3ODYzYjYxYjNlOWRiNzZlMDRlMTRmNDUxMTY2ODRkYWU0NGUzNy4u
ODE3ZThmZWM3ZTE4YjNmYmRlODVhYTUzNDI2M2RlZjYwNDU4YjFhOCAxMDA2NDQKLS0tIGEvVG9v
bHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYworKysgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFp
bi5jCkBAIC01Miw2ICs1Miw3IEBAIHN0YXRpYyBjb25zdCBjaGFyICpjb29raWVzRmlsZTsKIHN0
YXRpYyBjb25zdCBjaGFyICpjb29raWVzUG9saWN5Owogc3RhdGljIGNvbnN0IGNoYXIgKnByb3h5
Owogc3RhdGljIGdib29sZWFuIGRhcmtNb2RlOworc3RhdGljIGNoYXIqIHRpbWVab25lOwogc3Rh
dGljIGdib29sZWFuIGVuYWJsZUlUUDsKIHN0YXRpYyBnYm9vbGVhbiBlbmFibGVTYW5kYm94Owog
c3RhdGljIGdib29sZWFuIGV4aXRBZnRlckxvYWQ7CkBAIC0xNDksNiArMTUwLDcgQEAgc3RhdGlj
IGNvbnN0IEdPcHRpb25FbnRyeSBjb21tYW5kTGluZU9wdGlvbnNbXSA9CiAgICAgeyAiZW5hYmxl
LWl0cCIsIDAsIDAsIEdfT1BUSU9OX0FSR19OT05FLCAmZW5hYmxlSVRQLCAiRW5hYmxlIEludGVs
bGlnZW50IFRyYWNraW5nIFByZXZlbnRpb24gKElUUCkiLCBOVUxMIH0sCiAgICAgeyAiZW5hYmxl
LXNhbmRib3giLCAwLCAwLCBHX09QVElPTl9BUkdfTk9ORSwgJmVuYWJsZVNhbmRib3gsICJFbmFi
bGUgd2ViIHByb2Nlc3Mgc2FuZGJveCBzdXBwb3J0IiwgTlVMTCB9LAogICAgIHsgImV4aXQtYWZ0
ZXItbG9hZCIsIDAsIDAsIEdfT1BUSU9OX0FSR19OT05FLCAmZXhpdEFmdGVyTG9hZCwgIlF1aXQg
dGhlIGJyb3dzZXIgYWZ0ZXIgdGhlIGxvYWQgZmluaXNoZXMiLCBOVUxMIH0sCisgICAgeyAidGlt
ZS16b25lIiwgJ3QnLCAwLCBHX09QVElPTl9BUkdfU1RSSU5HLCAmdGltZVpvbmUsICJTZXQgdGlt
ZSB6b25lIiwgIlRJTUVaT05FIiB9LAogICAgIHsgInZlcnNpb24iLCAndicsIDAsIEdfT1BUSU9O
X0FSR19OT05FLCAmcHJpbnRWZXJzaW9uLCAiUHJpbnQgdGhlIFdlYktpdEdUSyB2ZXJzaW9uIiwg
TlVMTCB9LAogICAgIHsgR19PUFRJT05fUkVNQUlOSU5HLCAwLCAwLCBHX09QVElPTl9BUkdfRklM
RU5BTUVfQVJSQVksICZ1cmlBcmd1bWVudHMsIDAsICJbVVJM4oCmXSIgfSwKICAgICB7IDAsIDAs
IDAsIDAsIDAsIDAsIDAgfQpAQCAtNjc0LDYgKzY3Niw3IEBAIHN0YXRpYyB2b2lkIGFjdGl2YXRl
KEdBcHBsaWNhdGlvbiAqYXBwbGljYXRpb24sIFdlYktpdFNldHRpbmdzICp3ZWJraXRTZXR0aW5n
cykKICNpZiAhR1RLX0NIRUNLX1ZFUlNJT04oMywgOTgsIDApCiAgICAgICAgICJ1c2Utc3lzdGVt
LWFwcGVhcmFuY2UtZm9yLXNjcm9sbGJhcnMiLCBGQUxTRSwKICNlbmRpZgorICAgICAgICAidGlt
ZS16b25lLW92ZXJyaWRlIiwgdGltZVpvbmUsCiAgICAgICAgIE5VTEwpOwogICAgIGdfb2JqZWN0
X3VucmVmKG1hbmFnZXIpOwogCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci93cGUvbWFp
bi5jcHAgYi9Ub29scy9NaW5pQnJvd3Nlci93cGUvbWFpbi5jcHAKaW5kZXggNDU4NGQ5NTczYmE3
ZDExZDIyNDlmMTc1NTJlZTVjOTQ3YWY1MzlkMi4uY2QxZDM2NDdjOGJmYWE2Y2M5NjQyY2U2MzA2
MGE1YWE2YzU5NDc5MSAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvd3BlL21haW4uY3Bw
CisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3dwZS9tYWluLmNwcApAQCAtNDYsNiArNDYsNyBAQCBz
dGF0aWMgY29uc3QgY2hhciogY29va2llc0ZpbGU7CiBzdGF0aWMgY29uc3QgY2hhciogY29va2ll
c1BvbGljeTsKIHN0YXRpYyBjb25zdCBjaGFyKiBwcm94eTsKIGNvbnN0IGNoYXIqIGJnQ29sb3I7
CitzdGF0aWMgY2hhciogdGltZVpvbmU7CiBzdGF0aWMgZ2Jvb2xlYW4gZW5hYmxlSVRQOwogc3Rh
dGljIGdib29sZWFuIHByaW50VmVyc2lvbjsKIHN0YXRpYyBHSGFzaFRhYmxlKiBvcGVuVmlld3M7
CkBAIC02Myw2ICs2NCw3IEBAIHN0YXRpYyBjb25zdCBHT3B0aW9uRW50cnkgY29tbWFuZExpbmVP
cHRpb25zW10gPQogICAgIHsgImNvbnRlbnQtZmlsdGVyIiwgMCwgMCwgR19PUFRJT05fQVJHX0ZJ
TEVOQU1FLCAmY29udGVudEZpbHRlciwgIkpTT04gd2l0aCBjb250ZW50IGZpbHRlcmluZyBydWxl
cyIsICJGSUxFIiB9LAogICAgIHsgImJnLWNvbG9yIiwgMCwgMCwgR19PUFRJT05fQVJHX1NUUklO
RywgJmJnQ29sb3IsICJXaW5kb3cgYmFja2dyb3VuZCBjb2xvci4gRGVmYXVsdDogd2hpdGUiLCAi
Q09MT1IiIH0sCiAgICAgeyAiZW5hYmxlLWl0cCIsIDAsIDAsIEdfT1BUSU9OX0FSR19OT05FLCAm
ZW5hYmxlSVRQLCAiRW5hYmxlIEludGVsbGlnZW50IFRyYWNraW5nIFByZXZlbnRpb24gKElUUCki
LCBudWxscHRyIH0sCisgICAgeyAidGltZS16b25lIiwgJ3QnLCAwLCBHX09QVElPTl9BUkdfU1RS
SU5HLCAmdGltZVpvbmUsICJTZXQgdGltZSB6b25lIiwgIlRJTUVaT05FIiB9LAogICAgIHsgInZl
cnNpb24iLCAndicsIDAsIEdfT1BUSU9OX0FSR19OT05FLCAmcHJpbnRWZXJzaW9uLCAiUHJpbnQg
dGhlIFdQRSB2ZXJzaW9uIiwgbnVsbHB0ciB9LAogICAgIHsgR19PUFRJT05fUkVNQUlOSU5HLCAw
LCAwLCBHX09QVElPTl9BUkdfRklMRU5BTUVfQVJSQVksICZ1cmlBcmd1bWVudHMsIG51bGxwdHIs
ICJbVVJMXSIgfSwKICAgICB7IG51bGxwdHIsIDAsIDAsIEdfT1BUSU9OX0FSR19OT05FLCBudWxs
cHRyLCBudWxscHRyLCBudWxscHRyIH0KQEAgLTIyOSw3ICsyMzEsNyBAQCBpbnQgbWFpbihpbnQg
YXJnYywgY2hhciAqYXJndltdKQogICAgIGlmIChpZ25vcmVUTFNFcnJvcnMpCiAgICAgICAgIHdl
YmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9zZXRfdGxzX2Vycm9yc19wb2xpY3kobWFuYWdlciwg
V0VCS0lUX1RMU19FUlJPUlNfUE9MSUNZX0lHTk9SRSk7CiAKLSAgICBhdXRvKiB3ZWJDb250ZXh0
ID0gd2Via2l0X3dlYl9jb250ZXh0X25ld193aXRoX3dlYnNpdGVfZGF0YV9tYW5hZ2VyKG1hbmFn
ZXIpOworICAgIGF1dG8qIHdlYkNvbnRleHQgPSBXRUJLSVRfV0VCX0NPTlRFWFQoZ19vYmplY3Rf
bmV3KFdFQktJVF9UWVBFX1dFQl9DT05URVhULCAid2Vic2l0ZS1kYXRhLW1hbmFnZXIiLCBtYW5h
Z2VyLCAidGltZS16b25lLW92ZXJyaWRlIiwgdGltZVpvbmUsIG51bGxwdHIpKTsKICAgICBnX29i
amVjdF91bnJlZihtYW5hZ2VyKTsKIAogICAgIGlmIChjb29raWVzUG9saWN5KSB7CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1NvdXJjZXNDb2NvYS50eHQgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMzZhZDM0NzVhOTAzNGVjZmVlN2Q2ZjVlYjJj
OWQ3NGM4MDZjMmUyZC4uMDE2YzJjNDc2ZDE1ODM1YWU0OTQ0YTJiZjIwNzBjZjAwYzM3MGM4NyAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvU291cmNlc0NvY29hLnR4dApAQCAtMjQwLDYgKzI0MCw3IEBAIFRl
c3RzL1dlYktpdENvY29hL1Rlc3RVUkxTY2hlbWVIYW5kbGVyLm1tCiBUZXN0cy9XZWJLaXRDb2Nv
YS9UZXh0TWFuaXB1bGF0aW9uLm1tCiBUZXN0cy9XZWJLaXRDb2NvYS9UZXh0U2l6ZS5tbQogVGVz
dHMvV2ViS2l0Q29jb2EvVGV4dFdpZHRoLm1tCitUZXN0cy9XZWJLaXRDb2NvYS9UaW1lWm9uZU92
ZXJyaWRlLm1tCiBUZXN0cy9XZWJLaXRDb2NvYS9Ub3BDb250ZW50SW5zZXQubW0KIFRlc3RzL1dl
YktpdENvY29hL1VJRGVsZWdhdGUubW0KIFRlc3RzL1dlYktpdENvY29hL1VwbG9hZERpcmVjdG9y
eS5tbQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2MjEyYzkzMDE2M2QxZjlhZjA1Mzc2YzZk
ZGU5NjU4MzE1YzMxNDQzLi41N2ZhMGQ5ODBlZDY3N2JlMDMyZjIyZTdlZDdhOWE5MTgyZjBjOTli
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzAyNCw2ICszMDI0LDcgQEAKIAkJRUJBNzVD
NDgyNzVFRDdCRTAwRDZEMzFDIC8qIFB1c2hNZXNzYWdlQ3J5cHRvLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFB1c2hNZXNzYWdlQ3J5cHRvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRUM3OUYxNjhCRTQ1NEU1NzlFNDE3QjA1IC8qIE1hcmthYmxlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hcmthYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRUNBNjgwQ0QxRTY4Q0MwOTAwNzMxRDIwIC8qIFN0cmluZ1V0aWxpdGllcy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN0cmluZ1V0aWxpdGll
cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjNDRUY2QjgyODA4RjJEMzAwMUUy
M0E1IC8qIFRpbWVab25lT3ZlcnJpZGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBUaW1lWm9u
ZU92ZXJyaWRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGM0ZDM0VFMjEzNjc4
QjczMDAxMjZBNjUgLyogbGliZ3Rlc3QuYSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IGFyY2hpdmUuYXI7IHBhdGggPSBsaWJndGVzdC5hOyBzb3VyY2VU
cmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlGNDAxMEI3RjI0REEyNEFDMDBBODc2RTIg
LyogTmF2aWdhdGlvblN3aXBlVGVzdHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBOYXZpZ2F0aW9uU3dpcGVUZXN0cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRjQwMTBCODEyNERBMjY3RjAwQTg3NkUyIC8qIFBvc2VBc0NsYXNzLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gUG9zZUFzQ2xhc3MubW07IHBhdGgg
PSAuLi9UZXN0UnVubmVyU2hhcmVkL2NvY29hL1Bvc2VBc0NsYXNzLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMzY5Miw2ICszNjkzLDcgQEAKIAkJCQk5QjAyRTBENTIzNUZBNDdE
MDA0MDQ0QjIgLyogVGV4dE1hbmlwdWxhdGlvbi5tbSAqLywKIAkJCQk1QzE2RjhGQjIzMEM5NDJC
MDA3NEM0QTggLyogVGV4dFNpemUubW0gKi8sCiAJCQkJQzIyRkEzMkEyMjhGODcwODAwOUQ3OTg4
IC8qIFRleHRXaWR0aC5tbSAqLywKKwkJCQlGM0NFRjZCODI4MDhGMkQzMDAxRTIzQTUgLyogVGlt
ZVpvbmVPdmVycmlkZS5tbSAqLywKIAkJCQk1QzczQTgxQTIzMjMwNTk4MDBERUE4NUEgLyogVExT
RGVwcmVjYXRpb24ubW0gKi8sCiAJCQkJQ0RFMTk1QjMxQ0ZFMEFERTAwNTNEMjU2IC8qIFRvcENv
bnRlbnRJbnNldC5tbSAqLywKIAkJCQk1Q0I0MEI0RDFGNEI5OEJFMDA3REM3QjkgLyogVUlEZWxl
Z2F0ZS5tbSAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvVGltZVpvbmVPdmVycmlkZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvVGltZVpvbmVPdmVycmlkZS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNmY4MDE2MWY3NDUxZTEw
NzNiZWQ1NjVlMWJiZTg0ODQ5Yjc2M2UyCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UaW1lWm9uZU92ZXJyaWRlLm1tCkBAIC0wLDAgKzEs
MTA0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIElnYWxpYSBTLkwuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbXBvcnQgImNvbmZpZy5oIgorCisjaWYgUExBVEZPUk0oQ09DT0EpCisKKyNpbXBvcnQgIlBs
YXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0LmgiCisjaW1wb3J0ICJUZXN0V0tXZWJW
aWV3LmgiCisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaD4K
KyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dL
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg+CisjaW1wb3J0IDx3dGYvRnVuY3Rpb24uaD4KKyNp
bXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitjbGFzcyBUaW1lWm9uZU92ZXJyaWRlVGVz
dCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK3B1YmxpYzoKKyAgICB2b2lkIFNldFVwKCkgb3Zl
cnJpZGUKKyAgICB7CisgICAgICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dl
YlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgICAgIGF1dG8gcHJvY2Vzc1Bv
b2xDb25maWcgPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBp
bml0XSk7CisgICAgICAgIFtwcm9jZXNzUG9vbENvbmZpZyBzZXRUaW1lWm9uZU92ZXJyaWRlOkAi
RXVyb3BlL0JlcmxpbiJdOworCisgICAgICAgIF93ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAzMDAsIDMwMCkgY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjpw
cm9jZXNzUG9vbENvbmZpZy5nZXQoKV0pOworICAgIH0KKworICAgIHZvaWQgcnVuU2NyaXB0QW5k
RXhlY3V0ZUNhbGxiYWNrKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBGdW5jdGlvbjx2b2lkKGlkKT4m
JiBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIGJvb2wgY29tcGxldGUgPSBmYWxzZTsKKyAgICAg
ICAgW193ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpzY3JpcHQgY29tcGxldGlvbkhhbmRsZXI6
WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgICAgICBFWFBFQ1RfTlVM
TChlcnJvcik7CisgICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOworICAgICAgICAgICAgY29t
cGxldGUgPSB0cnVlOworICAgICAgICB9XTsKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZjb21wbGV0ZSk7CisgICAgfQorCisgICAgdm9pZCBjYWxsQXN5bmNGdW5jdGlvbkJvZHko
Y29uc3QgU3RyaW5nJiBmdW5jdGlvbkJvZHksIEZ1bmN0aW9uPHZvaWQoaWQpPiYmIGNhbGxiYWNr
KQorICAgIHsKKyAgICAgICAgYm9vbCBjb21wbGV0ZSA9IGZhbHNlOworICAgICAgICBbX3dlYlZp
ZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDpmdW5jdGlvbkJvZHkgYXJndW1lbnRzOm5pbCBpbkZyYW1l
Om5pbCBpbkNvbnRlbnRXb3JsZDpXS0NvbnRlbnRXb3JsZC5wYWdlV29ybGQgY29tcGxldGlvbkhh
bmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgICAgICBFWFBF
Q1RfTlVMTChlcnJvcik7CisgICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOworICAgICAgICAg
ICAgY29tcGxldGUgPSB0cnVlOworICAgICAgICB9XTsKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZjb21wbGV0ZSk7CisgICAgfQorCisKK3ByaXZhdGU6CisgICAgUmV0YWluUHRy
PFRlc3RXS1dlYlZpZXc+IF93ZWJWaWV3OworfTsKKworVEVTVF9GKFRpbWVab25lT3ZlcnJpZGVU
ZXN0LCBUaW1lWm9uZU92ZXJyaWRlKQoreworICAgIHJ1blNjcmlwdEFuZEV4ZWN1dGVDYWxsYmFj
aygibGV0IG5vdyA9IG5ldyBEYXRlKCk7IG5vdy5nZXRUaW1lem9uZU9mZnNldCgpIl9zLCBbXShp
ZCByZXN1bHQpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKFtyZXN1bHQgc3RyaW5nVmFsdWVd
LCAiLTEyMCIpOworICAgIH0pOworfQorCitURVNUX0YoVGltZVpvbmVPdmVycmlkZVRlc3QsIFRp
bWVab25lT3ZlcnJpZGVJbldvcmtlcnMpCit7CisgICAgU3RyaW5nIGZ1bmN0aW9uQm9keSA9Cisg
ICAgICAgICJyZXR1cm4gbmV3IFByb21pc2UoZnVsZmlsbCA9PiB7IgorICAgICAgICAiICBjb25z
dCByZXN1bHRzID0gW107IgorICAgICAgICAiICBmb3IgKGxldCBpID0gMDsgaSA8IDM7IGkrKykg
eyIKKyAgICAgICAgIiAgICBjb25zdCB3b3JrZXIgPSBuZXcgV29ya2VyKCdkYXRhOnRleHQvamF2
YXNjcmlwdCxzZWxmLnBvc3RNZXNzYWdlKEludGwuRGF0ZVRpbWVGb3JtYXQoKS5yZXNvbHZlZE9w
dGlvbnMoKS50aW1lWm9uZSknKTsiCisgICAgICAgICIgICAgd29ya2VyLm9ubWVzc2FnZSA9IG1l
c3NhZ2UgPT4geyIKKyAgICAgICAgIiAgICAgIHJlc3VsdHMucHVzaChtZXNzYWdlLmRhdGEpOyIK
KyAgICAgICAgIiAgICAgIGlmIChyZXN1bHRzLmxlbmd0aCA9PT0gMykiCisgICAgICAgICIgICAg
ICAgIGZ1bGZpbGwocmVzdWx0cy5qb2luKCcsICcpKTsiCisgICAgICAgICIgICAgfTsiCisgICAg
ICAgICIgIH0iCisgICAgICAgICJ9KTsiX3M7CisgICAgY2FsbEFzeW5jRnVuY3Rpb25Cb2R5KGZ1
bmN0aW9uQm9keSwgW10oaWQgcmVzdWx0KSB7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQg
aXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSk7CisgICAgICAgIEVYUEVDVF9XS19TVFJF
UShyZXN1bHQsIEAiRXVyb3BlL0JlcmxpbiwgRXVyb3BlL0JlcmxpbiwgRXVyb3BlL0JlcmxpbiIp
OworICAgIH0pOworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYkNvbnRleHQuY3BwCmluZGV4IDMx
MjA3OGY3Y2E0YWE5MDc5ZGI0NjgzMDk0ODA1ZWFiZWY5MjM4ZmUuLmIxYjg3ZDJhOTQ4OTBjNzJi
ODFiMWYzMzA1ZDAyOGM4YmM4ZjM5ODcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJDb250ZXh0LmNwcApAQCAt
OTkxLDYgKzk5MSw1OCBAQCBzdGF0aWMgdm9pZCB0ZXN0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyhN
ZW1vcnlQcmVzc3VyZVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgZ19hc3NlcnRfY21w
dWludCh0ZXN0LT5tX3Rlcm1pbmF0aW9uUmVhc29uLCA9PSwgV0VCS0lUX1dFQl9QUk9DRVNTX0VY
Q0VFREVEX01FTU9SWV9MSU1JVCk7CiB9CiAKK3N0YXRpYyB2b2lkIHRlc3RXZWJDb250ZXh0VGlt
ZVpvbmVPdmVycmlkZShXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICBH
VW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CisgICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCog
amF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hl
ZCgibGV0IG5vdyA9IG5ldyBEYXRlKCk7IG5vdy5nZXRUaW1lem9uZU9mZnNldCgpIiwgJmVycm9y
Lm91dFB0cigpKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGphdmFzY3JpcHRSZXN1bHQpOworICAg
IGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKKyAgICAvLyBCeSBkZWZhdWx0IHRoZSB0
ZXN0IGhhcm5lc3MgdXNlcyB0aGUgUGFjaWZpYy9Mb3NfQW5nZWxlcyB0aW1lem9uZSB3aGljaCBp
cyA3IGhvdXJzICg0MjAgbWludXRlcykgY29tcGFyZWQgdG8gR01ULgorICAgIGdfYXNzZXJ0X2Nt
cGludChXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvTnVtYmVyKGphdmFzY3JpcHRSZXN1
bHQpLCA9PSwgNDIwKTsKKworICAgIC8vIENyZWF0ZSBhIG5ldyBjb250ZXh0IGNvbmZpZ3VyZWQg
d2l0aCB0aW1lIHpvbmUgb3ZlcmlkZSBzZXQgdG8gQmVybGluIHdoaWNoIGlzIDEyMCBtaW51dGVz
IGFoZWFkIG9mIHRoZSBHTVQgb2Zmc2V0LgorICAgIGF1dG8gd2ViQ29udGV4dCA9IGFkb3B0R1Jl
ZihXRUJLSVRfV0VCX0NPTlRFWFQoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9DT05URVhU
LAorICAgICAgICAidGltZS16b25lLW92ZXJyaWRlIiwgIkV1cm9wZS9CZXJsaW4iLCBudWxscHRy
KSkpOworICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3RpbWVfem9u
ZV9vdmVycmlkZSh3ZWJDb250ZXh0LmdldCgpKSwgPT0sICJFdXJvcGUvQmVybGluIik7CisgICAg
YXV0byB3ZWJWaWV3ID0gVGVzdDo6YWRvcHRWaWV3KFRlc3Q6OmNyZWF0ZVdlYlZpZXcod2ViQ29u
dGV4dC5nZXQoKSkpOworICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0
QW5kV2FpdFVudGlsRmluaXNoZWQoImxldCBub3cgPSBuZXcgRGF0ZSgpOyBub3cuZ2V0VGltZXpv
bmVPZmZzZXQoKSIsICZlcnJvci5vdXRQdHIoKSwgd2ViVmlldy5nZXQoKSk7CisgICAgZ19hc3Nl
cnRfbm9ubnVsbChqYXZhc2NyaXB0UmVzdWx0KTsKKyAgICBnX2Fzc2VydF9ub19lcnJvcihlcnJv
ci5nZXQoKSk7CisgICAgZ19hc3NlcnRfY21waW50KFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVz
dWx0VG9OdW1iZXIoamF2YXNjcmlwdFJlc3VsdCksID09LCAtMTIwKTsKK30KKworc3RhdGljIHZv
aWQgdGVzdFdlYkNvbnRleHRUaW1lWm9uZU92ZXJyaWRlSW5Xb3JrZXIoV2ViVmlld1Rlc3QqIHRl
c3QsIGdjb25zdHBvaW50ZXIpCit7CisgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwor
ICAgIFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5K
YXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoIkludGwuRGF0ZVRpbWVGb3JtYXQoKS5yZXNv
bHZlZE9wdGlvbnMoKS50aW1lWm9uZSIsICZlcnJvci5vdXRQdHIoKSk7CisgICAgZ19hc3NlcnRf
bm9ubnVsbChqYXZhc2NyaXB0UmVzdWx0KTsKKyAgICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5n
ZXQoKSk7CisgICAgLy8gQnkgZGVmYXVsdCB0aGUgdGVzdCBoYXJuZXNzIHVzZXMgdGhlIFBhY2lm
aWMvTG9zX0FuZ2VsZXMuCisgICAgZ19hc3NlcnRfY21wc3RyKFdlYlZpZXdUZXN0OjpqYXZhc2Ny
aXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1bHQpLCA9PSwgIkFtZXJpY2EvTG9zX0Fu
Z2VsZXMiKTsKKyAgICAvLyBDcmVhdGUgYSBuZXcgY29udGV4dCBjb25maWd1cmVkIHdpdGggdGlt
ZSB6b25lIG92ZXJpZGUgc2V0IHRvIEJlcmxpbiB3aGljaCBpcyAxMjAgbWludXRlcyBhaGVhZCBv
ZiB0aGUgR01UIG9mZnNldC4KKyAgICBhdXRvIHdlYkNvbnRleHQgPSBhZG9wdEdSZWYoV0VCS0lU
X1dFQl9DT05URVhUKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfQ09OVEVYVCwKKyAgICAg
ICAgInRpbWUtem9uZS1vdmVycmlkZSIsICJFdXJvcGUvQmVybGluIiwgbnVsbHB0cikpKTsKKyAg
ICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3dlYl9jb250ZXh0X2dldF90aW1lX3pvbmVfb3ZlcnJp
ZGUod2ViQ29udGV4dC5nZXQoKSksID09LCAiRXVyb3BlL0JlcmxpbiIpOworICAgIGF1dG8gd2Vi
VmlldyA9IFRlc3Q6OmFkb3B0VmlldyhUZXN0OjpjcmVhdGVXZWJWaWV3KHdlYkNvbnRleHQuZ2V0
KCkpKTsKKworICAgIHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgKKyAg
ICAgICAgIndpbmRvdy5yZXN1bHRzID0gW107IgorICAgICAgICAiZm9yIChsZXQgaSA9IDA7IGkg
PCAzOyBpKyspIHsiCisgICAgICAgICIgIGNvbnN0IHdvcmtlciA9IG5ldyBXb3JrZXIoJ2RhdGE6
dGV4dC9qYXZhc2NyaXB0LHNlbGYucG9zdE1lc3NhZ2UoSW50bC5EYXRlVGltZUZvcm1hdCgpLnJl
c29sdmVkT3B0aW9ucygpLnRpbWVab25lKScpOyIKKyAgICAgICAgIiAgd29ya2VyLm9ubWVzc2Fn
ZSA9IG1lc3NhZ2UgPT4gcmVzdWx0cy5wdXNoKG1lc3NhZ2UuZGF0YSk7IgorICAgICAgICAifSIs
ICZlcnJvci5vdXRQdHIoKSwgd2ViVmlldy5nZXQoKSk7CisgICAgZG8geworICAgICAgICBqYXZh
c2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJy
ZXN1bHRzLmxlbmd0aCIsICZlcnJvci5vdXRQdHIoKSwgd2ViVmlldy5nZXQoKSk7CisgICAgICAg
IGdfYXNzZXJ0X25vbm51bGwoamF2YXNjcmlwdFJlc3VsdCk7CisgICAgICAgIGdfYXNzZXJ0X25v
X2Vycm9yKGVycm9yLmdldCgpKTsKKyAgICB9IHdoaWxlIChXZWJWaWV3VGVzdDo6amF2YXNjcmlw
dFJlc3VsdFRvTnVtYmVyKGphdmFzY3JpcHRSZXN1bHQpIDwgMyk7CisKKyAgICBqYXZhc2NyaXB0
UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJyZXN1bHRz
LmpvaW4oJywgJykiLCAmZXJyb3Iub3V0UHRyKCksIHdlYlZpZXcuZ2V0KCkpOworICAgIGdfYXNz
ZXJ0X25vbm51bGwoamF2YXNjcmlwdFJlc3VsdCk7CisgICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJy
b3IuZ2V0KCkpOworICAgIGdfYXNzZXJ0X2NtcHN0cihXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJl
c3VsdFRvQ1N0cmluZyhqYXZhc2NyaXB0UmVzdWx0KSwgPT0sICJFdXJvcGUvQmVybGluLCBFdXJv
cGUvQmVybGluLCBFdXJvcGUvQmVybGluIik7Cit9CisKIHZvaWQgYmVmb3JlQWxsKCkKIHsKICAg
ICBrU2VydmVyID0gbmV3IFdlYktpdFRlc3RTZXJ2ZXIoKTsKQEAgLTEwMDgsNiArMTA2MCw4IEBA
IHZvaWQgYmVmb3JlQWxsKCkKICAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRTZWN1cml0eU1h
bmFnZXIiLCAiZmlsZS14aHIiLCB0ZXN0V2ViQ29udGV4dFNlY3VyaXR5RmlsZVhIUik7CiAgICAg
UHJveHlUZXN0OjphZGQoIldlYktpdFdlYkNvbnRleHQiLCAicHJveHkiLCB0ZXN0V2ViQ29udGV4
dFByb3h5U2V0dGluZ3MpOwogICAgIE1lbW9yeVByZXNzdXJlVGVzdDo6YWRkKCJXZWJLaXRXZWJD
b250ZXh0IiwgIm1lbW9yeS1wcmVzc3VyZSIsIHRlc3RNZW1vcnlQcmVzc3VyZVNldHRpbmdzKTsK
KyAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJDb250ZXh0IiwgInRpbWV6b25lIiwgdGVz
dFdlYkNvbnRleHRUaW1lWm9uZU92ZXJyaWRlKTsKKyAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJL
aXRXZWJDb250ZXh0IiwgInRpbWV6b25lLXdvcmtlciIsIHRlc3RXZWJDb250ZXh0VGltZVpvbmVP
dmVycmlkZUluV29ya2VyKTsKIH0KIAogdm9pZCBhZnRlckFsbCgpCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9UZXN0TWFpbi5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9UZXN0TWFpbi5jcHAKaW5kZXggZTg1YjNjMWVmZGU3
MjEzMzYyZGU2OTdkNzMyYzUzNmQ1ZDdmZmUxOS4uMzk3NDE3NDZhNzU2M2M5Y2UyODRkMGU5ZjJh
MjliMDVlM2VkYzUwNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktp
dEdMaWIvVGVzdE1haW4uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRH
TGliL1Rlc3RNYWluLmNwcApAQCAtMTMyLDYgKzEzMiw3IEBAIGludCBtYWluKGludCBhcmdjLCBj
aGFyKiogYXJndikKICAgICBnX3NldGVudigiR1NFVFRJTkdTX0JBQ0tFTkQiLCAibWVtb3J5Iiwg
VFJVRSk7CiAgICAgLy8gR2V0IHJpZCBvZiBydW50aW1lIHdhcm5pbmdzIGFib3V0IGRlcHJlY2F0
ZWQgcHJvcGVydGllcyBhbmQgc2lnbmFscywgc2luY2UgdGhleSBicmVhayB0aGUgdGVzdHMuCiAg
ICAgZ19zZXRlbnYoIkdfRU5BQkxFX0RJQUdOT1NUSUMiLCAiMCIsIFRSVUUpOworICAgIGdfc2V0
ZW52KCJUWiIsICJBbWVyaWNhL0xvc19BbmdlbGVzIiwgVFJVRSk7CiAgICAgZ190ZXN0X2J1Z19i
YXNlKCJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy8iKTsKIAogICAgIHJlZ2lzdGVyR1Jlc291cmNl
KCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJW
aWV3VGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3
VGVzdC5jcHAKaW5kZXggOTBmNWQzNTFjMTdkZGU4YTBhMWZmOGMyYTI0ZjlkYmEyYWI0ZjM3OC4u
YTIxYTAwNDJiNGM3NTU5YmM3MjVjMWZhYzA2NThlNDAzYzE5MWNhZiAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuY3BwCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmNwcApAQCAtMzA2
LDkgKzMwNiw5IEBAIGNvbnN0IGNoYXIqIFdlYlZpZXdUZXN0OjptYWluUmVzb3VyY2VEYXRhKHNp
emVfdCYgbWFpblJlc291cmNlRGF0YVNpemUpCiAgICAgcmV0dXJuIG1fcmVzb3VyY2VEYXRhLmdl
dCgpOwogfQogCi1zdGF0aWMgdm9pZCBydW5KYXZhU2NyaXB0UmVhZHlDYWxsYmFjayhHT2JqZWN0
KiwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIFdlYlZpZXdUZXN0KiB0ZXN0KQorc3RhdGljIHZvaWQg
cnVuSmF2YVNjcmlwdFJlYWR5Q2FsbGJhY2soR09iamVjdCogb2JqZWN0LCBHQXN5bmNSZXN1bHQq
IHJlc3VsdCwgV2ViVmlld1Rlc3QqIHRlc3QpCiB7Ci0gICAgdGVzdC0+bV9qYXZhc2NyaXB0UmVz
dWx0ID0gd2Via2l0X3dlYl92aWV3X3J1bl9qYXZhc2NyaXB0X2ZpbmlzaCh0ZXN0LT5tX3dlYlZp
ZXcsIHJlc3VsdCwgdGVzdC0+bV9qYXZhc2NyaXB0RXJyb3IpOworICAgIHRlc3QtPm1famF2YXNj
cmlwdFJlc3VsdCA9IHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlwdF9maW5pc2goV0VCS0lU
X1dFQl9WSUVXKG9iamVjdCksIHJlc3VsdCwgdGVzdC0+bV9qYXZhc2NyaXB0RXJyb3IpOwogICAg
IGdfbWFpbl9sb29wX3F1aXQodGVzdC0+bV9tYWluTG9vcCk7CiB9CiAKQEAgLTMyNCwxMyArMzI0
LDE1IEBAIHN0YXRpYyB2b2lkIHJ1bkphdmFTY3JpcHRJbldvcmxkUmVhZHlDYWxsYmFjayhHT2Jq
ZWN0KiwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIFdlCiAgICAgZ19tYWluX2xvb3BfcXVpdCh0ZXN0
LT5tX21haW5Mb29wKTsKIH0KIAotV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogV2ViVmlld1Rlc3Q6
OnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZChjb25zdCBjaGFyKiBqYXZhc2NyaXB0
LCBHRXJyb3IqKiBlcnJvcikKK1dlYktpdEphdmFzY3JpcHRSZXN1bHQqIFdlYlZpZXdUZXN0Ojpy
dW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoY29uc3QgY2hhciogamF2YXNjcmlwdCwg
R0Vycm9yKiogZXJyb3IsIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7CiAgICAgaWYgKG1famF2
YXNjcmlwdFJlc3VsdCkKICAgICAgICAgd2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X3VucmVmKG1f
amF2YXNjcmlwdFJlc3VsdCk7CiAgICAgbV9qYXZhc2NyaXB0UmVzdWx0ID0gMDsKICAgICBtX2ph
dmFzY3JpcHRFcnJvciA9IGVycm9yOwotICAgIHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlw
dChtX3dlYlZpZXcsIGphdmFzY3JpcHQsIDAsIHJlaW50ZXJwcmV0X2Nhc3Q8R0FzeW5jUmVhZHlD
YWxsYmFjaz4ocnVuSmF2YVNjcmlwdFJlYWR5Q2FsbGJhY2spLCB0aGlzKTsKKyAgICBpZiAoIXdl
YlZpZXcpCisgICAgICAgIHdlYlZpZXcgPSBtX3dlYlZpZXc7CisgICAgd2Via2l0X3dlYl92aWV3
X3J1bl9qYXZhc2NyaXB0KHdlYlZpZXcsIGphdmFzY3JpcHQsIDAsIHJlaW50ZXJwcmV0X2Nhc3Q8
R0FzeW5jUmVhZHlDYWxsYmFjaz4ocnVuSmF2YVNjcmlwdFJlYWR5Q2FsbGJhY2spLCB0aGlzKTsK
ICAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcCk7CiAKICAgICByZXR1cm4gbV9qYXZhc2Ny
aXB0UmVzdWx0OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdM
aWIvV2ViVmlld1Rlc3QuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dl
YlZpZXdUZXN0LmgKaW5kZXggYTI4YTVlZGM4ZDQwZjU4YjUwNWFiNjRiMWVmNDhhYTBiNjU5NzMz
My4uMDJkNTg0OTVkNmQ3N2JmYjNhNzNiYTI4YjZhNWQ5MzBjNDZmZjJkYSAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuaAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5oCkBAIC03Myw3
ICs3Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGVtaXRQb3B1cE1lbnVTaWduYWwoKTsKICNlbmRp
ZgogCi0gICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogcnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRp
bEZpbmlzaGVkKGNvbnN0IGNoYXIqIGphdmFzY3JpcHQsIEdFcnJvcioqKTsKKyAgICBXZWJLaXRK
YXZhc2NyaXB0UmVzdWx0KiBydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoY29uc3Qg
Y2hhciogamF2YXNjcmlwdCwgR0Vycm9yKiosIFdlYktpdFdlYlZpZXcqID0gbnVsbHB0cik7CiAg
ICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogcnVuSmF2YVNjcmlwdEZyb21HUmVzb3VyY2VBbmRX
YWl0VW50aWxGaW5pc2hlZChjb25zdCBjaGFyKiByZXNvdXJjZSwgR0Vycm9yKiopOwogICAgIFdl
YktpdEphdmFzY3JpcHRSZXN1bHQqIHJ1bkphdmFTY3JpcHRJbldvcmxkQW5kV2FpdFVudGlsRmlu
aXNoZWQoY29uc3QgY2hhciogamF2YXNjcmlwdCwgY29uc3QgY2hhciogd29ybGQsIEdFcnJvcioq
KTsKICAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBydW5KYXZhU2NyaXB0V2l0aG91dEZvcmNl
ZFVzZXJHZXN0dXJlc0FuZFdhaXRVbnRpbEZpbmlzaGVkKGNvbnN0IGNoYXIqIGphdmFzY3JpcHQs
IEdFcnJvcioqKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL2ZsYXRwYWsvZmxhdHBha3V0aWxzLnB5IGIv
VG9vbHMvZmxhdHBhay9mbGF0cGFrdXRpbHMucHkKaW5kZXggYWIxZGJhOTgyMDZiZTgxMGIxZDRl
NjBjYTc0NmQ5Yjc3YWIyYjBlZC4uNTY2MjZhMzY2NDEyYWIzNmYwZWZjYjdkMzhlN2Q3ZjE2NzUx
YWE2YiAxMDA2NDQKLS0tIGEvVG9vbHMvZmxhdHBhay9mbGF0cGFrdXRpbHMucHkKKysrIGIvVG9v
bHMvZmxhdHBhay9mbGF0cGFrdXRpbHMucHkKQEAgLTg1Nyw3ICs4NTcsNyBAQCBjbGFzcyBXZWJr
aXRGbGF0cGFrOgogICAgICAgICAgICAgXSkKIAogICAgICAgICAgICAgc2FuZGJveF9lbnZpcm9u
bWVudC51cGRhdGUoewotICAgICAgICAgICAgICAgICJUWiI6ICJQU1Q4UERUIiwKKyAgICAgICAg
ICAgICAgICAiVFoiOiAiQW1lcmljYS9Mb3NfQW5nZWxlcyIsCiAgICAgICAgICAgICB9KQogCiAg
ICAgICAgIGVudl92YXJfcHJlZml4ZXNfdG9fa2VlcCA9IFsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458478</attachid>
            <date>2022-04-27 16:06:34 -0700</date>
            <delta_ts>2022-04-27 19:01:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213884-20220427160634.patch</filename>
            <type>text/plain</type>
            <size>58670</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyOTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NjEyNGZmMTU5ZTBiZDI3MGEwMTk4MmRlZGQ0MjNhMDVmMjM0OGY5Li4wNWQ5YmJhM2ExYzNjOGYz
MmMyOWU3ZTEyZGQzZDQxY2VlNDcyN2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAyMi0wNC0yNyAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxp
YS5jb20+IGFuZCBQYXZlbCBGZWxkbWFuIDxwYXZlbC5mZWxkbWFuQGdtYWlsLmNvbT4gYW5kIFl1
cnkgU2VtaWtoYXRza3kgPHl1cnlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBbV0syXSBBZGQg
QVBJIHRvIGFsbG93IGVtYmVkZGVyIHRvIHNldCBhIHRpbWV6b25lIG92ZXJyaWRlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM4ODQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHJ1bnRpbWUvRGF0ZUNv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToK
KyAgICAgICAgKiBydW50aW1lL0RhdGVDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKEpTQzo6Zm9y
bWF0RGF0ZVRpbWUpOiBGb3JtYXQgdGhlIG92ZXJyaWRkZW4gdGltZXpvbmUgaWYgaXQncyBlbmFi
bGVkLgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZUNvbnZlcnNpb24uaDoKKyAgICAgICAgKiBydW50
aW1lL0RhdGVQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpmb3JtYXRlRGF0ZUluc3RhbmNl
KToKKyAgICAgICAgKiBydW50aW1lL0pTRGF0ZU1hdGguY3BwOgorICAgICAgICAoSlNDOjp0b0lD
VVRpbWV6Wm9uZSk6CisgICAgICAgIChKU0M6OnRvT3BhcXVlSUNVVGltZVpvbmUpOgorICAgICAg
ICAoSlNDOjpPcGFxdWVJQ1VUaW1lWm9uZURlbGV0ZXI6Om9wZXJhdG9yKCkpOgorICAgICAgICAo
SlNDOjpEYXRlQ2FjaGU6OmNhbGN1bGF0ZUxvY2FsVGltZU9mZnNldCk6CisgICAgICAgIChKU0M6
OkRhdGVDYWNoZTo6ZGVmYXVsdFRpbWVab25lKToKKyAgICAgICAgKEpTQzo6RGF0ZUNhY2hlOjp0
aW1lWm9uZURpc3BsYXlOYW1lT3ZlcnJpZGUpOgorICAgICAgICAoSlNDOjpEYXRlQ2FjaGU6OnRp
bWVab25lQ2FjaGVTbG93KTogQXBwbHkgdGltZXpvbmUgb3ZlcnJpZGUgaWYgaXQgaXMgc2V0Lgor
ICAgICAgICAoSlNDOjpEYXRlQ2FjaGU6OnJlc2V0SWZOZWNlc3NhcnkpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNEYXRlTWF0aC5oOgorCisKIDIwMjItMDQtMTQgIENhaXRsaW4gUG90dGVyICA8Y2Fp
dHBAaWdhbGlhLmNvbT4KIAogICAgICAgICBbSlNDXSBTaGFkb3dSZWFsbSBnbG9iYWwgb2JqZWN0
IGhhcyBhIG11dGFibGUgcHJvdG90eXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDQwN2ZjOWNjMGRmMjNmNTMxNTFiZWQ0Yzkx
NjViYWE3NjFkZmJhZmQuLjY4ODYyODJmYWUzZDkzOTFiYWY5MDhiZjFmZTE5YmQ3YjQ1NjVlMmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMjItMDQtMjcgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9y
bWFuZEBpZ2FsaWEuY29tPiBhbmQgUGF2ZWwgRmVsZG1hbiA8cGF2ZWwuZmVsZG1hbkBnbWFpbC5j
b20+IGFuZCBZdXJ5IFNlbWlraGF0c2t5IDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
W1dLMl0gQWRkIEFQSSB0byBhbGxvdyBlbWJlZGRlciB0byBzZXQgYSB0aW1lem9uZSBvdmVycmlk
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzODg0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYv
RGF0ZU1hdGguY3BwOiBOZXcgQVBJcyB0byBjb250cm9sIGFuZCBxdWVyeSB0aGUgdGltZXpvbmUg
b3ZlcnJpZGUuCisgICAgICAgIChXVEY6OmlubmVyVGltZVpvbmVPdmVycmlkZSk6IFN0YXRpYyBz
dG9yYWdlIG9mIHRoZSBvdmVycmlkZSBpbmZvcm1hdGlvbnMuCisgICAgICAgIChXVEY6OldURl9S
RVFVSVJFU19MT0NLKToKKyAgICAgICAgKFdURjo6dmFsaWRhdGVUaW1lWm9uZSk6IE5ldyBmdW5j
dGlvbiBhbGxvd2luZyB0byBjaGVjayBpZiBhIHRpbWV6b25lIGlkZW50aWZpZXIgaXMgdmFsaWQg
YWNjb3JkaW5nIHRvIElDVSdzIGRhdGFiYXNlIGFuZCBjb3ZlcnQgaXQKKyAgICAgICAgdG8gVUNo
YXIgYnVmZmVyIHN1aXRhYmxlIGZvciBwYXNzaW5nIHRvIHVjYWwuCisgICAgICAgIChXVEY6Omlz
VGltZVpvbmVWYWxpZCk6CisgICAgICAgIChXVEY6OnNldFRpbWVab25lT3ZlcnJpZGUpOiBOZXcg
QVBJIHRvIHNldCB0aGUgdGltZXpvbmUgb3ZlcnJpZGUsIHRoaXMgaXMgbWVhbnQgdG8gYmUKKyAg
ICAgICAgdXNlZCBvbiBuZXdseSBjcmVhdGVkIFdlYlByb2Nlc3Nlcy4gSW4gYWRkaXRpb24gdG8g
cHJvdmlkaW5nIGFsdGVybmF0aXZlIG5hbWUgZm9yIHRoZSBjb2RlCisgICAgICAgIHRoYXQgY2Fs
bHMgaW50byBJQ1UgbGlicmFyeSwgb24gUE9TSVggc3lzdGVtcyB3cml0ZXMgbmV3IHRpbWV6b25l
IHRvICJUWiIgZW52aXJvbmVtZW50CisgICAgICAgIHZhcmlhYmxlIHRvIGFkanVzdCByZXN1bHQg
b2Ygc3RyZnRpbWUgKGNhbGxlZCBpbiBmb3JtYXREYXRlVGltZSkuCisgICAgICAgIChXVEY6Omdl
dFRpbWVab25lT3ZlcnJpZGUpOiBRdWVyeSB0aGUgdGltZXpvbmUgb3ZlcnJpZGUuCisgICAgICAg
ICogd3RmL0RhdGVNYXRoLmg6CisKIDIwMjItMDQtMTUgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNl
a0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW1dQRV0gUmVtb3ZlIGV4Y2x1c2l2ZSBidWls
ZCBndWFyZHMgYXJvdW5kIEdQVSBwcm9jZXNzIHByZWZlcmVuY2VzLCBjb2RlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IDY1ODg1ZmVlMWE2ODBkMjYyNGQwOWQzY2MwOTA1NWYzOTg3Y2I4ZWQuLjIyMDgzNTQxMjMxYWMy
NGI1ZDExOTA2NmI0NDJlODYyYzdlZDlkYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIw
MjItMDQtMjcgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPiBhbmQgWXVy
eSBTZW1pa2hhdHNreSA8eXVyeXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtXSzJdIEFkZCBB
UEkgdG8gYWxsb3cgZW1iZWRkZXIgdG8gc2V0IGEgdGltZXpvbmUgb3ZlcnJpZGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzg4NAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkczoK
KworICAgICAgICAtIG5ldyBDb2NvYSBBUEkKKyAgICAgICAgLSBuZXcgR2xpYiBBUEkgKHRhcmdl
dHRpbmcgYm90aCBXUEUgYW5kIEdUSyBwb3J0cykKKyAgICAgICAgLSBuZXcgQyBBUEkgKGZvciB0
aGUgd2luIHBvcnQpCisKKyAgICAgICAgdGhhdCBhbGxvd3MgdGhlIGVtYmVkZGVyIHRvIHNldCBh
IHRpbWV6b25lIG92ZXJyaWRlIGZvciB0aGUgdW5kZXJseWluZyBQYWdlQ29uZmlndXJhdGlvbi4K
KyAgICAgICAgU2luY2UgdGhpcyBBUEkgaXMgbm90IGV4cG9zZWQgaW4gZ2xpYiBwb3J0cywgYSBu
ZXcgY29udHJ1Y3QtdGltZS1vbmx5IHByb3BlcnR5IHdhcyBhZGRlZCB0bworICAgICAgICB0aGUg
V2ViS2l0V2ViQ29udGV4dCBBUEkuIEl0IHdvdWxkIGFsc28gYWxsb3cgZmluZS1ncmFpbmVkIGNv
bnRyb2wgb3ZlciBtdWx0aXBsZSBwYWdlcywgZm9yCisgICAgICAgIGluc3RhbmNlIGl0J3Mgbm90
IHBvc3NpYmxlIGN1cnJlbnRseSB0byBoYXZlIHR3byBwYWdlcyBpbiBkaWZmZXJlbnQgdGltZXpv
bmVzLgorCisgICAgICAgIE5vIG5ldyBsYXlvdXQgdGVzdHMsIHRoaXMgY2hhbmdlIGlzIGNvdmVy
ZWQgYnkgbmV3IEFQSSB0ZXN0cy4KKworICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
Ojpjb3B5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRDb25maWd1cmF0aW9u
UmVmLmNwcDoKKyAgICAgICAgKFdLQ29udGV4dENvbmZpZ3VyYXRpb25Db3B5VGltZVpvbmVPdmVy
cmlkZSk6CisgICAgICAgIChXS0NvbnRleHRDb25maWd1cmF0aW9uU2V0VGltZVpvbmVPdmVycmlk
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uLm1tOgorICAgICAgICAoLVtfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gdGlt
ZVpvbmVPdmVycmlkZV0pOgorICAgICAgICAoLVtfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24g
c2V0VGltZVpvbmVPdmVycmlkZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0V2ViQ29udGV4dC5jcHA6CisgICAgICAgICh3ZWJraXRXZWJDb250ZXh0R2V0UHJvcGVydHkp
OgorICAgICAgICAod2Via2l0V2ViQ29udGV4dFNldFByb3BlcnR5KToKKyAgICAgICAgKHdlYmtp
dFdlYkNvbnRleHRDb25zdHJ1Y3RlZCk6CisgICAgICAgICh3ZWJraXRfd2ViX2NvbnRleHRfY2xh
c3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3RpbWVfem9uZV9vdmVy
cmlkZSk6CisgICAgICAgICh3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3RpbWVfem9uZV9vdmVycmlk
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYkNvbnRleHQuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6aW5pdGlhbGl6ZU5ld1dlYlByb2Nlc3MpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQ
cm9jZXNzKTogQXBwbHkgdGltZXpvbmUgb3ZlcnJpZGUgaWYgYW55IG9uIHByb2Nlc3Mgc3RhcnQu
CisKIDIwMjItMDQtMTUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFNlcnZpY2VXb3JrZXIucG9zdE1lc3NhZ2UoKSBkb2Vzbid0IHdvcmsgZnJvbSBpbnNpZGUg
aWZyYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29u
c3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVj
dG9yLmNwcAppbmRleCA2ZDA5MDJjOWZjYzk0YWQwZDUxZTUxZGUyOGVhMmM5NjUyOTRjN2EzLi5k
ZDVkNDM1NzlhZjA2ZTVmM2ZkYjA4NTBhNGY3NjRhYWEzMjUyYjQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKQEAgLTE1MCw3ICsx
NTAsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY2FsbERhdGUsIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKSkKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgR3JlZ29yaWFuRGF0ZVRpbWUgdHM7CiAgICAgdm0uZGF0ZUNhY2hlLm1zVG9H
cmVnb3JpYW5EYXRlVGltZShXYWxsVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKS5taWxs
aXNlY29uZHMoKSwgV1RGOjpMb2NhbFRpbWUsIHRzKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzTm9udHJpdmlhbFN0cmluZyh2bSwgZm9ybWF0RGF0ZVRpbWUodHMsIERhdGVUaW1lRm9y
bWF0RGF0ZUFuZFRpbWUsIGZhbHNlKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNO
b250cml2aWFsU3RyaW5nKHZtLCBmb3JtYXREYXRlVGltZSh0cywgRGF0ZVRpbWVGb3JtYXREYXRl
QW5kVGltZSwgZmFsc2UsIHZtLmRhdGVDYWNoZSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGRhdGVQYXJzZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0RhdGVDb252ZXJzaW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVD
b252ZXJzaW9uLmNwcAppbmRleCAyZGVjZjhhODNjODBlODBjYTg2NzdmNGM3ODdiZjc5YzZjMjk5
NWZhLi43ZmNhYzRlYjk5OGJlMjBlNjE1MTU1M2FiYzkwMDFhZDc5MDA5NjQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29udmVyc2lvbi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwCkBAIC01OCw3
ICs1OCw3IEBAIHZvaWQgYXBwZW5kTnVtYmVyPDI+KFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGlu
dCB2YWx1ZSkKICAgICBidWlsZGVyLmFwcGVuZChzdGF0aWNfY2FzdDxjaGFyPignMCcgKyB2YWx1
ZSAlIDEwKSk7CiB9CiAKLVN0cmluZyBmb3JtYXREYXRlVGltZShjb25zdCBHcmVnb3JpYW5EYXRl
VGltZSYgdCwgRGF0ZVRpbWVGb3JtYXQgZm9ybWF0LCBib29sIGFzVVRDVmFyaWFudCkKK1N0cmlu
ZyBmb3JtYXREYXRlVGltZShjb25zdCBHcmVnb3JpYW5EYXRlVGltZSYgdCwgRGF0ZVRpbWVGb3Jt
YXQgZm9ybWF0LCBib29sIGFzVVRDVmFyaWFudCwgRGF0ZUNhY2hlJiBkYXRlQ2FjaGUpCiB7CiAg
ICAgYm9vbCBhcHBlbmREYXRlID0gZm9ybWF0ICYgRGF0ZVRpbWVGb3JtYXREYXRlOwogICAgIGJv
b2wgYXBwZW5kVGltZSA9IGZvcm1hdCAmIERhdGVUaW1lRm9ybWF0VGltZTsKQEAgLTk3LDE3ICs5
NywyMyBAQCBTdHJpbmcgZm9ybWF0RGF0ZVRpbWUoY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUmIHQs
IERhdGVUaW1lRm9ybWF0IGZvcm1hdCwgYm9vbCBhcwogICAgICAgICAgICAgYXBwZW5kTnVtYmVy
PDI+KGJ1aWxkZXIsIG9mZnNldCAvIDYwKTsKICAgICAgICAgICAgIGFwcGVuZE51bWJlcjwyPihi
dWlsZGVyLCBvZmZzZXQgJSA2MCk7CiAKKyAgICAgICAgICAgIFN0cmluZ1ZpZXcgdGltZVpvbmVO
YW1lOwogI2lmIE9TKFdJTkRPV1MpCisgICAgICAgICAgICB0aW1lWm9uZU5hbWUgPSBkYXRlQ2Fj
aGUudGltZVpvbmVEaXNwbGF5TmFtZU92ZXJyaWRlKHQuaXNEU1QoKSk7CiAgICAgICAgICAgICBU
SU1FX1pPTkVfSU5GT1JNQVRJT04gdGltZVpvbmVJbmZvcm1hdGlvbjsKLSAgICAgICAgICAgIEdl
dFRpbWVab25lSW5mb3JtYXRpb24oJnRpbWVab25lSW5mb3JtYXRpb24pOwotICAgICAgICAgICAg
Y29uc3QgV0NIQVIqIHdpblRpbWVab25lTmFtZSA9IHQuaXNEU1QoKSA/IHRpbWVab25lSW5mb3Jt
YXRpb24uRGF5bGlnaHROYW1lIDogdGltZVpvbmVJbmZvcm1hdGlvbi5TdGFuZGFyZE5hbWU7Ci0g
ICAgICAgICAgICBTdHJpbmcgdGltZVpvbmVOYW1lKHdpblRpbWVab25lTmFtZSk7CisgICAgICAg
ICAgICBpZiAodGltZVpvbmVOYW1lLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgIEdldFRp
bWVab25lSW5mb3JtYXRpb24oJnRpbWVab25lSW5mb3JtYXRpb24pOworICAgICAgICAgICAgICAg
IHdjaGFyX3QqIG5hbWUgPSB0LmlzRFNUKCkgPyAmdGltZVpvbmVJbmZvcm1hdGlvbi5EYXlsaWdo
dE5hbWVbMF0gOiAmdGltZVpvbmVJbmZvcm1hdGlvbi5TdGFuZGFyZE5hbWVbMF07CisgICAgICAg
ICAgICAgICAgdGltZVpvbmVOYW1lID0gU3RyaW5nVmlldyh1Y2hhckZyb20obmFtZSksIHdjc2xl
bihuYW1lKSk7CisgICAgICAgICAgICB9CiAjZWxzZQorICAgICAgICAgICAgVU5VU0VEX1BBUkFN
KGRhdGVDYWNoZSk7CiAgICAgICAgICAgICBzdHJ1Y3QgdG0gZ3RtID0gdDsKLSAgICAgICAgICAg
IGNoYXIgdGltZVpvbmVOYW1lWzcwXTsKLSAgICAgICAgICAgIHN0cmZ0aW1lKHRpbWVab25lTmFt
ZSwgc2l6ZW9mKHRpbWVab25lTmFtZSksICIlWiIsICZndG0pOworICAgICAgICAgICAgY2hhciB0
aW1lWm9uZUNoYXJzWzcwXTsKKyAgICAgICAgICAgIGlmIChzaXplX3QgbGVuZ3RoID0gc3RyZnRp
bWUodGltZVpvbmVDaGFycywgc2l6ZW9mKHRpbWVab25lQ2hhcnMpLCAiJVoiLCAmZ3RtKSkKKyAg
ICAgICAgICAgICAgICB0aW1lWm9uZU5hbWUgPSBTdHJpbmdWaWV3KHRpbWVab25lQ2hhcnMsIGxl
bmd0aCk7CiAjZW5kaWYKLSAgICAgICAgICAgIGlmICh0aW1lWm9uZU5hbWVbMF0pCisgICAgICAg
ICAgICBpZiAoIXRpbWVab25lTmFtZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmQoIiAoIiwgdGltZVpvbmVOYW1lLCAnKScpOwogICAgICAgICB9CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnZlcnNpb24uaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb252ZXJzaW9uLmgKaW5kZXggOGVh
ZmE5NTRiNmFjZDRhMDY5ZjlhZmRjYzMxMjdmMTk2MjVlY2JhZS4uNWY3ZjJjZjRkZDI0OWJiODM2
ZjYzODA4ZmJkZTE4NTM2NmI1NWJjNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRGF0ZUNvbnZlcnNpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EYXRlQ29udmVyc2lvbi5oCkBAIC0yOSwxMiArMjksMTQgQEAKIAogbmFtZXNwYWNlIEpT
QyB7CiAKK2NsYXNzIERhdGVDYWNoZTsKKwogZW51bSBEYXRlVGltZUZvcm1hdCB7CiAgICAgRGF0
ZVRpbWVGb3JtYXREYXRlID0gMSwKICAgICBEYXRlVGltZUZvcm1hdFRpbWUgPSAyLAogICAgIERh
dGVUaW1lRm9ybWF0RGF0ZUFuZFRpbWUgPSBEYXRlVGltZUZvcm1hdERhdGUgfCBEYXRlVGltZUZv
cm1hdFRpbWUKIH07CiAKLUpTX0VYUE9SVF9QUklWQVRFIFdURjo6U3RyaW5nIGZvcm1hdERhdGVU
aW1lKGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lJiwgRGF0ZVRpbWVGb3JtYXQsIGJvb2wgYXNVVENW
YXJpYW50KTsKK0pTX0VYUE9SVF9QUklWQVRFIFdURjo6U3RyaW5nIGZvcm1hdERhdGVUaW1lKGNv
bnN0IEdyZWdvcmlhbkRhdGVUaW1lJiwgRGF0ZVRpbWVGb3JtYXQsIGJvb2wgYXNVVENWYXJpYW50
LCBEYXRlQ2FjaGUmKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCmluZGV4IDRkMDRhNTJiZWQ4ZmMyMjEz
YjUyMWJkYTU2YjdiOGMzOTUxZDExNWUuLmY0NWRhOGRkZDdjMmIwM2RjNzI2YjhhN2NiY2ZmMmFl
NTUwMWE0NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQ
cm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90
b3R5cGUuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIGZvcm1h
dGVEYXRlSW5zdGFuY2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW0KICAg
ICBpZiAoIWdyZWdvcmlhbkRhdGVUaW1lKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTm9udHJpdmlhbFN0cmluZyh2bSwgU3RyaW5nKCJJbnZhbGlkIERhdGUiX3MpKSk7CiAKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyh2bSwgZm9ybWF0RGF0
ZVRpbWUoKmdyZWdvcmlhbkRhdGVUaW1lLCBmb3JtYXQsIGFzVVRDVmFyaWFudCkpKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyh2bSwgZm9ybWF0RGF0ZVRp
bWUoKmdyZWdvcmlhbkRhdGVUaW1lLCBmb3JtYXQsIGFzVVRDVmFyaWFudCwgY2FjaGUpKSk7CiB9
CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRlTWF0
aC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGVNYXRoLmNwcAppbmRl
eCBmYzZmZDM4ZWNiMzkyZTlkNWVhNTRkNTcwMjU3ODU2MjI4OTQzNGZiLi4zYTQ4ZTZiYjlhODVh
OGVmZWM0NmU1ZTRjZGEwNWRhMjMwMGMzYmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0RhdGVNYXRoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0RhdGVNYXRoLmNwcApAQCAtMTA4LDYgKzEwOCwxNSBAQCBwdWJsaWM6CiAgICAg
c3RkOjp1bmlxdWVfcHRyPFVDYWxlbmRhciwgSUNVRGVsZXRlcjx1Y2FsX2Nsb3NlPj4gbV9jYWxl
bmRhcjsKICAgICBTdHJpbmcgbV9jYW5vbmljYWxUaW1lWm9uZUlEOwogfTsKKyNlbHNlCitzdGF0
aWMgaWN1OjpUaW1lWm9uZSogdG9JQ1VUaW1lelpvbmUoT3BhcXVlSUNVVGltZVpvbmUqIHRpbWVa
b25lKQoreworICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8aWN1OjpUaW1lWm9uZSo+KHRpbWVab25l
KTsKK30KK3N0YXRpYyBPcGFxdWVJQ1VUaW1lWm9uZSogdG9PcGFxdWVJQ1VUaW1lWm9uZShpY3U6
OlRpbWVab25lKiB0aW1lWm9uZSkKK3sKKyAgICByZXR1cm4gYml0d2lzZV9jYXN0PE9wYXF1ZUlD
VVRpbWVab25lKj4odGltZVpvbmUpOworfQogI2VuZGlmCiAKIHZvaWQgT3BhcXVlSUNVVGltZVpv
bmVEZWxldGVyOjpvcGVyYXRvcigpKE9wYXF1ZUlDVVRpbWVab25lKiB0aW1lWm9uZSkKQEAgLTEx
Niw3ICsxMjUsNyBAQCB2b2lkIE9wYXF1ZUlDVVRpbWVab25lRGVsZXRlcjo6b3BlcmF0b3IoKShP
cGFxdWVJQ1VUaW1lWm9uZSogdGltZVpvbmUpCiAjaWYgSEFWRShJQ1VfQ19USU1FWk9ORV9BUEkp
CiAgICAgICAgIGRlbGV0ZSB0aW1lWm9uZTsKICNlbHNlCi0gICAgICAgIGRlbGV0ZSBiaXR3aXNl
X2Nhc3Q8aWN1OjpUaW1lWm9uZSo+KHRpbWVab25lKTsKKyAgICAgICAgZGVsZXRlIHRvSUNVVGlt
ZXpab25lKHRpbWVab25lKTsKICNlbmRpZgogICAgIH0KIH0KQEAgLTE1NSw3ICsxNjQsNyBAQCBM
b2NhbFRpbWVPZmZzZXQgRGF0ZUNhY2hlOjpjYWxjdWxhdGVMb2NhbFRpbWVPZmZzZXQoZG91Ymxl
IG1pbGxpc2Vjb25kc0Zyb21FcG9jaAogICAgICAgICAgICAgcmV0dXJuIGZhaWxlZDsKICAgICB9
CiAjZWxzZQotICAgIGF1dG8mIHRpbWVab25lQ2FjaGUgPSAqYml0d2lzZV9jYXN0PGljdTo6VGlt
ZVpvbmUqPih0aGlzLT50aW1lWm9uZUNhY2hlKCkpOworICAgIGF1dG8mIHRpbWVab25lQ2FjaGUg
PSAqdG9JQ1VUaW1lelpvbmUodGhpcy0+dGltZVpvbmVDYWNoZSgpKTsKICAgICBpZiAoaW5wdXRU
aW1lVHlwZSAhPSBXVEY6OkxvY2FsVGltZSkgewogICAgICAgICBjb25zdGV4cHIgYm9vbCBpc0xv
Y2FsVGltZSA9IGZhbHNlOwogICAgICAgICB0aW1lWm9uZUNhY2hlLmdldE9mZnNldChtaWxsaXNl
Y29uZHNGcm9tRXBvY2gsIGlzTG9jYWxUaW1lLCByYXdPZmZzZXQsIGRzdE9mZnNldCwgc3RhdHVz
KTsKQEAgLTMzNyw3ICszNDYsNyBAQCBTdHJpbmcgRGF0ZUNhY2hlOjpkZWZhdWx0VGltZVpvbmUo
KQogI2Vsc2UKICAgICBpY3U6OlVuaWNvZGVTdHJpbmcgdGltZVpvbmVJRDsKICAgICBpY3U6OlVu
aWNvZGVTdHJpbmcgY2Fub25pY2FsVGltZVpvbmVJRDsKLSAgICBhdXRvJiB0aW1lWm9uZSA9ICpi
aXR3aXNlX2Nhc3Q8aWN1OjpUaW1lWm9uZSo+KHRpbWVab25lQ2FjaGUoKSk7CisgICAgYXV0byYg
dGltZVpvbmUgPSAqdG9JQ1VUaW1lelpvbmUodGltZVpvbmVDYWNoZSgpKTsKICAgICB0aW1lWm9u
ZS5nZXRJRCh0aW1lWm9uZUlEKTsKIAogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VS
Uk9SOwpAQCAtMzU0LDYgKzM2MywxNiBAQCBTdHJpbmcgRGF0ZUNhY2hlOjpkZWZhdWx0VGltZVpv
bmUoKQogI2VuZGlmCiB9CiAKKyNpZiBPUyhXSU5ET1dTKQorU3RyaW5nVmlldyBEYXRlQ2FjaGU6
OnRpbWVab25lRGlzcGxheU5hbWVPdmVycmlkZShib29sIGlzRFNUKQoreworICAgIHRpbWVab25l
Q2FjaGUoKTsKKyAgICBpZiAoaXNEU1QpCisgICAgICAgIHJldHVybiBtX3RpbWVab25lRFNURGlz
cGxheU5hbWVPdmVycmlkZUNhY2hlOworICAgIHJldHVybiBtX3RpbWVab25lU3RhbmRhcmREaXNw
bGF5TmFtZU92ZXJyaWRlQ2FjaGU7Cit9CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKENPQ09BKQog
c3RhdGljIHZvaWQgdGltZVpvbmVDaGFuZ2VOb3RpZmljYXRpb24oQ0ZOb3RpZmljYXRpb25DZW50
ZXJSZWYsIHZvaWQqLCBDRlN0cmluZ1JlZiwgY29uc3Qgdm9pZCosIENGRGljdGlvbmFyeVJlZikK
IHsKQEAgLTM4MywxMiArNDAyLDIyIEBAIFJlZjxEYXRlSW5zdGFuY2VEYXRhPiBEYXRlQ2FjaGU6
OmNhY2hlZERhdGVJbnN0YW5jZURhdGEoZG91YmxlIG1pbGxpc2Vjb25kc0Zyb21FCiB2b2lkIERh
dGVDYWNoZTo6dGltZVpvbmVDYWNoZVNsb3coKQogewogICAgIEFTU0VSVCghbV90aW1lWm9uZUNh
Y2hlKTsKKworICAgIFZlY3RvcjxVQ2hhciwgMzI+IHRpbWVab25lSUQ7CisjaWYgT1MoV0lORE9X
UykKKyAgICBnZXRUaW1lWm9uZU92ZXJyaWRlKHRpbWVab25lSUQsIG1fdGltZVpvbmVTdGFuZGFy
ZERpc3BsYXlOYW1lT3ZlcnJpZGVDYWNoZSwgbV90aW1lWm9uZURTVERpc3BsYXlOYW1lT3ZlcnJp
ZGVDYWNoZSk7CisjZWxzZQorICAgIGdldFRpbWVab25lT3ZlcnJpZGUodGltZVpvbmVJRCk7Cisj
ZW5kaWYKICNpZiBIQVZFKElDVV9DX1RJTUVaT05FX0FQSSkKICAgICBhdXRvKiBjYWNoZSA9IG5l
dyBPcGFxdWVJQ1VUaW1lWm9uZTsKIAogICAgIFN0cmluZyBjYW5vbmljYWw7Ci0gICAgVmVjdG9y
PFVDaGFyLCAzMj4gdGltZVpvbmVJRDsKLSAgICBhdXRvIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9k
dWNpbmdGdW5jdGlvbih1Y2FsX2dldEhvc3RUaW1lWm9uZSwgdGltZVpvbmVJRCk7CisgICAgVUVy
cm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgaWYgKHRpbWVab25lSUQuaXNFbXB0
eSgpKSB7CisgICAgICAgIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1Y2Fs
X2dldEhvc3RUaW1lWm9uZSwgdGltZVpvbmVJRCk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoc3Rh
dHVzLCBVX1NVQ0NFU1Moc3RhdHVzKSk7CisgICAgfQogICAgIGlmIChVX1NVQ0NFU1Moc3RhdHVz
KSkgewogICAgICAgICBWZWN0b3I8VUNoYXIsIDMyPiBjYW5vbmljYWxCdWZmZXI7CiAgICAgICAg
IGF1dG8gc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVjYWxfZ2V0Q2Fub25p
Y2FsVGltZVpvbmVJRCwgdGltZVpvbmVJRC5kYXRhKCksIHRpbWVab25lSUQuc2l6ZSgpLCBjYW5v
bmljYWxCdWZmZXIsIG51bGxwdHIpOwpAQCAtNDA1LDggKzQzNCwxMiBAQCB2b2lkIERhdGVDYWNo
ZTo6dGltZVpvbmVDYWNoZVNsb3coKQogICAgIHVjYWxfc2V0R3JlZ29yaWFuQ2hhbmdlKGNhY2hl
LT5tX2NhbGVuZGFyLmdldCgpLCBtaW5FQ01BU2NyaXB0VGltZSwgJnN0YXR1cyk7IC8vIElnbm9y
ZSAidW5zdXBwb3J0ZWQiIGVycm9yLgogICAgIG1fdGltZVpvbmVDYWNoZSA9IHN0ZDo6dW5pcXVl
X3B0cjxPcGFxdWVJQ1VUaW1lWm9uZSwgT3BhcXVlSUNVVGltZVpvbmVEZWxldGVyPihjYWNoZSk7
CiAjZWxzZQorICAgIGlmICghdGltZVpvbmVJRC5pc0VtcHR5KCkpIHsKKyAgICAgICAgbV90aW1l
Wm9uZUNhY2hlID0gc3RkOjp1bmlxdWVfcHRyPE9wYXF1ZUlDVVRpbWVab25lLCBPcGFxdWVJQ1VU
aW1lWm9uZURlbGV0ZXI+KHRvT3BhcXVlSUNVVGltZVpvbmUoaWN1OjpUaW1lWm9uZTo6Y3JlYXRl
VGltZVpvbmUoaWN1OjpVbmljb2RlU3RyaW5nKHRpbWVab25lSUQuZGF0YSgpLCB0aW1lWm9uZUlE
LnNpemUoKSkpKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgLy8gRG8gbm90IHVzZSBp
Y3U6OlRpbWVab25lOjpjcmVhdGVEZWZhdWx0LiBJQ1UgaW50ZXJuYWxseSBoYXMgYSBjYWNoZSBm
b3IgdGltZXpvbmUgYW5kIGNyZWF0ZURlZmF1bHQgcmV0dXJucyB0aGlzIGNhY2hlZCB2YWx1ZS4K
LSAgICBtX3RpbWVab25lQ2FjaGUgPSBzdGQ6OnVuaXF1ZV9wdHI8T3BhcXVlSUNVVGltZVpvbmUs
IE9wYXF1ZUlDVVRpbWVab25lRGVsZXRlcj4oYml0d2lzZV9jYXN0PE9wYXF1ZUlDVVRpbWVab25l
Kj4oaWN1OjpUaW1lWm9uZTo6ZGV0ZWN0SG9zdFRpbWVab25lKCkpKTsKKyAgICBtX3RpbWVab25l
Q2FjaGUgPSBzdGQ6OnVuaXF1ZV9wdHI8T3BhcXVlSUNVVGltZVpvbmUsIE9wYXF1ZUlDVVRpbWVa
b25lRGVsZXRlcj4odG9PcGFxdWVJQ1VUaW1lWm9uZShpY3U6OlRpbWVab25lOjpkZXRlY3RIb3N0
VGltZVpvbmUoKSkpOwogI2VuZGlmCiB9CiAKQEAgLTQyNiw2ICs0NTksMTAgQEAgdm9pZCBEYXRl
Q2FjaGU6OnJlc2V0SWZOZWNlc3NhcnkoKQogICAgIG1fY2FjaGVkRGF0ZVN0cmluZyA9IFN0cmlu
ZygpOwogICAgIG1fY2FjaGVkRGF0ZVN0cmluZ1ZhbHVlID0gc3RkOjpudW1lcmljX2xpbWl0czxk
b3VibGU+OjpxdWlldF9OYU4oKTsKICAgICBtX2RhdGVJbnN0YW5jZUNhY2hlLnJlc2V0KCk7Cisj
aWYgT1MoV0lORE9XUykKKyAgICBtX3RpbWVab25lU3RhbmRhcmREaXNwbGF5TmFtZU92ZXJyaWRl
Q2FjaGUgPSBTdHJpbmcoKTsKKyAgICBtX3RpbWVab25lRFNURGlzcGxheU5hbWVPdmVycmlkZUNh
Y2hlID0gU3RyaW5nKCk7CisjZW5kaWYKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGVNYXRoLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGVNYXRoLmgKaW5kZXggZTNhYTU4YmJkMjdmMDkw
ODViNTU1YjNiMTg3OGFlZTc1OTVlNTA3Ni4uYmE5NDVmNzE1MzMwNDZlMjkxODVlOWJkMTRmMzlh
YWY3YzBkYWVjNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNE
YXRlTWF0aC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0ZU1hdGgu
aApAQCAtODAsNyArODAsOSBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBy
ZXNldElmTmVjZXNzYXJ5KCk7CiAKICAgICBTdHJpbmcgZGVmYXVsdFRpbWVab25lKCk7Ci0KKyNp
ZiBPUyhXSU5ET1dTKQorICAgIFN0cmluZ1ZpZXcgdGltZVpvbmVEaXNwbGF5TmFtZU92ZXJyaWRl
KGJvb2wgaXNEU1QpOworI2VuZGlmCiAgICAgUmVmPERhdGVJbnN0YW5jZURhdGE+IGNhY2hlZERh
dGVJbnN0YW5jZURhdGEoZG91YmxlIG1pbGxpc2Vjb25kc0Zyb21FcG9jaCk7CiAKICAgICB2b2lk
IG1zVG9HcmVnb3JpYW5EYXRlVGltZShkb3VibGUgbWlsbGlzZWNvbmRzRnJvbUVwb2NoLCBXVEY6
OlRpbWVUeXBlIG91dHB1dFRpbWVUeXBlLCBHcmVnb3JpYW5EYXRlVGltZSYpOwpAQCAtMTA4LDYg
KzExMCwxMCBAQCBwcml2YXRlOgogICAgIGRvdWJsZSBtX2NhY2hlZERhdGVTdHJpbmdWYWx1ZTsK
ICAgICBEYXRlSW5zdGFuY2VDYWNoZSBtX2RhdGVJbnN0YW5jZUNhY2hlOwogICAgIHVpbnQ2NF90
IG1fY2FjaGVkVGltZXpvbmVJRCB7IDAgfTsKKyNpZiBPUyhXSU5ET1dTKQorICAgIFN0cmluZyBt
X3RpbWVab25lU3RhbmRhcmREaXNwbGF5TmFtZU92ZXJyaWRlQ2FjaGU7CisgICAgU3RyaW5nIG1f
dGltZVpvbmVEU1REaXNwbGF5TmFtZU92ZXJyaWRlQ2FjaGU7CisjZW5kaWYKIH07CiAKIEFMV0FZ
U19JTkxJTkUgYm9vbCBpc1VUQ0VxdWl2YWxlbnQoU3RyaW5nVmlldyB0aW1lWm9uZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0RhdGVN
YXRoLmNwcAppbmRleCBiNWYyMjgzMDhkMTYxYjZlMTZjOWM0NWFiZjgyYjE1MmI1NzZjYzZlLi4w
ZjI4YmViNmMwZDUzMDI3MTExZTUyYzZkMzRkY2QwYWI3YzUzZGJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9EYXRlTWF0aC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvRGF0ZU1hdGguY3Bw
CkBAIC03Niw5ICs3NiwxNSBAQAogI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDxzdGRpbnQu
aD4KICNpbmNsdWRlIDx0aW1lLmg+CisjaW5jbHVkZSA8dW5pY29kZS91Y2FsLmg+CiAjaW5jbHVk
ZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgorI2luY2x1
ZGUgPHd0Zi9MYW5ndWFnZS5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRTcGVjaWZpYy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdW5pY29kZS9VVEY4Q29udmVyc2lvbi5oPgorI2luY2x1
ZGUgPHd0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmg+CiAKICNpZiBPUyhXSU5ET1dTKQogI2lu
Y2x1ZGUgPHdpbmRvd3MuaD4KQEAgLTkyLDYgKzk4LDIwIEBAIHRlbXBsYXRlPHVuc2lnbmVkIGxl
bmd0aD4gaW5saW5lIGJvb2wgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShjb25z
dCBjCiAgICAgcmV0dXJuIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZywgbG93
ZXJjYXNlTGV0dGVycywgbGVuZ3RoIC0gMSk7CiB9CiAKK3N0cnVjdCBUaW1lWm9uZU92ZXJyaWRl
IHsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VUNhbGVuZGFyLCBJQ1VEZWxldGVyPHVjYWxfY2xvc2U+
PiBjYWxlbmRhcjsKKyAgICBWZWN0b3I8VUNoYXI+IGlkOworICAgIFZlY3RvcjxVQ2hhcj4gZGlz
cGxheU5hbWVTdGFuZGFyZDsKKyAgICBWZWN0b3I8VUNoYXI+IGRpc3BsYXlOYW1lRFNUOworfTsK
Kworc3RhdGljIExvY2sgaW5uZXJUaW1lWm9uZU92ZXJyaWRlTG9jazsKK3N0YXRpYyBUaW1lWm9u
ZU92ZXJyaWRlJiBpbm5lclRpbWVab25lT3ZlcnJpZGUoKSBXVEZfUkVRVUlSRVNfTE9DSyhpbm5l
clRpbWVab25lT3ZlcnJpZGVMb2NrKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUaW1l
Wm9uZU92ZXJyaWRlPiB0aW1lWm9uZU92ZXJyaWRlOworICAgIHJldHVybiB0aW1lWm9uZU92ZXJy
aWRlOworfQorCiAvKiBDb25zdGFudHMgKi8KIAogY29uc3QgQVNDSUlMaXRlcmFsIHdlZWtkYXlO
YW1lWzddID0geyAiTW9uIl9zLCAiVHVlIl9zLCAiV2VkIl9zLCAiVGh1Il9zLCAiRnJpIl9zLCAi
U2F0Il9zLCAiU3VuIl9zIH07CkBAIC0xMDE2LDQgKzEwMzYsODYgQEAgU3RyaW5nIG1ha2VSRkMy
ODIyRGF0ZVN0cmluZyh1bnNpZ25lZCBkYXlPZldlZWssIHVuc2lnbmVkIGRheSwgdW5zaWduZWQg
bW9udGgsIHUKICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwogfQogCitzdGF0
aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8VUNoYXIsIDMyPj4gdmFsaWRhdGVUaW1lWm9uZShTdHJp
bmdWaWV3IHRpbWVab25lKQoreworICAgIFZlY3RvcjxVQ2hhciwgMzI+IGJ1ZmZlcih0aW1lWm9u
ZS5sZW5ndGgoKSk7CisgICAgdGltZVpvbmUuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoYnVm
ZmVyLmRhdGEoKSk7CisKKyAgICBWZWN0b3I8VUNoYXIsIDMyPiBjYW5vbmljYWxCdWZmZXI7Cisg
ICAgYXV0byBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odWNhbF9nZXRDYW5v
bmljYWxUaW1lWm9uZUlELCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpLCBjYW5vbmljYWxC
dWZmZXIsIG51bGxwdHIpOworICAgIGlmICghVV9TVUNDRVNTKHN0YXR1cykpCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0dXJuIFdURk1vdmUoY2Fub25pY2FsQnVmZmVyKTsK
K30KKworYm9vbCBpc1RpbWVab25lVmFsaWQoU3RyaW5nVmlldyB0aW1lWm9uZSkKK3sKKyAgICBy
ZXR1cm4gdmFsaWRhdGVUaW1lWm9uZSh0aW1lWm9uZSkuaGFzX3ZhbHVlKCk7Cit9CisKK2Jvb2wg
c2V0VGltZVpvbmVPdmVycmlkZShTdHJpbmdWaWV3IHRpbWVab25lKQoreworICAgIGlmICh0aW1l
Wm9uZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IGlubmVyVGltZVpvbmVP
dmVycmlkZUxvY2sgfTsKKyAgICAgICAgaW5uZXJUaW1lWm9uZU92ZXJyaWRlKCkgPSBUaW1lWm9u
ZU92ZXJyaWRlKCk7CisjaWYgIU9TKFdJTkRPV1MpCisgICAgICAgIGlmICh1bnNldGVudigiVFoi
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisKKyAgICBhdXRvIGNhbm9uaWNhbEJ1ZmZlciA9IHZhbGlkYXRlVGltZVpvbmUo
dGltZVpvbmUpOworICAgIGlmICghY2Fub25pY2FsQnVmZmVyKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBhdXRvIGNhbm9uaWNhbExlbmd0aCA9IGNhbm9uaWNhbEJ1ZmZlci0+c2l6ZSgp
OworICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIGF1dG8gY2FsZW5k
YXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VUNhbGVuZGFyLCBJQ1VEZWxldGVyPHVjYWxfY2xvc2U+Pih1
Y2FsX29wZW4oY2Fub25pY2FsQnVmZmVyLT5kYXRhKCksIGNhbm9uaWNhbExlbmd0aCwgbnVsbHB0
ciwgVUNBTF9UUkFESVRJT05BTCwgJnN0YXR1cykpOworICAgIGlmICghVV9TVUNDRVNTKHN0YXR1
cykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworI2lmIE9TKFdJTkRPV1MpCisgICAgVmVjdG9y
PFVDaGFyLCAzMj4gZGlzcGxheU5hbWVTdGFuZGFyZEJ1ZmZlcjsKKyAgICBzdGF0dXMgPSBjYWxs
QnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odWNhbF9nZXRUaW1lWm9uZURpc3BsYXlOYW1lLCBjYWxl
bmRhci5nZXQoKSwgVUNBTF9TVEFOREFSRCwgZGVmYXVsdExhbmd1YWdlKCkudXRmOCgpLmRhdGEo
KSwgZGlzcGxheU5hbWVTdGFuZGFyZEJ1ZmZlcik7CisgICAgaWYgKCFVX1NVQ0NFU1Moc3RhdHVz
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIFZlY3RvcjxVQ2hhciwgMzI+IGRpc3BsYXlO
YW1lRFNUQnVmZmVyOworICAgIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1
Y2FsX2dldFRpbWVab25lRGlzcGxheU5hbWUsIGNhbGVuZGFyLmdldCgpLCBVQ0FMX0RTVCwgZGVm
YXVsdExhbmd1YWdlKCkudXRmOCgpLmRhdGEoKSwgZGlzcGxheU5hbWVEU1RCdWZmZXIpOworICAg
IGlmICghVV9TVUNDRVNTKHN0YXR1cykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbHNlCisg
ICAgLy8gVFogaXMgdXNlZCBieSBzdHJmdGltZSB0byBkZXRlcm1pbmUgY3VycmVudCB0aW1lem9u
ZS4KKyAgICBpZiAoc2V0ZW52KCJUWiIsIHRpbWVab25lLnV0ZjgoKS5kYXRhKCksIDEpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgdHpzZXQoKTsKKyNlbmRpZgorICAgIHsKKyAgICAgICAg
TG9ja2VyIGxvY2tlciB7IGlubmVyVGltZVpvbmVPdmVycmlkZUxvY2sgfTsKKyAgICAgICAgYXV0
byYgb3ZlcnJpZGUgPSBpbm5lclRpbWVab25lT3ZlcnJpZGUoKTsKKyAgICAgICAgb3ZlcnJpZGUu
Y2FsZW5kYXIgPSBXVEZNb3ZlKGNhbGVuZGFyKTsKKyAgICAgICAgb3ZlcnJpZGUuaWQgPSBXVEZN
b3ZlKCpjYW5vbmljYWxCdWZmZXIpOworI2lmIE9TKFdJTkRPV1MpCisgICAgICAgIG92ZXJyaWRl
LmRpc3BsYXlOYW1lU3RhbmRhcmQgPSBXVEZNb3ZlKGRpc3BsYXlOYW1lU3RhbmRhcmRCdWZmZXIp
OworICAgICAgICBvdmVycmlkZS5kaXNwbGF5TmFtZURTVCA9IFdURk1vdmUoZGlzcGxheU5hbWVE
U1RCdWZmZXIpOworI2VuZGlmCisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCisjaWYgT1Mo
V0lORE9XUykKK3ZvaWQgZ2V0VGltZVpvbmVPdmVycmlkZShWZWN0b3I8VUNoYXIsIDMyPiYgdGlt
ZVpvbmVJRCwgU3RyaW5nJiBzdGFuZGFyZERpc3BsYXlOYW1lLCBTdHJpbmcmIGRzdERpc3BsYXlO
YW1lKQorI2Vsc2UKK3ZvaWQgZ2V0VGltZVpvbmVPdmVycmlkZShWZWN0b3I8VUNoYXIsIDMyPiYg
dGltZVpvbmVJRCkKKyNlbmRpZgoreworICAgIExvY2tlciBsb2NrZXIgeyBpbm5lclRpbWVab25l
T3ZlcnJpZGVMb2NrIH07CisgICAgYXV0byYgb3ZlcnJpZGUgPSBpbm5lclRpbWVab25lT3ZlcnJp
ZGUoKTsKKyAgICB0aW1lWm9uZUlEID0gb3ZlcnJpZGUuaWQ7CisjaWYgT1MoV0lORE9XUykKKyAg
ICBzdGFuZGFyZERpc3BsYXlOYW1lID0gU3RyaW5nKG92ZXJyaWRlLmRpc3BsYXlOYW1lU3RhbmRh
cmQpOworICAgIGRzdERpc3BsYXlOYW1lID0gU3RyaW5nKG92ZXJyaWRlLmRpc3BsYXlOYW1lRFNU
KTsKKyNlbmRpZgorfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL0RhdGVNYXRoLmggYi9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5oCmluZGV4IDE3NGU2
YzA3YjZmNWNmNGJjZjA0NjlmMjBmOGNmMDIxYmVkMjUxMDMuLmUwYWRhNWViNmVmZTBkOWYwZTdi
YWYwNTEzMjAyMWIxZjNlNzRkY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRo
LmgKKysrIGIvU291cmNlL1dURi93dGYvRGF0ZU1hdGguaApAQCAtMzkzLDMxICszOTMsNDIgQEAg
aW5saW5lIGRvdWJsZSB0aW1lVG9NUyhkb3VibGUgaG91ciwgZG91YmxlIG1pbiwgZG91YmxlIHNl
YywgZG91YmxlIG1zKQogICAgIHJldHVybiAoKChob3VyICogV1RGOjptaW51dGVzUGVySG91ciAr
IG1pbikgKiBXVEY6OnNlY29uZHNQZXJNaW51dGUgKyBzZWMpICogV1RGOjptc1BlclNlY29uZCAr
IG1zKTsKIH0KIAorV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNUaW1lWm9uZVZhbGlkKFN0cmlu
Z1ZpZXcpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgc2V0VGltZVpvbmVPdmVycmlkZShTdHJp
bmdWaWV3KTsKKyNpZiBPUyhXSU5ET1dTKQorV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZ2V0VGlt
ZVpvbmVPdmVycmlkZShWZWN0b3I8VUNoYXIsIDMyPiYgdGltZVpvbmVJRCwgU3RyaW5nJiBzdGFu
ZGFyZERpc3BsYXlOYW1lLCBTdHJpbmcmIGRzdERpc3BsYXlOYW1lKTsKKyNlbHNlCitXVEZfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBnZXRUaW1lWm9uZU92ZXJyaWRlKFZlY3RvcjxVQ2hhciwgMzI+JiB0
aW1lWm9uZUlEKTsKKyNlbmRpZgorCiAvLyBSZXR1cm5zIGNvbWJpbmVkIG9mZnNldCBpbiBtaWxs
aXNlY29uZCAoVVRDICsgRFNUKS4KIFdURl9FWFBPUlRfUFJJVkFURSBMb2NhbFRpbWVPZmZzZXQg
Y2FsY3VsYXRlTG9jYWxUaW1lT2Zmc2V0KGRvdWJsZSB1dGNJbk1pbGxpc2Vjb25kcywgVGltZVR5
cGUgPSBVVENUaW1lKTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKLXVzaW5nIFdURjo6aXNMZWFw
WWVhcjsKK3VzaW5nIFdURjo6Y2FsY3VsYXRlTG9jYWxUaW1lT2Zmc2V0OwogdXNpbmcgV1RGOjpk
YXRlVG9EYXlzRnJvbTE5NzA7CiB1c2luZyBXVEY6OmRheUluTW9udGhGcm9tRGF5SW5ZZWFyOwog
dXNpbmcgV1RGOjpkYXlJblllYXI7Cit1c2luZyBXVEY6OmdldFRpbWVab25lT3ZlcnJpZGU7Cit1
c2luZyBXVEY6OmlzTGVhcFllYXI7Cit1c2luZyBXVEY6OmlzVGltZVpvbmVWYWxpZDsKK3VzaW5n
IFdURjo6anNDdXJyZW50VGltZTsKK3VzaW5nIFdURjo6TG9jYWxUaW1lT2Zmc2V0OwordXNpbmcg
V1RGOjptYWtlUkZDMjgyMkRhdGVTdHJpbmc7CiB1c2luZyBXVEY6Om1pbnV0ZXNQZXJIb3VyOwog
dXNpbmcgV1RGOjptb250aEZyb21EYXlJblllYXI7CiB1c2luZyBXVEY6Om1zUGVyRGF5OwogdXNp
bmcgV1RGOjptc1BlckhvdXI7CiB1c2luZyBXVEY6Om1zUGVyTWludXRlOwogdXNpbmcgV1RGOjpt
c1BlclNlY29uZDsKLXVzaW5nIFdURjo6bXNUb1llYXI7CiB1c2luZyBXVEY6Om1zVG9EYXlzOwot
dXNpbmcgV1RGOjptc1RvTWludXRlczsKIHVzaW5nIFdURjo6bXNUb0hvdXJzOwordXNpbmcgV1RG
Ojptc1RvTWludXRlczsKK3VzaW5nIFdURjo6bXNUb1llYXI7Cit1c2luZyBXVEY6OnBhcnNlRGF0
ZUZyb21OdWxsVGVybWluYXRlZENoYXJhY3RlcnM7CiB1c2luZyBXVEY6OnNlY29uZHNQZXJEYXk7
CiB1c2luZyBXVEY6OnNlY29uZHNQZXJNaW51dGU7Ci11c2luZyBXVEY6OnBhcnNlRGF0ZUZyb21O
dWxsVGVybWluYXRlZENoYXJhY3RlcnM7Ci11c2luZyBXVEY6OnRpbWVUb01TOwotdXNpbmcgV1RG
OjptYWtlUkZDMjgyMkRhdGVTdHJpbmc7Ci11c2luZyBXVEY6OkxvY2FsVGltZU9mZnNldDsKLXVz
aW5nIFdURjo6Y2FsY3VsYXRlTG9jYWxUaW1lT2Zmc2V0OwordXNpbmcgV1RGOjpzZXRUaW1lWm9u
ZU92ZXJyaWRlOwogdXNpbmcgV1RGOjp0aW1lQ2xpcDsKLXVzaW5nIFdURjo6anNDdXJyZW50VGlt
ZTsKK3VzaW5nIFdURjo6dGltZVRvTVM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IDUxNDJlMmM2MDk1MzFlNWFm
ODA5YzQ2ZGE2ZmM0MjY1MGNlNGQ2OWEuLjljYTgxMTFhMjA0NGU1YTZiMTE5NzE3ZDVhNGQ5Nzdi
NWQ4ODE0ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC0yMTQsNiArMjE0LDggQEAgdm9pZCBXZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAog
I2lmIFVTRShBVFNQSSkKICAgICBlbmNvZGVyIDw8IGFjY2Vzc2liaWxpdHlCdXNBZGRyZXNzOwog
I2VuZGlmCisKKyAgICBlbmNvZGVyIDw8IHRpbWVab25lT3ZlcnJpZGU7CiB9CiAKIGJvb2wgV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2Rlciwg
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKQEAgLTU3MSw2ICs1NzMs
MTIgQEAgYm9vbCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNv
ZGVyJiBkZWNvZGVyLCBXZWJQcm9jZXNzQ3JlYXQKICAgICBwYXJhbWV0ZXJzLmFjY2Vzc2liaWxp
dHlCdXNBZGRyZXNzID0gV1RGTW92ZSgqYWNjZXNzaWJpbGl0eUJ1c0FkZHJlc3MpOwogI2VuZGlm
CiAKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gdGltZVpvbmVPdmVycmlkZTsKKyAgICBkZWNv
ZGVyID4+IHRpbWVab25lT3ZlcnJpZGU7CisgICAgaWYgKCF0aW1lWm9uZU92ZXJyaWRlKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgcGFyYW1ldGVycy50aW1lWm9uZU92ZXJyaWRlID0gV1RG
TW92ZSgqdGltZVpvbmVPdmVycmlkZSk7CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5o
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCmlu
ZGV4IDhkMzcyY2I2NjE5YzI4NDliZDQ2MWYyNDNhNTFhODY3OTQ4ZDk3MjMuLjI5ZGEyM2Q4M2U1
NjAyOGZiYjAwOWQ5NzVlNTBmZjk5OTI5NzQ0YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTI1NSw2ICsyNTUsOCBA
QCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAjaWYgVVNFKEFUU1BJKQog
ICAgIFN0cmluZyBhY2Nlc3NpYmlsaXR5QnVzQWRkcmVzczsKICNlbmRpZgorCisgICAgU3RyaW5n
IHRpbWVab25lT3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi5jcHAKaW5kZXggY2ZkOWMzOTgxMzM3YzdkZDAyYzYyM2NlOGJhNjg2ZWEzNmJiZmZi
OS4uYTE2ZmUxM2MwODU3NjE5NGVjOGM0M2U5ZGFlNjJhMjA1NjY5MDRiZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi5jcHAKQEAgLTg0LDYgKzg0LDcgQEAgUmVmPFByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bj4gUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjb3B5KCkKICNpZiBIQVZFKEFVRElUX1RPS0VO
KQogICAgIGNvcHktPm1fcHJlc2VudGluZ0FwcGxpY2F0aW9uUHJvY2Vzc1Rva2VuID0gdGhpcy0+
bV9wcmVzZW50aW5nQXBwbGljYXRpb25Qcm9jZXNzVG9rZW47CiAjZW5kaWYKKyAgICBjb3B5LT5t
X3RpbWVab25lT3ZlcnJpZGUgPSB0aGlzLT5tX3RpbWVab25lT3ZlcnJpZGU7CiAgICAgcmV0dXJu
IGNvcHk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAppbmRleCBjYzY0MmM1MWJhNjYzZTg0M2RmNTRk
MTRjZmNjYjZkNGVmODE3MjZjLi5jNzc5ZDA0NTUwMGJiMmFjOWVmZTUzNWMyYzNjNjRiNjRhNmUx
MjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCkBAIC0xNjQsNiArMTY0LDkgQEAgcHVibGljOgogICAg
IGNvbnN0IHN0ZDo6b3B0aW9uYWw8TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpDb25maWd1cmF0aW9u
PiYgbWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29uZmlndXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
bWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29uZmlndXJhdGlvbjsgfQogI2VuZGlmCiAKKyAgICB2b2lk
IHNldFRpbWVab25lT3ZlcnJpZGUoY29uc3QgV1RGOjpTdHJpbmcmIHRpbWVab25lT3ZlcnJpZGUp
IHsgbV90aW1lWm9uZU92ZXJyaWRlID0gdGltZVpvbmVPdmVycmlkZTsgfQorICAgIGNvbnN0IFdU
Rjo6U3RyaW5nJiB0aW1lWm9uZU92ZXJyaWRlKCkgY29uc3QgeyByZXR1cm4gbV90aW1lWm9uZU92
ZXJyaWRlOyB9CisKIHByaXZhdGU6CiAgICAgV1RGOjpTdHJpbmcgbV9pbmplY3RlZEJ1bmRsZVBh
dGg7CiAgICAgVmVjdG9yPFdURjo6U3RyaW5nPiBtX2N1c3RvbUNsYXNzZXNGb3JQYXJhbWV0ZXJD
b2RlcjsKQEAgLTIwNiw2ICsyMDksNyBAQCBwcml2YXRlOgogI2lmIEhBVkUoQVVESVRfVE9LRU4p
CiAgICAgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBtX3ByZXNlbnRpbmdBcHBsaWNhdGlv
blByb2Nlc3NUb2tlbjsKICNlbmRpZgorICAgIFdURjo6U3RyaW5nIG1fdGltZVpvbmVPdmVycmlk
ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRDb25maWd1cmF0aW9uUmVmLmNwcAppbmRleCA2
ZGVlMjhiZTVmNjZmOGUwYWQ5MTA1MGJjNTU5ODlkMzdhZTUyOTQxLi42M2UwNmE3ZGEyZGM1MjBh
ZjVlMzRhYzNmZTYyZjUyNWM4NDFmZTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS0NvbnRleHRDb25maWd1cmF0aW9uUmVmLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRDb25maWd1cmF0aW9uUmVmLmNwcApAQCAtMjIy
LDMgKzIyMiwxMyBAQCB2b2lkIFdLQ29udGV4dENvbmZpZ3VyYXRpb25TZXRTaG91bGRDb25maWd1
cmVKU0NGb3JUZXN0aW5nKFdLQ29udGV4dENvbmZpZ3VyYXRpbwogewogICAgIHRvSW1wbChjb25m
aWd1cmF0aW9uKS0+c2V0U2hvdWxkQ29uZmlndXJlSlNDRm9yVGVzdGluZyh2YWx1ZSk7CiB9CisK
K1dLU3RyaW5nUmVmIFdLQ29udGV4dENvbmZpZ3VyYXRpb25Db3B5VGltZVpvbmVPdmVycmlkZShX
S0NvbnRleHRDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24pCit7CisgICAgcmV0dXJuIHRv
Q29waWVkQVBJKHRvSW1wbChjb25maWd1cmF0aW9uKS0+dGltZVpvbmVPdmVycmlkZSgpKTsKK30K
Kwordm9pZCBXS0NvbnRleHRDb25maWd1cmF0aW9uU2V0VGltZVpvbmVPdmVycmlkZShXS0NvbnRl
eHRDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIFdLU3RyaW5nUmVmIHRpbWVab25lT3Zl
cnJpZGUpCit7CisgICAgdG9JbXBsKGNvbmZpZ3VyYXRpb24pLT5zZXRUaW1lWm9uZU92ZXJyaWRl
KHRvSW1wbCh0aW1lWm9uZU92ZXJyaWRlKS0+c3RyaW5nKCkpOworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5o
CmluZGV4IDBkMWIxNjQ2MDM0YjE0NzdiODMzYWVjNmMyNjQzZDIxZjgwMTE0OTkuLmE5MTIxYjhh
ZGI1MjM1ZTNlNzkzNzM1NjlkZmNhNDUyODhmYWZlZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRDb25maWd1cmF0aW9uUmVmLmgKQEAg
LTk1LDYgKzk1LDkgQEAgV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0Q29uZmlndXJhdGlvblNldERp
c2tDYWNoZVNpemVPdmVycmlkZShXS0NvbnRleHRDb25maWd1cmEKICAgICAKIFdLX0VYUE9SVCB2
b2lkIFdLQ29udGV4dENvbmZpZ3VyYXRpb25TZXRTaG91bGRDb25maWd1cmVKU0NGb3JUZXN0aW5n
KFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbiwgYm9vbCB2YWx1ZSk7CiAK
K1dLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0NvbnRleHRDb25maWd1cmF0aW9uQ29weVRpbWVab25l
T3ZlcnJpZGUoV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uKTsKK1dLX0VY
UE9SVCB2b2lkIFdLQ29udGV4dENvbmZpZ3VyYXRpb25TZXRUaW1lWm9uZU92ZXJyaWRlKFdLQ29u
dGV4dENvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbiwgV0tTdHJpbmdSZWYgdGltZVpvbmVP
dmVycmlkZSk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uLmgKaW5kZXggNzg0OTgzYzEwM2IyOWNhM2M3NzRjNjIwNDkyNjU5NGViYzhk
ZmVlNC4uYTRiNmQ3NTdlMDY2MzM0YWY5OGRlYzIxOGFjNTIyNjFiOWQ1Y2NkOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24uaApAQCAtMjQsNiArMjQsNyBAQAogICovCiAKICNpbXBvcnQg
PEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8V2ViS2l0L1dLQmFzZS5oPgogI2lt
cG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgogCiBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgpA
QCAtNzcsNiArNzgsOCBAQCBXS19DTEFTU19BVkFJTEFCTEUobWFjb3MoMTAuMTApLCBpb3MoOC4w
KSkKIAogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgY29uZmlndXJlSlNDRm9yVGVzdGluZyBX
S19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE1LjQpLCBpb3MoMTMuNCkpOwogCitAcHJvcGVydHkg
KG5vbmF0b21pYywgbnVsbGFibGUsIGNvcHkpIE5TU3RyaW5nICp0aW1lWm9uZU92ZXJyaWRlIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKIEBl
bmQKIAogTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5t
bQppbmRleCA5MmI1MDlhZDQ4MmY0ZDNiNWE2OWEwMGIwZmQyM2M0ZDBhYWIxNmFlLi5jYjc0NDVi
N2ZlODE0ZmVmZjUwYTE0YjhkZDI1ZjVhMzJmNzBhMTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24ubW0KQEAgLTQwMyw2ICs0MDMsMTYgQEAKICAgICBfcHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLT5zZXRTaG91bGRDb25maWd1cmVKU0NGb3JUZXN0aW5nKHZhbHVlKTsKIH0KIAorLSAo
TlNTdHJpbmcgKil0aW1lWm9uZU92ZXJyaWRlCit7CisgICAgcmV0dXJuIF9wcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24tPnRpbWVab25lT3ZlcnJpZGUoKTsKK30KKworLSAodm9pZClzZXRUaW1lWm9u
ZU92ZXJyaWRlOihOU1N0cmluZyAqKXRpbWVab25lCit7CisgICAgX3Byb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi0+c2V0VGltZVpvbmVPdmVycmlkZSh0aW1lWm9uZSk7Cit9CisKICNwcmFnbWEgbWFy
ayBXS09iamVjdCBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbgogCiAtIChBUEk6Ok9iamVjdCYpX2Fw
aU9iamVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRXZWJDb250ZXh0LmNwcAppbmRleCA5YjZiNTQxZGY0NWM5MjVkMjIwZjcyODg0NDZjMzdmY2Y0
ZDcwOGJhLi43OGQzODI5MGYyYmYzYzJjOTlmYzU0ZTIyODVkMDM2MmZlNjgyM2NlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0
LmNwcApAQCAtNjUsNiArNjUsNyBAQAogI2luY2x1ZGUgPGxpYmludGwuaD4KICNpbmNsdWRlIDxt
ZW1vcnk+CiAjaW5jbHVkZSA8cGFsL0h5c3RlcmVzaXNBY3Rpdml0eS5oPgorI2luY2x1ZGUgPHd0
Zi9EYXRlTWF0aC5oPgogI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpAQCAtMTI3LDYgKzEyOCw3IEBA
IGVudW0gewogI2VuZGlmCiAjZW5kaWYKICAgICBQUk9QX01FTU9SWV9QUkVTU1VSRV9TRVRUSU5H
UywKKyAgICBQUk9QX1RJTUVfWk9ORV9PVkVSUklERSwKICAgICBOX1BST1BFUlRJRVMsCiB9Owog
CkBAIC0yNDUsNiArMjQ3LDggQEAgc3RydWN0IF9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZSB7CiAg
ICAgUEFMOjpIeXN0ZXJlc2lzQWN0aXZpdHkgZG5zUHJlZmV0Y2hIeXN0ZXJlcmlzOwogCiAgICAg
V2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyogbWVtb3J5UHJlc3N1cmVTZXR0aW5nczsKKwor
ICAgIFN0cmluZyB0aW1lWm9uZU92ZXJyaWRlOwogfTsKIAogc3RhdGljIGd1aW50IHNpZ25hbHNb
TEFTVF9TSUdOQUxdID0geyAwLCB9OwpAQCAtMzUwLDYgKzM1NCw5IEBAIHN0YXRpYyB2b2lkIHdl
YmtpdFdlYkNvbnRleHRHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJRCwg
R1ZhbHVlKiB2CiAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAjZW5kaWYKKyAgICBjYXNlIFBST1Bf
VElNRV9aT05FX09WRVJSSURFOgorICAgICAgICBnX3ZhbHVlX3NldF9zdHJpbmcodmFsdWUsIHdl
YmtpdF93ZWJfY29udGV4dF9nZXRfdGltZV96b25lX292ZXJyaWRlKGNvbnRleHQpKTsKKyAgICAg
ICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BS
T1BFUlRZX0lEKG9iamVjdCwgcHJvcElELCBwYXJhbVNwZWMpOwogICAgIH0KQEAgLTM4NSw2ICsz
OTIsMTEgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViQ29udGV4dFNldFByb3BlcnR5KEdPYmplY3Qq
IG9iamVjdCwgZ3VpbnQgcHJvcElELCBjb25zdCBHVmEKICAgICAgICAgY29udGV4dC0+cHJpdi0+
bWVtb3J5UHJlc3N1cmVTZXR0aW5ncyA9IHNldHRpbmdzID8gd2Via2l0X21lbW9yeV9wcmVzc3Vy
ZV9zZXR0aW5nc19jb3B5KHN0YXRpY19jYXN0PFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3Mq
PihzZXR0aW5ncykpIDogbnVsbHB0cjsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2Ug
UFJPUF9USU1FX1pPTkVfT1ZFUlJJREU6IHsKKyAgICAgICAgaWYgKGNvbnN0IGF1dG8qIG92ZXJy
aWRlID0gZ192YWx1ZV9nZXRfc3RyaW5nKHZhbHVlKSkKKyAgICAgICAgICAgIHdlYmtpdF93ZWJf
Y29udGV4dF9zZXRfdGltZV96b25lX292ZXJyaWRlKGNvbnRleHQsIG92ZXJyaWRlKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5W
QUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJRCwgcGFyYW1TcGVjKTsKICAgICB9CkBAIC00
MTMsNiArNDI1LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViQ29udGV4dENvbnN0cnVjdGVkKEdP
YmplY3QqIG9iamVjdCkKICAgICAgICAgLy8gT25jZSB0aGUgc2V0dGluZ3MgaGF2ZSBiZWVuIHBh
c3NlZCB0byB0aGUgUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLCB3ZSBkb24ndCBuZWVkIHRoZW0g
YW55bW9yZSBzbyB3ZSBjYW4gZnJlZSB0aGVtLgogICAgICAgICBnX2NsZWFyX3BvaW50ZXIoJnBy
aXYtPm1lbW9yeVByZXNzdXJlU2V0dGluZ3MsIHdlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGlu
Z3NfZnJlZSk7CiAgICAgfQorICAgIGNvbmZpZ3VyYXRpb24uc2V0VGltZVpvbmVPdmVycmlkZShw
cml2LT50aW1lWm9uZU92ZXJyaWRlKTsKIAogICAgIGlmICghcHJpdi0+d2Vic2l0ZURhdGFNYW5h
Z2VyKQogICAgICAgICBwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIgPSBhZG9wdEdSZWYod2Via2l0
X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX25ldygibG9jYWwtc3RvcmFnZS1kaXJlY3RvcnkiLCBwcml2
LT5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkuZGF0YSgpLCBudWxscHRyKSk7CkBAIC01NzIsNiArNTg1
LDI4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfY29udGV4dF9jbGFzc19pbml0KFdlYktpdFdl
YkNvbnRleHRDbGFzcyogd2ViQ29udGV4dENsYXNzCiAgICAgICAgICAgICBXRUJLSVRfVFlQRV9N
RU1PUllfUFJFU1NVUkVfU0VUVElOR1MsCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHUGFyYW1G
bGFncz4oV0VCS0lUX1BBUkFNX1dSSVRBQkxFIHwgR19QQVJBTV9DT05TVFJVQ1RfT05MWSkpOwog
CisgICAgLyoqCisgICAgICogV2ViS2l0V2ViQ29udGV4dDp0aW1lLXpvbmUtb3ZlcnJpZGU6Cisg
ICAgICoKKyAgICAgKiBUaGUgdGltZXpvbmUgb3ZlcnJpZGUgZm9yIHRoaXMgd2ViIGNvbnRleHQu
IFNldHRpbmcgdGhpcyBwcm9wZXJ0eSBwcm92aWRlcyBhIGJldHRlcgorICAgICAqIGFsdGVybmF0
aXZlIHRvIGNvbmZpZ3VyZSB0aGUgdGltZXpvbmUgaW5mb3JtYXRpb24gZm9yIGFsbCB3ZWJ2aWV3
cyBtYW5hZ2VkIGJ5IHRoZSBXZWJDb250ZXh0LgorICAgICAqIFRoZSBvdGhlciwgbGVzcyBvcHRp
bWFsLCBhcHByb2FjaCBpcyB0byBnbG9iYWxseSBzZXQgdGhlIFRaIGVudmlyb25tZW50IHZhcmlh
YmxlIGluIHRoZQorICAgICAqIHByb2Nlc3MgYmVmb3JlIGNyZWF0aW5nIHRoZSBjb250ZXh0LiBI
b3dldmVyIHRoaXMgYXBwcm9hY2ggbWlnaHQgbm90IGJlIHZlcnkgY29udmVuaWVudCBhbmQKKyAg
ICAgKiBjYW4gaGF2ZSBzaWRlLWVmZmVjdHMgaW4geW91ciBhcHBsaWNhdGlvbi4KKyAgICAgKgor
ICAgICAqIFRoZSBleHBlY3RlZCB2YWx1ZXMgZm9yIHRoaXMgcHJvcGVydHkgYXJlIGRlZmluZWQg
aW4gdGhlIElBTkEgdGltZXpvbmUgZGF0YWJhc2UuIFNlZSB0aGlzCisgICAgICogd2lraXBlZGlh
IHBhZ2UgZm9yIGluc3RhbmNlLCBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MaXN0X29m
X3R6X2RhdGFiYXNlX3RpbWVfem9uZXMuCisgICAgICoKKyAgICAgKiBTaW5jZTogMi4zOAorICAg
ICAqLworICAgIHNPYmpQcm9wZXJ0aWVzW1BST1BfVElNRV9aT05FX09WRVJSSURFXSA9CisgICAg
ICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoCisgICAgICAgICAgICAidGltZS16b25lLW92ZXJyaWRl
IiwKKyAgICAgICAgICAgIF8oIlRpbWUgWm9uZSBPdmVycmlkZSIpLAorICAgICAgICAgICAgXygi
VGhlIHRpbWUgem9uZSB0byB1c2UgaW5zdGVhZCBvZiB0aGUgc3lzdGVtIG9uZSIpLAorICAgICAg
ICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PEdQYXJhbUZsYWdzPihXRUJL
SVRfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1RfT05MWSkpOworCiAgICAgZ19v
YmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0aWVzKGdPYmplY3RDbGFzcywgTl9QUk9QRVJUSUVT
LCBzT2JqUHJvcGVydGllcyk7CiAKICAgICAvKioKQEAgLTE4MzUsNiArMTg3MCwzOSBAQCBnYm9v
bGVhbiB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3VzZV9zeXN0ZW1fYXBwZWFyYW5jZV9mb3Jfc2Ny
b2xsYmFycyhXZWJLaXRXZWJDbwogfQogI2VuZGlmCiAKKy8qKgorICogd2Via2l0X3dlYl9jb250
ZXh0X3NldF90aW1lX3pvbmVfb3ZlcnJpZGU6CisgKiBAY29udGV4dDogYSAjV2ViS2l0V2ViQ29u
dGV4dAorICogQHRpbWVfem9uZV9vdmVycmlkZTogdmFsdWUgdG8gc2V0CisgKgorICogU2V0IHRo
ZSAjV2ViS2l0V2ViQ29udGV4dDp0aW1lLXpvbmUtb3ZlcnJpZGUgcHJvcGVydHkuIFJlZmVyIHRv
IHRoZSBJQU5BIGRhdGFiYXNlIGZvciB2YWxpZAorICogc3BlY2lmaWVycywgaHR0cHM6Ly9lbi53
aWtpcGVkaWEub3JnL3dpa2kvTGlzdF9vZl90el9kYXRhYmFzZV90aW1lX3pvbmVzCisgKgorICog
U2luY2U6IDIuMzgKKyAqLwordm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3RpbWVfem9uZV9v
dmVycmlkZShXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCBjb25zdCBnY2hhciogdGltZVpvbmVP
dmVycmlkZSkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfQ09OVEVYVChj
b250ZXh0KSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChpc1RpbWVab25lVmFsaWQodGltZVpvbmVP
dmVycmlkZSkpOworCisgICAgY29udGV4dC0+cHJpdi0+dGltZVpvbmVPdmVycmlkZSA9IFN0cmlu
Zzo6ZnJvbVVURjgodGltZVpvbmVPdmVycmlkZSk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9j
b250ZXh0X2dldF90aW1lX3pvbmVfb3ZlcnJpZGU6CisgKiBAY29udGV4dDogYSAjV2ViS2l0V2Vi
Q29udGV4dAorICoKKyAqIEdldCB0aGUgI1dlYktpdFdlYkNvbnRleHQ6dGltZS16b25lLW92ZXJy
aWRlIHByb3BlcnR5LgorICoKKyAqIFNpbmNlOiAyLjM4CisgKi8KK2NvbnN0IGdjaGFyKiB3ZWJr
aXRfd2ViX2NvbnRleHRfZ2V0X3RpbWVfem9uZV9vdmVycmlkZShXZWJLaXRXZWJDb250ZXh0KiBj
b250ZXh0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfQ09OVEVY
VChjb250ZXh0KSwgbnVsbHB0cik7CisKKyAgICByZXR1cm4gY29udGV4dC0+cHJpdi0+dGltZVpv
bmVPdmVycmlkZS51dGY4KCkuZGF0YSgpOworfQorCiB2b2lkIHdlYmtpdFdlYkNvbnRleHRJbml0
aWFsaXplTm90aWZpY2F0aW9uUGVybWlzc2lvbnMoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCkK
IHsKICAgICBnX3NpZ25hbF9lbWl0KGNvbnRleHQsIHNpZ25hbHNbSU5JVElBTElaRV9OT1RJRklD
QVRJT05fUEVSTUlTU0lPTlNdLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmgKaW5kZXggYmRkOTEyNTVjY2Q4MmVhNTc3NDIyMjc4
M2I1OTQ3NmEzMWJjZmIyZS4uOTdhNGQ1OGYyNjc3NzQzYWM4YTliOTZkZDRlMGJhM2Q4YTA0ZDJi
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJD
b250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJD
b250ZXh0LmgKQEAgLTMwMiw2ICszMDIsMTMgQEAgd2Via2l0X3dlYl9jb250ZXh0X3NldF91c2Vf
c3lzdGVtX2FwcGVhcmFuY2VfZm9yX3Njcm9sbGJhcnMgKFdlYktpdFdlYkNvbnRleHQKIFdFQktJ
VF9BUEkgZ2Jvb2xlYW4KIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfdXNlX3N5c3RlbV9hcHBlYXJh
bmNlX2Zvcl9zY3JvbGxiYXJzIChXZWJLaXRXZWJDb250ZXh0ICAgICAgKmNvbnRleHQpOwogCitX
RUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfY29udGV4dF9zZXRfdGltZV96b25lX292ZXJyaWRl
ICAgICAgICAgICAoV2ViS2l0V2ViQ29udGV4dCAgICAgICAgICAgICAgKmNvbnRleHQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdj
aGFyICAgICAgICAgICAgICAgICAgICp0aW1lX3pvbmVfb3ZlcnJpZGUpOworCitXRUJLSVRfQVBJ
IGNvbnN0IGdjaGFyKgord2Via2l0X3dlYl9jb250ZXh0X2dldF90aW1lX3pvbmVfb3ZlcnJpZGUg
ICAgICAgICAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAgICAgICAqY29udGV4dCk7CisKIEdf
RU5EX0RFQ0xTCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL3dwZS9XZWJLaXRXZWJDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
d3BlL1dlYktpdFdlYkNvbnRleHQuaAppbmRleCA2ODQxYzA3OWFhNGI2MWQ4OWMwOGIxYTk2OWY5
MTM3ZDliOGEwNDM0Li5lYTU1Zjg3NmMzMWViZDBiZWJlYjRiYmZkY2FjYzkzN2E5Yzc5N2JiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYkNvbnRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYkNvbnRl
eHQuaApAQCAtMjkxLDYgKzI5MSwxMyBAQCBXRUJLSVRfQVBJIHZvaWQKIHdlYmtpdF93ZWJfY29u
dGV4dF9zZW5kX21lc3NhZ2VfdG9fYWxsX2V4dGVuc2lvbnMgICAoV2ViS2l0V2ViQ29udGV4dCAg
ICAgICAgICAgICAgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdlYktpdFVzZXJNZXNzYWdlICAgICAgICAgICAgICptZXNzYWdl
KTsKIAorV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3RpbWVfem9uZV9v
dmVycmlkZSAgICAgICAgICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICAgICAgICpjb250ZXh0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBnY2hhciAgICAgICAgICAgICAgICAgICAqdGltZV96b25lX292ZXJyaWRlKTsKKworV0VC
S0lUX0FQSSBjb25zdCBnY2hhcioKK3dlYmtpdF93ZWJfY29udGV4dF9nZXRfdGltZV96b25lX292
ZXJyaWRlICAgICAgICAgICAoV2ViS2l0V2ViQ29udGV4dCAgICAgICAgICAgICAgKmNvbnRleHQp
OworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcAppbmRleCBiZTM2ODlmYTVhMGVhZjZkNDU1ZDIyNWZmODM0MmI5MDg4YWQ2
YzBmLi5hZjM3MTJmZmJjOTVjYTM3OTIzMmZmYWQ1NjkzOTA5NzkzODMwMzhmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC04NzQsNiArODc0LDggQEAg
dm9pZCBXZWJQcm9jZXNzUG9vbDo6aW5pdGlhbGl6ZU5ld1dlYlByb2Nlc3MoV2ViUHJvY2Vzc1By
b3h5JiBwcm9jZXNzLCBXZWJzaXRlRGEKIAogICAgIHBhcmFtZXRlcnMucHJlc2VudGluZ0FwcGxp
Y2F0aW9uUElEID0gbV9jb25maWd1cmF0aW9uLT5wcmVzZW50aW5nQXBwbGljYXRpb25QSUQoKTsK
IAorICAgIHBhcmFtZXRlcnMudGltZVpvbmVPdmVycmlkZSA9IG1fY29uZmlndXJhdGlvbi0+dGlt
ZVpvbmVPdmVycmlkZSgpOworCiAgICAgLy8gQWRkIGFueSBwbGF0Zm9ybSBzcGVjaWZpYyBwYXJh
bWV0ZXJzCiAgICAgcGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyhwcm9jZXNzLCBwYXJhbWV0
ZXJzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGQ3N2Uw
M2RiMTI3YTVhYWFkNDEwOTE2YTJkNTE2OGE0YjEyNGE3MzAuLmI0YTkwZDY5NDI2MGU5ZWQyYzU4
ZDMwZThiYWNhMmM5NDIwNGI0YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAKQEAgLTE0Miw2ICsxNDIsNyBAQAogI2luY2x1ZGUgPHBhbC9Mb2dnaW5nLmg+CiAjaW5j
bHVkZSA8d3RmL0FsZ29yaXRobXMuaD4KICNpbmNsdWRlIDx3dGYvQ2FsbGJhY2tBZ2dyZWdhdG9y
Lmg+CisjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+CiAjaW5jbHVkZSA8d3RmL0xhbmd1YWdlLmg+
CiAjaW5jbHVkZSA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9v
cC5oPgpAQCAtNDk4LDYgKzQ5OSw5IEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlBy
b2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAKICAgICBz
ZXRDYWNoZU1vZGVsKHBhcmFtZXRlcnMuY2FjaGVNb2RlbCk7CiAKKyAgICBpZiAoIXBhcmFtZXRl
cnMudGltZVpvbmVPdmVycmlkZS5pc0VtcHR5KCkpCisgICAgICAgIHNldFRpbWVab25lT3ZlcnJp
ZGUocGFyYW1ldGVycy50aW1lWm9uZU92ZXJyaWRlKTsKKwogICAgIGlmICghcGFyYW1ldGVycy5v
dmVycmlkZUxhbmd1YWdlcy5pc0VtcHR5KCkpIHsKICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKExh
bmd1YWdlLCBzdHJlYW0gPDwgIldlYiBQcm9jZXNzIGluaXRpYWxpemF0aW9uIGlzIHNldHRpbmcg
b3ZlcnJpZGVMYW5ndWFnZXM6ICIgPDwgcGFyYW1ldGVycy5vdmVycmlkZUxhbmd1YWdlcyk7CiAg
ICAgICAgIG92ZXJyaWRlVXNlclByZWZlcnJlZExhbmd1YWdlcyhwYXJhbWV0ZXJzLm92ZXJyaWRl
TGFuZ3VhZ2VzKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCBhNGYxNjdiMDU4NjQ5NmJmNGUwODkzYjkyMzBmODUzMGVmYjI5OGJhLi5hNjM4OWI5
NjMwMTJlZjUyMWIxMTYzZTMyNTA0NDhkZjkxNDk4NzNhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMjItMDQtMjcg
IFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPiBhbmQgWXVyeSBTZW1pa2hh
dHNreSA8eXVyeXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtXSzJdIEFkZCBBUEkgdG8gYWxs
b3cgZW1iZWRkZXIgdG8gc2V0IGEgdGltZXpvbmUgb3ZlcnJpZGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzg4NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBBUEkgdGVzdHMgZm9yIHRoZSB0aW1l
em9uZSBjb25maWd1cmF0aW9uIEFQSS4gVGhlIEdUSyBhbmQgV1BFIE1pbmlCcm93c2VycyBhbHNv
IGdhaW5lZAorICAgICAgICBuZXcgcnVudGltZSBvcHRpb25zIGFsbG93aW5nIHRvIGV4ZXJjaXNl
IHRoaXMgbmV3IEFQSS4KKworICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9tYWluLmM6CisgICAg
ICAgIChhY3RpdmF0ZSk6CisgICAgICAgICogTWluaUJyb3dzZXIvd3BlL21haW4uY3BwOgorICAg
ICAgICAobWFpbik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9Tb3VyY2VzQ29jb2EudHh0Ogor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVGltZVpv
bmVPdmVycmlkZS5tbTogQWRkZWQuCisgICAgICAgIChUaW1lWm9uZU92ZXJyaWRlVGVzdDo6cnVu
U2NyaXB0QW5kRXhlY3V0ZUNhbGxiYWNrKToKKyAgICAgICAgKFRpbWVab25lT3ZlcnJpZGVUZXN0
OjpjYWxsQXN5bmNGdW5jdGlvbkJvZHkpOgorICAgICAgICAoVEVTVF9GKToKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYkNvbnRleHQuY3BwOgor
ICAgICAgICAodGVzdFdlYkNvbnRleHRUaW1lWm9uZU92ZXJyaWRlKToKKyAgICAgICAgKHRlc3RX
ZWJDb250ZXh0VGltZVpvbmVPdmVycmlkZUluV29ya2VyKToKKyAgICAgICAgKGJlZm9yZUFsbCk6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvVGVzdE1haW4uY3BwOgor
ICAgICAgICAobWFpbik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIv
V2ViVmlld1Rlc3QuY3BwOgorICAgICAgICAocnVuSmF2YVNjcmlwdFJlYWR5Q2FsbGJhY2spOgor
ICAgICAgICAoV2ViVmlld1Rlc3Q6OnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCk6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuaDoK
KyAgICAgICAgKiBmbGF0cGFrL2ZsYXRwYWt1dGlscy5weToKKyAgICAgICAgKFdlYmtpdEZsYXRw
YWsucnVuX2luX3NhbmRib3gpOgorCiAyMDIyLTA0LTE0ICBXZW5zb24gSHNpZWggIDx3ZW5zb25f
aHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFVuZG8gb3B0aW9uIGFmdGVyIGludm9raW5nICJN
YXJrdXAgSW1hZ2UiIHNheXMgIlVuZG8gUGFzdGUiCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJv
d3Nlci9ndGsvbWFpbi5jIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYwppbmRleCA5ZTc4
NjNiNjFiM2U5ZGI3NmUwNGUxNGY0NTExNjY4NGRhZTQ0ZTM3Li44MTdlOGZlYzdlMThiM2ZiZGU4
NWFhNTM0MjYzZGVmNjA0NThiMWE4IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsv
bWFpbi5jCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMKQEAgLTUyLDYgKzUyLDcg
QEAgc3RhdGljIGNvbnN0IGNoYXIgKmNvb2tpZXNGaWxlOwogc3RhdGljIGNvbnN0IGNoYXIgKmNv
b2tpZXNQb2xpY3k7CiBzdGF0aWMgY29uc3QgY2hhciAqcHJveHk7CiBzdGF0aWMgZ2Jvb2xlYW4g
ZGFya01vZGU7CitzdGF0aWMgY2hhciogdGltZVpvbmU7CiBzdGF0aWMgZ2Jvb2xlYW4gZW5hYmxl
SVRQOwogc3RhdGljIGdib29sZWFuIGVuYWJsZVNhbmRib3g7CiBzdGF0aWMgZ2Jvb2xlYW4gZXhp
dEFmdGVyTG9hZDsKQEAgLTE0OSw2ICsxNTAsNyBAQCBzdGF0aWMgY29uc3QgR09wdGlvbkVudHJ5
IGNvbW1hbmRMaW5lT3B0aW9uc1tdID0KICAgICB7ICJlbmFibGUtaXRwIiwgMCwgMCwgR19PUFRJ
T05fQVJHX05PTkUsICZlbmFibGVJVFAsICJFbmFibGUgSW50ZWxsaWdlbnQgVHJhY2tpbmcgUHJl
dmVudGlvbiAoSVRQKSIsIE5VTEwgfSwKICAgICB7ICJlbmFibGUtc2FuZGJveCIsIDAsIDAsIEdf
T1BUSU9OX0FSR19OT05FLCAmZW5hYmxlU2FuZGJveCwgIkVuYWJsZSB3ZWIgcHJvY2VzcyBzYW5k
Ym94IHN1cHBvcnQiLCBOVUxMIH0sCiAgICAgeyAiZXhpdC1hZnRlci1sb2FkIiwgMCwgMCwgR19P
UFRJT05fQVJHX05PTkUsICZleGl0QWZ0ZXJMb2FkLCAiUXVpdCB0aGUgYnJvd3NlciBhZnRlciB0
aGUgbG9hZCBmaW5pc2hlcyIsIE5VTEwgfSwKKyAgICB7ICJ0aW1lLXpvbmUiLCAndCcsIDAsIEdf
T1BUSU9OX0FSR19TVFJJTkcsICZ0aW1lWm9uZSwgIlNldCB0aW1lIHpvbmUiLCAiVElNRVpPTkUi
IH0sCiAgICAgeyAidmVyc2lvbiIsICd2JywgMCwgR19PUFRJT05fQVJHX05PTkUsICZwcmludFZl
cnNpb24sICJQcmludCB0aGUgV2ViS2l0R1RLIHZlcnNpb24iLCBOVUxMIH0sCiAgICAgeyBHX09Q
VElPTl9SRU1BSU5JTkcsIDAsIDAsIEdfT1BUSU9OX0FSR19GSUxFTkFNRV9BUlJBWSwgJnVyaUFy
Z3VtZW50cywgMCwgIltVUkzigKZdIiB9LAogICAgIHsgMCwgMCwgMCwgMCwgMCwgMCwgMCB9CkBA
IC02NzQsNiArNjc2LDcgQEAgc3RhdGljIHZvaWQgYWN0aXZhdGUoR0FwcGxpY2F0aW9uICphcHBs
aWNhdGlvbiwgV2ViS2l0U2V0dGluZ3MgKndlYmtpdFNldHRpbmdzKQogI2lmICFHVEtfQ0hFQ0tf
VkVSU0lPTigzLCA5OCwgMCkKICAgICAgICAgInVzZS1zeXN0ZW0tYXBwZWFyYW5jZS1mb3Itc2Ny
b2xsYmFycyIsIEZBTFNFLAogI2VuZGlmCisgICAgICAgICJ0aW1lLXpvbmUtb3ZlcnJpZGUiLCB0
aW1lWm9uZSwKICAgICAgICAgTlVMTCk7CiAgICAgZ19vYmplY3RfdW5yZWYobWFuYWdlcik7CiAK
ZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3dwZS9tYWluLmNwcCBiL1Rvb2xzL01pbmlC
cm93c2VyL3dwZS9tYWluLmNwcAppbmRleCA0NTg0ZDk1NzNiYTdkMTFkMjI0OWYxNzU1MmVlNWM5
NDdhZjUzOWQyLi5jZDFkMzY0N2M4YmZhYTZjYzk2NDJjZTYzMDYwYTVhYTZjNTk0NzkxIDEwMDY0
NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci93cGUvbWFpbi5jcHAKKysrIGIvVG9vbHMvTWluaUJy
b3dzZXIvd3BlL21haW4uY3BwCkBAIC00Niw2ICs0Niw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBj
b29raWVzRmlsZTsKIHN0YXRpYyBjb25zdCBjaGFyKiBjb29raWVzUG9saWN5Owogc3RhdGljIGNv
bnN0IGNoYXIqIHByb3h5OwogY29uc3QgY2hhciogYmdDb2xvcjsKK3N0YXRpYyBjaGFyKiB0aW1l
Wm9uZTsKIHN0YXRpYyBnYm9vbGVhbiBlbmFibGVJVFA7CiBzdGF0aWMgZ2Jvb2xlYW4gcHJpbnRW
ZXJzaW9uOwogc3RhdGljIEdIYXNoVGFibGUqIG9wZW5WaWV3czsKQEAgLTYzLDYgKzY0LDcgQEAg
c3RhdGljIGNvbnN0IEdPcHRpb25FbnRyeSBjb21tYW5kTGluZU9wdGlvbnNbXSA9CiAgICAgeyAi
Y29udGVudC1maWx0ZXIiLCAwLCAwLCBHX09QVElPTl9BUkdfRklMRU5BTUUsICZjb250ZW50Rmls
dGVyLCAiSlNPTiB3aXRoIGNvbnRlbnQgZmlsdGVyaW5nIHJ1bGVzIiwgIkZJTEUiIH0sCiAgICAg
eyAiYmctY29sb3IiLCAwLCAwLCBHX09QVElPTl9BUkdfU1RSSU5HLCAmYmdDb2xvciwgIldpbmRv
dyBiYWNrZ3JvdW5kIGNvbG9yLiBEZWZhdWx0OiB3aGl0ZSIsICJDT0xPUiIgfSwKICAgICB7ICJl
bmFibGUtaXRwIiwgMCwgMCwgR19PUFRJT05fQVJHX05PTkUsICZlbmFibGVJVFAsICJFbmFibGUg
SW50ZWxsaWdlbnQgVHJhY2tpbmcgUHJldmVudGlvbiAoSVRQKSIsIG51bGxwdHIgfSwKKyAgICB7
ICJ0aW1lLXpvbmUiLCAndCcsIDAsIEdfT1BUSU9OX0FSR19TVFJJTkcsICZ0aW1lWm9uZSwgIlNl
dCB0aW1lIHpvbmUiLCAiVElNRVpPTkUiIH0sCiAgICAgeyAidmVyc2lvbiIsICd2JywgMCwgR19P
UFRJT05fQVJHX05PTkUsICZwcmludFZlcnNpb24sICJQcmludCB0aGUgV1BFIHZlcnNpb24iLCBu
dWxscHRyIH0sCiAgICAgeyBHX09QVElPTl9SRU1BSU5JTkcsIDAsIDAsIEdfT1BUSU9OX0FSR19G
SUxFTkFNRV9BUlJBWSwgJnVyaUFyZ3VtZW50cywgbnVsbHB0ciwgIltVUkxdIiB9LAogICAgIHsg
bnVsbHB0ciwgMCwgMCwgR19PUFRJT05fQVJHX05PTkUsIG51bGxwdHIsIG51bGxwdHIsIG51bGxw
dHIgfQpAQCAtMjI5LDcgKzIzMSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10p
CiAgICAgaWYgKGlnbm9yZVRMU0Vycm9ycykKICAgICAgICAgd2Via2l0X3dlYnNpdGVfZGF0YV9t
YW5hZ2VyX3NldF90bHNfZXJyb3JzX3BvbGljeShtYW5hZ2VyLCBXRUJLSVRfVExTX0VSUk9SU19Q
T0xJQ1lfSUdOT1JFKTsKIAotICAgIGF1dG8qIHdlYkNvbnRleHQgPSB3ZWJraXRfd2ViX2NvbnRl
eHRfbmV3X3dpdGhfd2Vic2l0ZV9kYXRhX21hbmFnZXIobWFuYWdlcik7CisgICAgYXV0byogd2Vi
Q29udGV4dCA9IFdFQktJVF9XRUJfQ09OVEVYVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VC
X0NPTlRFWFQsICJ3ZWJzaXRlLWRhdGEtbWFuYWdlciIsIG1hbmFnZXIsICJ0aW1lLXpvbmUtb3Zl
cnJpZGUiLCB0aW1lWm9uZSwgbnVsbHB0cikpOwogICAgIGdfb2JqZWN0X3VucmVmKG1hbmFnZXIp
OwogCiAgICAgaWYgKGNvb2tpZXNQb2xpY3kpIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvU291cmNlc0NvY29hLnR4dCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvU291cmNlc0NvY29h
LnR4dAppbmRleCAzNmFkMzQ3NWE5MDM0ZWNmZWU3ZDZmNWViMmM5ZDc0YzgwNmMyZTJkLi4wMTZj
MmM0NzZkMTU4MzVhZTQ5NDRhMmJmMjA3MGNmMDBjMzcwYzg3IDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9T
b3VyY2VzQ29jb2EudHh0CkBAIC0yNDAsNiArMjQwLDcgQEAgVGVzdHMvV2ViS2l0Q29jb2EvVGVz
dFVSTFNjaGVtZUhhbmRsZXIubW0KIFRlc3RzL1dlYktpdENvY29hL1RleHRNYW5pcHVsYXRpb24u
bW0KIFRlc3RzL1dlYktpdENvY29hL1RleHRTaXplLm1tCiBUZXN0cy9XZWJLaXRDb2NvYS9UZXh0
V2lkdGgubW0KK1Rlc3RzL1dlYktpdENvY29hL1RpbWVab25lT3ZlcnJpZGUubW0KIFRlc3RzL1dl
YktpdENvY29hL1RvcENvbnRlbnRJbnNldC5tbQogVGVzdHMvV2ViS2l0Q29jb2EvVUlEZWxlZ2F0
ZS5tbQogVGVzdHMvV2ViS2l0Q29jb2EvVXBsb2FkRGlyZWN0b3J5Lm1tCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDYyMTJjOTMwMTYzZDFmOWFmMDUzNzZjNmRkZTk2NTgzMTVjMzE0NDMuLjU3
ZmEwZDk4MGVkNjc3YmUwMzJmMjJlN2VkN2E5YTkxODJmMGM5OWIgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0zMDI0LDYgKzMwMjQsNyBAQAogCQlFQkE3NUM0ODI3NUVEN0JFMDBENkQzMUMg
LyogUHVzaE1lc3NhZ2VDcnlwdG8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHVzaE1lc3NhZ2VD
cnlwdG8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFQzc5RjE2OEJFNDU0RTU3
OUU0MTdCMDUgLyogTWFya2FibGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTWFya2FibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFQ0E2ODBD
RDFFNjhDQzA5MDA3MzFEMjAgLyogU3RyaW5nVXRpbGl0aWVzLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gU3RyaW5nVXRpbGl0aWVzLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlGM0NFRjZCODI4MDhGMkQzMDAxRTIzQTUgLyogVGltZVpvbmVPdmVy
cmlkZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRpbWVab25lT3ZlcnJpZGUubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUYzRkMzRUUyMTM2NzhCNzMwMDEyNkE2NSAvKiBsaWJn
dGVzdC5hICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
YXJjaGl2ZS5hcjsgcGF0aCA9IGxpYmd0ZXN0LmE7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNU
U19ESVI7IH07CiAJCUY0MDEwQjdGMjREQTI0QUMwMEE4NzZFMiAvKiBOYXZpZ2F0aW9uU3dpcGVU
ZXN0cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5hdmlnYXRp
b25Td2lwZVRlc3RzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDAxMEI4MTI0
REEyNjdGMDBBODc2RTIgLyogUG9zZUFzQ2xhc3MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IG5hbWUgPSBQb3NlQXNDbGFzcy5tbTsgcGF0aCA9IC4uL1Rlc3RSdW5uZXJTaGFy
ZWQvY29jb2EvUG9zZUFzQ2xhc3MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0z
NjkyLDYgKzM2OTMsNyBAQAogCQkJCTlCMDJFMEQ1MjM1RkE0N0QwMDQwNDRCMiAvKiBUZXh0TWFu
aXB1bGF0aW9uLm1tICovLAogCQkJCTVDMTZGOEZCMjMwQzk0MkIwMDc0QzRBOCAvKiBUZXh0U2l6
ZS5tbSAqLywKIAkJCQlDMjJGQTMyQTIyOEY4NzA4MDA5RDc5ODggLyogVGV4dFdpZHRoLm1tICov
LAorCQkJCUYzQ0VGNkI4MjgwOEYyRDMwMDFFMjNBNSAvKiBUaW1lWm9uZU92ZXJyaWRlLm1tICov
LAogCQkJCTVDNzNBODFBMjMyMzA1OTgwMERFQTg1QSAvKiBUTFNEZXByZWNhdGlvbi5tbSAqLywK
IAkJCQlDREUxOTVCMzFDRkUwQURFMDA1M0QyNTYgLyogVG9wQ29udGVudEluc2V0Lm1tICovLAog
CQkJCTVDQjQwQjREMUY0Qjk4QkUwMDdEQzdCOSAvKiBVSURlbGVnYXRlLm1tICovLApkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UaW1lWm9uZU92ZXJy
aWRlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UaW1lWm9uZU92
ZXJyaWRlLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2ZjgwMTYxZjc0NTFlMTA3M2JlZDU2NWUxYmJlODQ4NDli
NzYzZTIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1RpbWVab25lT3ZlcnJpZGUubW0KQEAgLTAsMCArMSwxMDQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjIgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgi
CisKKyNpZiBQTEFURk9STShDT0NPQSkKKworI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIK
KyNpbXBvcnQgIlRlc3QuaCIKKyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQgPFdl
YktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dL
V2ViVmlld1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24uaD4KKyNpbXBvcnQgPHd0Zi9GdW5jdGlvbi5oPgorI2ltcG9ydCA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CisKK2NsYXNzIFRpbWVab25lT3ZlcnJpZGVUZXN0IDogcHVibGljIHRlc3Rpbmc6
OlRlc3QgeworcHVibGljOgorICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQorICAgIHsKKyAgICAg
ICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
YWxsb2NdIGluaXRdKTsKKyAgICAgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZyA9IGFkb3B0TlMo
W1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICAgICAgW3By
b2Nlc3NQb29sQ29uZmlnIHNldFRpbWVab25lT3ZlcnJpZGU6QCJFdXJvcGUvQmVybGluIl07CisK
KyAgICAgICAgX3dlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDMwMCwgMzAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3Vy
YXRpb24uZ2V0KCkgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlnLmdl
dCgpXSk7CisgICAgfQorCisgICAgdm9pZCBydW5TY3JpcHRBbmRFeGVjdXRlQ2FsbGJhY2soY29u
c3QgU3RyaW5nJiBzY3JpcHQsIEZ1bmN0aW9uPHZvaWQoaWQpPiYmIGNhbGxiYWNrKQorICAgIHsK
KyAgICAgICAgYm9vbCBjb21wbGV0ZSA9IGZhbHNlOworICAgICAgICBbX3dlYlZpZXcgZXZhbHVh
dGVKYXZhU2NyaXB0OnNjcmlwdCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNF
cnJvciAqZXJyb3IpIHsKKyAgICAgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAg
ICAgIGNhbGxiYWNrKHJlc3VsdCk7CisgICAgICAgICAgICBjb21wbGV0ZSA9IHRydWU7CisgICAg
ICAgIH1dOworICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmNvbXBsZXRlKTsKKyAg
ICB9CisKKyAgICB2b2lkIGNhbGxBc3luY0Z1bmN0aW9uQm9keShjb25zdCBTdHJpbmcmIGZ1bmN0
aW9uQm9keSwgRnVuY3Rpb248dm9pZChpZCk+JiYgY2FsbGJhY2spCisgICAgeworICAgICAgICBi
b29sIGNvbXBsZXRlID0gZmFsc2U7CisgICAgICAgIFtfd2ViVmlldyBjYWxsQXN5bmNKYXZhU2Ny
aXB0OmZ1bmN0aW9uQm9keSBhcmd1bWVudHM6bmlsIGluRnJhbWU6bmlsIGluQ29udGVudFdvcmxk
OldLQ29udGVudFdvcmxkLnBhZ2VXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3Vs
dCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAg
ICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7CisgICAgICAgICAgICBjb21wbGV0ZSA9IHRydWU7
CisgICAgICAgIH1dOworICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmNvbXBsZXRl
KTsKKyAgICB9CisKKworcHJpdmF0ZToKKyAgICBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gX3dl
YlZpZXc7Cit9OworCitURVNUX0YoVGltZVpvbmVPdmVycmlkZVRlc3QsIFRpbWVab25lT3ZlcnJp
ZGUpCit7CisgICAgcnVuU2NyaXB0QW5kRXhlY3V0ZUNhbGxiYWNrKCJsZXQgbm93ID0gbmV3IERh
dGUoKTsgbm93LmdldFRpbWV6b25lT2Zmc2V0KCkiX3MsIFtdKGlkIHJlc3VsdCkgeworICAgICAg
ICBFWFBFQ1RfV0tfU1RSRVEoW3Jlc3VsdCBzdHJpbmdWYWx1ZV0sICItMTIwIik7CisgICAgfSk7
Cit9CisKK1RFU1RfRihUaW1lWm9uZU92ZXJyaWRlVGVzdCwgVGltZVpvbmVPdmVycmlkZUluV29y
a2VycykKK3sKKyAgICBTdHJpbmcgZnVuY3Rpb25Cb2R5ID0KKyAgICAgICAgInJldHVybiBuZXcg
UHJvbWlzZShmdWxmaWxsID0+IHsiCisgICAgICAgICIgIGNvbnN0IHJlc3VsdHMgPSBbXTsiCisg
ICAgICAgICIgIGZvciAobGV0IGkgPSAwOyBpIDwgMzsgaSsrKSB7IgorICAgICAgICAiICAgIGNv
bnN0IHdvcmtlciA9IG5ldyBXb3JrZXIoJ2RhdGE6dGV4dC9qYXZhc2NyaXB0LHNlbGYucG9zdE1l
c3NhZ2UoSW50bC5EYXRlVGltZUZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLnRpbWVab25lKScp
OyIKKyAgICAgICAgIiAgICB3b3JrZXIub25tZXNzYWdlID0gbWVzc2FnZSA9PiB7IgorICAgICAg
ICAiICAgICAgcmVzdWx0cy5wdXNoKG1lc3NhZ2UuZGF0YSk7IgorICAgICAgICAiICAgICAgaWYg
KHJlc3VsdHMubGVuZ3RoID09PSAzKSIKKyAgICAgICAgIiAgICAgICAgZnVsZmlsbChyZXN1bHRz
LmpvaW4oJywgJykpOyIKKyAgICAgICAgIiAgICB9OyIKKyAgICAgICAgIiAgfSIKKyAgICAgICAg
In0pOyJfczsKKyAgICBjYWxsQXN5bmNGdW5jdGlvbkJvZHkoZnVuY3Rpb25Cb2R5LCBbXShpZCBy
ZXN1bHQpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0tpbmRPZkNsYXNzOltOU1N0
cmluZyBjbGFzc11dKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3VsdCwgQCJFdXJvcGUv
QmVybGluLCBFdXJvcGUvQmVybGluLCBFdXJvcGUvQmVybGluIik7CisgICAgfSk7Cit9CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rl
c3RXZWJLaXRXZWJDb250ZXh0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R0xpYi9UZXN0V2ViS2l0V2ViQ29udGV4dC5jcHAKaW5kZXggMzEyMDc4ZjdjYTRhYTkwNzlkYjQ2
ODMwOTQ4MDVlYWJlZjkyMzhmZS4uYjFiODdkMmE5NDg5MGM3MmI4MWIxZjMzMDVkMDI4YzhiYzhm
Mzk4NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rl
c3RXZWJLaXRXZWJDb250ZXh0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEdMaWIvVGVzdFdlYktpdFdlYkNvbnRleHQuY3BwCkBAIC05OTEsNiArOTkxLDU4IEBAIHN0
YXRpYyB2b2lkIHRlc3RNZW1vcnlQcmVzc3VyZVNldHRpbmdzKE1lbW9yeVByZXNzdXJlVGVzdCog
dGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBnX2Fzc2VydF9jbXB1aW50KHRlc3QtPm1fdGVybWlu
YXRpb25SZWFzb24sID09LCBXRUJLSVRfV0VCX1BST0NFU1NfRVhDRUVERURfTUVNT1JZX0xJTUlU
KTsKIH0KIAorc3RhdGljIHZvaWQgdGVzdFdlYkNvbnRleHRUaW1lWm9uZU92ZXJyaWRlKFdlYlZp
ZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9y
PiBlcnJvcjsKKyAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBqYXZhc2NyaXB0UmVzdWx0ID0g
dGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJsZXQgbm93ID0gbmV3IERh
dGUoKTsgbm93LmdldFRpbWV6b25lT2Zmc2V0KCkiLCAmZXJyb3Iub3V0UHRyKCkpOworICAgIGdf
YXNzZXJ0X25vbm51bGwoamF2YXNjcmlwdFJlc3VsdCk7CisgICAgZ19hc3NlcnRfbm9fZXJyb3Io
ZXJyb3IuZ2V0KCkpOworICAgIC8vIEJ5IGRlZmF1bHQgdGhlIHRlc3QgaGFybmVzcyB1c2VzIHRo
ZSBQYWNpZmljL0xvc19BbmdlbGVzIHRpbWV6b25lIHdoaWNoIGlzIDcgaG91cnMgKDQyMCBtaW51
dGVzKSBjb21wYXJlZCB0byBHTVQuCisgICAgZ19hc3NlcnRfY21waW50KFdlYlZpZXdUZXN0Ojpq
YXZhc2NyaXB0UmVzdWx0VG9OdW1iZXIoamF2YXNjcmlwdFJlc3VsdCksID09LCA0MjApOworCisg
ICAgLy8gQ3JlYXRlIGEgbmV3IGNvbnRleHQgY29uZmlndXJlZCB3aXRoIHRpbWUgem9uZSBvdmVy
aWRlIHNldCB0byBCZXJsaW4gd2hpY2ggaXMgMTIwIG1pbnV0ZXMgYWhlYWQgb2YgdGhlIEdNVCBv
ZmZzZXQuCisgICAgYXV0byB3ZWJDb250ZXh0ID0gYWRvcHRHUmVmKFdFQktJVF9XRUJfQ09OVEVY
VChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX0NPTlRFWFQsCisgICAgICAgICJ0aW1lLXpv
bmUtb3ZlcnJpZGUiLCAiRXVyb3BlL0JlcmxpbiIsIG51bGxwdHIpKSk7CisgICAgZ19hc3NlcnRf
Y21wc3RyKHdlYmtpdF93ZWJfY29udGV4dF9nZXRfdGltZV96b25lX292ZXJyaWRlKHdlYkNvbnRl
eHQuZ2V0KCkpLCA9PSwgIkV1cm9wZS9CZXJsaW4iKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBUZXN0
OjphZG9wdFZpZXcoVGVzdDo6Y3JlYXRlV2ViVmlldyh3ZWJDb250ZXh0LmdldCgpKSk7CisgICAg
amF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hl
ZCgibGV0IG5vdyA9IG5ldyBEYXRlKCk7IG5vdy5nZXRUaW1lem9uZU9mZnNldCgpIiwgJmVycm9y
Lm91dFB0cigpLCB3ZWJWaWV3LmdldCgpKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGphdmFzY3Jp
cHRSZXN1bHQpOworICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKKyAgICBnX2Fz
c2VydF9jbXBpbnQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb051bWJlcihqYXZhc2Ny
aXB0UmVzdWx0KSwgPT0sIC0xMjApOworfQorCitzdGF0aWMgdm9pZCB0ZXN0V2ViQ29udGV4dFRp
bWVab25lT3ZlcnJpZGVJbldvcmtlcihXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikK
K3sKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CisgICAgV2ViS2l0SmF2YXNjcmlw
dFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50
aWxGaW5pc2hlZCgiSW50bC5EYXRlVGltZUZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLnRpbWVa
b25lIiwgJmVycm9yLm91dFB0cigpKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGphdmFzY3JpcHRS
ZXN1bHQpOworICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKKyAgICAvLyBCeSBk
ZWZhdWx0IHRoZSB0ZXN0IGhhcm5lc3MgdXNlcyB0aGUgUGFjaWZpYy9Mb3NfQW5nZWxlcy4KKyAg
ICBnX2Fzc2VydF9jbXBzdHIoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmco
amF2YXNjcmlwdFJlc3VsdCksID09LCAiQW1lcmljYS9Mb3NfQW5nZWxlcyIpOworICAgIC8vIENy
ZWF0ZSBhIG5ldyBjb250ZXh0IGNvbmZpZ3VyZWQgd2l0aCB0aW1lIHpvbmUgb3ZlcmlkZSBzZXQg
dG8gQmVybGluIHdoaWNoIGlzIDEyMCBtaW51dGVzIGFoZWFkIG9mIHRoZSBHTVQgb2Zmc2V0Lgor
ICAgIGF1dG8gd2ViQ29udGV4dCA9IGFkb3B0R1JlZihXRUJLSVRfV0VCX0NPTlRFWFQoZ19vYmpl
Y3RfbmV3KFdFQktJVF9UWVBFX1dFQl9DT05URVhULAorICAgICAgICAidGltZS16b25lLW92ZXJy
aWRlIiwgIkV1cm9wZS9CZXJsaW4iLCBudWxscHRyKSkpOworICAgIGdfYXNzZXJ0X2NtcHN0cih3
ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3RpbWVfem9uZV9vdmVycmlkZSh3ZWJDb250ZXh0LmdldCgp
KSwgPT0sICJFdXJvcGUvQmVybGluIik7CisgICAgYXV0byB3ZWJWaWV3ID0gVGVzdDo6YWRvcHRW
aWV3KFRlc3Q6OmNyZWF0ZVdlYlZpZXcod2ViQ29udGV4dC5nZXQoKSkpOworCisgICAgdGVzdC0+
cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKAorICAgICAgICAid2luZG93LnJlc3Vs
dHMgPSBbXTsiCisgICAgICAgICJmb3IgKGxldCBpID0gMDsgaSA8IDM7IGkrKykgeyIKKyAgICAg
ICAgIiAgY29uc3Qgd29ya2VyID0gbmV3IFdvcmtlcignZGF0YTp0ZXh0L2phdmFzY3JpcHQsc2Vs
Zi5wb3N0TWVzc2FnZShJbnRsLkRhdGVUaW1lRm9ybWF0KCkucmVzb2x2ZWRPcHRpb25zKCkudGlt
ZVpvbmUpJyk7IgorICAgICAgICAiICB3b3JrZXIub25tZXNzYWdlID0gbWVzc2FnZSA9PiByZXN1
bHRzLnB1c2gobWVzc2FnZS5kYXRhKTsiCisgICAgICAgICJ9IiwgJmVycm9yLm91dFB0cigpLCB3
ZWJWaWV3LmdldCgpKTsKKyAgICBkbyB7CisgICAgICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0
LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoInJlc3VsdHMubGVuZ3RoIiwgJmVy
cm9yLm91dFB0cigpLCB3ZWJWaWV3LmdldCgpKTsKKyAgICAgICAgZ19hc3NlcnRfbm9ubnVsbChq
YXZhc2NyaXB0UmVzdWx0KTsKKyAgICAgICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0KCkp
OworICAgIH0gd2hpbGUgKFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9OdW1iZXIoamF2
YXNjcmlwdFJlc3VsdCkgPCAzKTsKKworICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5K
YXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoInJlc3VsdHMuam9pbignLCAnKSIsICZlcnJv
ci5vdXRQdHIoKSwgd2ViVmlldy5nZXQoKSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChqYXZhc2Ny
aXB0UmVzdWx0KTsKKyAgICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7CisgICAgZ19h
c3NlcnRfY21wc3RyKFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFz
Y3JpcHRSZXN1bHQpLCA9PSwgIkV1cm9wZS9CZXJsaW4sIEV1cm9wZS9CZXJsaW4sIEV1cm9wZS9C
ZXJsaW4iKTsKK30KKwogdm9pZCBiZWZvcmVBbGwoKQogewogICAgIGtTZXJ2ZXIgPSBuZXcgV2Vi
S2l0VGVzdFNlcnZlcigpOwpAQCAtMTAwOCw2ICsxMDYwLDggQEAgdm9pZCBiZWZvcmVBbGwoKQog
ICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFNlY3VyaXR5TWFuYWdlciIsICJmaWxlLXhociIs
IHRlc3RXZWJDb250ZXh0U2VjdXJpdHlGaWxlWEhSKTsKICAgICBQcm94eVRlc3Q6OmFkZCgiV2Vi
S2l0V2ViQ29udGV4dCIsICJwcm94eSIsIHRlc3RXZWJDb250ZXh0UHJveHlTZXR0aW5ncyk7CiAg
ICAgTWVtb3J5UHJlc3N1cmVUZXN0OjphZGQoIldlYktpdFdlYkNvbnRleHQiLCAibWVtb3J5LXBy
ZXNzdXJlIiwgdGVzdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MpOworICAgIFdlYlZpZXdUZXN0Ojph
ZGQoIldlYktpdFdlYkNvbnRleHQiLCAidGltZXpvbmUiLCB0ZXN0V2ViQ29udGV4dFRpbWVab25l
T3ZlcnJpZGUpOworICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYkNvbnRleHQiLCAidGlt
ZXpvbmUtd29ya2VyIiwgdGVzdFdlYkNvbnRleHRUaW1lWm9uZU92ZXJyaWRlSW5Xb3JrZXIpOwog
fQogCiB2b2lkIGFmdGVyQWxsKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xp
Yi9XZWJLaXRHTGliL1Rlc3RNYWluLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJL
aXRHTGliL1Rlc3RNYWluLmNwcAppbmRleCBlODViM2MxZWZkZTcyMTMzNjJkZTY5N2Q3MzJjNTM2
ZDVkN2ZmZTE5Li4zOTc0MTc0NmE3NTYzYzljZTI4NGQwZTlmMmEyOWIwNWUzZWRjNTA3IDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9UZXN0TWFpbi5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvVGVzdE1haW4uY3BwCkBA
IC0xMzIsNiArMTMyLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogICAgIGdf
c2V0ZW52KCJHU0VUVElOR1NfQkFDS0VORCIsICJtZW1vcnkiLCBUUlVFKTsKICAgICAvLyBHZXQg
cmlkIG9mIHJ1bnRpbWUgd2FybmluZ3MgYWJvdXQgZGVwcmVjYXRlZCBwcm9wZXJ0aWVzIGFuZCBz
aWduYWxzLCBzaW5jZSB0aGV5IGJyZWFrIHRoZSB0ZXN0cy4KICAgICBnX3NldGVudigiR19FTkFC
TEVfRElBR05PU1RJQyIsICIwIiwgVFJVRSk7CisgICAgZ19zZXRlbnYoIlRaIiwgIkFtZXJpY2Ev
TG9zX0FuZ2VsZXMiLCBUUlVFKTsKICAgICBnX3Rlc3RfYnVnX2Jhc2UoImh0dHBzOi8vYnVncy53
ZWJraXQub3JnLyIpOwogCiAgICAgcmVnaXN0ZXJHUmVzb3VyY2UoKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmNwcAppbmRleCA5MGY1
ZDM1MWMxN2RkZThhMGExZmY4YzJhMjRmOWRiYTJhYjRmMzc4Li5hMjFhMDA0MmI0Yzc1NTliYzcy
NWMxZmFjMDY1OGU0MDNjMTkxY2FmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2ds
aWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9n
bGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuY3BwCkBAIC0zMDYsOSArMzA2LDkgQEAgY29uc3Qg
Y2hhciogV2ViVmlld1Rlc3Q6Om1haW5SZXNvdXJjZURhdGEoc2l6ZV90JiBtYWluUmVzb3VyY2VE
YXRhU2l6ZSkKICAgICByZXR1cm4gbV9yZXNvdXJjZURhdGEuZ2V0KCk7CiB9CiAKLXN0YXRpYyB2
b2lkIHJ1bkphdmFTY3JpcHRSZWFkeUNhbGxiYWNrKEdPYmplY3QqLCBHQXN5bmNSZXN1bHQqIHJl
c3VsdCwgV2ViVmlld1Rlc3QqIHRlc3QpCitzdGF0aWMgdm9pZCBydW5KYXZhU2NyaXB0UmVhZHlD
YWxsYmFjayhHT2JqZWN0KiBvYmplY3QsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBXZWJWaWV3VGVz
dCogdGVzdCkKIHsKLSAgICB0ZXN0LT5tX2phdmFzY3JpcHRSZXN1bHQgPSB3ZWJraXRfd2ViX3Zp
ZXdfcnVuX2phdmFzY3JpcHRfZmluaXNoKHRlc3QtPm1fd2ViVmlldywgcmVzdWx0LCB0ZXN0LT5t
X2phdmFzY3JpcHRFcnJvcik7CisgICAgdGVzdC0+bV9qYXZhc2NyaXB0UmVzdWx0ID0gd2Via2l0
X3dlYl92aWV3X3J1bl9qYXZhc2NyaXB0X2ZpbmlzaChXRUJLSVRfV0VCX1ZJRVcob2JqZWN0KSwg
cmVzdWx0LCB0ZXN0LT5tX2phdmFzY3JpcHRFcnJvcik7CiAgICAgZ19tYWluX2xvb3BfcXVpdCh0
ZXN0LT5tX21haW5Mb29wKTsKIH0KIApAQCAtMzI0LDEzICszMjQsMTUgQEAgc3RhdGljIHZvaWQg
cnVuSmF2YVNjcmlwdEluV29ybGRSZWFkeUNhbGxiYWNrKEdPYmplY3QqLCBHQXN5bmNSZXN1bHQq
IHJlc3VsdCwgV2UKICAgICBnX21haW5fbG9vcF9xdWl0KHRlc3QtPm1fbWFpbkxvb3ApOwogfQog
Ci1XZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBXZWJWaWV3VGVzdDo6cnVuSmF2YVNjcmlwdEFuZFdh
aXRVbnRpbEZpbmlzaGVkKGNvbnN0IGNoYXIqIGphdmFzY3JpcHQsIEdFcnJvcioqIGVycm9yKQor
V2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogV2ViVmlld1Rlc3Q6OnJ1bkphdmFTY3JpcHRBbmRXYWl0
VW50aWxGaW5pc2hlZChjb25zdCBjaGFyKiBqYXZhc2NyaXB0LCBHRXJyb3IqKiBlcnJvciwgV2Vi
S2l0V2ViVmlldyogd2ViVmlldykKIHsKICAgICBpZiAobV9qYXZhc2NyaXB0UmVzdWx0KQogICAg
ICAgICB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfdW5yZWYobV9qYXZhc2NyaXB0UmVzdWx0KTsK
ICAgICBtX2phdmFzY3JpcHRSZXN1bHQgPSAwOwogICAgIG1famF2YXNjcmlwdEVycm9yID0gZXJy
b3I7Ci0gICAgd2Via2l0X3dlYl92aWV3X3J1bl9qYXZhc2NyaXB0KG1fd2ViVmlldywgamF2YXNj
cmlwdCwgMCwgcmVpbnRlcnByZXRfY2FzdDxHQXN5bmNSZWFkeUNhbGxiYWNrPihydW5KYXZhU2Ny
aXB0UmVhZHlDYWxsYmFjayksIHRoaXMpOworICAgIGlmICghd2ViVmlldykKKyAgICAgICAgd2Vi
VmlldyA9IG1fd2ViVmlldzsKKyAgICB3ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFzY3JpcHQod2Vi
VmlldywgamF2YXNjcmlwdCwgMCwgcmVpbnRlcnByZXRfY2FzdDxHQXN5bmNSZWFkeUNhbGxiYWNr
PihydW5KYXZhU2NyaXB0UmVhZHlDYWxsYmFjayksIHRoaXMpOwogICAgIGdfbWFpbl9sb29wX3J1
bihtX21haW5Mb29wKTsKIAogICAgIHJldHVybiBtX2phdmFzY3JpcHRSZXN1bHQ7CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5oIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuaAppbmRleCBh
MjhhNWVkYzhkNDBmNThiNTA1YWI2NGIxZWY0OGFhMGI2NTk3MzMzLi4wMmQ1ODQ5NWQ2ZDc3YmZi
M2E3M2JhMjhiNmE1ZDkzMGM0NmZmMmRhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Z2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmgKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgZW1pdFBvcHVwTWVudVNpZ25hbCgpOwogI2VuZGlmCiAKLSAgICBXZWJLaXRKYXZh
c2NyaXB0UmVzdWx0KiBydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoY29uc3QgY2hh
ciogamF2YXNjcmlwdCwgR0Vycm9yKiopOworICAgIFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIHJ1
bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZChjb25zdCBjaGFyKiBqYXZhc2NyaXB0LCBH
RXJyb3IqKiwgV2ViS2l0V2ViVmlldyogPSBudWxscHRyKTsKICAgICBXZWJLaXRKYXZhc2NyaXB0
UmVzdWx0KiBydW5KYXZhU2NyaXB0RnJvbUdSZXNvdXJjZUFuZFdhaXRVbnRpbEZpbmlzaGVkKGNv
bnN0IGNoYXIqIHJlc291cmNlLCBHRXJyb3IqKik7CiAgICAgV2ViS2l0SmF2YXNjcmlwdFJlc3Vs
dCogcnVuSmF2YVNjcmlwdEluV29ybGRBbmRXYWl0VW50aWxGaW5pc2hlZChjb25zdCBjaGFyKiBq
YXZhc2NyaXB0LCBjb25zdCBjaGFyKiB3b3JsZCwgR0Vycm9yKiopOwogICAgIFdlYktpdEphdmFz
Y3JpcHRSZXN1bHQqIHJ1bkphdmFTY3JpcHRXaXRob3V0Rm9yY2VkVXNlckdlc3R1cmVzQW5kV2Fp
dFVudGlsRmluaXNoZWQoY29uc3QgY2hhciogamF2YXNjcmlwdCwgR0Vycm9yKiopOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvZmxhdHBhay9mbGF0cGFrdXRpbHMucHkgYi9Ub29scy9mbGF0cGFrL2ZsYXRw
YWt1dGlscy5weQppbmRleCBhYjFkYmE5ODIwNmJlODEwYjFkNGU2MGNhNzQ2ZDliNzdhYjJiMGVk
Li41NjYyNmEzNjY0MTJhYjM2ZjBlZmNiN2QzOGU3ZDdmMTY3NTFhYTZiIDEwMDY0NAotLS0gYS9U
b29scy9mbGF0cGFrL2ZsYXRwYWt1dGlscy5weQorKysgYi9Ub29scy9mbGF0cGFrL2ZsYXRwYWt1
dGlscy5weQpAQCAtODU3LDcgKzg1Nyw3IEBAIGNsYXNzIFdlYmtpdEZsYXRwYWs6CiAgICAgICAg
ICAgICBdKQogCiAgICAgICAgICAgICBzYW5kYm94X2Vudmlyb25tZW50LnVwZGF0ZSh7Ci0gICAg
ICAgICAgICAgICAgIlRaIjogIlBTVDhQRFQiLAorICAgICAgICAgICAgICAgICJUWiI6ICJBbWVy
aWNhL0xvc19BbmdlbGVzIiwKICAgICAgICAgICAgIH0pCiAKICAgICAgICAgZW52X3Zhcl9wcmVm
aXhlc190b19rZWVwID0gWwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458485</attachid>
            <date>2022-04-27 19:01:28 -0700</date>
            <delta_ts>2022-04-29 19:11:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213884-20220427190128.patch</filename>
            <type>text/plain</type>
            <size>58665</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyOTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NjEyNGZmMTU5ZTBiZDI3MGEwMTk4MmRlZGQ0MjNhMDVmMjM0OGY5Li4yYTAxYWQ2OTJlYjliNTEw
YzM0NDRkYjRiNWEzZjkzZTlkYTlhOTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAyMi0wNC0yNyAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxp
YS5jb20+IGFuZCBQYXZlbCBGZWxkbWFuIDxwYXZlbC5mZWxkbWFuQGdtYWlsLmNvbT4gYW5kIFl1
cnkgU2VtaWtoYXRza3kgPHl1cnlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBbV0syXSBBZGQg
QVBJIHRvIGFsbG93IGVtYmVkZGVyIHRvIHNldCBhIHRpbWV6b25lIG92ZXJyaWRlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM4ODQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHJ1bnRpbWUvRGF0ZUNv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToK
KyAgICAgICAgKiBydW50aW1lL0RhdGVDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKEpTQzo6Zm9y
bWF0RGF0ZVRpbWUpOiBGb3JtYXQgdGhlIG92ZXJyaWRkZW4gdGltZXpvbmUgaWYgaXQncyBlbmFi
bGVkLgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZUNvbnZlcnNpb24uaDoKKyAgICAgICAgKiBydW50
aW1lL0RhdGVQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpmb3JtYXRlRGF0ZUluc3RhbmNl
KToKKyAgICAgICAgKiBydW50aW1lL0pTRGF0ZU1hdGguY3BwOgorICAgICAgICAoSlNDOjp0b0lD
VVRpbWVab25lKToKKyAgICAgICAgKEpTQzo6dG9PcGFxdWVJQ1VUaW1lWm9uZSk6CisgICAgICAg
IChKU0M6Ok9wYXF1ZUlDVVRpbWVab25lRGVsZXRlcjo6b3BlcmF0b3IoKSk6CisgICAgICAgIChK
U0M6OkRhdGVDYWNoZTo6Y2FsY3VsYXRlTG9jYWxUaW1lT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6
RGF0ZUNhY2hlOjpkZWZhdWx0VGltZVpvbmUpOgorICAgICAgICAoSlNDOjpEYXRlQ2FjaGU6OnRp
bWVab25lRGlzcGxheU5hbWVPdmVycmlkZSk6CisgICAgICAgIChKU0M6OkRhdGVDYWNoZTo6dGlt
ZVpvbmVDYWNoZVNsb3cpOiBBcHBseSB0aW1lem9uZSBvdmVycmlkZSBpZiBpdCBpcyBzZXQuCisg
ICAgICAgIChKU0M6OkRhdGVDYWNoZTo6cmVzZXRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcnVu
dGltZS9KU0RhdGVNYXRoLmg6CisKKwogMjAyMi0wNC0xNCAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0
cEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtKU0NdIFNoYWRvd1JlYWxtIGdsb2JhbCBvYmplY3Qg
aGFzIGEgbXV0YWJsZSBwcm90b3R5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
IGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNDA3ZmM5Y2MwZGYyM2Y1MzE1MWJlZDRjOTE2
NWJhYTc2MWRmYmFmZC4uNjg4NjI4MmZhZTNkOTM5MWJhZjkwOGJmMWZlMTliZDdiNDU2NWUyZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMyBAQAorMjAyMi0wNC0yNyAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3Jt
YW5kQGlnYWxpYS5jb20+IGFuZCBQYXZlbCBGZWxkbWFuIDxwYXZlbC5mZWxkbWFuQGdtYWlsLmNv
bT4gYW5kIFl1cnkgU2VtaWtoYXRza3kgPHl1cnlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBb
V0syXSBBZGQgQVBJIHRvIGFsbG93IGVtYmVkZGVyIHRvIHNldCBhIHRpbWV6b25lIG92ZXJyaWRl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM4ODQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9E
YXRlTWF0aC5jcHA6IE5ldyBBUElzIHRvIGNvbnRyb2wgYW5kIHF1ZXJ5IHRoZSB0aW1lem9uZSBv
dmVycmlkZS4KKyAgICAgICAgKFdURjo6aW5uZXJUaW1lWm9uZU92ZXJyaWRlKTogU3RhdGljIHN0
b3JhZ2Ugb2YgdGhlIG92ZXJyaWRlIGluZm9ybWF0aW9ucy4KKyAgICAgICAgKFdURjo6V1RGX1JF
UVVJUkVTX0xPQ0spOgorICAgICAgICAoV1RGOjp2YWxpZGF0ZVRpbWVab25lKTogTmV3IGZ1bmN0
aW9uIGFsbG93aW5nIHRvIGNoZWNrIGlmIGEgdGltZXpvbmUgaWRlbnRpZmllciBpcyB2YWxpZCBh
Y2NvcmRpbmcgdG8gSUNVJ3MgZGF0YWJhc2UgYW5kIGNvdmVydCBpdAorICAgICAgICB0byBVQ2hh
ciBidWZmZXIgc3VpdGFibGUgZm9yIHBhc3NpbmcgdG8gdWNhbC4KKyAgICAgICAgKFdURjo6aXNU
aW1lWm9uZVZhbGlkKToKKyAgICAgICAgKFdURjo6c2V0VGltZVpvbmVPdmVycmlkZSk6IE5ldyBB
UEkgdG8gc2V0IHRoZSB0aW1lem9uZSBvdmVycmlkZSwgdGhpcyBpcyBtZWFudCB0byBiZQorICAg
ICAgICB1c2VkIG9uIG5ld2x5IGNyZWF0ZWQgV2ViUHJvY2Vzc2VzLiBJbiBhZGRpdGlvbiB0byBw
cm92aWRpbmcgYWx0ZXJuYXRpdmUgbmFtZSBmb3IgdGhlIGNvZGUKKyAgICAgICAgdGhhdCBjYWxs
cyBpbnRvIElDVSBsaWJyYXJ5LCBvbiBQT1NJWCBzeXN0ZW1zIHdyaXRlcyBuZXcgdGltZXpvbmUg
dG8gIlRaIiBlbnZpcm9uZW1lbnQKKyAgICAgICAgdmFyaWFibGUgdG8gYWRqdXN0IHJlc3VsdCBv
ZiBzdHJmdGltZSAoY2FsbGVkIGluIGZvcm1hdERhdGVUaW1lKS4KKyAgICAgICAgKFdURjo6Z2V0
VGltZVpvbmVPdmVycmlkZSk6IFF1ZXJ5IHRoZSB0aW1lem9uZSBvdmVycmlkZS4KKyAgICAgICAg
KiB3dGYvRGF0ZU1hdGguaDoKKwogMjAyMi0wNC0xNSAgWmFuIERvYmVyc2VrICA8emRvYmVyc2Vr
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bV1BFXSBSZW1vdmUgZXhjbHVzaXZlIGJ1aWxk
IGd1YXJkcyBhcm91bmQgR1BVIHByb2Nlc3MgcHJlZmVyZW5jZXMsIGNvZGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
NjU4ODVmZWUxYTY4MGQyNjI0ZDA5ZDNjYzA5MDU1ZjM5ODdjYjhlZC4uMjIwODM1NDEyMzFhYzI0
YjVkMTE5MDY2YjQ0MmU4NjJjN2VkOWRiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MiBAQAorMjAy
Mi0wNC0yNyAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+IGFuZCBZdXJ5
IFNlbWlraGF0c2t5IDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1dLMl0gQWRkIEFQ
SSB0byBhbGxvdyBlbWJlZGRlciB0byBzZXQgYSB0aW1lem9uZSBvdmVycmlkZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzODg0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzOgor
CisgICAgICAgIC0gbmV3IENvY29hIEFQSQorICAgICAgICAtIG5ldyBHbGliIEFQSSAodGFyZ2V0
dGluZyBib3RoIFdQRSBhbmQgR1RLIHBvcnRzKQorICAgICAgICAtIG5ldyBDIEFQSSAoZm9yIHRo
ZSB3aW4gcG9ydCkKKworICAgICAgICB0aGF0IGFsbG93cyB0aGUgZW1iZWRkZXIgdG8gc2V0IGEg
dGltZXpvbmUgb3ZlcnJpZGUgZm9yIHRoZSB1bmRlcmx5aW5nIFBhZ2VDb25maWd1cmF0aW9uLgor
ICAgICAgICBTaW5jZSB0aGlzIEFQSSBpcyBub3QgZXhwb3NlZCBpbiBnbGliIHBvcnRzLCBhIG5l
dyBjb250cnVjdC10aW1lLW9ubHkgcHJvcGVydHkgd2FzIGFkZGVkIHRvCisgICAgICAgIHRoZSBX
ZWJLaXRXZWJDb250ZXh0IEFQSS4gSXQgd291bGQgYWxzbyBhbGxvdyBmaW5lLWdyYWluZWQgY29u
dHJvbCBvdmVyIG11bHRpcGxlIHBhZ2VzLCBmb3IKKyAgICAgICAgaW5zdGFuY2UgaXQncyBub3Qg
cG9zc2libGUgY3VycmVudGx5IHRvIGhhdmUgdHdvIHBhZ2VzIGluIGRpZmZlcmVudCB0aW1lem9u
ZXMuCisKKyAgICAgICAgTm8gbmV3IGxheW91dCB0ZXN0cywgdGhpcyBjaGFuZ2UgaXMgY292ZXJl
ZCBieSBuZXcgQVBJIHRlc3RzLgorCisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246
OmNvcHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dENvbmZpZ3VyYXRpb25S
ZWYuY3BwOgorICAgICAgICAoV0tDb250ZXh0Q29uZmlndXJhdGlvbkNvcHlUaW1lWm9uZU92ZXJy
aWRlKToKKyAgICAgICAgKFdLQ29udGV4dENvbmZpZ3VyYXRpb25TZXRUaW1lWm9uZU92ZXJyaWRl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24ubW06CisgICAgICAgICgtW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiB0aW1l
Wm9uZU92ZXJyaWRlXSk6CisgICAgICAgICgtW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBz
ZXRUaW1lWm9uZU92ZXJyaWRlOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRXZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYkNvbnRleHRHZXRQcm9wZXJ0eSk6
CisgICAgICAgICh3ZWJraXRXZWJDb250ZXh0U2V0UHJvcGVydHkpOgorICAgICAgICAod2Via2l0
V2ViQ29udGV4dENvbnN0cnVjdGVkKToKKyAgICAgICAgKHdlYmtpdF93ZWJfY29udGV4dF9jbGFz
c19pbml0KToKKyAgICAgICAgKHdlYmtpdF93ZWJfY29udGV4dF9zZXRfdGltZV96b25lX292ZXJy
aWRlKToKKyAgICAgICAgKHdlYmtpdF93ZWJfY29udGV4dF9nZXRfdGltZV96b25lX292ZXJyaWRl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViQ29udGV4dC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjppbml0aWFsaXplTmV3V2ViUHJvY2Vzcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlBy
b2Nlc3MpOiBBcHBseSB0aW1lem9uZSBvdmVycmlkZSBpZiBhbnkgb24gcHJvY2VzcyBzdGFydC4K
KwogMjAyMi0wNC0xNSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAg
ICAgU2VydmljZVdvcmtlci5wb3N0TWVzc2FnZSgpIGRvZXNuJ3Qgd29yayBmcm9tIGluc2lkZSBp
ZnJhbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25z
dHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0
b3IuY3BwCmluZGV4IDZkMDkwMmM5ZmNjOTRhZDBkNTFlNTFkZTI4ZWEyYzk2NTI5NGM3YTMuLmRk
NWQ0MzU3OWFmMDZlNWYzZmRiMDg1MGE0Zjc2NGFhYTMyNTJiNDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcApAQCAtMTUwLDcgKzE1
MCw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjYWxsRGF0ZSwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopKQogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBHcmVnb3JpYW5EYXRlVGltZSB0czsKICAgICB2bS5kYXRlQ2FjaGUubXNUb0dy
ZWdvcmlhbkRhdGVUaW1lKFdhbGxUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpLm1pbGxp
c2Vjb25kcygpLCBXVEY6OkxvY2FsVGltZSwgdHMpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNOb250cml2aWFsU3RyaW5nKHZtLCBmb3JtYXREYXRlVGltZSh0cywgRGF0ZVRpbWVGb3Jt
YXREYXRlQW5kVGltZSwgZmFsc2UpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05v
bnRyaXZpYWxTdHJpbmcodm0sIGZvcm1hdERhdGVUaW1lKHRzLCBEYXRlVGltZUZvcm1hdERhdGVB
bmRUaW1lLCBmYWxzZSwgdm0uZGF0ZUNhY2hlKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04oZGF0ZVBhcnNlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RGF0ZUNvbnZlcnNpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNv
bnZlcnNpb24uY3BwCmluZGV4IDJkZWNmOGE4M2M4MGU4MGNhODY3N2Y0Yzc4N2JmNzljNmMyOTk1
ZmEuLjdmY2FjNGViOTk4YmUyMGU2MTUxNTUzYWJjOTAwMWFkNzkwMDk2NDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb252ZXJzaW9uLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29udmVyc2lvbi5jcHAKQEAgLTU4LDcg
KzU4LDcgQEAgdm9pZCBhcHBlbmROdW1iZXI8Mj4oU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgaW50
IHZhbHVlKQogICAgIGJ1aWxkZXIuYXBwZW5kKHN0YXRpY19jYXN0PGNoYXI+KCcwJyArIHZhbHVl
ICUgMTApKTsKIH0KIAotU3RyaW5nIGZvcm1hdERhdGVUaW1lKGNvbnN0IEdyZWdvcmlhbkRhdGVU
aW1lJiB0LCBEYXRlVGltZUZvcm1hdCBmb3JtYXQsIGJvb2wgYXNVVENWYXJpYW50KQorU3RyaW5n
IGZvcm1hdERhdGVUaW1lKGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lJiB0LCBEYXRlVGltZUZvcm1h
dCBmb3JtYXQsIGJvb2wgYXNVVENWYXJpYW50LCBEYXRlQ2FjaGUmIGRhdGVDYWNoZSkKIHsKICAg
ICBib29sIGFwcGVuZERhdGUgPSBmb3JtYXQgJiBEYXRlVGltZUZvcm1hdERhdGU7CiAgICAgYm9v
bCBhcHBlbmRUaW1lID0gZm9ybWF0ICYgRGF0ZVRpbWVGb3JtYXRUaW1lOwpAQCAtOTcsMTcgKzk3
LDIzIEBAIFN0cmluZyBmb3JtYXREYXRlVGltZShjb25zdCBHcmVnb3JpYW5EYXRlVGltZSYgdCwg
RGF0ZVRpbWVGb3JtYXQgZm9ybWF0LCBib29sIGFzCiAgICAgICAgICAgICBhcHBlbmROdW1iZXI8
Mj4oYnVpbGRlciwgb2Zmc2V0IC8gNjApOwogICAgICAgICAgICAgYXBwZW5kTnVtYmVyPDI+KGJ1
aWxkZXIsIG9mZnNldCAlIDYwKTsKIAorICAgICAgICAgICAgU3RyaW5nVmlldyB0aW1lWm9uZU5h
bWU7CiAjaWYgT1MoV0lORE9XUykKKyAgICAgICAgICAgIHRpbWVab25lTmFtZSA9IGRhdGVDYWNo
ZS50aW1lWm9uZURpc3BsYXlOYW1lT3ZlcnJpZGUodC5pc0RTVCgpKTsKICAgICAgICAgICAgIFRJ
TUVfWk9ORV9JTkZPUk1BVElPTiB0aW1lWm9uZUluZm9ybWF0aW9uOwotICAgICAgICAgICAgR2V0
VGltZVpvbmVJbmZvcm1hdGlvbigmdGltZVpvbmVJbmZvcm1hdGlvbik7Ci0gICAgICAgICAgICBj
b25zdCBXQ0hBUiogd2luVGltZVpvbmVOYW1lID0gdC5pc0RTVCgpID8gdGltZVpvbmVJbmZvcm1h
dGlvbi5EYXlsaWdodE5hbWUgOiB0aW1lWm9uZUluZm9ybWF0aW9uLlN0YW5kYXJkTmFtZTsKLSAg
ICAgICAgICAgIFN0cmluZyB0aW1lWm9uZU5hbWUod2luVGltZVpvbmVOYW1lKTsKKyAgICAgICAg
ICAgIGlmICh0aW1lWm9uZU5hbWUuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgR2V0VGlt
ZVpvbmVJbmZvcm1hdGlvbigmdGltZVpvbmVJbmZvcm1hdGlvbik7CisgICAgICAgICAgICAgICAg
d2NoYXJfdCogbmFtZSA9IHQuaXNEU1QoKSA/ICZ0aW1lWm9uZUluZm9ybWF0aW9uLkRheWxpZ2h0
TmFtZVswXSA6ICZ0aW1lWm9uZUluZm9ybWF0aW9uLlN0YW5kYXJkTmFtZVswXTsKKyAgICAgICAg
ICAgICAgICB0aW1lWm9uZU5hbWUgPSBTdHJpbmdWaWV3KHVjaGFyRnJvbShuYW1lKSwgd2NzbGVu
KG5hbWUpKTsKKyAgICAgICAgICAgIH0KICNlbHNlCisgICAgICAgICAgICBVTlVTRURfUEFSQU0o
ZGF0ZUNhY2hlKTsKICAgICAgICAgICAgIHN0cnVjdCB0bSBndG0gPSB0OwotICAgICAgICAgICAg
Y2hhciB0aW1lWm9uZU5hbWVbNzBdOwotICAgICAgICAgICAgc3RyZnRpbWUodGltZVpvbmVOYW1l
LCBzaXplb2YodGltZVpvbmVOYW1lKSwgIiVaIiwgJmd0bSk7CisgICAgICAgICAgICBjaGFyIHRp
bWVab25lQ2hhcnNbNzBdOworICAgICAgICAgICAgaWYgKHNpemVfdCBsZW5ndGggPSBzdHJmdGlt
ZSh0aW1lWm9uZUNoYXJzLCBzaXplb2YodGltZVpvbmVDaGFycyksICIlWiIsICZndG0pKQorICAg
ICAgICAgICAgICAgIHRpbWVab25lTmFtZSA9IFN0cmluZ1ZpZXcodGltZVpvbmVDaGFycywgbGVu
Z3RoKTsKICNlbmRpZgotICAgICAgICAgICAgaWYgKHRpbWVab25lTmFtZVswXSkKKyAgICAgICAg
ICAgIGlmICghdGltZVpvbmVOYW1lLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBidWlsZGVy
LmFwcGVuZCgiICgiLCB0aW1lWm9uZU5hbWUsICcpJyk7CiAgICAgICAgIH0KICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29udmVyc2lvbi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnZlcnNpb24uaAppbmRleCA4ZWFm
YTk1NGI2YWNkNGEwNjlmOWFmZGNjMzEyN2YxOTYyNWVjYmFlLi41ZjdmMmNmNGRkMjQ5YmI4MzZm
NjM4MDhmYmRlMTg1MzY2YjU1YmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9EYXRlQ29udmVyc2lvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0RhdGVDb252ZXJzaW9uLmgKQEAgLTI5LDEyICsyOSwxNCBAQAogCiBuYW1lc3BhY2UgSlND
IHsKIAorY2xhc3MgRGF0ZUNhY2hlOworCiBlbnVtIERhdGVUaW1lRm9ybWF0IHsKICAgICBEYXRl
VGltZUZvcm1hdERhdGUgPSAxLAogICAgIERhdGVUaW1lRm9ybWF0VGltZSA9IDIsCiAgICAgRGF0
ZVRpbWVGb3JtYXREYXRlQW5kVGltZSA9IERhdGVUaW1lRm9ybWF0RGF0ZSB8IERhdGVUaW1lRm9y
bWF0VGltZQogfTsKIAotSlNfRVhQT1JUX1BSSVZBVEUgV1RGOjpTdHJpbmcgZm9ybWF0RGF0ZVRp
bWUoY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUmLCBEYXRlVGltZUZvcm1hdCwgYm9vbCBhc1VUQ1Zh
cmlhbnQpOworSlNfRVhQT1JUX1BSSVZBVEUgV1RGOjpTdHJpbmcgZm9ybWF0RGF0ZVRpbWUoY29u
c3QgR3JlZ29yaWFuRGF0ZVRpbWUmLCBEYXRlVGltZUZvcm1hdCwgYm9vbCBhc1VUQ1ZhcmlhbnQs
IERhdGVDYWNoZSYpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAKaW5kZXggNGQwNGE1MmJlZDhmYzIyMTNi
NTIxYmRhNTZiN2I4YzM5NTFkMTE1ZS4uZjQ1ZGE4ZGRkN2MyYjAzZGM3MjZiOGE3Y2JjZmYyYWU1
NTAxYTQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVBy
b3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3Rv
dHlwZS5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgZm9ybWF0
ZURhdGVJbnN0YW5jZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbQogICAg
IGlmICghZ3JlZ29yaWFuRGF0ZVRpbWUpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNOb250cml2aWFsU3RyaW5nKHZtLCBTdHJpbmcoIkludmFsaWQgRGF0ZSJfcykpKTsKIAotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFsU3RyaW5nKHZtLCBmb3JtYXREYXRl
VGltZSgqZ3JlZ29yaWFuRGF0ZVRpbWUsIGZvcm1hdCwgYXNVVENWYXJpYW50KSkpOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFsU3RyaW5nKHZtLCBmb3JtYXREYXRlVGlt
ZSgqZ3JlZ29yaWFuRGF0ZVRpbWUsIGZvcm1hdCwgYXNVVENWYXJpYW50LCBjYWNoZSkpKTsKIH0K
IAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGVNYXRo
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0ZU1hdGguY3BwCmluZGV4
IGZjNmZkMzhlY2IzOTJlOWQ1ZWE1NGQ1NzAyNTc4NTYyMjg5NDM0ZmIuLmEwMGE4YzlhMzkyMzg1
NzljMTg3MzgwZGIxODg2NDRlZGMxYzM3ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRGF0ZU1hdGguY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRGF0ZU1hdGguY3BwCkBAIC0xMDgsNiArMTA4LDE1IEBAIHB1YmxpYzoKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8VUNhbGVuZGFyLCBJQ1VEZWxldGVyPHVjYWxfY2xvc2U+PiBtX2NhbGVu
ZGFyOwogICAgIFN0cmluZyBtX2Nhbm9uaWNhbFRpbWVab25lSUQ7CiB9OworI2Vsc2UKK3N0YXRp
YyBpY3U6OlRpbWVab25lKiB0b0lDVVRpbWVab25lKE9wYXF1ZUlDVVRpbWVab25lKiB0aW1lWm9u
ZSkKK3sKKyAgICByZXR1cm4gYml0d2lzZV9jYXN0PGljdTo6VGltZVpvbmUqPih0aW1lWm9uZSk7
Cit9CitzdGF0aWMgT3BhcXVlSUNVVGltZVpvbmUqIHRvT3BhcXVlSUNVVGltZVpvbmUoaWN1OjpU
aW1lWm9uZSogdGltZVpvbmUpCit7CisgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxPcGFxdWVJQ1VU
aW1lWm9uZSo+KHRpbWVab25lKTsKK30KICNlbmRpZgogCiB2b2lkIE9wYXF1ZUlDVVRpbWVab25l
RGVsZXRlcjo6b3BlcmF0b3IoKShPcGFxdWVJQ1VUaW1lWm9uZSogdGltZVpvbmUpCkBAIC0xMTYs
NyArMTI1LDcgQEAgdm9pZCBPcGFxdWVJQ1VUaW1lWm9uZURlbGV0ZXI6Om9wZXJhdG9yKCkoT3Bh
cXVlSUNVVGltZVpvbmUqIHRpbWVab25lKQogI2lmIEhBVkUoSUNVX0NfVElNRVpPTkVfQVBJKQog
ICAgICAgICBkZWxldGUgdGltZVpvbmU7CiAjZWxzZQotICAgICAgICBkZWxldGUgYml0d2lzZV9j
YXN0PGljdTo6VGltZVpvbmUqPih0aW1lWm9uZSk7CisgICAgICAgIGRlbGV0ZSB0b0lDVVRpbWVa
b25lKHRpbWVab25lKTsKICNlbmRpZgogICAgIH0KIH0KQEAgLTE1NSw3ICsxNjQsNyBAQCBMb2Nh
bFRpbWVPZmZzZXQgRGF0ZUNhY2hlOjpjYWxjdWxhdGVMb2NhbFRpbWVPZmZzZXQoZG91YmxlIG1p
bGxpc2Vjb25kc0Zyb21FcG9jaAogICAgICAgICAgICAgcmV0dXJuIGZhaWxlZDsKICAgICB9CiAj
ZWxzZQotICAgIGF1dG8mIHRpbWVab25lQ2FjaGUgPSAqYml0d2lzZV9jYXN0PGljdTo6VGltZVpv
bmUqPih0aGlzLT50aW1lWm9uZUNhY2hlKCkpOworICAgIGF1dG8mIHRpbWVab25lQ2FjaGUgPSAq
dG9JQ1VUaW1lWm9uZSh0aGlzLT50aW1lWm9uZUNhY2hlKCkpOwogICAgIGlmIChpbnB1dFRpbWVU
eXBlICE9IFdURjo6TG9jYWxUaW1lKSB7CiAgICAgICAgIGNvbnN0ZXhwciBib29sIGlzTG9jYWxU
aW1lID0gZmFsc2U7CiAgICAgICAgIHRpbWVab25lQ2FjaGUuZ2V0T2Zmc2V0KG1pbGxpc2Vjb25k
c0Zyb21FcG9jaCwgaXNMb2NhbFRpbWUsIHJhd09mZnNldCwgZHN0T2Zmc2V0LCBzdGF0dXMpOwpA
QCAtMzM3LDcgKzM0Niw3IEBAIFN0cmluZyBEYXRlQ2FjaGU6OmRlZmF1bHRUaW1lWm9uZSgpCiAj
ZWxzZQogICAgIGljdTo6VW5pY29kZVN0cmluZyB0aW1lWm9uZUlEOwogICAgIGljdTo6VW5pY29k
ZVN0cmluZyBjYW5vbmljYWxUaW1lWm9uZUlEOwotICAgIGF1dG8mIHRpbWVab25lID0gKmJpdHdp
c2VfY2FzdDxpY3U6OlRpbWVab25lKj4odGltZVpvbmVDYWNoZSgpKTsKKyAgICBhdXRvJiB0aW1l
Wm9uZSA9ICp0b0lDVVRpbWVab25lKHRpbWVab25lQ2FjaGUoKSk7CiAgICAgdGltZVpvbmUuZ2V0
SUQodGltZVpvbmVJRCk7CiAKICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsK
QEAgLTM1NCw2ICszNjMsMTYgQEAgU3RyaW5nIERhdGVDYWNoZTo6ZGVmYXVsdFRpbWVab25lKCkK
ICNlbmRpZgogfQogCisjaWYgT1MoV0lORE9XUykKK1N0cmluZ1ZpZXcgRGF0ZUNhY2hlOjp0aW1l
Wm9uZURpc3BsYXlOYW1lT3ZlcnJpZGUoYm9vbCBpc0RTVCkKK3sKKyAgICB0aW1lWm9uZUNhY2hl
KCk7CisgICAgaWYgKGlzRFNUKQorICAgICAgICByZXR1cm4gbV90aW1lWm9uZURTVERpc3BsYXlO
YW1lT3ZlcnJpZGVDYWNoZTsKKyAgICByZXR1cm4gbV90aW1lWm9uZVN0YW5kYXJkRGlzcGxheU5h
bWVPdmVycmlkZUNhY2hlOworfQorI2VuZGlmCisKICNpZiBQTEFURk9STShDT0NPQSkKIHN0YXRp
YyB2b2lkIHRpbWVab25lQ2hhbmdlTm90aWZpY2F0aW9uKENGTm90aWZpY2F0aW9uQ2VudGVyUmVm
LCB2b2lkKiwgQ0ZTdHJpbmdSZWYsIGNvbnN0IHZvaWQqLCBDRkRpY3Rpb25hcnlSZWYpCiB7CkBA
IC0zODMsMTIgKzQwMiwyMiBAQCBSZWY8RGF0ZUluc3RhbmNlRGF0YT4gRGF0ZUNhY2hlOjpjYWNo
ZWREYXRlSW5zdGFuY2VEYXRhKGRvdWJsZSBtaWxsaXNlY29uZHNGcm9tRQogdm9pZCBEYXRlQ2Fj
aGU6OnRpbWVab25lQ2FjaGVTbG93KCkKIHsKICAgICBBU1NFUlQoIW1fdGltZVpvbmVDYWNoZSk7
CisKKyAgICBWZWN0b3I8VUNoYXIsIDMyPiB0aW1lWm9uZUlEOworI2lmIE9TKFdJTkRPV1MpCisg
ICAgZ2V0VGltZVpvbmVPdmVycmlkZSh0aW1lWm9uZUlELCBtX3RpbWVab25lU3RhbmRhcmREaXNw
bGF5TmFtZU92ZXJyaWRlQ2FjaGUsIG1fdGltZVpvbmVEU1REaXNwbGF5TmFtZU92ZXJyaWRlQ2Fj
aGUpOworI2Vsc2UKKyAgICBnZXRUaW1lWm9uZU92ZXJyaWRlKHRpbWVab25lSUQpOworI2VuZGlm
CiAjaWYgSEFWRShJQ1VfQ19USU1FWk9ORV9BUEkpCiAgICAgYXV0byogY2FjaGUgPSBuZXcgT3Bh
cXVlSUNVVGltZVpvbmU7CiAKICAgICBTdHJpbmcgY2Fub25pY2FsOwotICAgIFZlY3RvcjxVQ2hh
ciwgMzI+IHRpbWVab25lSUQ7Ci0gICAgYXV0byBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5n
RnVuY3Rpb24odWNhbF9nZXRIb3N0VGltZVpvbmUsIHRpbWVab25lSUQpOworICAgIFVFcnJvckNv
ZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIGlmICh0aW1lWm9uZUlELmlzRW1wdHkoKSkg
eworICAgICAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odWNhbF9nZXRI
b3N0VGltZVpvbmUsIHRpbWVab25lSUQpOworICAgICAgICBBU1NFUlRfVU5VU0VEKHN0YXR1cywg
VV9TVUNDRVNTKHN0YXR1cykpOworICAgIH0KICAgICBpZiAoVV9TVUNDRVNTKHN0YXR1cykpIHsK
ICAgICAgICAgVmVjdG9yPFVDaGFyLCAzMj4gY2Fub25pY2FsQnVmZmVyOwogICAgICAgICBhdXRv
IHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1Y2FsX2dldENhbm9uaWNhbFRp
bWVab25lSUQsIHRpbWVab25lSUQuZGF0YSgpLCB0aW1lWm9uZUlELnNpemUoKSwgY2Fub25pY2Fs
QnVmZmVyLCBudWxscHRyKTsKQEAgLTQwNSw4ICs0MzQsMTIgQEAgdm9pZCBEYXRlQ2FjaGU6OnRp
bWVab25lQ2FjaGVTbG93KCkKICAgICB1Y2FsX3NldEdyZWdvcmlhbkNoYW5nZShjYWNoZS0+bV9j
YWxlbmRhci5nZXQoKSwgbWluRUNNQVNjcmlwdFRpbWUsICZzdGF0dXMpOyAvLyBJZ25vcmUgInVu
c3VwcG9ydGVkIiBlcnJvci4KICAgICBtX3RpbWVab25lQ2FjaGUgPSBzdGQ6OnVuaXF1ZV9wdHI8
T3BhcXVlSUNVVGltZVpvbmUsIE9wYXF1ZUlDVVRpbWVab25lRGVsZXRlcj4oY2FjaGUpOwogI2Vs
c2UKKyAgICBpZiAoIXRpbWVab25lSUQuaXNFbXB0eSgpKSB7CisgICAgICAgIG1fdGltZVpvbmVD
YWNoZSA9IHN0ZDo6dW5pcXVlX3B0cjxPcGFxdWVJQ1VUaW1lWm9uZSwgT3BhcXVlSUNVVGltZVpv
bmVEZWxldGVyPih0b09wYXF1ZUlDVVRpbWVab25lKGljdTo6VGltZVpvbmU6OmNyZWF0ZVRpbWVa
b25lKGljdTo6VW5pY29kZVN0cmluZyh0aW1lWm9uZUlELmRhdGEoKSwgdGltZVpvbmVJRC5zaXpl
KCkpKSkpOworICAgICAgICByZXR1cm47CisgICAgfQogICAgIC8vIERvIG5vdCB1c2UgaWN1OjpU
aW1lWm9uZTo6Y3JlYXRlRGVmYXVsdC4gSUNVIGludGVybmFsbHkgaGFzIGEgY2FjaGUgZm9yIHRp
bWV6b25lIGFuZCBjcmVhdGVEZWZhdWx0IHJldHVybnMgdGhpcyBjYWNoZWQgdmFsdWUuCi0gICAg
bV90aW1lWm9uZUNhY2hlID0gc3RkOjp1bmlxdWVfcHRyPE9wYXF1ZUlDVVRpbWVab25lLCBPcGFx
dWVJQ1VUaW1lWm9uZURlbGV0ZXI+KGJpdHdpc2VfY2FzdDxPcGFxdWVJQ1VUaW1lWm9uZSo+KGlj
dTo6VGltZVpvbmU6OmRldGVjdEhvc3RUaW1lWm9uZSgpKSk7CisgICAgbV90aW1lWm9uZUNhY2hl
ID0gc3RkOjp1bmlxdWVfcHRyPE9wYXF1ZUlDVVRpbWVab25lLCBPcGFxdWVJQ1VUaW1lWm9uZURl
bGV0ZXI+KHRvT3BhcXVlSUNVVGltZVpvbmUoaWN1OjpUaW1lWm9uZTo6ZGV0ZWN0SG9zdFRpbWVa
b25lKCkpKTsKICNlbmRpZgogfQogCkBAIC00MjYsNiArNDU5LDEwIEBAIHZvaWQgRGF0ZUNhY2hl
OjpyZXNldElmTmVjZXNzYXJ5KCkKICAgICBtX2NhY2hlZERhdGVTdHJpbmcgPSBTdHJpbmcoKTsK
ICAgICBtX2NhY2hlZERhdGVTdHJpbmdWYWx1ZSA9IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91Ymxl
Pjo6cXVpZXRfTmFOKCk7CiAgICAgbV9kYXRlSW5zdGFuY2VDYWNoZS5yZXNldCgpOworI2lmIE9T
KFdJTkRPV1MpCisgICAgbV90aW1lWm9uZVN0YW5kYXJkRGlzcGxheU5hbWVPdmVycmlkZUNhY2hl
ID0gU3RyaW5nKCk7CisgICAgbV90aW1lWm9uZURTVERpc3BsYXlOYW1lT3ZlcnJpZGVDYWNoZSA9
IFN0cmluZygpOworI2VuZGlmCiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRlTWF0aC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRlTWF0aC5oCmluZGV4IGUzYWE1OGJiZDI3ZjA5MDg1YjU1
NWIzYjE4NzhhZWU3NTk1ZTUwNzYuLmJhOTQ1ZjcxNTMzMDQ2ZTI5MTg1ZTliZDE0ZjM5YWFmN2Mw
ZGFlYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0ZU1h
dGguaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGVNYXRoLmgKQEAg
LTgwLDcgKzgwLDkgQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVzZXRJ
Zk5lY2Vzc2FyeSgpOwogCiAgICAgU3RyaW5nIGRlZmF1bHRUaW1lWm9uZSgpOwotCisjaWYgT1Mo
V0lORE9XUykKKyAgICBTdHJpbmdWaWV3IHRpbWVab25lRGlzcGxheU5hbWVPdmVycmlkZShib29s
IGlzRFNUKTsKKyNlbmRpZgogICAgIFJlZjxEYXRlSW5zdGFuY2VEYXRhPiBjYWNoZWREYXRlSW5z
dGFuY2VEYXRhKGRvdWJsZSBtaWxsaXNlY29uZHNGcm9tRXBvY2gpOwogCiAgICAgdm9pZCBtc1Rv
R3JlZ29yaWFuRGF0ZVRpbWUoZG91YmxlIG1pbGxpc2Vjb25kc0Zyb21FcG9jaCwgV1RGOjpUaW1l
VHlwZSBvdXRwdXRUaW1lVHlwZSwgR3JlZ29yaWFuRGF0ZVRpbWUmKTsKQEAgLTEwOCw2ICsxMTAs
MTAgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgbV9jYWNoZWREYXRlU3RyaW5nVmFsdWU7CiAgICAg
RGF0ZUluc3RhbmNlQ2FjaGUgbV9kYXRlSW5zdGFuY2VDYWNoZTsKICAgICB1aW50NjRfdCBtX2Nh
Y2hlZFRpbWV6b25lSUQgeyAwIH07CisjaWYgT1MoV0lORE9XUykKKyAgICBTdHJpbmcgbV90aW1l
Wm9uZVN0YW5kYXJkRGlzcGxheU5hbWVPdmVycmlkZUNhY2hlOworICAgIFN0cmluZyBtX3RpbWVa
b25lRFNURGlzcGxheU5hbWVPdmVycmlkZUNhY2hlOworI2VuZGlmCiB9OwogCiBBTFdBWVNfSU5M
SU5FIGJvb2wgaXNVVENFcXVpdmFsZW50KFN0cmluZ1ZpZXcgdGltZVpvbmUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5j
cHAKaW5kZXggYjVmMjI4MzA4ZDE2MWI2ZTE2YzljNDVhYmY4MmIxNTJiNTc2Y2M2ZS4uMGYyOGJl
YjZjMGQ1MzAyNzExMWU1MmM2ZDM0ZGNkMGFiN2M1M2RiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvRGF0ZU1hdGguY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmNwcApAQCAt
NzYsOSArNzYsMTUgQEAKICNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAj
aW5jbHVkZSA8dGltZS5oPgorI2luY2x1ZGUgPHVuaWNvZGUvdWNhbC5oPgogI2luY2x1ZGUgPHd0
Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KKyNpbmNsdWRlIDx3
dGYvTGFuZ3VhZ2UuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRl
IDx3dGYvVGhyZWFkU3BlY2lmaWMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVy
Lmg+CisjaW5jbHVkZSA8d3RmL3VuaWNvZGUvVVRGOENvbnZlcnNpb24uaD4KKyNpbmNsdWRlIDx3
dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5oPgogCiAjaWYgT1MoV0lORE9XUykKICNpbmNsdWRl
IDx3aW5kb3dzLmg+CkBAIC05Miw2ICs5OCwyMCBAQCB0ZW1wbGF0ZTx1bnNpZ25lZCBsZW5ndGg+
IGlubGluZSBib29sIHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgYwog
ICAgIHJldHVybiBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcsIGxvd2VyY2Fz
ZUxldHRlcnMsIGxlbmd0aCAtIDEpOwogfQogCitzdHJ1Y3QgVGltZVpvbmVPdmVycmlkZSB7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPFVDYWxlbmRhciwgSUNVRGVsZXRlcjx1Y2FsX2Nsb3NlPj4gY2Fs
ZW5kYXI7CisgICAgVmVjdG9yPFVDaGFyPiBpZDsKKyAgICBWZWN0b3I8VUNoYXI+IGRpc3BsYXlO
YW1lU3RhbmRhcmQ7CisgICAgVmVjdG9yPFVDaGFyPiBkaXNwbGF5TmFtZURTVDsKK307CisKK3N0
YXRpYyBMb2NrIGlubmVyVGltZVpvbmVPdmVycmlkZUxvY2s7CitzdGF0aWMgVGltZVpvbmVPdmVy
cmlkZSYgaW5uZXJUaW1lWm9uZU92ZXJyaWRlKCkgV1RGX1JFUVVJUkVTX0xPQ0soaW5uZXJUaW1l
Wm9uZU92ZXJyaWRlTG9jaykKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGltZVpvbmVP
dmVycmlkZT4gdGltZVpvbmVPdmVycmlkZTsKKyAgICByZXR1cm4gdGltZVpvbmVPdmVycmlkZTsK
K30KKwogLyogQ29uc3RhbnRzICovCiAKIGNvbnN0IEFTQ0lJTGl0ZXJhbCB3ZWVrZGF5TmFtZVs3
XSA9IHsgIk1vbiJfcywgIlR1ZSJfcywgIldlZCJfcywgIlRodSJfcywgIkZyaSJfcywgIlNhdCJf
cywgIlN1biJfcyB9OwpAQCAtMTAxNiw0ICsxMDM2LDg2IEBAIFN0cmluZyBtYWtlUkZDMjgyMkRh
dGVTdHJpbmcodW5zaWduZWQgZGF5T2ZXZWVrLCB1bnNpZ25lZCBkYXksIHVuc2lnbmVkIG1vbnRo
LCB1CiAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKIH0KIAorc3RhdGljIHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPFVDaGFyLCAzMj4+IHZhbGlkYXRlVGltZVpvbmUoU3RyaW5nVmll
dyB0aW1lWm9uZSkKK3sKKyAgICBWZWN0b3I8VUNoYXIsIDMyPiBidWZmZXIodGltZVpvbmUubGVu
Z3RoKCkpOworICAgIHRpbWVab25lLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGJ1ZmZlci5k
YXRhKCkpOworCisgICAgVmVjdG9yPFVDaGFyLCAzMj4gY2Fub25pY2FsQnVmZmVyOworICAgIGF1
dG8gc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVjYWxfZ2V0Q2Fub25pY2Fs
VGltZVpvbmVJRCwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSwgY2Fub25pY2FsQnVmZmVy
LCBudWxscHRyKTsKKyAgICBpZiAoIVVfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgIHJldHVybiBXVEZNb3ZlKGNhbm9uaWNhbEJ1ZmZlcik7Cit9CisK
K2Jvb2wgaXNUaW1lWm9uZVZhbGlkKFN0cmluZ1ZpZXcgdGltZVpvbmUpCit7CisgICAgcmV0dXJu
IHZhbGlkYXRlVGltZVpvbmUodGltZVpvbmUpLmhhc192YWx1ZSgpOworfQorCitib29sIHNldFRp
bWVab25lT3ZlcnJpZGUoU3RyaW5nVmlldyB0aW1lWm9uZSkKK3sKKyAgICBpZiAodGltZVpvbmUu
aXNFbXB0eSgpKSB7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBpbm5lclRpbWVab25lT3ZlcnJp
ZGVMb2NrIH07CisgICAgICAgIGlubmVyVGltZVpvbmVPdmVycmlkZSgpID0gVGltZVpvbmVPdmVy
cmlkZSgpOworI2lmICFPUyhXSU5ET1dTKQorICAgICAgICBpZiAodW5zZXRlbnYoIlRaIikpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorCisgICAgYXV0byBjYW5vbmljYWxCdWZmZXIgPSB2YWxpZGF0ZVRpbWVab25lKHRpbWVa
b25lKTsKKyAgICBpZiAoIWNhbm9uaWNhbEJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgYXV0byBjYW5vbmljYWxMZW5ndGggPSBjYW5vbmljYWxCdWZmZXItPnNpemUoKTsKKyAg
ICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICBhdXRvIGNhbGVuZGFyID0g
c3RkOjp1bmlxdWVfcHRyPFVDYWxlbmRhciwgSUNVRGVsZXRlcjx1Y2FsX2Nsb3NlPj4odWNhbF9v
cGVuKGNhbm9uaWNhbEJ1ZmZlci0+ZGF0YSgpLCBjYW5vbmljYWxMZW5ndGgsIG51bGxwdHIsIFVD
QUxfVFJBRElUSU9OQUwsICZzdGF0dXMpKTsKKyAgICBpZiAoIVVfU1VDQ0VTUyhzdGF0dXMpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyNpZiBPUyhXSU5ET1dTKQorICAgIFZlY3RvcjxVQ2hh
ciwgMzI+IGRpc3BsYXlOYW1lU3RhbmRhcmRCdWZmZXI7CisgICAgc3RhdHVzID0gY2FsbEJ1ZmZl
clByb2R1Y2luZ0Z1bmN0aW9uKHVjYWxfZ2V0VGltZVpvbmVEaXNwbGF5TmFtZSwgY2FsZW5kYXIu
Z2V0KCksIFVDQUxfU1RBTkRBUkQsIGRlZmF1bHRMYW5ndWFnZSgpLnV0ZjgoKS5kYXRhKCksIGRp
c3BsYXlOYW1lU3RhbmRhcmRCdWZmZXIpOworICAgIGlmICghVV9TVUNDRVNTKHN0YXR1cykpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBWZWN0b3I8VUNoYXIsIDMyPiBkaXNwbGF5TmFtZURT
VEJ1ZmZlcjsKKyAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odWNhbF9n
ZXRUaW1lWm9uZURpc3BsYXlOYW1lLCBjYWxlbmRhci5nZXQoKSwgVUNBTF9EU1QsIGRlZmF1bHRM
YW5ndWFnZSgpLnV0ZjgoKS5kYXRhKCksIGRpc3BsYXlOYW1lRFNUQnVmZmVyKTsKKyAgICBpZiAo
IVVfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZWxzZQorICAgIC8v
IFRaIGlzIHVzZWQgYnkgc3RyZnRpbWUgdG8gZGV0ZXJtaW5lIGN1cnJlbnQgdGltZXpvbmUuCisg
ICAgaWYgKHNldGVudigiVFoiLCB0aW1lWm9uZS51dGY4KCkuZGF0YSgpLCAxKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIHR6c2V0KCk7CisjZW5kaWYKKyAgICB7CisgICAgICAgIExvY2tl
ciBsb2NrZXIgeyBpbm5lclRpbWVab25lT3ZlcnJpZGVMb2NrIH07CisgICAgICAgIGF1dG8mIG92
ZXJyaWRlID0gaW5uZXJUaW1lWm9uZU92ZXJyaWRlKCk7CisgICAgICAgIG92ZXJyaWRlLmNhbGVu
ZGFyID0gV1RGTW92ZShjYWxlbmRhcik7CisgICAgICAgIG92ZXJyaWRlLmlkID0gV1RGTW92ZSgq
Y2Fub25pY2FsQnVmZmVyKTsKKyNpZiBPUyhXSU5ET1dTKQorICAgICAgICBvdmVycmlkZS5kaXNw
bGF5TmFtZVN0YW5kYXJkID0gV1RGTW92ZShkaXNwbGF5TmFtZVN0YW5kYXJkQnVmZmVyKTsKKyAg
ICAgICAgb3ZlcnJpZGUuZGlzcGxheU5hbWVEU1QgPSBXVEZNb3ZlKGRpc3BsYXlOYW1lRFNUQnVm
ZmVyKTsKKyNlbmRpZgorICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworI2lmIE9TKFdJTkRP
V1MpCit2b2lkIGdldFRpbWVab25lT3ZlcnJpZGUoVmVjdG9yPFVDaGFyLCAzMj4mIHRpbWVab25l
SUQsIFN0cmluZyYgc3RhbmRhcmREaXNwbGF5TmFtZSwgU3RyaW5nJiBkc3REaXNwbGF5TmFtZSkK
KyNlbHNlCit2b2lkIGdldFRpbWVab25lT3ZlcnJpZGUoVmVjdG9yPFVDaGFyLCAzMj4mIHRpbWVa
b25lSUQpCisjZW5kaWYKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgaW5uZXJUaW1lWm9uZU92ZXJy
aWRlTG9jayB9OworICAgIGF1dG8mIG92ZXJyaWRlID0gaW5uZXJUaW1lWm9uZU92ZXJyaWRlKCk7
CisgICAgdGltZVpvbmVJRCA9IG92ZXJyaWRlLmlkOworI2lmIE9TKFdJTkRPV1MpCisgICAgc3Rh
bmRhcmREaXNwbGF5TmFtZSA9IFN0cmluZyhvdmVycmlkZS5kaXNwbGF5TmFtZVN0YW5kYXJkKTsK
KyAgICBkc3REaXNwbGF5TmFtZSA9IFN0cmluZyhvdmVycmlkZS5kaXNwbGF5TmFtZURTVCk7Cisj
ZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9EYXRlTWF0aC5oIGIvU291cmNlL1dURi93dGYvRGF0ZU1hdGguaAppbmRleCAxNzRlNmMwN2I2
ZjVjZjRiY2YwNDY5ZjIwZjhjZjAyMWJlZDI1MTAzLi5lMGFkYTVlYjZlZmUwZDlmMGU3YmFmMDUx
MzIwMjFiMWYzZTc0ZGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmgKQEAgLTM5MywzMSArMzkzLDQyIEBAIGlubGlu
ZSBkb3VibGUgdGltZVRvTVMoZG91YmxlIGhvdXIsIGRvdWJsZSBtaW4sIGRvdWJsZSBzZWMsIGRv
dWJsZSBtcykKICAgICByZXR1cm4gKCgoaG91ciAqIFdURjo6bWludXRlc1BlckhvdXIgKyBtaW4p
ICogV1RGOjpzZWNvbmRzUGVyTWludXRlICsgc2VjKSAqIFdURjo6bXNQZXJTZWNvbmQgKyBtcyk7
CiB9CiAKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGlzVGltZVpvbmVWYWxpZChTdHJpbmdWaWV3
KTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIHNldFRpbWVab25lT3ZlcnJpZGUoU3RyaW5nVmll
dyk7CisjaWYgT1MoV0lORE9XUykKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIGdldFRpbWVab25l
T3ZlcnJpZGUoVmVjdG9yPFVDaGFyLCAzMj4mIHRpbWVab25lSUQsIFN0cmluZyYgc3RhbmRhcmRE
aXNwbGF5TmFtZSwgU3RyaW5nJiBkc3REaXNwbGF5TmFtZSk7CisjZWxzZQorV1RGX0VYUE9SVF9Q
UklWQVRFIHZvaWQgZ2V0VGltZVpvbmVPdmVycmlkZShWZWN0b3I8VUNoYXIsIDMyPiYgdGltZVpv
bmVJRCk7CisjZW5kaWYKKwogLy8gUmV0dXJucyBjb21iaW5lZCBvZmZzZXQgaW4gbWlsbGlzZWNv
bmQgKFVUQyArIERTVCkuCiBXVEZfRVhQT1JUX1BSSVZBVEUgTG9jYWxUaW1lT2Zmc2V0IGNhbGN1
bGF0ZUxvY2FsVGltZU9mZnNldChkb3VibGUgdXRjSW5NaWxsaXNlY29uZHMsIFRpbWVUeXBlID0g
VVRDVGltZSk7CiAKIH0gLy8gbmFtZXNwYWNlIFdURgogCi11c2luZyBXVEY6OmlzTGVhcFllYXI7
Cit1c2luZyBXVEY6OmNhbGN1bGF0ZUxvY2FsVGltZU9mZnNldDsKIHVzaW5nIFdURjo6ZGF0ZVRv
RGF5c0Zyb20xOTcwOwogdXNpbmcgV1RGOjpkYXlJbk1vbnRoRnJvbURheUluWWVhcjsKIHVzaW5n
IFdURjo6ZGF5SW5ZZWFyOwordXNpbmcgV1RGOjpnZXRUaW1lWm9uZU92ZXJyaWRlOwordXNpbmcg
V1RGOjppc0xlYXBZZWFyOwordXNpbmcgV1RGOjppc1RpbWVab25lVmFsaWQ7Cit1c2luZyBXVEY6
OmpzQ3VycmVudFRpbWU7Cit1c2luZyBXVEY6OkxvY2FsVGltZU9mZnNldDsKK3VzaW5nIFdURjo6
bWFrZVJGQzI4MjJEYXRlU3RyaW5nOwogdXNpbmcgV1RGOjptaW51dGVzUGVySG91cjsKIHVzaW5n
IFdURjo6bW9udGhGcm9tRGF5SW5ZZWFyOwogdXNpbmcgV1RGOjptc1BlckRheTsKIHVzaW5nIFdU
Rjo6bXNQZXJIb3VyOwogdXNpbmcgV1RGOjptc1Blck1pbnV0ZTsKIHVzaW5nIFdURjo6bXNQZXJT
ZWNvbmQ7Ci11c2luZyBXVEY6Om1zVG9ZZWFyOwogdXNpbmcgV1RGOjptc1RvRGF5czsKLXVzaW5n
IFdURjo6bXNUb01pbnV0ZXM7CiB1c2luZyBXVEY6Om1zVG9Ib3VyczsKK3VzaW5nIFdURjo6bXNU
b01pbnV0ZXM7Cit1c2luZyBXVEY6Om1zVG9ZZWFyOwordXNpbmcgV1RGOjpwYXJzZURhdGVGcm9t
TnVsbFRlcm1pbmF0ZWRDaGFyYWN0ZXJzOwogdXNpbmcgV1RGOjpzZWNvbmRzUGVyRGF5OwogdXNp
bmcgV1RGOjpzZWNvbmRzUGVyTWludXRlOwotdXNpbmcgV1RGOjpwYXJzZURhdGVGcm9tTnVsbFRl
cm1pbmF0ZWRDaGFyYWN0ZXJzOwotdXNpbmcgV1RGOjp0aW1lVG9NUzsKLXVzaW5nIFdURjo6bWFr
ZVJGQzI4MjJEYXRlU3RyaW5nOwotdXNpbmcgV1RGOjpMb2NhbFRpbWVPZmZzZXQ7Ci11c2luZyBX
VEY6OmNhbGN1bGF0ZUxvY2FsVGltZU9mZnNldDsKK3VzaW5nIFdURjo6c2V0VGltZVpvbmVPdmVy
cmlkZTsKIHVzaW5nIFdURjo6dGltZUNsaXA7Ci11c2luZyBXVEY6OmpzQ3VycmVudFRpbWU7Cit1
c2luZyBXVEY6OnRpbWVUb01TOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAppbmRleCA1MTQyZTJjNjA5NTMxZTVhZjgwOWM0
NmRhNmZjNDI2NTBjZTRkNjlhLi45Y2E4MTExYTIwNDRlNWE2YjExOTcxN2Q1YTRkOTc3YjVkODgx
NDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmNwcApAQCAtMjE0LDYgKzIxNCw4IEBAIHZvaWQgV2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICNpZiBV
U0UoQVRTUEkpCiAgICAgZW5jb2RlciA8PCBhY2Nlc3NpYmlsaXR5QnVzQWRkcmVzczsKICNlbmRp
ZgorCisgICAgZW5jb2RlciA8PCB0aW1lWm9uZU92ZXJyaWRlOwogfQogCiBib29sIFdlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFdlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCkBAIC01NzEsNiArNTczLDEyIEBA
IGJvb2wgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYg
ZGVjb2RlciwgV2ViUHJvY2Vzc0NyZWF0CiAgICAgcGFyYW1ldGVycy5hY2Nlc3NpYmlsaXR5QnVz
QWRkcmVzcyA9IFdURk1vdmUoKmFjY2Vzc2liaWxpdHlCdXNBZGRyZXNzKTsKICNlbmRpZgogCisg
ICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHRpbWVab25lT3ZlcnJpZGU7CisgICAgZGVjb2RlciA+
PiB0aW1lWm9uZU92ZXJyaWRlOworICAgIGlmICghdGltZVpvbmVPdmVycmlkZSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIHBhcmFtZXRlcnMudGltZVpvbmVPdmVycmlkZSA9IFdURk1vdmUo
KnRpbWVab25lT3ZlcnJpZGUpOworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCA4
ZDM3MmNiNjYxOWMyODQ5YmQ0NjFmMjQzYTUxYTg2Nzk0OGQ5NzIzLi4yOWRhMjNkODNlNTYwMjhm
YmIwMDlkOTc1ZTUwZmY5OTkyOTc0NGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC0yNTUsNiArMjU1LDggQEAgc3Ry
dWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewogI2lmIFVTRShBVFNQSSkKICAgICBT
dHJpbmcgYWNjZXNzaWJpbGl0eUJ1c0FkZHJlc3M7CiAjZW5kaWYKKworICAgIFN0cmluZyB0aW1l
Wm9uZU92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24uY3BwCmluZGV4IGNmZDljMzk4MTMzN2M3ZGQwMmM2MjNjZThiYTY4NmVhMzZiYmZmYjkuLmEx
NmZlMTNjMDg1NzYxOTRlYzhjNDNlOWRhZTYyYTIwNTY2OTA0YmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24uY3BwCkBAIC04NCw2ICs4NCw3IEBAIFJlZjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IFBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y29weSgpCiAjaWYgSEFWRShBVURJVF9UT0tFTikKICAg
ICBjb3B5LT5tX3ByZXNlbnRpbmdBcHBsaWNhdGlvblByb2Nlc3NUb2tlbiA9IHRoaXMtPm1fcHJl
c2VudGluZ0FwcGxpY2F0aW9uUHJvY2Vzc1Rva2VuOwogI2VuZGlmCisgICAgY29weS0+bV90aW1l
Wm9uZU92ZXJyaWRlID0gdGhpcy0+bV90aW1lWm9uZU92ZXJyaWRlOwogICAgIHJldHVybiBjb3B5
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgKaW5kZXggY2M2NDJjNTFiYTY2M2U4NDNkZjU0ZDE0Y2Zj
Y2I2ZDRlZjgxNzI2Yy4uYzc3OWQwNDU1MDBiYjJhYzllZmU1MzVjMmMzYzY0YjY0YTZlMTIxMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24uaApAQCAtMTY0LDYgKzE2NCw5IEBAIHB1YmxpYzoKICAgICBjb25z
dCBzdGQ6Om9wdGlvbmFsPE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6Q29uZmlndXJhdGlvbj4mIG1l
bW9yeVByZXNzdXJlSGFuZGxlckNvbmZpZ3VyYXRpb24oKSBjb25zdCB7IHJldHVybiBtX21lbW9y
eVByZXNzdXJlSGFuZGxlckNvbmZpZ3VyYXRpb247IH0KICNlbmRpZgogCisgICAgdm9pZCBzZXRU
aW1lWm9uZU92ZXJyaWRlKGNvbnN0IFdURjo6U3RyaW5nJiB0aW1lWm9uZU92ZXJyaWRlKSB7IG1f
dGltZVpvbmVPdmVycmlkZSA9IHRpbWVab25lT3ZlcnJpZGU7IH0KKyAgICBjb25zdCBXVEY6OlN0
cmluZyYgdGltZVpvbmVPdmVycmlkZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZVpvbmVPdmVycmlk
ZTsgfQorCiBwcml2YXRlOgogICAgIFdURjo6U3RyaW5nIG1faW5qZWN0ZWRCdW5kbGVQYXRoOwog
ICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gbV9jdXN0b21DbGFzc2VzRm9yUGFyYW1ldGVyQ29kZXI7
CkBAIC0yMDYsNiArMjA5LDcgQEAgcHJpdmF0ZToKICNpZiBIQVZFKEFVRElUX1RPS0VOKQogICAg
IHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gbV9wcmVzZW50aW5nQXBwbGljYXRpb25Qcm9j
ZXNzVG9rZW47CiAjZW5kaWYKKyAgICBXVEY6OlN0cmluZyBtX3RpbWVab25lT3ZlcnJpZGU7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5jcHAKaW5kZXggNmRlZTI4
YmU1ZjY2ZjhlMGFkOTEwNTBiYzU1OTg5ZDM3YWU1Mjk0MS4uNjNlMDZhN2RhMmRjNTIwYWY1ZTM0
YWMzZmU2MmY1MjVjODQxZmU5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5jcHAKQEAgLTIyMiwzICsy
MjIsMTMgQEAgdm9pZCBXS0NvbnRleHRDb25maWd1cmF0aW9uU2V0U2hvdWxkQ29uZmlndXJlSlND
Rm9yVGVzdGluZyhXS0NvbnRleHRDb25maWd1cmF0aW8KIHsKICAgICB0b0ltcGwoY29uZmlndXJh
dGlvbiktPnNldFNob3VsZENvbmZpZ3VyZUpTQ0ZvclRlc3RpbmcodmFsdWUpOwogfQorCitXS1N0
cmluZ1JlZiBXS0NvbnRleHRDb25maWd1cmF0aW9uQ29weVRpbWVab25lT3ZlcnJpZGUoV0tDb250
ZXh0Q29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uKQoreworICAgIHJldHVybiB0b0NvcGll
ZEFQSSh0b0ltcGwoY29uZmlndXJhdGlvbiktPnRpbWVab25lT3ZlcnJpZGUoKSk7Cit9CisKK3Zv
aWQgV0tDb250ZXh0Q29uZmlndXJhdGlvblNldFRpbWVab25lT3ZlcnJpZGUoV0tDb250ZXh0Q29u
ZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uLCBXS1N0cmluZ1JlZiB0aW1lWm9uZU92ZXJyaWRl
KQoreworICAgIHRvSW1wbChjb25maWd1cmF0aW9uKS0+c2V0VGltZVpvbmVPdmVycmlkZSh0b0lt
cGwodGltZVpvbmVPdmVycmlkZSktPnN0cmluZygpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuaAppbmRl
eCAwZDFiMTY0NjAzNGIxNDc3YjgzM2FlYzZjMjY0M2QyMWY4MDExNDk5Li5hOTEyMWI4YWRiNTIz
NWUzZTc5MzczNTY5ZGZjYTQ1Mjg4ZmFmZWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRDb25maWd1cmF0aW9uUmVmLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5oCkBAIC05NSw2
ICs5NSw5IEBAIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dENvbmZpZ3VyYXRpb25TZXREaXNrQ2Fj
aGVTaXplT3ZlcnJpZGUoV0tDb250ZXh0Q29uZmlndXJhCiAgICAgCiBXS19FWFBPUlQgdm9pZCBX
S0NvbnRleHRDb25maWd1cmF0aW9uU2V0U2hvdWxkQ29uZmlndXJlSlNDRm9yVGVzdGluZyhXS0Nv
bnRleHRDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIGJvb2wgdmFsdWUpOwogCitXS19F
WFBPUlQgV0tTdHJpbmdSZWYgV0tDb250ZXh0Q29uZmlndXJhdGlvbkNvcHlUaW1lWm9uZU92ZXJy
aWRlKFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbik7CitXS19FWFBPUlQg
dm9pZCBXS0NvbnRleHRDb25maWd1cmF0aW9uU2V0VGltZVpvbmVPdmVycmlkZShXS0NvbnRleHRD
b25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIFdLU3RyaW5nUmVmIHRpbWVab25lT3ZlcnJp
ZGUpOworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi5oCmluZGV4IDc4NDk4M2MxMDNiMjljYTNjNzc0YzYyMDQ5MjY1OTRlYmM4ZGZlZTQu
LmE0YjZkNzU3ZTA2NjMzNGFmOThkZWMyMThhYzUyMjYxYjlkNWNjZDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLmgKQEAgLTI0LDYgKzI0LDcgQEAKICAqLwogCiAjaW1wb3J0IDxGb3Vu
ZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPFdlYktpdC9XS0Jhc2UuaD4KICNpbXBvcnQg
PFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KIAogTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KQEAgLTc3
LDYgKzc4LDggQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKDEwLjEwKSwgaW9zKDguMCkpCiAK
IEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGNvbmZpZ3VyZUpTQ0ZvclRlc3RpbmcgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcygxMC4xNS40KSwgaW9zKDEzLjQpKTsKIAorQHByb3BlcnR5IChub25h
dG9taWMsIG51bGxhYmxlLCBjb3B5KSBOU1N0cmluZyAqdGltZVpvbmVPdmVycmlkZSBXS19BUElf
QVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiBAZW5kCiAK
IE5TX0FTU1VNRV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubW0KaW5k
ZXggOTJiNTA5YWQ0ODJmNGQzYjVhNjlhMDBiMGZkMjNjNGQwYWFiMTZhZS4uY2I3NDQ1YjdmZTgx
NGZlZmY1MGExNGI4ZGQyNWY1YTMyZjcwYTE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLm1tCkBAIC00MDMsNiArNDAzLDE2IEBACiAgICAgX3Byb2Nlc3NQb29sQ29uZmlndXJhdGlv
bi0+c2V0U2hvdWxkQ29uZmlndXJlSlNDRm9yVGVzdGluZyh2YWx1ZSk7CiB9CiAKKy0gKE5TU3Ry
aW5nICopdGltZVpvbmVPdmVycmlkZQoreworICAgIHJldHVybiBfcHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLT50aW1lWm9uZU92ZXJyaWRlKCk7Cit9CisKKy0gKHZvaWQpc2V0VGltZVpvbmVPdmVy
cmlkZTooTlNTdHJpbmcgKil0aW1lWm9uZQoreworICAgIF9wcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24tPnNldFRpbWVab25lT3ZlcnJpZGUodGltZVpvbmUpOworfQorCiAjcHJhZ21hIG1hcmsgV0tP
YmplY3QgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24KIAogLSAoQVBJOjpPYmplY3QmKV9hcGlPYmpl
Y3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdl
YkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
Q29udGV4dC5jcHAKaW5kZXggOWI2YjU0MWRmNDVjOTI1ZDIyMGY3Mjg4NDQ2YzM3ZmNmNGQ3MDhi
YS4uNzhkMzgyOTBmMmJmM2MyYzk5ZmM1NGUyMjg1ZDAzNjJmZTY4MjNjZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAK
QEAgLTY1LDYgKzY1LDcgQEAKICNpbmNsdWRlIDxsaWJpbnRsLmg+CiAjaW5jbHVkZSA8bWVtb3J5
PgogI2luY2x1ZGUgPHBhbC9IeXN0ZXJlc2lzQWN0aXZpdHkuaD4KKyNpbmNsdWRlIDx3dGYvRGF0
ZU1hdGguaD4KICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTEyNyw2ICsxMjgsNyBAQCBlbnVt
IHsKICNlbmRpZgogI2VuZGlmCiAgICAgUFJPUF9NRU1PUllfUFJFU1NVUkVfU0VUVElOR1MsCisg
ICAgUFJPUF9USU1FX1pPTkVfT1ZFUlJJREUsCiAgICAgTl9QUk9QRVJUSUVTLAogfTsKIApAQCAt
MjQ1LDYgKzI0Nyw4IEBAIHN0cnVjdCBfV2ViS2l0V2ViQ29udGV4dFByaXZhdGUgewogICAgIFBB
TDo6SHlzdGVyZXNpc0FjdGl2aXR5IGRuc1ByZWZldGNoSHlzdGVyZXJpczsKIAogICAgIFdlYktp
dE1lbW9yeVByZXNzdXJlU2V0dGluZ3MqIG1lbW9yeVByZXNzdXJlU2V0dGluZ3M7CisKKyAgICBT
dHJpbmcgdGltZVpvbmVPdmVycmlkZTsKIH07CiAKIHN0YXRpYyBndWludCBzaWduYWxzW0xBU1Rf
U0lHTkFMXSA9IHsgMCwgfTsKQEAgLTM1MCw2ICszNTQsOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRX
ZWJDb250ZXh0R2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSUQsIEdWYWx1
ZSogdgogICAgICAgICBicmVhazsKICNlbmRpZgogI2VuZGlmCisgICAgY2FzZSBQUk9QX1RJTUVf
Wk9ORV9PVkVSUklERToKKyAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZhbHVlLCB3ZWJraXRf
d2ViX2NvbnRleHRfZ2V0X3RpbWVfem9uZV9vdmVycmlkZShjb250ZXh0KSk7CisgICAgICAgIGJy
ZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJU
WV9JRChvYmplY3QsIHByb3BJRCwgcGFyYW1TcGVjKTsKICAgICB9CkBAIC0zODUsNiArMzkyLDEx
IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYkNvbnRleHRTZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmpl
Y3QsIGd1aW50IHByb3BJRCwgY29uc3QgR1ZhCiAgICAgICAgIGNvbnRleHQtPnByaXYtPm1lbW9y
eVByZXNzdXJlU2V0dGluZ3MgPSBzZXR0aW5ncyA/IHdlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0
dGluZ3NfY29weShzdGF0aWNfY2FzdDxXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzKj4oc2V0
dGluZ3MpKSA6IG51bGxwdHI7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBjYXNlIFBST1Bf
VElNRV9aT05FX09WRVJSSURFOiB7CisgICAgICAgIGlmIChjb25zdCBhdXRvKiBvdmVycmlkZSA9
IGdfdmFsdWVfZ2V0X3N0cmluZyh2YWx1ZSkpCisgICAgICAgICAgICB3ZWJraXRfd2ViX2NvbnRl
eHRfc2V0X3RpbWVfem9uZV9vdmVycmlkZShjb250ZXh0LCBvdmVycmlkZSk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KICAgICBkZWZhdWx0OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURf
UFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wSUQsIHBhcmFtU3BlYyk7CiAgICAgfQpAQCAtNDEzLDYg
KzQyNSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYkNvbnRleHRDb25zdHJ1Y3RlZChHT2JqZWN0
KiBvYmplY3QpCiAgICAgICAgIC8vIE9uY2UgdGhlIHNldHRpbmdzIGhhdmUgYmVlbiBwYXNzZWQg
dG8gdGhlIFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiwgd2UgZG9uJ3QgbmVlZCB0aGVtIGFueW1v
cmUgc28gd2UgY2FuIGZyZWUgdGhlbS4KICAgICAgICAgZ19jbGVhcl9wb2ludGVyKCZwcml2LT5t
ZW1vcnlQcmVzc3VyZVNldHRpbmdzLCB3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2Zy
ZWUpOwogICAgIH0KKyAgICBjb25maWd1cmF0aW9uLnNldFRpbWVab25lT3ZlcnJpZGUocHJpdi0+
dGltZVpvbmVPdmVycmlkZSk7CiAKICAgICBpZiAoIXByaXYtPndlYnNpdGVEYXRhTWFuYWdlcikK
ICAgICAgICAgcHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyID0gYWRvcHRHUmVmKHdlYmtpdF93ZWJz
aXRlX2RhdGFfbWFuYWdlcl9uZXcoImxvY2FsLXN0b3JhZ2UtZGlyZWN0b3J5IiwgcHJpdi0+bG9j
YWxTdG9yYWdlRGlyZWN0b3J5LmRhdGEoKSwgbnVsbHB0cikpOwpAQCAtNTcyLDYgKzU4NSwyOCBA
QCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfY2xhc3NfaW5pdChXZWJLaXRXZWJDb250
ZXh0Q2xhc3MqIHdlYkNvbnRleHRDbGFzcwogICAgICAgICAgICAgV0VCS0lUX1RZUEVfTUVNT1JZ
X1BSRVNTVVJFX1NFVFRJTkdTLAogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+
KFdFQktJVF9QQVJBTV9XUklUQUJMRSB8IEdfUEFSQU1fQ09OU1RSVUNUX09OTFkpKTsKIAorICAg
IC8qKgorICAgICAqIFdlYktpdFdlYkNvbnRleHQ6dGltZS16b25lLW92ZXJyaWRlOgorICAgICAq
CisgICAgICogVGhlIHRpbWV6b25lIG92ZXJyaWRlIGZvciB0aGlzIHdlYiBjb250ZXh0LiBTZXR0
aW5nIHRoaXMgcHJvcGVydHkgcHJvdmlkZXMgYSBiZXR0ZXIKKyAgICAgKiBhbHRlcm5hdGl2ZSB0
byBjb25maWd1cmUgdGhlIHRpbWV6b25lIGluZm9ybWF0aW9uIGZvciBhbGwgd2Vidmlld3MgbWFu
YWdlZCBieSB0aGUgV2ViQ29udGV4dC4KKyAgICAgKiBUaGUgb3RoZXIsIGxlc3Mgb3B0aW1hbCwg
YXBwcm9hY2ggaXMgdG8gZ2xvYmFsbHkgc2V0IHRoZSBUWiBlbnZpcm9ubWVudCB2YXJpYWJsZSBp
biB0aGUKKyAgICAgKiBwcm9jZXNzIGJlZm9yZSBjcmVhdGluZyB0aGUgY29udGV4dC4gSG93ZXZl
ciB0aGlzIGFwcHJvYWNoIG1pZ2h0IG5vdCBiZSB2ZXJ5IGNvbnZlbmllbnQgYW5kCisgICAgICog
Y2FuIGhhdmUgc2lkZS1lZmZlY3RzIGluIHlvdXIgYXBwbGljYXRpb24uCisgICAgICoKKyAgICAg
KiBUaGUgZXhwZWN0ZWQgdmFsdWVzIGZvciB0aGlzIHByb3BlcnR5IGFyZSBkZWZpbmVkIGluIHRo
ZSBJQU5BIHRpbWV6b25lIGRhdGFiYXNlLiBTZWUgdGhpcworICAgICAqIHdpa2lwZWRpYSBwYWdl
IGZvciBpbnN0YW5jZSwgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGlzdF9vZl90el9k
YXRhYmFzZV90aW1lX3pvbmVzLgorICAgICAqCisgICAgICogU2luY2U6IDIuMzgKKyAgICAgKi8K
KyAgICBzT2JqUHJvcGVydGllc1tQUk9QX1RJTUVfWk9ORV9PVkVSUklERV0gPQorICAgICAgICBn
X3BhcmFtX3NwZWNfc3RyaW5nKAorICAgICAgICAgICAgInRpbWUtem9uZS1vdmVycmlkZSIsCisg
ICAgICAgICAgICBfKCJUaW1lIFpvbmUgT3ZlcnJpZGUiKSwKKyAgICAgICAgICAgIF8oIlRoZSB0
aW1lIHpvbmUgdG8gdXNlIGluc3RlYWQgb2YgdGhlIHN5c3RlbSBvbmUiKSwKKyAgICAgICAgICAg
IG51bGxwdHIsCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxHUGFyYW1GbGFncz4oV0VCS0lUX1BB
UkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RSVUNUX09OTFkpKTsKKwogICAgIGdfb2JqZWN0
X2NsYXNzX2luc3RhbGxfcHJvcGVydGllcyhnT2JqZWN0Q2xhc3MsIE5fUFJPUEVSVElFUywgc09i
alByb3BlcnRpZXMpOwogCiAgICAgLyoqCkBAIC0xODM1LDYgKzE4NzAsMzkgQEAgZ2Jvb2xlYW4g
d2Via2l0X3dlYl9jb250ZXh0X2dldF91c2Vfc3lzdGVtX2FwcGVhcmFuY2VfZm9yX3Njcm9sbGJh
cnMoV2ViS2l0V2ViQ28KIH0KICNlbmRpZgogCisvKioKKyAqIHdlYmtpdF93ZWJfY29udGV4dF9z
ZXRfdGltZV96b25lX292ZXJyaWRlOgorICogQGNvbnRleHQ6IGEgI1dlYktpdFdlYkNvbnRleHQK
KyAqIEB0aW1lX3pvbmVfb3ZlcnJpZGU6IHZhbHVlIHRvIHNldAorICoKKyAqIFNldCB0aGUgI1dl
YktpdFdlYkNvbnRleHQ6dGltZS16b25lLW92ZXJyaWRlIHByb3BlcnR5LiBSZWZlciB0byB0aGUg
SUFOQSBkYXRhYmFzZSBmb3IgdmFsaWQKKyAqIHNwZWNpZmllcnMsIGh0dHBzOi8vZW4ud2lraXBl
ZGlhLm9yZy93aWtpL0xpc3Rfb2ZfdHpfZGF0YWJhc2VfdGltZV96b25lcworICoKKyAqIFNpbmNl
OiAyLjM4CisgKi8KK3ZvaWQgd2Via2l0X3dlYl9jb250ZXh0X3NldF90aW1lX3pvbmVfb3ZlcnJp
ZGUoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCwgY29uc3QgZ2NoYXIqIHRpbWVab25lT3ZlcnJp
ZGUpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX0NPTlRFWFQoY29udGV4
dCkpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoaXNUaW1lWm9uZVZhbGlkKHRpbWVab25lT3ZlcnJp
ZGUpKTsKKworICAgIGNvbnRleHQtPnByaXYtPnRpbWVab25lT3ZlcnJpZGUgPSBTdHJpbmc6OmZy
b21VVEY4KHRpbWVab25lT3ZlcnJpZGUpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfY29udGV4
dF9nZXRfdGltZV96b25lX292ZXJyaWRlOgorICogQGNvbnRleHQ6IGEgI1dlYktpdFdlYkNvbnRl
eHQKKyAqCisgKiBHZXQgdGhlICNXZWJLaXRXZWJDb250ZXh0OnRpbWUtem9uZS1vdmVycmlkZSBw
cm9wZXJ0eS4KKyAqCisgKiBTaW5jZTogMi4zOAorICovCitjb25zdCBnY2hhciogd2Via2l0X3dl
Yl9jb250ZXh0X2dldF90aW1lX3pvbmVfb3ZlcnJpZGUoV2ViS2l0V2ViQ29udGV4dCogY29udGV4
dCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0NPTlRFWFQoY29u
dGV4dCksIG51bGxwdHIpOworCisgICAgcmV0dXJuIGNvbnRleHQtPnByaXYtPnRpbWVab25lT3Zl
cnJpZGUudXRmOCgpLmRhdGEoKTsKK30KKwogdm9pZCB3ZWJraXRXZWJDb250ZXh0SW5pdGlhbGl6
ZU5vdGlmaWNhdGlvblBlcm1pc3Npb25zKFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQpCiB7CiAg
ICAgZ19zaWduYWxfZW1pdChjb250ZXh0LCBzaWduYWxzW0lOSVRJQUxJWkVfTk9USUZJQ0FUSU9O
X1BFUk1JU1NJT05TXSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViQ29udGV4dC5oCmluZGV4IGJkZDkxMjU1Y2NkODJlYTU3NzQyMjI3ODNiNTk0
NzZhMzFiY2ZiMmUuLjk3YTRkNThmMjY3Nzc0M2FjOGE5Yjk2ZGQ0ZTBiYTNkOGEwNGQyYjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4
dC5oCkBAIC0zMDIsNiArMzAyLDEzIEBAIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfdXNlX3N5c3Rl
bV9hcHBlYXJhbmNlX2Zvcl9zY3JvbGxiYXJzIChXZWJLaXRXZWJDb250ZXh0CiBXRUJLSVRfQVBJ
IGdib29sZWFuCiB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3VzZV9zeXN0ZW1fYXBwZWFyYW5jZV9m
b3Jfc2Nyb2xsYmFycyAoV2ViS2l0V2ViQ29udGV4dCAgICAgICpjb250ZXh0KTsKIAorV0VCS0lU
X0FQSSB2b2lkCit3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3RpbWVfem9uZV9vdmVycmlkZSAgICAg
ICAgICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICAgICAgICpjb250ZXh0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAg
ICAgICAgICAgICAgICAgICAqdGltZV96b25lX292ZXJyaWRlKTsKKworV0VCS0lUX0FQSSBjb25z
dCBnY2hhcioKK3dlYmtpdF93ZWJfY29udGV4dF9nZXRfdGltZV96b25lX292ZXJyaWRlICAgICAg
ICAgICAoV2ViS2l0V2ViQ29udGV4dCAgICAgICAgICAgICAgKmNvbnRleHQpOworCiBHX0VORF9E
RUNMUwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93
cGUvV2ViS2l0V2ViQ29udGV4dC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9X
ZWJLaXRXZWJDb250ZXh0LmgKaW5kZXggNjg0MWMwNzlhYTRiNjFkODljMDhiMWE5NjlmOTEzN2Q5
YjhhMDQzNC4uZWE1NWY4NzZjMzFlYmQwYmViZWI0YmJmZGNhY2M5MzdhOWM3OTdiYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJDb250ZXh0LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJDb250ZXh0LmgK
QEAgLTI5MSw2ICsyOTEsMTMgQEAgV0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRfd2ViX2NvbnRleHRf
c2VuZF9tZXNzYWdlX3RvX2FsbF9leHRlbnNpb25zICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAg
ICAgICAgICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXZWJLaXRVc2VyTWVzc2FnZSAgICAgICAgICAgICAqbWVzc2FnZSk7CiAK
K1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl9jb250ZXh0X3NldF90aW1lX3pvbmVfb3ZlcnJp
ZGUgICAgICAgICAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAgICAgICAqY29udGV4dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Z2NoYXIgICAgICAgICAgICAgICAgICAgKnRpbWVfem9uZV9vdmVycmlkZSk7CisKK1dFQktJVF9B
UEkgY29uc3QgZ2NoYXIqCit3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3RpbWVfem9uZV9vdmVycmlk
ZSAgICAgICAgICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICAgICAgICpjb250ZXh0KTsKKwog
R19FTkRfREVDTFMKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHAKaW5kZXggYmUzNjg5ZmE1YTBlYWY2ZDQ1NWQyMjVmZjgzNDJiOTA4OGFkNmMwZi4u
YWYzNzEyZmZiYzk1Y2EzNzkyMzJmZmFkNTY5MzkwOTc5MzgzMDM4ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtODc0LDYgKzg3NCw4IEBAIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OmluaXRpYWxpemVOZXdXZWJQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYg
cHJvY2VzcywgV2Vic2l0ZURhCiAKICAgICBwYXJhbWV0ZXJzLnByZXNlbnRpbmdBcHBsaWNhdGlv
blBJRCA9IG1fY29uZmlndXJhdGlvbi0+cHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKCk7CiAKKyAg
ICBwYXJhbWV0ZXJzLnRpbWVab25lT3ZlcnJpZGUgPSBtX2NvbmZpZ3VyYXRpb24tPnRpbWVab25l
T3ZlcnJpZGUoKTsKKwogICAgIC8vIEFkZCBhbnkgcGxhdGZvcm0gc3BlY2lmaWMgcGFyYW1ldGVy
cwogICAgIHBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MocHJvY2VzcywgcGFyYW1ldGVycyk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBkNzdlMDNkYjEy
N2E1YWFhZDQxMDkxNmEyZDUxNjhhNGIxMjRhNzMwLi5iNGE5MGQ2OTQyNjBlOWVkMmM1OGQzMGU4
YmFjYTJjOTQyMDRiNGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
CkBAIC0xNDIsNiArMTQyLDcgQEAKICNpbmNsdWRlIDxwYWwvTG9nZ2luZy5oPgogI2luY2x1ZGUg
PHd0Zi9BbGdvcml0aG1zLmg+CiAjaW5jbHVkZSA8d3RmL0NhbGxiYWNrQWdncmVnYXRvci5oPgor
I2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgogI2luY2x1ZGUgPHd0Zi9MYW5ndWFnZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4K
QEAgLTQ5OCw2ICs0OTksOSBAQCB2b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNz
KFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogCiAgICAgc2V0Q2Fj
aGVNb2RlbChwYXJhbWV0ZXJzLmNhY2hlTW9kZWwpOwogCisgICAgaWYgKCFwYXJhbWV0ZXJzLnRp
bWVab25lT3ZlcnJpZGUuaXNFbXB0eSgpKQorICAgICAgICBzZXRUaW1lWm9uZU92ZXJyaWRlKHBh
cmFtZXRlcnMudGltZVpvbmVPdmVycmlkZSk7CisKICAgICBpZiAoIXBhcmFtZXRlcnMub3ZlcnJp
ZGVMYW5ndWFnZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIExPR19XSVRIX1NUUkVBTShMYW5ndWFn
ZSwgc3RyZWFtIDw8ICJXZWIgUHJvY2VzcyBpbml0aWFsaXphdGlvbiBpcyBzZXR0aW5nIG92ZXJy
aWRlTGFuZ3VhZ2VzOiAiIDw8IHBhcmFtZXRlcnMub3ZlcnJpZGVMYW5ndWFnZXMpOwogICAgICAg
ICBvdmVycmlkZVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMocGFyYW1ldGVycy5vdmVycmlkZUxhbmd1
YWdlcyk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggYTRmMTY3YjA1ODY0OTZiZjRlMDg5M2I5MjMwZjg1MzBlZmIyOThiYS4uYTYzODliOTYzMDEy
ZWY1MjFiMTE2M2UzMjUwNDQ4ZGY5MTQ5ODczYSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDIyLTA0LTI3ICBQaGls
aXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4gYW5kIFl1cnkgU2VtaWtoYXRza3kg
PHl1cnlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBbV0syXSBBZGQgQVBJIHRvIGFsbG93IGVt
YmVkZGVyIHRvIHNldCBhIHRpbWV6b25lIG92ZXJyaWRlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM4ODQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgQVBJIHRlc3RzIGZvciB0aGUgdGltZXpvbmUg
Y29uZmlndXJhdGlvbiBBUEkuIFRoZSBHVEsgYW5kIFdQRSBNaW5pQnJvd3NlcnMgYWxzbyBnYWlu
ZWQKKyAgICAgICAgbmV3IHJ1bnRpbWUgb3B0aW9ucyBhbGxvd2luZyB0byBleGVyY2lzZSB0aGlz
IG5ldyBBUEkuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9ndGsvbWFpbi5jOgorICAgICAgICAo
YWN0aXZhdGUpOgorICAgICAgICAqIE1pbmlCcm93c2VyL3dwZS9tYWluLmNwcDoKKyAgICAgICAg
KG1haW4pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvU291cmNlc0NvY29hLnR4dDoKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1RpbWVab25lT3Zl
cnJpZGUubW06IEFkZGVkLgorICAgICAgICAoVGltZVpvbmVPdmVycmlkZVRlc3Q6OnJ1blNjcmlw
dEFuZEV4ZWN1dGVDYWxsYmFjayk6CisgICAgICAgIChUaW1lWm9uZU92ZXJyaWRlVGVzdDo6Y2Fs
bEFzeW5jRnVuY3Rpb25Cb2R5KToKKyAgICAgICAgKFRFU1RfRik6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJDb250ZXh0LmNwcDoKKyAgICAg
ICAgKHRlc3RXZWJDb250ZXh0VGltZVpvbmVPdmVycmlkZSk6CisgICAgICAgICh0ZXN0V2ViQ29u
dGV4dFRpbWVab25lT3ZlcnJpZGVJbldvcmtlcik6CisgICAgICAgIChiZWZvcmVBbGwpOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1Rlc3RNYWluLmNwcDoKKyAgICAg
ICAgKG1haW4pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZp
ZXdUZXN0LmNwcDoKKyAgICAgICAgKHJ1bkphdmFTY3JpcHRSZWFkeUNhbGxiYWNrKToKKyAgICAg
ICAgKFdlYlZpZXdUZXN0OjpydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQpOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0Lmg6CisgICAg
ICAgICogZmxhdHBhay9mbGF0cGFrdXRpbHMucHk6CisgICAgICAgIChXZWJraXRGbGF0cGFrLnJ1
bl9pbl9zYW5kYm94KToKKwogMjAyMi0wNC0xNCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVo
QGFwcGxlLmNvbT4KIAogICAgICAgICBVbmRvIG9wdGlvbiBhZnRlciBpbnZva2luZyAiTWFya3Vw
IEltYWdlIiBzYXlzICJVbmRvIFBhc3RlIgpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIv
Z3RrL21haW4uYyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMKaW5kZXggOWU3ODYzYjYx
YjNlOWRiNzZlMDRlMTRmNDUxMTY2ODRkYWU0NGUzNy4uODE3ZThmZWM3ZTE4YjNmYmRlODVhYTUz
NDI2M2RlZjYwNDU4YjFhOCAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21haW4u
YworKysgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCkBAIC01Miw2ICs1Miw3IEBAIHN0
YXRpYyBjb25zdCBjaGFyICpjb29raWVzRmlsZTsKIHN0YXRpYyBjb25zdCBjaGFyICpjb29raWVz
UG9saWN5Owogc3RhdGljIGNvbnN0IGNoYXIgKnByb3h5Owogc3RhdGljIGdib29sZWFuIGRhcmtN
b2RlOworc3RhdGljIGNoYXIqIHRpbWVab25lOwogc3RhdGljIGdib29sZWFuIGVuYWJsZUlUUDsK
IHN0YXRpYyBnYm9vbGVhbiBlbmFibGVTYW5kYm94Owogc3RhdGljIGdib29sZWFuIGV4aXRBZnRl
ckxvYWQ7CkBAIC0xNDksNiArMTUwLDcgQEAgc3RhdGljIGNvbnN0IEdPcHRpb25FbnRyeSBjb21t
YW5kTGluZU9wdGlvbnNbXSA9CiAgICAgeyAiZW5hYmxlLWl0cCIsIDAsIDAsIEdfT1BUSU9OX0FS
R19OT05FLCAmZW5hYmxlSVRQLCAiRW5hYmxlIEludGVsbGlnZW50IFRyYWNraW5nIFByZXZlbnRp
b24gKElUUCkiLCBOVUxMIH0sCiAgICAgeyAiZW5hYmxlLXNhbmRib3giLCAwLCAwLCBHX09QVElP
Tl9BUkdfTk9ORSwgJmVuYWJsZVNhbmRib3gsICJFbmFibGUgd2ViIHByb2Nlc3Mgc2FuZGJveCBz
dXBwb3J0IiwgTlVMTCB9LAogICAgIHsgImV4aXQtYWZ0ZXItbG9hZCIsIDAsIDAsIEdfT1BUSU9O
X0FSR19OT05FLCAmZXhpdEFmdGVyTG9hZCwgIlF1aXQgdGhlIGJyb3dzZXIgYWZ0ZXIgdGhlIGxv
YWQgZmluaXNoZXMiLCBOVUxMIH0sCisgICAgeyAidGltZS16b25lIiwgJ3QnLCAwLCBHX09QVElP
Tl9BUkdfU1RSSU5HLCAmdGltZVpvbmUsICJTZXQgdGltZSB6b25lIiwgIlRJTUVaT05FIiB9LAog
ICAgIHsgInZlcnNpb24iLCAndicsIDAsIEdfT1BUSU9OX0FSR19OT05FLCAmcHJpbnRWZXJzaW9u
LCAiUHJpbnQgdGhlIFdlYktpdEdUSyB2ZXJzaW9uIiwgTlVMTCB9LAogICAgIHsgR19PUFRJT05f
UkVNQUlOSU5HLCAwLCAwLCBHX09QVElPTl9BUkdfRklMRU5BTUVfQVJSQVksICZ1cmlBcmd1bWVu
dHMsIDAsICJbVVJM4oCmXSIgfSwKICAgICB7IDAsIDAsIDAsIDAsIDAsIDAsIDAgfQpAQCAtNjc0
LDYgKzY3Niw3IEBAIHN0YXRpYyB2b2lkIGFjdGl2YXRlKEdBcHBsaWNhdGlvbiAqYXBwbGljYXRp
b24sIFdlYktpdFNldHRpbmdzICp3ZWJraXRTZXR0aW5ncykKICNpZiAhR1RLX0NIRUNLX1ZFUlNJ
T04oMywgOTgsIDApCiAgICAgICAgICJ1c2Utc3lzdGVtLWFwcGVhcmFuY2UtZm9yLXNjcm9sbGJh
cnMiLCBGQUxTRSwKICNlbmRpZgorICAgICAgICAidGltZS16b25lLW92ZXJyaWRlIiwgdGltZVpv
bmUsCiAgICAgICAgIE5VTEwpOwogICAgIGdfb2JqZWN0X3VucmVmKG1hbmFnZXIpOwogCmRpZmYg
LS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci93cGUvbWFpbi5jcHAgYi9Ub29scy9NaW5pQnJvd3Nl
ci93cGUvbWFpbi5jcHAKaW5kZXggNDU4NGQ5NTczYmE3ZDExZDIyNDlmMTc1NTJlZTVjOTQ3YWY1
MzlkMi4uY2QxZDM2NDdjOGJmYWE2Y2M5NjQyY2U2MzA2MGE1YWE2YzU5NDc5MSAxMDA2NDQKLS0t
IGEvVG9vbHMvTWluaUJyb3dzZXIvd3BlL21haW4uY3BwCisrKyBiL1Rvb2xzL01pbmlCcm93c2Vy
L3dwZS9tYWluLmNwcApAQCAtNDYsNiArNDYsNyBAQCBzdGF0aWMgY29uc3QgY2hhciogY29va2ll
c0ZpbGU7CiBzdGF0aWMgY29uc3QgY2hhciogY29va2llc1BvbGljeTsKIHN0YXRpYyBjb25zdCBj
aGFyKiBwcm94eTsKIGNvbnN0IGNoYXIqIGJnQ29sb3I7CitzdGF0aWMgY2hhciogdGltZVpvbmU7
CiBzdGF0aWMgZ2Jvb2xlYW4gZW5hYmxlSVRQOwogc3RhdGljIGdib29sZWFuIHByaW50VmVyc2lv
bjsKIHN0YXRpYyBHSGFzaFRhYmxlKiBvcGVuVmlld3M7CkBAIC02Myw2ICs2NCw3IEBAIHN0YXRp
YyBjb25zdCBHT3B0aW9uRW50cnkgY29tbWFuZExpbmVPcHRpb25zW10gPQogICAgIHsgImNvbnRl
bnQtZmlsdGVyIiwgMCwgMCwgR19PUFRJT05fQVJHX0ZJTEVOQU1FLCAmY29udGVudEZpbHRlciwg
IkpTT04gd2l0aCBjb250ZW50IGZpbHRlcmluZyBydWxlcyIsICJGSUxFIiB9LAogICAgIHsgImJn
LWNvbG9yIiwgMCwgMCwgR19PUFRJT05fQVJHX1NUUklORywgJmJnQ29sb3IsICJXaW5kb3cgYmFj
a2dyb3VuZCBjb2xvci4gRGVmYXVsdDogd2hpdGUiLCAiQ09MT1IiIH0sCiAgICAgeyAiZW5hYmxl
LWl0cCIsIDAsIDAsIEdfT1BUSU9OX0FSR19OT05FLCAmZW5hYmxlSVRQLCAiRW5hYmxlIEludGVs
bGlnZW50IFRyYWNraW5nIFByZXZlbnRpb24gKElUUCkiLCBudWxscHRyIH0sCisgICAgeyAidGlt
ZS16b25lIiwgJ3QnLCAwLCBHX09QVElPTl9BUkdfU1RSSU5HLCAmdGltZVpvbmUsICJTZXQgdGlt
ZSB6b25lIiwgIlRJTUVaT05FIiB9LAogICAgIHsgInZlcnNpb24iLCAndicsIDAsIEdfT1BUSU9O
X0FSR19OT05FLCAmcHJpbnRWZXJzaW9uLCAiUHJpbnQgdGhlIFdQRSB2ZXJzaW9uIiwgbnVsbHB0
ciB9LAogICAgIHsgR19PUFRJT05fUkVNQUlOSU5HLCAwLCAwLCBHX09QVElPTl9BUkdfRklMRU5B
TUVfQVJSQVksICZ1cmlBcmd1bWVudHMsIG51bGxwdHIsICJbVVJMXSIgfSwKICAgICB7IG51bGxw
dHIsIDAsIDAsIEdfT1BUSU9OX0FSR19OT05FLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyIH0K
QEAgLTIyOSw3ICsyMzEsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogICAg
IGlmIChpZ25vcmVUTFNFcnJvcnMpCiAgICAgICAgIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdl
cl9zZXRfdGxzX2Vycm9yc19wb2xpY3kobWFuYWdlciwgV0VCS0lUX1RMU19FUlJPUlNfUE9MSUNZ
X0lHTk9SRSk7CiAKLSAgICBhdXRvKiB3ZWJDb250ZXh0ID0gd2Via2l0X3dlYl9jb250ZXh0X25l
d193aXRoX3dlYnNpdGVfZGF0YV9tYW5hZ2VyKG1hbmFnZXIpOworICAgIGF1dG8qIHdlYkNvbnRl
eHQgPSBXRUJLSVRfV0VCX0NPTlRFWFQoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9DT05U
RVhULCAid2Vic2l0ZS1kYXRhLW1hbmFnZXIiLCBtYW5hZ2VyLCAidGltZS16b25lLW92ZXJyaWRl
IiwgdGltZVpvbmUsIG51bGxwdHIpKTsKICAgICBnX29iamVjdF91bnJlZihtYW5hZ2VyKTsKIAog
ICAgIGlmIChjb29raWVzUG9saWN5KSB7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1NvdXJjZXNDb2NvYS50eHQgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1NvdXJjZXNDb2NvYS50eHQK
aW5kZXggMzZhZDM0NzVhOTAzNGVjZmVlN2Q2ZjVlYjJjOWQ3NGM4MDZjMmUyZC4uMDE2YzJjNDc2
ZDE1ODM1YWU0OTQ0YTJiZjIwNzBjZjAwYzM3MGM4NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvU291cmNl
c0NvY29hLnR4dApAQCAtMjQwLDYgKzI0MCw3IEBAIFRlc3RzL1dlYktpdENvY29hL1Rlc3RVUkxT
Y2hlbWVIYW5kbGVyLm1tCiBUZXN0cy9XZWJLaXRDb2NvYS9UZXh0TWFuaXB1bGF0aW9uLm1tCiBU
ZXN0cy9XZWJLaXRDb2NvYS9UZXh0U2l6ZS5tbQogVGVzdHMvV2ViS2l0Q29jb2EvVGV4dFdpZHRo
Lm1tCitUZXN0cy9XZWJLaXRDb2NvYS9UaW1lWm9uZU92ZXJyaWRlLm1tCiBUZXN0cy9XZWJLaXRD
b2NvYS9Ub3BDb250ZW50SW5zZXQubW0KIFRlc3RzL1dlYktpdENvY29hL1VJRGVsZWdhdGUubW0K
IFRlc3RzL1dlYktpdENvY29hL1VwbG9hZERpcmVjdG9yeS5tbQpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCA2MjEyYzkzMDE2M2QxZjlhZjA1Mzc2YzZkZGU5NjU4MzE1YzMxNDQzLi41N2ZhMGQ5
ODBlZDY3N2JlMDMyZjIyZTdlZDdhOWE5MTgyZjBjOTliIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMzAyNCw2ICszMDI0LDcgQEAKIAkJRUJBNzVDNDgyNzVFRDdCRTAwRDZEMzFDIC8qIFB1
c2hNZXNzYWdlQ3J5cHRvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFB1c2hNZXNzYWdlQ3J5cHRv
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRUM3OUYxNjhCRTQ1NEU1NzlFNDE3
QjA1IC8qIE1hcmthYmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IE1hcmthYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRUNBNjgwQ0QxRTY4
Q0MwOTAwNzMxRDIwIC8qIFN0cmluZ1V0aWxpdGllcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFN0cmluZ1V0aWxpdGllcy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRjNDRUY2QjgyODA4RjJEMzAwMUUyM0E1IC8qIFRpbWVab25lT3ZlcnJpZGUu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBUaW1lWm9uZU92ZXJyaWRlLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGM0ZDM0VFMjEzNjc4QjczMDAxMjZBNjUgLyogbGliZ3Rlc3Qu
YSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGFyY2hp
dmUuYXI7IHBhdGggPSBsaWJndGVzdC5hOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElS
OyB9OwogCQlGNDAxMEI3RjI0REEyNEFDMDBBODc2RTIgLyogTmF2aWdhdGlvblN3aXBlVGVzdHMu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBOYXZpZ2F0aW9uU3dp
cGVUZXN0cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQwMTBCODEyNERBMjY3
RjAwQTg3NkUyIC8qIFBvc2VBc0NsYXNzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBuYW1lID0gUG9zZUFzQ2xhc3MubW07IHBhdGggPSAuLi9UZXN0UnVubmVyU2hhcmVkL2Nv
Y29hL1Bvc2VBc0NsYXNzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzY5Miw2
ICszNjkzLDcgQEAKIAkJCQk5QjAyRTBENTIzNUZBNDdEMDA0MDQ0QjIgLyogVGV4dE1hbmlwdWxh
dGlvbi5tbSAqLywKIAkJCQk1QzE2RjhGQjIzMEM5NDJCMDA3NEM0QTggLyogVGV4dFNpemUubW0g
Ki8sCiAJCQkJQzIyRkEzMkEyMjhGODcwODAwOUQ3OTg4IC8qIFRleHRXaWR0aC5tbSAqLywKKwkJ
CQlGM0NFRjZCODI4MDhGMkQzMDAxRTIzQTUgLyogVGltZVpvbmVPdmVycmlkZS5tbSAqLywKIAkJ
CQk1QzczQTgxQTIzMjMwNTk4MDBERUE4NUEgLyogVExTRGVwcmVjYXRpb24ubW0gKi8sCiAJCQkJ
Q0RFMTk1QjMxQ0ZFMEFERTAwNTNEMjU2IC8qIFRvcENvbnRlbnRJbnNldC5tbSAqLywKIAkJCQk1
Q0I0MEI0RDFGNEI5OEJFMDA3REM3QjkgLyogVUlEZWxlZ2F0ZS5tbSAqLywKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVGltZVpvbmVPdmVycmlkZS5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVGltZVpvbmVPdmVycmlk
ZS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iNmY4MDE2MWY3NDUxZTEwNzNiZWQ1NjVlMWJiZTg0ODQ5Yjc2M2Uy
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9UaW1lWm9uZU92ZXJyaWRlLm1tCkBAIC0wLDAgKzEsMTA0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIyIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisj
aWYgUExBVEZPUk0oQ09DT0EpCisKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1w
b3J0ICJUZXN0LmgiCisjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCisjaW1wb3J0IDxXZWJLaXQv
V0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZp
ZXdQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
Lmg+CisjaW1wb3J0IDx3dGYvRnVuY3Rpb24uaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgorCitjbGFzcyBUaW1lWm9uZU92ZXJyaWRlVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0
IHsKK3B1YmxpYzoKKyAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGF1
dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9j
XSBpbml0XSk7CisgICAgICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWcgPSBhZG9wdE5TKFtbX1dL
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgICAgIFtwcm9jZXNz
UG9vbENvbmZpZyBzZXRUaW1lWm9uZU92ZXJyaWRlOkAiRXVyb3BlL0JlcmxpbiJdOworCisgICAg
ICAgIF93ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6TlNNYWtlUmVjdCgwLCAwLCAzMDAsIDMwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9u
LmdldCgpIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZy5nZXQoKV0p
OworICAgIH0KKworICAgIHZvaWQgcnVuU2NyaXB0QW5kRXhlY3V0ZUNhbGxiYWNrKGNvbnN0IFN0
cmluZyYgc2NyaXB0LCBGdW5jdGlvbjx2b2lkKGlkKT4mJiBjYWxsYmFjaykKKyAgICB7CisgICAg
ICAgIGJvb2wgY29tcGxldGUgPSBmYWxzZTsKKyAgICAgICAgW193ZWJWaWV3IGV2YWx1YXRlSmF2
YVNjcmlwdDpzY3JpcHQgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3Ig
KmVycm9yKSB7CisgICAgICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgICAgICBj
YWxsYmFjayhyZXN1bHQpOworICAgICAgICAgICAgY29tcGxldGUgPSB0cnVlOworICAgICAgICB9
XTsKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZjb21wbGV0ZSk7CisgICAgfQor
CisgICAgdm9pZCBjYWxsQXN5bmNGdW5jdGlvbkJvZHkoY29uc3QgU3RyaW5nJiBmdW5jdGlvbkJv
ZHksIEZ1bmN0aW9uPHZvaWQoaWQpPiYmIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgYm9vbCBj
b21wbGV0ZSA9IGZhbHNlOworICAgICAgICBbX3dlYlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDpm
dW5jdGlvbkJvZHkgYXJndW1lbnRzOm5pbCBpbkZyYW1lOm5pbCBpbkNvbnRlbnRXb3JsZDpXS0Nv
bnRlbnRXb3JsZC5wYWdlV29ybGQgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5T
RXJyb3IgKmVycm9yKSB7CisgICAgICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAg
ICAgICBjYWxsYmFjayhyZXN1bHQpOworICAgICAgICAgICAgY29tcGxldGUgPSB0cnVlOworICAg
ICAgICB9XTsKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZjb21wbGV0ZSk7Cisg
ICAgfQorCisKK3ByaXZhdGU6CisgICAgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IF93ZWJWaWV3
OworfTsKKworVEVTVF9GKFRpbWVab25lT3ZlcnJpZGVUZXN0LCBUaW1lWm9uZU92ZXJyaWRlKQor
eworICAgIHJ1blNjcmlwdEFuZEV4ZWN1dGVDYWxsYmFjaygibGV0IG5vdyA9IG5ldyBEYXRlKCk7
IG5vdy5nZXRUaW1lem9uZU9mZnNldCgpIl9zLCBbXShpZCByZXN1bHQpIHsKKyAgICAgICAgRVhQ
RUNUX1dLX1NUUkVRKFtyZXN1bHQgc3RyaW5nVmFsdWVdLCAiLTEyMCIpOworICAgIH0pOworfQor
CitURVNUX0YoVGltZVpvbmVPdmVycmlkZVRlc3QsIFRpbWVab25lT3ZlcnJpZGVJbldvcmtlcnMp
Cit7CisgICAgU3RyaW5nIGZ1bmN0aW9uQm9keSA9CisgICAgICAgICJyZXR1cm4gbmV3IFByb21p
c2UoZnVsZmlsbCA9PiB7IgorICAgICAgICAiICBjb25zdCByZXN1bHRzID0gW107IgorICAgICAg
ICAiICBmb3IgKGxldCBpID0gMDsgaSA8IDM7IGkrKykgeyIKKyAgICAgICAgIiAgICBjb25zdCB3
b3JrZXIgPSBuZXcgV29ya2VyKCdkYXRhOnRleHQvamF2YXNjcmlwdCxzZWxmLnBvc3RNZXNzYWdl
KEludGwuRGF0ZVRpbWVGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS50aW1lWm9uZSknKTsiCisg
ICAgICAgICIgICAgd29ya2VyLm9ubWVzc2FnZSA9IG1lc3NhZ2UgPT4geyIKKyAgICAgICAgIiAg
ICAgIHJlc3VsdHMucHVzaChtZXNzYWdlLmRhdGEpOyIKKyAgICAgICAgIiAgICAgIGlmIChyZXN1
bHRzLmxlbmd0aCA9PT0gMykiCisgICAgICAgICIgICAgICAgIGZ1bGZpbGwocmVzdWx0cy5qb2lu
KCcsICcpKTsiCisgICAgICAgICIgICAgfTsiCisgICAgICAgICIgIH0iCisgICAgICAgICJ9KTsi
X3M7CisgICAgY2FsbEFzeW5jRnVuY3Rpb25Cb2R5KGZ1bmN0aW9uQm9keSwgW10oaWQgcmVzdWx0
KSB7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcg
Y2xhc3NdXSk7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXN1bHQsIEAiRXVyb3BlL0Jlcmxp
biwgRXVyb3BlL0JlcmxpbiwgRXVyb3BlL0JlcmxpbiIpOworICAgIH0pOworfQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2Vi
S2l0V2ViQ29udGV4dC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIv
VGVzdFdlYktpdFdlYkNvbnRleHQuY3BwCmluZGV4IDMxMjA3OGY3Y2E0YWE5MDc5ZGI0NjgzMDk0
ODA1ZWFiZWY5MjM4ZmUuLmIxYjg3ZDJhOTQ4OTBjNzJiODFiMWYzMzA1ZDAyOGM4YmM4ZjM5ODcg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2Vi
S2l0V2ViQ29udGV4dC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1Rlc3RXZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtOTkxLDYgKzk5MSw1OCBAQCBzdGF0aWMg
dm9pZCB0ZXN0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyhNZW1vcnlQcmVzc3VyZVRlc3QqIHRlc3Qs
IGdjb25zdHBvaW50ZXIpCiAgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5tX3Rlcm1pbmF0aW9u
UmVhc29uLCA9PSwgV0VCS0lUX1dFQl9QUk9DRVNTX0VYQ0VFREVEX01FTU9SWV9MSU1JVCk7CiB9
CiAKK3N0YXRpYyB2b2lkIHRlc3RXZWJDb250ZXh0VGltZVpvbmVPdmVycmlkZShXZWJWaWV3VGVz
dCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJy
b3I7CisgICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdCA9IHRlc3Qt
PnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgibGV0IG5vdyA9IG5ldyBEYXRlKCk7
IG5vdy5nZXRUaW1lem9uZU9mZnNldCgpIiwgJmVycm9yLm91dFB0cigpKTsKKyAgICBnX2Fzc2Vy
dF9ub25udWxsKGphdmFzY3JpcHRSZXN1bHQpOworICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9y
LmdldCgpKTsKKyAgICAvLyBCeSBkZWZhdWx0IHRoZSB0ZXN0IGhhcm5lc3MgdXNlcyB0aGUgUGFj
aWZpYy9Mb3NfQW5nZWxlcyB0aW1lem9uZSB3aGljaCBpcyA3IGhvdXJzICg0MjAgbWludXRlcykg
Y29tcGFyZWQgdG8gR01ULgorICAgIGdfYXNzZXJ0X2NtcGludChXZWJWaWV3VGVzdDo6amF2YXNj
cmlwdFJlc3VsdFRvTnVtYmVyKGphdmFzY3JpcHRSZXN1bHQpLCA9PSwgNDIwKTsKKworICAgIC8v
IENyZWF0ZSBhIG5ldyBjb250ZXh0IGNvbmZpZ3VyZWQgd2l0aCB0aW1lIHpvbmUgb3ZlcmlkZSBz
ZXQgdG8gQmVybGluIHdoaWNoIGlzIDEyMCBtaW51dGVzIGFoZWFkIG9mIHRoZSBHTVQgb2Zmc2V0
LgorICAgIGF1dG8gd2ViQ29udGV4dCA9IGFkb3B0R1JlZihXRUJLSVRfV0VCX0NPTlRFWFQoZ19v
YmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9DT05URVhULAorICAgICAgICAidGltZS16b25lLW92
ZXJyaWRlIiwgIkV1cm9wZS9CZXJsaW4iLCBudWxscHRyKSkpOworICAgIGdfYXNzZXJ0X2NtcHN0
cih3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3RpbWVfem9uZV9vdmVycmlkZSh3ZWJDb250ZXh0Lmdl
dCgpKSwgPT0sICJFdXJvcGUvQmVybGluIik7CisgICAgYXV0byB3ZWJWaWV3ID0gVGVzdDo6YWRv
cHRWaWV3KFRlc3Q6OmNyZWF0ZVdlYlZpZXcod2ViQ29udGV4dC5nZXQoKSkpOworICAgIGphdmFz
Y3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoImxl
dCBub3cgPSBuZXcgRGF0ZSgpOyBub3cuZ2V0VGltZXpvbmVPZmZzZXQoKSIsICZlcnJvci5vdXRQ
dHIoKSwgd2ViVmlldy5nZXQoKSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChqYXZhc2NyaXB0UmVz
dWx0KTsKKyAgICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7CisgICAgZ19hc3NlcnRf
Y21waW50KFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9OdW1iZXIoamF2YXNjcmlwdFJl
c3VsdCksID09LCAtMTIwKTsKK30KKworc3RhdGljIHZvaWQgdGVzdFdlYkNvbnRleHRUaW1lWm9u
ZU92ZXJyaWRlSW5Xb3JrZXIoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCit7Cisg
ICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOworICAgIFdlYktpdEphdmFzY3JpcHRSZXN1
bHQqIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmlu
aXNoZWQoIkludGwuRGF0ZVRpbWVGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS50aW1lWm9uZSIs
ICZlcnJvci5vdXRQdHIoKSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChqYXZhc2NyaXB0UmVzdWx0
KTsKKyAgICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7CisgICAgLy8gQnkgZGVmYXVs
dCB0aGUgdGVzdCBoYXJuZXNzIHVzZXMgdGhlIFBhY2lmaWMvTG9zX0FuZ2VsZXMuCisgICAgZ19h
c3NlcnRfY21wc3RyKFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFz
Y3JpcHRSZXN1bHQpLCA9PSwgIkFtZXJpY2EvTG9zX0FuZ2VsZXMiKTsKKyAgICAvLyBDcmVhdGUg
YSBuZXcgY29udGV4dCBjb25maWd1cmVkIHdpdGggdGltZSB6b25lIG92ZXJpZGUgc2V0IHRvIEJl
cmxpbiB3aGljaCBpcyAxMjAgbWludXRlcyBhaGVhZCBvZiB0aGUgR01UIG9mZnNldC4KKyAgICBh
dXRvIHdlYkNvbnRleHQgPSBhZG9wdEdSZWYoV0VCS0lUX1dFQl9DT05URVhUKGdfb2JqZWN0X25l
dyhXRUJLSVRfVFlQRV9XRUJfQ09OVEVYVCwKKyAgICAgICAgInRpbWUtem9uZS1vdmVycmlkZSIs
ICJFdXJvcGUvQmVybGluIiwgbnVsbHB0cikpKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0
X3dlYl9jb250ZXh0X2dldF90aW1lX3pvbmVfb3ZlcnJpZGUod2ViQ29udGV4dC5nZXQoKSksID09
LCAiRXVyb3BlL0JlcmxpbiIpOworICAgIGF1dG8gd2ViVmlldyA9IFRlc3Q6OmFkb3B0VmlldyhU
ZXN0OjpjcmVhdGVXZWJWaWV3KHdlYkNvbnRleHQuZ2V0KCkpKTsKKworICAgIHRlc3QtPnJ1bkph
dmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgKKyAgICAgICAgIndpbmRvdy5yZXN1bHRzID0g
W107IgorICAgICAgICAiZm9yIChsZXQgaSA9IDA7IGkgPCAzOyBpKyspIHsiCisgICAgICAgICIg
IGNvbnN0IHdvcmtlciA9IG5ldyBXb3JrZXIoJ2RhdGE6dGV4dC9qYXZhc2NyaXB0LHNlbGYucG9z
dE1lc3NhZ2UoSW50bC5EYXRlVGltZUZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLnRpbWVab25l
KScpOyIKKyAgICAgICAgIiAgd29ya2VyLm9ubWVzc2FnZSA9IG1lc3NhZ2UgPT4gcmVzdWx0cy5w
dXNoKG1lc3NhZ2UuZGF0YSk7IgorICAgICAgICAifSIsICZlcnJvci5vdXRQdHIoKSwgd2ViVmll
dy5nZXQoKSk7CisgICAgZG8geworICAgICAgICBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVu
SmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJyZXN1bHRzLmxlbmd0aCIsICZlcnJvci5v
dXRQdHIoKSwgd2ViVmlldy5nZXQoKSk7CisgICAgICAgIGdfYXNzZXJ0X25vbm51bGwoamF2YXNj
cmlwdFJlc3VsdCk7CisgICAgICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKKyAg
ICB9IHdoaWxlIChXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvTnVtYmVyKGphdmFzY3Jp
cHRSZXN1bHQpIDwgMyk7CisKKyAgICBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNj
cmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJyZXN1bHRzLmpvaW4oJywgJykiLCAmZXJyb3Iub3V0
UHRyKCksIHdlYlZpZXcuZ2V0KCkpOworICAgIGdfYXNzZXJ0X25vbm51bGwoamF2YXNjcmlwdFJl
c3VsdCk7CisgICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0KCkpOworICAgIGdfYXNzZXJ0
X2NtcHN0cihXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0cmluZyhqYXZhc2NyaXB0
UmVzdWx0KSwgPT0sICJFdXJvcGUvQmVybGluLCBFdXJvcGUvQmVybGluLCBFdXJvcGUvQmVybGlu
Iik7Cit9CisKIHZvaWQgYmVmb3JlQWxsKCkKIHsKICAgICBrU2VydmVyID0gbmV3IFdlYktpdFRl
c3RTZXJ2ZXIoKTsKQEAgLTEwMDgsNiArMTA2MCw4IEBAIHZvaWQgYmVmb3JlQWxsKCkKICAgICBX
ZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRTZWN1cml0eU1hbmFnZXIiLCAiZmlsZS14aHIiLCB0ZXN0
V2ViQ29udGV4dFNlY3VyaXR5RmlsZVhIUik7CiAgICAgUHJveHlUZXN0OjphZGQoIldlYktpdFdl
YkNvbnRleHQiLCAicHJveHkiLCB0ZXN0V2ViQ29udGV4dFByb3h5U2V0dGluZ3MpOwogICAgIE1l
bW9yeVByZXNzdXJlVGVzdDo6YWRkKCJXZWJLaXRXZWJDb250ZXh0IiwgIm1lbW9yeS1wcmVzc3Vy
ZSIsIHRlc3RNZW1vcnlQcmVzc3VyZVNldHRpbmdzKTsKKyAgICBXZWJWaWV3VGVzdDo6YWRkKCJX
ZWJLaXRXZWJDb250ZXh0IiwgInRpbWV6b25lIiwgdGVzdFdlYkNvbnRleHRUaW1lWm9uZU92ZXJy
aWRlKTsKKyAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJDb250ZXh0IiwgInRpbWV6b25l
LXdvcmtlciIsIHRlc3RXZWJDb250ZXh0VGltZVpvbmVPdmVycmlkZUluV29ya2VyKTsKIH0KIAog
dm9pZCBhZnRlckFsbCgpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2Vi
S2l0R0xpYi9UZXN0TWFpbi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xp
Yi9UZXN0TWFpbi5jcHAKaW5kZXggZTg1YjNjMWVmZGU3MjEzMzYyZGU2OTdkNzMyYzUzNmQ1ZDdm
ZmUxOS4uMzk3NDE3NDZhNzU2M2M5Y2UyODRkMGU5ZjJhMjliMDVlM2VkYzUwNyAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvVGVzdE1haW4uY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1Rlc3RNYWluLmNwcApAQCAtMTMy
LDYgKzEzMiw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKICAgICBnX3NldGVu
digiR1NFVFRJTkdTX0JBQ0tFTkQiLCAibWVtb3J5IiwgVFJVRSk7CiAgICAgLy8gR2V0IHJpZCBv
ZiBydW50aW1lIHdhcm5pbmdzIGFib3V0IGRlcHJlY2F0ZWQgcHJvcGVydGllcyBhbmQgc2lnbmFs
cywgc2luY2UgdGhleSBicmVhayB0aGUgdGVzdHMuCiAgICAgZ19zZXRlbnYoIkdfRU5BQkxFX0RJ
QUdOT1NUSUMiLCAiMCIsIFRSVUUpOworICAgIGdfc2V0ZW52KCJUWiIsICJBbWVyaWNhL0xvc19B
bmdlbGVzIiwgVFJVRSk7CiAgICAgZ190ZXN0X2J1Z19iYXNlKCJodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy8iKTsKIAogICAgIHJlZ2lzdGVyR1Jlc291cmNlKCk7CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5jcHAKaW5kZXggOTBmNWQzNTFj
MTdkZGU4YTBhMWZmOGMyYTI0ZjlkYmEyYWI0ZjM3OC4uYTIxYTAwNDJiNGM3NTU5YmM3MjVjMWZh
YzA2NThlNDAzYzE5MWNhZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dl
YktpdEdMaWIvV2ViVmlld1Rlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9X
ZWJLaXRHTGliL1dlYlZpZXdUZXN0LmNwcApAQCAtMzA2LDkgKzMwNiw5IEBAIGNvbnN0IGNoYXIq
IFdlYlZpZXdUZXN0OjptYWluUmVzb3VyY2VEYXRhKHNpemVfdCYgbWFpblJlc291cmNlRGF0YVNp
emUpCiAgICAgcmV0dXJuIG1fcmVzb3VyY2VEYXRhLmdldCgpOwogfQogCi1zdGF0aWMgdm9pZCBy
dW5KYXZhU2NyaXB0UmVhZHlDYWxsYmFjayhHT2JqZWN0KiwgR0FzeW5jUmVzdWx0KiByZXN1bHQs
IFdlYlZpZXdUZXN0KiB0ZXN0KQorc3RhdGljIHZvaWQgcnVuSmF2YVNjcmlwdFJlYWR5Q2FsbGJh
Y2soR09iamVjdCogb2JqZWN0LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgV2ViVmlld1Rlc3QqIHRl
c3QpCiB7Ci0gICAgdGVzdC0+bV9qYXZhc2NyaXB0UmVzdWx0ID0gd2Via2l0X3dlYl92aWV3X3J1
bl9qYXZhc2NyaXB0X2ZpbmlzaCh0ZXN0LT5tX3dlYlZpZXcsIHJlc3VsdCwgdGVzdC0+bV9qYXZh
c2NyaXB0RXJyb3IpOworICAgIHRlc3QtPm1famF2YXNjcmlwdFJlc3VsdCA9IHdlYmtpdF93ZWJf
dmlld19ydW5famF2YXNjcmlwdF9maW5pc2goV0VCS0lUX1dFQl9WSUVXKG9iamVjdCksIHJlc3Vs
dCwgdGVzdC0+bV9qYXZhc2NyaXB0RXJyb3IpOwogICAgIGdfbWFpbl9sb29wX3F1aXQodGVzdC0+
bV9tYWluTG9vcCk7CiB9CiAKQEAgLTMyNCwxMyArMzI0LDE1IEBAIHN0YXRpYyB2b2lkIHJ1bkph
dmFTY3JpcHRJbldvcmxkUmVhZHlDYWxsYmFjayhHT2JqZWN0KiwgR0FzeW5jUmVzdWx0KiByZXN1
bHQsIFdlCiAgICAgZ19tYWluX2xvb3BfcXVpdCh0ZXN0LT5tX21haW5Mb29wKTsKIH0KIAotV2Vi
S2l0SmF2YXNjcmlwdFJlc3VsdCogV2ViVmlld1Rlc3Q6OnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50
aWxGaW5pc2hlZChjb25zdCBjaGFyKiBqYXZhc2NyaXB0LCBHRXJyb3IqKiBlcnJvcikKK1dlYktp
dEphdmFzY3JpcHRSZXN1bHQqIFdlYlZpZXdUZXN0OjpydW5KYXZhU2NyaXB0QW5kV2FpdFVudGls
RmluaXNoZWQoY29uc3QgY2hhciogamF2YXNjcmlwdCwgR0Vycm9yKiogZXJyb3IsIFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcpCiB7CiAgICAgaWYgKG1famF2YXNjcmlwdFJlc3VsdCkKICAgICAgICAg
d2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X3VucmVmKG1famF2YXNjcmlwdFJlc3VsdCk7CiAgICAg
bV9qYXZhc2NyaXB0UmVzdWx0ID0gMDsKICAgICBtX2phdmFzY3JpcHRFcnJvciA9IGVycm9yOwot
ICAgIHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlwdChtX3dlYlZpZXcsIGphdmFzY3JpcHQs
IDAsIHJlaW50ZXJwcmV0X2Nhc3Q8R0FzeW5jUmVhZHlDYWxsYmFjaz4ocnVuSmF2YVNjcmlwdFJl
YWR5Q2FsbGJhY2spLCB0aGlzKTsKKyAgICBpZiAoIXdlYlZpZXcpCisgICAgICAgIHdlYlZpZXcg
PSBtX3dlYlZpZXc7CisgICAgd2Via2l0X3dlYl92aWV3X3J1bl9qYXZhc2NyaXB0KHdlYlZpZXcs
IGphdmFzY3JpcHQsIDAsIHJlaW50ZXJwcmV0X2Nhc3Q8R0FzeW5jUmVhZHlDYWxsYmFjaz4ocnVu
SmF2YVNjcmlwdFJlYWR5Q2FsbGJhY2spLCB0aGlzKTsKICAgICBnX21haW5fbG9vcF9ydW4obV9t
YWluTG9vcCk7CiAKICAgICByZXR1cm4gbV9qYXZhc2NyaXB0UmVzdWx0OwpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuaCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmgKaW5kZXggYTI4YTVl
ZGM4ZDQwZjU4YjUwNWFiNjRiMWVmNDhhYTBiNjU5NzMzMy4uMDJkNTg0OTVkNmQ3N2JmYjNhNzNi
YTI4YjZhNWQ5MzBjNDZmZjJkYSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGli
L1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIv
V2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5oCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGVtaXRQb3B1cE1lbnVTaWduYWwoKTsKICNlbmRpZgogCi0gICAgV2ViS2l0SmF2YXNjcmlw
dFJlc3VsdCogcnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKGNvbnN0IGNoYXIqIGph
dmFzY3JpcHQsIEdFcnJvcioqKTsKKyAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBydW5KYXZh
U2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoY29uc3QgY2hhciogamF2YXNjcmlwdCwgR0Vycm9y
KiosIFdlYktpdFdlYlZpZXcqID0gbnVsbHB0cik7CiAgICAgV2ViS2l0SmF2YXNjcmlwdFJlc3Vs
dCogcnVuSmF2YVNjcmlwdEZyb21HUmVzb3VyY2VBbmRXYWl0VW50aWxGaW5pc2hlZChjb25zdCBj
aGFyKiByZXNvdXJjZSwgR0Vycm9yKiopOwogICAgIFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIHJ1
bkphdmFTY3JpcHRJbldvcmxkQW5kV2FpdFVudGlsRmluaXNoZWQoY29uc3QgY2hhciogamF2YXNj
cmlwdCwgY29uc3QgY2hhciogd29ybGQsIEdFcnJvcioqKTsKICAgICBXZWJLaXRKYXZhc2NyaXB0
UmVzdWx0KiBydW5KYXZhU2NyaXB0V2l0aG91dEZvcmNlZFVzZXJHZXN0dXJlc0FuZFdhaXRVbnRp
bEZpbmlzaGVkKGNvbnN0IGNoYXIqIGphdmFzY3JpcHQsIEdFcnJvcioqKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL2ZsYXRwYWsvZmxhdHBha3V0aWxzLnB5IGIvVG9vbHMvZmxhdHBhay9mbGF0cGFrdXRp
bHMucHkKaW5kZXggYWIxZGJhOTgyMDZiZTgxMGIxZDRlNjBjYTc0NmQ5Yjc3YWIyYjBlZC4uNTY2
MjZhMzY2NDEyYWIzNmYwZWZjYjdkMzhlN2Q3ZjE2NzUxYWE2YiAxMDA2NDQKLS0tIGEvVG9vbHMv
ZmxhdHBhay9mbGF0cGFrdXRpbHMucHkKKysrIGIvVG9vbHMvZmxhdHBhay9mbGF0cGFrdXRpbHMu
cHkKQEAgLTg1Nyw3ICs4NTcsNyBAQCBjbGFzcyBXZWJraXRGbGF0cGFrOgogICAgICAgICAgICAg
XSkKIAogICAgICAgICAgICAgc2FuZGJveF9lbnZpcm9ubWVudC51cGRhdGUoewotICAgICAgICAg
ICAgICAgICJUWiI6ICJQU1Q4UERUIiwKKyAgICAgICAgICAgICAgICAiVFoiOiAiQW1lcmljYS9M
b3NfQW5nZWxlcyIsCiAgICAgICAgICAgICB9KQogCiAgICAgICAgIGVudl92YXJfcHJlZml4ZXNf
dG9fa2VlcCA9IFsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458624</attachid>
            <date>2022-04-29 19:11:15 -0700</date>
            <delta_ts>2022-05-02 11:22:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213884-20220429191114.patch</filename>
            <type>text/plain</type>
            <size>48217</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzNjI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
NTdmYmFiN2YwMzU5ODQwOGU0ZGYzNmM0NmYxMTVjZjI2NGE1ZmFmLi4xNmUxM2Q4ZTg4NmZhZTNh
NDk5MWMxZTBmNWRhNmIwYTU3ZmUxMzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAyMi0wNC0yNyAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxp
YS5jb20+IGFuZCBQYXZlbCBGZWxkbWFuIDxwYXZlbC5mZWxkbWFuQGdtYWlsLmNvbT4gYW5kIFl1
cnkgU2VtaWtoYXRza3kgPHl1cnlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBbV0syXSBBZGQg
QVBJIHRvIGFsbG93IGVtYmVkZGVyIHRvIHNldCBhIHRpbWV6b25lIG92ZXJyaWRlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM4ODQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHJ1bnRpbWUvRGF0ZUNv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToK
KyAgICAgICAgKiBydW50aW1lL0RhdGVDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKEpTQzo6Zm9y
bWF0RGF0ZVRpbWUpOiBGb3JtYXQgdGhlIG92ZXJyaWRkZW4gdGltZXpvbmUgaWYgaXQncyBlbmFi
bGVkLgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZUNvbnZlcnNpb24uaDoKKyAgICAgICAgKiBydW50
aW1lL0RhdGVQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpmb3JtYXRlRGF0ZUluc3RhbmNl
KToKKyAgICAgICAgKiBydW50aW1lL0pTRGF0ZU1hdGguY3BwOgorICAgICAgICAoSlNDOjp0b0lD
VVRpbWVab25lKToKKyAgICAgICAgKEpTQzo6dG9PcGFxdWVJQ1VUaW1lWm9uZSk6CisgICAgICAg
IChKU0M6Ok9wYXF1ZUlDVVRpbWVab25lRGVsZXRlcjo6b3BlcmF0b3IoKSk6CisgICAgICAgIChK
U0M6OkRhdGVDYWNoZTo6Y2FsY3VsYXRlTG9jYWxUaW1lT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6
RGF0ZUNhY2hlOjpkZWZhdWx0VGltZVpvbmUpOgorICAgICAgICAoSlNDOjpEYXRlQ2FjaGU6OnRp
bWVab25lRGlzcGxheU5hbWVPdmVycmlkZSk6CisgICAgICAgIChKU0M6OkRhdGVDYWNoZTo6dGlt
ZVpvbmVDYWNoZVNsb3cpOiBBcHBseSB0aW1lem9uZSBvdmVycmlkZSBpZiBpdCBpcyBzZXQuCisg
ICAgICAgIChKU0M6OkRhdGVDYWNoZTo6cmVzZXRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcnVu
dGltZS9KU0RhdGVNYXRoLmg6CisKKwogMjAyMi0wNC0yOSAgWXVyeSBTZW1pa2hhdHNreSAgPHl1
cnlzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBGb3JtYXQgdGltZSB6b25lIG5hbWUgdXNpbmcg
SUNVIGluc3RlYWQgb2YgcGxhdGZvcm0gY2FsbHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggYjdiOTQ2OGRiOTlmYmU1YjViYWUy
NjMwMDJhNDYwYzUwMGU4YzNiYi4uZjEwNzJjZmM5NGFiMmUyODExMTE4Y2Y2ODQwYWE0NTlkZmU2
ZmNiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAyMi0wNC0yNyAgUGhpbGlwcGUgTm9ybWFuZCAg
PHBub3JtYW5kQGlnYWxpYS5jb20+IGFuZCBQYXZlbCBGZWxkbWFuIDxwYXZlbC5mZWxkbWFuQGdt
YWlsLmNvbT4gYW5kIFl1cnkgU2VtaWtoYXRza3kgPHl1cnlzQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBbV0syXSBBZGQgQVBJIHRvIGFsbG93IGVtYmVkZGVyIHRvIHNldCBhIHRpbWV6b25lIG92
ZXJyaWRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTM4ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHd0Zi9EYXRlTWF0aC5jcHA6IE5ldyBBUElzIHRvIGNvbnRyb2wgYW5kIHF1ZXJ5IHRoZSB0aW1l
em9uZSBvdmVycmlkZS4KKyAgICAgICAgKFdURjo6aW5uZXJUaW1lWm9uZU92ZXJyaWRlKTogU3Rh
dGljIHN0b3JhZ2Ugb2YgdGhlIG92ZXJyaWRlIGluZm9ybWF0aW9ucy4KKyAgICAgICAgKFdURjo6
V1RGX1JFUVVJUkVTX0xPQ0spOgorICAgICAgICAoV1RGOjp2YWxpZGF0ZVRpbWVab25lKTogTmV3
IGZ1bmN0aW9uIGFsbG93aW5nIHRvIGNoZWNrIGlmIGEgdGltZXpvbmUgaWRlbnRpZmllciBpcyB2
YWxpZCBhY2NvcmRpbmcgdG8gSUNVJ3MgZGF0YWJhc2UgYW5kIGNvdmVydCBpdAorICAgICAgICB0
byBVQ2hhciBidWZmZXIgc3VpdGFibGUgZm9yIHBhc3NpbmcgdG8gdWNhbC4KKyAgICAgICAgKFdU
Rjo6aXNUaW1lWm9uZVZhbGlkKToKKyAgICAgICAgKFdURjo6c2V0VGltZVpvbmVPdmVycmlkZSk6
IE5ldyBBUEkgdG8gc2V0IHRoZSB0aW1lem9uZSBvdmVycmlkZSwgdGhpcyBpcyBtZWFudCB0byBi
ZQorICAgICAgICB1c2VkIG9uIG5ld2x5IGNyZWF0ZWQgV2ViUHJvY2Vzc2VzLiBJbiBhZGRpdGlv
biB0byBwcm92aWRpbmcgYWx0ZXJuYXRpdmUgbmFtZSBmb3IgdGhlIGNvZGUKKyAgICAgICAgdGhh
dCBjYWxscyBpbnRvIElDVSBsaWJyYXJ5LCBvbiBQT1NJWCBzeXN0ZW1zIHdyaXRlcyBuZXcgdGlt
ZXpvbmUgdG8gIlRaIiBlbnZpcm9uZW1lbnQKKyAgICAgICAgdmFyaWFibGUgdG8gYWRqdXN0IHJl
c3VsdCBvZiBzdHJmdGltZSAoY2FsbGVkIGluIGZvcm1hdERhdGVUaW1lKS4KKyAgICAgICAgKFdU
Rjo6Z2V0VGltZVpvbmVPdmVycmlkZSk6IFF1ZXJ5IHRoZSB0aW1lem9uZSBvdmVycmlkZS4KKyAg
ICAgICAgKiB3dGYvRGF0ZU1hdGguaDoKKwogMjAyMi0wNC0yOSAgUGhpbGlwcGUgTm9ybWFuZCAg
PHBoaWxuQGlnYWxpYS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjkzNjA4KTogW0dUS11b
V1BFXSBCcm9rZSBjbGFuZyBidWlsZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMDYxYzBlZmIwMWNhNTBkOTFkYTlk
MDA1ZDI5ZWM4MTQyNzUzZmVjNS4uMGYwM2YyN2I4N2Y5Y2Y1YWZkYzI3NmE3OTQwY2RkNzAwZmMz
M2I5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MiBAQAorMjAyMi0wNC0yNyAgUGhpbGlwcGUgTm9y
bWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+IGFuZCBZdXJ5IFNlbWlraGF0c2t5IDx5dXJ5c0Bj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1dLMl0gQWRkIEFQSSB0byBhbGxvdyBlbWJlZGRlciB0
byBzZXQgYSB0aW1lem9uZSBvdmVycmlkZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjEzODg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzOgorCisgICAgICAgIC0gbmV3IENvY29h
IEFQSQorICAgICAgICAtIG5ldyBHbGliIEFQSSAodGFyZ2V0dGluZyBib3RoIFdQRSBhbmQgR1RL
IHBvcnRzKQorICAgICAgICAtIG5ldyBDIEFQSSAoZm9yIHRoZSB3aW4gcG9ydCkKKworICAgICAg
ICB0aGF0IGFsbG93cyB0aGUgZW1iZWRkZXIgdG8gc2V0IGEgdGltZXpvbmUgb3ZlcnJpZGUgZm9y
IHRoZSB1bmRlcmx5aW5nIFBhZ2VDb25maWd1cmF0aW9uLgorICAgICAgICBTaW5jZSB0aGlzIEFQ
SSBpcyBub3QgZXhwb3NlZCBpbiBnbGliIHBvcnRzLCBhIG5ldyBjb250cnVjdC10aW1lLW9ubHkg
cHJvcGVydHkgd2FzIGFkZGVkIHRvCisgICAgICAgIHRoZSBXZWJLaXRXZWJDb250ZXh0IEFQSS4g
SXQgd291bGQgYWxzbyBhbGxvdyBmaW5lLWdyYWluZWQgY29udHJvbCBvdmVyIG11bHRpcGxlIHBh
Z2VzLCBmb3IKKyAgICAgICAgaW5zdGFuY2UgaXQncyBub3QgcG9zc2libGUgY3VycmVudGx5IHRv
IGhhdmUgdHdvIHBhZ2VzIGluIGRpZmZlcmVudCB0aW1lem9uZXMuCisKKyAgICAgICAgTm8gbmV3
IGxheW91dCB0ZXN0cywgdGhpcyBjaGFuZ2UgaXMgY292ZXJlZCBieSBuZXcgQVBJIHRlc3RzLgor
CisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUp
OgorICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwOgorICAg
ICAgICAoQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNvcHkpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL1dLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuY3BwOgorICAgICAgICAoV0tD
b250ZXh0Q29uZmlndXJhdGlvbkNvcHlUaW1lWm9uZU92ZXJyaWRlKToKKyAgICAgICAgKFdLQ29u
dGV4dENvbmZpZ3VyYXRpb25TZXRUaW1lWm9uZU92ZXJyaWRlKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0MvV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubW06CisgICAgICAg
ICgtW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiB0aW1lWm9uZU92ZXJyaWRlXSk6CisgICAg
ICAgICgtW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBzZXRUaW1lWm9uZU92ZXJyaWRlOl0p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcDoKKyAg
ICAgICAgKHdlYmtpdFdlYkNvbnRleHRHZXRQcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRXZWJD
b250ZXh0U2V0UHJvcGVydHkpOgorICAgICAgICAod2Via2l0V2ViQ29udGV4dENvbnN0cnVjdGVk
KToKKyAgICAgICAgKHdlYmtpdF93ZWJfY29udGV4dF9jbGFzc19pbml0KToKKyAgICAgICAgKHdl
YmtpdF93ZWJfY29udGV4dF9zZXRfdGltZV96b25lX292ZXJyaWRlKToKKyAgICAgICAgKHdlYmtp
dF93ZWJfY29udGV4dF9nZXRfdGltZV96b25lX292ZXJyaWRlKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93
cGUvV2ViS2l0V2ViQ29udGV4dC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjppbml0aWFsaXplTmV3V2Vi
UHJvY2Vzcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MpOiBBcHBseSB0aW1lem9u
ZSBvdmVycmlkZSBpZiBhbnkgb24gcHJvY2VzcyBzdGFydC4KKwogMjAyMi0wNC0yOSAgS2ltbW8g
S2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBBU0FOIGJ1aWxk
IGFmdGVyICJJUEMgdGVzdGluZyBBUEkgc2hvdWxkIGhhdmUgdGhlIGFiaWxpdHkgdG8gdGVzdCBJ
UEM6OkNvbm5lY3Rpb24gc2VuZCBhbmQgcmVjZWl2ZSB0aHJvdWdoIElQQzo6Q29ubmVjdGlvbiIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0ZU1hdGguY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRlTWF0aC5jcHAKaW5kZXggZDc2
OTJlYmIxMDMwNDhjZjU0Mjg1MzUwN2MzYjcyODJmZjUyYWMxNy4uNWI3YWJhMmI2NTE1NmIwZjg1
MzFjNDExM2U1NDJiMjZlOWYwYzliMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNEYXRlTWF0aC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNEYXRlTWF0aC5jcHAKQEAgLTQzNCwxMiArNDM0LDE4IEBAIFJlZjxEYXRlSW5zdGFuY2VE
YXRhPiBEYXRlQ2FjaGU6OmNhY2hlZERhdGVJbnN0YW5jZURhdGEoZG91YmxlIG1pbGxpc2Vjb25k
c0Zyb21FCiB2b2lkIERhdGVDYWNoZTo6dGltZVpvbmVDYWNoZVNsb3coKQogewogICAgIEFTU0VS
VCghbV90aW1lWm9uZUNhY2hlKTsKKworICAgIFZlY3RvcjxVQ2hhciwgMzI+IHRpbWVab25lSUQ7
CisgICAgZ2V0VGltZVpvbmVPdmVycmlkZSh0aW1lWm9uZUlEKTsKICNpZiBIQVZFKElDVV9DX1RJ
TUVaT05FX0FQSSkKICAgICBhdXRvKiBjYWNoZSA9IG5ldyBPcGFxdWVJQ1VUaW1lWm9uZTsKIAog
ICAgIFN0cmluZyBjYW5vbmljYWw7Ci0gICAgVmVjdG9yPFVDaGFyLCAzMj4gdGltZVpvbmVJRDsK
LSAgICBhdXRvIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1Y2FsX2dldEhv
c3RUaW1lWm9uZSwgdGltZVpvbmVJRCk7CisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9f
RVJST1I7CisgICAgaWYgKHRpbWVab25lSUQuaXNFbXB0eSgpKSB7CisgICAgICAgIHN0YXR1cyA9
IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1Y2FsX2dldEhvc3RUaW1lWm9uZSwgdGltZVpv
bmVJRCk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoc3RhdHVzLCBVX1NVQ0NFU1Moc3RhdHVzKSk7
CisgICAgfQogICAgIGlmIChVX1NVQ0NFU1Moc3RhdHVzKSkgewogICAgICAgICBWZWN0b3I8VUNo
YXIsIDMyPiBjYW5vbmljYWxCdWZmZXI7CiAgICAgICAgIGF1dG8gc3RhdHVzID0gY2FsbEJ1ZmZl
clByb2R1Y2luZ0Z1bmN0aW9uKHVjYWxfZ2V0Q2Fub25pY2FsVGltZVpvbmVJRCwgdGltZVpvbmVJ
RC5kYXRhKCksIHRpbWVab25lSUQuc2l6ZSgpLCBjYW5vbmljYWxCdWZmZXIsIG51bGxwdHIpOwpA
QCAtNDU2LDYgKzQ2MiwxMCBAQCB2b2lkIERhdGVDYWNoZTo6dGltZVpvbmVDYWNoZVNsb3coKQog
ICAgIHVjYWxfc2V0R3JlZ29yaWFuQ2hhbmdlKGNhY2hlLT5tX2NhbGVuZGFyLmdldCgpLCBtaW5F
Q01BU2NyaXB0VGltZSwgJnN0YXR1cyk7IC8vIElnbm9yZSAidW5zdXBwb3J0ZWQiIGVycm9yLgog
ICAgIG1fdGltZVpvbmVDYWNoZSA9IHN0ZDo6dW5pcXVlX3B0cjxPcGFxdWVJQ1VUaW1lWm9uZSwg
T3BhcXVlSUNVVGltZVpvbmVEZWxldGVyPihjYWNoZSk7CiAjZWxzZQorICAgIGlmICghdGltZVpv
bmVJRC5pc0VtcHR5KCkpIHsKKyAgICAgICAgbV90aW1lWm9uZUNhY2hlID0gc3RkOjp1bmlxdWVf
cHRyPE9wYXF1ZUlDVVRpbWVab25lLCBPcGFxdWVJQ1VUaW1lWm9uZURlbGV0ZXI+KHRvT3BhcXVl
SUNVVGltZVpvbmUoaWN1OjpUaW1lWm9uZTo6Y3JlYXRlVGltZVpvbmUoaWN1OjpVbmljb2RlU3Ry
aW5nKHRpbWVab25lSUQuZGF0YSgpLCB0aW1lWm9uZUlELnNpemUoKSkpKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CiAgICAgLy8gRG8gbm90IHVzZSBpY3U6OlRpbWVab25lOjpjcmVhdGVEZWZh
dWx0LiBJQ1UgaW50ZXJuYWxseSBoYXMgYSBjYWNoZSBmb3IgdGltZXpvbmUgYW5kIGNyZWF0ZURl
ZmF1bHQgcmV0dXJucyB0aGlzIGNhY2hlZCB2YWx1ZS4KICAgICBtX3RpbWVab25lQ2FjaGUgPSBz
dGQ6OnVuaXF1ZV9wdHI8T3BhcXVlSUNVVGltZVpvbmUsIE9wYXF1ZUlDVVRpbWVab25lRGVsZXRl
cj4odG9PcGFxdWVJQ1VUaW1lWm9uZShpY3U6OlRpbWVab25lOjpkZXRlY3RIb3N0VGltZVpvbmUo
KSkpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5jcHAgYi9T
b3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5jcHAKaW5kZXggNzM1NDY3MTA4ZTMwNDBiYjFkMjNlOWJh
MWE3YWI4YTIxNDFhOGY2Ni4uM2U3NjQ0ZDFkMjMyZjhmYzFhNmIxNTcyMTg5ZGQzNjY0NDVhNGU3
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRGF0ZU1hdGguY3BwCisrKyBiL1NvdXJjZS9X
VEYvd3RmL0RhdGVNYXRoLmNwcApAQCAtNzYsOSArNzYsMTUgQEAKICNpbmNsdWRlIDxsaW1pdHM+
CiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8dGltZS5oPgorI2luY2x1ZGUgPHVuaWNv
ZGUvdWNhbC5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0FT
Q0lJQ1R5cGUuaD4KKyNpbmNsdWRlIDx3dGYvTGFuZ3VhZ2UuaD4KKyNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU3BlY2lmaWMuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3VuaWNvZGUvVVRGOENv
bnZlcnNpb24uaD4KKyNpbmNsdWRlIDx3dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5oPgogCiAj
aWYgT1MoV0lORE9XUykKICNpbmNsdWRlIDx3aW5kb3dzLmg+CkBAIC05Miw2ICs5OCwxMyBAQCB0
ZW1wbGF0ZTx1bnNpZ25lZCBsZW5ndGg+IGlubGluZSBib29sIHN0YXJ0c1dpdGhMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UoY29uc3QgYwogICAgIHJldHVybiBlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShzdHJpbmcsIGxvd2VyY2FzZUxldHRlcnMsIGxlbmd0aCAtIDEpOwogfQogCitzdGF0
aWMgTG9jayBpbm5lclRpbWVab25lT3ZlcnJpZGVMb2NrOworc3RhdGljIFZlY3RvcjxVQ2hhcj4m
IGlubmVyVGltZVpvbmVPdmVycmlkZSgpIFdURl9SRVFVSVJFU19MT0NLKGlubmVyVGltZVpvbmVP
dmVycmlkZUxvY2spCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxVQ2hhcj4+
IHRpbWVab25lT3ZlcnJpZGU7CisgICAgcmV0dXJuIHRpbWVab25lT3ZlcnJpZGU7Cit9CisKIC8q
IENvbnN0YW50cyAqLwogCiBjb25zdCBBU0NJSUxpdGVyYWwgd2Vla2RheU5hbWVbN10gPSB7ICJN
b24iX3MsICJUdWUiX3MsICJXZWQiX3MsICJUaHUiX3MsICJGcmkiX3MsICJTYXQiX3MsICJTdW4i
X3MgfTsKQEAgLTEwMTYsNCArMTAyOSw0NiBAQCBTdHJpbmcgbWFrZVJGQzI4MjJEYXRlU3RyaW5n
KHVuc2lnbmVkIGRheU9mV2VlaywgdW5zaWduZWQgZGF5LCB1bnNpZ25lZCBtb250aCwgdQogICAg
IHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKK3N0YXRpYyBzdGQ6Om9wdGlv
bmFsPFZlY3RvcjxVQ2hhciwgMzI+PiB2YWxpZGF0ZVRpbWVab25lKFN0cmluZ1ZpZXcgdGltZVpv
bmUpCit7CisgICAgVmVjdG9yPFVDaGFyLCAzMj4gYnVmZmVyKHRpbWVab25lLmxlbmd0aCgpKTsK
KyAgICB0aW1lWm9uZS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChidWZmZXIuZGF0YSgpKTsK
KworICAgIFZlY3RvcjxVQ2hhciwgMzI+IGNhbm9uaWNhbEJ1ZmZlcjsKKyAgICBhdXRvIHN0YXR1
cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1Y2FsX2dldENhbm9uaWNhbFRpbWVab25l
SUQsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCksIGNhbm9uaWNhbEJ1ZmZlciwgbnVsbHB0
cik7CisgICAgaWYgKCFVX1NVQ0NFU1Moc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKyAgICByZXR1cm4gV1RGTW92ZShjYW5vbmljYWxCdWZmZXIpOworfQorCitib29sIGlz
VGltZVpvbmVWYWxpZChTdHJpbmdWaWV3IHRpbWVab25lKQoreworICAgIHJldHVybiB2YWxpZGF0
ZVRpbWVab25lKHRpbWVab25lKS5oYXNfdmFsdWUoKTsKK30KKworYm9vbCBzZXRUaW1lWm9uZU92
ZXJyaWRlKFN0cmluZ1ZpZXcgdGltZVpvbmUpCit7CisgICAgaWYgKHRpbWVab25lLmlzRW1wdHko
KSkgeworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgaW5uZXJUaW1lWm9uZU92ZXJyaWRlTG9jayB9
OworICAgICAgICBpbm5lclRpbWVab25lT3ZlcnJpZGUoKS5jbGVhcigpOworICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBhdXRvIGNhbm9uaWNhbEJ1ZmZlciA9IHZhbGlkYXRlVGlt
ZVpvbmUodGltZVpvbmUpOworICAgIGlmICghY2Fub25pY2FsQnVmZmVyKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICB7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBpbm5lclRpbWVab25l
T3ZlcnJpZGVMb2NrIH07CisgICAgICAgIGlubmVyVGltZVpvbmVPdmVycmlkZSgpID0gV1RGTW92
ZSgqY2Fub25pY2FsQnVmZmVyKTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQg
Z2V0VGltZVpvbmVPdmVycmlkZShWZWN0b3I8VUNoYXIsIDMyPiYgdGltZVpvbmVJRCkKK3sKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgaW5uZXJUaW1lWm9uZU92ZXJyaWRlTG9jayB9OworICAgIHRpbWVa
b25lSUQgPSBpbm5lclRpbWVab25lT3ZlcnJpZGUoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RG
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5oIGIvU291cmNlL1dURi93dGYv
RGF0ZU1hdGguaAppbmRleCAxNzRlNmMwN2I2ZjVjZjRiY2YwNDY5ZjIwZjhjZjAyMWJlZDI1MTAz
Li5iMGE5NzIzYzg1NDBlNjA4ZDNjOTI2YTNmODViMzU4NjEzZjgzNjY4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmgK
QEAgLTM5MywzMSArMzkzLDM4IEBAIGlubGluZSBkb3VibGUgdGltZVRvTVMoZG91YmxlIGhvdXIs
IGRvdWJsZSBtaW4sIGRvdWJsZSBzZWMsIGRvdWJsZSBtcykKICAgICByZXR1cm4gKCgoaG91ciAq
IFdURjo6bWludXRlc1BlckhvdXIgKyBtaW4pICogV1RGOjpzZWNvbmRzUGVyTWludXRlICsgc2Vj
KSAqIFdURjo6bXNQZXJTZWNvbmQgKyBtcyk7CiB9CiAKK1dURl9FWFBPUlRfUFJJVkFURSBib29s
IGlzVGltZVpvbmVWYWxpZChTdHJpbmdWaWV3KTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIHNl
dFRpbWVab25lT3ZlcnJpZGUoU3RyaW5nVmlldyk7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBn
ZXRUaW1lWm9uZU92ZXJyaWRlKFZlY3RvcjxVQ2hhciwgMzI+JiB0aW1lWm9uZUlEKTsKKwogLy8g
UmV0dXJucyBjb21iaW5lZCBvZmZzZXQgaW4gbWlsbGlzZWNvbmQgKFVUQyArIERTVCkuCiBXVEZf
RVhQT1JUX1BSSVZBVEUgTG9jYWxUaW1lT2Zmc2V0IGNhbGN1bGF0ZUxvY2FsVGltZU9mZnNldChk
b3VibGUgdXRjSW5NaWxsaXNlY29uZHMsIFRpbWVUeXBlID0gVVRDVGltZSk7CiAKIH0gLy8gbmFt
ZXNwYWNlIFdURgogCi11c2luZyBXVEY6OmlzTGVhcFllYXI7Cit1c2luZyBXVEY6OmNhbGN1bGF0
ZUxvY2FsVGltZU9mZnNldDsKIHVzaW5nIFdURjo6ZGF0ZVRvRGF5c0Zyb20xOTcwOwogdXNpbmcg
V1RGOjpkYXlJbk1vbnRoRnJvbURheUluWWVhcjsKIHVzaW5nIFdURjo6ZGF5SW5ZZWFyOwordXNp
bmcgV1RGOjpnZXRUaW1lWm9uZU92ZXJyaWRlOwordXNpbmcgV1RGOjppc0xlYXBZZWFyOwordXNp
bmcgV1RGOjppc1RpbWVab25lVmFsaWQ7Cit1c2luZyBXVEY6OmpzQ3VycmVudFRpbWU7Cit1c2lu
ZyBXVEY6OkxvY2FsVGltZU9mZnNldDsKK3VzaW5nIFdURjo6bWFrZVJGQzI4MjJEYXRlU3RyaW5n
OwogdXNpbmcgV1RGOjptaW51dGVzUGVySG91cjsKIHVzaW5nIFdURjo6bW9udGhGcm9tRGF5SW5Z
ZWFyOwogdXNpbmcgV1RGOjptc1BlckRheTsKIHVzaW5nIFdURjo6bXNQZXJIb3VyOwogdXNpbmcg
V1RGOjptc1Blck1pbnV0ZTsKIHVzaW5nIFdURjo6bXNQZXJTZWNvbmQ7Ci11c2luZyBXVEY6Om1z
VG9ZZWFyOwogdXNpbmcgV1RGOjptc1RvRGF5czsKLXVzaW5nIFdURjo6bXNUb01pbnV0ZXM7CiB1
c2luZyBXVEY6Om1zVG9Ib3VyczsKK3VzaW5nIFdURjo6bXNUb01pbnV0ZXM7Cit1c2luZyBXVEY6
Om1zVG9ZZWFyOwordXNpbmcgV1RGOjpwYXJzZURhdGVGcm9tTnVsbFRlcm1pbmF0ZWRDaGFyYWN0
ZXJzOwogdXNpbmcgV1RGOjpzZWNvbmRzUGVyRGF5OwogdXNpbmcgV1RGOjpzZWNvbmRzUGVyTWlu
dXRlOwotdXNpbmcgV1RGOjpwYXJzZURhdGVGcm9tTnVsbFRlcm1pbmF0ZWRDaGFyYWN0ZXJzOwot
dXNpbmcgV1RGOjp0aW1lVG9NUzsKLXVzaW5nIFdURjo6bWFrZVJGQzI4MjJEYXRlU3RyaW5nOwot
dXNpbmcgV1RGOjpMb2NhbFRpbWVPZmZzZXQ7Ci11c2luZyBXVEY6OmNhbGN1bGF0ZUxvY2FsVGlt
ZU9mZnNldDsKK3VzaW5nIFdURjo6c2V0VGltZVpvbmVPdmVycmlkZTsKIHVzaW5nIFdURjo6dGlt
ZUNsaXA7Ci11c2luZyBXVEY6OmpzQ3VycmVudFRpbWU7Cit1c2luZyBXVEY6OnRpbWVUb01TOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcAppbmRleCA1MTQyZTJjNjA5NTMxZTVhZjgwOWM0NmRhNmZjNDI2NTBjZTRkNjlhLi45
Y2E4MTExYTIwNDRlNWE2YjExOTcxN2Q1YTRkOTc3YjVkODgxNDg1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAt
MjE0LDYgKzIxNCw4IEBAIHZvaWQgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2Rl
KElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICNpZiBVU0UoQVRTUEkpCiAgICAgZW5jb2Rl
ciA8PCBhY2Nlc3NpYmlsaXR5QnVzQWRkcmVzczsKICNlbmRpZgorCisgICAgZW5jb2RlciA8PCB0
aW1lWm9uZU92ZXJyaWRlOwogfQogCiBib29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6
OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMmIHBhcmFtZXRlcnMpCkBAIC01NzEsNiArNTczLDEyIEBAIGJvb2wgV2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgV2ViUHJvY2Vzc0Ny
ZWF0CiAgICAgcGFyYW1ldGVycy5hY2Nlc3NpYmlsaXR5QnVzQWRkcmVzcyA9IFdURk1vdmUoKmFj
Y2Vzc2liaWxpdHlCdXNBZGRyZXNzKTsKICNlbmRpZgogCisgICAgc3RkOjpvcHRpb25hbDxTdHJp
bmc+IHRpbWVab25lT3ZlcnJpZGU7CisgICAgZGVjb2RlciA+PiB0aW1lWm9uZU92ZXJyaWRlOwor
ICAgIGlmICghdGltZVpvbmVPdmVycmlkZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHBh
cmFtZXRlcnMudGltZVpvbmVPdmVycmlkZSA9IFdURk1vdmUoKnRpbWVab25lT3ZlcnJpZGUpOwor
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCA4ZDM3MmNiNjYxOWMyODQ5YmQ0NjFm
MjQzYTUxYTg2Nzk0OGQ5NzIzLi4yOWRhMjNkODNlNTYwMjhmYmIwMDlkOTc1ZTUwZmY5OTkyOTc0
NGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5oCkBAIC0yNTUsNiArMjU1LDggQEAgc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMgewogI2lmIFVTRShBVFNQSSkKICAgICBTdHJpbmcgYWNjZXNzaWJpbGl0eUJ1
c0FkZHJlc3M7CiAjZW5kaWYKKworICAgIFN0cmluZyB0aW1lWm9uZU92ZXJyaWRlOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwCmluZGV4IGNmZDljMzk4
MTMzN2M3ZGQwMmM2MjNjZThiYTY4NmVhMzZiYmZmYjkuLmExNmZlMTNjMDg1NzYxOTRlYzhjNDNl
OWRhZTYyYTIwNTY2OTA0YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwCkBAIC04NCw2ICs4NCw3
IEBAIFJlZjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IFByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bjo6Y29weSgpCiAjaWYgSEFWRShBVURJVF9UT0tFTikKICAgICBjb3B5LT5tX3ByZXNlbnRpbmdB
cHBsaWNhdGlvblByb2Nlc3NUb2tlbiA9IHRoaXMtPm1fcHJlc2VudGluZ0FwcGxpY2F0aW9uUHJv
Y2Vzc1Rva2VuOwogI2VuZGlmCisgICAgY29weS0+bV90aW1lWm9uZU92ZXJyaWRlID0gdGhpcy0+
bV90aW1lWm9uZU92ZXJyaWRlOwogICAgIHJldHVybiBjb3B5OwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
LmgKaW5kZXggY2M2NDJjNTFiYTY2M2U4NDNkZjU0ZDE0Y2ZjY2I2ZDRlZjgxNzI2Yy4uYzc3OWQw
NDU1MDBiYjJhYzllZmU1MzVjMmMzYzY0YjY0YTZlMTIxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaApA
QCAtMTY0LDYgKzE2NCw5IEBAIHB1YmxpYzoKICAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPE1lbW9y
eVByZXNzdXJlSGFuZGxlcjo6Q29uZmlndXJhdGlvbj4mIG1lbW9yeVByZXNzdXJlSGFuZGxlckNv
bmZpZ3VyYXRpb24oKSBjb25zdCB7IHJldHVybiBtX21lbW9yeVByZXNzdXJlSGFuZGxlckNvbmZp
Z3VyYXRpb247IH0KICNlbmRpZgogCisgICAgdm9pZCBzZXRUaW1lWm9uZU92ZXJyaWRlKGNvbnN0
IFdURjo6U3RyaW5nJiB0aW1lWm9uZU92ZXJyaWRlKSB7IG1fdGltZVpvbmVPdmVycmlkZSA9IHRp
bWVab25lT3ZlcnJpZGU7IH0KKyAgICBjb25zdCBXVEY6OlN0cmluZyYgdGltZVpvbmVPdmVycmlk
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZVpvbmVPdmVycmlkZTsgfQorCiBwcml2YXRlOgogICAg
IFdURjo6U3RyaW5nIG1faW5qZWN0ZWRCdW5kbGVQYXRoOwogICAgIFZlY3RvcjxXVEY6OlN0cmlu
Zz4gbV9jdXN0b21DbGFzc2VzRm9yUGFyYW1ldGVyQ29kZXI7CkBAIC0yMDYsNiArMjA5LDcgQEAg
cHJpdmF0ZToKICNpZiBIQVZFKEFVRElUX1RPS0VOKQogICAgIHN0ZDo6b3B0aW9uYWw8YXVkaXRf
dG9rZW5fdD4gbV9wcmVzZW50aW5nQXBwbGljYXRpb25Qcm9jZXNzVG9rZW47CiAjZW5kaWYKKyAg
ICBXVEY6OlN0cmluZyBtX3RpbWVab25lT3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBB
UEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dENv
bmZpZ3VyYXRpb25SZWYuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0Q29uZmlndXJhdGlvblJlZi5jcHAKaW5kZXggNmRlZTI4YmU1ZjY2ZjhlMGFkOTEwNTBiYzU1
OTg5ZDM3YWU1Mjk0MS4uNjNlMDZhN2RhMmRjNTIwYWY1ZTM0YWMzZmU2MmY1MjVjODQxZmU5NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0Q29uZmln
dXJhdGlvblJlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0Q29uZmlndXJhdGlvblJlZi5jcHAKQEAgLTIyMiwzICsyMjIsMTMgQEAgdm9pZCBXS0NvbnRl
eHRDb25maWd1cmF0aW9uU2V0U2hvdWxkQ29uZmlndXJlSlNDRm9yVGVzdGluZyhXS0NvbnRleHRD
b25maWd1cmF0aW8KIHsKICAgICB0b0ltcGwoY29uZmlndXJhdGlvbiktPnNldFNob3VsZENvbmZp
Z3VyZUpTQ0ZvclRlc3RpbmcodmFsdWUpOwogfQorCitXS1N0cmluZ1JlZiBXS0NvbnRleHRDb25m
aWd1cmF0aW9uQ29weVRpbWVab25lT3ZlcnJpZGUoV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZiBj
b25maWd1cmF0aW9uKQoreworICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwoY29uZmlndXJh
dGlvbiktPnRpbWVab25lT3ZlcnJpZGUoKSk7Cit9CisKK3ZvaWQgV0tDb250ZXh0Q29uZmlndXJh
dGlvblNldFRpbWVab25lT3ZlcnJpZGUoV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZiBjb25maWd1
cmF0aW9uLCBXS1N0cmluZ1JlZiB0aW1lWm9uZU92ZXJyaWRlKQoreworICAgIHRvSW1wbChjb25m
aWd1cmF0aW9uKS0+c2V0VGltZVpvbmVPdmVycmlkZSh0b0ltcGwodGltZVpvbmVPdmVycmlkZSkt
PnN0cmluZygpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuaAppbmRleCAwZDFiMTY0NjAzNGIxNDc3Yjgz
M2FlYzZjMjY0M2QyMWY4MDExNDk5Li5hOTEyMWI4YWRiNTIzNWUzZTc5MzczNTY5ZGZjYTQ1Mjg4
ZmFmZWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRl
eHRDb25maWd1cmF0aW9uUmVmLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5oCkBAIC05NSw2ICs5NSw5IEBAIFdLX0VYUE9SVCB2
b2lkIFdLQ29udGV4dENvbmZpZ3VyYXRpb25TZXREaXNrQ2FjaGVTaXplT3ZlcnJpZGUoV0tDb250
ZXh0Q29uZmlndXJhCiAgICAgCiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRDb25maWd1cmF0aW9u
U2V0U2hvdWxkQ29uZmlndXJlSlNDRm9yVGVzdGluZyhXS0NvbnRleHRDb25maWd1cmF0aW9uUmVm
IGNvbmZpZ3VyYXRpb24sIGJvb2wgdmFsdWUpOwogCitXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tD
b250ZXh0Q29uZmlndXJhdGlvbkNvcHlUaW1lWm9uZU92ZXJyaWRlKFdLQ29udGV4dENvbmZpZ3Vy
YXRpb25SZWYgY29uZmlndXJhdGlvbik7CitXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRDb25maWd1
cmF0aW9uU2V0VGltZVpvbmVPdmVycmlkZShXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmIGNvbmZp
Z3VyYXRpb24sIFdLU3RyaW5nUmVmIHRpbWVab25lT3ZlcnJpZGUpOworCiAjaWZkZWYgX19jcGx1
c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCmluZGV4IDc4NDk4
M2MxMDNiMjljYTNjNzc0YzYyMDQ5MjY1OTRlYmM4ZGZlZTQuLmE0YjZkNzU3ZTA2NjMzNGFmOThk
ZWMyMThhYzUyMjYxYjlkNWNjZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgKQEAg
LTI0LDYgKzI0LDcgQEAKICAqLwogCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4K
KyNpbXBvcnQgPFdlYktpdC9XS0Jhc2UuaD4KICNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24u
aD4KIAogTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KQEAgLTc3LDYgKzc4LDggQEAgV0tfQ0xBU1Nf
QVZBSUxBQkxFKG1hY29zKDEwLjEwKSwgaW9zKDguMCkpCiAKIEBwcm9wZXJ0eSAobm9uYXRvbWlj
KSBCT09MIGNvbmZpZ3VyZUpTQ0ZvclRlc3RpbmcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4x
NS40KSwgaW9zKDEzLjQpKTsKIAorQHByb3BlcnR5IChub25hdG9taWMsIG51bGxhYmxlLCBjb3B5
KSBOU1N0cmluZyAqdGltZVpvbmVPdmVycmlkZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01B
Q19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiBAZW5kCiAKIE5TX0FTU1VNRV9OT05OVUxMX0VO
RApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nl
c3NQb29sQ29uZmlndXJhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubW0KaW5kZXggOTJiNTA5YWQ0ODJmNGQzYjVh
NjlhMDBiMGZkMjNjNGQwYWFiMTZhZS4uY2I3NDQ1YjdmZTgxNGZlZmY1MGExNGI4ZGQyNWY1YTMy
ZjcwYTE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1tCkBAIC00MDMsNiArNDAz
LDE2IEBACiAgICAgX3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi0+c2V0U2hvdWxkQ29uZmlndXJl
SlNDRm9yVGVzdGluZyh2YWx1ZSk7CiB9CiAKKy0gKE5TU3RyaW5nICopdGltZVpvbmVPdmVycmlk
ZQoreworICAgIHJldHVybiBfcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLT50aW1lWm9uZU92ZXJy
aWRlKCk7Cit9CisKKy0gKHZvaWQpc2V0VGltZVpvbmVPdmVycmlkZTooTlNTdHJpbmcgKil0aW1l
Wm9uZQoreworICAgIF9wcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24tPnNldFRpbWVab25lT3ZlcnJp
ZGUodGltZVpvbmUpOworfQorCiAjcHJhZ21hIG1hcmsgV0tPYmplY3QgcHJvdG9jb2wgaW1wbGVt
ZW50YXRpb24KIAogLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKaW5kZXggODEy
OTE4NjNjZmUxMTZiNzIzMTA0NTIyZWIwZmJmNTM5Y2E5ZDViYS4uYTE1OGExMGU2NzNjNzU0YjMw
ZjM2NzhlM2JhZDU2NTNjOWUyZjhkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTY1LDYgKzY1LDcgQEAKICNp
bmNsdWRlIDxsaWJpbnRsLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHBhbC9IeXN0
ZXJlc2lzQWN0aXZpdHkuaD4KKyNpbmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4KICNpbmNsdWRlIDx3
dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KQEAgLTEyNyw2ICsxMjgsNyBAQCBlbnVtIHsKICNlbmRpZgogI2VuZGlmCiAg
ICAgUFJPUF9NRU1PUllfUFJFU1NVUkVfU0VUVElOR1MsCisgICAgUFJPUF9USU1FX1pPTkVfT1ZF
UlJJREUsCiAgICAgTl9QUk9QRVJUSUVTLAogfTsKIApAQCAtMjQ1LDYgKzI0Nyw4IEBAIHN0cnVj
dCBfV2ViS2l0V2ViQ29udGV4dFByaXZhdGUgewogICAgIFBBTDo6SHlzdGVyZXNpc0FjdGl2aXR5
IGRuc1ByZWZldGNoSHlzdGVyZXJpczsKIAogICAgIFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGlu
Z3MqIG1lbW9yeVByZXNzdXJlU2V0dGluZ3M7CisKKyAgICBTdHJpbmcgdGltZVpvbmVPdmVycmlk
ZTsKIH07CiAKIHN0YXRpYyBndWludCBzaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwgfTsKQEAg
LTM1MCw2ICszNTQsOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJDb250ZXh0R2V0UHJvcGVydHko
R09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSUQsIEdWYWx1ZSogdgogICAgICAgICBicmVhazsK
ICNlbmRpZgogI2VuZGlmCisgICAgY2FzZSBQUk9QX1RJTUVfWk9ORV9PVkVSUklERToKKyAgICAg
ICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZhbHVlLCB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3RpbWVf
em9uZV9vdmVycmlkZShjb250ZXh0KSk7CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAg
ICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJRCwg
cGFyYW1TcGVjKTsKICAgICB9CkBAIC0zODUsNiArMzkyLDExIEBAIHN0YXRpYyB2b2lkIHdlYmtp
dFdlYkNvbnRleHRTZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJRCwgY29u
c3QgR1ZhCiAgICAgICAgIGNvbnRleHQtPnByaXYtPm1lbW9yeVByZXNzdXJlU2V0dGluZ3MgPSBz
ZXR0aW5ncyA/IHdlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfY29weShzdGF0aWNfY2Fz
dDxXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzKj4oc2V0dGluZ3MpKSA6IG51bGxwdHI7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBjYXNlIFBST1BfVElNRV9aT05FX09WRVJSSURFOiB7
CisgICAgICAgIGlmIChjb25zdCBhdXRvKiBvdmVycmlkZSA9IGdfdmFsdWVfZ2V0X3N0cmluZyh2
YWx1ZSkpCisgICAgICAgICAgICB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3RpbWVfem9uZV9vdmVy
cmlkZShjb250ZXh0LCBvdmVycmlkZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBkZWZh
dWx0OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBw
cm9wSUQsIHBhcmFtU3BlYyk7CiAgICAgfQpAQCAtNDEzLDYgKzQyNSw3IEBAIHN0YXRpYyB2b2lk
IHdlYmtpdFdlYkNvbnRleHRDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAgICAgICAgIC8v
IE9uY2UgdGhlIHNldHRpbmdzIGhhdmUgYmVlbiBwYXNzZWQgdG8gdGhlIFByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbiwgd2UgZG9uJ3QgbmVlZCB0aGVtIGFueW1vcmUgc28gd2UgY2FuIGZyZWUgdGhl
bS4KICAgICAgICAgZ19jbGVhcl9wb2ludGVyKCZwcml2LT5tZW1vcnlQcmVzc3VyZVNldHRpbmdz
LCB3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2ZyZWUpOwogICAgIH0KKyAgICBjb25m
aWd1cmF0aW9uLnNldFRpbWVab25lT3ZlcnJpZGUocHJpdi0+dGltZVpvbmVPdmVycmlkZSk7CiAK
ICAgICBpZiAoIXByaXYtPndlYnNpdGVEYXRhTWFuYWdlcikKICAgICAgICAgcHJpdi0+d2Vic2l0
ZURhdGFNYW5hZ2VyID0gYWRvcHRHUmVmKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9uZXco
ImxvY2FsLXN0b3JhZ2UtZGlyZWN0b3J5IiwgcHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5LmRh
dGEoKSwgbnVsbHB0cikpOwpAQCAtNTcyLDYgKzU4NSwyOCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRf
d2ViX2NvbnRleHRfY2xhc3NfaW5pdChXZWJLaXRXZWJDb250ZXh0Q2xhc3MqIHdlYkNvbnRleHRD
bGFzcwogICAgICAgICAgICAgV0VCS0lUX1RZUEVfTUVNT1JZX1BSRVNTVVJFX1NFVFRJTkdTLAog
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9XUklUQUJM
RSB8IEdfUEFSQU1fQ09OU1RSVUNUX09OTFkpKTsKIAorICAgIC8qKgorICAgICAqIFdlYktpdFdl
YkNvbnRleHQ6dGltZS16b25lLW92ZXJyaWRlOgorICAgICAqCisgICAgICogVGhlIHRpbWV6b25l
IG92ZXJyaWRlIGZvciB0aGlzIHdlYiBjb250ZXh0LiBTZXR0aW5nIHRoaXMgcHJvcGVydHkgcHJv
dmlkZXMgYSBiZXR0ZXIKKyAgICAgKiBhbHRlcm5hdGl2ZSB0byBjb25maWd1cmUgdGhlIHRpbWV6
b25lIGluZm9ybWF0aW9uIGZvciBhbGwgd2Vidmlld3MgbWFuYWdlZCBieSB0aGUgV2ViQ29udGV4
dC4KKyAgICAgKiBUaGUgb3RoZXIsIGxlc3Mgb3B0aW1hbCwgYXBwcm9hY2ggaXMgdG8gZ2xvYmFs
bHkgc2V0IHRoZSBUWiBlbnZpcm9ubWVudCB2YXJpYWJsZSBpbiB0aGUKKyAgICAgKiBwcm9jZXNz
IGJlZm9yZSBjcmVhdGluZyB0aGUgY29udGV4dC4gSG93ZXZlciB0aGlzIGFwcHJvYWNoIG1pZ2h0
IG5vdCBiZSB2ZXJ5IGNvbnZlbmllbnQgYW5kCisgICAgICogY2FuIGhhdmUgc2lkZS1lZmZlY3Rz
IGluIHlvdXIgYXBwbGljYXRpb24uCisgICAgICoKKyAgICAgKiBUaGUgZXhwZWN0ZWQgdmFsdWVz
IGZvciB0aGlzIHByb3BlcnR5IGFyZSBkZWZpbmVkIGluIHRoZSBJQU5BIHRpbWV6b25lIGRhdGFi
YXNlLiBTZWUgdGhpcworICAgICAqIHdpa2lwZWRpYSBwYWdlIGZvciBpbnN0YW5jZSwgaHR0cHM6
Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGlzdF9vZl90el9kYXRhYmFzZV90aW1lX3pvbmVzLgor
ICAgICAqCisgICAgICogU2luY2U6IDIuMzgKKyAgICAgKi8KKyAgICBzT2JqUHJvcGVydGllc1tQ
Uk9QX1RJTUVfWk9ORV9PVkVSUklERV0gPQorICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKAor
ICAgICAgICAgICAgInRpbWUtem9uZS1vdmVycmlkZSIsCisgICAgICAgICAgICBfKCJUaW1lIFpv
bmUgT3ZlcnJpZGUiKSwKKyAgICAgICAgICAgIF8oIlRoZSB0aW1lIHpvbmUgdG8gdXNlIGluc3Rl
YWQgb2YgdGhlIHN5c3RlbSBvbmUiKSwKKyAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAg
ICBzdGF0aWNfY2FzdDxHUGFyYW1GbGFncz4oV0VCS0lUX1BBUkFNX1JFQURXUklURSB8IEdfUEFS
QU1fQ09OU1RSVUNUX09OTFkpKTsKKwogICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVy
dGllcyhnT2JqZWN0Q2xhc3MsIE5fUFJPUEVSVElFUywgc09ialByb3BlcnRpZXMpOwogCiAgICAg
LyoqCkBAIC0xODM1LDYgKzE4NzAsMzkgQEAgZ2Jvb2xlYW4gd2Via2l0X3dlYl9jb250ZXh0X2dl
dF91c2Vfc3lzdGVtX2FwcGVhcmFuY2VfZm9yX3Njcm9sbGJhcnMoV2ViS2l0V2ViQ28KIH0KICNl
bmRpZgogCisvKioKKyAqIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfdGltZV96b25lX292ZXJyaWRl
OgorICogQGNvbnRleHQ6IGEgI1dlYktpdFdlYkNvbnRleHQKKyAqIEB0aW1lX3pvbmVfb3ZlcnJp
ZGU6IHZhbHVlIHRvIHNldAorICoKKyAqIFNldCB0aGUgI1dlYktpdFdlYkNvbnRleHQ6dGltZS16
b25lLW92ZXJyaWRlIHByb3BlcnR5LiBSZWZlciB0byB0aGUgSUFOQSBkYXRhYmFzZSBmb3IgdmFs
aWQKKyAqIHNwZWNpZmllcnMsIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xpc3Rfb2Zf
dHpfZGF0YWJhc2VfdGltZV96b25lcworICoKKyAqIFNpbmNlOiAyLjM4CisgKi8KK3ZvaWQgd2Vi
a2l0X3dlYl9jb250ZXh0X3NldF90aW1lX3pvbmVfb3ZlcnJpZGUoV2ViS2l0V2ViQ29udGV4dCog
Y29udGV4dCwgY29uc3QgZ2NoYXIqIHRpbWVab25lT3ZlcnJpZGUpCit7CisgICAgZ19yZXR1cm5f
aWZfZmFpbChXRUJLSVRfSVNfV0VCX0NPTlRFWFQoY29udGV4dCkpOworICAgIGdfcmV0dXJuX2lm
X2ZhaWwoaXNUaW1lWm9uZVZhbGlkKHRpbWVab25lT3ZlcnJpZGUpKTsKKworICAgIGNvbnRleHQt
PnByaXYtPnRpbWVab25lT3ZlcnJpZGUgPSBTdHJpbmc6OmZyb21VVEY4KHRpbWVab25lT3ZlcnJp
ZGUpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfdGltZV96b25lX292ZXJy
aWRlOgorICogQGNvbnRleHQ6IGEgI1dlYktpdFdlYkNvbnRleHQKKyAqCisgKiBHZXQgdGhlICNX
ZWJLaXRXZWJDb250ZXh0OnRpbWUtem9uZS1vdmVycmlkZSBwcm9wZXJ0eS4KKyAqCisgKiBTaW5j
ZTogMi4zOAorICovCitjb25zdCBnY2hhciogd2Via2l0X3dlYl9jb250ZXh0X2dldF90aW1lX3pv
bmVfb3ZlcnJpZGUoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBnX3JldHVybl92
YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0NPTlRFWFQoY29udGV4dCksIG51bGxwdHIpOworCisg
ICAgcmV0dXJuIGNvbnRleHQtPnByaXYtPnRpbWVab25lT3ZlcnJpZGUudXRmOCgpLmRhdGEoKTsK
K30KKwogdm9pZCB3ZWJraXRXZWJDb250ZXh0SW5pdGlhbGl6ZU5vdGlmaWNhdGlvblBlcm1pc3Np
b25zKFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgZ19zaWduYWxfZW1pdChjb250
ZXh0LCBzaWduYWxzW0lOSVRJQUxJWkVfTk9USUZJQ0FUSU9OX1BFUk1JU1NJT05TXSwgMCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRl
eHQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5o
CmluZGV4IGJkZDkxMjU1Y2NkODJlYTU3NzQyMjI3ODNiNTk0NzZhMzFiY2ZiMmUuLjk3YTRkNThm
MjY3Nzc0M2FjOGE5Yjk2ZGQ0ZTBiYTNkOGEwNGQyYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oCkBAIC0zMDIsNiArMzAyLDEz
IEBAIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfdXNlX3N5c3RlbV9hcHBlYXJhbmNlX2Zvcl9zY3Jv
bGxiYXJzIChXZWJLaXRXZWJDb250ZXh0CiBXRUJLSVRfQVBJIGdib29sZWFuCiB3ZWJraXRfd2Vi
X2NvbnRleHRfZ2V0X3VzZV9zeXN0ZW1fYXBwZWFyYW5jZV9mb3Jfc2Nyb2xsYmFycyAoV2ViS2l0
V2ViQ29udGV4dCAgICAgICpjb250ZXh0KTsKIAorV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2Vi
X2NvbnRleHRfc2V0X3RpbWVfem9uZV9vdmVycmlkZSAgICAgICAgICAgKFdlYktpdFdlYkNvbnRl
eHQgICAgICAgICAgICAgICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAgICAgICAgICAqdGlt
ZV96b25lX292ZXJyaWRlKTsKKworV0VCS0lUX0FQSSBjb25zdCBnY2hhcioKK3dlYmtpdF93ZWJf
Y29udGV4dF9nZXRfdGltZV96b25lX292ZXJyaWRlICAgICAgICAgICAoV2ViS2l0V2ViQ29udGV4
dCAgICAgICAgICAgICAgKmNvbnRleHQpOworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViQ29udGV4dC5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJDb250ZXh0LmgKaW5k
ZXggNjg0MWMwNzlhYTRiNjFkODljMDhiMWE5NjlmOTEzN2Q5YjhhMDQzNC4uZWE1NWY4NzZjMzFl
YmQwYmViZWI0YmJmZGNhY2M5MzdhOWM3OTdiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJDb250ZXh0LmgKQEAgLTI5MSw2ICsyOTEsMTMgQEAg
V0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRfd2ViX2NvbnRleHRfc2VuZF9tZXNzYWdlX3RvX2FsbF9l
eHRlbnNpb25zICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICAgICAgICpjb250ZXh0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRV
c2VyTWVzc2FnZSAgICAgICAgICAgICAqbWVzc2FnZSk7CiAKK1dFQktJVF9BUEkgdm9pZAord2Vi
a2l0X3dlYl9jb250ZXh0X3NldF90aW1lX3pvbmVfb3ZlcnJpZGUgICAgICAgICAgIChXZWJLaXRX
ZWJDb250ZXh0ICAgICAgICAgICAgICAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgICAgICAg
ICAgKnRpbWVfem9uZV9vdmVycmlkZSk7CisKK1dFQktJVF9BUEkgY29uc3QgZ2NoYXIqCit3ZWJr
aXRfd2ViX2NvbnRleHRfZ2V0X3RpbWVfem9uZV9vdmVycmlkZSAgICAgICAgICAgKFdlYktpdFdl
YkNvbnRleHQgICAgICAgICAgICAgICpjb250ZXh0KTsKKwogR19FTkRfREVDTFMKIAogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggNDU5NmVk
ZmEyNmFhNTlmOWQ5Mzk5Y2Y4MDIzNmYyY2Q0MTZlNjUwOC4uZGVlOGY0NmU0MGM3OTg5MmNmNzZl
MjA0MzAwOTRiYmRiMWQ3OWM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcApAQCAtOTEzLDYgKzkxMyw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmluaXRp
YWxpemVOZXdXZWJQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgV2Vic2l0ZURhCiAK
ICAgICBwYXJhbWV0ZXJzLnByZXNlbnRpbmdBcHBsaWNhdGlvblBJRCA9IG1fY29uZmlndXJhdGlv
bi0+cHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKCk7CiAKKyAgICBwYXJhbWV0ZXJzLnRpbWVab25l
T3ZlcnJpZGUgPSBtX2NvbmZpZ3VyYXRpb24tPnRpbWVab25lT3ZlcnJpZGUoKTsKKwogICAgIC8v
IEFkZCBhbnkgcGxhdGZvcm0gc3BlY2lmaWMgcGFyYW1ldGVycwogICAgIHBsYXRmb3JtSW5pdGlh
bGl6ZVdlYlByb2Nlc3MocHJvY2VzcywgcGFyYW1ldGVycyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCAzOTUzZTllZDgzNGI5NDhmZjllMjJlNzMyZGFiMDUy
NTIzNTVhNmY1Li5kZDQzYzEyYTM2ZTNhYWRlNTY0YWYyZWMwYjg5YWVjOGI4NzgyZTUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xNDIsNiArMTQyLDcgQEAK
ICNpbmNsdWRlIDxwYWwvTG9nZ2luZy5oPgogI2luY2x1ZGUgPHd0Zi9BbGdvcml0aG1zLmg+CiAj
aW5jbHVkZSA8d3RmL0NhbGxiYWNrQWdncmVnYXRvci5oPgorI2luY2x1ZGUgPHd0Zi9EYXRlTWF0
aC5oPgogI2luY2x1ZGUgPHd0Zi9MYW5ndWFnZS5oPgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzUHJp
dmlsZWdlLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTUwNSw2ICs1MDYsOSBAQCB2
b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogCiAgICAgc2V0Q2FjaGVNb2RlbChwYXJhbWV0ZXJzLmNh
Y2hlTW9kZWwpOwogCisgICAgaWYgKCFwYXJhbWV0ZXJzLnRpbWVab25lT3ZlcnJpZGUuaXNFbXB0
eSgpKQorICAgICAgICBzZXRUaW1lWm9uZU92ZXJyaWRlKHBhcmFtZXRlcnMudGltZVpvbmVPdmVy
cmlkZSk7CisKICAgICBpZiAoIXBhcmFtZXRlcnMub3ZlcnJpZGVMYW5ndWFnZXMuaXNFbXB0eSgp
KSB7CiAgICAgICAgIExPR19XSVRIX1NUUkVBTShMYW5ndWFnZSwgc3RyZWFtIDw8ICJXZWIgUHJv
Y2VzcyBpbml0aWFsaXphdGlvbiBpcyBzZXR0aW5nIG92ZXJyaWRlTGFuZ3VhZ2VzOiAiIDw8IHBh
cmFtZXRlcnMub3ZlcnJpZGVMYW5ndWFnZXMpOwogICAgICAgICBvdmVycmlkZVVzZXJQcmVmZXJy
ZWRMYW5ndWFnZXMocGFyYW1ldGVycy5vdmVycmlkZUxhbmd1YWdlcyk7CmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjQxMGYyOTk2OTVkOTIxZmI3
MDBhODMzNmZhYmUzMjZiNjVhMDM3ZS4uNDkwZmVmNzllMmNkYmZiNWJkMmY1YWUwNGJmYjQyMzkw
MWIyZTEzNCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDM2IEBACisyMDIyLTA0LTI3ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1h
bmRAaWdhbGlhLmNvbT4gYW5kIFl1cnkgU2VtaWtoYXRza3kgPHl1cnlzQGNocm9taXVtLm9yZz4K
KworICAgICAgICBbV0syXSBBZGQgQVBJIHRvIGFsbG93IGVtYmVkZGVyIHRvIHNldCBhIHRpbWV6
b25lIG92ZXJyaWRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTM4ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgQVBJIHRlc3RzIGZvciB0aGUgdGltZXpvbmUgY29uZmlndXJhdGlvbiBBUEkuIFRo
ZSBHVEsgYW5kIFdQRSBNaW5pQnJvd3NlcnMgYWxzbyBnYWluZWQKKyAgICAgICAgbmV3IHJ1bnRp
bWUgb3B0aW9ucyBhbGxvd2luZyB0byBleGVyY2lzZSB0aGlzIG5ldyBBUEkuCisKKyAgICAgICAg
KiBNaW5pQnJvd3Nlci9ndGsvbWFpbi5jOgorICAgICAgICAoYWN0aXZhdGUpOgorICAgICAgICAq
IE1pbmlCcm93c2VyL3dwZS9tYWluLmNwcDoKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1RpbWVab25lT3ZlcnJpZGUubW06IEFkZGVkLgorICAg
ICAgICAoVGltZVpvbmVPdmVycmlkZVRlc3Q6OnJ1blNjcmlwdEFuZEV4ZWN1dGVDYWxsYmFjayk6
CisgICAgICAgIChUaW1lWm9uZU92ZXJyaWRlVGVzdDo6Y2FsbEFzeW5jRnVuY3Rpb25Cb2R5KToK
KyAgICAgICAgKFRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1Rlc3RXZWJLaXRXZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKHRlc3RXZWJDb250ZXh0VGlt
ZVpvbmVPdmVycmlkZSk6CisgICAgICAgICh0ZXN0V2ViQ29udGV4dFRpbWVab25lT3ZlcnJpZGVJ
bldvcmtlcik6CisgICAgICAgIChiZWZvcmVBbGwpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
Z2xpYi9XZWJLaXRHTGliL1Rlc3RNYWluLmNwcDoKKyAgICAgICAgKG1haW4pOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmNwcDoKKyAgICAgICAg
KHJ1bkphdmFTY3JpcHRSZWFkeUNhbGxiYWNrKToKKyAgICAgICAgKFdlYlZpZXdUZXN0OjpydW5K
YXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
Z2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0Lmg6CisgICAgICAgICogZmxhdHBhay9mbGF0cGFr
dXRpbHMucHk6CisgICAgICAgIChXZWJraXRGbGF0cGFrLnJ1bl9pbl9zYW5kYm94KToKKwogMjAy
Mi0wNC0yOSAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAg
W2dpdC13ZWJraXRdIFJlZGFjdCBidWcgdGl0bGUgaW4gYnJhbmNoIG5hbWUgb24gYWx0ZXJuYXRl
IHJlbW90ZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMgYi9Ub29s
cy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCmluZGV4IDllNzg2M2I2MWIzZTlkYjc2ZTA0ZTE0ZjQ1
MTE2Njg0ZGFlNDRlMzcuLjgxN2U4ZmVjN2UxOGIzZmJkZTg1YWE1MzQyNjNkZWY2MDQ1OGIxYTgg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMKKysrIGIvVG9vbHMvTWlu
aUJyb3dzZXIvZ3RrL21haW4uYwpAQCAtNTIsNiArNTIsNyBAQCBzdGF0aWMgY29uc3QgY2hhciAq
Y29va2llc0ZpbGU7CiBzdGF0aWMgY29uc3QgY2hhciAqY29va2llc1BvbGljeTsKIHN0YXRpYyBj
b25zdCBjaGFyICpwcm94eTsKIHN0YXRpYyBnYm9vbGVhbiBkYXJrTW9kZTsKK3N0YXRpYyBjaGFy
KiB0aW1lWm9uZTsKIHN0YXRpYyBnYm9vbGVhbiBlbmFibGVJVFA7CiBzdGF0aWMgZ2Jvb2xlYW4g
ZW5hYmxlU2FuZGJveDsKIHN0YXRpYyBnYm9vbGVhbiBleGl0QWZ0ZXJMb2FkOwpAQCAtMTQ5LDYg
KzE1MCw3IEBAIHN0YXRpYyBjb25zdCBHT3B0aW9uRW50cnkgY29tbWFuZExpbmVPcHRpb25zW10g
PQogICAgIHsgImVuYWJsZS1pdHAiLCAwLCAwLCBHX09QVElPTl9BUkdfTk9ORSwgJmVuYWJsZUlU
UCwgIkVuYWJsZSBJbnRlbGxpZ2VudCBUcmFja2luZyBQcmV2ZW50aW9uIChJVFApIiwgTlVMTCB9
LAogICAgIHsgImVuYWJsZS1zYW5kYm94IiwgMCwgMCwgR19PUFRJT05fQVJHX05PTkUsICZlbmFi
bGVTYW5kYm94LCAiRW5hYmxlIHdlYiBwcm9jZXNzIHNhbmRib3ggc3VwcG9ydCIsIE5VTEwgfSwK
ICAgICB7ICJleGl0LWFmdGVyLWxvYWQiLCAwLCAwLCBHX09QVElPTl9BUkdfTk9ORSwgJmV4aXRB
ZnRlckxvYWQsICJRdWl0IHRoZSBicm93c2VyIGFmdGVyIHRoZSBsb2FkIGZpbmlzaGVzIiwgTlVM
TCB9LAorICAgIHsgInRpbWUtem9uZSIsICd0JywgMCwgR19PUFRJT05fQVJHX1NUUklORywgJnRp
bWVab25lLCAiU2V0IHRpbWUgem9uZSIsICJUSU1FWk9ORSIgfSwKICAgICB7ICJ2ZXJzaW9uIiwg
J3YnLCAwLCBHX09QVElPTl9BUkdfTk9ORSwgJnByaW50VmVyc2lvbiwgIlByaW50IHRoZSBXZWJL
aXRHVEsgdmVyc2lvbiIsIE5VTEwgfSwKICAgICB7IEdfT1BUSU9OX1JFTUFJTklORywgMCwgMCwg
R19PUFRJT05fQVJHX0ZJTEVOQU1FX0FSUkFZLCAmdXJpQXJndW1lbnRzLCAwLCAiW1VSTOKApl0i
IH0sCiAgICAgeyAwLCAwLCAwLCAwLCAwLCAwLCAwIH0KQEAgLTY3NCw2ICs2NzYsNyBAQCBzdGF0
aWMgdm9pZCBhY3RpdmF0ZShHQXBwbGljYXRpb24gKmFwcGxpY2F0aW9uLCBXZWJLaXRTZXR0aW5n
cyAqd2Via2l0U2V0dGluZ3MpCiAjaWYgIUdUS19DSEVDS19WRVJTSU9OKDMsIDk4LCAwKQogICAg
ICAgICAidXNlLXN5c3RlbS1hcHBlYXJhbmNlLWZvci1zY3JvbGxiYXJzIiwgRkFMU0UsCiAjZW5k
aWYKKyAgICAgICAgInRpbWUtem9uZS1vdmVycmlkZSIsIHRpbWVab25lLAogICAgICAgICBOVUxM
KTsKICAgICBnX29iamVjdF91bnJlZihtYW5hZ2VyKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvTWlu
aUJyb3dzZXIvd3BlL21haW4uY3BwIGIvVG9vbHMvTWluaUJyb3dzZXIvd3BlL21haW4uY3BwCmlu
ZGV4IDQ1ODRkOTU3M2JhN2QxMWQyMjQ5ZjE3NTUyZWU1Yzk0N2FmNTM5ZDIuLmNkMWQzNjQ3Yzhi
ZmFhNmNjOTY0MmNlNjMwNjBhNWFhNmM1OTQ3OTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93
c2VyL3dwZS9tYWluLmNwcAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci93cGUvbWFpbi5jcHAKQEAg
LTQ2LDYgKzQ2LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGNvb2tpZXNGaWxlOwogc3RhdGljIGNv
bnN0IGNoYXIqIGNvb2tpZXNQb2xpY3k7CiBzdGF0aWMgY29uc3QgY2hhciogcHJveHk7CiBjb25z
dCBjaGFyKiBiZ0NvbG9yOworc3RhdGljIGNoYXIqIHRpbWVab25lOwogc3RhdGljIGdib29sZWFu
IGVuYWJsZUlUUDsKIHN0YXRpYyBnYm9vbGVhbiBwcmludFZlcnNpb247CiBzdGF0aWMgR0hhc2hU
YWJsZSogb3BlblZpZXdzOwpAQCAtNjMsNiArNjQsNyBAQCBzdGF0aWMgY29uc3QgR09wdGlvbkVu
dHJ5IGNvbW1hbmRMaW5lT3B0aW9uc1tdID0KICAgICB7ICJjb250ZW50LWZpbHRlciIsIDAsIDAs
IEdfT1BUSU9OX0FSR19GSUxFTkFNRSwgJmNvbnRlbnRGaWx0ZXIsICJKU09OIHdpdGggY29udGVu
dCBmaWx0ZXJpbmcgcnVsZXMiLCAiRklMRSIgfSwKICAgICB7ICJiZy1jb2xvciIsIDAsIDAsIEdf
T1BUSU9OX0FSR19TVFJJTkcsICZiZ0NvbG9yLCAiV2luZG93IGJhY2tncm91bmQgY29sb3IuIERl
ZmF1bHQ6IHdoaXRlIiwgIkNPTE9SIiB9LAogICAgIHsgImVuYWJsZS1pdHAiLCAwLCAwLCBHX09Q
VElPTl9BUkdfTk9ORSwgJmVuYWJsZUlUUCwgIkVuYWJsZSBJbnRlbGxpZ2VudCBUcmFja2luZyBQ
cmV2ZW50aW9uIChJVFApIiwgbnVsbHB0ciB9LAorICAgIHsgInRpbWUtem9uZSIsICd0JywgMCwg
R19PUFRJT05fQVJHX1NUUklORywgJnRpbWVab25lLCAiU2V0IHRpbWUgem9uZSIsICJUSU1FWk9O
RSIgfSwKICAgICB7ICJ2ZXJzaW9uIiwgJ3YnLCAwLCBHX09QVElPTl9BUkdfTk9ORSwgJnByaW50
VmVyc2lvbiwgIlByaW50IHRoZSBXUEUgdmVyc2lvbiIsIG51bGxwdHIgfSwKICAgICB7IEdfT1BU
SU9OX1JFTUFJTklORywgMCwgMCwgR19PUFRJT05fQVJHX0ZJTEVOQU1FX0FSUkFZLCAmdXJpQXJn
dW1lbnRzLCBudWxscHRyLCAiW1VSTF0iIH0sCiAgICAgeyBudWxscHRyLCAwLCAwLCBHX09QVElP
Tl9BUkdfTk9ORSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9CkBAIC0yMjksNyArMjMxLDcg
QEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgICBpZiAoaWdub3JlVExTRXJy
b3JzKQogICAgICAgICB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfc2V0X3Rsc19lcnJvcnNf
cG9saWN5KG1hbmFnZXIsIFdFQktJVF9UTFNfRVJST1JTX1BPTElDWV9JR05PUkUpOwogCi0gICAg
YXV0byogd2ViQ29udGV4dCA9IHdlYmtpdF93ZWJfY29udGV4dF9uZXdfd2l0aF93ZWJzaXRlX2Rh
dGFfbWFuYWdlcihtYW5hZ2VyKTsKKyAgICBhdXRvKiB3ZWJDb250ZXh0ID0gV0VCS0lUX1dFQl9D
T05URVhUKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfQ09OVEVYVCwgIndlYnNpdGUtZGF0
YS1tYW5hZ2VyIiwgbWFuYWdlciwgInRpbWUtem9uZS1vdmVycmlkZSIsIHRpbWVab25lLCBudWxs
cHRyKSk7CiAgICAgZ19vYmplY3RfdW5yZWYobWFuYWdlcik7CiAKICAgICBpZiAoY29va2llc1Bv
bGljeSkgewpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Tb3VyY2VzQ29jb2EudHh0
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDM2YWQzNDc1YTkw
MzRlY2ZlZTdkNmY1ZWIyYzlkNzRjODA2YzJlMmQuLjAxNmMyYzQ3NmQxNTgzNWFlNDk0NGEyYmYy
MDcwY2YwMGMzNzBjODcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvU291cmNlc0Nv
Y29hLnR4dAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1NvdXJjZXNDb2NvYS50eHQKQEAgLTI0
MCw2ICsyNDAsNyBAQCBUZXN0cy9XZWJLaXRDb2NvYS9UZXN0VVJMU2NoZW1lSGFuZGxlci5tbQog
VGVzdHMvV2ViS2l0Q29jb2EvVGV4dE1hbmlwdWxhdGlvbi5tbQogVGVzdHMvV2ViS2l0Q29jb2Ev
VGV4dFNpemUubW0KIFRlc3RzL1dlYktpdENvY29hL1RleHRXaWR0aC5tbQorVGVzdHMvV2ViS2l0
Q29jb2EvVGltZVpvbmVPdmVycmlkZS5tbQogVGVzdHMvV2ViS2l0Q29jb2EvVG9wQ29udGVudElu
c2V0Lm1tCiBUZXN0cy9XZWJLaXRDb2NvYS9VSURlbGVnYXRlLm1tCiBUZXN0cy9XZWJLaXRDb2Nv
YS9VcGxvYWREaXJlY3RvcnkubW0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzU3N2Y3NmZl
ZTZjN2QyNzkwYmQ5M2QyZmQ5Nzc4Y2M4MWQ4N2ExNC4uOTgzNjkyM2EyY2IyNmIwMmI4YjZiN2Nj
YmEzYjI3YzQ2OGEyNDU4YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMwMzAsNiArMzAz
MCw3IEBACiAJCUVCQTc1QzQ4Mjc1RUQ3QkUwMEQ2RDMxQyAvKiBQdXNoTWVzc2FnZUNyeXB0by5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQdXNoTWVzc2FnZUNyeXB0by5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUVDNzlGMTY4QkU0NTRFNTc5RTQxN0IwNSAvKiBNYXJrYWJsZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXJrYWJsZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVDQTY4MENEMUU2OENDMDkwMDczMUQyMCAvKiBT
dHJpbmdVdGlsaXRpZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBTdHJpbmdVdGlsaXRpZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUYzQ0VG
NkI4MjgwOEYyRDMwMDFFMjNBNSAvKiBUaW1lWm9uZU92ZXJyaWRlLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gVGltZVpvbmVPdmVycmlkZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRjNGQzNFRTIxMzY3OEI3MzAwMTI2QTY1IC8qIGxpYmd0ZXN0LmEgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBhcmNoaXZlLmFyOyBwYXRoID0gbGli
Z3Rlc3QuYTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJRjQwMTBCN0Yy
NERBMjRBQzAwQTg3NkUyIC8qIE5hdmlnYXRpb25Td2lwZVRlc3RzLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTmF2aWdhdGlvblN3aXBlVGVzdHMubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0MDEwQjgxMjREQTI2N0YwMEE4NzZFMiAvKiBQb3Nl
QXNDbGFzcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFBvc2VB
c0NsYXNzLm1tOyBwYXRoID0gLi4vVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9Qb3NlQXNDbGFzcy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM3MDEsNiArMzcwMiw3IEBACiAJCQkJ
OUIwMkUwRDUyMzVGQTQ3RDAwNDA0NEIyIC8qIFRleHRNYW5pcHVsYXRpb24ubW0gKi8sCiAJCQkJ
NUMxNkY4RkIyMzBDOTQyQjAwNzRDNEE4IC8qIFRleHRTaXplLm1tICovLAogCQkJCUMyMkZBMzJB
MjI4Rjg3MDgwMDlENzk4OCAvKiBUZXh0V2lkdGgubW0gKi8sCisJCQkJRjNDRUY2QjgyODA4RjJE
MzAwMUUyM0E1IC8qIFRpbWVab25lT3ZlcnJpZGUubW0gKi8sCiAJCQkJNUM3M0E4MUEyMzIzMDU5
ODAwREVBODVBIC8qIFRMU0RlcHJlY2F0aW9uLm1tICovLAogCQkJCUNERTE5NUIzMUNGRTBBREUw
MDUzRDI1NiAvKiBUb3BDb250ZW50SW5zZXQubW0gKi8sCiAJCQkJNUNCNDBCNEQxRjRCOThCRTAw
N0RDN0I5IC8qIFVJRGVsZWdhdGUubW0gKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1RpbWVab25lT3ZlcnJpZGUubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1RpbWVab25lT3ZlcnJpZGUubW0KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YjZmODAxNjFmNzQ1MWUxMDczYmVkNTY1ZTFiYmU4NDg0OWI3NjNlMgotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVGltZVpvbmVPdmVycmlk
ZS5tbQpAQCAtMCwwICsxLDEwNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBJZ2FsaWEg
Uy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2lmIFBMQVRGT1JNKENPQ09B
KQorCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdC5oIgorI2lt
cG9ydCAiVGVzdFdLV2ViVmlldy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb25Qcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgorI2lt
cG9ydCA8V2ViS2l0L19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oPgorI2ltcG9ydCA8d3Rm
L0Z1bmN0aW9uLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworY2xhc3MgVGlt
ZVpvbmVPdmVycmlkZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CitwdWJsaWM6CisgICAg
dm9pZCBTZXRVcCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgICAg
ICBhdXRvIHByb2Nlc3NQb29sQ29uZmlnID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmln
dXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgICAgICBbcHJvY2Vzc1Bvb2xDb25maWcgc2V0VGlt
ZVpvbmVPdmVycmlkZTpAIkV1cm9wZS9CZXJsaW4iXTsKKworICAgICAgICBfd2ViVmlldyA9IGFk
b3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgMzAwLCAzMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBwcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWcuZ2V0KCldKTsKKyAgICB9CisKKyAgICB2
b2lkIHJ1blNjcmlwdEFuZEV4ZWN1dGVDYWxsYmFjayhjb25zdCBTdHJpbmcmIHNjcmlwdCwgRnVu
Y3Rpb248dm9pZChpZCk+JiYgY2FsbGJhY2spCisgICAgeworICAgICAgICBib29sIGNvbXBsZXRl
ID0gZmFsc2U7CisgICAgICAgIFtfd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6c2NyaXB0IGNv
bXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAg
ICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0KTsK
KyAgICAgICAgICAgIGNvbXBsZXRlID0gdHJ1ZTsKKyAgICAgICAgfV07CisgICAgICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmY29tcGxldGUpOworICAgIH0KKworICAgIHZvaWQgY2FsbEFz
eW5jRnVuY3Rpb25Cb2R5KGNvbnN0IFN0cmluZyYgZnVuY3Rpb25Cb2R5LCBGdW5jdGlvbjx2b2lk
KGlkKT4mJiBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIGJvb2wgY29tcGxldGUgPSBmYWxzZTsK
KyAgICAgICAgW193ZWJWaWV3IGNhbGxBc3luY0phdmFTY3JpcHQ6ZnVuY3Rpb25Cb2R5IGFyZ3Vt
ZW50czpuaWwgaW5GcmFtZTpuaWwgaW5Db250ZW50V29ybGQ6V0tDb250ZW50V29ybGQucGFnZVdv
cmxkIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgewor
ICAgICAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICAgICAgY2FsbGJhY2socmVz
dWx0KTsKKyAgICAgICAgICAgIGNvbXBsZXRlID0gdHJ1ZTsKKyAgICAgICAgfV07CisgICAgICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmY29tcGxldGUpOworICAgIH0KKworCitwcml2YXRl
OgorICAgIFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiBfd2ViVmlldzsKK307CisKK1RFU1RfRihU
aW1lWm9uZU92ZXJyaWRlVGVzdCwgVGltZVpvbmVPdmVycmlkZSkKK3sKKyAgICBydW5TY3JpcHRB
bmRFeGVjdXRlQ2FsbGJhY2soImxldCBub3cgPSBuZXcgRGF0ZSgpOyBub3cuZ2V0VGltZXpvbmVP
ZmZzZXQoKSJfcywgW10oaWQgcmVzdWx0KSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShbcmVz
dWx0IHN0cmluZ1ZhbHVlXSwgIi0xMjAiKTsKKyAgICB9KTsKK30KKworVEVTVF9GKFRpbWVab25l
T3ZlcnJpZGVUZXN0LCBUaW1lWm9uZU92ZXJyaWRlSW5Xb3JrZXJzKQoreworICAgIFN0cmluZyBm
dW5jdGlvbkJvZHkgPQorICAgICAgICAicmV0dXJuIG5ldyBQcm9taXNlKGZ1bGZpbGwgPT4geyIK
KyAgICAgICAgIiAgY29uc3QgcmVzdWx0cyA9IFtdOyIKKyAgICAgICAgIiAgZm9yIChsZXQgaSA9
IDA7IGkgPCAzOyBpKyspIHsiCisgICAgICAgICIgICAgY29uc3Qgd29ya2VyID0gbmV3IFdvcmtl
cignZGF0YTp0ZXh0L2phdmFzY3JpcHQsc2VsZi5wb3N0TWVzc2FnZShJbnRsLkRhdGVUaW1lRm9y
bWF0KCkucmVzb2x2ZWRPcHRpb25zKCkudGltZVpvbmUpJyk7IgorICAgICAgICAiICAgIHdvcmtl
ci5vbm1lc3NhZ2UgPSBtZXNzYWdlID0+IHsiCisgICAgICAgICIgICAgICByZXN1bHRzLnB1c2go
bWVzc2FnZS5kYXRhKTsiCisgICAgICAgICIgICAgICBpZiAocmVzdWx0cy5sZW5ndGggPT09IDMp
IgorICAgICAgICAiICAgICAgICBmdWxmaWxsKHJlc3VsdHMuam9pbignLCAnKSk7IgorICAgICAg
ICAiICAgIH07IgorICAgICAgICAiICB9IgorICAgICAgICAifSk7Il9zOworICAgIGNhbGxBc3lu
Y0Z1bmN0aW9uQm9keShmdW5jdGlvbkJvZHksIFtdKGlkIHJlc3VsdCkgeworICAgICAgICBFWFBF
Q1RfVFJVRShbcmVzdWx0IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pOworICAgICAg
ICBFWFBFQ1RfV0tfU1RSRVEocmVzdWx0LCBAIkV1cm9wZS9CZXJsaW4sIEV1cm9wZS9CZXJsaW4s
IEV1cm9wZS9CZXJsaW4iKTsKKyAgICB9KTsKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYkNvbnRleHQuY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJDb250
ZXh0LmNwcAppbmRleCAzMTIwNzhmN2NhNGFhOTA3OWRiNDY4MzA5NDgwNWVhYmVmOTIzOGZlLi5i
MWI4N2QyYTk0ODkwYzcyYjgxYjFmMzMwNWQwMjhjOGJjOGYzOTg3IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYkNvbnRleHQuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2Vi
Q29udGV4dC5jcHAKQEAgLTk5MSw2ICs5OTEsNTggQEAgc3RhdGljIHZvaWQgdGVzdE1lbW9yeVBy
ZXNzdXJlU2V0dGluZ3MoTWVtb3J5UHJlc3N1cmVUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQog
ICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+bV90ZXJtaW5hdGlvblJlYXNvbiwgPT0sIFdFQktJ
VF9XRUJfUFJPQ0VTU19FWENFRURFRF9NRU1PUllfTElNSVQpOwogfQogCitzdGF0aWMgdm9pZCB0
ZXN0V2ViQ29udGV4dFRpbWVab25lT3ZlcnJpZGUoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBv
aW50ZXIpCit7CisgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOworICAgIFdlYktpdEph
dmFzY3JpcHRSZXN1bHQqIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5k
V2FpdFVudGlsRmluaXNoZWQoImxldCBub3cgPSBuZXcgRGF0ZSgpOyBub3cuZ2V0VGltZXpvbmVP
ZmZzZXQoKSIsICZlcnJvci5vdXRQdHIoKSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChqYXZhc2Ny
aXB0UmVzdWx0KTsKKyAgICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7CisgICAgLy8g
QnkgZGVmYXVsdCB0aGUgdGVzdCBoYXJuZXNzIHVzZXMgdGhlIFBhY2lmaWMvTG9zX0FuZ2VsZXMg
dGltZXpvbmUgd2hpY2ggaXMgNyBob3VycyAoNDIwIG1pbnV0ZXMpIGNvbXBhcmVkIHRvIEdNVC4K
KyAgICBnX2Fzc2VydF9jbXBpbnQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb051bWJl
cihqYXZhc2NyaXB0UmVzdWx0KSwgPT0sIDQyMCk7CisKKyAgICAvLyBDcmVhdGUgYSBuZXcgY29u
dGV4dCBjb25maWd1cmVkIHdpdGggdGltZSB6b25lIG92ZXJpZGUgc2V0IHRvIEJlcmxpbiB3aGlj
aCBpcyAxMjAgbWludXRlcyBhaGVhZCBvZiB0aGUgR01UIG9mZnNldC4KKyAgICBhdXRvIHdlYkNv
bnRleHQgPSBhZG9wdEdSZWYoV0VCS0lUX1dFQl9DT05URVhUKGdfb2JqZWN0X25ldyhXRUJLSVRf
VFlQRV9XRUJfQ09OVEVYVCwKKyAgICAgICAgInRpbWUtem9uZS1vdmVycmlkZSIsICJFdXJvcGUv
QmVybGluIiwgbnVsbHB0cikpKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3dlYl9jb250
ZXh0X2dldF90aW1lX3pvbmVfb3ZlcnJpZGUod2ViQ29udGV4dC5nZXQoKSksID09LCAiRXVyb3Bl
L0JlcmxpbiIpOworICAgIGF1dG8gd2ViVmlldyA9IFRlc3Q6OmFkb3B0VmlldyhUZXN0OjpjcmVh
dGVXZWJWaWV3KHdlYkNvbnRleHQuZ2V0KCkpKTsKKyAgICBqYXZhc2NyaXB0UmVzdWx0ID0gdGVz
dC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJsZXQgbm93ID0gbmV3IERhdGUo
KTsgbm93LmdldFRpbWV6b25lT2Zmc2V0KCkiLCAmZXJyb3Iub3V0UHRyKCksIHdlYlZpZXcuZ2V0
KCkpOworICAgIGdfYXNzZXJ0X25vbm51bGwoamF2YXNjcmlwdFJlc3VsdCk7CisgICAgZ19hc3Nl
cnRfbm9fZXJyb3IoZXJyb3IuZ2V0KCkpOworICAgIGdfYXNzZXJ0X2NtcGludChXZWJWaWV3VGVz
dDo6amF2YXNjcmlwdFJlc3VsdFRvTnVtYmVyKGphdmFzY3JpcHRSZXN1bHQpLCA9PSwgLTEyMCk7
Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RXZWJDb250ZXh0VGltZVpvbmVPdmVycmlkZUluV29ya2Vy
KFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAgIEdVbmlxdWVPdXRQdHI8
R0Vycm9yPiBlcnJvcjsKKyAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBqYXZhc2NyaXB0UmVz
dWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJJbnRsLkRhdGVU
aW1lRm9ybWF0KCkucmVzb2x2ZWRPcHRpb25zKCkudGltZVpvbmUiLCAmZXJyb3Iub3V0UHRyKCkp
OworICAgIGdfYXNzZXJ0X25vbm51bGwoamF2YXNjcmlwdFJlc3VsdCk7CisgICAgZ19hc3NlcnRf
bm9fZXJyb3IoZXJyb3IuZ2V0KCkpOworICAgIC8vIEJ5IGRlZmF1bHQgdGhlIHRlc3QgaGFybmVz
cyB1c2VzIHRoZSBQYWNpZmljL0xvc19BbmdlbGVzLgorICAgIGdfYXNzZXJ0X2NtcHN0cihXZWJW
aWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0cmluZyhqYXZhc2NyaXB0UmVzdWx0KSwgPT0s
ICJBbWVyaWNhL0xvc19BbmdlbGVzIik7CisgICAgLy8gQ3JlYXRlIGEgbmV3IGNvbnRleHQgY29u
ZmlndXJlZCB3aXRoIHRpbWUgem9uZSBvdmVyaWRlIHNldCB0byBCZXJsaW4gd2hpY2ggaXMgMTIw
IG1pbnV0ZXMgYWhlYWQgb2YgdGhlIEdNVCBvZmZzZXQuCisgICAgYXV0byB3ZWJDb250ZXh0ID0g
YWRvcHRHUmVmKFdFQktJVF9XRUJfQ09OVEVYVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VC
X0NPTlRFWFQsCisgICAgICAgICJ0aW1lLXpvbmUtb3ZlcnJpZGUiLCAiRXVyb3BlL0JlcmxpbiIs
IG51bGxwdHIpKSk7CisgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF93ZWJfY29udGV4dF9nZXRf
dGltZV96b25lX292ZXJyaWRlKHdlYkNvbnRleHQuZ2V0KCkpLCA9PSwgIkV1cm9wZS9CZXJsaW4i
KTsKKyAgICBhdXRvIHdlYlZpZXcgPSBUZXN0OjphZG9wdFZpZXcoVGVzdDo6Y3JlYXRlV2ViVmll
dyh3ZWJDb250ZXh0LmdldCgpKSk7CisKKyAgICB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVu
dGlsRmluaXNoZWQoCisgICAgICAgICJ3aW5kb3cucmVzdWx0cyA9IFtdOyIKKyAgICAgICAgImZv
ciAobGV0IGkgPSAwOyBpIDwgMzsgaSsrKSB7IgorICAgICAgICAiICBjb25zdCB3b3JrZXIgPSBu
ZXcgV29ya2VyKCdkYXRhOnRleHQvamF2YXNjcmlwdCxzZWxmLnBvc3RNZXNzYWdlKEludGwuRGF0
ZVRpbWVGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS50aW1lWm9uZSknKTsiCisgICAgICAgICIg
IHdvcmtlci5vbm1lc3NhZ2UgPSBtZXNzYWdlID0+IHJlc3VsdHMucHVzaChtZXNzYWdlLmRhdGEp
OyIKKyAgICAgICAgIn0iLCAmZXJyb3Iub3V0UHRyKCksIHdlYlZpZXcuZ2V0KCkpOworICAgIGRv
IHsKKyAgICAgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0
VW50aWxGaW5pc2hlZCgicmVzdWx0cy5sZW5ndGgiLCAmZXJyb3Iub3V0UHRyKCksIHdlYlZpZXcu
Z2V0KCkpOworICAgICAgICBnX2Fzc2VydF9ub25udWxsKGphdmFzY3JpcHRSZXN1bHQpOworICAg
ICAgICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7CisgICAgfSB3aGlsZSAoV2ViVmll
d1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb051bWJlcihqYXZhc2NyaXB0UmVzdWx0KSA8IDMpOwor
CisgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxG
aW5pc2hlZCgicmVzdWx0cy5qb2luKCcsICcpIiwgJmVycm9yLm91dFB0cigpLCB3ZWJWaWV3Lmdl
dCgpKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGphdmFzY3JpcHRSZXN1bHQpOworICAgIGdfYXNz
ZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIoV2ViVmlld1Rl
c3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCksID09LCAiRXVy
b3BlL0JlcmxpbiwgRXVyb3BlL0JlcmxpbiwgRXVyb3BlL0JlcmxpbiIpOworfQorCiB2b2lkIGJl
Zm9yZUFsbCgpCiB7CiAgICAga1NlcnZlciA9IG5ldyBXZWJLaXRUZXN0U2VydmVyKCk7CkBAIC0x
MDA4LDYgKzEwNjAsOCBAQCB2b2lkIGJlZm9yZUFsbCgpCiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgi
V2ViS2l0U2VjdXJpdHlNYW5hZ2VyIiwgImZpbGUteGhyIiwgdGVzdFdlYkNvbnRleHRTZWN1cml0
eUZpbGVYSFIpOwogICAgIFByb3h5VGVzdDo6YWRkKCJXZWJLaXRXZWJDb250ZXh0IiwgInByb3h5
IiwgdGVzdFdlYkNvbnRleHRQcm94eVNldHRpbmdzKTsKICAgICBNZW1vcnlQcmVzc3VyZVRlc3Q6
OmFkZCgiV2ViS2l0V2ViQ29udGV4dCIsICJtZW1vcnktcHJlc3N1cmUiLCB0ZXN0TWVtb3J5UHJl
c3N1cmVTZXR0aW5ncyk7CisgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViQ29udGV4dCIs
ICJ0aW1lem9uZSIsIHRlc3RXZWJDb250ZXh0VGltZVpvbmVPdmVycmlkZSk7CisgICAgV2ViVmll
d1Rlc3Q6OmFkZCgiV2ViS2l0V2ViQ29udGV4dCIsICJ0aW1lem9uZS13b3JrZXIiLCB0ZXN0V2Vi
Q29udGV4dFRpbWVab25lT3ZlcnJpZGVJbldvcmtlcik7CiB9CiAKIHZvaWQgYWZ0ZXJBbGwoKQpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvVGVzdE1haW4u
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvVGVzdE1haW4uY3BwCmlu
ZGV4IGU4NWIzYzFlZmRlNzIxMzM2MmRlNjk3ZDczMmM1MzZkNWQ3ZmZlMTkuLjM5NzQxNzQ2YTc1
NjNjOWNlMjg0ZDBlOWYyYTI5YjA1ZTNlZGM1MDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvZ2xpYi9XZWJLaXRHTGliL1Rlc3RNYWluLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL2dsaWIvV2ViS2l0R0xpYi9UZXN0TWFpbi5jcHAKQEAgLTEzMiw2ICsxMzIsNyBAQCBpbnQg
bWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAgICAgZ19zZXRlbnYoIkdTRVRUSU5HU19CQUNL
RU5EIiwgIm1lbW9yeSIsIFRSVUUpOwogICAgIC8vIEdldCByaWQgb2YgcnVudGltZSB3YXJuaW5n
cyBhYm91dCBkZXByZWNhdGVkIHByb3BlcnRpZXMgYW5kIHNpZ25hbHMsIHNpbmNlIHRoZXkgYnJl
YWsgdGhlIHRlc3RzLgogICAgIGdfc2V0ZW52KCJHX0VOQUJMRV9ESUFHTk9TVElDIiwgIjAiLCBU
UlVFKTsKKyAgICBnX3NldGVudigiVFoiLCAiQW1lcmljYS9Mb3NfQW5nZWxlcyIsIFRSVUUpOwog
ICAgIGdfdGVzdF9idWdfYmFzZSgiaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvIik7CiAKICAgICBy
ZWdpc3RlckdSZXNvdXJjZSgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGli
L1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dl
YktpdEdMaWIvV2ViVmlld1Rlc3QuY3BwCmluZGV4IDkwZjVkMzUxYzE3ZGRlOGEwYTFmZjhjMmEy
NGY5ZGJhMmFiNGYzNzguLmEyMWEwMDQyYjRjNzU1OWJjNzI1YzFmYWMwNjU4ZTQwM2MxOTFjYWYg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdU
ZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3
VGVzdC5jcHAKQEAgLTMwNiw5ICszMDYsOSBAQCBjb25zdCBjaGFyKiBXZWJWaWV3VGVzdDo6bWFp
blJlc291cmNlRGF0YShzaXplX3QmIG1haW5SZXNvdXJjZURhdGFTaXplKQogICAgIHJldHVybiBt
X3Jlc291cmNlRGF0YS5nZXQoKTsKIH0KIAotc3RhdGljIHZvaWQgcnVuSmF2YVNjcmlwdFJlYWR5
Q2FsbGJhY2soR09iamVjdCosIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBXZWJWaWV3VGVzdCogdGVz
dCkKK3N0YXRpYyB2b2lkIHJ1bkphdmFTY3JpcHRSZWFkeUNhbGxiYWNrKEdPYmplY3QqIG9iamVj
dCwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIFdlYlZpZXdUZXN0KiB0ZXN0KQogewotICAgIHRlc3Qt
Pm1famF2YXNjcmlwdFJlc3VsdCA9IHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlwdF9maW5p
c2godGVzdC0+bV93ZWJWaWV3LCByZXN1bHQsIHRlc3QtPm1famF2YXNjcmlwdEVycm9yKTsKKyAg
ICB0ZXN0LT5tX2phdmFzY3JpcHRSZXN1bHQgPSB3ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFzY3Jp
cHRfZmluaXNoKFdFQktJVF9XRUJfVklFVyhvYmplY3QpLCByZXN1bHQsIHRlc3QtPm1famF2YXNj
cmlwdEVycm9yKTsKICAgICBnX21haW5fbG9vcF9xdWl0KHRlc3QtPm1fbWFpbkxvb3ApOwogfQog
CkBAIC0zMjQsMTMgKzMyNCwxNSBAQCBzdGF0aWMgdm9pZCBydW5KYXZhU2NyaXB0SW5Xb3JsZFJl
YWR5Q2FsbGJhY2soR09iamVjdCosIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBXZQogICAgIGdfbWFp
bl9sb29wX3F1aXQodGVzdC0+bV9tYWluTG9vcCk7CiB9CiAKLVdlYktpdEphdmFzY3JpcHRSZXN1
bHQqIFdlYlZpZXdUZXN0OjpydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoY29uc3Qg
Y2hhciogamF2YXNjcmlwdCwgR0Vycm9yKiogZXJyb3IpCitXZWJLaXRKYXZhc2NyaXB0UmVzdWx0
KiBXZWJWaWV3VGVzdDo6cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKGNvbnN0IGNo
YXIqIGphdmFzY3JpcHQsIEdFcnJvcioqIGVycm9yLCBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQog
ewogICAgIGlmIChtX2phdmFzY3JpcHRSZXN1bHQpCiAgICAgICAgIHdlYmtpdF9qYXZhc2NyaXB0
X3Jlc3VsdF91bnJlZihtX2phdmFzY3JpcHRSZXN1bHQpOwogICAgIG1famF2YXNjcmlwdFJlc3Vs
dCA9IDA7CiAgICAgbV9qYXZhc2NyaXB0RXJyb3IgPSBlcnJvcjsKLSAgICB3ZWJraXRfd2ViX3Zp
ZXdfcnVuX2phdmFzY3JpcHQobV93ZWJWaWV3LCBqYXZhc2NyaXB0LCAwLCByZWludGVycHJldF9j
YXN0PEdBc3luY1JlYWR5Q2FsbGJhY2s+KHJ1bkphdmFTY3JpcHRSZWFkeUNhbGxiYWNrKSwgdGhp
cyk7CisgICAgaWYgKCF3ZWJWaWV3KQorICAgICAgICB3ZWJWaWV3ID0gbV93ZWJWaWV3OworICAg
IHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlwdCh3ZWJWaWV3LCBqYXZhc2NyaXB0LCAwLCBy
ZWludGVycHJldF9jYXN0PEdBc3luY1JlYWR5Q2FsbGJhY2s+KHJ1bkphdmFTY3JpcHRSZWFkeUNh
bGxiYWNrKSwgdGhpcyk7CiAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOwogCiAgICAg
cmV0dXJuIG1famF2YXNjcmlwdFJlc3VsdDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2ds
aWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5oCmluZGV4IGEyOGE1ZWRjOGQ0MGY1OGI1MDVhYjY0
YjFlZjQ4YWEwYjY1OTczMzMuLjAyZDU4NDk1ZDZkNzdiZmIzYTczYmEyOGI2YTVkOTMwYzQ2ZmYy
ZGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZp
ZXdUZXN0LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmll
d1Rlc3QuaApAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbWl0UG9wdXBNZW51
U2lnbmFsKCk7CiAjZW5kaWYKIAotICAgIFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIHJ1bkphdmFT
Y3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZChjb25zdCBjaGFyKiBqYXZhc2NyaXB0LCBHRXJyb3Iq
Kik7CisgICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogcnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRp
bEZpbmlzaGVkKGNvbnN0IGNoYXIqIGphdmFzY3JpcHQsIEdFcnJvcioqLCBXZWJLaXRXZWJWaWV3
KiA9IG51bGxwdHIpOwogICAgIFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIHJ1bkphdmFTY3JpcHRG
cm9tR1Jlc291cmNlQW5kV2FpdFVudGlsRmluaXNoZWQoY29uc3QgY2hhciogcmVzb3VyY2UsIEdF
cnJvcioqKTsKICAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBydW5KYXZhU2NyaXB0SW5Xb3Js
ZEFuZFdhaXRVbnRpbEZpbmlzaGVkKGNvbnN0IGNoYXIqIGphdmFzY3JpcHQsIGNvbnN0IGNoYXIq
IHdvcmxkLCBHRXJyb3IqKik7CiAgICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogcnVuSmF2YVNj
cmlwdFdpdGhvdXRGb3JjZWRVc2VyR2VzdHVyZXNBbmRXYWl0VW50aWxGaW5pc2hlZChjb25zdCBj
aGFyKiBqYXZhc2NyaXB0LCBHRXJyb3IqKik7CmRpZmYgLS1naXQgYS9Ub29scy9mbGF0cGFrL2Zs
YXRwYWt1dGlscy5weSBiL1Rvb2xzL2ZsYXRwYWsvZmxhdHBha3V0aWxzLnB5CmluZGV4IGFiMWRi
YTk4MjA2YmU4MTBiMWQ0ZTYwY2E3NDZkOWI3N2FiMmIwZWQuLjU2NjI2YTM2NjQxMmFiMzZmMGVm
Y2I3ZDM4ZTdkN2YxNjc1MWFhNmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2ZsYXRwYWsvZmxhdHBha3V0
aWxzLnB5CisrKyBiL1Rvb2xzL2ZsYXRwYWsvZmxhdHBha3V0aWxzLnB5CkBAIC04NTcsNyArODU3
LDcgQEAgY2xhc3MgV2Via2l0RmxhdHBhazoKICAgICAgICAgICAgIF0pCiAKICAgICAgICAgICAg
IHNhbmRib3hfZW52aXJvbm1lbnQudXBkYXRlKHsKLSAgICAgICAgICAgICAgICAiVFoiOiAiUFNU
OFBEVCIsCisgICAgICAgICAgICAgICAgIlRaIjogIkFtZXJpY2EvTG9zX0FuZ2VsZXMiLAogICAg
ICAgICAgICAgfSkKIAogICAgICAgICBlbnZfdmFyX3ByZWZpeGVzX3RvX2tlZXAgPSBbCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458694</attachid>
            <date>2022-05-02 11:22:36 -0700</date>
            <delta_ts>2022-05-03 10:07:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213884-20220502112235.patch</filename>
            <type>text/plain</type>
            <size>48390</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzNjI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
NTdmYmFiN2YwMzU5ODQwOGU0ZGYzNmM0NmYxMTVjZjI2NGE1ZmFmLi4xNmUxM2Q4ZTg4NmZhZTNh
NDk5MWMxZTBmNWRhNmIwYTU3ZmUxMzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAyMi0wNC0yNyAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxp
YS5jb20+IGFuZCBQYXZlbCBGZWxkbWFuIDxwYXZlbC5mZWxkbWFuQGdtYWlsLmNvbT4gYW5kIFl1
cnkgU2VtaWtoYXRza3kgPHl1cnlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBbV0syXSBBZGQg
QVBJIHRvIGFsbG93IGVtYmVkZGVyIHRvIHNldCBhIHRpbWV6b25lIG92ZXJyaWRlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM4ODQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHJ1bnRpbWUvRGF0ZUNv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToK
KyAgICAgICAgKiBydW50aW1lL0RhdGVDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKEpTQzo6Zm9y
bWF0RGF0ZVRpbWUpOiBGb3JtYXQgdGhlIG92ZXJyaWRkZW4gdGltZXpvbmUgaWYgaXQncyBlbmFi
bGVkLgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZUNvbnZlcnNpb24uaDoKKyAgICAgICAgKiBydW50
aW1lL0RhdGVQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpmb3JtYXRlRGF0ZUluc3RhbmNl
KToKKyAgICAgICAgKiBydW50aW1lL0pTRGF0ZU1hdGguY3BwOgorICAgICAgICAoSlNDOjp0b0lD
VVRpbWVab25lKToKKyAgICAgICAgKEpTQzo6dG9PcGFxdWVJQ1VUaW1lWm9uZSk6CisgICAgICAg
IChKU0M6Ok9wYXF1ZUlDVVRpbWVab25lRGVsZXRlcjo6b3BlcmF0b3IoKSk6CisgICAgICAgIChK
U0M6OkRhdGVDYWNoZTo6Y2FsY3VsYXRlTG9jYWxUaW1lT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6
RGF0ZUNhY2hlOjpkZWZhdWx0VGltZVpvbmUpOgorICAgICAgICAoSlNDOjpEYXRlQ2FjaGU6OnRp
bWVab25lRGlzcGxheU5hbWVPdmVycmlkZSk6CisgICAgICAgIChKU0M6OkRhdGVDYWNoZTo6dGlt
ZVpvbmVDYWNoZVNsb3cpOiBBcHBseSB0aW1lem9uZSBvdmVycmlkZSBpZiBpdCBpcyBzZXQuCisg
ICAgICAgIChKU0M6OkRhdGVDYWNoZTo6cmVzZXRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcnVu
dGltZS9KU0RhdGVNYXRoLmg6CisKKwogMjAyMi0wNC0yOSAgWXVyeSBTZW1pa2hhdHNreSAgPHl1
cnlzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBGb3JtYXQgdGltZSB6b25lIG5hbWUgdXNpbmcg
SUNVIGluc3RlYWQgb2YgcGxhdGZvcm0gY2FsbHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggYjdiOTQ2OGRiOTlmYmU1YjViYWUy
NjMwMDJhNDYwYzUwMGU4YzNiYi4uZjEwNzJjZmM5NGFiMmUyODExMTE4Y2Y2ODQwYWE0NTlkZmU2
ZmNiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAyMi0wNC0yNyAgUGhpbGlwcGUgTm9ybWFuZCAg
PHBub3JtYW5kQGlnYWxpYS5jb20+IGFuZCBQYXZlbCBGZWxkbWFuIDxwYXZlbC5mZWxkbWFuQGdt
YWlsLmNvbT4gYW5kIFl1cnkgU2VtaWtoYXRza3kgPHl1cnlzQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBbV0syXSBBZGQgQVBJIHRvIGFsbG93IGVtYmVkZGVyIHRvIHNldCBhIHRpbWV6b25lIG92
ZXJyaWRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTM4ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHd0Zi9EYXRlTWF0aC5jcHA6IE5ldyBBUElzIHRvIGNvbnRyb2wgYW5kIHF1ZXJ5IHRoZSB0aW1l
em9uZSBvdmVycmlkZS4KKyAgICAgICAgKFdURjo6aW5uZXJUaW1lWm9uZU92ZXJyaWRlKTogU3Rh
dGljIHN0b3JhZ2Ugb2YgdGhlIG92ZXJyaWRlIGluZm9ybWF0aW9ucy4KKyAgICAgICAgKFdURjo6
V1RGX1JFUVVJUkVTX0xPQ0spOgorICAgICAgICAoV1RGOjp2YWxpZGF0ZVRpbWVab25lKTogTmV3
IGZ1bmN0aW9uIGFsbG93aW5nIHRvIGNoZWNrIGlmIGEgdGltZXpvbmUgaWRlbnRpZmllciBpcyB2
YWxpZCBhY2NvcmRpbmcgdG8gSUNVJ3MgZGF0YWJhc2UgYW5kIGNvdmVydCBpdAorICAgICAgICB0
byBVQ2hhciBidWZmZXIgc3VpdGFibGUgZm9yIHBhc3NpbmcgdG8gdWNhbC4KKyAgICAgICAgKFdU
Rjo6aXNUaW1lWm9uZVZhbGlkKToKKyAgICAgICAgKFdURjo6c2V0VGltZVpvbmVPdmVycmlkZSk6
IE5ldyBBUEkgdG8gc2V0IHRoZSB0aW1lem9uZSBvdmVycmlkZSwgdGhpcyBpcyBtZWFudCB0byBi
ZQorICAgICAgICB1c2VkIG9uIG5ld2x5IGNyZWF0ZWQgV2ViUHJvY2Vzc2VzLiBJbiBhZGRpdGlv
biB0byBwcm92aWRpbmcgYWx0ZXJuYXRpdmUgbmFtZSBmb3IgdGhlIGNvZGUKKyAgICAgICAgdGhh
dCBjYWxscyBpbnRvIElDVSBsaWJyYXJ5LCBvbiBQT1NJWCBzeXN0ZW1zIHdyaXRlcyBuZXcgdGlt
ZXpvbmUgdG8gIlRaIiBlbnZpcm9uZW1lbnQKKyAgICAgICAgdmFyaWFibGUgdG8gYWRqdXN0IHJl
c3VsdCBvZiBzdHJmdGltZSAoY2FsbGVkIGluIGZvcm1hdERhdGVUaW1lKS4KKyAgICAgICAgKFdU
Rjo6Z2V0VGltZVpvbmVPdmVycmlkZSk6IFF1ZXJ5IHRoZSB0aW1lem9uZSBvdmVycmlkZS4KKyAg
ICAgICAgKiB3dGYvRGF0ZU1hdGguaDoKKwogMjAyMi0wNC0yOSAgUGhpbGlwcGUgTm9ybWFuZCAg
PHBoaWxuQGlnYWxpYS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjkzNjA4KTogW0dUS11b
V1BFXSBCcm9rZSBjbGFuZyBidWlsZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMDYxYzBlZmIwMWNhNTBkOTFkYTlk
MDA1ZDI5ZWM4MTQyNzUzZmVjNS4uMGYwM2YyN2I4N2Y5Y2Y1YWZkYzI3NmE3OTQwY2RkNzAwZmMz
M2I5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MiBAQAorMjAyMi0wNC0yNyAgUGhpbGlwcGUgTm9y
bWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+IGFuZCBZdXJ5IFNlbWlraGF0c2t5IDx5dXJ5c0Bj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1dLMl0gQWRkIEFQSSB0byBhbGxvdyBlbWJlZGRlciB0
byBzZXQgYSB0aW1lem9uZSBvdmVycmlkZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjEzODg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzOgorCisgICAgICAgIC0gbmV3IENvY29h
IEFQSQorICAgICAgICAtIG5ldyBHbGliIEFQSSAodGFyZ2V0dGluZyBib3RoIFdQRSBhbmQgR1RL
IHBvcnRzKQorICAgICAgICAtIG5ldyBDIEFQSSAoZm9yIHRoZSB3aW4gcG9ydCkKKworICAgICAg
ICB0aGF0IGFsbG93cyB0aGUgZW1iZWRkZXIgdG8gc2V0IGEgdGltZXpvbmUgb3ZlcnJpZGUgZm9y
IHRoZSB1bmRlcmx5aW5nIFBhZ2VDb25maWd1cmF0aW9uLgorICAgICAgICBTaW5jZSB0aGlzIEFQ
SSBpcyBub3QgZXhwb3NlZCBpbiBnbGliIHBvcnRzLCBhIG5ldyBjb250cnVjdC10aW1lLW9ubHkg
cHJvcGVydHkgd2FzIGFkZGVkIHRvCisgICAgICAgIHRoZSBXZWJLaXRXZWJDb250ZXh0IEFQSS4g
SXQgd291bGQgYWxzbyBhbGxvdyBmaW5lLWdyYWluZWQgY29udHJvbCBvdmVyIG11bHRpcGxlIHBh
Z2VzLCBmb3IKKyAgICAgICAgaW5zdGFuY2UgaXQncyBub3QgcG9zc2libGUgY3VycmVudGx5IHRv
IGhhdmUgdHdvIHBhZ2VzIGluIGRpZmZlcmVudCB0aW1lem9uZXMuCisKKyAgICAgICAgTm8gbmV3
IGxheW91dCB0ZXN0cywgdGhpcyBjaGFuZ2UgaXMgY292ZXJlZCBieSBuZXcgQVBJIHRlc3RzLgor
CisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUp
OgorICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwOgorICAg
ICAgICAoQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNvcHkpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL1dLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuY3BwOgorICAgICAgICAoV0tD
b250ZXh0Q29uZmlndXJhdGlvbkNvcHlUaW1lWm9uZU92ZXJyaWRlKToKKyAgICAgICAgKFdLQ29u
dGV4dENvbmZpZ3VyYXRpb25TZXRUaW1lWm9uZU92ZXJyaWRlKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0MvV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubW06CisgICAgICAg
ICgtW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiB0aW1lWm9uZU92ZXJyaWRlXSk6CisgICAg
ICAgICgtW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBzZXRUaW1lWm9uZU92ZXJyaWRlOl0p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcDoKKyAg
ICAgICAgKHdlYmtpdFdlYkNvbnRleHRHZXRQcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRXZWJD
b250ZXh0U2V0UHJvcGVydHkpOgorICAgICAgICAod2Via2l0V2ViQ29udGV4dENvbnN0cnVjdGVk
KToKKyAgICAgICAgKHdlYmtpdF93ZWJfY29udGV4dF9jbGFzc19pbml0KToKKyAgICAgICAgKHdl
YmtpdF93ZWJfY29udGV4dF9zZXRfdGltZV96b25lX292ZXJyaWRlKToKKyAgICAgICAgKHdlYmtp
dF93ZWJfY29udGV4dF9nZXRfdGltZV96b25lX292ZXJyaWRlKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93
cGUvV2ViS2l0V2ViQ29udGV4dC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjppbml0aWFsaXplTmV3V2Vi
UHJvY2Vzcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MpOiBBcHBseSB0aW1lem9u
ZSBvdmVycmlkZSBpZiBhbnkgb24gcHJvY2VzcyBzdGFydC4KKwogMjAyMi0wNC0yOSAgS2ltbW8g
S2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBBU0FOIGJ1aWxk
IGFmdGVyICJJUEMgdGVzdGluZyBBUEkgc2hvdWxkIGhhdmUgdGhlIGFiaWxpdHkgdG8gdGVzdCBJ
UEM6OkNvbm5lY3Rpb24gc2VuZCBhbmQgcmVjZWl2ZSB0aHJvdWdoIElQQzo6Q29ubmVjdGlvbiIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0ZU1hdGguY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRlTWF0aC5jcHAKaW5kZXggZDc2
OTJlYmIxMDMwNDhjZjU0Mjg1MzUwN2MzYjcyODJmZjUyYWMxNy4uNWI3YWJhMmI2NTE1NmIwZjg1
MzFjNDExM2U1NDJiMjZlOWYwYzliMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNEYXRlTWF0aC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNEYXRlTWF0aC5jcHAKQEAgLTQzNCwxMiArNDM0LDE4IEBAIFJlZjxEYXRlSW5zdGFuY2VE
YXRhPiBEYXRlQ2FjaGU6OmNhY2hlZERhdGVJbnN0YW5jZURhdGEoZG91YmxlIG1pbGxpc2Vjb25k
c0Zyb21FCiB2b2lkIERhdGVDYWNoZTo6dGltZVpvbmVDYWNoZVNsb3coKQogewogICAgIEFTU0VS
VCghbV90aW1lWm9uZUNhY2hlKTsKKworICAgIFZlY3RvcjxVQ2hhciwgMzI+IHRpbWVab25lSUQ7
CisgICAgZ2V0VGltZVpvbmVPdmVycmlkZSh0aW1lWm9uZUlEKTsKICNpZiBIQVZFKElDVV9DX1RJ
TUVaT05FX0FQSSkKICAgICBhdXRvKiBjYWNoZSA9IG5ldyBPcGFxdWVJQ1VUaW1lWm9uZTsKIAog
ICAgIFN0cmluZyBjYW5vbmljYWw7Ci0gICAgVmVjdG9yPFVDaGFyLCAzMj4gdGltZVpvbmVJRDsK
LSAgICBhdXRvIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1Y2FsX2dldEhv
c3RUaW1lWm9uZSwgdGltZVpvbmVJRCk7CisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9f
RVJST1I7CisgICAgaWYgKHRpbWVab25lSUQuaXNFbXB0eSgpKSB7CisgICAgICAgIHN0YXR1cyA9
IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1Y2FsX2dldEhvc3RUaW1lWm9uZSwgdGltZVpv
bmVJRCk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoc3RhdHVzLCBVX1NVQ0NFU1Moc3RhdHVzKSk7
CisgICAgfQogICAgIGlmIChVX1NVQ0NFU1Moc3RhdHVzKSkgewogICAgICAgICBWZWN0b3I8VUNo
YXIsIDMyPiBjYW5vbmljYWxCdWZmZXI7CiAgICAgICAgIGF1dG8gc3RhdHVzID0gY2FsbEJ1ZmZl
clByb2R1Y2luZ0Z1bmN0aW9uKHVjYWxfZ2V0Q2Fub25pY2FsVGltZVpvbmVJRCwgdGltZVpvbmVJ
RC5kYXRhKCksIHRpbWVab25lSUQuc2l6ZSgpLCBjYW5vbmljYWxCdWZmZXIsIG51bGxwdHIpOwpA
QCAtNDU2LDYgKzQ2MiwxMCBAQCB2b2lkIERhdGVDYWNoZTo6dGltZVpvbmVDYWNoZVNsb3coKQog
ICAgIHVjYWxfc2V0R3JlZ29yaWFuQ2hhbmdlKGNhY2hlLT5tX2NhbGVuZGFyLmdldCgpLCBtaW5F
Q01BU2NyaXB0VGltZSwgJnN0YXR1cyk7IC8vIElnbm9yZSAidW5zdXBwb3J0ZWQiIGVycm9yLgog
ICAgIG1fdGltZVpvbmVDYWNoZSA9IHN0ZDo6dW5pcXVlX3B0cjxPcGFxdWVJQ1VUaW1lWm9uZSwg
T3BhcXVlSUNVVGltZVpvbmVEZWxldGVyPihjYWNoZSk7CiAjZWxzZQorICAgIGlmICghdGltZVpv
bmVJRC5pc0VtcHR5KCkpIHsKKyAgICAgICAgbV90aW1lWm9uZUNhY2hlID0gc3RkOjp1bmlxdWVf
cHRyPE9wYXF1ZUlDVVRpbWVab25lLCBPcGFxdWVJQ1VUaW1lWm9uZURlbGV0ZXI+KHRvT3BhcXVl
SUNVVGltZVpvbmUoaWN1OjpUaW1lWm9uZTo6Y3JlYXRlVGltZVpvbmUoaWN1OjpVbmljb2RlU3Ry
aW5nKHRpbWVab25lSUQuZGF0YSgpLCB0aW1lWm9uZUlELnNpemUoKSkpKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CiAgICAgLy8gRG8gbm90IHVzZSBpY3U6OlRpbWVab25lOjpjcmVhdGVEZWZh
dWx0LiBJQ1UgaW50ZXJuYWxseSBoYXMgYSBjYWNoZSBmb3IgdGltZXpvbmUgYW5kIGNyZWF0ZURl
ZmF1bHQgcmV0dXJucyB0aGlzIGNhY2hlZCB2YWx1ZS4KICAgICBtX3RpbWVab25lQ2FjaGUgPSBz
dGQ6OnVuaXF1ZV9wdHI8T3BhcXVlSUNVVGltZVpvbmUsIE9wYXF1ZUlDVVRpbWVab25lRGVsZXRl
cj4odG9PcGFxdWVJQ1VUaW1lWm9uZShpY3U6OlRpbWVab25lOjpkZXRlY3RIb3N0VGltZVpvbmUo
KSkpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5jcHAgYi9T
b3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5jcHAKaW5kZXggNzM1NDY3MTA4ZTMwNDBiYjFkMjNlOWJh
MWE3YWI4YTIxNDFhOGY2Ni4uM2U3NjQ0ZDFkMjMyZjhmYzFhNmIxNTcyMTg5ZGQzNjY0NDVhNGU3
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRGF0ZU1hdGguY3BwCisrKyBiL1NvdXJjZS9X
VEYvd3RmL0RhdGVNYXRoLmNwcApAQCAtNzYsOSArNzYsMTUgQEAKICNpbmNsdWRlIDxsaW1pdHM+
CiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8dGltZS5oPgorI2luY2x1ZGUgPHVuaWNv
ZGUvdWNhbC5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0FT
Q0lJQ1R5cGUuaD4KKyNpbmNsdWRlIDx3dGYvTGFuZ3VhZ2UuaD4KKyNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU3BlY2lmaWMuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3VuaWNvZGUvVVRGOENv
bnZlcnNpb24uaD4KKyNpbmNsdWRlIDx3dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5oPgogCiAj
aWYgT1MoV0lORE9XUykKICNpbmNsdWRlIDx3aW5kb3dzLmg+CkBAIC05Miw2ICs5OCwxMyBAQCB0
ZW1wbGF0ZTx1bnNpZ25lZCBsZW5ndGg+IGlubGluZSBib29sIHN0YXJ0c1dpdGhMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UoY29uc3QgYwogICAgIHJldHVybiBlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShzdHJpbmcsIGxvd2VyY2FzZUxldHRlcnMsIGxlbmd0aCAtIDEpOwogfQogCitzdGF0
aWMgTG9jayBpbm5lclRpbWVab25lT3ZlcnJpZGVMb2NrOworc3RhdGljIFZlY3RvcjxVQ2hhcj4m
IGlubmVyVGltZVpvbmVPdmVycmlkZSgpIFdURl9SRVFVSVJFU19MT0NLKGlubmVyVGltZVpvbmVP
dmVycmlkZUxvY2spCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxVQ2hhcj4+
IHRpbWVab25lT3ZlcnJpZGU7CisgICAgcmV0dXJuIHRpbWVab25lT3ZlcnJpZGU7Cit9CisKIC8q
IENvbnN0YW50cyAqLwogCiBjb25zdCBBU0NJSUxpdGVyYWwgd2Vla2RheU5hbWVbN10gPSB7ICJN
b24iX3MsICJUdWUiX3MsICJXZWQiX3MsICJUaHUiX3MsICJGcmkiX3MsICJTYXQiX3MsICJTdW4i
X3MgfTsKQEAgLTEwMTYsNCArMTAyOSw0NiBAQCBTdHJpbmcgbWFrZVJGQzI4MjJEYXRlU3RyaW5n
KHVuc2lnbmVkIGRheU9mV2VlaywgdW5zaWduZWQgZGF5LCB1bnNpZ25lZCBtb250aCwgdQogICAg
IHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKK3N0YXRpYyBzdGQ6Om9wdGlv
bmFsPFZlY3RvcjxVQ2hhciwgMzI+PiB2YWxpZGF0ZVRpbWVab25lKFN0cmluZ1ZpZXcgdGltZVpv
bmUpCit7CisgICAgVmVjdG9yPFVDaGFyLCAzMj4gYnVmZmVyKHRpbWVab25lLmxlbmd0aCgpKTsK
KyAgICB0aW1lWm9uZS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChidWZmZXIuZGF0YSgpKTsK
KworICAgIFZlY3RvcjxVQ2hhciwgMzI+IGNhbm9uaWNhbEJ1ZmZlcjsKKyAgICBhdXRvIHN0YXR1
cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1Y2FsX2dldENhbm9uaWNhbFRpbWVab25l
SUQsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCksIGNhbm9uaWNhbEJ1ZmZlciwgbnVsbHB0
cik7CisgICAgaWYgKCFVX1NVQ0NFU1Moc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKyAgICByZXR1cm4gV1RGTW92ZShjYW5vbmljYWxCdWZmZXIpOworfQorCitib29sIGlz
VGltZVpvbmVWYWxpZChTdHJpbmdWaWV3IHRpbWVab25lKQoreworICAgIHJldHVybiB2YWxpZGF0
ZVRpbWVab25lKHRpbWVab25lKS5oYXNfdmFsdWUoKTsKK30KKworYm9vbCBzZXRUaW1lWm9uZU92
ZXJyaWRlKFN0cmluZ1ZpZXcgdGltZVpvbmUpCit7CisgICAgaWYgKHRpbWVab25lLmlzRW1wdHko
KSkgeworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgaW5uZXJUaW1lWm9uZU92ZXJyaWRlTG9jayB9
OworICAgICAgICBpbm5lclRpbWVab25lT3ZlcnJpZGUoKS5jbGVhcigpOworICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBhdXRvIGNhbm9uaWNhbEJ1ZmZlciA9IHZhbGlkYXRlVGlt
ZVpvbmUodGltZVpvbmUpOworICAgIGlmICghY2Fub25pY2FsQnVmZmVyKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICB7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBpbm5lclRpbWVab25l
T3ZlcnJpZGVMb2NrIH07CisgICAgICAgIGlubmVyVGltZVpvbmVPdmVycmlkZSgpID0gV1RGTW92
ZSgqY2Fub25pY2FsQnVmZmVyKTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQg
Z2V0VGltZVpvbmVPdmVycmlkZShWZWN0b3I8VUNoYXIsIDMyPiYgdGltZVpvbmVJRCkKK3sKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgaW5uZXJUaW1lWm9uZU92ZXJyaWRlTG9jayB9OworICAgIHRpbWVa
b25lSUQgPSBpbm5lclRpbWVab25lT3ZlcnJpZGUoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RG
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5oIGIvU291cmNlL1dURi93dGYv
RGF0ZU1hdGguaAppbmRleCAxNzRlNmMwN2I2ZjVjZjRiY2YwNDY5ZjIwZjhjZjAyMWJlZDI1MTAz
Li5iMGE5NzIzYzg1NDBlNjA4ZDNjOTI2YTNmODViMzU4NjEzZjgzNjY4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmgK
QEAgLTM5MywzMSArMzkzLDM4IEBAIGlubGluZSBkb3VibGUgdGltZVRvTVMoZG91YmxlIGhvdXIs
IGRvdWJsZSBtaW4sIGRvdWJsZSBzZWMsIGRvdWJsZSBtcykKICAgICByZXR1cm4gKCgoaG91ciAq
IFdURjo6bWludXRlc1BlckhvdXIgKyBtaW4pICogV1RGOjpzZWNvbmRzUGVyTWludXRlICsgc2Vj
KSAqIFdURjo6bXNQZXJTZWNvbmQgKyBtcyk7CiB9CiAKK1dURl9FWFBPUlRfUFJJVkFURSBib29s
IGlzVGltZVpvbmVWYWxpZChTdHJpbmdWaWV3KTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIHNl
dFRpbWVab25lT3ZlcnJpZGUoU3RyaW5nVmlldyk7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBn
ZXRUaW1lWm9uZU92ZXJyaWRlKFZlY3RvcjxVQ2hhciwgMzI+JiB0aW1lWm9uZUlEKTsKKwogLy8g
UmV0dXJucyBjb21iaW5lZCBvZmZzZXQgaW4gbWlsbGlzZWNvbmQgKFVUQyArIERTVCkuCiBXVEZf
RVhQT1JUX1BSSVZBVEUgTG9jYWxUaW1lT2Zmc2V0IGNhbGN1bGF0ZUxvY2FsVGltZU9mZnNldChk
b3VibGUgdXRjSW5NaWxsaXNlY29uZHMsIFRpbWVUeXBlID0gVVRDVGltZSk7CiAKIH0gLy8gbmFt
ZXNwYWNlIFdURgogCi11c2luZyBXVEY6OmlzTGVhcFllYXI7Cit1c2luZyBXVEY6OmNhbGN1bGF0
ZUxvY2FsVGltZU9mZnNldDsKIHVzaW5nIFdURjo6ZGF0ZVRvRGF5c0Zyb20xOTcwOwogdXNpbmcg
V1RGOjpkYXlJbk1vbnRoRnJvbURheUluWWVhcjsKIHVzaW5nIFdURjo6ZGF5SW5ZZWFyOwordXNp
bmcgV1RGOjpnZXRUaW1lWm9uZU92ZXJyaWRlOwordXNpbmcgV1RGOjppc0xlYXBZZWFyOwordXNp
bmcgV1RGOjppc1RpbWVab25lVmFsaWQ7Cit1c2luZyBXVEY6OmpzQ3VycmVudFRpbWU7Cit1c2lu
ZyBXVEY6OkxvY2FsVGltZU9mZnNldDsKK3VzaW5nIFdURjo6bWFrZVJGQzI4MjJEYXRlU3RyaW5n
OwogdXNpbmcgV1RGOjptaW51dGVzUGVySG91cjsKIHVzaW5nIFdURjo6bW9udGhGcm9tRGF5SW5Z
ZWFyOwogdXNpbmcgV1RGOjptc1BlckRheTsKIHVzaW5nIFdURjo6bXNQZXJIb3VyOwogdXNpbmcg
V1RGOjptc1Blck1pbnV0ZTsKIHVzaW5nIFdURjo6bXNQZXJTZWNvbmQ7Ci11c2luZyBXVEY6Om1z
VG9ZZWFyOwogdXNpbmcgV1RGOjptc1RvRGF5czsKLXVzaW5nIFdURjo6bXNUb01pbnV0ZXM7CiB1
c2luZyBXVEY6Om1zVG9Ib3VyczsKK3VzaW5nIFdURjo6bXNUb01pbnV0ZXM7Cit1c2luZyBXVEY6
Om1zVG9ZZWFyOwordXNpbmcgV1RGOjpwYXJzZURhdGVGcm9tTnVsbFRlcm1pbmF0ZWRDaGFyYWN0
ZXJzOwogdXNpbmcgV1RGOjpzZWNvbmRzUGVyRGF5OwogdXNpbmcgV1RGOjpzZWNvbmRzUGVyTWlu
dXRlOwotdXNpbmcgV1RGOjpwYXJzZURhdGVGcm9tTnVsbFRlcm1pbmF0ZWRDaGFyYWN0ZXJzOwot
dXNpbmcgV1RGOjp0aW1lVG9NUzsKLXVzaW5nIFdURjo6bWFrZVJGQzI4MjJEYXRlU3RyaW5nOwot
dXNpbmcgV1RGOjpMb2NhbFRpbWVPZmZzZXQ7Ci11c2luZyBXVEY6OmNhbGN1bGF0ZUxvY2FsVGlt
ZU9mZnNldDsKK3VzaW5nIFdURjo6c2V0VGltZVpvbmVPdmVycmlkZTsKIHVzaW5nIFdURjo6dGlt
ZUNsaXA7Ci11c2luZyBXVEY6OmpzQ3VycmVudFRpbWU7Cit1c2luZyBXVEY6OnRpbWVUb01TOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcAppbmRleCA1MTQyZTJjNjA5NTMxZTVhZjgwOWM0NmRhNmZjNDI2NTBjZTRkNjlhLi45
Y2E4MTExYTIwNDRlNWE2YjExOTcxN2Q1YTRkOTc3YjVkODgxNDg1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAt
MjE0LDYgKzIxNCw4IEBAIHZvaWQgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2Rl
KElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICNpZiBVU0UoQVRTUEkpCiAgICAgZW5jb2Rl
ciA8PCBhY2Nlc3NpYmlsaXR5QnVzQWRkcmVzczsKICNlbmRpZgorCisgICAgZW5jb2RlciA8PCB0
aW1lWm9uZU92ZXJyaWRlOwogfQogCiBib29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6
OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMmIHBhcmFtZXRlcnMpCkBAIC01NzEsNiArNTczLDEyIEBAIGJvb2wgV2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgV2ViUHJvY2Vzc0Ny
ZWF0CiAgICAgcGFyYW1ldGVycy5hY2Nlc3NpYmlsaXR5QnVzQWRkcmVzcyA9IFdURk1vdmUoKmFj
Y2Vzc2liaWxpdHlCdXNBZGRyZXNzKTsKICNlbmRpZgogCisgICAgc3RkOjpvcHRpb25hbDxTdHJp
bmc+IHRpbWVab25lT3ZlcnJpZGU7CisgICAgZGVjb2RlciA+PiB0aW1lWm9uZU92ZXJyaWRlOwor
ICAgIGlmICghdGltZVpvbmVPdmVycmlkZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHBh
cmFtZXRlcnMudGltZVpvbmVPdmVycmlkZSA9IFdURk1vdmUoKnRpbWVab25lT3ZlcnJpZGUpOwor
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCA4ZDM3MmNiNjYxOWMyODQ5YmQ0NjFm
MjQzYTUxYTg2Nzk0OGQ5NzIzLi4yOWRhMjNkODNlNTYwMjhmYmIwMDlkOTc1ZTUwZmY5OTkyOTc0
NGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5oCkBAIC0yNTUsNiArMjU1LDggQEAgc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMgewogI2lmIFVTRShBVFNQSSkKICAgICBTdHJpbmcgYWNjZXNzaWJpbGl0eUJ1
c0FkZHJlc3M7CiAjZW5kaWYKKworICAgIFN0cmluZyB0aW1lWm9uZU92ZXJyaWRlOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwCmluZGV4IGNmZDljMzk4
MTMzN2M3ZGQwMmM2MjNjZThiYTY4NmVhMzZiYmZmYjkuLmExNmZlMTNjMDg1NzYxOTRlYzhjNDNl
OWRhZTYyYTIwNTY2OTA0YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwCkBAIC04NCw2ICs4NCw3
IEBAIFJlZjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IFByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bjo6Y29weSgpCiAjaWYgSEFWRShBVURJVF9UT0tFTikKICAgICBjb3B5LT5tX3ByZXNlbnRpbmdB
cHBsaWNhdGlvblByb2Nlc3NUb2tlbiA9IHRoaXMtPm1fcHJlc2VudGluZ0FwcGxpY2F0aW9uUHJv
Y2Vzc1Rva2VuOwogI2VuZGlmCisgICAgY29weS0+bV90aW1lWm9uZU92ZXJyaWRlID0gdGhpcy0+
bV90aW1lWm9uZU92ZXJyaWRlOwogICAgIHJldHVybiBjb3B5OwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
LmgKaW5kZXggY2M2NDJjNTFiYTY2M2U4NDNkZjU0ZDE0Y2ZjY2I2ZDRlZjgxNzI2Yy4uYzc3OWQw
NDU1MDBiYjJhYzllZmU1MzVjMmMzYzY0YjY0YTZlMTIxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaApA
QCAtMTY0LDYgKzE2NCw5IEBAIHB1YmxpYzoKICAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPE1lbW9y
eVByZXNzdXJlSGFuZGxlcjo6Q29uZmlndXJhdGlvbj4mIG1lbW9yeVByZXNzdXJlSGFuZGxlckNv
bmZpZ3VyYXRpb24oKSBjb25zdCB7IHJldHVybiBtX21lbW9yeVByZXNzdXJlSGFuZGxlckNvbmZp
Z3VyYXRpb247IH0KICNlbmRpZgogCisgICAgdm9pZCBzZXRUaW1lWm9uZU92ZXJyaWRlKGNvbnN0
IFdURjo6U3RyaW5nJiB0aW1lWm9uZU92ZXJyaWRlKSB7IG1fdGltZVpvbmVPdmVycmlkZSA9IHRp
bWVab25lT3ZlcnJpZGU7IH0KKyAgICBjb25zdCBXVEY6OlN0cmluZyYgdGltZVpvbmVPdmVycmlk
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZVpvbmVPdmVycmlkZTsgfQorCiBwcml2YXRlOgogICAg
IFdURjo6U3RyaW5nIG1faW5qZWN0ZWRCdW5kbGVQYXRoOwogICAgIFZlY3RvcjxXVEY6OlN0cmlu
Zz4gbV9jdXN0b21DbGFzc2VzRm9yUGFyYW1ldGVyQ29kZXI7CkBAIC0yMDYsNiArMjA5LDcgQEAg
cHJpdmF0ZToKICNpZiBIQVZFKEFVRElUX1RPS0VOKQogICAgIHN0ZDo6b3B0aW9uYWw8YXVkaXRf
dG9rZW5fdD4gbV9wcmVzZW50aW5nQXBwbGljYXRpb25Qcm9jZXNzVG9rZW47CiAjZW5kaWYKKyAg
ICBXVEY6OlN0cmluZyBtX3RpbWVab25lT3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBB
UEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dENv
bmZpZ3VyYXRpb25SZWYuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0Q29uZmlndXJhdGlvblJlZi5jcHAKaW5kZXggNmRlZTI4YmU1ZjY2ZjhlMGFkOTEwNTBiYzU1
OTg5ZDM3YWU1Mjk0MS4uNjNlMDZhN2RhMmRjNTIwYWY1ZTM0YWMzZmU2MmY1MjVjODQxZmU5NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0Q29uZmln
dXJhdGlvblJlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0Q29uZmlndXJhdGlvblJlZi5jcHAKQEAgLTIyMiwzICsyMjIsMTMgQEAgdm9pZCBXS0NvbnRl
eHRDb25maWd1cmF0aW9uU2V0U2hvdWxkQ29uZmlndXJlSlNDRm9yVGVzdGluZyhXS0NvbnRleHRD
b25maWd1cmF0aW8KIHsKICAgICB0b0ltcGwoY29uZmlndXJhdGlvbiktPnNldFNob3VsZENvbmZp
Z3VyZUpTQ0ZvclRlc3RpbmcodmFsdWUpOwogfQorCitXS1N0cmluZ1JlZiBXS0NvbnRleHRDb25m
aWd1cmF0aW9uQ29weVRpbWVab25lT3ZlcnJpZGUoV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZiBj
b25maWd1cmF0aW9uKQoreworICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwoY29uZmlndXJh
dGlvbiktPnRpbWVab25lT3ZlcnJpZGUoKSk7Cit9CisKK3ZvaWQgV0tDb250ZXh0Q29uZmlndXJh
dGlvblNldFRpbWVab25lT3ZlcnJpZGUoV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZiBjb25maWd1
cmF0aW9uLCBXS1N0cmluZ1JlZiB0aW1lWm9uZU92ZXJyaWRlKQoreworICAgIHRvSW1wbChjb25m
aWd1cmF0aW9uKS0+c2V0VGltZVpvbmVPdmVycmlkZSh0b0ltcGwodGltZVpvbmVPdmVycmlkZSkt
PnN0cmluZygpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuaAppbmRleCAwZDFiMTY0NjAzNGIxNDc3Yjgz
M2FlYzZjMjY0M2QyMWY4MDExNDk5Li5hOTEyMWI4YWRiNTIzNWUzZTc5MzczNTY5ZGZjYTQ1Mjg4
ZmFmZWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRl
eHRDb25maWd1cmF0aW9uUmVmLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5oCkBAIC05NSw2ICs5NSw5IEBAIFdLX0VYUE9SVCB2
b2lkIFdLQ29udGV4dENvbmZpZ3VyYXRpb25TZXREaXNrQ2FjaGVTaXplT3ZlcnJpZGUoV0tDb250
ZXh0Q29uZmlndXJhCiAgICAgCiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRDb25maWd1cmF0aW9u
U2V0U2hvdWxkQ29uZmlndXJlSlNDRm9yVGVzdGluZyhXS0NvbnRleHRDb25maWd1cmF0aW9uUmVm
IGNvbmZpZ3VyYXRpb24sIGJvb2wgdmFsdWUpOwogCitXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tD
b250ZXh0Q29uZmlndXJhdGlvbkNvcHlUaW1lWm9uZU92ZXJyaWRlKFdLQ29udGV4dENvbmZpZ3Vy
YXRpb25SZWYgY29uZmlndXJhdGlvbik7CitXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRDb25maWd1
cmF0aW9uU2V0VGltZVpvbmVPdmVycmlkZShXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmIGNvbmZp
Z3VyYXRpb24sIFdLU3RyaW5nUmVmIHRpbWVab25lT3ZlcnJpZGUpOworCiAjaWZkZWYgX19jcGx1
c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCmluZGV4IDc4NDk4
M2MxMDNiMjljYTNjNzc0YzYyMDQ5MjY1OTRlYmM4ZGZlZTQuLmE0YjZkNzU3ZTA2NjMzNGFmOThk
ZWMyMThhYzUyMjYxYjlkNWNjZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgKQEAg
LTI0LDYgKzI0LDcgQEAKICAqLwogCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4K
KyNpbXBvcnQgPFdlYktpdC9XS0Jhc2UuaD4KICNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24u
aD4KIAogTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KQEAgLTc3LDYgKzc4LDggQEAgV0tfQ0xBU1Nf
QVZBSUxBQkxFKG1hY29zKDEwLjEwKSwgaW9zKDguMCkpCiAKIEBwcm9wZXJ0eSAobm9uYXRvbWlj
KSBCT09MIGNvbmZpZ3VyZUpTQ0ZvclRlc3RpbmcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4x
NS40KSwgaW9zKDEzLjQpKTsKIAorQHByb3BlcnR5IChub25hdG9taWMsIG51bGxhYmxlLCBjb3B5
KSBOU1N0cmluZyAqdGltZVpvbmVPdmVycmlkZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01B
Q19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiBAZW5kCiAKIE5TX0FTU1VNRV9OT05OVUxMX0VO
RApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nl
c3NQb29sQ29uZmlndXJhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubW0KaW5kZXggOTJiNTA5YWQ0ODJmNGQzYjVh
NjlhMDBiMGZkMjNjNGQwYWFiMTZhZS4uY2I3NDQ1YjdmZTgxNGZlZmY1MGExNGI4ZGQyNWY1YTMy
ZjcwYTE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1tCkBAIC00MDMsNiArNDAz
LDE2IEBACiAgICAgX3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi0+c2V0U2hvdWxkQ29uZmlndXJl
SlNDRm9yVGVzdGluZyh2YWx1ZSk7CiB9CiAKKy0gKE5TU3RyaW5nICopdGltZVpvbmVPdmVycmlk
ZQoreworICAgIHJldHVybiBfcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLT50aW1lWm9uZU92ZXJy
aWRlKCk7Cit9CisKKy0gKHZvaWQpc2V0VGltZVpvbmVPdmVycmlkZTooTlNTdHJpbmcgKil0aW1l
Wm9uZQoreworICAgIF9wcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24tPnNldFRpbWVab25lT3ZlcnJp
ZGUodGltZVpvbmUpOworfQorCiAjcHJhZ21hIG1hcmsgV0tPYmplY3QgcHJvdG9jb2wgaW1wbGVt
ZW50YXRpb24KIAogLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKaW5kZXggODEy
OTE4NjNjZmUxMTZiNzIzMTA0NTIyZWIwZmJmNTM5Y2E5ZDViYS4uYTE1OGExMGU2NzNjNzU0YjMw
ZjM2NzhlM2JhZDU2NTNjOWUyZjhkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTY1LDYgKzY1LDcgQEAKICNp
bmNsdWRlIDxsaWJpbnRsLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHBhbC9IeXN0
ZXJlc2lzQWN0aXZpdHkuaD4KKyNpbmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4KICNpbmNsdWRlIDx3
dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KQEAgLTEyNyw2ICsxMjgsNyBAQCBlbnVtIHsKICNlbmRpZgogI2VuZGlmCiAg
ICAgUFJPUF9NRU1PUllfUFJFU1NVUkVfU0VUVElOR1MsCisgICAgUFJPUF9USU1FX1pPTkVfT1ZF
UlJJREUsCiAgICAgTl9QUk9QRVJUSUVTLAogfTsKIApAQCAtMjQ1LDYgKzI0Nyw4IEBAIHN0cnVj
dCBfV2ViS2l0V2ViQ29udGV4dFByaXZhdGUgewogICAgIFBBTDo6SHlzdGVyZXNpc0FjdGl2aXR5
IGRuc1ByZWZldGNoSHlzdGVyZXJpczsKIAogICAgIFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGlu
Z3MqIG1lbW9yeVByZXNzdXJlU2V0dGluZ3M7CisKKyAgICBTdHJpbmcgdGltZVpvbmVPdmVycmlk
ZTsKIH07CiAKIHN0YXRpYyBndWludCBzaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwgfTsKQEAg
LTM1MCw2ICszNTQsOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJDb250ZXh0R2V0UHJvcGVydHko
R09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSUQsIEdWYWx1ZSogdgogICAgICAgICBicmVhazsK
ICNlbmRpZgogI2VuZGlmCisgICAgY2FzZSBQUk9QX1RJTUVfWk9ORV9PVkVSUklERToKKyAgICAg
ICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZhbHVlLCB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3RpbWVf
em9uZV9vdmVycmlkZShjb250ZXh0KSk7CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAg
ICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJRCwg
cGFyYW1TcGVjKTsKICAgICB9CkBAIC0zODUsNiArMzkyLDExIEBAIHN0YXRpYyB2b2lkIHdlYmtp
dFdlYkNvbnRleHRTZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJRCwgY29u
c3QgR1ZhCiAgICAgICAgIGNvbnRleHQtPnByaXYtPm1lbW9yeVByZXNzdXJlU2V0dGluZ3MgPSBz
ZXR0aW5ncyA/IHdlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfY29weShzdGF0aWNfY2Fz
dDxXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzKj4oc2V0dGluZ3MpKSA6IG51bGxwdHI7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBjYXNlIFBST1BfVElNRV9aT05FX09WRVJSSURFOiB7
CisgICAgICAgIGlmIChjb25zdCBhdXRvKiBvdmVycmlkZSA9IGdfdmFsdWVfZ2V0X3N0cmluZyh2
YWx1ZSkpCisgICAgICAgICAgICB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3RpbWVfem9uZV9vdmVy
cmlkZShjb250ZXh0LCBvdmVycmlkZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBkZWZh
dWx0OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBw
cm9wSUQsIHBhcmFtU3BlYyk7CiAgICAgfQpAQCAtNDEzLDYgKzQyNSw3IEBAIHN0YXRpYyB2b2lk
IHdlYmtpdFdlYkNvbnRleHRDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAgICAgICAgIC8v
IE9uY2UgdGhlIHNldHRpbmdzIGhhdmUgYmVlbiBwYXNzZWQgdG8gdGhlIFByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbiwgd2UgZG9uJ3QgbmVlZCB0aGVtIGFueW1vcmUgc28gd2UgY2FuIGZyZWUgdGhl
bS4KICAgICAgICAgZ19jbGVhcl9wb2ludGVyKCZwcml2LT5tZW1vcnlQcmVzc3VyZVNldHRpbmdz
LCB3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2ZyZWUpOwogICAgIH0KKyAgICBjb25m
aWd1cmF0aW9uLnNldFRpbWVab25lT3ZlcnJpZGUocHJpdi0+dGltZVpvbmVPdmVycmlkZSk7CiAK
ICAgICBpZiAoIXByaXYtPndlYnNpdGVEYXRhTWFuYWdlcikKICAgICAgICAgcHJpdi0+d2Vic2l0
ZURhdGFNYW5hZ2VyID0gYWRvcHRHUmVmKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9uZXco
ImxvY2FsLXN0b3JhZ2UtZGlyZWN0b3J5IiwgcHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5LmRh
dGEoKSwgbnVsbHB0cikpOwpAQCAtNTcyLDYgKzU4NSwyOCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRf
d2ViX2NvbnRleHRfY2xhc3NfaW5pdChXZWJLaXRXZWJDb250ZXh0Q2xhc3MqIHdlYkNvbnRleHRD
bGFzcwogICAgICAgICAgICAgV0VCS0lUX1RZUEVfTUVNT1JZX1BSRVNTVVJFX1NFVFRJTkdTLAog
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9XUklUQUJM
RSB8IEdfUEFSQU1fQ09OU1RSVUNUX09OTFkpKTsKIAorICAgIC8qKgorICAgICAqIFdlYktpdFdl
YkNvbnRleHQ6dGltZS16b25lLW92ZXJyaWRlOgorICAgICAqCisgICAgICogVGhlIHRpbWV6b25l
IG92ZXJyaWRlIGZvciB0aGlzIHdlYiBjb250ZXh0LiBTZXR0aW5nIHRoaXMgcHJvcGVydHkgcHJv
dmlkZXMgYSBiZXR0ZXIKKyAgICAgKiBhbHRlcm5hdGl2ZSB0byBjb25maWd1cmUgdGhlIHRpbWV6
b25lIGluZm9ybWF0aW9uIGZvciBhbGwgd2Vidmlld3MgbWFuYWdlZCBieSB0aGUgV2ViQ29udGV4
dC4KKyAgICAgKiBUaGUgb3RoZXIsIGxlc3Mgb3B0aW1hbCwgYXBwcm9hY2ggaXMgdG8gZ2xvYmFs
bHkgc2V0IHRoZSBUWiBlbnZpcm9ubWVudCB2YXJpYWJsZSBpbiB0aGUKKyAgICAgKiBwcm9jZXNz
IGJlZm9yZSBjcmVhdGluZyB0aGUgY29udGV4dC4gSG93ZXZlciB0aGlzIGFwcHJvYWNoIG1pZ2h0
IG5vdCBiZSB2ZXJ5IGNvbnZlbmllbnQgYW5kCisgICAgICogY2FuIGhhdmUgc2lkZS1lZmZlY3Rz
IGluIHlvdXIgYXBwbGljYXRpb24uCisgICAgICoKKyAgICAgKiBUaGUgZXhwZWN0ZWQgdmFsdWVz
IGZvciB0aGlzIHByb3BlcnR5IGFyZSBkZWZpbmVkIGluIHRoZSBJQU5BIHRpbWV6b25lIGRhdGFi
YXNlLiBTZWUgdGhpcworICAgICAqIHdpa2lwZWRpYSBwYWdlIGZvciBpbnN0YW5jZSwgaHR0cHM6
Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGlzdF9vZl90el9kYXRhYmFzZV90aW1lX3pvbmVzLgor
ICAgICAqCisgICAgICogU2luY2U6IDIuMzgKKyAgICAgKi8KKyAgICBzT2JqUHJvcGVydGllc1tQ
Uk9QX1RJTUVfWk9ORV9PVkVSUklERV0gPQorICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKAor
ICAgICAgICAgICAgInRpbWUtem9uZS1vdmVycmlkZSIsCisgICAgICAgICAgICBfKCJUaW1lIFpv
bmUgT3ZlcnJpZGUiKSwKKyAgICAgICAgICAgIF8oIlRoZSB0aW1lIHpvbmUgdG8gdXNlIGluc3Rl
YWQgb2YgdGhlIHN5c3RlbSBvbmUiKSwKKyAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAg
ICBzdGF0aWNfY2FzdDxHUGFyYW1GbGFncz4oV0VCS0lUX1BBUkFNX1JFQURXUklURSB8IEdfUEFS
QU1fQ09OU1RSVUNUX09OTFkpKTsKKwogICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVy
dGllcyhnT2JqZWN0Q2xhc3MsIE5fUFJPUEVSVElFUywgc09ialByb3BlcnRpZXMpOwogCiAgICAg
LyoqCkBAIC0xODM1LDYgKzE4NzAsMzkgQEAgZ2Jvb2xlYW4gd2Via2l0X3dlYl9jb250ZXh0X2dl
dF91c2Vfc3lzdGVtX2FwcGVhcmFuY2VfZm9yX3Njcm9sbGJhcnMoV2ViS2l0V2ViQ28KIH0KICNl
bmRpZgogCisvKioKKyAqIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfdGltZV96b25lX292ZXJyaWRl
OgorICogQGNvbnRleHQ6IGEgI1dlYktpdFdlYkNvbnRleHQKKyAqIEB0aW1lX3pvbmVfb3ZlcnJp
ZGU6IHZhbHVlIHRvIHNldAorICoKKyAqIFNldCB0aGUgI1dlYktpdFdlYkNvbnRleHQ6dGltZS16
b25lLW92ZXJyaWRlIHByb3BlcnR5LiBSZWZlciB0byB0aGUgSUFOQSBkYXRhYmFzZSBmb3IgdmFs
aWQKKyAqIHNwZWNpZmllcnMsIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xpc3Rfb2Zf
dHpfZGF0YWJhc2VfdGltZV96b25lcworICoKKyAqIFNpbmNlOiAyLjM4CisgKi8KK3ZvaWQgd2Vi
a2l0X3dlYl9jb250ZXh0X3NldF90aW1lX3pvbmVfb3ZlcnJpZGUoV2ViS2l0V2ViQ29udGV4dCog
Y29udGV4dCwgY29uc3QgZ2NoYXIqIHRpbWVab25lT3ZlcnJpZGUpCit7CisgICAgZ19yZXR1cm5f
aWZfZmFpbChXRUJLSVRfSVNfV0VCX0NPTlRFWFQoY29udGV4dCkpOworICAgIGdfcmV0dXJuX2lm
X2ZhaWwoaXNUaW1lWm9uZVZhbGlkKHRpbWVab25lT3ZlcnJpZGUpKTsKKworICAgIGNvbnRleHQt
PnByaXYtPnRpbWVab25lT3ZlcnJpZGUgPSBTdHJpbmc6OmZyb21VVEY4KHRpbWVab25lT3ZlcnJp
ZGUpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfdGltZV96b25lX292ZXJy
aWRlOgorICogQGNvbnRleHQ6IGEgI1dlYktpdFdlYkNvbnRleHQKKyAqCisgKiBHZXQgdGhlICNX
ZWJLaXRXZWJDb250ZXh0OnRpbWUtem9uZS1vdmVycmlkZSBwcm9wZXJ0eS4KKyAqCisgKiBTaW5j
ZTogMi4zOAorICovCitjb25zdCBnY2hhciogd2Via2l0X3dlYl9jb250ZXh0X2dldF90aW1lX3pv
bmVfb3ZlcnJpZGUoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBnX3JldHVybl92
YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0NPTlRFWFQoY29udGV4dCksIG51bGxwdHIpOworCisg
ICAgcmV0dXJuIGNvbnRleHQtPnByaXYtPnRpbWVab25lT3ZlcnJpZGUudXRmOCgpLmRhdGEoKTsK
K30KKwogdm9pZCB3ZWJraXRXZWJDb250ZXh0SW5pdGlhbGl6ZU5vdGlmaWNhdGlvblBlcm1pc3Np
b25zKFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgZ19zaWduYWxfZW1pdChjb250
ZXh0LCBzaWduYWxzW0lOSVRJQUxJWkVfTk9USUZJQ0FUSU9OX1BFUk1JU1NJT05TXSwgMCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRl
eHQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5o
CmluZGV4IGJkZDkxMjU1Y2NkODJlYTU3NzQyMjI3ODNiNTk0NzZhMzFiY2ZiMmUuLjk3YTRkNThm
MjY3Nzc0M2FjOGE5Yjk2ZGQ0ZTBiYTNkOGEwNGQyYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oCkBAIC0zMDIsNiArMzAyLDEz
IEBAIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfdXNlX3N5c3RlbV9hcHBlYXJhbmNlX2Zvcl9zY3Jv
bGxiYXJzIChXZWJLaXRXZWJDb250ZXh0CiBXRUJLSVRfQVBJIGdib29sZWFuCiB3ZWJraXRfd2Vi
X2NvbnRleHRfZ2V0X3VzZV9zeXN0ZW1fYXBwZWFyYW5jZV9mb3Jfc2Nyb2xsYmFycyAoV2ViS2l0
V2ViQ29udGV4dCAgICAgICpjb250ZXh0KTsKIAorV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2Vi
X2NvbnRleHRfc2V0X3RpbWVfem9uZV9vdmVycmlkZSAgICAgICAgICAgKFdlYktpdFdlYkNvbnRl
eHQgICAgICAgICAgICAgICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAgICAgICAgICAqdGlt
ZV96b25lX292ZXJyaWRlKTsKKworV0VCS0lUX0FQSSBjb25zdCBnY2hhcioKK3dlYmtpdF93ZWJf
Y29udGV4dF9nZXRfdGltZV96b25lX292ZXJyaWRlICAgICAgICAgICAoV2ViS2l0V2ViQ29udGV4
dCAgICAgICAgICAgICAgKmNvbnRleHQpOworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViQ29udGV4dC5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJDb250ZXh0LmgKaW5k
ZXggNjg0MWMwNzlhYTRiNjFkODljMDhiMWE5NjlmOTEzN2Q5YjhhMDQzNC4uZWE1NWY4NzZjMzFl
YmQwYmViZWI0YmJmZGNhY2M5MzdhOWM3OTdiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJDb250ZXh0LmgKQEAgLTI5MSw2ICsyOTEsMTMgQEAg
V0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRfd2ViX2NvbnRleHRfc2VuZF9tZXNzYWdlX3RvX2FsbF9l
eHRlbnNpb25zICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICAgICAgICpjb250ZXh0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRV
c2VyTWVzc2FnZSAgICAgICAgICAgICAqbWVzc2FnZSk7CiAKK1dFQktJVF9BUEkgdm9pZAord2Vi
a2l0X3dlYl9jb250ZXh0X3NldF90aW1lX3pvbmVfb3ZlcnJpZGUgICAgICAgICAgIChXZWJLaXRX
ZWJDb250ZXh0ICAgICAgICAgICAgICAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgICAgICAg
ICAgKnRpbWVfem9uZV9vdmVycmlkZSk7CisKK1dFQktJVF9BUEkgY29uc3QgZ2NoYXIqCit3ZWJr
aXRfd2ViX2NvbnRleHRfZ2V0X3RpbWVfem9uZV9vdmVycmlkZSAgICAgICAgICAgKFdlYktpdFdl
YkNvbnRleHQgICAgICAgICAgICAgICpjb250ZXh0KTsKKwogR19FTkRfREVDTFMKIAogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggNDU5NmVk
ZmEyNmFhNTlmOWQ5Mzk5Y2Y4MDIzNmYyY2Q0MTZlNjUwOC4uZGVlOGY0NmU0MGM3OTg5MmNmNzZl
MjA0MzAwOTRiYmRiMWQ3OWM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcApAQCAtOTEzLDYgKzkxMyw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmluaXRp
YWxpemVOZXdXZWJQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgV2Vic2l0ZURhCiAK
ICAgICBwYXJhbWV0ZXJzLnByZXNlbnRpbmdBcHBsaWNhdGlvblBJRCA9IG1fY29uZmlndXJhdGlv
bi0+cHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKCk7CiAKKyAgICBwYXJhbWV0ZXJzLnRpbWVab25l
T3ZlcnJpZGUgPSBtX2NvbmZpZ3VyYXRpb24tPnRpbWVab25lT3ZlcnJpZGUoKTsKKwogICAgIC8v
IEFkZCBhbnkgcGxhdGZvcm0gc3BlY2lmaWMgcGFyYW1ldGVycwogICAgIHBsYXRmb3JtSW5pdGlh
bGl6ZVdlYlByb2Nlc3MocHJvY2VzcywgcGFyYW1ldGVycyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCAzOTUzZTllZDgzNGI5NDhmZjllMjJlNzMyZGFiMDUy
NTIzNTVhNmY1Li5kZDQzYzEyYTM2ZTNhYWRlNTY0YWYyZWMwYjg5YWVjOGI4NzgyZTUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xNDIsNiArMTQyLDcgQEAK
ICNpbmNsdWRlIDxwYWwvTG9nZ2luZy5oPgogI2luY2x1ZGUgPHd0Zi9BbGdvcml0aG1zLmg+CiAj
aW5jbHVkZSA8d3RmL0NhbGxiYWNrQWdncmVnYXRvci5oPgorI2luY2x1ZGUgPHd0Zi9EYXRlTWF0
aC5oPgogI2luY2x1ZGUgPHd0Zi9MYW5ndWFnZS5oPgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzUHJp
dmlsZWdlLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTUwNSw2ICs1MDYsOSBAQCB2
b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogCiAgICAgc2V0Q2FjaGVNb2RlbChwYXJhbWV0ZXJzLmNh
Y2hlTW9kZWwpOwogCisgICAgaWYgKCFwYXJhbWV0ZXJzLnRpbWVab25lT3ZlcnJpZGUuaXNFbXB0
eSgpKQorICAgICAgICBzZXRUaW1lWm9uZU92ZXJyaWRlKHBhcmFtZXRlcnMudGltZVpvbmVPdmVy
cmlkZSk7CisKICAgICBpZiAoIXBhcmFtZXRlcnMub3ZlcnJpZGVMYW5ndWFnZXMuaXNFbXB0eSgp
KSB7CiAgICAgICAgIExPR19XSVRIX1NUUkVBTShMYW5ndWFnZSwgc3RyZWFtIDw8ICJXZWIgUHJv
Y2VzcyBpbml0aWFsaXphdGlvbiBpcyBzZXR0aW5nIG92ZXJyaWRlTGFuZ3VhZ2VzOiAiIDw8IHBh
cmFtZXRlcnMub3ZlcnJpZGVMYW5ndWFnZXMpOwogICAgICAgICBvdmVycmlkZVVzZXJQcmVmZXJy
ZWRMYW5ndWFnZXMocGFyYW1ldGVycy5vdmVycmlkZUxhbmd1YWdlcyk7CmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjQxMGYyOTk2OTVkOTIxZmI3
MDBhODMzNmZhYmUzMjZiNjVhMDM3ZS4uNDkwZmVmNzllMmNkYmZiNWJkMmY1YWUwNGJmYjQyMzkw
MWIyZTEzNCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDM2IEBACisyMDIyLTA0LTI3ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1h
bmRAaWdhbGlhLmNvbT4gYW5kIFl1cnkgU2VtaWtoYXRza3kgPHl1cnlzQGNocm9taXVtLm9yZz4K
KworICAgICAgICBbV0syXSBBZGQgQVBJIHRvIGFsbG93IGVtYmVkZGVyIHRvIHNldCBhIHRpbWV6
b25lIG92ZXJyaWRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTM4ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgQVBJIHRlc3RzIGZvciB0aGUgdGltZXpvbmUgY29uZmlndXJhdGlvbiBBUEkuIFRo
ZSBHVEsgYW5kIFdQRSBNaW5pQnJvd3NlcnMgYWxzbyBnYWluZWQKKyAgICAgICAgbmV3IHJ1bnRp
bWUgb3B0aW9ucyBhbGxvd2luZyB0byBleGVyY2lzZSB0aGlzIG5ldyBBUEkuCisKKyAgICAgICAg
KiBNaW5pQnJvd3Nlci9ndGsvbWFpbi5jOgorICAgICAgICAoYWN0aXZhdGUpOgorICAgICAgICAq
IE1pbmlCcm93c2VyL3dwZS9tYWluLmNwcDoKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1RpbWVab25lT3ZlcnJpZGUubW06IEFkZGVkLgorICAg
ICAgICAoVGltZVpvbmVPdmVycmlkZVRlc3Q6OnJ1blNjcmlwdEFuZEV4ZWN1dGVDYWxsYmFjayk6
CisgICAgICAgIChUaW1lWm9uZU92ZXJyaWRlVGVzdDo6Y2FsbEFzeW5jRnVuY3Rpb25Cb2R5KToK
KyAgICAgICAgKFRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1Rlc3RXZWJLaXRXZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKHRlc3RXZWJDb250ZXh0VGlt
ZVpvbmVPdmVycmlkZSk6CisgICAgICAgICh0ZXN0V2ViQ29udGV4dFRpbWVab25lT3ZlcnJpZGVJ
bldvcmtlcik6CisgICAgICAgIChiZWZvcmVBbGwpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
Z2xpYi9XZWJLaXRHTGliL1Rlc3RNYWluLmNwcDoKKyAgICAgICAgKG1haW4pOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmNwcDoKKyAgICAgICAg
KHJ1bkphdmFTY3JpcHRSZWFkeUNhbGxiYWNrKToKKyAgICAgICAgKFdlYlZpZXdUZXN0OjpydW5K
YXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
Z2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0Lmg6CisgICAgICAgICogZmxhdHBhay9mbGF0cGFr
dXRpbHMucHk6CisgICAgICAgIChXZWJraXRGbGF0cGFrLnJ1bl9pbl9zYW5kYm94KToKKwogMjAy
Mi0wNC0yOSAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAg
W2dpdC13ZWJraXRdIFJlZGFjdCBidWcgdGl0bGUgaW4gYnJhbmNoIG5hbWUgb24gYWx0ZXJuYXRl
IHJlbW90ZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMgYi9Ub29s
cy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCmluZGV4IDllNzg2M2I2MWIzZTlkYjc2ZTA0ZTE0ZjQ1
MTE2Njg0ZGFlNDRlMzcuLjgxN2U4ZmVjN2UxOGIzZmJkZTg1YWE1MzQyNjNkZWY2MDQ1OGIxYTgg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMKKysrIGIvVG9vbHMvTWlu
aUJyb3dzZXIvZ3RrL21haW4uYwpAQCAtNTIsNiArNTIsNyBAQCBzdGF0aWMgY29uc3QgY2hhciAq
Y29va2llc0ZpbGU7CiBzdGF0aWMgY29uc3QgY2hhciAqY29va2llc1BvbGljeTsKIHN0YXRpYyBj
b25zdCBjaGFyICpwcm94eTsKIHN0YXRpYyBnYm9vbGVhbiBkYXJrTW9kZTsKK3N0YXRpYyBjaGFy
KiB0aW1lWm9uZTsKIHN0YXRpYyBnYm9vbGVhbiBlbmFibGVJVFA7CiBzdGF0aWMgZ2Jvb2xlYW4g
ZW5hYmxlU2FuZGJveDsKIHN0YXRpYyBnYm9vbGVhbiBleGl0QWZ0ZXJMb2FkOwpAQCAtMTQ5LDYg
KzE1MCw3IEBAIHN0YXRpYyBjb25zdCBHT3B0aW9uRW50cnkgY29tbWFuZExpbmVPcHRpb25zW10g
PQogICAgIHsgImVuYWJsZS1pdHAiLCAwLCAwLCBHX09QVElPTl9BUkdfTk9ORSwgJmVuYWJsZUlU
UCwgIkVuYWJsZSBJbnRlbGxpZ2VudCBUcmFja2luZyBQcmV2ZW50aW9uIChJVFApIiwgTlVMTCB9
LAogICAgIHsgImVuYWJsZS1zYW5kYm94IiwgMCwgMCwgR19PUFRJT05fQVJHX05PTkUsICZlbmFi
bGVTYW5kYm94LCAiRW5hYmxlIHdlYiBwcm9jZXNzIHNhbmRib3ggc3VwcG9ydCIsIE5VTEwgfSwK
ICAgICB7ICJleGl0LWFmdGVyLWxvYWQiLCAwLCAwLCBHX09QVElPTl9BUkdfTk9ORSwgJmV4aXRB
ZnRlckxvYWQsICJRdWl0IHRoZSBicm93c2VyIGFmdGVyIHRoZSBsb2FkIGZpbmlzaGVzIiwgTlVM
TCB9LAorICAgIHsgInRpbWUtem9uZSIsICd0JywgMCwgR19PUFRJT05fQVJHX1NUUklORywgJnRp
bWVab25lLCAiU2V0IHRpbWUgem9uZSIsICJUSU1FWk9ORSIgfSwKICAgICB7ICJ2ZXJzaW9uIiwg
J3YnLCAwLCBHX09QVElPTl9BUkdfTk9ORSwgJnByaW50VmVyc2lvbiwgIlByaW50IHRoZSBXZWJL
aXRHVEsgdmVyc2lvbiIsIE5VTEwgfSwKICAgICB7IEdfT1BUSU9OX1JFTUFJTklORywgMCwgMCwg
R19PUFRJT05fQVJHX0ZJTEVOQU1FX0FSUkFZLCAmdXJpQXJndW1lbnRzLCAwLCAiW1VSTOKApl0i
IH0sCiAgICAgeyAwLCAwLCAwLCAwLCAwLCAwLCAwIH0KQEAgLTY3NCw2ICs2NzYsNyBAQCBzdGF0
aWMgdm9pZCBhY3RpdmF0ZShHQXBwbGljYXRpb24gKmFwcGxpY2F0aW9uLCBXZWJLaXRTZXR0aW5n
cyAqd2Via2l0U2V0dGluZ3MpCiAjaWYgIUdUS19DSEVDS19WRVJTSU9OKDMsIDk4LCAwKQogICAg
ICAgICAidXNlLXN5c3RlbS1hcHBlYXJhbmNlLWZvci1zY3JvbGxiYXJzIiwgRkFMU0UsCiAjZW5k
aWYKKyAgICAgICAgInRpbWUtem9uZS1vdmVycmlkZSIsIHRpbWVab25lLAogICAgICAgICBOVUxM
KTsKICAgICBnX29iamVjdF91bnJlZihtYW5hZ2VyKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvTWlu
aUJyb3dzZXIvd3BlL21haW4uY3BwIGIvVG9vbHMvTWluaUJyb3dzZXIvd3BlL21haW4uY3BwCmlu
ZGV4IDQ1ODRkOTU3M2JhN2QxMWQyMjQ5ZjE3NTUyZWU1Yzk0N2FmNTM5ZDIuLmNkMWQzNjQ3Yzhi
ZmFhNmNjOTY0MmNlNjMwNjBhNWFhNmM1OTQ3OTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93
c2VyL3dwZS9tYWluLmNwcAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci93cGUvbWFpbi5jcHAKQEAg
LTQ2LDYgKzQ2LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGNvb2tpZXNGaWxlOwogc3RhdGljIGNv
bnN0IGNoYXIqIGNvb2tpZXNQb2xpY3k7CiBzdGF0aWMgY29uc3QgY2hhciogcHJveHk7CiBjb25z
dCBjaGFyKiBiZ0NvbG9yOworc3RhdGljIGNoYXIqIHRpbWVab25lOwogc3RhdGljIGdib29sZWFu
IGVuYWJsZUlUUDsKIHN0YXRpYyBnYm9vbGVhbiBwcmludFZlcnNpb247CiBzdGF0aWMgR0hhc2hU
YWJsZSogb3BlblZpZXdzOwpAQCAtNjMsNiArNjQsNyBAQCBzdGF0aWMgY29uc3QgR09wdGlvbkVu
dHJ5IGNvbW1hbmRMaW5lT3B0aW9uc1tdID0KICAgICB7ICJjb250ZW50LWZpbHRlciIsIDAsIDAs
IEdfT1BUSU9OX0FSR19GSUxFTkFNRSwgJmNvbnRlbnRGaWx0ZXIsICJKU09OIHdpdGggY29udGVu
dCBmaWx0ZXJpbmcgcnVsZXMiLCAiRklMRSIgfSwKICAgICB7ICJiZy1jb2xvciIsIDAsIDAsIEdf
T1BUSU9OX0FSR19TVFJJTkcsICZiZ0NvbG9yLCAiV2luZG93IGJhY2tncm91bmQgY29sb3IuIERl
ZmF1bHQ6IHdoaXRlIiwgIkNPTE9SIiB9LAogICAgIHsgImVuYWJsZS1pdHAiLCAwLCAwLCBHX09Q
VElPTl9BUkdfTk9ORSwgJmVuYWJsZUlUUCwgIkVuYWJsZSBJbnRlbGxpZ2VudCBUcmFja2luZyBQ
cmV2ZW50aW9uIChJVFApIiwgbnVsbHB0ciB9LAorICAgIHsgInRpbWUtem9uZSIsICd0JywgMCwg
R19PUFRJT05fQVJHX1NUUklORywgJnRpbWVab25lLCAiU2V0IHRpbWUgem9uZSIsICJUSU1FWk9O
RSIgfSwKICAgICB7ICJ2ZXJzaW9uIiwgJ3YnLCAwLCBHX09QVElPTl9BUkdfTk9ORSwgJnByaW50
VmVyc2lvbiwgIlByaW50IHRoZSBXUEUgdmVyc2lvbiIsIG51bGxwdHIgfSwKICAgICB7IEdfT1BU
SU9OX1JFTUFJTklORywgMCwgMCwgR19PUFRJT05fQVJHX0ZJTEVOQU1FX0FSUkFZLCAmdXJpQXJn
dW1lbnRzLCBudWxscHRyLCAiW1VSTF0iIH0sCiAgICAgeyBudWxscHRyLCAwLCAwLCBHX09QVElP
Tl9BUkdfTk9ORSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9CkBAIC0yMjksNyArMjMxLDcg
QEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgICBpZiAoaWdub3JlVExTRXJy
b3JzKQogICAgICAgICB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfc2V0X3Rsc19lcnJvcnNf
cG9saWN5KG1hbmFnZXIsIFdFQktJVF9UTFNfRVJST1JTX1BPTElDWV9JR05PUkUpOwogCi0gICAg
YXV0byogd2ViQ29udGV4dCA9IHdlYmtpdF93ZWJfY29udGV4dF9uZXdfd2l0aF93ZWJzaXRlX2Rh
dGFfbWFuYWdlcihtYW5hZ2VyKTsKKyAgICBhdXRvKiB3ZWJDb250ZXh0ID0gV0VCS0lUX1dFQl9D
T05URVhUKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfQ09OVEVYVCwgIndlYnNpdGUtZGF0
YS1tYW5hZ2VyIiwgbWFuYWdlciwgInRpbWUtem9uZS1vdmVycmlkZSIsIHRpbWVab25lLCBudWxs
cHRyKSk7CiAgICAgZ19vYmplY3RfdW5yZWYobWFuYWdlcik7CiAKICAgICBpZiAoY29va2llc1Bv
bGljeSkgewpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Tb3VyY2VzQ29jb2EudHh0
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDM2YWQzNDc1YTkw
MzRlY2ZlZTdkNmY1ZWIyYzlkNzRjODA2YzJlMmQuLjAxNmMyYzQ3NmQxNTgzNWFlNDk0NGEyYmYy
MDcwY2YwMGMzNzBjODcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvU291cmNlc0Nv
Y29hLnR4dAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1NvdXJjZXNDb2NvYS50eHQKQEAgLTI0
MCw2ICsyNDAsNyBAQCBUZXN0cy9XZWJLaXRDb2NvYS9UZXN0VVJMU2NoZW1lSGFuZGxlci5tbQog
VGVzdHMvV2ViS2l0Q29jb2EvVGV4dE1hbmlwdWxhdGlvbi5tbQogVGVzdHMvV2ViS2l0Q29jb2Ev
VGV4dFNpemUubW0KIFRlc3RzL1dlYktpdENvY29hL1RleHRXaWR0aC5tbQorVGVzdHMvV2ViS2l0
Q29jb2EvVGltZVpvbmVPdmVycmlkZS5tbQogVGVzdHMvV2ViS2l0Q29jb2EvVG9wQ29udGVudElu
c2V0Lm1tCiBUZXN0cy9XZWJLaXRDb2NvYS9VSURlbGVnYXRlLm1tCiBUZXN0cy9XZWJLaXRDb2Nv
YS9VcGxvYWREaXJlY3RvcnkubW0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzU3N2Y3NmZl
ZTZjN2QyNzkwYmQ5M2QyZmQ5Nzc4Y2M4MWQ4N2ExNC4uOTgzNjkyM2EyY2IyNmIwMmI4YjZiN2Nj
YmEzYjI3YzQ2OGEyNDU4YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMwMzAsNiArMzAz
MCw3IEBACiAJCUVCQTc1QzQ4Mjc1RUQ3QkUwMEQ2RDMxQyAvKiBQdXNoTWVzc2FnZUNyeXB0by5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQdXNoTWVzc2FnZUNyeXB0by5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUVDNzlGMTY4QkU0NTRFNTc5RTQxN0IwNSAvKiBNYXJrYWJsZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXJrYWJsZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVDQTY4MENEMUU2OENDMDkwMDczMUQyMCAvKiBT
dHJpbmdVdGlsaXRpZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBTdHJpbmdVdGlsaXRpZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUYzQ0VG
NkI4MjgwOEYyRDMwMDFFMjNBNSAvKiBUaW1lWm9uZU92ZXJyaWRlLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gVGltZVpvbmVPdmVycmlkZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRjNGQzNFRTIxMzY3OEI3MzAwMTI2QTY1IC8qIGxpYmd0ZXN0LmEgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBhcmNoaXZlLmFyOyBwYXRoID0gbGli
Z3Rlc3QuYTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJRjQwMTBCN0Yy
NERBMjRBQzAwQTg3NkUyIC8qIE5hdmlnYXRpb25Td2lwZVRlc3RzLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTmF2aWdhdGlvblN3aXBlVGVzdHMubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0MDEwQjgxMjREQTI2N0YwMEE4NzZFMiAvKiBQb3Nl
QXNDbGFzcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFBvc2VB
c0NsYXNzLm1tOyBwYXRoID0gLi4vVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9Qb3NlQXNDbGFzcy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM3MDEsNiArMzcwMiw3IEBACiAJCQkJ
OUIwMkUwRDUyMzVGQTQ3RDAwNDA0NEIyIC8qIFRleHRNYW5pcHVsYXRpb24ubW0gKi8sCiAJCQkJ
NUMxNkY4RkIyMzBDOTQyQjAwNzRDNEE4IC8qIFRleHRTaXplLm1tICovLAogCQkJCUMyMkZBMzJB
MjI4Rjg3MDgwMDlENzk4OCAvKiBUZXh0V2lkdGgubW0gKi8sCisJCQkJRjNDRUY2QjgyODA4RjJE
MzAwMUUyM0E1IC8qIFRpbWVab25lT3ZlcnJpZGUubW0gKi8sCiAJCQkJNUM3M0E4MUEyMzIzMDU5
ODAwREVBODVBIC8qIFRMU0RlcHJlY2F0aW9uLm1tICovLAogCQkJCUNERTE5NUIzMUNGRTBBREUw
MDUzRDI1NiAvKiBUb3BDb250ZW50SW5zZXQubW0gKi8sCiAJCQkJNUNCNDBCNEQxRjRCOThCRTAw
N0RDN0I5IC8qIFVJRGVsZWdhdGUubW0gKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1RpbWVab25lT3ZlcnJpZGUubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1RpbWVab25lT3ZlcnJpZGUubW0KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NDM2M2M4MWFjMDU3NDIxNTIwYjAwMDIyMzI0M2JkNjM1YmNmZWUyYQotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVGltZVpvbmVPdmVycmlk
ZS5tbQpAQCAtMCwwICsxLDEwNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBJZ2FsaWEg
Uy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2lmIFBMQVRGT1JNKENPQ09B
KQorCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdC5oIgorI2lt
cG9ydCAiVGVzdFdLV2ViVmlldy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb25Qcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgorI2lt
cG9ydCA8V2ViS2l0L19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oPgorI2ltcG9ydCA8d3Rm
L0Z1bmN0aW9uLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworY2xhc3MgVGlt
ZVpvbmVPdmVycmlkZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CitwdWJsaWM6CisgICAg
dm9pZCBTZXRVcCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgICAg
ICBhdXRvIHByb2Nlc3NQb29sQ29uZmlnID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmln
dXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgICAgICBbcHJvY2Vzc1Bvb2xDb25maWcgc2V0VGlt
ZVpvbmVPdmVycmlkZTpAIkV1cm9wZS9CZXJsaW4iXTsKKworICAgICAgICBfd2ViVmlldyA9IGFk
b3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgMzAwLCAzMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBwcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWcuZ2V0KCldKTsKKyAgICB9CisKKyAgICB2
b2lkIHJ1blNjcmlwdEFuZEV4ZWN1dGVDYWxsYmFjayhjb25zdCBTdHJpbmcmIHNjcmlwdCwgRnVu
Y3Rpb248dm9pZChpZCk+JiYgY2FsbGJhY2spCisgICAgeworICAgICAgICBib29sIGNvbXBsZXRl
ID0gZmFsc2U7CisgICAgICAgIFtfd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6c2NyaXB0IGNv
bXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAg
ICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0KTsK
KyAgICAgICAgICAgIGNvbXBsZXRlID0gdHJ1ZTsKKyAgICAgICAgfV07CisgICAgICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmY29tcGxldGUpOworICAgIH0KKworICAgIHZvaWQgY2FsbEFz
eW5jRnVuY3Rpb25Cb2R5KGNvbnN0IFN0cmluZyYgZnVuY3Rpb25Cb2R5LCBGdW5jdGlvbjx2b2lk
KGlkKT4mJiBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIGJvb2wgY29tcGxldGUgPSBmYWxzZTsK
KyAgICAgICAgW193ZWJWaWV3IGNhbGxBc3luY0phdmFTY3JpcHQ6ZnVuY3Rpb25Cb2R5IGFyZ3Vt
ZW50czpuaWwgaW5GcmFtZTpuaWwgaW5Db250ZW50V29ybGQ6V0tDb250ZW50V29ybGQucGFnZVdv
cmxkIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgewor
ICAgICAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICAgICAgY2FsbGJhY2socmVz
dWx0KTsKKyAgICAgICAgICAgIGNvbXBsZXRlID0gdHJ1ZTsKKyAgICAgICAgfV07CisgICAgICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmY29tcGxldGUpOworICAgIH0KKworCitwcml2YXRl
OgorICAgIFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiBfd2ViVmlldzsKK307CisKK1RFU1RfRihU
aW1lWm9uZU92ZXJyaWRlVGVzdCwgVGltZVpvbmVPdmVycmlkZSkKK3sKKyAgICBydW5TY3JpcHRB
bmRFeGVjdXRlQ2FsbGJhY2soImxldCBub3cgPSBuZXcgRGF0ZSgxNjUxNTExMjI2MDUwKTsgbm93
LmdldFRpbWV6b25lT2Zmc2V0KCkiX3MsIFtdKGlkIHJlc3VsdCkgeworICAgICAgICBFWFBFQ1Rf
V0tfU1RSRVEoW3Jlc3VsdCBzdHJpbmdWYWx1ZV0sICItMTIwIik7CisgICAgfSk7Cit9CisKK1RF
U1RfRihUaW1lWm9uZU92ZXJyaWRlVGVzdCwgVGltZVpvbmVPdmVycmlkZUluV29ya2VycykKK3sK
KyAgICBTdHJpbmcgZnVuY3Rpb25Cb2R5ID0KKyAgICAgICAgInJldHVybiBuZXcgUHJvbWlzZShm
dWxmaWxsID0+IHsiCisgICAgICAgICIgIGNvbnN0IHJlc3VsdHMgPSBbSW50bC5EYXRlVGltZUZv
cm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLnRpbWVab25lXTsiCisgICAgICAgICIgIGZvciAobGV0
IGkgPSAwOyBpIDwgMzsgaSsrKSB7IgorICAgICAgICAiICAgIGNvbnN0IHdvcmtlciA9IG5ldyBX
b3JrZXIoJ2RhdGE6dGV4dC9qYXZhc2NyaXB0LHNlbGYucG9zdE1lc3NhZ2UoSW50bC5EYXRlVGlt
ZUZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLnRpbWVab25lKScpOyIKKyAgICAgICAgIiAgICB3
b3JrZXIub25tZXNzYWdlID0gbWVzc2FnZSA9PiB7IgorICAgICAgICAiICAgICAgcmVzdWx0cy5w
dXNoKG1lc3NhZ2UuZGF0YSk7IgorICAgICAgICAiICAgICAgaWYgKHJlc3VsdHMubGVuZ3RoID09
PSA0KSIKKyAgICAgICAgIiAgICAgICAgZnVsZmlsbChyZXN1bHRzLmpvaW4oJywgJykpOyIKKyAg
ICAgICAgIiAgICB9OyIKKyAgICAgICAgIiAgfSIKKyAgICAgICAgIn0pOyJfczsKKyAgICBjYWxs
QXN5bmNGdW5jdGlvbkJvZHkoZnVuY3Rpb25Cb2R5LCBbXShpZCByZXN1bHQpIHsKKyAgICAgICAg
RVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKTsKKyAg
ICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3VsdCwgQCJFdXJvcGUvQmVybGluLCBFdXJvcGUvQmVy
bGluLCBFdXJvcGUvQmVybGluLCBFdXJvcGUvQmVybGluIik7CisgICAgfSk7Cit9CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RX
ZWJLaXRXZWJDb250ZXh0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xp
Yi9UZXN0V2ViS2l0V2ViQ29udGV4dC5jcHAKaW5kZXggMzEyMDc4ZjdjYTRhYTkwNzlkYjQ2ODMw
OTQ4MDVlYWJlZjkyMzhmZS4uM2VkOGRkODNhN2Y5MDk1OTI1MDAwZDNlMmJlZWY5Y2QzNGJjM2Zm
ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RX
ZWJLaXRXZWJDb250ZXh0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEdMaWIvVGVzdFdlYktpdFdlYkNvbnRleHQuY3BwCkBAIC05OTEsNiArOTkxLDU4IEBAIHN0YXRp
YyB2b2lkIHRlc3RNZW1vcnlQcmVzc3VyZVNldHRpbmdzKE1lbW9yeVByZXNzdXJlVGVzdCogdGVz
dCwgZ2NvbnN0cG9pbnRlcikKICAgICBnX2Fzc2VydF9jbXB1aW50KHRlc3QtPm1fdGVybWluYXRp
b25SZWFzb24sID09LCBXRUJLSVRfV0VCX1BST0NFU1NfRVhDRUVERURfTUVNT1JZX0xJTUlUKTsK
IH0KIAorc3RhdGljIHZvaWQgdGVzdFdlYkNvbnRleHRUaW1lWm9uZU92ZXJyaWRlKFdlYlZpZXdU
ZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBl
cnJvcjsKKyAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBqYXZhc2NyaXB0UmVzdWx0ID0gdGVz
dC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJjb25zdCBkYXRlID0gbmV3IERh
dGUoMTY1MTUxMTIyNjA1MCk7IGRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKSIsICZlcnJvci5vdXRQ
dHIoKSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChqYXZhc2NyaXB0UmVzdWx0KTsKKyAgICBnX2Fz
c2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7CisgICAgLy8gQnkgZGVmYXVsdCB0aGUgdGVzdCBo
YXJuZXNzIHVzZXMgdGhlIFBhY2lmaWMvTG9zX0FuZ2VsZXMgdGltZXpvbmUgd2hpY2ggaXMgNyBo
b3VycyAoNDIwIG1pbnV0ZXMpIGNvbXBhcmVkIHRvIEdNVC4KKyAgICBnX2Fzc2VydF9jbXBpbnQo
V2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb051bWJlcihqYXZhc2NyaXB0UmVzdWx0KSwg
PT0sIDQyMCk7CisKKyAgICAvLyBDcmVhdGUgYSBuZXcgY29udGV4dCBjb25maWd1cmVkIHdpdGgg
dGltZSB6b25lIG92ZXJpZGUgc2V0IHRvIEJlcmxpbiB3aGljaCBpcyAxMjAgbWludXRlcyBhaGVh
ZCBvZiB0aGUgR01UIG9mZnNldC4KKyAgICBhdXRvIHdlYkNvbnRleHQgPSBhZG9wdEdSZWYoV0VC
S0lUX1dFQl9DT05URVhUKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfQ09OVEVYVCwKKyAg
ICAgICAgInRpbWUtem9uZS1vdmVycmlkZSIsICJFdXJvcGUvQmVybGluIiwgbnVsbHB0cikpKTsK
KyAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3dlYl9jb250ZXh0X2dldF90aW1lX3pvbmVfb3Zl
cnJpZGUod2ViQ29udGV4dC5nZXQoKSksID09LCAiRXVyb3BlL0JlcmxpbiIpOworICAgIGF1dG8g
d2ViVmlldyA9IFRlc3Q6OmFkb3B0VmlldyhUZXN0OjpjcmVhdGVXZWJWaWV3KHdlYkNvbnRleHQu
Z2V0KCkpKTsKKyAgICBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdh
aXRVbnRpbEZpbmlzaGVkKCJjb25zdCBkYXRlID0gbmV3IERhdGUoMTY1MTUxMTIyNjA1MCk7IGRh
dGUuZ2V0VGltZXpvbmVPZmZzZXQoKSIsICZlcnJvci5vdXRQdHIoKSwgd2ViVmlldy5nZXQoKSk7
CisgICAgZ19hc3NlcnRfbm9ubnVsbChqYXZhc2NyaXB0UmVzdWx0KTsKKyAgICBnX2Fzc2VydF9u
b19lcnJvcihlcnJvci5nZXQoKSk7CisgICAgZ19hc3NlcnRfY21waW50KFdlYlZpZXdUZXN0Ojpq
YXZhc2NyaXB0UmVzdWx0VG9OdW1iZXIoamF2YXNjcmlwdFJlc3VsdCksID09LCAtMTIwKTsKK30K
Kworc3RhdGljIHZvaWQgdGVzdFdlYkNvbnRleHRUaW1lWm9uZU92ZXJyaWRlSW5Xb3JrZXIoV2Vi
Vmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCit7CisgICAgR1VuaXF1ZU91dFB0cjxHRXJy
b3I+IGVycm9yOworICAgIFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGphdmFzY3JpcHRSZXN1bHQg
PSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoIkludGwuRGF0ZVRpbWVG
b3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS50aW1lWm9uZSIsICZlcnJvci5vdXRQdHIoKSk7Cisg
ICAgZ19hc3NlcnRfbm9ubnVsbChqYXZhc2NyaXB0UmVzdWx0KTsKKyAgICBnX2Fzc2VydF9ub19l
cnJvcihlcnJvci5nZXQoKSk7CisgICAgLy8gQnkgZGVmYXVsdCB0aGUgdGVzdCBoYXJuZXNzIHVz
ZXMgdGhlIFBhY2lmaWMvTG9zX0FuZ2VsZXMuCisgICAgZ19hc3NlcnRfY21wc3RyKFdlYlZpZXdU
ZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1bHQpLCA9PSwgIkFt
ZXJpY2EvTG9zX0FuZ2VsZXMiKTsKKyAgICAvLyBDcmVhdGUgYSBuZXcgY29udGV4dCBjb25maWd1
cmVkIHdpdGggdGltZSB6b25lIG92ZXJpZGUgc2V0IHRvIEJlcmxpbiB3aGljaCBpcyAxMjAgbWlu
dXRlcyBhaGVhZCBvZiB0aGUgR01UIG9mZnNldC4KKyAgICBhdXRvIHdlYkNvbnRleHQgPSBhZG9w
dEdSZWYoV0VCS0lUX1dFQl9DT05URVhUKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfQ09O
VEVYVCwKKyAgICAgICAgInRpbWUtem9uZS1vdmVycmlkZSIsICJFdXJvcGUvQmVybGluIiwgbnVs
bHB0cikpKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3dlYl9jb250ZXh0X2dldF90aW1l
X3pvbmVfb3ZlcnJpZGUod2ViQ29udGV4dC5nZXQoKSksID09LCAiRXVyb3BlL0JlcmxpbiIpOwor
ICAgIGF1dG8gd2ViVmlldyA9IFRlc3Q6OmFkb3B0VmlldyhUZXN0OjpjcmVhdGVXZWJWaWV3KHdl
YkNvbnRleHQuZ2V0KCkpKTsKKworICAgIHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxG
aW5pc2hlZCgKKyAgICAgICAgIndpbmRvdy5yZXN1bHRzID0gW0ludGwuRGF0ZVRpbWVGb3JtYXQo
KS5yZXNvbHZlZE9wdGlvbnMoKS50aW1lWm9uZV07IgorICAgICAgICAiZm9yIChsZXQgaSA9IDA7
IGkgPCAzOyBpKyspIHsiCisgICAgICAgICIgIGNvbnN0IHdvcmtlciA9IG5ldyBXb3JrZXIoJ2Rh
dGE6dGV4dC9qYXZhc2NyaXB0LHNlbGYucG9zdE1lc3NhZ2UoSW50bC5EYXRlVGltZUZvcm1hdCgp
LnJlc29sdmVkT3B0aW9ucygpLnRpbWVab25lKScpOyIKKyAgICAgICAgIiAgd29ya2VyLm9ubWVz
c2FnZSA9IG1lc3NhZ2UgPT4gcmVzdWx0cy5wdXNoKG1lc3NhZ2UuZGF0YSk7IgorICAgICAgICAi
fSIsICZlcnJvci5vdXRQdHIoKSwgd2ViVmlldy5nZXQoKSk7CisgICAgZG8geworICAgICAgICBq
YXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVk
KCJyZXN1bHRzLmxlbmd0aCIsICZlcnJvci5vdXRQdHIoKSwgd2ViVmlldy5nZXQoKSk7CisgICAg
ICAgIGdfYXNzZXJ0X25vbm51bGwoamF2YXNjcmlwdFJlc3VsdCk7CisgICAgICAgIGdfYXNzZXJ0
X25vX2Vycm9yKGVycm9yLmdldCgpKTsKKyAgICB9IHdoaWxlIChXZWJWaWV3VGVzdDo6amF2YXNj
cmlwdFJlc3VsdFRvTnVtYmVyKGphdmFzY3JpcHRSZXN1bHQpIDwgNCk7CisKKyAgICBqYXZhc2Ny
aXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJyZXN1
bHRzLmpvaW4oJywgJykiLCAmZXJyb3Iub3V0UHRyKCksIHdlYlZpZXcuZ2V0KCkpOworICAgIGdf
YXNzZXJ0X25vbm51bGwoamF2YXNjcmlwdFJlc3VsdCk7CisgICAgZ19hc3NlcnRfbm9fZXJyb3Io
ZXJyb3IuZ2V0KCkpOworICAgIGdfYXNzZXJ0X2NtcHN0cihXZWJWaWV3VGVzdDo6amF2YXNjcmlw
dFJlc3VsdFRvQ1N0cmluZyhqYXZhc2NyaXB0UmVzdWx0KSwgPT0sICJFdXJvcGUvQmVybGluLCBF
dXJvcGUvQmVybGluLCBFdXJvcGUvQmVybGluLCBFdXJvcGUvQmVybGluIik7Cit9CisKIHZvaWQg
YmVmb3JlQWxsKCkKIHsKICAgICBrU2VydmVyID0gbmV3IFdlYktpdFRlc3RTZXJ2ZXIoKTsKQEAg
LTEwMDgsNiArMTA2MCw4IEBAIHZvaWQgYmVmb3JlQWxsKCkKICAgICBXZWJWaWV3VGVzdDo6YWRk
KCJXZWJLaXRTZWN1cml0eU1hbmFnZXIiLCAiZmlsZS14aHIiLCB0ZXN0V2ViQ29udGV4dFNlY3Vy
aXR5RmlsZVhIUik7CiAgICAgUHJveHlUZXN0OjphZGQoIldlYktpdFdlYkNvbnRleHQiLCAicHJv
eHkiLCB0ZXN0V2ViQ29udGV4dFByb3h5U2V0dGluZ3MpOwogICAgIE1lbW9yeVByZXNzdXJlVGVz
dDo6YWRkKCJXZWJLaXRXZWJDb250ZXh0IiwgIm1lbW9yeS1wcmVzc3VyZSIsIHRlc3RNZW1vcnlQ
cmVzc3VyZVNldHRpbmdzKTsKKyAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJDb250ZXh0
IiwgInRpbWV6b25lIiwgdGVzdFdlYkNvbnRleHRUaW1lWm9uZU92ZXJyaWRlKTsKKyAgICBXZWJW
aWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJDb250ZXh0IiwgInRpbWV6b25lLXdvcmtlciIsIHRlc3RX
ZWJDb250ZXh0VGltZVpvbmVPdmVycmlkZUluV29ya2VyKTsKIH0KIAogdm9pZCBhZnRlckFsbCgp
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9UZXN0TWFp
bi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9UZXN0TWFpbi5jcHAK
aW5kZXggZTg1YjNjMWVmZGU3MjEzMzYyZGU2OTdkNzMyYzUzNmQ1ZDdmZmUxOS4uMzk3NDE3NDZh
NzU2M2M5Y2UyODRkMGU5ZjJhMjliMDVlM2VkYzUwNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9nbGliL1dlYktpdEdMaWIvVGVzdE1haW4uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvZ2xpYi9XZWJLaXRHTGliL1Rlc3RNYWluLmNwcApAQCAtMTMyLDYgKzEzMiw3IEBAIGlu
dCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKICAgICBnX3NldGVudigiR1NFVFRJTkdTX0JB
Q0tFTkQiLCAibWVtb3J5IiwgVFJVRSk7CiAgICAgLy8gR2V0IHJpZCBvZiBydW50aW1lIHdhcm5p
bmdzIGFib3V0IGRlcHJlY2F0ZWQgcHJvcGVydGllcyBhbmQgc2lnbmFscywgc2luY2UgdGhleSBi
cmVhayB0aGUgdGVzdHMuCiAgICAgZ19zZXRlbnYoIkdfRU5BQkxFX0RJQUdOT1NUSUMiLCAiMCIs
IFRSVUUpOworICAgIGdfc2V0ZW52KCJUWiIsICJBbWVyaWNhL0xvc19BbmdlbGVzIiwgVFJVRSk7
CiAgICAgZ190ZXN0X2J1Z19iYXNlKCJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy8iKTsKIAogICAg
IHJlZ2lzdGVyR1Jlc291cmNlKCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2ds
aWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIv
V2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5jcHAKaW5kZXggOTBmNWQzNTFjMTdkZGU4YTBhMWZmOGMy
YTI0ZjlkYmEyYWI0ZjM3OC4uYTIxYTAwNDJiNGM3NTU5YmM3MjVjMWZhYzA2NThlNDAzYzE5MWNh
ZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmll
d1Rlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZp
ZXdUZXN0LmNwcApAQCAtMzA2LDkgKzMwNiw5IEBAIGNvbnN0IGNoYXIqIFdlYlZpZXdUZXN0Ojpt
YWluUmVzb3VyY2VEYXRhKHNpemVfdCYgbWFpblJlc291cmNlRGF0YVNpemUpCiAgICAgcmV0dXJu
IG1fcmVzb3VyY2VEYXRhLmdldCgpOwogfQogCi1zdGF0aWMgdm9pZCBydW5KYXZhU2NyaXB0UmVh
ZHlDYWxsYmFjayhHT2JqZWN0KiwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIFdlYlZpZXdUZXN0KiB0
ZXN0KQorc3RhdGljIHZvaWQgcnVuSmF2YVNjcmlwdFJlYWR5Q2FsbGJhY2soR09iamVjdCogb2Jq
ZWN0LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgV2ViVmlld1Rlc3QqIHRlc3QpCiB7Ci0gICAgdGVz
dC0+bV9qYXZhc2NyaXB0UmVzdWx0ID0gd2Via2l0X3dlYl92aWV3X3J1bl9qYXZhc2NyaXB0X2Zp
bmlzaCh0ZXN0LT5tX3dlYlZpZXcsIHJlc3VsdCwgdGVzdC0+bV9qYXZhc2NyaXB0RXJyb3IpOwor
ICAgIHRlc3QtPm1famF2YXNjcmlwdFJlc3VsdCA9IHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNj
cmlwdF9maW5pc2goV0VCS0lUX1dFQl9WSUVXKG9iamVjdCksIHJlc3VsdCwgdGVzdC0+bV9qYXZh
c2NyaXB0RXJyb3IpOwogICAgIGdfbWFpbl9sb29wX3F1aXQodGVzdC0+bV9tYWluTG9vcCk7CiB9
CiAKQEAgLTMyNCwxMyArMzI0LDE1IEBAIHN0YXRpYyB2b2lkIHJ1bkphdmFTY3JpcHRJbldvcmxk
UmVhZHlDYWxsYmFjayhHT2JqZWN0KiwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIFdlCiAgICAgZ19t
YWluX2xvb3BfcXVpdCh0ZXN0LT5tX21haW5Mb29wKTsKIH0KIAotV2ViS2l0SmF2YXNjcmlwdFJl
c3VsdCogV2ViVmlld1Rlc3Q6OnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZChjb25z
dCBjaGFyKiBqYXZhc2NyaXB0LCBHRXJyb3IqKiBlcnJvcikKK1dlYktpdEphdmFzY3JpcHRSZXN1
bHQqIFdlYlZpZXdUZXN0OjpydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoY29uc3Qg
Y2hhciogamF2YXNjcmlwdCwgR0Vycm9yKiogZXJyb3IsIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcp
CiB7CiAgICAgaWYgKG1famF2YXNjcmlwdFJlc3VsdCkKICAgICAgICAgd2Via2l0X2phdmFzY3Jp
cHRfcmVzdWx0X3VucmVmKG1famF2YXNjcmlwdFJlc3VsdCk7CiAgICAgbV9qYXZhc2NyaXB0UmVz
dWx0ID0gMDsKICAgICBtX2phdmFzY3JpcHRFcnJvciA9IGVycm9yOwotICAgIHdlYmtpdF93ZWJf
dmlld19ydW5famF2YXNjcmlwdChtX3dlYlZpZXcsIGphdmFzY3JpcHQsIDAsIHJlaW50ZXJwcmV0
X2Nhc3Q8R0FzeW5jUmVhZHlDYWxsYmFjaz4ocnVuSmF2YVNjcmlwdFJlYWR5Q2FsbGJhY2spLCB0
aGlzKTsKKyAgICBpZiAoIXdlYlZpZXcpCisgICAgICAgIHdlYlZpZXcgPSBtX3dlYlZpZXc7Cisg
ICAgd2Via2l0X3dlYl92aWV3X3J1bl9qYXZhc2NyaXB0KHdlYlZpZXcsIGphdmFzY3JpcHQsIDAs
IHJlaW50ZXJwcmV0X2Nhc3Q8R0FzeW5jUmVhZHlDYWxsYmFjaz4ocnVuSmF2YVNjcmlwdFJlYWR5
Q2FsbGJhY2spLCB0aGlzKTsKICAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcCk7CiAKICAg
ICByZXR1cm4gbV9qYXZhc2NyaXB0UmVzdWx0OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Z2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmgKaW5kZXggYTI4YTVlZGM4ZDQwZjU4YjUwNWFi
NjRiMWVmNDhhYTBiNjU5NzMzMy4uMDJkNTg0OTVkNmQ3N2JmYjNhNzNiYTI4YjZhNWQ5MzBjNDZm
ZjJkYSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2Vi
Vmlld1Rlc3QuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJW
aWV3VGVzdC5oCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGVtaXRQb3B1cE1l
bnVTaWduYWwoKTsKICNlbmRpZgogCi0gICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogcnVuSmF2
YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKGNvbnN0IGNoYXIqIGphdmFzY3JpcHQsIEdFcnJv
cioqKTsKKyAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBydW5KYXZhU2NyaXB0QW5kV2FpdFVu
dGlsRmluaXNoZWQoY29uc3QgY2hhciogamF2YXNjcmlwdCwgR0Vycm9yKiosIFdlYktpdFdlYlZp
ZXcqID0gbnVsbHB0cik7CiAgICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogcnVuSmF2YVNjcmlw
dEZyb21HUmVzb3VyY2VBbmRXYWl0VW50aWxGaW5pc2hlZChjb25zdCBjaGFyKiByZXNvdXJjZSwg
R0Vycm9yKiopOwogICAgIFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIHJ1bkphdmFTY3JpcHRJbldv
cmxkQW5kV2FpdFVudGlsRmluaXNoZWQoY29uc3QgY2hhciogamF2YXNjcmlwdCwgY29uc3QgY2hh
ciogd29ybGQsIEdFcnJvcioqKTsKICAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBydW5KYXZh
U2NyaXB0V2l0aG91dEZvcmNlZFVzZXJHZXN0dXJlc0FuZFdhaXRVbnRpbEZpbmlzaGVkKGNvbnN0
IGNoYXIqIGphdmFzY3JpcHQsIEdFcnJvcioqKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL2ZsYXRwYWsv
ZmxhdHBha3V0aWxzLnB5IGIvVG9vbHMvZmxhdHBhay9mbGF0cGFrdXRpbHMucHkKaW5kZXggYWIx
ZGJhOTgyMDZiZTgxMGIxZDRlNjBjYTc0NmQ5Yjc3YWIyYjBlZC4uNTY2MjZhMzY2NDEyYWIzNmYw
ZWZjYjdkMzhlN2Q3ZjE2NzUxYWE2YiAxMDA2NDQKLS0tIGEvVG9vbHMvZmxhdHBhay9mbGF0cGFr
dXRpbHMucHkKKysrIGIvVG9vbHMvZmxhdHBhay9mbGF0cGFrdXRpbHMucHkKQEAgLTg1Nyw3ICs4
NTcsNyBAQCBjbGFzcyBXZWJraXRGbGF0cGFrOgogICAgICAgICAgICAgXSkKIAogICAgICAgICAg
ICAgc2FuZGJveF9lbnZpcm9ubWVudC51cGRhdGUoewotICAgICAgICAgICAgICAgICJUWiI6ICJQ
U1Q4UERUIiwKKyAgICAgICAgICAgICAgICAiVFoiOiAiQW1lcmljYS9Mb3NfQW5nZWxlcyIsCiAg
ICAgICAgICAgICB9KQogCiAgICAgICAgIGVudl92YXJfcHJlZml4ZXNfdG9fa2VlcCA9IFsK
</data>

          </attachment>
      

    </bug>

</bugzilla>