<?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>135399</bug_id>
          
          <creation_ts>2014-07-29 15:43:16 -0700</creation_ts>
          <short_desc>Web Inspector: 80% of time during recording is spent creating source code locations for profile nodes</short_desc>
          <delta_ts>2014-07-30 10:50: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>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1025575</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-07-29 15:43:16 -0700</bug_when>
    <thetext>* SUMMARY
Recording a timeline of the inspector recording a timeline of logging into a website, 80% of the work Web Inspector was doing was creating source code location objects for ProfileNodes that were not even visible in the timeline overview. These source code locations should not be computed eagerly. especially because there are so many of them (1 per function call).

* STEPS TO REPRODUCE
1. Inspect iCloud.com
2. In inspector¹ select a large range in the timeline (0-20s)
3. Inspect inspector¹
4. Start a timeline in inspector²
5. Reload the page
  =&gt; very long time and hangs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1025578</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-07-29 15:44:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/17848962&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1025652</commentid>
    <comment_count>2</comment_count>
      <attachid>235732</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-07-29 21:13:36 -0700</bug_when>
    <thetext>Created attachment 235732
[PATCH] Proposed Fix

I attempted to merge LazySourceCodeLocation into SourceCodeLocation, but I wasn&apos;t see-ing the same performance wins as this patch, so I decided to go back to this. Ultimately I think it would make sense to fold this into SourceCodeLocation if it is possible. For now, I think this is a good compromise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1025668</commentid>
    <comment_count>3</comment_count>
      <attachid>235732</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-07-29 22:10:50 -0700</bug_when>
    <thetext>Comment on attachment 235732
[PATCH] Proposed Fix

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

&gt; Source/WebInspectorUI/UserInterface/Models/ScriptTimelineRecord.js:281
&gt; +    _initializeProfileFromPayload: function(payload)

As much as I hate leaking protocol data past the controllers into the model, I this this is fine for the perf win.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1025671</commentid>
    <comment_count>4</comment_count>
      <attachid>235732</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-07-29 22:42:38 -0700</bug_when>
    <thetext>Comment on attachment 235732
[PATCH] Proposed Fix

Clearing flags on attachment: 235732

Committed r171790: &lt;http://trac.webkit.org/changeset/171790&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1025672</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-07-29 22:42:41 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1025739</commentid>
    <comment_count>6</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-07-30 10:50:00 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 235732 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=235732&amp;action=review
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Models/ScriptTimelineRecord.js:281
&gt; &gt; +    _initializeProfileFromPayload: function(payload)
&gt; 
&gt; As much as I hate leaking protocol data past the controllers into the model, I this this is fine for the perf win.

The profileFromPayload could go anywhere (it could go in TimelineManager). It is a standalone factory like method.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235732</attachid>
            <date>2014-07-29 21:13:36 -0700</date>
            <delta_ts>2014-07-29 22:42:38 -0700</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>lazy-source-code-location.patch</filename>
            <type>text/plain</type>
            <size>34923</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDJjMDZjYjEuLmEyZWE5OTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDc4IEBACiAyMDE0LTA3LTI5ICBKb3NlcGggUGVjb3Jh
cm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKKyAgICAgICAgV2ViIEluc3BlY3RvcjogODAlIG9m
IHRpbWUgZHVyaW5nIHJlY29yZGluZyBpcyBzcGVudCBjcmVhdGluZyBzb3VyY2UgY29kZSBsb2Nh
dGlvbnMgZm9yIHByb2ZpbGUgbm9kZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzNTM5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFByb2ZpbGluZyB0aGUgaW5zcGVjdG9yIHdoaWxlIHJlY29yZGluZyBh
IHRpbWVsaW5lLCBhIHNpZ25pZmljYW50IGFtb3VudCBvZgorICAgICAgICB0aW1lIHdhcyBzcGVu
dCBjcmVhdGluZyBTb3VyY2VDb2RlTG9jYXRpb24gb2JqZWN0cyBmb3IgcHJvZmlsaW5nIGluZm9y
bWF0aW9uCisgICAgICAgIGFuZCBjYWxsIGZyYW1lcy4gQSBsb3Qgb2YgdGhpcyBkYXRhIHdhcyBl
YWdlcmx5IGJlaW5nIHByb2Nlc3NlZCwgZXZlbiB0aG91Z2gKKyAgICAgICAgaXQgd291bGQgbm90
IGltbWVkaWF0ZWx5IGJlIHByZXNlbnRhYmxlIHRvIHRoZSB1c2VyLgorCisgICAgICAgIFRoaXMg
bWFrZXMgdHdvIHNpZ25pZmljYW50IGNoYW5nZXMuIFdlIGNyZWF0ZSBhIExhenlTb3VyY2VDb2Rl
TG9jYXRpb24gY2xhc3MKKyAgICAgICAgd2hpY2ggZG9lcyBhcyBsaXR0bGUgYXMgcG9zc2libGUg
dW50aWwgZGlzcGxheSBpbmZvcm1hdGlvbiBpcyByZXF1ZXN0ZWQuIFdlCisgICAgICAgIGFsc28g
bGF6aWx5IGNvbnZlcnQgdGhlIHByb2ZpbGVyIHBheWxvYWQgZGF0YSB0byBhIFByb2ZpbGUgb2Jq
ZWN0LCBzbyB0aGUKKyAgICAgICAgcHJvY2Vzc2luZyBpcyBvbmx5IGRvbmUgaWYgeW91IGRyaWxs
IGludG8gdGhlIFNjcmlwdCBzcGVjaWZpYyB0aW1lbGluZS4KKworICAgICAgICBUaGlzIHJlc3Vs
dHMgaW4gYSBzaWduaWZpY2FudCBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudCBpbiB0aGUgb3ZlcnZp
ZXcgdmlldy4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvVGltZWxpbmVN
YW5hZ2VyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFuYWdlci5wcm90b3R5
cGUuZXZlbnRSZWNvcmRlZC5wcm9jZXNzUmVjb3JkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5U
aW1lbGluZU1hbmFnZXIucHJvdG90eXBlLmV2ZW50UmVjb3JkZWQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlRpbWVsaW5lTWFuYWdlci5wcm90b3R5cGUuX2NhbGxGcmFtZXNGcm9tUGF5bG9hZC5j
cmVhdGVDYWxsRnJhbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFuYWdlci5w
cm90b3R5cGUuX2NhbGxGcmFtZXNGcm9tUGF5bG9hZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VGltZWxpbmVNYW5hZ2VyLnByb3RvdHlwZS5fcHJvZmlsZUZyb21QYXlsb2FkLnByb2ZpbGVOb2Rl
RnJvbVBheWxvYWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFu
YWdlci5wcm90b3R5cGUuX3Byb2ZpbGVGcm9tUGF5bG9hZC5wcm9maWxlTm9kZUNhbGxGcm9tUGF5
bG9hZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVNYW5hZ2VyLnBy
b3RvdHlwZS5fcHJvZmlsZUZyb21QYXlsb2FkKTogRGVsZXRlZC4KKyAgICAgICAgRG8gbm90IGVh
Z2VybHkgcHJvY2VzcyBwcm9maWxlIHBheWxvYWRzLiBJbnN0ZWFkIHBhc3MgdGhlIHBheWxvYWQg
dG8gU2NyaXB0VGltZWxpbmVSZWNvcmRzLgorICAgICAgICBMaWtld2lzZSBjcmVhdGUgY2FsbGZy
YW1lcyB3aXRoIGxhenkgc291cmNlIGNvZGUgbG9jYXRpb25zIHRvIGRvIHRoZSBtaW5pbXVtIGFt
b3VudCBvZiB3b3JrLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvU2NyaXB0VGlt
ZWxpbmVSZWNvcmQuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVSZWNv
cmQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lUmVjb3JkLnByb3RvdHlw
ZS5nZXQgcHJvZmlsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVSZWNv
cmQucHJvdG90eXBlLl9pbml0aWFsaXplUHJvZmlsZUZyb21QYXlsb2FkLnByb2ZpbGVOb2RlRnJv
bVBheWxvYWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lUmVjb3JkLnBy
b3RvdHlwZS5faW5pdGlhbGl6ZVByb2ZpbGVGcm9tUGF5bG9hZC5wcm9maWxlTm9kZUNhbGxGcm9t
UGF5bG9hZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVSZWNvcmQucHJv
dG90eXBlLl9pbml0aWFsaXplUHJvZmlsZUZyb21QYXlsb2FkKToKKyAgICAgICAgT25seSB3aGVu
IHRoZSBwcm9maWxlIGlzIGFza2VkIGRvIHdlIHByb2Nlc3MgdGhlIHByb2ZpbGVyIHBheWxvYWQg
aW5mb3JtYXRpb24uCisgICAgICAgIFRoaXMgZGVmZXIgdGhlIHByb2Nlc3NpbmcgdW50aWwgYXQg
bGVhc3QgdGhlIHVzZXIgZHJpbGxzIGludG8gdGhlIFNjcmlwdCB0aW1lbGluZS4KKworICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvTWFpbi5odG1sOgorICAgICAgICBBZGQgdGhlIG5ldyBjbGFzcyBh
bmQgZW5zdXJlIFNvdXJjZUNvZGVMb2NhdGlvbiBpcyBhdmFpbGFibGUgYmVmb3JlaGFuZC4KKwor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL0xhenlTb3VyY2VDb2RlTG9jYXRpb24uanM6
IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkxhenlTb3VyY2VDb2RlTG9jYXRpb24pOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkxhenlTb3VyY2VDb2RlTG9jYXRpb24ucHJvdG90eXBlLmlz
RXF1YWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkxhenlTb3VyY2VDb2RlTG9jYXRpb24ucHJv
dG90eXBlLmdldCBzb3VyY2VDb2RlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5MYXp5U291cmNl
Q29kZUxvY2F0aW9uLnByb3RvdHlwZS5zZXQgc291cmNlQ29kZSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuTGF6eVNvdXJjZUNvZGVMb2NhdGlvbi5wcm90b3R5cGUuZ2V0IGZvcm1hdHRlZExpbmVO
dW1iZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkxhenlTb3VyY2VDb2RlTG9jYXRpb24ucHJv
dG90eXBlLmdldCBmb3JtYXR0ZWRDb2x1bW5OdW1iZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkxhenlTb3VyY2VDb2RlTG9jYXRpb24ucHJvdG90eXBlLmZvcm1hdHRlZFBvc2l0aW9uKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5MYXp5U291cmNlQ29kZUxvY2F0aW9uLnByb3RvdHlwZS5oYXNG
b3JtYXR0ZWRMb2NhdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTGF6eVNvdXJjZUNvZGVM
b2NhdGlvbi5wcm90b3R5cGUuaGFzRGlmZmVyZW50RGlzcGxheUxvY2F0aW9uKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5MYXp5U291cmNlQ29kZUxvY2F0aW9uLnByb3RvdHlwZS5yZXNvbHZlTWFw
cGVkTG9jYXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkxhenlTb3VyY2VDb2RlTG9jYXRp
b24ucHJvdG90eXBlLl9sYXp5SW5pdGlhbGl6YXRpb24pOgorICAgICAgICBPbmx5IHdoZW4gZGlz
cGxheSBpbmZvcm1hdGlvbiBpcyByZXF1ZXN0ZWQgd2lsbCB3ZSBwZXJmb3JtIGV4dHJhIHByb2Nl
c3NpbmcuCisgICAgICAgIEZvciBiYXNpYyBpbmZvcm1hdGlvbiB3ZSBkbyBub3QgbmVlZCB0byBj
aGVjayBmb3IgZm9ybWF0dGVkIChwcmV0dHktcHJpbnRlZCkgaW5mby4KKworICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvTW9kZWxzL1NvdXJjZUNvZGUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
U291cmNlQ29kZS5wcm90b3R5cGUuY3JlYXRlTGF6eVNvdXJjZUNvZGVMb2NhdGlvbik6CisgICAg
ICAgIFByb3ZpZGUgYW4gZXhwbGljdCBjcmVhdGUgZnVuY3Rpb24gZm9yIGxhenkgc291cmNlIGNv
ZGVzLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvU291cmNlQ29kZUxvY2F0aW9u
LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVMb2NhdGlvbi5wcm90b3R5cGUu
c2V0IHNvdXJjZUNvZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVMb2NhdGlv
bi5wcm90b3R5cGUuZ2V0IGRpc3BsYXlTb3VyY2VDb2RlKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5Tb3VyY2VDb2RlTG9jYXRpb24ucHJvdG90eXBlLmdldCBkaXNwbGF5TGluZU51bWJlcik6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlQ29kZUxvY2F0aW9uLnByb3RvdHlwZS5nZXQgZGlz
cGxheUNvbHVtbk51bWJlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlQ29kZUxvY2F0
aW9uLnByb3RvdHlwZS5oYXNNYXBwZWRMb2NhdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
U291cmNlQ29kZUxvY2F0aW9uLnByb3RvdHlwZS5zZXRTb3VyY2VDb2RlKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Tb3VyY2VDb2RlTG9jYXRpb24ucHJvdG90eXBlLnJlc29sdmVNYXBwZWRMb2Nh
dGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlQ29kZUxvY2F0aW9uLnByb3RvdHlw
ZS5fbWFrZUNoYW5nZUFuZERpc3BhdGNoQ2hhbmdlRXZlbnRJZk5lZWRlZCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuU291cmNlQ29kZUxvY2F0aW9uLnByb3RvdHlwZS5fcmVzb2x2ZU1hcHBlZExv
Y2F0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgSW5jbHVkZSB0d28gcHJvdGVjdGVkIGZ1bmN0aW9u
cyB3aGljaCBMYXp5U291cmNlQ29kZUxvY2F0aW9uIG92ZXJyaWRlcy4KKworMjAxNC0wNy0yOSAg
Sm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCiAgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IE9ubHkgY29tcHV0ZSBmdWxsIFByb2ZpbGVOb2RlIHRpbWVzIGlmIG5lZWRlZCAtIExl
Z2FjeSBQcm9maWxlcgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTM1NDA2CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0NvbnRyb2xsZXJzL1RpbWVsaW5lTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1RpbWVsaW5lTWFuYWdlci5qcwppbmRleCA4
ODdmODZiLi40ZTk4NjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Db250cm9sbGVycy9UaW1lbGluZU1hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvVGltZWxpbmVNYW5hZ2VyLmpzCkBA
IC0yMTUsMTYgKzIxNSwxNCBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVNYW5hZ2VyLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KIAotICAgICAg
ICAgICAgICAgIHZhciBwcm9maWxlID0gbnVsbDsKLSAgICAgICAgICAgICAgICBpZiAocmVjb3Jk
UGF5bG9hZC5kYXRhLnByb2ZpbGUpCi0gICAgICAgICAgICAgICAgICAgIHByb2ZpbGUgPSB0aGlz
Ll9wcm9maWxlRnJvbVBheWxvYWQocmVjb3JkUGF5bG9hZC5kYXRhLnByb2ZpbGUpOworICAgICAg
ICAgICAgICAgIHZhciBwcm9maWxlRGF0YSA9IHJlY29yZFBheWxvYWQuZGF0YS5wcm9maWxlOwog
CiAgICAgICAgICAgICAgICAgc3dpdGNoIChwYXJlbnRSZWNvcmRQYXlsb2FkICYmIHBhcmVudFJl
Y29yZFBheWxvYWQudHlwZSkgewogICAgICAgICAgICAgICAgIGNhc2UgVGltZWxpbmVBZ2VudC5F
dmVudFR5cGUuVGltZXJGaXJlOgotICAgICAgICAgICAgICAgICAgICB0aGlzLl9hZGRSZWNvcmQo
bmV3IFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVJlY29yZChXZWJJbnNwZWN0b3IuU2NyaXB0
VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBlLlRpbWVyRmlyZWQsIHN0YXJ0VGltZSwgZW5kVGltZSwg
Y2FsbEZyYW1lcywgc291cmNlQ29kZUxvY2F0aW9uLCBwYXJlbnRSZWNvcmRQYXlsb2FkLmRhdGEu
dGltZXJJZCwgcHJvZmlsZSkpOworICAgICAgICAgICAgICAgICAgICB0aGlzLl9hZGRSZWNvcmQo
bmV3IFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVJlY29yZChXZWJJbnNwZWN0b3IuU2NyaXB0
VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBlLlRpbWVyRmlyZWQsIHN0YXJ0VGltZSwgZW5kVGltZSwg
Y2FsbEZyYW1lcywgc291cmNlQ29kZUxvY2F0aW9uLCBwYXJlbnRSZWNvcmRQYXlsb2FkLmRhdGEu
dGltZXJJZCwgcHJvZmlsZURhdGEpKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5fYWRkUmVjb3Jk
KG5ldyBXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVSZWNvcmQoV2ViSW5zcGVjdG9yLlNjcmlw
dFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZS5TY3JpcHRFdmFsdWF0ZWQsIHN0YXJ0VGltZSwgZW5k
VGltZSwgY2FsbEZyYW1lcywgc291cmNlQ29kZUxvY2F0aW9uLCBudWxsLCBwcm9maWxlKSk7Cisg
ICAgICAgICAgICAgICAgICAgIHRoaXMuX2FkZFJlY29yZChuZXcgV2ViSW5zcGVjdG9yLlNjcmlw
dFRpbWVsaW5lUmVjb3JkKFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVJlY29yZC5FdmVudFR5
cGUuU2NyaXB0RXZhbHVhdGVkLCBzdGFydFRpbWUsIGVuZFRpbWUsIGNhbGxGcmFtZXMsIHNvdXJj
ZUNvZGVMb2NhdGlvbiwgbnVsbCwgcHJvZmlsZURhdGEpKTsKICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICAgfQogCkBAIC0yMzYsOSArMjM0LDkgQEAgV2ViSW5zcGVj
dG9yLlRpbWVsaW5lTWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAKICAgICAgICAgICAgIGNhc2UgVGltZWxpbmVBZ2VudC5FdmVudFR5cGUuQ29uc29sZVByb2Zp
bGU6Ci0gICAgICAgICAgICAgICAgdmFyIHByb2ZpbGUgPSB0aGlzLl9wcm9maWxlRnJvbVBheWxv
YWQocmVjb3JkUGF5bG9hZC5kYXRhLnByb2ZpbGUpOwotICAgICAgICAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHByb2ZpbGUpOwotICAgICAgICAgICAgICAgIHRoaXMuX2FkZFJlY29yZChuZXcgV2Vi
SW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lUmVjb3JkKFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGlu
ZVJlY29yZC5FdmVudFR5cGUuQ29uc29sZVByb2ZpbGVSZWNvcmRlZCwgc3RhcnRUaW1lLCBlbmRU
aW1lLCBjYWxsRnJhbWVzLCBzb3VyY2VDb2RlTG9jYXRpb24sIHJlY29yZFBheWxvYWQuZGF0YS50
aXRsZSwgcHJvZmlsZSkpOworICAgICAgICAgICAgICAgIHZhciBwcm9maWxlRGF0YSA9IHJlY29y
ZFBheWxvYWQuZGF0YS5wcm9maWxlOworICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHBy
b2ZpbGVEYXRhKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9hZGRSZWNvcmQobmV3IFdlYkluc3Bl
Y3Rvci5TY3JpcHRUaW1lbGluZVJlY29yZChXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVSZWNv
cmQuRXZlbnRUeXBlLkNvbnNvbGVQcm9maWxlUmVjb3JkZWQsIHN0YXJ0VGltZSwgZW5kVGltZSwg
Y2FsbEZyYW1lcywgc291cmNlQ29kZUxvY2F0aW9uLCByZWNvcmRQYXlsb2FkLmRhdGEudGl0bGUs
IHByb2ZpbGVEYXRhKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIGNh
c2UgVGltZWxpbmVBZ2VudC5FdmVudFR5cGUuRnVuY3Rpb25DYWxsOgpAQCAtMjQ3LDEwICsyNDUs
NiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVNYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgICAgICBpZiAoIXBhcmVudFJlY29yZFBheWxvYWQpCiAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogCi0gICAgICAgICAgICAgICAgdmFyIHByb2ZpbGUgPSBudWxsOwotICAgICAgICAgICAg
ICAgIGlmIChyZWNvcmRQYXlsb2FkLmRhdGEucHJvZmlsZSkKLSAgICAgICAgICAgICAgICAgICAg
cHJvZmlsZSA9IHRoaXMuX3Byb2ZpbGVGcm9tUGF5bG9hZChyZWNvcmRQYXlsb2FkLmRhdGEucHJv
ZmlsZSk7Ci0KICAgICAgICAgICAgICAgICBpZiAoIXNvdXJjZUNvZGVMb2NhdGlvbikgewogICAg
ICAgICAgICAgICAgICAgICB2YXIgbWFpbkZyYW1lID0gV2ViSW5zcGVjdG9yLmZyYW1lUmVzb3Vy
Y2VNYW5hZ2VyLm1haW5GcmFtZTsKICAgICAgICAgICAgICAgICAgICAgdmFyIHNjcmlwdFJlc291
cmNlID0gbWFpbkZyYW1lLnVybCA9PT0gcmVjb3JkUGF5bG9hZC5kYXRhLnNjcmlwdE5hbWUgPyBt
YWluRnJhbWUubWFpblJlc291cmNlIDogbWFpbkZyYW1lLnJlc291cmNlRm9yVVJMKHJlY29yZFBh
eWxvYWQuZGF0YS5zY3JpcHROYW1lLCB0cnVlKTsKQEAgLTI2MywyMSArMjU3LDIzIEBAIFdlYklu
c3BlY3Rvci5UaW1lbGluZU1hbmFnZXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgfQogCisgICAgICAgICAgICAgICAgdmFyIHByb2ZpbGVEYXRh
ID0gcmVjb3JkUGF5bG9hZC5kYXRhLnByb2ZpbGU7CisKICAgICAgICAgICAgICAgICBzd2l0Y2gg
KHBhcmVudFJlY29yZFBheWxvYWQudHlwZSkgewogICAgICAgICAgICAgICAgIGNhc2UgVGltZWxp
bmVBZ2VudC5FdmVudFR5cGUuVGltZXJGaXJlOgotICAgICAgICAgICAgICAgICAgICB0aGlzLl9h
ZGRSZWNvcmQobmV3IFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVJlY29yZChXZWJJbnNwZWN0
b3IuU2NyaXB0VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBlLlRpbWVyRmlyZWQsIHN0YXJ0VGltZSwg
ZW5kVGltZSwgY2FsbEZyYW1lcywgc291cmNlQ29kZUxvY2F0aW9uLCBwYXJlbnRSZWNvcmRQYXls
b2FkLmRhdGEudGltZXJJZCwgcHJvZmlsZSkpOworICAgICAgICAgICAgICAgICAgICB0aGlzLl9h
ZGRSZWNvcmQobmV3IFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVJlY29yZChXZWJJbnNwZWN0
b3IuU2NyaXB0VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBlLlRpbWVyRmlyZWQsIHN0YXJ0VGltZSwg
ZW5kVGltZSwgY2FsbEZyYW1lcywgc291cmNlQ29kZUxvY2F0aW9uLCBwYXJlbnRSZWNvcmRQYXls
b2FkLmRhdGEudGltZXJJZCwgcHJvZmlsZURhdGEpKTsKICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgY2FzZSBUaW1lbGluZUFnZW50LkV2ZW50VHlwZS5FdmVudERp
c3BhdGNoOgotICAgICAgICAgICAgICAgICAgICB0aGlzLl9hZGRSZWNvcmQobmV3IFdlYkluc3Bl
Y3Rvci5TY3JpcHRUaW1lbGluZVJlY29yZChXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVSZWNv
cmQuRXZlbnRUeXBlLkV2ZW50RGlzcGF0Y2hlZCwgc3RhcnRUaW1lLCBlbmRUaW1lLCBjYWxsRnJh
bWVzLCBzb3VyY2VDb2RlTG9jYXRpb24sIHBhcmVudFJlY29yZFBheWxvYWQuZGF0YS50eXBlLCBw
cm9maWxlKSk7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuX2FkZFJlY29yZChuZXcgV2ViSW5z
cGVjdG9yLlNjcmlwdFRpbWVsaW5lUmVjb3JkKFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVJl
Y29yZC5FdmVudFR5cGUuRXZlbnREaXNwYXRjaGVkLCBzdGFydFRpbWUsIGVuZFRpbWUsIGNhbGxG
cmFtZXMsIHNvdXJjZUNvZGVMb2NhdGlvbiwgcGFyZW50UmVjb3JkUGF5bG9hZC5kYXRhLnR5cGUs
IHByb2ZpbGVEYXRhKSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgIGNhc2UgVGltZWxpbmVBZ2VudC5FdmVudFR5cGUuWEhSTG9hZDoKLSAgICAgICAgICAgICAg
ICAgICAgdGhpcy5fYWRkUmVjb3JkKG5ldyBXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVSZWNv
cmQoV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZS5FdmVudERpc3Bh
dGNoZWQsIHN0YXJ0VGltZSwgZW5kVGltZSwgY2FsbEZyYW1lcywgc291cmNlQ29kZUxvY2F0aW9u
LCAibG9hZCIsIHByb2ZpbGUpKTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fYWRkUmVjb3Jk
KG5ldyBXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVSZWNvcmQoV2ViSW5zcGVjdG9yLlNjcmlw
dFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZS5FdmVudERpc3BhdGNoZWQsIHN0YXJ0VGltZSwgZW5k
VGltZSwgY2FsbEZyYW1lcywgc291cmNlQ29kZUxvY2F0aW9uLCAibG9hZCIsIHByb2ZpbGVEYXRh
KSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgVGlt
ZWxpbmVBZ2VudC5FdmVudFR5cGUuWEhSUmVhZHlTdGF0ZUNoYW5nZToKLSAgICAgICAgICAgICAg
ICAgICAgdGhpcy5fYWRkUmVjb3JkKG5ldyBXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVSZWNv
cmQoV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZS5FdmVudERpc3Bh
dGNoZWQsIHN0YXJ0VGltZSwgZW5kVGltZSwgY2FsbEZyYW1lcywgc291cmNlQ29kZUxvY2F0aW9u
LCAicmVhZHlzdGF0ZWNoYW5nZSIsIHByb2ZpbGUpKTsKKyAgICAgICAgICAgICAgICAgICAgdGhp
cy5fYWRkUmVjb3JkKG5ldyBXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVSZWNvcmQoV2ViSW5z
cGVjdG9yLlNjcmlwdFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZS5FdmVudERpc3BhdGNoZWQsIHN0
YXJ0VGltZSwgZW5kVGltZSwgY2FsbEZyYW1lcywgc291cmNlQ29kZUxvY2F0aW9uLCAicmVhZHlz
dGF0ZWNoYW5nZSIsIHByb2ZpbGVEYXRhKSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgICAgIGNhc2UgVGltZWxpbmVBZ2VudC5FdmVudFR5cGUuRmlyZUFuaW1hdGlv
bkZyYW1lOgotICAgICAgICAgICAgICAgICAgICB0aGlzLl9hZGRSZWNvcmQobmV3IFdlYkluc3Bl
Y3Rvci5TY3JpcHRUaW1lbGluZVJlY29yZChXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVSZWNv
cmQuRXZlbnRUeXBlLkFuaW1hdGlvbkZyYW1lRmlyZWQsIHN0YXJ0VGltZSwgZW5kVGltZSwgY2Fs
bEZyYW1lcywgc291cmNlQ29kZUxvY2F0aW9uLCBwYXJlbnRSZWNvcmRQYXlsb2FkLmRhdGEuaWQs
IHByb2ZpbGUpKTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fYWRkUmVjb3JkKG5ldyBXZWJJ
bnNwZWN0b3IuU2NyaXB0VGltZWxpbmVSZWNvcmQoV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5l
UmVjb3JkLkV2ZW50VHlwZS5BbmltYXRpb25GcmFtZUZpcmVkLCBzdGFydFRpbWUsIGVuZFRpbWUs
IGNhbGxGcmFtZXMsIHNvdXJjZUNvZGVMb2NhdGlvbiwgcGFyZW50UmVjb3JkUGF5bG9hZC5kYXRh
LmlkLCBwcm9maWxlRGF0YSkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgICAgICB9CiAKQEAgLTI4Niw3ICsyODIsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVNYW5h
Z2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGNhc2UgVGltZWxpbmVBZ2VudC5FdmVudFR5
cGUuUHJvYmVTYW1wbGU6CiAgICAgICAgICAgICAgICAgLy8gUGFzcyB0aGUgc3RhcnRUaW1lIGFz
IHRoZSBlbmRUaW1lIHNpbmNlIHRoaXMgcmVjb3JkIHR5cGUgaGFzIG5vIGR1cmF0aW9uLgogICAg
ICAgICAgICAgICAgIHNvdXJjZUNvZGVMb2NhdGlvbiA9IFdlYkluc3BlY3Rvci5wcm9iZU1hbmFn
ZXIucHJvYmVGb3JJZGVudGlmaWVyKHJlY29yZFBheWxvYWQuZGF0YS5wcm9iZUlkKS5icmVha3Bv
aW50LnNvdXJjZUNvZGVMb2NhdGlvbjsKLSAgICAgICAgICAgICAgICB0aGlzLl9hZGRSZWNvcmQo
bmV3IFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVJlY29yZChXZWJJbnNwZWN0b3IuU2NyaXB0
VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBlLlByb2JlU2FtcGxlUmVjb3JkZWQsIHN0YXJ0VGltZSwg
c3RhcnRUaW1lLCBjYWxsRnJhbWVzLCBzb3VyY2VDb2RlTG9jYXRpb24sIHJlY29yZFBheWxvYWQu
ZGF0YS5wcm9iZUlkLCBwcm9maWxlKSk7CisgICAgICAgICAgICAgICAgdGhpcy5fYWRkUmVjb3Jk
KG5ldyBXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVSZWNvcmQoV2ViSW5zcGVjdG9yLlNjcmlw
dFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZS5Qcm9iZVNhbXBsZVJlY29yZGVkLCBzdGFydFRpbWUs
IHN0YXJ0VGltZSwgY2FsbEZyYW1lcywgc291cmNlQ29kZUxvY2F0aW9uLCByZWNvcmRQYXlsb2Fk
LmRhdGEucHJvYmVJZCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICBj
YXNlIFRpbWVsaW5lQWdlbnQuRXZlbnRUeXBlLlRpbWVySW5zdGFsbDoKQEAgLTM0OCw3NCArMzQ0
LDYgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFuYWdlci5wcm90b3R5cGUgPSB7CiAKICAgICAv
LyBQcml2YXRlCiAKLSAgICBfcHJvZmlsZUZyb21QYXlsb2FkOiBmdW5jdGlvbihwYXlsb2FkKQot
ICAgIHsKLSAgICAgICAgaWYgKCFwYXlsb2FkKQotICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0K
LSAgICAgICAgY29uc29sZS5hc3NlcnQocGF5bG9hZC5yb290Tm9kZXMgaW5zdGFuY2VvZiBBcnJh
eSk7Ci0KLSAgICAgICAgZnVuY3Rpb24gcHJvZmlsZU5vZGVGcm9tUGF5bG9hZChub2RlUGF5bG9h
ZCkKLSAgICAgICAgewotICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoImlkIiBpbiBub2RlUGF5
bG9hZCk7Ci0gICAgICAgICAgICBjb25zb2xlLmFzc2VydChub2RlUGF5bG9hZC5jYWxscyBpbnN0
YW5jZW9mIEFycmF5KTsKLQotICAgICAgICAgICAgaWYgKG5vZGVQYXlsb2FkLnVybCkgewotICAg
ICAgICAgICAgICAgIHZhciBzb3VyY2VDb2RlID0gV2ViSW5zcGVjdG9yLmZyYW1lUmVzb3VyY2VN
YW5hZ2VyLnJlc291cmNlRm9yVVJMKG5vZGVQYXlsb2FkLnVybCk7Ci0gICAgICAgICAgICAgICAg
aWYgKCFzb3VyY2VDb2RlKQotICAgICAgICAgICAgICAgICAgICBzb3VyY2VDb2RlID0gV2ViSW5z
cGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5zY3JpcHRzRm9yVVJMKG5vZGVQYXlsb2FkLnVybClbMF07
Ci0KLSAgICAgICAgICAgICAgICAvLyBUaGUgbGluZU51bWJlciBpcyAxLWJhc2VkLCBidXQgd2Ug
ZXhwZWN0IDAtYmFzZWQuCi0gICAgICAgICAgICAgICAgdmFyIGxpbmVOdW1iZXIgPSBub2RlUGF5
bG9hZC5saW5lTnVtYmVyIC0gMTsKLQotICAgICAgICAgICAgICAgIHZhciBzb3VyY2VDb2RlTG9j
YXRpb24gPSBzb3VyY2VDb2RlID8gc291cmNlQ29kZS5jcmVhdGVTb3VyY2VDb2RlTG9jYXRpb24o
bGluZU51bWJlciwgbm9kZVBheWxvYWQuY29sdW1uTnVtYmVyKSA6IG51bGw7Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgIHZhciBpc1Byb2dyYW1Db2RlID0gbm9kZVBheWxvYWQuZnVuY3Rp
b25OYW1lID09PSAiKHByb2dyYW0pIjsKLSAgICAgICAgICAgIHZhciBpc0Fub255bW91c0Z1bmN0
aW9uID0gbm9kZVBheWxvYWQuZnVuY3Rpb25OYW1lID09PSAiKGFub255bW91cyBmdW5jdGlvbiki
OwotCi0gICAgICAgICAgICB2YXIgdHlwZSA9IGlzUHJvZ3JhbUNvZGUgPyBXZWJJbnNwZWN0b3Iu
UHJvZmlsZU5vZGUuVHlwZS5Qcm9ncmFtIDogV2ViSW5zcGVjdG9yLlByb2ZpbGVOb2RlLlR5cGUu
RnVuY3Rpb247Ci0gICAgICAgICAgICB2YXIgZnVuY3Rpb25OYW1lID0gIWlzUHJvZ3JhbUNvZGUg
JiYgIWlzQW5vbnltb3VzRnVuY3Rpb24gJiYgbm9kZVBheWxvYWQuZnVuY3Rpb25OYW1lICE9PSAi
KHVua25vd24pIiA/IG5vZGVQYXlsb2FkLmZ1bmN0aW9uTmFtZSA6IG51bGw7Ci0gICAgICAgICAg
ICB2YXIgY2FsbHMgPSBub2RlUGF5bG9hZC5jYWxscy5tYXAocHJvZmlsZU5vZGVDYWxsRnJvbVBh
eWxvYWQpOwotCi0gICAgICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Qcm9maWxlTm9k
ZShub2RlUGF5bG9hZC5pZCwgdHlwZSwgZnVuY3Rpb25OYW1lLCBzb3VyY2VDb2RlTG9jYXRpb24s
IGNhbGxzLCBub2RlUGF5bG9hZC5jaGlsZHJlbik7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5j
dGlvbiBwcm9maWxlTm9kZUNhbGxGcm9tUGF5bG9hZChub2RlQ2FsbFBheWxvYWQpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCJzdGFydFRpbWUiIGluIG5vZGVDYWxsUGF5
bG9hZCk7Ci0gICAgICAgICAgICBjb25zb2xlLmFzc2VydCgidG90YWxUaW1lIiBpbiBub2RlQ2Fs
bFBheWxvYWQpOwotCi0gICAgICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Qcm9maWxl
Tm9kZUNhbGwobm9kZUNhbGxQYXlsb2FkLnN0YXJ0VGltZSwgbm9kZUNhbGxQYXlsb2FkLnRvdGFs
VGltZSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgcm9vdE5vZGVzID0gcGF5bG9hZC5yb290
Tm9kZXM7Ci0KLSAgICAgICAgLy8gSXRlcmF0ZSBvdmVyIHRoZSBub2RlIHRyZWUgdXNpbmcgYSBz
dGFjay4gRG9pbmcgdGhpcyByZWN1cnNpdmVseSBjYW4gZWFzaWx5IGNhdXNlIGEgc3RhY2sgb3Zl
cmZsb3cuCi0gICAgICAgIC8vIFdlIHRyYXZlcnNlIHRoZSBwcm9maWxlIGluIHBvc3Qtb3JkZXIg
YW5kIGNvbnZlcnQgdGhlIHBheWxvYWRzIGluIHBsYWNlIHVudGlsIHdlIGdldCBiYWNrIHRvIHRo
ZSByb290LgotICAgICAgICB2YXIgc3RhY2sgPSBbe3BhcmVudDoge2NoaWxkcmVuOiByb290Tm9k
ZXN9LCBpbmRleDogMCwgcm9vdDogdHJ1ZX1dOwotICAgICAgICB3aGlsZSAoc3RhY2subGVuZ3Ro
KSB7Ci0gICAgICAgICAgICB2YXIgZW50cnkgPSBzdGFjay5sYXN0VmFsdWU7Ci0KLSAgICAgICAg
ICAgIGlmIChlbnRyeS5pbmRleCA8IGVudHJ5LnBhcmVudC5jaGlsZHJlbi5sZW5ndGgpIHsKLSAg
ICAgICAgICAgICAgICB2YXIgY2hpbGROb2RlUGF5bG9hZCA9IGVudHJ5LnBhcmVudC5jaGlsZHJl
bltlbnRyeS5pbmRleF07Ci0gICAgICAgICAgICAgICAgaWYgKGNoaWxkTm9kZVBheWxvYWQuY2hp
bGRyZW4gJiYgY2hpbGROb2RlUGF5bG9hZC5jaGlsZHJlbi5sZW5ndGgpCi0gICAgICAgICAgICAg
ICAgICAgIHN0YWNrLnB1c2goe3BhcmVudDogY2hpbGROb2RlUGF5bG9hZCwgaW5kZXg6IDB9KTsK
LQotICAgICAgICAgICAgICAgICsrZW50cnkuaW5kZXg7Ci0gICAgICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgICAgIGlmICghZW50cnkucm9vdCkKLSAgICAgICAgICAgICAgICAgICAgZW50
cnkucGFyZW50LmNoaWxkcmVuID0gZW50cnkucGFyZW50LmNoaWxkcmVuLm1hcChwcm9maWxlTm9k
ZUZyb21QYXlsb2FkKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAg
IHJvb3ROb2RlcyA9IHJvb3ROb2Rlcy5tYXAocHJvZmlsZU5vZGVGcm9tUGF5bG9hZCk7Ci0KLSAg
ICAgICAgICAgICAgICBzdGFjay5wb3AoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0g
ICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlByb2ZpbGUocm9vdE5vZGVzLCBwYXlsb2Fk
LmlkbGVUaW1lKTsKLSAgICB9LAotCiAgICAgX2NhbGxGcmFtZXNGcm9tUGF5bG9hZDogZnVuY3Rp
b24ocGF5bG9hZCkKICAgICB7CiAgICAgICAgIGlmICghcGF5bG9hZCkKQEAgLTQzOCw3ICszNjYs
NyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVNYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIC8vIFRoZSBsaW5lTnVtYmVyIGlzIDEtYmFzZWQsIGJ1dCB3ZSBleHBlY3QgMC1iYXNlZC4K
ICAgICAgICAgICAgIHZhciBsaW5lTnVtYmVyID0gcGF5bG9hZC5saW5lTnVtYmVyIC0gMTsKIAot
ICAgICAgICAgICAgdmFyIHNvdXJjZUNvZGVMb2NhdGlvbiA9IHNvdXJjZUNvZGUgPyBzb3VyY2VD
b2RlLmNyZWF0ZVNvdXJjZUNvZGVMb2NhdGlvbihsaW5lTnVtYmVyLCBwYXlsb2FkLmNvbHVtbk51
bWJlcikgOiBudWxsOworICAgICAgICAgICAgdmFyIHNvdXJjZUNvZGVMb2NhdGlvbiA9IHNvdXJj
ZUNvZGUgPyBzb3VyY2VDb2RlLmNyZWF0ZUxhenlTb3VyY2VDb2RlTG9jYXRpb24obGluZU51bWJl
ciwgcGF5bG9hZC5jb2x1bW5OdW1iZXIpIDogbnVsbDsKICAgICAgICAgICAgIHZhciBmdW5jdGlv
bk5hbWUgPSBwYXlsb2FkLmZ1bmN0aW9uTmFtZSAhPT0gImdsb2JhbCBjb2RlIiA/IHBheWxvYWQu
ZnVuY3Rpb25OYW1lIDogbnVsbDsKIAogICAgICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0
b3IuQ2FsbEZyYW1lKG51bGwsIHNvdXJjZUNvZGVMb2NhdGlvbiwgZnVuY3Rpb25OYW1lLCBudWxs
LCBudWxsLCBuYXRpdmVDb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01haW4uaHRtbCBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01haW4uaHRtbAppbmRleCBmODE1ZDFiLi5jMWUyZDk0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCkBAIC0xOTgsNiArMTk4LDcgQEAKIAog
ICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvQnJlYWtwb2ludEFjdGlvbi5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9Tb3VyY2VDb2RlLmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHNyYz0iTW9kZWxzL1NvdXJjZUNvZGVMb2NhdGlvbi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCBzcmM9Ik1vZGVscy9UaW1lbGluZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
Ik1vZGVscy9UaW1lbGluZVJlY29yZC5qcyI+PC9zY3JpcHQ+CiAKQEAgLTIzNyw2ICsyMzgsNyBA
QAogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvSXNzdWVNZXNzYWdlLmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHNyYz0iTW9kZWxzL0tleWJvYXJkU2hvcnRjdXQuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgc3JjPSJNb2RlbHMvTGF5b3V0VGltZWxpbmVSZWNvcmQuanMiPjwvc2NyaXB0Pgor
ICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvTGF6eVNvdXJjZUNvZGVMb2NhdGlvbi5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9Mb2dPYmplY3QuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgc3JjPSJNb2RlbHMvTmV0d29ya1RpbWVsaW5lLmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0IHNyYz0iTW9kZWxzL1Byb2JlLmpzIj48L3NjcmlwdD4KQEAgLTI1Nyw3ICsyNTksNiBA
QAogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvU2NyaXB0LmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0iTW9kZWxzL1NjcmlwdFRpbWVsaW5lUmVjb3JkLmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0IHNyYz0iTW9kZWxzL1NldHRpbmcuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3Jj
PSJNb2RlbHMvU291cmNlQ29kZUxvY2F0aW9uLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iTW9kZWxzL1NvdXJjZUNvZGVQb3NpdGlvbi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBz
cmM9Ik1vZGVscy9Tb3VyY2VDb2RlUmV2aXNpb24uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
c3JjPSJNb2RlbHMvU291cmNlQ29kZVRleHRSYW5nZS5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvTGF6eVNvdXJjZUNv
ZGVMb2NhdGlvbi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVs
cy9MYXp5U291cmNlQ29kZUxvY2F0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjQ4Y2QxZmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Nb2RlbHMvTGF6eVNvdXJjZUNvZGVMb2NhdGlvbi5qcwpAQCAtMCwwICsx
LDExNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKy8vIEZJWE1FOiBJbnZlc3RpZ2F0ZSBmb2xkaW5nIHRoaXMg
aW50byBTb3VyY2VDb2RlTG9jYXRpb24gcHJvcGVyIHNvIGl0IGNhbiBhbHdheXMgYmUgYXMgbGF6
eSBhcyBwb3NzaWJsZS4KKworLy8gTGF6aWx5IGNvbXB1dGUgdGhlIGZ1bGwgU291cmNlQ29kZUxv
Y2F0aW9uIGluZm9ybWF0aW9uIG9ubHkgd2hlbiBzdWNoIGluZm9ybWF0aW9uIGlzIG5lZWRlZC4K
Ky8vICAtIHJhdyBpbmZvcm1hdGlvbiBkb2Vzbid0IHJlcXVpcmUgaW5pdGlhbGl6YXRpb24sIHdl
IGhhdmUgdGhhdCBpbmZvcm1hdGlvbgorLy8gIC0gZm9ybWF0dGVkIGluZm9ybWF0aW9uIGRvZXMg
cmVxdWlyZSBpbml0aWFsaXphdGlvbiwgZG9uZSBieSBvdmVycmlkaW5nIHB1YmxpYyBBUElzLgor
Ly8gIC0gZGlzcGxheSBpbmZvcm1hdGlvbiBkb2VzIHJlcXVpcmUgaW5pdGlhbGl6YXRpb24sIGRv
bmUgYnkgb3ZlcnJpZGluZyBwcml2YXRlIGZ1bm5lbCBBUEkgcmVzb2x2ZU1hcHBlZExvY2F0aW9u
LgorCitXZWJJbnNwZWN0b3IuTGF6eVNvdXJjZUNvZGVMb2NhdGlvbiA9IGZ1bmN0aW9uKHNvdXJj
ZUNvZGUsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKK3sKKyAgICBXZWJJbnNwZWN0b3IuU291
cmNlQ29kZUxvY2F0aW9uLmNhbGwodGhpcywgbnVsbCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVy
KTsKKworICAgIGNvbnNvbGUuYXNzZXJ0KHNvdXJjZUNvZGUpOworCisgICAgdGhpcy5faW5pdGlh
bGl6ZWQgPSBmYWxzZTsKKyAgICB0aGlzLl9sYXp5U291cmNlQ29kZSA9IHNvdXJjZUNvZGU7Cit9
OworCitXZWJJbnNwZWN0b3IuTGF6eVNvdXJjZUNvZGVMb2NhdGlvbi5wcm90b3R5cGUgPSB7Cisg
ICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5MYXp5U291cmNlQ29kZUxvY2F0aW9uLAorCisg
ICAgLy8gUHVibGljCisKKyAgICBpc0VxdWFsOiBmdW5jdGlvbihvdGhlcikKKyAgICB7CisgICAg
ICAgIGlmICghb3RoZXIpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVy
biB0aGlzLl9sYXp5U291cmNlQ29kZSA9PT0gb3RoZXIuX3NvdXJjZUNvZGUgJiYgdGhpcy5fbGlu
ZU51bWJlciA9PT0gb3RoZXIuX2xpbmVOdW1iZXIgJiYgdGhpcy5fY29sdW1uTnVtYmVyID09PSBv
dGhlci5fY29sdW1uTnVtYmVyOworICAgIH0sCisKKyAgICBnZXQgc291cmNlQ29kZSgpCisgICAg
eworICAgICAgICByZXR1cm4gdGhpcy5fbGF6eVNvdXJjZUNvZGU7CisgICAgfSwKKworICAgIHNl
dCBzb3VyY2VDb2RlKHNvdXJjZUNvZGUpCisgICAgeworICAgICAgICAvLyBHZXR0ZXIgYW5kIHNl
dHRlciBtdXN0IGJlIHByb3ZpZGVkIHRvZ2V0aGVyLgorICAgICAgICB0aGlzLnNldFNvdXJjZUNv
ZGUoc291cmNlQ29kZSk7CisgICAgfSwKKworICAgIGdldCBmb3JtYXR0ZWRMaW5lTnVtYmVyKCkK
KyAgICB7CisgICAgICAgIHRoaXMuX2xhenlJbml0aWFsaXphdGlvbigpOworICAgICAgICByZXR1
cm4gdGhpcy5fZm9ybWF0dGVkTGluZU51bWJlcjsKKyAgICB9LAorCisgICAgZ2V0IGZvcm1hdHRl
ZENvbHVtbk51bWJlcigpCisgICAgeworICAgICAgICB0aGlzLl9sYXp5SW5pdGlhbGl6YXRpb24o
KTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2Zvcm1hdHRlZENvbHVtbk51bWJlcjsKKyAgICB9LAor
CisgICAgZm9ybWF0dGVkUG9zaXRpb246IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMu
X2xhenlJbml0aWFsaXphdGlvbigpOworICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5T
b3VyY2VDb2RlUG9zaXRpb24odGhpcy5fZm9ybWF0dGVkTGluZU51bWJlciwgdGhpcy5fZm9ybWF0
dGVkQ29sdW1uTnVtYmVyKTsKKyAgICB9LAorCisgICAgaGFzRm9ybWF0dGVkTG9jYXRpb246IGZ1
bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2xhenlJbml0aWFsaXphdGlvbigpOworICAg
ICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVMb2NhdGlvbi5wcm90b3R5cGUuaGFz
Rm9ybWF0dGVkTG9jYXRpb24uY2FsbCh0aGlzKTsKKyAgICB9LAorCisgICAgaGFzRGlmZmVyZW50
RGlzcGxheUxvY2F0aW9uOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9sYXp5SW5p
dGlhbGl6YXRpb24oKTsKKyAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlTG9j
YXRpb24ucHJvdG90eXBlLmhhc0RpZmZlcmVudERpc3BsYXlMb2NhdGlvbi5jYWxsKHRoaXMpOwor
ICAgIH0sCisKKyAgICAvLyBQcm90ZWN0ZWQKKworICAgIHJlc29sdmVNYXBwZWRMb2NhdGlvbjog
ZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fbGF6eUluaXRpYWxpemF0aW9uKCk7Cisg
ICAgICAgIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlTG9jYXRpb24ucHJvdG90eXBlLnJlc29sdmVN
YXBwZWRMb2NhdGlvbi5jYWxsKHRoaXMpOworICAgIH0sCisKKyAgICAvLyBQcml2YXRlCisKKyAg
ICBfbGF6eUluaXRpYWxpemF0aW9uOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAoIXRo
aXMuX2luaXRpYWxpemVkKSB7CisgICAgICAgICAgICB0aGlzLl9pbml0aWFsaXplZCA9IHRydWU7
CisgICAgICAgICAgICB0aGlzLnNvdXJjZUNvZGUgPSB0aGlzLl9sYXp5U291cmNlQ29kZTsKKyAg
ICAgICAgfQorICAgIH0KK307CisKK1dlYkluc3BlY3Rvci5MYXp5U291cmNlQ29kZUxvY2F0aW9u
LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuU291cmNlQ29kZUxvY2F0aW9uLnBy
b3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01vZGVscy9TY3JpcHRUaW1lbGluZVJlY29yZC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01vZGVscy9TY3JpcHRUaW1lbGluZVJlY29yZC5qcwppbmRleCAwZTcwZmNh
Li5mNTdlNzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Nb2RlbHMvU2NyaXB0VGltZWxpbmVSZWNvcmQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NjcmlwdFRpbWVsaW5lUmVjb3JkLmpzCkBAIC0yMyw3
ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2Vi
SW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lUmVjb3JkID0gZnVuY3Rpb24oZXZlbnRUeXBlLCBzdGFy
dFRpbWUsIGVuZFRpbWUsIGNhbGxGcmFtZXMsIHNvdXJjZUNvZGVMb2NhdGlvbiwgZGV0YWlscywg
cHJvZmlsZSkKK1dlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVJlY29yZCA9IGZ1bmN0aW9uKGV2
ZW50VHlwZSwgc3RhcnRUaW1lLCBlbmRUaW1lLCBjYWxsRnJhbWVzLCBzb3VyY2VDb2RlTG9jYXRp
b24sIGRldGFpbHMsIHByb2ZpbGVQYXlsb2FkKQogewogICAgIFdlYkluc3BlY3Rvci5UaW1lbGlu
ZVJlY29yZC5jYWxsKHRoaXMsIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBlLlNjcmlw
dCwgc3RhcnRUaW1lLCBlbmRUaW1lLCBjYWxsRnJhbWVzLCBzb3VyY2VDb2RlTG9jYXRpb24pOwog
CkBAIC0zNCw3ICszNCw4IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVJlY29yZCA9IGZ1
bmN0aW9uKGV2ZW50VHlwZSwgc3RhcnRUaW1lLCBlbmRUaW1lLCBjYWxsCiAKICAgICB0aGlzLl9l
dmVudFR5cGUgPSBldmVudFR5cGU7CiAgICAgdGhpcy5fZGV0YWlscyA9IGRldGFpbHMgfHwgIiI7
Ci0gICAgdGhpcy5fcHJvZmlsZSA9IHByb2ZpbGUgfHwgbnVsbDsKKyAgICB0aGlzLl9wcm9maWxl
UGF5bG9hZCA9IHByb2ZpbGVQYXlsb2FkIHx8IG51bGw7CisgICAgdGhpcy5fcHJvZmlsZSA9IG51
bGw7CiB9OwogCiBXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBlID0g
ewpAQCAtMjYzLDYgKzI2NCw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVJlY29yZC5w
cm90b3R5cGUgPSB7CiAKICAgICBnZXQgcHJvZmlsZSgpCiAgICAgeworICAgICAgICB0aGlzLl9p
bml0aWFsaXplUHJvZmlsZUZyb21QYXlsb2FkKCk7CiAgICAgICAgIHJldHVybiB0aGlzLl9wcm9m
aWxlOwogICAgIH0sCiAKQEAgLTI3Miw2ICsyNzQsNzggQEAgV2ViSW5zcGVjdG9yLlNjcmlwdFRp
bWVsaW5lUmVjb3JkLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9y
LlNjcmlwdFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZUNvb2tpZUtleV0gPSB0aGlzLl9ldmVudFR5
cGU7CiAgICAgICAgIGNvb2tpZVtXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVSZWNvcmQuRGV0
YWlsc0Nvb2tpZUtleV0gPSB0aGlzLl9kZXRhaWxzOworICAgIH0sCisKKyAgICAvLyBQcml2YXRl
CisKKyAgICBfaW5pdGlhbGl6ZVByb2ZpbGVGcm9tUGF5bG9hZDogZnVuY3Rpb24ocGF5bG9hZCkK
KyAgICB7CisgICAgICAgIGlmICh0aGlzLl9wcm9maWxlIHx8ICF0aGlzLl9wcm9maWxlUGF5bG9h
ZCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2YXIgcGF5bG9hZCA9IHRoaXMuX3By
b2ZpbGVQYXlsb2FkOworCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHBheWxvYWQucm9vdE5vZGVz
IGluc3RhbmNlb2YgQXJyYXkpOworCisgICAgICAgIGZ1bmN0aW9uIHByb2ZpbGVOb2RlRnJvbVBh
eWxvYWQobm9kZVBheWxvYWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KCJpZCIgaW4gbm9kZVBheWxvYWQpOworICAgICAgICAgICAgY29uc29sZS5hc3NlcnQobm9kZVBh
eWxvYWQuY2FsbHMgaW5zdGFuY2VvZiBBcnJheSk7CisKKyAgICAgICAgICAgIGlmIChub2RlUGF5
bG9hZC51cmwpIHsKKyAgICAgICAgICAgICAgICB2YXIgc291cmNlQ29kZSA9IFdlYkluc3BlY3Rv
ci5mcmFtZVJlc291cmNlTWFuYWdlci5yZXNvdXJjZUZvclVSTChub2RlUGF5bG9hZC51cmwpOwor
ICAgICAgICAgICAgICAgIGlmICghc291cmNlQ29kZSkKKyAgICAgICAgICAgICAgICAgICAgc291
cmNlQ29kZSA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIuc2NyaXB0c0ZvclVSTChub2Rl
UGF5bG9hZC51cmwpWzBdOworCisgICAgICAgICAgICAgICAgLy8gVGhlIGxpbmVOdW1iZXIgaXMg
MS1iYXNlZCwgYnV0IHdlIGV4cGVjdCAwLWJhc2VkLgorICAgICAgICAgICAgICAgIHZhciBsaW5l
TnVtYmVyID0gbm9kZVBheWxvYWQubGluZU51bWJlciAtIDE7CisKKyAgICAgICAgICAgICAgICB2
YXIgc291cmNlQ29kZUxvY2F0aW9uID0gc291cmNlQ29kZSA/IHNvdXJjZUNvZGUuY3JlYXRlTGF6
eVNvdXJjZUNvZGVMb2NhdGlvbihsaW5lTnVtYmVyLCBub2RlUGF5bG9hZC5jb2x1bW5OdW1iZXIp
IDogbnVsbDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIGlzUHJvZ3JhbUNvZGUg
PSBub2RlUGF5bG9hZC5mdW5jdGlvbk5hbWUgPT09ICIocHJvZ3JhbSkiOworICAgICAgICAgICAg
dmFyIGlzQW5vbnltb3VzRnVuY3Rpb24gPSBub2RlUGF5bG9hZC5mdW5jdGlvbk5hbWUgPT09ICIo
YW5vbnltb3VzIGZ1bmN0aW9uKSI7CisKKyAgICAgICAgICAgIHZhciB0eXBlID0gaXNQcm9ncmFt
Q29kZSA/IFdlYkluc3BlY3Rvci5Qcm9maWxlTm9kZS5UeXBlLlByb2dyYW0gOiBXZWJJbnNwZWN0
b3IuUHJvZmlsZU5vZGUuVHlwZS5GdW5jdGlvbjsKKyAgICAgICAgICAgIHZhciBmdW5jdGlvbk5h
bWUgPSAhaXNQcm9ncmFtQ29kZSAmJiAhaXNBbm9ueW1vdXNGdW5jdGlvbiAmJiBub2RlUGF5bG9h
ZC5mdW5jdGlvbk5hbWUgIT09ICIodW5rbm93bikiID8gbm9kZVBheWxvYWQuZnVuY3Rpb25OYW1l
IDogbnVsbDsKKyAgICAgICAgICAgIHZhciBjYWxscyA9IG5vZGVQYXlsb2FkLmNhbGxzLm1hcChw
cm9maWxlTm9kZUNhbGxGcm9tUGF5bG9hZCk7CisKKyAgICAgICAgICAgIHJldHVybiBuZXcgV2Vi
SW5zcGVjdG9yLlByb2ZpbGVOb2RlKG5vZGVQYXlsb2FkLmlkLCB0eXBlLCBmdW5jdGlvbk5hbWUs
IHNvdXJjZUNvZGVMb2NhdGlvbiwgY2FsbHMsIG5vZGVQYXlsb2FkLmNoaWxkcmVuKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHByb2ZpbGVOb2RlQ2FsbEZyb21QYXlsb2FkKG5vZGVD
YWxsUGF5bG9hZCkKKyAgICAgICAgeworICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoInN0YXJ0
VGltZSIgaW4gbm9kZUNhbGxQYXlsb2FkKTsKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCJ0
b3RhbFRpbWUiIGluIG5vZGVDYWxsUGF5bG9hZCk7CisKKyAgICAgICAgICAgIHJldHVybiBuZXcg
V2ViSW5zcGVjdG9yLlByb2ZpbGVOb2RlQ2FsbChub2RlQ2FsbFBheWxvYWQuc3RhcnRUaW1lLCBu
b2RlQ2FsbFBheWxvYWQudG90YWxUaW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciByb290
Tm9kZXMgPSBwYXlsb2FkLnJvb3ROb2RlczsKKworICAgICAgICAvLyBJdGVyYXRlIG92ZXIgdGhl
IG5vZGUgdHJlZSB1c2luZyBhIHN0YWNrLiBEb2luZyB0aGlzIHJlY3Vyc2l2ZWx5IGNhbiBlYXNp
bHkgY2F1c2UgYSBzdGFjayBvdmVyZmxvdy4KKyAgICAgICAgLy8gV2UgdHJhdmVyc2UgdGhlIHBy
b2ZpbGUgaW4gcG9zdC1vcmRlciBhbmQgY29udmVydCB0aGUgcGF5bG9hZHMgaW4gcGxhY2UgdW50
aWwgd2UgZ2V0IGJhY2sgdG8gdGhlIHJvb3QuCisgICAgICAgIHZhciBzdGFjayA9IFt7cGFyZW50
OiB7Y2hpbGRyZW46IHJvb3ROb2Rlc30sIGluZGV4OiAwLCByb290OiB0cnVlfV07CisgICAgICAg
IHdoaWxlIChzdGFjay5sZW5ndGgpIHsKKyAgICAgICAgICAgIHZhciBlbnRyeSA9IHN0YWNrLmxh
c3RWYWx1ZTsKKworICAgICAgICAgICAgaWYgKGVudHJ5LmluZGV4IDwgZW50cnkucGFyZW50LmNo
aWxkcmVuLmxlbmd0aCkgeworICAgICAgICAgICAgICAgIHZhciBjaGlsZE5vZGVQYXlsb2FkID0g
ZW50cnkucGFyZW50LmNoaWxkcmVuW2VudHJ5LmluZGV4XTsKKyAgICAgICAgICAgICAgICBpZiAo
Y2hpbGROb2RlUGF5bG9hZC5jaGlsZHJlbiAmJiBjaGlsZE5vZGVQYXlsb2FkLmNoaWxkcmVuLmxl
bmd0aCkKKyAgICAgICAgICAgICAgICAgICAgc3RhY2sucHVzaCh7cGFyZW50OiBjaGlsZE5vZGVQ
YXlsb2FkLCBpbmRleDogMH0pOworCisgICAgICAgICAgICAgICAgKytlbnRyeS5pbmRleDsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKCFlbnRyeS5yb290KQorICAg
ICAgICAgICAgICAgICAgICBlbnRyeS5wYXJlbnQuY2hpbGRyZW4gPSBlbnRyeS5wYXJlbnQuY2hp
bGRyZW4ubWFwKHByb2ZpbGVOb2RlRnJvbVBheWxvYWQpOworICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgcm9vdE5vZGVzID0gcm9vdE5vZGVzLm1hcChwcm9maWxlTm9k
ZUZyb21QYXlsb2FkKTsKKworICAgICAgICAgICAgICAgIHN0YWNrLnBvcCgpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fcHJvZmlsZSA9IG5ldyBXZWJJbnNwZWN0
b3IuUHJvZmlsZShyb290Tm9kZXMsIHBheWxvYWQuaWRsZVRpbWUpOwogICAgIH0KIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Tb3Vy
Y2VDb2RlLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Nv
dXJjZUNvZGUuanMKaW5kZXggZmUyNjdkMi4uOGVmMGI1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NvdXJjZUNvZGUuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NvdXJjZUNvZGUuanMKQEAg
LTE0Miw2ICsxNDIsMTEgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGUucHJvdG90eXBlID0gewog
ICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlTG9jYXRpb24odGhpcywg
bGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsKICAgICB9LAogCisgICAgY3JlYXRlTGF6eVNvdXJj
ZUNvZGVMb2NhdGlvbjogZnVuY3Rpb24obGluZU51bWJlciwgY29sdW1uTnVtYmVyKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuTGF6eVNvdXJjZUNvZGVMb2NhdGlvbih0
aGlzLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOworICAgIH0sCisKICAgICBjcmVhdGVTb3Vy
Y2VDb2RlVGV4dFJhbmdlOiBmdW5jdGlvbih0ZXh0UmFuZ2UpCiAgICAgewogICAgICAgICByZXR1
cm4gbmV3IFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dFJhbmdlKHRoaXMsIHRleHRSYW5nZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
U291cmNlQ29kZUxvY2F0aW9uLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTW9kZWxzL1NvdXJjZUNvZGVMb2NhdGlvbi5qcwppbmRleCA1ODNlMTMyLi4yNjhjMmViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU291
cmNlQ29kZUxvY2F0aW9uLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9Tb3VyY2VDb2RlTG9jYXRpb24uanMKQEAgLTg1LDI0ICs4NSw3IEBAIFdlYklu
c3BlY3Rvci5Tb3VyY2VDb2RlTG9jYXRpb24ucHJvdG90eXBlID0gewogCiAgICAgc2V0IHNvdXJj
ZUNvZGUoc291cmNlQ29kZSkKICAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KCh0aGlzLl9z
b3VyY2VDb2RlID09PSBudWxsICYmIHNvdXJjZUNvZGUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
U291cmNlQ29kZSkgfHwgKHRoaXMuX3NvdXJjZUNvZGUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
U291cmNlQ29kZSAmJiBzb3VyY2VDb2RlID09PSBudWxsKSk7Ci0KLSAgICAgICAgaWYgKHNvdXJj
ZUNvZGUgPT09IHRoaXMuX3NvdXJjZUNvZGUpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgdGhpcy5fbWFrZUNoYW5nZUFuZERpc3BhdGNoQ2hhbmdlRXZlbnRJZk5lZWRlZChmdW5jdGlv
bigpIHsKLSAgICAgICAgICAgIGlmICh0aGlzLl9zb3VyY2VDb2RlKSB7Ci0gICAgICAgICAgICAg
ICAgdGhpcy5fc291cmNlQ29kZS5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Tb3Vy
Y2VDb2RlLkV2ZW50LlNvdXJjZU1hcEFkZGVkLCB0aGlzLl9zb3VyY2VDb2RlU291cmNlTWFwQWRk
ZWQsIHRoaXMpOwotICAgICAgICAgICAgICAgIHRoaXMuX3NvdXJjZUNvZGUucmVtb3ZlRXZlbnRM
aXN0ZW5lcihXZWJJbnNwZWN0b3IuU291cmNlQ29kZS5FdmVudC5Gb3JtYXR0ZXJEaWRDaGFuZ2Us
IHRoaXMuX3NvdXJjZUNvZGVGb3JtYXR0ZXJEaWRDaGFuZ2UsIHRoaXMpOwotICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICB0aGlzLl9zb3VyY2VDb2RlID0gc291cmNlQ29kZTsKLQotICAgICAg
ICAgICAgaWYgKHRoaXMuX3NvdXJjZUNvZGUpIHsKLSAgICAgICAgICAgICAgICB0aGlzLl9zb3Vy
Y2VDb2RlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGUuRXZlbnQuU291
cmNlTWFwQWRkZWQsIHRoaXMuX3NvdXJjZUNvZGVTb3VyY2VNYXBBZGRlZCwgdGhpcyk7Ci0gICAg
ICAgICAgICAgICAgdGhpcy5fc291cmNlQ29kZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5Tb3VyY2VDb2RlLkV2ZW50LkZvcm1hdHRlckRpZENoYW5nZSwgdGhpcy5fc291cmNlQ29kZUZv
cm1hdHRlckRpZENoYW5nZSwgdGhpcyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOworICAg
ICAgICB0aGlzLnNldFNvdXJjZUNvZGUoc291cmNlQ29kZSk7CiAgICAgfSwKIAogICAgIC8vIFJh
dyBsaW5lIGFuZCBjb2x1bW4gaW4gdGhlIG9yaWdpbmFsIHNvdXJjZSBjb2RlLgpAQCAtMTQ2LDE5
ICsxMjksMTkgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVMb2NhdGlvbi5wcm90b3R5cGUgPSB7
CiAKICAgICBnZXQgZGlzcGxheVNvdXJjZUNvZGUoKQogICAgIHsKLSAgICAgICAgdGhpcy5fcmVz
b2x2ZU1hcHBlZExvY2F0aW9uKCk7CisgICAgICAgIHRoaXMucmVzb2x2ZU1hcHBlZExvY2F0aW9u
KCk7CiAgICAgICAgIHJldHVybiB0aGlzLl9tYXBwZWRSZXNvdXJjZSB8fCB0aGlzLl9zb3VyY2VD
b2RlOwogICAgIH0sCiAKICAgICBnZXQgZGlzcGxheUxpbmVOdW1iZXIoKQogICAgIHsKLSAgICAg
ICAgdGhpcy5fcmVzb2x2ZU1hcHBlZExvY2F0aW9uKCk7CisgICAgICAgIHRoaXMucmVzb2x2ZU1h
cHBlZExvY2F0aW9uKCk7CiAgICAgICAgIHJldHVybiBpc05hTih0aGlzLl9tYXBwZWRMaW5lTnVt
YmVyKSA/IHRoaXMuX2Zvcm1hdHRlZExpbmVOdW1iZXIgOiB0aGlzLl9tYXBwZWRMaW5lTnVtYmVy
OwogICAgIH0sCiAKICAgICBnZXQgZGlzcGxheUNvbHVtbk51bWJlcigpCiAgICAgewotICAgICAg
ICB0aGlzLl9yZXNvbHZlTWFwcGVkTG9jYXRpb24oKTsKKyAgICAgICAgdGhpcy5yZXNvbHZlTWFw
cGVkTG9jYXRpb24oKTsKICAgICAgICAgcmV0dXJuIGlzTmFOKHRoaXMuX21hcHBlZENvbHVtbk51
bWJlcikgPyB0aGlzLl9mb3JtYXR0ZWRDb2x1bW5OdW1iZXIgOiB0aGlzLl9tYXBwZWRDb2x1bW5O
dW1iZXI7CiAgICAgfSwKIApAQCAtMTk2LDcgKzE3OSw3IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VD
b2RlTG9jYXRpb24ucHJvdG90eXBlID0gewogCiAgICAgaGFzTWFwcGVkTG9jYXRpb246IGZ1bmN0
aW9uKCkKICAgICB7Ci0gICAgICAgIHRoaXMuX3Jlc29sdmVNYXBwZWRMb2NhdGlvbigpOworICAg
ICAgICB0aGlzLnJlc29sdmVNYXBwZWRMb2NhdGlvbigpOwogICAgICAgICByZXR1cm4gdGhpcy5f
bWFwcGVkUmVzb3VyY2UgIT09IG51bGw7CiAgICAgfSwKIApAQCAtMjg3LDYgKzI3MCw2NSBAQCBX
ZWJJbnNwZWN0b3IuU291cmNlQ29kZUxvY2F0aW9uLnByb3RvdHlwZSA9IHsKICAgICAgICAgfS5i
aW5kKHRoaXMpKTsKICAgICB9LAogCisgICAgLy8gUHJvdGVjdGVkCisKKyAgICBzZXRTb3VyY2VD
b2RlOiBmdW5jdGlvbihzb3VyY2VDb2RlKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQo
KHRoaXMuX3NvdXJjZUNvZGUgPT09IG51bGwgJiYgc291cmNlQ29kZSBpbnN0YW5jZW9mIFdlYklu
c3BlY3Rvci5Tb3VyY2VDb2RlKSB8fCAodGhpcy5fc291cmNlQ29kZSBpbnN0YW5jZW9mIFdlYklu
c3BlY3Rvci5Tb3VyY2VDb2RlICYmIHNvdXJjZUNvZGUgPT09IG51bGwpKTsKKworICAgICAgICBp
ZiAoc291cmNlQ29kZSA9PT0gdGhpcy5fc291cmNlQ29kZSkKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICB0aGlzLl9tYWtlQ2hhbmdlQW5kRGlzcGF0Y2hDaGFuZ2VFdmVudElmTmVlZGVk
KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgaWYgKHRoaXMuX3NvdXJjZUNvZGUpIHsKKyAgICAg
ICAgICAgICAgICB0aGlzLl9zb3VyY2VDb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLlNvdXJjZUNvZGUuRXZlbnQuU291cmNlTWFwQWRkZWQsIHRoaXMuX3NvdXJjZUNvZGVTb3Vy
Y2VNYXBBZGRlZCwgdGhpcyk7CisgICAgICAgICAgICAgICAgdGhpcy5fc291cmNlQ29kZS5yZW1v
dmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlLkV2ZW50LkZvcm1hdHRlckRp
ZENoYW5nZSwgdGhpcy5fc291cmNlQ29kZUZvcm1hdHRlckRpZENoYW5nZSwgdGhpcyk7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHRoaXMuX3NvdXJjZUNvZGUgPSBzb3VyY2VDb2RlOwor
CisgICAgICAgICAgICBpZiAodGhpcy5fc291cmNlQ29kZSkgeworICAgICAgICAgICAgICAgIHRo
aXMuX3NvdXJjZUNvZGUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU291cmNlQ29kZS5F
dmVudC5Tb3VyY2VNYXBBZGRlZCwgdGhpcy5fc291cmNlQ29kZVNvdXJjZU1hcEFkZGVkLCB0aGlz
KTsKKyAgICAgICAgICAgICAgICB0aGlzLl9zb3VyY2VDb2RlLmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLlNvdXJjZUNvZGUuRXZlbnQuRm9ybWF0dGVyRGlkQ2hhbmdlLCB0aGlzLl9zb3Vy
Y2VDb2RlRm9ybWF0dGVyRGlkQ2hhbmdlLCB0aGlzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fSk7CisgICAgfSwKKworICAgIHJlc29sdmVNYXBwZWRMb2NhdGlvbjogZnVuY3Rpb24oKQorICAg
IHsKKyAgICAgICAgaWYgKHRoaXMuX21hcHBlZExvY2F0aW9uSXNSZXNvbHZlZCkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9tYXBwZWRSZXNvdXJj
ZSA9PT0gbnVsbCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGlzTmFOKHRoaXMuX21hcHBlZExp
bmVOdW1iZXIpKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoaXNOYU4odGhpcy5fbWFwcGVkQ29s
dW1uTnVtYmVyKSk7CisKKyAgICAgICAgdGhpcy5fbWFwcGVkTG9jYXRpb25Jc1Jlc29sdmVkID0g
dHJ1ZTsKKworICAgICAgICBpZiAoIXRoaXMuX3NvdXJjZUNvZGUpCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgdmFyIHNvdXJjZU1hcHMgPSB0aGlzLl9zb3VyY2VDb2RlLnNvdXJjZU1h
cHM7CisgICAgICAgIGlmICghc291cmNlTWFwcy5sZW5ndGgpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzb3VyY2VNYXBzLmxlbmd0aDsgKytpKSB7
CisgICAgICAgICAgICB2YXIgc291cmNlTWFwID0gc291cmNlTWFwc1tpXTsKKyAgICAgICAgICAg
IHZhciBlbnRyeSA9IHNvdXJjZU1hcC5maW5kRW50cnkodGhpcy5fbGluZU51bWJlciwgdGhpcy5f
Y29sdW1uTnVtYmVyKTsKKyAgICAgICAgICAgIGlmICghZW50cnkgfHwgZW50cnkubGVuZ3RoID09
PSAyKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgY29uc29sZS5hc3Nl
cnQoZW50cnkubGVuZ3RoID09PSA1KTsKKyAgICAgICAgICAgIHZhciB1cmwgPSBlbnRyeVsyXTsK
KyAgICAgICAgICAgIHZhciBzb3VyY2VNYXBSZXNvdXJjZSA9IHNvdXJjZU1hcC5yZXNvdXJjZUZv
clVSTCh1cmwpOworICAgICAgICAgICAgaWYgKCFzb3VyY2VNYXBSZXNvdXJjZSkKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICB0aGlzLl9tYXBwZWRSZXNvdXJjZSA9IHNvdXJj
ZU1hcFJlc291cmNlOworICAgICAgICAgICAgdGhpcy5fbWFwcGVkTGluZU51bWJlciA9IGVudHJ5
WzNdOworICAgICAgICAgICAgdGhpcy5fbWFwcGVkQ29sdW1uTnVtYmVyID0gZW50cnlbNF07Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9LAorCiAgICAgLy8gUHJpdmF0ZQog
CiAgICAgX2xvY2F0aW9uU3RyaW5nOiBmdW5jdGlvbihzb3VyY2VDb2RlLCBsaW5lTnVtYmVyLCBj
b2x1bW5OdW1iZXIsIGNvbHVtblN0eWxlLCBuYW1lU3R5bGUsIHByZWZpeCkKQEAgLTMzNyw0MSAr
Mzc5LDYgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVMb2NhdGlvbi5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIHRoaXMuX21hcHBlZENvbHVtbk51bWJlciA9IG1hcHBlZENvbHVtbk51bWJlcjsKICAg
ICB9LAogCi0gICAgX3Jlc29sdmVNYXBwZWRMb2NhdGlvbjogZnVuY3Rpb24oKQotICAgIHsKLSAg
ICAgICAgaWYgKHRoaXMuX21hcHBlZExvY2F0aW9uSXNSZXNvbHZlZCkKLSAgICAgICAgICAgIHJl
dHVybjsKLQotICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9tYXBwZWRSZXNvdXJjZSA9PT0g
bnVsbCk7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGlzTmFOKHRoaXMuX21hcHBlZExpbmVOdW1i
ZXIpKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoaXNOYU4odGhpcy5fbWFwcGVkQ29sdW1uTnVt
YmVyKSk7Ci0KLSAgICAgICAgdGhpcy5fbWFwcGVkTG9jYXRpb25Jc1Jlc29sdmVkID0gdHJ1ZTsK
LQotICAgICAgICBpZiAoIXRoaXMuX3NvdXJjZUNvZGUpCi0gICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgdmFyIHNvdXJjZU1hcHMgPSB0aGlzLl9zb3VyY2VDb2RlLnNvdXJjZU1hcHM7Ci0g
ICAgICAgIGlmICghc291cmNlTWFwcy5sZW5ndGgpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzb3VyY2VNYXBzLmxlbmd0aDsgKytpKSB7Ci0gICAg
ICAgICAgICB2YXIgc291cmNlTWFwID0gc291cmNlTWFwc1tpXTsKLSAgICAgICAgICAgIHZhciBl
bnRyeSA9IHNvdXJjZU1hcC5maW5kRW50cnkodGhpcy5fbGluZU51bWJlciwgdGhpcy5fY29sdW1u
TnVtYmVyKTsKLSAgICAgICAgICAgIGlmICghZW50cnkgfHwgZW50cnkubGVuZ3RoID09PSAyKQot
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoZW50
cnkubGVuZ3RoID09PSA1KTsKLSAgICAgICAgICAgIHZhciB1cmwgPSBlbnRyeVsyXTsKLSAgICAg
ICAgICAgIHZhciBzb3VyY2VNYXBSZXNvdXJjZSA9IHNvdXJjZU1hcC5yZXNvdXJjZUZvclVSTCh1
cmwpOwotICAgICAgICAgICAgaWYgKCFzb3VyY2VNYXBSZXNvdXJjZSkKLSAgICAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgICAgICB0aGlzLl9tYXBwZWRSZXNvdXJjZSA9IHNvdXJjZU1hcFJl
c291cmNlOwotICAgICAgICAgICAgdGhpcy5fbWFwcGVkTGluZU51bWJlciA9IGVudHJ5WzNdOwot
ICAgICAgICAgICAgdGhpcy5fbWFwcGVkQ29sdW1uTnVtYmVyID0gZW50cnlbNF07Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9LAotCiAgICAgX3Jlc29sdmVGb3JtYXR0ZWRM
b2NhdGlvbjogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3NvdXJjZUNvZGUg
JiYgdGhpcy5fc291cmNlQ29kZS5mb3JtYXR0ZXJTb3VyY2VNYXApIHsKQEAgLTQwMiw3ICs0MDks
NyBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZUxvY2F0aW9uLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgaWYgKGNoYW5nZUZ1bmN0aW9uKQogICAgICAgICAgICAgY2hhbmdlRnVuY3Rpb24uY2FsbCh0
aGlzKTsKIAotICAgICAgICB0aGlzLl9yZXNvbHZlTWFwcGVkTG9jYXRpb24oKTsKKyAgICAgICAg
dGhpcy5yZXNvbHZlTWFwcGVkTG9jYXRpb24oKTsKICAgICAgICAgdGhpcy5fcmVzb2x2ZUZvcm1h
dHRlZExvY2F0aW9uKCk7CiAKICAgICAgICAgLy8gSWYgdGhlIGRpc3BsYXkgc291cmNlIGNvZGUg
aXMgbm9uLW51bGwgdGhlbiB0aGUgYWRkcmVzc2VzIGFyZSBub3QgTmFOIGFuZCBjYW4gYmUgY29t
cGFyZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9N
b2RlbHMvVGltZWxpbmVSZWNvcmRpbmcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Nb2RlbHMvVGltZWxpbmVSZWNvcmRpbmcuanMKaW5kZXggYTRlYTYxNC4uZThhYTcy
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxz
L1RpbWVsaW5lUmVjb3JkaW5nLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9UaW1lbGluZVJlY29yZGluZy5qcwpAQCAtOTksNyArOTksNyBAQCBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmcucHJvdG90eXBlID0gewogICAgICAgICAvLyBBZGQg
dGhlIHJlY29yZCB0byB0aGUgZ2xvYmFsIHRpbWVsaW5lIGJ5IHR5cGUuCiAgICAgICAgIHRoaXMu
X3RpbWVsaW5lcy5nZXQocmVjb3JkLnR5cGUpLmFkZFJlY29yZChyZWNvcmQpOwogCi0gICAgICAg
IC8vIE5ldG93cmsgcmVjb3JkcyBkb24ndCBoYXZlIHNvdXJjZSBjb2RlIHRpbWVsaW5lcy4KKyAg
ICAgICAgLy8gTmV0d29yayByZWNvcmRzIGRvbid0IGhhdmUgc291cmNlIGNvZGUgdGltZWxpbmVz
LgogICAgICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29y
ZC5UeXBlLk5ldHdvcmspCiAgICAgICAgICAgICByZXR1cm47CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>