<?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>160095</bug_id>
          
          <creation_ts>2016-07-22 13:18:19 -0700</creation_ts>
          <short_desc>Web Inspector: Frontend should have access to Resource Timing information</short_desc>
          <delta_ts>2016-08-26 17:32:00 -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>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>160062</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Johan K. Jensen">jj</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bburg</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>japhet</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mattbaker</cc>
    
    <cc>msaboff</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>saam</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1213707</commentid>
    <comment_count>0</comment_count>
    <who name="Johan K. Jensen">jj</who>
    <bug_when>2016-07-22 13:18:19 -0700</bug_when>
    <thetext>The frontend needs access to a resource’s load timing information to show data or any visualizations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213708</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-07-22 13:18:42 -0700</bug_when>
    <thetext>&lt;rdar://problem/27499970&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213728</commentid>
    <comment_count>2</comment_count>
      <attachid>284369</attachid>
    <who name="Johan K. Jensen">jj</who>
    <bug_when>2016-07-22 13:45:46 -0700</bug_when>
    <thetext>Created attachment 284369
WIP Patch - Timing info

This patch will get timing information for a resource and add it as a property on the resource. End time is currently unused, and should probably be set from a did-finish method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1215047</commentid>
    <comment_count>3</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-07-27 14:54:14 -0700</bug_when>
    <thetext>Would be good to get some eyes on this from networking folks. This should get us closer to having reasonable Resource Timing data.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1215049</commentid>
    <comment_count>4</comment_count>
      <attachid>284369</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-07-27 14:58:01 -0700</bug_when>
    <thetext>Comment on attachment 284369
WIP Patch - Timing info

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

Inspector parts and test look good to me. I&apos;d like to see another patch addressing the comments, and then get some kind of nod from reviewers more experienced with networking. So r- while waiting for an updated patch.

&gt; Source/WebCore/loader/ResourceLoader.cpp:353
&gt; +    m_resourceStartTime = monotonicallyIncreasingTime();

Seems this could be moved up a bit. There are two failure reasons above (content extensions, null request) that we may want to include in resource timing data.

Further, ResourceLoader::init, seems like it might be best, given that also happens before other internal cancels, or even applicationCache checks (which are more timestamps we would eventually want to add for resource timing).

&gt; Source/WebCore/loader/ResourceLoader.cpp:464
&gt; +    m_resourceEndTime = monotonicallyIncreasingTime();

Again, there are two failures above that could bail before setting this end time. It might be better to move this up.

&gt; Source/WebCore/loader/ResourceLoader.h:232
&gt; +    double m_resourceStartTime;
&gt; +    double m_resourceEndTime;

You should initialize these to some reasonable value. Such as 0.

    double m_resourceStartTime { 0 };

Currently, because they are not initialized in the constructor, they are &quot;uninitialized&quot; and hold random values until assigned.

&gt; Source/WebCore/platform/network/ResourceLoadTiming.h:97
&gt;      // These are millisecond deltas from the navigation start.

This comment is wrong. They are not from navigation start, they are from the resource&apos;s start time.

&gt; Source/WebInspectorUI/UserInterface/Models/Resource.js:62
&gt; +        this._timing = timing || {};

Same comment here as below.

&gt; Source/WebInspectorUI/UserInterface/Models/Resource.js:476
&gt; +        this._timing = timing || {};

We actually may want to be careful here. We were sending this timing data in the past (iOS 7-9 backends), but it was wrong. So we probably want to do something like this:

    this._timing = timing || {};

    // COMPATIBILITY (iOS 10): Resource Timing data was incomplete and incorrect. Do not use it.
    // iOS 7 sent a requestTime and iOS 8-9.3 sent a navigationStart time.
    if (typeof this._timing.requestTime === &quot;number&quot; || typeof this._timing.navigationStart === &quot;number&quot;)
        this._timing = {};

Or, because it was incomplete/inaccurate we might even want to just remove it from legacy backend protocols:

    Source/WebInspectorUI/Versions/Inspector-iOS-7.0.json
    Source/WebInspectorUI/Versions/Inspector-iOS-8.0.json
    Source/WebInspectorUI/Versions/Inspector-iOS-9.0.json
    Source/WebInspectorUI/Versions/Inspector-iOS-9.3.json

Either way, we want to protect against incorrect backend data.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1215348</commentid>
    <comment_count>5</comment_count>
      <attachid>284369</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-07-28 13:11:01 -0700</bug_when>
    <thetext>Comment on attachment 284369
WIP Patch - Timing info

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

Instead of doing this, I think we should finish implementing the resource timing api and use that data in the inspector instead of collecting data just for the inspector.  This would also require collecting new timing points, so it would be conceptually similar.

&gt; Source/WebCore/inspector/InspectorNetworkAgent.cpp:187
&gt; +Ref&lt;Inspector::Protocol::Network::ResourceTiming&gt; InspectorNetworkAgent::buildObjectForTiming(const ResourceLoadTiming&amp; timing, ResourceLoader* resourceLoader)

This should be a ResourceLoader&amp;

&gt; Source/WebCore/platform/network/ResourceLoadTiming.h:98
&gt; -    int secureConnectionStart;
&gt; +    double domainLookupStart;

This is an unrelated change that should be in a different patch.  It changes the resolution of the navigation timing api.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1215607</commentid>
    <comment_count>6</comment_count>
      <attachid>284369</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-07-29 11:07:03 -0700</bug_when>
    <thetext>Comment on attachment 284369
WIP Patch - Timing info

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

&gt; Source/WTF/wtf/Stopwatch.h:85
&gt; +inline double Stopwatch::elapsedTimeForMonotonicTime(double monotonicTime)

I would prefer &apos;elapsedTimeSinceMonotonicTime&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1219058</commentid>
    <comment_count>7</comment_count>
      <attachid>284369</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-08-10 11:22:21 -0700</bug_when>
    <thetext>Comment on attachment 284369
WIP Patch - Timing info

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

&gt; Source/WebCore/loader/ResourceLoader.h:144
&gt; +    double resourceStartTime() { return m_resourceStartTime; }
&gt; +    double resourceEndTime() { return m_resourceEndTime; }

We will need to keep track of redirect times, too.  Instead of having two doubles, make DocumentLoadTiming not main-resource-load-specific and use that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1219060</commentid>
    <comment_count>8</comment_count>
      <attachid>284369</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-08-10 11:24:23 -0700</bug_when>
    <thetext>Comment on attachment 284369
WIP Patch - Timing info

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

&gt;&gt; Source/WebCore/loader/ResourceLoader.cpp:353
&gt;&gt; +    m_resourceStartTime = monotonicallyIncreasingTime();
&gt; 
&gt; Seems this could be moved up a bit. There are two failure reasons above (content extensions, null request) that we may want to include in resource timing data.
&gt; 
&gt; Further, ResourceLoader::init, seems like it might be best, given that also happens before other internal cancels, or even applicationCache checks (which are more timestamps we would eventually want to add for resource timing).

Yep, ResourceLoader::init is the place to mark the start time.  This is also used for redirects.
We also want to keep track of redirect times for the ResourceTiming API, and probably also for the web inspector.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1219061</commentid>
    <comment_count>9</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-08-10 11:27:06 -0700</bug_when>
    <thetext>DocumentLoadTiming::markRedirectStart is never used :(
It should be</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223348</commentid>
    <comment_count>10</comment_count>
      <attachid>287053</attachid>
    <who name="Johan K. Jensen">jj</who>
    <bug_when>2016-08-25 17:42:47 -0700</bug_when>
    <thetext>Created attachment 287053
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223358</commentid>
    <comment_count>11</comment_count>
      <attachid>287053</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-08-25 18:38:24 -0700</bug_when>
    <thetext>Comment on attachment 287053
Patch

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

&gt; Source/WebCore/inspector/InspectorNetworkAgent.cpp:190
&gt; +    double startTimeInInspector = m_environment.executionStopwatch()-&gt;elapsedTimeSinceMonotonicTime(monotonicTime);

Why does executionStopwatch() return a Ref&lt;Stopwatch&gt; instead of a Stopwatch&amp; ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223373</commentid>
    <comment_count>12</comment_count>
      <attachid>287053</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-08-25 19:12:09 -0700</bug_when>
    <thetext>Comment on attachment 287053
Patch

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

r- to see another patch without the WebInspectorUI changes.

&gt; Source/WebInspectorUI/ChangeLog:11
&gt; +        * UserInterface/Controllers/FrameResourceManager.js:
&gt; +        (WebInspector.FrameResourceManager.prototype.resourceRequestWasServedFromMemoryCache):
&gt; +        (WebInspector.FrameResourceManager.prototype.resourceRequestDidReceiveResponse):
&gt; +        Push timing data to the Resource.

This looks like it should be done as a separate patch. updateResource doesn&apos;t do anything with this parameter yet.

When we do this, we will want to include a test for it.

&gt;&gt; Source/WebCore/inspector/InspectorNetworkAgent.cpp:190
&gt;&gt; +    double startTimeInInspector = m_environment.executionStopwatch()-&gt;elapsedTimeSinceMonotonicTime(monotonicTime);
&gt; 
&gt; Why does executionStopwatch() return a Ref&lt;Stopwatch&gt; instead of a Stopwatch&amp; ?

No reason, we should change it to return a Stopwatch&amp;.

&gt; Source/WebCore/inspector/InspectorNetworkAgent.cpp:399
&gt; +    double elapsedFinishTime = timestamp();
&gt; +    if (finishTime)
&gt; +        elapsedFinishTime = m_environment.executionStopwatch()-&gt;elapsedTimeSinceMonotonicTime(finishTime);

Lets use s ternary to avoid potentially always calling timestamp():

    double elapsedFinishTime = finishTime ? m_environment.executionStopwatch()-&gt;elapsedTimeSinceMonotonicTime(finishTime) : timestamp();

&gt; Source/WebCore/inspector/InspectorNetworkAgent.h:54
&gt; +class NetworkLoadTiming;

Nit: Should be sorted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223613</commentid>
    <comment_count>13</comment_count>
      <attachid>287127</attachid>
    <who name="Johan K. Jensen">jj</who>
    <bug_when>2016-08-26 11:31:26 -0700</bug_when>
    <thetext>Created attachment 287127
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223680</commentid>
    <comment_count>14</comment_count>
      <attachid>287140</attachid>
    <who name="Johan K. Jensen">jj</who>
    <bug_when>2016-08-26 13:47:36 -0700</bug_when>
    <thetext>Created attachment 287140
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223721</commentid>
    <comment_count>15</comment_count>
    <who name="Johan K. Jensen">jj</who>
    <bug_when>2016-08-26 14:40:50 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Why does executionStopwatch() return a Ref&lt;Stopwatch&gt; instead of a
&gt; Stopwatch&amp; ?

Changing the Ref&lt;StopWatch&gt; to a StopWatch&amp; involves quite a few changes. The changes even leaks into the JavaScriptCore/runtime/SamplingProfiler which in some cases takes a StopWatch::create and at other times the executionStopWatch().
This change seems orthogonal to the original issue, it would become the majority of this patch and it should probably be changed in another patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223815</commentid>
    <comment_count>16</comment_count>
      <attachid>287140</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-26 17:31:50 -0700</bug_when>
    <thetext>Comment on attachment 287140
Patch

Clearing flags on attachment: 287140

Committed r205062: &lt;http://trac.webkit.org/changeset/205062&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223816</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-26 17:32:00 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284369</attachid>
            <date>2016-07-22 13:45:46 -0700</date>
            <delta_ts>2016-08-25 17:42:41 -0700</delta_ts>
            <desc>WIP Patch - Timing info</desc>
            <filename>bug-160095-20160722134447.patch</filename>
            <type>text/plain</type>
            <size>29252</size>
            <attacher name="Johan K. Jensen">jj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzMzQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
NDRhNDk4ZWEzNWFlNWM5YTc0MGJjNWRjMjdhNTY5MmE5YzkxZjIzLi5lMGJiYzViMDk5Yjk4NjFl
OGYwZjM1ZDA4MGFmODYxODNiZjAzMWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxNi0wNy0yMiAgSm9oYW4gSy4gSmVuc2VuICA8am9oYW5famVuc2VuQGFw
cGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBGcm9udGVuZCBzaG91bGQgaGF2ZSBh
Y2Nlc3MgdG8gUmVzb3VyY2UgVGltaW5nIGluZm9ybWF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjAwOTUKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWUgUmVzb3VyY2VUaW1pbmcgcHJvcGVy
dHkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvdG9jb2wvTmV0d29yay5qc29uOgorICAgICAg
ICBSZW5hbWUgbmF2aWdhdGlvblN0YXJ0IHRvIHN0YXJ0VGltZSBzbyBpdCdzIGFwcGxpY2FibGUK
KyAgICAgICAgZm9yIGFsbCByZXNvdXJjZXMgYW5kIG5vdCBqdXN0IHRoZSBtYWluIHJlc291cmNl
LgorCiAyMDE2LTA3LTE2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAg
ICAgREZHIENTRSBpcyBicm9rZW4gZm9yIE11bHRpR2V0QnlPZmZzZXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggYWY1OGJjNGQ0
MDk0NWI5YmFlNGU5ZDJjMzYzNmY3MzA5MjBkYmY4MC4uYjk5NWM5ZjY1MDMzMWU4YjJiNzRlM2E2
MjRkOWQ4NTQxMjgwZDBjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxNi0wNy0yMiAgSm9oYW4g
Sy4gSmVuc2VuICA8am9oYW5famVuc2VuQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBGcm9udGVuZCBzaG91bGQgaGF2ZSBhY2Nlc3MgdG8gUmVzb3VyY2UgVGltaW5nIGluZm9y
bWF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjAwOTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgbWV0aG9kIHRvIGdldCBlbGFwc2VkIHRpbWUgZm9yIGFueSBtb25vdG9uaWMgdGltZS4KKyAg
ICAgICAgVXNlZCBieSBJbnNwZWN0b3JOZXR3b3JrQWdlbnQuCisKKyAgICAgICAgKiB3dGYvU3Rv
cHdhdGNoLmg6CisgICAgICAgIChXVEY6OlN0b3B3YXRjaDo6ZWxhcHNlZFRpbWVGb3JNb25vdG9u
aWNUaW1lKToKKwogMjAxNi0wNy0xNyAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBw
bGUuY29tPgogCiAgICAgICAgIFN1cHBvcnQgbmV3IGVtb2ppIGdyb3VwIGNhbmRpZGF0ZXMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCA5NzI0MDlhMjMwMDQyYWZjMWRhMGUwNjMwNTM5NzFhYjc2MWVmYTU2Li5jYWM2
Njg3MDgxODM2Nzk2NzNlZTAwZmRkMzk2ZWM1ZWUzOGY0ZWUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNDEgQEAKKzIwMTYtMDctMjIgIEpvaGFuIEsuIEplbnNlbiAgPGpvaGFuX2plbnNlbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogRnJvbnRlbmQgc2hvdWxkIGhhdmUgYWNj
ZXNzIHRvIFJlc291cmNlIFRpbWluZyBpbmZvcm1hdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwMDk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2hvdyBjb3JyZWN0IGluZm9ybWF0aW9uIHdpdGgg
UmVzb3VyY2UgVGltaW5nIGluZm9ybWF0aW9uCisgICAgICAgIGZyb20gUmVzb3VyY2VMb2FkZXIg
cmF0aGVyIHRoYW4gRG9jdW1lbnRMb2FkZXIuCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9p
bnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZS10aW1pbmcuaHRtbAorCisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JOZXR3b3JrQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yVGltaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6YnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNlKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6YnVpbGRPYmplY3RGb3JD
YWNoZWRSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6
OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdl
bnQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3
b3JrQWdlbnQ6OmRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZSk6CisgICAgICAgIFVzZSBS
ZXNvdXJjZUxvYWRlciBpbnN0ZWFkIG9mIERvY3VtZW50TG9hZGVyIHRvIGdldCBSZXNvdXJjZSBU
aW1pbmcgaW5mb3JtYXRpb24uCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTmV0d29y
a0FnZW50Lmg6CisgICAgICAgIENoYW5nZSBzdGF0aWMgZnVuY3Rpb25zIHRvIG1ldGhvZHMgc28g
dGhlIGVudmlyb25tZW50J3MKKyAgICAgICAgZXhlY3V0aW9uU3RvcHdhdGNoIGlzIGF2YWlsYWJs
ZS4KKworICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWwpOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIE1h
cmsgdGhlIHN0YXJ0IGFuZCBlbmQgdGltZSBvZiBhIHJlc291cmNlIGFzIGEgbW9ub3RvbmljIHRp
bWUuCisKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlTG9hZGVyOjpyZXNvdXJjZVN0YXJ0VGltZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRlcjo6cmVzb3VyY2VFbmRUaW1lKToKKyAgICAgICAgQWRkIGdldHRlcnMg
Zm9yIHJlc291cmNlIHN0YXJ0IGFuZCBlbmQgdGltZS4KKworICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VMb2FkVGltaW5nLmg6CisgICAgICAgIFVzZSBkb3VibGVzIGZvciBtb3Jl
IHByZWNpc2UgdGltaW5nIGluZm9ybWF0aW9uLgorCiAyMDE2LTA3LTE4ICBZb3Vlbm4gRmFibGV0
ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBbU3RyZWFtcyBBUEldIFJlYWRhYmxlU3Ry
ZWFtIHNob3VsZCB0aHJvdyBhIFJhbmdlRXJyb3IgaW4gY2FzZSBvZiBOYU4gaGlnaFdhdGVyTWFy
awpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggM2QzMmZmZjM4ZDViZDA2OWM3YWJiNTVjNTJm
YmUwN2RjOTRhMDE4ZC4uOGYyM2YwOTE3Nzg3ZGI0ZjdjNTA5ODA2NDRkOTcwZWQ0NDdlNmYzYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTYtMDctMjIgIEpv
aGFuIEsuIEplbnNlbiAgPGpvaGFuX2plbnNlbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogRnJvbnRlbmQgc2hvdWxkIGhhdmUgYWNjZXNzIHRvIFJlc291cmNlIFRpbWluZyBp
bmZvcm1hdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTYwMDk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIFJlc291cmNlIFRpbWluZyBJbmZvcm1hdGlvbiB0byB0aGUgUmVzb3VyY2Ugd2hlbiBh
CisgICAgICAgIHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkLgorCisgICAgICAgICogVXNlcklu
dGVyZmFjZS9Db250cm9sbGVycy9GcmFtZVJlc291cmNlTWFuYWdlci5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5GcmFtZVJlc291cmNlTWFuYWdlci5wcm90b3R5cGUucmVzb3VyY2VSZXF1ZXN0
V2FzU2VydmVkRnJvbU1lbW9yeUNhY2hlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GcmFtZVJl
c291cmNlTWFuYWdlci5wcm90b3R5cGUucmVzb3VyY2VSZXF1ZXN0RGlkUmVjZWl2ZVJlc3BvbnNl
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GcmFtZVJlc291cmNlTWFuYWdlci5wcm90b3R5cGUu
X2FkZE5ld1Jlc291cmNlVG9GcmFtZSk6CisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMv
UmVzb3VyY2UuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2UpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZS5nZXQgdGltaW5nKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUudXBkYXRlRm9yUmVzcG9uc2UpOgorCiAyMDE2
LTA3LTIxICBKb2hhbiBLLiBKZW5zZW4gIDxqb2hhbl9qZW5zZW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IFdhdGVyZmFsbCB2aWV3IHNob3VsZCBiZSB2aXNpYmxlIGluIE5l
dHdvcmsgdGFiIGFuZCBOZXR3b3JrIFRpbWVsaW5lCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL05ldHdvcmsuanNvbiBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvTmV0d29yay5qc29uCmluZGV4IGUzMTdmODBlNzQ1
ODNiZTIzNGZhYTIxODdkY2RhOTBmMjc5Nzk4MmQuLjIzMGE4YzAxYjYzMTQ1YjU4ODg1ZTlhYmY4
ZWI1NzJhMmQ1MWMyMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvcHJvdG9jb2wvTmV0d29yay5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcHJvdG9jb2wvTmV0d29yay5qc29uCkBAIC0zMyw3ICszMyw3IEBACiAgICAgICAgICAg
ICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlRpbWluZyBp
bmZvcm1hdGlvbiBmb3IgdGhlIHJlcXVlc3QuIiwKICAgICAgICAgICAgICJwcm9wZXJ0aWVzIjog
WwotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibmF2aWdhdGlvblN0YXJ0IiwgInR5cGUiOiAi
bnVtYmVyIiwgImRlc2NyaXB0aW9uIjogIlRpbWluZydzIG5hdmlnYXRpb25TdGFydCBpcyBhIGJh
c2VsaW5lIGluIHNlY29uZHMsIHdoaWxlIHRoZSBvdGhlciBudW1iZXJzIGFyZSB0aWNrcyBpbiBt
aWxsaXNlY29uZHMgcmVsYXRpdmVseSB0byB0aGlzIG5hdmlnYXRpb25TdGFydC4iIH0sCisgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJzdGFydFRpbWUiLCAidHlwZSI6ICJudW1iZXIiLCAiZGVz
Y3JpcHRpb24iOiAiVGltaW5nJ3Mgc3RhcnRUaW1lIGlzIGEgYmFzZWxpbmUgaW4gc2Vjb25kcywg
d2hpbGUgdGhlIG90aGVyIG51bWJlcnMgYXJlIHRpY2tzIGluIG1pbGxpc2Vjb25kcyByZWxhdGl2
ZWx5IHRvIHRoaXMuIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZG9tYWluTG9va3Vw
U3RhcnQiLCAidHlwZSI6ICJudW1iZXIiLCAiZGVzY3JpcHRpb24iOiAiU3RhcnRlZCBETlMgYWRk
cmVzcyByZXNvbHZlLiIgfSwKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImRvbWFpbkxvb2t1
cEVuZCIsICJ0eXBlIjogIm51bWJlciIsICJkZXNjcmlwdGlvbiI6ICJGaW5pc2hlZCBETlMgYWRk
cmVzcyByZXNvbHZlLiIgfSwKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNvbm5lY3RTdGFy
dCIsICJ0eXBlIjogIm51bWJlciIsICJkZXNjcmlwdGlvbiI6ICJTdGFydGVkIGNvbm5lY3Rpbmcg
dG8gdGhlIHJlbW90ZSBob3N0LiIgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1N0b3B3
YXRjaC5oIGIvU291cmNlL1dURi93dGYvU3RvcHdhdGNoLmgKaW5kZXggNWZiMjE1ZDM3M2EwNWFj
Y2RkMjU5NDI5OTk2YTA0ODM1MjFhMGM0ZC4uY2IyNGNiYzg2ZmNiNzExM2I3YTY3OTNmMzdlZDdl
MjkzODI5ZmUxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvU3RvcHdhdGNoLmgKKysrIGIv
U291cmNlL1dURi93dGYvU3RvcHdhdGNoLmgKQEAgLTQzLDYgKzQzLDcgQEAgcHVibGljOgogICAg
IHZvaWQgc3RvcCgpOwogCiAgICAgZG91YmxlIGVsYXBzZWRUaW1lKCk7CisgICAgZG91YmxlIGVs
YXBzZWRUaW1lRm9yTW9ub3RvbmljVGltZShkb3VibGUpOwogCiAgICAgYm9vbCBpc0FjdGl2ZSgp
IGNvbnN0IHsgcmV0dXJuICFzdGQ6OmlzbmFuKG1fbGFzdFN0YXJ0VGltZSk7IH0KIHByaXZhdGU6
CkBAIC04MSw2ICs4MiwxNCBAQCBpbmxpbmUgZG91YmxlIFN0b3B3YXRjaDo6ZWxhcHNlZFRpbWUo
KQogICAgIHJldHVybiBtX2VsYXBzZWRUaW1lICsgKG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGlt
ZSgpIC0gbV9sYXN0U3RhcnRUaW1lKTsKIH0KIAoraW5saW5lIGRvdWJsZSBTdG9wd2F0Y2g6OmVs
YXBzZWRUaW1lRm9yTW9ub3RvbmljVGltZShkb3VibGUgbW9ub3RvbmljVGltZSkKK3sKKyAgICBp
ZiAoIWlzQWN0aXZlKCkpCisgICAgICAgIHJldHVybiBtX2VsYXBzZWRUaW1lOworCisgICAgcmV0
dXJuIG1fZWxhcHNlZFRpbWUgKyAobW9ub3RvbmljVGltZSAtIG1fbGFzdFN0YXJ0VGltZSk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6OlN0b3B3YXRjaDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5kZXgg
YzQ0YmQ1ZDVkMDZkYzZmYzM1OGVmYjA3ZmNhNDVjZDA4YmU1YTU2ZS4uMWFhNjk5YjRhYTliYTUx
NTVhYjhhMjlmZmRlN2VjNDJiZjI3MDhlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTE4NCwxMCArMTg0LDEzIEBAIHN0
YXRpYyBSZWY8SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9iamVjdEZvckhlYWRlcnMoY29uc3QgSFRU
UEhlYWRlck1hcCYgaGVhZGVycykKICAgICByZXR1cm4gaGVhZGVyc09iamVjdDsKIH0KIAotc3Rh
dGljIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpSZXNvdXJjZVRpbWluZz4gYnVp
bGRPYmplY3RGb3JUaW1pbmcoY29uc3QgUmVzb3VyY2VMb2FkVGltaW5nJiB0aW1pbmcsIERvY3Vt
ZW50TG9hZGVyKiBsb2FkZXIpCitSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVz
b3VyY2VUaW1pbmc+IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6YnVpbGRPYmplY3RGb3JUaW1pbmco
Y29uc3QgUmVzb3VyY2VMb2FkVGltaW5nJiB0aW1pbmcsIFJlc291cmNlTG9hZGVyKiByZXNvdXJj
ZUxvYWRlcikKIHsKKyAgICBkb3VibGUgbW9ub3RvbmljVGltZSA9IHJlc291cmNlTG9hZGVyLT5y
ZXNvdXJjZVN0YXJ0VGltZSgpOworICAgIGRvdWJsZSBzdGFydFRpbWVJbkluc3BlY3RvciA9IG1f
ZW52aXJvbm1lbnQuZXhlY3V0aW9uU3RvcHdhdGNoKCktPmVsYXBzZWRUaW1lRm9yTW9ub3Rvbmlj
VGltZShtb25vdG9uaWNUaW1lKTsKKwogICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpO
ZXR3b3JrOjpSZXNvdXJjZVRpbWluZzo6Y3JlYXRlKCkKLSAgICAgICAgLnNldE5hdmlnYXRpb25T
dGFydChsb2FkZXItPnRpbWluZygpLm5hdmlnYXRpb25TdGFydCgpKQorICAgICAgICAuc2V0U3Rh
cnRUaW1lKHN0YXJ0VGltZUluSW5zcGVjdG9yKQogICAgICAgICAuc2V0RG9tYWluTG9va3VwU3Rh
cnQodGltaW5nLmRvbWFpbkxvb2t1cFN0YXJ0KQogICAgICAgICAuc2V0RG9tYWluTG9va3VwRW5k
KHRpbWluZy5kb21haW5Mb29rdXBFbmQpCiAgICAgICAgIC5zZXRDb25uZWN0U3RhcnQodGltaW5n
LmNvbm5lY3RTdGFydCkKQEAgLTIxMyw3ICsyMTYsNyBAQCBzdGF0aWMgUmVmPEluc3BlY3Rvcjo6
UHJvdG9jb2w6Ok5ldHdvcms6OlJlcXVlc3Q+IGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXF1ZXN0
KAogICAgIHJldHVybiByZXF1ZXN0T2JqZWN0OwogfQogCi1zdGF0aWMgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJlc3BvbnNlPiBidWlsZE9iamVjdEZvclJlc291cmNlUmVz
cG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIERvY3VtZW50TG9hZGVyKiBs
b2FkZXIpCitSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVzcG9uc2U+IElu
c3BlY3Rvck5ldHdvcmtBZ2VudDo6YnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNlKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2Fk
ZXIpCiB7CiAgICAgaWYgKHJlc3BvbnNlLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKQEAgLTIzMCwxMiArMjMzLDEzIEBAIHN0YXRpYyBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6TmV0d29yazo6UmVzcG9uc2U+IGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwCiAgICAgICAg
IC5yZWxlYXNlKCk7CiAKICAgICByZXNwb25zZU9iamVjdC0+c2V0RnJvbURpc2tDYWNoZShyZXNw
b25zZS5zb3VyY2UoKSA9PSBSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6OkRpc2tDYWNoZSB8fCBy
ZXNwb25zZS5zb3VyY2UoKSA9PSBSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6OkRpc2tDYWNoZUFm
dGVyVmFsaWRhdGlvbik7Ci0gICAgcmVzcG9uc2VPYmplY3QtPnNldFRpbWluZyhidWlsZE9iamVj
dEZvclRpbWluZyhyZXNwb25zZS5yZXNvdXJjZUxvYWRUaW1pbmcoKSwgbG9hZGVyKSk7CisgICAg
aWYgKHJlc291cmNlTG9hZGVyKQorICAgICAgICByZXNwb25zZU9iamVjdC0+c2V0VGltaW5nKGJ1
aWxkT2JqZWN0Rm9yVGltaW5nKHJlc3BvbnNlLnJlc291cmNlTG9hZFRpbWluZygpLCByZXNvdXJj
ZUxvYWRlcikpOwogCiAgICAgcmV0dXJuIFdURk1vdmUocmVzcG9uc2VPYmplY3QpOwogfQogCi1z
dGF0aWMgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OkNhY2hlZFJlc291cmNlPiBi
dWlsZE9iamVjdEZvckNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJj
ZSwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKK1JlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3
b3JrOjpDYWNoZWRSZXNvdXJjZT4gSW5zcGVjdG9yTmV0d29ya0FnZW50OjpidWlsZE9iamVjdEZv
ckNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSkKIHsKICAgICBh
dXRvIHJlc291cmNlT2JqZWN0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6Q2FjaGVk
UmVzb3VyY2U6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRVcmwoY2FjaGVkUmVzb3VyY2UtPnVybCgp
KQpAQCAtMjQzLDcgKzI0Nyw3IEBAIHN0YXRpYyBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0
d29yazo6Q2FjaGVkUmVzb3VyY2U+IGJ1aWxkT2JqZWN0Rm9yQ2FjaGVkUmVzCiAgICAgICAgIC5z
ZXRCb2R5U2l6ZShjYWNoZWRSZXNvdXJjZS0+ZW5jb2RlZFNpemUoKSkKICAgICAgICAgLnJlbGVh
c2UoKTsKIAotICAgIGF1dG8gcmVzb3VyY2VSZXNwb25zZSA9IGJ1aWxkT2JqZWN0Rm9yUmVzb3Vy
Y2VSZXNwb25zZShjYWNoZWRSZXNvdXJjZS0+cmVzcG9uc2UoKSwgbG9hZGVyKTsKKyAgICBhdXRv
IHJlc291cmNlUmVzcG9uc2UgPSBidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UoY2FjaGVk
UmVzb3VyY2UtPnJlc3BvbnNlKCksIGNhY2hlZFJlc291cmNlLT5sb2FkZXIoKSk7CiAgICAgcmVz
b3VyY2VPYmplY3QtPnNldFJlc3BvbnNlKFdURk1vdmUocmVzb3VyY2VSZXNwb25zZSkpOwogCiAg
ICAgU3RyaW5nIHNvdXJjZU1hcHBpbmdVUkwgPSBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNvdXJjZU1h
cFVSTEZvclJlc291cmNlKGNhY2hlZFJlc291cmNlKTsKQEAgLTMwNSw3ICszMDksNyBAQCB2b2lk
IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6d2lsbFNlbmRSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgRG9jdW1lbnRMbwogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OlJlc291
cmNlVHlwZSByZXNvdXJjZVR5cGUgPSBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNlVHlwZUpz
b24odHlwZSk7CiAKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6SW5p
dGlhdG9yPiBpbml0aWF0b3JPYmplY3QgPSBidWlsZEluaXRpYXRvck9iamVjdChsb2FkZXIuZnJh
bWUoKSA/IGxvYWRlci5mcmFtZSgpLT5kb2N1bWVudCgpIDogbnVsbHB0cik7Ci0gICAgbV9mcm9u
dGVuZERpc3BhdGNoZXItPnJlcXVlc3RXaWxsQmVTZW50KHJlcXVlc3RJZCwgbV9wYWdlQWdlbnQt
PmZyYW1lSWQobG9hZGVyLmZyYW1lKCkpLCBtX3BhZ2VBZ2VudC0+bG9hZGVySWQoJmxvYWRlciks
IGxvYWRlci51cmwoKS5zdHJpbmcoKSwgYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlcXVlc3QocmVx
dWVzdCksIHRpbWVzdGFtcCgpLCBpbml0aWF0b3JPYmplY3QsIGJ1aWxkT2JqZWN0Rm9yUmVzb3Vy
Y2VSZXNwb25zZShyZWRpcmVjdFJlc3BvbnNlLCAmbG9hZGVyKSwgdHlwZSAhPSBJbnNwZWN0b3JQ
YWdlQWdlbnQ6Ok90aGVyUmVzb3VyY2UgPyAmcmVzb3VyY2VUeXBlIDogbnVsbHB0cik7CisgICAg
bV9mcm9udGVuZERpc3BhdGNoZXItPnJlcXVlc3RXaWxsQmVTZW50KHJlcXVlc3RJZCwgbV9wYWdl
QWdlbnQtPmZyYW1lSWQobG9hZGVyLmZyYW1lKCkpLCBtX3BhZ2VBZ2VudC0+bG9hZGVySWQoJmxv
YWRlciksIGxvYWRlci51cmwoKS5zdHJpbmcoKSwgYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlcXVl
c3QocmVxdWVzdCksIHRpbWVzdGFtcCgpLCBpbml0aWF0b3JPYmplY3QsIGJ1aWxkT2JqZWN0Rm9y
UmVzb3VyY2VSZXNwb25zZShyZWRpcmVjdFJlc3BvbnNlLCBudWxscHRyKSwgdHlwZSAhPSBJbnNw
ZWN0b3JQYWdlQWdlbnQ6Ok90aGVyUmVzb3VyY2UgPyAmcmVzb3VyY2VUeXBlIDogbnVsbHB0cik7
CiB9CiAKIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjptYXJrUmVzb3VyY2VBc0NhY2hlZCh1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCkBAIC0zMjIsNyArMzI2LDcgQEAgdm9pZCBJbnNwZWN0
b3JOZXR3b3JrQWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIERvY3VtZW4KICAgICAgICAgcmV0dXJuOwogCiAgICAgU3RyaW5nIHJlcXVlc3RJZCA9IElk
ZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIpOwotICAgIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpSZXNwb25zZT4gcmVzb3VyY2VSZXNwb25zZSA9IGJ1
aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25zZShyZXNwb25zZSwgJmxvYWRlcik7CisgICAgUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJlc3BvbnNlPiByZXNvdXJjZVJlc3Bv
bnNlID0gYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNlKHJlc3BvbnNlLCByZXNvdXJjZUxv
YWRlcik7CiAKICAgICBib29sIGlzTm90TW9kaWZpZWQgPSByZXNwb25zZS5odHRwU3RhdHVzQ29k
ZSgpID09IDMwNDsKIApAQCAtNDM1LDcgKzQzOSw3IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0Fn
ZW50OjpkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9jdW1lbnRMb2FkZXImIGxvYWRl
CiAKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6SW5pdGlhdG9yPiBp
bml0aWF0b3JPYmplY3QgPSBidWlsZEluaXRpYXRvck9iamVjdChsb2FkZXIuZnJhbWUoKSA/IGxv
YWRlci5mcmFtZSgpLT5kb2N1bWVudCgpIDogbnVsbHB0cik7CiAKLSAgICBtX2Zyb250ZW5kRGlz
cGF0Y2hlci0+cmVxdWVzdFNlcnZlZEZyb21NZW1vcnlDYWNoZShyZXF1ZXN0SWQsIGZyYW1lSWQs
IGxvYWRlcklkLCBsb2FkZXIudXJsKCkuc3RyaW5nKCksIHRpbWVzdGFtcCgpLCBpbml0aWF0b3JP
YmplY3QsIGJ1aWxkT2JqZWN0Rm9yQ2FjaGVkUmVzb3VyY2UoJnJlc291cmNlLCAmbG9hZGVyKSk7
CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlcXVlc3RTZXJ2ZWRGcm9tTWVtb3J5Q2FjaGUo
cmVxdWVzdElkLCBmcmFtZUlkLCBsb2FkZXJJZCwgbG9hZGVyLnVybCgpLnN0cmluZygpLCB0aW1l
c3RhbXAoKSwgaW5pdGlhdG9yT2JqZWN0LCBidWlsZE9iamVjdEZvckNhY2hlZFJlc291cmNlKCZy
ZXNvdXJjZSkpOwogfQogCiB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2V0SW5pdGlhbFNj
cmlwdENvbnRlbnQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZVN0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JO
ZXR3b3JrQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JOZXR3b3Jr
QWdlbnQuaAppbmRleCA1MTczMTU3Y2I3OTA3NjI3MDVlZTJmYmUyODYwNjM3OTYyNmVkOTUxLi4x
NzY1OTgwMGYyYzg1YjlkYWE3NDBiYzhkZjkwN2U5NDdkMTE2ZDQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCkBAIC01Miw2ICs1Miw3
IEBAIGNsYXNzIEluc3BlY3RvclBhZ2VBZ2VudDsKIGNsYXNzIE5ldHdvcmtSZXNvdXJjZXNEYXRh
OwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlTG9hZGVyOworY2xhc3MgUmVz
b3VyY2VMb2FkVGltaW5nOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VS
ZXNwb25zZTsKIGNsYXNzIFRocmVhZGFibGVMb2FkZXJDbGllbnQ7CkBAIC0xMTcsNiArMTE4LDEw
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBlbmFibGUoKTsKIAorICAgIFJlZjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpSZXNvdXJjZVRpbWluZz4gYnVpbGRPYmplY3RGb3JU
aW1pbmcoY29uc3QgUmVzb3VyY2VMb2FkVGltaW5nJiwgUmVzb3VyY2VMb2FkZXIqKTsKKyAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVzcG9uc2U+IGJ1aWxkT2JqZWN0
Rm9yUmVzb3VyY2VSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2Fk
ZXIqKTsKKyAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6Q2FjaGVkUmVzb3Vy
Y2U+IGJ1aWxkT2JqZWN0Rm9yQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqKTsKKwogICAg
IGRvdWJsZSB0aW1lc3RhbXAoKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6Ok5l
dHdvcmtGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMmViZWUwMTkyMWNmN2FkYThkYWJi
ZDM0ODIzYjkzYWEyZjY0YjE3Yy4uODU1Y2FkYmU1MDAxNTBkNWE5NjFiNzQzNjk4ODc0OTZhMzlh
MDQ3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0zNTAs
NiArMzUwLDggQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWwo
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXMKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAorICAgIG1fcmVzb3VyY2VTdGFydFRpbWUgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1Rp
bWUoKTsKKwogICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MoKSA9PSBTZW5kQ2Fs
bGJhY2tzKSB7CiAgICAgICAgIGlmIChjcmVhdGVkUmVzb3VyY2VJZGVudGlmaWVyKQogICAgICAg
ICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS5hc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFs
UmVxdWVzdChtX2lkZW50aWZpZXIsIGRvY3VtZW50TG9hZGVyKCksIHJlcXVlc3QpOwpAQCAtNDU4
LDcgKzQ2MCw5IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByKQogCiAgICAgaWYgKEZvcm1EYXRhKiBkYXRhID0gbV9yZXF1
ZXN0Lmh0dHBCb2R5KCkpCiAgICAgICAgIGRhdGEtPnJlbW92ZUdlbmVyYXRlZEZpbGVzSWZOZWVk
ZWQoKTsKLSAgICAgICAgCisKKyAgICBtX3Jlc291cmNlRW5kVGltZSA9IG1vbm90b25pY2FsbHlJ
bmNyZWFzaW5nVGltZSgpOworCiAgICAgaWYgKG1fb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcygp
ID09IFNlbmRDYWxsYmFja3MpCiAgICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlk
UmVjZWl2ZVJlc3BvbnNlKHRoaXMsIG1fcmVzcG9uc2UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkZXIuaAppbmRleCBlYzdlNGQyNTFhZjU4NzM3YTRmMzE3MzVjMmQ0Y2I5MjVl
MWE5OWFiLi45OWVkODM4YjgyNDlhNjA0YmQ5YWYwNTcyYmJiNWJiZjlkMmJkOWE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaApAQCAtMTQwLDYgKzE0MCw5IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgd2lsbFN3aXRjaFRvU3Vic3RpdHV0ZVJlc291cmNlKCk7CiAKKyAgICBk
b3VibGUgcmVzb3VyY2VTdGFydFRpbWUoKSB7IHJldHVybiBtX3Jlc291cmNlU3RhcnRUaW1lOyB9
CisgICAgZG91YmxlIHJlc291cmNlRW5kVGltZSgpIHsgcmV0dXJuIG1fcmVzb3VyY2VFbmRUaW1l
OyB9CisKICNpZiBQTEFURk9STShDT0NPQSkgJiYgIVVTRShDRk5FVFdPUkspCiAgICAgdm9pZCBz
Y2hlZHVsZShXVEY6OlNjaGVkdWxlUGFpciYpOwogICAgIHZvaWQgdW5zY2hlZHVsZShXVEY6OlNj
aGVkdWxlUGFpciYpOwpAQCAtMjI1LDYgKzIyOCw4IEBAIHByaXZhdGU6CiAgICAgfTsKICAgICBD
YW5jZWxsYXRpb25TdGF0dXMgbV9jYW5jZWxsYXRpb25TdGF0dXMgeyBOb3RDYW5jZWxsZWQgfTsK
IAorICAgIGRvdWJsZSBtX3Jlc291cmNlU3RhcnRUaW1lOworICAgIGRvdWJsZSBtX3Jlc291cmNl
RW5kVGltZTsKICAgICBib29sIG1fZGVmZXJzTG9hZGluZzsKICAgICBSZXNvdXJjZVJlcXVlc3Qg
bV9kZWZlcnJlZFJlcXVlc3Q7CiAgICAgUmVzb3VyY2VMb2FkZXJPcHRpb25zIG1fb3B0aW9uczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VMb2Fk
VGltaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlTG9hZFRp
bWluZy5oCmluZGV4IDc1Y2VjNDkzNjc5MjNiN2Y3ZTFiNTg3NTdhYzJjYjFhYzYzNmNiY2EuLmVi
YTViMzdkYzM1ZTczYmE2MDFjZDlmM2I1YjJiNjNlYjhmOTM5YzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VMb2FkVGltaW5nLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUxvYWRUaW1pbmcuaApAQCAtOTUs
MTMgKzk1LDEzIEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMg
Ym9vbCBkZWNvZGUoRGVjb2RlciYsIFJlc291cmNlTG9hZFRpbWluZyYpOwogCiAgICAgLy8gVGhl
c2UgYXJlIG1pbGxpc2Vjb25kIGRlbHRhcyBmcm9tIHRoZSBuYXZpZ2F0aW9uIHN0YXJ0LgotICAg
IGludCBkb21haW5Mb29rdXBTdGFydDsKLSAgICBpbnQgZG9tYWluTG9va3VwRW5kOwotICAgIGlu
dCBjb25uZWN0U3RhcnQ7Ci0gICAgaW50IGNvbm5lY3RFbmQ7Ci0gICAgaW50IHJlcXVlc3RTdGFy
dDsKLSAgICBpbnQgcmVzcG9uc2VTdGFydDsKLSAgICBpbnQgc2VjdXJlQ29ubmVjdGlvblN0YXJ0
OworICAgIGRvdWJsZSBkb21haW5Mb29rdXBTdGFydDsKKyAgICBkb3VibGUgZG9tYWluTG9va3Vw
RW5kOworICAgIGRvdWJsZSBjb25uZWN0U3RhcnQ7CisgICAgZG91YmxlIGNvbm5lY3RFbmQ7Cisg
ICAgZG91YmxlIHJlcXVlc3RTdGFydDsKKyAgICBkb3VibGUgcmVzcG9uc2VTdGFydDsKKyAgICBk
b3VibGUgc2VjdXJlQ29ubmVjdGlvblN0YXJ0OwogfTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxl
cnMvRnJhbWVSZXNvdXJjZU1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Db250cm9sbGVycy9GcmFtZVJlc291cmNlTWFuYWdlci5qcwppbmRleCA5MjgzNzA4
YzFjMDY0ZTY1YjNjMTVlODNhYzY5ZTgzMTAwYzM3YWE0Li40YzMyMWI0MzcxOWY0ZGY0OTM5ZTA1
NDMxYjdkY2FiNTQwMWFiMWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Db250cm9sbGVycy9GcmFtZVJlc291cmNlTWFuYWdlci5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9GcmFtZVJlc291cmNl
TWFuYWdlci5qcwpAQCAtMjM2LDcgKzIzNiw3IEBAIFdlYkluc3BlY3Rvci5GcmFtZVJlc291cmNl
TWFuYWdlciA9IGNsYXNzIEZyYW1lUmVzb3VyY2VNYW5hZ2VyIGV4dGVuZHMgV2ViSW5zcGVjCiAg
ICAgICAgIHZhciByZXNwb25zZSA9IGNhY2hlZFJlc291cmNlUGF5bG9hZC5yZXNwb25zZTsKICAg
ICAgICAgdmFyIHJlc291cmNlID0gdGhpcy5fYWRkTmV3UmVzb3VyY2VUb0ZyYW1lKHJlcXVlc3RJ
ZGVudGlmaWVyLCBmcmFtZUlkZW50aWZpZXIsIGxvYWRlcklkZW50aWZpZXIsIGNhY2hlZFJlc291
cmNlUGF5bG9hZC51cmwsIGNhY2hlZFJlc291cmNlUGF5bG9hZC50eXBlLCAiR0VUIiwgbnVsbCwg
bnVsbCwgZWxhcHNlZFRpbWUsIG51bGwsIG51bGwsIGluaXRpYXRvclNvdXJjZUNvZGVMb2NhdGlv
bik7CiAgICAgICAgIHJlc291cmNlLm1hcmtBc0NhY2hlZCgpOwotICAgICAgICByZXNvdXJjZS51
cGRhdGVGb3JSZXNwb25zZShjYWNoZWRSZXNvdXJjZVBheWxvYWQudXJsLCByZXNwb25zZS5taW1l
VHlwZSwgY2FjaGVkUmVzb3VyY2VQYXlsb2FkLnR5cGUsIHJlc3BvbnNlLmhlYWRlcnMsIHJlc3Bv
bnNlLnN0YXR1cywgcmVzcG9uc2Uuc3RhdHVzVGV4dCwgZWxhcHNlZFRpbWUpOworICAgICAgICBy
ZXNvdXJjZS51cGRhdGVGb3JSZXNwb25zZShjYWNoZWRSZXNvdXJjZVBheWxvYWQudXJsLCByZXNw
b25zZS5taW1lVHlwZSwgY2FjaGVkUmVzb3VyY2VQYXlsb2FkLnR5cGUsIHJlc3BvbnNlLmhlYWRl
cnMsIHJlc3BvbnNlLnN0YXR1cywgcmVzcG9uc2Uuc3RhdHVzVGV4dCwgZWxhcHNlZFRpbWUsIHJl
c3BvbnNlLnRpbWluZyk7CiAgICAgICAgIHJlc291cmNlLmluY3JlYXNlU2l6ZShjYWNoZWRSZXNv
dXJjZVBheWxvYWQuYm9keVNpemUsIGVsYXBzZWRUaW1lKTsKICAgICAgICAgcmVzb3VyY2UuaW5j
cmVhc2VUcmFuc2ZlclNpemUoY2FjaGVkUmVzb3VyY2VQYXlsb2FkLmJvZHlTaXplKTsKICAgICAg
ICAgcmVzb3VyY2UubWFya0FzRmluaXNoZWQoZWxhcHNlZFRpbWUpOwpAQCAtMjc5LDcgKzI3OSw3
IEBAIFdlYkluc3BlY3Rvci5GcmFtZVJlc291cmNlTWFuYWdlciA9IGNsYXNzIEZyYW1lUmVzb3Vy
Y2VNYW5hZ2VyIGV4dGVuZHMgV2ViSW5zcGVjCiAgICAgICAgIC8vIElmIHdlIGhhdmVuJ3QgZm91
bmQgYW4gZXhpc3RpbmcgUmVzb3VyY2UgYnkgbm93LCB0aGVuIGl0IGlzIGEgcmVzb3VyY2UgdGhh
dCB3YXMgbG9hZGluZyB3aGVuIHRoZSBpbnNwZWN0b3IKICAgICAgICAgLy8gb3BlbmVkIGFuZCB3
ZSBqdXN0IG1pc3NlZCB0aGUgcmVzb3VyY2VSZXF1ZXN0V2lsbEJlU2VudCBmb3IgaXQuIFNvIG1h
a2UgYSBuZXcgcmVzb3VyY2UgYW5kIGFkZCBpdC4KICAgICAgICAgaWYgKCFyZXNvdXJjZSkgewot
ICAgICAgICAgICAgcmVzb3VyY2UgPSB0aGlzLl9hZGROZXdSZXNvdXJjZVRvRnJhbWUocmVxdWVz
dElkZW50aWZpZXIsIGZyYW1lSWRlbnRpZmllciwgbG9hZGVySWRlbnRpZmllciwgcmVzcG9uc2Uu
dXJsLCB0eXBlLCBudWxsLCByZXNwb25zZS5yZXF1ZXN0SGVhZGVycywgbnVsbCwgZWxhcHNlZFRp
bWUsIG51bGwsIG51bGwsIG51bGwpOworICAgICAgICAgICAgcmVzb3VyY2UgPSB0aGlzLl9hZGRO
ZXdSZXNvdXJjZVRvRnJhbWUocmVxdWVzdElkZW50aWZpZXIsIGZyYW1lSWRlbnRpZmllciwgbG9h
ZGVySWRlbnRpZmllciwgcmVzcG9uc2UudXJsLCB0eXBlLCBudWxsLCByZXNwb25zZS5yZXF1ZXN0
SGVhZGVycywgbnVsbCwgZWxhcHNlZFRpbWUsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIHJlc3Bv
bnNlLnRpbWluZyk7CiAKICAgICAgICAgICAgIC8vIEFzc29jaWF0ZSB0aGUgcmVzb3VyY2Ugd2l0
aCB0aGUgcmVxdWVzdElkZW50aWZpZXIgc28gaXQgY2FuIGJlIGZvdW5kIGluIGZ1dHVyZSBsb2Fk
aW5nIGV2ZW50cy4KICAgICAgICAgICAgIHRoaXMuX3Jlc291cmNlUmVxdWVzdElkZW50aWZpZXJN
YXBbcmVxdWVzdElkZW50aWZpZXJdID0gcmVzb3VyY2U7CkBAIC0yODgsNyArMjg4LDcgQEAgV2Vi
SW5zcGVjdG9yLkZyYW1lUmVzb3VyY2VNYW5hZ2VyID0gY2xhc3MgRnJhbWVSZXNvdXJjZU1hbmFn
ZXIgZXh0ZW5kcyBXZWJJbnNwZWMKICAgICAgICAgaWYgKHJlc3BvbnNlLmZyb21EaXNrQ2FjaGUp
CiAgICAgICAgICAgICByZXNvdXJjZS5tYXJrQXNDYWNoZWQoKTsKIAotICAgICAgICByZXNvdXJj
ZS51cGRhdGVGb3JSZXNwb25zZShyZXNwb25zZS51cmwsIHJlc3BvbnNlLm1pbWVUeXBlLCB0eXBl
LCByZXNwb25zZS5oZWFkZXJzLCByZXNwb25zZS5zdGF0dXMsIHJlc3BvbnNlLnN0YXR1c1RleHQs
IGVsYXBzZWRUaW1lKTsKKyAgICAgICAgcmVzb3VyY2UudXBkYXRlRm9yUmVzcG9uc2UocmVzcG9u
c2UudXJsLCByZXNwb25zZS5taW1lVHlwZSwgdHlwZSwgcmVzcG9uc2UuaGVhZGVycywgcmVzcG9u
c2Uuc3RhdHVzLCByZXNwb25zZS5zdGF0dXNUZXh0LCBlbGFwc2VkVGltZSwgcmVzcG9uc2UudGlt
aW5nKTsKICAgICB9CiAKICAgICByZXNvdXJjZVJlcXVlc3REaWRSZWNlaXZlRGF0YShyZXF1ZXN0
SWRlbnRpZmllciwgZGF0YUxlbmd0aCwgZW5jb2RlZERhdGFMZW5ndGgsIHRpbWVzdGFtcCkKQEAg
LTM4OSw3ICszODksNyBAQCBXZWJJbnNwZWN0b3IuRnJhbWVSZXNvdXJjZU1hbmFnZXIgPSBjbGFz
cyBGcmFtZVJlc291cmNlTWFuYWdlciBleHRlbmRzIFdlYkluc3BlYwogCiAgICAgLy8gUHJpdmF0
ZQogCi0gICAgX2FkZE5ld1Jlc291cmNlVG9GcmFtZShyZXF1ZXN0SWRlbnRpZmllciwgZnJhbWVJ
ZGVudGlmaWVyLCBsb2FkZXJJZGVudGlmaWVyLCB1cmwsIHR5cGUsIHJlcXVlc3RNZXRob2QsIHJl
cXVlc3RIZWFkZXJzLCByZXF1ZXN0RGF0YSwgZWxhcHNlZFRpbWUsIGZyYW1lTmFtZSwgZnJhbWVT
ZWN1cml0eU9yaWdpbiwgaW5pdGlhdG9yU291cmNlQ29kZUxvY2F0aW9uLCBvcmlnaW5hbFJlcXVl
c3RXaWxsQmVTZW50VGltZXN0YW1wKQorICAgIF9hZGROZXdSZXNvdXJjZVRvRnJhbWUocmVxdWVz
dElkZW50aWZpZXIsIGZyYW1lSWRlbnRpZmllciwgbG9hZGVySWRlbnRpZmllciwgdXJsLCB0eXBl
LCByZXF1ZXN0TWV0aG9kLCByZXF1ZXN0SGVhZGVycywgcmVxdWVzdERhdGEsIGVsYXBzZWRUaW1l
LCBmcmFtZU5hbWUsIGZyYW1lU2VjdXJpdHlPcmlnaW4sIGluaXRpYXRvclNvdXJjZUNvZGVMb2Nh
dGlvbiwgb3JpZ2luYWxSZXF1ZXN0V2lsbEJlU2VudFRpbWVzdGFtcCwgdGltaW5nRGF0YSkKICAg
ICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl93YWl0aW5nRm9yTWFpbkZyYW1lUmVz
b3VyY2VUcmVlUGF5bG9hZCk7CiAKQEAgLTQwMywxMiArNDAzLDEyIEBAIFdlYkluc3BlY3Rvci5G
cmFtZVJlc291cmNlTWFuYWdlciA9IGNsYXNzIEZyYW1lUmVzb3VyY2VNYW5hZ2VyIGV4dGVuZHMg
V2ViSW5zcGVjCiAgICAgICAgICAgICBlbHNlIGlmIChmcmFtZS5wcm92aXNpb25hbE1haW5SZXNv
dXJjZSAmJiBmcmFtZS5wcm92aXNpb25hbE1haW5SZXNvdXJjZS51cmwgPT09IHVybCAmJiBmcmFt
ZS5wcm92aXNpb25hbExvYWRlcklkZW50aWZpZXIgPT09IGxvYWRlcklkZW50aWZpZXIpCiAgICAg
ICAgICAgICAgICAgcmVzb3VyY2UgPSBmcmFtZS5wcm92aXNpb25hbE1haW5SZXNvdXJjZTsKICAg
ICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHJlc291cmNlID0gbmV3IFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZSh1cmwsIG51bGwsIHR5cGUsIGxvYWRlcklkZW50aWZpZXIsIHJlcXVlc3RJ
ZGVudGlmaWVyLCByZXF1ZXN0TWV0aG9kLCByZXF1ZXN0SGVhZGVycywgcmVxdWVzdERhdGEsIGVs
YXBzZWRUaW1lLCBpbml0aWF0b3JTb3VyY2VDb2RlTG9jYXRpb24sIG9yaWdpbmFsUmVxdWVzdFdp
bGxCZVNlbnRUaW1lc3RhbXApOworICAgICAgICAgICAgICAgIHJlc291cmNlID0gbmV3IFdlYklu
c3BlY3Rvci5SZXNvdXJjZSh1cmwsIG51bGwsIHR5cGUsIGxvYWRlcklkZW50aWZpZXIsIHJlcXVl
c3RJZGVudGlmaWVyLCByZXF1ZXN0TWV0aG9kLCByZXF1ZXN0SGVhZGVycywgcmVxdWVzdERhdGEs
IGVsYXBzZWRUaW1lLCBpbml0aWF0b3JTb3VyY2VDb2RlTG9jYXRpb24sIG9yaWdpbmFsUmVxdWVz
dFdpbGxCZVNlbnRUaW1lc3RhbXAsIHRpbWluZ0RhdGEpOwogICAgICAgICAgICAgICAgIHRoaXMu
X2FkZFJlc291cmNlVG9GcmFtZShmcmFtZSwgcmVzb3VyY2UpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gVGhpcyBpcyBhIG5ldyByZXF1ZXN0IGZvciBh
IG5ldyBmcmFtZSwgd2hpY2ggaXMgYWx3YXlzIHRoZSBtYWluIHJlc291cmNlLgotICAgICAgICAg
ICAgcmVzb3VyY2UgPSBuZXcgV2ViSW5zcGVjdG9yLlJlc291cmNlKHVybCwgbnVsbCwgdHlwZSwg
bG9hZGVySWRlbnRpZmllciwgcmVxdWVzdElkZW50aWZpZXIsIHJlcXVlc3RNZXRob2QsIHJlcXVl
c3RIZWFkZXJzLCByZXF1ZXN0RGF0YSwgZWxhcHNlZFRpbWUsIGluaXRpYXRvclNvdXJjZUNvZGVM
b2NhdGlvbiwgb3JpZ2luYWxSZXF1ZXN0V2lsbEJlU2VudFRpbWVzdGFtcCk7CisgICAgICAgICAg
ICByZXNvdXJjZSA9IG5ldyBXZWJJbnNwZWN0b3IuUmVzb3VyY2UodXJsLCBudWxsLCB0eXBlLCBs
b2FkZXJJZGVudGlmaWVyLCByZXF1ZXN0SWRlbnRpZmllciwgcmVxdWVzdE1ldGhvZCwgcmVxdWVz
dEhlYWRlcnMsIHJlcXVlc3REYXRhLCBlbGFwc2VkVGltZSwgaW5pdGlhdG9yU291cmNlQ29kZUxv
Y2F0aW9uLCBvcmlnaW5hbFJlcXVlc3RXaWxsQmVTZW50VGltZXN0YW1wLCB0aW1pbmdEYXRhKTsK
ICAgICAgICAgICAgIGZyYW1lID0gbmV3IFdlYkluc3BlY3Rvci5GcmFtZShmcmFtZUlkZW50aWZp
ZXIsIGZyYW1lTmFtZSwgZnJhbWVTZWN1cml0eU9yaWdpbiwgbG9hZGVySWRlbnRpZmllciwgcmVz
b3VyY2UpOwogICAgICAgICAgICAgdGhpcy5fZnJhbWVJZGVudGlmaWVyTWFwW2ZyYW1lLmlkXSA9
IGZyYW1lOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Nb2RlbHMvUmVzb3VyY2UuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Nb2RlbHMvUmVzb3VyY2UuanMKaW5kZXggNWVlODZlMGNlZDkxZTE2MzM2MzU5MjcyM2RmOThl
MThhNWFmY2ZkYy4uYTJhMDliYTg5MjMzZDk1ZjQyYmQ0ODFkYjMxZmZjZmM0YTAxNzMxOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Jlc291
cmNlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9S
ZXNvdXJjZS5qcwpAQCAtMjYsNyArMjYsNyBAQAogCiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UgPSBj
bGFzcyBSZXNvdXJjZSBleHRlbmRzIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlCiB7Ci0gICAgY29u
c3RydWN0b3IodXJsLCBtaW1lVHlwZSwgdHlwZSwgbG9hZGVySWRlbnRpZmllciwgcmVxdWVzdElk
ZW50aWZpZXIsIHJlcXVlc3RNZXRob2QsIHJlcXVlc3RIZWFkZXJzLCByZXF1ZXN0RGF0YSwgcmVx
dWVzdFNlbnRUaW1lc3RhbXAsIGluaXRpYXRvclNvdXJjZUNvZGVMb2NhdGlvbiwgb3JpZ2luYWxS
ZXF1ZXN0V2lsbEJlU2VudFRpbWVzdGFtcCkKKyAgICBjb25zdHJ1Y3Rvcih1cmwsIG1pbWVUeXBl
LCB0eXBlLCBsb2FkZXJJZGVudGlmaWVyLCByZXF1ZXN0SWRlbnRpZmllciwgcmVxdWVzdE1ldGhv
ZCwgcmVxdWVzdEhlYWRlcnMsIHJlcXVlc3REYXRhLCByZXF1ZXN0U2VudFRpbWVzdGFtcCwgaW5p
dGlhdG9yU291cmNlQ29kZUxvY2F0aW9uLCBvcmlnaW5hbFJlcXVlc3RXaWxsQmVTZW50VGltZXN0
YW1wLCB0aW1pbmcpCiAgICAgewogICAgICAgICBzdXBlcigpOwogCkBAIC01OSw2ICs1OSw3IEBA
IFdlYkluc3BlY3Rvci5SZXNvdXJjZSA9IGNsYXNzIFJlc291cmNlIGV4dGVuZHMgV2ViSW5zcGVj
dG9yLlNvdXJjZUNvZGUKICAgICAgICAgdGhpcy5fc2l6ZSA9IE5hTjsKICAgICAgICAgdGhpcy5f
dHJhbnNmZXJTaXplID0gTmFOOwogICAgICAgICB0aGlzLl9jYWNoZWQgPSBmYWxzZTsKKyAgICAg
ICAgdGhpcy5fdGltaW5nID0gdGltaW5nIHx8IHt9OwogCiAgICAgICAgIGlmICh0aGlzLl9pbml0
aWF0b3JTb3VyY2VDb2RlTG9jYXRpb24gJiYgdGhpcy5faW5pdGlhdG9yU291cmNlQ29kZUxvY2F0
aW9uLnNvdXJjZUNvZGUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UpCiAgICAgICAg
ICAgICB0aGlzLl9pbml0aWF0b3JTb3VyY2VDb2RlTG9jYXRpb24uc291cmNlQ29kZS5hZGRJbml0
aWF0ZWRSZXNvdXJjZSh0aGlzKTsKQEAgLTE2NSw2ICsxNjYsMTEgQEAgV2ViSW5zcGVjdG9yLlJl
c291cmNlID0gY2xhc3MgUmVzb3VyY2UgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuU291cmNlQ29kZQog
ICAgICAgICByZXR1cm4gdGhpcy5fb3JpZ2luYWxSZXF1ZXN0V2lsbEJlU2VudFRpbWVzdGFtcDsK
ICAgICB9CiAKKyAgICBnZXQgdGltaW5nKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl90
aW1pbmc7CisgICAgfQorCiAgICAgZ2V0IHR5cGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRo
aXMuX3R5cGU7CkBAIC00NDcsNyArNDUzLDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlID0gY2xh
c3MgUmVzb3VyY2UgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuU291cmNlQ29kZQogICAgICAgICB0aGlz
LmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuUmVzb3VyY2UuRXZlbnQuVGlt
ZXN0YW1wc0RpZENoYW5nZSk7CiAgICAgfQogCi0gICAgdXBkYXRlRm9yUmVzcG9uc2UodXJsLCBt
aW1lVHlwZSwgdHlwZSwgcmVzcG9uc2VIZWFkZXJzLCBzdGF0dXNDb2RlLCBzdGF0dXNUZXh0LCBl
bGFwc2VkVGltZSkKKyAgICB1cGRhdGVGb3JSZXNwb25zZSh1cmwsIG1pbWVUeXBlLCB0eXBlLCBy
ZXNwb25zZUhlYWRlcnMsIHN0YXR1c0NvZGUsIHN0YXR1c1RleHQsIGVsYXBzZWRUaW1lLCB0aW1p
bmcpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fZmluaXNoZWQpOwogICAg
ICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fZmFpbGVkKTsKQEAgLTQ2Nyw2ICs0NzMsNyBAQCBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2UgPSBjbGFzcyBSZXNvdXJjZSBleHRlbmRzIFdlYkluc3BlY3Rv
ci5Tb3VyY2VDb2RlCiAgICAgICAgIHRoaXMuX3N0YXR1c1RleHQgPSBzdGF0dXNUZXh0OwogICAg
ICAgICB0aGlzLl9yZXNwb25zZUhlYWRlcnMgPSByZXNwb25zZUhlYWRlcnMgfHwge307CiAgICAg
ICAgIHRoaXMuX3Jlc3BvbnNlUmVjZWl2ZWRUaW1lc3RhbXAgPSBlbGFwc2VkVGltZSB8fCBOYU47
CisgICAgICAgIHRoaXMuX3RpbWluZyA9IHRpbWluZyB8fCB7fTsKIAogICAgICAgICB0aGlzLl9y
ZXNwb25zZUhlYWRlcnNTaXplID0gU3RyaW5nKHRoaXMuX3N0YXR1c0NvZGUpLmxlbmd0aCArIHRo
aXMuX3N0YXR1c1RleHQubGVuZ3RoICsgMTI7IC8vIEV4dHJhIGxlbmd0aCBpcyBmb3IgIkhUVFAv
MS4xICIsICIgIiwgYW5kICJcclxuIi4KICAgICAgICAgZm9yICh2YXIgbmFtZSBpbiB0aGlzLl9y
ZXNwb25zZUhlYWRlcnMpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggY2IxODljOTIzOWY4YjI3ZDUzZTUwMTc0OTYwYjc1OTE2
YjgyNWI5Yy4uYzg3NGI0NzQ4MWEyYmI4M2RjOTk5ZDY4YmQ5NWQ2Y2JiODAyZTljZSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE1IEBACisyMDE2LTA3LTIyICBKb2hhbiBLLiBKZW5zZW4gIDxqb2hhbl9qZW5z
ZW5AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEZyb250ZW5kIHNob3VsZCBo
YXZlIGFjY2VzcyB0byBSZXNvdXJjZSBUaW1pbmcgaW5mb3JtYXRpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDA5NQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RpbmcgdGhhdCBhIFJlc291cmNl
IGhhcyB0aW1pbmcgaW5mb3JtYXRpb24gYXZhaWxhYmxlLgorCisgICAgICAgICogaHR0cC90ZXN0
cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZS10aW1pbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlLXRpbWluZy5o
dG1sOiBBZGRlZC4KKwogMjAxNi0wNy0xOCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5j
b20+CiAKICAgICAgICAgW1N0cmVhbXMgQVBJXSBSZWFkYWJsZVN0cmVhbSBzaG91bGQgdGhyb3cg
YSBSYW5nZUVycm9yIGluIGNhc2Ugb2YgTmFOIGhpZ2hXYXRlck1hcmsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2UtdGltaW5nLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVz
b3VyY2UtdGltaW5nLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZGRiMTE0Y2VkZDJmZjliM2M0
NGQ0NGIwMDVhMGNmMTVmZTBlNmYyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZS10aW1pbmctZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTYgQEAKK1Rlc3RzIHRoYXQgYSByZXNvdXJjZSBoYXMgdGltaW5nIGluZm9ybWF0
aW9uLgorCisKKz09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogUmVzb3VyY2VUaW1pbmcKKy0tIFJ1bm5p
bmcgdGVzdCBjYXNlOiBDaGVja1Jlc291cmNlVGltaW5nSW5mb3JtYXRpb25Gb3JSZXNvdXJjZQor
UEFTUzogTmV3bHkgYWRkZWQgcmVzb3VyY2Ugc2hvdWxkIG5vdCBoYXZlIHRpbWluZyBpbmZvIHll
dC4KK1BBU1M6IFJlc291cmNlIHNob3VsZCBub3cgY29udGFpbiB0aW1pbmcgaW5mb3JtYXRpb24u
CitQQVNTOiBSZXNvdXJjZSBzaG91bGQgaGF2ZSBhIHN0YXJ0IHRpbWUuCitQQVNTOiBSZXNvdXJj
ZSBzaG91bGQgaGF2ZSBhIHJlcXVlc3Qgc3RhcnQgdGltZS4KK1BBU1M6IFJlc291cmNlIHNob3Vs
ZCBoYXZlIGEgcmVzcG9uc2Ugc3RhcnQgdGltZS4KK1BBU1M6IGRvbWFpbkxvb2t1cEVuZCBzaG91
bGQgY29tZSBhZnRlciBkb21haW5Mb29rdXBTdGFydC4KK1BBU1M6IGNvbm5lY3RTdGFydCBzaG91
bGQgY29tZSBhZnRlciBkb21haW5Mb29rdXBFbmQuCitQQVNTOiBjb25uZWN0RW5kIHNob3VsZCBj
b21lIGFmdGVyIGNvbm5lY3RTdGFydC4KK1BBU1M6IHJlcXVlc3RTdGFydCBzaG91bGQgY29tZSBh
ZnRlciBjb25uZWN0RW5kLgorUEFTUzogcmVzcG9uc2VTdGFydCBzaG91bGQgY29tZSBhZnRlciBy
ZXF1ZXN0U3RhcnQuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvcmVzb3VyY2UtdGltaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlLXRpbWluZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhkMjMy
YzA1N2I4MWJlZDI5YTExNTZkNzlmMTA5ZmRiZDE1NGFlODIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlLXRpbWluZy5o
dG1sCkBAIC0wLDAgKzEsNTMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvaW5zcGVjdG9y
LXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIGNyZWF0ZVJlcXVlc3QoKQor
eworICAgIGxldCBpbWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsKKyAgICBpbWcu
c3JjID0gImltYWdlLnBuZyI7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpbWcpOwor
fQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNy
ZWF0ZUFzeW5jU3VpdGUoIlJlc291cmNlVGltaW5nIik7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2Fz
ZSh7CisgICAgICAgIG5hbWU6ICJDaGVja1Jlc291cmNlVGltaW5nSW5mb3JtYXRpb25Gb3JSZXNv
dXJjZSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgaWYgYSByZXNvdXJjZSBoYXMgdGlt
aW5nIGluZm9ybWF0aW9uLiIsCisgICAgICAgIHRlc3Q6IChyZXNvbHZlLCByZWplY3QpID0+IHsK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoImNyZWF0ZVJlcXVlc3Qo
KSIpOworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLkZyYW1lLnNpbmdsZUZpcmVFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5GcmFtZS5FdmVudC5SZXNvdXJjZVdhc0FkZGVkLCAoZXZlbnQpID0+
IHsKKyAgICAgICAgICAgICAgICBsZXQgcmVzb3VyY2UgPSBldmVudC5kYXRhLnJlc291cmNlOwor
CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KE9iamVjdC5rZXlzKHJl
c291cmNlLnRpbWluZykubGVuZ3RoID09PSAwLCAiTmV3bHkgYWRkZWQgcmVzb3VyY2Ugc2hvdWxk
IG5vdCBoYXZlIHRpbWluZyBpbmZvIHlldC4iKTsKKworICAgICAgICAgICAgICAgIHJlc291cmNl
LnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5SZXNvdXJjZS5FdmVudC5SZXNw
b25zZVJlY2VpdmVkLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHRpbWlu
ZyA9IHJlc291cmNlLnRpbWluZzsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
eHBlY3RUaGF0KE9iamVjdC5rZXlzKHRpbWluZykubGVuZ3RoICE9PSAwLCAiUmVzb3VyY2Ugc2hv
dWxkIG5vdyBjb250YWluIHRpbWluZyBpbmZvcm1hdGlvbi4iKTsKKyAgICAgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KHRpbWluZy5zdGFydFRpbWUgPiAwLCAiUmVzb3Vy
Y2Ugc2hvdWxkIGhhdmUgYSBzdGFydCB0aW1lLiIpOworICAgICAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmV4cGVjdFRoYXQodGltaW5nLnJlcXVlc3RTdGFydCA+IDAsICJSZXNvdXJjZSBz
aG91bGQgaGF2ZSBhIHJlcXVlc3Qgc3RhcnQgdGltZS4iKTsKKyAgICAgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KHRpbWluZy5yZXNwb25zZVN0YXJ0ID4gMCwgIlJlc291
cmNlIHNob3VsZCBoYXZlIGEgcmVzcG9uc2Ugc3RhcnQgdGltZS4iKTsKKworICAgICAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQodGltaW5nLmRvbWFpbkxvb2t1cFN0YXJ0
IDw9IHRpbWluZy5kb21haW5Mb29rdXBFbmQsICJkb21haW5Mb29rdXBFbmQgc2hvdWxkIGNvbWUg
YWZ0ZXIgZG9tYWluTG9va3VwU3RhcnQuIik7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuZXhwZWN0VGhhdCh0aW1pbmcuZG9tYWluTG9va3VwRW5kIDw9IHRpbWluZy5jb25uZWN0
U3RhcnQsICJjb25uZWN0U3RhcnQgc2hvdWxkIGNvbWUgYWZ0ZXIgZG9tYWluTG9va3VwRW5kLiIp
OworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQodGltaW5nLmNv
bm5lY3RTdGFydCA8PSB0aW1pbmcuY29ubmVjdEVuZCwgImNvbm5lY3RFbmQgc2hvdWxkIGNvbWUg
YWZ0ZXIgY29ubmVjdFN0YXJ0LiIpOworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmV4cGVjdFRoYXQodGltaW5nLmNvbm5lY3RFbmQgPD0gdGltaW5nLnJlcXVlc3RTdGFydCwgInJl
cXVlc3RTdGFydCBzaG91bGQgY29tZSBhZnRlciBjb25uZWN0RW5kLiIpOworICAgICAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQodGltaW5nLnJlcXVlc3RTdGFydCA8PSB0
aW1pbmcucmVzcG9uc2VTdGFydCwgInJlc3BvbnNlU3RhcnQgc2hvdWxkIGNvbWUgYWZ0ZXIgcmVx
dWVzdFN0YXJ0LiIpOworICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3Vp
dGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
IG9ubG9hZD0icnVuVGVzdCgpIj4KKyAgICA8cD5UZXN0cyB0aGF0IGEgcmVzb3VyY2UgaGFzIHRp
bWluZyBpbmZvcm1hdGlvbi48L3A+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287053</attachid>
            <date>2016-08-25 17:42:47 -0700</date>
            <delta_ts>2016-08-26 11:31:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160095-20160825174045.patch</filename>
            <type>text/plain</type>
            <size>18791</size>
            <attacher name="Johan K. Jensen">jj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0OTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ODIxYzE0NjNjOTc4Y2I3YWExNzJkODk3ZmFiYmNjYTUyMDE0ZDIwLi5lMzc0YTRmNzA4NTJiMjlm
NzQ0ZGRmZDMwZGM0MTE4ZmQwYjVlY2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxNi0wOC0yNSAgSm9oYW4gSy4gSmVuc2VuICA8am9oYW5famVuc2VuQGFw
cGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBGcm9udGVuZCBzaG91bGQgaGF2ZSBh
Y2Nlc3MgdG8gUmVzb3VyY2UgVGltaW5nIGluZm9ybWF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjAwOTUKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWUgUmVzb3VyY2VUaW1pbmcgcHJvcGVy
dHkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvdG9jb2wvTmV0d29yay5qc29uOgorICAgICAg
ICBSZW5hbWUgbmF2aWdhdGlvblN0YXJ0IHRvIHN0YXJ0VGltZSBzbyBpdCdzIGFwcGxpY2FibGUK
KyAgICAgICAgZm9yIGFsbCByZXNvdXJjZXMgYW5kIG5vdCBqdXN0IHRoZSBtYWluIHJlc291cmNl
LgorCiAyMDE2LTA4LTI1ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkgc2hvdWxkIGdlbmVyYXRlIHBsYXRmb3Jt
IGluZGVwZW5kZW50IGZpbGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDBhODQxOTJhOTY1MDA4MmY2ZDNhYjljNjFhODg1MzEw
YjJiZTE4MTQuLjBkZDBlMzRjZTE3ZGI2ZTE3ZDE2MzdjNzk0OWNjOTI4NjIxZjJjOTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBA
IC0xLDUgKzEsMTggQEAKIDIwMTYtMDgtMjUgIEpvaGFuIEsuIEplbnNlbiAgPGpvaGFuX2plbnNl
bkBhcHBsZS5jb20+CiAKKyAgICAgICAgV2ViIEluc3BlY3RvcjogRnJvbnRlbmQgc2hvdWxkIGhh
dmUgYWNjZXNzIHRvIFJlc291cmNlIFRpbWluZyBpbmZvcm1hdGlvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwMDk1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG1ldGhvZCB0byBnZXQgZWxhcHNl
ZCB0aW1lIGZvciBhbnkgbW9ub3RvbmljIHRpbWUuCisgICAgICAgIFVzZWQgYnkgSW5zcGVjdG9y
TmV0d29ya0FnZW50LgorCisgICAgICAgICogd3RmL1N0b3B3YXRjaC5oOgorICAgICAgICAoV1RG
OjpTdG9wd2F0Y2g6OmVsYXBzZWRUaW1lU2luY2VNb25vdG9uaWNUaW1lKToKKworMjAxNi0wOC0y
NSAgSm9oYW4gSy4gSmVuc2VuICA8am9oYW5famVuc2VuQGFwcGxlLmNvbT4KKwogICAgICAgICBE
b24ndCBzdG9yZSBuZXR3b3JrTG9hZFRpbWluZyBpbiB0aGUgZGlzayBjYWNoZQogICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxMTYxCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCAxODBjODk5MjI0MzE3ZDY3ODQ1Yjk0NTk0ODAxNzY2YWJmMmE0YzVjLi40ZDBjYmY0MjQy
MzU0NjBmNjQ2ODBiMzZlZjE1NWJlZTcwZWNjYjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYg
QEAKKzIwMTYtMDgtMjUgIEpvaGFuIEsuIEplbnNlbiAgPGpvaGFuX2plbnNlbkBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogRnJvbnRlbmQgc2hvdWxkIGhhdmUgYWNjZXNzIHRv
IFJlc291cmNlIFRpbWluZyBpbmZvcm1hdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwMDk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgU2hvdyBjb3JyZWN0IGluZm9ybWF0aW9uIHdpdGggUmVzb3Vy
Y2UgVGltaW5nIGluZm9ybWF0aW9uCisgICAgICAgIGZyb20gUmVzb3VyY2VMb2FkZXIgcmF0aGVy
IHRoYW4gRG9jdW1lbnRMb2FkZXIuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBmcm9udGVuZCBk
b2Vzbid0IHVzZSB0aGUgdGltaW5nIGRhdGEgeWV0LgorCisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3Rvck5ldHdvcmtBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3
b3JrQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yVGltaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvck5ldHdvcmtBZ2VudDo6YnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNlKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6YnVpbGRPYmplY3RGb3JDYWNoZWRS
ZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OndpbGxT
ZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRp
ZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdl
bnQ6OmRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpi
dWlsZE9iamVjdEZvclRpbWluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpidWlsZE9i
amVjdEZvclJlc291cmNlUmVzcG9uc2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6YnVp
bGRPYmplY3RGb3JDYWNoZWRSZXNvdXJjZSk6IERlbGV0ZWQuCisgICAgICAgIFVzZSBSZXNvdXJj
ZUxvYWRlciBpbnN0ZWFkIG9mIERvY3VtZW50TG9hZGVyIHRvIGdldCBSZXNvdXJjZSBUaW1pbmcg
aW5mb3JtYXRpb24uCisgICAgICAgIE1vdmUgZnVuY3Rpb25zIHRvIG1lbWJlciBmdW5jdGlvbnMg
dG8gYWNjZXNzIHRoZSBleGVjdXRpb25TdG9wV2F0Y2guCisKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIFVzZSB0aGUg
bG9hZCB0aW1pbmcgZmluaXNoVGltZSBhbmQgY29udmVydCB0byBlbGFwc2VkIHRpbWUgZm9yIGZy
b250ZW5kLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oOgor
ICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIFBhc3MgdGhl
IHdlYiBwcm9jZXNzIGxvYWQgdGltaW5nIG9uIHRvIHRoZSBpbnNwZWN0b3IuCisKIDIwMTYtMDgt
MjUgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSRUdSRVNTSU9OIChyMjAzMzc4KTogW2lPU10gVGhlIFBERiBpbWFnZSBpcyByZW5kZXJlZCBz
dHJldGNoZWQgaWYgYSBzdWIgaW1hZ2Ugb2YgaXQgaXMgY2FjaGVkIGZpcnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L0NoYW5nZUxvZwppbmRleCBkODJkNjVlN2QwZDMxNzNmZjRiNWFmMWU0MTJkNDRlZDcyYjRmOWIw
Li4zZDQ2YmQyOTQ4MWI4ODYzYjY4NjY3YjQ0NGMwZDVhZTEzZGVkYWZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNi0wOC0yNSAgSm9oYW4gSy4gSmVuc2Vu
ICA8am9oYW5famVuc2VuQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBGcm9u
dGVuZCBzaG91bGQgaGF2ZSBhY2Nlc3MgdG8gUmVzb3VyY2UgVGltaW5nIGluZm9ybWF0aW9uCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjAwOTUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvQ29udHJvbGxlcnMvRnJhbWVSZXNvdXJjZU1hbmFnZXIuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRnJhbWVSZXNvdXJjZU1hbmFnZXIucHJvdG90eXBlLnJlc291cmNlUmVxdWVzdFdh
c1NlcnZlZEZyb21NZW1vcnlDYWNoZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRnJhbWVSZXNv
dXJjZU1hbmFnZXIucHJvdG90eXBlLnJlc291cmNlUmVxdWVzdERpZFJlY2VpdmVSZXNwb25zZSk6
CisgICAgICAgIFB1c2ggdGltaW5nIGRhdGEgdG8gdGhlIFJlc291cmNlLgorCiAyMDE2LTA4LTI0
ICBNYXR0IEJha2VyICA8bWF0dGJha2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVj
dG9yOiB1bmV4cGVjdGVkIGN1cnNvciBjaGFuZ2VzIHdoaWxlIGRyYWdnaW5nIHJ1bGVyIGhhbmRs
ZSBpbiByZW5kZXJpbmcgZnJhbWVzIHRpbWVsaW5lCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL05ldHdvcmsuanNvbiBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvTmV0d29yay5qc29uCmluZGV4IGUzMTdmODBlNzQ1
ODNiZTIzNGZhYTIxODdkY2RhOTBmMjc5Nzk4MmQuLjIzMGE4YzAxYjYzMTQ1YjU4ODg1ZTlhYmY4
ZWI1NzJhMmQ1MWMyMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvcHJvdG9jb2wvTmV0d29yay5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcHJvdG9jb2wvTmV0d29yay5qc29uCkBAIC0zMyw3ICszMyw3IEBACiAgICAgICAgICAg
ICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlRpbWluZyBp
bmZvcm1hdGlvbiBmb3IgdGhlIHJlcXVlc3QuIiwKICAgICAgICAgICAgICJwcm9wZXJ0aWVzIjog
WwotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibmF2aWdhdGlvblN0YXJ0IiwgInR5cGUiOiAi
bnVtYmVyIiwgImRlc2NyaXB0aW9uIjogIlRpbWluZydzIG5hdmlnYXRpb25TdGFydCBpcyBhIGJh
c2VsaW5lIGluIHNlY29uZHMsIHdoaWxlIHRoZSBvdGhlciBudW1iZXJzIGFyZSB0aWNrcyBpbiBt
aWxsaXNlY29uZHMgcmVsYXRpdmVseSB0byB0aGlzIG5hdmlnYXRpb25TdGFydC4iIH0sCisgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJzdGFydFRpbWUiLCAidHlwZSI6ICJudW1iZXIiLCAiZGVz
Y3JpcHRpb24iOiAiVGltaW5nJ3Mgc3RhcnRUaW1lIGlzIGEgYmFzZWxpbmUgaW4gc2Vjb25kcywg
d2hpbGUgdGhlIG90aGVyIG51bWJlcnMgYXJlIHRpY2tzIGluIG1pbGxpc2Vjb25kcyByZWxhdGl2
ZWx5IHRvIHRoaXMuIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZG9tYWluTG9va3Vw
U3RhcnQiLCAidHlwZSI6ICJudW1iZXIiLCAiZGVzY3JpcHRpb24iOiAiU3RhcnRlZCBETlMgYWRk
cmVzcyByZXNvbHZlLiIgfSwKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImRvbWFpbkxvb2t1
cEVuZCIsICJ0eXBlIjogIm51bWJlciIsICJkZXNjcmlwdGlvbiI6ICJGaW5pc2hlZCBETlMgYWRk
cmVzcyByZXNvbHZlLiIgfSwKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNvbm5lY3RTdGFy
dCIsICJ0eXBlIjogIm51bWJlciIsICJkZXNjcmlwdGlvbiI6ICJTdGFydGVkIGNvbm5lY3Rpbmcg
dG8gdGhlIHJlbW90ZSBob3N0LiIgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1N0b3B3
YXRjaC5oIGIvU291cmNlL1dURi93dGYvU3RvcHdhdGNoLmgKaW5kZXggNWZiMjE1ZDM3M2EwNWFj
Y2RkMjU5NDI5OTk2YTA0ODM1MjFhMGM0ZC4uMGI4MzZjYzZhYjA5ODgzZTBjYmY3ZGI2ZjgzNGNj
Y2Y2N2Q0ZmNkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvU3RvcHdhdGNoLmgKKysrIGIv
U291cmNlL1dURi93dGYvU3RvcHdhdGNoLmgKQEAgLTQzLDYgKzQzLDcgQEAgcHVibGljOgogICAg
IHZvaWQgc3RvcCgpOwogCiAgICAgZG91YmxlIGVsYXBzZWRUaW1lKCk7CisgICAgZG91YmxlIGVs
YXBzZWRUaW1lU2luY2VNb25vdG9uaWNUaW1lKGRvdWJsZSk7CiAKICAgICBib29sIGlzQWN0aXZl
KCkgY29uc3QgeyByZXR1cm4gIXN0ZDo6aXNuYW4obV9sYXN0U3RhcnRUaW1lKTsgfQogcHJpdmF0
ZToKQEAgLTgxLDYgKzgyLDE0IEBAIGlubGluZSBkb3VibGUgU3RvcHdhdGNoOjplbGFwc2VkVGlt
ZSgpCiAgICAgcmV0dXJuIG1fZWxhcHNlZFRpbWUgKyAobW9ub3RvbmljYWxseUluY3JlYXNpbmdU
aW1lKCkgLSBtX2xhc3RTdGFydFRpbWUpOwogfQogCitpbmxpbmUgZG91YmxlIFN0b3B3YXRjaDo6
ZWxhcHNlZFRpbWVTaW5jZU1vbm90b25pY1RpbWUoZG91YmxlIG1vbm90b25pY1RpbWUpCit7Cisg
ICAgaWYgKCFpc0FjdGl2ZSgpKQorICAgICAgICByZXR1cm4gbV9lbGFwc2VkVGltZTsKKworICAg
IHJldHVybiBtX2VsYXBzZWRUaW1lICsgKG1vbm90b25pY1RpbWUgLSBtX2xhc3RTdGFydFRpbWUp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpTdG9wd2F0Y2g7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmlu
ZGV4IDllMDMwYzlmMGE2MzA3YTdhZDUzOGU1NTU2ODhmYjlhNjMxZTAxMGEuLjU4MmZlMzcyMzMy
ZjlkZWNhNGU1ZTk1ZTY4NzM2NjdmODI2YWM5NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCkBAIC0xODQsMTAgKzE4NCwxMyBA
QCBzdGF0aWMgUmVmPEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JIZWFkZXJzKGNvbnN0
IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMpCiAgICAgcmV0dXJuIGhlYWRlcnNPYmplY3Q7CiB9CiAK
LXN0YXRpYyBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVzb3VyY2VUaW1pbmc+
IGJ1aWxkT2JqZWN0Rm9yVGltaW5nKGNvbnN0IE5ldHdvcmtMb2FkVGltaW5nJiB0aW1pbmcsIERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIpCitSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6
UmVzb3VyY2VUaW1pbmc+IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6YnVpbGRPYmplY3RGb3JUaW1p
bmcoY29uc3QgTmV0d29ya0xvYWRUaW1pbmcmIHRpbWluZywgUmVzb3VyY2VMb2FkZXImIHJlc291
cmNlTG9hZGVyKQogeworICAgIGRvdWJsZSBtb25vdG9uaWNUaW1lID0gcmVzb3VyY2VMb2FkZXIu
bG9hZFRpbWluZygpLnN0YXJ0VGltZSgpOworICAgIGRvdWJsZSBzdGFydFRpbWVJbkluc3BlY3Rv
ciA9IG1fZW52aXJvbm1lbnQuZXhlY3V0aW9uU3RvcHdhdGNoKCktPmVsYXBzZWRUaW1lU2luY2VN
b25vdG9uaWNUaW1lKG1vbm90b25pY1RpbWUpOworCiAgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJv
dG9jb2w6Ok5ldHdvcms6OlJlc291cmNlVGltaW5nOjpjcmVhdGUoKQotICAgICAgICAuc2V0TmF2
aWdhdGlvblN0YXJ0KGxvYWRlci0+dGltaW5nKCkuc3RhcnRUaW1lKCkpCisgICAgICAgIC5zZXRT
dGFydFRpbWUoc3RhcnRUaW1lSW5JbnNwZWN0b3IpCiAgICAgICAgIC5zZXREb21haW5Mb29rdXBT
dGFydCh0aW1pbmcuZG9tYWluTG9va3VwU3RhcnQpCiAgICAgICAgIC5zZXREb21haW5Mb29rdXBF
bmQodGltaW5nLmRvbWFpbkxvb2t1cEVuZCkKICAgICAgICAgLnNldENvbm5lY3RTdGFydCh0aW1p
bmcuY29ubmVjdFN0YXJ0KQpAQCAtMjEzLDcgKzIxNiw3IEBAIHN0YXRpYyBSZWY8SW5zcGVjdG9y
OjpQcm90b2NvbDo6TmV0d29yazo6UmVxdWVzdD4gYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlcXVl
c3QoCiAgICAgcmV0dXJuIHJlcXVlc3RPYmplY3Q7CiB9CiAKLXN0YXRpYyBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVzcG9uc2U+IGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VS
ZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgRG9jdW1lbnRMb2FkZXIq
IGxvYWRlcikKK1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpSZXNwb25zZT4g
SW5zcGVjdG9yTmV0d29ya0FnZW50OjpidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9hZGVyKiByZXNvdXJjZUxv
YWRlcikKIHsKICAgICBpZiAocmVzcG9uc2UuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpAQCAtMjMwLDEyICsyMzMsMTMgQEAgc3RhdGljIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpOZXR3b3JrOjpSZXNwb25zZT4gYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlc3AKICAgICAg
ICAgLnJlbGVhc2UoKTsKIAogICAgIHJlc3BvbnNlT2JqZWN0LT5zZXRGcm9tRGlza0NhY2hlKHJl
c3BvbnNlLnNvdXJjZSgpID09IFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6RGlza0NhY2hlIHx8
IHJlc3BvbnNlLnNvdXJjZSgpID09IFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6RGlza0NhY2hl
QWZ0ZXJWYWxpZGF0aW9uKTsKLSAgICByZXNwb25zZU9iamVjdC0+c2V0VGltaW5nKGJ1aWxkT2Jq
ZWN0Rm9yVGltaW5nKHJlc3BvbnNlLm5ldHdvcmtMb2FkVGltaW5nKCksIGxvYWRlcikpOworICAg
IGlmIChyZXNvdXJjZUxvYWRlcikKKyAgICAgICAgcmVzcG9uc2VPYmplY3QtPnNldFRpbWluZyhi
dWlsZE9iamVjdEZvclRpbWluZyhyZXNwb25zZS5uZXR3b3JrTG9hZFRpbWluZygpLCAqcmVzb3Vy
Y2VMb2FkZXIpKTsKIAogICAgIHJldHVybiBXVEZNb3ZlKHJlc3BvbnNlT2JqZWN0KTsKIH0KIAot
c3RhdGljIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpDYWNoZWRSZXNvdXJjZT4g
YnVpbGRPYmplY3RGb3JDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3Vy
Y2UsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCitSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0
d29yazo6Q2FjaGVkUmVzb3VyY2U+IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6YnVpbGRPYmplY3RG
b3JDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UpCiB7CiAgICAg
YXV0byByZXNvdXJjZU9iamVjdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OkNhY2hl
ZFJlc291cmNlOjpjcmVhdGUoKQogICAgICAgICAuc2V0VXJsKGNhY2hlZFJlc291cmNlLT51cmwo
KSkKQEAgLTI0Myw3ICsyNDcsNyBAQCBzdGF0aWMgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5l
dHdvcms6OkNhY2hlZFJlc291cmNlPiBidWlsZE9iamVjdEZvckNhY2hlZFJlcwogICAgICAgICAu
c2V0Qm9keVNpemUoY2FjaGVkUmVzb3VyY2UtPmVuY29kZWRTaXplKCkpCiAgICAgICAgIC5yZWxl
YXNlKCk7CiAKLSAgICBhdXRvIHJlc291cmNlUmVzcG9uc2UgPSBidWlsZE9iamVjdEZvclJlc291
cmNlUmVzcG9uc2UoY2FjaGVkUmVzb3VyY2UtPnJlc3BvbnNlKCksIGxvYWRlcik7CisgICAgYXV0
byByZXNvdXJjZVJlc3BvbnNlID0gYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNlKGNhY2hl
ZFJlc291cmNlLT5yZXNwb25zZSgpLCBjYWNoZWRSZXNvdXJjZS0+bG9hZGVyKCkpOwogICAgIHJl
c291cmNlT2JqZWN0LT5zZXRSZXNwb25zZShXVEZNb3ZlKHJlc291cmNlUmVzcG9uc2UpKTsKIAog
ICAgIFN0cmluZyBzb3VyY2VNYXBwaW5nVVJMID0gSW5zcGVjdG9yUGFnZUFnZW50Ojpzb3VyY2VN
YXBVUkxGb3JSZXNvdXJjZShjYWNoZWRSZXNvdXJjZSk7CkBAIC0zMDUsNyArMzA5LDcgQEAgdm9p
ZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OndpbGxTZW5kUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIERvY3VtZW50TG8KICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpSZXNv
dXJjZVR5cGUgcmVzb3VyY2VUeXBlID0gSW5zcGVjdG9yUGFnZUFnZW50OjpyZXNvdXJjZVR5cGVK
c29uKHR5cGUpOwogCiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6Oklu
aXRpYXRvcj4gaW5pdGlhdG9yT2JqZWN0ID0gYnVpbGRJbml0aWF0b3JPYmplY3QobG9hZGVyLmZy
YW1lKCkgPyBsb2FkZXIuZnJhbWUoKS0+ZG9jdW1lbnQoKSA6IG51bGxwdHIpOwotICAgIG1fZnJv
bnRlbmREaXNwYXRjaGVyLT5yZXF1ZXN0V2lsbEJlU2VudChyZXF1ZXN0SWQsIG1fcGFnZUFnZW50
LT5mcmFtZUlkKGxvYWRlci5mcmFtZSgpKSwgbV9wYWdlQWdlbnQtPmxvYWRlcklkKCZsb2FkZXIp
LCBsb2FkZXIudXJsKCkuc3RyaW5nKCksIGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXF1ZXN0KHJl
cXVlc3QpLCB0aW1lc3RhbXAoKSwgaW5pdGlhdG9yT2JqZWN0LCBidWlsZE9iamVjdEZvclJlc291
cmNlUmVzcG9uc2UocmVkaXJlY3RSZXNwb25zZSwgJmxvYWRlciksIHR5cGUgIT0gSW5zcGVjdG9y
UGFnZUFnZW50OjpPdGhlclJlc291cmNlID8gJnJlc291cmNlVHlwZSA6IG51bGxwdHIpOworICAg
IG1fZnJvbnRlbmREaXNwYXRjaGVyLT5yZXF1ZXN0V2lsbEJlU2VudChyZXF1ZXN0SWQsIG1fcGFn
ZUFnZW50LT5mcmFtZUlkKGxvYWRlci5mcmFtZSgpKSwgbV9wYWdlQWdlbnQtPmxvYWRlcklkKCZs
b2FkZXIpLCBsb2FkZXIudXJsKCkuc3RyaW5nKCksIGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXF1
ZXN0KHJlcXVlc3QpLCB0aW1lc3RhbXAoKSwgaW5pdGlhdG9yT2JqZWN0LCBidWlsZE9iamVjdEZv
clJlc291cmNlUmVzcG9uc2UocmVkaXJlY3RSZXNwb25zZSwgbnVsbHB0ciksIHR5cGUgIT0gSW5z
cGVjdG9yUGFnZUFnZW50OjpPdGhlclJlc291cmNlID8gJnJlc291cmNlVHlwZSA6IG51bGxwdHIp
OwogfQogCiB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6bWFya1Jlc291cmNlQXNDYWNoZWQo
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQpAQCAtMzIyLDcgKzMyNiw3IEBAIHZvaWQgSW5zcGVj
dG9yTmV0d29ya0FnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBEb2N1bWVuCiAgICAgICAgIHJldHVybjsKIAogICAgIFN0cmluZyByZXF1ZXN0SWQgPSBJ
ZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChpZGVudGlmaWVyKTsKLSAgICBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVzcG9uc2U+IHJlc291cmNlUmVzcG9uc2UgPSBi
dWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UocmVzcG9uc2UsICZsb2FkZXIpOworICAgIFJl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpSZXNwb25zZT4gcmVzb3VyY2VSZXNw
b25zZSA9IGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25zZShyZXNwb25zZSwgcmVzb3VyY2VM
b2FkZXIpOwogCiAgICAgYm9vbCBpc05vdE1vZGlmaWVkID0gcmVzcG9uc2UuaHR0cFN0YXR1c0Nv
ZGUoKSA9PSAzMDQ7CiAKQEAgLTM5MCwxOCArMzk0LDE2IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29y
a0FnZW50OjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1l
bnRMCiAKICAgICBtX3Jlc291cmNlc0RhdGEtPm1heWJlRGVjb2RlRGF0YVRvQ29udGVudChyZXF1
ZXN0SWQpOwogCi0gICAgLy8gRklYTUU6IFRoZSBmaW5pc2hUaW1lIHRoYXQgaXMgcGFzc2VkIGlu
IGlzIGZyb20gdGhlIE5ldHdvcmtQcm9jZXNzIGFuZCBpcyBtb3JlIGFjY3VyYXRlLgotICAgIC8v
IEhvd2V2ZXIsIGFsbCBvdGhlciB0aW1lcyBwYXNzZWQgdG8gdGhlIEluc3BlY3RvciBhcmUgZ2Vu
ZXJhdGVkIGZyb20gdGhlIHdlYiBwcm9jZXNzLiBNaXhpbmcKLSAgICAvLyB0aW1lcyBmcm9tIGRp
ZmZlcmVudCBwcm9jZXNzZXMgY2FuIGNhdXNlIHRoZSBmaW5pc2ggdGltZSB0byBiZSBlYXJsaWVy
IHRoYW4gdGhlIHJlc3BvbnNlCi0gICAgLy8gcmVjZWl2ZWQgdGltZSBkdWUgdG8gaW50ZXItcHJv
Y2VzcyBjb21tdW5pY2F0aW9uIGxhZy4KLSAgICBmaW5pc2hUaW1lID0gdGltZXN0YW1wKCk7Cisg
ICAgZG91YmxlIGVsYXBzZWRGaW5pc2hUaW1lID0gdGltZXN0YW1wKCk7CisgICAgaWYgKGZpbmlz
aFRpbWUpCisgICAgICAgIGVsYXBzZWRGaW5pc2hUaW1lID0gbV9lbnZpcm9ubWVudC5leGVjdXRp
b25TdG9wd2F0Y2goKS0+ZWxhcHNlZFRpbWVTaW5jZU1vbm90b25pY1RpbWUoZmluaXNoVGltZSk7
CiAKICAgICBTdHJpbmcgc291cmNlTWFwcGluZ1VSTDsKICAgICBOZXR3b3JrUmVzb3VyY2VzRGF0
YTo6UmVzb3VyY2VEYXRhIGNvbnN0KiByZXNvdXJjZURhdGEgPSBtX3Jlc291cmNlc0RhdGEtPmRh
dGEocmVxdWVzdElkKTsKICAgICBpZiAocmVzb3VyY2VEYXRhICYmIHJlc291cmNlRGF0YS0+Y2Fj
aGVkUmVzb3VyY2UoKSkKICAgICAgICAgc291cmNlTWFwcGluZ1VSTCA9IEluc3BlY3RvclBhZ2VB
Z2VudDo6c291cmNlTWFwVVJMRm9yUmVzb3VyY2UocmVzb3VyY2VEYXRhLT5jYWNoZWRSZXNvdXJj
ZSgpKTsKIAotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5sb2FkaW5nRmluaXNoZWQocmVxdWVz
dElkLCBmaW5pc2hUaW1lLCAhc291cmNlTWFwcGluZ1VSTC5pc0VtcHR5KCkgPyAmc291cmNlTWFw
cGluZ1VSTCA6IG51bGxwdHIpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5sb2FkaW5nRmlu
aXNoZWQocmVxdWVzdElkLCBlbGFwc2VkRmluaXNoVGltZSwgIXNvdXJjZU1hcHBpbmdVUkwuaXNF
bXB0eSgpID8gJnNvdXJjZU1hcHBpbmdVUkwgOiBudWxscHRyKTsKIH0KIAogdm9pZCBJbnNwZWN0
b3JOZXR3b3JrQWdlbnQ6OmRpZEZhaWxMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
RG9jdW1lbnRMb2FkZXImIGxvYWRlciwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCkBAIC00
MzUsNyArNDM3LDcgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRpZExvYWRSZXNvdXJj
ZUZyb21NZW1vcnlDYWNoZShEb2N1bWVudExvYWRlciYgbG9hZGUKIAogICAgIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpJbml0aWF0b3I+IGluaXRpYXRvck9iamVjdCA9IGJ1
aWxkSW5pdGlhdG9yT2JqZWN0KGxvYWRlci5mcmFtZSgpID8gbG9hZGVyLmZyYW1lKCktPmRvY3Vt
ZW50KCkgOiBudWxscHRyKTsKIAotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5yZXF1ZXN0U2Vy
dmVkRnJvbU1lbW9yeUNhY2hlKHJlcXVlc3RJZCwgZnJhbWVJZCwgbG9hZGVySWQsIGxvYWRlci51
cmwoKS5zdHJpbmcoKSwgdGltZXN0YW1wKCksIGluaXRpYXRvck9iamVjdCwgYnVpbGRPYmplY3RG
b3JDYWNoZWRSZXNvdXJjZSgmcmVzb3VyY2UsICZsb2FkZXIpKTsKKyAgICBtX2Zyb250ZW5kRGlz
cGF0Y2hlci0+cmVxdWVzdFNlcnZlZEZyb21NZW1vcnlDYWNoZShyZXF1ZXN0SWQsIGZyYW1lSWQs
IGxvYWRlcklkLCBsb2FkZXIudXJsKCkuc3RyaW5nKCksIHRpbWVzdGFtcCgpLCBpbml0aWF0b3JP
YmplY3QsIGJ1aWxkT2JqZWN0Rm9yQ2FjaGVkUmVzb3VyY2UoJnJlc291cmNlKSk7CiB9CiAKIHZv
aWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpzZXRJbml0aWFsU2NyaXB0Q29udGVudCh1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5nKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCmluZGV4IGQzZGQ0
OGRlZTE4MTk1OWQwZTkwYzMxOWJmNmRkN2NmYWY0ZjM2ZWUuLmFmNTkxNDZjOTg1N2E1NzU4M2U0
MmQyNzU4NzA4YTM0ZmY0MzU3NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yTmV0d29ya0FnZW50LmgKQEAgLTUxLDYgKzUxLDcgQEAgY2xhc3MgSW5zcGVjdG9y
UGFnZUFnZW50OwogY2xhc3MgTmV0d29ya1Jlc291cmNlc0RhdGE7CiBjbGFzcyBSZXNvdXJjZUVy
cm9yOwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CitjbGFzcyBOZXR3b3JrTG9hZFRpbWluZzsKIGNs
YXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBUaHJl
YWRhYmxlTG9hZGVyQ2xpZW50OwpAQCAtMTE2LDYgKzExNywxMCBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIHZvaWQgZW5hYmxlKCk7CiAKKyAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0
d29yazo6UmVzb3VyY2VUaW1pbmc+IGJ1aWxkT2JqZWN0Rm9yVGltaW5nKGNvbnN0IE5ldHdvcmtM
b2FkVGltaW5nJiwgUmVzb3VyY2VMb2FkZXImKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6TmV0d29yazo6UmVzcG9uc2U+IGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25zZShj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXIqKTsKKyAgICBSZWY8SW5zcGVj
dG9yOjpQcm90b2NvbDo6TmV0d29yazo6Q2FjaGVkUmVzb3VyY2U+IGJ1aWxkT2JqZWN0Rm9yQ2Fj
aGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqKTsKKwogICAgIGRvdWJsZSB0aW1lc3RhbXAoKTsK
IAogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6Ok5ldHdvcmtGcm9udGVuZERpc3BhdGNo
ZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5jcHAKaW5kZXggMmFlMjQ5MGQyYTkzYWFkZmMxOWMyMzdlNTQwNWE2MWFkOTdl
YmE2ZS4uYTkzNGU0MWIzNDIxZjg5NjYzZjA2ODg5ZjI0YTM2NjEyZDU3NWNmYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCkBAIC00NjAsMjEgKzQ2MCwy
NiBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGRvdWJsZSBmaW5p
c2hUaW1lKQogICAgIFJlZjxTdWJyZXNvdXJjZUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7
CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IHByb3RlY3RSZXNvdXJj
ZShtX3Jlc291cmNlKTsKIAotICAgIGZpbmlzaFRpbWUgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2lu
Z1RpbWUoKTsKLSAgICBtX2xvYWRUaW1pbmcuc2V0UmVzcG9uc2VFbmQoZmluaXNoVGltZSk7Cisg
ICAgLy8gRklYTUU6IFRoZSBmaW5pc2hUaW1lIHRoYXQgaXMgcGFzc2VkIGluIGlzIGZyb20gdGhl
IE5ldHdvcmtQcm9jZXNzIGFuZCBpcyBtb3JlIGFjY3VyYXRlLgorICAgIC8vIEhvd2V2ZXIsIGFs
bCBvdGhlciBsb2FkIHRpbWVzIGFyZSBnZW5lcmF0ZWQgZnJvbSB0aGUgd2ViIHByb2Nlc3Mgb3Ig
b2Zmc2V0cy4KKyAgICAvLyBNaXhpbmcgdGltZXMgZnJvbSBkaWZmZXJlbnQgcHJvY2Vzc2VzIGNh
biBjYXVzZSB0aGUgZmluaXNoIHRpbWUgdG8gYmUgZWFybGllciB0aGFuCisgICAgLy8gdGhlIHJl
c3BvbnNlIHJlY2VpdmVkIHRpbWUgZHVlIHRvIGludGVyLXByb2Nlc3MgY29tbXVuaWNhdGlvbiBs
YWcuCisgICAgVU5VU0VEX1BBUkFNKGZpbmlzaFRpbWUpOworICAgIGRvdWJsZSByZXNwb25zZUVu
ZFRpbWUgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKKyAgICBtX2xvYWRUaW1pbmcu
c2V0UmVzcG9uc2VFbmQocmVzcG9uc2VFbmRUaW1lKTsKIAogICAgIGlmIChtX2RvY3VtZW50TG9h
ZGVyLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLmRvY3VtZW50KCkgJiYgUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5yZXNvdXJjZVRpbWluZ0VuYWJsZWQoKSkKICAgICAg
ICAgbV9kb2N1bWVudExvYWRlci0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXNvdXJjZVRpbWlu
Z0luZm9ybWF0aW9uKCkuYWRkUmVzb3VyY2VUaW1pbmcobV9yZXNvdXJjZSwgKm1fZG9jdW1lbnRM
b2FkZXItPmNhY2hlZFJlc291cmNlTG9hZGVyKCkuZG9jdW1lbnQoKSwgbV9yZXNvdXJjZS0+bG9h
ZGVyKCktPmxvYWRUaW1pbmcoKSk7CiAKICAgICBtX3N0YXRlID0gRmluaXNoaW5nOwotICAgIG1f
cmVzb3VyY2UtPnNldExvYWRGaW5pc2hUaW1lKGZpbmlzaFRpbWUpOworICAgIG1fcmVzb3VyY2Ut
PnNldExvYWRGaW5pc2hUaW1lKHJlc3BvbnNlRW5kVGltZSk7IC8vIEZJWE1FOiBVc2VycyBvZiB0
aGUgbG9hZEZpbmlzaFRpbWUgc2hvdWxkIHVzZSB0aGUgTG9hZFRpbWluZyBzdHJ1Y3QgaW5zdGVh
ZC4KICAgICBtX3Jlc291cmNlLT5maW5pc2hMb2FkaW5nKHJlc291cmNlRGF0YSgpKTsKIAogICAg
IGlmICh3YXNDYW5jZWxsZWQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fcmVzb3VyY2UtPmZp
bmlzaCgpOwogICAgIEFTU0VSVCghcmVhY2hlZFRlcm1pbmFsU3RhdGUoKSk7Ci0gICAgZGlkRmlu
aXNoTG9hZGluZ09uZVBhcnQoZmluaXNoVGltZSk7CisgICAgZGlkRmluaXNoTG9hZGluZ09uZVBh
cnQocmVzcG9uc2VFbmRUaW1lKTsKICAgICBub3RpZnlEb25lKCk7CiAgICAgaWYgKHJlYWNoZWRU
ZXJtaW5hbFN0YXRlKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0ZyYW1lUmVzb3VyY2VNYW5hZ2Vy
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRnJh
bWVSZXNvdXJjZU1hbmFnZXIuanMKaW5kZXggOTI4MzcwOGMxYzA2NGU2NWIzYzE1ZTgzYWM2OWU4
MzEwMGMzN2FhNC4uNzQzMjk0N2NhMmVhYWNmM2E3ZjRhOGFlNDAzOGFkNTNlMjU1ZDdiZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMv
RnJhbWVSZXNvdXJjZU1hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQ29udHJvbGxlcnMvRnJhbWVSZXNvdXJjZU1hbmFnZXIuanMKQEAgLTIzNiw3ICsy
MzYsNyBAQCBXZWJJbnNwZWN0b3IuRnJhbWVSZXNvdXJjZU1hbmFnZXIgPSBjbGFzcyBGcmFtZVJl
c291cmNlTWFuYWdlciBleHRlbmRzIFdlYkluc3BlYwogICAgICAgICB2YXIgcmVzcG9uc2UgPSBj
YWNoZWRSZXNvdXJjZVBheWxvYWQucmVzcG9uc2U7CiAgICAgICAgIHZhciByZXNvdXJjZSA9IHRo
aXMuX2FkZE5ld1Jlc291cmNlVG9GcmFtZShyZXF1ZXN0SWRlbnRpZmllciwgZnJhbWVJZGVudGlm
aWVyLCBsb2FkZXJJZGVudGlmaWVyLCBjYWNoZWRSZXNvdXJjZVBheWxvYWQudXJsLCBjYWNoZWRS
ZXNvdXJjZVBheWxvYWQudHlwZSwgIkdFVCIsIG51bGwsIG51bGwsIGVsYXBzZWRUaW1lLCBudWxs
LCBudWxsLCBpbml0aWF0b3JTb3VyY2VDb2RlTG9jYXRpb24pOwogICAgICAgICByZXNvdXJjZS5t
YXJrQXNDYWNoZWQoKTsKLSAgICAgICAgcmVzb3VyY2UudXBkYXRlRm9yUmVzcG9uc2UoY2FjaGVk
UmVzb3VyY2VQYXlsb2FkLnVybCwgcmVzcG9uc2UubWltZVR5cGUsIGNhY2hlZFJlc291cmNlUGF5
bG9hZC50eXBlLCByZXNwb25zZS5oZWFkZXJzLCByZXNwb25zZS5zdGF0dXMsIHJlc3BvbnNlLnN0
YXR1c1RleHQsIGVsYXBzZWRUaW1lKTsKKyAgICAgICAgcmVzb3VyY2UudXBkYXRlRm9yUmVzcG9u
c2UoY2FjaGVkUmVzb3VyY2VQYXlsb2FkLnVybCwgcmVzcG9uc2UubWltZVR5cGUsIGNhY2hlZFJl
c291cmNlUGF5bG9hZC50eXBlLCByZXNwb25zZS5oZWFkZXJzLCByZXNwb25zZS5zdGF0dXMsIHJl
c3BvbnNlLnN0YXR1c1RleHQsIGVsYXBzZWRUaW1lLCByZXNwb25zZS50aW1pbmcpOwogICAgICAg
ICByZXNvdXJjZS5pbmNyZWFzZVNpemUoY2FjaGVkUmVzb3VyY2VQYXlsb2FkLmJvZHlTaXplLCBl
bGFwc2VkVGltZSk7CiAgICAgICAgIHJlc291cmNlLmluY3JlYXNlVHJhbnNmZXJTaXplKGNhY2hl
ZFJlc291cmNlUGF5bG9hZC5ib2R5U2l6ZSk7CiAgICAgICAgIHJlc291cmNlLm1hcmtBc0Zpbmlz
aGVkKGVsYXBzZWRUaW1lKTsKQEAgLTI4OCw3ICsyODgsNyBAQCBXZWJJbnNwZWN0b3IuRnJhbWVS
ZXNvdXJjZU1hbmFnZXIgPSBjbGFzcyBGcmFtZVJlc291cmNlTWFuYWdlciBleHRlbmRzIFdlYklu
c3BlYwogICAgICAgICBpZiAocmVzcG9uc2UuZnJvbURpc2tDYWNoZSkKICAgICAgICAgICAgIHJl
c291cmNlLm1hcmtBc0NhY2hlZCgpOwogCi0gICAgICAgIHJlc291cmNlLnVwZGF0ZUZvclJlc3Bv
bnNlKHJlc3BvbnNlLnVybCwgcmVzcG9uc2UubWltZVR5cGUsIHR5cGUsIHJlc3BvbnNlLmhlYWRl
cnMsIHJlc3BvbnNlLnN0YXR1cywgcmVzcG9uc2Uuc3RhdHVzVGV4dCwgZWxhcHNlZFRpbWUpOwor
ICAgICAgICByZXNvdXJjZS51cGRhdGVGb3JSZXNwb25zZShyZXNwb25zZS51cmwsIHJlc3BvbnNl
Lm1pbWVUeXBlLCB0eXBlLCByZXNwb25zZS5oZWFkZXJzLCByZXNwb25zZS5zdGF0dXMsIHJlc3Bv
bnNlLnN0YXR1c1RleHQsIGVsYXBzZWRUaW1lLCByZXNwb25zZS50aW1pbmcpOwogICAgIH0KIAog
ICAgIHJlc291cmNlUmVxdWVzdERpZFJlY2VpdmVEYXRhKHJlcXVlc3RJZGVudGlmaWVyLCBkYXRh
TGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCwgdGltZXN0YW1wKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287127</attachid>
            <date>2016-08-26 11:31:26 -0700</date>
            <delta_ts>2016-08-26 13:47:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160095-20160826112925.patch</filename>
            <type>text/plain</type>
            <size>15784</size>
            <attacher name="Johan K. Jensen">jj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0OTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ODIxYzE0NjNjOTc4Y2I3YWExNzJkODk3ZmFiYmNjYTUyMDE0ZDIwLi5lMzc0YTRmNzA4NTJiMjlm
NzQ0ZGRmZDMwZGM0MTE4ZmQwYjVlY2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxNi0wOC0yNSAgSm9oYW4gSy4gSmVuc2VuICA8am9oYW5famVuc2VuQGFw
cGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBGcm9udGVuZCBzaG91bGQgaGF2ZSBh
Y2Nlc3MgdG8gUmVzb3VyY2UgVGltaW5nIGluZm9ybWF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjAwOTUKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWUgUmVzb3VyY2VUaW1pbmcgcHJvcGVy
dHkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvdG9jb2wvTmV0d29yay5qc29uOgorICAgICAg
ICBSZW5hbWUgbmF2aWdhdGlvblN0YXJ0IHRvIHN0YXJ0VGltZSBzbyBpdCdzIGFwcGxpY2FibGUK
KyAgICAgICAgZm9yIGFsbCByZXNvdXJjZXMgYW5kIG5vdCBqdXN0IHRoZSBtYWluIHJlc291cmNl
LgorCiAyMDE2LTA4LTI1ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkgc2hvdWxkIGdlbmVyYXRlIHBsYXRmb3Jt
IGluZGVwZW5kZW50IGZpbGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDBhODQxOTJhOTY1MDA4MmY2ZDNhYjljNjFhODg1MzEw
YjJiZTE4MTQuLjBkZDBlMzRjZTE3ZGI2ZTE3ZDE2MzdjNzk0OWNjOTI4NjIxZjJjOTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBA
IC0xLDUgKzEsMTggQEAKIDIwMTYtMDgtMjUgIEpvaGFuIEsuIEplbnNlbiAgPGpvaGFuX2plbnNl
bkBhcHBsZS5jb20+CiAKKyAgICAgICAgV2ViIEluc3BlY3RvcjogRnJvbnRlbmQgc2hvdWxkIGhh
dmUgYWNjZXNzIHRvIFJlc291cmNlIFRpbWluZyBpbmZvcm1hdGlvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwMDk1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG1ldGhvZCB0byBnZXQgZWxhcHNl
ZCB0aW1lIGZvciBhbnkgbW9ub3RvbmljIHRpbWUuCisgICAgICAgIFVzZWQgYnkgSW5zcGVjdG9y
TmV0d29ya0FnZW50LgorCisgICAgICAgICogd3RmL1N0b3B3YXRjaC5oOgorICAgICAgICAoV1RG
OjpTdG9wd2F0Y2g6OmVsYXBzZWRUaW1lU2luY2VNb25vdG9uaWNUaW1lKToKKworMjAxNi0wOC0y
NSAgSm9oYW4gSy4gSmVuc2VuICA8am9oYW5famVuc2VuQGFwcGxlLmNvbT4KKwogICAgICAgICBE
b24ndCBzdG9yZSBuZXR3b3JrTG9hZFRpbWluZyBpbiB0aGUgZGlzayBjYWNoZQogICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxMTYxCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCAxODBjODk5MjI0MzE3ZDY3ODQ1Yjk0NTk0ODAxNzY2YWJmMmE0YzVjLi40ZDBjYmY0MjQy
MzU0NjBmNjQ2ODBiMzZlZjE1NWJlZTcwZWNjYjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYg
QEAKKzIwMTYtMDgtMjUgIEpvaGFuIEsuIEplbnNlbiAgPGpvaGFuX2plbnNlbkBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogRnJvbnRlbmQgc2hvdWxkIGhhdmUgYWNjZXNzIHRv
IFJlc291cmNlIFRpbWluZyBpbmZvcm1hdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwMDk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgU2hvdyBjb3JyZWN0IGluZm9ybWF0aW9uIHdpdGggUmVzb3Vy
Y2UgVGltaW5nIGluZm9ybWF0aW9uCisgICAgICAgIGZyb20gUmVzb3VyY2VMb2FkZXIgcmF0aGVy
IHRoYW4gRG9jdW1lbnRMb2FkZXIuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBmcm9udGVuZCBk
b2Vzbid0IHVzZSB0aGUgdGltaW5nIGRhdGEgeWV0LgorCisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3Rvck5ldHdvcmtBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3
b3JrQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yVGltaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvck5ldHdvcmtBZ2VudDo6YnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNlKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6YnVpbGRPYmplY3RGb3JDYWNoZWRS
ZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OndpbGxT
ZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRp
ZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdl
bnQ6OmRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpi
dWlsZE9iamVjdEZvclRpbWluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpidWlsZE9i
amVjdEZvclJlc291cmNlUmVzcG9uc2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6YnVp
bGRPYmplY3RGb3JDYWNoZWRSZXNvdXJjZSk6IERlbGV0ZWQuCisgICAgICAgIFVzZSBSZXNvdXJj
ZUxvYWRlciBpbnN0ZWFkIG9mIERvY3VtZW50TG9hZGVyIHRvIGdldCBSZXNvdXJjZSBUaW1pbmcg
aW5mb3JtYXRpb24uCisgICAgICAgIE1vdmUgZnVuY3Rpb25zIHRvIG1lbWJlciBmdW5jdGlvbnMg
dG8gYWNjZXNzIHRoZSBleGVjdXRpb25TdG9wV2F0Y2guCisKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIFVzZSB0aGUg
bG9hZCB0aW1pbmcgZmluaXNoVGltZSBhbmQgY29udmVydCB0byBlbGFwc2VkIHRpbWUgZm9yIGZy
b250ZW5kLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oOgor
ICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIFBhc3MgdGhl
IHdlYiBwcm9jZXNzIGxvYWQgdGltaW5nIG9uIHRvIHRoZSBpbnNwZWN0b3IuCisKIDIwMTYtMDgt
MjUgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSRUdSRVNTSU9OIChyMjAzMzc4KTogW2lPU10gVGhlIFBERiBpbWFnZSBpcyByZW5kZXJlZCBz
dHJldGNoZWQgaWYgYSBzdWIgaW1hZ2Ugb2YgaXQgaXMgY2FjaGVkIGZpcnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL05ldHdvcmsuanNvbiBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvTmV0d29yay5qc29uCmlu
ZGV4IGUzMTdmODBlNzQ1ODNiZTIzNGZhYTIxODdkY2RhOTBmMjc5Nzk4MmQuLjIzMGE4YzAxYjYz
MTQ1YjU4ODg1ZTlhYmY4ZWI1NzJhMmQ1MWMyMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvTmV0d29yay5qc29uCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvTmV0d29yay5qc29uCkBAIC0zMyw3ICszMyw3
IEBACiAgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICAgICAgImRlc2NyaXB0
aW9uIjogIlRpbWluZyBpbmZvcm1hdGlvbiBmb3IgdGhlIHJlcXVlc3QuIiwKICAgICAgICAgICAg
ICJwcm9wZXJ0aWVzIjogWwotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibmF2aWdhdGlvblN0
YXJ0IiwgInR5cGUiOiAibnVtYmVyIiwgImRlc2NyaXB0aW9uIjogIlRpbWluZydzIG5hdmlnYXRp
b25TdGFydCBpcyBhIGJhc2VsaW5lIGluIHNlY29uZHMsIHdoaWxlIHRoZSBvdGhlciBudW1iZXJz
IGFyZSB0aWNrcyBpbiBtaWxsaXNlY29uZHMgcmVsYXRpdmVseSB0byB0aGlzIG5hdmlnYXRpb25T
dGFydC4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzdGFydFRpbWUiLCAidHlwZSI6
ICJudW1iZXIiLCAiZGVzY3JpcHRpb24iOiAiVGltaW5nJ3Mgc3RhcnRUaW1lIGlzIGEgYmFzZWxp
bmUgaW4gc2Vjb25kcywgd2hpbGUgdGhlIG90aGVyIG51bWJlcnMgYXJlIHRpY2tzIGluIG1pbGxp
c2Vjb25kcyByZWxhdGl2ZWx5IHRvIHRoaXMuIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAiZG9tYWluTG9va3VwU3RhcnQiLCAidHlwZSI6ICJudW1iZXIiLCAiZGVzY3JpcHRpb24iOiAi
U3RhcnRlZCBETlMgYWRkcmVzcyByZXNvbHZlLiIgfSwKICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogImRvbWFpbkxvb2t1cEVuZCIsICJ0eXBlIjogIm51bWJlciIsICJkZXNjcmlwdGlvbiI6ICJG
aW5pc2hlZCBETlMgYWRkcmVzcyByZXNvbHZlLiIgfSwKICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogImNvbm5lY3RTdGFydCIsICJ0eXBlIjogIm51bWJlciIsICJkZXNjcmlwdGlvbiI6ICJTdGFy
dGVkIGNvbm5lY3RpbmcgdG8gdGhlIHJlbW90ZSBob3N0LiIgfSwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL1N0b3B3YXRjaC5oIGIvU291cmNlL1dURi93dGYvU3RvcHdhdGNoLmgKaW5kZXgg
NWZiMjE1ZDM3M2EwNWFjY2RkMjU5NDI5OTk2YTA0ODM1MjFhMGM0ZC4uMGI4MzZjYzZhYjA5ODgz
ZTBjYmY3ZGI2ZjgzNGNjY2Y2N2Q0ZmNkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvU3Rv
cHdhdGNoLmgKKysrIGIvU291cmNlL1dURi93dGYvU3RvcHdhdGNoLmgKQEAgLTQzLDYgKzQzLDcg
QEAgcHVibGljOgogICAgIHZvaWQgc3RvcCgpOwogCiAgICAgZG91YmxlIGVsYXBzZWRUaW1lKCk7
CisgICAgZG91YmxlIGVsYXBzZWRUaW1lU2luY2VNb25vdG9uaWNUaW1lKGRvdWJsZSk7CiAKICAg
ICBib29sIGlzQWN0aXZlKCkgY29uc3QgeyByZXR1cm4gIXN0ZDo6aXNuYW4obV9sYXN0U3RhcnRU
aW1lKTsgfQogcHJpdmF0ZToKQEAgLTgxLDYgKzgyLDE0IEBAIGlubGluZSBkb3VibGUgU3RvcHdh
dGNoOjplbGFwc2VkVGltZSgpCiAgICAgcmV0dXJuIG1fZWxhcHNlZFRpbWUgKyAobW9ub3Rvbmlj
YWxseUluY3JlYXNpbmdUaW1lKCkgLSBtX2xhc3RTdGFydFRpbWUpOwogfQogCitpbmxpbmUgZG91
YmxlIFN0b3B3YXRjaDo6ZWxhcHNlZFRpbWVTaW5jZU1vbm90b25pY1RpbWUoZG91YmxlIG1vbm90
b25pY1RpbWUpCit7CisgICAgaWYgKCFpc0FjdGl2ZSgpKQorICAgICAgICByZXR1cm4gbV9lbGFw
c2VkVGltZTsKKworICAgIHJldHVybiBtX2VsYXBzZWRUaW1lICsgKG1vbm90b25pY1RpbWUgLSBt
X2xhc3RTdGFydFRpbWUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpT
dG9wd2F0Y2g7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
TmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JOZXR3
b3JrQWdlbnQuY3BwCmluZGV4IDllMDMwYzlmMGE2MzA3YTdhZDUzOGU1NTU2ODhmYjlhNjMxZTAx
MGEuLmYwOWY0OWJkYTM4N2I2ZDUyNjZlY2RmNDYyZDI5ZmVjODkyNTAyOTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCkBAIC0x
ODQsMTAgKzE4NCwxMyBAQCBzdGF0aWMgUmVmPEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RG
b3JIZWFkZXJzKGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMpCiAgICAgcmV0dXJuIGhlYWRl
cnNPYmplY3Q7CiB9CiAKLXN0YXRpYyBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6
UmVzb3VyY2VUaW1pbmc+IGJ1aWxkT2JqZWN0Rm9yVGltaW5nKGNvbnN0IE5ldHdvcmtMb2FkVGlt
aW5nJiB0aW1pbmcsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCitSZWY8SW5zcGVjdG9yOjpQcm90
b2NvbDo6TmV0d29yazo6UmVzb3VyY2VUaW1pbmc+IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6YnVp
bGRPYmplY3RGb3JUaW1pbmcoY29uc3QgTmV0d29ya0xvYWRUaW1pbmcmIHRpbWluZywgUmVzb3Vy
Y2VMb2FkZXImIHJlc291cmNlTG9hZGVyKQogeworICAgIGRvdWJsZSBtb25vdG9uaWNUaW1lID0g
cmVzb3VyY2VMb2FkZXIubG9hZFRpbWluZygpLnN0YXJ0VGltZSgpOworICAgIGRvdWJsZSBzdGFy
dFRpbWVJbkluc3BlY3RvciA9IG1fZW52aXJvbm1lbnQuZXhlY3V0aW9uU3RvcHdhdGNoKCktPmVs
YXBzZWRUaW1lU2luY2VNb25vdG9uaWNUaW1lKG1vbm90b25pY1RpbWUpOworCiAgICAgcmV0dXJu
IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJlc291cmNlVGltaW5nOjpjcmVhdGUoKQot
ICAgICAgICAuc2V0TmF2aWdhdGlvblN0YXJ0KGxvYWRlci0+dGltaW5nKCkuc3RhcnRUaW1lKCkp
CisgICAgICAgIC5zZXRTdGFydFRpbWUoc3RhcnRUaW1lSW5JbnNwZWN0b3IpCiAgICAgICAgIC5z
ZXREb21haW5Mb29rdXBTdGFydCh0aW1pbmcuZG9tYWluTG9va3VwU3RhcnQpCiAgICAgICAgIC5z
ZXREb21haW5Mb29rdXBFbmQodGltaW5nLmRvbWFpbkxvb2t1cEVuZCkKICAgICAgICAgLnNldENv
bm5lY3RTdGFydCh0aW1pbmcuY29ubmVjdFN0YXJ0KQpAQCAtMjEzLDcgKzIxNiw3IEBAIHN0YXRp
YyBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVxdWVzdD4gYnVpbGRPYmplY3RG
b3JSZXNvdXJjZVJlcXVlc3QoCiAgICAgcmV0dXJuIHJlcXVlc3RPYmplY3Q7CiB9CiAKLXN0YXRp
YyBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVzcG9uc2U+IGJ1aWxkT2Jq
ZWN0Rm9yUmVzb3VyY2VSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
RG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKK1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3
b3JrOjpSZXNwb25zZT4gSW5zcGVjdG9yTmV0d29ya0FnZW50OjpidWlsZE9iamVjdEZvclJlc291
cmNlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9h
ZGVyKiByZXNvdXJjZUxvYWRlcikKIHsKICAgICBpZiAocmVzcG9uc2UuaXNOdWxsKCkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwpAQCAtMjMwLDEyICsyMzMsMTMgQEAgc3RhdGljIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpSZXNwb25zZT4gYnVpbGRPYmplY3RGb3JSZXNv
dXJjZVJlc3AKICAgICAgICAgLnJlbGVhc2UoKTsKIAogICAgIHJlc3BvbnNlT2JqZWN0LT5zZXRG
cm9tRGlza0NhY2hlKHJlc3BvbnNlLnNvdXJjZSgpID09IFJlc291cmNlUmVzcG9uc2U6OlNvdXJj
ZTo6RGlza0NhY2hlIHx8IHJlc3BvbnNlLnNvdXJjZSgpID09IFJlc291cmNlUmVzcG9uc2U6OlNv
dXJjZTo6RGlza0NhY2hlQWZ0ZXJWYWxpZGF0aW9uKTsKLSAgICByZXNwb25zZU9iamVjdC0+c2V0
VGltaW5nKGJ1aWxkT2JqZWN0Rm9yVGltaW5nKHJlc3BvbnNlLm5ldHdvcmtMb2FkVGltaW5nKCks
IGxvYWRlcikpOworICAgIGlmIChyZXNvdXJjZUxvYWRlcikKKyAgICAgICAgcmVzcG9uc2VPYmpl
Y3QtPnNldFRpbWluZyhidWlsZE9iamVjdEZvclRpbWluZyhyZXNwb25zZS5uZXR3b3JrTG9hZFRp
bWluZygpLCAqcmVzb3VyY2VMb2FkZXIpKTsKIAogICAgIHJldHVybiBXVEZNb3ZlKHJlc3BvbnNl
T2JqZWN0KTsKIH0KIAotc3RhdGljIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpD
YWNoZWRSZXNvdXJjZT4gYnVpbGRPYmplY3RGb3JDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJj
ZSogY2FjaGVkUmVzb3VyY2UsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCitSZWY8SW5zcGVjdG9y
OjpQcm90b2NvbDo6TmV0d29yazo6Q2FjaGVkUmVzb3VyY2U+IEluc3BlY3Rvck5ldHdvcmtBZ2Vu
dDo6YnVpbGRPYmplY3RGb3JDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVz
b3VyY2UpCiB7CiAgICAgYXV0byByZXNvdXJjZU9iamVjdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6
Ok5ldHdvcms6OkNhY2hlZFJlc291cmNlOjpjcmVhdGUoKQogICAgICAgICAuc2V0VXJsKGNhY2hl
ZFJlc291cmNlLT51cmwoKSkKQEAgLTI0Myw3ICsyNDcsNyBAQCBzdGF0aWMgUmVmPEluc3BlY3Rv
cjo6UHJvdG9jb2w6Ok5ldHdvcms6OkNhY2hlZFJlc291cmNlPiBidWlsZE9iamVjdEZvckNhY2hl
ZFJlcwogICAgICAgICAuc2V0Qm9keVNpemUoY2FjaGVkUmVzb3VyY2UtPmVuY29kZWRTaXplKCkp
CiAgICAgICAgIC5yZWxlYXNlKCk7CiAKLSAgICBhdXRvIHJlc291cmNlUmVzcG9uc2UgPSBidWls
ZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UoY2FjaGVkUmVzb3VyY2UtPnJlc3BvbnNlKCksIGxv
YWRlcik7CisgICAgYXV0byByZXNvdXJjZVJlc3BvbnNlID0gYnVpbGRPYmplY3RGb3JSZXNvdXJj
ZVJlc3BvbnNlKGNhY2hlZFJlc291cmNlLT5yZXNwb25zZSgpLCBjYWNoZWRSZXNvdXJjZS0+bG9h
ZGVyKCkpOwogICAgIHJlc291cmNlT2JqZWN0LT5zZXRSZXNwb25zZShXVEZNb3ZlKHJlc291cmNl
UmVzcG9uc2UpKTsKIAogICAgIFN0cmluZyBzb3VyY2VNYXBwaW5nVVJMID0gSW5zcGVjdG9yUGFn
ZUFnZW50Ojpzb3VyY2VNYXBVUkxGb3JSZXNvdXJjZShjYWNoZWRSZXNvdXJjZSk7CkBAIC0zMDUs
NyArMzA5LDcgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OndpbGxTZW5kUmVxdWVzdCh1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG8KICAgICBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpQYWdlOjpSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlID0gSW5zcGVjdG9yUGFnZUFnZW50
OjpyZXNvdXJjZVR5cGVKc29uKHR5cGUpOwogCiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6Ok5ldHdvcms6OkluaXRpYXRvcj4gaW5pdGlhdG9yT2JqZWN0ID0gYnVpbGRJbml0aWF0b3JP
YmplY3QobG9hZGVyLmZyYW1lKCkgPyBsb2FkZXIuZnJhbWUoKS0+ZG9jdW1lbnQoKSA6IG51bGxw
dHIpOwotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5yZXF1ZXN0V2lsbEJlU2VudChyZXF1ZXN0
SWQsIG1fcGFnZUFnZW50LT5mcmFtZUlkKGxvYWRlci5mcmFtZSgpKSwgbV9wYWdlQWdlbnQtPmxv
YWRlcklkKCZsb2FkZXIpLCBsb2FkZXIudXJsKCkuc3RyaW5nKCksIGJ1aWxkT2JqZWN0Rm9yUmVz
b3VyY2VSZXF1ZXN0KHJlcXVlc3QpLCB0aW1lc3RhbXAoKSwgaW5pdGlhdG9yT2JqZWN0LCBidWls
ZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UocmVkaXJlY3RSZXNwb25zZSwgJmxvYWRlciksIHR5
cGUgIT0gSW5zcGVjdG9yUGFnZUFnZW50OjpPdGhlclJlc291cmNlID8gJnJlc291cmNlVHlwZSA6
IG51bGxwdHIpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5yZXF1ZXN0V2lsbEJlU2VudChy
ZXF1ZXN0SWQsIG1fcGFnZUFnZW50LT5mcmFtZUlkKGxvYWRlci5mcmFtZSgpKSwgbV9wYWdlQWdl
bnQtPmxvYWRlcklkKCZsb2FkZXIpLCBsb2FkZXIudXJsKCkuc3RyaW5nKCksIGJ1aWxkT2JqZWN0
Rm9yUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpLCB0aW1lc3RhbXAoKSwgaW5pdGlhdG9yT2JqZWN0
LCBidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UocmVkaXJlY3RSZXNwb25zZSwgbnVsbHB0
ciksIHR5cGUgIT0gSW5zcGVjdG9yUGFnZUFnZW50OjpPdGhlclJlc291cmNlID8gJnJlc291cmNl
VHlwZSA6IG51bGxwdHIpOwogfQogCiB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6bWFya1Jl
c291cmNlQXNDYWNoZWQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQpAQCAtMzIyLDcgKzMyNiw3
IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVuCiAgICAgICAgIHJldHVybjsKIAogICAgIFN0cmlu
ZyByZXF1ZXN0SWQgPSBJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChpZGVudGlmaWVyKTsK
LSAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVzcG9uc2U+IHJlc291
cmNlUmVzcG9uc2UgPSBidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UocmVzcG9uc2UsICZs
b2FkZXIpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpSZXNwb25z
ZT4gcmVzb3VyY2VSZXNwb25zZSA9IGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25zZShyZXNw
b25zZSwgcmVzb3VyY2VMb2FkZXIpOwogCiAgICAgYm9vbCBpc05vdE1vZGlmaWVkID0gcmVzcG9u
c2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAzMDQ7CiAKQEAgLTM5MCwxOCArMzk0LDE0IEBAIHZvaWQg
SW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgRG9jdW1lbnRMCiAKICAgICBtX3Jlc291cmNlc0RhdGEtPm1heWJlRGVjb2RlRGF0
YVRvQ29udGVudChyZXF1ZXN0SWQpOwogCi0gICAgLy8gRklYTUU6IFRoZSBmaW5pc2hUaW1lIHRo
YXQgaXMgcGFzc2VkIGluIGlzIGZyb20gdGhlIE5ldHdvcmtQcm9jZXNzIGFuZCBpcyBtb3JlIGFj
Y3VyYXRlLgotICAgIC8vIEhvd2V2ZXIsIGFsbCBvdGhlciB0aW1lcyBwYXNzZWQgdG8gdGhlIElu
c3BlY3RvciBhcmUgZ2VuZXJhdGVkIGZyb20gdGhlIHdlYiBwcm9jZXNzLiBNaXhpbmcKLSAgICAv
LyB0aW1lcyBmcm9tIGRpZmZlcmVudCBwcm9jZXNzZXMgY2FuIGNhdXNlIHRoZSBmaW5pc2ggdGlt
ZSB0byBiZSBlYXJsaWVyIHRoYW4gdGhlIHJlc3BvbnNlCi0gICAgLy8gcmVjZWl2ZWQgdGltZSBk
dWUgdG8gaW50ZXItcHJvY2VzcyBjb21tdW5pY2F0aW9uIGxhZy4KLSAgICBmaW5pc2hUaW1lID0g
dGltZXN0YW1wKCk7CisgICAgZG91YmxlIGVsYXBzZWRGaW5pc2hUaW1lID0gZmluaXNoVGltZSA/
IG1fZW52aXJvbm1lbnQuZXhlY3V0aW9uU3RvcHdhdGNoKCktPmVsYXBzZWRUaW1lU2luY2VNb25v
dG9uaWNUaW1lKGZpbmlzaFRpbWUpIDogdGltZXN0YW1wKCk7CiAKICAgICBTdHJpbmcgc291cmNl
TWFwcGluZ1VSTDsKICAgICBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhIGNvbnN0
KiByZXNvdXJjZURhdGEgPSBtX3Jlc291cmNlc0RhdGEtPmRhdGEocmVxdWVzdElkKTsKICAgICBp
ZiAocmVzb3VyY2VEYXRhICYmIHJlc291cmNlRGF0YS0+Y2FjaGVkUmVzb3VyY2UoKSkKICAgICAg
ICAgc291cmNlTWFwcGluZ1VSTCA9IEluc3BlY3RvclBhZ2VBZ2VudDo6c291cmNlTWFwVVJMRm9y
UmVzb3VyY2UocmVzb3VyY2VEYXRhLT5jYWNoZWRSZXNvdXJjZSgpKTsKIAotICAgIG1fZnJvbnRl
bmREaXNwYXRjaGVyLT5sb2FkaW5nRmluaXNoZWQocmVxdWVzdElkLCBmaW5pc2hUaW1lLCAhc291
cmNlTWFwcGluZ1VSTC5pc0VtcHR5KCkgPyAmc291cmNlTWFwcGluZ1VSTCA6IG51bGxwdHIpOwor
ICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5sb2FkaW5nRmluaXNoZWQocmVxdWVzdElkLCBlbGFw
c2VkRmluaXNoVGltZSwgIXNvdXJjZU1hcHBpbmdVUkwuaXNFbXB0eSgpID8gJnNvdXJjZU1hcHBp
bmdVUkwgOiBudWxscHRyKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRpZEZh
aWxMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXImIGxvYWRl
ciwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCkBAIC00MzUsNyArNDM1LDcgQEAgdm9pZCBJ
bnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShEb2N1
bWVudExvYWRlciYgbG9hZGUKIAogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3
b3JrOjpJbml0aWF0b3I+IGluaXRpYXRvck9iamVjdCA9IGJ1aWxkSW5pdGlhdG9yT2JqZWN0KGxv
YWRlci5mcmFtZSgpID8gbG9hZGVyLmZyYW1lKCktPmRvY3VtZW50KCkgOiBudWxscHRyKTsKIAot
ICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5yZXF1ZXN0U2VydmVkRnJvbU1lbW9yeUNhY2hlKHJl
cXVlc3RJZCwgZnJhbWVJZCwgbG9hZGVySWQsIGxvYWRlci51cmwoKS5zdHJpbmcoKSwgdGltZXN0
YW1wKCksIGluaXRpYXRvck9iamVjdCwgYnVpbGRPYmplY3RGb3JDYWNoZWRSZXNvdXJjZSgmcmVz
b3VyY2UsICZsb2FkZXIpKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVxdWVzdFNlcnZl
ZEZyb21NZW1vcnlDYWNoZShyZXF1ZXN0SWQsIGZyYW1lSWQsIGxvYWRlcklkLCBsb2FkZXIudXJs
KCkuc3RyaW5nKCksIHRpbWVzdGFtcCgpLCBpbml0aWF0b3JPYmplY3QsIGJ1aWxkT2JqZWN0Rm9y
Q2FjaGVkUmVzb3VyY2UoJnJlc291cmNlKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yTmV0d29ya0Fn
ZW50OjpzZXRJbml0aWFsU2NyaXB0Q29udGVudCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgc291cmNlU3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCmluZGV4IGQzZGQ0OGRlZTE4MTk1OWQwZTkwYzMxOWJm
NmRkN2NmYWY0ZjM2ZWUuLjUzNGNlZjczMDQ0ZTg1YjI2OWM0OGYyZDVlMzgyOGI4OGViYzhlMDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JOZXR3b3JrQWdl
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTmV0d29ya0FnZW50
LmgKQEAgLTQ4LDYgKzQ4LDcgQEAgY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBEb2N1bWVu
dDsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3MgSW5zcGVjdG9yUGFnZUFnZW50OworY2xh
c3MgTmV0d29ya0xvYWRUaW1pbmc7CiBjbGFzcyBOZXR3b3JrUmVzb3VyY2VzRGF0YTsKIGNsYXNz
IFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKQEAgLTExNiw2ICsxMTcsMTAg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGVuYWJsZSgpOwogCisgICAgUmVmPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJlc291cmNlVGltaW5nPiBidWlsZE9iamVjdEZvclRp
bWluZyhjb25zdCBOZXR3b3JrTG9hZFRpbWluZyYsIFJlc291cmNlTG9hZGVyJik7CisgICAgUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJlc3BvbnNlPiBidWlsZE9iamVjdEZv
clJlc291cmNlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVy
Kik7CisgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OkNhY2hlZFJlc291cmNl
PiBidWlsZE9iamVjdEZvckNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlKik7CisKICAgICBk
b3VibGUgdGltZXN0YW1wKCk7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpOZXR3
b3JrRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDJhZTI0OTBkMmE5M2FhZGZj
MTljMjM3ZTU0MDVhNjFhZDk3ZWJhNmUuLmE5MzRlNDFiMzQyMWY4OTY2M2YwNjg4OWYyNGEzNjYx
MmQ1NzVjZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNw
cApAQCAtNDYwLDIxICs0NjAsMjYgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNo
TG9hZGluZyhkb3VibGUgZmluaXNoVGltZSkKICAgICBSZWY8U3VicmVzb3VyY2VMb2FkZXI+IHBy
b3RlY3RlZFRoaXMoKnRoaXMpOwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291
cmNlPiBwcm90ZWN0UmVzb3VyY2UobV9yZXNvdXJjZSk7CiAKLSAgICBmaW5pc2hUaW1lID0gbW9u
b3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7Ci0gICAgbV9sb2FkVGltaW5nLnNldFJlc3BvbnNl
RW5kKGZpbmlzaFRpbWUpOworICAgIC8vIEZJWE1FOiBUaGUgZmluaXNoVGltZSB0aGF0IGlzIHBh
c3NlZCBpbiBpcyBmcm9tIHRoZSBOZXR3b3JrUHJvY2VzcyBhbmQgaXMgbW9yZSBhY2N1cmF0ZS4K
KyAgICAvLyBIb3dldmVyLCBhbGwgb3RoZXIgbG9hZCB0aW1lcyBhcmUgZ2VuZXJhdGVkIGZyb20g
dGhlIHdlYiBwcm9jZXNzIG9yIG9mZnNldHMuCisgICAgLy8gTWl4aW5nIHRpbWVzIGZyb20gZGlm
ZmVyZW50IHByb2Nlc3NlcyBjYW4gY2F1c2UgdGhlIGZpbmlzaCB0aW1lIHRvIGJlIGVhcmxpZXIg
dGhhbgorICAgIC8vIHRoZSByZXNwb25zZSByZWNlaXZlZCB0aW1lIGR1ZSB0byBpbnRlci1wcm9j
ZXNzIGNvbW11bmljYXRpb24gbGFnLgorICAgIFVOVVNFRF9QQVJBTShmaW5pc2hUaW1lKTsKKyAg
ICBkb3VibGUgcmVzcG9uc2VFbmRUaW1lID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7
CisgICAgbV9sb2FkVGltaW5nLnNldFJlc3BvbnNlRW5kKHJlc3BvbnNlRW5kVGltZSk7CiAKICAg
ICBpZiAobV9kb2N1bWVudExvYWRlci0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5kb2N1bWVudCgp
ICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkucmVzb3VyY2VUaW1p
bmdFbmFibGVkKCkpCiAgICAgICAgIG1fZG9jdW1lbnRMb2FkZXItPmNhY2hlZFJlc291cmNlTG9h
ZGVyKCkucmVzb3VyY2VUaW1pbmdJbmZvcm1hdGlvbigpLmFkZFJlc291cmNlVGltaW5nKG1fcmVz
b3VyY2UsICptX2RvY3VtZW50TG9hZGVyLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLmRvY3VtZW50
KCksIG1fcmVzb3VyY2UtPmxvYWRlcigpLT5sb2FkVGltaW5nKCkpOwogCiAgICAgbV9zdGF0ZSA9
IEZpbmlzaGluZzsKLSAgICBtX3Jlc291cmNlLT5zZXRMb2FkRmluaXNoVGltZShmaW5pc2hUaW1l
KTsKKyAgICBtX3Jlc291cmNlLT5zZXRMb2FkRmluaXNoVGltZShyZXNwb25zZUVuZFRpbWUpOyAv
LyBGSVhNRTogVXNlcnMgb2YgdGhlIGxvYWRGaW5pc2hUaW1lIHNob3VsZCB1c2UgdGhlIExvYWRU
aW1pbmcgc3RydWN0IGluc3RlYWQuCiAgICAgbV9yZXNvdXJjZS0+ZmluaXNoTG9hZGluZyhyZXNv
dXJjZURhdGEoKSk7CiAKICAgICBpZiAod2FzQ2FuY2VsbGVkKCkpCiAgICAgICAgIHJldHVybjsK
ICAgICBtX3Jlc291cmNlLT5maW5pc2goKTsKICAgICBBU1NFUlQoIXJlYWNoZWRUZXJtaW5hbFN0
YXRlKCkpOwotICAgIGRpZEZpbmlzaExvYWRpbmdPbmVQYXJ0KGZpbmlzaFRpbWUpOworICAgIGRp
ZEZpbmlzaExvYWRpbmdPbmVQYXJ0KHJlc3BvbnNlRW5kVGltZSk7CiAgICAgbm90aWZ5RG9uZSgp
OwogICAgIGlmIChyZWFjaGVkVGVybWluYWxTdGF0ZSgpKQogICAgICAgICByZXR1cm47Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287140</attachid>
            <date>2016-08-26 13:47:36 -0700</date>
            <delta_ts>2016-08-26 17:31:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160095-20160826134532.patch</filename>
            <type>text/plain</type>
            <size>15570</size>
            <attacher name="Johan K. Jensen">jj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1MDMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
ODZkYWY1ZjRjNTFiZjYzN2EyZWQyOTUzNmZlOGQ4ZGNiMWY1YTEzLi5iMTdlOGFmZWZlMTA4OGM0
N2EzYmMyNTdmMWM4M2M0NzUxODEwZDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxNi0wOC0yNiAgSm9oYW4gSy4gSmVuc2VuICA8am9oYW5famVuc2VuQGFw
cGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBGcm9udGVuZCBzaG91bGQgaGF2ZSBh
Y2Nlc3MgdG8gUmVzb3VyY2UgVGltaW5nIGluZm9ybWF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjAwOTUKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWUgUmVzb3VyY2VUaW1pbmcgcHJvcGVy
dHkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvdG9jb2wvTmV0d29yay5qc29uOgorICAgICAg
ICBSZW5hbWUgbmF2aWdhdGlvblN0YXJ0IHRvIHN0YXJ0VGltZSBzbyBpdCdzIGFwcGxpY2FibGUK
KyAgICAgICAgZm9yIGFsbCByZXNvdXJjZXMgYW5kIG5vdCBqdXN0IHRoZSBtYWluIHJlc291cmNl
LgorCiAyMDE2LTA4LTI2ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgog
CiAgICAgICAgIFtFUzZdIG5ld1Byb21pc2VDYXBhYmlsaXRpZXMgc2hvdWxkIGNoZWNrIHRoZSBn
aXZlbiBhcmd1bWVudCBpcyBjb25zdHJ1Y3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA3OWI5MjY5MDliOTNkMWJlNDFiZTky
OGUxM2ZjZjBlZjhjZDM1NmVmLi45Y2RjMTAzMzM5MGE1N2JmZjZiMWYyYTJmMzc1ZDdhMjE2OTY4
YWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE2LTA4LTI2ICBKb2hhbiBLLiBKZW5zZW4gIDxq
b2hhbl9qZW5zZW5AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEZyb250ZW5k
IHNob3VsZCBoYXZlIGFjY2VzcyB0byBSZXNvdXJjZSBUaW1pbmcgaW5mb3JtYXRpb24KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDA5NQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBtZXRob2QgdG8g
Z2V0IGVsYXBzZWQgdGltZSBmb3IgYW55IG1vbm90b25pYyB0aW1lLgorICAgICAgICBVc2VkIGJ5
IEluc3BlY3Rvck5ldHdvcmtBZ2VudC4KKworICAgICAgICAqIHd0Zi9TdG9wd2F0Y2guaDoKKyAg
ICAgICAgKFdURjo6U3RvcHdhdGNoOjplbGFwc2VkVGltZVNpbmNlTW9ub3RvbmljVGltZSk6CisK
IDIwMTYtMDgtMjYgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBGaXggdGhlIEVOQUJMRShXRUJBU1NFTUJMWSkgYnVpbGQgb24gTGludXgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCBlYWQ1NDU2ZmZiYzE3NGIwNDJmMmJiZTY4N2ViMDlkNzg3MDdmYTEyLi4zZWRmZjAzYTFh
MGVmNjY2MTIzNzU5ZTBiOTExMjYzZGM5MWEzZDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYg
QEAKKzIwMTYtMDgtMjYgIEpvaGFuIEsuIEplbnNlbiAgPGpvaGFuX2plbnNlbkBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogRnJvbnRlbmQgc2hvdWxkIGhhdmUgYWNjZXNzIHRv
IFJlc291cmNlIFRpbWluZyBpbmZvcm1hdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwMDk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgU2hvdyBjb3JyZWN0IGluZm9ybWF0aW9uIHdpdGggUmVzb3Vy
Y2UgVGltaW5nIGluZm9ybWF0aW9uCisgICAgICAgIGZyb20gUmVzb3VyY2VMb2FkZXIgcmF0aGVy
IHRoYW4gRG9jdW1lbnRMb2FkZXIuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBmcm9udGVuZCBk
b2Vzbid0IHVzZSB0aGUgdGltaW5nIGRhdGEgeWV0LgorCisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3Rvck5ldHdvcmtBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3
b3JrQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yVGltaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvck5ldHdvcmtBZ2VudDo6YnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNlKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6YnVpbGRPYmplY3RGb3JDYWNoZWRS
ZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OndpbGxT
ZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRp
ZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdl
bnQ6OmRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpi
dWlsZE9iamVjdEZvclRpbWluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpidWlsZE9i
amVjdEZvclJlc291cmNlUmVzcG9uc2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6YnVp
bGRPYmplY3RGb3JDYWNoZWRSZXNvdXJjZSk6IERlbGV0ZWQuCisgICAgICAgIFVzZSBSZXNvdXJj
ZUxvYWRlciBpbnN0ZWFkIG9mIERvY3VtZW50TG9hZGVyIHRvIGdldCBSZXNvdXJjZSBUaW1pbmcg
aW5mb3JtYXRpb24uCisgICAgICAgIE1vdmUgZnVuY3Rpb25zIHRvIG1lbWJlciBmdW5jdGlvbnMg
dG8gYWNjZXNzIHRoZSBleGVjdXRpb25TdG9wV2F0Y2guCisKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIFVzZSB0aGUg
bG9hZCB0aW1pbmcgZmluaXNoVGltZSBhbmQgY29udmVydCB0byBlbGFwc2VkIHRpbWUgZm9yIGZy
b250ZW5kLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oOgor
ICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIFBhc3MgdGhl
IHdlYiBwcm9jZXNzIGxvYWQgdGltaW5nIG9uIHRvIHRoZSBpbnNwZWN0b3IuCisKIDIwMTYtMDgt
MjUgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgQ3Jhc2gg
d2hlbiBnZXR0aW5nIGZvbnQgYm91bmRpbmcgcmVjdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9OZXR3b3JrLmpzb24gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL05ldHdvcmsuanNvbgppbmRleCBlMzE3ZjgwZTc0
NTgzYmUyMzRmYWEyMTg3ZGNkYTkwZjI3OTc5ODJkLi4yMzBhOGMwMWI2MzE0NWI1ODg4NWU5YWJm
OGViNTcyYTJkNTFjMjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3Byb3RvY29sL05ldHdvcmsuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3Byb3RvY29sL05ldHdvcmsuanNvbgpAQCAtMzMsNyArMzMsNyBAQAogICAgICAgICAg
ICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJUaW1pbmcg
aW5mb3JtYXRpb24gZm9yIHRoZSByZXF1ZXN0LiIsCiAgICAgICAgICAgICAicHJvcGVydGllcyI6
IFsKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm5hdmlnYXRpb25TdGFydCIsICJ0eXBlIjog
Im51bWJlciIsICJkZXNjcmlwdGlvbiI6ICJUaW1pbmcncyBuYXZpZ2F0aW9uU3RhcnQgaXMgYSBi
YXNlbGluZSBpbiBzZWNvbmRzLCB3aGlsZSB0aGUgb3RoZXIgbnVtYmVycyBhcmUgdGlja3MgaW4g
bWlsbGlzZWNvbmRzIHJlbGF0aXZlbHkgdG8gdGhpcyBuYXZpZ2F0aW9uU3RhcnQuIiB9LAorICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAic3RhcnRUaW1lIiwgInR5cGUiOiAibnVtYmVyIiwgImRl
c2NyaXB0aW9uIjogIlRpbWluZydzIHN0YXJ0VGltZSBpcyBhIGJhc2VsaW5lIGluIHNlY29uZHMs
IHdoaWxlIHRoZSBvdGhlciBudW1iZXJzIGFyZSB0aWNrcyBpbiBtaWxsaXNlY29uZHMgcmVsYXRp
dmVseSB0byB0aGlzLiIgfSwKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImRvbWFpbkxvb2t1
cFN0YXJ0IiwgInR5cGUiOiAibnVtYmVyIiwgImRlc2NyaXB0aW9uIjogIlN0YXJ0ZWQgRE5TIGFk
ZHJlc3MgcmVzb2x2ZS4iIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJkb21haW5Mb29r
dXBFbmQiLCAidHlwZSI6ICJudW1iZXIiLCAiZGVzY3JpcHRpb24iOiAiRmluaXNoZWQgRE5TIGFk
ZHJlc3MgcmVzb2x2ZS4iIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjb25uZWN0U3Rh
cnQiLCAidHlwZSI6ICJudW1iZXIiLCAiZGVzY3JpcHRpb24iOiAiU3RhcnRlZCBjb25uZWN0aW5n
IHRvIHRoZSByZW1vdGUgaG9zdC4iIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TdG9w
d2F0Y2guaCBiL1NvdXJjZS9XVEYvd3RmL1N0b3B3YXRjaC5oCmluZGV4IDVmYjIxNWQzNzNhMDVh
Y2NkZDI1OTQyOTk5NmEwNDgzNTIxYTBjNGQuLjBiODM2Y2M2YWIwOTg4M2UwY2JmN2RiNmY4MzRj
Y2NmNjdkNGZjZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1N0b3B3YXRjaC5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL1N0b3B3YXRjaC5oCkBAIC00Myw2ICs0Myw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHN0b3AoKTsKIAogICAgIGRvdWJsZSBlbGFwc2VkVGltZSgpOworICAgIGRvdWJsZSBl
bGFwc2VkVGltZVNpbmNlTW9ub3RvbmljVGltZShkb3VibGUpOwogCiAgICAgYm9vbCBpc0FjdGl2
ZSgpIGNvbnN0IHsgcmV0dXJuICFzdGQ6OmlzbmFuKG1fbGFzdFN0YXJ0VGltZSk7IH0KIHByaXZh
dGU6CkBAIC04MSw2ICs4MiwxNCBAQCBpbmxpbmUgZG91YmxlIFN0b3B3YXRjaDo6ZWxhcHNlZFRp
bWUoKQogICAgIHJldHVybiBtX2VsYXBzZWRUaW1lICsgKG1vbm90b25pY2FsbHlJbmNyZWFzaW5n
VGltZSgpIC0gbV9sYXN0U3RhcnRUaW1lKTsKIH0KIAoraW5saW5lIGRvdWJsZSBTdG9wd2F0Y2g6
OmVsYXBzZWRUaW1lU2luY2VNb25vdG9uaWNUaW1lKGRvdWJsZSBtb25vdG9uaWNUaW1lKQorewor
ICAgIGlmICghaXNBY3RpdmUoKSkKKyAgICAgICAgcmV0dXJuIG1fZWxhcHNlZFRpbWU7CisKKyAg
ICByZXR1cm4gbV9lbGFwc2VkVGltZSArIChtb25vdG9uaWNUaW1lIC0gbV9sYXN0U3RhcnRUaW1l
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6U3RvcHdhdGNoOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApp
bmRleCA5ZTAzMGM5ZjBhNjMwN2E3YWQ1MzhlNTU1Njg4ZmI5YTYzMWUwMTBhLi5mMDlmNDliZGEz
ODdiNmQ1MjY2ZWNkZjQ2MmQyOWZlYzg5MjUwMjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApAQCAtMTg0LDEwICsxODQsMTMg
QEAgc3RhdGljIFJlZjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9ySGVhZGVycyhjb25z
dCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzKQogICAgIHJldHVybiBoZWFkZXJzT2JqZWN0OwogfQog
Ci1zdGF0aWMgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJlc291cmNlVGltaW5n
PiBidWlsZE9iamVjdEZvclRpbWluZyhjb25zdCBOZXR3b3JrTG9hZFRpbWluZyYgdGltaW5nLCBE
b2N1bWVudExvYWRlciogbG9hZGVyKQorUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6
OlJlc291cmNlVGltaW5nPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yVGlt
aW5nKGNvbnN0IE5ldHdvcmtMb2FkVGltaW5nJiB0aW1pbmcsIFJlc291cmNlTG9hZGVyJiByZXNv
dXJjZUxvYWRlcikKIHsKKyAgICBkb3VibGUgbW9ub3RvbmljVGltZSA9IHJlc291cmNlTG9hZGVy
LmxvYWRUaW1pbmcoKS5zdGFydFRpbWUoKTsKKyAgICBkb3VibGUgc3RhcnRUaW1lSW5JbnNwZWN0
b3IgPSBtX2Vudmlyb25tZW50LmV4ZWN1dGlvblN0b3B3YXRjaCgpLT5lbGFwc2VkVGltZVNpbmNl
TW9ub3RvbmljVGltZShtb25vdG9uaWNUaW1lKTsKKwogICAgIHJldHVybiBJbnNwZWN0b3I6OlBy
b3RvY29sOjpOZXR3b3JrOjpSZXNvdXJjZVRpbWluZzo6Y3JlYXRlKCkKLSAgICAgICAgLnNldE5h
dmlnYXRpb25TdGFydChsb2FkZXItPnRpbWluZygpLnN0YXJ0VGltZSgpKQorICAgICAgICAuc2V0
U3RhcnRUaW1lKHN0YXJ0VGltZUluSW5zcGVjdG9yKQogICAgICAgICAuc2V0RG9tYWluTG9va3Vw
U3RhcnQodGltaW5nLmRvbWFpbkxvb2t1cFN0YXJ0KQogICAgICAgICAuc2V0RG9tYWluTG9va3Vw
RW5kKHRpbWluZy5kb21haW5Mb29rdXBFbmQpCiAgICAgICAgIC5zZXRDb25uZWN0U3RhcnQodGlt
aW5nLmNvbm5lY3RTdGFydCkKQEAgLTIxMyw3ICsyMTYsNyBAQCBzdGF0aWMgUmVmPEluc3BlY3Rv
cjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJlcXVlc3Q+IGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXF1
ZXN0KAogICAgIHJldHVybiByZXF1ZXN0T2JqZWN0OwogfQogCi1zdGF0aWMgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJlc3BvbnNlPiBidWlsZE9iamVjdEZvclJlc291cmNl
UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIERvY3VtZW50TG9hZGVy
KiBsb2FkZXIpCitSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVzcG9uc2U+
IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6YnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNlKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VM
b2FkZXIpCiB7CiAgICAgaWYgKHJlc3BvbnNlLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKQEAgLTIzMCwxMiArMjMzLDEzIEBAIHN0YXRpYyBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6TmV0d29yazo6UmVzcG9uc2U+IGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwCiAgICAg
ICAgIC5yZWxlYXNlKCk7CiAKICAgICByZXNwb25zZU9iamVjdC0+c2V0RnJvbURpc2tDYWNoZShy
ZXNwb25zZS5zb3VyY2UoKSA9PSBSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6OkRpc2tDYWNoZSB8
fCByZXNwb25zZS5zb3VyY2UoKSA9PSBSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6OkRpc2tDYWNo
ZUFmdGVyVmFsaWRhdGlvbik7Ci0gICAgcmVzcG9uc2VPYmplY3QtPnNldFRpbWluZyhidWlsZE9i
amVjdEZvclRpbWluZyhyZXNwb25zZS5uZXR3b3JrTG9hZFRpbWluZygpLCBsb2FkZXIpKTsKKyAg
ICBpZiAocmVzb3VyY2VMb2FkZXIpCisgICAgICAgIHJlc3BvbnNlT2JqZWN0LT5zZXRUaW1pbmco
YnVpbGRPYmplY3RGb3JUaW1pbmcocmVzcG9uc2UubmV0d29ya0xvYWRUaW1pbmcoKSwgKnJlc291
cmNlTG9hZGVyKSk7CiAKICAgICByZXR1cm4gV1RGTW92ZShyZXNwb25zZU9iamVjdCk7CiB9CiAK
LXN0YXRpYyBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6Q2FjaGVkUmVzb3VyY2U+
IGJ1aWxkT2JqZWN0Rm9yQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291
cmNlLCBEb2N1bWVudExvYWRlciogbG9hZGVyKQorUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5l
dHdvcms6OkNhY2hlZFJlc291cmNlPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmJ1aWxkT2JqZWN0
Rm9yQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlKQogewogICAg
IGF1dG8gcmVzb3VyY2VPYmplY3QgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpDYWNo
ZWRSZXNvdXJjZTo6Y3JlYXRlKCkKICAgICAgICAgLnNldFVybChjYWNoZWRSZXNvdXJjZS0+dXJs
KCkpCkBAIC0yNDMsNyArMjQ3LDcgQEAgc3RhdGljIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpO
ZXR3b3JrOjpDYWNoZWRSZXNvdXJjZT4gYnVpbGRPYmplY3RGb3JDYWNoZWRSZXMKICAgICAgICAg
LnNldEJvZHlTaXplKGNhY2hlZFJlc291cmNlLT5lbmNvZGVkU2l6ZSgpKQogICAgICAgICAucmVs
ZWFzZSgpOwogCi0gICAgYXV0byByZXNvdXJjZVJlc3BvbnNlID0gYnVpbGRPYmplY3RGb3JSZXNv
dXJjZVJlc3BvbnNlKGNhY2hlZFJlc291cmNlLT5yZXNwb25zZSgpLCBsb2FkZXIpOworICAgIGF1
dG8gcmVzb3VyY2VSZXNwb25zZSA9IGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25zZShjYWNo
ZWRSZXNvdXJjZS0+cmVzcG9uc2UoKSwgY2FjaGVkUmVzb3VyY2UtPmxvYWRlcigpKTsKICAgICBy
ZXNvdXJjZU9iamVjdC0+c2V0UmVzcG9uc2UoV1RGTW92ZShyZXNvdXJjZVJlc3BvbnNlKSk7CiAK
ICAgICBTdHJpbmcgc291cmNlTWFwcGluZ1VSTCA9IEluc3BlY3RvclBhZ2VBZ2VudDo6c291cmNl
TWFwVVJMRm9yUmVzb3VyY2UoY2FjaGVkUmVzb3VyY2UpOwpAQCAtMzA1LDcgKzMwOSw3IEBAIHZv
aWQgSW5zcGVjdG9yTmV0d29ya0FnZW50Ojp3aWxsU2VuZFJlcXVlc3QodW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBEb2N1bWVudExvCiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6UmVz
b3VyY2VUeXBlIHJlc291cmNlVHlwZSA9IEluc3BlY3RvclBhZ2VBZ2VudDo6cmVzb3VyY2VUeXBl
SnNvbih0eXBlKTsKIAogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpJ
bml0aWF0b3I+IGluaXRpYXRvck9iamVjdCA9IGJ1aWxkSW5pdGlhdG9yT2JqZWN0KGxvYWRlci5m
cmFtZSgpID8gbG9hZGVyLmZyYW1lKCktPmRvY3VtZW50KCkgOiBudWxscHRyKTsKLSAgICBtX2Zy
b250ZW5kRGlzcGF0Y2hlci0+cmVxdWVzdFdpbGxCZVNlbnQocmVxdWVzdElkLCBtX3BhZ2VBZ2Vu
dC0+ZnJhbWVJZChsb2FkZXIuZnJhbWUoKSksIG1fcGFnZUFnZW50LT5sb2FkZXJJZCgmbG9hZGVy
KSwgbG9hZGVyLnVybCgpLnN0cmluZygpLCBidWlsZE9iamVjdEZvclJlc291cmNlUmVxdWVzdChy
ZXF1ZXN0KSwgdGltZXN0YW1wKCksIGluaXRpYXRvck9iamVjdCwgYnVpbGRPYmplY3RGb3JSZXNv
dXJjZVJlc3BvbnNlKHJlZGlyZWN0UmVzcG9uc2UsICZsb2FkZXIpLCB0eXBlICE9IEluc3BlY3Rv
clBhZ2VBZ2VudDo6T3RoZXJSZXNvdXJjZSA/ICZyZXNvdXJjZVR5cGUgOiBudWxscHRyKTsKKyAg
ICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVxdWVzdFdpbGxCZVNlbnQocmVxdWVzdElkLCBtX3Bh
Z2VBZ2VudC0+ZnJhbWVJZChsb2FkZXIuZnJhbWUoKSksIG1fcGFnZUFnZW50LT5sb2FkZXJJZCgm
bG9hZGVyKSwgbG9hZGVyLnVybCgpLnN0cmluZygpLCBidWlsZE9iamVjdEZvclJlc291cmNlUmVx
dWVzdChyZXF1ZXN0KSwgdGltZXN0YW1wKCksIGluaXRpYXRvck9iamVjdCwgYnVpbGRPYmplY3RG
b3JSZXNvdXJjZVJlc3BvbnNlKHJlZGlyZWN0UmVzcG9uc2UsIG51bGxwdHIpLCB0eXBlICE9IElu
c3BlY3RvclBhZ2VBZ2VudDo6T3RoZXJSZXNvdXJjZSA/ICZyZXNvdXJjZVR5cGUgOiBudWxscHRy
KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6Om1hcmtSZXNvdXJjZUFzQ2FjaGVk
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKQEAgLTMyMiw3ICszMjYsNyBAQCB2b2lkIEluc3Bl
Y3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgRG9jdW1lbgogICAgICAgICByZXR1cm47CiAKICAgICBTdHJpbmcgcmVxdWVzdElkID0g
SWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQoaWRlbnRpZmllcik7Ci0gICAgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJlc3BvbnNlPiByZXNvdXJjZVJlc3BvbnNlID0g
YnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNlKHJlc3BvbnNlLCAmbG9hZGVyKTsKKyAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVzcG9uc2U+IHJlc291cmNlUmVz
cG9uc2UgPSBidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UocmVzcG9uc2UsIHJlc291cmNl
TG9hZGVyKTsKIAogICAgIGJvb2wgaXNOb3RNb2RpZmllZCA9IHJlc3BvbnNlLmh0dHBTdGF0dXND
b2RlKCkgPT0gMzA0OwogCkBAIC0zOTAsMTggKzM5NCwxNCBAQCB2b2lkIEluc3BlY3Rvck5ldHdv
cmtBZ2VudDo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3Vt
ZW50TAogCiAgICAgbV9yZXNvdXJjZXNEYXRhLT5tYXliZURlY29kZURhdGFUb0NvbnRlbnQocmVx
dWVzdElkKTsKIAotICAgIC8vIEZJWE1FOiBUaGUgZmluaXNoVGltZSB0aGF0IGlzIHBhc3NlZCBp
biBpcyBmcm9tIHRoZSBOZXR3b3JrUHJvY2VzcyBhbmQgaXMgbW9yZSBhY2N1cmF0ZS4KLSAgICAv
LyBIb3dldmVyLCBhbGwgb3RoZXIgdGltZXMgcGFzc2VkIHRvIHRoZSBJbnNwZWN0b3IgYXJlIGdl
bmVyYXRlZCBmcm9tIHRoZSB3ZWIgcHJvY2Vzcy4gTWl4aW5nCi0gICAgLy8gdGltZXMgZnJvbSBk
aWZmZXJlbnQgcHJvY2Vzc2VzIGNhbiBjYXVzZSB0aGUgZmluaXNoIHRpbWUgdG8gYmUgZWFybGll
ciB0aGFuIHRoZSByZXNwb25zZQotICAgIC8vIHJlY2VpdmVkIHRpbWUgZHVlIHRvIGludGVyLXBy
b2Nlc3MgY29tbXVuaWNhdGlvbiBsYWcuCi0gICAgZmluaXNoVGltZSA9IHRpbWVzdGFtcCgpOwor
ICAgIGRvdWJsZSBlbGFwc2VkRmluaXNoVGltZSA9IGZpbmlzaFRpbWUgPyBtX2Vudmlyb25tZW50
LmV4ZWN1dGlvblN0b3B3YXRjaCgpLT5lbGFwc2VkVGltZVNpbmNlTW9ub3RvbmljVGltZShmaW5p
c2hUaW1lKSA6IHRpbWVzdGFtcCgpOwogCiAgICAgU3RyaW5nIHNvdXJjZU1hcHBpbmdVUkw7CiAg
ICAgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YSBjb25zdCogcmVzb3VyY2VEYXRh
ID0gbV9yZXNvdXJjZXNEYXRhLT5kYXRhKHJlcXVlc3RJZCk7CiAgICAgaWYgKHJlc291cmNlRGF0
YSAmJiByZXNvdXJjZURhdGEtPmNhY2hlZFJlc291cmNlKCkpCiAgICAgICAgIHNvdXJjZU1hcHBp
bmdVUkwgPSBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNvdXJjZU1hcFVSTEZvclJlc291cmNlKHJlc291
cmNlRGF0YS0+Y2FjaGVkUmVzb3VyY2UoKSk7CiAKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+
bG9hZGluZ0ZpbmlzaGVkKHJlcXVlc3RJZCwgZmluaXNoVGltZSwgIXNvdXJjZU1hcHBpbmdVUkwu
aXNFbXB0eSgpID8gJnNvdXJjZU1hcHBpbmdVUkwgOiBudWxscHRyKTsKKyAgICBtX2Zyb250ZW5k
RGlzcGF0Y2hlci0+bG9hZGluZ0ZpbmlzaGVkKHJlcXVlc3RJZCwgZWxhcHNlZEZpbmlzaFRpbWUs
ICFzb3VyY2VNYXBwaW5nVVJMLmlzRW1wdHkoKSA/ICZzb3VyY2VNYXBwaW5nVVJMIDogbnVsbHB0
cik7CiB9CiAKIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaWRGYWlsTG9hZGluZyh1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyJiBsb2FkZXIsIGNvbnN0IFJlc291
cmNlRXJyb3ImIGVycm9yKQpAQCAtNDM1LDcgKzQzNSw3IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29y
a0FnZW50OjpkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9jdW1lbnRMb2FkZXImIGxv
YWRlCiAKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6SW5pdGlhdG9y
PiBpbml0aWF0b3JPYmplY3QgPSBidWlsZEluaXRpYXRvck9iamVjdChsb2FkZXIuZnJhbWUoKSA/
IGxvYWRlci5mcmFtZSgpLT5kb2N1bWVudCgpIDogbnVsbHB0cik7CiAKLSAgICBtX2Zyb250ZW5k
RGlzcGF0Y2hlci0+cmVxdWVzdFNlcnZlZEZyb21NZW1vcnlDYWNoZShyZXF1ZXN0SWQsIGZyYW1l
SWQsIGxvYWRlcklkLCBsb2FkZXIudXJsKCkuc3RyaW5nKCksIHRpbWVzdGFtcCgpLCBpbml0aWF0
b3JPYmplY3QsIGJ1aWxkT2JqZWN0Rm9yQ2FjaGVkUmVzb3VyY2UoJnJlc291cmNlLCAmbG9hZGVy
KSk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlcXVlc3RTZXJ2ZWRGcm9tTWVtb3J5Q2Fj
aGUocmVxdWVzdElkLCBmcmFtZUlkLCBsb2FkZXJJZCwgbG9hZGVyLnVybCgpLnN0cmluZygpLCB0
aW1lc3RhbXAoKSwgaW5pdGlhdG9yT2JqZWN0LCBidWlsZE9iamVjdEZvckNhY2hlZFJlc291cmNl
KCZyZXNvdXJjZSkpOwogfQogCiB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2V0SW5pdGlh
bFNjcmlwdENvbnRlbnQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNv
dXJjZVN0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JOZXR3b3JrQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JOZXR3
b3JrQWdlbnQuaAppbmRleCBkM2RkNDhkZWUxODE5NTlkMGU5MGMzMTliZjZkZDdjZmFmNGYzNmVl
Li41MzRjZWY3MzA0NGU4NWIyNjljNDhmMmQ1ZTM4MjhiODhlYmM4ZTA2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCkBAIC00OCw2ICs0
OCw3IEBAIGNsYXNzIENhY2hlZFJlc291cmNlOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBEb2N1
bWVudExvYWRlcjsKIGNsYXNzIEluc3BlY3RvclBhZ2VBZ2VudDsKK2NsYXNzIE5ldHdvcmtMb2Fk
VGltaW5nOwogY2xhc3MgTmV0d29ya1Jlc291cmNlc0RhdGE7CiBjbGFzcyBSZXNvdXJjZUVycm9y
OwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CkBAIC0xMTYsNiArMTE3LDEwIEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgdm9pZCBlbmFibGUoKTsKIAorICAgIFJlZjxJbnNwZWN0b3I6OlByb3RvY29s
OjpOZXR3b3JrOjpSZXNvdXJjZVRpbWluZz4gYnVpbGRPYmplY3RGb3JUaW1pbmcoY29uc3QgTmV0
d29ya0xvYWRUaW1pbmcmLCBSZXNvdXJjZUxvYWRlciYpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpOZXR3b3JrOjpSZXNwb25zZT4gYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlc3Bv
bnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlciopOworICAgIFJlZjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpDYWNoZWRSZXNvdXJjZT4gYnVpbGRPYmplY3RG
b3JDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSopOworCiAgICAgZG91YmxlIHRpbWVzdGFt
cCgpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6TmV0d29ya0Zyb250ZW5kRGlz
cGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1
YnJlc291cmNlTG9hZGVyLmNwcAppbmRleCBiYjAxZjk3Y2U5NjdmMWE1ZmExZGU3NWEzMTZkODg5
MDdkNDgyNmI0Li5jMDA2ZGI0ZmRiNzMzOTg0YTQ2Mzc2OTdkNmY0YWE4NGYxYmQ2MGEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKQEAgLTQ2MCw4ICs0
NjAsMTMgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhkb3VibGUg
ZmluaXNoVGltZSkKICAgICBSZWY8U3VicmVzb3VyY2VMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRo
aXMpOwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBwcm90ZWN0UmVz
b3VyY2UobV9yZXNvdXJjZSk7CiAKLSAgICBmaW5pc2hUaW1lID0gbW9ub3RvbmljYWxseUluY3Jl
YXNpbmdUaW1lKCk7Ci0gICAgbV9sb2FkVGltaW5nLnNldFJlc3BvbnNlRW5kKGZpbmlzaFRpbWUp
OworICAgIC8vIEZJWE1FOiBUaGUgZmluaXNoVGltZSB0aGF0IGlzIHBhc3NlZCBpbiBpcyBmcm9t
IHRoZSBOZXR3b3JrUHJvY2VzcyBhbmQgaXMgbW9yZSBhY2N1cmF0ZS4KKyAgICAvLyBIb3dldmVy
LCBhbGwgb3RoZXIgbG9hZCB0aW1lcyBhcmUgZ2VuZXJhdGVkIGZyb20gdGhlIHdlYiBwcm9jZXNz
IG9yIG9mZnNldHMuCisgICAgLy8gTWl4aW5nIHRpbWVzIGZyb20gZGlmZmVyZW50IHByb2Nlc3Nl
cyBjYW4gY2F1c2UgdGhlIGZpbmlzaCB0aW1lIHRvIGJlIGVhcmxpZXIgdGhhbgorICAgIC8vIHRo
ZSByZXNwb25zZSByZWNlaXZlZCB0aW1lIGR1ZSB0byBpbnRlci1wcm9jZXNzIGNvbW11bmljYXRp
b24gbGFnLgorICAgIFVOVVNFRF9QQVJBTShmaW5pc2hUaW1lKTsKKyAgICBkb3VibGUgcmVzcG9u
c2VFbmRUaW1lID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CisgICAgbV9sb2FkVGlt
aW5nLnNldFJlc3BvbnNlRW5kKHJlc3BvbnNlRW5kVGltZSk7CiAKICNpZiBFTkFCTEUoV0VCX1RJ
TUlORykKICAgICBpZiAobV9kb2N1bWVudExvYWRlci0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5k
b2N1bWVudCgpICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkucmVz
b3VyY2VUaW1pbmdFbmFibGVkKCkpCkBAIC00NjksMTQgKzQ3NCwxNCBAQCB2b2lkIFN1YnJlc291
cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGRvdWJsZSBmaW5pc2hUaW1lKQogI2VuZGlmCiAK
ICAgICBtX3N0YXRlID0gRmluaXNoaW5nOwotICAgIG1fcmVzb3VyY2UtPnNldExvYWRGaW5pc2hU
aW1lKGZpbmlzaFRpbWUpOworICAgIG1fcmVzb3VyY2UtPnNldExvYWRGaW5pc2hUaW1lKHJlc3Bv
bnNlRW5kVGltZSk7IC8vIEZJWE1FOiBVc2VycyBvZiB0aGUgbG9hZEZpbmlzaFRpbWUgc2hvdWxk
IHVzZSB0aGUgTG9hZFRpbWluZyBzdHJ1Y3QgaW5zdGVhZC4KICAgICBtX3Jlc291cmNlLT5maW5p
c2hMb2FkaW5nKHJlc291cmNlRGF0YSgpKTsKIAogICAgIGlmICh3YXNDYW5jZWxsZWQoKSkKICAg
ICAgICAgcmV0dXJuOwogICAgIG1fcmVzb3VyY2UtPmZpbmlzaCgpOwogICAgIEFTU0VSVCghcmVh
Y2hlZFRlcm1pbmFsU3RhdGUoKSk7Ci0gICAgZGlkRmluaXNoTG9hZGluZ09uZVBhcnQoZmluaXNo
VGltZSk7CisgICAgZGlkRmluaXNoTG9hZGluZ09uZVBhcnQocmVzcG9uc2VFbmRUaW1lKTsKICAg
ICBub3RpZnlEb25lKCk7CiAgICAgaWYgKHJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpCiAgICAgICAg
IHJldHVybjsK
</data>

          </attachment>
      

    </bug>

</bugzilla>