<?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>88787</bug_id>
          
          <creation_ts>2012-06-11 09:58:43 -0700</creation_ts>
          <short_desc>Support a rational time class for use by media elements.</short_desc>
          <delta_ts>2012-07-28 12:24:19 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>gustavo</cc>
    
    <cc>mfeil</cc>
    
    <cc>pkasting</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>646046</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-06-11 09:58:43 -0700</bug_when>
    <thetext>Support a rational time class for use by media elements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646047</commentid>
    <comment_count>1</comment_count>
      <attachid>146868</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-06-11 09:59:06 -0700</bug_when>
    <thetext>Created attachment 146868
Patch

First pass to allow EWS bots to chew on the new files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646051</commentid>
    <comment_count>2</comment_count>
      <attachid>146868</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-06-11 10:04:44 -0700</bug_when>
    <thetext>Comment on attachment 146868
Patch

Attachment 146868 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/12941364</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646053</commentid>
    <comment_count>3</comment_count>
      <attachid>146868</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-06-11 10:05:21 -0700</bug_when>
    <thetext>Comment on attachment 146868
Patch

Attachment 146868 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/12948184</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646059</commentid>
    <comment_count>4</comment_count>
      <attachid>146868</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-11 10:09:33 -0700</bug_when>
    <thetext>Comment on attachment 146868
Patch

Attachment 146868 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/12946199</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646063</commentid>
    <comment_count>5</comment_count>
      <attachid>146868</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-06-11 10:12:23 -0700</bug_when>
    <thetext>Comment on attachment 146868
Patch

Attachment 146868 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/12939412</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646069</commentid>
    <comment_count>6</comment_count>
      <attachid>146870</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-06-11 10:20:59 -0700</bug_when>
    <thetext>Created attachment 146870
Patch

Fix compile errors on mac, chromium and gkt ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646076</commentid>
    <comment_count>7</comment_count>
      <attachid>146870</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-06-11 10:28:38 -0700</bug_when>
    <thetext>Comment on attachment 146870
Patch

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

&gt; Source/WTF/wtf/MediaTime.cpp:39
&gt; +static int32_t greatestCommonDivisor(int32_t lhs, int32_t rhs)

What are &quot;lhs&quot; and &quot;rhs&quot; - &quot;left hand side&quot; and &quot;right hand side&quot;? In any case, please burn a few characters to make the variable names more obvious.

&gt; Source/WTF/wtf/MediaTime.cpp:56
&gt; +using namespace WTF;

Is this necessary inside of &quot;namespace WTF { ...&quot;?

&gt; Source/WTF/wtf/MediaTime.cpp:291
&gt; +    static const MediaTime* time = 0;
&gt; +    if (!time)
&gt; +        time = new MediaTime(0, 1, Valid);

This can be just &quot;static const MediaTime* time = new MediaTime(...);&quot;

Here and throughout the file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646080</commentid>
    <comment_count>8</comment_count>
      <attachid>146872</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-06-11 10:31:47 -0700</bug_when>
    <thetext>Created attachment 146872
Patch

Fixed the WTF::abs compile error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646090</commentid>
    <comment_count>9</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-06-11 10:44:19 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 146870 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=146870&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/MediaTime.cpp:39
&gt; &gt; +static int32_t greatestCommonDivisor(int32_t lhs, int32_t rhs)
&gt; 
&gt; What are &quot;lhs&quot; and &quot;rhs&quot; - &quot;left hand side&quot; and &quot;right hand side&quot;? In any case, please burn a few characters to make the variable names more obvious.

I had thought rhs and lhs were pretty obvious. They&apos;re consistently used throughout WTF for similar functions.  This function isn&apos;t order-sensitive, so this could as easily be &quot;int32_t a, int32_t b&quot;, or &quot;int32_t one, int32_t two&quot;.  But the rest of the operators and constructors should be left as &quot;lhs&quot; and &quot;rhs&quot;.

&gt; &gt; Source/WTF/wtf/MediaTime.cpp:56
&gt; &gt; +using namespace WTF;
&gt; 
&gt; Is this necessary inside of &quot;namespace WTF { ...&quot;?

Nope, removed.

&gt; &gt; Source/WTF/wtf/MediaTime.cpp:291
&gt; &gt; +    static const MediaTime* time = 0;
&gt; &gt; +    if (!time)
&gt; &gt; +        time = new MediaTime(0, 1, Valid);
&gt; 
&gt; This can be just &quot;static const MediaTime* time = new MediaTime(...);&quot;
&gt; 
&gt; Here and throughout the file.

Changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646094</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-06-11 10:51:19 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #7)
&gt; &gt; (From update of attachment 146870 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=146870&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WTF/wtf/MediaTime.cpp:39
&gt; &gt; &gt; +static int32_t greatestCommonDivisor(int32_t lhs, int32_t rhs)
&gt; &gt; 
&gt; &gt; What are &quot;lhs&quot; and &quot;rhs&quot; - &quot;left hand side&quot; and &quot;right hand side&quot;? In any case, please burn a few characters to make the variable names more obvious.
&gt; 
&gt; I had thought rhs and lhs were pretty obvious. They&apos;re consistently used throughout WTF for similar functions.  This function isn&apos;t order-sensitive, so this could as easily be &quot;int32_t a, int32_t b&quot;, or &quot;int32_t one, int32_t two&quot;.  But the rest of the operators and constructors should be left as &quot;lhs&quot; and &quot;rhs&quot;.
&gt; 
Oh well, it is just me then. Guess I should get out of the media ghetto more often.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646096</commentid>
    <comment_count>11</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-06-11 10:55:09 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt; (In reply to comment #7)
&gt; &gt; &gt; (From update of attachment 146870 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=146870&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WTF/wtf/MediaTime.cpp:39
&gt; &gt; &gt; &gt; +static int32_t greatestCommonDivisor(int32_t lhs, int32_t rhs)
&gt; &gt; &gt; 
&gt; &gt; &gt; What are &quot;lhs&quot; and &quot;rhs&quot; - &quot;left hand side&quot; and &quot;right hand side&quot;? In any case, please burn a few characters to make the variable names more obvious.
&gt; &gt; 
&gt; &gt; I had thought rhs and lhs were pretty obvious. They&apos;re consistently used throughout WTF for similar functions.  This function isn&apos;t order-sensitive, so this could as easily be &quot;int32_t a, int32_t b&quot;, or &quot;int32_t one, int32_t two&quot;.  But the rest of the operators and constructors should be left as &quot;lhs&quot; and &quot;rhs&quot;.
&gt; &gt; 
&gt; Oh well, it is just me then. Guess I should get out of the media ghetto more often.

No way, you knew what it meant on the first try! :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646116</commentid>
    <comment_count>12</comment_count>
      <attachid>146872</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-11 11:16:14 -0700</bug_when>
    <thetext>Comment on attachment 146872
Patch

Attachment 146872 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/12946213</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646121</commentid>
    <comment_count>13</comment_count>
      <attachid>146881</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-06-11 11:23:59 -0700</bug_when>
    <thetext>Created attachment 146881
Patch

Addressed Eric&apos;s comments and added ChangeLog entries.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646129</commentid>
    <comment_count>14</comment_count>
      <attachid>146881</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-06-11 11:33:24 -0700</bug_when>
    <thetext>Comment on attachment 146881
Patch

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

&gt; Source/WTF/ChangeLog:73
&gt; +2012-06-11  Jer Noble  &lt;jer.noble@apple.com&gt;
&gt; +
&gt; +        Support a rational time class for use by media elements.
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=88787
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        * GNUmakefile.list.am:

Oops, you forgot to nuke the old entry when you prettified it.

&gt; Tools/ChangeLog:23
&gt; +2012-06-11  Jer Noble  &lt;jer.noble@apple.com&gt;
&gt; +
&gt; +        Support a rational time class for use by media elements.
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=88787
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).

Double-entry here too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646143</commentid>
    <comment_count>15</comment_count>
      <attachid>146884</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-06-11 11:43:05 -0700</bug_when>
    <thetext>Created attachment 146884
Patch

Add missing project files, including WTF.gypi and windows build files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646145</commentid>
    <comment_count>16</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-06-11 11:45:03 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 146881 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=146881&amp;action=review
&gt; 
&gt; &gt; Source/WTF/ChangeLog:73
&gt; &gt; +2012-06-11  Jer Noble  &lt;jer.noble@apple.com&gt;
&gt; &gt; +
&gt; &gt; +        Support a rational time class for use by media elements.
&gt; &gt; +        https://bugs.webkit.org/show_bug.cgi?id=88787
&gt; &gt; +
&gt; &gt; +        Reviewed by NOBODY (OOPS!).
&gt; &gt; +
&gt; &gt; +        * GNUmakefile.list.am:
&gt; 
&gt; Oops, you forgot to nuke the old entry when you prettified it.
&gt; 
&gt; &gt; Tools/ChangeLog:23
&gt; &gt; +2012-06-11  Jer Noble  &lt;jer.noble@apple.com&gt;
&gt; &gt; +
&gt; &gt; +        Support a rational time class for use by media elements.
&gt; &gt; +        https://bugs.webkit.org/show_bug.cgi?id=88787
&gt; &gt; +
&gt; &gt; +        Reviewed by NOBODY (OOPS!).
&gt; 
&gt; Double-entry here too.

Whoops!  Will fix that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646150</commentid>
    <comment_count>17</comment_count>
      <attachid>146885</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-06-11 11:48:45 -0700</bug_when>
    <thetext>Created attachment 146885
Patch

Removed double ChangeLog entries.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646168</commentid>
    <comment_count>18</comment_count>
      <attachid>146885</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-06-11 12:26:54 -0700</bug_when>
    <thetext>Comment on attachment 146885
Patch

Attachment 146885 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12940389</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680736</commentid>
    <comment_count>19</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-07-27 09:31:25 -0700</bug_when>
    <thetext>Committed r123878: &lt;http://trac.webkit.org/changeset/123878&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680843</commentid>
    <comment_count>20</comment_count>
      <attachid>146885</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-07-27 11:15:19 -0700</bug_when>
    <thetext>Comment on attachment 146885
Patch

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

&gt; Source/WTF/wtf/MediaTime.cpp:56
&gt; +const int32_t MediaTime::MaximumTimeScale = 0x7fffffffL;

What is the L here for?

&gt; Source/WTF/wtf/MediaTime.cpp:74
&gt; +MediaTime::~MediaTime()
&gt; +{
&gt; +}

We should remove this explicit destructor. It does nothing, but incurs function call overhead. The compiler would do the right thing if we just didn’t declare or define it.

&gt; Source/WTF/wtf/MediaTime.cpp:79
&gt; +MediaTime::MediaTime(const MediaTime&amp; rhs)
&gt; +{
&gt; +    *this = rhs;
&gt; +}

We should remove this function. It just does what the compiler would already do if we didn’t write it, possibly less efficiently.

&gt; Source/WTF/wtf/MediaTime.cpp:84
&gt; +    if (floatTime != floatTime)
&gt; +        return invalidTime();

We normally use isnan for this. Is there a reason not to do that here?

&gt; Source/WTF/wtf/MediaTime.cpp:86
&gt; +    if (std::isinf(floatTime))
&gt; +        return std::signbit(floatTime) ? negativeInfiniteTime() : positiveInfiniteTime();

I’m surprised the std:: prefix is needed. Normally, if you include MathExtras.h it’s not, and including it can cause problems on some platforms.

&gt; Source/WTF/wtf/MediaTime.cpp:100
&gt; +    if (doubleTime != doubleTime)
&gt; +        return invalidTime();

We normally use isnan for this. Is there a reason not to do that here?

&gt; Source/WTF/wtf/MediaTime.cpp:102
&gt; +    if (std::isinf(doubleTime))
&gt; +        return std::signbit(doubleTime) ? negativeInfiniteTime() : positiveInfiniteTime();

I’m surprised the std:: prefix is needed. Normally, if you include MathExtras.h it’s not, and including it can cause problems on some platforms.

&gt; Source/WTF/wtf/MediaTime.cpp:141
&gt; +MediaTime&amp; MediaTime::operator=(const MediaTime&amp; rhs)
&gt; +{
&gt; +    m_timeValue = rhs.m_timeValue;
&gt; +    m_timeScale = rhs.m_timeScale;
&gt; +    m_timeFlags = rhs.m_timeFlags;
&gt; +    return *this;
&gt; +}

We should remove this function. It just does what the compiler would already do if we didn’t write it, possibly less efficiently.

&gt; Source/WTF/wtf/MediaTime.cpp:240
&gt; +bool MediaTime::operator&lt;(const MediaTime&amp; rhs) const
&gt; +{
&gt; +    return compare(rhs) == LessThan;
&gt; +}
&gt; +
&gt; +bool MediaTime::operator&gt;(const MediaTime&amp; rhs) const
&gt; +{
&gt; +    return compare(rhs) == GreaterThan;
&gt; +}
&gt; +
&gt; +bool MediaTime::operator==(const MediaTime&amp; rhs) const
&gt; +{
&gt; +    return compare(rhs) == EqualTo;
&gt; +}
&gt; +
&gt; +bool MediaTime::operator&gt;=(const MediaTime&amp; rhs) const
&gt; +{
&gt; +    return compare(rhs) &gt;= EqualTo;
&gt; +}
&gt; +
&gt; +bool MediaTime::operator&lt;=(const MediaTime&amp; rhs) const
&gt; +{
&gt; +    return compare(rhs) &lt;= EqualTo;
&gt; +}

These should be inline functions in the header.

&gt; Source/WTF/wtf/MediaTime.cpp:313
&gt; +const MediaTime&amp; MediaTime::zeroTime()
&gt; +{
&gt; +    static const MediaTime* time = new MediaTime(0, 1, Valid);
&gt; +    return *time;
&gt; +}
&gt; +
&gt; +const MediaTime&amp; MediaTime::invalidTime()
&gt; +{
&gt; +    static const MediaTime* time = new MediaTime(-1, 1, 0);
&gt; +    return *time;
&gt; +}
&gt; +
&gt; +const MediaTime&amp; MediaTime::positiveInfiniteTime()
&gt; +{
&gt; +    static const MediaTime* time = new MediaTime(0, 1, PositiveInfinite | Valid);
&gt; +    return *time;
&gt; +}
&gt; +
&gt; +const MediaTime&amp; MediaTime::negativeInfiniteTime()
&gt; +{
&gt; +    static const MediaTime* time = new MediaTime(-1, 1, NegativeInfinite | Valid);
&gt; +    return *time;
&gt; +}
&gt; +
&gt; +const MediaTime&amp; MediaTime::indefiniteTime()
&gt; +{
&gt; +    static const MediaTime* time = new MediaTime(0, 1, Indefinite | Valid);
&gt; +    return *time;
&gt; +}

I see no reason for these to use pointers and put the objects on the heap.

&gt; Source/WTF/wtf/MediaTime.cpp:334
&gt; +static int32_t signum(int64_t val)

Is there a reason this function has to have this funny short non-word name? Is it some kind of standard function name? Maybe mathematicians know this name, and I don’t?

ALso, could we put this at the top of the file with the other pure math functions?

&gt; Source/WTF/wtf/MediaTime.cpp:347
&gt; +    MediaTime val = rhs;
&gt; +    val.m_timeValue *= signum(rhs.m_timeScale) * signum(rhs.m_timeValue);
&gt; +    return val;

Why abbreviate to “val”? I suggest using “value” instead.

&gt; Source/WTF/wtf/MediaTime.h:64
&gt; +    MediaTime&amp; operator=(const MediaTime&amp; rhs);
&gt; +    MediaTime operator+(const MediaTime&amp; rhs) const;
&gt; +    MediaTime operator-(const MediaTime&amp; rhs) const;
&gt; +    bool operator&lt;(const MediaTime&amp; rhs) const;
&gt; +    bool operator&gt;(const MediaTime&amp; rhs) const;
&gt; +    bool operator==(const MediaTime&amp; rhs) const;
&gt; +    bool operator&gt;=(const MediaTime&amp; rhs) const;
&gt; +    bool operator&lt;=(const MediaTime&amp; rhs) const;

Please leave out the “rhs” argument names in the header. Also, I’d prefer a word to an abbreviation for that argument name.

Also, the binary functions like == should be non-member functions so that the left side can be converted to a MediaTime, not just the right side. Fortunately, they don’t even have to be friend functions since they can just call the compare function.

&gt; Source/WTF/wtf/MediaTime.h:70
&gt; +    typedef enum {
&gt; +        LessThan = -1,
&gt; +        EqualTo = 0,
&gt; +        GreaterThan = 1,
&gt; +    } ComparisonFlags;

The preferred C++ syntax is enum Name {} rather than typedef enum {} Name. That’s also used above.

The name “Flags” doesn’t make sense to me for a type that is used for a value that is a single comparison result (not a flag or even multiple flags).

&gt; Source/WTF/wtf/MediaTime.h:90
&gt; +    friend MediaTime abs(const MediaTime&amp; rhs);

Another way to do this would be to have a member function that gives the absolute value and then have abs just be an inline that calls that member function. Given the rest of the class’s interface is member functions, I think that would be more elegant than a friend.

&gt; Source/WTF/wtf/MediaTime.h:92
&gt; +    static const int32_t DefaultTimeScale = 6000;

What does this constant mean? What are its units? Why is 6000 a good value? Comments needed.

&gt; Source/WTF/wtf/MediaTime.h:93
&gt; +    static const int32_t MaximumTimeScale;

Why is the DefaultTimeScale value in the header, but not the MaximumTimeScale constant?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680905</commentid>
    <comment_count>21</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-07-27 11:59:23 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 146885 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=146885&amp;action=review

Whoops, i committed this patch this morning.  I&apos;ll address these comments in a new patch.

&gt; &gt; Source/WTF/wtf/MediaTime.cpp:56
&gt; &gt; +const int32_t MediaTime::MaximumTimeScale = 0x7fffffffL;
&gt; 
&gt; What is the L here for?
&gt; 
&gt; &gt; Source/WTF/wtf/MediaTime.cpp:74
&gt; &gt; +MediaTime::~MediaTime()
&gt; &gt; +{
&gt; &gt; +}
&gt; 
&gt; We should remove this explicit destructor. It does nothing, but incurs function call overhead. The compiler would do the right thing if we just didn’t declare or define it.

Sure thing.

&gt; &gt; Source/WTF/wtf/MediaTime.cpp:79
&gt; &gt; +MediaTime::MediaTime(const MediaTime&amp; rhs)
&gt; &gt; +{
&gt; &gt; +    *this = rhs;
&gt; &gt; +}
&gt; 
&gt; We should remove this function. It just does what the compiler would already do if we didn’t write it, possibly less efficiently.

Sure thing.

&gt; &gt; Source/WTF/wtf/MediaTime.cpp:84
&gt; &gt; +    if (floatTime != floatTime)
&gt; &gt; +        return invalidTime();
&gt; 
&gt; We normally use isnan for this. Is there a reason not to do that here?

Nope, no reason.

&gt; &gt; Source/WTF/wtf/MediaTime.cpp:86
&gt; &gt; +    if (std::isinf(floatTime))
&gt; &gt; +        return std::signbit(floatTime) ? negativeInfiniteTime() : positiveInfiniteTime();
&gt; 
&gt; I’m surprised the std:: prefix is needed. Normally, if you include MathExtras.h it’s not, and including it can cause problems on some platforms.

I&apos;ll pull it out; I see now where this could cause problems when including MathExtras.

&gt; &gt; Source/WTF/wtf/MediaTime.cpp:100
&gt; &gt; +    if (doubleTime != doubleTime)
&gt; &gt; +        return invalidTime();
&gt; 
&gt; We normally use isnan for this. Is there a reason not to do that here?

Nope.

&gt; &gt; Source/WTF/wtf/MediaTime.cpp:102
&gt; &gt; +    if (std::isinf(doubleTime))
&gt; &gt; +        return std::signbit(doubleTime) ? negativeInfiniteTime() : positiveInfiniteTime();
&gt; 
&gt; I’m surprised the std:: prefix is needed. Normally, if you include MathExtras.h it’s not, and including it can cause problems on some platforms.

Ditto.

&gt; &gt; Source/WTF/wtf/MediaTime.cpp:141
&gt; &gt; +MediaTime&amp; MediaTime::operator=(const MediaTime&amp; rhs)
&gt; &gt; +{
&gt; &gt; +    m_timeValue = rhs.m_timeValue;
&gt; &gt; +    m_timeScale = rhs.m_timeScale;
&gt; &gt; +    m_timeFlags = rhs.m_timeFlags;
&gt; &gt; +    return *this;
&gt; &gt; +}
&gt; 
&gt; We should remove this function. It just does what the compiler would already do if we didn’t write it, possibly less efficiently.

Sure.

&gt; &gt; Source/WTF/wtf/MediaTime.cpp:240
&gt; &gt; +bool MediaTime::operator&lt;(const MediaTime&amp; rhs) const
&gt; &gt; +{
&gt; &gt; +    return compare(rhs) == LessThan;
&gt; &gt; +}
&gt; &gt; +
&gt; &gt; +bool MediaTime::operator&gt;(const MediaTime&amp; rhs) const
&gt; &gt; +{
&gt; &gt; +    return compare(rhs) == GreaterThan;
&gt; &gt; +}
&gt; &gt; +
&gt; &gt; +bool MediaTime::operator==(const MediaTime&amp; rhs) const
&gt; &gt; +{
&gt; &gt; +    return compare(rhs) == EqualTo;
&gt; &gt; +}
&gt; &gt; +
&gt; &gt; +bool MediaTime::operator&gt;=(const MediaTime&amp; rhs) const
&gt; &gt; +{
&gt; &gt; +    return compare(rhs) &gt;= EqualTo;
&gt; &gt; +}
&gt; &gt; +
&gt; &gt; +bool MediaTime::operator&lt;=(const MediaTime&amp; rhs) const
&gt; &gt; +{
&gt; &gt; +    return compare(rhs) &lt;= EqualTo;
&gt; &gt; +}
&gt; 
&gt; These should be inline functions in the header.

Sure.

&gt; &gt; Source/WTF/wtf/MediaTime.cpp:313
&gt; &gt; +const MediaTime&amp; MediaTime::zeroTime()
&gt; &gt; +{
&gt; &gt; +    static const MediaTime* time = new MediaTime(0, 1, Valid);
&gt; &gt; +    return *time;
&gt; &gt; +}
&gt; &gt; +
&gt; &gt; +const MediaTime&amp; MediaTime::invalidTime()
&gt; &gt; +{
&gt; &gt; +    static const MediaTime* time = new MediaTime(-1, 1, 0);
&gt; &gt; +    return *time;
&gt; &gt; +}
&gt; &gt; +
&gt; &gt; +const MediaTime&amp; MediaTime::positiveInfiniteTime()
&gt; &gt; +{
&gt; &gt; +    static const MediaTime* time = new MediaTime(0, 1, PositiveInfinite | Valid);
&gt; &gt; +    return *time;
&gt; &gt; +}
&gt; &gt; +
&gt; &gt; +const MediaTime&amp; MediaTime::negativeInfiniteTime()
&gt; &gt; +{
&gt; &gt; +    static const MediaTime* time = new MediaTime(-1, 1, NegativeInfinite | Valid);
&gt; &gt; +    return *time;
&gt; &gt; +}
&gt; &gt; +
&gt; &gt; +const MediaTime&amp; MediaTime::indefiniteTime()
&gt; &gt; +{
&gt; &gt; +    static const MediaTime* time = new MediaTime(0, 1, Indefinite | Valid);
&gt; &gt; +    return *time;
&gt; &gt; +}
&gt; 
&gt; I see no reason for these to use pointers and put the objects on the heap.

Okay.

&gt; &gt; Source/WTF/wtf/MediaTime.cpp:334
&gt; &gt; +static int32_t signum(int64_t val)
&gt; 
&gt; Is there a reason this function has to have this funny short non-word name? Is it some kind of standard function name? Maybe mathematicians know this name, and I don’t?
&gt; 
&gt; ALso, could we put this at the top of the file with the other pure math functions?

Yes, it&apos;s a mathematician thing: http://en.wikipedia.org/wiki/Signum_function

And sure.

&gt; &gt; Source/WTF/wtf/MediaTime.cpp:347
&gt; &gt; +    MediaTime val = rhs;
&gt; &gt; +    val.m_timeValue *= signum(rhs.m_timeScale) * signum(rhs.m_timeValue);
&gt; &gt; +    return val;
&gt; 
&gt; Why abbreviate to “val”? I suggest using “value” instead.

Sure.

&gt; &gt; Source/WTF/wtf/MediaTime.h:64
&gt; &gt; +    MediaTime&amp; operator=(const MediaTime&amp; rhs);
&gt; &gt; +    MediaTime operator+(const MediaTime&amp; rhs) const;
&gt; &gt; +    MediaTime operator-(const MediaTime&amp; rhs) const;
&gt; &gt; +    bool operator&lt;(const MediaTime&amp; rhs) const;
&gt; &gt; +    bool operator&gt;(const MediaTime&amp; rhs) const;
&gt; &gt; +    bool operator==(const MediaTime&amp; rhs) const;
&gt; &gt; +    bool operator&gt;=(const MediaTime&amp; rhs) const;
&gt; &gt; +    bool operator&lt;=(const MediaTime&amp; rhs) const;
&gt; 
&gt; Please leave out the “rhs” argument names in the header. Also, I’d prefer a word to an abbreviation for that argument name.
&gt; 
&gt; Also, the binary functions like == should be non-member functions so that the left side can be converted to a MediaTime, not just the right side. Fortunately, they don’t even have to be friend functions since they can just call the compare function.

Sure.

&gt; &gt; Source/WTF/wtf/MediaTime.h:70
&gt; &gt; +    typedef enum {
&gt; &gt; +        LessThan = -1,
&gt; &gt; +        EqualTo = 0,
&gt; &gt; +        GreaterThan = 1,
&gt; &gt; +    } ComparisonFlags;
&gt; 
&gt; The preferred C++ syntax is enum Name {} rather than typedef enum {} Name. That’s also used above.
&gt; 
&gt; The name “Flags” doesn’t make sense to me for a type that is used for a value that is a single comparison result (not a flag or even multiple flags).

ComparisonResult then.

&gt; &gt; Source/WTF/wtf/MediaTime.h:90
&gt; &gt; +    friend MediaTime abs(const MediaTime&amp; rhs);
&gt; 
&gt; Another way to do this would be to have a member function that gives the absolute value and then have abs just be an inline that calls that member function. Given the rest of the class’s interface is member functions, I think that would be more elegant than a friend.

Sure.

&gt; &gt; Source/WTF/wtf/MediaTime.h:92
&gt; &gt; +    static const int32_t DefaultTimeScale = 6000;
&gt; 
&gt; What does this constant mean? What are its units? Why is 6000 a good value? Comments needed.

I&apos;ll add some.

&gt; &gt; Source/WTF/wtf/MediaTime.h:93
&gt; &gt; +    static const int32_t MaximumTimeScale;
&gt; 
&gt; Why is the DefaultTimeScale value in the header, but not the MaximumTimeScale constant?

Because, generally speaking, the DefaultTimeScale value is more interesting to the person using the API.  However, there&apos;s no strict reason why the MaximumTimeScale value couldn&apos;t be in the header either.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681463</commentid>
    <comment_count>22</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2012-07-28 12:24:19 -0700</bug_when>
    <thetext>I landed a followon compile fix for Chromium/Win in r123968.  I had to move the _USE_MATH_DEFINES line; in doing so I copied the pattern from the places in WebCore that defined this macro, which both did it unconditionally above config.h.  Let me know if this causes problems.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146868</attachid>
            <date>2012-06-11 09:59:06 -0700</date>
            <delta_ts>2012-06-11 10:20:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88787-20120611095905.patch</filename>
            <type>text/plain</type>
            <size>37369</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5OTgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUub3JkZXIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUub3JkZXIKaW5kZXggM2E0NTAwNzVhMTM0M2U1OWU3YjFlZGExMWE1ZjdjZDgwM2M4
NjVhYS4uMDc0MmEwYTBlMmI2ZGNkZDg0YmVmNzhjYmMxNmU3ZWFiODk5YTUyYiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLm9yZGVyCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5vcmRlcgpAQCAtMjQ5NCwzICsyNDk0LDE2
IEBAIF9fWk4zV1RGNlZlY3RvcklOM0pTQzEwQVNUQnVpbGRlcjE0QXNzaWdubWVudEluZm9FTG0x
MEVFMTRleHBhbmRDYXBhY2l0eUVtCiBfY3RpX29wX3B1dF9ieV9pZF9kaXJlY3RfZ2VuZXJpYwog
X19aTjNXVEY5SGFzaFRhYmxlSVBOM0pTQzE2RnVuY3Rpb25Cb2R5Tm9kZUVTdDRwYWlySVMzX2pF
TlNfMThQYWlyRmlyc3RFeHRyYWN0b3JJUzVfRUVOU183UHRySGFzaElTM19FRU5TXzE0UGFpckhh
c2hUcmFpdHNJTlNfMTBIYXNoVHJhaXRzSVMzX0VFTlNCX0lqRUVFRVNDX0U0ZmluZElTM19OU18y
MklkZW50aXR5SGFzaFRyYW5zbGF0b3JJUzNfUzVfUzlfRUVFRU5TXzE3SGFzaFRhYmxlSXRlcmF0
b3JJUzNfUzVfUzdfUzlfU0VfU0NfRUVSS1RfCiBfX1pOM1dURjlIYXNoVGFibGVJUE4zSlNDMTZG
dW5jdGlvbkJvZHlOb2RlRVN0NHBhaXJJUzNfakVOU18xOFBhaXJGaXJzdEV4dHJhY3RvcklTNV9F
RU5TXzdQdHJIYXNoSVMzX0VFTlNfMTRQYWlySGFzaFRyYWl0c0lOU18xMEhhc2hUcmFpdHNJUzNf
RUVOU0JfSWpFRUVFU0NfRTZleHBhbmRFdgorX19aTjNXVEYzYWJzRVJLTlNfOU1lZGlhVGltZUUK
K19fWk4zV1RGOU1lZGlhVGltZTExaW52YWxpZFRpbWVFdgorX19aTjNXVEY5TWVkaWFUaW1lMTRp
bmRlZmluaXRlVGltZUV2CitfX1pOM1dURjlNZWRpYVRpbWUxNWNyZWF0ZVdpdGhGbG9hdEVmaQor
X19aTjNXVEY5TWVkaWFUaW1lMTZjcmVhdGVXaXRoRG91YmxlRWRpCitfX1pOM1dURjlNZWRpYVRp
bWUyMG5lZ2F0aXZlSW5maW5pdGVUaW1lRXYKK19fWk4zV1RGOU1lZGlhVGltZTIwcG9zaXRpdmVJ
bmZpbml0ZVRpbWVFdgorX19aTjNXVEY5TWVkaWFUaW1lRDFFdgorX19aTkszV1RGOU1lZGlhVGlt
ZWd0RVJLUzBfCitfX1pOSzNXVEY5TWVkaWFUaW1lbHRFUktTMF8KK19fWk5LM1dURjlNZWRpYVRp
bWVtaUVSS1MwXworX19aTkszV1RGOU1lZGlhVGltZXBsRVJLUzBfCisKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XVEYvR05VbWFrZWZpbGUubGlz
dC5hbQppbmRleCAzZGZjMWRiZDNjODg2ZmU2OGRjYWIyMjk5ZjYwOWNiNGM2MzY2MTc4Li41NmUy
ZmRkMGVjOGY4NjQ2ZDAzYzZiZTRkZGQ0NzNmNjIwMDE0NDE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dURi9HTlVtYWtlZmlsZS5saXN0
LmFtCkBAIC03NSw2ICs3NSw4IEBAIHd0Zl9zb3VyY2VzICs9IFwKICAgICBTb3VyY2UvV1RGL3d0
Zi9NYWluVGhyZWFkLmggXAogICAgIFNvdXJjZS9XVEYvd3RmL01hbGxvY1pvbmVTdXBwb3J0Lmgg
XAogICAgIFNvdXJjZS9XVEYvd3RmL01hdGhFeHRyYXMuaCBcCisgICAgU291cmNlL1dURi93dGYv
TWVkaWFUaW1lLmggXAorICAgIFNvdXJjZS9XVEYvd3RmL01lZGlhVGltZS5jcHAgXAogICAgIFNv
dXJjZS9XVEYvd3RmL01lc3NhZ2VRdWV1ZS5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9NZXRhQWxs
b2NhdG9yLmNwcCBcCiAgICAgU291cmNlL1dURi93dGYvTWV0YUFsbG9jYXRvci5oIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvV1RGLnBybyBiL1NvdXJjZS9XVEYvV1RGLnBybwppbmRleCAzMzg0
NzcwYThlZDdkZmQzOTQ2Mzc4MWNkYTllODk4ZTk4ZWQxYmFhLi5mMTE2MjdhMDEzYmJlYzJjODFj
NDE2MjU5YjcxMDdmNDkxMDE3ZmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi5wcm8KKysr
IGIvU291cmNlL1dURi9XVEYucHJvCkBAIC03Niw2ICs3Niw3IEBAIEhFQURFUlMgKz0gXAogICAg
IE1hbGxvY1pvbmVTdXBwb3J0LmggXAogICAgIE1hdGhFeHRyYXMuaCBcCiAgICAgTUQ1LmggXAor
ICAgIE1lZGlhVGltZS5oIFwKICAgICBNZXNzYWdlUXVldWUuaCBcCiAgICAgTWV0YUFsbG9jYXRv
ci5oIFwKICAgICBNZXRhQWxsb2NhdG9ySGFuZGxlLmggXApAQCAtMTg5LDYgKzE5MCw3IEBAIFNP
VVJDRVMgKz0gXAogICAgIEhhc2hUYWJsZS5jcHAgXAogICAgIE1ENS5jcHAgXAogICAgIE1haW5U
aHJlYWQuY3BwIFwKKyAgICBNZWRpYVRpbWUuY3BwIFwKICAgICBNZXRhQWxsb2NhdG9yLmNwcCBc
CiAgICAgTnVsbFB0ci5jcHAgXAogICAgIE51bWJlck9mQ29yZXMuY3BwIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dU
Ri54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGJhNDU3NjQzZmIzYmExZDUxNmIzZWY5
MTE2OWFhYTFiYzcwYTU1N2UuLmViZWViNDljOTNlZjdjZDNmYzZmMjRlOTFiZjk5NjhhOGE5MzQx
ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjQxLDYg
KzI0MSw4IEBACiAJCUE4QTQ3NDg2MTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJlYWREYXRhLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MzdB
MTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJlYWREYXRhLmNwcCAqLzsgfTsKIAkJQThBNDc0ODcx
NTFBODI1QjAwNDEyM0ZGIC8qIFdURlRocmVhZERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MzdCMTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZU
aHJlYWREYXRhLmggKi87IH07CiAJCUE4QTQ3NDhDMTUxQTgyNjQwMDQxMjNGRiAvKiBjb25maWcu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3NDhC
MTUxQTgyNjQwMDQxMjNGRiAvKiBjb25maWcuaCAqLzsgfTsKKwkJQ0Q1NDk3QUMxNTg1N0QwMzAw
QjVCQzMwIC8qIE1lZGlhVGltZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRDU0OTdBQTE1ODU3RDAzMDBCNUJDMzAgLyogTWVkaWFUaW1lLmNwcCAq
LzsgfTsKKwkJQ0Q1NDk3QUQxNTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q1NDk3QUIxNTg1N0QwMzAw
QjVCQzMwIC8qIE1lZGlhVGltZS5oICovOyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9u
ICovCiAKIC8qIEJlZ2luIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwpAQCAtNDg4LDYgKzQ5
MCw4IEBACiAJCUE4QTQ3MzdBMTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJlYWREYXRhLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdURlRocmVhZERhdGEuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzM3QjE1MUE4MjVCMDA0MTIzRkYgLyog
V1RGVGhyZWFkRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXVEZUaHJl
YWREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3NDhCMTUxQTgyNjQw
MDQxMjNGRiAvKiBjb25maWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gY29u
ZmlnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNENTQ5N0FBMTU4NTdEMDMwMEI1
QkMzMCAvKiBNZWRpYVRpbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gTWVkaWFUaW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0Q1NDk3QUIx
NTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNZWRpYVRpbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8qIEVuZCBQ
QlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxk
UGhhc2Ugc2VjdGlvbiAqLwpAQCAtNjIzLDYgKzYyNyw4IEBACiAJCQkJQThBNDcyQzkxNTFBODI1
QjAwNDEyM0ZGIC8qIE1hdGhFeHRyYXMuaCAqLywKIAkJCQlBOEE0NzJDQTE1MUE4MjVCMDA0MTIz
RkYgLyogTUQ1LmNwcCAqLywKIAkJCQlBOEE0NzJDQjE1MUE4MjVCMDA0MTIzRkYgLyogTUQ1Lmgg
Ki8sCisJCQkJQ0Q1NDk3QUExNTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5jcHAgKi8sCisJ
CQkJQ0Q1NDk3QUIxNTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5oICovLAogCQkJCUE4QTQ3
MkNDMTUxQTgyNUIwMDQxMjNGRiAvKiBNZXNzYWdlUXVldWUuaCAqLywKIAkJCQlBOEE0NzJDRDE1
MUE4MjVCMDA0MTIzRkYgLyogTWV0YUFsbG9jYXRvci5jcHAgKi8sCiAJCQkJQThBNDcyQ0UxNTFB
ODI1QjAwNDEyM0ZGIC8qIE1ldGFBbGxvY2F0b3IuaCAqLywKQEAgLTkzMyw2ICs5MzksNyBAQAog
CQkJCUE4QTQ3M0U3MTUxQTgyNUIwMDQxMjNGRiAvKiBNYWxsb2Nab25lU3VwcG9ydC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQThBNDczRTgxNTFBODI1QjAwNDEyM0ZGIC8qIE1hdGhFeHRyYXMuaCBp
biBIZWFkZXJzICovLAogCQkJCUE4QTQ3M0VBMTUxQTgyNUIwMDQxMjNGRiAvKiBNRDUuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUNENTQ5N0FEMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuaCBp
biBIZWFkZXJzICovLAogCQkJCUE4QTQ3M0VCMTUxQTgyNUIwMDQxMjNGRiAvKiBNZXNzYWdlUXVl
dWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3M0VEMTUxQTgyNUIwMDQxMjNGRiAvKiBNZXRh
QWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzNFRTE1MUE4MjVCMDA0MTIzRkYg
LyogTWV0YUFsbG9jYXRvckhhbmRsZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMTg0LDYgKzExOTEs
NyBAQAogCQkJCUE4QTQ3NDdCMTUxQTgyNUIwMDQxMjNGRiAvKiBVUkxTZWdtZW50cy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBOEE0NzQ4NjE1MUE4MjVCMDA0MTIzRkYgLyogV1RGVGhyZWFkRGF0
YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDNGNjExRjE1NjVGMEY5MDBEQjUxNEEgLyogUkFN
U2l6ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDRDU0OTdBQzE1ODU3RDAzMDBCNUJDMzAgLyog
TWVkaWFUaW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
TWVkaWFUaW1lLmNwcCBiL1NvdXJjZS9XVEYvd3RmL01lZGlhVGltZS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ODA3MjJlMWY2MDk1MGE5NjNlODY0MzAxYTVkNzVkNTgxMjBkOTE5NwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XVEYvd3RmL01lZGlhVGltZS5jcHAKQEAgLTAsMCArMSwzNjMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIs
IEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAg
ICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZWRpYVRpbWUuaCIKKworI2luY2x1ZGUgPGFsZ29y
aXRobT4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KKwordXNpbmcgbmFtZXNw
YWNlIHN0ZDsKKworbmFtZXNwYWNlIFdURiB7CisKK3N0YXRpYyBpbnQzMl90IGdyZWF0ZXN0Q29t
bW9uRGl2aXNvcihpbnQzMl90IGxocywgaW50MzJfdCByaHMpCit7CisgICAgLy8gRXVjbGlkJ3Mg
QWxnb3JpdGhtCisgICAgaW50MzJfdCB0ZW1wID0gMDsKKyAgICB3aGlsZSAocmhzKSB7CisgICAg
ICAgIHRlbXAgPSByaHM7CisgICAgICAgIHJocyA9IGxocyAlIHJoczsKKyAgICAgICAgbGhzID0g
dGVtcDsKKyAgICB9CisgICAgcmV0dXJuIGxoczsKK30KKworc3RhdGljIGludDMyX3QgbGVhc3RD
b21tb25NdWx0aXBsZShpbnQzMl90IGxocywgaW50MzJfdCByaHMsIGludDMyX3QgJnJlc3VsdCkK
K3sKKyAgICByZXR1cm4gc2FmZU11bHRpcGx5KGxocywgcmhzIC8gZ3JlYXRlc3RDb21tb25EaXZp
c29yKGxocywgcmhzKSwgcmVzdWx0KTsKK30KKwordXNpbmcgbmFtZXNwYWNlIFdURjsKKworY29u
c3QgaW50MzJfdCBNZWRpYVRpbWU6Ok1heGltdW1UaW1lU2NhbGUgPSAweDdmZmZmZmZmTDsKKwor
TWVkaWFUaW1lOjpNZWRpYVRpbWUoKQorICAgIDogbV90aW1lVmFsdWUoMCkKKyAgICAsIG1fdGlt
ZVNjYWxlKERlZmF1bHRUaW1lU2NhbGUpCisgICAgLCBtX3RpbWVGbGFncyhWYWxpZCkKK3sKK30K
KworTWVkaWFUaW1lOjpNZWRpYVRpbWUoaW50NjRfdCB2YWx1ZSwgaW50MzJfdCBzY2FsZSwgdWlu
dDMyX3QgZmxhZ3MpCisgICAgOiBtX3RpbWVWYWx1ZSh2YWx1ZSkKKyAgICAsIG1fdGltZVNjYWxl
KHNjYWxlKQorICAgICwgbV90aW1lRmxhZ3MoZmxhZ3MpCit7Cit9CisKK01lZGlhVGltZTo6fk1l
ZGlhVGltZSgpCit7Cit9CisKK01lZGlhVGltZTo6TWVkaWFUaW1lKGNvbnN0IE1lZGlhVGltZSYg
cmhzKQoreworICAgICp0aGlzID0gcmhzOworfQorCitNZWRpYVRpbWUgTWVkaWFUaW1lOjpjcmVh
dGVXaXRoRmxvYXQoZmxvYXQgZmxvYXRUaW1lLCBpbnQzMl90IHRpbWVTY2FsZSkKK3sKKyAgICBp
ZiAoZmxvYXRUaW1lICE9IGZsb2F0VGltZSkKKyAgICAgICAgcmV0dXJuIGludmFsaWRUaW1lKCk7
CisgICAgaWYgKHN0ZDo6aXNpbmYoZmxvYXRUaW1lKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6c2ln
bmJpdChmbG9hdFRpbWUpID8gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKSA6IHBvc2l0aXZlSW5maW5p
dGVUaW1lKCk7CisgICAgaWYgKGZsb2F0VGltZSA+IG51bWVyaWNfbGltaXRzPGludDY0X3Q+Ojpt
YXgoKSkKKyAgICAgICAgcmV0dXJuIHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7CisgICAgaWYgKGZs
b2F0VGltZSA8IG51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSkKKyAgICAgICAgcmV0dXJu
IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCk7CisKKyAgICB3aGlsZSAoZmxvYXRUaW1lICogdGltZVNj
YWxlID4gbnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgpKQorICAgICAgICB0aW1lU2NhbGUg
Lz0gMjsKKyAgICByZXR1cm4gTWVkaWFUaW1lKHN0YXRpY19jYXN0PGludDY0X3Q+KGZsb2F0VGlt
ZSAqIHRpbWVTY2FsZSksIHRpbWVTY2FsZSwgVmFsaWQpOworfQorCitNZWRpYVRpbWUgTWVkaWFU
aW1lOjpjcmVhdGVXaXRoRG91YmxlKGRvdWJsZSBkb3VibGVUaW1lLCBpbnQzMl90IHRpbWVTY2Fs
ZSkKK3sKKyAgICBpZiAoZG91YmxlVGltZSAhPSBkb3VibGVUaW1lKQorICAgICAgICByZXR1cm4g
aW52YWxpZFRpbWUoKTsKKyAgICBpZiAoc3RkOjppc2luZihkb3VibGVUaW1lKSkKKyAgICAgICAg
cmV0dXJuIHN0ZDo6c2lnbmJpdChkb3VibGVUaW1lKSA/IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCkg
OiBwb3NpdGl2ZUluZmluaXRlVGltZSgpOworICAgIGlmIChkb3VibGVUaW1lID4gbnVtZXJpY19s
aW1pdHM8aW50NjRfdD46Om1heCgpKQorICAgICAgICByZXR1cm4gcG9zaXRpdmVJbmZpbml0ZVRp
bWUoKTsKKyAgICBpZiAoZG91YmxlVGltZSA8IG51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4o
KSkKKyAgICAgICAgcmV0dXJuIG5lZ2F0aXZlSW5maW5pdGVUaW1lKCk7CisKKyAgICB3aGlsZSAo
ZG91YmxlVGltZSAqIHRpbWVTY2FsZSA+IG51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKSkK
KyAgICAgICAgdGltZVNjYWxlIC89IDI7CisgICAgcmV0dXJuIE1lZGlhVGltZShzdGF0aWNfY2Fz
dDxpbnQ2NF90Pihkb3VibGVUaW1lICogdGltZVNjYWxlKSwgdGltZVNjYWxlLCBWYWxpZCk7Cit9
CisKK2Zsb2F0IE1lZGlhVGltZTo6dG9GbG9hdCgpIGNvbnN0Cit7CisgICAgaWYgKGlzSW52YWxp
ZCgpIHx8IGlzSW5kZWZpbml0ZSgpKQorICAgICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0
czxmbG9hdD46OnF1aWV0X05hTigpOworICAgIGlmIChpc1Bvc2l0aXZlSW5maW5pdGUoKSkKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpOworICAg
IGlmIChpc05lZ2F0aXZlSW5maW5pdGUoKSkKKyAgICAgICAgcmV0dXJuIC1zdGQ6Om51bWVyaWNf
bGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+
KG1fdGltZVZhbHVlKSAvIG1fdGltZVNjYWxlOworfQorCitkb3VibGUgTWVkaWFUaW1lOjp0b0Rv
dWJsZSgpIGNvbnN0Cit7CisgICAgaWYgKGlzSW52YWxpZCgpIHx8IGlzSW5kZWZpbml0ZSgpKQor
ICAgICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKTsK
KyAgICBpZiAoaXNQb3NpdGl2ZUluZmluaXRlKCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bWVy
aWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCk7CisgICAgaWYgKGlzTmVnYXRpdmVJbmZpbml0
ZSgpKQorICAgICAgICByZXR1cm4gLXN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5p
dHkoKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPihtX3RpbWVWYWx1ZSkgLyBtX3Rp
bWVTY2FsZTsKK30KKworTWVkaWFUaW1lJiBNZWRpYVRpbWU6Om9wZXJhdG9yPShjb25zdCBNZWRp
YVRpbWUmIHJocykKK3sKKyAgICBtX3RpbWVWYWx1ZSA9IHJocy5tX3RpbWVWYWx1ZTsKKyAgICBt
X3RpbWVTY2FsZSA9IHJocy5tX3RpbWVTY2FsZTsKKyAgICBtX3RpbWVGbGFncyA9IHJocy5tX3Rp
bWVGbGFnczsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK01lZGlhVGltZSBNZWRpYVRpbWU6Om9w
ZXJhdG9yKyhjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3QKK3sKKyAgICBpZiAocmhzLmlzSW52
YWxpZCgpIHx8IGlzSW52YWxpZCgpKQorICAgICAgICByZXR1cm4gaW52YWxpZFRpbWUoKTsKKwor
ICAgIGlmIChyaHMuaXNJbmRlZmluaXRlKCkgfHwgaXNJbmRlZmluaXRlKCkpCisgICAgICAgIHJl
dHVybiBpbmRlZmluaXRlVGltZSgpOworCisgICAgaWYgKGlzUG9zaXRpdmVJbmZpbml0ZSgpKSB7
CisgICAgICAgIGlmIChyaHMuaXNOZWdhdGl2ZUluZmluaXRlKCkpCisgICAgICAgICAgICByZXR1
cm4gaW52YWxpZFRpbWUoKTsKKyAgICAgICAgcmV0dXJuIHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7
CisgICAgfQorCisgICAgaWYgKGlzTmVnYXRpdmVJbmZpbml0ZSgpKSB7CisgICAgICAgIGlmIChy
aHMuaXNQb3NpdGl2ZUluZmluaXRlKCkpCisgICAgICAgICAgICByZXR1cm4gaW52YWxpZFRpbWUo
KTsKKyAgICAgICAgcmV0dXJuIG5lZ2F0aXZlSW5maW5pdGVUaW1lKCk7CisgICAgfQorCisgICAg
aW50MzJfdCBjb21tb25UaW1lU2NhbGU7CisgICAgaWYgKCFsZWFzdENvbW1vbk11bHRpcGxlKHRo
aXMtPm1fdGltZVNjYWxlLCByaHMubV90aW1lU2NhbGUsIGNvbW1vblRpbWVTY2FsZSkgfHwgY29t
bW9uVGltZVNjYWxlID4gTWF4aW11bVRpbWVTY2FsZSkKKyAgICAgICAgY29tbW9uVGltZVNjYWxl
ID0gTWF4aW11bVRpbWVTY2FsZTsKKyAgICBNZWRpYVRpbWUgYSA9ICp0aGlzOworICAgIE1lZGlh
VGltZSBiID0gcmhzOworICAgIGEuc2V0VGltZVNjYWxlKGNvbW1vblRpbWVTY2FsZSk7CisgICAg
Yi5zZXRUaW1lU2NhbGUoY29tbW9uVGltZVNjYWxlKTsKKyAgICB3aGlsZSAoIXNhZmVBZGQoYS5t
X3RpbWVWYWx1ZSwgYi5tX3RpbWVWYWx1ZSwgYS5tX3RpbWVWYWx1ZSkpIHsKKyAgICAgICAgaWYg
KGNvbW1vblRpbWVTY2FsZSA9PSAxKQorICAgICAgICAgICAgcmV0dXJuIGEubV90aW1lVmFsdWUg
PiAwID8gcG9zaXRpdmVJbmZpbml0ZVRpbWUoKSA6IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCk7Cisg
ICAgICAgIGNvbW1vblRpbWVTY2FsZSAvPSAyOworICAgICAgICBhLnNldFRpbWVTY2FsZShjb21t
b25UaW1lU2NhbGUpOworICAgICAgICBiLnNldFRpbWVTY2FsZShjb21tb25UaW1lU2NhbGUpOwor
ICAgIH0KKyAgICByZXR1cm4gYTsKK30KKworTWVkaWFUaW1lIE1lZGlhVGltZTo6b3BlcmF0b3It
KGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdAoreworICAgIGlmIChyaHMuaXNJbnZhbGlkKCkg
fHwgaXNJbnZhbGlkKCkpCisgICAgICAgIHJldHVybiBpbnZhbGlkVGltZSgpOworCisgICAgaWYg
KHJocy5pc0luZGVmaW5pdGUoKSB8fCBpc0luZGVmaW5pdGUoKSkKKyAgICAgICAgcmV0dXJuIGlu
ZGVmaW5pdGVUaW1lKCk7CisKKyAgICBpZiAoaXNQb3NpdGl2ZUluZmluaXRlKCkpIHsKKyAgICAg
ICAgaWYgKHJocy5pc1Bvc2l0aXZlSW5maW5pdGUoKSkKKyAgICAgICAgICAgIHJldHVybiBpbnZh
bGlkVGltZSgpOworICAgICAgICByZXR1cm4gcG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKKyAgICB9
CisKKyAgICBpZiAoaXNOZWdhdGl2ZUluZmluaXRlKCkpIHsKKyAgICAgICAgaWYgKHJocy5pc05l
Z2F0aXZlSW5maW5pdGUoKSkKKyAgICAgICAgICAgIHJldHVybiBpbnZhbGlkVGltZSgpOworICAg
ICAgICByZXR1cm4gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKTsKKyAgICB9CisKKyAgICBpbnQzMl90
IGNvbW1vblRpbWVTY2FsZTsKKyAgICBpZiAoIWxlYXN0Q29tbW9uTXVsdGlwbGUodGhpcy0+bV90
aW1lU2NhbGUsIHJocy5tX3RpbWVTY2FsZSwgY29tbW9uVGltZVNjYWxlKSB8fCBjb21tb25UaW1l
U2NhbGUgPiBNYXhpbXVtVGltZVNjYWxlKQorICAgICAgICBjb21tb25UaW1lU2NhbGUgPSBNYXhp
bXVtVGltZVNjYWxlOworICAgIE1lZGlhVGltZSBhID0gKnRoaXM7CisgICAgTWVkaWFUaW1lIGIg
PSByaHM7CisgICAgYS5zZXRUaW1lU2NhbGUoY29tbW9uVGltZVNjYWxlKTsKKyAgICBiLnNldFRp
bWVTY2FsZShjb21tb25UaW1lU2NhbGUpOworICAgIHdoaWxlICghc2FmZVN1YihhLm1fdGltZVZh
bHVlLCBiLm1fdGltZVZhbHVlLCBhLm1fdGltZVZhbHVlKSkgeworICAgICAgICBpZiAoY29tbW9u
VGltZVNjYWxlID09IDEpCisgICAgICAgICAgICByZXR1cm4gYS5tX3RpbWVWYWx1ZSA+IDAgPyBw
b3NpdGl2ZUluZmluaXRlVGltZSgpIDogbmVnYXRpdmVJbmZpbml0ZVRpbWUoKTsKKyAgICAgICAg
Y29tbW9uVGltZVNjYWxlIC89IDI7CisgICAgICAgIGEuc2V0VGltZVNjYWxlKGNvbW1vblRpbWVT
Y2FsZSk7CisgICAgICAgIGIuc2V0VGltZVNjYWxlKGNvbW1vblRpbWVTY2FsZSk7CisgICAgfQor
ICAgIHJldHVybiBhOworfQorCitib29sIE1lZGlhVGltZTo6b3BlcmF0b3I8KGNvbnN0IE1lZGlh
VGltZSYgcmhzKSBjb25zdAoreworICAgIHJldHVybiBjb21wYXJlKHJocykgPT0gTGVzc1RoYW47
Cit9CisKK2Jvb2wgTWVkaWFUaW1lOjpvcGVyYXRvcj4oY29uc3QgTWVkaWFUaW1lJiByaHMpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGNvbXBhcmUocmhzKSA9PSBHcmVhdGVyVGhhbjsKK30KKworYm9v
bCBNZWRpYVRpbWU6Om9wZXJhdG9yPT0oY29uc3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGNvbXBhcmUocmhzKSA9PSBFcXVhbFRvOworfQorCitib29sIE1lZGlhVGltZTo6
b3BlcmF0b3I+PShjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3QKK3sKKyAgICByZXR1cm4gY29t
cGFyZShyaHMpID49IEVxdWFsVG87Cit9CisKK2Jvb2wgTWVkaWFUaW1lOjpvcGVyYXRvcjw9KGNv
bnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdAoreworICAgIHJldHVybiBjb21wYXJlKHJocykgPD0g
RXF1YWxUbzsKK30KKworTWVkaWFUaW1lOjpDb21wYXJpc29uRmxhZ3MgTWVkaWFUaW1lOjpjb21w
YXJlKGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdAoreworICAgIGlmICgoaXNQb3NpdGl2ZUlu
ZmluaXRlKCkgJiYgcmhzLmlzUG9zaXRpdmVJbmZpbml0ZSgpKQorICAgICAgICB8fCAoaXNOZWdh
dGl2ZUluZmluaXRlKCkgJiYgcmhzLmlzTmVnYXRpdmVJbmZpbml0ZSgpKQorICAgICAgICB8fCAo
aXNJbnZhbGlkKCkgJiYgcmhzLmlzSW52YWxpZCgpKQorICAgICAgICB8fCAoaXNJbmRlZmluaXRl
KCkgJiYgcmhzLmlzSW5kZWZpbml0ZSgpKSkKKyAgICAgICAgcmV0dXJuIEVxdWFsVG87CisKKyAg
ICBpZiAoaXNJbnZhbGlkKCkpCisgICAgICAgIHJldHVybiBHcmVhdGVyVGhhbjsKKworICAgIGlm
IChyaHMuaXNJbnZhbGlkKCkpCisgICAgICAgIHJldHVybiBMZXNzVGhhbjsKKworICAgIGlmIChy
aHMuaXNOZWdhdGl2ZUluZmluaXRlKCkgfHwgaXNQb3NpdGl2ZUluZmluaXRlKCkpCisgICAgICAg
IHJldHVybiBHcmVhdGVyVGhhbjsKKworICAgIGlmIChyaHMuaXNQb3NpdGl2ZUluZmluaXRlKCkg
fHwgaXNOZWdhdGl2ZUluZmluaXRlKCkpCisgICAgICAgIHJldHVybiBMZXNzVGhhbjsKKworICAg
IGlmIChpc0luZGVmaW5pdGUoKSkKKyAgICAgICAgcmV0dXJuIEdyZWF0ZXJUaGFuOworCisgICAg
aWYgKHJocy5pc0luZGVmaW5pdGUoKSkKKyAgICAgICAgcmV0dXJuIExlc3NUaGFuOworCisgICAg
aW50NjRfdCByaHNXaG9sZSA9IHJocy5tX3RpbWVWYWx1ZSAvIHJocy5tX3RpbWVTY2FsZTsKKyAg
ICBpbnQ2NF90IGxoc1dob2xlID0gbV90aW1lVmFsdWUgLyBtX3RpbWVTY2FsZTsKKyAgICBpZiAo
bGhzV2hvbGUgPiByaHNXaG9sZSkKKyAgICAgICAgcmV0dXJuIEdyZWF0ZXJUaGFuOworICAgIGlm
IChsaHNXaG9sZSA8IHJoc1dob2xlKQorICAgICAgICByZXR1cm4gTGVzc1RoYW47CisKKyAgICBp
bnQ2NF90IHJoc1JlbWFpbiA9IHJocy5tX3RpbWVWYWx1ZSAlIHJocy5tX3RpbWVTY2FsZTsKKyAg
ICBpbnQ2NF90IGxoc1JlbWFpbiA9IG1fdGltZVZhbHVlICUgbV90aW1lU2NhbGU7CisgICAgaW50
NjRfdCBsaHNGYWN0b3IgPSBsaHNSZW1haW4gKiByaHMubV90aW1lU2NhbGU7CisgICAgaW50NjRf
dCByaHNGYWN0b3IgPSByaHNSZW1haW4gKiBtX3RpbWVTY2FsZTsKKworICAgIGlmIChsaHNGYWN0
b3IgPT0gcmhzRmFjdG9yKQorICAgICAgICByZXR1cm4gRXF1YWxUbzsKKyAgICByZXR1cm4gbGhz
RmFjdG9yID4gcmhzRmFjdG9yID8gR3JlYXRlclRoYW4gOiBMZXNzVGhhbjsKK30KKworY29uc3Qg
TWVkaWFUaW1lJiBNZWRpYVRpbWU6Onplcm9UaW1lKCkKK3sKKyAgICBzdGF0aWMgY29uc3QgTWVk
aWFUaW1lKiB0aW1lID0gMDsKKyAgICBpZiAoIXRpbWUpCisgICAgICAgIHRpbWUgPSBuZXcgTWVk
aWFUaW1lKDAsIDEsIFZhbGlkKTsKKyAgICByZXR1cm4gKnRpbWU7Cit9CisKK2NvbnN0IE1lZGlh
VGltZSYgTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpCit7CisgICAgc3RhdGljIGNvbnN0IE1lZGlh
VGltZSogdGltZSA9IDA7CisgICAgaWYgKCF0aW1lKQorICAgICAgICB0aW1lID0gbmV3IE1lZGlh
VGltZSgtMSwgMSwgMCk7CisgICAgcmV0dXJuICp0aW1lOworfQorCitjb25zdCBNZWRpYVRpbWUm
IE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKQoreworICAgIHN0YXRpYyBjb25zdCBN
ZWRpYVRpbWUqIHRpbWUgPSAwOworICAgIGlmICghdGltZSkKKyAgICAgICAgdGltZSA9IG5ldyBN
ZWRpYVRpbWUoMCwgMSwgUG9zaXRpdmVJbmZpbml0ZSB8IFZhbGlkKTsKKyAgICByZXR1cm4gKnRp
bWU7Cit9CisKK2NvbnN0IE1lZGlhVGltZSYgTWVkaWFUaW1lOjpuZWdhdGl2ZUluZmluaXRlVGlt
ZSgpCit7CisgICAgc3RhdGljIGNvbnN0IE1lZGlhVGltZSogdGltZSA9IDA7CisgICAgaWYgKCF0
aW1lKQorICAgICAgICB0aW1lID0gbmV3IE1lZGlhVGltZSgtMSwgMSwgTmVnYXRpdmVJbmZpbml0
ZSB8IFZhbGlkKTsKKyAgICByZXR1cm4gKnRpbWU7Cit9CisKK2NvbnN0IE1lZGlhVGltZSYgTWVk
aWFUaW1lOjppbmRlZmluaXRlVGltZSgpCit7CisgICAgc3RhdGljIGNvbnN0IE1lZGlhVGltZSog
dGltZSA9IDA7CisgICAgaWYgKCF0aW1lKQorICAgICAgICB0aW1lID0gbmV3IE1lZGlhVGltZSgw
LCAxLCBJbmRlZmluaXRlIHwgVmFsaWQpOworICAgIHJldHVybiAqdGltZTsKK30KKwordm9pZCBN
ZWRpYVRpbWU6OnNldFRpbWVTY2FsZShpbnQzMl90IHRpbWVTY2FsZSkKK3sKKyAgICBpZiAodGlt
ZVNjYWxlID09IG1fdGltZVNjYWxlKQorICAgICAgICByZXR1cm47CisgICAgdGltZVNjYWxlID0g
c3RkOjptaW4oTWF4aW11bVRpbWVTY2FsZSwgdGltZVNjYWxlKTsKKyAgICBpbnQ2NF90IHdob2xl
UGFydCA9IG1fdGltZVZhbHVlIC8gbV90aW1lU2NhbGU7CisKKyAgICAvLyBJZiBzZXR0aW5nIHRo
ZSB0aW1lIHNjYWxlIHdpbGwgY2F1c2UgYW4gb3ZlcmZsb3csIGRpdmlkZSB0aGUKKyAgICAvLyB0
aW1lc2NhbGUgYnkgdHdvIHVudGlsIHRoZSBudW1iZXIgd2lsbCBmaXQsIGFuZCByb3VuZCB0aGUK
KyAgICAvLyByZXN1bHQuCisgICAgaW50NjRfdCBuZXdXaG9sZVBhcnQ7CisgICAgd2hpbGUgKCFz
YWZlTXVsdGlwbHkod2hvbGVQYXJ0LCB0aW1lU2NhbGUsIG5ld1dob2xlUGFydCkpCisgICAgICAg
IHRpbWVTY2FsZSAvPSAyOworCisgICAgaW50NjRfdCByZW1haW5kZXIgPSBtX3RpbWVWYWx1ZSAl
IG1fdGltZVNjYWxlOworICAgIG1fdGltZVZhbHVlID0gbmV3V2hvbGVQYXJ0ICsgKHJlbWFpbmRl
ciAqIHRpbWVTY2FsZSkgLyBtX3RpbWVTY2FsZTsKKyAgICBtX3RpbWVTY2FsZSA9IHRpbWVTY2Fs
ZTsKK30KKworc3RhdGljIGludDMyX3Qgc2lnbnVtKGludDY0X3QgdmFsKQoreworICAgIHJldHVy
biAoMCA8IHZhbCkgLSAodmFsIDwgMCk7Cit9CisKK01lZGlhVGltZSBXVEY6OmFicyhjb25zdCBN
ZWRpYVRpbWUmIHJocykKK3sKKyAgICBpZiAocmhzLmlzSW52YWxpZCgpKQorICAgICAgICByZXR1
cm4gTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpOworICAgIGlmIChyaHMuaXNOZWdhdGl2ZUluZmlu
aXRlKCkgfHwgcmhzLmlzUG9zaXRpdmVJbmZpbml0ZSgpKQorICAgICAgICByZXR1cm4gTWVkaWFU
aW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpOworICAgIE1lZGlhVGltZSB2YWwgPSByaHM7Cisg
ICAgdmFsLm1fdGltZVZhbHVlICo9IHNpZ251bShyaHMubV90aW1lU2NhbGUpICogc2lnbnVtKHJo
cy5tX3RpbWVWYWx1ZSk7CisgICAgcmV0dXJuIHZhbDsKK30KKworfQorCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9NZWRpYVRpbWUuaCBiL1NvdXJjZS9XVEYvd3RmL01lZGlhVGltZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmExMWQ1M2I3NDc2NmFhYTgzNmZkNjZkMjJkODIyNWVlMzg2YjFkYjUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRpbWUuaApAQCAtMCwwICsxLDEwNiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxl
IENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4gCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQK
KyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgPGNtYXRoPgorI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDxtYXRo
Lmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisKK25hbWVzcGFjZSBXVEYgeworCitXVEZfRVhQT1JU
X1BSSVZBVEUgY2xhc3MgTWVkaWFUaW1lIHsKK3B1YmxpYzoKKyAgICBlbnVtIHsKKyAgICAgICAg
VmFsaWQgPSAxIDw8IDAsCisgICAgICAgIEhhc0JlZW5Sb3VuZGVkID0gMSA8PCAxLAorICAgICAg
ICBQb3NpdGl2ZUluZmluaXRlID0gMSA8PCAyLAorICAgICAgICBOZWdhdGl2ZUluZmluaXRlID0g
MSA8PCAzLAorICAgICAgICBJbmRlZmluaXRlID0gMSA8PCA0LAorICAgIH07CisKKyAgICBNZWRp
YVRpbWUoKTsKKyAgICBNZWRpYVRpbWUoaW50NjRfdCB2YWx1ZSwgaW50MzJfdCBzY2FsZSA9IERl
ZmF1bHRUaW1lU2NhbGUsIHVpbnQzMl90IGZsYWdzID0gVmFsaWQpOworICAgIE1lZGlhVGltZShj
b25zdCBNZWRpYVRpbWUmIHJocyk7CisgICAgfk1lZGlhVGltZSgpOworCisgICAgc3RhdGljIE1l
ZGlhVGltZSBjcmVhdGVXaXRoRmxvYXQoZmxvYXQgZmxvYXRUaW1lLCBpbnQzMl90IHRpbWVTY2Fs
ZSA9IERlZmF1bHRUaW1lU2NhbGUpOworICAgIHN0YXRpYyBNZWRpYVRpbWUgY3JlYXRlV2l0aERv
dWJsZShkb3VibGUgZG91YmxlVGltZSwgaW50MzJfdCB0aW1lU2NhbGUgPSBEZWZhdWx0VGltZVNj
YWxlKTsKKworICAgIGZsb2F0IHRvRmxvYXQoKSBjb25zdDsKKyAgICBkb3VibGUgdG9Eb3VibGUo
KSBjb25zdDsKKworICAgIE1lZGlhVGltZSYgb3BlcmF0b3I9KGNvbnN0IE1lZGlhVGltZSYgcmhz
KTsKKyAgICBNZWRpYVRpbWUgb3BlcmF0b3IrKGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdDsK
KyAgICBNZWRpYVRpbWUgb3BlcmF0b3ItKGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdDsKKyAg
ICBib29sIG9wZXJhdG9yPChjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3Q7CisgICAgYm9vbCBv
cGVyYXRvcj4oY29uc3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvcj49KGNvbnN0
IE1lZGlhVGltZSYgcmhzKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yPD0oY29uc3QgTWVkaWFU
aW1lJiByaHMpIGNvbnN0OworCisgICAgdHlwZWRlZiBlbnVtIHsKKyAgICAgICAgTGVzc1RoYW4g
PSAtMSwKKyAgICAgICAgRXF1YWxUbyA9IDAsCisgICAgICAgIEdyZWF0ZXJUaGFuID0gMSwKKyAg
ICB9IENvbXBhcmlzb25GbGFnczsKKworICAgIENvbXBhcmlzb25GbGFncyBjb21wYXJlKGNvbnN0
IE1lZGlhVGltZSYgcmhzKSBjb25zdDsKKworICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0
dXJuIG1fdGltZUZsYWdzICYgVmFsaWQ7IH0KKyAgICBib29sIGlzSW52YWxpZCgpIGNvbnN0IHsg
cmV0dXJuICFpc1ZhbGlkKCk7IH0KKyAgICBib29sIGhhc0JlZW5Sb3VuZGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV90aW1lRmxhZ3MgJiBIYXNCZWVuUm91bmRlZDsgfQorICAgIGJvb2wgaXNQb3NpdGl2
ZUluZmluaXRlKCkgY29uc3QgeyByZXR1cm4gbV90aW1lRmxhZ3MgJiBQb3NpdGl2ZUluZmluaXRl
OyB9CisgICAgYm9vbCBpc05lZ2F0aXZlSW5maW5pdGUoKSBjb25zdCB7IHJldHVybiBtX3RpbWVG
bGFncyAmIE5lZ2F0aXZlSW5maW5pdGU7IH0KKyAgICBib29sIGlzSW5kZWZpbml0ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdGltZUZsYWdzICYgSW5kZWZpbml0ZTsgfQorCisgICAgc3RhdGljIGNvbnN0
IE1lZGlhVGltZSYgemVyb1RpbWUoKTsKKyAgICBzdGF0aWMgY29uc3QgTWVkaWFUaW1lJiBpbnZh
bGlkVGltZSgpOworICAgIHN0YXRpYyBjb25zdCBNZWRpYVRpbWUmIHBvc2l0aXZlSW5maW5pdGVU
aW1lKCk7CisgICAgc3RhdGljIGNvbnN0IE1lZGlhVGltZSYgbmVnYXRpdmVJbmZpbml0ZVRpbWUo
KTsKKyAgICBzdGF0aWMgY29uc3QgTWVkaWFUaW1lJiBpbmRlZmluaXRlVGltZSgpOworCisgICAg
Y29uc3QgaW50NjRfdCYgdGltZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV90aW1lVmFsdWU7IH0K
KyAgICBjb25zdCBpbnQzMl90JiB0aW1lU2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3RpbWVTY2Fs
ZTsgfQorCisgICAgZnJpZW5kIE1lZGlhVGltZSBhYnMoY29uc3QgTWVkaWFUaW1lJiByaHMpOwor
cHJpdmF0ZToKKyAgICBzdGF0aWMgY29uc3QgaW50MzJfdCBEZWZhdWx0VGltZVNjYWxlID0gNjAw
MDsKKyAgICBzdGF0aWMgY29uc3QgaW50MzJfdCBNYXhpbXVtVGltZVNjYWxlOworCisgICAgdm9p
ZCBzZXRUaW1lU2NhbGUoaW50MzJfdCk7CisKKyAgICBpbnQ2NF90IG1fdGltZVZhbHVlOworICAg
IGludDMyX3QgbV90aW1lU2NhbGU7CisgICAgdWludDMyX3QgbV90aW1lRmxhZ3M7Cit9OworCitX
VEZfRVhQT1JUX1BSSVZBVEUgZXh0ZXJuIE1lZGlhVGltZSBhYnMoY29uc3QgTWVkaWFUaW1lJiBy
aHMpOworfQorCit1c2luZyBXVEY6Ok1lZGlhVGltZTsKK3VzaW5nIFdURjo6YWJzOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9HTlVtYWtlZmlsZS5hbSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvR05VbWFrZWZpbGUuYW0KaW5kZXggZmY5MjQ5MmYzMGEyZDdiYzVmZjQ4NjFhNjJlZDg2
NzkxYTgwMjRkYi4uZTE0YWUwMmJkZWEyMjhlMjI5OTI2MWJjYzc4M2E5NDI0ZTI0MWQyMCAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9HTlVtYWtlZmlsZS5hbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL0dOVW1ha2VmaWxlLmFtCkBAIC0yMTcsNiArMjE3LDEyIEBAIFByb2dyYW1z
X1Rlc3RXZWJLaXRBUElfV1RGX1Rlc3RIYXNoTWFwX0NQUEZMQUdTID0gJCh0ZXN0d2Via2l0YXBp
X3d0Zl90ZXN0c19jcHBmCiBQcm9ncmFtc19UZXN0V2ViS2l0QVBJX1dURl9UZXN0SGFzaE1hcF9M
REFERCA9ICQodGVzdHdlYmtpdGFwaV93dGZfdGVzdHNfbGRhZGQpCiBQcm9ncmFtc19UZXN0V2Vi
S2l0QVBJX1dURl9UZXN0SGFzaE1hcF9MREZMQUdTID0gJCh0ZXN0d2Via2l0YXBpX3d0Zl90ZXN0
c19sZGZsYWdzKQogCitQcm9ncmFtc19UZXN0V2ViS2l0QVBJX1dURl9UZXN0TWVkaWFUaW1lX1NP
VVJDRVMgPSBcCisJVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTWVkaWFUaW1lLmNwcAor
UHJvZ3JhbXNfVGVzdFdlYktpdEFQSV9XVEZfVGVzdE1lZGlhVGltZV9DUFBGTEFHUyA9ICQodGVz
dHdlYmtpdGFwaV93ZWJraXQyX3Rlc3RzX2NwcGZsYWdzKQorUHJvZ3JhbXNfVGVzdFdlYktpdEFQ
SV9XVEZfVGVzdE1lZGlhVGltZV9MREFERCA9ICQodGVzdHdlYmtpdGFwaV93ZWJraXQyX3Rlc3Rz
X2xkYWRkKQorUHJvZ3JhbXNfVGVzdFdlYktpdEFQSV9XVEZfVGVzdE1lZGlhVGltZV9MREZMQUdT
ID0gJCh0ZXN0d2Via2l0YXBpX3dlYmtpdDJfdGVzdHNfbGRmbGFncykKKwogUHJvZ3JhbXNfVGVz
dFdlYktpdEFQSV9XVEZfVGVzdFJlZEJsYWNrVHJlZV9TT1VSQ0VTID0gXAogCVRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL1JlZEJsYWNrVHJlZS5jcHAKIFByb2dyYW1zX1Rlc3RXZWJLaXRB
UElfV1RGX1Rlc3RSZWRCbGFja1RyZWVfQ1BQRkxBR1MgPSAkKHRlc3R3ZWJraXRhcGlfd3RmX3Rl
c3RzX2NwcGZsYWdzKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLmd5cGkgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkuZ3lwaQppbmRleCBj
NTExODdmYTA2MzYwYTI5MTQ4MjM3NWEzMDYxODQxOTcxN2I2Y2U3Li45NDFlNzc2ZDVmNGQwMWU5
YjM5MzdjYThjZTQ3ZjlkZDc3ZjQ1ZWY3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkuZ3lwaQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkuZ3lwaQpAQCAtMzQsNiArMzQsNyBAQAogICAgICAgICAgICAgJ1Rlc3RzL1dURi9DaGVja2Vk
QXJpdGhtZXRpY09wZXJhdGlvbnMuY3BwJywKICAgICAgICAgICAgICdUZXN0cy9XVEYvRnVuY3Rp
b25hbC5jcHAnLAogICAgICAgICAgICAgJ1Rlc3RzL1dURi9IYXNoTWFwLmNwcCcsCisgICAgICAg
ICAgICAnVGVzdHMvV1RGL01lZGlhVGltZS5jcHAnLAogICAgICAgICAgICAgJ1Rlc3RzL1dURi9S
ZWRCbGFja1RyZWUuY3BwJywKICAgICAgICAgICAgICdUZXN0cy9XVEYvU3RyaW5nQnVpbGRlci5j
cHAnLAogICAgICAgICAgICAgJ1Rlc3RzL1dURi9TdHJpbmdPcGVyYXRvcnMuY3BwJywKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggYzUxOWMwMjMxNmUyMTVkZDBmMjdmYzc4NjY1YjhkZmYzYTY2
YjVjZS4uZGQzNWVkZjMwOTg1YzAxOTBlOWUxZTA4ODViZTNiZmY0MTg2YjE3YSAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTE0NCw2ICsxNDQsNyBAQAogCQlDNTQwRjc4NDE1MkU1QTlBMDBB
NDBDOEMgLyogdmVyYm9zZU1hcmt1cC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1NDBGNzgzMTUyRTVBNzgwMEE0MEM4QyAvKiB2ZXJi
b3NlTWFya3VwLmh0bWwgKi87IH07CiAJCUUxMjIwREEwMTU1QjI1NDgwMDEzRTJGQyAvKiBNZW1v
cnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMjIwRDlGMTU1QjI1NDgwMDEzRTJG
QyAvKiBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSAqLzsg
fTsKIAkJRTEyMjBEQ0ExNTVCMjhBQTAwMTNFMkZDIC8qIE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhp
blJlc291cmNlTG9hZERlbGVnYXRlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEyMjBEQzkxNTVCMjg3RDAwMTNFMkZDIC8qIE1lbW9y
eUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLmh0bWwgKi87IH07CisJCUNE
NTQ5N0I0MTU4NTdGMEMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q1NDk3QjMxNTg1N0YwQzAwQjVCQzMwIC8q
IE1lZGlhVGltZS5jcHAgKi87IH07CiAJCUU0OTAyOTY4MTRFMkUzQTQwMDJCRUREMSAvKiBUeXBp
bmdTdHlsZUNyYXNoLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTQ5MDI5NjcxNEUyRTNBNDAwMkJFREQxIC8qIFR5cGluZ1N0eWxlQ3Jhc2gubW0gKi87
IH07CiAJCUYzRkMzRUUzMTM2NzhCNzMwMDEyNkE2NSAvKiBsaWJndGVzdC5hIGluIEZyYW1ld29y
a3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjNGQzNFRTIxMzY3OEI3MzAw
MTI2QTY1IC8qIGxpYmd0ZXN0LmEgKi87IH07CiAJCUY2RjNGMjkxMTMzNDJGRUIwMEE2QkYxOSAv
KiBDb29raWVNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEY2RjNGMjkwMTMzNDJGRUIwMEE2QkYxOSAvKiBDb29raWVNYW5hZ2VyLmNwcCAq
LzsgfTsKQEAgLTM2Myw2ICszNjQsNyBAQAogCQlDNTQwRjc4MzE1MkU1QTc4MDBBNDBDOEMgLyog
dmVyYm9zZU1hcmt1cC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gdmVyYm9zZU1h
cmt1cC5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTIyMEQ5RjE1NUIyNTQ4
MDAxM0UyRkMgLyogTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZW1vcnlDYWNoZURp
c2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTEyMjBEQzkxNTVCMjg3RDAwMTNFMkZDIC8qIE1lbW9yeUNhY2hlRGlzYWJsZVdp
dGhpblJlc291cmNlTG9hZERlbGVnYXRlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGgg
PSBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDU0OTdCMzE1ODU3RjBDMDBCNUJDMzAgLyogTWVk
aWFUaW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE1lZGlhVGlt
ZS5jcHA7IHBhdGggPSBXVEYvTWVkaWFUaW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTQ5MDI5NjcxNEUyRTNBNDAwMkJFREQxIC8qIFR5cGluZ1N0eWxlQ3Jhc2gubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBUeXBpbmdTdHlsZUNyYXNoLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGM0ZDM0VFMjEzNjc4QjczMDAxMjZBNjUg
LyogbGliZ3Rlc3QuYSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IGFyY2hpdmUuYXI7IHBhdGggPSBsaWJndGVzdC5hOyBzb3VyY2VUcmVlID0gQlVJTFRf
UFJPRFVDVFNfRElSOyB9OwogCQlGNkYzRjI5MDEzMzQyRkVCMDBBNkJGMTkgLyogQ29va2llTWFu
YWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb29raWVNYW5h
Z2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU3Myw2ICs1NzUsNyBAQAog
CQkJY2hpbGRyZW4gPSAoCiAJCQkJQkMwMjlCMUExNDg2QjIzODAwODE3REE5IC8qIG5zICovLAog
CQkJCUMwOTkxQzRGMTQzQzdENjgwMDc5OThGMiAvKiBjZiAqLywKKwkJCQlDRDU0OTdCMzE1ODU3
RjBDMDBCNUJDMzAgLyogTWVkaWFUaW1lLmNwcCAqLywKIAkJCQkwRkM2QzRDRTE0MTAzNEFEMDA1
QjdGMEMgLyogTWV0YUFsbG9jYXRvci5jcHAgKi8sCiAJCQkJMEZDNkM0Q0IxNDEwMjdFMDAwNUI3
RjBDIC8qIFJlZEJsYWNrVHJlZS5jcHAgKi8sCiAJCQkJQTdBOTY2REExNDBFQ0NDODAwNUVGOUI0
IC8qIENoZWNrZWRBcml0aG1ldGljT3BlcmF0aW9ucy5jcHAgKi8sCkBAIC04ODMsNiArODg2LDcg
QEAKIAkJCQlFMTIyMERBMDE1NUIyNTQ4MDAxM0UyRkMgLyogTWVtb3J5Q2FjaGVEaXNhYmxlV2l0
aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKIAkJCQlGNkY0OUM2OTE1
NTQ1QzhFMDAwN0YzOUQgLyogRE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk1MUU5MzAxNzE1NkIxM0UxMDA0Qzk5REYgLyogV0tQYWdlR2V0U2NhbGVGYWN0
b3JOb3RaZXJvLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNENTQ5N0I0MTU4NTdGMEMwMEI1QkMz
MCAvKiBNZWRpYVRpbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9NZWRpYVRpbWUuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvTWVkaWFUaW1lLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NjE1Y2I2OTQwYTMzNTZiYTE1MzJh
Y2UzMzMxMjRjNzIwODY2MTFmCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvTWVkaWFUaW1lLmNwcApAQCAtMCwwICsxLDE2NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAo
IkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9t
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgorCituYW1lc3BhY2UgV1RGIHsK
Kworc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3V0LCBjb25zdCBNZWRp
YVRpbWUmIHZhbCkKK3sKKyAgICBvdXQgPDwgInsgIjsKKyAgICBpZiAodmFsLmlzSW52YWxpZCgp
KQorICAgICAgICBvdXQgPDwgImludmFsaWQiOworICAgIGVsc2UgaWYgKHZhbC5pc1Bvc2l0aXZl
SW5maW5pdGUoKSkKKyAgICAgICAgb3V0IDw8ICIraW5maW5pdGUiOworICAgIGVsc2UgaWYgKHZh
bC5pc05lZ2F0aXZlSW5maW5pdGUoKSkKKyAgICAgICAgb3V0IDw8ICItaW5maW5pdGUiOworICAg
IGVsc2UKKyAgICAgICAgb3V0IDw8ICJ2YWx1ZTogIiA8PCB2YWwudGltZVZhbHVlKCkgPDwgIiwg
c2NhbGU6ICIgPDwgdmFsLnRpbWVTY2FsZSgpOworICAgIHJldHVybiBvdXQgPDwgIiB9IjsKK30K
KworfQorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK1RFU1QoV1RGLCBNZWRpYVRpbWUp
Cit7CisgICAgLy8gQ29tcGFyaXNvbiBPcGVyYXRvcnMKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1l
Ojpwb3NpdGl2ZUluZmluaXRlVGltZSgpID4gTWVkaWFUaW1lOjpuZWdhdGl2ZUluZmluaXRlVGlt
ZSgpLCB0cnVlKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjpuZWdhdGl2ZUluZmluaXRlVGlt
ZSgpIDwgTWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpLCB0cnVlKTsKKyAgICBFWFBF
Q1RfRVEoTWVkaWFUaW1lOjpuZWdhdGl2ZUluZmluaXRlVGltZSgpID09IE1lZGlhVGltZTo6bmVn
YXRpdmVJbmZpbml0ZVRpbWUoKSwgdHJ1ZSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6cG9z
aXRpdmVJbmZpbml0ZVRpbWUoKSA9PSBNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCks
IHRydWUpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OmludmFsaWRUaW1lKCkgPT0gTWVkaWFU
aW1lOjppbnZhbGlkVGltZSgpLCB0cnVlKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjppbnZh
bGlkVGltZSgpID4gTWVkaWFUaW1lOjpuZWdhdGl2ZUluZmluaXRlVGltZSgpLCB0cnVlKTsKKyAg
ICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpID4gTWVkaWFUaW1lOjpwb3NpdGl2
ZUluZmluaXRlVGltZSgpLCB0cnVlKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjpuZWdhdGl2
ZUluZmluaXRlVGltZSgpIDwgTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpLCB0cnVlKTsKKyAgICBF
WFBFQ1RfRVEoTWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpIDwgTWVkaWFUaW1lOjpp
bnZhbGlkVGltZSgpLCB0cnVlKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjppbmRlZmluaXRl
VGltZSgpID09IE1lZGlhVGltZTo6aW5kZWZpbml0ZVRpbWUoKSwgdHJ1ZSk7CisgICAgRVhQRUNU
X0VRKE1lZGlhVGltZTo6aW5kZWZpbml0ZVRpbWUoKSA+IE1lZGlhVGltZTo6bmVnYXRpdmVJbmZp
bml0ZVRpbWUoKSwgdHJ1ZSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6aW5kZWZpbml0ZVRp
bWUoKSA8IE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKSwgdHJ1ZSk7CisgICAgRVhQ
RUNUX0VRKE1lZGlhVGltZTo6bmVnYXRpdmVJbmZpbml0ZVRpbWUoKSA8IE1lZGlhVGltZTo6aW5k
ZWZpbml0ZVRpbWUoKSwgdHJ1ZSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6cG9zaXRpdmVJ
bmZpbml0ZVRpbWUoKSA+IE1lZGlhVGltZTo6aW5kZWZpbml0ZVRpbWUoKSwgdHJ1ZSk7CisgICAg
RVhQRUNUX0VRKE1lZGlhVGltZSgxLCAxKSA8IE1lZGlhVGltZTo6aW5kZWZpbml0ZVRpbWUoKSwg
dHJ1ZSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6aW5kZWZpbml0ZVRpbWUoKSA+IE1lZGlh
VGltZSgxLCAxKSwgdHJ1ZSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxLCAxKSA8IE1lZGlh
VGltZSgyLCAxKSwgdHJ1ZSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgyLCAxKSA+IE1lZGlh
VGltZSgxLCAxKSwgdHJ1ZSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgyLCAxKSA9PSBNZWRp
YVRpbWUoMiwgMSksIHRydWUpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMiwgMSkgPT0gTWVk
aWFUaW1lKDQsIDIpLCB0cnVlKTsKKworICAgIC8vIEFkZGl0aW9uIE9wZXJhdG9ycworICAgIEVY
UEVDVF9FUShNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCkgKyBNZWRpYVRpbWU6OnBv
c2l0aXZlSW5maW5pdGVUaW1lKCksIE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKSk7
CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6bmVnYXRpdmVJbmZpbml0ZVRpbWUoKSArIE1lZGlh
VGltZTo6bmVnYXRpdmVJbmZpbml0ZVRpbWUoKSwgTWVkaWFUaW1lOjpuZWdhdGl2ZUluZmluaXRl
VGltZSgpKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgp
ICsgTWVkaWFUaW1lOjpuZWdhdGl2ZUluZmluaXRlVGltZSgpLCBNZWRpYVRpbWU6OmludmFsaWRU
aW1lKCkpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6Om5lZ2F0aXZlSW5maW5pdGVUaW1lKCkg
KyBNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCksIE1lZGlhVGltZTo6aW52YWxpZFRp
bWUoKSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSArIE1lZGlhVGlt
ZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKSwgTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpKTsKKyAg
ICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpICsgTWVkaWFUaW1lOjpuZWdhdGl2
ZUluZmluaXRlVGltZSgpLCBNZWRpYVRpbWU6OmludmFsaWRUaW1lKCkpOworICAgIEVYUEVDVF9F
UShNZWRpYVRpbWU6OmludmFsaWRUaW1lKCkgKyBNZWRpYVRpbWU6OmludmFsaWRUaW1lKCksIE1l
ZGlhVGltZTo6aW52YWxpZFRpbWUoKSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6aW52YWxp
ZFRpbWUoKSArIE1lZGlhVGltZSgxLCAxKSwgTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpKTsKKyAg
ICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjppbmRlZmluaXRlVGltZSgpICsgTWVkaWFUaW1lOjpwb3Np
dGl2ZUluZmluaXRlVGltZSgpLCBNZWRpYVRpbWU6OmluZGVmaW5pdGVUaW1lKCkpOworICAgIEVY
UEVDVF9FUShNZWRpYVRpbWU6OmluZGVmaW5pdGVUaW1lKCkgKyBNZWRpYVRpbWU6Om5lZ2F0aXZl
SW5maW5pdGVUaW1lKCksIE1lZGlhVGltZTo6aW5kZWZpbml0ZVRpbWUoKSk7CisgICAgRVhQRUNU
X0VRKE1lZGlhVGltZTo6aW5kZWZpbml0ZVRpbWUoKSArIE1lZGlhVGltZTo6aW5kZWZpbml0ZVRp
bWUoKSwgTWVkaWFUaW1lOjppbmRlZmluaXRlVGltZSgpKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFU
aW1lOjppbmRlZmluaXRlVGltZSgpICsgTWVkaWFUaW1lKDEsIDEpLCBNZWRpYVRpbWU6OmluZGVm
aW5pdGVUaW1lKCkpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMSwgMSkgKyBNZWRpYVRpbWUo
MSwgMSksIE1lZGlhVGltZSgyLCAxKSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxLCAyKSAr
IE1lZGlhVGltZSgxLCAzKSwgTWVkaWFUaW1lKDUsIDYpKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFU
aW1lKDEsIElOVDMyX01BWC0xKSArIE1lZGlhVGltZSgxLCBJTlQzMl9NQVgtMiksIE1lZGlhVGlt
ZSgyLCBJTlQzMl9NQVgpKTsKKworICAgIC8vIFN1YnRyYWN0aW9uIE9wZXJhdG9ycworICAgIEVY
UEVDVF9FUShNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCkgLSBNZWRpYVRpbWU6OnBv
c2l0aXZlSW5maW5pdGVUaW1lKCksIE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSk7CisgICAgRVhQ
RUNUX0VRKE1lZGlhVGltZTo6bmVnYXRpdmVJbmZpbml0ZVRpbWUoKSAtIE1lZGlhVGltZTo6bmVn
YXRpdmVJbmZpbml0ZVRpbWUoKSwgTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpKTsKKyAgICBFWFBF
Q1RfRVEoTWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpIC0gTWVkaWFUaW1lOjpuZWdh
dGl2ZUluZmluaXRlVGltZSgpLCBNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCkpOwor
ICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6Om5lZ2F0aXZlSW5maW5pdGVUaW1lKCkgLSBNZWRpYVRp
bWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCksIE1lZGlhVGltZTo6bmVnYXRpdmVJbmZpbml0ZVRp
bWUoKSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSAtIE1lZGlhVGlt
ZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKSwgTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpKTsKKyAg
ICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpIC0gTWVkaWFUaW1lOjpuZWdhdGl2
ZUluZmluaXRlVGltZSgpLCBNZWRpYVRpbWU6OmludmFsaWRUaW1lKCkpOworICAgIEVYUEVDVF9F
UShNZWRpYVRpbWU6OmludmFsaWRUaW1lKCkgLSBNZWRpYVRpbWU6OmludmFsaWRUaW1lKCksIE1l
ZGlhVGltZTo6aW52YWxpZFRpbWUoKSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6aW52YWxp
ZFRpbWUoKSAtIE1lZGlhVGltZSgxLCAxKSwgTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpKTsKKyAg
ICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjppbmRlZmluaXRlVGltZSgpIC0gTWVkaWFUaW1lOjpwb3Np
dGl2ZUluZmluaXRlVGltZSgpLCBNZWRpYVRpbWU6OmluZGVmaW5pdGVUaW1lKCkpOworICAgIEVY
UEVDVF9FUShNZWRpYVRpbWU6OmluZGVmaW5pdGVUaW1lKCkgLSBNZWRpYVRpbWU6Om5lZ2F0aXZl
SW5maW5pdGVUaW1lKCksIE1lZGlhVGltZTo6aW5kZWZpbml0ZVRpbWUoKSk7CisgICAgRVhQRUNU
X0VRKE1lZGlhVGltZTo6aW5kZWZpbml0ZVRpbWUoKSAtIE1lZGlhVGltZTo6aW5kZWZpbml0ZVRp
bWUoKSwgTWVkaWFUaW1lOjppbmRlZmluaXRlVGltZSgpKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFU
aW1lOjppbmRlZmluaXRlVGltZSgpIC0gTWVkaWFUaW1lKDEsIDEpLCBNZWRpYVRpbWU6OmluZGVm
aW5pdGVUaW1lKCkpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMywgMSkgLSBNZWRpYVRpbWUo
MiwgMSksIE1lZGlhVGltZSgxLCAxKSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxLCAyKSAt
IE1lZGlhVGltZSgxLCAzKSwgTWVkaWFUaW1lKDEsIDYpKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFU
aW1lKDIsIElOVDMyX01BWC0xKSAtIE1lZGlhVGltZSgxLCBJTlQzMl9NQVgtMiksIE1lZGlhVGlt
ZSgxLCBJTlQzMl9NQVgpKTsKKworICAgIC8vIENvbnN0YW50cworICAgIEVYUEVDVF9FUShNZWRp
YVRpbWU6Onplcm9UaW1lKCksIE1lZGlhVGltZSgwLCAxKSk7CisgICAgRVhQRUNUX0VRKE1lZGlh
VGltZTo6aW52YWxpZFRpbWUoKSwgTWVkaWFUaW1lKC0xLCAxLCAwKSk7CisgICAgRVhQRUNUX0VR
KE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKSwgTWVkaWFUaW1lKDAsIDEsIE1lZGlh
VGltZTo6UG9zaXRpdmVJbmZpbml0ZSkpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6Om5lZ2F0
aXZlSW5maW5pdGVUaW1lKCksIE1lZGlhVGltZSgwLCAxLCBNZWRpYVRpbWU6Ok5lZ2F0aXZlSW5m
aW5pdGUpKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjppbmRlZmluaXRlVGltZSgpLCBNZWRp
YVRpbWUoMCwgMSwgTWVkaWFUaW1lOjpJbmRlZmluaXRlKSk7CisKKyAgICAvLyBBYnNvbHV0ZSBG
dW5jdGlvbnMKKyAgICBFWFBFQ1RfRVEoYWJzKE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRp
bWUoKSksIE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKSk7CisgICAgRVhQRUNUX0VR
KGFicyhNZWRpYVRpbWU6Om5lZ2F0aXZlSW5maW5pdGVUaW1lKCkpLCBNZWRpYVRpbWU6OnBvc2l0
aXZlSW5maW5pdGVUaW1lKCkpOworICAgIEVYUEVDVF9FUShhYnMoTWVkaWFUaW1lOjppbnZhbGlk
VGltZSgpKSwgTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpKTsKKyAgICBFWFBFQ1RfRVEoYWJzKE1l
ZGlhVGltZSgxLCAxKSksIE1lZGlhVGltZSgxLCAxKSk7CisgICAgRVhQRUNUX0VRKGFicyhNZWRp
YVRpbWUoLTEsIDEpKSwgTWVkaWFUaW1lKDEsIDEpKTsKKyAgICBFWFBFQ1RfRVEoYWJzKE1lZGlh
VGltZSgtMSwgLTEpKSwgTWVkaWFUaW1lKC0xLCAtMSkpOworICAgIEVYUEVDVF9FUShhYnMoTWVk
aWFUaW1lKDEsIC0xKSksIE1lZGlhVGltZSgtMSwgLTEpKTsKKworICAgIC8vIEZsb2F0aW5nIFBv
aW50IEZ1bmN0aW9ucworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OmNyZWF0ZVdpdGhGbG9hdCgx
LjBmKSwgTWVkaWFUaW1lKDEsIDEpKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjpjcmVhdGVX
aXRoRmxvYXQoMS41ZiksIE1lZGlhVGltZSgzLCAyKSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGlt
ZTo6Y3JlYXRlV2l0aERvdWJsZSgxLjApLCBNZWRpYVRpbWUoMSwgMSkpOworICAgIEVYUEVDVF9F
UShNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoMS41KSwgTWVkaWFUaW1lKDMsIDIpKTsKKyAg
ICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDEsIDEpLnRvRmxvYXQoKSwgMS4wZik7CisgICAgRVhQRUNU
X0VRKE1lZGlhVGltZSgzLCAyKS50b0Zsb2F0KCksIDEuNWYpOworICAgIEVYUEVDVF9FUShNZWRp
YVRpbWUoMSwgMSkudG9Eb3VibGUoKSwgMS4wKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDMs
IDIpLnRvRG91YmxlKCksIDEuNSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxLCAxIDw8IDE2
KS50b0Zsb2F0KCksIDEgLyBwb3coMi4wZiwgMTYuMGYpKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFU
aW1lKDEsIDEgPDwgMzApLnRvRG91YmxlKCksIDEgLyBwb3coMi4wLCAzMC4wKSk7CisgICAgRVhQ
RUNUX0VRKE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShNX1BJLCAxIDw8IDMwKSwgTWVkaWFU
aW1lKDMzNzMyNTk0MjYsIDEgPDwgMzApKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjpjcmVh
dGVXaXRoRmxvYXQoSU5GSU5JVFkpLCBNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCkp
OworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OmNyZWF0ZVdpdGhGbG9hdCgtSU5GSU5JVFkpLCBN
ZWRpYVRpbWU6Om5lZ2F0aXZlSW5maW5pdGVUaW1lKCkpOworICAgIEVYUEVDVF9FUShNZWRpYVRp
bWU6OmNyZWF0ZVdpdGhGbG9hdChOQU4pLCBNZWRpYVRpbWU6OmludmFsaWRUaW1lKCkpOworICAg
IEVYUEVDVF9FUShNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoSU5GSU5JVFkpLCBNZWRpYVRp
bWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCkpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OmNy
ZWF0ZVdpdGhEb3VibGUoLUlORklOSVRZKSwgTWVkaWFUaW1lOjpuZWdhdGl2ZUluZmluaXRlVGlt
ZSgpKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKE5BTiksIE1l
ZGlhVGltZTo6aW52YWxpZFRpbWUoKSk7CisKKyAgICAvLyBPdmVyZmxvdyBCZWhhdmlvcgorICAg
IEVYUEVDVF9FUShNZWRpYVRpbWU6OmNyZWF0ZVdpdGhGbG9hdChwb3coMi4wZiwgNjQuMGYpKSwg
TWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFU
aW1lOjpjcmVhdGVXaXRoRmxvYXQoLXBvdygyLjBmLCA2NC4wZikpLCBNZWRpYVRpbWU6Om5lZ2F0
aXZlSW5maW5pdGVUaW1lKCkpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OmNyZWF0ZVdpdGhG
bG9hdChwb3coMi4wZiwgNjMuMGYpLCAyKS50aW1lU2NhbGUoKSwgMSk7CisgICAgRVhQRUNUX0VR
KE1lZGlhVGltZTo6Y3JlYXRlV2l0aEZsb2F0KHBvdygyLjBmLCA2My4wZiksIDMpLnRpbWVTY2Fs
ZSgpLCAxKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKHBvdygy
LjAsIDY0LjApKSwgTWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpKTsKKyAgICBFWFBF
Q1RfRVEoTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKC1wb3coMi4wLCA2NC4wKSksIE1lZGlh
VGltZTo6bmVnYXRpdmVJbmZpbml0ZVRpbWUoKSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6
Y3JlYXRlV2l0aERvdWJsZShwb3coMi4wLCA2My4wKSwgMikudGltZVNjYWxlKCksIDEpOworICAg
IEVYUEVDVF9FUShNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUocG93KDIuMCwgNjMuMCksIDMp
LnRpbWVTY2FsZSgpLCAxKTsKKyAgICBFWFBFQ1RfRVEoKE1lZGlhVGltZShJTlQ2NF9NQVgsIDIp
ICsgTWVkaWFUaW1lKElOVDY0X01BWCwgMikpLnRpbWVTY2FsZSgpLCAxKTsKKyAgICBFWFBFQ1Rf
RVEoKE1lZGlhVGltZShJTlQ2NF9NSU4sIDIpIC0gTWVkaWFUaW1lKElOVDY0X01BWCwgMikpLnRp
bWVTY2FsZSgpLCAxKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKElOVDY0X01BWCwgMSkgKyBN
ZWRpYVRpbWUoSU5UNjRfTUFYLCAxKSwgTWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgp
KTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKElOVDY0X01JTiwgMSkgKyBNZWRpYVRpbWUoSU5U
NjRfTUlOLCAxKSwgTWVkaWFUaW1lOjpuZWdhdGl2ZUluZmluaXRlVGltZSgpKTsKKyAgICBFWFBF
Q1RfRVEoTWVkaWFUaW1lKElOVDY0X01JTiwgMSkgLSBNZWRpYVRpbWUoSU5UNjRfTUFYLCAxKSwg
TWVkaWFUaW1lOjpuZWdhdGl2ZUluZmluaXRlVGltZSgpKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFU
aW1lKElOVDY0X01BWCwgMSkgLSBNZWRpYVRpbWUoSU5UNjRfTUlOLCAxKSwgTWVkaWFUaW1lOjpw
b3NpdGl2ZUluZmluaXRlVGltZSgpKTsKK30KKworfQorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146870</attachid>
            <date>2012-06-11 10:20:59 -0700</date>
            <delta_ts>2012-06-11 10:31:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88787-20120611102058.patch</filename>
            <type>text/plain</type>
            <size>41346</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5OTgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
M2M1MDAxMTliNjEyMjEwY2FhYWM2MzUwYWZhZTg1MmE5YWZmNWJiLi43Yzc4ZWQ0MTk2ZWRlY2Rm
MDQ1MWMxNWFkZGZlOWIyZmRjZWQ1Y2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMiBAQAorMjAxMi0wNi0xMSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4K
KworICAgICAgICBTdXBwb3J0IGEgcmF0aW9uYWwgdGltZSBjbGFzcyBmb3IgdXNlIGJ5IG1lZGlh
IGVsZW1lbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODg3ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLm9yZGVyOgorCiAyMDEyLTA2LTExICBDYXJsb3MgR2FyY2lhIENh
bXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBGaXggbWFr
ZSBkaXN0Y2hlY2sgaXNzdWVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA0NTc0OGE0ODBiMDRiNDRmMWEyYTNlOGNhMWM1ZWFj
Yjg1ZmUwNTY5Li5hYjA5ZjcxOWVhNDc0ZjA3NDk3MGM5ZTI2Nzc5ZWYwOGNlNzBhNWY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDUyIEBACisyMDEyLTA2LTExICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUu
Y29tPgorCisgICAgICAgIFN1cHBvcnQgYSByYXRpb25hbCB0aW1lIGNsYXNzIGZvciB1c2UgYnkg
bWVkaWEgZWxlbWVudHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04ODc4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBXVEYucHJvOgorICAgICAg
ICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9NZWRpYVRp
bWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdURik6CisgICAgICAgIChXVEY6OmdyZWF0ZXN0Q29t
bW9uRGl2aXNvcik6CisgICAgICAgIChXVEY6OmxlYXN0Q29tbW9uTXVsdGlwbGUpOgorICAgICAg
ICAoV1RGOjpNZWRpYVRpbWU6Ok1lZGlhVGltZSk6CisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6
fk1lZGlhVGltZSk6CisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6Y3JlYXRlV2l0aEZsb2F0KToK
KyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKToKKyAgICAgICAgKFdU
Rjo6TWVkaWFUaW1lOjp0b0Zsb2F0KToKKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjp0b0RvdWJs
ZSk6CisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdURjo6
TWVkaWFUaW1lOjpvcGVyYXRvcispOgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6Om9wZXJhdG9y
LSk6CisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6b3BlcmF0b3I8KToKKyAgICAgICAgKFdURjo6
TWVkaWFUaW1lOjpvcGVyYXRvcj4pOgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6Om9wZXJhdG9y
PT0pOgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6Om9wZXJhdG9yPj0pOgorICAgICAgICAoV1RG
OjpNZWRpYVRpbWU6Om9wZXJhdG9yPD0pOgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6OmNvbXBh
cmUpOgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6Onplcm9UaW1lKToKKyAgICAgICAgKFdURjo6
TWVkaWFUaW1lOjppbnZhbGlkVGltZSk6CisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6cG9zaXRp
dmVJbmZpbml0ZVRpbWUpOgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6Om5lZ2F0aXZlSW5maW5p
dGVUaW1lKToKKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjppbmRlZmluaXRlVGltZSk6CisgICAg
ICAgIChXVEY6Ok1lZGlhVGltZTo6c2V0VGltZVNjYWxlKToKKyAgICAgICAgKFdURjo6c2lnbnVt
KToKKyAgICAgICAgKFdURjo6V1RGOjphYnMpOgorICAgICAgICAqIHd0Zi9NZWRpYVRpbWUuaDog
QWRkZWQuCisgICAgICAgIChXVEYpOgorICAgICAgICAoTWVkaWFUaW1lKToKKyAgICAgICAgKFdU
Rjo6TWVkaWFUaW1lOjppc1ZhbGlkKToKKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjppc0ludmFs
aWQpOgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6Omhhc0JlZW5Sb3VuZGVkKToKKyAgICAgICAg
KFdURjo6TWVkaWFUaW1lOjppc1Bvc2l0aXZlSW5maW5pdGUpOgorICAgICAgICAoV1RGOjpNZWRp
YVRpbWU6OmlzTmVnYXRpdmVJbmZpbml0ZSk6CisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6aXNJ
bmRlZmluaXRlKToKKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjp0aW1lVmFsdWUpOgorICAgICAg
ICAoV1RGOjpNZWRpYVRpbWU6OnRpbWVTY2FsZSk6CisKIDIwMTItMDYtMTEgIENhcmxvcyBHYXJj
aWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEZp
eCBtYWtlIGRpc3RjaGVjayBpc3N1ZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUub3JkZXIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUub3JkZXIKaW5kZXggM2E0NTAwNzVhMTM0M2U1OWU3YjFlZGExMWE1ZjdjZDgwM2M4NjVh
YS4uMDc0MmEwYTBlMmI2ZGNkZDg0YmVmNzhjYmMxNmU3ZWFiODk5YTUyYiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLm9yZGVyCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5vcmRlcgpAQCAtMjQ5NCwzICsyNDk0LDE2IEBA
IF9fWk4zV1RGNlZlY3RvcklOM0pTQzEwQVNUQnVpbGRlcjE0QXNzaWdubWVudEluZm9FTG0xMEVF
MTRleHBhbmRDYXBhY2l0eUVtCiBfY3RpX29wX3B1dF9ieV9pZF9kaXJlY3RfZ2VuZXJpYwogX19a
TjNXVEY5SGFzaFRhYmxlSVBOM0pTQzE2RnVuY3Rpb25Cb2R5Tm9kZUVTdDRwYWlySVMzX2pFTlNf
MThQYWlyRmlyc3RFeHRyYWN0b3JJUzVfRUVOU183UHRySGFzaElTM19FRU5TXzE0UGFpckhhc2hU
cmFpdHNJTlNfMTBIYXNoVHJhaXRzSVMzX0VFTlNCX0lqRUVFRVNDX0U0ZmluZElTM19OU18yMklk
ZW50aXR5SGFzaFRyYW5zbGF0b3JJUzNfUzVfUzlfRUVFRU5TXzE3SGFzaFRhYmxlSXRlcmF0b3JJ
UzNfUzVfUzdfUzlfU0VfU0NfRUVSS1RfCiBfX1pOM1dURjlIYXNoVGFibGVJUE4zSlNDMTZGdW5j
dGlvbkJvZHlOb2RlRVN0NHBhaXJJUzNfakVOU18xOFBhaXJGaXJzdEV4dHJhY3RvcklTNV9FRU5T
XzdQdHJIYXNoSVMzX0VFTlNfMTRQYWlySGFzaFRyYWl0c0lOU18xMEhhc2hUcmFpdHNJUzNfRUVO
U0JfSWpFRUVFU0NfRTZleHBhbmRFdgorX19aTjNXVEYzYWJzRVJLTlNfOU1lZGlhVGltZUUKK19f
Wk4zV1RGOU1lZGlhVGltZTExaW52YWxpZFRpbWVFdgorX19aTjNXVEY5TWVkaWFUaW1lMTRpbmRl
ZmluaXRlVGltZUV2CitfX1pOM1dURjlNZWRpYVRpbWUxNWNyZWF0ZVdpdGhGbG9hdEVmaQorX19a
TjNXVEY5TWVkaWFUaW1lMTZjcmVhdGVXaXRoRG91YmxlRWRpCitfX1pOM1dURjlNZWRpYVRpbWUy
MG5lZ2F0aXZlSW5maW5pdGVUaW1lRXYKK19fWk4zV1RGOU1lZGlhVGltZTIwcG9zaXRpdmVJbmZp
bml0ZVRpbWVFdgorX19aTjNXVEY5TWVkaWFUaW1lRDFFdgorX19aTkszV1RGOU1lZGlhVGltZWd0
RVJLUzBfCitfX1pOSzNXVEY5TWVkaWFUaW1lbHRFUktTMF8KK19fWk5LM1dURjlNZWRpYVRpbWVt
aUVSS1MwXworX19aTkszV1RGOU1lZGlhVGltZXBsRVJLUzBfCisKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XVEYvR05VbWFrZWZpbGUubGlzdC5h
bQppbmRleCAzZGZjMWRiZDNjODg2ZmU2OGRjYWIyMjk5ZjYwOWNiNGM2MzY2MTc4Li41NmUyZmRk
MGVjOGY4NjQ2ZDAzYzZiZTRkZGQ0NzNmNjIwMDE0NDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dURi9HTlVtYWtlZmlsZS5saXN0LmFt
CkBAIC03NSw2ICs3NSw4IEBAIHd0Zl9zb3VyY2VzICs9IFwKICAgICBTb3VyY2UvV1RGL3d0Zi9N
YWluVGhyZWFkLmggXAogICAgIFNvdXJjZS9XVEYvd3RmL01hbGxvY1pvbmVTdXBwb3J0LmggXAog
ICAgIFNvdXJjZS9XVEYvd3RmL01hdGhFeHRyYXMuaCBcCisgICAgU291cmNlL1dURi93dGYvTWVk
aWFUaW1lLmggXAorICAgIFNvdXJjZS9XVEYvd3RmL01lZGlhVGltZS5jcHAgXAogICAgIFNvdXJj
ZS9XVEYvd3RmL01lc3NhZ2VRdWV1ZS5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9NZXRhQWxsb2Nh
dG9yLmNwcCBcCiAgICAgU291cmNlL1dURi93dGYvTWV0YUFsbG9jYXRvci5oIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvV1RGLnBybyBiL1NvdXJjZS9XVEYvV1RGLnBybwppbmRleCAzMzg0Nzcw
YThlZDdkZmQzOTQ2Mzc4MWNkYTllODk4ZTk4ZWQxYmFhLi5mMTE2MjdhMDEzYmJlYzJjODFjNDE2
MjU5YjcxMDdmNDkxMDE3ZmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi5wcm8KKysrIGIv
U291cmNlL1dURi9XVEYucHJvCkBAIC03Niw2ICs3Niw3IEBAIEhFQURFUlMgKz0gXAogICAgIE1h
bGxvY1pvbmVTdXBwb3J0LmggXAogICAgIE1hdGhFeHRyYXMuaCBcCiAgICAgTUQ1LmggXAorICAg
IE1lZGlhVGltZS5oIFwKICAgICBNZXNzYWdlUXVldWUuaCBcCiAgICAgTWV0YUFsbG9jYXRvci5o
IFwKICAgICBNZXRhQWxsb2NhdG9ySGFuZGxlLmggXApAQCAtMTg5LDYgKzE5MCw3IEBAIFNPVVJD
RVMgKz0gXAogICAgIEhhc2hUYWJsZS5jcHAgXAogICAgIE1ENS5jcHAgXAogICAgIE1haW5UaHJl
YWQuY3BwIFwKKyAgICBNZWRpYVRpbWUuY3BwIFwKICAgICBNZXRhQWxsb2NhdG9yLmNwcCBcCiAg
ICAgTnVsbFB0ci5jcHAgXAogICAgIE51bWJlck9mQ29yZXMuY3BwIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGJhNDU3NjQzZmIzYmExZDUxNmIzZWY5MTE2
OWFhYTFiYzcwYTU1N2UuLmViZWViNDljOTNlZjdjZDNmYzZmMjRlOTFiZjk5NjhhOGE5MzQxZTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjQxLDYgKzI0
MSw4IEBACiAJCUE4QTQ3NDg2MTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJlYWREYXRhLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MzdBMTUx
QTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJlYWREYXRhLmNwcCAqLzsgfTsKIAkJQThBNDc0ODcxNTFB
ODI1QjAwNDEyM0ZGIC8qIFdURlRocmVhZERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MzdCMTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJl
YWREYXRhLmggKi87IH07CiAJCUE4QTQ3NDhDMTUxQTgyNjQwMDQxMjNGRiAvKiBjb25maWcuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3NDhCMTUx
QTgyNjQwMDQxMjNGRiAvKiBjb25maWcuaCAqLzsgfTsKKwkJQ0Q1NDk3QUMxNTg1N0QwMzAwQjVC
QzMwIC8qIE1lZGlhVGltZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRDU0OTdBQTE1ODU3RDAzMDBCNUJDMzAgLyogTWVkaWFUaW1lLmNwcCAqLzsg
fTsKKwkJQ0Q1NDk3QUQxNTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q1NDk3QUIxNTg1N0QwMzAwQjVC
QzMwIC8qIE1lZGlhVGltZS5oICovOyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICov
CiAKIC8qIEJlZ2luIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwpAQCAtNDg4LDYgKzQ5MCw4
IEBACiAJCUE4QTQ3MzdBMTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJlYWREYXRhLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdURlRocmVhZERhdGEuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzM3QjE1MUE4MjVCMDA0MTIzRkYgLyogV1RG
VGhyZWFkRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXVEZUaHJlYWRE
YXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3NDhCMTUxQTgyNjQwMDQx
MjNGRiAvKiBjb25maWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gY29uZmln
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNENTQ5N0FBMTU4NTdEMDMwMEI1QkMz
MCAvKiBNZWRpYVRpbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TWVkaWFUaW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0Q1NDk3QUIxNTg1
N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBNZWRpYVRpbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8qIEVuZCBQQlhG
aWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhh
c2Ugc2VjdGlvbiAqLwpAQCAtNjIzLDYgKzYyNyw4IEBACiAJCQkJQThBNDcyQzkxNTFBODI1QjAw
NDEyM0ZGIC8qIE1hdGhFeHRyYXMuaCAqLywKIAkJCQlBOEE0NzJDQTE1MUE4MjVCMDA0MTIzRkYg
LyogTUQ1LmNwcCAqLywKIAkJCQlBOEE0NzJDQjE1MUE4MjVCMDA0MTIzRkYgLyogTUQ1LmggKi8s
CisJCQkJQ0Q1NDk3QUExNTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5jcHAgKi8sCisJCQkJ
Q0Q1NDk3QUIxNTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5oICovLAogCQkJCUE4QTQ3MkND
MTUxQTgyNUIwMDQxMjNGRiAvKiBNZXNzYWdlUXVldWUuaCAqLywKIAkJCQlBOEE0NzJDRDE1MUE4
MjVCMDA0MTIzRkYgLyogTWV0YUFsbG9jYXRvci5jcHAgKi8sCiAJCQkJQThBNDcyQ0UxNTFBODI1
QjAwNDEyM0ZGIC8qIE1ldGFBbGxvY2F0b3IuaCAqLywKQEAgLTkzMyw2ICs5MzksNyBAQAogCQkJ
CUE4QTQ3M0U3MTUxQTgyNUIwMDQxMjNGRiAvKiBNYWxsb2Nab25lU3VwcG9ydC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQThBNDczRTgxNTFBODI1QjAwNDEyM0ZGIC8qIE1hdGhFeHRyYXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE4QTQ3M0VBMTUxQTgyNUIwMDQxMjNGRiAvKiBNRDUuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUNENTQ5N0FEMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE4QTQ3M0VCMTUxQTgyNUIwMDQxMjNGRiAvKiBNZXNzYWdlUXVldWUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3M0VEMTUxQTgyNUIwMDQxMjNGRiAvKiBNZXRhQWxs
b2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzNFRTE1MUE4MjVCMDA0MTIzRkYgLyog
TWV0YUFsbG9jYXRvckhhbmRsZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMTg0LDYgKzExOTEsNyBA
QAogCQkJCUE4QTQ3NDdCMTUxQTgyNUIwMDQxMjNGRiAvKiBVUkxTZWdtZW50cy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBOEE0NzQ4NjE1MUE4MjVCMDA0MTIzRkYgLyogV1RGVGhyZWFkRGF0YS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDNGNjExRjE1NjVGMEY5MDBEQjUxNEEgLyogUkFNU2l6
ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDRDU0OTdBQzE1ODU3RDAzMDBCNUJDMzAgLyogTWVk
aWFUaW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWVk
aWFUaW1lLmNwcCBiL1NvdXJjZS9XVEYvd3RmL01lZGlhVGltZS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjY0
ZDE3OGFlYWUyMDZjNjc1ZTdmNzAzYmJlNGJhMWU3OWVmNTU3YwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XVEYvd3RmL01lZGlhVGltZS5jcHAKQEAgLTAsMCArMSwzNjMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIElu
Yy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAg
ZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJNZWRpYVRpbWUuaCIKKworI2luY2x1ZGUgPGFsZ29yaXRo
bT4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KKwordXNpbmcgbmFtZXNwYWNl
IHN0ZDsKKworbmFtZXNwYWNlIFdURiB7CisKK3N0YXRpYyBpbnQzMl90IGdyZWF0ZXN0Q29tbW9u
RGl2aXNvcihpbnQzMl90IGxocywgaW50MzJfdCByaHMpCit7CisgICAgLy8gRXVjbGlkJ3MgQWxn
b3JpdGhtCisgICAgaW50MzJfdCB0ZW1wID0gMDsKKyAgICB3aGlsZSAocmhzKSB7CisgICAgICAg
IHRlbXAgPSByaHM7CisgICAgICAgIHJocyA9IGxocyAlIHJoczsKKyAgICAgICAgbGhzID0gdGVt
cDsKKyAgICB9CisgICAgcmV0dXJuIGxoczsKK30KKworc3RhdGljIGludDMyX3QgbGVhc3RDb21t
b25NdWx0aXBsZShpbnQzMl90IGxocywgaW50MzJfdCByaHMsIGludDMyX3QgJnJlc3VsdCkKK3sK
KyAgICByZXR1cm4gc2FmZU11bHRpcGx5KGxocywgcmhzIC8gZ3JlYXRlc3RDb21tb25EaXZpc29y
KGxocywgcmhzKSwgcmVzdWx0KTsKK30KKwordXNpbmcgbmFtZXNwYWNlIFdURjsKKworY29uc3Qg
aW50MzJfdCBNZWRpYVRpbWU6Ok1heGltdW1UaW1lU2NhbGUgPSAweDdmZmZmZmZmTDsKKworTWVk
aWFUaW1lOjpNZWRpYVRpbWUoKQorICAgIDogbV90aW1lVmFsdWUoMCkKKyAgICAsIG1fdGltZVNj
YWxlKERlZmF1bHRUaW1lU2NhbGUpCisgICAgLCBtX3RpbWVGbGFncyhWYWxpZCkKK3sKK30KKwor
TWVkaWFUaW1lOjpNZWRpYVRpbWUoaW50NjRfdCB2YWx1ZSwgaW50MzJfdCBzY2FsZSwgdWludDMy
X3QgZmxhZ3MpCisgICAgOiBtX3RpbWVWYWx1ZSh2YWx1ZSkKKyAgICAsIG1fdGltZVNjYWxlKHNj
YWxlKQorICAgICwgbV90aW1lRmxhZ3MoZmxhZ3MpCit7Cit9CisKK01lZGlhVGltZTo6fk1lZGlh
VGltZSgpCit7Cit9CisKK01lZGlhVGltZTo6TWVkaWFUaW1lKGNvbnN0IE1lZGlhVGltZSYgcmhz
KQoreworICAgICp0aGlzID0gcmhzOworfQorCitNZWRpYVRpbWUgTWVkaWFUaW1lOjpjcmVhdGVX
aXRoRmxvYXQoZmxvYXQgZmxvYXRUaW1lLCBpbnQzMl90IHRpbWVTY2FsZSkKK3sKKyAgICBpZiAo
ZmxvYXRUaW1lICE9IGZsb2F0VGltZSkKKyAgICAgICAgcmV0dXJuIGludmFsaWRUaW1lKCk7Cisg
ICAgaWYgKHN0ZDo6aXNpbmYoZmxvYXRUaW1lKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6c2lnbmJp
dChmbG9hdFRpbWUpID8gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKSA6IHBvc2l0aXZlSW5maW5pdGVU
aW1lKCk7CisgICAgaWYgKGZsb2F0VGltZSA+IG51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgo
KSkKKyAgICAgICAgcmV0dXJuIHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7CisgICAgaWYgKGZsb2F0
VGltZSA8IG51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSkKKyAgICAgICAgcmV0dXJuIG5l
Z2F0aXZlSW5maW5pdGVUaW1lKCk7CisKKyAgICB3aGlsZSAoZmxvYXRUaW1lICogdGltZVNjYWxl
ID4gbnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgpKQorICAgICAgICB0aW1lU2NhbGUgLz0g
MjsKKyAgICByZXR1cm4gTWVkaWFUaW1lKHN0YXRpY19jYXN0PGludDY0X3Q+KGZsb2F0VGltZSAq
IHRpbWVTY2FsZSksIHRpbWVTY2FsZSwgVmFsaWQpOworfQorCitNZWRpYVRpbWUgTWVkaWFUaW1l
OjpjcmVhdGVXaXRoRG91YmxlKGRvdWJsZSBkb3VibGVUaW1lLCBpbnQzMl90IHRpbWVTY2FsZSkK
K3sKKyAgICBpZiAoZG91YmxlVGltZSAhPSBkb3VibGVUaW1lKQorICAgICAgICByZXR1cm4gaW52
YWxpZFRpbWUoKTsKKyAgICBpZiAoc3RkOjppc2luZihkb3VibGVUaW1lKSkKKyAgICAgICAgcmV0
dXJuIHN0ZDo6c2lnbmJpdChkb3VibGVUaW1lKSA/IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCkgOiBw
b3NpdGl2ZUluZmluaXRlVGltZSgpOworICAgIGlmIChkb3VibGVUaW1lID4gbnVtZXJpY19saW1p
dHM8aW50NjRfdD46Om1heCgpKQorICAgICAgICByZXR1cm4gcG9zaXRpdmVJbmZpbml0ZVRpbWUo
KTsKKyAgICBpZiAoZG91YmxlVGltZSA8IG51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSkK
KyAgICAgICAgcmV0dXJuIG5lZ2F0aXZlSW5maW5pdGVUaW1lKCk7CisKKyAgICB3aGlsZSAoZG91
YmxlVGltZSAqIHRpbWVTY2FsZSA+IG51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKSkKKyAg
ICAgICAgdGltZVNjYWxlIC89IDI7CisgICAgcmV0dXJuIE1lZGlhVGltZShzdGF0aWNfY2FzdDxp
bnQ2NF90Pihkb3VibGVUaW1lICogdGltZVNjYWxlKSwgdGltZVNjYWxlLCBWYWxpZCk7Cit9CisK
K2Zsb2F0IE1lZGlhVGltZTo6dG9GbG9hdCgpIGNvbnN0Cit7CisgICAgaWYgKGlzSW52YWxpZCgp
IHx8IGlzSW5kZWZpbml0ZSgpKQorICAgICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxm
bG9hdD46OnF1aWV0X05hTigpOworICAgIGlmIChpc1Bvc2l0aXZlSW5maW5pdGUoKSkKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpOworICAgIGlm
IChpc05lZ2F0aXZlSW5maW5pdGUoKSkKKyAgICAgICAgcmV0dXJuIC1zdGQ6Om51bWVyaWNfbGlt
aXRzPGZsb2F0Pjo6aW5maW5pdHkoKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1f
dGltZVZhbHVlKSAvIG1fdGltZVNjYWxlOworfQorCitkb3VibGUgTWVkaWFUaW1lOjp0b0RvdWJs
ZSgpIGNvbnN0Cit7CisgICAgaWYgKGlzSW52YWxpZCgpIHx8IGlzSW5kZWZpbml0ZSgpKQorICAg
ICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKTsKKyAg
ICBpZiAoaXNQb3NpdGl2ZUluZmluaXRlKCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNf
bGltaXRzPGRvdWJsZT46OmluZmluaXR5KCk7CisgICAgaWYgKGlzTmVnYXRpdmVJbmZpbml0ZSgp
KQorICAgICAgICByZXR1cm4gLXN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHko
KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPihtX3RpbWVWYWx1ZSkgLyBtX3RpbWVT
Y2FsZTsKK30KKworTWVkaWFUaW1lJiBNZWRpYVRpbWU6Om9wZXJhdG9yPShjb25zdCBNZWRpYVRp
bWUmIHJocykKK3sKKyAgICBtX3RpbWVWYWx1ZSA9IHJocy5tX3RpbWVWYWx1ZTsKKyAgICBtX3Rp
bWVTY2FsZSA9IHJocy5tX3RpbWVTY2FsZTsKKyAgICBtX3RpbWVGbGFncyA9IHJocy5tX3RpbWVG
bGFnczsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK01lZGlhVGltZSBNZWRpYVRpbWU6Om9wZXJh
dG9yKyhjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3QKK3sKKyAgICBpZiAocmhzLmlzSW52YWxp
ZCgpIHx8IGlzSW52YWxpZCgpKQorICAgICAgICByZXR1cm4gaW52YWxpZFRpbWUoKTsKKworICAg
IGlmIChyaHMuaXNJbmRlZmluaXRlKCkgfHwgaXNJbmRlZmluaXRlKCkpCisgICAgICAgIHJldHVy
biBpbmRlZmluaXRlVGltZSgpOworCisgICAgaWYgKGlzUG9zaXRpdmVJbmZpbml0ZSgpKSB7Cisg
ICAgICAgIGlmIChyaHMuaXNOZWdhdGl2ZUluZmluaXRlKCkpCisgICAgICAgICAgICByZXR1cm4g
aW52YWxpZFRpbWUoKTsKKyAgICAgICAgcmV0dXJuIHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7Cisg
ICAgfQorCisgICAgaWYgKGlzTmVnYXRpdmVJbmZpbml0ZSgpKSB7CisgICAgICAgIGlmIChyaHMu
aXNQb3NpdGl2ZUluZmluaXRlKCkpCisgICAgICAgICAgICByZXR1cm4gaW52YWxpZFRpbWUoKTsK
KyAgICAgICAgcmV0dXJuIG5lZ2F0aXZlSW5maW5pdGVUaW1lKCk7CisgICAgfQorCisgICAgaW50
MzJfdCBjb21tb25UaW1lU2NhbGU7CisgICAgaWYgKCFsZWFzdENvbW1vbk11bHRpcGxlKHRoaXMt
Pm1fdGltZVNjYWxlLCByaHMubV90aW1lU2NhbGUsIGNvbW1vblRpbWVTY2FsZSkgfHwgY29tbW9u
VGltZVNjYWxlID4gTWF4aW11bVRpbWVTY2FsZSkKKyAgICAgICAgY29tbW9uVGltZVNjYWxlID0g
TWF4aW11bVRpbWVTY2FsZTsKKyAgICBNZWRpYVRpbWUgYSA9ICp0aGlzOworICAgIE1lZGlhVGlt
ZSBiID0gcmhzOworICAgIGEuc2V0VGltZVNjYWxlKGNvbW1vblRpbWVTY2FsZSk7CisgICAgYi5z
ZXRUaW1lU2NhbGUoY29tbW9uVGltZVNjYWxlKTsKKyAgICB3aGlsZSAoIXNhZmVBZGQoYS5tX3Rp
bWVWYWx1ZSwgYi5tX3RpbWVWYWx1ZSwgYS5tX3RpbWVWYWx1ZSkpIHsKKyAgICAgICAgaWYgKGNv
bW1vblRpbWVTY2FsZSA9PSAxKQorICAgICAgICAgICAgcmV0dXJuIGEubV90aW1lVmFsdWUgPiAw
ID8gcG9zaXRpdmVJbmZpbml0ZVRpbWUoKSA6IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCk7CisgICAg
ICAgIGNvbW1vblRpbWVTY2FsZSAvPSAyOworICAgICAgICBhLnNldFRpbWVTY2FsZShjb21tb25U
aW1lU2NhbGUpOworICAgICAgICBiLnNldFRpbWVTY2FsZShjb21tb25UaW1lU2NhbGUpOworICAg
IH0KKyAgICByZXR1cm4gYTsKK30KKworTWVkaWFUaW1lIE1lZGlhVGltZTo6b3BlcmF0b3ItKGNv
bnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdAoreworICAgIGlmIChyaHMuaXNJbnZhbGlkKCkgfHwg
aXNJbnZhbGlkKCkpCisgICAgICAgIHJldHVybiBpbnZhbGlkVGltZSgpOworCisgICAgaWYgKHJo
cy5pc0luZGVmaW5pdGUoKSB8fCBpc0luZGVmaW5pdGUoKSkKKyAgICAgICAgcmV0dXJuIGluZGVm
aW5pdGVUaW1lKCk7CisKKyAgICBpZiAoaXNQb3NpdGl2ZUluZmluaXRlKCkpIHsKKyAgICAgICAg
aWYgKHJocy5pc1Bvc2l0aXZlSW5maW5pdGUoKSkKKyAgICAgICAgICAgIHJldHVybiBpbnZhbGlk
VGltZSgpOworICAgICAgICByZXR1cm4gcG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKKyAgICB9CisK
KyAgICBpZiAoaXNOZWdhdGl2ZUluZmluaXRlKCkpIHsKKyAgICAgICAgaWYgKHJocy5pc05lZ2F0
aXZlSW5maW5pdGUoKSkKKyAgICAgICAgICAgIHJldHVybiBpbnZhbGlkVGltZSgpOworICAgICAg
ICByZXR1cm4gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKTsKKyAgICB9CisKKyAgICBpbnQzMl90IGNv
bW1vblRpbWVTY2FsZTsKKyAgICBpZiAoIWxlYXN0Q29tbW9uTXVsdGlwbGUodGhpcy0+bV90aW1l
U2NhbGUsIHJocy5tX3RpbWVTY2FsZSwgY29tbW9uVGltZVNjYWxlKSB8fCBjb21tb25UaW1lU2Nh
bGUgPiBNYXhpbXVtVGltZVNjYWxlKQorICAgICAgICBjb21tb25UaW1lU2NhbGUgPSBNYXhpbXVt
VGltZVNjYWxlOworICAgIE1lZGlhVGltZSBhID0gKnRoaXM7CisgICAgTWVkaWFUaW1lIGIgPSBy
aHM7CisgICAgYS5zZXRUaW1lU2NhbGUoY29tbW9uVGltZVNjYWxlKTsKKyAgICBiLnNldFRpbWVT
Y2FsZShjb21tb25UaW1lU2NhbGUpOworICAgIHdoaWxlICghc2FmZVN1YihhLm1fdGltZVZhbHVl
LCBiLm1fdGltZVZhbHVlLCBhLm1fdGltZVZhbHVlKSkgeworICAgICAgICBpZiAoY29tbW9uVGlt
ZVNjYWxlID09IDEpCisgICAgICAgICAgICByZXR1cm4gYS5tX3RpbWVWYWx1ZSA+IDAgPyBwb3Np
dGl2ZUluZmluaXRlVGltZSgpIDogbmVnYXRpdmVJbmZpbml0ZVRpbWUoKTsKKyAgICAgICAgY29t
bW9uVGltZVNjYWxlIC89IDI7CisgICAgICAgIGEuc2V0VGltZVNjYWxlKGNvbW1vblRpbWVTY2Fs
ZSk7CisgICAgICAgIGIuc2V0VGltZVNjYWxlKGNvbW1vblRpbWVTY2FsZSk7CisgICAgfQorICAg
IHJldHVybiBhOworfQorCitib29sIE1lZGlhVGltZTo6b3BlcmF0b3I8KGNvbnN0IE1lZGlhVGlt
ZSYgcmhzKSBjb25zdAoreworICAgIHJldHVybiBjb21wYXJlKHJocykgPT0gTGVzc1RoYW47Cit9
CisKK2Jvb2wgTWVkaWFUaW1lOjpvcGVyYXRvcj4oY29uc3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0
Cit7CisgICAgcmV0dXJuIGNvbXBhcmUocmhzKSA9PSBHcmVhdGVyVGhhbjsKK30KKworYm9vbCBN
ZWRpYVRpbWU6Om9wZXJhdG9yPT0oY29uc3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0Cit7CisgICAg
cmV0dXJuIGNvbXBhcmUocmhzKSA9PSBFcXVhbFRvOworfQorCitib29sIE1lZGlhVGltZTo6b3Bl
cmF0b3I+PShjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3QKK3sKKyAgICByZXR1cm4gY29tcGFy
ZShyaHMpID49IEVxdWFsVG87Cit9CisKK2Jvb2wgTWVkaWFUaW1lOjpvcGVyYXRvcjw9KGNvbnN0
IE1lZGlhVGltZSYgcmhzKSBjb25zdAoreworICAgIHJldHVybiBjb21wYXJlKHJocykgPD0gRXF1
YWxUbzsKK30KKworTWVkaWFUaW1lOjpDb21wYXJpc29uRmxhZ3MgTWVkaWFUaW1lOjpjb21wYXJl
KGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdAoreworICAgIGlmICgoaXNQb3NpdGl2ZUluZmlu
aXRlKCkgJiYgcmhzLmlzUG9zaXRpdmVJbmZpbml0ZSgpKQorICAgICAgICB8fCAoaXNOZWdhdGl2
ZUluZmluaXRlKCkgJiYgcmhzLmlzTmVnYXRpdmVJbmZpbml0ZSgpKQorICAgICAgICB8fCAoaXNJ
bnZhbGlkKCkgJiYgcmhzLmlzSW52YWxpZCgpKQorICAgICAgICB8fCAoaXNJbmRlZmluaXRlKCkg
JiYgcmhzLmlzSW5kZWZpbml0ZSgpKSkKKyAgICAgICAgcmV0dXJuIEVxdWFsVG87CisKKyAgICBp
ZiAoaXNJbnZhbGlkKCkpCisgICAgICAgIHJldHVybiBHcmVhdGVyVGhhbjsKKworICAgIGlmIChy
aHMuaXNJbnZhbGlkKCkpCisgICAgICAgIHJldHVybiBMZXNzVGhhbjsKKworICAgIGlmIChyaHMu
aXNOZWdhdGl2ZUluZmluaXRlKCkgfHwgaXNQb3NpdGl2ZUluZmluaXRlKCkpCisgICAgICAgIHJl
dHVybiBHcmVhdGVyVGhhbjsKKworICAgIGlmIChyaHMuaXNQb3NpdGl2ZUluZmluaXRlKCkgfHwg
aXNOZWdhdGl2ZUluZmluaXRlKCkpCisgICAgICAgIHJldHVybiBMZXNzVGhhbjsKKworICAgIGlm
IChpc0luZGVmaW5pdGUoKSkKKyAgICAgICAgcmV0dXJuIEdyZWF0ZXJUaGFuOworCisgICAgaWYg
KHJocy5pc0luZGVmaW5pdGUoKSkKKyAgICAgICAgcmV0dXJuIExlc3NUaGFuOworCisgICAgaW50
NjRfdCByaHNXaG9sZSA9IHJocy5tX3RpbWVWYWx1ZSAvIHJocy5tX3RpbWVTY2FsZTsKKyAgICBp
bnQ2NF90IGxoc1dob2xlID0gbV90aW1lVmFsdWUgLyBtX3RpbWVTY2FsZTsKKyAgICBpZiAobGhz
V2hvbGUgPiByaHNXaG9sZSkKKyAgICAgICAgcmV0dXJuIEdyZWF0ZXJUaGFuOworICAgIGlmIChs
aHNXaG9sZSA8IHJoc1dob2xlKQorICAgICAgICByZXR1cm4gTGVzc1RoYW47CisKKyAgICBpbnQ2
NF90IHJoc1JlbWFpbiA9IHJocy5tX3RpbWVWYWx1ZSAlIHJocy5tX3RpbWVTY2FsZTsKKyAgICBp
bnQ2NF90IGxoc1JlbWFpbiA9IG1fdGltZVZhbHVlICUgbV90aW1lU2NhbGU7CisgICAgaW50NjRf
dCBsaHNGYWN0b3IgPSBsaHNSZW1haW4gKiByaHMubV90aW1lU2NhbGU7CisgICAgaW50NjRfdCBy
aHNGYWN0b3IgPSByaHNSZW1haW4gKiBtX3RpbWVTY2FsZTsKKworICAgIGlmIChsaHNGYWN0b3Ig
PT0gcmhzRmFjdG9yKQorICAgICAgICByZXR1cm4gRXF1YWxUbzsKKyAgICByZXR1cm4gbGhzRmFj
dG9yID4gcmhzRmFjdG9yID8gR3JlYXRlclRoYW4gOiBMZXNzVGhhbjsKK30KKworY29uc3QgTWVk
aWFUaW1lJiBNZWRpYVRpbWU6Onplcm9UaW1lKCkKK3sKKyAgICBzdGF0aWMgY29uc3QgTWVkaWFU
aW1lKiB0aW1lID0gMDsKKyAgICBpZiAoIXRpbWUpCisgICAgICAgIHRpbWUgPSBuZXcgTWVkaWFU
aW1lKDAsIDEsIFZhbGlkKTsKKyAgICByZXR1cm4gKnRpbWU7Cit9CisKK2NvbnN0IE1lZGlhVGlt
ZSYgTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpCit7CisgICAgc3RhdGljIGNvbnN0IE1lZGlhVGlt
ZSogdGltZSA9IDA7CisgICAgaWYgKCF0aW1lKQorICAgICAgICB0aW1lID0gbmV3IE1lZGlhVGlt
ZSgtMSwgMSwgMCk7CisgICAgcmV0dXJuICp0aW1lOworfQorCitjb25zdCBNZWRpYVRpbWUmIE1l
ZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKQoreworICAgIHN0YXRpYyBjb25zdCBNZWRp
YVRpbWUqIHRpbWUgPSAwOworICAgIGlmICghdGltZSkKKyAgICAgICAgdGltZSA9IG5ldyBNZWRp
YVRpbWUoMCwgMSwgUG9zaXRpdmVJbmZpbml0ZSB8IFZhbGlkKTsKKyAgICByZXR1cm4gKnRpbWU7
Cit9CisKK2NvbnN0IE1lZGlhVGltZSYgTWVkaWFUaW1lOjpuZWdhdGl2ZUluZmluaXRlVGltZSgp
Cit7CisgICAgc3RhdGljIGNvbnN0IE1lZGlhVGltZSogdGltZSA9IDA7CisgICAgaWYgKCF0aW1l
KQorICAgICAgICB0aW1lID0gbmV3IE1lZGlhVGltZSgtMSwgMSwgTmVnYXRpdmVJbmZpbml0ZSB8
IFZhbGlkKTsKKyAgICByZXR1cm4gKnRpbWU7Cit9CisKK2NvbnN0IE1lZGlhVGltZSYgTWVkaWFU
aW1lOjppbmRlZmluaXRlVGltZSgpCit7CisgICAgc3RhdGljIGNvbnN0IE1lZGlhVGltZSogdGlt
ZSA9IDA7CisgICAgaWYgKCF0aW1lKQorICAgICAgICB0aW1lID0gbmV3IE1lZGlhVGltZSgwLCAx
LCBJbmRlZmluaXRlIHwgVmFsaWQpOworICAgIHJldHVybiAqdGltZTsKK30KKwordm9pZCBNZWRp
YVRpbWU6OnNldFRpbWVTY2FsZShpbnQzMl90IHRpbWVTY2FsZSkKK3sKKyAgICBpZiAodGltZVNj
YWxlID09IG1fdGltZVNjYWxlKQorICAgICAgICByZXR1cm47CisgICAgdGltZVNjYWxlID0gc3Rk
OjptaW4oTWF4aW11bVRpbWVTY2FsZSwgdGltZVNjYWxlKTsKKyAgICBpbnQ2NF90IHdob2xlUGFy
dCA9IG1fdGltZVZhbHVlIC8gbV90aW1lU2NhbGU7CisKKyAgICAvLyBJZiBzZXR0aW5nIHRoZSB0
aW1lIHNjYWxlIHdpbGwgY2F1c2UgYW4gb3ZlcmZsb3csIGRpdmlkZSB0aGUKKyAgICAvLyB0aW1l
c2NhbGUgYnkgdHdvIHVudGlsIHRoZSBudW1iZXIgd2lsbCBmaXQsIGFuZCByb3VuZCB0aGUKKyAg
ICAvLyByZXN1bHQuCisgICAgaW50NjRfdCBuZXdXaG9sZVBhcnQ7CisgICAgd2hpbGUgKCFzYWZl
TXVsdGlwbHkod2hvbGVQYXJ0LCB0aW1lU2NhbGUsIG5ld1dob2xlUGFydCkpCisgICAgICAgIHRp
bWVTY2FsZSAvPSAyOworCisgICAgaW50NjRfdCByZW1haW5kZXIgPSBtX3RpbWVWYWx1ZSAlIG1f
dGltZVNjYWxlOworICAgIG1fdGltZVZhbHVlID0gbmV3V2hvbGVQYXJ0ICsgKHJlbWFpbmRlciAq
IHRpbWVTY2FsZSkgLyBtX3RpbWVTY2FsZTsKKyAgICBtX3RpbWVTY2FsZSA9IHRpbWVTY2FsZTsK
K30KKworc3RhdGljIGludDMyX3Qgc2lnbnVtKGludDY0X3QgdmFsKQoreworICAgIHJldHVybiAo
MCA8IHZhbCkgLSAodmFsIDwgMCk7Cit9CisKK1dURl9FWFBPUlRfUFJJVkFURSBNZWRpYVRpbWUg
V1RGOjphYnMoY29uc3QgTWVkaWFUaW1lJiByaHMpCit7CisgICAgaWYgKHJocy5pc0ludmFsaWQo
KSkKKyAgICAgICAgcmV0dXJuIE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKTsKKyAgICBpZiAocmhz
LmlzTmVnYXRpdmVJbmZpbml0ZSgpIHx8IHJocy5pc1Bvc2l0aXZlSW5maW5pdGUoKSkKKyAgICAg
ICAgcmV0dXJuIE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKKyAgICBNZWRpYVRp
bWUgdmFsID0gcmhzOworICAgIHZhbC5tX3RpbWVWYWx1ZSAqPSBzaWdudW0ocmhzLm1fdGltZVNj
YWxlKSAqIHNpZ251bShyaHMubV90aW1lVmFsdWUpOworICAgIHJldHVybiB2YWw7Cit9CisKK30K
KwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWVkaWFUaW1lLmggYi9Tb3VyY2UvV1RGL3d0
Zi9NZWRpYVRpbWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MzBkM2Y1YjJlOWE1NzgwOTQwOTkxMjM3MDdkNWI1
YzlkNTUyNGZiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvTWVkaWFUaW1lLmgK
QEAgLTAsMCArMSwxMDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKiAzLiAgTmVpdGhlciB0
aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBv
ZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlIDxjbWF0aD4KKyNpbmNsdWRlIDxsaW1pdHM+
CisjaW5jbHVkZSA8bWF0aC5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorCituYW1lc3BhY2UgV1RG
IHsKKworY2xhc3MgV1RGX0VYUE9SVF9QUklWQVRFIE1lZGlhVGltZSB7CitwdWJsaWM6CisgICAg
ZW51bSB7CisgICAgICAgIFZhbGlkID0gMSA8PCAwLAorICAgICAgICBIYXNCZWVuUm91bmRlZCA9
IDEgPDwgMSwKKyAgICAgICAgUG9zaXRpdmVJbmZpbml0ZSA9IDEgPDwgMiwKKyAgICAgICAgTmVn
YXRpdmVJbmZpbml0ZSA9IDEgPDwgMywKKyAgICAgICAgSW5kZWZpbml0ZSA9IDEgPDwgNCwKKyAg
ICB9OworCisgICAgTWVkaWFUaW1lKCk7CisgICAgTWVkaWFUaW1lKGludDY0X3QgdmFsdWUsIGlu
dDMyX3Qgc2NhbGUgPSBEZWZhdWx0VGltZVNjYWxlLCB1aW50MzJfdCBmbGFncyA9IFZhbGlkKTsK
KyAgICBNZWRpYVRpbWUoY29uc3QgTWVkaWFUaW1lJiByaHMpOworICAgIH5NZWRpYVRpbWUoKTsK
KworICAgIHN0YXRpYyBNZWRpYVRpbWUgY3JlYXRlV2l0aEZsb2F0KGZsb2F0IGZsb2F0VGltZSwg
aW50MzJfdCB0aW1lU2NhbGUgPSBEZWZhdWx0VGltZVNjYWxlKTsKKyAgICBzdGF0aWMgTWVkaWFU
aW1lIGNyZWF0ZVdpdGhEb3VibGUoZG91YmxlIGRvdWJsZVRpbWUsIGludDMyX3QgdGltZVNjYWxl
ID0gRGVmYXVsdFRpbWVTY2FsZSk7CisKKyAgICBmbG9hdCB0b0Zsb2F0KCkgY29uc3Q7CisgICAg
ZG91YmxlIHRvRG91YmxlKCkgY29uc3Q7CisKKyAgICBNZWRpYVRpbWUmIG9wZXJhdG9yPShjb25z
dCBNZWRpYVRpbWUmIHJocyk7CisgICAgTWVkaWFUaW1lIG9wZXJhdG9yKyhjb25zdCBNZWRpYVRp
bWUmIHJocykgY29uc3Q7CisgICAgTWVkaWFUaW1lIG9wZXJhdG9yLShjb25zdCBNZWRpYVRpbWUm
IHJocykgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgTWVkaWFUaW1lJiByaHMpIGNv
bnN0OworICAgIGJvb2wgb3BlcmF0b3I+KGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdDsKKyAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0OworICAgIGJvb2wg
b3BlcmF0b3I+PShjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRv
cjw9KGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdDsKKworICAgIHR5cGVkZWYgZW51bSB7Cisg
ICAgICAgIExlc3NUaGFuID0gLTEsCisgICAgICAgIEVxdWFsVG8gPSAwLAorICAgICAgICBHcmVh
dGVyVGhhbiA9IDEsCisgICAgfSBDb21wYXJpc29uRmxhZ3M7CisKKyAgICBDb21wYXJpc29uRmxh
Z3MgY29tcGFyZShjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3Q7CisKKyAgICBib29sIGlzVmFs
aWQoKSBjb25zdCB7IHJldHVybiBtX3RpbWVGbGFncyAmIFZhbGlkOyB9CisgICAgYm9vbCBpc0lu
dmFsaWQoKSBjb25zdCB7IHJldHVybiAhaXNWYWxpZCgpOyB9CisgICAgYm9vbCBoYXNCZWVuUm91
bmRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZUZsYWdzICYgSGFzQmVlblJvdW5kZWQ7IH0KKyAg
ICBib29sIGlzUG9zaXRpdmVJbmZpbml0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZUZsYWdzICYg
UG9zaXRpdmVJbmZpbml0ZTsgfQorICAgIGJvb2wgaXNOZWdhdGl2ZUluZmluaXRlKCkgY29uc3Qg
eyByZXR1cm4gbV90aW1lRmxhZ3MgJiBOZWdhdGl2ZUluZmluaXRlOyB9CisgICAgYm9vbCBpc0lu
ZGVmaW5pdGUoKSBjb25zdCB7IHJldHVybiBtX3RpbWVGbGFncyAmIEluZGVmaW5pdGU7IH0KKwor
ICAgIHN0YXRpYyBjb25zdCBNZWRpYVRpbWUmIHplcm9UaW1lKCk7CisgICAgc3RhdGljIGNvbnN0
IE1lZGlhVGltZSYgaW52YWxpZFRpbWUoKTsKKyAgICBzdGF0aWMgY29uc3QgTWVkaWFUaW1lJiBw
b3NpdGl2ZUluZmluaXRlVGltZSgpOworICAgIHN0YXRpYyBjb25zdCBNZWRpYVRpbWUmIG5lZ2F0
aXZlSW5maW5pdGVUaW1lKCk7CisgICAgc3RhdGljIGNvbnN0IE1lZGlhVGltZSYgaW5kZWZpbml0
ZVRpbWUoKTsKKworICAgIGNvbnN0IGludDY0X3QmIHRpbWVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdGltZVZhbHVlOyB9CisgICAgY29uc3QgaW50MzJfdCYgdGltZVNjYWxlKCkgY29uc3QgeyBy
ZXR1cm4gbV90aW1lU2NhbGU7IH0KKworICAgIGZyaWVuZCBNZWRpYVRpbWUgYWJzKGNvbnN0IE1l
ZGlhVGltZSYgcmhzKTsKK3ByaXZhdGU6CisgICAgc3RhdGljIGNvbnN0IGludDMyX3QgRGVmYXVs
dFRpbWVTY2FsZSA9IDYwMDA7CisgICAgc3RhdGljIGNvbnN0IGludDMyX3QgTWF4aW11bVRpbWVT
Y2FsZTsKKworICAgIHZvaWQgc2V0VGltZVNjYWxlKGludDMyX3QpOworCisgICAgaW50NjRfdCBt
X3RpbWVWYWx1ZTsKKyAgICBpbnQzMl90IG1fdGltZVNjYWxlOworICAgIHVpbnQzMl90IG1fdGlt
ZUZsYWdzOworfTsKKworV1RGX0VYUE9SVF9QUklWQVRFIGV4dGVybiBNZWRpYVRpbWUgYWJzKGNv
bnN0IE1lZGlhVGltZSYgcmhzKTsKK30KKwordXNpbmcgV1RGOjpNZWRpYVRpbWU7Cit1c2luZyBX
VEY6OmFiczsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCBlNjA1ZjhiZGYxYjYyODM3MmIzZjUyNTAyYTZjYTJhZTA3MDFlMGJiLi4yMDM1NjE3ODdj
ODZhNTBjODQ2ZDI5MWZkOTBiZDZjMGM2ZjZmMzY3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDYtMTEgIEpl
ciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBhIHJhdGlv
bmFsIHRpbWUgY2xhc3MgZm9yIHVzZSBieSBtZWRpYSBlbGVtZW50cy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4Nzg3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0dOVW1ha2Vm
aWxlLmFtOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS5neXBpOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL01lZGlhVGltZS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV1RGKToKKyAgICAgICAgKFdURjo6b3BlcmF0b3I8PCk6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDEy
LTA2LTExICBab2x0YW4gSG9ydmF0aCAgPHpvbHRhbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFtR
dF0gQWRkIGNvbmZpZyB0ZXN0cyBmb3IgV0VCUCBpbWFnZWRlY29kZXIgbGlicmFyeSwgbW9kaWZ5
IEhBVkUoZGVjb2RlcmxpYnJhcnkpIHRvIFVTRSguLi4pCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL0dOVW1ha2VmaWxlLmFtIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9HTlVtYWtlZmls
ZS5hbQppbmRleCBmZjkyNDkyZjMwYTJkN2JjNWZmNDg2MWE2MmVkODY3OTFhODAyNGRiLi5lMTRh
ZTAyYmRlYTIyOGUyMjk5MjYxYmNjNzgzYTk0MjRlMjQxZDIwIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL0dOVW1ha2VmaWxlLmFtCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvR05V
bWFrZWZpbGUuYW0KQEAgLTIxNyw2ICsyMTcsMTIgQEAgUHJvZ3JhbXNfVGVzdFdlYktpdEFQSV9X
VEZfVGVzdEhhc2hNYXBfQ1BQRkxBR1MgPSAkKHRlc3R3ZWJraXRhcGlfd3RmX3Rlc3RzX2NwcGYK
IFByb2dyYW1zX1Rlc3RXZWJLaXRBUElfV1RGX1Rlc3RIYXNoTWFwX0xEQUREID0gJCh0ZXN0d2Vi
a2l0YXBpX3d0Zl90ZXN0c19sZGFkZCkKIFByb2dyYW1zX1Rlc3RXZWJLaXRBUElfV1RGX1Rlc3RI
YXNoTWFwX0xERkxBR1MgPSAkKHRlc3R3ZWJraXRhcGlfd3RmX3Rlc3RzX2xkZmxhZ3MpCiAKK1By
b2dyYW1zX1Rlc3RXZWJLaXRBUElfV1RGX1Rlc3RNZWRpYVRpbWVfU09VUkNFUyA9IFwKKwlUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9NZWRpYVRpbWUuY3BwCitQcm9ncmFtc19UZXN0V2Vi
S2l0QVBJX1dURl9UZXN0TWVkaWFUaW1lX0NQUEZMQUdTID0gJCh0ZXN0d2Via2l0YXBpX3dlYmtp
dDJfdGVzdHNfY3BwZmxhZ3MpCitQcm9ncmFtc19UZXN0V2ViS2l0QVBJX1dURl9UZXN0TWVkaWFU
aW1lX0xEQUREID0gJCh0ZXN0d2Via2l0YXBpX3dlYmtpdDJfdGVzdHNfbGRhZGQpCitQcm9ncmFt
c19UZXN0V2ViS2l0QVBJX1dURl9UZXN0TWVkaWFUaW1lX0xERkxBR1MgPSAkKHRlc3R3ZWJraXRh
cGlfd2Via2l0Ml90ZXN0c19sZGZsYWdzKQorCiBQcm9ncmFtc19UZXN0V2ViS2l0QVBJX1dURl9U
ZXN0UmVkQmxhY2tUcmVlX1NPVVJDRVMgPSBcCiAJVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvUmVkQmxhY2tUcmVlLmNwcAogUHJvZ3JhbXNfVGVzdFdlYktpdEFQSV9XVEZfVGVzdFJlZEJs
YWNrVHJlZV9DUFBGTEFHUyA9ICQodGVzdHdlYmtpdGFwaV93dGZfdGVzdHNfY3BwZmxhZ3MpCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkuZ3lwaSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS5neXBpCmluZGV4IGM1MTE4N2ZhMDYzNjBhMjkx
NDgyMzc1YTMwNjE4NDE5NzE3YjZjZTcuLjk0MWU3NzZkNWY0ZDAxZTliMzkzN2NhOGNlNDdmOWRk
NzdmNDVlZjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS5n
eXBpCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS5neXBpCkBAIC0zNCw2
ICszNCw3IEBACiAgICAgICAgICAgICAnVGVzdHMvV1RGL0NoZWNrZWRBcml0aG1ldGljT3BlcmF0
aW9ucy5jcHAnLAogICAgICAgICAgICAgJ1Rlc3RzL1dURi9GdW5jdGlvbmFsLmNwcCcsCiAgICAg
ICAgICAgICAnVGVzdHMvV1RGL0hhc2hNYXAuY3BwJywKKyAgICAgICAgICAgICdUZXN0cy9XVEYv
TWVkaWFUaW1lLmNwcCcsCiAgICAgICAgICAgICAnVGVzdHMvV1RGL1JlZEJsYWNrVHJlZS5jcHAn
LAogICAgICAgICAgICAgJ1Rlc3RzL1dURi9TdHJpbmdCdWlsZGVyLmNwcCcsCiAgICAgICAgICAg
ICAnVGVzdHMvV1RGL1N0cmluZ09wZXJhdG9ycy5jcHAnLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBjNTE5YzAyMzE2ZTIxNWRkMGYyN2ZjNzg2NjViOGRmZjNhNjZiNWNlLi5kZDM1ZWRmMzA5
ODVjMDE5MGU5ZTFlMDg4NWJlM2JmZjQxODZiMTdhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMTQ0LDYgKzE0NCw3IEBACiAJCUM1NDBGNzg0MTUyRTVBOUEwMEE0MEM4QyAvKiB2ZXJib3Nl
TWFya3VwLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQzU0MEY3ODMxNTJFNUE3ODAwQTQwQzhDIC8qIHZlcmJvc2VNYXJrdXAuaHRtbCAq
LzsgfTsKIAkJRTEyMjBEQTAxNTVCMjU0ODAwMTNFMkZDIC8qIE1lbW9yeUNhY2hlRGlzYWJsZVdp
dGhpblJlc291cmNlTG9hZERlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTEyMjBEOUYxNTVCMjU0ODAwMTNFMkZDIC8qIE1lbW9yeUNhY2hl
RGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLm1tICovOyB9OwogCQlFMTIyMERDQTE1
NUIyOEFBMDAxM0UyRkMgLyogTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVs
ZWdhdGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMTIyMERDOTE1NUIyODdEMDAxM0UyRkMgLyogTWVtb3J5Q2FjaGVEaXNhYmxlV2l0
aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUuaHRtbCAqLzsgfTsKKwkJQ0Q1NDk3QjQxNTg1N0YwQzAw
QjVCQzMwIC8qIE1lZGlhVGltZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRDU0OTdCMzE1ODU3RjBDMDBCNUJDMzAgLyogTWVkaWFUaW1lLmNwcCAq
LzsgfTsKIAkJRTQ5MDI5NjgxNEUyRTNBNDAwMkJFREQxIC8qIFR5cGluZ1N0eWxlQ3Jhc2gubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDkwMjk2NzE0
RTJFM0E0MDAyQkVERDEgLyogVHlwaW5nU3R5bGVDcmFzaC5tbSAqLzsgfTsKIAkJRjNGQzNFRTMx
MzY3OEI3MzAwMTI2QTY1IC8qIGxpYmd0ZXN0LmEgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGM0ZDM0VFMjEzNjc4QjczMDAxMjZBNjUgLyogbGliZ3Rl
c3QuYSAqLzsgfTsKIAkJRjZGM0YyOTExMzM0MkZFQjAwQTZCRjE5IC8qIENvb2tpZU1hbmFnZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjZGM0Yy
OTAxMzM0MkZFQjAwQTZCRjE5IC8qIENvb2tpZU1hbmFnZXIuY3BwICovOyB9OwpAQCAtMzYzLDYg
KzM2NCw3IEBACiAJCUM1NDBGNzgzMTUyRTVBNzgwMEE0MEM4QyAvKiB2ZXJib3NlTWFya3VwLmh0
bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSB2ZXJib3NlTWFya3VwLmh0bWw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxMjIwRDlGMTU1QjI1NDgwMDEzRTJGQyAvKiBNZW1v
cnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291
cmNlTG9hZERlbGVnYXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTIyMERD
OTE1NUIyODdEMDAxM0UyRkMgLyogTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2Fk
RGVsZWdhdGUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IE1lbW9yeUNhY2hlRGlz
YWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUNENTQ5N0IzMTU4NTdGMEMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTWVkaWFUaW1lLmNwcDsgcGF0aCA9IFdU
Ri9NZWRpYVRpbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDkwMjk2NzE0
RTJFM0E0MDAyQkVERDEgLyogVHlwaW5nU3R5bGVDcmFzaC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFR5cGluZ1N0eWxlQ3Jhc2gubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUYzRkMzRUUyMTM2NzhCNzMwMDEyNkE2NSAvKiBsaWJndGVzdC5hICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gYXJjaGl2ZS5h
cjsgcGF0aCA9IGxpYmd0ZXN0LmE7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07
CiAJCUY2RjNGMjkwMTMzNDJGRUIwMEE2QkYxOSAvKiBDb29raWVNYW5hZ2VyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvb2tpZU1hbmFnZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTczLDYgKzU3NSw3IEBACiAJCQljaGlsZHJlbiA9ICgK
IAkJCQlCQzAyOUIxQTE0ODZCMjM4MDA4MTdEQTkgLyogbnMgKi8sCiAJCQkJQzA5OTFDNEYxNDND
N0Q2ODAwNzk5OEYyIC8qIGNmICovLAorCQkJCUNENTQ5N0IzMTU4NTdGMEMwMEI1QkMzMCAvKiBN
ZWRpYVRpbWUuY3BwICovLAogCQkJCTBGQzZDNENFMTQxMDM0QUQwMDVCN0YwQyAvKiBNZXRhQWxs
b2NhdG9yLmNwcCAqLywKIAkJCQkwRkM2QzRDQjE0MTAyN0UwMDA1QjdGMEMgLyogUmVkQmxhY2tU
cmVlLmNwcCAqLywKIAkJCQlBN0E5NjZEQTE0MEVDQ0M4MDA1RUY5QjQgLyogQ2hlY2tlZEFyaXRo
bWV0aWNPcGVyYXRpb25zLmNwcCAqLywKQEAgLTg4Myw2ICs4ODYsNyBAQAogCQkJCUUxMjIwREEw
MTU1QjI1NDgwMDEzRTJGQyAvKiBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWRE
ZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY2RjQ5QzY5MTU1NDVDOEUwMDA3RjM5RCAv
KiBET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRTkz
MDE3MTU2QjEzRTEwMDRDOTlERiAvKiBXS1BhZ2VHZXRTY2FsZUZhY3Rvck5vdFplcm8uY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJQ0Q1NDk3QjQxNTg1N0YwQzAwQjVCQzMwIC8qIE1lZGlhVGltZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL01lZGlhVGltZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9NZWRpYVRp
bWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjU4ZmJiMjMzZDI0NjI3NjYxNzBiYjIzZTA3ODE4ZWNlYmZkZmU2
YzMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9NZWRp
YVRpbWUuY3BwCkBAIC0wLDAgKzEsMTY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhl
IG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNs
dWRlIDx3dGYvTWVkaWFUaW1lLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CisKK25hbWVzcGFj
ZSBXVEYgeworCitzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvdXQsIGNv
bnN0IE1lZGlhVGltZSYgdmFsKQoreworICAgIG91dCA8PCAieyAiOworICAgIGlmICh2YWwuaXNJ
bnZhbGlkKCkpCisgICAgICAgIG91dCA8PCAiaW52YWxpZCI7CisgICAgZWxzZSBpZiAodmFsLmlz
UG9zaXRpdmVJbmZpbml0ZSgpKQorICAgICAgICBvdXQgPDwgIitpbmZpbml0ZSI7CisgICAgZWxz
ZSBpZiAodmFsLmlzTmVnYXRpdmVJbmZpbml0ZSgpKQorICAgICAgICBvdXQgPDwgIi1pbmZpbml0
ZSI7CisgICAgZWxzZQorICAgICAgICBvdXQgPDwgInZhbHVlOiAiIDw8IHZhbC50aW1lVmFsdWUo
KSA8PCAiLCBzY2FsZTogIiA8PCB2YWwudGltZVNjYWxlKCk7CisgICAgcmV0dXJuIG91dCA8PCAi
IH0iOworfQorCit9CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworVEVTVChXVEYsIE1l
ZGlhVGltZSkKK3sKKyAgICAvLyBDb21wYXJpc29uIE9wZXJhdG9ycworICAgIEVYUEVDVF9FUShN
ZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCkgPiBNZWRpYVRpbWU6Om5lZ2F0aXZlSW5m
aW5pdGVUaW1lKCksIHRydWUpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6Om5lZ2F0aXZlSW5m
aW5pdGVUaW1lKCkgPCBNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCksIHRydWUpOwor
ICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6Om5lZ2F0aXZlSW5maW5pdGVUaW1lKCkgPT0gTWVkaWFU
aW1lOjpuZWdhdGl2ZUluZmluaXRlVGltZSgpLCB0cnVlKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFU
aW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpID09IE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0
ZVRpbWUoKSwgdHJ1ZSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSA9
PSBNZWRpYVRpbWU6OmludmFsaWRUaW1lKCksIHRydWUpOworICAgIEVYUEVDVF9FUShNZWRpYVRp
bWU6OmludmFsaWRUaW1lKCkgPiBNZWRpYVRpbWU6Om5lZ2F0aXZlSW5maW5pdGVUaW1lKCksIHRy
dWUpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OmludmFsaWRUaW1lKCkgPiBNZWRpYVRpbWU6
OnBvc2l0aXZlSW5maW5pdGVUaW1lKCksIHRydWUpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6
Om5lZ2F0aXZlSW5maW5pdGVUaW1lKCkgPCBNZWRpYVRpbWU6OmludmFsaWRUaW1lKCksIHRydWUp
OworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCkgPCBNZWRp
YVRpbWU6OmludmFsaWRUaW1lKCksIHRydWUpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6Omlu
ZGVmaW5pdGVUaW1lKCkgPT0gTWVkaWFUaW1lOjppbmRlZmluaXRlVGltZSgpLCB0cnVlKTsKKyAg
ICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjppbmRlZmluaXRlVGltZSgpID4gTWVkaWFUaW1lOjpuZWdh
dGl2ZUluZmluaXRlVGltZSgpLCB0cnVlKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjppbmRl
ZmluaXRlVGltZSgpIDwgTWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpLCB0cnVlKTsK
KyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjpuZWdhdGl2ZUluZmluaXRlVGltZSgpIDwgTWVkaWFU
aW1lOjppbmRlZmluaXRlVGltZSgpLCB0cnVlKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjpw
b3NpdGl2ZUluZmluaXRlVGltZSgpID4gTWVkaWFUaW1lOjppbmRlZmluaXRlVGltZSgpLCB0cnVl
KTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDEsIDEpIDwgTWVkaWFUaW1lOjppbmRlZmluaXRl
VGltZSgpLCB0cnVlKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjppbmRlZmluaXRlVGltZSgp
ID4gTWVkaWFUaW1lKDEsIDEpLCB0cnVlKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDEsIDEp
IDwgTWVkaWFUaW1lKDIsIDEpLCB0cnVlKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDIsIDEp
ID4gTWVkaWFUaW1lKDEsIDEpLCB0cnVlKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDIsIDEp
ID09IE1lZGlhVGltZSgyLCAxKSwgdHJ1ZSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgyLCAx
KSA9PSBNZWRpYVRpbWUoNCwgMiksIHRydWUpOworCisgICAgLy8gQWRkaXRpb24gT3BlcmF0b3Jz
CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKSArIE1lZGlh
VGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKSwgTWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRl
VGltZSgpKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjpuZWdhdGl2ZUluZmluaXRlVGltZSgp
ICsgTWVkaWFUaW1lOjpuZWdhdGl2ZUluZmluaXRlVGltZSgpLCBNZWRpYVRpbWU6Om5lZ2F0aXZl
SW5maW5pdGVUaW1lKCkpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5p
dGVUaW1lKCkgKyBNZWRpYVRpbWU6Om5lZ2F0aXZlSW5maW5pdGVUaW1lKCksIE1lZGlhVGltZTo6
aW52YWxpZFRpbWUoKSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6bmVnYXRpdmVJbmZpbml0
ZVRpbWUoKSArIE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKSwgTWVkaWFUaW1lOjpp
bnZhbGlkVGltZSgpKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpICsg
TWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpLCBNZWRpYVRpbWU6OmludmFsaWRUaW1l
KCkpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OmludmFsaWRUaW1lKCkgKyBNZWRpYVRpbWU6
Om5lZ2F0aXZlSW5maW5pdGVUaW1lKCksIE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSk7CisgICAg
RVhQRUNUX0VRKE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSArIE1lZGlhVGltZTo6aW52YWxpZFRp
bWUoKSwgTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1l
OjppbnZhbGlkVGltZSgpICsgTWVkaWFUaW1lKDEsIDEpLCBNZWRpYVRpbWU6OmludmFsaWRUaW1l
KCkpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OmluZGVmaW5pdGVUaW1lKCkgKyBNZWRpYVRp
bWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCksIE1lZGlhVGltZTo6aW5kZWZpbml0ZVRpbWUoKSk7
CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6aW5kZWZpbml0ZVRpbWUoKSArIE1lZGlhVGltZTo6
bmVnYXRpdmVJbmZpbml0ZVRpbWUoKSwgTWVkaWFUaW1lOjppbmRlZmluaXRlVGltZSgpKTsKKyAg
ICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjppbmRlZmluaXRlVGltZSgpICsgTWVkaWFUaW1lOjppbmRl
ZmluaXRlVGltZSgpLCBNZWRpYVRpbWU6OmluZGVmaW5pdGVUaW1lKCkpOworICAgIEVYUEVDVF9F
UShNZWRpYVRpbWU6OmluZGVmaW5pdGVUaW1lKCkgKyBNZWRpYVRpbWUoMSwgMSksIE1lZGlhVGlt
ZTo6aW5kZWZpbml0ZVRpbWUoKSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxLCAxKSArIE1l
ZGlhVGltZSgxLCAxKSwgTWVkaWFUaW1lKDIsIDEpKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1l
KDEsIDIpICsgTWVkaWFUaW1lKDEsIDMpLCBNZWRpYVRpbWUoNSwgNikpOworICAgIEVYUEVDVF9F
UShNZWRpYVRpbWUoMSwgbnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpLTEpICsgTWVkaWFU
aW1lKDEsIG51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKS0yKSwgTWVkaWFUaW1lKDIsIG51
bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpOworCisgICAgLy8gU3VidHJhY3Rpb24gT3Bl
cmF0b3JzCisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKSAt
IE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKSwgTWVkaWFUaW1lOjppbnZhbGlkVGlt
ZSgpKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjpuZWdhdGl2ZUluZmluaXRlVGltZSgpIC0g
TWVkaWFUaW1lOjpuZWdhdGl2ZUluZmluaXRlVGltZSgpLCBNZWRpYVRpbWU6OmludmFsaWRUaW1l
KCkpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCkgLSBN
ZWRpYVRpbWU6Om5lZ2F0aXZlSW5maW5pdGVUaW1lKCksIE1lZGlhVGltZTo6cG9zaXRpdmVJbmZp
bml0ZVRpbWUoKSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6bmVnYXRpdmVJbmZpbml0ZVRp
bWUoKSAtIE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKSwgTWVkaWFUaW1lOjpuZWdh
dGl2ZUluZmluaXRlVGltZSgpKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjppbnZhbGlkVGlt
ZSgpIC0gTWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpLCBNZWRpYVRpbWU6OmludmFs
aWRUaW1lKCkpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OmludmFsaWRUaW1lKCkgLSBNZWRp
YVRpbWU6Om5lZ2F0aXZlSW5maW5pdGVUaW1lKCksIE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSk7
CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSAtIE1lZGlhVGltZTo6aW52
YWxpZFRpbWUoKSwgTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpKTsKKyAgICBFWFBFQ1RfRVEoTWVk
aWFUaW1lOjppbnZhbGlkVGltZSgpIC0gTWVkaWFUaW1lKDEsIDEpLCBNZWRpYVRpbWU6OmludmFs
aWRUaW1lKCkpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OmluZGVmaW5pdGVUaW1lKCkgLSBN
ZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCksIE1lZGlhVGltZTo6aW5kZWZpbml0ZVRp
bWUoKSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6aW5kZWZpbml0ZVRpbWUoKSAtIE1lZGlh
VGltZTo6bmVnYXRpdmVJbmZpbml0ZVRpbWUoKSwgTWVkaWFUaW1lOjppbmRlZmluaXRlVGltZSgp
KTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjppbmRlZmluaXRlVGltZSgpIC0gTWVkaWFUaW1l
OjppbmRlZmluaXRlVGltZSgpLCBNZWRpYVRpbWU6OmluZGVmaW5pdGVUaW1lKCkpOworICAgIEVY
UEVDVF9FUShNZWRpYVRpbWU6OmluZGVmaW5pdGVUaW1lKCkgLSBNZWRpYVRpbWUoMSwgMSksIE1l
ZGlhVGltZTo6aW5kZWZpbml0ZVRpbWUoKSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgzLCAx
KSAtIE1lZGlhVGltZSgyLCAxKSwgTWVkaWFUaW1lKDEsIDEpKTsKKyAgICBFWFBFQ1RfRVEoTWVk
aWFUaW1lKDEsIDIpIC0gTWVkaWFUaW1lKDEsIDMpLCBNZWRpYVRpbWUoMSwgNikpOworICAgIEVY
UEVDVF9FUShNZWRpYVRpbWUoMiwgbnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpLTEpIC0g
TWVkaWFUaW1lKDEsIG51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKS0yKSwgTWVkaWFUaW1l
KDEsIG51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpOworCisgICAgLy8gQ29uc3RhbnRz
CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6emVyb1RpbWUoKSwgTWVkaWFUaW1lKDAsIDEpKTsK
KyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpLCBNZWRpYVRpbWUoLTEsIDEs
IDApKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpLCBN
ZWRpYVRpbWUoMCwgMSwgTWVkaWFUaW1lOjpQb3NpdGl2ZUluZmluaXRlKSk7CisgICAgRVhQRUNU
X0VRKE1lZGlhVGltZTo6bmVnYXRpdmVJbmZpbml0ZVRpbWUoKSwgTWVkaWFUaW1lKDAsIDEsIE1l
ZGlhVGltZTo6TmVnYXRpdmVJbmZpbml0ZSkpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6Omlu
ZGVmaW5pdGVUaW1lKCksIE1lZGlhVGltZSgwLCAxLCBNZWRpYVRpbWU6OkluZGVmaW5pdGUpKTsK
KworICAgIC8vIEFic29sdXRlIEZ1bmN0aW9ucworICAgIEVYUEVDVF9FUShhYnMoTWVkaWFUaW1l
Ojpwb3NpdGl2ZUluZmluaXRlVGltZSgpKSwgTWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGlt
ZSgpKTsKKyAgICBFWFBFQ1RfRVEoYWJzKE1lZGlhVGltZTo6bmVnYXRpdmVJbmZpbml0ZVRpbWUo
KSksIE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKSk7CisgICAgRVhQRUNUX0VRKGFi
cyhNZWRpYVRpbWU6OmludmFsaWRUaW1lKCkpLCBNZWRpYVRpbWU6OmludmFsaWRUaW1lKCkpOwor
ICAgIEVYUEVDVF9FUShhYnMoTWVkaWFUaW1lKDEsIDEpKSwgTWVkaWFUaW1lKDEsIDEpKTsKKyAg
ICBFWFBFQ1RfRVEoYWJzKE1lZGlhVGltZSgtMSwgMSkpLCBNZWRpYVRpbWUoMSwgMSkpOworICAg
IEVYUEVDVF9FUShhYnMoTWVkaWFUaW1lKC0xLCAtMSkpLCBNZWRpYVRpbWUoLTEsIC0xKSk7Cisg
ICAgRVhQRUNUX0VRKGFicyhNZWRpYVRpbWUoMSwgLTEpKSwgTWVkaWFUaW1lKC0xLCAtMSkpOwor
CisgICAgLy8gRmxvYXRpbmcgUG9pbnQgRnVuY3Rpb25zCisgICAgRVhQRUNUX0VRKE1lZGlhVGlt
ZTo6Y3JlYXRlV2l0aEZsb2F0KDEuMGYpLCBNZWRpYVRpbWUoMSwgMSkpOworICAgIEVYUEVDVF9F
UShNZWRpYVRpbWU6OmNyZWF0ZVdpdGhGbG9hdCgxLjVmKSwgTWVkaWFUaW1lKDMsIDIpKTsKKyAg
ICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKDEuMCksIE1lZGlhVGltZSgx
LCAxKSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZSgxLjUpLCBN
ZWRpYVRpbWUoMywgMikpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMSwgMSkudG9GbG9hdCgp
LCAxLjBmKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDMsIDIpLnRvRmxvYXQoKSwgMS41Zik7
CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxLCAxKS50b0RvdWJsZSgpLCAxLjApOworICAgIEVY
UEVDVF9FUShNZWRpYVRpbWUoMywgMikudG9Eb3VibGUoKSwgMS41KTsKKyAgICBFWFBFQ1RfRVEo
TWVkaWFUaW1lKDEsIDEgPDwgMTYpLnRvRmxvYXQoKSwgMSAvIHBvdygyLjBmLCAxNi4wZikpOwor
ICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMSwgMSA8PCAzMCkudG9Eb3VibGUoKSwgMSAvIHBvdygy
LjAsIDMwLjApKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKE1f
UEksIDEgPDwgMzApLCBNZWRpYVRpbWUoMzM3MzI1OTQyNiwgMSA8PCAzMCkpOworICAgIEVYUEVD
VF9FUShNZWRpYVRpbWU6OmNyZWF0ZVdpdGhGbG9hdChJTkZJTklUWSksIE1lZGlhVGltZTo6cG9z
aXRpdmVJbmZpbml0ZVRpbWUoKSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6Y3JlYXRlV2l0
aEZsb2F0KC1JTkZJTklUWSksIE1lZGlhVGltZTo6bmVnYXRpdmVJbmZpbml0ZVRpbWUoKSk7Cisg
ICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6Y3JlYXRlV2l0aEZsb2F0KE5BTiksIE1lZGlhVGltZTo6
aW52YWxpZFRpbWUoKSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJs
ZShJTkZJTklUWSksIE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKSk7CisgICAgRVhQ
RUNUX0VRKE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZSgtSU5GSU5JVFkpLCBNZWRpYVRpbWU6
Om5lZ2F0aXZlSW5maW5pdGVUaW1lKCkpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OmNyZWF0
ZVdpdGhEb3VibGUoTkFOKSwgTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpKTsKKworICAgIC8vIE92
ZXJmbG93IEJlaGF2aW9yCisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6Y3JlYXRlV2l0aEZsb2F0
KHBvdygyLjBmLCA2NC4wZikpLCBNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCkpOwor
ICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OmNyZWF0ZVdpdGhGbG9hdCgtcG93KDIuMGYsIDY0LjBm
KSksIE1lZGlhVGltZTo6bmVnYXRpdmVJbmZpbml0ZVRpbWUoKSk7CisgICAgRVhQRUNUX0VRKE1l
ZGlhVGltZTo6Y3JlYXRlV2l0aEZsb2F0KHBvdygyLjBmLCA2My4wZiksIDIpLnRpbWVTY2FsZSgp
LCAxKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjpjcmVhdGVXaXRoRmxvYXQocG93KDIuMGYs
IDYzLjBmKSwgMykudGltZVNjYWxlKCksIDEpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OmNy
ZWF0ZVdpdGhEb3VibGUocG93KDIuMCwgNjQuMCkpLCBNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5p
dGVUaW1lKCkpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoLXBv
dygyLjAsIDY0LjApKSwgTWVkaWFUaW1lOjpuZWdhdGl2ZUluZmluaXRlVGltZSgpKTsKKyAgICBF
WFBFQ1RfRVEoTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKHBvdygyLjAsIDYzLjApLCAyKS50
aW1lU2NhbGUoKSwgMSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJs
ZShwb3coMi4wLCA2My4wKSwgMykudGltZVNjYWxlKCksIDEpOworICAgIEVYUEVDVF9FUSgoTWVk
aWFUaW1lKG51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKSwgMikgKyBNZWRpYVRpbWUobnVt
ZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgpLCAyKSkudGltZVNjYWxlKCksIDEpOworICAgIEVY
UEVDVF9FUSgoTWVkaWFUaW1lKG51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSwgMikgLSBN
ZWRpYVRpbWUobnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgpLCAyKSkudGltZVNjYWxlKCks
IDEpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUobnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1h
eCgpLCAxKSArIE1lZGlhVGltZShudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCksIDEpLCBN
ZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCkpOworICAgIEVYUEVDVF9FUShNZWRpYVRp
bWUobnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1pbigpLCAxKSArIE1lZGlhVGltZShudW1lcmlj
X2xpbWl0czxpbnQ2NF90Pjo6bWluKCksIDEpLCBNZWRpYVRpbWU6Om5lZ2F0aXZlSW5maW5pdGVU
aW1lKCkpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUobnVtZXJpY19saW1pdHM8aW50NjRfdD46
Om1pbigpLCAxKSAtIE1lZGlhVGltZShudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCksIDEp
LCBNZWRpYVRpbWU6Om5lZ2F0aXZlSW5maW5pdGVUaW1lKCkpOworICAgIEVYUEVDVF9FUShNZWRp
YVRpbWUobnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgpLCAxKSAtIE1lZGlhVGltZShudW1l
cmljX2xpbWl0czxpbnQ2NF90Pjo6bWluKCksIDEpLCBNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5p
dGVUaW1lKCkpOworfQorCit9CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146872</attachid>
            <date>2012-06-11 10:31:47 -0700</date>
            <delta_ts>2012-06-11 11:23:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88787-20120611103146.patch</filename>
            <type>text/plain</type>
            <size>41322</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5OTgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
M2M1MDAxMTliNjEyMjEwY2FhYWM2MzUwYWZhZTg1MmE5YWZmNWJiLi43Yzc4ZWQ0MTk2ZWRlY2Rm
MDQ1MWMxNWFkZGZlOWIyZmRjZWQ1Y2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMiBAQAorMjAxMi0wNi0xMSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4K
KworICAgICAgICBTdXBwb3J0IGEgcmF0aW9uYWwgdGltZSBjbGFzcyBmb3IgdXNlIGJ5IG1lZGlh
IGVsZW1lbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODg3ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLm9yZGVyOgorCiAyMDEyLTA2LTExICBDYXJsb3MgR2FyY2lhIENh
bXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBGaXggbWFr
ZSBkaXN0Y2hlY2sgaXNzdWVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA0NTc0OGE0ODBiMDRiNDRmMWEyYTNlOGNhMWM1ZWFj
Yjg1ZmUwNTY5Li5hYjA5ZjcxOWVhNDc0ZjA3NDk3MGM5ZTI2Nzc5ZWYwOGNlNzBhNWY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDUyIEBACisyMDEyLTA2LTExICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUu
Y29tPgorCisgICAgICAgIFN1cHBvcnQgYSByYXRpb25hbCB0aW1lIGNsYXNzIGZvciB1c2UgYnkg
bWVkaWEgZWxlbWVudHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04ODc4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBXVEYucHJvOgorICAgICAg
ICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9NZWRpYVRp
bWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdURik6CisgICAgICAgIChXVEY6OmdyZWF0ZXN0Q29t
bW9uRGl2aXNvcik6CisgICAgICAgIChXVEY6OmxlYXN0Q29tbW9uTXVsdGlwbGUpOgorICAgICAg
ICAoV1RGOjpNZWRpYVRpbWU6Ok1lZGlhVGltZSk6CisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6
fk1lZGlhVGltZSk6CisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6Y3JlYXRlV2l0aEZsb2F0KToK
KyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKToKKyAgICAgICAgKFdU
Rjo6TWVkaWFUaW1lOjp0b0Zsb2F0KToKKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjp0b0RvdWJs
ZSk6CisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdURjo6
TWVkaWFUaW1lOjpvcGVyYXRvcispOgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6Om9wZXJhdG9y
LSk6CisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6b3BlcmF0b3I8KToKKyAgICAgICAgKFdURjo6
TWVkaWFUaW1lOjpvcGVyYXRvcj4pOgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6Om9wZXJhdG9y
PT0pOgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6Om9wZXJhdG9yPj0pOgorICAgICAgICAoV1RG
OjpNZWRpYVRpbWU6Om9wZXJhdG9yPD0pOgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6OmNvbXBh
cmUpOgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6Onplcm9UaW1lKToKKyAgICAgICAgKFdURjo6
TWVkaWFUaW1lOjppbnZhbGlkVGltZSk6CisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6cG9zaXRp
dmVJbmZpbml0ZVRpbWUpOgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6Om5lZ2F0aXZlSW5maW5p
dGVUaW1lKToKKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjppbmRlZmluaXRlVGltZSk6CisgICAg
ICAgIChXVEY6Ok1lZGlhVGltZTo6c2V0VGltZVNjYWxlKToKKyAgICAgICAgKFdURjo6c2lnbnVt
KToKKyAgICAgICAgKFdURjo6V1RGOjphYnMpOgorICAgICAgICAqIHd0Zi9NZWRpYVRpbWUuaDog
QWRkZWQuCisgICAgICAgIChXVEYpOgorICAgICAgICAoTWVkaWFUaW1lKToKKyAgICAgICAgKFdU
Rjo6TWVkaWFUaW1lOjppc1ZhbGlkKToKKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjppc0ludmFs
aWQpOgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6Omhhc0JlZW5Sb3VuZGVkKToKKyAgICAgICAg
KFdURjo6TWVkaWFUaW1lOjppc1Bvc2l0aXZlSW5maW5pdGUpOgorICAgICAgICAoV1RGOjpNZWRp
YVRpbWU6OmlzTmVnYXRpdmVJbmZpbml0ZSk6CisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6aXNJ
bmRlZmluaXRlKToKKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjp0aW1lVmFsdWUpOgorICAgICAg
ICAoV1RGOjpNZWRpYVRpbWU6OnRpbWVTY2FsZSk6CisKIDIwMTItMDYtMTEgIENhcmxvcyBHYXJj
aWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEZp
eCBtYWtlIGRpc3RjaGVjayBpc3N1ZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUub3JkZXIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUub3JkZXIKaW5kZXggM2E0NTAwNzVhMTM0M2U1OWU3YjFlZGExMWE1ZjdjZDgwM2M4NjVh
YS4uMDc0MmEwYTBlMmI2ZGNkZDg0YmVmNzhjYmMxNmU3ZWFiODk5YTUyYiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLm9yZGVyCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5vcmRlcgpAQCAtMjQ5NCwzICsyNDk0LDE2IEBA
IF9fWk4zV1RGNlZlY3RvcklOM0pTQzEwQVNUQnVpbGRlcjE0QXNzaWdubWVudEluZm9FTG0xMEVF
MTRleHBhbmRDYXBhY2l0eUVtCiBfY3RpX29wX3B1dF9ieV9pZF9kaXJlY3RfZ2VuZXJpYwogX19a
TjNXVEY5SGFzaFRhYmxlSVBOM0pTQzE2RnVuY3Rpb25Cb2R5Tm9kZUVTdDRwYWlySVMzX2pFTlNf
MThQYWlyRmlyc3RFeHRyYWN0b3JJUzVfRUVOU183UHRySGFzaElTM19FRU5TXzE0UGFpckhhc2hU
cmFpdHNJTlNfMTBIYXNoVHJhaXRzSVMzX0VFTlNCX0lqRUVFRVNDX0U0ZmluZElTM19OU18yMklk
ZW50aXR5SGFzaFRyYW5zbGF0b3JJUzNfUzVfUzlfRUVFRU5TXzE3SGFzaFRhYmxlSXRlcmF0b3JJ
UzNfUzVfUzdfUzlfU0VfU0NfRUVSS1RfCiBfX1pOM1dURjlIYXNoVGFibGVJUE4zSlNDMTZGdW5j
dGlvbkJvZHlOb2RlRVN0NHBhaXJJUzNfakVOU18xOFBhaXJGaXJzdEV4dHJhY3RvcklTNV9FRU5T
XzdQdHJIYXNoSVMzX0VFTlNfMTRQYWlySGFzaFRyYWl0c0lOU18xMEhhc2hUcmFpdHNJUzNfRUVO
U0JfSWpFRUVFU0NfRTZleHBhbmRFdgorX19aTjNXVEYzYWJzRVJLTlNfOU1lZGlhVGltZUUKK19f
Wk4zV1RGOU1lZGlhVGltZTExaW52YWxpZFRpbWVFdgorX19aTjNXVEY5TWVkaWFUaW1lMTRpbmRl
ZmluaXRlVGltZUV2CitfX1pOM1dURjlNZWRpYVRpbWUxNWNyZWF0ZVdpdGhGbG9hdEVmaQorX19a
TjNXVEY5TWVkaWFUaW1lMTZjcmVhdGVXaXRoRG91YmxlRWRpCitfX1pOM1dURjlNZWRpYVRpbWUy
MG5lZ2F0aXZlSW5maW5pdGVUaW1lRXYKK19fWk4zV1RGOU1lZGlhVGltZTIwcG9zaXRpdmVJbmZp
bml0ZVRpbWVFdgorX19aTjNXVEY5TWVkaWFUaW1lRDFFdgorX19aTkszV1RGOU1lZGlhVGltZWd0
RVJLUzBfCitfX1pOSzNXVEY5TWVkaWFUaW1lbHRFUktTMF8KK19fWk5LM1dURjlNZWRpYVRpbWVt
aUVSS1MwXworX19aTkszV1RGOU1lZGlhVGltZXBsRVJLUzBfCisKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XVEYvR05VbWFrZWZpbGUubGlzdC5h
bQppbmRleCAzZGZjMWRiZDNjODg2ZmU2OGRjYWIyMjk5ZjYwOWNiNGM2MzY2MTc4Li41NmUyZmRk
MGVjOGY4NjQ2ZDAzYzZiZTRkZGQ0NzNmNjIwMDE0NDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dURi9HTlVtYWtlZmlsZS5saXN0LmFt
CkBAIC03NSw2ICs3NSw4IEBAIHd0Zl9zb3VyY2VzICs9IFwKICAgICBTb3VyY2UvV1RGL3d0Zi9N
YWluVGhyZWFkLmggXAogICAgIFNvdXJjZS9XVEYvd3RmL01hbGxvY1pvbmVTdXBwb3J0LmggXAog
ICAgIFNvdXJjZS9XVEYvd3RmL01hdGhFeHRyYXMuaCBcCisgICAgU291cmNlL1dURi93dGYvTWVk
aWFUaW1lLmggXAorICAgIFNvdXJjZS9XVEYvd3RmL01lZGlhVGltZS5jcHAgXAogICAgIFNvdXJj
ZS9XVEYvd3RmL01lc3NhZ2VRdWV1ZS5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9NZXRhQWxsb2Nh
dG9yLmNwcCBcCiAgICAgU291cmNlL1dURi93dGYvTWV0YUFsbG9jYXRvci5oIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvV1RGLnBybyBiL1NvdXJjZS9XVEYvV1RGLnBybwppbmRleCAzMzg0Nzcw
YThlZDdkZmQzOTQ2Mzc4MWNkYTllODk4ZTk4ZWQxYmFhLi5mMTE2MjdhMDEzYmJlYzJjODFjNDE2
MjU5YjcxMDdmNDkxMDE3ZmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi5wcm8KKysrIGIv
U291cmNlL1dURi9XVEYucHJvCkBAIC03Niw2ICs3Niw3IEBAIEhFQURFUlMgKz0gXAogICAgIE1h
bGxvY1pvbmVTdXBwb3J0LmggXAogICAgIE1hdGhFeHRyYXMuaCBcCiAgICAgTUQ1LmggXAorICAg
IE1lZGlhVGltZS5oIFwKICAgICBNZXNzYWdlUXVldWUuaCBcCiAgICAgTWV0YUFsbG9jYXRvci5o
IFwKICAgICBNZXRhQWxsb2NhdG9ySGFuZGxlLmggXApAQCAtMTg5LDYgKzE5MCw3IEBAIFNPVVJD
RVMgKz0gXAogICAgIEhhc2hUYWJsZS5jcHAgXAogICAgIE1ENS5jcHAgXAogICAgIE1haW5UaHJl
YWQuY3BwIFwKKyAgICBNZWRpYVRpbWUuY3BwIFwKICAgICBNZXRhQWxsb2NhdG9yLmNwcCBcCiAg
ICAgTnVsbFB0ci5jcHAgXAogICAgIE51bWJlck9mQ29yZXMuY3BwIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGJhNDU3NjQzZmIzYmExZDUxNmIzZWY5MTE2
OWFhYTFiYzcwYTU1N2UuLmViZWViNDljOTNlZjdjZDNmYzZmMjRlOTFiZjk5NjhhOGE5MzQxZTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjQxLDYgKzI0
MSw4IEBACiAJCUE4QTQ3NDg2MTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJlYWREYXRhLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MzdBMTUx
QTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJlYWREYXRhLmNwcCAqLzsgfTsKIAkJQThBNDc0ODcxNTFB
ODI1QjAwNDEyM0ZGIC8qIFdURlRocmVhZERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MzdCMTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJl
YWREYXRhLmggKi87IH07CiAJCUE4QTQ3NDhDMTUxQTgyNjQwMDQxMjNGRiAvKiBjb25maWcuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3NDhCMTUx
QTgyNjQwMDQxMjNGRiAvKiBjb25maWcuaCAqLzsgfTsKKwkJQ0Q1NDk3QUMxNTg1N0QwMzAwQjVC
QzMwIC8qIE1lZGlhVGltZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRDU0OTdBQTE1ODU3RDAzMDBCNUJDMzAgLyogTWVkaWFUaW1lLmNwcCAqLzsg
fTsKKwkJQ0Q1NDk3QUQxNTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q1NDk3QUIxNTg1N0QwMzAwQjVC
QzMwIC8qIE1lZGlhVGltZS5oICovOyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICov
CiAKIC8qIEJlZ2luIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwpAQCAtNDg4LDYgKzQ5MCw4
IEBACiAJCUE4QTQ3MzdBMTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJlYWREYXRhLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdURlRocmVhZERhdGEuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzM3QjE1MUE4MjVCMDA0MTIzRkYgLyogV1RG
VGhyZWFkRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXVEZUaHJlYWRE
YXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3NDhCMTUxQTgyNjQwMDQx
MjNGRiAvKiBjb25maWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gY29uZmln
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNENTQ5N0FBMTU4NTdEMDMwMEI1QkMz
MCAvKiBNZWRpYVRpbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TWVkaWFUaW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0Q1NDk3QUIxNTg1
N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBNZWRpYVRpbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8qIEVuZCBQQlhG
aWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhh
c2Ugc2VjdGlvbiAqLwpAQCAtNjIzLDYgKzYyNyw4IEBACiAJCQkJQThBNDcyQzkxNTFBODI1QjAw
NDEyM0ZGIC8qIE1hdGhFeHRyYXMuaCAqLywKIAkJCQlBOEE0NzJDQTE1MUE4MjVCMDA0MTIzRkYg
LyogTUQ1LmNwcCAqLywKIAkJCQlBOEE0NzJDQjE1MUE4MjVCMDA0MTIzRkYgLyogTUQ1LmggKi8s
CisJCQkJQ0Q1NDk3QUExNTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5jcHAgKi8sCisJCQkJ
Q0Q1NDk3QUIxNTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5oICovLAogCQkJCUE4QTQ3MkND
MTUxQTgyNUIwMDQxMjNGRiAvKiBNZXNzYWdlUXVldWUuaCAqLywKIAkJCQlBOEE0NzJDRDE1MUE4
MjVCMDA0MTIzRkYgLyogTWV0YUFsbG9jYXRvci5jcHAgKi8sCiAJCQkJQThBNDcyQ0UxNTFBODI1
QjAwNDEyM0ZGIC8qIE1ldGFBbGxvY2F0b3IuaCAqLywKQEAgLTkzMyw2ICs5MzksNyBAQAogCQkJ
CUE4QTQ3M0U3MTUxQTgyNUIwMDQxMjNGRiAvKiBNYWxsb2Nab25lU3VwcG9ydC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQThBNDczRTgxNTFBODI1QjAwNDEyM0ZGIC8qIE1hdGhFeHRyYXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE4QTQ3M0VBMTUxQTgyNUIwMDQxMjNGRiAvKiBNRDUuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUNENTQ5N0FEMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE4QTQ3M0VCMTUxQTgyNUIwMDQxMjNGRiAvKiBNZXNzYWdlUXVldWUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3M0VEMTUxQTgyNUIwMDQxMjNGRiAvKiBNZXRhQWxs
b2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzNFRTE1MUE4MjVCMDA0MTIzRkYgLyog
TWV0YUFsbG9jYXRvckhhbmRsZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMTg0LDYgKzExOTEsNyBA
QAogCQkJCUE4QTQ3NDdCMTUxQTgyNUIwMDQxMjNGRiAvKiBVUkxTZWdtZW50cy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBOEE0NzQ4NjE1MUE4MjVCMDA0MTIzRkYgLyogV1RGVGhyZWFkRGF0YS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDNGNjExRjE1NjVGMEY5MDBEQjUxNEEgLyogUkFNU2l6
ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDRDU0OTdBQzE1ODU3RDAzMDBCNUJDMzAgLyogTWVk
aWFUaW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWVk
aWFUaW1lLmNwcCBiL1NvdXJjZS9XVEYvd3RmL01lZGlhVGltZS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Nl
ZDI4NDg3MWM2NGMwMWYzN2I0ZjY0ZjJkNTBjNmNiMTJjMzNiNAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XVEYvd3RmL01lZGlhVGltZS5jcHAKQEAgLTAsMCArMSwzNjMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIElu
Yy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAg
ZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJNZWRpYVRpbWUuaCIKKworI2luY2x1ZGUgPGFsZ29yaXRo
bT4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KKwordXNpbmcgbmFtZXNwYWNl
IHN0ZDsKKworbmFtZXNwYWNlIFdURiB7CisKK3N0YXRpYyBpbnQzMl90IGdyZWF0ZXN0Q29tbW9u
RGl2aXNvcihpbnQzMl90IGxocywgaW50MzJfdCByaHMpCit7CisgICAgLy8gRXVjbGlkJ3MgQWxn
b3JpdGhtCisgICAgaW50MzJfdCB0ZW1wID0gMDsKKyAgICB3aGlsZSAocmhzKSB7CisgICAgICAg
IHRlbXAgPSByaHM7CisgICAgICAgIHJocyA9IGxocyAlIHJoczsKKyAgICAgICAgbGhzID0gdGVt
cDsKKyAgICB9CisgICAgcmV0dXJuIGxoczsKK30KKworc3RhdGljIGludDMyX3QgbGVhc3RDb21t
b25NdWx0aXBsZShpbnQzMl90IGxocywgaW50MzJfdCByaHMsIGludDMyX3QgJnJlc3VsdCkKK3sK
KyAgICByZXR1cm4gc2FmZU11bHRpcGx5KGxocywgcmhzIC8gZ3JlYXRlc3RDb21tb25EaXZpc29y
KGxocywgcmhzKSwgcmVzdWx0KTsKK30KKwordXNpbmcgbmFtZXNwYWNlIFdURjsKKworY29uc3Qg
aW50MzJfdCBNZWRpYVRpbWU6Ok1heGltdW1UaW1lU2NhbGUgPSAweDdmZmZmZmZmTDsKKworTWVk
aWFUaW1lOjpNZWRpYVRpbWUoKQorICAgIDogbV90aW1lVmFsdWUoMCkKKyAgICAsIG1fdGltZVNj
YWxlKERlZmF1bHRUaW1lU2NhbGUpCisgICAgLCBtX3RpbWVGbGFncyhWYWxpZCkKK3sKK30KKwor
TWVkaWFUaW1lOjpNZWRpYVRpbWUoaW50NjRfdCB2YWx1ZSwgaW50MzJfdCBzY2FsZSwgdWludDMy
X3QgZmxhZ3MpCisgICAgOiBtX3RpbWVWYWx1ZSh2YWx1ZSkKKyAgICAsIG1fdGltZVNjYWxlKHNj
YWxlKQorICAgICwgbV90aW1lRmxhZ3MoZmxhZ3MpCit7Cit9CisKK01lZGlhVGltZTo6fk1lZGlh
VGltZSgpCit7Cit9CisKK01lZGlhVGltZTo6TWVkaWFUaW1lKGNvbnN0IE1lZGlhVGltZSYgcmhz
KQoreworICAgICp0aGlzID0gcmhzOworfQorCitNZWRpYVRpbWUgTWVkaWFUaW1lOjpjcmVhdGVX
aXRoRmxvYXQoZmxvYXQgZmxvYXRUaW1lLCBpbnQzMl90IHRpbWVTY2FsZSkKK3sKKyAgICBpZiAo
ZmxvYXRUaW1lICE9IGZsb2F0VGltZSkKKyAgICAgICAgcmV0dXJuIGludmFsaWRUaW1lKCk7Cisg
ICAgaWYgKHN0ZDo6aXNpbmYoZmxvYXRUaW1lKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6c2lnbmJp
dChmbG9hdFRpbWUpID8gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKSA6IHBvc2l0aXZlSW5maW5pdGVU
aW1lKCk7CisgICAgaWYgKGZsb2F0VGltZSA+IG51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgo
KSkKKyAgICAgICAgcmV0dXJuIHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7CisgICAgaWYgKGZsb2F0
VGltZSA8IG51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSkKKyAgICAgICAgcmV0dXJuIG5l
Z2F0aXZlSW5maW5pdGVUaW1lKCk7CisKKyAgICB3aGlsZSAoZmxvYXRUaW1lICogdGltZVNjYWxl
ID4gbnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgpKQorICAgICAgICB0aW1lU2NhbGUgLz0g
MjsKKyAgICByZXR1cm4gTWVkaWFUaW1lKHN0YXRpY19jYXN0PGludDY0X3Q+KGZsb2F0VGltZSAq
IHRpbWVTY2FsZSksIHRpbWVTY2FsZSwgVmFsaWQpOworfQorCitNZWRpYVRpbWUgTWVkaWFUaW1l
OjpjcmVhdGVXaXRoRG91YmxlKGRvdWJsZSBkb3VibGVUaW1lLCBpbnQzMl90IHRpbWVTY2FsZSkK
K3sKKyAgICBpZiAoZG91YmxlVGltZSAhPSBkb3VibGVUaW1lKQorICAgICAgICByZXR1cm4gaW52
YWxpZFRpbWUoKTsKKyAgICBpZiAoc3RkOjppc2luZihkb3VibGVUaW1lKSkKKyAgICAgICAgcmV0
dXJuIHN0ZDo6c2lnbmJpdChkb3VibGVUaW1lKSA/IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCkgOiBw
b3NpdGl2ZUluZmluaXRlVGltZSgpOworICAgIGlmIChkb3VibGVUaW1lID4gbnVtZXJpY19saW1p
dHM8aW50NjRfdD46Om1heCgpKQorICAgICAgICByZXR1cm4gcG9zaXRpdmVJbmZpbml0ZVRpbWUo
KTsKKyAgICBpZiAoZG91YmxlVGltZSA8IG51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSkK
KyAgICAgICAgcmV0dXJuIG5lZ2F0aXZlSW5maW5pdGVUaW1lKCk7CisKKyAgICB3aGlsZSAoZG91
YmxlVGltZSAqIHRpbWVTY2FsZSA+IG51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKSkKKyAg
ICAgICAgdGltZVNjYWxlIC89IDI7CisgICAgcmV0dXJuIE1lZGlhVGltZShzdGF0aWNfY2FzdDxp
bnQ2NF90Pihkb3VibGVUaW1lICogdGltZVNjYWxlKSwgdGltZVNjYWxlLCBWYWxpZCk7Cit9CisK
K2Zsb2F0IE1lZGlhVGltZTo6dG9GbG9hdCgpIGNvbnN0Cit7CisgICAgaWYgKGlzSW52YWxpZCgp
IHx8IGlzSW5kZWZpbml0ZSgpKQorICAgICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxm
bG9hdD46OnF1aWV0X05hTigpOworICAgIGlmIChpc1Bvc2l0aXZlSW5maW5pdGUoKSkKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpOworICAgIGlm
IChpc05lZ2F0aXZlSW5maW5pdGUoKSkKKyAgICAgICAgcmV0dXJuIC1zdGQ6Om51bWVyaWNfbGlt
aXRzPGZsb2F0Pjo6aW5maW5pdHkoKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1f
dGltZVZhbHVlKSAvIG1fdGltZVNjYWxlOworfQorCitkb3VibGUgTWVkaWFUaW1lOjp0b0RvdWJs
ZSgpIGNvbnN0Cit7CisgICAgaWYgKGlzSW52YWxpZCgpIHx8IGlzSW5kZWZpbml0ZSgpKQorICAg
ICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKTsKKyAg
ICBpZiAoaXNQb3NpdGl2ZUluZmluaXRlKCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNf
bGltaXRzPGRvdWJsZT46OmluZmluaXR5KCk7CisgICAgaWYgKGlzTmVnYXRpdmVJbmZpbml0ZSgp
KQorICAgICAgICByZXR1cm4gLXN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHko
KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPihtX3RpbWVWYWx1ZSkgLyBtX3RpbWVT
Y2FsZTsKK30KKworTWVkaWFUaW1lJiBNZWRpYVRpbWU6Om9wZXJhdG9yPShjb25zdCBNZWRpYVRp
bWUmIHJocykKK3sKKyAgICBtX3RpbWVWYWx1ZSA9IHJocy5tX3RpbWVWYWx1ZTsKKyAgICBtX3Rp
bWVTY2FsZSA9IHJocy5tX3RpbWVTY2FsZTsKKyAgICBtX3RpbWVGbGFncyA9IHJocy5tX3RpbWVG
bGFnczsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK01lZGlhVGltZSBNZWRpYVRpbWU6Om9wZXJh
dG9yKyhjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3QKK3sKKyAgICBpZiAocmhzLmlzSW52YWxp
ZCgpIHx8IGlzSW52YWxpZCgpKQorICAgICAgICByZXR1cm4gaW52YWxpZFRpbWUoKTsKKworICAg
IGlmIChyaHMuaXNJbmRlZmluaXRlKCkgfHwgaXNJbmRlZmluaXRlKCkpCisgICAgICAgIHJldHVy
biBpbmRlZmluaXRlVGltZSgpOworCisgICAgaWYgKGlzUG9zaXRpdmVJbmZpbml0ZSgpKSB7Cisg
ICAgICAgIGlmIChyaHMuaXNOZWdhdGl2ZUluZmluaXRlKCkpCisgICAgICAgICAgICByZXR1cm4g
aW52YWxpZFRpbWUoKTsKKyAgICAgICAgcmV0dXJuIHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7Cisg
ICAgfQorCisgICAgaWYgKGlzTmVnYXRpdmVJbmZpbml0ZSgpKSB7CisgICAgICAgIGlmIChyaHMu
aXNQb3NpdGl2ZUluZmluaXRlKCkpCisgICAgICAgICAgICByZXR1cm4gaW52YWxpZFRpbWUoKTsK
KyAgICAgICAgcmV0dXJuIG5lZ2F0aXZlSW5maW5pdGVUaW1lKCk7CisgICAgfQorCisgICAgaW50
MzJfdCBjb21tb25UaW1lU2NhbGU7CisgICAgaWYgKCFsZWFzdENvbW1vbk11bHRpcGxlKHRoaXMt
Pm1fdGltZVNjYWxlLCByaHMubV90aW1lU2NhbGUsIGNvbW1vblRpbWVTY2FsZSkgfHwgY29tbW9u
VGltZVNjYWxlID4gTWF4aW11bVRpbWVTY2FsZSkKKyAgICAgICAgY29tbW9uVGltZVNjYWxlID0g
TWF4aW11bVRpbWVTY2FsZTsKKyAgICBNZWRpYVRpbWUgYSA9ICp0aGlzOworICAgIE1lZGlhVGlt
ZSBiID0gcmhzOworICAgIGEuc2V0VGltZVNjYWxlKGNvbW1vblRpbWVTY2FsZSk7CisgICAgYi5z
ZXRUaW1lU2NhbGUoY29tbW9uVGltZVNjYWxlKTsKKyAgICB3aGlsZSAoIXNhZmVBZGQoYS5tX3Rp
bWVWYWx1ZSwgYi5tX3RpbWVWYWx1ZSwgYS5tX3RpbWVWYWx1ZSkpIHsKKyAgICAgICAgaWYgKGNv
bW1vblRpbWVTY2FsZSA9PSAxKQorICAgICAgICAgICAgcmV0dXJuIGEubV90aW1lVmFsdWUgPiAw
ID8gcG9zaXRpdmVJbmZpbml0ZVRpbWUoKSA6IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCk7CisgICAg
ICAgIGNvbW1vblRpbWVTY2FsZSAvPSAyOworICAgICAgICBhLnNldFRpbWVTY2FsZShjb21tb25U
aW1lU2NhbGUpOworICAgICAgICBiLnNldFRpbWVTY2FsZShjb21tb25UaW1lU2NhbGUpOworICAg
IH0KKyAgICByZXR1cm4gYTsKK30KKworTWVkaWFUaW1lIE1lZGlhVGltZTo6b3BlcmF0b3ItKGNv
bnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdAoreworICAgIGlmIChyaHMuaXNJbnZhbGlkKCkgfHwg
aXNJbnZhbGlkKCkpCisgICAgICAgIHJldHVybiBpbnZhbGlkVGltZSgpOworCisgICAgaWYgKHJo
cy5pc0luZGVmaW5pdGUoKSB8fCBpc0luZGVmaW5pdGUoKSkKKyAgICAgICAgcmV0dXJuIGluZGVm
aW5pdGVUaW1lKCk7CisKKyAgICBpZiAoaXNQb3NpdGl2ZUluZmluaXRlKCkpIHsKKyAgICAgICAg
aWYgKHJocy5pc1Bvc2l0aXZlSW5maW5pdGUoKSkKKyAgICAgICAgICAgIHJldHVybiBpbnZhbGlk
VGltZSgpOworICAgICAgICByZXR1cm4gcG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKKyAgICB9CisK
KyAgICBpZiAoaXNOZWdhdGl2ZUluZmluaXRlKCkpIHsKKyAgICAgICAgaWYgKHJocy5pc05lZ2F0
aXZlSW5maW5pdGUoKSkKKyAgICAgICAgICAgIHJldHVybiBpbnZhbGlkVGltZSgpOworICAgICAg
ICByZXR1cm4gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKTsKKyAgICB9CisKKyAgICBpbnQzMl90IGNv
bW1vblRpbWVTY2FsZTsKKyAgICBpZiAoIWxlYXN0Q29tbW9uTXVsdGlwbGUodGhpcy0+bV90aW1l
U2NhbGUsIHJocy5tX3RpbWVTY2FsZSwgY29tbW9uVGltZVNjYWxlKSB8fCBjb21tb25UaW1lU2Nh
bGUgPiBNYXhpbXVtVGltZVNjYWxlKQorICAgICAgICBjb21tb25UaW1lU2NhbGUgPSBNYXhpbXVt
VGltZVNjYWxlOworICAgIE1lZGlhVGltZSBhID0gKnRoaXM7CisgICAgTWVkaWFUaW1lIGIgPSBy
aHM7CisgICAgYS5zZXRUaW1lU2NhbGUoY29tbW9uVGltZVNjYWxlKTsKKyAgICBiLnNldFRpbWVT
Y2FsZShjb21tb25UaW1lU2NhbGUpOworICAgIHdoaWxlICghc2FmZVN1YihhLm1fdGltZVZhbHVl
LCBiLm1fdGltZVZhbHVlLCBhLm1fdGltZVZhbHVlKSkgeworICAgICAgICBpZiAoY29tbW9uVGlt
ZVNjYWxlID09IDEpCisgICAgICAgICAgICByZXR1cm4gYS5tX3RpbWVWYWx1ZSA+IDAgPyBwb3Np
dGl2ZUluZmluaXRlVGltZSgpIDogbmVnYXRpdmVJbmZpbml0ZVRpbWUoKTsKKyAgICAgICAgY29t
bW9uVGltZVNjYWxlIC89IDI7CisgICAgICAgIGEuc2V0VGltZVNjYWxlKGNvbW1vblRpbWVTY2Fs
ZSk7CisgICAgICAgIGIuc2V0VGltZVNjYWxlKGNvbW1vblRpbWVTY2FsZSk7CisgICAgfQorICAg
IHJldHVybiBhOworfQorCitib29sIE1lZGlhVGltZTo6b3BlcmF0b3I8KGNvbnN0IE1lZGlhVGlt
ZSYgcmhzKSBjb25zdAoreworICAgIHJldHVybiBjb21wYXJlKHJocykgPT0gTGVzc1RoYW47Cit9
CisKK2Jvb2wgTWVkaWFUaW1lOjpvcGVyYXRvcj4oY29uc3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0
Cit7CisgICAgcmV0dXJuIGNvbXBhcmUocmhzKSA9PSBHcmVhdGVyVGhhbjsKK30KKworYm9vbCBN
ZWRpYVRpbWU6Om9wZXJhdG9yPT0oY29uc3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0Cit7CisgICAg
cmV0dXJuIGNvbXBhcmUocmhzKSA9PSBFcXVhbFRvOworfQorCitib29sIE1lZGlhVGltZTo6b3Bl
cmF0b3I+PShjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3QKK3sKKyAgICByZXR1cm4gY29tcGFy
ZShyaHMpID49IEVxdWFsVG87Cit9CisKK2Jvb2wgTWVkaWFUaW1lOjpvcGVyYXRvcjw9KGNvbnN0
IE1lZGlhVGltZSYgcmhzKSBjb25zdAoreworICAgIHJldHVybiBjb21wYXJlKHJocykgPD0gRXF1
YWxUbzsKK30KKworTWVkaWFUaW1lOjpDb21wYXJpc29uRmxhZ3MgTWVkaWFUaW1lOjpjb21wYXJl
KGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdAoreworICAgIGlmICgoaXNQb3NpdGl2ZUluZmlu
aXRlKCkgJiYgcmhzLmlzUG9zaXRpdmVJbmZpbml0ZSgpKQorICAgICAgICB8fCAoaXNOZWdhdGl2
ZUluZmluaXRlKCkgJiYgcmhzLmlzTmVnYXRpdmVJbmZpbml0ZSgpKQorICAgICAgICB8fCAoaXNJ
bnZhbGlkKCkgJiYgcmhzLmlzSW52YWxpZCgpKQorICAgICAgICB8fCAoaXNJbmRlZmluaXRlKCkg
JiYgcmhzLmlzSW5kZWZpbml0ZSgpKSkKKyAgICAgICAgcmV0dXJuIEVxdWFsVG87CisKKyAgICBp
ZiAoaXNJbnZhbGlkKCkpCisgICAgICAgIHJldHVybiBHcmVhdGVyVGhhbjsKKworICAgIGlmIChy
aHMuaXNJbnZhbGlkKCkpCisgICAgICAgIHJldHVybiBMZXNzVGhhbjsKKworICAgIGlmIChyaHMu
aXNOZWdhdGl2ZUluZmluaXRlKCkgfHwgaXNQb3NpdGl2ZUluZmluaXRlKCkpCisgICAgICAgIHJl
dHVybiBHcmVhdGVyVGhhbjsKKworICAgIGlmIChyaHMuaXNQb3NpdGl2ZUluZmluaXRlKCkgfHwg
aXNOZWdhdGl2ZUluZmluaXRlKCkpCisgICAgICAgIHJldHVybiBMZXNzVGhhbjsKKworICAgIGlm
IChpc0luZGVmaW5pdGUoKSkKKyAgICAgICAgcmV0dXJuIEdyZWF0ZXJUaGFuOworCisgICAgaWYg
KHJocy5pc0luZGVmaW5pdGUoKSkKKyAgICAgICAgcmV0dXJuIExlc3NUaGFuOworCisgICAgaW50
NjRfdCByaHNXaG9sZSA9IHJocy5tX3RpbWVWYWx1ZSAvIHJocy5tX3RpbWVTY2FsZTsKKyAgICBp
bnQ2NF90IGxoc1dob2xlID0gbV90aW1lVmFsdWUgLyBtX3RpbWVTY2FsZTsKKyAgICBpZiAobGhz
V2hvbGUgPiByaHNXaG9sZSkKKyAgICAgICAgcmV0dXJuIEdyZWF0ZXJUaGFuOworICAgIGlmIChs
aHNXaG9sZSA8IHJoc1dob2xlKQorICAgICAgICByZXR1cm4gTGVzc1RoYW47CisKKyAgICBpbnQ2
NF90IHJoc1JlbWFpbiA9IHJocy5tX3RpbWVWYWx1ZSAlIHJocy5tX3RpbWVTY2FsZTsKKyAgICBp
bnQ2NF90IGxoc1JlbWFpbiA9IG1fdGltZVZhbHVlICUgbV90aW1lU2NhbGU7CisgICAgaW50NjRf
dCBsaHNGYWN0b3IgPSBsaHNSZW1haW4gKiByaHMubV90aW1lU2NhbGU7CisgICAgaW50NjRfdCBy
aHNGYWN0b3IgPSByaHNSZW1haW4gKiBtX3RpbWVTY2FsZTsKKworICAgIGlmIChsaHNGYWN0b3Ig
PT0gcmhzRmFjdG9yKQorICAgICAgICByZXR1cm4gRXF1YWxUbzsKKyAgICByZXR1cm4gbGhzRmFj
dG9yID4gcmhzRmFjdG9yID8gR3JlYXRlclRoYW4gOiBMZXNzVGhhbjsKK30KKworY29uc3QgTWVk
aWFUaW1lJiBNZWRpYVRpbWU6Onplcm9UaW1lKCkKK3sKKyAgICBzdGF0aWMgY29uc3QgTWVkaWFU
aW1lKiB0aW1lID0gMDsKKyAgICBpZiAoIXRpbWUpCisgICAgICAgIHRpbWUgPSBuZXcgTWVkaWFU
aW1lKDAsIDEsIFZhbGlkKTsKKyAgICByZXR1cm4gKnRpbWU7Cit9CisKK2NvbnN0IE1lZGlhVGlt
ZSYgTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpCit7CisgICAgc3RhdGljIGNvbnN0IE1lZGlhVGlt
ZSogdGltZSA9IDA7CisgICAgaWYgKCF0aW1lKQorICAgICAgICB0aW1lID0gbmV3IE1lZGlhVGlt
ZSgtMSwgMSwgMCk7CisgICAgcmV0dXJuICp0aW1lOworfQorCitjb25zdCBNZWRpYVRpbWUmIE1l
ZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKQoreworICAgIHN0YXRpYyBjb25zdCBNZWRp
YVRpbWUqIHRpbWUgPSAwOworICAgIGlmICghdGltZSkKKyAgICAgICAgdGltZSA9IG5ldyBNZWRp
YVRpbWUoMCwgMSwgUG9zaXRpdmVJbmZpbml0ZSB8IFZhbGlkKTsKKyAgICByZXR1cm4gKnRpbWU7
Cit9CisKK2NvbnN0IE1lZGlhVGltZSYgTWVkaWFUaW1lOjpuZWdhdGl2ZUluZmluaXRlVGltZSgp
Cit7CisgICAgc3RhdGljIGNvbnN0IE1lZGlhVGltZSogdGltZSA9IDA7CisgICAgaWYgKCF0aW1l
KQorICAgICAgICB0aW1lID0gbmV3IE1lZGlhVGltZSgtMSwgMSwgTmVnYXRpdmVJbmZpbml0ZSB8
IFZhbGlkKTsKKyAgICByZXR1cm4gKnRpbWU7Cit9CisKK2NvbnN0IE1lZGlhVGltZSYgTWVkaWFU
aW1lOjppbmRlZmluaXRlVGltZSgpCit7CisgICAgc3RhdGljIGNvbnN0IE1lZGlhVGltZSogdGlt
ZSA9IDA7CisgICAgaWYgKCF0aW1lKQorICAgICAgICB0aW1lID0gbmV3IE1lZGlhVGltZSgwLCAx
LCBJbmRlZmluaXRlIHwgVmFsaWQpOworICAgIHJldHVybiAqdGltZTsKK30KKwordm9pZCBNZWRp
YVRpbWU6OnNldFRpbWVTY2FsZShpbnQzMl90IHRpbWVTY2FsZSkKK3sKKyAgICBpZiAodGltZVNj
YWxlID09IG1fdGltZVNjYWxlKQorICAgICAgICByZXR1cm47CisgICAgdGltZVNjYWxlID0gc3Rk
OjptaW4oTWF4aW11bVRpbWVTY2FsZSwgdGltZVNjYWxlKTsKKyAgICBpbnQ2NF90IHdob2xlUGFy
dCA9IG1fdGltZVZhbHVlIC8gbV90aW1lU2NhbGU7CisKKyAgICAvLyBJZiBzZXR0aW5nIHRoZSB0
aW1lIHNjYWxlIHdpbGwgY2F1c2UgYW4gb3ZlcmZsb3csIGRpdmlkZSB0aGUKKyAgICAvLyB0aW1l
c2NhbGUgYnkgdHdvIHVudGlsIHRoZSBudW1iZXIgd2lsbCBmaXQsIGFuZCByb3VuZCB0aGUKKyAg
ICAvLyByZXN1bHQuCisgICAgaW50NjRfdCBuZXdXaG9sZVBhcnQ7CisgICAgd2hpbGUgKCFzYWZl
TXVsdGlwbHkod2hvbGVQYXJ0LCB0aW1lU2NhbGUsIG5ld1dob2xlUGFydCkpCisgICAgICAgIHRp
bWVTY2FsZSAvPSAyOworCisgICAgaW50NjRfdCByZW1haW5kZXIgPSBtX3RpbWVWYWx1ZSAlIG1f
dGltZVNjYWxlOworICAgIG1fdGltZVZhbHVlID0gbmV3V2hvbGVQYXJ0ICsgKHJlbWFpbmRlciAq
IHRpbWVTY2FsZSkgLyBtX3RpbWVTY2FsZTsKKyAgICBtX3RpbWVTY2FsZSA9IHRpbWVTY2FsZTsK
K30KKworc3RhdGljIGludDMyX3Qgc2lnbnVtKGludDY0X3QgdmFsKQoreworICAgIHJldHVybiAo
MCA8IHZhbCkgLSAodmFsIDwgMCk7Cit9CisKK01lZGlhVGltZSBhYnMoY29uc3QgTWVkaWFUaW1l
JiByaHMpCit7CisgICAgaWYgKHJocy5pc0ludmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIE1lZGlh
VGltZTo6aW52YWxpZFRpbWUoKTsKKyAgICBpZiAocmhzLmlzTmVnYXRpdmVJbmZpbml0ZSgpIHx8
IHJocy5pc1Bvc2l0aXZlSW5maW5pdGUoKSkKKyAgICAgICAgcmV0dXJuIE1lZGlhVGltZTo6cG9z
aXRpdmVJbmZpbml0ZVRpbWUoKTsKKyAgICBNZWRpYVRpbWUgdmFsID0gcmhzOworICAgIHZhbC5t
X3RpbWVWYWx1ZSAqPSBzaWdudW0ocmhzLm1fdGltZVNjYWxlKSAqIHNpZ251bShyaHMubV90aW1l
VmFsdWUpOworICAgIHJldHVybiB2YWw7Cit9CisKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvTWVkaWFUaW1lLmggYi9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRpbWUuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40MzBkM2Y1YjJlOWE1NzgwOTQwOTkxMjM3MDdkNWI1YzlkNTUyNGZiCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dURi93dGYvTWVkaWFUaW1lLmgKQEAgLTAsMCArMSwxMDYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4gCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4gCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRl
ciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAq
ICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uIAorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlIDxjbWF0aD4KKyNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8bWF0aC5oPgorI2lu
Y2x1ZGUgPHN0ZGludC5oPgorCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgV1RGX0VYUE9SVF9Q
UklWQVRFIE1lZGlhVGltZSB7CitwdWJsaWM6CisgICAgZW51bSB7CisgICAgICAgIFZhbGlkID0g
MSA8PCAwLAorICAgICAgICBIYXNCZWVuUm91bmRlZCA9IDEgPDwgMSwKKyAgICAgICAgUG9zaXRp
dmVJbmZpbml0ZSA9IDEgPDwgMiwKKyAgICAgICAgTmVnYXRpdmVJbmZpbml0ZSA9IDEgPDwgMywK
KyAgICAgICAgSW5kZWZpbml0ZSA9IDEgPDwgNCwKKyAgICB9OworCisgICAgTWVkaWFUaW1lKCk7
CisgICAgTWVkaWFUaW1lKGludDY0X3QgdmFsdWUsIGludDMyX3Qgc2NhbGUgPSBEZWZhdWx0VGlt
ZVNjYWxlLCB1aW50MzJfdCBmbGFncyA9IFZhbGlkKTsKKyAgICBNZWRpYVRpbWUoY29uc3QgTWVk
aWFUaW1lJiByaHMpOworICAgIH5NZWRpYVRpbWUoKTsKKworICAgIHN0YXRpYyBNZWRpYVRpbWUg
Y3JlYXRlV2l0aEZsb2F0KGZsb2F0IGZsb2F0VGltZSwgaW50MzJfdCB0aW1lU2NhbGUgPSBEZWZh
dWx0VGltZVNjYWxlKTsKKyAgICBzdGF0aWMgTWVkaWFUaW1lIGNyZWF0ZVdpdGhEb3VibGUoZG91
YmxlIGRvdWJsZVRpbWUsIGludDMyX3QgdGltZVNjYWxlID0gRGVmYXVsdFRpbWVTY2FsZSk7CisK
KyAgICBmbG9hdCB0b0Zsb2F0KCkgY29uc3Q7CisgICAgZG91YmxlIHRvRG91YmxlKCkgY29uc3Q7
CisKKyAgICBNZWRpYVRpbWUmIG9wZXJhdG9yPShjb25zdCBNZWRpYVRpbWUmIHJocyk7CisgICAg
TWVkaWFUaW1lIG9wZXJhdG9yKyhjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3Q7CisgICAgTWVk
aWFUaW1lIG9wZXJhdG9yLShjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3Q7CisgICAgYm9vbCBv
cGVyYXRvcjwoY29uc3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3I+
KGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
TWVkaWFUaW1lJiByaHMpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3I+PShjb25zdCBNZWRpYVRp
bWUmIHJocykgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IE1lZGlhVGltZSYgcmhz
KSBjb25zdDsKKworICAgIHR5cGVkZWYgZW51bSB7CisgICAgICAgIExlc3NUaGFuID0gLTEsCisg
ICAgICAgIEVxdWFsVG8gPSAwLAorICAgICAgICBHcmVhdGVyVGhhbiA9IDEsCisgICAgfSBDb21w
YXJpc29uRmxhZ3M7CisKKyAgICBDb21wYXJpc29uRmxhZ3MgY29tcGFyZShjb25zdCBNZWRpYVRp
bWUmIHJocykgY29uc3Q7CisKKyAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX3Rp
bWVGbGFncyAmIFZhbGlkOyB9CisgICAgYm9vbCBpc0ludmFsaWQoKSBjb25zdCB7IHJldHVybiAh
aXNWYWxpZCgpOyB9CisgICAgYm9vbCBoYXNCZWVuUm91bmRlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
dGltZUZsYWdzICYgSGFzQmVlblJvdW5kZWQ7IH0KKyAgICBib29sIGlzUG9zaXRpdmVJbmZpbml0
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZUZsYWdzICYgUG9zaXRpdmVJbmZpbml0ZTsgfQorICAg
IGJvb2wgaXNOZWdhdGl2ZUluZmluaXRlKCkgY29uc3QgeyByZXR1cm4gbV90aW1lRmxhZ3MgJiBO
ZWdhdGl2ZUluZmluaXRlOyB9CisgICAgYm9vbCBpc0luZGVmaW5pdGUoKSBjb25zdCB7IHJldHVy
biBtX3RpbWVGbGFncyAmIEluZGVmaW5pdGU7IH0KKworICAgIHN0YXRpYyBjb25zdCBNZWRpYVRp
bWUmIHplcm9UaW1lKCk7CisgICAgc3RhdGljIGNvbnN0IE1lZGlhVGltZSYgaW52YWxpZFRpbWUo
KTsKKyAgICBzdGF0aWMgY29uc3QgTWVkaWFUaW1lJiBwb3NpdGl2ZUluZmluaXRlVGltZSgpOwor
ICAgIHN0YXRpYyBjb25zdCBNZWRpYVRpbWUmIG5lZ2F0aXZlSW5maW5pdGVUaW1lKCk7CisgICAg
c3RhdGljIGNvbnN0IE1lZGlhVGltZSYgaW5kZWZpbml0ZVRpbWUoKTsKKworICAgIGNvbnN0IGlu
dDY0X3QmIHRpbWVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZVZhbHVlOyB9CisgICAgY29u
c3QgaW50MzJfdCYgdGltZVNjYWxlKCkgY29uc3QgeyByZXR1cm4gbV90aW1lU2NhbGU7IH0KKwor
ICAgIGZyaWVuZCBNZWRpYVRpbWUgYWJzKGNvbnN0IE1lZGlhVGltZSYgcmhzKTsKK3ByaXZhdGU6
CisgICAgc3RhdGljIGNvbnN0IGludDMyX3QgRGVmYXVsdFRpbWVTY2FsZSA9IDYwMDA7CisgICAg
c3RhdGljIGNvbnN0IGludDMyX3QgTWF4aW11bVRpbWVTY2FsZTsKKworICAgIHZvaWQgc2V0VGlt
ZVNjYWxlKGludDMyX3QpOworCisgICAgaW50NjRfdCBtX3RpbWVWYWx1ZTsKKyAgICBpbnQzMl90
IG1fdGltZVNjYWxlOworICAgIHVpbnQzMl90IG1fdGltZUZsYWdzOworfTsKKworV1RGX0VYUE9S
VF9QUklWQVRFIGV4dGVybiBNZWRpYVRpbWUgYWJzKGNvbnN0IE1lZGlhVGltZSYgcmhzKTsKK30K
KwordXNpbmcgV1RGOjpNZWRpYVRpbWU7Cit1c2luZyBXVEY6OmFiczsKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlNjA1ZjhiZGYxYjYyODM3MmIz
ZjUyNTAyYTZjYTJhZTA3MDFlMGJiLi4yMDM1NjE3ODdjODZhNTBjODQ2ZDI5MWZkOTBiZDZjMGM2
ZjZmMzY3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDYtMTEgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBs
ZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBhIHJhdGlvbmFsIHRpbWUgY2xhc3MgZm9yIHVzZSBi
eSBtZWRpYSBlbGVtZW50cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTg4Nzg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0dOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS5neXBpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL01lZGlhVGltZS5jcHA6IEFkZGVkLgorICAgICAgICAoV1RGKToKKyAg
ICAgICAgKFdURjo6b3BlcmF0b3I8PCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJKToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDEyLTA2LTExICBab2x0YW4gSG9ydmF0aCAg
PHpvbHRhbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF0gQWRkIGNvbmZpZyB0ZXN0cyBmb3Ig
V0VCUCBpbWFnZWRlY29kZXIgbGlicmFyeSwgbW9kaWZ5IEhBVkUoZGVjb2RlcmxpYnJhcnkpIHRv
IFVTRSguLi4pCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0dOVW1ha2VmaWxlLmFt
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9HTlVtYWtlZmlsZS5hbQppbmRleCBmZjkyNDkyZjMwYTJk
N2JjNWZmNDg2MWE2MmVkODY3OTFhODAyNGRiLi5lMTRhZTAyYmRlYTIyOGUyMjk5MjYxYmNjNzgz
YTk0MjRlMjQxZDIwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0dOVW1ha2VmaWxl
LmFtCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvR05VbWFrZWZpbGUuYW0KQEAgLTIxNyw2ICsy
MTcsMTIgQEAgUHJvZ3JhbXNfVGVzdFdlYktpdEFQSV9XVEZfVGVzdEhhc2hNYXBfQ1BQRkxBR1Mg
PSAkKHRlc3R3ZWJraXRhcGlfd3RmX3Rlc3RzX2NwcGYKIFByb2dyYW1zX1Rlc3RXZWJLaXRBUElf
V1RGX1Rlc3RIYXNoTWFwX0xEQUREID0gJCh0ZXN0d2Via2l0YXBpX3d0Zl90ZXN0c19sZGFkZCkK
IFByb2dyYW1zX1Rlc3RXZWJLaXRBUElfV1RGX1Rlc3RIYXNoTWFwX0xERkxBR1MgPSAkKHRlc3R3
ZWJraXRhcGlfd3RmX3Rlc3RzX2xkZmxhZ3MpCiAKK1Byb2dyYW1zX1Rlc3RXZWJLaXRBUElfV1RG
X1Rlc3RNZWRpYVRpbWVfU09VUkNFUyA9IFwKKwlUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9NZWRpYVRpbWUuY3BwCitQcm9ncmFtc19UZXN0V2ViS2l0QVBJX1dURl9UZXN0TWVkaWFUaW1l
X0NQUEZMQUdTID0gJCh0ZXN0d2Via2l0YXBpX3dlYmtpdDJfdGVzdHNfY3BwZmxhZ3MpCitQcm9n
cmFtc19UZXN0V2ViS2l0QVBJX1dURl9UZXN0TWVkaWFUaW1lX0xEQUREID0gJCh0ZXN0d2Via2l0
YXBpX3dlYmtpdDJfdGVzdHNfbGRhZGQpCitQcm9ncmFtc19UZXN0V2ViS2l0QVBJX1dURl9UZXN0
TWVkaWFUaW1lX0xERkxBR1MgPSAkKHRlc3R3ZWJraXRhcGlfd2Via2l0Ml90ZXN0c19sZGZsYWdz
KQorCiBQcm9ncmFtc19UZXN0V2ViS2l0QVBJX1dURl9UZXN0UmVkQmxhY2tUcmVlX1NPVVJDRVMg
PSBcCiAJVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVkQmxhY2tUcmVlLmNwcAogUHJv
Z3JhbXNfVGVzdFdlYktpdEFQSV9XVEZfVGVzdFJlZEJsYWNrVHJlZV9DUFBGTEFHUyA9ICQodGVz
dHdlYmtpdGFwaV93dGZfdGVzdHNfY3BwZmxhZ3MpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkuZ3lwaSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS5neXBpCmluZGV4IGM1MTE4N2ZhMDYzNjBhMjkxNDgyMzc1YTMwNjE4NDE5NzE3YjZjZTcu
Ljk0MWU3NzZkNWY0ZDAxZTliMzkzN2NhOGNlNDdmOWRkNzdmNDVlZjcgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS5neXBpCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS5neXBpCkBAIC0zNCw2ICszNCw3IEBACiAgICAgICAgICAgICAn
VGVzdHMvV1RGL0NoZWNrZWRBcml0aG1ldGljT3BlcmF0aW9ucy5jcHAnLAogICAgICAgICAgICAg
J1Rlc3RzL1dURi9GdW5jdGlvbmFsLmNwcCcsCiAgICAgICAgICAgICAnVGVzdHMvV1RGL0hhc2hN
YXAuY3BwJywKKyAgICAgICAgICAgICdUZXN0cy9XVEYvTWVkaWFUaW1lLmNwcCcsCiAgICAgICAg
ICAgICAnVGVzdHMvV1RGL1JlZEJsYWNrVHJlZS5jcHAnLAogICAgICAgICAgICAgJ1Rlc3RzL1dU
Ri9TdHJpbmdCdWlsZGVyLmNwcCcsCiAgICAgICAgICAgICAnVGVzdHMvV1RGL1N0cmluZ09wZXJh
dG9ycy5jcHAnLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjNTE5YzAyMzE2ZTIxNWRkMGYy
N2ZjNzg2NjViOGRmZjNhNjZiNWNlLi5kZDM1ZWRmMzA5ODVjMDE5MGU5ZTFlMDg4NWJlM2JmZjQx
ODZiMTdhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQ0LDYgKzE0NCw3IEBACiAJCUM1
NDBGNzg0MTUyRTVBOUEwMEE0MEM4QyAvKiB2ZXJib3NlTWFya3VwLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzU0MEY3ODMxNTJFNUE3
ODAwQTQwQzhDIC8qIHZlcmJvc2VNYXJrdXAuaHRtbCAqLzsgfTsKIAkJRTEyMjBEQTAxNTVCMjU0
ODAwMTNFMkZDIC8qIE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRl
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEyMjBE
OUYxNTVCMjU0ODAwMTNFMkZDIC8qIE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9h
ZERlbGVnYXRlLm1tICovOyB9OwogCQlFMTIyMERDQTE1NUIyOEFBMDAxM0UyRkMgLyogTWVtb3J5
Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTIyMERDOTE1NUIyODdE
MDAxM0UyRkMgLyogTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUu
aHRtbCAqLzsgfTsKKwkJQ0Q1NDk3QjQxNTg1N0YwQzAwQjVCQzMwIC8qIE1lZGlhVGltZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDU0OTdCMzE1
ODU3RjBDMDBCNUJDMzAgLyogTWVkaWFUaW1lLmNwcCAqLzsgfTsKIAkJRTQ5MDI5NjgxNEUyRTNB
NDAwMkJFREQxIC8qIFR5cGluZ1N0eWxlQ3Jhc2gubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDkwMjk2NzE0RTJFM0E0MDAyQkVERDEgLyogVHlwaW5n
U3R5bGVDcmFzaC5tbSAqLzsgfTsKIAkJRjNGQzNFRTMxMzY3OEI3MzAwMTI2QTY1IC8qIGxpYmd0
ZXN0LmEgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
M0ZDM0VFMjEzNjc4QjczMDAxMjZBNjUgLyogbGliZ3Rlc3QuYSAqLzsgfTsKIAkJRjZGM0YyOTEx
MzM0MkZFQjAwQTZCRjE5IC8qIENvb2tpZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjZGM0YyOTAxMzM0MkZFQjAwQTZCRjE5IC8qIENv
b2tpZU1hbmFnZXIuY3BwICovOyB9OwpAQCAtMzYzLDYgKzM2NCw3IEBACiAJCUM1NDBGNzgzMTUy
RTVBNzgwMEE0MEM4QyAvKiB2ZXJib3NlTWFya3VwLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7
IHBhdGggPSB2ZXJib3NlTWFya3VwLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUxMjIwRDlGMTU1QjI1NDgwMDEzRTJGQyAvKiBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNv
dXJjZUxvYWREZWxlZ2F0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTIyMERDOTE1NUIyODdEMDAxM0UyRkMgLyogTWVt
b3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUuaHRtbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQuaHRtbDsgcGF0aCA9IE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERl
bGVnYXRlLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNENTQ5N0IzMTU4NTdG
MEMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gTWVkaWFUaW1lLmNwcDsgcGF0aCA9IFdURi9NZWRpYVRpbWUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFNDkwMjk2NzE0RTJFM0E0MDAyQkVERDEgLyogVHlwaW5n
U3R5bGVDcmFzaC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFR5
cGluZ1N0eWxlQ3Jhc2gubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUYzRkMzRUUy
MTM2NzhCNzMwMDEyNkE2NSAvKiBsaWJndGVzdC5hICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gYXJjaGl2ZS5hcjsgcGF0aCA9IGxpYmd0ZXN0LmE7IHNv
dXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCUY2RjNGMjkwMTMzNDJGRUIwMEE2
QkYxOSAvKiBDb29raWVNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENvb2tpZU1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
NTczLDYgKzU3NSw3IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQlCQzAyOUIxQTE0ODZCMjM4MDA4
MTdEQTkgLyogbnMgKi8sCiAJCQkJQzA5OTFDNEYxNDNDN0Q2ODAwNzk5OEYyIC8qIGNmICovLAor
CQkJCUNENTQ5N0IzMTU4NTdGMEMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuY3BwICovLAogCQkJCTBG
QzZDNENFMTQxMDM0QUQwMDVCN0YwQyAvKiBNZXRhQWxsb2NhdG9yLmNwcCAqLywKIAkJCQkwRkM2
QzRDQjE0MTAyN0UwMDA1QjdGMEMgLyogUmVkQmxhY2tUcmVlLmNwcCAqLywKIAkJCQlBN0E5NjZE
QTE0MEVDQ0M4MDA1RUY5QjQgLyogQ2hlY2tlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNwcCAqLywK
QEAgLTg4Myw2ICs4ODYsNyBAQAogCQkJCUUxMjIwREEwMTU1QjI1NDgwMDEzRTJGQyAvKiBNZW1v
cnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICov
LAogCQkJCUY2RjQ5QzY5MTU1NDVDOEUwMDA3RjM5RCAvKiBET01XaW5kb3dFeHRlbnNpb25Ob0Nh
Y2hlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRTkzMDE3MTU2QjEzRTEwMDRDOTlERiAvKiBX
S1BhZ2VHZXRTY2FsZUZhY3Rvck5vdFplcm8uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0Q1NDk3
QjQxNTg1N0YwQzAwQjVCQzMwIC8qIE1lZGlhVGltZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL01lZGlhVGltZS5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9NZWRpYVRpbWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU4ZmJi
MjMzZDI0NjI3NjYxNzBiYjIzZTA3ODE4ZWNlYmZkZmU2YzMKLS0tIC9kZXYvbnVsbAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9NZWRpYVRpbWUuY3BwCkBAIC0wLDAgKzEsMTY2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxl
IENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAor
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CisK
K3VzaW5nIG5hbWVzcGFjZSBzdGQ7CisKK25hbWVzcGFjZSBXVEYgeworCitzdGQ6Om9zdHJlYW0m
IG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvdXQsIGNvbnN0IE1lZGlhVGltZSYgdmFsKQorewor
ICAgIG91dCA8PCAieyAiOworICAgIGlmICh2YWwuaXNJbnZhbGlkKCkpCisgICAgICAgIG91dCA8
PCAiaW52YWxpZCI7CisgICAgZWxzZSBpZiAodmFsLmlzUG9zaXRpdmVJbmZpbml0ZSgpKQorICAg
ICAgICBvdXQgPDwgIitpbmZpbml0ZSI7CisgICAgZWxzZSBpZiAodmFsLmlzTmVnYXRpdmVJbmZp
bml0ZSgpKQorICAgICAgICBvdXQgPDwgIi1pbmZpbml0ZSI7CisgICAgZWxzZQorICAgICAgICBv
dXQgPDwgInZhbHVlOiAiIDw8IHZhbC50aW1lVmFsdWUoKSA8PCAiLCBzY2FsZTogIiA8PCB2YWwu
dGltZVNjYWxlKCk7CisgICAgcmV0dXJuIG91dCA8PCAiIH0iOworfQorCit9CisKK25hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJIHsKKworVEVTVChXVEYsIE1lZGlhVGltZSkKK3sKKyAgICAvLyBDb21w
YXJpc29uIE9wZXJhdG9ycworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5p
dGVUaW1lKCkgPiBNZWRpYVRpbWU6Om5lZ2F0aXZlSW5maW5pdGVUaW1lKCksIHRydWUpOworICAg
IEVYUEVDVF9FUShNZWRpYVRpbWU6Om5lZ2F0aXZlSW5maW5pdGVUaW1lKCkgPCBNZWRpYVRpbWU6
OnBvc2l0aXZlSW5maW5pdGVUaW1lKCksIHRydWUpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6
Om5lZ2F0aXZlSW5maW5pdGVUaW1lKCkgPT0gTWVkaWFUaW1lOjpuZWdhdGl2ZUluZmluaXRlVGlt
ZSgpLCB0cnVlKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGlt
ZSgpID09IE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKSwgdHJ1ZSk7CisgICAgRVhQ
RUNUX0VRKE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSA9PSBNZWRpYVRpbWU6OmludmFsaWRUaW1l
KCksIHRydWUpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OmludmFsaWRUaW1lKCkgPiBNZWRp
YVRpbWU6Om5lZ2F0aXZlSW5maW5pdGVUaW1lKCksIHRydWUpOworICAgIEVYUEVDVF9FUShNZWRp
YVRpbWU6OmludmFsaWRUaW1lKCkgPiBNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCks
IHRydWUpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6Om5lZ2F0aXZlSW5maW5pdGVUaW1lKCkg
PCBNZWRpYVRpbWU6OmludmFsaWRUaW1lKCksIHRydWUpOworICAgIEVYUEVDVF9FUShNZWRpYVRp
bWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCkgPCBNZWRpYVRpbWU6OmludmFsaWRUaW1lKCksIHRy
dWUpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OmluZGVmaW5pdGVUaW1lKCkgPT0gTWVkaWFU
aW1lOjppbmRlZmluaXRlVGltZSgpLCB0cnVlKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjpp
bmRlZmluaXRlVGltZSgpID4gTWVkaWFUaW1lOjpuZWdhdGl2ZUluZmluaXRlVGltZSgpLCB0cnVl
KTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjppbmRlZmluaXRlVGltZSgpIDwgTWVkaWFUaW1l
Ojpwb3NpdGl2ZUluZmluaXRlVGltZSgpLCB0cnVlKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1l
OjpuZWdhdGl2ZUluZmluaXRlVGltZSgpIDwgTWVkaWFUaW1lOjppbmRlZmluaXRlVGltZSgpLCB0
cnVlKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpID4g
TWVkaWFUaW1lOjppbmRlZmluaXRlVGltZSgpLCB0cnVlKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFU
aW1lKDEsIDEpIDwgTWVkaWFUaW1lOjppbmRlZmluaXRlVGltZSgpLCB0cnVlKTsKKyAgICBFWFBF
Q1RfRVEoTWVkaWFUaW1lOjppbmRlZmluaXRlVGltZSgpID4gTWVkaWFUaW1lKDEsIDEpLCB0cnVl
KTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDEsIDEpIDwgTWVkaWFUaW1lKDIsIDEpLCB0cnVl
KTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDIsIDEpID4gTWVkaWFUaW1lKDEsIDEpLCB0cnVl
KTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDIsIDEpID09IE1lZGlhVGltZSgyLCAxKSwgdHJ1
ZSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgyLCAxKSA9PSBNZWRpYVRpbWUoNCwgMiksIHRy
dWUpOworCisgICAgLy8gQWRkaXRpb24gT3BlcmF0b3JzCisgICAgRVhQRUNUX0VRKE1lZGlhVGlt
ZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKSArIE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRp
bWUoKSwgTWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpKTsKKyAgICBFWFBFQ1RfRVEo
TWVkaWFUaW1lOjpuZWdhdGl2ZUluZmluaXRlVGltZSgpICsgTWVkaWFUaW1lOjpuZWdhdGl2ZUlu
ZmluaXRlVGltZSgpLCBNZWRpYVRpbWU6Om5lZ2F0aXZlSW5maW5pdGVUaW1lKCkpOworICAgIEVY
UEVDVF9FUShNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCkgKyBNZWRpYVRpbWU6Om5l
Z2F0aXZlSW5maW5pdGVUaW1lKCksIE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSk7CisgICAgRVhQ
RUNUX0VRKE1lZGlhVGltZTo6bmVnYXRpdmVJbmZpbml0ZVRpbWUoKSArIE1lZGlhVGltZTo6cG9z
aXRpdmVJbmZpbml0ZVRpbWUoKSwgTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpKTsKKyAgICBFWFBF
Q1RfRVEoTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpICsgTWVkaWFUaW1lOjpwb3NpdGl2ZUluZmlu
aXRlVGltZSgpLCBNZWRpYVRpbWU6OmludmFsaWRUaW1lKCkpOworICAgIEVYUEVDVF9FUShNZWRp
YVRpbWU6OmludmFsaWRUaW1lKCkgKyBNZWRpYVRpbWU6Om5lZ2F0aXZlSW5maW5pdGVUaW1lKCks
IE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6aW52
YWxpZFRpbWUoKSArIE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSwgTWVkaWFUaW1lOjppbnZhbGlk
VGltZSgpKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpICsgTWVkaWFU
aW1lKDEsIDEpLCBNZWRpYVRpbWU6OmludmFsaWRUaW1lKCkpOworICAgIEVYUEVDVF9FUShNZWRp
YVRpbWU6OmluZGVmaW5pdGVUaW1lKCkgKyBNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1l
KCksIE1lZGlhVGltZTo6aW5kZWZpbml0ZVRpbWUoKSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGlt
ZTo6aW5kZWZpbml0ZVRpbWUoKSArIE1lZGlhVGltZTo6bmVnYXRpdmVJbmZpbml0ZVRpbWUoKSwg
TWVkaWFUaW1lOjppbmRlZmluaXRlVGltZSgpKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjpp
bmRlZmluaXRlVGltZSgpICsgTWVkaWFUaW1lOjppbmRlZmluaXRlVGltZSgpLCBNZWRpYVRpbWU6
OmluZGVmaW5pdGVUaW1lKCkpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OmluZGVmaW5pdGVU
aW1lKCkgKyBNZWRpYVRpbWUoMSwgMSksIE1lZGlhVGltZTo6aW5kZWZpbml0ZVRpbWUoKSk7Cisg
ICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxLCAxKSArIE1lZGlhVGltZSgxLCAxKSwgTWVkaWFUaW1l
KDIsIDEpKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDEsIDIpICsgTWVkaWFUaW1lKDEsIDMp
LCBNZWRpYVRpbWUoNSwgNikpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMSwgbnVtZXJpY19s
aW1pdHM8aW50MzJfdD46Om1heCgpLTEpICsgTWVkaWFUaW1lKDEsIG51bWVyaWNfbGltaXRzPGlu
dDMyX3Q+OjptYXgoKS0yKSwgTWVkaWFUaW1lKDIsIG51bWVyaWNfbGltaXRzPGludDMyX3Q+Ojpt
YXgoKSkpOworCisgICAgLy8gU3VidHJhY3Rpb24gT3BlcmF0b3JzCisgICAgRVhQRUNUX0VRKE1l
ZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKSAtIE1lZGlhVGltZTo6cG9zaXRpdmVJbmZp
bml0ZVRpbWUoKSwgTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpKTsKKyAgICBFWFBFQ1RfRVEoTWVk
aWFUaW1lOjpuZWdhdGl2ZUluZmluaXRlVGltZSgpIC0gTWVkaWFUaW1lOjpuZWdhdGl2ZUluZmlu
aXRlVGltZSgpLCBNZWRpYVRpbWU6OmludmFsaWRUaW1lKCkpOworICAgIEVYUEVDVF9FUShNZWRp
YVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCkgLSBNZWRpYVRpbWU6Om5lZ2F0aXZlSW5maW5p
dGVUaW1lKCksIE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKSk7CisgICAgRVhQRUNU
X0VRKE1lZGlhVGltZTo6bmVnYXRpdmVJbmZpbml0ZVRpbWUoKSAtIE1lZGlhVGltZTo6cG9zaXRp
dmVJbmZpbml0ZVRpbWUoKSwgTWVkaWFUaW1lOjpuZWdhdGl2ZUluZmluaXRlVGltZSgpKTsKKyAg
ICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpIC0gTWVkaWFUaW1lOjpwb3NpdGl2
ZUluZmluaXRlVGltZSgpLCBNZWRpYVRpbWU6OmludmFsaWRUaW1lKCkpOworICAgIEVYUEVDVF9F
UShNZWRpYVRpbWU6OmludmFsaWRUaW1lKCkgLSBNZWRpYVRpbWU6Om5lZ2F0aXZlSW5maW5pdGVU
aW1lKCksIE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGlt
ZTo6aW52YWxpZFRpbWUoKSAtIE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSwgTWVkaWFUaW1lOjpp
bnZhbGlkVGltZSgpKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpIC0g
TWVkaWFUaW1lKDEsIDEpLCBNZWRpYVRpbWU6OmludmFsaWRUaW1lKCkpOworICAgIEVYUEVDVF9F
UShNZWRpYVRpbWU6OmluZGVmaW5pdGVUaW1lKCkgLSBNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5p
dGVUaW1lKCksIE1lZGlhVGltZTo6aW5kZWZpbml0ZVRpbWUoKSk7CisgICAgRVhQRUNUX0VRKE1l
ZGlhVGltZTo6aW5kZWZpbml0ZVRpbWUoKSAtIE1lZGlhVGltZTo6bmVnYXRpdmVJbmZpbml0ZVRp
bWUoKSwgTWVkaWFUaW1lOjppbmRlZmluaXRlVGltZSgpKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFU
aW1lOjppbmRlZmluaXRlVGltZSgpIC0gTWVkaWFUaW1lOjppbmRlZmluaXRlVGltZSgpLCBNZWRp
YVRpbWU6OmluZGVmaW5pdGVUaW1lKCkpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OmluZGVm
aW5pdGVUaW1lKCkgLSBNZWRpYVRpbWUoMSwgMSksIE1lZGlhVGltZTo6aW5kZWZpbml0ZVRpbWUo
KSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgzLCAxKSAtIE1lZGlhVGltZSgyLCAxKSwgTWVk
aWFUaW1lKDEsIDEpKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDEsIDIpIC0gTWVkaWFUaW1l
KDEsIDMpLCBNZWRpYVRpbWUoMSwgNikpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMiwgbnVt
ZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpLTEpIC0gTWVkaWFUaW1lKDEsIG51bWVyaWNfbGlt
aXRzPGludDMyX3Q+OjptYXgoKS0yKSwgTWVkaWFUaW1lKDEsIG51bWVyaWNfbGltaXRzPGludDMy
X3Q+OjptYXgoKSkpOworCisgICAgLy8gQ29uc3RhbnRzCisgICAgRVhQRUNUX0VRKE1lZGlhVGlt
ZTo6emVyb1RpbWUoKSwgTWVkaWFUaW1lKDAsIDEpKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1l
OjppbnZhbGlkVGltZSgpLCBNZWRpYVRpbWUoLTEsIDEsIDApKTsKKyAgICBFWFBFQ1RfRVEoTWVk
aWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpLCBNZWRpYVRpbWUoMCwgMSwgTWVkaWFUaW1l
OjpQb3NpdGl2ZUluZmluaXRlKSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6bmVnYXRpdmVJ
bmZpbml0ZVRpbWUoKSwgTWVkaWFUaW1lKDAsIDEsIE1lZGlhVGltZTo6TmVnYXRpdmVJbmZpbml0
ZSkpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OmluZGVmaW5pdGVUaW1lKCksIE1lZGlhVGlt
ZSgwLCAxLCBNZWRpYVRpbWU6OkluZGVmaW5pdGUpKTsKKworICAgIC8vIEFic29sdXRlIEZ1bmN0
aW9ucworICAgIEVYUEVDVF9FUShhYnMoTWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgp
KSwgTWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpKTsKKyAgICBFWFBFQ1RfRVEoYWJz
KE1lZGlhVGltZTo6bmVnYXRpdmVJbmZpbml0ZVRpbWUoKSksIE1lZGlhVGltZTo6cG9zaXRpdmVJ
bmZpbml0ZVRpbWUoKSk7CisgICAgRVhQRUNUX0VRKGFicyhNZWRpYVRpbWU6OmludmFsaWRUaW1l
KCkpLCBNZWRpYVRpbWU6OmludmFsaWRUaW1lKCkpOworICAgIEVYUEVDVF9FUShhYnMoTWVkaWFU
aW1lKDEsIDEpKSwgTWVkaWFUaW1lKDEsIDEpKTsKKyAgICBFWFBFQ1RfRVEoYWJzKE1lZGlhVGlt
ZSgtMSwgMSkpLCBNZWRpYVRpbWUoMSwgMSkpOworICAgIEVYUEVDVF9FUShhYnMoTWVkaWFUaW1l
KC0xLCAtMSkpLCBNZWRpYVRpbWUoLTEsIC0xKSk7CisgICAgRVhQRUNUX0VRKGFicyhNZWRpYVRp
bWUoMSwgLTEpKSwgTWVkaWFUaW1lKC0xLCAtMSkpOworCisgICAgLy8gRmxvYXRpbmcgUG9pbnQg
RnVuY3Rpb25zCisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6Y3JlYXRlV2l0aEZsb2F0KDEuMGYp
LCBNZWRpYVRpbWUoMSwgMSkpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OmNyZWF0ZVdpdGhG
bG9hdCgxLjVmKSwgTWVkaWFUaW1lKDMsIDIpKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjpj
cmVhdGVXaXRoRG91YmxlKDEuMCksIE1lZGlhVGltZSgxLCAxKSk7CisgICAgRVhQRUNUX0VRKE1l
ZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZSgxLjUpLCBNZWRpYVRpbWUoMywgMikpOworICAgIEVY
UEVDVF9FUShNZWRpYVRpbWUoMSwgMSkudG9GbG9hdCgpLCAxLjBmKTsKKyAgICBFWFBFQ1RfRVEo
TWVkaWFUaW1lKDMsIDIpLnRvRmxvYXQoKSwgMS41Zik7CisgICAgRVhQRUNUX0VRKE1lZGlhVGlt
ZSgxLCAxKS50b0RvdWJsZSgpLCAxLjApOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMywgMiku
dG9Eb3VibGUoKSwgMS41KTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDEsIDEgPDwgMTYpLnRv
RmxvYXQoKSwgMSAvIHBvdygyLjBmLCAxNi4wZikpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUo
MSwgMSA8PCAzMCkudG9Eb3VibGUoKSwgMSAvIHBvdygyLjAsIDMwLjApKTsKKyAgICBFWFBFQ1Rf
RVEoTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKE1fUEksIDEgPDwgMzApLCBNZWRpYVRpbWUo
MzM3MzI1OTQyNiwgMSA8PCAzMCkpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OmNyZWF0ZVdp
dGhGbG9hdChJTkZJTklUWSksIE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKSk7Cisg
ICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6Y3JlYXRlV2l0aEZsb2F0KC1JTkZJTklUWSksIE1lZGlh
VGltZTo6bmVnYXRpdmVJbmZpbml0ZVRpbWUoKSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6
Y3JlYXRlV2l0aEZsb2F0KE5BTiksIE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSk7CisgICAgRVhQ
RUNUX0VRKE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShJTkZJTklUWSksIE1lZGlhVGltZTo6
cG9zaXRpdmVJbmZpbml0ZVRpbWUoKSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6Y3JlYXRl
V2l0aERvdWJsZSgtSU5GSU5JVFkpLCBNZWRpYVRpbWU6Om5lZ2F0aXZlSW5maW5pdGVUaW1lKCkp
OworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoTkFOKSwgTWVkaWFU
aW1lOjppbnZhbGlkVGltZSgpKTsKKworICAgIC8vIE92ZXJmbG93IEJlaGF2aW9yCisgICAgRVhQ
RUNUX0VRKE1lZGlhVGltZTo6Y3JlYXRlV2l0aEZsb2F0KHBvdygyLjBmLCA2NC4wZikpLCBNZWRp
YVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCkpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6
OmNyZWF0ZVdpdGhGbG9hdCgtcG93KDIuMGYsIDY0LjBmKSksIE1lZGlhVGltZTo6bmVnYXRpdmVJ
bmZpbml0ZVRpbWUoKSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6Y3JlYXRlV2l0aEZsb2F0
KHBvdygyLjBmLCA2My4wZiksIDIpLnRpbWVTY2FsZSgpLCAxKTsKKyAgICBFWFBFQ1RfRVEoTWVk
aWFUaW1lOjpjcmVhdGVXaXRoRmxvYXQocG93KDIuMGYsIDYzLjBmKSwgMykudGltZVNjYWxlKCks
IDEpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUocG93KDIuMCwg
NjQuMCkpLCBNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCkpOworICAgIEVYUEVDVF9F
UShNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoLXBvdygyLjAsIDY0LjApKSwgTWVkaWFUaW1l
OjpuZWdhdGl2ZUluZmluaXRlVGltZSgpKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjpjcmVh
dGVXaXRoRG91YmxlKHBvdygyLjAsIDYzLjApLCAyKS50aW1lU2NhbGUoKSwgMSk7CisgICAgRVhQ
RUNUX0VRKE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShwb3coMi4wLCA2My4wKSwgMykudGlt
ZVNjYWxlKCksIDEpOworICAgIEVYUEVDVF9FUSgoTWVkaWFUaW1lKG51bWVyaWNfbGltaXRzPGlu
dDY0X3Q+OjptYXgoKSwgMikgKyBNZWRpYVRpbWUobnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1h
eCgpLCAyKSkudGltZVNjYWxlKCksIDEpOworICAgIEVYUEVDVF9FUSgoTWVkaWFUaW1lKG51bWVy
aWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSwgMikgLSBNZWRpYVRpbWUobnVtZXJpY19saW1pdHM8
aW50NjRfdD46Om1heCgpLCAyKSkudGltZVNjYWxlKCksIDEpOworICAgIEVYUEVDVF9FUShNZWRp
YVRpbWUobnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgpLCAxKSArIE1lZGlhVGltZShudW1l
cmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCksIDEpLCBNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5p
dGVUaW1lKCkpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUobnVtZXJpY19saW1pdHM8aW50NjRf
dD46Om1pbigpLCAxKSArIE1lZGlhVGltZShudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWluKCks
IDEpLCBNZWRpYVRpbWU6Om5lZ2F0aXZlSW5maW5pdGVUaW1lKCkpOworICAgIEVYUEVDVF9FUShN
ZWRpYVRpbWUobnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1pbigpLCAxKSAtIE1lZGlhVGltZShu
dW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCksIDEpLCBNZWRpYVRpbWU6Om5lZ2F0aXZlSW5m
aW5pdGVUaW1lKCkpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUobnVtZXJpY19saW1pdHM8aW50
NjRfdD46Om1heCgpLCAxKSAtIE1lZGlhVGltZShudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWlu
KCksIDEpLCBNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCkpOworfQorCit9CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146881</attachid>
            <date>2012-06-11 11:23:59 -0700</date>
            <delta_ts>2012-06-11 11:43:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88787-20120611112358.patch</filename>
            <type>text/plain</type>
            <size>44120</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5OTgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
M2M1MDAxMTliNjEyMjEwY2FhYWM2MzUwYWZhZTg1MmE5YWZmNWJiLi4wYWJkZDE3MmQ2YjkzMzZj
NzZlNGI3ZWI5M2Q5YjU3M2RlN2EwNTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxMi0wNi0xMSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4K
KworICAgICAgICBTdXBwb3J0IGEgcmF0aW9uYWwgdGltZSBjbGFzcyBmb3IgdXNlIGJ5IG1lZGlh
IGVsZW1lbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODg3ODcKKworICAgICAgICBSZS1leHBvcnQgV1RGOjpNZWRpYVRpbWUgZnJvbSBKYXZhU2Ny
aXB0Q29yZS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLm9yZGVyOgorCiAyMDEyLTA2LTExICBDYXJsb3MgR2FyY2lhIENh
bXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBGaXggbWFr
ZSBkaXN0Y2hlY2sgaXNzdWVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA0NTc0OGE0ODBiMDRiNDRmMWEyYTNlOGNhMWM1ZWFj
Yjg1ZmUwNTY5Li5iNGMxODQ0NTI0ZDE1YmRlN2Y4OTJlODdlNWY3NWQ4YTFiMDZjODEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDExNyBAQAorMjAxMi0wNi0xMSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxl
LmNvbT4KKworICAgICAgICBTdXBwb3J0IGEgcmF0aW9uYWwgdGltZSBjbGFzcyBmb3IgdXNlIGJ5
IG1lZGlhIGVsZW1lbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODg3ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgYSBuZXcgTWVkaWFUaW1lIGNsYXNzIHdoaWNoIGltcGxlbWVudHMgcmF0aW9u
YWwgbWF0aCBvcGVyYXRpb25zLgorCisgICAgICAgIEFkZCBjb21tb24gY29uc3RydWN0b3JzIGFu
ZCBhc3NpZ25tZW50IG9wZXJhdG9yczoKKyAgICAgICAgKiB3dGYvTWVkaWFUaW1lLmNwcDogQWRk
ZWQuCisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6TWVkaWFUaW1lKToKKyAgICAgICAgKFdURjo6
TWVkaWFUaW1lOjp+TWVkaWFUaW1lKToKKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpvcGVyYXRv
cj0pOgorCisgICAgICAgIEFkZCBjb21tb24gbWF0aCBvcGVyYXRvcnM6CisgICAgICAgICogd3Rm
L01lZGlhVGltZS5jcHA6CisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6b3BlcmF0b3IrKToKKyAg
ICAgICAgKFdURjo6TWVkaWFUaW1lOjpvcGVyYXRvci0pOgorICAgICAgICAoV1RGOjpNZWRpYVRp
bWU6Om9wZXJhdG9yPCk6CisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6b3BlcmF0b3I+KToKKyAg
ICAgICAgKFdURjo6TWVkaWFUaW1lOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdURjo6TWVkaWFU
aW1lOjpvcGVyYXRvcj49KToKKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpvcGVyYXRvcjw9KToK
KworICAgICAgICBBZGQgZnVuY3Rpb25zIHRvIGNoZWNrIHRoZSBNZWlhVGltZSB0aW1lIHR5cGUg
ZmxhZ3M6CisgICAgICAgICogd3RmL01lZGlhVGltZS5oOgorICAgICAgICAoV1RGOjpNZWRpYVRp
bWU6OmlzVmFsaWQpOgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6OmlzSW52YWxpZCk6CisgICAg
ICAgIChXVEY6Ok1lZGlhVGltZTo6aGFzQmVlblJvdW5kZSk6CisgICAgICAgIChXVEY6Ok1lZGlh
VGltZTo6aXNQb3NpdGl2ZUluZmluaXRlKToKKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjppc05l
Z2F0aXZlSW5maW5pdGUpOgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6OmlzSW5kZWZpbml0ZSk6
CisKKyAgICAgICAgQWRkIGNvbnN0YW50cyBmb3IgY29tbW9ubHkgdXNlZCBNZWRpYVRpbWUgdmFs
dWVzOgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6Onplcm9UaW1lKToKKyAgICAgICAgKFdURjo6
TWVkaWFUaW1lOjppbnZhbGlkVGltZSk6CisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6cG9zaXRp
dmVJbmZpbml0ZVRpbWUpOgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6Om5lZ2F0aXZlSW5maW5p
dGVUaW1lKToKKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjppbmRlZmluaXRlVGltZSk6CisKKyAg
ICAgICAgQWRkIGV4cGxpY2l0IGNvbnZlcnNpb24gZnVuY3Rpb25zIHRvIGNvbnZlcnQgdG8gYW5k
IGZyb20gZmxvYXRpbmcgcG9pbnQgdmFsdWVzLgorICAgICAgICAqIHd0Zi9NZWRpYVRpbWUuY3Bw
OgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6OmNyZWF0ZVdpdGhGbG9hdCk6CisgICAgICAgIChX
VEY6Ok1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZSk6CisgICAgICAgIChXVEY6Ok1lZGlhVGlt
ZTo6dG9GbG9hdCk6CisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6dG9Eb3VibGUpOgorCisgICAg
ICAgIEFkZCBzb21lIHVzZWZ1bCBleHBvcnRlZCBmdW5jdGlvbnM6CisgICAgICAgICogd3RmL01l
ZGlhVGltZS5jcHA6CisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6Y29tcGFyZSk6IE1hc3RlciBm
dW5jdGlvbiBmb3IgdGhlIGNvbXBhcmlzb24gb3BlcmF0b3JzIGFib3ZlLgorICAgICAgICAoV1RG
OjpNZWRpYVRpbWU6OnNldFRpbWVTY2FsZSk6IFJlc2NhbGUgdGhlIHRpbWUgdmFsdWUgdG8gYSBu
ZXcgdGltZSBzY2FsZS4KKyAgICAgICAgKFdURjo6YWJzKTogUmV0dXJuIGFuIGFic29sdXRlIHZh
bHVlIGZvciB0aGUgY3VycmVudCBNZWRpYVRpbWUuCisKKyAgICAgICAgU3RhdGljIHV0aWxpdHkg
ZnVuY3Rpb25zIHRvIGltcGxlbWVudCB0aGUgYWJvdmU6CisgICAgICAgICogd3RmL01lZGlhVGlt
ZS5jcHA6CisgICAgICAgIChXVEY6OmdyZWF0ZXN0Q29tbW9uRGl2aXNvcik6CisgICAgICAgIChX
VEY6OmxlYXN0Q29tbW9uTXVsdGlwbGUpOgorICAgICAgICAoV1RGOjpzaWdudW0pOgorCisgICAg
ICAgIEFkZCB0aGUgbmV3IGNsYXNzIHRvIHBsYXRmb3JtIGJ1aWxkIGZpbGVzOgorICAgICAgICAq
IEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV1RGLnBybzoKKyAgICAgICAgKiBXVEYu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworMjAxMi0wNi0xMSAgSmVyIE5vYmxlICA8amVy
Lm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IGEgcmF0aW9uYWwgdGltZSBjbGFz
cyBmb3IgdXNlIGJ5IG1lZGlhIGVsZW1lbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg3ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV1RG
LnBybzoKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiB3dGYvTWVkaWFUaW1lLmNwcDogQWRkZWQuCisgICAgICAgIChXVEYpOgorICAgICAgICAoV1RG
OjpncmVhdGVzdENvbW1vbkRpdmlzb3IpOgorICAgICAgICAoV1RGOjpsZWFzdENvbW1vbk11bHRp
cGxlKToKKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpNZWRpYVRpbWUpOgorICAgICAgICAoV1RG
OjpNZWRpYVRpbWU6On5NZWRpYVRpbWUpOgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6OmNyZWF0
ZVdpdGhGbG9hdCk6CisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZSk6
CisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6dG9GbG9hdCk6CisgICAgICAgIChXVEY6Ok1lZGlh
VGltZTo6dG9Eb3VibGUpOgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6Om9wZXJhdG9yPSk6Cisg
ICAgICAgIChXVEY6Ok1lZGlhVGltZTo6b3BlcmF0b3IrKToKKyAgICAgICAgKFdURjo6TWVkaWFU
aW1lOjpvcGVyYXRvci0pOgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6Om9wZXJhdG9yPCk6Cisg
ICAgICAgIChXVEY6Ok1lZGlhVGltZTo6b3BlcmF0b3I+KToKKyAgICAgICAgKFdURjo6TWVkaWFU
aW1lOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpvcGVyYXRvcj49KToK
KyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpvcGVyYXRvcjw9KToKKyAgICAgICAgKFdURjo6TWVk
aWFUaW1lOjpjb21wYXJlKToKKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjp6ZXJvVGltZSk6Cisg
ICAgICAgIChXVEY6Ok1lZGlhVGltZTo6aW52YWxpZFRpbWUpOgorICAgICAgICAoV1RGOjpNZWRp
YVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKToKKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpu
ZWdhdGl2ZUluZmluaXRlVGltZSk6CisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6aW5kZWZpbml0
ZVRpbWUpOgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6OnNldFRpbWVTY2FsZSk6CisgICAgICAg
IChXVEY6OnNpZ251bSk6CisgICAgICAgIChXVEY6OldURjo6YWJzKToKKyAgICAgICAgKiB3dGYv
TWVkaWFUaW1lLmg6IEFkZGVkLgorICAgICAgICAoV1RGKToKKyAgICAgICAgKE1lZGlhVGltZSk6
CisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6aXNWYWxpZCk6CisgICAgICAgIChXVEY6Ok1lZGlh
VGltZTo6aXNJbnZhbGlkKToKKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpoYXNCZWVuUm91bmRl
ZCk6CisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6aXNQb3NpdGl2ZUluZmluaXRlKToKKyAgICAg
ICAgKFdURjo6TWVkaWFUaW1lOjppc05lZ2F0aXZlSW5maW5pdGUpOgorICAgICAgICAoV1RGOjpN
ZWRpYVRpbWU6OmlzSW5kZWZpbml0ZSk6CisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6dGltZVZh
bHVlKToKKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjp0aW1lU2NhbGUpOgorCiAyMDEyLTA2LTEx
ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLiBGaXggbWFrZSBkaXN0Y2hlY2sgaXNzdWVzLgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLm9yZGVyIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLm9yZGVyCmluZGV4IDNhNDUwMDc1YTEzNDNlNTllN2IxZWRhMTFh
NWY3Y2Q4MDNjODY1YWEuLjA3NDJhMGEwZTJiNmRjZGQ4NGJlZjc4Y2JjMTZlN2VhYjg5OWE1MmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5vcmRlcgor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUub3JkZXIKQEAgLTI0OTQs
MyArMjQ5NCwxNiBAQCBfX1pOM1dURjZWZWN0b3JJTjNKU0MxMEFTVEJ1aWxkZXIxNEFzc2lnbm1l
bnRJbmZvRUxtMTBFRTE0ZXhwYW5kQ2FwYWNpdHlFbQogX2N0aV9vcF9wdXRfYnlfaWRfZGlyZWN0
X2dlbmVyaWMKIF9fWk4zV1RGOUhhc2hUYWJsZUlQTjNKU0MxNkZ1bmN0aW9uQm9keU5vZGVFU3Q0
cGFpcklTM19qRU5TXzE4UGFpckZpcnN0RXh0cmFjdG9ySVM1X0VFTlNfN1B0ckhhc2hJUzNfRUVO
U18xNFBhaXJIYXNoVHJhaXRzSU5TXzEwSGFzaFRyYWl0c0lTM19FRU5TQl9JakVFRUVTQ19FNGZp
bmRJUzNfTlNfMjJJZGVudGl0eUhhc2hUcmFuc2xhdG9ySVMzX1M1X1M5X0VFRUVOU18xN0hhc2hU
YWJsZUl0ZXJhdG9ySVMzX1M1X1M3X1M5X1NFX1NDX0VFUktUXwogX19aTjNXVEY5SGFzaFRhYmxl
SVBOM0pTQzE2RnVuY3Rpb25Cb2R5Tm9kZUVTdDRwYWlySVMzX2pFTlNfMThQYWlyRmlyc3RFeHRy
YWN0b3JJUzVfRUVOU183UHRySGFzaElTM19FRU5TXzE0UGFpckhhc2hUcmFpdHNJTlNfMTBIYXNo
VHJhaXRzSVMzX0VFTlNCX0lqRUVFRVNDX0U2ZXhwYW5kRXYKK19fWk4zV1RGM2Fic0VSS05TXzlN
ZWRpYVRpbWVFCitfX1pOM1dURjlNZWRpYVRpbWUxMWludmFsaWRUaW1lRXYKK19fWk4zV1RGOU1l
ZGlhVGltZTE0aW5kZWZpbml0ZVRpbWVFdgorX19aTjNXVEY5TWVkaWFUaW1lMTVjcmVhdGVXaXRo
RmxvYXRFZmkKK19fWk4zV1RGOU1lZGlhVGltZTE2Y3JlYXRlV2l0aERvdWJsZUVkaQorX19aTjNX
VEY5TWVkaWFUaW1lMjBuZWdhdGl2ZUluZmluaXRlVGltZUV2CitfX1pOM1dURjlNZWRpYVRpbWUy
MHBvc2l0aXZlSW5maW5pdGVUaW1lRXYKK19fWk4zV1RGOU1lZGlhVGltZUQxRXYKK19fWk5LM1dU
RjlNZWRpYVRpbWVndEVSS1MwXworX19aTkszV1RGOU1lZGlhVGltZWx0RVJLUzBfCitfX1pOSzNX
VEY5TWVkaWFUaW1lbWlFUktTMF8KK19fWk5LM1dURjlNZWRpYVRpbWVwbEVSS1MwXworCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV1RGL0dOVW1h
a2VmaWxlLmxpc3QuYW0KaW5kZXggM2RmYzFkYmQzYzg4NmZlNjhkY2FiMjI5OWY2MDljYjRjNjM2
NjE3OC4uNTZlMmZkZDBlYzhmODY0NmQwM2M2YmU0ZGRkNDczZjYyMDAxNDQxOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XVEYvR05VbWFr
ZWZpbGUubGlzdC5hbQpAQCAtNzUsNiArNzUsOCBAQCB3dGZfc291cmNlcyArPSBcCiAgICAgU291
cmNlL1dURi93dGYvTWFpblRocmVhZC5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9NYWxsb2Nab25l
U3VwcG9ydC5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9NYXRoRXh0cmFzLmggXAorICAgIFNvdXJj
ZS9XVEYvd3RmL01lZGlhVGltZS5oIFwKKyAgICBTb3VyY2UvV1RGL3d0Zi9NZWRpYVRpbWUuY3Bw
IFwKICAgICBTb3VyY2UvV1RGL3d0Zi9NZXNzYWdlUXVldWUuaCBcCiAgICAgU291cmNlL1dURi93
dGYvTWV0YUFsbG9jYXRvci5jcHAgXAogICAgIFNvdXJjZS9XVEYvd3RmL01ldGFBbGxvY2F0b3Iu
aCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi5wcm8gYi9Tb3VyY2UvV1RGL1dURi5wcm8K
aW5kZXggMzM4NDc3MGE4ZWQ3ZGZkMzk0NjM3ODFjZGE5ZTg5OGU5OGVkMWJhYS4uZjExNjI3YTAx
M2JiZWMyYzgxYzQxNjI1OWI3MTA3ZjQ5MTAxN2ZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9X
VEYucHJvCisrKyBiL1NvdXJjZS9XVEYvV1RGLnBybwpAQCAtNzYsNiArNzYsNyBAQCBIRUFERVJT
ICs9IFwKICAgICBNYWxsb2Nab25lU3VwcG9ydC5oIFwKICAgICBNYXRoRXh0cmFzLmggXAogICAg
IE1ENS5oIFwKKyAgICBNZWRpYVRpbWUuaCBcCiAgICAgTWVzc2FnZVF1ZXVlLmggXAogICAgIE1l
dGFBbGxvY2F0b3IuaCBcCiAgICAgTWV0YUFsbG9jYXRvckhhbmRsZS5oIFwKQEAgLTE4OSw2ICsx
OTAsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBIYXNoVGFibGUuY3BwIFwKICAgICBNRDUuY3BwIFwK
ICAgICBNYWluVGhyZWFkLmNwcCBcCisgICAgTWVkaWFUaW1lLmNwcCBcCiAgICAgTWV0YUFsbG9j
YXRvci5jcHAgXAogICAgIE51bGxQdHIuY3BwIFwKICAgICBOdW1iZXJPZkNvcmVzLmNwcCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiYTQ1NzY0M2ZiM2Jh
MWQ1MTZiM2VmOTExNjlhYWExYmM3MGE1NTdlLi5lYmVlYjQ5YzkzZWY3Y2QzZmM2ZjI0ZTkxYmY5
OTY4YThhOTM0MWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTI0MSw2ICsyNDEsOCBAQAogCQlBOEE0NzQ4NjE1MUE4MjVCMDA0MTIzRkYgLyogV1RGVGhy
ZWFkRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBOEE0NzM3QTE1MUE4MjVCMDA0MTIzRkYgLyogV1RGVGhyZWFkRGF0YS5jcHAgKi87IH07CiAJ
CUE4QTQ3NDg3MTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJlYWREYXRhLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzM3QjE1MUE4MjVCMDA0MTIz
RkYgLyogV1RGVGhyZWFkRGF0YS5oICovOyB9OwogCQlBOEE0NzQ4QzE1MUE4MjY0MDA0MTIzRkYg
LyogY29uZmlnLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBOEE0NzQ4QjE1MUE4MjY0MDA0MTIzRkYgLyogY29uZmlnLmggKi87IH07CisJCUNENTQ5N0FD
MTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q1NDk3QUExNTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlh
VGltZS5jcHAgKi87IH07CisJCUNENTQ5N0FEMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENTQ5N0FC
MTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuaCAqLzsgfTsKIC8qIEVuZCBQQlhCdWlsZEZp
bGUgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KQEAg
LTQ4OCw2ICs0OTAsOCBAQAogCQlBOEE0NzM3QTE1MUE4MjVCMDA0MTIzRkYgLyogV1RGVGhyZWFk
RGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXVEZUaHJlYWRE
YXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDczN0IxNTFBODI1QjAw
NDEyM0ZGIC8qIFdURlRocmVhZERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV1RGVGhyZWFkRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzQ4
QjE1MUE4MjY0MDA0MTIzRkYgLyogY29uZmlnLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IGNvbmZpZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDU0OTdBQTE1
ODU3RDAzMDBCNUJDMzAgLyogTWVkaWFUaW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IE1lZGlhVGltZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUNENTQ5N0FCMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFUaW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEZyYW1l
d29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KQEAgLTYyMyw2ICs2MjcsOCBAQAogCQkJCUE4QTQ3
MkM5MTUxQTgyNUIwMDQxMjNGRiAvKiBNYXRoRXh0cmFzLmggKi8sCiAJCQkJQThBNDcyQ0ExNTFB
ODI1QjAwNDEyM0ZGIC8qIE1ENS5jcHAgKi8sCiAJCQkJQThBNDcyQ0IxNTFBODI1QjAwNDEyM0ZG
IC8qIE1ENS5oICovLAorCQkJCUNENTQ5N0FBMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUu
Y3BwICovLAorCQkJCUNENTQ5N0FCMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuaCAqLywK
IAkJCQlBOEE0NzJDQzE1MUE4MjVCMDA0MTIzRkYgLyogTWVzc2FnZVF1ZXVlLmggKi8sCiAJCQkJ
QThBNDcyQ0QxNTFBODI1QjAwNDEyM0ZGIC8qIE1ldGFBbGxvY2F0b3IuY3BwICovLAogCQkJCUE4
QTQ3MkNFMTUxQTgyNUIwMDQxMjNGRiAvKiBNZXRhQWxsb2NhdG9yLmggKi8sCkBAIC05MzMsNiAr
OTM5LDcgQEAKIAkJCQlBOEE0NzNFNzE1MUE4MjVCMDA0MTIzRkYgLyogTWFsbG9jWm9uZVN1cHBv
cnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3M0U4MTUxQTgyNUIwMDQxMjNGRiAvKiBNYXRo
RXh0cmFzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzNFQTE1MUE4MjVCMDA0MTIzRkYgLyog
TUQ1LmggaW4gSGVhZGVycyAqLywKKwkJCQlDRDU0OTdBRDE1ODU3RDAzMDBCNUJDMzAgLyogTWVk
aWFUaW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzNFQjE1MUE4MjVCMDA0MTIzRkYgLyog
TWVzc2FnZVF1ZXVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzNFRDE1MUE4MjVCMDA0MTIz
RkYgLyogTWV0YUFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczRUUxNTFBODI1
QjAwNDEyM0ZGIC8qIE1ldGFBbGxvY2F0b3JIYW5kbGUuaCBpbiBIZWFkZXJzICovLApAQCAtMTE4
NCw2ICsxMTkxLDcgQEAKIAkJCQlBOEE0NzQ3QjE1MUE4MjVCMDA0MTIzRkYgLyogVVJMU2VnbWVu
dHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0ODYxNTFBODI1QjAwNDEyM0ZGIC8qIFdU
RlRocmVhZERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQzRjYxMUYxNTY1RjBGOTAwREI1
MTRBIC8qIFJBTVNpemUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0Q1NDk3QUMxNTg1N0QwMzAw
QjVCQzMwIC8qIE1lZGlhVGltZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL01lZGlhVGltZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRpbWUuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjE3NjllZmI2ZDIyNzBmY2ZkNzVjYmJjMmYxYjM1NzhlZjZmZjEwNGUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRpbWUuY3BwCkBAIC0wLDAgKzEsMzUx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxl
IENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAor
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWVkaWFUaW1lLmgiCisKKyNpbmNs
dWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CisKK3Vz
aW5nIG5hbWVzcGFjZSBzdGQ7CisKK25hbWVzcGFjZSBXVEYgeworCitzdGF0aWMgaW50MzJfdCBn
cmVhdGVzdENvbW1vbkRpdmlzb3IoaW50MzJfdCBhLCBpbnQzMl90IGIpCit7CisgICAgLy8gRXVj
bGlkJ3MgQWxnb3JpdGhtCisgICAgaW50MzJfdCB0ZW1wID0gMDsKKyAgICB3aGlsZSAoYikgewor
ICAgICAgICB0ZW1wID0gYjsKKyAgICAgICAgYiA9IGEgJSBiOworICAgICAgICBhID0gdGVtcDsK
KyAgICB9CisgICAgcmV0dXJuIGE7Cit9CisKK3N0YXRpYyBpbnQzMl90IGxlYXN0Q29tbW9uTXVs
dGlwbGUoaW50MzJfdCBhLCBpbnQzMl90IGIsIGludDMyX3QgJnJlc3VsdCkKK3sKKyAgICByZXR1
cm4gc2FmZU11bHRpcGx5KGEsIGIgLyBncmVhdGVzdENvbW1vbkRpdmlzb3IoYSwgYiksIHJlc3Vs
dCk7Cit9CisKK2NvbnN0IGludDMyX3QgTWVkaWFUaW1lOjpNYXhpbXVtVGltZVNjYWxlID0gMHg3
ZmZmZmZmZkw7CisKK01lZGlhVGltZTo6TWVkaWFUaW1lKCkKKyAgICA6IG1fdGltZVZhbHVlKDAp
CisgICAgLCBtX3RpbWVTY2FsZShEZWZhdWx0VGltZVNjYWxlKQorICAgICwgbV90aW1lRmxhZ3Mo
VmFsaWQpCit7Cit9CisKK01lZGlhVGltZTo6TWVkaWFUaW1lKGludDY0X3QgdmFsdWUsIGludDMy
X3Qgc2NhbGUsIHVpbnQzMl90IGZsYWdzKQorICAgIDogbV90aW1lVmFsdWUodmFsdWUpCisgICAg
LCBtX3RpbWVTY2FsZShzY2FsZSkKKyAgICAsIG1fdGltZUZsYWdzKGZsYWdzKQoreworfQorCitN
ZWRpYVRpbWU6On5NZWRpYVRpbWUoKQoreworfQorCitNZWRpYVRpbWU6Ok1lZGlhVGltZShjb25z
dCBNZWRpYVRpbWUmIHJocykKK3sKKyAgICAqdGhpcyA9IHJoczsKK30KKworTWVkaWFUaW1lIE1l
ZGlhVGltZTo6Y3JlYXRlV2l0aEZsb2F0KGZsb2F0IGZsb2F0VGltZSwgaW50MzJfdCB0aW1lU2Nh
bGUpCit7CisgICAgaWYgKGZsb2F0VGltZSAhPSBmbG9hdFRpbWUpCisgICAgICAgIHJldHVybiBp
bnZhbGlkVGltZSgpOworICAgIGlmIChzdGQ6OmlzaW5mKGZsb2F0VGltZSkpCisgICAgICAgIHJl
dHVybiBzdGQ6OnNpZ25iaXQoZmxvYXRUaW1lKSA/IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCkgOiBw
b3NpdGl2ZUluZmluaXRlVGltZSgpOworICAgIGlmIChmbG9hdFRpbWUgPiBudW1lcmljX2xpbWl0
czxpbnQ2NF90Pjo6bWF4KCkpCisgICAgICAgIHJldHVybiBwb3NpdGl2ZUluZmluaXRlVGltZSgp
OworICAgIGlmIChmbG9hdFRpbWUgPCBudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWluKCkpCisg
ICAgICAgIHJldHVybiBuZWdhdGl2ZUluZmluaXRlVGltZSgpOworCisgICAgd2hpbGUgKGZsb2F0
VGltZSAqIHRpbWVTY2FsZSA+IG51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKSkKKyAgICAg
ICAgdGltZVNjYWxlIC89IDI7CisgICAgcmV0dXJuIE1lZGlhVGltZShzdGF0aWNfY2FzdDxpbnQ2
NF90PihmbG9hdFRpbWUgKiB0aW1lU2NhbGUpLCB0aW1lU2NhbGUsIFZhbGlkKTsKK30KKworTWVk
aWFUaW1lIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShkb3VibGUgZG91YmxlVGltZSwgaW50
MzJfdCB0aW1lU2NhbGUpCit7CisgICAgaWYgKGRvdWJsZVRpbWUgIT0gZG91YmxlVGltZSkKKyAg
ICAgICAgcmV0dXJuIGludmFsaWRUaW1lKCk7CisgICAgaWYgKHN0ZDo6aXNpbmYoZG91YmxlVGlt
ZSkpCisgICAgICAgIHJldHVybiBzdGQ6OnNpZ25iaXQoZG91YmxlVGltZSkgPyBuZWdhdGl2ZUlu
ZmluaXRlVGltZSgpIDogcG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKKyAgICBpZiAoZG91YmxlVGlt
ZSA+IG51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKSkKKyAgICAgICAgcmV0dXJuIHBvc2l0
aXZlSW5maW5pdGVUaW1lKCk7CisgICAgaWYgKGRvdWJsZVRpbWUgPCBudW1lcmljX2xpbWl0czxp
bnQ2NF90Pjo6bWluKCkpCisgICAgICAgIHJldHVybiBuZWdhdGl2ZUluZmluaXRlVGltZSgpOwor
CisgICAgd2hpbGUgKGRvdWJsZVRpbWUgKiB0aW1lU2NhbGUgPiBudW1lcmljX2xpbWl0czxpbnQ2
NF90Pjo6bWF4KCkpCisgICAgICAgIHRpbWVTY2FsZSAvPSAyOworICAgIHJldHVybiBNZWRpYVRp
bWUoc3RhdGljX2Nhc3Q8aW50NjRfdD4oZG91YmxlVGltZSAqIHRpbWVTY2FsZSksIHRpbWVTY2Fs
ZSwgVmFsaWQpOworfQorCitmbG9hdCBNZWRpYVRpbWU6OnRvRmxvYXQoKSBjb25zdAoreworICAg
IGlmIChpc0ludmFsaWQoKSB8fCBpc0luZGVmaW5pdGUoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjpxdWlldF9OYU4oKTsKKyAgICBpZiAoaXNQb3NpdGl2ZUlu
ZmluaXRlKCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5m
aW5pdHkoKTsKKyAgICBpZiAoaXNOZWdhdGl2ZUluZmluaXRlKCkpCisgICAgICAgIHJldHVybiAt
c3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCk7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGZsb2F0PihtX3RpbWVWYWx1ZSkgLyBtX3RpbWVTY2FsZTsKK30KKworZG91YmxlIE1l
ZGlhVGltZTo6dG9Eb3VibGUoKSBjb25zdAoreworICAgIGlmIChpc0ludmFsaWQoKSB8fCBpc0lu
ZGVmaW5pdGUoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6
cXVpZXRfTmFOKCk7CisgICAgaWYgKGlzUG9zaXRpdmVJbmZpbml0ZSgpKQorICAgICAgICByZXR1
cm4gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpOworICAgIGlmIChpc05l
Z2F0aXZlSW5maW5pdGUoKSkKKyAgICAgICAgcmV0dXJuIC1zdGQ6Om51bWVyaWNfbGltaXRzPGRv
dWJsZT46OmluZmluaXR5KCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4obV90aW1l
VmFsdWUpIC8gbV90aW1lU2NhbGU7Cit9CisKK01lZGlhVGltZSYgTWVkaWFUaW1lOjpvcGVyYXRv
cj0oY29uc3QgTWVkaWFUaW1lJiByaHMpCit7CisgICAgbV90aW1lVmFsdWUgPSByaHMubV90aW1l
VmFsdWU7CisgICAgbV90aW1lU2NhbGUgPSByaHMubV90aW1lU2NhbGU7CisgICAgbV90aW1lRmxh
Z3MgPSByaHMubV90aW1lRmxhZ3M7CisgICAgcmV0dXJuICp0aGlzOworfQorCitNZWRpYVRpbWUg
TWVkaWFUaW1lOjpvcGVyYXRvcisoY29uc3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0Cit7CisgICAg
aWYgKHJocy5pc0ludmFsaWQoKSB8fCBpc0ludmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIGludmFs
aWRUaW1lKCk7CisKKyAgICBpZiAocmhzLmlzSW5kZWZpbml0ZSgpIHx8IGlzSW5kZWZpbml0ZSgp
KQorICAgICAgICByZXR1cm4gaW5kZWZpbml0ZVRpbWUoKTsKKworICAgIGlmIChpc1Bvc2l0aXZl
SW5maW5pdGUoKSkgeworICAgICAgICBpZiAocmhzLmlzTmVnYXRpdmVJbmZpbml0ZSgpKQorICAg
ICAgICAgICAgcmV0dXJuIGludmFsaWRUaW1lKCk7CisgICAgICAgIHJldHVybiBwb3NpdGl2ZUlu
ZmluaXRlVGltZSgpOworICAgIH0KKworICAgIGlmIChpc05lZ2F0aXZlSW5maW5pdGUoKSkgewor
ICAgICAgICBpZiAocmhzLmlzUG9zaXRpdmVJbmZpbml0ZSgpKQorICAgICAgICAgICAgcmV0dXJu
IGludmFsaWRUaW1lKCk7CisgICAgICAgIHJldHVybiBuZWdhdGl2ZUluZmluaXRlVGltZSgpOwor
ICAgIH0KKworICAgIGludDMyX3QgY29tbW9uVGltZVNjYWxlOworICAgIGlmICghbGVhc3RDb21t
b25NdWx0aXBsZSh0aGlzLT5tX3RpbWVTY2FsZSwgcmhzLm1fdGltZVNjYWxlLCBjb21tb25UaW1l
U2NhbGUpIHx8IGNvbW1vblRpbWVTY2FsZSA+IE1heGltdW1UaW1lU2NhbGUpCisgICAgICAgIGNv
bW1vblRpbWVTY2FsZSA9IE1heGltdW1UaW1lU2NhbGU7CisgICAgTWVkaWFUaW1lIGEgPSAqdGhp
czsKKyAgICBNZWRpYVRpbWUgYiA9IHJoczsKKyAgICBhLnNldFRpbWVTY2FsZShjb21tb25UaW1l
U2NhbGUpOworICAgIGIuc2V0VGltZVNjYWxlKGNvbW1vblRpbWVTY2FsZSk7CisgICAgd2hpbGUg
KCFzYWZlQWRkKGEubV90aW1lVmFsdWUsIGIubV90aW1lVmFsdWUsIGEubV90aW1lVmFsdWUpKSB7
CisgICAgICAgIGlmIChjb21tb25UaW1lU2NhbGUgPT0gMSkKKyAgICAgICAgICAgIHJldHVybiBh
Lm1fdGltZVZhbHVlID4gMCA/IHBvc2l0aXZlSW5maW5pdGVUaW1lKCkgOiBuZWdhdGl2ZUluZmlu
aXRlVGltZSgpOworICAgICAgICBjb21tb25UaW1lU2NhbGUgLz0gMjsKKyAgICAgICAgYS5zZXRU
aW1lU2NhbGUoY29tbW9uVGltZVNjYWxlKTsKKyAgICAgICAgYi5zZXRUaW1lU2NhbGUoY29tbW9u
VGltZVNjYWxlKTsKKyAgICB9CisgICAgcmV0dXJuIGE7Cit9CisKK01lZGlhVGltZSBNZWRpYVRp
bWU6Om9wZXJhdG9yLShjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3QKK3sKKyAgICBpZiAocmhz
LmlzSW52YWxpZCgpIHx8IGlzSW52YWxpZCgpKQorICAgICAgICByZXR1cm4gaW52YWxpZFRpbWUo
KTsKKworICAgIGlmIChyaHMuaXNJbmRlZmluaXRlKCkgfHwgaXNJbmRlZmluaXRlKCkpCisgICAg
ICAgIHJldHVybiBpbmRlZmluaXRlVGltZSgpOworCisgICAgaWYgKGlzUG9zaXRpdmVJbmZpbml0
ZSgpKSB7CisgICAgICAgIGlmIChyaHMuaXNQb3NpdGl2ZUluZmluaXRlKCkpCisgICAgICAgICAg
ICByZXR1cm4gaW52YWxpZFRpbWUoKTsKKyAgICAgICAgcmV0dXJuIHBvc2l0aXZlSW5maW5pdGVU
aW1lKCk7CisgICAgfQorCisgICAgaWYgKGlzTmVnYXRpdmVJbmZpbml0ZSgpKSB7CisgICAgICAg
IGlmIChyaHMuaXNOZWdhdGl2ZUluZmluaXRlKCkpCisgICAgICAgICAgICByZXR1cm4gaW52YWxp
ZFRpbWUoKTsKKyAgICAgICAgcmV0dXJuIG5lZ2F0aXZlSW5maW5pdGVUaW1lKCk7CisgICAgfQor
CisgICAgaW50MzJfdCBjb21tb25UaW1lU2NhbGU7CisgICAgaWYgKCFsZWFzdENvbW1vbk11bHRp
cGxlKHRoaXMtPm1fdGltZVNjYWxlLCByaHMubV90aW1lU2NhbGUsIGNvbW1vblRpbWVTY2FsZSkg
fHwgY29tbW9uVGltZVNjYWxlID4gTWF4aW11bVRpbWVTY2FsZSkKKyAgICAgICAgY29tbW9uVGlt
ZVNjYWxlID0gTWF4aW11bVRpbWVTY2FsZTsKKyAgICBNZWRpYVRpbWUgYSA9ICp0aGlzOworICAg
IE1lZGlhVGltZSBiID0gcmhzOworICAgIGEuc2V0VGltZVNjYWxlKGNvbW1vblRpbWVTY2FsZSk7
CisgICAgYi5zZXRUaW1lU2NhbGUoY29tbW9uVGltZVNjYWxlKTsKKyAgICB3aGlsZSAoIXNhZmVT
dWIoYS5tX3RpbWVWYWx1ZSwgYi5tX3RpbWVWYWx1ZSwgYS5tX3RpbWVWYWx1ZSkpIHsKKyAgICAg
ICAgaWYgKGNvbW1vblRpbWVTY2FsZSA9PSAxKQorICAgICAgICAgICAgcmV0dXJuIGEubV90aW1l
VmFsdWUgPiAwID8gcG9zaXRpdmVJbmZpbml0ZVRpbWUoKSA6IG5lZ2F0aXZlSW5maW5pdGVUaW1l
KCk7CisgICAgICAgIGNvbW1vblRpbWVTY2FsZSAvPSAyOworICAgICAgICBhLnNldFRpbWVTY2Fs
ZShjb21tb25UaW1lU2NhbGUpOworICAgICAgICBiLnNldFRpbWVTY2FsZShjb21tb25UaW1lU2Nh
bGUpOworICAgIH0KKyAgICByZXR1cm4gYTsKK30KKworYm9vbCBNZWRpYVRpbWU6Om9wZXJhdG9y
PChjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3QKK3sKKyAgICByZXR1cm4gY29tcGFyZShyaHMp
ID09IExlc3NUaGFuOworfQorCitib29sIE1lZGlhVGltZTo6b3BlcmF0b3I+KGNvbnN0IE1lZGlh
VGltZSYgcmhzKSBjb25zdAoreworICAgIHJldHVybiBjb21wYXJlKHJocykgPT0gR3JlYXRlclRo
YW47Cit9CisKK2Jvb2wgTWVkaWFUaW1lOjpvcGVyYXRvcj09KGNvbnN0IE1lZGlhVGltZSYgcmhz
KSBjb25zdAoreworICAgIHJldHVybiBjb21wYXJlKHJocykgPT0gRXF1YWxUbzsKK30KKworYm9v
bCBNZWRpYVRpbWU6Om9wZXJhdG9yPj0oY29uc3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGNvbXBhcmUocmhzKSA+PSBFcXVhbFRvOworfQorCitib29sIE1lZGlhVGltZTo6
b3BlcmF0b3I8PShjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3QKK3sKKyAgICByZXR1cm4gY29t
cGFyZShyaHMpIDw9IEVxdWFsVG87Cit9CisKK01lZGlhVGltZTo6Q29tcGFyaXNvbkZsYWdzIE1l
ZGlhVGltZTo6Y29tcGFyZShjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3QKK3sKKyAgICBpZiAo
KGlzUG9zaXRpdmVJbmZpbml0ZSgpICYmIHJocy5pc1Bvc2l0aXZlSW5maW5pdGUoKSkKKyAgICAg
ICAgfHwgKGlzTmVnYXRpdmVJbmZpbml0ZSgpICYmIHJocy5pc05lZ2F0aXZlSW5maW5pdGUoKSkK
KyAgICAgICAgfHwgKGlzSW52YWxpZCgpICYmIHJocy5pc0ludmFsaWQoKSkKKyAgICAgICAgfHwg
KGlzSW5kZWZpbml0ZSgpICYmIHJocy5pc0luZGVmaW5pdGUoKSkpCisgICAgICAgIHJldHVybiBF
cXVhbFRvOworCisgICAgaWYgKGlzSW52YWxpZCgpKQorICAgICAgICByZXR1cm4gR3JlYXRlclRo
YW47CisKKyAgICBpZiAocmhzLmlzSW52YWxpZCgpKQorICAgICAgICByZXR1cm4gTGVzc1RoYW47
CisKKyAgICBpZiAocmhzLmlzTmVnYXRpdmVJbmZpbml0ZSgpIHx8IGlzUG9zaXRpdmVJbmZpbml0
ZSgpKQorICAgICAgICByZXR1cm4gR3JlYXRlclRoYW47CisKKyAgICBpZiAocmhzLmlzUG9zaXRp
dmVJbmZpbml0ZSgpIHx8IGlzTmVnYXRpdmVJbmZpbml0ZSgpKQorICAgICAgICByZXR1cm4gTGVz
c1RoYW47CisKKyAgICBpZiAoaXNJbmRlZmluaXRlKCkpCisgICAgICAgIHJldHVybiBHcmVhdGVy
VGhhbjsKKworICAgIGlmIChyaHMuaXNJbmRlZmluaXRlKCkpCisgICAgICAgIHJldHVybiBMZXNz
VGhhbjsKKworICAgIGludDY0X3QgcmhzV2hvbGUgPSByaHMubV90aW1lVmFsdWUgLyByaHMubV90
aW1lU2NhbGU7CisgICAgaW50NjRfdCBsaHNXaG9sZSA9IG1fdGltZVZhbHVlIC8gbV90aW1lU2Nh
bGU7CisgICAgaWYgKGxoc1dob2xlID4gcmhzV2hvbGUpCisgICAgICAgIHJldHVybiBHcmVhdGVy
VGhhbjsKKyAgICBpZiAobGhzV2hvbGUgPCByaHNXaG9sZSkKKyAgICAgICAgcmV0dXJuIExlc3NU
aGFuOworCisgICAgaW50NjRfdCByaHNSZW1haW4gPSByaHMubV90aW1lVmFsdWUgJSByaHMubV90
aW1lU2NhbGU7CisgICAgaW50NjRfdCBsaHNSZW1haW4gPSBtX3RpbWVWYWx1ZSAlIG1fdGltZVNj
YWxlOworICAgIGludDY0X3QgbGhzRmFjdG9yID0gbGhzUmVtYWluICogcmhzLm1fdGltZVNjYWxl
OworICAgIGludDY0X3QgcmhzRmFjdG9yID0gcmhzUmVtYWluICogbV90aW1lU2NhbGU7CisKKyAg
ICBpZiAobGhzRmFjdG9yID09IHJoc0ZhY3RvcikKKyAgICAgICAgcmV0dXJuIEVxdWFsVG87Cisg
ICAgcmV0dXJuIGxoc0ZhY3RvciA+IHJoc0ZhY3RvciA/IEdyZWF0ZXJUaGFuIDogTGVzc1RoYW47
Cit9CisKK2NvbnN0IE1lZGlhVGltZSYgTWVkaWFUaW1lOjp6ZXJvVGltZSgpCit7CisgICAgc3Rh
dGljIGNvbnN0IE1lZGlhVGltZSogdGltZSA9IG5ldyBNZWRpYVRpbWUoMCwgMSwgVmFsaWQpOwor
ICAgIHJldHVybiAqdGltZTsKK30KKworY29uc3QgTWVkaWFUaW1lJiBNZWRpYVRpbWU6OmludmFs
aWRUaW1lKCkKK3sKKyAgICBzdGF0aWMgY29uc3QgTWVkaWFUaW1lKiB0aW1lID0gbmV3IE1lZGlh
VGltZSgtMSwgMSwgMCk7CisgICAgcmV0dXJuICp0aW1lOworfQorCitjb25zdCBNZWRpYVRpbWUm
IE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKQoreworICAgIHN0YXRpYyBjb25zdCBN
ZWRpYVRpbWUqIHRpbWUgPSBuZXcgTWVkaWFUaW1lKDAsIDEsIFBvc2l0aXZlSW5maW5pdGUgfCBW
YWxpZCk7CisgICAgcmV0dXJuICp0aW1lOworfQorCitjb25zdCBNZWRpYVRpbWUmIE1lZGlhVGlt
ZTo6bmVnYXRpdmVJbmZpbml0ZVRpbWUoKQoreworICAgIHN0YXRpYyBjb25zdCBNZWRpYVRpbWUq
IHRpbWUgPSBuZXcgTWVkaWFUaW1lKC0xLCAxLCBOZWdhdGl2ZUluZmluaXRlIHwgVmFsaWQpOwor
ICAgIHJldHVybiAqdGltZTsKK30KKworY29uc3QgTWVkaWFUaW1lJiBNZWRpYVRpbWU6OmluZGVm
aW5pdGVUaW1lKCkKK3sKKyAgICBzdGF0aWMgY29uc3QgTWVkaWFUaW1lKiB0aW1lID0gbmV3IE1l
ZGlhVGltZSgwLCAxLCBJbmRlZmluaXRlIHwgVmFsaWQpOworICAgIHJldHVybiAqdGltZTsKK30K
Kwordm9pZCBNZWRpYVRpbWU6OnNldFRpbWVTY2FsZShpbnQzMl90IHRpbWVTY2FsZSkKK3sKKyAg
ICBpZiAodGltZVNjYWxlID09IG1fdGltZVNjYWxlKQorICAgICAgICByZXR1cm47CisgICAgdGlt
ZVNjYWxlID0gc3RkOjptaW4oTWF4aW11bVRpbWVTY2FsZSwgdGltZVNjYWxlKTsKKyAgICBpbnQ2
NF90IHdob2xlUGFydCA9IG1fdGltZVZhbHVlIC8gbV90aW1lU2NhbGU7CisKKyAgICAvLyBJZiBz
ZXR0aW5nIHRoZSB0aW1lIHNjYWxlIHdpbGwgY2F1c2UgYW4gb3ZlcmZsb3csIGRpdmlkZSB0aGUK
KyAgICAvLyB0aW1lc2NhbGUgYnkgdHdvIHVudGlsIHRoZSBudW1iZXIgd2lsbCBmaXQsIGFuZCBy
b3VuZCB0aGUKKyAgICAvLyByZXN1bHQuCisgICAgaW50NjRfdCBuZXdXaG9sZVBhcnQ7CisgICAg
d2hpbGUgKCFzYWZlTXVsdGlwbHkod2hvbGVQYXJ0LCB0aW1lU2NhbGUsIG5ld1dob2xlUGFydCkp
CisgICAgICAgIHRpbWVTY2FsZSAvPSAyOworCisgICAgaW50NjRfdCByZW1haW5kZXIgPSBtX3Rp
bWVWYWx1ZSAlIG1fdGltZVNjYWxlOworICAgIG1fdGltZVZhbHVlID0gbmV3V2hvbGVQYXJ0ICsg
KHJlbWFpbmRlciAqIHRpbWVTY2FsZSkgLyBtX3RpbWVTY2FsZTsKKyAgICBtX3RpbWVTY2FsZSA9
IHRpbWVTY2FsZTsKK30KKworc3RhdGljIGludDMyX3Qgc2lnbnVtKGludDY0X3QgdmFsKQorewor
ICAgIHJldHVybiAoMCA8IHZhbCkgLSAodmFsIDwgMCk7Cit9CisKK01lZGlhVGltZSBhYnMoY29u
c3QgTWVkaWFUaW1lJiByaHMpCit7CisgICAgaWYgKHJocy5pc0ludmFsaWQoKSkKKyAgICAgICAg
cmV0dXJuIE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKTsKKyAgICBpZiAocmhzLmlzTmVnYXRpdmVJ
bmZpbml0ZSgpIHx8IHJocy5pc1Bvc2l0aXZlSW5maW5pdGUoKSkKKyAgICAgICAgcmV0dXJuIE1l
ZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKKyAgICBNZWRpYVRpbWUgdmFsID0gcmhz
OworICAgIHZhbC5tX3RpbWVWYWx1ZSAqPSBzaWdudW0ocmhzLm1fdGltZVNjYWxlKSAqIHNpZ251
bShyaHMubV90aW1lVmFsdWUpOworICAgIHJldHVybiB2YWw7Cit9CisKK30KKwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvTWVkaWFUaW1lLmggYi9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRpbWUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40MzBkM2Y1YjJlOWE1NzgwOTQwOTkxMjM3MDdkNWI1YzlkNTUyNGZiCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvTWVkaWFUaW1lLmgKQEAgLTAsMCArMSwx
MDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBB
cHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0
cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uIAorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlIDxjbWF0aD4KKyNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8
bWF0aC5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3Mg
V1RGX0VYUE9SVF9QUklWQVRFIE1lZGlhVGltZSB7CitwdWJsaWM6CisgICAgZW51bSB7CisgICAg
ICAgIFZhbGlkID0gMSA8PCAwLAorICAgICAgICBIYXNCZWVuUm91bmRlZCA9IDEgPDwgMSwKKyAg
ICAgICAgUG9zaXRpdmVJbmZpbml0ZSA9IDEgPDwgMiwKKyAgICAgICAgTmVnYXRpdmVJbmZpbml0
ZSA9IDEgPDwgMywKKyAgICAgICAgSW5kZWZpbml0ZSA9IDEgPDwgNCwKKyAgICB9OworCisgICAg
TWVkaWFUaW1lKCk7CisgICAgTWVkaWFUaW1lKGludDY0X3QgdmFsdWUsIGludDMyX3Qgc2NhbGUg
PSBEZWZhdWx0VGltZVNjYWxlLCB1aW50MzJfdCBmbGFncyA9IFZhbGlkKTsKKyAgICBNZWRpYVRp
bWUoY29uc3QgTWVkaWFUaW1lJiByaHMpOworICAgIH5NZWRpYVRpbWUoKTsKKworICAgIHN0YXRp
YyBNZWRpYVRpbWUgY3JlYXRlV2l0aEZsb2F0KGZsb2F0IGZsb2F0VGltZSwgaW50MzJfdCB0aW1l
U2NhbGUgPSBEZWZhdWx0VGltZVNjYWxlKTsKKyAgICBzdGF0aWMgTWVkaWFUaW1lIGNyZWF0ZVdp
dGhEb3VibGUoZG91YmxlIGRvdWJsZVRpbWUsIGludDMyX3QgdGltZVNjYWxlID0gRGVmYXVsdFRp
bWVTY2FsZSk7CisKKyAgICBmbG9hdCB0b0Zsb2F0KCkgY29uc3Q7CisgICAgZG91YmxlIHRvRG91
YmxlKCkgY29uc3Q7CisKKyAgICBNZWRpYVRpbWUmIG9wZXJhdG9yPShjb25zdCBNZWRpYVRpbWUm
IHJocyk7CisgICAgTWVkaWFUaW1lIG9wZXJhdG9yKyhjb25zdCBNZWRpYVRpbWUmIHJocykgY29u
c3Q7CisgICAgTWVkaWFUaW1lIG9wZXJhdG9yLShjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3Q7
CisgICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0OworICAgIGJv
b2wgb3BlcmF0b3I+KGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdDsKKyAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3I+PShj
b25zdCBNZWRpYVRpbWUmIHJocykgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IE1l
ZGlhVGltZSYgcmhzKSBjb25zdDsKKworICAgIHR5cGVkZWYgZW51bSB7CisgICAgICAgIExlc3NU
aGFuID0gLTEsCisgICAgICAgIEVxdWFsVG8gPSAwLAorICAgICAgICBHcmVhdGVyVGhhbiA9IDEs
CisgICAgfSBDb21wYXJpc29uRmxhZ3M7CisKKyAgICBDb21wYXJpc29uRmxhZ3MgY29tcGFyZShj
b25zdCBNZWRpYVRpbWUmIHJocykgY29uc3Q7CisKKyAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7
IHJldHVybiBtX3RpbWVGbGFncyAmIFZhbGlkOyB9CisgICAgYm9vbCBpc0ludmFsaWQoKSBjb25z
dCB7IHJldHVybiAhaXNWYWxpZCgpOyB9CisgICAgYm9vbCBoYXNCZWVuUm91bmRlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fdGltZUZsYWdzICYgSGFzQmVlblJvdW5kZWQ7IH0KKyAgICBib29sIGlzUG9z
aXRpdmVJbmZpbml0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZUZsYWdzICYgUG9zaXRpdmVJbmZp
bml0ZTsgfQorICAgIGJvb2wgaXNOZWdhdGl2ZUluZmluaXRlKCkgY29uc3QgeyByZXR1cm4gbV90
aW1lRmxhZ3MgJiBOZWdhdGl2ZUluZmluaXRlOyB9CisgICAgYm9vbCBpc0luZGVmaW5pdGUoKSBj
b25zdCB7IHJldHVybiBtX3RpbWVGbGFncyAmIEluZGVmaW5pdGU7IH0KKworICAgIHN0YXRpYyBj
b25zdCBNZWRpYVRpbWUmIHplcm9UaW1lKCk7CisgICAgc3RhdGljIGNvbnN0IE1lZGlhVGltZSYg
aW52YWxpZFRpbWUoKTsKKyAgICBzdGF0aWMgY29uc3QgTWVkaWFUaW1lJiBwb3NpdGl2ZUluZmlu
aXRlVGltZSgpOworICAgIHN0YXRpYyBjb25zdCBNZWRpYVRpbWUmIG5lZ2F0aXZlSW5maW5pdGVU
aW1lKCk7CisgICAgc3RhdGljIGNvbnN0IE1lZGlhVGltZSYgaW5kZWZpbml0ZVRpbWUoKTsKKwor
ICAgIGNvbnN0IGludDY0X3QmIHRpbWVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZVZhbHVl
OyB9CisgICAgY29uc3QgaW50MzJfdCYgdGltZVNjYWxlKCkgY29uc3QgeyByZXR1cm4gbV90aW1l
U2NhbGU7IH0KKworICAgIGZyaWVuZCBNZWRpYVRpbWUgYWJzKGNvbnN0IE1lZGlhVGltZSYgcmhz
KTsKK3ByaXZhdGU6CisgICAgc3RhdGljIGNvbnN0IGludDMyX3QgRGVmYXVsdFRpbWVTY2FsZSA9
IDYwMDA7CisgICAgc3RhdGljIGNvbnN0IGludDMyX3QgTWF4aW11bVRpbWVTY2FsZTsKKworICAg
IHZvaWQgc2V0VGltZVNjYWxlKGludDMyX3QpOworCisgICAgaW50NjRfdCBtX3RpbWVWYWx1ZTsK
KyAgICBpbnQzMl90IG1fdGltZVNjYWxlOworICAgIHVpbnQzMl90IG1fdGltZUZsYWdzOworfTsK
KworV1RGX0VYUE9SVF9QUklWQVRFIGV4dGVybiBNZWRpYVRpbWUgYWJzKGNvbnN0IE1lZGlhVGlt
ZSYgcmhzKTsKK30KKwordXNpbmcgV1RGOjpNZWRpYVRpbWU7Cit1c2luZyBXVEY6OmFiczsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlNjA1Zjhi
ZGYxYjYyODM3MmIzZjUyNTAyYTZjYTJhZTA3MDFlMGJiLi43ZTM2YjQxYzIxZTBjNWM0ZmU0MTgx
OGYwNDM2ZjE5NDRiNjNjMTg1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTItMDYtMTEgIEplciBOb2JsZSAgPGpl
ci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBhIHJhdGlvbmFsIHRpbWUgY2xh
c3MgZm9yIHVzZSBieSBtZWRpYSBlbGVtZW50cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTg4Nzg3CisKKyAgICAgICAgQWRkIHVuaXQgdGVzdHMgZm9y
IHRoZSBXVEY6Ok1lZGlhVGltZSBjbGFzcy4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvR05VbWFrZWZpbGUuYW06CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLmd5cGk6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTWVkaWFUaW1lLmNwcDogQWRkZWQuCisgICAgICAg
IChXVEY6Om9wZXJhdG9yPDwpOgorICAgICAgICAoVGVzdFdlYktpdEFQSSk6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpURVNUKToKKworMjAxMi0wNi0xMSAgSmVyIE5vYmxlICA8amVyLm5vYmxl
QGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IGEgcmF0aW9uYWwgdGltZSBjbGFzcyBmb3Ig
dXNlIGJ5IG1lZGlhIGVsZW1lbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODg3ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvR05VbWFrZWZpbGUuYW06CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLmd5cGk6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvTWVkaWFUaW1lLmNwcDogQWRkZWQuCisgICAgICAgIChXVEYp
OgorICAgICAgICAoV1RGOjpvcGVyYXRvcjw8KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEkpOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMTItMDYtMTEgIFpvbHRhbiBIb3J2
YXRoICA8em9sdGFuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XSBBZGQgY29uZmlnIHRlc3Rz
IGZvciBXRUJQIGltYWdlZGVjb2RlciBsaWJyYXJ5LCBtb2RpZnkgSEFWRShkZWNvZGVybGlicmFy
eSkgdG8gVVNFKC4uLikKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvR05VbWFrZWZp
bGUuYW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL0dOVW1ha2VmaWxlLmFtCmluZGV4IGZmOTI0OTJm
MzBhMmQ3YmM1ZmY0ODYxYTYyZWQ4Njc5MWE4MDI0ZGIuLmUxNGFlMDJiZGVhMjI4ZTIyOTkyNjFi
Y2M3ODNhOTQyNGUyNDFkMjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvR05VbWFr
ZWZpbGUuYW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9HTlVtYWtlZmlsZS5hbQpAQCAtMjE3
LDYgKzIxNywxMiBAQCBQcm9ncmFtc19UZXN0V2ViS2l0QVBJX1dURl9UZXN0SGFzaE1hcF9DUFBG
TEFHUyA9ICQodGVzdHdlYmtpdGFwaV93dGZfdGVzdHNfY3BwZgogUHJvZ3JhbXNfVGVzdFdlYktp
dEFQSV9XVEZfVGVzdEhhc2hNYXBfTERBREQgPSAkKHRlc3R3ZWJraXRhcGlfd3RmX3Rlc3RzX2xk
YWRkKQogUHJvZ3JhbXNfVGVzdFdlYktpdEFQSV9XVEZfVGVzdEhhc2hNYXBfTERGTEFHUyA9ICQo
dGVzdHdlYmtpdGFwaV93dGZfdGVzdHNfbGRmbGFncykKIAorUHJvZ3JhbXNfVGVzdFdlYktpdEFQ
SV9XVEZfVGVzdE1lZGlhVGltZV9TT1VSQ0VTID0gXAorCVRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL01lZGlhVGltZS5jcHAKK1Byb2dyYW1zX1Rlc3RXZWJLaXRBUElfV1RGX1Rlc3RNZWRp
YVRpbWVfQ1BQRkxBR1MgPSAkKHRlc3R3ZWJraXRhcGlfd2Via2l0Ml90ZXN0c19jcHBmbGFncykK
K1Byb2dyYW1zX1Rlc3RXZWJLaXRBUElfV1RGX1Rlc3RNZWRpYVRpbWVfTERBREQgPSAkKHRlc3R3
ZWJraXRhcGlfd2Via2l0Ml90ZXN0c19sZGFkZCkKK1Byb2dyYW1zX1Rlc3RXZWJLaXRBUElfV1RG
X1Rlc3RNZWRpYVRpbWVfTERGTEFHUyA9ICQodGVzdHdlYmtpdGFwaV93ZWJraXQyX3Rlc3RzX2xk
ZmxhZ3MpCisKIFByb2dyYW1zX1Rlc3RXZWJLaXRBUElfV1RGX1Rlc3RSZWRCbGFja1RyZWVfU09V
UkNFUyA9IFwKIAlUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWRCbGFja1RyZWUuY3Bw
CiBQcm9ncmFtc19UZXN0V2ViS2l0QVBJX1dURl9UZXN0UmVkQmxhY2tUcmVlX0NQUEZMQUdTID0g
JCh0ZXN0d2Via2l0YXBpX3d0Zl90ZXN0c19jcHBmbGFncykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS5neXBpIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLmd5cGkKaW5kZXggYzUxMTg3ZmEwNjM2MGEyOTE0ODIzNzVhMzA2MTg0MTk3MTdi
NmNlNy4uOTQxZTc3NmQ1ZjRkMDFlOWIzOTM3Y2E4Y2U0N2Y5ZGQ3N2Y0NWVmNyAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLmd5cGkKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLmd5cGkKQEAgLTM0LDYgKzM0LDcgQEAKICAgICAgICAg
ICAgICdUZXN0cy9XVEYvQ2hlY2tlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNwcCcsCiAgICAgICAg
ICAgICAnVGVzdHMvV1RGL0Z1bmN0aW9uYWwuY3BwJywKICAgICAgICAgICAgICdUZXN0cy9XVEYv
SGFzaE1hcC5jcHAnLAorICAgICAgICAgICAgJ1Rlc3RzL1dURi9NZWRpYVRpbWUuY3BwJywKICAg
ICAgICAgICAgICdUZXN0cy9XVEYvUmVkQmxhY2tUcmVlLmNwcCcsCiAgICAgICAgICAgICAnVGVz
dHMvV1RGL1N0cmluZ0J1aWxkZXIuY3BwJywKICAgICAgICAgICAgICdUZXN0cy9XVEYvU3RyaW5n
T3BlcmF0b3JzLmNwcCcsCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGM1MTljMDIzMTZlMjE1
ZGQwZjI3ZmM3ODY2NWI4ZGZmM2E2NmI1Y2UuLmRkMzVlZGYzMDk4NWMwMTkwZTllMWUwODg1YmUz
YmZmNDE4NmIxN2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDQsNiArMTQ0LDcgQEAK
IAkJQzU0MEY3ODQxNTJFNUE5QTAwQTQwQzhDIC8qIHZlcmJvc2VNYXJrdXAuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTQwRjc4MzE1
MkU1QTc4MDBBNDBDOEMgLyogdmVyYm9zZU1hcmt1cC5odG1sICovOyB9OwogCQlFMTIyMERBMDE1
NUIyNTQ4MDAxM0UyRkMgLyogTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVs
ZWdhdGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MTIyMEQ5RjE1NUIyNTQ4MDAxM0UyRkMgLyogTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3Vy
Y2VMb2FkRGVsZWdhdGUubW0gKi87IH07CiAJCUUxMjIwRENBMTU1QjI4QUEwMDEzRTJGQyAvKiBN
ZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMjIwREM5MTU1
QjI4N0QwMDEzRTJGQyAvKiBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxl
Z2F0ZS5odG1sICovOyB9OworCQlDRDU0OTdCNDE1ODU3RjBDMDBCNUJDMzAgLyogTWVkaWFUaW1l
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENTQ5
N0IzMTU4NTdGMEMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuY3BwICovOyB9OwogCQlFNDkwMjk2ODE0
RTJFM0E0MDAyQkVERDEgLyogVHlwaW5nU3R5bGVDcmFzaC5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0OTAyOTY3MTRFMkUzQTQwMDJCRUREMSAvKiBU
eXBpbmdTdHlsZUNyYXNoLm1tICovOyB9OwogCQlGM0ZDM0VFMzEzNjc4QjczMDAxMjZBNjUgLyog
bGliZ3Rlc3QuYSBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEYzRkMzRUUyMTM2NzhCNzMwMDEyNkE2NSAvKiBsaWJndGVzdC5hICovOyB9OwogCQlGNkYz
RjI5MTEzMzQyRkVCMDBBNkJGMTkgLyogQ29va2llTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNkYzRjI5MDEzMzQyRkVCMDBBNkJGMTkg
LyogQ29va2llTWFuYWdlci5jcHAgKi87IH07CkBAIC0zNjMsNiArMzY0LDcgQEAKIAkJQzU0MEY3
ODMxNTJFNUE3ODAwQTQwQzhDIC8qIHZlcmJvc2VNYXJrdXAuaHRtbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
aHRtbDsgcGF0aCA9IHZlcmJvc2VNYXJrdXAuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTEyMjBEOUYxNTVCMjU0ODAwMTNFMkZDIC8qIE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhp
blJlc291cmNlTG9hZERlbGVnYXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxMjIwREM5MTU1QjI4N0QwMDEzRTJGQyAv
KiBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC5odG1sOyBwYXRoID0gTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VM
b2FkRGVsZWdhdGUuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0Q1NDk3QjMx
NTg1N0YwQzAwQjVCQzMwIC8qIE1lZGlhVGltZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBNZWRpYVRpbWUuY3BwOyBwYXRoID0gV1RGL01lZGlhVGltZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0OTAyOTY3MTRFMkUzQTQwMDJCRUREMSAvKiBU
eXBpbmdTdHlsZUNyYXNoLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gVHlwaW5nU3R5bGVDcmFzaC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjNG
QzNFRTIxMzY3OEI3MzAwMTI2QTY1IC8qIGxpYmd0ZXN0LmEgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBhcmNoaXZlLmFyOyBwYXRoID0gbGliZ3Rlc3Qu
YTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJRjZGM0YyOTAxMzM0MkZF
QjAwQTZCRjE5IC8qIENvb2tpZU1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQ29va2llTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC01NzMsNiArNTc1LDcgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCUJDMDI5QjFBMTQ4NkIy
MzgwMDgxN0RBOSAvKiBucyAqLywKIAkJCQlDMDk5MUM0RjE0M0M3RDY4MDA3OTk4RjIgLyogY2Yg
Ki8sCisJCQkJQ0Q1NDk3QjMxNTg1N0YwQzAwQjVCQzMwIC8qIE1lZGlhVGltZS5jcHAgKi8sCiAJ
CQkJMEZDNkM0Q0UxNDEwMzRBRDAwNUI3RjBDIC8qIE1ldGFBbGxvY2F0b3IuY3BwICovLAogCQkJ
CTBGQzZDNENCMTQxMDI3RTAwMDVCN0YwQyAvKiBSZWRCbGFja1RyZWUuY3BwICovLAogCQkJCUE3
QTk2NkRBMTQwRUNDQzgwMDVFRjlCNCAvKiBDaGVja2VkQXJpdGhtZXRpY09wZXJhdGlvbnMuY3Bw
ICovLApAQCAtODgzLDYgKzg4Niw3IEBACiAJCQkJRTEyMjBEQTAxNTVCMjU0ODAwMTNFMkZDIC8q
IE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRjZGNDlDNjkxNTU0NUM4RTAwMDdGMzlEIC8qIERPTVdpbmRvd0V4dGVuc2lv
bk5vQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFFOTMwMTcxNTZCMTNFMTAwNEM5OURG
IC8qIFdLUGFnZUdldFNjYWxlRmFjdG9yTm90WmVyby5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlD
RDU0OTdCNDE1ODU3RjBDMDBCNUJDMzAgLyogTWVkaWFUaW1lLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9Owpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTWVkaWFUaW1lLmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL01lZGlhVGltZS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NThmYmIyMzNkMjQ2Mjc2NjE3MGJiMjNlMDc4MThlY2ViZmRmZTZjMwotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL01lZGlhVGltZS5jcHAKQEAgLTAsMCAr
MSwxNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2Yg
QXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBp
dHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUu
aD4KKwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKworbmFtZXNwYWNlIFdURiB7CisKK3N0ZDo6b3N0
cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIG91dCwgY29uc3QgTWVkaWFUaW1lJiB2YWwp
Cit7CisgICAgb3V0IDw8ICJ7ICI7CisgICAgaWYgKHZhbC5pc0ludmFsaWQoKSkKKyAgICAgICAg
b3V0IDw8ICJpbnZhbGlkIjsKKyAgICBlbHNlIGlmICh2YWwuaXNQb3NpdGl2ZUluZmluaXRlKCkp
CisgICAgICAgIG91dCA8PCAiK2luZmluaXRlIjsKKyAgICBlbHNlIGlmICh2YWwuaXNOZWdhdGl2
ZUluZmluaXRlKCkpCisgICAgICAgIG91dCA8PCAiLWluZmluaXRlIjsKKyAgICBlbHNlCisgICAg
ICAgIG91dCA8PCAidmFsdWU6ICIgPDwgdmFsLnRpbWVWYWx1ZSgpIDw8ICIsIHNjYWxlOiAiIDw8
IHZhbC50aW1lU2NhbGUoKTsKKyAgICByZXR1cm4gb3V0IDw8ICIgfSI7Cit9CisKK30KKworbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitURVNUKFdURiwgTWVkaWFUaW1lKQoreworICAgIC8v
IENvbXBhcmlzb24gT3BlcmF0b3JzCisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6cG9zaXRpdmVJ
bmZpbml0ZVRpbWUoKSA+IE1lZGlhVGltZTo6bmVnYXRpdmVJbmZpbml0ZVRpbWUoKSwgdHJ1ZSk7
CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6bmVnYXRpdmVJbmZpbml0ZVRpbWUoKSA8IE1lZGlh
VGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKSwgdHJ1ZSk7CisgICAgRVhQRUNUX0VRKE1lZGlh
VGltZTo6bmVnYXRpdmVJbmZpbml0ZVRpbWUoKSA9PSBNZWRpYVRpbWU6Om5lZ2F0aXZlSW5maW5p
dGVUaW1lKCksIHRydWUpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5p
dGVUaW1lKCkgPT0gTWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpLCB0cnVlKTsKKyAg
ICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpID09IE1lZGlhVGltZTo6aW52YWxp
ZFRpbWUoKSwgdHJ1ZSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSA+
IE1lZGlhVGltZTo6bmVnYXRpdmVJbmZpbml0ZVRpbWUoKSwgdHJ1ZSk7CisgICAgRVhQRUNUX0VR
KE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSA+IE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRp
bWUoKSwgdHJ1ZSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6bmVnYXRpdmVJbmZpbml0ZVRp
bWUoKSA8IE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSwgdHJ1ZSk7CisgICAgRVhQRUNUX0VRKE1l
ZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKSA8IE1lZGlhVGltZTo6aW52YWxpZFRpbWUo
KSwgdHJ1ZSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6aW5kZWZpbml0ZVRpbWUoKSA9PSBN
ZWRpYVRpbWU6OmluZGVmaW5pdGVUaW1lKCksIHRydWUpOworICAgIEVYUEVDVF9FUShNZWRpYVRp
bWU6OmluZGVmaW5pdGVUaW1lKCkgPiBNZWRpYVRpbWU6Om5lZ2F0aXZlSW5maW5pdGVUaW1lKCks
IHRydWUpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OmluZGVmaW5pdGVUaW1lKCkgPCBNZWRp
YVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCksIHRydWUpOworICAgIEVYUEVDVF9FUShNZWRp
YVRpbWU6Om5lZ2F0aXZlSW5maW5pdGVUaW1lKCkgPCBNZWRpYVRpbWU6OmluZGVmaW5pdGVUaW1l
KCksIHRydWUpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1l
KCkgPiBNZWRpYVRpbWU6OmluZGVmaW5pdGVUaW1lKCksIHRydWUpOworICAgIEVYUEVDVF9FUShN
ZWRpYVRpbWUoMSwgMSkgPCBNZWRpYVRpbWU6OmluZGVmaW5pdGVUaW1lKCksIHRydWUpOworICAg
IEVYUEVDVF9FUShNZWRpYVRpbWU6OmluZGVmaW5pdGVUaW1lKCkgPiBNZWRpYVRpbWUoMSwgMSks
IHRydWUpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMSwgMSkgPCBNZWRpYVRpbWUoMiwgMSks
IHRydWUpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMiwgMSkgPiBNZWRpYVRpbWUoMSwgMSks
IHRydWUpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMiwgMSkgPT0gTWVkaWFUaW1lKDIsIDEp
LCB0cnVlKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDIsIDEpID09IE1lZGlhVGltZSg0LCAy
KSwgdHJ1ZSk7CisKKyAgICAvLyBBZGRpdGlvbiBPcGVyYXRvcnMKKyAgICBFWFBFQ1RfRVEoTWVk
aWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpICsgTWVkaWFUaW1lOjpwb3NpdGl2ZUluZmlu
aXRlVGltZSgpLCBNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCkpOworICAgIEVYUEVD
VF9FUShNZWRpYVRpbWU6Om5lZ2F0aXZlSW5maW5pdGVUaW1lKCkgKyBNZWRpYVRpbWU6Om5lZ2F0
aXZlSW5maW5pdGVUaW1lKCksIE1lZGlhVGltZTo6bmVnYXRpdmVJbmZpbml0ZVRpbWUoKSk7Cisg
ICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKSArIE1lZGlhVGlt
ZTo6bmVnYXRpdmVJbmZpbml0ZVRpbWUoKSwgTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpKTsKKyAg
ICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjpuZWdhdGl2ZUluZmluaXRlVGltZSgpICsgTWVkaWFUaW1l
Ojpwb3NpdGl2ZUluZmluaXRlVGltZSgpLCBNZWRpYVRpbWU6OmludmFsaWRUaW1lKCkpOworICAg
IEVYUEVDVF9FUShNZWRpYVRpbWU6OmludmFsaWRUaW1lKCkgKyBNZWRpYVRpbWU6OnBvc2l0aXZl
SW5maW5pdGVUaW1lKCksIE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSk7CisgICAgRVhQRUNUX0VR
KE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSArIE1lZGlhVGltZTo6bmVnYXRpdmVJbmZpbml0ZVRp
bWUoKSwgTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1l
OjppbnZhbGlkVGltZSgpICsgTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpLCBNZWRpYVRpbWU6Omlu
dmFsaWRUaW1lKCkpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OmludmFsaWRUaW1lKCkgKyBN
ZWRpYVRpbWUoMSwgMSksIE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSk7CisgICAgRVhQRUNUX0VR
KE1lZGlhVGltZTo6aW5kZWZpbml0ZVRpbWUoKSArIE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0
ZVRpbWUoKSwgTWVkaWFUaW1lOjppbmRlZmluaXRlVGltZSgpKTsKKyAgICBFWFBFQ1RfRVEoTWVk
aWFUaW1lOjppbmRlZmluaXRlVGltZSgpICsgTWVkaWFUaW1lOjpuZWdhdGl2ZUluZmluaXRlVGlt
ZSgpLCBNZWRpYVRpbWU6OmluZGVmaW5pdGVUaW1lKCkpOworICAgIEVYUEVDVF9FUShNZWRpYVRp
bWU6OmluZGVmaW5pdGVUaW1lKCkgKyBNZWRpYVRpbWU6OmluZGVmaW5pdGVUaW1lKCksIE1lZGlh
VGltZTo6aW5kZWZpbml0ZVRpbWUoKSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6aW5kZWZp
bml0ZVRpbWUoKSArIE1lZGlhVGltZSgxLCAxKSwgTWVkaWFUaW1lOjppbmRlZmluaXRlVGltZSgp
KTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDEsIDEpICsgTWVkaWFUaW1lKDEsIDEpLCBNZWRp
YVRpbWUoMiwgMSkpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMSwgMikgKyBNZWRpYVRpbWUo
MSwgMyksIE1lZGlhVGltZSg1LCA2KSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxLCBudW1l
cmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCktMSkgKyBNZWRpYVRpbWUoMSwgbnVtZXJpY19saW1p
dHM8aW50MzJfdD46Om1heCgpLTIpLCBNZWRpYVRpbWUoMiwgbnVtZXJpY19saW1pdHM8aW50MzJf
dD46Om1heCgpKSk7CisKKyAgICAvLyBTdWJ0cmFjdGlvbiBPcGVyYXRvcnMKKyAgICBFWFBFQ1Rf
RVEoTWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpIC0gTWVkaWFUaW1lOjpwb3NpdGl2
ZUluZmluaXRlVGltZSgpLCBNZWRpYVRpbWU6OmludmFsaWRUaW1lKCkpOworICAgIEVYUEVDVF9F
UShNZWRpYVRpbWU6Om5lZ2F0aXZlSW5maW5pdGVUaW1lKCkgLSBNZWRpYVRpbWU6Om5lZ2F0aXZl
SW5maW5pdGVUaW1lKCksIE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSk7CisgICAgRVhQRUNUX0VR
KE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKSAtIE1lZGlhVGltZTo6bmVnYXRpdmVJ
bmZpbml0ZVRpbWUoKSwgTWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpKTsKKyAgICBF
WFBFQ1RfRVEoTWVkaWFUaW1lOjpuZWdhdGl2ZUluZmluaXRlVGltZSgpIC0gTWVkaWFUaW1lOjpw
b3NpdGl2ZUluZmluaXRlVGltZSgpLCBNZWRpYVRpbWU6Om5lZ2F0aXZlSW5maW5pdGVUaW1lKCkp
OworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OmludmFsaWRUaW1lKCkgLSBNZWRpYVRpbWU6OnBv
c2l0aXZlSW5maW5pdGVUaW1lKCksIE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSk7CisgICAgRVhQ
RUNUX0VRKE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSAtIE1lZGlhVGltZTo6bmVnYXRpdmVJbmZp
bml0ZVRpbWUoKSwgTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpKTsKKyAgICBFWFBFQ1RfRVEoTWVk
aWFUaW1lOjppbnZhbGlkVGltZSgpIC0gTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpLCBNZWRpYVRp
bWU6OmludmFsaWRUaW1lKCkpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OmludmFsaWRUaW1l
KCkgLSBNZWRpYVRpbWUoMSwgMSksIE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSk7CisgICAgRVhQ
RUNUX0VRKE1lZGlhVGltZTo6aW5kZWZpbml0ZVRpbWUoKSAtIE1lZGlhVGltZTo6cG9zaXRpdmVJ
bmZpbml0ZVRpbWUoKSwgTWVkaWFUaW1lOjppbmRlZmluaXRlVGltZSgpKTsKKyAgICBFWFBFQ1Rf
RVEoTWVkaWFUaW1lOjppbmRlZmluaXRlVGltZSgpIC0gTWVkaWFUaW1lOjpuZWdhdGl2ZUluZmlu
aXRlVGltZSgpLCBNZWRpYVRpbWU6OmluZGVmaW5pdGVUaW1lKCkpOworICAgIEVYUEVDVF9FUShN
ZWRpYVRpbWU6OmluZGVmaW5pdGVUaW1lKCkgLSBNZWRpYVRpbWU6OmluZGVmaW5pdGVUaW1lKCks
IE1lZGlhVGltZTo6aW5kZWZpbml0ZVRpbWUoKSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6
aW5kZWZpbml0ZVRpbWUoKSAtIE1lZGlhVGltZSgxLCAxKSwgTWVkaWFUaW1lOjppbmRlZmluaXRl
VGltZSgpKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDMsIDEpIC0gTWVkaWFUaW1lKDIsIDEp
LCBNZWRpYVRpbWUoMSwgMSkpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMSwgMikgLSBNZWRp
YVRpbWUoMSwgMyksIE1lZGlhVGltZSgxLCA2KSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgy
LCBudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCktMSkgLSBNZWRpYVRpbWUoMSwgbnVtZXJp
Y19saW1pdHM8aW50MzJfdD46Om1heCgpLTIpLCBNZWRpYVRpbWUoMSwgbnVtZXJpY19saW1pdHM8
aW50MzJfdD46Om1heCgpKSk7CisKKyAgICAvLyBDb25zdGFudHMKKyAgICBFWFBFQ1RfRVEoTWVk
aWFUaW1lOjp6ZXJvVGltZSgpLCBNZWRpYVRpbWUoMCwgMSkpOworICAgIEVYUEVDVF9FUShNZWRp
YVRpbWU6OmludmFsaWRUaW1lKCksIE1lZGlhVGltZSgtMSwgMSwgMCkpOworICAgIEVYUEVDVF9F
UShNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCksIE1lZGlhVGltZSgwLCAxLCBNZWRp
YVRpbWU6OlBvc2l0aXZlSW5maW5pdGUpKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjpuZWdh
dGl2ZUluZmluaXRlVGltZSgpLCBNZWRpYVRpbWUoMCwgMSwgTWVkaWFUaW1lOjpOZWdhdGl2ZUlu
ZmluaXRlKSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6aW5kZWZpbml0ZVRpbWUoKSwgTWVk
aWFUaW1lKDAsIDEsIE1lZGlhVGltZTo6SW5kZWZpbml0ZSkpOworCisgICAgLy8gQWJzb2x1dGUg
RnVuY3Rpb25zCisgICAgRVhQRUNUX0VRKGFicyhNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVU
aW1lKCkpLCBNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCkpOworICAgIEVYUEVDVF9F
UShhYnMoTWVkaWFUaW1lOjpuZWdhdGl2ZUluZmluaXRlVGltZSgpKSwgTWVkaWFUaW1lOjpwb3Np
dGl2ZUluZmluaXRlVGltZSgpKTsKKyAgICBFWFBFQ1RfRVEoYWJzKE1lZGlhVGltZTo6aW52YWxp
ZFRpbWUoKSksIE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSk7CisgICAgRVhQRUNUX0VRKGFicyhN
ZWRpYVRpbWUoMSwgMSkpLCBNZWRpYVRpbWUoMSwgMSkpOworICAgIEVYUEVDVF9FUShhYnMoTWVk
aWFUaW1lKC0xLCAxKSksIE1lZGlhVGltZSgxLCAxKSk7CisgICAgRVhQRUNUX0VRKGFicyhNZWRp
YVRpbWUoLTEsIC0xKSksIE1lZGlhVGltZSgtMSwgLTEpKTsKKyAgICBFWFBFQ1RfRVEoYWJzKE1l
ZGlhVGltZSgxLCAtMSkpLCBNZWRpYVRpbWUoLTEsIC0xKSk7CisKKyAgICAvLyBGbG9hdGluZyBQ
b2ludCBGdW5jdGlvbnMKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjpjcmVhdGVXaXRoRmxvYXQo
MS4wZiksIE1lZGlhVGltZSgxLCAxKSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6Y3JlYXRl
V2l0aEZsb2F0KDEuNWYpLCBNZWRpYVRpbWUoMywgMikpOworICAgIEVYUEVDVF9FUShNZWRpYVRp
bWU6OmNyZWF0ZVdpdGhEb3VibGUoMS4wKSwgTWVkaWFUaW1lKDEsIDEpKTsKKyAgICBFWFBFQ1Rf
RVEoTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKDEuNSksIE1lZGlhVGltZSgzLCAyKSk7Cisg
ICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxLCAxKS50b0Zsb2F0KCksIDEuMGYpOworICAgIEVYUEVD
VF9FUShNZWRpYVRpbWUoMywgMikudG9GbG9hdCgpLCAxLjVmKTsKKyAgICBFWFBFQ1RfRVEoTWVk
aWFUaW1lKDEsIDEpLnRvRG91YmxlKCksIDEuMCk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgz
LCAyKS50b0RvdWJsZSgpLCAxLjUpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMSwgMSA8PCAx
NikudG9GbG9hdCgpLCAxIC8gcG93KDIuMGYsIDE2LjBmKSk7CisgICAgRVhQRUNUX0VRKE1lZGlh
VGltZSgxLCAxIDw8IDMwKS50b0RvdWJsZSgpLCAxIC8gcG93KDIuMCwgMzAuMCkpOworICAgIEVY
UEVDVF9FUShNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoTV9QSSwgMSA8PCAzMCksIE1lZGlh
VGltZSgzMzczMjU5NDI2LCAxIDw8IDMwKSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6Y3Jl
YXRlV2l0aEZsb2F0KElORklOSVRZKSwgTWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgp
KTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjpjcmVhdGVXaXRoRmxvYXQoLUlORklOSVRZKSwg
TWVkaWFUaW1lOjpuZWdhdGl2ZUluZmluaXRlVGltZSgpKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFU
aW1lOjpjcmVhdGVXaXRoRmxvYXQoTkFOKSwgTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpKTsKKyAg
ICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKElORklOSVRZKSwgTWVkaWFU
aW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjpj
cmVhdGVXaXRoRG91YmxlKC1JTkZJTklUWSksIE1lZGlhVGltZTo6bmVnYXRpdmVJbmZpbml0ZVRp
bWUoKSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShOQU4pLCBN
ZWRpYVRpbWU6OmludmFsaWRUaW1lKCkpOworCisgICAgLy8gT3ZlcmZsb3cgQmVoYXZpb3IKKyAg
ICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjpjcmVhdGVXaXRoRmxvYXQocG93KDIuMGYsIDY0LjBmKSks
IE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKSk7CisgICAgRVhQRUNUX0VRKE1lZGlh
VGltZTo6Y3JlYXRlV2l0aEZsb2F0KC1wb3coMi4wZiwgNjQuMGYpKSwgTWVkaWFUaW1lOjpuZWdh
dGl2ZUluZmluaXRlVGltZSgpKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjpjcmVhdGVXaXRo
RmxvYXQocG93KDIuMGYsIDYzLjBmKSwgMikudGltZVNjYWxlKCksIDEpOworICAgIEVYUEVDVF9F
UShNZWRpYVRpbWU6OmNyZWF0ZVdpdGhGbG9hdChwb3coMi4wZiwgNjMuMGYpLCAzKS50aW1lU2Nh
bGUoKSwgMSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShwb3co
Mi4wLCA2NC4wKSksIE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKSk7CisgICAgRVhQ
RUNUX0VRKE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZSgtcG93KDIuMCwgNjQuMCkpLCBNZWRp
YVRpbWU6Om5lZ2F0aXZlSW5maW5pdGVUaW1lKCkpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6
OmNyZWF0ZVdpdGhEb3VibGUocG93KDIuMCwgNjMuMCksIDIpLnRpbWVTY2FsZSgpLCAxKTsKKyAg
ICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKHBvdygyLjAsIDYzLjApLCAz
KS50aW1lU2NhbGUoKSwgMSk7CisgICAgRVhQRUNUX0VRKChNZWRpYVRpbWUobnVtZXJpY19saW1p
dHM8aW50NjRfdD46Om1heCgpLCAyKSArIE1lZGlhVGltZShudW1lcmljX2xpbWl0czxpbnQ2NF90
Pjo6bWF4KCksIDIpKS50aW1lU2NhbGUoKSwgMSk7CisgICAgRVhQRUNUX0VRKChNZWRpYVRpbWUo
bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1pbigpLCAyKSAtIE1lZGlhVGltZShudW1lcmljX2xp
bWl0czxpbnQ2NF90Pjo6bWF4KCksIDIpKS50aW1lU2NhbGUoKSwgMSk7CisgICAgRVhQRUNUX0VR
KE1lZGlhVGltZShudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCksIDEpICsgTWVkaWFUaW1l
KG51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKSwgMSksIE1lZGlhVGltZTo6cG9zaXRpdmVJ
bmZpbml0ZVRpbWUoKSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZShudW1lcmljX2xpbWl0czxp
bnQ2NF90Pjo6bWluKCksIDEpICsgTWVkaWFUaW1lKG51bWVyaWNfbGltaXRzPGludDY0X3Q+Ojpt
aW4oKSwgMSksIE1lZGlhVGltZTo6bmVnYXRpdmVJbmZpbml0ZVRpbWUoKSk7CisgICAgRVhQRUNU
X0VRKE1lZGlhVGltZShudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWluKCksIDEpIC0gTWVkaWFU
aW1lKG51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKSwgMSksIE1lZGlhVGltZTo6bmVnYXRp
dmVJbmZpbml0ZVRpbWUoKSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZShudW1lcmljX2xpbWl0
czxpbnQ2NF90Pjo6bWF4KCksIDEpIC0gTWVkaWFUaW1lKG51bWVyaWNfbGltaXRzPGludDY0X3Q+
OjptaW4oKSwgMSksIE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKSk7Cit9CisKK30K
Kwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146884</attachid>
            <date>2012-06-11 11:43:05 -0700</date>
            <delta_ts>2012-06-11 11:48:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88787-20120611114304.patch</filename>
            <type>text/plain</type>
            <size>45725</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5OTgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
M2M1MDAxMTliNjEyMjEwY2FhYWM2MzUwYWZhZTg1MmE5YWZmNWJiLi4wYWJkZDE3MmQ2YjkzMzZj
NzZlNGI3ZWI5M2Q5YjU3M2RlN2EwNTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxMi0wNi0xMSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4K
KworICAgICAgICBTdXBwb3J0IGEgcmF0aW9uYWwgdGltZSBjbGFzcyBmb3IgdXNlIGJ5IG1lZGlh
IGVsZW1lbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODg3ODcKKworICAgICAgICBSZS1leHBvcnQgV1RGOjpNZWRpYVRpbWUgZnJvbSBKYXZhU2Ny
aXB0Q29yZS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLm9yZGVyOgorCiAyMDEyLTA2LTExICBDYXJsb3MgR2FyY2lhIENh
bXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBGaXggbWFr
ZSBkaXN0Y2hlY2sgaXNzdWVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA0NTc0OGE0ODBiMDRiNDRmMWEyYTNlOGNhMWM1ZWFj
Yjg1ZmUwNTY5Li5kYzU4N2MzZDNmM2EzMTQwZTYxOGQ3ZmQ0MGYyNWYzOTUxZWM2OTE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDExOSBAQAorMjAxMi0wNi0xMSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxl
LmNvbT4KKworICAgICAgICBTdXBwb3J0IGEgcmF0aW9uYWwgdGltZSBjbGFzcyBmb3IgdXNlIGJ5
IG1lZGlhIGVsZW1lbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODg3ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgYSBuZXcgTWVkaWFUaW1lIGNsYXNzIHdoaWNoIGltcGxlbWVudHMgcmF0aW9u
YWwgbWF0aCBvcGVyYXRpb25zLgorCisgICAgICAgIEFkZCBjb21tb24gY29uc3RydWN0b3JzIGFu
ZCBhc3NpZ25tZW50IG9wZXJhdG9yczoKKyAgICAgICAgKiB3dGYvTWVkaWFUaW1lLmNwcDogQWRk
ZWQuCisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6TWVkaWFUaW1lKToKKyAgICAgICAgKFdURjo6
TWVkaWFUaW1lOjp+TWVkaWFUaW1lKToKKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpvcGVyYXRv
cj0pOgorCisgICAgICAgIEFkZCBjb21tb24gbWF0aCBvcGVyYXRvcnM6CisgICAgICAgICogd3Rm
L01lZGlhVGltZS5jcHA6CisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6b3BlcmF0b3IrKToKKyAg
ICAgICAgKFdURjo6TWVkaWFUaW1lOjpvcGVyYXRvci0pOgorICAgICAgICAoV1RGOjpNZWRpYVRp
bWU6Om9wZXJhdG9yPCk6CisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6b3BlcmF0b3I+KToKKyAg
ICAgICAgKFdURjo6TWVkaWFUaW1lOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdURjo6TWVkaWFU
aW1lOjpvcGVyYXRvcj49KToKKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpvcGVyYXRvcjw9KToK
KworICAgICAgICBBZGQgZnVuY3Rpb25zIHRvIGNoZWNrIHRoZSBNZWlhVGltZSB0aW1lIHR5cGUg
ZmxhZ3M6CisgICAgICAgICogd3RmL01lZGlhVGltZS5oOgorICAgICAgICAoV1RGOjpNZWRpYVRp
bWU6OmlzVmFsaWQpOgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6OmlzSW52YWxpZCk6CisgICAg
ICAgIChXVEY6Ok1lZGlhVGltZTo6aGFzQmVlblJvdW5kZSk6CisgICAgICAgIChXVEY6Ok1lZGlh
VGltZTo6aXNQb3NpdGl2ZUluZmluaXRlKToKKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjppc05l
Z2F0aXZlSW5maW5pdGUpOgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6OmlzSW5kZWZpbml0ZSk6
CisKKyAgICAgICAgQWRkIGNvbnN0YW50cyBmb3IgY29tbW9ubHkgdXNlZCBNZWRpYVRpbWUgdmFs
dWVzOgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6Onplcm9UaW1lKToKKyAgICAgICAgKFdURjo6
TWVkaWFUaW1lOjppbnZhbGlkVGltZSk6CisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6cG9zaXRp
dmVJbmZpbml0ZVRpbWUpOgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6Om5lZ2F0aXZlSW5maW5p
dGVUaW1lKToKKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjppbmRlZmluaXRlVGltZSk6CisKKyAg
ICAgICAgQWRkIGV4cGxpY2l0IGNvbnZlcnNpb24gZnVuY3Rpb25zIHRvIGNvbnZlcnQgdG8gYW5k
IGZyb20gZmxvYXRpbmcgcG9pbnQgdmFsdWVzLgorICAgICAgICAqIHd0Zi9NZWRpYVRpbWUuY3Bw
OgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6OmNyZWF0ZVdpdGhGbG9hdCk6CisgICAgICAgIChX
VEY6Ok1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZSk6CisgICAgICAgIChXVEY6Ok1lZGlhVGlt
ZTo6dG9GbG9hdCk6CisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6dG9Eb3VibGUpOgorCisgICAg
ICAgIEFkZCBzb21lIHVzZWZ1bCBleHBvcnRlZCBmdW5jdGlvbnM6CisgICAgICAgICogd3RmL01l
ZGlhVGltZS5jcHA6CisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6Y29tcGFyZSk6IE1hc3RlciBm
dW5jdGlvbiBmb3IgdGhlIGNvbXBhcmlzb24gb3BlcmF0b3JzIGFib3ZlLgorICAgICAgICAoV1RG
OjpNZWRpYVRpbWU6OnNldFRpbWVTY2FsZSk6IFJlc2NhbGUgdGhlIHRpbWUgdmFsdWUgdG8gYSBu
ZXcgdGltZSBzY2FsZS4KKyAgICAgICAgKFdURjo6YWJzKTogUmV0dXJuIGFuIGFic29sdXRlIHZh
bHVlIGZvciB0aGUgY3VycmVudCBNZWRpYVRpbWUuCisKKyAgICAgICAgU3RhdGljIHV0aWxpdHkg
ZnVuY3Rpb25zIHRvIGltcGxlbWVudCB0aGUgYWJvdmU6CisgICAgICAgICogd3RmL01lZGlhVGlt
ZS5jcHA6CisgICAgICAgIChXVEY6OmdyZWF0ZXN0Q29tbW9uRGl2aXNvcik6CisgICAgICAgIChX
VEY6OmxlYXN0Q29tbW9uTXVsdGlwbGUpOgorICAgICAgICAoV1RGOjpzaWdudW0pOgorCisgICAg
ICAgIEFkZCB0aGUgbmV3IGNsYXNzIHRvIHBsYXRmb3JtIGJ1aWxkIGZpbGVzOgorICAgICAgICAq
IEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV1RGLmd5cGk6CisgICAgICAgICogV1RG
LnBybzoKKyAgICAgICAgKiBXVEYudmNwcm9qL1dURi52Y3Byb2o6CisgICAgICAgICogV1RGLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKzIwMTItMDYtMTEgIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBhIHJhdGlvbmFsIHRpbWUgY2xhc3Mg
Zm9yIHVzZSBieSBtZWRpYSBlbGVtZW50cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg4Nzg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdURi5w
cm86CisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
d3RmL01lZGlhVGltZS5jcHA6IEFkZGVkLgorICAgICAgICAoV1RGKToKKyAgICAgICAgKFdURjo6
Z3JlYXRlc3RDb21tb25EaXZpc29yKToKKyAgICAgICAgKFdURjo6bGVhc3RDb21tb25NdWx0aXBs
ZSk6CisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6TWVkaWFUaW1lKToKKyAgICAgICAgKFdURjo6
TWVkaWFUaW1lOjp+TWVkaWFUaW1lKToKKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpjcmVhdGVX
aXRoRmxvYXQpOgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUpOgor
ICAgICAgICAoV1RGOjpNZWRpYVRpbWU6OnRvRmxvYXQpOgorICAgICAgICAoV1RGOjpNZWRpYVRp
bWU6OnRvRG91YmxlKToKKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpvcGVyYXRvcj0pOgorICAg
ICAgICAoV1RGOjpNZWRpYVRpbWU6Om9wZXJhdG9yKyk6CisgICAgICAgIChXVEY6Ok1lZGlhVGlt
ZTo6b3BlcmF0b3ItKToKKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpvcGVyYXRvcjwpOgorICAg
ICAgICAoV1RGOjpNZWRpYVRpbWU6Om9wZXJhdG9yPik6CisgICAgICAgIChXVEY6Ok1lZGlhVGlt
ZTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6b3BlcmF0b3I+PSk6Cisg
ICAgICAgIChXVEY6Ok1lZGlhVGltZTo6b3BlcmF0b3I8PSk6CisgICAgICAgIChXVEY6Ok1lZGlh
VGltZTo6Y29tcGFyZSk6CisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6emVyb1RpbWUpOgorICAg
ICAgICAoV1RGOjpNZWRpYVRpbWU6OmludmFsaWRUaW1lKToKKyAgICAgICAgKFdURjo6TWVkaWFU
aW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSk6CisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6bmVn
YXRpdmVJbmZpbml0ZVRpbWUpOgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6OmluZGVmaW5pdGVU
aW1lKToKKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpzZXRUaW1lU2NhbGUpOgorICAgICAgICAo
V1RGOjpzaWdudW0pOgorICAgICAgICAoV1RGOjpXVEY6OmFicyk6CisgICAgICAgICogd3RmL01l
ZGlhVGltZS5oOiBBZGRlZC4KKyAgICAgICAgKFdURik6CisgICAgICAgIChNZWRpYVRpbWUpOgor
ICAgICAgICAoV1RGOjpNZWRpYVRpbWU6OmlzVmFsaWQpOgorICAgICAgICAoV1RGOjpNZWRpYVRp
bWU6OmlzSW52YWxpZCk6CisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6aGFzQmVlblJvdW5kZWQp
OgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6OmlzUG9zaXRpdmVJbmZpbml0ZSk6CisgICAgICAg
IChXVEY6Ok1lZGlhVGltZTo6aXNOZWdhdGl2ZUluZmluaXRlKToKKyAgICAgICAgKFdURjo6TWVk
aWFUaW1lOjppc0luZGVmaW5pdGUpOgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6OnRpbWVWYWx1
ZSk6CisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6dGltZVNjYWxlKToKKwogMjAxMi0wNi0xMSAg
Q2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5y
ZXZpZXdlZC4gRml4IG1ha2UgZGlzdGNoZWNrIGlzc3Vlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5vcmRlciBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS5vcmRlcgppbmRleCAzYTQ1MDA3NWExMzQzZTU5ZTdiMWVkYTExYTVm
N2NkODAzYzg2NWFhLi4wNzQyYTBhMGUyYjZkY2RkODRiZWY3OGNiYzE2ZTdlYWI4OTlhNTJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUub3JkZXIKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLm9yZGVyCkBAIC0yNDk0LDMg
KzI0OTQsMTYgQEAgX19aTjNXVEY2VmVjdG9ySU4zSlNDMTBBU1RCdWlsZGVyMTRBc3NpZ25tZW50
SW5mb0VMbTEwRUUxNGV4cGFuZENhcGFjaXR5RW0KIF9jdGlfb3BfcHV0X2J5X2lkX2RpcmVjdF9n
ZW5lcmljCiBfX1pOM1dURjlIYXNoVGFibGVJUE4zSlNDMTZGdW5jdGlvbkJvZHlOb2RlRVN0NHBh
aXJJUzNfakVOU18xOFBhaXJGaXJzdEV4dHJhY3RvcklTNV9FRU5TXzdQdHJIYXNoSVMzX0VFTlNf
MTRQYWlySGFzaFRyYWl0c0lOU18xMEhhc2hUcmFpdHNJUzNfRUVOU0JfSWpFRUVFU0NfRTRmaW5k
SVMzX05TXzIySWRlbnRpdHlIYXNoVHJhbnNsYXRvcklTM19TNV9TOV9FRUVFTlNfMTdIYXNoVGFi
bGVJdGVyYXRvcklTM19TNV9TN19TOV9TRV9TQ19FRVJLVF8KIF9fWk4zV1RGOUhhc2hUYWJsZUlQ
TjNKU0MxNkZ1bmN0aW9uQm9keU5vZGVFU3Q0cGFpcklTM19qRU5TXzE4UGFpckZpcnN0RXh0cmFj
dG9ySVM1X0VFTlNfN1B0ckhhc2hJUzNfRUVOU18xNFBhaXJIYXNoVHJhaXRzSU5TXzEwSGFzaFRy
YWl0c0lTM19FRU5TQl9JakVFRUVTQ19FNmV4cGFuZEV2CitfX1pOM1dURjNhYnNFUktOU185TWVk
aWFUaW1lRQorX19aTjNXVEY5TWVkaWFUaW1lMTFpbnZhbGlkVGltZUV2CitfX1pOM1dURjlNZWRp
YVRpbWUxNGluZGVmaW5pdGVUaW1lRXYKK19fWk4zV1RGOU1lZGlhVGltZTE1Y3JlYXRlV2l0aEZs
b2F0RWZpCitfX1pOM1dURjlNZWRpYVRpbWUxNmNyZWF0ZVdpdGhEb3VibGVFZGkKK19fWk4zV1RG
OU1lZGlhVGltZTIwbmVnYXRpdmVJbmZpbml0ZVRpbWVFdgorX19aTjNXVEY5TWVkaWFUaW1lMjBw
b3NpdGl2ZUluZmluaXRlVGltZUV2CitfX1pOM1dURjlNZWRpYVRpbWVEMUV2CitfX1pOSzNXVEY5
TWVkaWFUaW1lZ3RFUktTMF8KK19fWk5LM1dURjlNZWRpYVRpbWVsdEVSS1MwXworX19aTkszV1RG
OU1lZGlhVGltZW1pRVJLUzBfCitfX1pOSzNXVEY5TWVkaWFUaW1lcGxFUktTMF8KKwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dURi9HTlVtYWtl
ZmlsZS5saXN0LmFtCmluZGV4IDNkZmMxZGJkM2M4ODZmZTY4ZGNhYjIyOTlmNjA5Y2I0YzYzNjYx
NzguLjU2ZTJmZGQwZWM4Zjg2NDZkMDNjNmJlNGRkZDQ3M2Y2MjAwMTQ0MTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV1RGL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KQEAgLTc1LDYgKzc1LDggQEAgd3RmX3NvdXJjZXMgKz0gXAogICAgIFNvdXJj
ZS9XVEYvd3RmL01haW5UaHJlYWQuaCBcCiAgICAgU291cmNlL1dURi93dGYvTWFsbG9jWm9uZVN1
cHBvcnQuaCBcCiAgICAgU291cmNlL1dURi93dGYvTWF0aEV4dHJhcy5oIFwKKyAgICBTb3VyY2Uv
V1RGL3d0Zi9NZWRpYVRpbWUuaCBcCisgICAgU291cmNlL1dURi93dGYvTWVkaWFUaW1lLmNwcCBc
CiAgICAgU291cmNlL1dURi93dGYvTWVzc2FnZVF1ZXVlLmggXAogICAgIFNvdXJjZS9XVEYvd3Rm
L01ldGFBbGxvY2F0b3IuY3BwIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9NZXRhQWxsb2NhdG9yLmgg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYuZ3lwaSBiL1NvdXJjZS9XVEYvV1RGLmd5cGkK
aW5kZXggODY3NTg1NTA2MWQzNzRlZmFmZmU3ZDYyZTE1M2RlYjExYmJhZDAzOS4uMzNiOGU5Njdm
YTU3Zjg0MjIwMzhiNjI5NWQ3MWRlNjY0OGMwODg0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9X
VEYuZ3lwaQorKysgYi9Tb3VyY2UvV1RGL1dURi5neXBpCkBAIC0xNTAsNiArMTUwLDggQEAKICAg
ICAgICAgICAgICd3dGYvTUQ1LmNwcCcsCiAgICAgICAgICAgICAnd3RmL01haW5UaHJlYWQuY3Bw
JywKICAgICAgICAgICAgICd3dGYvTWFsbG9jWm9uZVN1cHBvcnQuaCcsCisgICAgICAgICAgICAn
d3RmL01lZGlhVGltZS5oJywKKyAgICAgICAgICAgICd3dGYvTWVkaWFUaW1lLmNwcCcsCiAgICAg
ICAgICAgICAnd3RmL051bGxQdHIuY3BwJywKICAgICAgICAgICAgICd3dGYvTnVtYmVyT2ZDb3Jl
cy5jcHAnLAogICAgICAgICAgICAgJ3d0Zi9OdW1iZXJPZkNvcmVzLmgnLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi9XVEYucHJvIGIvU291cmNlL1dURi9XVEYucHJvCmluZGV4IDMzODQ3NzBhOGVk
N2RmZDM5NDYzNzgxY2RhOWU4OThlOThlZDFiYWEuLmYxMTYyN2EwMTNiYmVjMmM4MWM0MTYyNTli
NzEwN2Y0OTEwMTdmYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnBybworKysgYi9Tb3Vy
Y2UvV1RGL1dURi5wcm8KQEAgLTc2LDYgKzc2LDcgQEAgSEVBREVSUyArPSBcCiAgICAgTWFsbG9j
Wm9uZVN1cHBvcnQuaCBcCiAgICAgTWF0aEV4dHJhcy5oIFwKICAgICBNRDUuaCBcCisgICAgTWVk
aWFUaW1lLmggXAogICAgIE1lc3NhZ2VRdWV1ZS5oIFwKICAgICBNZXRhQWxsb2NhdG9yLmggXAog
ICAgIE1ldGFBbGxvY2F0b3JIYW5kbGUuaCBcCkBAIC0xODksNiArMTkwLDcgQEAgU09VUkNFUyAr
PSBcCiAgICAgSGFzaFRhYmxlLmNwcCBcCiAgICAgTUQ1LmNwcCBcCiAgICAgTWFpblRocmVhZC5j
cHAgXAorICAgIE1lZGlhVGltZS5jcHAgXAogICAgIE1ldGFBbGxvY2F0b3IuY3BwIFwKICAgICBO
dWxsUHRyLmNwcCBcCiAgICAgTnVtYmVyT2ZDb3Jlcy5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi9XVEYudmNwcm9qL1dURi52Y3Byb2ogYi9Tb3VyY2UvV1RGL1dURi52Y3Byb2ovV1RGLnZj
cHJvagppbmRleCAyMTkwZGFlMWVmZmVhZTMzOTUzMzI3ZTNjYjczZTc3ZTZlZTQ2ZDU4Li5mYjFh
MmNlOTY1MjUzYjFlMTQxYmNlMjEwYTJhZDg2MmUwMzJjYTdhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL1dURi52Y3Byb2ovV1RGLnZjcHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi52Y3Byb2ovV1RG
LnZjcHJvagpAQCAtODczLDYgKzg3MywxNCBAQAogCQkJPgogCQk8L0ZpbGU+CiAJCTxGaWxlCisJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXHd0ZlxNZWRpYVRpbWUuaCIKKwkJCT4KKwkJPC9GaWxlPgorCQk8
RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlx3dGZcTWVkaWFUaW1lLmNwcCIKKwkJCT4KKwkJPC9G
aWxlPgorCQk8RmlsZQogCQkJUmVsYXRpdmVQYXRoPSIuLlx3dGZcTWVzc2FnZVF1ZXVlLmgiCiAJ
CQk+CiAJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGJhNDU3NjQzZmIzYmExZDUxNmIzZWY5MTE2OWFhYTFiYzcwYTU1N2UuLmViZWViNDljOTNl
ZjdjZDNmYzZmMjRlOTFiZjk5NjhhOGE5MzQxZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RG
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMjQxLDYgKzI0MSw4IEBACiAJCUE4QTQ3NDg2MTUxQTgyNUIw
MDQxMjNGRiAvKiBXVEZUaHJlYWREYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MzdBMTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJlYWRE
YXRhLmNwcCAqLzsgfTsKIAkJQThBNDc0ODcxNTFBODI1QjAwNDEyM0ZGIC8qIFdURlRocmVhZERh
dGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3
MzdCMTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJlYWREYXRhLmggKi87IH07CiAJCUE4QTQ3NDhD
MTUxQTgyNjQwMDQxMjNGRiAvKiBjb25maWcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3NDhCMTUxQTgyNjQwMDQxMjNGRiAvKiBjb25maWcuaCAq
LzsgfTsKKwkJQ0Q1NDk3QUMxNTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDU0OTdBQTE1ODU3RDAz
MDBCNUJDMzAgLyogTWVkaWFUaW1lLmNwcCAqLzsgfTsKKwkJQ0Q1NDk3QUQxNTg1N0QwMzAwQjVC
QzMwIC8qIE1lZGlhVGltZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0Q1NDk3QUIxNTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5oICovOyB9Owog
LyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEZpbGVSZWZlcmVu
Y2Ugc2VjdGlvbiAqLwpAQCAtNDg4LDYgKzQ5MCw4IEBACiAJCUE4QTQ3MzdBMTUxQTgyNUIwMDQx
MjNGRiAvKiBXVEZUaHJlYWREYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdURlRocmVhZERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
OEE0NzM3QjE1MUE4MjVCMDA0MTIzRkYgLyogV1RGVGhyZWFkRGF0YS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXVEZUaHJlYWREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUE4QTQ3NDhCMTUxQTgyNjQwMDQxMjNGRiAvKiBjb25maWcuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gY29uZmlnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUNENTQ5N0FBMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFUaW1lLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQ0Q1NDk3QUIxNTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVRpbWUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAog
LyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAtNjIzLDYgKzYy
Nyw4IEBACiAJCQkJQThBNDcyQzkxNTFBODI1QjAwNDEyM0ZGIC8qIE1hdGhFeHRyYXMuaCAqLywK
IAkJCQlBOEE0NzJDQTE1MUE4MjVCMDA0MTIzRkYgLyogTUQ1LmNwcCAqLywKIAkJCQlBOEE0NzJD
QjE1MUE4MjVCMDA0MTIzRkYgLyogTUQ1LmggKi8sCisJCQkJQ0Q1NDk3QUExNTg1N0QwMzAwQjVC
QzMwIC8qIE1lZGlhVGltZS5jcHAgKi8sCisJCQkJQ0Q1NDk3QUIxNTg1N0QwMzAwQjVCQzMwIC8q
IE1lZGlhVGltZS5oICovLAogCQkJCUE4QTQ3MkNDMTUxQTgyNUIwMDQxMjNGRiAvKiBNZXNzYWdl
UXVldWUuaCAqLywKIAkJCQlBOEE0NzJDRDE1MUE4MjVCMDA0MTIzRkYgLyogTWV0YUFsbG9jYXRv
ci5jcHAgKi8sCiAJCQkJQThBNDcyQ0UxNTFBODI1QjAwNDEyM0ZGIC8qIE1ldGFBbGxvY2F0b3Iu
aCAqLywKQEAgLTkzMyw2ICs5MzksNyBAQAogCQkJCUE4QTQ3M0U3MTUxQTgyNUIwMDQxMjNGRiAv
KiBNYWxsb2Nab25lU3VwcG9ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczRTgxNTFBODI1
QjAwNDEyM0ZGIC8qIE1hdGhFeHRyYXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3M0VBMTUx
QTgyNUIwMDQxMjNGRiAvKiBNRDUuaCBpbiBIZWFkZXJzICovLAorCQkJCUNENTQ5N0FEMTU4NTdE
MDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3M0VCMTUx
QTgyNUIwMDQxMjNGRiAvKiBNZXNzYWdlUXVldWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3
M0VEMTUxQTgyNUIwMDQxMjNGRiAvKiBNZXRhQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBOEE0NzNFRTE1MUE4MjVCMDA0MTIzRkYgLyogTWV0YUFsbG9jYXRvckhhbmRsZS5oIGluIEhl
YWRlcnMgKi8sCkBAIC0xMTg0LDYgKzExOTEsNyBAQAogCQkJCUE4QTQ3NDdCMTUxQTgyNUIwMDQx
MjNGRiAvKiBVUkxTZWdtZW50cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQ4NjE1MUE4
MjVCMDA0MTIzRkYgLyogV1RGVGhyZWFkRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDNG
NjExRjE1NjVGMEY5MDBEQjUxNEEgLyogUkFNU2l6ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlD
RDU0OTdBQzE1ODU3RDAzMDBCNUJDMzAgLyogTWVkaWFUaW1lLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWVkaWFUaW1lLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L01lZGlhVGltZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTc2OWVmYjZkMjI3MGZjZmQ3NWNiYmMyZjFiMzU3
OGVmNmZmMTA0ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL01lZGlhVGltZS5j
cHAKQEAgLTAsMCArMSwzNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIg
dGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMg
b2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZWRp
YVRpbWUuaCIKKworI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFy
aXRobWV0aWMuaD4KKwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKworbmFtZXNwYWNlIFdURiB7CisK
K3N0YXRpYyBpbnQzMl90IGdyZWF0ZXN0Q29tbW9uRGl2aXNvcihpbnQzMl90IGEsIGludDMyX3Qg
YikKK3sKKyAgICAvLyBFdWNsaWQncyBBbGdvcml0aG0KKyAgICBpbnQzMl90IHRlbXAgPSAwOwor
ICAgIHdoaWxlIChiKSB7CisgICAgICAgIHRlbXAgPSBiOworICAgICAgICBiID0gYSAlIGI7Cisg
ICAgICAgIGEgPSB0ZW1wOworICAgIH0KKyAgICByZXR1cm4gYTsKK30KKworc3RhdGljIGludDMy
X3QgbGVhc3RDb21tb25NdWx0aXBsZShpbnQzMl90IGEsIGludDMyX3QgYiwgaW50MzJfdCAmcmVz
dWx0KQoreworICAgIHJldHVybiBzYWZlTXVsdGlwbHkoYSwgYiAvIGdyZWF0ZXN0Q29tbW9uRGl2
aXNvcihhLCBiKSwgcmVzdWx0KTsKK30KKworY29uc3QgaW50MzJfdCBNZWRpYVRpbWU6Ok1heGlt
dW1UaW1lU2NhbGUgPSAweDdmZmZmZmZmTDsKKworTWVkaWFUaW1lOjpNZWRpYVRpbWUoKQorICAg
IDogbV90aW1lVmFsdWUoMCkKKyAgICAsIG1fdGltZVNjYWxlKERlZmF1bHRUaW1lU2NhbGUpCisg
ICAgLCBtX3RpbWVGbGFncyhWYWxpZCkKK3sKK30KKworTWVkaWFUaW1lOjpNZWRpYVRpbWUoaW50
NjRfdCB2YWx1ZSwgaW50MzJfdCBzY2FsZSwgdWludDMyX3QgZmxhZ3MpCisgICAgOiBtX3RpbWVW
YWx1ZSh2YWx1ZSkKKyAgICAsIG1fdGltZVNjYWxlKHNjYWxlKQorICAgICwgbV90aW1lRmxhZ3Mo
ZmxhZ3MpCit7Cit9CisKK01lZGlhVGltZTo6fk1lZGlhVGltZSgpCit7Cit9CisKK01lZGlhVGlt
ZTo6TWVkaWFUaW1lKGNvbnN0IE1lZGlhVGltZSYgcmhzKQoreworICAgICp0aGlzID0gcmhzOwor
fQorCitNZWRpYVRpbWUgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRmxvYXQoZmxvYXQgZmxvYXRUaW1l
LCBpbnQzMl90IHRpbWVTY2FsZSkKK3sKKyAgICBpZiAoZmxvYXRUaW1lICE9IGZsb2F0VGltZSkK
KyAgICAgICAgcmV0dXJuIGludmFsaWRUaW1lKCk7CisgICAgaWYgKHN0ZDo6aXNpbmYoZmxvYXRU
aW1lKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6c2lnbmJpdChmbG9hdFRpbWUpID8gbmVnYXRpdmVJ
bmZpbml0ZVRpbWUoKSA6IHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7CisgICAgaWYgKGZsb2F0VGlt
ZSA+IG51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKSkKKyAgICAgICAgcmV0dXJuIHBvc2l0
aXZlSW5maW5pdGVUaW1lKCk7CisgICAgaWYgKGZsb2F0VGltZSA8IG51bWVyaWNfbGltaXRzPGlu
dDY0X3Q+OjptaW4oKSkKKyAgICAgICAgcmV0dXJuIG5lZ2F0aXZlSW5maW5pdGVUaW1lKCk7CisK
KyAgICB3aGlsZSAoZmxvYXRUaW1lICogdGltZVNjYWxlID4gbnVtZXJpY19saW1pdHM8aW50NjRf
dD46Om1heCgpKQorICAgICAgICB0aW1lU2NhbGUgLz0gMjsKKyAgICByZXR1cm4gTWVkaWFUaW1l
KHN0YXRpY19jYXN0PGludDY0X3Q+KGZsb2F0VGltZSAqIHRpbWVTY2FsZSksIHRpbWVTY2FsZSwg
VmFsaWQpOworfQorCitNZWRpYVRpbWUgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKGRvdWJs
ZSBkb3VibGVUaW1lLCBpbnQzMl90IHRpbWVTY2FsZSkKK3sKKyAgICBpZiAoZG91YmxlVGltZSAh
PSBkb3VibGVUaW1lKQorICAgICAgICByZXR1cm4gaW52YWxpZFRpbWUoKTsKKyAgICBpZiAoc3Rk
Ojppc2luZihkb3VibGVUaW1lKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6c2lnbmJpdChkb3VibGVU
aW1lKSA/IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCkgOiBwb3NpdGl2ZUluZmluaXRlVGltZSgpOwor
ICAgIGlmIChkb3VibGVUaW1lID4gbnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgpKQorICAg
ICAgICByZXR1cm4gcG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKKyAgICBpZiAoZG91YmxlVGltZSA8
IG51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSkKKyAgICAgICAgcmV0dXJuIG5lZ2F0aXZl
SW5maW5pdGVUaW1lKCk7CisKKyAgICB3aGlsZSAoZG91YmxlVGltZSAqIHRpbWVTY2FsZSA+IG51
bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKSkKKyAgICAgICAgdGltZVNjYWxlIC89IDI7Cisg
ICAgcmV0dXJuIE1lZGlhVGltZShzdGF0aWNfY2FzdDxpbnQ2NF90Pihkb3VibGVUaW1lICogdGlt
ZVNjYWxlKSwgdGltZVNjYWxlLCBWYWxpZCk7Cit9CisKK2Zsb2F0IE1lZGlhVGltZTo6dG9GbG9h
dCgpIGNvbnN0Cit7CisgICAgaWYgKGlzSW52YWxpZCgpIHx8IGlzSW5kZWZpbml0ZSgpKQorICAg
ICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OnF1aWV0X05hTigpOworICAg
IGlmIChpc1Bvc2l0aXZlSW5maW5pdGUoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19s
aW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpOworICAgIGlmIChpc05lZ2F0aXZlSW5maW5pdGUoKSkK
KyAgICAgICAgcmV0dXJuIC1zdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKTsK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fdGltZVZhbHVlKSAvIG1fdGltZVNjYWxl
OworfQorCitkb3VibGUgTWVkaWFUaW1lOjp0b0RvdWJsZSgpIGNvbnN0Cit7CisgICAgaWYgKGlz
SW52YWxpZCgpIHx8IGlzSW5kZWZpbml0ZSgpKQorICAgICAgICByZXR1cm4gc3RkOjpudW1lcmlj
X2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKTsKKyAgICBpZiAoaXNQb3NpdGl2ZUluZmluaXRl
KCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5
KCk7CisgICAgaWYgKGlzTmVnYXRpdmVJbmZpbml0ZSgpKQorICAgICAgICByZXR1cm4gLXN0ZDo6
bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKTsKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8ZG91YmxlPihtX3RpbWVWYWx1ZSkgLyBtX3RpbWVTY2FsZTsKK30KKworTWVkaWFUaW1lJiBN
ZWRpYVRpbWU6Om9wZXJhdG9yPShjb25zdCBNZWRpYVRpbWUmIHJocykKK3sKKyAgICBtX3RpbWVW
YWx1ZSA9IHJocy5tX3RpbWVWYWx1ZTsKKyAgICBtX3RpbWVTY2FsZSA9IHJocy5tX3RpbWVTY2Fs
ZTsKKyAgICBtX3RpbWVGbGFncyA9IHJocy5tX3RpbWVGbGFnczsKKyAgICByZXR1cm4gKnRoaXM7
Cit9CisKK01lZGlhVGltZSBNZWRpYVRpbWU6Om9wZXJhdG9yKyhjb25zdCBNZWRpYVRpbWUmIHJo
cykgY29uc3QKK3sKKyAgICBpZiAocmhzLmlzSW52YWxpZCgpIHx8IGlzSW52YWxpZCgpKQorICAg
ICAgICByZXR1cm4gaW52YWxpZFRpbWUoKTsKKworICAgIGlmIChyaHMuaXNJbmRlZmluaXRlKCkg
fHwgaXNJbmRlZmluaXRlKCkpCisgICAgICAgIHJldHVybiBpbmRlZmluaXRlVGltZSgpOworCisg
ICAgaWYgKGlzUG9zaXRpdmVJbmZpbml0ZSgpKSB7CisgICAgICAgIGlmIChyaHMuaXNOZWdhdGl2
ZUluZmluaXRlKCkpCisgICAgICAgICAgICByZXR1cm4gaW52YWxpZFRpbWUoKTsKKyAgICAgICAg
cmV0dXJuIHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7CisgICAgfQorCisgICAgaWYgKGlzTmVnYXRp
dmVJbmZpbml0ZSgpKSB7CisgICAgICAgIGlmIChyaHMuaXNQb3NpdGl2ZUluZmluaXRlKCkpCisg
ICAgICAgICAgICByZXR1cm4gaW52YWxpZFRpbWUoKTsKKyAgICAgICAgcmV0dXJuIG5lZ2F0aXZl
SW5maW5pdGVUaW1lKCk7CisgICAgfQorCisgICAgaW50MzJfdCBjb21tb25UaW1lU2NhbGU7Cisg
ICAgaWYgKCFsZWFzdENvbW1vbk11bHRpcGxlKHRoaXMtPm1fdGltZVNjYWxlLCByaHMubV90aW1l
U2NhbGUsIGNvbW1vblRpbWVTY2FsZSkgfHwgY29tbW9uVGltZVNjYWxlID4gTWF4aW11bVRpbWVT
Y2FsZSkKKyAgICAgICAgY29tbW9uVGltZVNjYWxlID0gTWF4aW11bVRpbWVTY2FsZTsKKyAgICBN
ZWRpYVRpbWUgYSA9ICp0aGlzOworICAgIE1lZGlhVGltZSBiID0gcmhzOworICAgIGEuc2V0VGlt
ZVNjYWxlKGNvbW1vblRpbWVTY2FsZSk7CisgICAgYi5zZXRUaW1lU2NhbGUoY29tbW9uVGltZVNj
YWxlKTsKKyAgICB3aGlsZSAoIXNhZmVBZGQoYS5tX3RpbWVWYWx1ZSwgYi5tX3RpbWVWYWx1ZSwg
YS5tX3RpbWVWYWx1ZSkpIHsKKyAgICAgICAgaWYgKGNvbW1vblRpbWVTY2FsZSA9PSAxKQorICAg
ICAgICAgICAgcmV0dXJuIGEubV90aW1lVmFsdWUgPiAwID8gcG9zaXRpdmVJbmZpbml0ZVRpbWUo
KSA6IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCk7CisgICAgICAgIGNvbW1vblRpbWVTY2FsZSAvPSAy
OworICAgICAgICBhLnNldFRpbWVTY2FsZShjb21tb25UaW1lU2NhbGUpOworICAgICAgICBiLnNl
dFRpbWVTY2FsZShjb21tb25UaW1lU2NhbGUpOworICAgIH0KKyAgICByZXR1cm4gYTsKK30KKwor
TWVkaWFUaW1lIE1lZGlhVGltZTo6b3BlcmF0b3ItKGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25z
dAoreworICAgIGlmIChyaHMuaXNJbnZhbGlkKCkgfHwgaXNJbnZhbGlkKCkpCisgICAgICAgIHJl
dHVybiBpbnZhbGlkVGltZSgpOworCisgICAgaWYgKHJocy5pc0luZGVmaW5pdGUoKSB8fCBpc0lu
ZGVmaW5pdGUoKSkKKyAgICAgICAgcmV0dXJuIGluZGVmaW5pdGVUaW1lKCk7CisKKyAgICBpZiAo
aXNQb3NpdGl2ZUluZmluaXRlKCkpIHsKKyAgICAgICAgaWYgKHJocy5pc1Bvc2l0aXZlSW5maW5p
dGUoKSkKKyAgICAgICAgICAgIHJldHVybiBpbnZhbGlkVGltZSgpOworICAgICAgICByZXR1cm4g
cG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKKyAgICB9CisKKyAgICBpZiAoaXNOZWdhdGl2ZUluZmlu
aXRlKCkpIHsKKyAgICAgICAgaWYgKHJocy5pc05lZ2F0aXZlSW5maW5pdGUoKSkKKyAgICAgICAg
ICAgIHJldHVybiBpbnZhbGlkVGltZSgpOworICAgICAgICByZXR1cm4gbmVnYXRpdmVJbmZpbml0
ZVRpbWUoKTsKKyAgICB9CisKKyAgICBpbnQzMl90IGNvbW1vblRpbWVTY2FsZTsKKyAgICBpZiAo
IWxlYXN0Q29tbW9uTXVsdGlwbGUodGhpcy0+bV90aW1lU2NhbGUsIHJocy5tX3RpbWVTY2FsZSwg
Y29tbW9uVGltZVNjYWxlKSB8fCBjb21tb25UaW1lU2NhbGUgPiBNYXhpbXVtVGltZVNjYWxlKQor
ICAgICAgICBjb21tb25UaW1lU2NhbGUgPSBNYXhpbXVtVGltZVNjYWxlOworICAgIE1lZGlhVGlt
ZSBhID0gKnRoaXM7CisgICAgTWVkaWFUaW1lIGIgPSByaHM7CisgICAgYS5zZXRUaW1lU2NhbGUo
Y29tbW9uVGltZVNjYWxlKTsKKyAgICBiLnNldFRpbWVTY2FsZShjb21tb25UaW1lU2NhbGUpOwor
ICAgIHdoaWxlICghc2FmZVN1YihhLm1fdGltZVZhbHVlLCBiLm1fdGltZVZhbHVlLCBhLm1fdGlt
ZVZhbHVlKSkgeworICAgICAgICBpZiAoY29tbW9uVGltZVNjYWxlID09IDEpCisgICAgICAgICAg
ICByZXR1cm4gYS5tX3RpbWVWYWx1ZSA+IDAgPyBwb3NpdGl2ZUluZmluaXRlVGltZSgpIDogbmVn
YXRpdmVJbmZpbml0ZVRpbWUoKTsKKyAgICAgICAgY29tbW9uVGltZVNjYWxlIC89IDI7CisgICAg
ICAgIGEuc2V0VGltZVNjYWxlKGNvbW1vblRpbWVTY2FsZSk7CisgICAgICAgIGIuc2V0VGltZVNj
YWxlKGNvbW1vblRpbWVTY2FsZSk7CisgICAgfQorICAgIHJldHVybiBhOworfQorCitib29sIE1l
ZGlhVGltZTo6b3BlcmF0b3I8KGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdAoreworICAgIHJl
dHVybiBjb21wYXJlKHJocykgPT0gTGVzc1RoYW47Cit9CisKK2Jvb2wgTWVkaWFUaW1lOjpvcGVy
YXRvcj4oY29uc3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNvbXBhcmUo
cmhzKSA9PSBHcmVhdGVyVGhhbjsKK30KKworYm9vbCBNZWRpYVRpbWU6Om9wZXJhdG9yPT0oY29u
c3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNvbXBhcmUocmhzKSA9PSBF
cXVhbFRvOworfQorCitib29sIE1lZGlhVGltZTo6b3BlcmF0b3I+PShjb25zdCBNZWRpYVRpbWUm
IHJocykgY29uc3QKK3sKKyAgICByZXR1cm4gY29tcGFyZShyaHMpID49IEVxdWFsVG87Cit9CisK
K2Jvb2wgTWVkaWFUaW1lOjpvcGVyYXRvcjw9KGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdAor
eworICAgIHJldHVybiBjb21wYXJlKHJocykgPD0gRXF1YWxUbzsKK30KKworTWVkaWFUaW1lOjpD
b21wYXJpc29uRmxhZ3MgTWVkaWFUaW1lOjpjb21wYXJlKGNvbnN0IE1lZGlhVGltZSYgcmhzKSBj
b25zdAoreworICAgIGlmICgoaXNQb3NpdGl2ZUluZmluaXRlKCkgJiYgcmhzLmlzUG9zaXRpdmVJ
bmZpbml0ZSgpKQorICAgICAgICB8fCAoaXNOZWdhdGl2ZUluZmluaXRlKCkgJiYgcmhzLmlzTmVn
YXRpdmVJbmZpbml0ZSgpKQorICAgICAgICB8fCAoaXNJbnZhbGlkKCkgJiYgcmhzLmlzSW52YWxp
ZCgpKQorICAgICAgICB8fCAoaXNJbmRlZmluaXRlKCkgJiYgcmhzLmlzSW5kZWZpbml0ZSgpKSkK
KyAgICAgICAgcmV0dXJuIEVxdWFsVG87CisKKyAgICBpZiAoaXNJbnZhbGlkKCkpCisgICAgICAg
IHJldHVybiBHcmVhdGVyVGhhbjsKKworICAgIGlmIChyaHMuaXNJbnZhbGlkKCkpCisgICAgICAg
IHJldHVybiBMZXNzVGhhbjsKKworICAgIGlmIChyaHMuaXNOZWdhdGl2ZUluZmluaXRlKCkgfHwg
aXNQb3NpdGl2ZUluZmluaXRlKCkpCisgICAgICAgIHJldHVybiBHcmVhdGVyVGhhbjsKKworICAg
IGlmIChyaHMuaXNQb3NpdGl2ZUluZmluaXRlKCkgfHwgaXNOZWdhdGl2ZUluZmluaXRlKCkpCisg
ICAgICAgIHJldHVybiBMZXNzVGhhbjsKKworICAgIGlmIChpc0luZGVmaW5pdGUoKSkKKyAgICAg
ICAgcmV0dXJuIEdyZWF0ZXJUaGFuOworCisgICAgaWYgKHJocy5pc0luZGVmaW5pdGUoKSkKKyAg
ICAgICAgcmV0dXJuIExlc3NUaGFuOworCisgICAgaW50NjRfdCByaHNXaG9sZSA9IHJocy5tX3Rp
bWVWYWx1ZSAvIHJocy5tX3RpbWVTY2FsZTsKKyAgICBpbnQ2NF90IGxoc1dob2xlID0gbV90aW1l
VmFsdWUgLyBtX3RpbWVTY2FsZTsKKyAgICBpZiAobGhzV2hvbGUgPiByaHNXaG9sZSkKKyAgICAg
ICAgcmV0dXJuIEdyZWF0ZXJUaGFuOworICAgIGlmIChsaHNXaG9sZSA8IHJoc1dob2xlKQorICAg
ICAgICByZXR1cm4gTGVzc1RoYW47CisKKyAgICBpbnQ2NF90IHJoc1JlbWFpbiA9IHJocy5tX3Rp
bWVWYWx1ZSAlIHJocy5tX3RpbWVTY2FsZTsKKyAgICBpbnQ2NF90IGxoc1JlbWFpbiA9IG1fdGlt
ZVZhbHVlICUgbV90aW1lU2NhbGU7CisgICAgaW50NjRfdCBsaHNGYWN0b3IgPSBsaHNSZW1haW4g
KiByaHMubV90aW1lU2NhbGU7CisgICAgaW50NjRfdCByaHNGYWN0b3IgPSByaHNSZW1haW4gKiBt
X3RpbWVTY2FsZTsKKworICAgIGlmIChsaHNGYWN0b3IgPT0gcmhzRmFjdG9yKQorICAgICAgICBy
ZXR1cm4gRXF1YWxUbzsKKyAgICByZXR1cm4gbGhzRmFjdG9yID4gcmhzRmFjdG9yID8gR3JlYXRl
clRoYW4gOiBMZXNzVGhhbjsKK30KKworY29uc3QgTWVkaWFUaW1lJiBNZWRpYVRpbWU6Onplcm9U
aW1lKCkKK3sKKyAgICBzdGF0aWMgY29uc3QgTWVkaWFUaW1lKiB0aW1lID0gbmV3IE1lZGlhVGlt
ZSgwLCAxLCBWYWxpZCk7CisgICAgcmV0dXJuICp0aW1lOworfQorCitjb25zdCBNZWRpYVRpbWUm
IE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKQoreworICAgIHN0YXRpYyBjb25zdCBNZWRpYVRpbWUq
IHRpbWUgPSBuZXcgTWVkaWFUaW1lKC0xLCAxLCAwKTsKKyAgICByZXR1cm4gKnRpbWU7Cit9CisK
K2NvbnN0IE1lZGlhVGltZSYgTWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpCit7Cisg
ICAgc3RhdGljIGNvbnN0IE1lZGlhVGltZSogdGltZSA9IG5ldyBNZWRpYVRpbWUoMCwgMSwgUG9z
aXRpdmVJbmZpbml0ZSB8IFZhbGlkKTsKKyAgICByZXR1cm4gKnRpbWU7Cit9CisKK2NvbnN0IE1l
ZGlhVGltZSYgTWVkaWFUaW1lOjpuZWdhdGl2ZUluZmluaXRlVGltZSgpCit7CisgICAgc3RhdGlj
IGNvbnN0IE1lZGlhVGltZSogdGltZSA9IG5ldyBNZWRpYVRpbWUoLTEsIDEsIE5lZ2F0aXZlSW5m
aW5pdGUgfCBWYWxpZCk7CisgICAgcmV0dXJuICp0aW1lOworfQorCitjb25zdCBNZWRpYVRpbWUm
IE1lZGlhVGltZTo6aW5kZWZpbml0ZVRpbWUoKQoreworICAgIHN0YXRpYyBjb25zdCBNZWRpYVRp
bWUqIHRpbWUgPSBuZXcgTWVkaWFUaW1lKDAsIDEsIEluZGVmaW5pdGUgfCBWYWxpZCk7CisgICAg
cmV0dXJuICp0aW1lOworfQorCit2b2lkIE1lZGlhVGltZTo6c2V0VGltZVNjYWxlKGludDMyX3Qg
dGltZVNjYWxlKQoreworICAgIGlmICh0aW1lU2NhbGUgPT0gbV90aW1lU2NhbGUpCisgICAgICAg
IHJldHVybjsKKyAgICB0aW1lU2NhbGUgPSBzdGQ6Om1pbihNYXhpbXVtVGltZVNjYWxlLCB0aW1l
U2NhbGUpOworICAgIGludDY0X3Qgd2hvbGVQYXJ0ID0gbV90aW1lVmFsdWUgLyBtX3RpbWVTY2Fs
ZTsKKworICAgIC8vIElmIHNldHRpbmcgdGhlIHRpbWUgc2NhbGUgd2lsbCBjYXVzZSBhbiBvdmVy
ZmxvdywgZGl2aWRlIHRoZQorICAgIC8vIHRpbWVzY2FsZSBieSB0d28gdW50aWwgdGhlIG51bWJl
ciB3aWxsIGZpdCwgYW5kIHJvdW5kIHRoZQorICAgIC8vIHJlc3VsdC4KKyAgICBpbnQ2NF90IG5l
d1dob2xlUGFydDsKKyAgICB3aGlsZSAoIXNhZmVNdWx0aXBseSh3aG9sZVBhcnQsIHRpbWVTY2Fs
ZSwgbmV3V2hvbGVQYXJ0KSkKKyAgICAgICAgdGltZVNjYWxlIC89IDI7CisKKyAgICBpbnQ2NF90
IHJlbWFpbmRlciA9IG1fdGltZVZhbHVlICUgbV90aW1lU2NhbGU7CisgICAgbV90aW1lVmFsdWUg
PSBuZXdXaG9sZVBhcnQgKyAocmVtYWluZGVyICogdGltZVNjYWxlKSAvIG1fdGltZVNjYWxlOwor
ICAgIG1fdGltZVNjYWxlID0gdGltZVNjYWxlOworfQorCitzdGF0aWMgaW50MzJfdCBzaWdudW0o
aW50NjRfdCB2YWwpCit7CisgICAgcmV0dXJuICgwIDwgdmFsKSAtICh2YWwgPCAwKTsKK30KKwor
TWVkaWFUaW1lIGFicyhjb25zdCBNZWRpYVRpbWUmIHJocykKK3sKKyAgICBpZiAocmhzLmlzSW52
YWxpZCgpKQorICAgICAgICByZXR1cm4gTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpOworICAgIGlm
IChyaHMuaXNOZWdhdGl2ZUluZmluaXRlKCkgfHwgcmhzLmlzUG9zaXRpdmVJbmZpbml0ZSgpKQor
ICAgICAgICByZXR1cm4gTWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpOworICAgIE1l
ZGlhVGltZSB2YWwgPSByaHM7CisgICAgdmFsLm1fdGltZVZhbHVlICo9IHNpZ251bShyaHMubV90
aW1lU2NhbGUpICogc2lnbnVtKHJocy5tX3RpbWVWYWx1ZSk7CisgICAgcmV0dXJuIHZhbDsKK30K
KworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRpbWUuaCBiL1NvdXJjZS9X
VEYvd3RmL01lZGlhVGltZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQzMGQzZjViMmU5YTU3ODA5NDA5OTEyMzcw
N2Q1YjVjOWQ1NTI0ZmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRp
bWUuaApAQCAtMCwwICsxLDEwNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0
aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5h
bWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgPGNtYXRoPgorI2luY2x1ZGUgPGxp
bWl0cz4KKyNpbmNsdWRlIDxtYXRoLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisKK25hbWVzcGFj
ZSBXVEYgeworCitjbGFzcyBXVEZfRVhQT1JUX1BSSVZBVEUgTWVkaWFUaW1lIHsKK3B1YmxpYzoK
KyAgICBlbnVtIHsKKyAgICAgICAgVmFsaWQgPSAxIDw8IDAsCisgICAgICAgIEhhc0JlZW5Sb3Vu
ZGVkID0gMSA8PCAxLAorICAgICAgICBQb3NpdGl2ZUluZmluaXRlID0gMSA8PCAyLAorICAgICAg
ICBOZWdhdGl2ZUluZmluaXRlID0gMSA8PCAzLAorICAgICAgICBJbmRlZmluaXRlID0gMSA8PCA0
LAorICAgIH07CisKKyAgICBNZWRpYVRpbWUoKTsKKyAgICBNZWRpYVRpbWUoaW50NjRfdCB2YWx1
ZSwgaW50MzJfdCBzY2FsZSA9IERlZmF1bHRUaW1lU2NhbGUsIHVpbnQzMl90IGZsYWdzID0gVmFs
aWQpOworICAgIE1lZGlhVGltZShjb25zdCBNZWRpYVRpbWUmIHJocyk7CisgICAgfk1lZGlhVGlt
ZSgpOworCisgICAgc3RhdGljIE1lZGlhVGltZSBjcmVhdGVXaXRoRmxvYXQoZmxvYXQgZmxvYXRU
aW1lLCBpbnQzMl90IHRpbWVTY2FsZSA9IERlZmF1bHRUaW1lU2NhbGUpOworICAgIHN0YXRpYyBN
ZWRpYVRpbWUgY3JlYXRlV2l0aERvdWJsZShkb3VibGUgZG91YmxlVGltZSwgaW50MzJfdCB0aW1l
U2NhbGUgPSBEZWZhdWx0VGltZVNjYWxlKTsKKworICAgIGZsb2F0IHRvRmxvYXQoKSBjb25zdDsK
KyAgICBkb3VibGUgdG9Eb3VibGUoKSBjb25zdDsKKworICAgIE1lZGlhVGltZSYgb3BlcmF0b3I9
KGNvbnN0IE1lZGlhVGltZSYgcmhzKTsKKyAgICBNZWRpYVRpbWUgb3BlcmF0b3IrKGNvbnN0IE1l
ZGlhVGltZSYgcmhzKSBjb25zdDsKKyAgICBNZWRpYVRpbWUgb3BlcmF0b3ItKGNvbnN0IE1lZGlh
VGltZSYgcmhzKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yPChjb25zdCBNZWRpYVRpbWUmIHJo
cykgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvcj4oY29uc3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0
OworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3Q7CisgICAg
Ym9vbCBvcGVyYXRvcj49KGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdDsKKyAgICBib29sIG9w
ZXJhdG9yPD0oY29uc3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0OworCisgICAgdHlwZWRlZiBlbnVt
IHsKKyAgICAgICAgTGVzc1RoYW4gPSAtMSwKKyAgICAgICAgRXF1YWxUbyA9IDAsCisgICAgICAg
IEdyZWF0ZXJUaGFuID0gMSwKKyAgICB9IENvbXBhcmlzb25GbGFnczsKKworICAgIENvbXBhcmlz
b25GbGFncyBjb21wYXJlKGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdDsKKworICAgIGJvb2wg
aXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZUZsYWdzICYgVmFsaWQ7IH0KKyAgICBib29s
IGlzSW52YWxpZCgpIGNvbnN0IHsgcmV0dXJuICFpc1ZhbGlkKCk7IH0KKyAgICBib29sIGhhc0Jl
ZW5Sb3VuZGVkKCkgY29uc3QgeyByZXR1cm4gbV90aW1lRmxhZ3MgJiBIYXNCZWVuUm91bmRlZDsg
fQorICAgIGJvb2wgaXNQb3NpdGl2ZUluZmluaXRlKCkgY29uc3QgeyByZXR1cm4gbV90aW1lRmxh
Z3MgJiBQb3NpdGl2ZUluZmluaXRlOyB9CisgICAgYm9vbCBpc05lZ2F0aXZlSW5maW5pdGUoKSBj
b25zdCB7IHJldHVybiBtX3RpbWVGbGFncyAmIE5lZ2F0aXZlSW5maW5pdGU7IH0KKyAgICBib29s
IGlzSW5kZWZpbml0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZUZsYWdzICYgSW5kZWZpbml0ZTsg
fQorCisgICAgc3RhdGljIGNvbnN0IE1lZGlhVGltZSYgemVyb1RpbWUoKTsKKyAgICBzdGF0aWMg
Y29uc3QgTWVkaWFUaW1lJiBpbnZhbGlkVGltZSgpOworICAgIHN0YXRpYyBjb25zdCBNZWRpYVRp
bWUmIHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7CisgICAgc3RhdGljIGNvbnN0IE1lZGlhVGltZSYg
bmVnYXRpdmVJbmZpbml0ZVRpbWUoKTsKKyAgICBzdGF0aWMgY29uc3QgTWVkaWFUaW1lJiBpbmRl
ZmluaXRlVGltZSgpOworCisgICAgY29uc3QgaW50NjRfdCYgdGltZVZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gbV90aW1lVmFsdWU7IH0KKyAgICBjb25zdCBpbnQzMl90JiB0aW1lU2NhbGUoKSBjb25z
dCB7IHJldHVybiBtX3RpbWVTY2FsZTsgfQorCisgICAgZnJpZW5kIE1lZGlhVGltZSBhYnMoY29u
c3QgTWVkaWFUaW1lJiByaHMpOworcHJpdmF0ZToKKyAgICBzdGF0aWMgY29uc3QgaW50MzJfdCBE
ZWZhdWx0VGltZVNjYWxlID0gNjAwMDsKKyAgICBzdGF0aWMgY29uc3QgaW50MzJfdCBNYXhpbXVt
VGltZVNjYWxlOworCisgICAgdm9pZCBzZXRUaW1lU2NhbGUoaW50MzJfdCk7CisKKyAgICBpbnQ2
NF90IG1fdGltZVZhbHVlOworICAgIGludDMyX3QgbV90aW1lU2NhbGU7CisgICAgdWludDMyX3Qg
bV90aW1lRmxhZ3M7Cit9OworCitXVEZfRVhQT1JUX1BSSVZBVEUgZXh0ZXJuIE1lZGlhVGltZSBh
YnMoY29uc3QgTWVkaWFUaW1lJiByaHMpOworfQorCit1c2luZyBXVEY6Ok1lZGlhVGltZTsKK3Vz
aW5nIFdURjo6YWJzOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IGU2MDVmOGJkZjFiNjI4MzcyYjNmNTI1MDJhNmNhMmFlMDcwMWUwYmIuLjNlNWQw
NWEzODYzMDNjOTlhNTk2MGRmNGI4MjJkYzk3YjljMjEyNGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxMi0wNi0x
MSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IGEg
cmF0aW9uYWwgdGltZSBjbGFzcyBmb3IgdXNlIGJ5IG1lZGlhIGVsZW1lbnRzLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg3ODcKKworICAgICAgICBB
ZGQgdW5pdCB0ZXN0cyBmb3IgdGhlIFdURjo6TWVkaWFUaW1lIGNsYXNzLgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9HTlVt
YWtlZmlsZS5hbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkuZ3lwaToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9NZWRpYVRpbWUuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL3dpbi9UZXN0V2ViS2l0QVBJLnZjcHJv
ajoKKyAgICAgICAgKFdURjo6b3BlcmF0b3I8PCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJKToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCisyMDEyLTA2LTExICBKZXIgTm9ibGUg
IDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgYSByYXRpb25hbCB0aW1l
IGNsYXNzIGZvciB1c2UgYnkgbWVkaWEgZWxlbWVudHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODc4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9HTlVtYWtlZmlsZS5hbToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkuZ3lwaToKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9NZWRpYVRpbWUuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdURik6CisgICAgICAgIChXVEY6Om9wZXJhdG9yPDwpOgorICAgICAgICAoVGVzdFdl
YktpdEFQSSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAxMi0wNi0xMSAg
Wm9sdGFuIEhvcnZhdGggIDx6b2x0YW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdIEFkZCBj
b25maWcgdGVzdHMgZm9yIFdFQlAgaW1hZ2VkZWNvZGVyIGxpYnJhcnksIG1vZGlmeSBIQVZFKGRl
Y29kZXJsaWJyYXJ5KSB0byBVU0UoLi4uKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9HTlVtYWtlZmlsZS5hbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvR05VbWFrZWZpbGUuYW0KaW5k
ZXggZmY5MjQ5MmYzMGEyZDdiYzVmZjQ4NjFhNjJlZDg2NzkxYTgwMjRkYi4uZTE0YWUwMmJkZWEy
MjhlMjI5OTI2MWJjYzc4M2E5NDI0ZTI0MWQyMCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9HTlVtYWtlZmlsZS5hbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0dOVW1ha2VmaWxl
LmFtCkBAIC0yMTcsNiArMjE3LDEyIEBAIFByb2dyYW1zX1Rlc3RXZWJLaXRBUElfV1RGX1Rlc3RI
YXNoTWFwX0NQUEZMQUdTID0gJCh0ZXN0d2Via2l0YXBpX3d0Zl90ZXN0c19jcHBmCiBQcm9ncmFt
c19UZXN0V2ViS2l0QVBJX1dURl9UZXN0SGFzaE1hcF9MREFERCA9ICQodGVzdHdlYmtpdGFwaV93
dGZfdGVzdHNfbGRhZGQpCiBQcm9ncmFtc19UZXN0V2ViS2l0QVBJX1dURl9UZXN0SGFzaE1hcF9M
REZMQUdTID0gJCh0ZXN0d2Via2l0YXBpX3d0Zl90ZXN0c19sZGZsYWdzKQogCitQcm9ncmFtc19U
ZXN0V2ViS2l0QVBJX1dURl9UZXN0TWVkaWFUaW1lX1NPVVJDRVMgPSBcCisJVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvTWVkaWFUaW1lLmNwcAorUHJvZ3JhbXNfVGVzdFdlYktpdEFQSV9X
VEZfVGVzdE1lZGlhVGltZV9DUFBGTEFHUyA9ICQodGVzdHdlYmtpdGFwaV93ZWJraXQyX3Rlc3Rz
X2NwcGZsYWdzKQorUHJvZ3JhbXNfVGVzdFdlYktpdEFQSV9XVEZfVGVzdE1lZGlhVGltZV9MREFE
RCA9ICQodGVzdHdlYmtpdGFwaV93ZWJraXQyX3Rlc3RzX2xkYWRkKQorUHJvZ3JhbXNfVGVzdFdl
YktpdEFQSV9XVEZfVGVzdE1lZGlhVGltZV9MREZMQUdTID0gJCh0ZXN0d2Via2l0YXBpX3dlYmtp
dDJfdGVzdHNfbGRmbGFncykKKwogUHJvZ3JhbXNfVGVzdFdlYktpdEFQSV9XVEZfVGVzdFJlZEJs
YWNrVHJlZV9TT1VSQ0VTID0gXAogCVRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZEJs
YWNrVHJlZS5jcHAKIFByb2dyYW1zX1Rlc3RXZWJLaXRBUElfV1RGX1Rlc3RSZWRCbGFja1RyZWVf
Q1BQRkxBR1MgPSAkKHRlc3R3ZWJraXRhcGlfd3RmX3Rlc3RzX2NwcGZsYWdzKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLmd5cGkgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkuZ3lwaQppbmRleCBjNTExODdmYTA2MzYwYTI5MTQ4MjM3NWEz
MDYxODQxOTcxN2I2Y2U3Li45NDFlNzc2ZDVmNGQwMWU5YjM5MzdjYThjZTQ3ZjlkZDc3ZjQ1ZWY3
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkuZ3lwaQorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkuZ3lwaQpAQCAtMzQsNiArMzQsNyBA
QAogICAgICAgICAgICAgJ1Rlc3RzL1dURi9DaGVja2VkQXJpdGhtZXRpY09wZXJhdGlvbnMuY3Bw
JywKICAgICAgICAgICAgICdUZXN0cy9XVEYvRnVuY3Rpb25hbC5jcHAnLAogICAgICAgICAgICAg
J1Rlc3RzL1dURi9IYXNoTWFwLmNwcCcsCisgICAgICAgICAgICAnVGVzdHMvV1RGL01lZGlhVGlt
ZS5jcHAnLAogICAgICAgICAgICAgJ1Rlc3RzL1dURi9SZWRCbGFja1RyZWUuY3BwJywKICAgICAg
ICAgICAgICdUZXN0cy9XVEYvU3RyaW5nQnVpbGRlci5jcHAnLAogICAgICAgICAgICAgJ1Rlc3Rz
L1dURi9TdHJpbmdPcGVyYXRvcnMuY3BwJywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYzUx
OWMwMjMxNmUyMTVkZDBmMjdmYzc4NjY1YjhkZmYzYTY2YjVjZS4uZGQzNWVkZjMwOTg1YzAxOTBl
OWUxZTA4ODViZTNiZmY0MTg2YjE3YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0NCw2
ICsxNDQsNyBAQAogCQlDNTQwRjc4NDE1MkU1QTlBMDBBNDBDOEMgLyogdmVyYm9zZU1hcmt1cC5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEM1NDBGNzgzMTUyRTVBNzgwMEE0MEM4QyAvKiB2ZXJib3NlTWFya3VwLmh0bWwgKi87IH07CiAJ
CUUxMjIwREEwMTU1QjI1NDgwMDEzRTJGQyAvKiBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNv
dXJjZUxvYWREZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUxMjIwRDlGMTU1QjI1NDgwMDEzRTJGQyAvKiBNZW1vcnlDYWNoZURpc2FibGVX
aXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSAqLzsgfTsKIAkJRTEyMjBEQ0ExNTVCMjhBQTAw
MTNFMkZDIC8qIE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTEyMjBEQzkxNTVCMjg3RDAwMTNFMkZDIC8qIE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291
cmNlTG9hZERlbGVnYXRlLmh0bWwgKi87IH07CisJCUNENTQ5N0I0MTU4NTdGMEMwMEI1QkMzMCAv
KiBNZWRpYVRpbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0Q1NDk3QjMxNTg1N0YwQzAwQjVCQzMwIC8qIE1lZGlhVGltZS5jcHAgKi87IH07CiAJ
CUU0OTAyOTY4MTRFMkUzQTQwMDJCRUREMSAvKiBUeXBpbmdTdHlsZUNyYXNoLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ5MDI5NjcxNEUyRTNBNDAw
MkJFREQxIC8qIFR5cGluZ1N0eWxlQ3Jhc2gubW0gKi87IH07CiAJCUYzRkMzRUUzMTM2NzhCNzMw
MDEyNkE2NSAvKiBsaWJndGVzdC5hIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjNGQzNFRTIxMzY3OEI3MzAwMTI2QTY1IC8qIGxpYmd0ZXN0LmEgKi87
IH07CiAJCUY2RjNGMjkxMTMzNDJGRUIwMEE2QkYxOSAvKiBDb29raWVNYW5hZ2VyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2RjNGMjkwMTMzNDJG
RUIwMEE2QkYxOSAvKiBDb29raWVNYW5hZ2VyLmNwcCAqLzsgfTsKQEAgLTM2Myw2ICszNjQsNyBA
QAogCQlDNTQwRjc4MzE1MkU1QTc4MDBBNDBDOEMgLyogdmVyYm9zZU1hcmt1cC5odG1sICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC5odG1sOyBwYXRoID0gdmVyYm9zZU1hcmt1cC5odG1sOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMTIyMEQ5RjE1NUIyNTQ4MDAxM0UyRkMgLyogTWVtb3J5Q2FjaGVE
aXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWRE
ZWxlZ2F0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEyMjBEQzkxNTVCMjg3
RDAwMTNFMkZDIC8qIE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRl
Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBNZW1vcnlDYWNoZURpc2FibGVXaXRo
aW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDRDU0OTdCMzE1ODU3RjBDMDBCNUJDMzAgLyogTWVkaWFUaW1lLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE1lZGlhVGltZS5jcHA7IHBhdGggPSBXVEYvTWVkaWFU
aW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ5MDI5NjcxNEUyRTNBNDAw
MkJFREQxIC8qIFR5cGluZ1N0eWxlQ3Jhc2gubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBUeXBpbmdTdHlsZUNyYXNoLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGM0ZDM0VFMjEzNjc4QjczMDAxMjZBNjUgLyogbGliZ3Rlc3QuYSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGFyY2hpdmUuYXI7IHBhdGgg
PSBsaWJndGVzdC5hOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlGNkYz
RjI5MDEzMzQyRkVCMDBBNkJGMTkgLyogQ29va2llTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb29raWVNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTU3Myw2ICs1NzUsNyBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQkMw
MjlCMUExNDg2QjIzODAwODE3REE5IC8qIG5zICovLAogCQkJCUMwOTkxQzRGMTQzQzdENjgwMDc5
OThGMiAvKiBjZiAqLywKKwkJCQlDRDU0OTdCMzE1ODU3RjBDMDBCNUJDMzAgLyogTWVkaWFUaW1l
LmNwcCAqLywKIAkJCQkwRkM2QzRDRTE0MTAzNEFEMDA1QjdGMEMgLyogTWV0YUFsbG9jYXRvci5j
cHAgKi8sCiAJCQkJMEZDNkM0Q0IxNDEwMjdFMDAwNUI3RjBDIC8qIFJlZEJsYWNrVHJlZS5jcHAg
Ki8sCiAJCQkJQTdBOTY2REExNDBFQ0NDODAwNUVGOUI0IC8qIENoZWNrZWRBcml0aG1ldGljT3Bl
cmF0aW9ucy5jcHAgKi8sCkBAIC04ODMsNiArODg2LDcgQEAKIAkJCQlFMTIyMERBMDE1NUIyNTQ4
MDAxM0UyRkMgLyogTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUu
bW0gaW4gU291cmNlcyAqLywKIAkJCQlGNkY0OUM2OTE1NTQ1QzhFMDAwN0YzOUQgLyogRE9NV2lu
ZG93RXh0ZW5zaW9uTm9DYWNoZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUU5MzAxNzE1NkIx
M0UxMDA0Qzk5REYgLyogV0tQYWdlR2V0U2NhbGVGYWN0b3JOb3RaZXJvLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUNENTQ5N0I0MTU4NTdGMEMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9NZWRp
YVRpbWUuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTWVkaWFUaW1lLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41OGZiYjIzM2QyNDYyNzY2MTcwYmIyM2UwNzgxOGVjZWJmZGZlNmMzCi0tLSAv
ZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTWVkaWFUaW1lLmNw
cApAQCAtMCwwICsxLDE2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0
aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBv
ZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
KyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSA8d3Rm
L01lZGlhVGltZS5oPgorCit1c2luZyBuYW1lc3BhY2Ugc3RkOworCituYW1lc3BhY2UgV1RGIHsK
Kworc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3V0LCBjb25zdCBNZWRp
YVRpbWUmIHZhbCkKK3sKKyAgICBvdXQgPDwgInsgIjsKKyAgICBpZiAodmFsLmlzSW52YWxpZCgp
KQorICAgICAgICBvdXQgPDwgImludmFsaWQiOworICAgIGVsc2UgaWYgKHZhbC5pc1Bvc2l0aXZl
SW5maW5pdGUoKSkKKyAgICAgICAgb3V0IDw8ICIraW5maW5pdGUiOworICAgIGVsc2UgaWYgKHZh
bC5pc05lZ2F0aXZlSW5maW5pdGUoKSkKKyAgICAgICAgb3V0IDw8ICItaW5maW5pdGUiOworICAg
IGVsc2UKKyAgICAgICAgb3V0IDw8ICJ2YWx1ZTogIiA8PCB2YWwudGltZVZhbHVlKCkgPDwgIiwg
c2NhbGU6ICIgPDwgdmFsLnRpbWVTY2FsZSgpOworICAgIHJldHVybiBvdXQgPDwgIiB9IjsKK30K
KworfQorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK1RFU1QoV1RGLCBNZWRpYVRpbWUp
Cit7CisgICAgLy8gQ29tcGFyaXNvbiBPcGVyYXRvcnMKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1l
Ojpwb3NpdGl2ZUluZmluaXRlVGltZSgpID4gTWVkaWFUaW1lOjpuZWdhdGl2ZUluZmluaXRlVGlt
ZSgpLCB0cnVlKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjpuZWdhdGl2ZUluZmluaXRlVGlt
ZSgpIDwgTWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpLCB0cnVlKTsKKyAgICBFWFBF
Q1RfRVEoTWVkaWFUaW1lOjpuZWdhdGl2ZUluZmluaXRlVGltZSgpID09IE1lZGlhVGltZTo6bmVn
YXRpdmVJbmZpbml0ZVRpbWUoKSwgdHJ1ZSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6cG9z
aXRpdmVJbmZpbml0ZVRpbWUoKSA9PSBNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCks
IHRydWUpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OmludmFsaWRUaW1lKCkgPT0gTWVkaWFU
aW1lOjppbnZhbGlkVGltZSgpLCB0cnVlKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjppbnZh
bGlkVGltZSgpID4gTWVkaWFUaW1lOjpuZWdhdGl2ZUluZmluaXRlVGltZSgpLCB0cnVlKTsKKyAg
ICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpID4gTWVkaWFUaW1lOjpwb3NpdGl2
ZUluZmluaXRlVGltZSgpLCB0cnVlKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjpuZWdhdGl2
ZUluZmluaXRlVGltZSgpIDwgTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpLCB0cnVlKTsKKyAgICBF
WFBFQ1RfRVEoTWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpIDwgTWVkaWFUaW1lOjpp
bnZhbGlkVGltZSgpLCB0cnVlKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjppbmRlZmluaXRl
VGltZSgpID09IE1lZGlhVGltZTo6aW5kZWZpbml0ZVRpbWUoKSwgdHJ1ZSk7CisgICAgRVhQRUNU
X0VRKE1lZGlhVGltZTo6aW5kZWZpbml0ZVRpbWUoKSA+IE1lZGlhVGltZTo6bmVnYXRpdmVJbmZp
bml0ZVRpbWUoKSwgdHJ1ZSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6aW5kZWZpbml0ZVRp
bWUoKSA8IE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKSwgdHJ1ZSk7CisgICAgRVhQ
RUNUX0VRKE1lZGlhVGltZTo6bmVnYXRpdmVJbmZpbml0ZVRpbWUoKSA8IE1lZGlhVGltZTo6aW5k
ZWZpbml0ZVRpbWUoKSwgdHJ1ZSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6cG9zaXRpdmVJ
bmZpbml0ZVRpbWUoKSA+IE1lZGlhVGltZTo6aW5kZWZpbml0ZVRpbWUoKSwgdHJ1ZSk7CisgICAg
RVhQRUNUX0VRKE1lZGlhVGltZSgxLCAxKSA8IE1lZGlhVGltZTo6aW5kZWZpbml0ZVRpbWUoKSwg
dHJ1ZSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6aW5kZWZpbml0ZVRpbWUoKSA+IE1lZGlh
VGltZSgxLCAxKSwgdHJ1ZSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxLCAxKSA8IE1lZGlh
VGltZSgyLCAxKSwgdHJ1ZSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgyLCAxKSA+IE1lZGlh
VGltZSgxLCAxKSwgdHJ1ZSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgyLCAxKSA9PSBNZWRp
YVRpbWUoMiwgMSksIHRydWUpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMiwgMSkgPT0gTWVk
aWFUaW1lKDQsIDIpLCB0cnVlKTsKKworICAgIC8vIEFkZGl0aW9uIE9wZXJhdG9ycworICAgIEVY
UEVDVF9FUShNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCkgKyBNZWRpYVRpbWU6OnBv
c2l0aXZlSW5maW5pdGVUaW1lKCksIE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKSk7
CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6bmVnYXRpdmVJbmZpbml0ZVRpbWUoKSArIE1lZGlh
VGltZTo6bmVnYXRpdmVJbmZpbml0ZVRpbWUoKSwgTWVkaWFUaW1lOjpuZWdhdGl2ZUluZmluaXRl
VGltZSgpKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgp
ICsgTWVkaWFUaW1lOjpuZWdhdGl2ZUluZmluaXRlVGltZSgpLCBNZWRpYVRpbWU6OmludmFsaWRU
aW1lKCkpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6Om5lZ2F0aXZlSW5maW5pdGVUaW1lKCkg
KyBNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCksIE1lZGlhVGltZTo6aW52YWxpZFRp
bWUoKSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSArIE1lZGlhVGlt
ZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKSwgTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpKTsKKyAg
ICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpICsgTWVkaWFUaW1lOjpuZWdhdGl2
ZUluZmluaXRlVGltZSgpLCBNZWRpYVRpbWU6OmludmFsaWRUaW1lKCkpOworICAgIEVYUEVDVF9F
UShNZWRpYVRpbWU6OmludmFsaWRUaW1lKCkgKyBNZWRpYVRpbWU6OmludmFsaWRUaW1lKCksIE1l
ZGlhVGltZTo6aW52YWxpZFRpbWUoKSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6aW52YWxp
ZFRpbWUoKSArIE1lZGlhVGltZSgxLCAxKSwgTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpKTsKKyAg
ICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjppbmRlZmluaXRlVGltZSgpICsgTWVkaWFUaW1lOjpwb3Np
dGl2ZUluZmluaXRlVGltZSgpLCBNZWRpYVRpbWU6OmluZGVmaW5pdGVUaW1lKCkpOworICAgIEVY
UEVDVF9FUShNZWRpYVRpbWU6OmluZGVmaW5pdGVUaW1lKCkgKyBNZWRpYVRpbWU6Om5lZ2F0aXZl
SW5maW5pdGVUaW1lKCksIE1lZGlhVGltZTo6aW5kZWZpbml0ZVRpbWUoKSk7CisgICAgRVhQRUNU
X0VRKE1lZGlhVGltZTo6aW5kZWZpbml0ZVRpbWUoKSArIE1lZGlhVGltZTo6aW5kZWZpbml0ZVRp
bWUoKSwgTWVkaWFUaW1lOjppbmRlZmluaXRlVGltZSgpKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFU
aW1lOjppbmRlZmluaXRlVGltZSgpICsgTWVkaWFUaW1lKDEsIDEpLCBNZWRpYVRpbWU6OmluZGVm
aW5pdGVUaW1lKCkpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMSwgMSkgKyBNZWRpYVRpbWUo
MSwgMSksIE1lZGlhVGltZSgyLCAxKSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxLCAyKSAr
IE1lZGlhVGltZSgxLCAzKSwgTWVkaWFUaW1lKDUsIDYpKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFU
aW1lKDEsIG51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKS0xKSArIE1lZGlhVGltZSgxLCBu
dW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCktMiksIE1lZGlhVGltZSgyLCBudW1lcmljX2xp
bWl0czxpbnQzMl90Pjo6bWF4KCkpKTsKKworICAgIC8vIFN1YnRyYWN0aW9uIE9wZXJhdG9ycwor
ICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCkgLSBNZWRpYVRp
bWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCksIE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSk7Cisg
ICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6bmVnYXRpdmVJbmZpbml0ZVRpbWUoKSAtIE1lZGlhVGlt
ZTo6bmVnYXRpdmVJbmZpbml0ZVRpbWUoKSwgTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpKTsKKyAg
ICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpIC0gTWVkaWFUaW1l
OjpuZWdhdGl2ZUluZmluaXRlVGltZSgpLCBNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1l
KCkpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6Om5lZ2F0aXZlSW5maW5pdGVUaW1lKCkgLSBN
ZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCksIE1lZGlhVGltZTo6bmVnYXRpdmVJbmZp
bml0ZVRpbWUoKSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSAtIE1l
ZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKSwgTWVkaWFUaW1lOjppbnZhbGlkVGltZSgp
KTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpIC0gTWVkaWFUaW1lOjpu
ZWdhdGl2ZUluZmluaXRlVGltZSgpLCBNZWRpYVRpbWU6OmludmFsaWRUaW1lKCkpOworICAgIEVY
UEVDVF9FUShNZWRpYVRpbWU6OmludmFsaWRUaW1lKCkgLSBNZWRpYVRpbWU6OmludmFsaWRUaW1l
KCksIE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6
aW52YWxpZFRpbWUoKSAtIE1lZGlhVGltZSgxLCAxKSwgTWVkaWFUaW1lOjppbnZhbGlkVGltZSgp
KTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjppbmRlZmluaXRlVGltZSgpIC0gTWVkaWFUaW1l
Ojpwb3NpdGl2ZUluZmluaXRlVGltZSgpLCBNZWRpYVRpbWU6OmluZGVmaW5pdGVUaW1lKCkpOwor
ICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OmluZGVmaW5pdGVUaW1lKCkgLSBNZWRpYVRpbWU6Om5l
Z2F0aXZlSW5maW5pdGVUaW1lKCksIE1lZGlhVGltZTo6aW5kZWZpbml0ZVRpbWUoKSk7CisgICAg
RVhQRUNUX0VRKE1lZGlhVGltZTo6aW5kZWZpbml0ZVRpbWUoKSAtIE1lZGlhVGltZTo6aW5kZWZp
bml0ZVRpbWUoKSwgTWVkaWFUaW1lOjppbmRlZmluaXRlVGltZSgpKTsKKyAgICBFWFBFQ1RfRVEo
TWVkaWFUaW1lOjppbmRlZmluaXRlVGltZSgpIC0gTWVkaWFUaW1lKDEsIDEpLCBNZWRpYVRpbWU6
OmluZGVmaW5pdGVUaW1lKCkpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMywgMSkgLSBNZWRp
YVRpbWUoMiwgMSksIE1lZGlhVGltZSgxLCAxKSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgx
LCAyKSAtIE1lZGlhVGltZSgxLCAzKSwgTWVkaWFUaW1lKDEsIDYpKTsKKyAgICBFWFBFQ1RfRVEo
TWVkaWFUaW1lKDIsIG51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKS0xKSAtIE1lZGlhVGlt
ZSgxLCBudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCktMiksIE1lZGlhVGltZSgxLCBudW1l
cmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpKTsKKworICAgIC8vIENvbnN0YW50cworICAgIEVY
UEVDVF9FUShNZWRpYVRpbWU6Onplcm9UaW1lKCksIE1lZGlhVGltZSgwLCAxKSk7CisgICAgRVhQ
RUNUX0VRKE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSwgTWVkaWFUaW1lKC0xLCAxLCAwKSk7Cisg
ICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKSwgTWVkaWFUaW1l
KDAsIDEsIE1lZGlhVGltZTo6UG9zaXRpdmVJbmZpbml0ZSkpOworICAgIEVYUEVDVF9FUShNZWRp
YVRpbWU6Om5lZ2F0aXZlSW5maW5pdGVUaW1lKCksIE1lZGlhVGltZSgwLCAxLCBNZWRpYVRpbWU6
Ok5lZ2F0aXZlSW5maW5pdGUpKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjppbmRlZmluaXRl
VGltZSgpLCBNZWRpYVRpbWUoMCwgMSwgTWVkaWFUaW1lOjpJbmRlZmluaXRlKSk7CisKKyAgICAv
LyBBYnNvbHV0ZSBGdW5jdGlvbnMKKyAgICBFWFBFQ1RfRVEoYWJzKE1lZGlhVGltZTo6cG9zaXRp
dmVJbmZpbml0ZVRpbWUoKSksIE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKSk7Cisg
ICAgRVhQRUNUX0VRKGFicyhNZWRpYVRpbWU6Om5lZ2F0aXZlSW5maW5pdGVUaW1lKCkpLCBNZWRp
YVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCkpOworICAgIEVYUEVDVF9FUShhYnMoTWVkaWFU
aW1lOjppbnZhbGlkVGltZSgpKSwgTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpKTsKKyAgICBFWFBF
Q1RfRVEoYWJzKE1lZGlhVGltZSgxLCAxKSksIE1lZGlhVGltZSgxLCAxKSk7CisgICAgRVhQRUNU
X0VRKGFicyhNZWRpYVRpbWUoLTEsIDEpKSwgTWVkaWFUaW1lKDEsIDEpKTsKKyAgICBFWFBFQ1Rf
RVEoYWJzKE1lZGlhVGltZSgtMSwgLTEpKSwgTWVkaWFUaW1lKC0xLCAtMSkpOworICAgIEVYUEVD
VF9FUShhYnMoTWVkaWFUaW1lKDEsIC0xKSksIE1lZGlhVGltZSgtMSwgLTEpKTsKKworICAgIC8v
IEZsb2F0aW5nIFBvaW50IEZ1bmN0aW9ucworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OmNyZWF0
ZVdpdGhGbG9hdCgxLjBmKSwgTWVkaWFUaW1lKDEsIDEpKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFU
aW1lOjpjcmVhdGVXaXRoRmxvYXQoMS41ZiksIE1lZGlhVGltZSgzLCAyKSk7CisgICAgRVhQRUNU
X0VRKE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZSgxLjApLCBNZWRpYVRpbWUoMSwgMSkpOwor
ICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoMS41KSwgTWVkaWFUaW1l
KDMsIDIpKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDEsIDEpLnRvRmxvYXQoKSwgMS4wZik7
CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgzLCAyKS50b0Zsb2F0KCksIDEuNWYpOworICAgIEVY
UEVDVF9FUShNZWRpYVRpbWUoMSwgMSkudG9Eb3VibGUoKSwgMS4wKTsKKyAgICBFWFBFQ1RfRVEo
TWVkaWFUaW1lKDMsIDIpLnRvRG91YmxlKCksIDEuNSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGlt
ZSgxLCAxIDw8IDE2KS50b0Zsb2F0KCksIDEgLyBwb3coMi4wZiwgMTYuMGYpKTsKKyAgICBFWFBF
Q1RfRVEoTWVkaWFUaW1lKDEsIDEgPDwgMzApLnRvRG91YmxlKCksIDEgLyBwb3coMi4wLCAzMC4w
KSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShNX1BJLCAxIDw8
IDMwKSwgTWVkaWFUaW1lKDMzNzMyNTk0MjYsIDEgPDwgMzApKTsKKyAgICBFWFBFQ1RfRVEoTWVk
aWFUaW1lOjpjcmVhdGVXaXRoRmxvYXQoSU5GSU5JVFkpLCBNZWRpYVRpbWU6OnBvc2l0aXZlSW5m
aW5pdGVUaW1lKCkpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OmNyZWF0ZVdpdGhGbG9hdCgt
SU5GSU5JVFkpLCBNZWRpYVRpbWU6Om5lZ2F0aXZlSW5maW5pdGVUaW1lKCkpOworICAgIEVYUEVD
VF9FUShNZWRpYVRpbWU6OmNyZWF0ZVdpdGhGbG9hdChOQU4pLCBNZWRpYVRpbWU6OmludmFsaWRU
aW1lKCkpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoSU5GSU5J
VFkpLCBNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCkpOworICAgIEVYUEVDVF9FUShN
ZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoLUlORklOSVRZKSwgTWVkaWFUaW1lOjpuZWdhdGl2
ZUluZmluaXRlVGltZSgpKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91
YmxlKE5BTiksIE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSk7CisKKyAgICAvLyBPdmVyZmxvdyBC
ZWhhdmlvcgorICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OmNyZWF0ZVdpdGhGbG9hdChwb3coMi4w
ZiwgNjQuMGYpKSwgTWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpKTsKKyAgICBFWFBF
Q1RfRVEoTWVkaWFUaW1lOjpjcmVhdGVXaXRoRmxvYXQoLXBvdygyLjBmLCA2NC4wZikpLCBNZWRp
YVRpbWU6Om5lZ2F0aXZlSW5maW5pdGVUaW1lKCkpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6
OmNyZWF0ZVdpdGhGbG9hdChwb3coMi4wZiwgNjMuMGYpLCAyKS50aW1lU2NhbGUoKSwgMSk7Cisg
ICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6Y3JlYXRlV2l0aEZsb2F0KHBvdygyLjBmLCA2My4wZiks
IDMpLnRpbWVTY2FsZSgpLCAxKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjpjcmVhdGVXaXRo
RG91YmxlKHBvdygyLjAsIDY0LjApKSwgTWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgp
KTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKC1wb3coMi4wLCA2
NC4wKSksIE1lZGlhVGltZTo6bmVnYXRpdmVJbmZpbml0ZVRpbWUoKSk7CisgICAgRVhQRUNUX0VR
KE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShwb3coMi4wLCA2My4wKSwgMikudGltZVNjYWxl
KCksIDEpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUocG93KDIu
MCwgNjMuMCksIDMpLnRpbWVTY2FsZSgpLCAxKTsKKyAgICBFWFBFQ1RfRVEoKE1lZGlhVGltZShu
dW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCksIDIpICsgTWVkaWFUaW1lKG51bWVyaWNfbGlt
aXRzPGludDY0X3Q+OjptYXgoKSwgMikpLnRpbWVTY2FsZSgpLCAxKTsKKyAgICBFWFBFQ1RfRVEo
KE1lZGlhVGltZShudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWluKCksIDIpIC0gTWVkaWFUaW1l
KG51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKSwgMikpLnRpbWVTY2FsZSgpLCAxKTsKKyAg
ICBFWFBFQ1RfRVEoTWVkaWFUaW1lKG51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKSwgMSkg
KyBNZWRpYVRpbWUobnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgpLCAxKSwgTWVkaWFUaW1l
Ojpwb3NpdGl2ZUluZmluaXRlVGltZSgpKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKG51bWVy
aWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSwgMSkgKyBNZWRpYVRpbWUobnVtZXJpY19saW1pdHM8
aW50NjRfdD46Om1pbigpLCAxKSwgTWVkaWFUaW1lOjpuZWdhdGl2ZUluZmluaXRlVGltZSgpKTsK
KyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKG51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSwg
MSkgLSBNZWRpYVRpbWUobnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgpLCAxKSwgTWVkaWFU
aW1lOjpuZWdhdGl2ZUluZmluaXRlVGltZSgpKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKG51
bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKSwgMSkgLSBNZWRpYVRpbWUobnVtZXJpY19saW1p
dHM8aW50NjRfdD46Om1pbigpLCAxKSwgTWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgp
KTsKK30KKworfQorCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9UZXN0V2Vi
S2l0QVBJLnZjcHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1Rlc3RXZWJLaXRBUEkudmNw
cm9qCmluZGV4IDAwMGYxNWUxOGJjMWFhZDA4NzZmNDBlZDllNzI1MmM1NzhmYTcyMzAuLmE5NDFj
ZDY4NjhiNGYwNTYzMjQwNzYxYTUyNjY5NjJmZjg1MzQ2ZDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvd2luL1Rlc3RXZWJLaXRBUEkudmNwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvd2luL1Rlc3RXZWJLaXRBUEkudmNwcm9qCkBAIC02NTIsNiArNjUyLDEwIEBACiAJCQkJ
CT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxUZXN0c1xX
VEZcTWVkaWFUaW1lLmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXFRlc3RzXFdURlxTdHJpbmdPcGVyYXRvcnMuY3BwIgogCQkJCQk+CiAJ
CQkJPC9GaWxlPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146885</attachid>
            <date>2012-06-11 11:48:45 -0700</date>
            <delta_ts>2012-07-27 11:15:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88787-20120611114844.patch</filename>
            <type>text/plain</type>
            <size>43474</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5OTgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
M2M1MDAxMTliNjEyMjEwY2FhYWM2MzUwYWZhZTg1MmE5YWZmNWJiLi4wYWJkZDE3MmQ2YjkzMzZj
NzZlNGI3ZWI5M2Q5YjU3M2RlN2EwNTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxMi0wNi0xMSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4K
KworICAgICAgICBTdXBwb3J0IGEgcmF0aW9uYWwgdGltZSBjbGFzcyBmb3IgdXNlIGJ5IG1lZGlh
IGVsZW1lbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODg3ODcKKworICAgICAgICBSZS1leHBvcnQgV1RGOjpNZWRpYVRpbWUgZnJvbSBKYXZhU2Ny
aXB0Q29yZS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLm9yZGVyOgorCiAyMDEyLTA2LTExICBDYXJsb3MgR2FyY2lhIENh
bXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBGaXggbWFr
ZSBkaXN0Y2hlY2sgaXNzdWVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA0NTc0OGE0ODBiMDRiNDRmMWEyYTNlOGNhMWM1ZWFj
Yjg1ZmUwNTY5Li5mZTI1MTFlMWFhNzNhMzMwYzkxOWQ3NjIwNGI1YzBjZDU0NjdlNTRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDcwIEBACisyMDEyLTA2LTExICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUu
Y29tPgorCisgICAgICAgIFN1cHBvcnQgYSByYXRpb25hbCB0aW1lIGNsYXNzIGZvciB1c2UgYnkg
bWVkaWEgZWxlbWVudHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04ODc4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBhIG5ldyBNZWRpYVRpbWUgY2xhc3Mgd2hpY2ggaW1wbGVtZW50cyByYXRpb25h
bCBtYXRoIG9wZXJhdGlvbnMuCisKKyAgICAgICAgQWRkIGNvbW1vbiBjb25zdHJ1Y3RvcnMgYW5k
IGFzc2lnbm1lbnQgb3BlcmF0b3JzOgorICAgICAgICAqIHd0Zi9NZWRpYVRpbWUuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpNZWRpYVRpbWUpOgorICAgICAgICAoV1RGOjpN
ZWRpYVRpbWU6On5NZWRpYVRpbWUpOgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6Om9wZXJhdG9y
PSk6CisKKyAgICAgICAgQWRkIGNvbW1vbiBtYXRoIG9wZXJhdG9yczoKKyAgICAgICAgKiB3dGYv
TWVkaWFUaW1lLmNwcDoKKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpvcGVyYXRvcispOgorICAg
ICAgICAoV1RGOjpNZWRpYVRpbWU6Om9wZXJhdG9yLSk6CisgICAgICAgIChXVEY6Ok1lZGlhVGlt
ZTo6b3BlcmF0b3I8KToKKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpvcGVyYXRvcj4pOgorICAg
ICAgICAoV1RGOjpNZWRpYVRpbWU6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV1RGOjpNZWRpYVRp
bWU6Om9wZXJhdG9yPj0pOgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6Om9wZXJhdG9yPD0pOgor
CisgICAgICAgIEFkZCBmdW5jdGlvbnMgdG8gY2hlY2sgdGhlIE1laWFUaW1lIHRpbWUgdHlwZSBm
bGFnczoKKyAgICAgICAgKiB3dGYvTWVkaWFUaW1lLmg6CisgICAgICAgIChXVEY6Ok1lZGlhVGlt
ZTo6aXNWYWxpZCk6CisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6aXNJbnZhbGlkKToKKyAgICAg
ICAgKFdURjo6TWVkaWFUaW1lOjpoYXNCZWVuUm91bmRlKToKKyAgICAgICAgKFdURjo6TWVkaWFU
aW1lOjppc1Bvc2l0aXZlSW5maW5pdGUpOgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6OmlzTmVn
YXRpdmVJbmZpbml0ZSk6CisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6aXNJbmRlZmluaXRlKToK
KworICAgICAgICBBZGQgY29uc3RhbnRzIGZvciBjb21tb25seSB1c2VkIE1lZGlhVGltZSB2YWx1
ZXM6CisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6emVyb1RpbWUpOgorICAgICAgICAoV1RGOjpN
ZWRpYVRpbWU6OmludmFsaWRUaW1lKToKKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpwb3NpdGl2
ZUluZmluaXRlVGltZSk6CisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6bmVnYXRpdmVJbmZpbml0
ZVRpbWUpOgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6OmluZGVmaW5pdGVUaW1lKToKKworICAg
ICAgICBBZGQgZXhwbGljaXQgY29udmVyc2lvbiBmdW5jdGlvbnMgdG8gY29udmVydCB0byBhbmQg
ZnJvbSBmbG9hdGluZyBwb2ludCB2YWx1ZXMuCisgICAgICAgICogd3RmL01lZGlhVGltZS5jcHA6
CisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6Y3JlYXRlV2l0aEZsb2F0KToKKyAgICAgICAgKFdU
Rjo6TWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKToKKyAgICAgICAgKFdURjo6TWVkaWFUaW1l
Ojp0b0Zsb2F0KToKKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjp0b0RvdWJsZSk6CisKKyAgICAg
ICAgQWRkIHNvbWUgdXNlZnVsIGV4cG9ydGVkIGZ1bmN0aW9uczoKKyAgICAgICAgKiB3dGYvTWVk
aWFUaW1lLmNwcDoKKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpjb21wYXJlKTogTWFzdGVyIGZ1
bmN0aW9uIGZvciB0aGUgY29tcGFyaXNvbiBvcGVyYXRvcnMgYWJvdmUuCisgICAgICAgIChXVEY6
Ok1lZGlhVGltZTo6c2V0VGltZVNjYWxlKTogUmVzY2FsZSB0aGUgdGltZSB2YWx1ZSB0byBhIG5l
dyB0aW1lIHNjYWxlLgorICAgICAgICAoV1RGOjphYnMpOiBSZXR1cm4gYW4gYWJzb2x1dGUgdmFs
dWUgZm9yIHRoZSBjdXJyZW50IE1lZGlhVGltZS4KKworICAgICAgICBTdGF0aWMgdXRpbGl0eSBm
dW5jdGlvbnMgdG8gaW1wbGVtZW50IHRoZSBhYm92ZToKKyAgICAgICAgKiB3dGYvTWVkaWFUaW1l
LmNwcDoKKyAgICAgICAgKFdURjo6Z3JlYXRlc3RDb21tb25EaXZpc29yKToKKyAgICAgICAgKFdU
Rjo6bGVhc3RDb21tb25NdWx0aXBsZSk6CisgICAgICAgIChXVEY6OnNpZ251bSk6CisKKyAgICAg
ICAgQWRkIHRoZSBuZXcgY2xhc3MgdG8gcGxhdGZvcm0gYnVpbGQgZmlsZXM6CisgICAgICAgICog
R05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBXVEYuZ3lwaToKKyAgICAgICAgKiBXVEYu
cHJvOgorICAgICAgICAqIFdURi52Y3Byb2ovV1RGLnZjcHJvajoKKyAgICAgICAgKiBXVEYueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxMi0wNi0xMSAgQ2FybG9zIEdhcmNpYSBDYW1w
b3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gRml4IG1ha2Ug
ZGlzdGNoZWNrIGlzc3Vlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS5vcmRlciBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5v
cmRlcgppbmRleCAzYTQ1MDA3NWExMzQzZTU5ZTdiMWVkYTExYTVmN2NkODAzYzg2NWFhLi4wNzQy
YTBhMGUyYjZkY2RkODRiZWY3OGNiYzE2ZTdlYWI4OTlhNTJiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUub3JkZXIKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLm9yZGVyCkBAIC0yNDk0LDMgKzI0OTQsMTYgQEAgX19aTjNX
VEY2VmVjdG9ySU4zSlNDMTBBU1RCdWlsZGVyMTRBc3NpZ25tZW50SW5mb0VMbTEwRUUxNGV4cGFu
ZENhcGFjaXR5RW0KIF9jdGlfb3BfcHV0X2J5X2lkX2RpcmVjdF9nZW5lcmljCiBfX1pOM1dURjlI
YXNoVGFibGVJUE4zSlNDMTZGdW5jdGlvbkJvZHlOb2RlRVN0NHBhaXJJUzNfakVOU18xOFBhaXJG
aXJzdEV4dHJhY3RvcklTNV9FRU5TXzdQdHJIYXNoSVMzX0VFTlNfMTRQYWlySGFzaFRyYWl0c0lO
U18xMEhhc2hUcmFpdHNJUzNfRUVOU0JfSWpFRUVFU0NfRTRmaW5kSVMzX05TXzIySWRlbnRpdHlI
YXNoVHJhbnNsYXRvcklTM19TNV9TOV9FRUVFTlNfMTdIYXNoVGFibGVJdGVyYXRvcklTM19TNV9T
N19TOV9TRV9TQ19FRVJLVF8KIF9fWk4zV1RGOUhhc2hUYWJsZUlQTjNKU0MxNkZ1bmN0aW9uQm9k
eU5vZGVFU3Q0cGFpcklTM19qRU5TXzE4UGFpckZpcnN0RXh0cmFjdG9ySVM1X0VFTlNfN1B0ckhh
c2hJUzNfRUVOU18xNFBhaXJIYXNoVHJhaXRzSU5TXzEwSGFzaFRyYWl0c0lTM19FRU5TQl9JakVF
RUVTQ19FNmV4cGFuZEV2CitfX1pOM1dURjNhYnNFUktOU185TWVkaWFUaW1lRQorX19aTjNXVEY5
TWVkaWFUaW1lMTFpbnZhbGlkVGltZUV2CitfX1pOM1dURjlNZWRpYVRpbWUxNGluZGVmaW5pdGVU
aW1lRXYKK19fWk4zV1RGOU1lZGlhVGltZTE1Y3JlYXRlV2l0aEZsb2F0RWZpCitfX1pOM1dURjlN
ZWRpYVRpbWUxNmNyZWF0ZVdpdGhEb3VibGVFZGkKK19fWk4zV1RGOU1lZGlhVGltZTIwbmVnYXRp
dmVJbmZpbml0ZVRpbWVFdgorX19aTjNXVEY5TWVkaWFUaW1lMjBwb3NpdGl2ZUluZmluaXRlVGlt
ZUV2CitfX1pOM1dURjlNZWRpYVRpbWVEMUV2CitfX1pOSzNXVEY5TWVkaWFUaW1lZ3RFUktTMF8K
K19fWk5LM1dURjlNZWRpYVRpbWVsdEVSS1MwXworX19aTkszV1RGOU1lZGlhVGltZW1pRVJLUzBf
CitfX1pOSzNXVEY5TWVkaWFUaW1lcGxFUktTMF8KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9H
TlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dURi9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4
IDNkZmMxZGJkM2M4ODZmZTY4ZGNhYjIyOTlmNjA5Y2I0YzYzNjYxNzguLjU2ZTJmZGQwZWM4Zjg2
NDZkMDNjNmJlNGRkZDQ3M2Y2MjAwMTQ0MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvR05VbWFr
ZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV1RGL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTc1
LDYgKzc1LDggQEAgd3RmX3NvdXJjZXMgKz0gXAogICAgIFNvdXJjZS9XVEYvd3RmL01haW5UaHJl
YWQuaCBcCiAgICAgU291cmNlL1dURi93dGYvTWFsbG9jWm9uZVN1cHBvcnQuaCBcCiAgICAgU291
cmNlL1dURi93dGYvTWF0aEV4dHJhcy5oIFwKKyAgICBTb3VyY2UvV1RGL3d0Zi9NZWRpYVRpbWUu
aCBcCisgICAgU291cmNlL1dURi93dGYvTWVkaWFUaW1lLmNwcCBcCiAgICAgU291cmNlL1dURi93
dGYvTWVzc2FnZVF1ZXVlLmggXAogICAgIFNvdXJjZS9XVEYvd3RmL01ldGFBbGxvY2F0b3IuY3Bw
IFwKICAgICBTb3VyY2UvV1RGL3d0Zi9NZXRhQWxsb2NhdG9yLmggXApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi9XVEYuZ3lwaSBiL1NvdXJjZS9XVEYvV1RGLmd5cGkKaW5kZXggODY3NTg1NTA2MWQz
NzRlZmFmZmU3ZDYyZTE1M2RlYjExYmJhZDAzOS4uMzNiOGU5NjdmYTU3Zjg0MjIwMzhiNjI5NWQ3
MWRlNjY0OGMwODg0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYuZ3lwaQorKysgYi9Tb3Vy
Y2UvV1RGL1dURi5neXBpCkBAIC0xNTAsNiArMTUwLDggQEAKICAgICAgICAgICAgICd3dGYvTUQ1
LmNwcCcsCiAgICAgICAgICAgICAnd3RmL01haW5UaHJlYWQuY3BwJywKICAgICAgICAgICAgICd3
dGYvTWFsbG9jWm9uZVN1cHBvcnQuaCcsCisgICAgICAgICAgICAnd3RmL01lZGlhVGltZS5oJywK
KyAgICAgICAgICAgICd3dGYvTWVkaWFUaW1lLmNwcCcsCiAgICAgICAgICAgICAnd3RmL051bGxQ
dHIuY3BwJywKICAgICAgICAgICAgICd3dGYvTnVtYmVyT2ZDb3Jlcy5jcHAnLAogICAgICAgICAg
ICAgJ3d0Zi9OdW1iZXJPZkNvcmVzLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYucHJv
IGIvU291cmNlL1dURi9XVEYucHJvCmluZGV4IDMzODQ3NzBhOGVkN2RmZDM5NDYzNzgxY2RhOWU4
OThlOThlZDFiYWEuLmYxMTYyN2EwMTNiYmVjMmM4MWM0MTYyNTliNzEwN2Y0OTEwMTdmYzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnBybworKysgYi9Tb3VyY2UvV1RGL1dURi5wcm8KQEAg
LTc2LDYgKzc2LDcgQEAgSEVBREVSUyArPSBcCiAgICAgTWFsbG9jWm9uZVN1cHBvcnQuaCBcCiAg
ICAgTWF0aEV4dHJhcy5oIFwKICAgICBNRDUuaCBcCisgICAgTWVkaWFUaW1lLmggXAogICAgIE1l
c3NhZ2VRdWV1ZS5oIFwKICAgICBNZXRhQWxsb2NhdG9yLmggXAogICAgIE1ldGFBbGxvY2F0b3JI
YW5kbGUuaCBcCkBAIC0xODksNiArMTkwLDcgQEAgU09VUkNFUyArPSBcCiAgICAgSGFzaFRhYmxl
LmNwcCBcCiAgICAgTUQ1LmNwcCBcCiAgICAgTWFpblRocmVhZC5jcHAgXAorICAgIE1lZGlhVGlt
ZS5jcHAgXAogICAgIE1ldGFBbGxvY2F0b3IuY3BwIFwKICAgICBOdWxsUHRyLmNwcCBcCiAgICAg
TnVtYmVyT2ZDb3Jlcy5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYudmNwcm9qL1dU
Ri52Y3Byb2ogYi9Tb3VyY2UvV1RGL1dURi52Y3Byb2ovV1RGLnZjcHJvagppbmRleCAyMTkwZGFl
MWVmZmVhZTMzOTUzMzI3ZTNjYjczZTc3ZTZlZTQ2ZDU4Li5mYjFhMmNlOTY1MjUzYjFlMTQxYmNl
MjEwYTJhZDg2MmUwMzJjYTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi52Y3Byb2ovV1RG
LnZjcHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi52Y3Byb2ovV1RGLnZjcHJvagpAQCAtODczLDYg
Kzg3MywxNCBAQAogCQkJPgogCQk8L0ZpbGU+CiAJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4u
XHd0ZlxNZWRpYVRpbWUuaCIKKwkJCT4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQ
YXRoPSIuLlx3dGZcTWVkaWFUaW1lLmNwcCIKKwkJCT4KKwkJPC9GaWxlPgorCQk8RmlsZQogCQkJ
UmVsYXRpdmVQYXRoPSIuLlx3dGZcTWVzc2FnZVF1ZXVlLmgiCiAJCQk+CiAJCTwvRmlsZT4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGJhNDU3NjQzZmIzYmEx
ZDUxNmIzZWY5MTE2OWFhYTFiYzcwYTU1N2UuLmViZWViNDljOTNlZjdjZDNmYzZmMjRlOTFiZjk5
NjhhOGE5MzQxZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMjQxLDYgKzI0MSw4IEBACiAJCUE4QTQ3NDg2MTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJl
YWREYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE4QTQ3MzdBMTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJlYWREYXRhLmNwcCAqLzsgfTsKIAkJ
QThBNDc0ODcxNTFBODI1QjAwNDEyM0ZGIC8qIFdURlRocmVhZERhdGEuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MzdCMTUxQTgyNUIwMDQxMjNG
RiAvKiBXVEZUaHJlYWREYXRhLmggKi87IH07CiAJCUE4QTQ3NDhDMTUxQTgyNjQwMDQxMjNGRiAv
KiBjb25maWcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE4QTQ3NDhCMTUxQTgyNjQwMDQxMjNGRiAvKiBjb25maWcuaCAqLzsgfTsKKwkJQ0Q1NDk3QUMx
NTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDU0OTdBQTE1ODU3RDAzMDBCNUJDMzAgLyogTWVkaWFU
aW1lLmNwcCAqLzsgfTsKKwkJQ0Q1NDk3QUQxNTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q1NDk3QUIx
NTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5oICovOyB9OwogLyogRW5kIFBCWEJ1aWxkRmls
ZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwpAQCAt
NDg4LDYgKzQ5MCw4IEBACiAJCUE4QTQ3MzdBMTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJlYWRE
YXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdURlRocmVhZERh
dGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzM3QjE1MUE4MjVCMDA0
MTIzRkYgLyogV1RGVGhyZWFkRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXVEZUaHJlYWREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3NDhC
MTUxQTgyNjQwMDQxMjNGRiAvKiBjb25maWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gY29uZmlnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNENTQ5N0FBMTU4
NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gTWVkaWFUaW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0Q1NDk3QUIxNTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNZWRpYVRpbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRnJhbWV3
b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAtNjIzLDYgKzYyNyw4IEBACiAJCQkJQThBNDcy
QzkxNTFBODI1QjAwNDEyM0ZGIC8qIE1hdGhFeHRyYXMuaCAqLywKIAkJCQlBOEE0NzJDQTE1MUE4
MjVCMDA0MTIzRkYgLyogTUQ1LmNwcCAqLywKIAkJCQlBOEE0NzJDQjE1MUE4MjVCMDA0MTIzRkYg
LyogTUQ1LmggKi8sCisJCQkJQ0Q1NDk3QUExNTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5j
cHAgKi8sCisJCQkJQ0Q1NDk3QUIxNTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5oICovLAog
CQkJCUE4QTQ3MkNDMTUxQTgyNUIwMDQxMjNGRiAvKiBNZXNzYWdlUXVldWUuaCAqLywKIAkJCQlB
OEE0NzJDRDE1MUE4MjVCMDA0MTIzRkYgLyogTWV0YUFsbG9jYXRvci5jcHAgKi8sCiAJCQkJQThB
NDcyQ0UxNTFBODI1QjAwNDEyM0ZGIC8qIE1ldGFBbGxvY2F0b3IuaCAqLywKQEAgLTkzMyw2ICs5
MzksNyBAQAogCQkJCUE4QTQ3M0U3MTUxQTgyNUIwMDQxMjNGRiAvKiBNYWxsb2Nab25lU3VwcG9y
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczRTgxNTFBODI1QjAwNDEyM0ZGIC8qIE1hdGhF
eHRyYXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3M0VBMTUxQTgyNUIwMDQxMjNGRiAvKiBN
RDUuaCBpbiBIZWFkZXJzICovLAorCQkJCUNENTQ5N0FEMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRp
YVRpbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3M0VCMTUxQTgyNUIwMDQxMjNGRiAvKiBN
ZXNzYWdlUXVldWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3M0VEMTUxQTgyNUIwMDQxMjNG
RiAvKiBNZXRhQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzNFRTE1MUE4MjVC
MDA0MTIzRkYgLyogTWV0YUFsbG9jYXRvckhhbmRsZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMTg0
LDYgKzExOTEsNyBAQAogCQkJCUE4QTQ3NDdCMTUxQTgyNUIwMDQxMjNGRiAvKiBVUkxTZWdtZW50
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQ4NjE1MUE4MjVCMDA0MTIzRkYgLyogV1RG
VGhyZWFkRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDNGNjExRjE1NjVGMEY5MDBEQjUx
NEEgLyogUkFNU2l6ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDRDU0OTdBQzE1ODU3RDAzMDBC
NUJDMzAgLyogTWVkaWFUaW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvTWVkaWFUaW1lLmNwcCBiL1NvdXJjZS9XVEYvd3RmL01lZGlhVGltZS5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTc2OWVmYjZkMjI3MGZjZmQ3NWNiYmMyZjFiMzU3OGVmNmZmMTA0ZQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL01lZGlhVGltZS5jcHAKQEAgLTAsMCArMSwzNTEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUg
Q29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisg
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZWRpYVRpbWUuaCIKKworI2luY2x1
ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KKwordXNp
bmcgbmFtZXNwYWNlIHN0ZDsKKworbmFtZXNwYWNlIFdURiB7CisKK3N0YXRpYyBpbnQzMl90IGdy
ZWF0ZXN0Q29tbW9uRGl2aXNvcihpbnQzMl90IGEsIGludDMyX3QgYikKK3sKKyAgICAvLyBFdWNs
aWQncyBBbGdvcml0aG0KKyAgICBpbnQzMl90IHRlbXAgPSAwOworICAgIHdoaWxlIChiKSB7Cisg
ICAgICAgIHRlbXAgPSBiOworICAgICAgICBiID0gYSAlIGI7CisgICAgICAgIGEgPSB0ZW1wOwor
ICAgIH0KKyAgICByZXR1cm4gYTsKK30KKworc3RhdGljIGludDMyX3QgbGVhc3RDb21tb25NdWx0
aXBsZShpbnQzMl90IGEsIGludDMyX3QgYiwgaW50MzJfdCAmcmVzdWx0KQoreworICAgIHJldHVy
biBzYWZlTXVsdGlwbHkoYSwgYiAvIGdyZWF0ZXN0Q29tbW9uRGl2aXNvcihhLCBiKSwgcmVzdWx0
KTsKK30KKworY29uc3QgaW50MzJfdCBNZWRpYVRpbWU6Ok1heGltdW1UaW1lU2NhbGUgPSAweDdm
ZmZmZmZmTDsKKworTWVkaWFUaW1lOjpNZWRpYVRpbWUoKQorICAgIDogbV90aW1lVmFsdWUoMCkK
KyAgICAsIG1fdGltZVNjYWxlKERlZmF1bHRUaW1lU2NhbGUpCisgICAgLCBtX3RpbWVGbGFncyhW
YWxpZCkKK3sKK30KKworTWVkaWFUaW1lOjpNZWRpYVRpbWUoaW50NjRfdCB2YWx1ZSwgaW50MzJf
dCBzY2FsZSwgdWludDMyX3QgZmxhZ3MpCisgICAgOiBtX3RpbWVWYWx1ZSh2YWx1ZSkKKyAgICAs
IG1fdGltZVNjYWxlKHNjYWxlKQorICAgICwgbV90aW1lRmxhZ3MoZmxhZ3MpCit7Cit9CisKK01l
ZGlhVGltZTo6fk1lZGlhVGltZSgpCit7Cit9CisKK01lZGlhVGltZTo6TWVkaWFUaW1lKGNvbnN0
IE1lZGlhVGltZSYgcmhzKQoreworICAgICp0aGlzID0gcmhzOworfQorCitNZWRpYVRpbWUgTWVk
aWFUaW1lOjpjcmVhdGVXaXRoRmxvYXQoZmxvYXQgZmxvYXRUaW1lLCBpbnQzMl90IHRpbWVTY2Fs
ZSkKK3sKKyAgICBpZiAoZmxvYXRUaW1lICE9IGZsb2F0VGltZSkKKyAgICAgICAgcmV0dXJuIGlu
dmFsaWRUaW1lKCk7CisgICAgaWYgKHN0ZDo6aXNpbmYoZmxvYXRUaW1lKSkKKyAgICAgICAgcmV0
dXJuIHN0ZDo6c2lnbmJpdChmbG9hdFRpbWUpID8gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKSA6IHBv
c2l0aXZlSW5maW5pdGVUaW1lKCk7CisgICAgaWYgKGZsb2F0VGltZSA+IG51bWVyaWNfbGltaXRz
PGludDY0X3Q+OjptYXgoKSkKKyAgICAgICAgcmV0dXJuIHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7
CisgICAgaWYgKGZsb2F0VGltZSA8IG51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSkKKyAg
ICAgICAgcmV0dXJuIG5lZ2F0aXZlSW5maW5pdGVUaW1lKCk7CisKKyAgICB3aGlsZSAoZmxvYXRU
aW1lICogdGltZVNjYWxlID4gbnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgpKQorICAgICAg
ICB0aW1lU2NhbGUgLz0gMjsKKyAgICByZXR1cm4gTWVkaWFUaW1lKHN0YXRpY19jYXN0PGludDY0
X3Q+KGZsb2F0VGltZSAqIHRpbWVTY2FsZSksIHRpbWVTY2FsZSwgVmFsaWQpOworfQorCitNZWRp
YVRpbWUgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKGRvdWJsZSBkb3VibGVUaW1lLCBpbnQz
Ml90IHRpbWVTY2FsZSkKK3sKKyAgICBpZiAoZG91YmxlVGltZSAhPSBkb3VibGVUaW1lKQorICAg
ICAgICByZXR1cm4gaW52YWxpZFRpbWUoKTsKKyAgICBpZiAoc3RkOjppc2luZihkb3VibGVUaW1l
KSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6c2lnbmJpdChkb3VibGVUaW1lKSA/IG5lZ2F0aXZlSW5m
aW5pdGVUaW1lKCkgOiBwb3NpdGl2ZUluZmluaXRlVGltZSgpOworICAgIGlmIChkb3VibGVUaW1l
ID4gbnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgpKQorICAgICAgICByZXR1cm4gcG9zaXRp
dmVJbmZpbml0ZVRpbWUoKTsKKyAgICBpZiAoZG91YmxlVGltZSA8IG51bWVyaWNfbGltaXRzPGlu
dDY0X3Q+OjptaW4oKSkKKyAgICAgICAgcmV0dXJuIG5lZ2F0aXZlSW5maW5pdGVUaW1lKCk7CisK
KyAgICB3aGlsZSAoZG91YmxlVGltZSAqIHRpbWVTY2FsZSA+IG51bWVyaWNfbGltaXRzPGludDY0
X3Q+OjptYXgoKSkKKyAgICAgICAgdGltZVNjYWxlIC89IDI7CisgICAgcmV0dXJuIE1lZGlhVGlt
ZShzdGF0aWNfY2FzdDxpbnQ2NF90Pihkb3VibGVUaW1lICogdGltZVNjYWxlKSwgdGltZVNjYWxl
LCBWYWxpZCk7Cit9CisKK2Zsb2F0IE1lZGlhVGltZTo6dG9GbG9hdCgpIGNvbnN0Cit7CisgICAg
aWYgKGlzSW52YWxpZCgpIHx8IGlzSW5kZWZpbml0ZSgpKQorICAgICAgICByZXR1cm4gc3RkOjpu
dW1lcmljX2xpbWl0czxmbG9hdD46OnF1aWV0X05hTigpOworICAgIGlmIChpc1Bvc2l0aXZlSW5m
aW5pdGUoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZp
bml0eSgpOworICAgIGlmIChpc05lZ2F0aXZlSW5maW5pdGUoKSkKKyAgICAgICAgcmV0dXJuIC1z
dGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKTsKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KG1fdGltZVZhbHVlKSAvIG1fdGltZVNjYWxlOworfQorCitkb3VibGUgTWVk
aWFUaW1lOjp0b0RvdWJsZSgpIGNvbnN0Cit7CisgICAgaWYgKGlzSW52YWxpZCgpIHx8IGlzSW5k
ZWZpbml0ZSgpKQorICAgICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+Ojpx
dWlldF9OYU4oKTsKKyAgICBpZiAoaXNQb3NpdGl2ZUluZmluaXRlKCkpCisgICAgICAgIHJldHVy
biBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCk7CisgICAgaWYgKGlzTmVn
YXRpdmVJbmZpbml0ZSgpKQorICAgICAgICByZXR1cm4gLXN0ZDo6bnVtZXJpY19saW1pdHM8ZG91
YmxlPjo6aW5maW5pdHkoKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPihtX3RpbWVW
YWx1ZSkgLyBtX3RpbWVTY2FsZTsKK30KKworTWVkaWFUaW1lJiBNZWRpYVRpbWU6Om9wZXJhdG9y
PShjb25zdCBNZWRpYVRpbWUmIHJocykKK3sKKyAgICBtX3RpbWVWYWx1ZSA9IHJocy5tX3RpbWVW
YWx1ZTsKKyAgICBtX3RpbWVTY2FsZSA9IHJocy5tX3RpbWVTY2FsZTsKKyAgICBtX3RpbWVGbGFn
cyA9IHJocy5tX3RpbWVGbGFnczsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK01lZGlhVGltZSBN
ZWRpYVRpbWU6Om9wZXJhdG9yKyhjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3QKK3sKKyAgICBp
ZiAocmhzLmlzSW52YWxpZCgpIHx8IGlzSW52YWxpZCgpKQorICAgICAgICByZXR1cm4gaW52YWxp
ZFRpbWUoKTsKKworICAgIGlmIChyaHMuaXNJbmRlZmluaXRlKCkgfHwgaXNJbmRlZmluaXRlKCkp
CisgICAgICAgIHJldHVybiBpbmRlZmluaXRlVGltZSgpOworCisgICAgaWYgKGlzUG9zaXRpdmVJ
bmZpbml0ZSgpKSB7CisgICAgICAgIGlmIChyaHMuaXNOZWdhdGl2ZUluZmluaXRlKCkpCisgICAg
ICAgICAgICByZXR1cm4gaW52YWxpZFRpbWUoKTsKKyAgICAgICAgcmV0dXJuIHBvc2l0aXZlSW5m
aW5pdGVUaW1lKCk7CisgICAgfQorCisgICAgaWYgKGlzTmVnYXRpdmVJbmZpbml0ZSgpKSB7Cisg
ICAgICAgIGlmIChyaHMuaXNQb3NpdGl2ZUluZmluaXRlKCkpCisgICAgICAgICAgICByZXR1cm4g
aW52YWxpZFRpbWUoKTsKKyAgICAgICAgcmV0dXJuIG5lZ2F0aXZlSW5maW5pdGVUaW1lKCk7Cisg
ICAgfQorCisgICAgaW50MzJfdCBjb21tb25UaW1lU2NhbGU7CisgICAgaWYgKCFsZWFzdENvbW1v
bk11bHRpcGxlKHRoaXMtPm1fdGltZVNjYWxlLCByaHMubV90aW1lU2NhbGUsIGNvbW1vblRpbWVT
Y2FsZSkgfHwgY29tbW9uVGltZVNjYWxlID4gTWF4aW11bVRpbWVTY2FsZSkKKyAgICAgICAgY29t
bW9uVGltZVNjYWxlID0gTWF4aW11bVRpbWVTY2FsZTsKKyAgICBNZWRpYVRpbWUgYSA9ICp0aGlz
OworICAgIE1lZGlhVGltZSBiID0gcmhzOworICAgIGEuc2V0VGltZVNjYWxlKGNvbW1vblRpbWVT
Y2FsZSk7CisgICAgYi5zZXRUaW1lU2NhbGUoY29tbW9uVGltZVNjYWxlKTsKKyAgICB3aGlsZSAo
IXNhZmVBZGQoYS5tX3RpbWVWYWx1ZSwgYi5tX3RpbWVWYWx1ZSwgYS5tX3RpbWVWYWx1ZSkpIHsK
KyAgICAgICAgaWYgKGNvbW1vblRpbWVTY2FsZSA9PSAxKQorICAgICAgICAgICAgcmV0dXJuIGEu
bV90aW1lVmFsdWUgPiAwID8gcG9zaXRpdmVJbmZpbml0ZVRpbWUoKSA6IG5lZ2F0aXZlSW5maW5p
dGVUaW1lKCk7CisgICAgICAgIGNvbW1vblRpbWVTY2FsZSAvPSAyOworICAgICAgICBhLnNldFRp
bWVTY2FsZShjb21tb25UaW1lU2NhbGUpOworICAgICAgICBiLnNldFRpbWVTY2FsZShjb21tb25U
aW1lU2NhbGUpOworICAgIH0KKyAgICByZXR1cm4gYTsKK30KKworTWVkaWFUaW1lIE1lZGlhVGlt
ZTo6b3BlcmF0b3ItKGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdAoreworICAgIGlmIChyaHMu
aXNJbnZhbGlkKCkgfHwgaXNJbnZhbGlkKCkpCisgICAgICAgIHJldHVybiBpbnZhbGlkVGltZSgp
OworCisgICAgaWYgKHJocy5pc0luZGVmaW5pdGUoKSB8fCBpc0luZGVmaW5pdGUoKSkKKyAgICAg
ICAgcmV0dXJuIGluZGVmaW5pdGVUaW1lKCk7CisKKyAgICBpZiAoaXNQb3NpdGl2ZUluZmluaXRl
KCkpIHsKKyAgICAgICAgaWYgKHJocy5pc1Bvc2l0aXZlSW5maW5pdGUoKSkKKyAgICAgICAgICAg
IHJldHVybiBpbnZhbGlkVGltZSgpOworICAgICAgICByZXR1cm4gcG9zaXRpdmVJbmZpbml0ZVRp
bWUoKTsKKyAgICB9CisKKyAgICBpZiAoaXNOZWdhdGl2ZUluZmluaXRlKCkpIHsKKyAgICAgICAg
aWYgKHJocy5pc05lZ2F0aXZlSW5maW5pdGUoKSkKKyAgICAgICAgICAgIHJldHVybiBpbnZhbGlk
VGltZSgpOworICAgICAgICByZXR1cm4gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKTsKKyAgICB9CisK
KyAgICBpbnQzMl90IGNvbW1vblRpbWVTY2FsZTsKKyAgICBpZiAoIWxlYXN0Q29tbW9uTXVsdGlw
bGUodGhpcy0+bV90aW1lU2NhbGUsIHJocy5tX3RpbWVTY2FsZSwgY29tbW9uVGltZVNjYWxlKSB8
fCBjb21tb25UaW1lU2NhbGUgPiBNYXhpbXVtVGltZVNjYWxlKQorICAgICAgICBjb21tb25UaW1l
U2NhbGUgPSBNYXhpbXVtVGltZVNjYWxlOworICAgIE1lZGlhVGltZSBhID0gKnRoaXM7CisgICAg
TWVkaWFUaW1lIGIgPSByaHM7CisgICAgYS5zZXRUaW1lU2NhbGUoY29tbW9uVGltZVNjYWxlKTsK
KyAgICBiLnNldFRpbWVTY2FsZShjb21tb25UaW1lU2NhbGUpOworICAgIHdoaWxlICghc2FmZVN1
YihhLm1fdGltZVZhbHVlLCBiLm1fdGltZVZhbHVlLCBhLm1fdGltZVZhbHVlKSkgeworICAgICAg
ICBpZiAoY29tbW9uVGltZVNjYWxlID09IDEpCisgICAgICAgICAgICByZXR1cm4gYS5tX3RpbWVW
YWx1ZSA+IDAgPyBwb3NpdGl2ZUluZmluaXRlVGltZSgpIDogbmVnYXRpdmVJbmZpbml0ZVRpbWUo
KTsKKyAgICAgICAgY29tbW9uVGltZVNjYWxlIC89IDI7CisgICAgICAgIGEuc2V0VGltZVNjYWxl
KGNvbW1vblRpbWVTY2FsZSk7CisgICAgICAgIGIuc2V0VGltZVNjYWxlKGNvbW1vblRpbWVTY2Fs
ZSk7CisgICAgfQorICAgIHJldHVybiBhOworfQorCitib29sIE1lZGlhVGltZTo6b3BlcmF0b3I8
KGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdAoreworICAgIHJldHVybiBjb21wYXJlKHJocykg
PT0gTGVzc1RoYW47Cit9CisKK2Jvb2wgTWVkaWFUaW1lOjpvcGVyYXRvcj4oY29uc3QgTWVkaWFU
aW1lJiByaHMpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNvbXBhcmUocmhzKSA9PSBHcmVhdGVyVGhh
bjsKK30KKworYm9vbCBNZWRpYVRpbWU6Om9wZXJhdG9yPT0oY29uc3QgTWVkaWFUaW1lJiByaHMp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGNvbXBhcmUocmhzKSA9PSBFcXVhbFRvOworfQorCitib29s
IE1lZGlhVGltZTo6b3BlcmF0b3I+PShjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3QKK3sKKyAg
ICByZXR1cm4gY29tcGFyZShyaHMpID49IEVxdWFsVG87Cit9CisKK2Jvb2wgTWVkaWFUaW1lOjpv
cGVyYXRvcjw9KGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdAoreworICAgIHJldHVybiBjb21w
YXJlKHJocykgPD0gRXF1YWxUbzsKK30KKworTWVkaWFUaW1lOjpDb21wYXJpc29uRmxhZ3MgTWVk
aWFUaW1lOjpjb21wYXJlKGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdAoreworICAgIGlmICgo
aXNQb3NpdGl2ZUluZmluaXRlKCkgJiYgcmhzLmlzUG9zaXRpdmVJbmZpbml0ZSgpKQorICAgICAg
ICB8fCAoaXNOZWdhdGl2ZUluZmluaXRlKCkgJiYgcmhzLmlzTmVnYXRpdmVJbmZpbml0ZSgpKQor
ICAgICAgICB8fCAoaXNJbnZhbGlkKCkgJiYgcmhzLmlzSW52YWxpZCgpKQorICAgICAgICB8fCAo
aXNJbmRlZmluaXRlKCkgJiYgcmhzLmlzSW5kZWZpbml0ZSgpKSkKKyAgICAgICAgcmV0dXJuIEVx
dWFsVG87CisKKyAgICBpZiAoaXNJbnZhbGlkKCkpCisgICAgICAgIHJldHVybiBHcmVhdGVyVGhh
bjsKKworICAgIGlmIChyaHMuaXNJbnZhbGlkKCkpCisgICAgICAgIHJldHVybiBMZXNzVGhhbjsK
KworICAgIGlmIChyaHMuaXNOZWdhdGl2ZUluZmluaXRlKCkgfHwgaXNQb3NpdGl2ZUluZmluaXRl
KCkpCisgICAgICAgIHJldHVybiBHcmVhdGVyVGhhbjsKKworICAgIGlmIChyaHMuaXNQb3NpdGl2
ZUluZmluaXRlKCkgfHwgaXNOZWdhdGl2ZUluZmluaXRlKCkpCisgICAgICAgIHJldHVybiBMZXNz
VGhhbjsKKworICAgIGlmIChpc0luZGVmaW5pdGUoKSkKKyAgICAgICAgcmV0dXJuIEdyZWF0ZXJU
aGFuOworCisgICAgaWYgKHJocy5pc0luZGVmaW5pdGUoKSkKKyAgICAgICAgcmV0dXJuIExlc3NU
aGFuOworCisgICAgaW50NjRfdCByaHNXaG9sZSA9IHJocy5tX3RpbWVWYWx1ZSAvIHJocy5tX3Rp
bWVTY2FsZTsKKyAgICBpbnQ2NF90IGxoc1dob2xlID0gbV90aW1lVmFsdWUgLyBtX3RpbWVTY2Fs
ZTsKKyAgICBpZiAobGhzV2hvbGUgPiByaHNXaG9sZSkKKyAgICAgICAgcmV0dXJuIEdyZWF0ZXJU
aGFuOworICAgIGlmIChsaHNXaG9sZSA8IHJoc1dob2xlKQorICAgICAgICByZXR1cm4gTGVzc1Ro
YW47CisKKyAgICBpbnQ2NF90IHJoc1JlbWFpbiA9IHJocy5tX3RpbWVWYWx1ZSAlIHJocy5tX3Rp
bWVTY2FsZTsKKyAgICBpbnQ2NF90IGxoc1JlbWFpbiA9IG1fdGltZVZhbHVlICUgbV90aW1lU2Nh
bGU7CisgICAgaW50NjRfdCBsaHNGYWN0b3IgPSBsaHNSZW1haW4gKiByaHMubV90aW1lU2NhbGU7
CisgICAgaW50NjRfdCByaHNGYWN0b3IgPSByaHNSZW1haW4gKiBtX3RpbWVTY2FsZTsKKworICAg
IGlmIChsaHNGYWN0b3IgPT0gcmhzRmFjdG9yKQorICAgICAgICByZXR1cm4gRXF1YWxUbzsKKyAg
ICByZXR1cm4gbGhzRmFjdG9yID4gcmhzRmFjdG9yID8gR3JlYXRlclRoYW4gOiBMZXNzVGhhbjsK
K30KKworY29uc3QgTWVkaWFUaW1lJiBNZWRpYVRpbWU6Onplcm9UaW1lKCkKK3sKKyAgICBzdGF0
aWMgY29uc3QgTWVkaWFUaW1lKiB0aW1lID0gbmV3IE1lZGlhVGltZSgwLCAxLCBWYWxpZCk7Cisg
ICAgcmV0dXJuICp0aW1lOworfQorCitjb25zdCBNZWRpYVRpbWUmIE1lZGlhVGltZTo6aW52YWxp
ZFRpbWUoKQoreworICAgIHN0YXRpYyBjb25zdCBNZWRpYVRpbWUqIHRpbWUgPSBuZXcgTWVkaWFU
aW1lKC0xLCAxLCAwKTsKKyAgICByZXR1cm4gKnRpbWU7Cit9CisKK2NvbnN0IE1lZGlhVGltZSYg
TWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpCit7CisgICAgc3RhdGljIGNvbnN0IE1l
ZGlhVGltZSogdGltZSA9IG5ldyBNZWRpYVRpbWUoMCwgMSwgUG9zaXRpdmVJbmZpbml0ZSB8IFZh
bGlkKTsKKyAgICByZXR1cm4gKnRpbWU7Cit9CisKK2NvbnN0IE1lZGlhVGltZSYgTWVkaWFUaW1l
OjpuZWdhdGl2ZUluZmluaXRlVGltZSgpCit7CisgICAgc3RhdGljIGNvbnN0IE1lZGlhVGltZSog
dGltZSA9IG5ldyBNZWRpYVRpbWUoLTEsIDEsIE5lZ2F0aXZlSW5maW5pdGUgfCBWYWxpZCk7Cisg
ICAgcmV0dXJuICp0aW1lOworfQorCitjb25zdCBNZWRpYVRpbWUmIE1lZGlhVGltZTo6aW5kZWZp
bml0ZVRpbWUoKQoreworICAgIHN0YXRpYyBjb25zdCBNZWRpYVRpbWUqIHRpbWUgPSBuZXcgTWVk
aWFUaW1lKDAsIDEsIEluZGVmaW5pdGUgfCBWYWxpZCk7CisgICAgcmV0dXJuICp0aW1lOworfQor
Cit2b2lkIE1lZGlhVGltZTo6c2V0VGltZVNjYWxlKGludDMyX3QgdGltZVNjYWxlKQoreworICAg
IGlmICh0aW1lU2NhbGUgPT0gbV90aW1lU2NhbGUpCisgICAgICAgIHJldHVybjsKKyAgICB0aW1l
U2NhbGUgPSBzdGQ6Om1pbihNYXhpbXVtVGltZVNjYWxlLCB0aW1lU2NhbGUpOworICAgIGludDY0
X3Qgd2hvbGVQYXJ0ID0gbV90aW1lVmFsdWUgLyBtX3RpbWVTY2FsZTsKKworICAgIC8vIElmIHNl
dHRpbmcgdGhlIHRpbWUgc2NhbGUgd2lsbCBjYXVzZSBhbiBvdmVyZmxvdywgZGl2aWRlIHRoZQor
ICAgIC8vIHRpbWVzY2FsZSBieSB0d28gdW50aWwgdGhlIG51bWJlciB3aWxsIGZpdCwgYW5kIHJv
dW5kIHRoZQorICAgIC8vIHJlc3VsdC4KKyAgICBpbnQ2NF90IG5ld1dob2xlUGFydDsKKyAgICB3
aGlsZSAoIXNhZmVNdWx0aXBseSh3aG9sZVBhcnQsIHRpbWVTY2FsZSwgbmV3V2hvbGVQYXJ0KSkK
KyAgICAgICAgdGltZVNjYWxlIC89IDI7CisKKyAgICBpbnQ2NF90IHJlbWFpbmRlciA9IG1fdGlt
ZVZhbHVlICUgbV90aW1lU2NhbGU7CisgICAgbV90aW1lVmFsdWUgPSBuZXdXaG9sZVBhcnQgKyAo
cmVtYWluZGVyICogdGltZVNjYWxlKSAvIG1fdGltZVNjYWxlOworICAgIG1fdGltZVNjYWxlID0g
dGltZVNjYWxlOworfQorCitzdGF0aWMgaW50MzJfdCBzaWdudW0oaW50NjRfdCB2YWwpCit7Cisg
ICAgcmV0dXJuICgwIDwgdmFsKSAtICh2YWwgPCAwKTsKK30KKworTWVkaWFUaW1lIGFicyhjb25z
dCBNZWRpYVRpbWUmIHJocykKK3sKKyAgICBpZiAocmhzLmlzSW52YWxpZCgpKQorICAgICAgICBy
ZXR1cm4gTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpOworICAgIGlmIChyaHMuaXNOZWdhdGl2ZUlu
ZmluaXRlKCkgfHwgcmhzLmlzUG9zaXRpdmVJbmZpbml0ZSgpKQorICAgICAgICByZXR1cm4gTWVk
aWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpOworICAgIE1lZGlhVGltZSB2YWwgPSByaHM7
CisgICAgdmFsLm1fdGltZVZhbHVlICo9IHNpZ251bShyaHMubV90aW1lU2NhbGUpICogc2lnbnVt
KHJocy5tX3RpbWVWYWx1ZSk7CisgICAgcmV0dXJuIHZhbDsKK30KKworfQorCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRpbWUuaCBiL1NvdXJjZS9XVEYvd3RmL01lZGlhVGltZS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjQzMGQzZjViMmU5YTU3ODA5NDA5OTEyMzcwN2Q1YjVjOWQ1NTI0ZmIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRpbWUuaApAQCAtMCwwICsxLDEw
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFw
cGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRz
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4gCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgPGNtYXRoPgorI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDxt
YXRoLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisKK25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBX
VEZfRVhQT1JUX1BSSVZBVEUgTWVkaWFUaW1lIHsKK3B1YmxpYzoKKyAgICBlbnVtIHsKKyAgICAg
ICAgVmFsaWQgPSAxIDw8IDAsCisgICAgICAgIEhhc0JlZW5Sb3VuZGVkID0gMSA8PCAxLAorICAg
ICAgICBQb3NpdGl2ZUluZmluaXRlID0gMSA8PCAyLAorICAgICAgICBOZWdhdGl2ZUluZmluaXRl
ID0gMSA8PCAzLAorICAgICAgICBJbmRlZmluaXRlID0gMSA8PCA0LAorICAgIH07CisKKyAgICBN
ZWRpYVRpbWUoKTsKKyAgICBNZWRpYVRpbWUoaW50NjRfdCB2YWx1ZSwgaW50MzJfdCBzY2FsZSA9
IERlZmF1bHRUaW1lU2NhbGUsIHVpbnQzMl90IGZsYWdzID0gVmFsaWQpOworICAgIE1lZGlhVGlt
ZShjb25zdCBNZWRpYVRpbWUmIHJocyk7CisgICAgfk1lZGlhVGltZSgpOworCisgICAgc3RhdGlj
IE1lZGlhVGltZSBjcmVhdGVXaXRoRmxvYXQoZmxvYXQgZmxvYXRUaW1lLCBpbnQzMl90IHRpbWVT
Y2FsZSA9IERlZmF1bHRUaW1lU2NhbGUpOworICAgIHN0YXRpYyBNZWRpYVRpbWUgY3JlYXRlV2l0
aERvdWJsZShkb3VibGUgZG91YmxlVGltZSwgaW50MzJfdCB0aW1lU2NhbGUgPSBEZWZhdWx0VGlt
ZVNjYWxlKTsKKworICAgIGZsb2F0IHRvRmxvYXQoKSBjb25zdDsKKyAgICBkb3VibGUgdG9Eb3Vi
bGUoKSBjb25zdDsKKworICAgIE1lZGlhVGltZSYgb3BlcmF0b3I9KGNvbnN0IE1lZGlhVGltZSYg
cmhzKTsKKyAgICBNZWRpYVRpbWUgb3BlcmF0b3IrKGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25z
dDsKKyAgICBNZWRpYVRpbWUgb3BlcmF0b3ItKGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdDsK
KyAgICBib29sIG9wZXJhdG9yPChjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3Q7CisgICAgYm9v
bCBvcGVyYXRvcj4oY29uc3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvcj49KGNv
bnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yPD0oY29uc3QgTWVk
aWFUaW1lJiByaHMpIGNvbnN0OworCisgICAgdHlwZWRlZiBlbnVtIHsKKyAgICAgICAgTGVzc1Ro
YW4gPSAtMSwKKyAgICAgICAgRXF1YWxUbyA9IDAsCisgICAgICAgIEdyZWF0ZXJUaGFuID0gMSwK
KyAgICB9IENvbXBhcmlzb25GbGFnczsKKworICAgIENvbXBhcmlzb25GbGFncyBjb21wYXJlKGNv
bnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdDsKKworICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsg
cmV0dXJuIG1fdGltZUZsYWdzICYgVmFsaWQ7IH0KKyAgICBib29sIGlzSW52YWxpZCgpIGNvbnN0
IHsgcmV0dXJuICFpc1ZhbGlkKCk7IH0KKyAgICBib29sIGhhc0JlZW5Sb3VuZGVkKCkgY29uc3Qg
eyByZXR1cm4gbV90aW1lRmxhZ3MgJiBIYXNCZWVuUm91bmRlZDsgfQorICAgIGJvb2wgaXNQb3Np
dGl2ZUluZmluaXRlKCkgY29uc3QgeyByZXR1cm4gbV90aW1lRmxhZ3MgJiBQb3NpdGl2ZUluZmlu
aXRlOyB9CisgICAgYm9vbCBpc05lZ2F0aXZlSW5maW5pdGUoKSBjb25zdCB7IHJldHVybiBtX3Rp
bWVGbGFncyAmIE5lZ2F0aXZlSW5maW5pdGU7IH0KKyAgICBib29sIGlzSW5kZWZpbml0ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdGltZUZsYWdzICYgSW5kZWZpbml0ZTsgfQorCisgICAgc3RhdGljIGNv
bnN0IE1lZGlhVGltZSYgemVyb1RpbWUoKTsKKyAgICBzdGF0aWMgY29uc3QgTWVkaWFUaW1lJiBp
bnZhbGlkVGltZSgpOworICAgIHN0YXRpYyBjb25zdCBNZWRpYVRpbWUmIHBvc2l0aXZlSW5maW5p
dGVUaW1lKCk7CisgICAgc3RhdGljIGNvbnN0IE1lZGlhVGltZSYgbmVnYXRpdmVJbmZpbml0ZVRp
bWUoKTsKKyAgICBzdGF0aWMgY29uc3QgTWVkaWFUaW1lJiBpbmRlZmluaXRlVGltZSgpOworCisg
ICAgY29uc3QgaW50NjRfdCYgdGltZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV90aW1lVmFsdWU7
IH0KKyAgICBjb25zdCBpbnQzMl90JiB0aW1lU2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3RpbWVT
Y2FsZTsgfQorCisgICAgZnJpZW5kIE1lZGlhVGltZSBhYnMoY29uc3QgTWVkaWFUaW1lJiByaHMp
OworcHJpdmF0ZToKKyAgICBzdGF0aWMgY29uc3QgaW50MzJfdCBEZWZhdWx0VGltZVNjYWxlID0g
NjAwMDsKKyAgICBzdGF0aWMgY29uc3QgaW50MzJfdCBNYXhpbXVtVGltZVNjYWxlOworCisgICAg
dm9pZCBzZXRUaW1lU2NhbGUoaW50MzJfdCk7CisKKyAgICBpbnQ2NF90IG1fdGltZVZhbHVlOwor
ICAgIGludDMyX3QgbV90aW1lU2NhbGU7CisgICAgdWludDMyX3QgbV90aW1lRmxhZ3M7Cit9Owor
CitXVEZfRVhQT1JUX1BSSVZBVEUgZXh0ZXJuIE1lZGlhVGltZSBhYnMoY29uc3QgTWVkaWFUaW1l
JiByaHMpOworfQorCit1c2luZyBXVEY6Ok1lZGlhVGltZTsKK3VzaW5nIFdURjo6YWJzOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGU2MDVmOGJk
ZjFiNjI4MzcyYjNmNTI1MDJhNmNhMmFlMDcwMWUwYmIuLmFkZmI4ZjkzNGJiOTM3OTlkMDRkMmYx
ZTNlYWU1MWE5YWIxY2U0MDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMi0wNi0xMSAgSmVyIE5vYmxlICA8amVy
Lm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IGEgcmF0aW9uYWwgdGltZSBjbGFz
cyBmb3IgdXNlIGJ5IG1lZGlhIGVsZW1lbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg3ODcKKworICAgICAgICBBZGQgdW5pdCB0ZXN0cyBmb3Ig
dGhlIFdURjo6TWVkaWFUaW1lIGNsYXNzLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9HTlVtYWtlZmlsZS5hbToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkuZ3lwaToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9NZWRpYVRpbWUuY3BwOiBBZGRlZC4KKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL3dpbi9UZXN0V2ViS2l0QVBJLnZjcHJvajoKKyAgICAgICAgKFdURjo6
b3BlcmF0b3I8PCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJKToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlRFU1QpOgorCiAyMDEyLTA2LTExICBab2x0YW4gSG9ydmF0aCAgPHpvbHRhbkB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFtRdF0gQWRkIGNvbmZpZyB0ZXN0cyBmb3IgV0VCUCBpbWFnZWRl
Y29kZXIgbGlicmFyeSwgbW9kaWZ5IEhBVkUoZGVjb2RlcmxpYnJhcnkpIHRvIFVTRSguLi4pCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0dOVW1ha2VmaWxlLmFtIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9HTlVtYWtlZmlsZS5hbQppbmRleCBmZjkyNDkyZjMwYTJkN2JjNWZmNDg2MWE2
MmVkODY3OTFhODAyNGRiLi5lMTRhZTAyYmRlYTIyOGUyMjk5MjYxYmNjNzgzYTk0MjRlMjQxZDIw
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0dOVW1ha2VmaWxlLmFtCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvR05VbWFrZWZpbGUuYW0KQEAgLTIxNyw2ICsyMTcsMTIgQEAgUHJv
Z3JhbXNfVGVzdFdlYktpdEFQSV9XVEZfVGVzdEhhc2hNYXBfQ1BQRkxBR1MgPSAkKHRlc3R3ZWJr
aXRhcGlfd3RmX3Rlc3RzX2NwcGYKIFByb2dyYW1zX1Rlc3RXZWJLaXRBUElfV1RGX1Rlc3RIYXNo
TWFwX0xEQUREID0gJCh0ZXN0d2Via2l0YXBpX3d0Zl90ZXN0c19sZGFkZCkKIFByb2dyYW1zX1Rl
c3RXZWJLaXRBUElfV1RGX1Rlc3RIYXNoTWFwX0xERkxBR1MgPSAkKHRlc3R3ZWJraXRhcGlfd3Rm
X3Rlc3RzX2xkZmxhZ3MpCiAKK1Byb2dyYW1zX1Rlc3RXZWJLaXRBUElfV1RGX1Rlc3RNZWRpYVRp
bWVfU09VUkNFUyA9IFwKKwlUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9NZWRpYVRpbWUu
Y3BwCitQcm9ncmFtc19UZXN0V2ViS2l0QVBJX1dURl9UZXN0TWVkaWFUaW1lX0NQUEZMQUdTID0g
JCh0ZXN0d2Via2l0YXBpX3dlYmtpdDJfdGVzdHNfY3BwZmxhZ3MpCitQcm9ncmFtc19UZXN0V2Vi
S2l0QVBJX1dURl9UZXN0TWVkaWFUaW1lX0xEQUREID0gJCh0ZXN0d2Via2l0YXBpX3dlYmtpdDJf
dGVzdHNfbGRhZGQpCitQcm9ncmFtc19UZXN0V2ViS2l0QVBJX1dURl9UZXN0TWVkaWFUaW1lX0xE
RkxBR1MgPSAkKHRlc3R3ZWJraXRhcGlfd2Via2l0Ml90ZXN0c19sZGZsYWdzKQorCiBQcm9ncmFt
c19UZXN0V2ViS2l0QVBJX1dURl9UZXN0UmVkQmxhY2tUcmVlX1NPVVJDRVMgPSBcCiAJVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVkQmxhY2tUcmVlLmNwcAogUHJvZ3JhbXNfVGVzdFdl
YktpdEFQSV9XVEZfVGVzdFJlZEJsYWNrVHJlZV9DUFBGTEFHUyA9ICQodGVzdHdlYmtpdGFwaV93
dGZfdGVzdHNfY3BwZmxhZ3MpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkuZ3lwaSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS5neXBpCmlu
ZGV4IGM1MTE4N2ZhMDYzNjBhMjkxNDgyMzc1YTMwNjE4NDE5NzE3YjZjZTcuLjk0MWU3NzZkNWY0
ZDAxZTliMzkzN2NhOGNlNDdmOWRkNzdmNDVlZjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS5neXBpCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS5neXBpCkBAIC0zNCw2ICszNCw3IEBACiAgICAgICAgICAgICAnVGVzdHMvV1RGL0No
ZWNrZWRBcml0aG1ldGljT3BlcmF0aW9ucy5jcHAnLAogICAgICAgICAgICAgJ1Rlc3RzL1dURi9G
dW5jdGlvbmFsLmNwcCcsCiAgICAgICAgICAgICAnVGVzdHMvV1RGL0hhc2hNYXAuY3BwJywKKyAg
ICAgICAgICAgICdUZXN0cy9XVEYvTWVkaWFUaW1lLmNwcCcsCiAgICAgICAgICAgICAnVGVzdHMv
V1RGL1JlZEJsYWNrVHJlZS5jcHAnLAogICAgICAgICAgICAgJ1Rlc3RzL1dURi9TdHJpbmdCdWls
ZGVyLmNwcCcsCiAgICAgICAgICAgICAnVGVzdHMvV1RGL1N0cmluZ09wZXJhdG9ycy5jcHAnLApk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjNTE5YzAyMzE2ZTIxNWRkMGYyN2ZjNzg2NjViOGRm
ZjNhNjZiNWNlLi5kZDM1ZWRmMzA5ODVjMDE5MGU5ZTFlMDg4NWJlM2JmZjQxODZiMTdhIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQ0LDYgKzE0NCw3IEBACiAJCUM1NDBGNzg0MTUyRTVB
OUEwMEE0MEM4QyAvKiB2ZXJib3NlTWFya3VwLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzU0MEY3ODMxNTJFNUE3ODAwQTQwQzhDIC8q
IHZlcmJvc2VNYXJrdXAuaHRtbCAqLzsgfTsKIAkJRTEyMjBEQTAxNTVCMjU0ODAwMTNFMkZDIC8q
IE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEyMjBEOUYxNTVCMjU0ODAw
MTNFMkZDIC8qIE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLm1t
ICovOyB9OwogCQlFMTIyMERDQTE1NUIyOEFBMDAxM0UyRkMgLyogTWVtb3J5Q2FjaGVEaXNhYmxl
V2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTIyMERDOTE1NUIyODdEMDAxM0UyRkMgLyog
TWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUuaHRtbCAqLzsgfTsK
KwkJQ0Q1NDk3QjQxNTg1N0YwQzAwQjVCQzMwIC8qIE1lZGlhVGltZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDU0OTdCMzE1ODU3RjBDMDBCNUJD
MzAgLyogTWVkaWFUaW1lLmNwcCAqLzsgfTsKIAkJRTQ5MDI5NjgxNEUyRTNBNDAwMkJFREQxIC8q
IFR5cGluZ1N0eWxlQ3Jhc2gubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFNDkwMjk2NzE0RTJFM0E0MDAyQkVERDEgLyogVHlwaW5nU3R5bGVDcmFzaC5t
bSAqLzsgfTsKIAkJRjNGQzNFRTMxMzY3OEI3MzAwMTI2QTY1IC8qIGxpYmd0ZXN0LmEgaW4gRnJh
bWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGM0ZDM0VFMjEzNjc4
QjczMDAxMjZBNjUgLyogbGliZ3Rlc3QuYSAqLzsgfTsKIAkJRjZGM0YyOTExMzM0MkZFQjAwQTZC
RjE5IC8qIENvb2tpZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjZGM0YyOTAxMzM0MkZFQjAwQTZCRjE5IC8qIENvb2tpZU1hbmFnZXIu
Y3BwICovOyB9OwpAQCAtMzYzLDYgKzM2NCw3IEBACiAJCUM1NDBGNzgzMTUyRTVBNzgwMEE0MEM4
QyAvKiB2ZXJib3NlTWFya3VwLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSB2ZXJi
b3NlTWFya3VwLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxMjIwRDlGMTU1
QjI1NDgwMDEzRTJGQyAvKiBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxl
Z2F0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1lbW9yeUNh
Y2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFMTIyMERDOTE1NUIyODdEMDAxM0UyRkMgLyogTWVtb3J5Q2FjaGVEaXNh
YmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsg
cGF0aCA9IE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLmh0bWw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNENTQ5N0IzMTU4NTdGMEMwMEI1QkMzMCAv
KiBNZWRpYVRpbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTWVk
aWFUaW1lLmNwcDsgcGF0aCA9IFdURi9NZWRpYVRpbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFNDkwMjk2NzE0RTJFM0E0MDAyQkVERDEgLyogVHlwaW5nU3R5bGVDcmFzaC5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFR5cGluZ1N0eWxlQ3Jh
c2gubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUYzRkMzRUUyMTM2NzhCNzMwMDEy
NkE2NSAvKiBsaWJndGVzdC5hICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gYXJjaGl2ZS5hcjsgcGF0aCA9IGxpYmd0ZXN0LmE7IHNvdXJjZVRyZWUgPSBC
VUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCUY2RjNGMjkwMTMzNDJGRUIwMEE2QkYxOSAvKiBDb29r
aWVNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvb2tp
ZU1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTczLDYgKzU3NSw3
IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQlCQzAyOUIxQTE0ODZCMjM4MDA4MTdEQTkgLyogbnMg
Ki8sCiAJCQkJQzA5OTFDNEYxNDNDN0Q2ODAwNzk5OEYyIC8qIGNmICovLAorCQkJCUNENTQ5N0Iz
MTU4NTdGMEMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuY3BwICovLAogCQkJCTBGQzZDNENFMTQxMDM0
QUQwMDVCN0YwQyAvKiBNZXRhQWxsb2NhdG9yLmNwcCAqLywKIAkJCQkwRkM2QzRDQjE0MTAyN0Uw
MDA1QjdGMEMgLyogUmVkQmxhY2tUcmVlLmNwcCAqLywKIAkJCQlBN0E5NjZEQTE0MEVDQ0M4MDA1
RUY5QjQgLyogQ2hlY2tlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNwcCAqLywKQEAgLTg4Myw2ICs4
ODYsNyBAQAogCQkJCUUxMjIwREEwMTU1QjI1NDgwMDEzRTJGQyAvKiBNZW1vcnlDYWNoZURpc2Fi
bGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY2RjQ5
QzY5MTU1NDVDOEUwMDA3RjM5RCAvKiBET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTUxRTkzMDE3MTU2QjEzRTEwMDRDOTlERiAvKiBXS1BhZ2VHZXRTY2Fs
ZUZhY3Rvck5vdFplcm8uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0Q1NDk3QjQxNTg1N0YwQzAw
QjVCQzMwIC8qIE1lZGlhVGltZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL01lZGlhVGltZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9NZWRpYVRpbWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU4ZmJiMjMzZDI0NjI3NjYx
NzBiYjIzZTA3ODE4ZWNlYmZkZmU2YzMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9NZWRpYVRpbWUuY3BwCkBAIC0wLDAgKzEsMTY2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJ
bmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAg
IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CisKK3VzaW5nIG5hbWVz
cGFjZSBzdGQ7CisKK25hbWVzcGFjZSBXVEYgeworCitzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwo
c3RkOjpvc3RyZWFtJiBvdXQsIGNvbnN0IE1lZGlhVGltZSYgdmFsKQoreworICAgIG91dCA8PCAi
eyAiOworICAgIGlmICh2YWwuaXNJbnZhbGlkKCkpCisgICAgICAgIG91dCA8PCAiaW52YWxpZCI7
CisgICAgZWxzZSBpZiAodmFsLmlzUG9zaXRpdmVJbmZpbml0ZSgpKQorICAgICAgICBvdXQgPDwg
IitpbmZpbml0ZSI7CisgICAgZWxzZSBpZiAodmFsLmlzTmVnYXRpdmVJbmZpbml0ZSgpKQorICAg
ICAgICBvdXQgPDwgIi1pbmZpbml0ZSI7CisgICAgZWxzZQorICAgICAgICBvdXQgPDwgInZhbHVl
OiAiIDw8IHZhbC50aW1lVmFsdWUoKSA8PCAiLCBzY2FsZTogIiA8PCB2YWwudGltZVNjYWxlKCk7
CisgICAgcmV0dXJuIG91dCA8PCAiIH0iOworfQorCit9CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJIHsKKworVEVTVChXVEYsIE1lZGlhVGltZSkKK3sKKyAgICAvLyBDb21wYXJpc29uIE9wZXJh
dG9ycworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCkgPiBN
ZWRpYVRpbWU6Om5lZ2F0aXZlSW5maW5pdGVUaW1lKCksIHRydWUpOworICAgIEVYUEVDVF9FUShN
ZWRpYVRpbWU6Om5lZ2F0aXZlSW5maW5pdGVUaW1lKCkgPCBNZWRpYVRpbWU6OnBvc2l0aXZlSW5m
aW5pdGVUaW1lKCksIHRydWUpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6Om5lZ2F0aXZlSW5m
aW5pdGVUaW1lKCkgPT0gTWVkaWFUaW1lOjpuZWdhdGl2ZUluZmluaXRlVGltZSgpLCB0cnVlKTsK
KyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpID09IE1lZGlh
VGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKSwgdHJ1ZSk7CisgICAgRVhQRUNUX0VRKE1lZGlh
VGltZTo6aW52YWxpZFRpbWUoKSA9PSBNZWRpYVRpbWU6OmludmFsaWRUaW1lKCksIHRydWUpOwor
ICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OmludmFsaWRUaW1lKCkgPiBNZWRpYVRpbWU6Om5lZ2F0
aXZlSW5maW5pdGVUaW1lKCksIHRydWUpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OmludmFs
aWRUaW1lKCkgPiBNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCksIHRydWUpOworICAg
IEVYUEVDVF9FUShNZWRpYVRpbWU6Om5lZ2F0aXZlSW5maW5pdGVUaW1lKCkgPCBNZWRpYVRpbWU6
OmludmFsaWRUaW1lKCksIHRydWUpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OnBvc2l0aXZl
SW5maW5pdGVUaW1lKCkgPCBNZWRpYVRpbWU6OmludmFsaWRUaW1lKCksIHRydWUpOworICAgIEVY
UEVDVF9FUShNZWRpYVRpbWU6OmluZGVmaW5pdGVUaW1lKCkgPT0gTWVkaWFUaW1lOjppbmRlZmlu
aXRlVGltZSgpLCB0cnVlKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjppbmRlZmluaXRlVGlt
ZSgpID4gTWVkaWFUaW1lOjpuZWdhdGl2ZUluZmluaXRlVGltZSgpLCB0cnVlKTsKKyAgICBFWFBF
Q1RfRVEoTWVkaWFUaW1lOjppbmRlZmluaXRlVGltZSgpIDwgTWVkaWFUaW1lOjpwb3NpdGl2ZUlu
ZmluaXRlVGltZSgpLCB0cnVlKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjpuZWdhdGl2ZUlu
ZmluaXRlVGltZSgpIDwgTWVkaWFUaW1lOjppbmRlZmluaXRlVGltZSgpLCB0cnVlKTsKKyAgICBF
WFBFQ1RfRVEoTWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpID4gTWVkaWFUaW1lOjpp
bmRlZmluaXRlVGltZSgpLCB0cnVlKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDEsIDEpIDwg
TWVkaWFUaW1lOjppbmRlZmluaXRlVGltZSgpLCB0cnVlKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFU
aW1lOjppbmRlZmluaXRlVGltZSgpID4gTWVkaWFUaW1lKDEsIDEpLCB0cnVlKTsKKyAgICBFWFBF
Q1RfRVEoTWVkaWFUaW1lKDEsIDEpIDwgTWVkaWFUaW1lKDIsIDEpLCB0cnVlKTsKKyAgICBFWFBF
Q1RfRVEoTWVkaWFUaW1lKDIsIDEpID4gTWVkaWFUaW1lKDEsIDEpLCB0cnVlKTsKKyAgICBFWFBF
Q1RfRVEoTWVkaWFUaW1lKDIsIDEpID09IE1lZGlhVGltZSgyLCAxKSwgdHJ1ZSk7CisgICAgRVhQ
RUNUX0VRKE1lZGlhVGltZSgyLCAxKSA9PSBNZWRpYVRpbWUoNCwgMiksIHRydWUpOworCisgICAg
Ly8gQWRkaXRpb24gT3BlcmF0b3JzCisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6cG9zaXRpdmVJ
bmZpbml0ZVRpbWUoKSArIE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKSwgTWVkaWFU
aW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjpu
ZWdhdGl2ZUluZmluaXRlVGltZSgpICsgTWVkaWFUaW1lOjpuZWdhdGl2ZUluZmluaXRlVGltZSgp
LCBNZWRpYVRpbWU6Om5lZ2F0aXZlSW5maW5pdGVUaW1lKCkpOworICAgIEVYUEVDVF9FUShNZWRp
YVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCkgKyBNZWRpYVRpbWU6Om5lZ2F0aXZlSW5maW5p
dGVUaW1lKCksIE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSk7CisgICAgRVhQRUNUX0VRKE1lZGlh
VGltZTo6bmVnYXRpdmVJbmZpbml0ZVRpbWUoKSArIE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0
ZVRpbWUoKSwgTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFU
aW1lOjppbnZhbGlkVGltZSgpICsgTWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpLCBN
ZWRpYVRpbWU6OmludmFsaWRUaW1lKCkpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OmludmFs
aWRUaW1lKCkgKyBNZWRpYVRpbWU6Om5lZ2F0aXZlSW5maW5pdGVUaW1lKCksIE1lZGlhVGltZTo6
aW52YWxpZFRpbWUoKSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSAr
IE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSwgTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpKTsKKyAg
ICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpICsgTWVkaWFUaW1lKDEsIDEpLCBN
ZWRpYVRpbWU6OmludmFsaWRUaW1lKCkpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OmluZGVm
aW5pdGVUaW1lKCkgKyBNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCksIE1lZGlhVGlt
ZTo6aW5kZWZpbml0ZVRpbWUoKSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6aW5kZWZpbml0
ZVRpbWUoKSArIE1lZGlhVGltZTo6bmVnYXRpdmVJbmZpbml0ZVRpbWUoKSwgTWVkaWFUaW1lOjpp
bmRlZmluaXRlVGltZSgpKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjppbmRlZmluaXRlVGlt
ZSgpICsgTWVkaWFUaW1lOjppbmRlZmluaXRlVGltZSgpLCBNZWRpYVRpbWU6OmluZGVmaW5pdGVU
aW1lKCkpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OmluZGVmaW5pdGVUaW1lKCkgKyBNZWRp
YVRpbWUoMSwgMSksIE1lZGlhVGltZTo6aW5kZWZpbml0ZVRpbWUoKSk7CisgICAgRVhQRUNUX0VR
KE1lZGlhVGltZSgxLCAxKSArIE1lZGlhVGltZSgxLCAxKSwgTWVkaWFUaW1lKDIsIDEpKTsKKyAg
ICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDEsIDIpICsgTWVkaWFUaW1lKDEsIDMpLCBNZWRpYVRpbWUo
NSwgNikpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMSwgbnVtZXJpY19saW1pdHM8aW50MzJf
dD46Om1heCgpLTEpICsgTWVkaWFUaW1lKDEsIG51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgo
KS0yKSwgTWVkaWFUaW1lKDIsIG51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpOworCisg
ICAgLy8gU3VidHJhY3Rpb24gT3BlcmF0b3JzCisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6cG9z
aXRpdmVJbmZpbml0ZVRpbWUoKSAtIE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKSwg
TWVkaWFUaW1lOjppbnZhbGlkVGltZSgpKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjpuZWdh
dGl2ZUluZmluaXRlVGltZSgpIC0gTWVkaWFUaW1lOjpuZWdhdGl2ZUluZmluaXRlVGltZSgpLCBN
ZWRpYVRpbWU6OmludmFsaWRUaW1lKCkpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OnBvc2l0
aXZlSW5maW5pdGVUaW1lKCkgLSBNZWRpYVRpbWU6Om5lZ2F0aXZlSW5maW5pdGVUaW1lKCksIE1l
ZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGlt
ZTo6bmVnYXRpdmVJbmZpbml0ZVRpbWUoKSAtIE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRp
bWUoKSwgTWVkaWFUaW1lOjpuZWdhdGl2ZUluZmluaXRlVGltZSgpKTsKKyAgICBFWFBFQ1RfRVEo
TWVkaWFUaW1lOjppbnZhbGlkVGltZSgpIC0gTWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGlt
ZSgpLCBNZWRpYVRpbWU6OmludmFsaWRUaW1lKCkpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6
OmludmFsaWRUaW1lKCkgLSBNZWRpYVRpbWU6Om5lZ2F0aXZlSW5maW5pdGVUaW1lKCksIE1lZGlh
VGltZTo6aW52YWxpZFRpbWUoKSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6aW52YWxpZFRp
bWUoKSAtIE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSwgTWVkaWFUaW1lOjppbnZhbGlkVGltZSgp
KTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpIC0gTWVkaWFUaW1lKDEs
IDEpLCBNZWRpYVRpbWU6OmludmFsaWRUaW1lKCkpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6
OmluZGVmaW5pdGVUaW1lKCkgLSBNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCksIE1l
ZGlhVGltZTo6aW5kZWZpbml0ZVRpbWUoKSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6aW5k
ZWZpbml0ZVRpbWUoKSAtIE1lZGlhVGltZTo6bmVnYXRpdmVJbmZpbml0ZVRpbWUoKSwgTWVkaWFU
aW1lOjppbmRlZmluaXRlVGltZSgpKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjppbmRlZmlu
aXRlVGltZSgpIC0gTWVkaWFUaW1lOjppbmRlZmluaXRlVGltZSgpLCBNZWRpYVRpbWU6OmluZGVm
aW5pdGVUaW1lKCkpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OmluZGVmaW5pdGVUaW1lKCkg
LSBNZWRpYVRpbWUoMSwgMSksIE1lZGlhVGltZTo6aW5kZWZpbml0ZVRpbWUoKSk7CisgICAgRVhQ
RUNUX0VRKE1lZGlhVGltZSgzLCAxKSAtIE1lZGlhVGltZSgyLCAxKSwgTWVkaWFUaW1lKDEsIDEp
KTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDEsIDIpIC0gTWVkaWFUaW1lKDEsIDMpLCBNZWRp
YVRpbWUoMSwgNikpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMiwgbnVtZXJpY19saW1pdHM8
aW50MzJfdD46Om1heCgpLTEpIC0gTWVkaWFUaW1lKDEsIG51bWVyaWNfbGltaXRzPGludDMyX3Q+
OjptYXgoKS0yKSwgTWVkaWFUaW1lKDEsIG51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkp
OworCisgICAgLy8gQ29uc3RhbnRzCisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6emVyb1RpbWUo
KSwgTWVkaWFUaW1lKDAsIDEpKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjppbnZhbGlkVGlt
ZSgpLCBNZWRpYVRpbWUoLTEsIDEsIDApKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjpwb3Np
dGl2ZUluZmluaXRlVGltZSgpLCBNZWRpYVRpbWUoMCwgMSwgTWVkaWFUaW1lOjpQb3NpdGl2ZUlu
ZmluaXRlKSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6bmVnYXRpdmVJbmZpbml0ZVRpbWUo
KSwgTWVkaWFUaW1lKDAsIDEsIE1lZGlhVGltZTo6TmVnYXRpdmVJbmZpbml0ZSkpOworICAgIEVY
UEVDVF9FUShNZWRpYVRpbWU6OmluZGVmaW5pdGVUaW1lKCksIE1lZGlhVGltZSgwLCAxLCBNZWRp
YVRpbWU6OkluZGVmaW5pdGUpKTsKKworICAgIC8vIEFic29sdXRlIEZ1bmN0aW9ucworICAgIEVY
UEVDVF9FUShhYnMoTWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpKSwgTWVkaWFUaW1l
Ojpwb3NpdGl2ZUluZmluaXRlVGltZSgpKTsKKyAgICBFWFBFQ1RfRVEoYWJzKE1lZGlhVGltZTo6
bmVnYXRpdmVJbmZpbml0ZVRpbWUoKSksIE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUo
KSk7CisgICAgRVhQRUNUX0VRKGFicyhNZWRpYVRpbWU6OmludmFsaWRUaW1lKCkpLCBNZWRpYVRp
bWU6OmludmFsaWRUaW1lKCkpOworICAgIEVYUEVDVF9FUShhYnMoTWVkaWFUaW1lKDEsIDEpKSwg
TWVkaWFUaW1lKDEsIDEpKTsKKyAgICBFWFBFQ1RfRVEoYWJzKE1lZGlhVGltZSgtMSwgMSkpLCBN
ZWRpYVRpbWUoMSwgMSkpOworICAgIEVYUEVDVF9FUShhYnMoTWVkaWFUaW1lKC0xLCAtMSkpLCBN
ZWRpYVRpbWUoLTEsIC0xKSk7CisgICAgRVhQRUNUX0VRKGFicyhNZWRpYVRpbWUoMSwgLTEpKSwg
TWVkaWFUaW1lKC0xLCAtMSkpOworCisgICAgLy8gRmxvYXRpbmcgUG9pbnQgRnVuY3Rpb25zCisg
ICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6Y3JlYXRlV2l0aEZsb2F0KDEuMGYpLCBNZWRpYVRpbWUo
MSwgMSkpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OmNyZWF0ZVdpdGhGbG9hdCgxLjVmKSwg
TWVkaWFUaW1lKDMsIDIpKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91
YmxlKDEuMCksIE1lZGlhVGltZSgxLCAxKSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6Y3Jl
YXRlV2l0aERvdWJsZSgxLjUpLCBNZWRpYVRpbWUoMywgMikpOworICAgIEVYUEVDVF9FUShNZWRp
YVRpbWUoMSwgMSkudG9GbG9hdCgpLCAxLjBmKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDMs
IDIpLnRvRmxvYXQoKSwgMS41Zik7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZSgxLCAxKS50b0Rv
dWJsZSgpLCAxLjApOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMywgMikudG9Eb3VibGUoKSwg
MS41KTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lKDEsIDEgPDwgMTYpLnRvRmxvYXQoKSwgMSAv
IHBvdygyLjBmLCAxNi4wZikpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUoMSwgMSA8PCAzMCku
dG9Eb3VibGUoKSwgMSAvIHBvdygyLjAsIDMwLjApKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1l
OjpjcmVhdGVXaXRoRG91YmxlKE1fUEksIDEgPDwgMzApLCBNZWRpYVRpbWUoMzM3MzI1OTQyNiwg
MSA8PCAzMCkpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OmNyZWF0ZVdpdGhGbG9hdChJTkZJ
TklUWSksIE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKSk7CisgICAgRVhQRUNUX0VR
KE1lZGlhVGltZTo6Y3JlYXRlV2l0aEZsb2F0KC1JTkZJTklUWSksIE1lZGlhVGltZTo6bmVnYXRp
dmVJbmZpbml0ZVRpbWUoKSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6Y3JlYXRlV2l0aEZs
b2F0KE5BTiksIE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSk7CisgICAgRVhQRUNUX0VRKE1lZGlh
VGltZTo6Y3JlYXRlV2l0aERvdWJsZShJTkZJTklUWSksIE1lZGlhVGltZTo6cG9zaXRpdmVJbmZp
bml0ZVRpbWUoKSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZSgt
SU5GSU5JVFkpLCBNZWRpYVRpbWU6Om5lZ2F0aXZlSW5maW5pdGVUaW1lKCkpOworICAgIEVYUEVD
VF9FUShNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoTkFOKSwgTWVkaWFUaW1lOjppbnZhbGlk
VGltZSgpKTsKKworICAgIC8vIE92ZXJmbG93IEJlaGF2aW9yCisgICAgRVhQRUNUX0VRKE1lZGlh
VGltZTo6Y3JlYXRlV2l0aEZsb2F0KHBvdygyLjBmLCA2NC4wZikpLCBNZWRpYVRpbWU6OnBvc2l0
aXZlSW5maW5pdGVUaW1lKCkpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6OmNyZWF0ZVdpdGhG
bG9hdCgtcG93KDIuMGYsIDY0LjBmKSksIE1lZGlhVGltZTo6bmVnYXRpdmVJbmZpbml0ZVRpbWUo
KSk7CisgICAgRVhQRUNUX0VRKE1lZGlhVGltZTo6Y3JlYXRlV2l0aEZsb2F0KHBvdygyLjBmLCA2
My4wZiksIDIpLnRpbWVTY2FsZSgpLCAxKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjpjcmVh
dGVXaXRoRmxvYXQocG93KDIuMGYsIDYzLjBmKSwgMykudGltZVNjYWxlKCksIDEpOworICAgIEVY
UEVDVF9FUShNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUocG93KDIuMCwgNjQuMCkpLCBNZWRp
YVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCkpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWU6
OmNyZWF0ZVdpdGhEb3VibGUoLXBvdygyLjAsIDY0LjApKSwgTWVkaWFUaW1lOjpuZWdhdGl2ZUlu
ZmluaXRlVGltZSgpKTsKKyAgICBFWFBFQ1RfRVEoTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91Ymxl
KHBvdygyLjAsIDYzLjApLCAyKS50aW1lU2NhbGUoKSwgMSk7CisgICAgRVhQRUNUX0VRKE1lZGlh
VGltZTo6Y3JlYXRlV2l0aERvdWJsZShwb3coMi4wLCA2My4wKSwgMykudGltZVNjYWxlKCksIDEp
OworICAgIEVYUEVDVF9FUSgoTWVkaWFUaW1lKG51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgo
KSwgMikgKyBNZWRpYVRpbWUobnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgpLCAyKSkudGlt
ZVNjYWxlKCksIDEpOworICAgIEVYUEVDVF9FUSgoTWVkaWFUaW1lKG51bWVyaWNfbGltaXRzPGlu
dDY0X3Q+OjptaW4oKSwgMikgLSBNZWRpYVRpbWUobnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1h
eCgpLCAyKSkudGltZVNjYWxlKCksIDEpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUobnVtZXJp
Y19saW1pdHM8aW50NjRfdD46Om1heCgpLCAxKSArIE1lZGlhVGltZShudW1lcmljX2xpbWl0czxp
bnQ2NF90Pjo6bWF4KCksIDEpLCBNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCkpOwor
ICAgIEVYUEVDVF9FUShNZWRpYVRpbWUobnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1pbigpLCAx
KSArIE1lZGlhVGltZShudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWluKCksIDEpLCBNZWRpYVRp
bWU6Om5lZ2F0aXZlSW5maW5pdGVUaW1lKCkpOworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUobnVt
ZXJpY19saW1pdHM8aW50NjRfdD46Om1pbigpLCAxKSAtIE1lZGlhVGltZShudW1lcmljX2xpbWl0
czxpbnQ2NF90Pjo6bWF4KCksIDEpLCBNZWRpYVRpbWU6Om5lZ2F0aXZlSW5maW5pdGVUaW1lKCkp
OworICAgIEVYUEVDVF9FUShNZWRpYVRpbWUobnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgp
LCAxKSAtIE1lZGlhVGltZShudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWluKCksIDEpLCBNZWRp
YVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCkpOworfQorCit9CisKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvd2luL1Rlc3RXZWJLaXRBUEkudmNwcm9qIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS93aW4vVGVzdFdlYktpdEFQSS52Y3Byb2oKaW5kZXggMDAwZjE1ZTE4YmMxYWFkMDg3
NmY0MGVkOWU3MjUyYzU3OGZhNzIzMC4uYTk0MWNkNjg2OGI0ZjA1NjMyNDA3NjFhNTI2Njk2MmZm
ODUzNDZkMiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vVGVzdFdlYktpdEFQ
SS52Y3Byb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vVGVzdFdlYktpdEFQSS52Y3By
b2oKQEAgLTY1Miw2ICs2NTIsMTAgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQor
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFRlc3RzXFdURlxNZWRpYVRpbWUuY3BwIgorCQkJCQk+CisJ
CQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cVGVzdHNcV1RGXFN0
cmluZ09wZXJhdG9ycy5jcHAiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+Cg==
</data>
<flag name="review"
          id="154264"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
    <flag name="commit-queue"
          id="154266"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
      

    </bug>

</bugzilla>