<?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>143108</bug_id>
          
          <creation_ts>2015-03-26 11:44:40 -0700</creation_ts>
          <short_desc>Web Inspector: Convert sidebar classes to ES6</short_desc>
          <delta_ts>2015-04-21 20:31:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          <blocked>142891</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Timothy Hatcher">timothy</reporter>
          <assigned_to name="Timothy Hatcher">timothy</assigned_to>
          <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>jonowells</cc>
    
    <cc>mattbaker</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1080356</commentid>
    <comment_count>0</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-03-26 11:44:40 -0700</bug_when>
    <thetext>The sidebar classes are easy to convert and working fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080358</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-03-26 11:45:09 -0700</bug_when>
    <thetext>&lt;rdar://problem/20312676&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080359</commentid>
    <comment_count>2</comment_count>
      <attachid>249503</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-03-26 11:47:15 -0700</bug_when>
    <thetext>Created attachment 249503
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080360</commentid>
    <comment_count>3</comment_count>
      <attachid>249504</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-03-26 11:48:19 -0700</bug_when>
    <thetext>Created attachment 249504
Patch (Ignore Space)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080372</commentid>
    <comment_count>4</comment_count>
      <attachid>249504</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-03-26 12:08:42 -0700</bug_when>
    <thetext>Comment on attachment 249504
Patch (Ignore Space)

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

r=me

&gt; Source/WebInspectorUI/UserInterface/Views/ApplicationCacheDetailsSidebarPanel.js:140
&gt; +WebInspector.ApplicationCacheDetailsSidebarPanel.StyleClassName = &quot;application-cache&quot;;

For single use StyleClassName&apos;s I&apos;ve inlining them. Donno if you feel the same, but this feels really verbose for little benefit.

&gt; Source/WebInspectorUI/UserInterface/Views/DOMNodeDetailsSidebarPanel.js:36
&gt; -    this.element.classList.add(WebInspector.DOMNodeDetailsSidebarPanel.StyleClassName);
&gt; +        this.element.classList.add(&quot;dom-node&quot;);

I see sometimes you have been doing this as well.

&gt; Source/WebInspectorUI/UserInterface/Views/DOMNodeDetailsSidebarPanel.js:589
&gt; +            console.log(attribute.name, attribute.value);
&gt; +
&gt;              var node = new WebInspector.DataGridNode({name: attribute.name, value: attribute.value || &quot;&quot;}, false);
&gt; +            console.log(node);

Looks like debug logging we should remove.

&gt; Source/WebInspectorUI/UserInterface/Views/Sidebar.js:274
&gt; +    CollapsedStateDidChange: &quot;sidebar-sidebar-collapsed-state-did-change&quot;,

Compared to the others, this one has an extra &quot;sidebar-&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080489</commentid>
    <comment_count>5</comment_count>
      <attachid>249503</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-03-26 16:39:28 -0700</bug_when>
    <thetext>Comment on attachment 249503
Patch

https://trac.webkit.org/r182041</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249503</attachid>
            <date>2015-03-26 11:47:15 -0700</date>
            <delta_ts>2015-03-26 12:09:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143108-20150326114637.patch</filename>
            <type>text/plain</type>
            <size>226031</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyMDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA3
ZjNmNDhkYzIyYTAwOTM2NzY0NzE4NTlmYWM3OThmNTc2Y2Q2OWI2Li43NWY0ZDE0N2FiZTZkMzJh
NjkyZjQ0ZmM4YWM3NTQxNWVmNTE3MTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwzMyBAQAogMjAxNS0wMy0yNiAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5j
b20+CiAKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQ29udmVydCBzaWRlYmFyIGNsYXNzZXMgdG8g
RVM2CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMx
MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvTW9kZWxzL0tleWJvYXJkU2hvcnRjdXQuanM6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5faGFuZGxlS2V5RG93bik6IENvbnRpbnVlIGlmIGNhbGxi
YWNrIGlzIG51bGwuCisgICAgICAgIChXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5wcm90
b3R5cGUuc2V0IGNhbGxiYWNrKTogQWRkZWQuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Zp
ZXdzL0FwcGxpY2F0aW9uQ2FjaGVEZXRhaWxzU2lkZWJhclBhbmVsLmpzOgorICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLmpzOgorICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRE9NRGV0YWlsc1NpZGViYXJQYW5lbC5qczoKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0RPTU5vZGVEZXRhaWxzU2lkZWJhclBhbmVsLmpzOgor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRGVidWdnZXJTaWRlYmFyUGFuZWwuanM6Cisg
ICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9EZXRhaWxzU2lkZWJhclBhbmVsLmpzOgorICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvTGF5ZXJUcmVlRGV0YWlsc1NpZGViYXJQYW5lbC5q
czoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25TaWRlYmFyUGFuZWwu
anM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9Qcm9iZURldGFpbHNTaWRlYmFyUGFu
ZWwuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZURldGFpbHNTaWRl
YmFyUGFuZWwuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZVNpZGVi
YXJQYW5lbC5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Njb3BlQ2hhaW5EZXRh
aWxzU2lkZWJhclBhbmVsLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvU2lkZWJh
ci5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1NpZGViYXJQYW5lbC5qczoKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lU2lkZWJhclBhbmVsLmpzOgorICAg
ICAgICBDb252ZXJ0ZWQgdG8gRVM2IGNsYXNzZXMuCisKKzIwMTUtMDMtMjYgIFRpbW90aHkgSGF0
Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgorCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IENvbnZl
cnQgc29tZSBWaWV3IGNsYXNzZXMgdG8gRVM2IGNsYXNzZXMKICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzEwNwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvS2V5Ym9hcmRTaG9ydGN1dC5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9LZXlib2FyZFNob3J0
Y3V0LmpzCmluZGV4IGU3YTAzOGUzMzgzZmMwODkwZDNlZDcwNWY3OTU4MDdkMmM3MzJmNWMuLjkw
OWY3YzEzOGJlNmM3MjNhN2RhZDgyYTY3N2NjYTYxNTE5NWEwNjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9LZXlib2FyZFNob3J0Y3V0Lmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9LZXlib2Fy
ZFNob3J0Y3V0LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC03OCw2ICs3OCw5IEBAIFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0
ID0gY2xhc3MgS2V5Ym9hcmRTaG9ydGN1dCBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplCiAgICAg
ICAgICAgICAgICAgaWYgKCFrZXlib2FyZFNob3J0Y3V0Lm1hdGNoZXNFdmVudChldmVudCkpCiAg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCisgICAgICAgICAgICAgICAgaWYgKCFrZXli
b2FyZFNob3J0Y3V0LmNhbGxiYWNrKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKwog
ICAgICAgICAgICAgICAgIGtleWJvYXJkU2hvcnRjdXQuY2FsbGJhY2soZXZlbnQsIGtleWJvYXJk
U2hvcnRjdXQpOwogCiAgICAgICAgICAgICAgICAgaWYgKGtleWJvYXJkU2hvcnRjdXQuaW1wbGlj
aXRseVByZXZlbnRzRGVmYXVsdCkKQEAgLTEyMyw2ICsxMjYsMTMgQEAgV2ViSW5zcGVjdG9yLktl
eWJvYXJkU2hvcnRjdXQgPSBjbGFzcyBLZXlib2FyZFNob3J0Y3V0IGV4dGVuZHMgV2ViSW5zcGVj
dG9yLk9iamUKICAgICAgICAgcmV0dXJuIHRoaXMuX2NhbGxiYWNrOwogICAgIH0KIAorICAgIHNl
dCBjYWxsYmFjayhjYWxsYmFjaykKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFjYWxs
YmFjayB8fCB0eXBlb2YgY2FsbGJhY2sgPT09ICJmdW5jdGlvbiIpOworCisgICAgICAgIHRoaXMu
X2NhbGxiYWNrID0gY2FsbGJhY2sgfHwgbnVsbDsKKyAgICB9CisKICAgICBnZXQgZGlzYWJsZWQo
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQXBwbGljYXRpb25DYWNoZURl
dGFpbHNTaWRlYmFyUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9BcHBsaWNhdGlvbkNhY2hlRGV0YWlsc1NpZGViYXJQYW5lbC5qcwppbmRleCA5MzRk
MjY0NmJjNTcwMjQ0NmRmY2FiZTExNDA3OWFhZTQyZDQxM2Y5Li5mY2FhY2ZiMmQ4YTQ2OGRjMDM2
NWIxY2E3MzE4ZWJjNjdmNTk1NWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9BcHBsaWNhdGlvbkNhY2hlRGV0YWlsc1NpZGViYXJQYW5lbC5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9BcHBsaWNh
dGlvbkNhY2hlRGV0YWlsc1NpZGViYXJQYW5lbC5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsNTQgKzIzLDQwIEBACiAgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkFwcGxpY2F0
aW9uQ2FjaGVEZXRhaWxzU2lkZWJhclBhbmVsID0gZnVuY3Rpb24oKQorV2ViSW5zcGVjdG9yLkFw
cGxpY2F0aW9uQ2FjaGVEZXRhaWxzU2lkZWJhclBhbmVsID0gY2xhc3MgQXBwbGljYXRpb25DYWNo
ZURldGFpbHNTaWRlYmFyUGFuZWwgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NpZGViYXJQ
YW5lbAogewotICAgIFdlYkluc3BlY3Rvci5EZXRhaWxzU2lkZWJhclBhbmVsLmNhbGwodGhpcywg
ImFwcGxpY2F0aW9uLWNhY2hlLWRldGFpbHMiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0b3Jh
Z2UiKSwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdG9yYWdlIiksICJJbWFnZXMvTmF2aWdhdGlv
bkl0ZW1TdG9yYWdlLnN2ZyIpOwotCi0gICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2Vi
SW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVEZXRhaWxzU2lkZWJhclBhbmVsLlN0eWxlQ2xhc3NO
YW1lKTsKKyAgICBjb25zdHJ1Y3RvcigpCisgICAgeworICAgICAgICBzdXBlcigiYXBwbGljYXRp
b24tY2FjaGUtZGV0YWlscyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3RvcmFnZSIpLCBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIlN0b3JhZ2UiKSwgIkltYWdlcy9OYXZpZ2F0aW9uSXRlbVN0b3Jh
Z2Uuc3ZnIik7CiAKLSAgICB0aGlzLl9hcHBsaWNhdGlvbkNhY2hlRnJhbWUgPSBudWxsOworICAg
ICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25D
YWNoZURldGFpbHNTaWRlYmFyUGFuZWwuU3R5bGVDbGFzc05hbWUpOwogCi0gICAgdGhpcy5fbG9j
YXRpb25NYW5pZmVzdFVSTFJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1w
bGVSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJNYW5pZmVzdCBVUkwiKSk7Ci0gICAgdGhpcy5f
bG9jYXRpb25GcmFtZVVSTFJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1w
bGVSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGcmFtZSBVUkwiKSk7CisgICAgICAgIHRoaXMu
X2FwcGxpY2F0aW9uQ2FjaGVGcmFtZSA9IG51bGw7CiAKLSAgICB0aGlzLl9sb2NhdGlvbkdyb3Vw
ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwKFt0aGlzLl9sb2NhdGlvbk1h
bmlmZXN0VVJMUm93LCB0aGlzLl9sb2NhdGlvbkZyYW1lVVJMUm93XSk7CisgICAgICAgIHRoaXMu
X2xvY2F0aW9uTWFuaWZlc3RVUkxSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9u
U2ltcGxlUm93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiTWFuaWZlc3QgVVJMIikpOworICAgICAg
ICB0aGlzLl9sb2NhdGlvbkZyYW1lVVJMUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2Vj
dGlvblNpbXBsZVJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZyYW1lIFVSTCIpKTsKIAotICAg
IHRoaXMuX2xvY2F0aW9uU2VjdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24o
ImFwcGxpY2F0aW9uLWNhY2hlLWxvY2F0aW9uIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJMb2Nh
dGlvbiIpLCBbdGhpcy5fbG9jYXRpb25Hcm91cF0pOworICAgICAgICB0aGlzLl9sb2NhdGlvbkdy
b3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwKFt0aGlzLl9sb2NhdGlv
bk1hbmlmZXN0VVJMUm93LCB0aGlzLl9sb2NhdGlvbkZyYW1lVVJMUm93XSk7CiAKLSAgICB0aGlz
Ll9vbmxpbmVSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiT25saW5lIikpOwotICAgIHRoaXMuX3N0YXR1c1JvdyA9IG5l
dyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3coV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJTdGF0dXMiKSk7CisgICAgICAgIHRoaXMuX2xvY2F0aW9uU2VjdGlvbiA9IG5ldyBXZWJJ
bnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24oImFwcGxpY2F0aW9uLWNhY2hlLWxvY2F0aW9uIiwgV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJMb2NhdGlvbiIpLCBbdGhpcy5fbG9jYXRpb25Hcm91cF0pOwog
Ci0gICAgdGhpcy5fc3RhdHVzR3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9u
R3JvdXAoW3RoaXMuX29ubGluZVJvdywgdGhpcy5fc3RhdHVzUm93XSk7CisgICAgICAgIHRoaXMu
X29ubGluZVJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3coV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJPbmxpbmUiKSk7CisgICAgICAgIHRoaXMuX3N0YXR1c1JvdyA9
IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3coV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJTdGF0dXMiKSk7CiAKLSAgICB0aGlzLl9zdGF0dXNTZWN0aW9uID0gbmV3IFdlYklu
c3BlY3Rvci5EZXRhaWxzU2VjdGlvbigiYXBwbGljYXRpb24tY2FjaGUtc3RhdHVzIiwgV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJTdGF0dXMiKSwgW3RoaXMuX3N0YXR1c0dyb3VwXSk7CisgICAgICAg
IHRoaXMuX3N0YXR1c0dyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3Vw
KFt0aGlzLl9vbmxpbmVSb3csIHRoaXMuX3N0YXR1c1Jvd10pOwogCi0gICAgdGhpcy5jb250ZW50
RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9sb2NhdGlvblNlY3Rpb24uZWxlbWVudCk7Ci0gICAg
dGhpcy5jb250ZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9zdGF0dXNTZWN0aW9uLmVsZW1l
bnQpOworICAgICAgICB0aGlzLl9zdGF0dXNTZWN0aW9uID0gbmV3IFdlYkluc3BlY3Rvci5EZXRh
aWxzU2VjdGlvbigiYXBwbGljYXRpb24tY2FjaGUtc3RhdHVzIiwgV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJTdGF0dXMiKSwgW3RoaXMuX3N0YXR1c0dyb3VwXSk7CiAKLSAgICBXZWJJbnNwZWN0b3Iu
YXBwbGljYXRpb25DYWNoZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQXBw
bGljYXRpb25DYWNoZU1hbmFnZXIuRXZlbnQuTmV0d29ya1N0YXRlVXBkYXRlZCwgdGhpcy5fbmV0
d29ya1N0YXRlVXBkYXRlZCwgdGhpcyk7Ci0gICAgV2ViSW5zcGVjdG9yLmFwcGxpY2F0aW9uQ2Fj
aGVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVN
YW5hZ2VyLkV2ZW50LkZyYW1lTWFuaWZlc3RTdGF0dXNDaGFuZ2VkLCB0aGlzLl9mcmFtZU1hbmlm
ZXN0U3RhdHVzQ2hhbmdlZCwgdGhpcyk7Ci19OwotCi1XZWJJbnNwZWN0b3IuQXBwbGljYXRpb25D
YWNoZURldGFpbHNTaWRlYmFyUGFuZWwuU3R5bGVDbGFzc05hbWUgPSAiYXBwbGljYXRpb24tY2Fj
aGUiOwotCi0vLyBUaGlzIG5lZWRzIHRvIGJlIGtlcHQgaW4gc3luYyB3aXRoIEFwcGxpY2F0aW9u
Q2FjaGVNYW5hZ2VyLmpzLgotV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVEZXRhaWxzU2lk
ZWJhclBhbmVsLlN0YXR1cyA9IHsKLSAgICAwOiAiVW5jYWNoZWQiLAotICAgIDE6ICJJZGxlIiwK
LSAgICAyOiAiQ2hlY2tpbmciLAotICAgIDM6ICJEb3dubG9hZGluZyIsCi0gICAgNDogIlVwZGF0
ZVJlYWR5IiwKLSAgICA1OiAiT2Jzb2xldGUiCi19OworICAgICAgICB0aGlzLmNvbnRlbnRFbGVt
ZW50LmFwcGVuZENoaWxkKHRoaXMuX2xvY2F0aW9uU2VjdGlvbi5lbGVtZW50KTsKKyAgICAgICAg
dGhpcy5jb250ZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9zdGF0dXNTZWN0aW9uLmVsZW1l
bnQpOwogCi1XZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZURldGFpbHNTaWRlYmFyUGFuZWwu
cHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25D
YWNoZURldGFpbHNTaWRlYmFyUGFuZWwsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuRGV0
YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUsCisgICAgICAgIFdlYkluc3BlY3Rvci5hcHBsaWNh
dGlvbkNhY2hlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5BcHBsaWNhdGlv
bkNhY2hlTWFuYWdlci5FdmVudC5OZXR3b3JrU3RhdGVVcGRhdGVkLCB0aGlzLl9uZXR3b3JrU3Rh
dGVVcGRhdGVkLCB0aGlzKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmFwcGxpY2F0aW9uQ2FjaGVN
YW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVNYW5h
Z2VyLkV2ZW50LkZyYW1lTWFuaWZlc3RTdGF0dXNDaGFuZ2VkLCB0aGlzLl9mcmFtZU1hbmlmZXN0
U3RhdHVzQ2hhbmdlZCwgdGhpcyk7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKLSAgICBpbnNw
ZWN0OiBmdW5jdGlvbihvYmplY3RzKQorICAgIGluc3BlY3Qob2JqZWN0cykKICAgICB7CiAgICAg
ICAgIC8vIENvbnZlcnQgdG8gYSBzaW5nbGUgaXRlbSBhcnJheSBpZiBuZWVkZWQuCiAgICAgICAg
IGlmICghKG9iamVjdHMgaW5zdGFuY2VvZiBBcnJheSkpCkBAIC04OSwxMiArNzUsMTIgQEAgV2Vi
SW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVEZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9
IHsKICAgICAgICAgdGhpcy5hcHBsaWNhdGlvbkNhY2hlRnJhbWUgPSBhcHBsaWNhdGlvbkNhY2hl
RnJhbWVUb0luc3BlY3Q7CiAKICAgICAgICAgcmV0dXJuICEhdGhpcy5hcHBsaWNhdGlvbkNhY2hl
RnJhbWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgYXBwbGljYXRpb25DYWNoZUZyYW1lKCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9hcHBsaWNhdGlvbkNhY2hlRnJhbWU7Ci0gICAg
fSwKKyAgICB9CiAKICAgICBzZXQgYXBwbGljYXRpb25DYWNoZUZyYW1lKGFwcGxpY2F0aW9uQ2Fj
aGVGcmFtZSkKICAgICB7CkBAIC0xMDQsOSArOTAsOSBAQCBXZWJJbnNwZWN0b3IuQXBwbGljYXRp
b25DYWNoZURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9h
cHBsaWNhdGlvbkNhY2hlRnJhbWUgPSBhcHBsaWNhdGlvbkNhY2hlRnJhbWU7CiAKICAgICAgICAg
dGhpcy5uZWVkc1JlZnJlc2goKTsKLSAgICB9LAorICAgIH0KIAotICAgIHJlZnJlc2g6IGZ1bmN0
aW9uKCkKKyAgICByZWZyZXNoKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5hcHBsaWNhdGlv
bkNhY2hlRnJhbWUpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMTYsMTkgKzEwMiwxOSBAQCBX
ZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBl
ID0gewogCiAgICAgICAgIHRoaXMuX3JlZnJlc2hPbmxpbmVSb3coKTsKICAgICAgICAgdGhpcy5f
cmVmcmVzaFN0YXR1c1JvdygpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0g
ICAgX25ldHdvcmtTdGF0ZVVwZGF0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9uZXR3b3JrU3Rh
dGVVcGRhdGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLmFwcGxpY2F0aW9uQ2Fj
aGVGcmFtZSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLl9yZWZyZXNoT25s
aW5lUm93KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZnJhbWVNYW5pZmVzdFN0YXR1c0NoYW5n
ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9mcmFtZU1hbmlmZXN0U3RhdHVzQ2hhbmdlZChldmVu
dCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5hcHBsaWNhdGlvbkNhY2hlRnJhbWUpCiAgICAg
ICAgICAgICByZXR1cm47CkBAIC0xMzgsMTUgKzEyNCwyNyBAQCBXZWJJbnNwZWN0b3IuQXBwbGlj
YXRpb25DYWNoZURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAg
cmV0dXJuOwogCiAgICAgICAgIHRoaXMuX3JlZnJlc2hTdGF0dXNSb3coKTsKLSAgICB9LAorICAg
IH0KIAotICAgIF9yZWZyZXNoT25saW5lUm93OiBmdW5jdGlvbigpCisgICAgX3JlZnJlc2hPbmxp
bmVSb3coKQogICAgIHsKICAgICAgICAgdGhpcy5fb25saW5lUm93LnZhbHVlID0gV2ViSW5zcGVj
dG9yLmFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLm9ubGluZSA/IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiWWVzIikgOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk5vIik7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfcmVmcmVzaFN0YXR1c1JvdzogZnVuY3Rpb24oKQorICAgIF9yZWZyZXNoU3RhdHVzUm93
KCkKICAgICB7CiAgICAgICAgIHRoaXMuX3N0YXR1c1Jvdy52YWx1ZSA9IFdlYkluc3BlY3Rvci5B
cHBsaWNhdGlvbkNhY2hlRGV0YWlsc1NpZGViYXJQYW5lbC5TdGF0dXNbdGhpcy5hcHBsaWNhdGlv
bkNhY2hlRnJhbWUuc3RhdHVzXTsKICAgICB9CiB9OworCitXZWJJbnNwZWN0b3IuQXBwbGljYXRp
b25DYWNoZURldGFpbHNTaWRlYmFyUGFuZWwuU3R5bGVDbGFzc05hbWUgPSAiYXBwbGljYXRpb24t
Y2FjaGUiOworCisvLyBUaGlzIG5lZWRzIHRvIGJlIGtlcHQgaW4gc3luYyB3aXRoIEFwcGxpY2F0
aW9uQ2FjaGVNYW5hZ2VyLmpzLgorV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVEZXRhaWxz
U2lkZWJhclBhbmVsLlN0YXR1cyA9IHsKKyAgICAwOiAiVW5jYWNoZWQiLAorICAgIDE6ICJJZGxl
IiwKKyAgICAyOiAiQ2hlY2tpbmciLAorICAgIDM6ICJEb3dubG9hZGluZyIsCisgICAgNDogIlVw
ZGF0ZVJlYWR5IiwKKyAgICA1OiAiT2Jzb2xldGUiCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBh
bmVsLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5
bGVEZXRhaWxzU2lkZWJhclBhbmVsLmpzCmluZGV4IDBlYThmOWNhYzVmOTVlNDY4MTE0OGQyM2Jh
YzQzODQwNTQ4YzI2ODkuLjEyODgwMjc5YjI4ZmQ3N2M3NGNjY2MwOTZjMTU4ZWEyZjIxMDMwNGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NT
U1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwuanMKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDgz
ICsyMyw3NyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdl
Ykluc3BlY3Rvci5DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwgPSBmdW5jdGlvbigpCitXZWJJ
bnNwZWN0b3IuQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsID0gY2xhc3MgQ1NTU3R5bGVEZXRh
aWxzU2lkZWJhclBhbmVsIGV4dGVuZHMgV2ViSW5zcGVjdG9yLkRPTURldGFpbHNTaWRlYmFyUGFu
ZWwKIHsKLSAgICBXZWJJbnNwZWN0b3IuRE9NRGV0YWlsc1NpZGViYXJQYW5lbC5jYWxsKHRoaXMs
ICJjc3Mtc3R5bGUiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0eWxlcyIpLCBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIlN0eWxlIiksICJJbWFnZXMvTmF2aWdhdGlvbkl0ZW1CcnVzaEFuZFJ1bGVy
LnN2ZyIsICI0Iik7Ci0KLSAgICB0aGlzLl9zZWxlY3RlZFBhbmVsID0gbnVsbDsKLQotICAgIHRo
aXMuX25hdmlnYXRpb25CYXIgPSBuZXcgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIobnVsbCwg
bnVsbCwgInRhYmxpc3QiKTsKLSAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyLmFkZEV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIuRXZlbnQuTmF2aWdhdGlvbkl0ZW1TZWxlY3Rl
ZCwgdGhpcy5fbmF2aWdhdGlvbkl0ZW1TZWxlY3RlZCwgdGhpcyk7Ci0gICAgdGhpcy5lbGVtZW50
Lmluc2VydEJlZm9yZSh0aGlzLl9uYXZpZ2F0aW9uQmFyLmVsZW1lbnQsIHRoaXMuY29udGVudEVs
ZW1lbnQpOworICAgIGNvbnN0cnVjdG9yKCkKKyAgICB7CisgICAgICAgIHN1cGVyKCJjc3Mtc3R5
bGUiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0eWxlcyIpLCBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIlN0eWxlIiksICJJbWFnZXMvTmF2aWdhdGlvbkl0ZW1CcnVzaEFuZFJ1bGVyLnN2ZyIsICI0
Iik7CiAKLSAgICB0aGlzLl9mb3JjZWRQc2V1ZG9DbGFzc0NoZWNrYm94ZXMgPSB7fTsKKyAgICAg
ICAgdGhpcy5fc2VsZWN0ZWRQYW5lbCA9IG51bGw7CiAKLSAgICBpZiAoV2ViSW5zcGVjdG9yLmNz
c1N0eWxlTWFuYWdlci5jYW5Gb3JjZVBzZXVkb0NsYXNzZXMoKSkgewotICAgICAgICB0aGlzLl9m
b3JjZWRQc2V1ZG9DbGFzc0NvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
OwotICAgICAgICB0aGlzLl9mb3JjZWRQc2V1ZG9DbGFzc0NvbnRhaW5lci5jbGFzc05hbWUgPSBX
ZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLlBzZXVkb0NsYXNzZXNFbGVt
ZW50U3R5bGVDbGFzc05hbWU7CisgICAgICAgIHRoaXMuX25hdmlnYXRpb25CYXIgPSBuZXcgV2Vi
SW5zcGVjdG9yLk5hdmlnYXRpb25CYXIobnVsbCwgbnVsbCwgInRhYmxpc3QiKTsKKyAgICAgICAg
dGhpcy5fbmF2aWdhdGlvbkJhci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5OYXZpZ2F0
aW9uQmFyLkV2ZW50Lk5hdmlnYXRpb25JdGVtU2VsZWN0ZWQsIHRoaXMuX25hdmlnYXRpb25JdGVt
U2VsZWN0ZWQsIHRoaXMpOworICAgICAgICB0aGlzLmVsZW1lbnQuaW5zZXJ0QmVmb3JlKHRoaXMu
X25hdmlnYXRpb25CYXIuZWxlbWVudCwgdGhpcy5jb250ZW50RWxlbWVudCk7CiAKLSAgICAgICAg
dmFyIGdyb3VwRWxlbWVudCA9IG51bGw7CisgICAgICAgIHRoaXMuX2ZvcmNlZFBzZXVkb0NsYXNz
Q2hlY2tib3hlcyA9IHt9OwogCi0gICAgICAgIFdlYkluc3BlY3Rvci5DU1NTdHlsZU1hbmFnZXIu
Rm9yY2VhYmxlUHNldWRvQ2xhc3Nlcy5mb3JFYWNoKGZ1bmN0aW9uKHBzZXVkb0NsYXNzKSB7Ci0g
ICAgICAgICAgICAvLyBXZSBkb24ndCBsb2NhbGl6ZSB0aGUgbGFiZWwgc2luY2UgaXQgaXMgYSBD
U1MgcHNldWRvLWNsYXNzIGZyb20gdGhlIENTUyBzdGFuZGFyZC4KLSAgICAgICAgICAgIHZhciBs
YWJlbCA9IHBzZXVkb0NsYXNzLmNhcGl0YWxpemUoKTsKKyAgICAgICAgaWYgKFdlYkluc3BlY3Rv
ci5jc3NTdHlsZU1hbmFnZXIuY2FuRm9yY2VQc2V1ZG9DbGFzc2VzKCkpIHsKKyAgICAgICAgICAg
IHRoaXMuX2ZvcmNlZFBzZXVkb0NsYXNzQ29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7CisgICAgICAgICAgICB0aGlzLl9mb3JjZWRQc2V1ZG9DbGFzc0NvbnRhaW5lci5j
bGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLlBzZXVk
b0NsYXNzZXNFbGVtZW50U3R5bGVDbGFzc05hbWU7CiAKLSAgICAgICAgICAgIHZhciBsYWJlbEVs
ZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsYWJlbCIpOworICAgICAgICAgICAgdmFy
IGdyb3VwRWxlbWVudCA9IG51bGw7CiAKLSAgICAgICAgICAgIHZhciBjaGVja2JveEVsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOwotICAgICAgICAgICAgY2hlY2tib3hF
bGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsIHRoaXMuX2ZvcmNlZFBzZXVkb0NsYXNz
Q2hlY2tib3hDaGFuZ2VkLmJpbmQodGhpcywgcHNldWRvQ2xhc3MpKTsKLSAgICAgICAgICAgIGNo
ZWNrYm94RWxlbWVudC50eXBlID0gImNoZWNrYm94IjsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rv
ci5DU1NTdHlsZU1hbmFnZXIuRm9yY2VhYmxlUHNldWRvQ2xhc3Nlcy5mb3JFYWNoKGZ1bmN0aW9u
KHBzZXVkb0NsYXNzKSB7CisgICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3QgbG9jYWxpemUgdGhl
IGxhYmVsIHNpbmNlIGl0IGlzIGEgQ1NTIHBzZXVkby1jbGFzcyBmcm9tIHRoZSBDU1Mgc3RhbmRh
cmQuCisgICAgICAgICAgICAgICAgdmFyIGxhYmVsID0gcHNldWRvQ2xhc3MuY2FwaXRhbGl6ZSgp
OwogCi0gICAgICAgICAgICB0aGlzLl9mb3JjZWRQc2V1ZG9DbGFzc0NoZWNrYm94ZXNbcHNldWRv
Q2xhc3NdID0gY2hlY2tib3hFbGVtZW50OworICAgICAgICAgICAgICAgIHZhciBsYWJlbEVsZW1l
bnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsYWJlbCIpOwogCi0gICAgICAgICAgICBsYWJl
bEVsZW1lbnQuYXBwZW5kQ2hpbGQoY2hlY2tib3hFbGVtZW50KTsKLSAgICAgICAgICAgIGxhYmVs
RWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShsYWJlbCkpOworICAg
ICAgICAgICAgICAgIHZhciBjaGVja2JveEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJpbnB1dCIpOworICAgICAgICAgICAgICAgIGNoZWNrYm94RWxlbWVudC5hZGRFdmVudExpc3Rl
bmVyKCJjaGFuZ2UiLCB0aGlzLl9mb3JjZWRQc2V1ZG9DbGFzc0NoZWNrYm94Q2hhbmdlZC5iaW5k
KHRoaXMsIHBzZXVkb0NsYXNzKSk7CisgICAgICAgICAgICAgICAgY2hlY2tib3hFbGVtZW50LnR5
cGUgPSAiY2hlY2tib3giOwogCi0gICAgICAgICAgICBpZiAoIWdyb3VwRWxlbWVudCB8fCBncm91
cEVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoID09PSAyKSB7Ci0gICAgICAgICAgICAgICAgZ3JvdXBF
bGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgICAgICAgICAg
Z3JvdXBFbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5DU1NTdHlsZURldGFpbHNTaWRl
YmFyUGFuZWwuUHNldWRvQ2xhc3Nlc0dyb3VwRWxlbWVudFN0eWxlQ2xhc3NOYW1lOwotICAgICAg
ICAgICAgICAgIHRoaXMuX2ZvcmNlZFBzZXVkb0NsYXNzQ29udGFpbmVyLmFwcGVuZENoaWxkKGdy
b3VwRWxlbWVudCk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdGhpcy5fZm9yY2Vk
UHNldWRvQ2xhc3NDaGVja2JveGVzW3BzZXVkb0NsYXNzXSA9IGNoZWNrYm94RWxlbWVudDsKIAot
ICAgICAgICAgICAgZ3JvdXBFbGVtZW50LmFwcGVuZENoaWxkKGxhYmVsRWxlbWVudCk7Ci0gICAg
ICAgIH0sIHRoaXMpOworICAgICAgICAgICAgICAgIGxhYmVsRWxlbWVudC5hcHBlbmRDaGlsZChj
aGVja2JveEVsZW1lbnQpOworICAgICAgICAgICAgICAgIGxhYmVsRWxlbWVudC5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShsYWJlbCkpOwogCi0gICAgICAgIHRoaXMuY29udGVu
dEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZm9yY2VkUHNldWRvQ2xhc3NDb250YWluZXIpOwot
ICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoIWdyb3VwRWxlbWVudCB8fCBncm91cEVsZW1lbnQu
Y2hpbGRyZW4ubGVuZ3RoID09PSAyKSB7CisgICAgICAgICAgICAgICAgICAgIGdyb3VwRWxlbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICAgICAgICAgICAgICBn
cm91cEVsZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGVi
YXJQYW5lbC5Qc2V1ZG9DbGFzc2VzR3JvdXBFbGVtZW50U3R5bGVDbGFzc05hbWU7CisgICAgICAg
ICAgICAgICAgICAgIHRoaXMuX2ZvcmNlZFBzZXVkb0NsYXNzQ29udGFpbmVyLmFwcGVuZENoaWxk
KGdyb3VwRWxlbWVudCk7CisgICAgICAgICAgICAgICAgfQogCi0gICAgdGhpcy5fY29tcHV0ZWRT
dHlsZURldGFpbHNQYW5lbCA9IG5ldyBXZWJJbnNwZWN0b3IuQ29tcHV0ZWRTdHlsZURldGFpbHNQ
YW5lbDsKLSAgICB0aGlzLl9ydWxlc1N0eWxlRGV0YWlsc1BhbmVsID0gbmV3IFdlYkluc3BlY3Rv
ci5SdWxlc1N0eWxlRGV0YWlsc1BhbmVsOwotICAgIHRoaXMuX21ldHJpY3NTdHlsZURldGFpbHNQ
YW5lbCA9IG5ldyBXZWJJbnNwZWN0b3IuTWV0cmljc1N0eWxlRGV0YWlsc1BhbmVsOworICAgICAg
ICAgICAgICAgIGdyb3VwRWxlbWVudC5hcHBlbmRDaGlsZChsYWJlbEVsZW1lbnQpOworICAgICAg
ICAgICAgfSwgdGhpcyk7CiAKLSAgICB0aGlzLl9wYW5lbHMgPSBbdGhpcy5fY29tcHV0ZWRTdHls
ZURldGFpbHNQYW5lbCwgdGhpcy5fcnVsZXNTdHlsZURldGFpbHNQYW5lbCwgdGhpcy5fbWV0cmlj
c1N0eWxlRGV0YWlsc1BhbmVsXTsKKyAgICAgICAgICAgIHRoaXMuY29udGVudEVsZW1lbnQuYXBw
ZW5kQ2hpbGQodGhpcy5fZm9yY2VkUHNldWRvQ2xhc3NDb250YWluZXIpOworICAgICAgICB9CiAK
LSAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyLmFkZE5hdmlnYXRpb25JdGVtKHRoaXMuX2NvbXB1dGVk
U3R5bGVEZXRhaWxzUGFuZWwubmF2aWdhdGlvbkl0ZW0pOwotICAgIHRoaXMuX25hdmlnYXRpb25C
YXIuYWRkTmF2aWdhdGlvbkl0ZW0odGhpcy5fcnVsZXNTdHlsZURldGFpbHNQYW5lbC5uYXZpZ2F0
aW9uSXRlbSk7Ci0gICAgdGhpcy5fbmF2aWdhdGlvbkJhci5hZGROYXZpZ2F0aW9uSXRlbSh0aGlz
Ll9tZXRyaWNzU3R5bGVEZXRhaWxzUGFuZWwubmF2aWdhdGlvbkl0ZW0pOworICAgICAgICB0aGlz
Ll9jb21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsID0gbmV3IFdlYkluc3BlY3Rvci5Db21wdXRlZFN0
eWxlRGV0YWlsc1BhbmVsOworICAgICAgICB0aGlzLl9ydWxlc1N0eWxlRGV0YWlsc1BhbmVsID0g
bmV3IFdlYkluc3BlY3Rvci5SdWxlc1N0eWxlRGV0YWlsc1BhbmVsOworICAgICAgICB0aGlzLl9t
ZXRyaWNzU3R5bGVEZXRhaWxzUGFuZWwgPSBuZXcgV2ViSW5zcGVjdG9yLk1ldHJpY3NTdHlsZURl
dGFpbHNQYW5lbDsKIAotICAgIHRoaXMuX2xhc3RTZWxlY3RlZFNlY3Rpb25TZXR0aW5nID0gbmV3
IFdlYkluc3BlY3Rvci5TZXR0aW5nKCJsYXN0LXNlbGVjdGVkLXN0eWxlLWRldGFpbHMtcGFuZWwi
LCB0aGlzLl9ydWxlc1N0eWxlRGV0YWlsc1BhbmVsLm5hdmlnYXRpb25JdGVtLmlkZW50aWZpZXIp
OworICAgICAgICB0aGlzLl9wYW5lbHMgPSBbdGhpcy5fY29tcHV0ZWRTdHlsZURldGFpbHNQYW5l
bCwgdGhpcy5fcnVsZXNTdHlsZURldGFpbHNQYW5lbCwgdGhpcy5fbWV0cmljc1N0eWxlRGV0YWls
c1BhbmVsXTsKIAotICAgIC8vIFRoaXMgd2lsbCBjYXVzZSB0aGUgc2VsZWN0ZWQgcGFuZWwgdG8g
YmUgc2V0IGluIF9uYXZpZ2F0aW9uSXRlbVNlbGVjdGVkLgotICAgIHRoaXMuX25hdmlnYXRpb25C
YXIuc2VsZWN0ZWROYXZpZ2F0aW9uSXRlbSA9IHRoaXMuX2xhc3RTZWxlY3RlZFNlY3Rpb25TZXR0
aW5nLnZhbHVlOwotfTsKKyAgICAgICAgdGhpcy5fbmF2aWdhdGlvbkJhci5hZGROYXZpZ2F0aW9u
SXRlbSh0aGlzLl9jb21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsLm5hdmlnYXRpb25JdGVtKTsKKyAg
ICAgICAgdGhpcy5fbmF2aWdhdGlvbkJhci5hZGROYXZpZ2F0aW9uSXRlbSh0aGlzLl9ydWxlc1N0
eWxlRGV0YWlsc1BhbmVsLm5hdmlnYXRpb25JdGVtKTsKKyAgICAgICAgdGhpcy5fbmF2aWdhdGlv
bkJhci5hZGROYXZpZ2F0aW9uSXRlbSh0aGlzLl9tZXRyaWNzU3R5bGVEZXRhaWxzUGFuZWwubmF2
aWdhdGlvbkl0ZW0pOwogCi1XZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVs
LlBzZXVkb0NsYXNzZXNFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAicHNldWRvLWNsYXNzZXMiOwot
V2ViSW5zcGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5Qc2V1ZG9DbGFzc2VzR3Jv
dXBFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAiZ3JvdXAiOwotV2ViSW5zcGVjdG9yLkNTU1N0eWxl
RGV0YWlsc1NpZGViYXJQYW5lbC5Ob0ZvcmNlZFBzZXVkb0NsYXNzZXNTY3JvbGxPZmZzZXQgPSAz
ODsgLy8gRGVmYXVsdCBoZWlnaHQgb2YgdGhlIGZvcmNlZCBwc2V1ZG8gY2xhc3NlcyBjb250YWlu
ZXIuIFVwZGF0ZWQgaW4gd2lkdGhEaWRDaGFuZ2UuCisgICAgICAgIHRoaXMuX2xhc3RTZWxlY3Rl
ZFNlY3Rpb25TZXR0aW5nID0gbmV3IFdlYkluc3BlY3Rvci5TZXR0aW5nKCJsYXN0LXNlbGVjdGVk
LXN0eWxlLWRldGFpbHMtcGFuZWwiLCB0aGlzLl9ydWxlc1N0eWxlRGV0YWlsc1BhbmVsLm5hdmln
YXRpb25JdGVtLmlkZW50aWZpZXIpOwogCi1XZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZXRhaWxzU2lk
ZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkNT
U1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbCwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5E
T01EZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZSwKKyAgICAgICAgLy8gVGhpcyB3aWxsIGNh
dXNlIHRoZSBzZWxlY3RlZCBwYW5lbCB0byBiZSBzZXQgaW4gX25hdmlnYXRpb25JdGVtU2VsZWN0
ZWQuCisgICAgICAgIHRoaXMuX25hdmlnYXRpb25CYXIuc2VsZWN0ZWROYXZpZ2F0aW9uSXRlbSA9
IHRoaXMuX2xhc3RTZWxlY3RlZFNlY3Rpb25TZXR0aW5nLnZhbHVlOworICAgIH0KIAogICAgIC8v
IFB1YmxpYwogCi0gICAgc3VwcG9ydHNET01Ob2RlOiBmdW5jdGlvbihub2RlVG9JbnNwZWN0KQor
ICAgIHN1cHBvcnRzRE9NTm9kZShub2RlVG9JbnNwZWN0KQogICAgIHsKICAgICAgICAgcmV0dXJu
IG5vZGVUb0luc3BlY3Qubm9kZVR5cGUoKSA9PT0gTm9kZS5FTEVNRU5UX05PREU7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICByZWZyZXNoOiBmdW5jdGlvbigpCisgICAgcmVmcmVzaCgpCiAgICAgewog
ICAgICAgICB2YXIgZG9tTm9kZSA9IHRoaXMuZG9tTm9kZTsKICAgICAgICAgaWYgKCFkb21Ob2Rl
KQpAQCAtMTEzLDkgKzEwNyw5IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZURldGFpbHNTaWRlYmFy
UGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5fdXBkYXRlUHNl
dWRvQ2xhc3NDaGVja2JveGVzKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB2aXNpYmlsaXR5RGlk
Q2hhbmdlOiBmdW5jdGlvbigpCisgICAgdmlzaWJpbGl0eURpZENoYW5nZSgpCiAgICAgewogICAg
ICAgICBXZWJJbnNwZWN0b3IuU2lkZWJhclBhbmVsLnByb3RvdHlwZS52aXNpYmlsaXR5RGlkQ2hh
bmdlLmNhbGwodGhpcyk7CiAKQEAgLTEzMywyNyArMTI3LDI3IEBAIFdlYkluc3BlY3Rvci5DU1NT
dHlsZURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuX3Nl
bGVjdGVkUGFuZWwuc2hvd24oKTsKICAgICAgICAgdGhpcy5fc2VsZWN0ZWRQYW5lbC5tYXJrQXNO
ZWVkc1JlZnJlc2godGhpcy5kb21Ob2RlKTsKLSAgICB9LAorICAgIH0KIAotICAgIHdpZHRoRGlk
Q2hhbmdlOiBmdW5jdGlvbigpCisgICAgd2lkdGhEaWRDaGFuZ2UoKQogICAgIHsKICAgICAgICAg
dGhpcy5fdXBkYXRlTm9Gb3JjZWRQc2V1ZG9DbGFzc2VzU2Nyb2xsT2Zmc2V0KCk7CiAKICAgICAg
ICAgaWYgKHRoaXMuX3NlbGVjdGVkUGFuZWwpCiAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZFBh
bmVsLndpZHRoRGlkQ2hhbmdlKCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQK
IAotICAgIGFkZEV2ZW50TGlzdGVuZXJzOiBmdW5jdGlvbigpCisgICAgYWRkRXZlbnRMaXN0ZW5l
cnMoKQogICAgIHsKICAgICAgICAgdGhpcy5kb21Ob2RlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLkRPTU5vZGUuRXZlbnQuRW5hYmxlZFBzZXVkb0NsYXNzZXNDaGFuZ2VkLCB0aGlzLl91
cGRhdGVQc2V1ZG9DbGFzc0NoZWNrYm94ZXMsIHRoaXMpOwotICAgIH0sCisgICAgfQogCi0gICAg
cmVtb3ZlRXZlbnRMaXN0ZW5lcnM6IGZ1bmN0aW9uKCkKKyAgICByZW1vdmVFdmVudExpc3RlbmVy
cygpCiAgICAgewogICAgICAgICB0aGlzLmRvbU5vZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxs
LCBudWxsLCB0aGlzKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIApAQCAtMTYy
LDE1ICsxNTYsMTUgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5w
cm90b3R5cGUgPSB7CiAgICAgICAgIGlmICghV2ViSW5zcGVjdG9yLmNzc1N0eWxlTWFuYWdlci5j
YW5Gb3JjZVBzZXVkb0NsYXNzZXMoKSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBy
ZXR1cm4gdGhpcy5kb21Ob2RlICYmIHRoaXMuZG9tTm9kZS5lbmFibGVkUHNldWRvQ2xhc3Nlcy5s
ZW5ndGggPyAwIDogV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5Ob0Zv
cmNlZFBzZXVkb0NsYXNzZXNTY3JvbGxPZmZzZXQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdXBk
YXRlTm9Gb3JjZWRQc2V1ZG9DbGFzc2VzU2Nyb2xsT2Zmc2V0OiBmdW5jdGlvbigpCisgICAgX3Vw
ZGF0ZU5vRm9yY2VkUHNldWRvQ2xhc3Nlc1Njcm9sbE9mZnNldCgpCiAgICAgewogICAgICAgICBp
ZiAodGhpcy5fZm9yY2VkUHNldWRvQ2xhc3NDb250YWluZXIpCiAgICAgICAgICAgICBXZWJJbnNw
ZWN0b3IuQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLk5vRm9yY2VkUHNldWRvQ2xhc3Nlc1Nj
cm9sbE9mZnNldCA9IHRoaXMuX2ZvcmNlZFBzZXVkb0NsYXNzQ29udGFpbmVyLm9mZnNldEhlaWdo
dDsKLSAgICB9LAorICAgIH0KIAotICAgIF9uYXZpZ2F0aW9uSXRlbVNlbGVjdGVkOiBmdW5jdGlv
bihldmVudCkKKyAgICBfbmF2aWdhdGlvbkl0ZW1TZWxlY3RlZChldmVudCkKICAgICB7CiAgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KGV2ZW50LnRhcmdldC5zZWxlY3RlZE5hdmlnYXRpb25JdGVtKTsK
ICAgICAgICAgaWYgKCFldmVudC50YXJnZXQuc2VsZWN0ZWROYXZpZ2F0aW9uSXRlbSkKQEAgLTIw
OCwxNyArMjAyLDE3IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwu
cHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5fbGFzdFNlbGVjdGVkU2Vj
dGlvblNldHRpbmcudmFsdWUgPSBzZWxlY3RlZE5hdmlnYXRpb25JdGVtLmlkZW50aWZpZXI7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBfZm9yY2VkUHNldWRvQ2xhc3NDaGVja2JveENoYW5nZWQ6IGZ1
bmN0aW9uKHBzZXVkb0NsYXNzLCBldmVudCkKKyAgICBfZm9yY2VkUHNldWRvQ2xhc3NDaGVja2Jv
eENoYW5nZWQocHNldWRvQ2xhc3MsIGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLmRv
bU5vZGUpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5kb21Ob2RlLnNldFBz
ZXVkb0NsYXNzRW5hYmxlZChwc2V1ZG9DbGFzcywgZXZlbnQudGFyZ2V0LmNoZWNrZWQpOwotICAg
IH0sCisgICAgfQogCi0gICAgX3VwZGF0ZVBzZXVkb0NsYXNzQ2hlY2tib3hlczogZnVuY3Rpb24o
KQorICAgIF91cGRhdGVQc2V1ZG9DbGFzc0NoZWNrYm94ZXMoKQogICAgIHsKICAgICAgICAgaWYg
KCF0aGlzLmRvbU5vZGUpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0yMzEsMyArMjI1LDcgQEAg
V2ViSW5zcGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIH0KICAgICB9CiB9OworCitXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZXRhaWxzU2lkZWJh
clBhbmVsLlBzZXVkb0NsYXNzZXNFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAicHNldWRvLWNsYXNz
ZXMiOworV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5Qc2V1ZG9DbGFz
c2VzR3JvdXBFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAiZ3JvdXAiOworV2ViSW5zcGVjdG9yLkNT
U1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5Ob0ZvcmNlZFBzZXVkb0NsYXNzZXNTY3JvbGxPZmZz
ZXQgPSAzODsgLy8gRGVmYXVsdCBoZWlnaHQgb2YgdGhlIGZvcmNlZCBwc2V1ZG8gY2xhc3NlcyBj
b250YWluZXIuIFVwZGF0ZWQgaW4gd2lkdGhEaWRDaGFuZ2UuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01EZXRhaWxzU2lkZWJhclBhbmVs
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NRGV0YWls
c1NpZGViYXJQYW5lbC5qcwppbmRleCBhMDE4NDY2YWM5YzJhZjgyOGYyOGUwZmZjZTdiYmY4ODRh
YzU0ZWM3Li5kYWE3ZWZmMzVjN2Q4Y2UwMzc0MWYxNDYyZTM4YWUxMGJkYmY4ZjI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01EZXRhaWxz
U2lkZWJhclBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0RPTURldGFpbHNTaWRlYmFyUGFuZWwuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDIyICsyMywyMCBAQAogICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5ET01EZXRh
aWxzU2lkZWJhclBhbmVsID0gZnVuY3Rpb24oaWRlbnRpZmllciwgZGlzcGxheU5hbWUsIHNpbmd1
bGFyRGlzcGxheU5hbWUsIGltYWdlLCBrZXlib2FyZFNob3J0Y3V0S2V5LCBlbGVtZW50KQorV2Vi
SW5zcGVjdG9yLkRPTURldGFpbHNTaWRlYmFyUGFuZWwgPSBjbGFzcyBET01EZXRhaWxzU2lkZWJh
clBhbmVsIGV4dGVuZHMgV2ViSW5zcGVjdG9yLkRldGFpbHNTaWRlYmFyUGFuZWwKIHsKLSAgICBX
ZWJJbnNwZWN0b3IuRGV0YWlsc1NpZGViYXJQYW5lbC5jYWxsKHRoaXMsIGlkZW50aWZpZXIsIGRp
c3BsYXlOYW1lLCBzaW5ndWxhckRpc3BsYXlOYW1lLCBpbWFnZSwga2V5Ym9hcmRTaG9ydGN1dEtl
eSwgZWxlbWVudCk7Ci0KLSAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2si
LCB0aGlzLl9tb3VzZVdhc0NsaWNrZWQuYmluZCh0aGlzKSwgdHJ1ZSk7CisgICAgY29uc3RydWN0
b3IoaWRlbnRpZmllciwgZGlzcGxheU5hbWUsIHNpbmd1bGFyRGlzcGxheU5hbWUsIGltYWdlLCBr
ZXlib2FyZFNob3J0Y3V0S2V5LCBlbGVtZW50KQorICAgIHsKKyAgICAgICAgc3VwZXIoaWRlbnRp
ZmllciwgZGlzcGxheU5hbWUsIHNpbmd1bGFyRGlzcGxheU5hbWUsIGltYWdlLCBrZXlib2FyZFNo
b3J0Y3V0S2V5LCBlbGVtZW50KTsKIAotICAgIHRoaXMuX2RvbU5vZGUgPSBudWxsOwotfTsKKyAg
ICAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fbW91c2VX
YXNDbGlja2VkLmJpbmQodGhpcyksIHRydWUpOwogCi1XZWJJbnNwZWN0b3IuRE9NRGV0YWlsc1Np
ZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5E
T01EZXRhaWxzU2lkZWJhclBhbmVsLAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLkRldGFp
bHNTaWRlYmFyUGFuZWwucHJvdG90eXBlLAorICAgICAgICB0aGlzLl9kb21Ob2RlID0gbnVsbDsK
KyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAotICAgIGluc3BlY3Q6IGZ1bmN0aW9uKG9iamVjdHMp
CisgICAgaW5zcGVjdChvYmplY3RzKQogICAgIHsKICAgICAgICAgLy8gQ29udmVydCB0byBhIHNp
bmdsZSBpdGVtIGFycmF5IGlmIG5lZWRlZC4KICAgICAgICAgaWYgKCEob2JqZWN0cyBpbnN0YW5j
ZW9mIEFycmF5KSkKQEAgLTYwLDEyICs1OCwxMiBAQCBXZWJJbnNwZWN0b3IuRE9NRGV0YWlsc1Np
ZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuZG9tTm9kZSA9IG5vZGVUb0lu
c3BlY3Q7CiAKICAgICAgICAgcmV0dXJuICEhdGhpcy5fZG9tTm9kZTsKLSAgICB9LAorICAgIH0K
IAogICAgIGdldCBkb21Ob2RlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9kb21Ob2Rl
OwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGRvbU5vZGUoZG9tTm9kZSkKICAgICB7CkBAIC04
MSwyNyArNzksMjcgQEAgV2ViSW5zcGVjdG9yLkRPTURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90
eXBlID0gewogICAgICAgICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVycygpOwogCiAgICAgICAg
IHRoaXMubmVlZHNSZWZyZXNoKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzdXBwb3J0c0RPTU5v
ZGU6IGZ1bmN0aW9uKG5vZGVUb0luc3BlY3QpCisgICAgc3VwcG9ydHNET01Ob2RlKG5vZGVUb0lu
c3BlY3QpCiAgICAgewogICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgogICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9LAorICAgIH0KIAotICAgIGFkZEV2ZW50TGlzdGVuZXJz
OiBmdW5jdGlvbigpCisgICAgYWRkRXZlbnRMaXN0ZW5lcnMoKQogICAgIHsKICAgICAgICAgLy8g
SW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KLSAgICB9LAorICAgIH0KIAotICAgIHJlbW92ZUV2
ZW50TGlzdGVuZXJzOiBmdW5jdGlvbigpCisgICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcnMoKQogICAg
IHsKICAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KLSAgICB9LAorICAgIH0K
IAogICAgIC8vIFByaXZhdGUKIAotICAgIF9tb3VzZVdhc0NsaWNrZWQ6IGZ1bmN0aW9uKGV2ZW50
KQorICAgIF9tb3VzZVdhc0NsaWNrZWQoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAodGhpcy5f
ZG9tTm9kZSAmJiB0aGlzLl9kb21Ob2RlLm93bmVyRG9jdW1lbnQpIHsKICAgICAgICAgICAgIHZh
ciBtYWluUmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IuZnJhbWVSZXNvdXJjZU1hbmFnZXIucmVzb3Vy
Y2VGb3JVUkwodGhpcy5fZG9tTm9kZS5vd25lckRvY3VtZW50LmRvY3VtZW50VVJMKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTU5vZGVE
ZXRhaWxzU2lkZWJhclBhbmVsLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvRE9NTm9kZURldGFpbHNTaWRlYmFyUGFuZWwuanMKaW5kZXggOGMxMWU4OWU5ZWIx
ZjY0ODk3MmMzNDlmZjliZGY0N2M4NDM5YWUyOC4uNDFlZDY2NmM0NmE1YzUzYWEwMzcwZGFiOWYy
ZDk1YmU5YTJhMGY0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvRE9NTm9kZURldGFpbHNTaWRlYmFyUGFuZWwuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NTm9kZURldGFpbHNTaWRlYmFyUGFu
ZWwuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjMsODMgKzIzLDc4IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkRPTU5vZGVEZXRhaWxzU2lkZWJhclBhbmVsID0g
ZnVuY3Rpb24oKQorV2ViSW5zcGVjdG9yLkRPTU5vZGVEZXRhaWxzU2lkZWJhclBhbmVsID0gY2xh
c3MgRE9NTm9kZURldGFpbHNTaWRlYmFyUGFuZWwgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuRE9NRGV0
YWlsc1NpZGViYXJQYW5lbAogewotICAgIFdlYkluc3BlY3Rvci5ET01EZXRhaWxzU2lkZWJhclBh
bmVsLmNhbGwodGhpcywgImRvbS1ub2RlLWRldGFpbHMiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
Ik5vZGUiKSwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJOb2RlIiksICJJbWFnZXMvTmF2aWdhdGlv
bkl0ZW1BbmdsZUJyYWNrZXRzLnN2ZyIsICIyIik7Ci0KLSAgICBXZWJJbnNwZWN0b3IuZG9tVHJl
ZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIuRXZl
bnQuQXR0cmlidXRlTW9kaWZpZWQsIHRoaXMuX2F0dHJpYnV0ZXNDaGFuZ2VkLCB0aGlzKTsKLSAg
ICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuRE9NVHJlZU1hbmFnZXIuRXZlbnQuQXR0cmlidXRlUmVtb3ZlZCwgdGhpcy5fYXR0cmlidXRl
c0NoYW5nZWQsIHRoaXMpOwotICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5hZGRFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdlci5FdmVudC5DaGFyYWN0ZXJEYXRh
TW9kaWZpZWQsIHRoaXMuX2NoYXJhY3RlckRhdGFNb2RpZmllZCwgdGhpcyk7Ci0KLSAgICB0aGlz
LmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuRE9NTm9kZURldGFpbHNTaWRlYmFy
UGFuZWwuU3R5bGVDbGFzc05hbWUpOwotCi0gICAgdGhpcy5faWRlbnRpdHlOb2RlVHlwZVJvdyA9
IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3coV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJUeXBlIikpOwotICAgIHRoaXMuX2lkZW50aXR5Tm9kZU5hbWVSb3cgPSBuZXcgV2Vi
SW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdlYkluc3BlY3Rvci5VSVN0cmluZygi
TmFtZSIpKTsKLSAgICB0aGlzLl9pZGVudGl0eU5vZGVWYWx1ZVJvdyA9IG5ldyBXZWJJbnNwZWN0
b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJWYWx1ZSIp
KTsKLQotICAgIHZhciBpZGVudGl0eUdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2Vj
dGlvbkdyb3VwKFt0aGlzLl9pZGVudGl0eU5vZGVUeXBlUm93LCB0aGlzLl9pZGVudGl0eU5vZGVO
YW1lUm93LCB0aGlzLl9pZGVudGl0eU5vZGVWYWx1ZVJvd10pOwotICAgIHZhciBpZGVudGl0eVNl
Y3Rpb24gPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uKCJkb20tbm9kZS1pZGVudGl0
eSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiSWRlbnRpdHkiKSwgW2lkZW50aXR5R3JvdXBdKTsK
LQotICAgIHRoaXMuX2F0dHJpYnV0ZXNEYXRhR3JpZFJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0
YWlsc1NlY3Rpb25EYXRhR3JpZFJvdyhudWxsLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk5vIEF0
dHJpYnV0ZXMiKSk7Ci0KLSAgICB2YXIgYXR0cmlidXRlc0dyb3VwID0gbmV3IFdlYkluc3BlY3Rv
ci5EZXRhaWxzU2VjdGlvbkdyb3VwKFt0aGlzLl9hdHRyaWJ1dGVzRGF0YUdyaWRSb3ddKTsKLSAg
ICB2YXIgYXR0cmlidXRlc1NlY3Rpb24gPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9u
KCJkb20tbm9kZS1hdHRyaWJ1dGVzIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJBdHRyaWJ1dGVz
IiksIFthdHRyaWJ1dGVzR3JvdXBdKTsKLQotICAgIHRoaXMuX3Byb3BlcnRpZXNSb3cgPSBuZXcg
V2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OwotCi0gICAgdmFyIHByb3BlcnRpZXNHcm91
cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbdGhpcy5fcHJvcGVydGll
c1Jvd10pOwotICAgIHZhciBwcm9wZXJ0aWVzU2VjdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0
YWlsc1NlY3Rpb24oImRvbS1ub2RlLXByb3BlcnRpZXMiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IlByb3BlcnRpZXMiKSwgW3Byb3BlcnRpZXNHcm91cF0pOwotCi0gICAgdGhpcy5fZXZlbnRMaXN0
ZW5lcnNTZWN0aW9uR3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXA7
Ci0gICAgdmFyIGV2ZW50TGlzdGVuZXJzU2VjdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWls
c1NlY3Rpb24oImRvbS1ub2RlLWV2ZW50LWxpc3RlbmVycyIsIFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiRXZlbnQgTGlzdGVuZXJzIiksIFt0aGlzLl9ldmVudExpc3RlbmVyc1NlY3Rpb25Hcm91cF0p
OyAgICAKLQotICAgIHRoaXMuY29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoaWRlbnRpdHlTZWN0
aW9uLmVsZW1lbnQpOwotICAgIHRoaXMuY29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoYXR0cmli
dXRlc1NlY3Rpb24uZWxlbWVudCk7Ci0gICAgdGhpcy5jb250ZW50RWxlbWVudC5hcHBlbmRDaGls
ZChwcm9wZXJ0aWVzU2VjdGlvbi5lbGVtZW50KTsKLSAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmFw
cGVuZENoaWxkKGV2ZW50TGlzdGVuZXJzU2VjdGlvbi5lbGVtZW50KTsKLQotICAgIGlmICh0aGlz
Ll9hY2Nlc3NpYmlsaXR5U3VwcG9ydGVkKCkpIHsKLSAgICAgICAgdGhpcy5fYWNjZXNzaWJpbGl0
eUVtcHR5Um93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdyhXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIk5vIEFjY2Vzc2liaWxpdHkgSW5mb3JtYXRpb24iKSk7Ci0gICAgICAgIHRo
aXMuX2FjY2Vzc2liaWxpdHlOb2RlQWN0aXZlRGVzY2VuZGFudFJvdyA9IG5ldyBXZWJJbnNwZWN0
b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTaGFyZWQg
Rm9jdXMiKSk7Ci0gICAgICAgIHRoaXMuX2FjY2Vzc2liaWxpdHlOb2RlQnVzeVJvdyA9IG5ldyBX
ZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJCdXN5IikpOwotICAgICAgICB0aGlzLl9hY2Nlc3NpYmlsaXR5Tm9kZUNoZWNrZWRSb3cgPSBu
ZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdlYkluc3BlY3Rvci5VSVN0
cmluZygiQ2hlY2tlZCIpKTsKLSAgICAgICAgdGhpcy5fYWNjZXNzaWJpbGl0eU5vZGVDaGlsZHJl
blJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3coV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJDaGlsZHJlbiIpKTsKLSAgICAgICAgdGhpcy5fYWNjZXNzaWJpbGl0eU5v
ZGVDb250cm9sc1JvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3co
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb250cm9scyIpKTsKLSAgICAgICAgdGhpcy5fYWNjZXNz
aWJpbGl0eU5vZGVEaXNhYmxlZFJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25T
aW1wbGVSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEaXNhYmxlZCIpKTsKLSAgICAgICAgdGhp
cy5fYWNjZXNzaWJpbGl0eU5vZGVFeHBhbmRlZFJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWls
c1NlY3Rpb25TaW1wbGVSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJFeHBhbmRlZCIpKTsKLSAg
ICAgICAgdGhpcy5fYWNjZXNzaWJpbGl0eU5vZGVGbG93c1JvdyA9IG5ldyBXZWJJbnNwZWN0b3Iu
RGV0YWlsc1NlY3Rpb25TaW1wbGVSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGbG93cyIpKTsK
LSAgICAgICAgdGhpcy5fYWNjZXNzaWJpbGl0eU5vZGVGb2N1c2VkUm93ID0gbmV3IFdlYkluc3Bl
Y3Rvci5EZXRhaWxzU2VjdGlvblNpbXBsZVJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZvY3Vz
ZWQiKSk7Ci0gICAgICAgIHRoaXMuX2FjY2Vzc2liaWxpdHlOb2RlSWdub3JlZFJvdyA9IG5ldyBX
ZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJJZ25vcmVkIikpOwotICAgICAgICB0aGlzLl9hY2Nlc3NpYmlsaXR5Tm9kZUludmFsaWRSb3cg
PSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdlYkluc3BlY3Rvci5V
SVN0cmluZygiSW52YWxpZCIpKTsKLSAgICAgICAgdGhpcy5fYWNjZXNzaWJpbGl0eU5vZGVMaXZl
UmVnaW9uU3RhdHVzUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBsZVJv
dyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxpdmUiKSk7Ci0gICAgICAgIHRoaXMuX2FjY2Vzc2li
aWxpdHlOb2RlTW91c2VFdmVudFJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25T
aW1wbGVSb3coIiIpOwotICAgICAgICB0aGlzLl9hY2Nlc3NpYmlsaXR5Tm9kZUxhYmVsUm93ID0g
bmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBsZVJvdyhXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIkxhYmVsIikpOwotICAgICAgICB0aGlzLl9hY2Nlc3NpYmlsaXR5Tm9kZU93bnNSb3cg
PSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdlYkluc3BlY3Rvci5V
SVN0cmluZygiT3ducyIpKTsKLSAgICAgICAgdGhpcy5fYWNjZXNzaWJpbGl0eU5vZGVQYXJlbnRS
b3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiUGFyZW50IikpOwotICAgICAgICB0aGlzLl9hY2Nlc3NpYmlsaXR5Tm9kZVBy
ZXNzZWRSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdlYklu
c3BlY3Rvci5VSVN0cmluZygiUHJlc3NlZCIpKTsKLSAgICAgICAgdGhpcy5fYWNjZXNzaWJpbGl0
eU5vZGVSZWFkb25seVJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVS
b3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZWFkb25seSIpKTsKLSAgICAgICAgdGhpcy5fYWNj
ZXNzaWJpbGl0eU5vZGVSZXF1aXJlZFJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rp
b25TaW1wbGVSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXF1aXJlZCIpKTsKLSAgICAgICAg
dGhpcy5fYWNjZXNzaWJpbGl0eU5vZGVSb2xlUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxz
U2VjdGlvblNpbXBsZVJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJvbGUiKSk7Ci0gICAgICAg
IHRoaXMuX2FjY2Vzc2liaWxpdHlOb2RlU2VsZWN0ZWRSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRl
dGFpbHNTZWN0aW9uU2ltcGxlUm93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2VsZWN0ZWQiKSk7
Ci0gICAgICAgIHRoaXMuX2FjY2Vzc2liaWxpdHlOb2RlU2VsZWN0ZWRDaGlsZHJlblJvdyA9IG5l
dyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3coV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJTZWxlY3RlZCBJdGVtcyIpKTsKLSAgICAKLSAgICAgICAgdGhpcy5fYWNjZXNzaWJpbGl0
eUdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwKFt0aGlzLl9hY2Nl
c3NpYmlsaXR5RW1wdHlSb3ddKTsKLSAgICAgICAgdmFyIGFjY2Vzc2liaWxpdHlTZWN0aW9uID0g
bmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbigiZG9tLW5vZGUtYWNjZXNzaWJpbGl0eSIs
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQWNjZXNzaWJpbGl0eSIpLCBbdGhpcy5fYWNjZXNzaWJp
bGl0eUdyb3VwXSk7ICAgIAotCi0gICAgICAgIHRoaXMuY29udGVudEVsZW1lbnQuYXBwZW5kQ2hp
bGQoYWNjZXNzaWJpbGl0eVNlY3Rpb24uZWxlbWVudCk7Ci0gICAgfQotfTsKLQotV2ViSW5zcGVj
dG9yLkRPTU5vZGVEZXRhaWxzU2lkZWJhclBhbmVsLlN0eWxlQ2xhc3NOYW1lID0gImRvbS1ub2Rl
IjsKLVdlYkluc3BlY3Rvci5ET01Ob2RlRGV0YWlsc1NpZGViYXJQYW5lbC5Qcm9wZXJ0aWVzT2Jq
ZWN0R3JvdXBOYW1lID0gImRvbS1ub2RlLWRldGFpbHMtc2lkZWJhci1wcm9wZXJ0aWVzLW9iamVj
dC1ncm91cCI7Ci0KLVdlYkluc3BlY3Rvci5ET01Ob2RlRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90
b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5ET01Ob2RlRGV0YWlsc1Np
ZGViYXJQYW5lbCwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5ET01EZXRhaWxzU2lkZWJh
clBhbmVsLnByb3RvdHlwZSwKKyAgICBjb25zdHJ1Y3RvcigpCisgICAgeworICAgICAgICBzdXBl
cigiZG9tLW5vZGUtZGV0YWlscyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiTm9kZSIpLCBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIk5vZGUiKSwgIkltYWdlcy9OYXZpZ2F0aW9uSXRlbUFuZ2xlQnJh
Y2tldHMuc3ZnIiwgIjIiKTsKKworICAgICAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIuRXZlbnQuQXR0cmli
dXRlTW9kaWZpZWQsIHRoaXMuX2F0dHJpYnV0ZXNDaGFuZ2VkLCB0aGlzKTsKKyAgICAgICAgV2Vi
SW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRP
TVRyZWVNYW5hZ2VyLkV2ZW50LkF0dHJpYnV0ZVJlbW92ZWQsIHRoaXMuX2F0dHJpYnV0ZXNDaGFu
Z2VkLCB0aGlzKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLkV2ZW50LkNoYXJhY3RlckRhdGFN
b2RpZmllZCwgdGhpcy5fY2hhcmFjdGVyRGF0YU1vZGlmaWVkLCB0aGlzKTsKKworICAgICAgICB0
aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiZG9tLW5vZGUiKTsKKworICAgICAgICB0aGlzLl9p
ZGVudGl0eU5vZGVUeXBlUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBs
ZVJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlR5cGUiKSk7CisgICAgICAgIHRoaXMuX2lkZW50
aXR5Tm9kZU5hbWVSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93
KFdlYkluc3BlY3Rvci5VSVN0cmluZygiTmFtZSIpKTsKKyAgICAgICAgdGhpcy5faWRlbnRpdHlO
b2RlVmFsdWVSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiVmFsdWUiKSk7CisKKyAgICAgICAgdmFyIGlkZW50aXR5R3Jv
dXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoW3RoaXMuX2lkZW50aXR5
Tm9kZVR5cGVSb3csIHRoaXMuX2lkZW50aXR5Tm9kZU5hbWVSb3csIHRoaXMuX2lkZW50aXR5Tm9k
ZVZhbHVlUm93XSk7CisgICAgICAgIHZhciBpZGVudGl0eVNlY3Rpb24gPSBuZXcgV2ViSW5zcGVj
dG9yLkRldGFpbHNTZWN0aW9uKCJkb20tbm9kZS1pZGVudGl0eSIsIFdlYkluc3BlY3Rvci5VSVN0
cmluZygiSWRlbnRpdHkiKSwgW2lkZW50aXR5R3JvdXBdKTsKKworICAgICAgICB0aGlzLl9hdHRy
aWJ1dGVzRGF0YUdyaWRSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uRGF0YUdy
aWRSb3cobnVsbCwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJObyBBdHRyaWJ1dGVzIikpOworCisg
ICAgICAgIHZhciBhdHRyaWJ1dGVzR3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0
aW9uR3JvdXAoW3RoaXMuX2F0dHJpYnV0ZXNEYXRhR3JpZFJvd10pOworICAgICAgICB2YXIgYXR0
cmlidXRlc1NlY3Rpb24gPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uKCJkb20tbm9k
ZS1hdHRyaWJ1dGVzIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJBdHRyaWJ1dGVzIiksIFthdHRy
aWJ1dGVzR3JvdXBdKTsKKworICAgICAgICB0aGlzLl9wcm9wZXJ0aWVzUm93ID0gbmV3IFdlYklu
c3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICB2YXIgcHJvcGVydGllc0dyb3Vw
ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwKFt0aGlzLl9wcm9wZXJ0aWVz
Um93XSk7CisgICAgICAgIHZhciBwcm9wZXJ0aWVzU2VjdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3Iu
RGV0YWlsc1NlY3Rpb24oImRvbS1ub2RlLXByb3BlcnRpZXMiLCBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIlByb3BlcnRpZXMiKSwgW3Byb3BlcnRpZXNHcm91cF0pOworCisgICAgICAgIHRoaXMuX2V2
ZW50TGlzdGVuZXJzU2VjdGlvbkdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlv
bkdyb3VwOworICAgICAgICB2YXIgZXZlbnRMaXN0ZW5lcnNTZWN0aW9uID0gbmV3IFdlYkluc3Bl
Y3Rvci5EZXRhaWxzU2VjdGlvbigiZG9tLW5vZGUtZXZlbnQtbGlzdGVuZXJzIiwgV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJFdmVudCBMaXN0ZW5lcnMiKSwgW3RoaXMuX2V2ZW50TGlzdGVuZXJzU2Vj
dGlvbkdyb3VwXSk7CisKKyAgICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5hcHBlbmRDaGlsZChp
ZGVudGl0eVNlY3Rpb24uZWxlbWVudCk7CisgICAgICAgIHRoaXMuY29udGVudEVsZW1lbnQuYXBw
ZW5kQ2hpbGQoYXR0cmlidXRlc1NlY3Rpb24uZWxlbWVudCk7CisgICAgICAgIHRoaXMuY29udGVu
dEVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllc1NlY3Rpb24uZWxlbWVudCk7CisgICAgICAg
IHRoaXMuY29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoZXZlbnRMaXN0ZW5lcnNTZWN0aW9uLmVs
ZW1lbnQpOworCisgICAgICAgIGlmICh0aGlzLl9hY2Nlc3NpYmlsaXR5U3VwcG9ydGVkKCkpIHsK
KyAgICAgICAgICAgIHRoaXMuX2FjY2Vzc2liaWxpdHlFbXB0eVJvdyA9IG5ldyBXZWJJbnNwZWN0
b3IuRGV0YWlsc1NlY3Rpb25Sb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJObyBBY2Nlc3NpYmls
aXR5IEluZm9ybWF0aW9uIikpOworICAgICAgICAgICAgdGhpcy5fYWNjZXNzaWJpbGl0eU5vZGVB
Y3RpdmVEZXNjZW5kYW50Um93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBs
ZVJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNoYXJlZCBGb2N1cyIpKTsKKyAgICAgICAgICAg
IHRoaXMuX2FjY2Vzc2liaWxpdHlOb2RlQnVzeVJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWls
c1NlY3Rpb25TaW1wbGVSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJCdXN5IikpOworICAgICAg
ICAgICAgdGhpcy5fYWNjZXNzaWJpbGl0eU5vZGVDaGVja2VkUm93ID0gbmV3IFdlYkluc3BlY3Rv
ci5EZXRhaWxzU2VjdGlvblNpbXBsZVJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNoZWNrZWQi
KSk7CisgICAgICAgICAgICB0aGlzLl9hY2Nlc3NpYmlsaXR5Tm9kZUNoaWxkcmVuUm93ID0gbmV3
IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBsZVJvdyhXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIkNoaWxkcmVuIikpOworICAgICAgICAgICAgdGhpcy5fYWNjZXNzaWJpbGl0eU5vZGVDb250
cm9sc1JvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3coV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJDb250cm9scyIpKTsKKyAgICAgICAgICAgIHRoaXMuX2FjY2Vzc2li
aWxpdHlOb2RlRGlzYWJsZWRSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2lt
cGxlUm93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiRGlzYWJsZWQiKSk7CisgICAgICAgICAgICB0
aGlzLl9hY2Nlc3NpYmlsaXR5Tm9kZUV4cGFuZGVkUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRh
aWxzU2VjdGlvblNpbXBsZVJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkV4cGFuZGVkIikpOwor
ICAgICAgICAgICAgdGhpcy5fYWNjZXNzaWJpbGl0eU5vZGVGbG93c1JvdyA9IG5ldyBXZWJJbnNw
ZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGbG93
cyIpKTsKKyAgICAgICAgICAgIHRoaXMuX2FjY2Vzc2liaWxpdHlOb2RlRm9jdXNlZFJvdyA9IG5l
dyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3coV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJGb2N1c2VkIikpOworICAgICAgICAgICAgdGhpcy5fYWNjZXNzaWJpbGl0eU5vZGVJZ25v
cmVkUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBsZVJvdyhXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIklnbm9yZWQiKSk7CisgICAgICAgICAgICB0aGlzLl9hY2Nlc3NpYmls
aXR5Tm9kZUludmFsaWRSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxl
Um93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiSW52YWxpZCIpKTsKKyAgICAgICAgICAgIHRoaXMu
X2FjY2Vzc2liaWxpdHlOb2RlTGl2ZVJlZ2lvblN0YXR1c1JvdyA9IG5ldyBXZWJJbnNwZWN0b3Iu
RGV0YWlsc1NlY3Rpb25TaW1wbGVSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJMaXZlIikpOwor
ICAgICAgICAgICAgdGhpcy5fYWNjZXNzaWJpbGl0eU5vZGVNb3VzZUV2ZW50Um93ID0gbmV3IFdl
Ykluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBsZVJvdygiIik7CisgICAgICAgICAgICB0aGlz
Ll9hY2Nlc3NpYmlsaXR5Tm9kZUxhYmVsUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2Vj
dGlvblNpbXBsZVJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxhYmVsIikpOworICAgICAgICAg
ICAgdGhpcy5fYWNjZXNzaWJpbGl0eU5vZGVPd25zUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRh
aWxzU2VjdGlvblNpbXBsZVJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk93bnMiKSk7CisgICAg
ICAgICAgICB0aGlzLl9hY2Nlc3NpYmlsaXR5Tm9kZVBhcmVudFJvdyA9IG5ldyBXZWJJbnNwZWN0
b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQYXJlbnQi
KSk7CisgICAgICAgICAgICB0aGlzLl9hY2Nlc3NpYmlsaXR5Tm9kZVByZXNzZWRSb3cgPSBuZXcg
V2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiUHJlc3NlZCIpKTsKKyAgICAgICAgICAgIHRoaXMuX2FjY2Vzc2liaWxpdHlOb2RlUmVhZG9u
bHlSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiUmVhZG9ubHkiKSk7CisgICAgICAgICAgICB0aGlzLl9hY2Nlc3NpYmls
aXR5Tm9kZVJlcXVpcmVkUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBs
ZVJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlcXVpcmVkIikpOworICAgICAgICAgICAgdGhp
cy5fYWNjZXNzaWJpbGl0eU5vZGVSb2xlUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2Vj
dGlvblNpbXBsZVJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJvbGUiKSk7CisgICAgICAgICAg
ICB0aGlzLl9hY2Nlc3NpYmlsaXR5Tm9kZVNlbGVjdGVkUm93ID0gbmV3IFdlYkluc3BlY3Rvci5E
ZXRhaWxzU2VjdGlvblNpbXBsZVJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNlbGVjdGVkIikp
OworICAgICAgICAgICAgdGhpcy5fYWNjZXNzaWJpbGl0eU5vZGVTZWxlY3RlZENoaWxkcmVuUm93
ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBsZVJvdyhXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIlNlbGVjdGVkIEl0ZW1zIikpOworCisgICAgICAgICAgICB0aGlzLl9hY2Nlc3Np
YmlsaXR5R3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoW3RoaXMu
X2FjY2Vzc2liaWxpdHlFbXB0eVJvd10pOworICAgICAgICAgICAgdmFyIGFjY2Vzc2liaWxpdHlT
ZWN0aW9uID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbigiZG9tLW5vZGUtYWNjZXNz
aWJpbGl0eSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQWNjZXNzaWJpbGl0eSIpLCBbdGhpcy5f
YWNjZXNzaWJpbGl0eUdyb3VwXSk7CisKKyAgICAgICAgICAgIHRoaXMuY29udGVudEVsZW1lbnQu
YXBwZW5kQ2hpbGQoYWNjZXNzaWJpbGl0eVNlY3Rpb24uZWxlbWVudCk7CisgICAgICAgIH0KKyAg
ICAgICAgfQogCiAgICAgLy8gUHVibGljCiAKLSAgICByZWZyZXNoOiBmdW5jdGlvbigpCisgICAg
cmVmcmVzaCgpCiAgICAgewogICAgICAgICB2YXIgZG9tTm9kZSA9IHRoaXMuZG9tTm9kZTsKICAg
ICAgICAgaWYgKCFkb21Ob2RlKQpAQCAtMTEzLDIxICsxMDgsMjEgQEAgV2ViSW5zcGVjdG9yLkRP
TU5vZGVEZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fcmVm
cmVzaFByb3BlcnRpZXMoKTsKICAgICAgICAgdGhpcy5fcmVmcmVzaEV2ZW50TGlzdGVuZXJzKCk7
CiAgICAgICAgIHRoaXMuX3JlZnJlc2hBY2Nlc3NpYmlsaXR5KCk7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICAvLyBQcml2YXRlCiAKLSAgICBfYWNjZXNzaWJpbGl0eVN1cHBvcnRlZDogZnVuY3Rpb24o
KQorICAgIF9hY2Nlc3NpYmlsaXR5U3VwcG9ydGVkKCkKICAgICB7CiAgICAgICAgIHJldHVybiB3
aW5kb3cuRE9NQWdlbnQgJiYgRE9NQWdlbnQuZ2V0QWNjZXNzaWJpbGl0eVByb3BlcnRpZXNGb3JO
b2RlOwotICAgIH0sCisgICAgfQogCi0gICAgX3JlZnJlc2hBdHRyaWJ1dGVzOiBmdW5jdGlvbigp
CisgICAgX3JlZnJlc2hBdHRyaWJ1dGVzKCkKICAgICB7CiAgICAgICAgIHRoaXMuX2F0dHJpYnV0
ZXNEYXRhR3JpZFJvdy5kYXRhR3JpZCA9IHRoaXMuX2NyZWF0ZUF0dHJpYnV0ZXNEYXRhR3JpZCgp
OwotICAgIH0sCisgICAgfQogCi0gICAgX3JlZnJlc2hQcm9wZXJ0aWVzOiBmdW5jdGlvbigpCisg
ICAgX3JlZnJlc2hQcm9wZXJ0aWVzKCkKICAgICB7CiAgICAgICAgIHZhciBkb21Ob2RlID0gdGhp
cy5kb21Ob2RlOwogICAgICAgICBpZiAoIWRvbU5vZGUpCkBAIC0yMTQsOSArMjA5LDkgQEAgV2Vi
SW5zcGVjdG9yLkRPTU5vZGVEZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgICAgICBlbGVtZW50LmFwcGVuZENoaWxkKGRldGFpbHNTZWN0aW9uLmVsZW1lbnQpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcmVmcmVzaEV2
ZW50TGlzdGVuZXJzOiBmdW5jdGlvbigpCisgICAgX3JlZnJlc2hFdmVudExpc3RlbmVycygpCiAg
ICAgewogICAgICAgICB2YXIgZG9tTm9kZSA9IHRoaXMuZG9tTm9kZTsKICAgICAgICAgaWYgKCFk
b21Ob2RlKQpAQCAtMjY0LDExICsyNTksMTggQEAgV2ViSW5zcGVjdG9yLkRPTU5vZGVEZXRhaWxz
U2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICByb3dzLnB1c2goZXZl
bnRMaXN0ZW5lclNlY3Rpb25zW2V2ZW50TGlzdGVuZXJUeXBlc1tpXV0pOwogICAgICAgICAgICAg
dGhpcy5fZXZlbnRMaXN0ZW5lcnNTZWN0aW9uR3JvdXAucm93cyA9IHJvd3M7CiAgICAgICAgIH0K
LSAgICB9LAorICAgIH0KKworICAgIF9yZWZyZXNoQWNjZXNzaWJpbGl0eSgpCisgICAgeworICAg
ICAgICBpZiAoIXRoaXMuX2FjY2Vzc2liaWxpdHlTdXBwb3J0ZWQoKSkKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICB2YXIgZG9tTm9kZSA9IHRoaXMuZG9tTm9kZTsKKyAgICAgICAgaWYg
KCFkb21Ob2RlKQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgX3JlZnJlc2hBY2Nlc3NpYmls
aXR5OiAoZnVuY3Rpb24oKSB7CiAgICAgICAgIHZhciBwcm9wZXJ0aWVzID0ge307Ci0gICAgICAg
IHZhciBkb21Ob2RlOwogCiAgICAgICAgIGZ1bmN0aW9uIGJvb2xlYW5WYWx1ZVRvTG9jYWxpemVk
U3RyaW5nSWZUcnVlKHByb3BlcnR5KSB7CiAgICAgICAgICAgICBpZiAocHJvcGVydGllc1twcm9w
ZXJ0eV0pCkBAIC01MjUsMzcgKzUyNywyNSBAQCBXZWJJbnNwZWN0b3IuRE9NTm9kZURldGFpbHNT
aWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAg
ICAgICAgZnVuY3Rpb24gcmVmcmVzaEFYKCkgewotICAgICAgICAgICAgaWYgKCF0aGlzLl9hY2Nl
c3NpYmlsaXR5U3VwcG9ydGVkKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAg
ICAgICAvLyBNYWtlIHN1cmUgdGhlIGRvbU5vZGUgaXMgYXZhaWxhYmxlIGluIHRoZSBjbG9zdXJl
IHNjb3BlLgotICAgICAgICAgICAgZG9tTm9kZSA9IHRoaXMuZG9tTm9kZTsKLSAgICAgICAgICAg
IGlmICghZG9tTm9kZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIGRv
bU5vZGUuYWNjZXNzaWJpbGl0eVByb3BlcnRpZXMoYWNjZXNzaWJpbGl0eVByb3BlcnRpZXNDYWxs
YmFjay5iaW5kKHRoaXMpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiByZWZyZXNoQVg7
Ci0gICAgfSgpKSwKKyAgICAgICAgZG9tTm9kZS5hY2Nlc3NpYmlsaXR5UHJvcGVydGllcyhhY2Nl
c3NpYmlsaXR5UHJvcGVydGllc0NhbGxiYWNrLmJpbmQodGhpcykpOworICAgIH0KIAotICAgIF9h
dHRyaWJ1dGVzQ2hhbmdlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2F0dHJpYnV0ZXNDaGFuZ2Vk
KGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKGV2ZW50LmRhdGEubm9kZSAhPT0gdGhpcy5kb21O
b2RlKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB0aGlzLl9yZWZyZXNoQXR0cmlidXRl
cygpOwogICAgICAgICB0aGlzLl9yZWZyZXNoQWNjZXNzaWJpbGl0eSgpOwotICAgIH0sCisgICAg
fQogCi0gICAgX2NoYXJhY3RlckRhdGFNb2RpZmllZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2No
YXJhY3RlckRhdGFNb2RpZmllZChldmVudCkKICAgICB7CiAgICAgICAgIGlmIChldmVudC5kYXRh
Lm5vZGUgIT09IHRoaXMuZG9tTm9kZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgdGhp
cy5faWRlbnRpdHlOb2RlVmFsdWVSb3cudmFsdWUgPSB0aGlzLmRvbU5vZGUubm9kZVZhbHVlKCk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfbm9kZVR5cGVEaXNwbGF5TmFtZTogZnVuY3Rpb24oKQor
ICAgIF9ub2RlVHlwZURpc3BsYXlOYW1lKCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAodGhpcy5k
b21Ob2RlLm5vZGVUeXBlKCkpIHsKICAgICAgICAgY2FzZSBOb2RlLkVMRU1FTlRfTk9ERToKQEAg
LTU3OCw5ICs1NjgsOSBAQCBXZWJJbnNwZWN0b3IuRE9NTm9kZURldGFpbHNTaWRlYmFyUGFuZWwu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgY29uc29sZS5lcnJvcigiVW5rbm93biBET00gbm9k
ZSB0eXBlOiAiLCB0aGlzLmRvbU5vZGUubm9kZVR5cGUoKSk7CiAgICAgICAgICAgICByZXR1cm4g
dGhpcy5kb21Ob2RlLm5vZGVUeXBlKCk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAg
IF9jcmVhdGVBdHRyaWJ1dGVzRGF0YUdyaWQ6IGZ1bmN0aW9uKCkKKyAgICBfY3JlYXRlQXR0cmli
dXRlc0RhdGFHcmlkKCkKICAgICB7CiAgICAgICAgIHZhciBkb21Ob2RlID0gdGhpcy5kb21Ob2Rl
OwogICAgICAgICBpZiAoIWRvbU5vZGUgfHwgIWRvbU5vZGUuaGFzQXR0cmlidXRlcygpKQpAQCAt
NTkzLDcgKzU4MywxMCBAQCBXZWJJbnNwZWN0b3IuRE9NTm9kZURldGFpbHNTaWRlYmFyUGFuZWwu
cHJvdG90eXBlID0gewogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJpYnV0ZXMubGVu
Z3RoOyArK2kpIHsKICAgICAgICAgICAgIHZhciBhdHRyaWJ1dGUgPSBhdHRyaWJ1dGVzW2ldOwog
CisgICAgICAgICAgICBjb25zb2xlLmxvZyhhdHRyaWJ1dGUubmFtZSwgYXR0cmlidXRlLnZhbHVl
KTsKKwogICAgICAgICAgICAgdmFyIG5vZGUgPSBuZXcgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9k
ZSh7bmFtZTogYXR0cmlidXRlLm5hbWUsIHZhbHVlOiBhdHRyaWJ1dGUudmFsdWUgfHwgIiJ9LCBm
YWxzZSk7CisgICAgICAgICAgICBjb25zb2xlLmxvZyhub2RlKTsKICAgICAgICAgICAgIG5vZGUu
c2VsZWN0YWJsZSA9IHRydWU7CiAKICAgICAgICAgICAgIGRhdGFHcmlkLmFwcGVuZENoaWxkKG5v
ZGUpOwpAQCAtNjAyLDMgKzU5NSw1IEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlRGV0YWlsc1NpZGVi
YXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBkYXRhR3JpZDsKICAgICB9CiB9
OworCitXZWJJbnNwZWN0b3IuRE9NTm9kZURldGFpbHNTaWRlYmFyUGFuZWwuUHJvcGVydGllc09i
amVjdEdyb3VwTmFtZSA9ICJkb20tbm9kZS1kZXRhaWxzLXNpZGViYXItcHJvcGVydGllcy1vYmpl
Y3QtZ3JvdXAiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvRGVidWdnZXJTaWRlYmFyUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9EZWJ1Z2dlclNpZGViYXJQYW5lbC5qcwppbmRleCA2Nzg3Mjk5
MzEzMWRjOGE2YzY0MDZmNzQ2YzY0OGU5MmFhNDkxYjA1Li41YTdlNzA0ZDJiZmFlMDBiM2MwZjJl
M2ZiMWIwYjhmZjIzYTUwZTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9EZWJ1Z2dlclNpZGViYXJQYW5lbC5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZWJ1Z2dlclNpZGViYXJQYW5lbC5qcwpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjMsMTUxICsyMywxNDAgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi1XZWJJbnNwZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFuZWwgPSBmdW5jdGlvbigpCitXZWJJ
bnNwZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFuZWwgPSBjbGFzcyBEZWJ1Z2dlclNpZGViYXJQYW5l
bCBleHRlbmRzIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsCiB7Ci0gICAgV2Vi
SW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwuY2FsbCh0aGlzLCAiZGVidWdnZXIiLCBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRlYnVnZ2VyIiksICJJbWFnZXMvTmF2aWdhdGlvbkl0ZW1C
dWcuc3ZnIiwgIjMiLCB0cnVlKTsKLQotICAgIFdlYkluc3BlY3Rvci5GcmFtZS5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5GcmFtZS5FdmVudC5NYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRo
aXMuX21haW5SZXNvdXJjZUNoYW5nZWQsIHRoaXMpOwotICAgIFdlYkluc3BlY3Rvci5GcmFtZS5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5GcmFtZS5FdmVudC5SZXNvdXJjZVdhc0FkZGVk
LCB0aGlzLl9yZXNvdXJjZUFkZGVkLCB0aGlzKTsKLQotICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dl
ck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyLkV2
ZW50LkJyZWFrcG9pbnRzRW5hYmxlZERpZENoYW5nZSwgdGhpcy5fYnJlYWtwb2ludHNFbmFibGVk
RGlkQ2hhbmdlLCB0aGlzKTsKLSAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5DYWxsRnJhbWVz
RGlkQ2hhbmdlLCB0aGlzLl9kZWJ1Z2dlckNhbGxGcmFtZXNEaWRDaGFuZ2UsIHRoaXMpOwotICAg
IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LkJyZWFrcG9pbnRBZGRlZCwgdGhpcy5fYnJlYWtwb2lu
dEFkZGVkLCB0aGlzKTsKLSAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5CcmVha3BvaW50UmVt
b3ZlZCwgdGhpcy5fYnJlYWtwb2ludFJlbW92ZWQsIHRoaXMpOwotICAgIFdlYkluc3BlY3Rvci5k
ZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5h
Z2VyLkV2ZW50LlNjcmlwdEFkZGVkLCB0aGlzLl9zY3JpcHRBZGRlZCwgdGhpcyk7Ci0gICAgV2Vi
SW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5E
ZWJ1Z2dlck1hbmFnZXIuRXZlbnQuU2NyaXB0c0NsZWFyZWQsIHRoaXMuX3NjcmlwdHNDbGVhcmVk
LCB0aGlzKTsKLSAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIHRoaXMuX2RlYnVn
Z2VyRGlkUGF1c2UsIHRoaXMpOwotICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIuYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlJlc3VtZWQs
IHRoaXMuX2RlYnVnZ2VyRGlkUmVzdW1lLCB0aGlzKTsKLSAgICBXZWJJbnNwZWN0b3IuZGVidWdn
ZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlci5F
dmVudC5BY3RpdmVDYWxsRnJhbWVEaWRDaGFuZ2UsIHRoaXMuX2RlYnVnZ2VyQWN0aXZlQ2FsbEZy
YW1lRGlkQ2hhbmdlLCB0aGlzKTsKLQotICAgIHRoaXMuX3RvZ2dsZUJyZWFrcG9pbnRzS2V5Ym9h
cmRTaG9ydGN1dCA9IG5ldyBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dChXZWJJbnNwZWN0
b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5Db21tYW5kT3JDb250cm9sLCAiWSIsIHRoaXMu
X2JyZWFrcG9pbnRzVG9nZ2xlQnV0dG9uQ2xpY2tlZC5iaW5kKHRoaXMpKTsKLSAgICB0aGlzLnBh
dXNlT3JSZXN1bWVLZXlib2FyZFNob3J0Y3V0ID0gbmV3IFdlYkluc3BlY3Rvci5LZXlib2FyZFNo
b3J0Y3V0KFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbnRyb2wgfCBX
ZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5Db21tYW5kT3JDb250cm9sLCAi
WSIsIHRoaXMuX2RlYnVnZ2VyUGF1c2VSZXN1bWVCdXR0b25DbGlja2VkLmJpbmQodGhpcykpOwot
ICAgIHRoaXMuX3N0ZXBPdmVyS2V5Ym9hcmRTaG9ydGN1dCA9IG5ldyBXZWJJbnNwZWN0b3IuS2V5
Ym9hcmRTaG9ydGN1dChudWxsLCBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5LZXkuRjYs
IHRoaXMuX2RlYnVnZ2VyU3RlcE92ZXJCdXR0b25DbGlja2VkLmJpbmQodGhpcykpOwotICAgIHRo
aXMuX3N0ZXBJbnRvS2V5Ym9hcmRTaG9ydGN1dCA9IG5ldyBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRT
aG9ydGN1dChudWxsLCBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5LZXkuRjcsIHRoaXMu
X2RlYnVnZ2VyU3RlcEludG9CdXR0b25DbGlja2VkLmJpbmQodGhpcykpOwotICAgIHRoaXMuX3N0
ZXBPdXRLZXlib2FyZFNob3J0Y3V0ID0gbmV3IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0
KG51bGwsIFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleS5GOCwgdGhpcy5fZGVidWdn
ZXJTdGVwT3V0QnV0dG9uQ2xpY2tlZC5iaW5kKHRoaXMpKTsKLQotICAgIHRoaXMucGF1c2VPclJl
c3VtZUFsdGVybmF0ZUtleWJvYXJkU2hvcnRjdXQgPSBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJk
U2hvcnRjdXQoV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29tbWFuZE9y
Q29udHJvbCwgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5LkJhY2tzbGFzaCwgdGhp
cy5fZGVidWdnZXJQYXVzZVJlc3VtZUJ1dHRvbkNsaWNrZWQuYmluZCh0aGlzKSk7Ci0gICAgdGhp
cy5fc3RlcE92ZXJBbHRlcm5hdGVLZXlib2FyZFNob3J0Y3V0ID0gbmV3IFdlYkluc3BlY3Rvci5L
ZXlib2FyZFNob3J0Y3V0KFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNv
bW1hbmRPckNvbnRyb2wsIFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleS5TaW5nbGVR
dW90ZSwgdGhpcy5fZGVidWdnZXJTdGVwT3ZlckJ1dHRvbkNsaWNrZWQuYmluZCh0aGlzKSk7Ci0g
ICAgdGhpcy5fc3RlcEludG9BbHRlcm5hdGVLZXlib2FyZFNob3J0Y3V0ID0gbmV3IFdlYkluc3Bl
Y3Rvci5LZXlib2FyZFNob3J0Y3V0KFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlm
aWVyLkNvbW1hbmRPckNvbnRyb2wsIFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleS5T
ZW1pY29sb24sIHRoaXMuX2RlYnVnZ2VyU3RlcEludG9CdXR0b25DbGlja2VkLmJpbmQodGhpcykp
OwotICAgIHRoaXMuX3N0ZXBPdXRBbHRlcm5hdGVLZXlib2FyZFNob3J0Y3V0ID0gbmV3IFdlYklu
c3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0KFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1v
ZGlmaWVyLlNoaWZ0IHwgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29t
bWFuZE9yQ29udHJvbCwgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5LlNlbWljb2xv
biwgdGhpcy5fZGVidWdnZXJTdGVwT3V0QnV0dG9uQ2xpY2tlZC5iaW5kKHRoaXMpKTsKLQotICAg
IHRoaXMuX25hdmlnYXRpb25CYXIgPSBuZXcgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXI7Ci0g
ICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX25hdmlnYXRpb25CYXIuZWxlbWVudCk7
Ci0gICAgCi0gICAgdmFyIGltYWdlU2l6ZSA9IFdlYkluc3BlY3Rvci5QbGF0Zm9ybS5pc0xlZ2Fj
eU1hY09TID8gMTYgOiAxNTsKLQotICAgIHZhciBicmVha3BvaW50c0ltYWdlID0ge3NyYzogcGxh
dGZvcm1JbWFnZVBhdGgoIkJyZWFrcG9pbnRzLnN2ZyIpLCB3aWR0aDogaW1hZ2VTaXplLCBoZWln
aHQ6IGltYWdlU2l6ZX07Ci0gICAgdmFyIHBhdXNlSW1hZ2UgPSB7c3JjOiBwbGF0Zm9ybUltYWdl
UGF0aCgiUGF1c2Uuc3ZnIiksIHdpZHRoOiBpbWFnZVNpemUsIGhlaWdodDogaW1hZ2VTaXplfTsK
LSAgICB2YXIgcmVzdW1lSW1hZ2UgPSB7c3JjOiBwbGF0Zm9ybUltYWdlUGF0aCgiUmVzdW1lLnN2
ZyIpLCB3aWR0aDogaW1hZ2VTaXplLCBoZWlnaHQ6IGltYWdlU2l6ZX07Ci0gICAgdmFyIHN0ZXBP
dmVySW1hZ2UgPSB7c3JjOiBwbGF0Zm9ybUltYWdlUGF0aCgiU3RlcE92ZXIuc3ZnIiksIHdpZHRo
OiBpbWFnZVNpemUsIGhlaWdodDogaW1hZ2VTaXplfTsKLSAgICB2YXIgc3RlcEludG9JbWFnZSA9
IHtzcmM6IHBsYXRmb3JtSW1hZ2VQYXRoKCJTdGVwSW50by5zdmciKSwgd2lkdGg6IGltYWdlU2l6
ZSwgaGVpZ2h0OiBpbWFnZVNpemV9OwotICAgIHZhciBzdGVwT3V0SW1hZ2UgPSB7c3JjOiBwbGF0
Zm9ybUltYWdlUGF0aCgiU3RlcE91dC5zdmciKSwgd2lkdGg6IGltYWdlU2l6ZSwgaGVpZ2h0OiBp
bWFnZVNpemV9OwotCi0gICAgdmFyIHRvb2xUaXAgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkVu
YWJsZSBhbGwgYnJlYWtwb2ludHMgKCVzKSIpLmZvcm1hdCh0aGlzLl90b2dnbGVCcmVha3BvaW50
c0tleWJvYXJkU2hvcnRjdXQuZGlzcGxheU5hbWUpOwotICAgIHZhciBhbHRUb29sVGlwID0gV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJEaXNhYmxlIGFsbCBicmVha3BvaW50cyAoJXMpIikuZm9ybWF0
KHRoaXMuX3RvZ2dsZUJyZWFrcG9pbnRzS2V5Ym9hcmRTaG9ydGN1dC5kaXNwbGF5TmFtZSk7Ci0K
LSAgICB0aGlzLl9kZWJ1Z2dlckJyZWFrcG9pbnRzQnV0dG9uSXRlbSA9IG5ldyBXZWJJbnNwZWN0
b3IuQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbSgiZGVidWdnZXItYnJlYWtwb2ludHMiLCB0
b29sVGlwLCBhbHRUb29sVGlwLCBicmVha3BvaW50c0ltYWdlLnNyYywgYnJlYWtwb2ludHNJbWFn
ZS53aWR0aCwgYnJlYWtwb2ludHNJbWFnZS5oZWlnaHQpOwotICAgIHRoaXMuX2RlYnVnZ2VyQnJl
YWtwb2ludHNCdXR0b25JdGVtLmFjdGl2YXRlZCA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFn
ZXIuYnJlYWtwb2ludHNFbmFibGVkOwotICAgIHRoaXMuX2RlYnVnZ2VyQnJlYWtwb2ludHNCdXR0
b25JdGVtLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVt
LkV2ZW50LkNsaWNrZWQsIHRoaXMuX2JyZWFrcG9pbnRzVG9nZ2xlQnV0dG9uQ2xpY2tlZCwgdGhp
cyk7Ci0gICAgdGhpcy5fbmF2aWdhdGlvbkJhci5hZGROYXZpZ2F0aW9uSXRlbSh0aGlzLl9kZWJ1
Z2dlckJyZWFrcG9pbnRzQnV0dG9uSXRlbSk7Ci0KLSAgICB0b29sVGlwID0gV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJQYXVzZSBzY3JpcHQgZXhlY3V0aW9uICglcyBvciAlcykiKS5mb3JtYXQodGhp
cy5wYXVzZU9yUmVzdW1lS2V5Ym9hcmRTaG9ydGN1dC5kaXNwbGF5TmFtZSwgdGhpcy5wYXVzZU9y
UmVzdW1lQWx0ZXJuYXRlS2V5Ym9hcmRTaG9ydGN1dC5kaXNwbGF5TmFtZSk7Ci0gICAgYWx0VG9v
bFRpcCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29udGludWUgc2NyaXB0IGV4ZWN1dGlvbiAo
JXMgb3IgJXMpIikuZm9ybWF0KHRoaXMucGF1c2VPclJlc3VtZUtleWJvYXJkU2hvcnRjdXQuZGlz
cGxheU5hbWUsIHRoaXMucGF1c2VPclJlc3VtZUFsdGVybmF0ZUtleWJvYXJkU2hvcnRjdXQuZGlz
cGxheU5hbWUpOwotCi0gICAgdGhpcy5fZGVidWdnZXJQYXVzZVJlc3VtZUJ1dHRvbkl0ZW0gPSBu
ZXcgV2ViSW5zcGVjdG9yLlRvZ2dsZUJ1dHRvbk5hdmlnYXRpb25JdGVtKCJkZWJ1Z2dlci1wYXVz
ZS1yZXN1bWUiLCB0b29sVGlwLCBhbHRUb29sVGlwLCBwYXVzZUltYWdlLnNyYywgcmVzdW1lSW1h
Z2Uuc3JjLCBwYXVzZUltYWdlLndpZHRoLCBwYXVzZUltYWdlLmhlaWdodCk7Ci0gICAgdGhpcy5f
ZGVidWdnZXJQYXVzZVJlc3VtZUJ1dHRvbkl0ZW0uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgdGhpcy5fZGVidWdnZXJQYXVz
ZVJlc3VtZUJ1dHRvbkNsaWNrZWQsIHRoaXMpOwotICAgIHRoaXMuX25hdmlnYXRpb25CYXIuYWRk
TmF2aWdhdGlvbkl0ZW0odGhpcy5fZGVidWdnZXJQYXVzZVJlc3VtZUJ1dHRvbkl0ZW0pOwotCi0g
ICAgdGhpcy5fZGVidWdnZXJTdGVwT3ZlckJ1dHRvbkl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLkJ1
dHRvbk5hdmlnYXRpb25JdGVtKCJkZWJ1Z2dlci1zdGVwLW92ZXIiLCBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIlN0ZXAgb3ZlciAoJXMgb3IgJXMpIikuZm9ybWF0KHRoaXMuX3N0ZXBPdmVyS2V5Ym9h
cmRTaG9ydGN1dC5kaXNwbGF5TmFtZSwgdGhpcy5fc3RlcE92ZXJBbHRlcm5hdGVLZXlib2FyZFNo
b3J0Y3V0LmRpc3BsYXlOYW1lKSwgc3RlcE92ZXJJbWFnZS5zcmMsIHN0ZXBPdmVySW1hZ2Uud2lk
dGgsIHN0ZXBPdmVySW1hZ2UuaGVpZ2h0KTsKLSAgICB0aGlzLl9kZWJ1Z2dlclN0ZXBPdmVyQnV0
dG9uSXRlbS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRl
bS5FdmVudC5DbGlja2VkLCB0aGlzLl9kZWJ1Z2dlclN0ZXBPdmVyQnV0dG9uQ2xpY2tlZCwgdGhp
cyk7Ci0gICAgdGhpcy5fZGVidWdnZXJTdGVwT3ZlckJ1dHRvbkl0ZW0uZW5hYmxlZCA9IGZhbHNl
OwotICAgIHRoaXMuX25hdmlnYXRpb25CYXIuYWRkTmF2aWdhdGlvbkl0ZW0odGhpcy5fZGVidWdn
ZXJTdGVwT3ZlckJ1dHRvbkl0ZW0pOwotCi0gICAgdGhpcy5fZGVidWdnZXJTdGVwSW50b0J1dHRv
bkl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtKCJkZWJ1Z2dlci1z
dGVwLWludG8iLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0ZXAgaW50byAoJXMgb3IgJXMpIiku
Zm9ybWF0KHRoaXMuX3N0ZXBJbnRvS2V5Ym9hcmRTaG9ydGN1dC5kaXNwbGF5TmFtZSwgdGhpcy5f
c3RlcEludG9BbHRlcm5hdGVLZXlib2FyZFNob3J0Y3V0LmRpc3BsYXlOYW1lKSwgc3RlcEludG9J
bWFnZS5zcmMsIHN0ZXBJbnRvSW1hZ2Uud2lkdGgsIHN0ZXBJbnRvSW1hZ2UuaGVpZ2h0KTsKLSAg
ICB0aGlzLl9kZWJ1Z2dlclN0ZXBJbnRvQnV0dG9uSXRlbS5hZGRFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCB0aGlzLl9kZWJ1Z2dl
clN0ZXBJbnRvQnV0dG9uQ2xpY2tlZCwgdGhpcyk7Ci0gICAgdGhpcy5fZGVidWdnZXJTdGVwSW50
b0J1dHRvbkl0ZW0uZW5hYmxlZCA9IGZhbHNlOwotICAgIHRoaXMuX25hdmlnYXRpb25CYXIuYWRk
TmF2aWdhdGlvbkl0ZW0odGhpcy5fZGVidWdnZXJTdGVwSW50b0J1dHRvbkl0ZW0pOwotCi0gICAg
dGhpcy5fZGVidWdnZXJTdGVwT3V0QnV0dG9uSXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuQnV0dG9u
TmF2aWdhdGlvbkl0ZW0oImRlYnVnZ2VyLXN0ZXAtb3V0IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJTdGVwIG91dCAoJXMgb3IgJXMpIikuZm9ybWF0KHRoaXMuX3N0ZXBPdXRLZXlib2FyZFNob3J0
Y3V0LmRpc3BsYXlOYW1lLCB0aGlzLl9zdGVwT3V0QWx0ZXJuYXRlS2V5Ym9hcmRTaG9ydGN1dC5k
aXNwbGF5TmFtZSksIHN0ZXBPdXRJbWFnZS5zcmMsIHN0ZXBPdXRJbWFnZS53aWR0aCwgc3RlcE91
dEltYWdlLmhlaWdodCk7Ci0gICAgdGhpcy5fZGVidWdnZXJTdGVwT3V0QnV0dG9uSXRlbS5hZGRF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlj
a2VkLCB0aGlzLl9kZWJ1Z2dlclN0ZXBPdXRCdXR0b25DbGlja2VkLCB0aGlzKTsKLSAgICB0aGlz
Ll9kZWJ1Z2dlclN0ZXBPdXRCdXR0b25JdGVtLmVuYWJsZWQgPSBmYWxzZTsKLSAgICB0aGlzLl9u
YXZpZ2F0aW9uQmFyLmFkZE5hdmlnYXRpb25JdGVtKHRoaXMuX2RlYnVnZ2VyU3RlcE91dEJ1dHRv
bkl0ZW0pOwotCi0gICAgLy8gQWRkIHRoaXMgb2Zmc2V0LXNlY3Rpb25zIGNsYXNzIG5hbWUgc28g
dGhlIHN0aWNreSBoZWFkZXJzIGRvbid0IG92ZXJsYXAgdGhlIG5hdmlnYXRpb24gYmFyLgotICAg
IHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQ
YW5lbC5PZmZzZXRTZWN0aW9uc1N0eWxlQ2xhc3NOYW1lKTsKLQotICAgIHRoaXMuX2dsb2JhbEJy
ZWFrcG9pbnRzRm9sZGVyVHJlZUVsZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLkZvbGRlclRyZWVF
bGVtZW50KFdlYkluc3BlY3Rvci5VSVN0cmluZygiR2xvYmFsIEJyZWFrcG9pbnRzIiksIG51bGws
IFdlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQYW5lbC5HbG9iYWxJY29uU3R5bGVDbGFzc05h
bWUpOwotICAgIHRoaXMuX2FsbEV4Y2VwdGlvbnNCcmVha3BvaW50VHJlZUVsZW1lbnQgPSBuZXcg
V2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRUcmVlRWxlbWVudChXZWJJbnNwZWN0b3IuZGVidWdnZXJN
YW5hZ2VyLmFsbEV4Y2VwdGlvbnNCcmVha3BvaW50LCBXZWJJbnNwZWN0b3IuRGVidWdnZXJTaWRl
YmFyUGFuZWwuRXhjZXB0aW9uSWNvblN0eWxlQ2xhc3NOYW1lLCBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIkFsbCBFeGNlcHRpb25zIikpOwotICAgIHRoaXMuX2FsbFVuY2F1Z2h0RXhjZXB0aW9uc0Jy
ZWFrcG9pbnRUcmVlRWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludFRyZWVFbGVt
ZW50KFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIuYWxsVW5jYXVnaHRFeGNlcHRpb25zQnJl
YWtwb2ludCwgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBhbmVsLkV4Y2VwdGlvbkljb25T
dHlsZUNsYXNzTmFtZSwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJBbGwgVW5jYXVnaHQgRXhjZXB0
aW9ucyIpKTsKLQotICAgIHRoaXMuZmlsdGVyQmFyLnBsYWNlaG9sZGVyID0gV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJGaWx0ZXIgQnJlYWtwb2ludCBMaXN0Iik7Ci0gICAgdmFyIHNob3dSZXNvdXJj
ZXNXaXRoQnJlYWtwb2ludHNPbmx5RmlsdGVyRnVuY3Rpb24gPSBmdW5jdGlvbih0cmVlRWxlbWVu
dCkKLSAgICB7Ci0gICAgICAgIC8vIEtlZXAgYnJlYWtwb2ludHMgYW5kIG90aGVyIGVsZW1lbnRz
IHRoYXQgYXJlbid0IHJlc291cmNlcy4KLSAgICAgICAgaWYgKCF0cmVlRWxlbWVudCBpbnN0YW5j
ZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50IHx8IHRyZWVFbGVtZW50IGluc3Rh
bmNlb2YgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRUcmVlRWxlbWVudCkKLSAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgIGNvbnN0cnVjdG9yKCkKKyAgICB7CisgICAgICAgIHN1cGVyKCJkZWJ1
Z2dlciIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiRGVidWdnZXIiKSwgIkltYWdlcy9OYXZpZ2F0
aW9uSXRlbUJ1Zy5zdmciLCAiMyIsIHRydWUpOworCisgICAgICAgIFdlYkluc3BlY3Rvci5GcmFt
ZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5GcmFtZS5FdmVudC5NYWluUmVzb3VyY2VE
aWRDaGFuZ2UsIHRoaXMuX21haW5SZXNvdXJjZUNoYW5nZWQsIHRoaXMpOworICAgICAgICBXZWJJ
bnNwZWN0b3IuRnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQu
UmVzb3VyY2VXYXNBZGRlZCwgdGhpcy5fcmVzb3VyY2VBZGRlZCwgdGhpcyk7CisKKyAgICAgICAg
V2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuQnJlYWtwb2ludHNFbmFibGVkRGlkQ2hhbmdlLCB0aGlz
Ll9icmVha3BvaW50c0VuYWJsZWREaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICBXZWJJbnNwZWN0
b3IuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2Vy
TWFuYWdlci5FdmVudC5DYWxsRnJhbWVzRGlkQ2hhbmdlLCB0aGlzLl9kZWJ1Z2dlckNhbGxGcmFt
ZXNEaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2Vy
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5CcmVh
a3BvaW50QWRkZWQsIHRoaXMuX2JyZWFrcG9pbnRBZGRlZCwgdGhpcyk7CisgICAgICAgIFdlYklu
c3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVi
dWdnZXJNYW5hZ2VyLkV2ZW50LkJyZWFrcG9pbnRSZW1vdmVkLCB0aGlzLl9icmVha3BvaW50UmVt
b3ZlZCwgdGhpcyk7CisgICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlNjcmlwdEFkZGVk
LCB0aGlzLl9zY3JpcHRBZGRlZCwgdGhpcyk7CisgICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dl
ck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyLkV2
ZW50LlNjcmlwdHNDbGVhcmVkLCB0aGlzLl9zY3JpcHRzQ2xlYXJlZCwgdGhpcyk7CisgICAgICAg
IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgdGhpcy5fZGVidWdnZXJEaWRQYXVzZSwg
dGhpcyk7CisgICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlJlc3VtZWQsIHRoaXMuX2Rl
YnVnZ2VyRGlkUmVzdW1lLCB0aGlzKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFu
YWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQu
QWN0aXZlQ2FsbEZyYW1lRGlkQ2hhbmdlLCB0aGlzLl9kZWJ1Z2dlckFjdGl2ZUNhbGxGcmFtZURp
ZENoYW5nZSwgdGhpcyk7CisKKyAgICAgICAgdGhpcy5fdG9nZ2xlQnJlYWtwb2ludHNLZXlib2Fy
ZFNob3J0Y3V0ID0gbmV3IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0KFdlYkluc3BlY3Rv
ci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbW1hbmRPckNvbnRyb2wsICJZIiwgdGhpcy5f
YnJlYWtwb2ludHNUb2dnbGVCdXR0b25DbGlja2VkLmJpbmQodGhpcykpOworICAgICAgICB0aGlz
LnBhdXNlT3JSZXN1bWVLZXlib2FyZFNob3J0Y3V0ID0gbmV3IFdlYkluc3BlY3Rvci5LZXlib2Fy
ZFNob3J0Y3V0KFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbnRyb2wg
fCBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5Db21tYW5kT3JDb250cm9s
LCAiWSIsIHRoaXMuX2RlYnVnZ2VyUGF1c2VSZXN1bWVCdXR0b25DbGlja2VkLmJpbmQodGhpcykp
OworICAgICAgICB0aGlzLl9zdGVwT3ZlcktleWJvYXJkU2hvcnRjdXQgPSBuZXcgV2ViSW5zcGVj
dG9yLktleWJvYXJkU2hvcnRjdXQobnVsbCwgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQu
S2V5LkY2LCB0aGlzLl9kZWJ1Z2dlclN0ZXBPdmVyQnV0dG9uQ2xpY2tlZC5iaW5kKHRoaXMpKTsK
KyAgICAgICAgdGhpcy5fc3RlcEludG9LZXlib2FyZFNob3J0Y3V0ID0gbmV3IFdlYkluc3BlY3Rv
ci5LZXlib2FyZFNob3J0Y3V0KG51bGwsIFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lktl
eS5GNywgdGhpcy5fZGVidWdnZXJTdGVwSW50b0J1dHRvbkNsaWNrZWQuYmluZCh0aGlzKSk7Cisg
ICAgICAgIHRoaXMuX3N0ZXBPdXRLZXlib2FyZFNob3J0Y3V0ID0gbmV3IFdlYkluc3BlY3Rvci5L
ZXlib2FyZFNob3J0Y3V0KG51bGwsIFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleS5G
OCwgdGhpcy5fZGVidWdnZXJTdGVwT3V0QnV0dG9uQ2xpY2tlZC5iaW5kKHRoaXMpKTsKKworICAg
ICAgICB0aGlzLnBhdXNlT3JSZXN1bWVBbHRlcm5hdGVLZXlib2FyZFNob3J0Y3V0ID0gbmV3IFdl
Ykluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0KFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0
Lk1vZGlmaWVyLkNvbW1hbmRPckNvbnRyb2wsIFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0
LktleS5CYWNrc2xhc2gsIHRoaXMuX2RlYnVnZ2VyUGF1c2VSZXN1bWVCdXR0b25DbGlja2VkLmJp
bmQodGhpcykpOworICAgICAgICB0aGlzLl9zdGVwT3ZlckFsdGVybmF0ZUtleWJvYXJkU2hvcnRj
dXQgPSBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQoV2ViSW5zcGVjdG9yLktleWJv
YXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29tbWFuZE9yQ29udHJvbCwgV2ViSW5zcGVjdG9yLktleWJv
YXJkU2hvcnRjdXQuS2V5LlNpbmdsZVF1b3RlLCB0aGlzLl9kZWJ1Z2dlclN0ZXBPdmVyQnV0dG9u
Q2xpY2tlZC5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5fc3RlcEludG9BbHRlcm5hdGVLZXli
b2FyZFNob3J0Y3V0ID0gbmV3IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0KFdlYkluc3Bl
Y3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbW1hbmRPckNvbnRyb2wsIFdlYkluc3Bl
Y3Rvci5LZXlib2FyZFNob3J0Y3V0LktleS5TZW1pY29sb24sIHRoaXMuX2RlYnVnZ2VyU3RlcElu
dG9CdXR0b25DbGlja2VkLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLl9zdGVwT3V0QWx0ZXJu
YXRlS2V5Ym9hcmRTaG9ydGN1dCA9IG5ldyBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dChX
ZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5TaGlmdCB8IFdlYkluc3BlY3Rv
ci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbW1hbmRPckNvbnRyb2wsIFdlYkluc3BlY3Rv
ci5LZXlib2FyZFNob3J0Y3V0LktleS5TZW1pY29sb24sIHRoaXMuX2RlYnVnZ2VyU3RlcE91dEJ1
dHRvbkNsaWNrZWQuYmluZCh0aGlzKSk7CisKKyAgICAgICAgdGhpcy5fbmF2aWdhdGlvbkJhciA9
IG5ldyBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhcjsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFw
cGVuZENoaWxkKHRoaXMuX25hdmlnYXRpb25CYXIuZWxlbWVudCk7CisKKyAgICAgICAgdmFyIGlt
YWdlU2l6ZSA9IFdlYkluc3BlY3Rvci5QbGF0Zm9ybS5pc0xlZ2FjeU1hY09TID8gMTYgOiAxNTsK
KworICAgICAgICB2YXIgYnJlYWtwb2ludHNJbWFnZSA9IHtzcmM6IHBsYXRmb3JtSW1hZ2VQYXRo
KCJCcmVha3BvaW50cy5zdmciKSwgd2lkdGg6IGltYWdlU2l6ZSwgaGVpZ2h0OiBpbWFnZVNpemV9
OworICAgICAgICB2YXIgcGF1c2VJbWFnZSA9IHtzcmM6IHBsYXRmb3JtSW1hZ2VQYXRoKCJQYXVz
ZS5zdmciKSwgd2lkdGg6IGltYWdlU2l6ZSwgaGVpZ2h0OiBpbWFnZVNpemV9OworICAgICAgICB2
YXIgcmVzdW1lSW1hZ2UgPSB7c3JjOiBwbGF0Zm9ybUltYWdlUGF0aCgiUmVzdW1lLnN2ZyIpLCB3
aWR0aDogaW1hZ2VTaXplLCBoZWlnaHQ6IGltYWdlU2l6ZX07CisgICAgICAgIHZhciBzdGVwT3Zl
ckltYWdlID0ge3NyYzogcGxhdGZvcm1JbWFnZVBhdGgoIlN0ZXBPdmVyLnN2ZyIpLCB3aWR0aDog
aW1hZ2VTaXplLCBoZWlnaHQ6IGltYWdlU2l6ZX07CisgICAgICAgIHZhciBzdGVwSW50b0ltYWdl
ID0ge3NyYzogcGxhdGZvcm1JbWFnZVBhdGgoIlN0ZXBJbnRvLnN2ZyIpLCB3aWR0aDogaW1hZ2VT
aXplLCBoZWlnaHQ6IGltYWdlU2l6ZX07CisgICAgICAgIHZhciBzdGVwT3V0SW1hZ2UgPSB7c3Jj
OiBwbGF0Zm9ybUltYWdlUGF0aCgiU3RlcE91dC5zdmciKSwgd2lkdGg6IGltYWdlU2l6ZSwgaGVp
Z2h0OiBpbWFnZVNpemV9OworCisgICAgICAgIHZhciB0b29sVGlwID0gV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJFbmFibGUgYWxsIGJyZWFrcG9pbnRzICglcykiKS5mb3JtYXQodGhpcy5fdG9nZ2xl
QnJlYWtwb2ludHNLZXlib2FyZFNob3J0Y3V0LmRpc3BsYXlOYW1lKTsKKyAgICAgICAgdmFyIGFs
dFRvb2xUaXAgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRpc2FibGUgYWxsIGJyZWFrcG9pbnRz
ICglcykiKS5mb3JtYXQodGhpcy5fdG9nZ2xlQnJlYWtwb2ludHNLZXlib2FyZFNob3J0Y3V0LmRp
c3BsYXlOYW1lKTsKKworICAgICAgICB0aGlzLl9kZWJ1Z2dlckJyZWFrcG9pbnRzQnV0dG9uSXRl
bSA9IG5ldyBXZWJJbnNwZWN0b3IuQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbSgiZGVidWdn
ZXItYnJlYWtwb2ludHMiLCB0b29sVGlwLCBhbHRUb29sVGlwLCBicmVha3BvaW50c0ltYWdlLnNy
YywgYnJlYWtwb2ludHNJbWFnZS53aWR0aCwgYnJlYWtwb2ludHNJbWFnZS5oZWlnaHQpOworICAg
ICAgICB0aGlzLl9kZWJ1Z2dlckJyZWFrcG9pbnRzQnV0dG9uSXRlbS5hY3RpdmF0ZWQgPSBXZWJJ
bnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLmJyZWFrcG9pbnRzRW5hYmxlZDsKKyAgICAgICAgdGhp
cy5fZGVidWdnZXJCcmVha3BvaW50c0J1dHRvbkl0ZW0uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgdGhpcy5fYnJlYWtwb2lu
dHNUb2dnbGVCdXR0b25DbGlja2VkLCB0aGlzKTsKKyAgICAgICAgdGhpcy5fbmF2aWdhdGlvbkJh
ci5hZGROYXZpZ2F0aW9uSXRlbSh0aGlzLl9kZWJ1Z2dlckJyZWFrcG9pbnRzQnV0dG9uSXRlbSk7
CiAKLSAgICAgICAgLy8gS2VlcCByZXNvdXJjZXMgd2l0aCBicmVha3BvaW50cy4KLSAgICAgICAg
aWYgKHRyZWVFbGVtZW50Lmhhc0NoaWxkcmVuKSB7Ci0gICAgICAgICAgICBmb3IgKHZhciBjaGls
ZCBvZiB0cmVlRWxlbWVudC5jaGlsZHJlbikgewotICAgICAgICAgICAgICAgIGlmIChjaGlsZCBp
bnN0YW5jZW9mIFdlYkluc3BlY3Rvci5CcmVha3BvaW50VHJlZUVsZW1lbnQpCi0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB9OworICAgICAgICB0b29sVGlwID0gV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJQYXVzZSBzY3JpcHQgZXhlY3V0aW9uICglcyBvciAlcykiKS5mb3JtYXQodGhpcy5w
YXVzZU9yUmVzdW1lS2V5Ym9hcmRTaG9ydGN1dC5kaXNwbGF5TmFtZSwgdGhpcy5wYXVzZU9yUmVz
dW1lQWx0ZXJuYXRlS2V5Ym9hcmRTaG9ydGN1dC5kaXNwbGF5TmFtZSk7CisgICAgICAgIGFsdFRv
b2xUaXAgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvbnRpbnVlIHNjcmlwdCBleGVjdXRpb24g
KCVzIG9yICVzKSIpLmZvcm1hdCh0aGlzLnBhdXNlT3JSZXN1bWVLZXlib2FyZFNob3J0Y3V0LmRp
c3BsYXlOYW1lLCB0aGlzLnBhdXNlT3JSZXN1bWVBbHRlcm5hdGVLZXlib2FyZFNob3J0Y3V0LmRp
c3BsYXlOYW1lKTsKIAotICAgIHRoaXMuZmlsdGVyQmFyLmFkZEZpbHRlckJhckJ1dHRvbigiZGVi
dWdnZXItc2hvdy1yZXNvdXJjZXMtd2l0aC1jaGlsZHJlbi1vbmx5Iiwgc2hvd1Jlc291cmNlc1dp
dGhCcmVha3BvaW50c09ubHlGaWx0ZXJGdW5jdGlvbiwgdHJ1ZSwgV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJTaG93IG9ubHkgcmVzb3VyY2VzIHdpdGggYnJlYWtwb2ludHMuIiksIFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiU2hvdyByZXNvdXJjZXMgd2l0aCBhbmQgd2l0aG91dCBicmVha3BvaW50cy4i
KSwgcGxhdGZvcm1JbWFnZVBhdGgoIkJyZWFrcG9pbnRzLnN2ZyIpLCAxNSwgMTUpOworICAgICAg
ICB0aGlzLl9kZWJ1Z2dlclBhdXNlUmVzdW1lQnV0dG9uSXRlbSA9IG5ldyBXZWJJbnNwZWN0b3Iu
VG9nZ2xlQnV0dG9uTmF2aWdhdGlvbkl0ZW0oImRlYnVnZ2VyLXBhdXNlLXJlc3VtZSIsIHRvb2xU
aXAsIGFsdFRvb2xUaXAsIHBhdXNlSW1hZ2Uuc3JjLCByZXN1bWVJbWFnZS5zcmMsIHBhdXNlSW1h
Z2Uud2lkdGgsIHBhdXNlSW1hZ2UuaGVpZ2h0KTsKKyAgICAgICAgdGhpcy5fZGVidWdnZXJQYXVz
ZVJlc3VtZUJ1dHRvbkl0ZW0uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQnV0dG9uTmF2
aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgdGhpcy5fZGVidWdnZXJQYXVzZVJlc3VtZUJ1dHRv
bkNsaWNrZWQsIHRoaXMpOworICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyLmFkZE5hdmlnYXRp
b25JdGVtKHRoaXMuX2RlYnVnZ2VyUGF1c2VSZXN1bWVCdXR0b25JdGVtKTsKIAotICAgIHRoaXMu
X2JyZWFrcG9pbnRzQ29udGVudFRyZWVPdXRsaW5lID0gdGhpcy5jb250ZW50VHJlZU91dGxpbmU7
Ci0gICAgdGhpcy5fYnJlYWtwb2ludHNDb250ZW50VHJlZU91dGxpbmUub25zZWxlY3QgPSB0aGlz
Ll90cmVlRWxlbWVudFNlbGVjdGVkLmJpbmQodGhpcyk7Ci0gICAgdGhpcy5fYnJlYWtwb2ludHND
b250ZW50VHJlZU91dGxpbmUub25kZWxldGUgPSB0aGlzLl9icmVha3BvaW50VHJlZU91dGxpbmVE
ZWxldGVUcmVlRWxlbWVudC5iaW5kKHRoaXMpOwotICAgIHRoaXMuX2JyZWFrcG9pbnRzQ29udGVu
dFRyZWVPdXRsaW5lLm9uY29udGV4dG1lbnUgPSB0aGlzLl9icmVha3BvaW50VHJlZU91dGxpbmVD
b250ZXh0TWVudVRyZWVFbGVtZW50LmJpbmQodGhpcyk7CisgICAgICAgIHRoaXMuX2RlYnVnZ2Vy
U3RlcE92ZXJCdXR0b25JdGVtID0gbmV3IFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRl
bSgiZGVidWdnZXItc3RlcC1vdmVyIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdGVwIG92ZXIg
KCVzIG9yICVzKSIpLmZvcm1hdCh0aGlzLl9zdGVwT3ZlcktleWJvYXJkU2hvcnRjdXQuZGlzcGxh
eU5hbWUsIHRoaXMuX3N0ZXBPdmVyQWx0ZXJuYXRlS2V5Ym9hcmRTaG9ydGN1dC5kaXNwbGF5TmFt
ZSksIHN0ZXBPdmVySW1hZ2Uuc3JjLCBzdGVwT3ZlckltYWdlLndpZHRoLCBzdGVwT3ZlckltYWdl
LmhlaWdodCk7CisgICAgICAgIHRoaXMuX2RlYnVnZ2VyU3RlcE92ZXJCdXR0b25JdGVtLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNr
ZWQsIHRoaXMuX2RlYnVnZ2VyU3RlcE92ZXJCdXR0b25DbGlja2VkLCB0aGlzKTsKKyAgICAgICAg
dGhpcy5fZGVidWdnZXJTdGVwT3ZlckJ1dHRvbkl0ZW0uZW5hYmxlZCA9IGZhbHNlOworICAgICAg
ICB0aGlzLl9uYXZpZ2F0aW9uQmFyLmFkZE5hdmlnYXRpb25JdGVtKHRoaXMuX2RlYnVnZ2VyU3Rl
cE92ZXJCdXR0b25JdGVtKTsKIAotICAgIHRoaXMuX2JyZWFrcG9pbnRzQ29udGVudFRyZWVPdXRs
aW5lLmFwcGVuZENoaWxkKHRoaXMuX2dsb2JhbEJyZWFrcG9pbnRzRm9sZGVyVHJlZUVsZW1lbnQp
OwotICAgIHRoaXMuX2dsb2JhbEJyZWFrcG9pbnRzRm9sZGVyVHJlZUVsZW1lbnQuYXBwZW5kQ2hp
bGQodGhpcy5fYWxsRXhjZXB0aW9uc0JyZWFrcG9pbnRUcmVlRWxlbWVudCk7Ci0gICAgdGhpcy5f
Z2xvYmFsQnJlYWtwb2ludHNGb2xkZXJUcmVlRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9hbGxV
bmNhdWdodEV4Y2VwdGlvbnNCcmVha3BvaW50VHJlZUVsZW1lbnQpOwotICAgIHRoaXMuX2dsb2Jh
bEJyZWFrcG9pbnRzRm9sZGVyVHJlZUVsZW1lbnQuZXhwYW5kKCk7CisgICAgICAgIHRoaXMuX2Rl
YnVnZ2VyU3RlcEludG9CdXR0b25JdGVtID0gbmV3IFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0
aW9uSXRlbSgiZGVidWdnZXItc3RlcC1pbnRvIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdGVw
IGludG8gKCVzIG9yICVzKSIpLmZvcm1hdCh0aGlzLl9zdGVwSW50b0tleWJvYXJkU2hvcnRjdXQu
ZGlzcGxheU5hbWUsIHRoaXMuX3N0ZXBJbnRvQWx0ZXJuYXRlS2V5Ym9hcmRTaG9ydGN1dC5kaXNw
bGF5TmFtZSksIHN0ZXBJbnRvSW1hZ2Uuc3JjLCBzdGVwSW50b0ltYWdlLndpZHRoLCBzdGVwSW50
b0ltYWdlLmhlaWdodCk7CisgICAgICAgIHRoaXMuX2RlYnVnZ2VyU3RlcEludG9CdXR0b25JdGVt
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50
LkNsaWNrZWQsIHRoaXMuX2RlYnVnZ2VyU3RlcEludG9CdXR0b25DbGlja2VkLCB0aGlzKTsKKyAg
ICAgICAgdGhpcy5fZGVidWdnZXJTdGVwSW50b0J1dHRvbkl0ZW0uZW5hYmxlZCA9IGZhbHNlOwor
ICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyLmFkZE5hdmlnYXRpb25JdGVtKHRoaXMuX2RlYnVn
Z2VyU3RlcEludG9CdXR0b25JdGVtKTsKIAotICAgIHZhciBicmVha3BvaW50c1JvdyA9IG5ldyBX
ZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7Ci0gICAgYnJlYWtwb2ludHNSb3cuZWxlbWVu
dC5hcHBlbmRDaGlsZCh0aGlzLl9icmVha3BvaW50c0NvbnRlbnRUcmVlT3V0bGluZS5lbGVtZW50
KTsKKyAgICAgICAgdGhpcy5fZGVidWdnZXJTdGVwT3V0QnV0dG9uSXRlbSA9IG5ldyBXZWJJbnNw
ZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0oImRlYnVnZ2VyLXN0ZXAtb3V0IiwgV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJTdGVwIG91dCAoJXMgb3IgJXMpIikuZm9ybWF0KHRoaXMuX3N0ZXBPdXRL
ZXlib2FyZFNob3J0Y3V0LmRpc3BsYXlOYW1lLCB0aGlzLl9zdGVwT3V0QWx0ZXJuYXRlS2V5Ym9h
cmRTaG9ydGN1dC5kaXNwbGF5TmFtZSksIHN0ZXBPdXRJbWFnZS5zcmMsIHN0ZXBPdXRJbWFnZS53
aWR0aCwgc3RlcE91dEltYWdlLmhlaWdodCk7CisgICAgICAgIHRoaXMuX2RlYnVnZ2VyU3RlcE91
dEJ1dHRvbkl0ZW0uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlv
bkl0ZW0uRXZlbnQuQ2xpY2tlZCwgdGhpcy5fZGVidWdnZXJTdGVwT3V0QnV0dG9uQ2xpY2tlZCwg
dGhpcyk7CisgICAgICAgIHRoaXMuX2RlYnVnZ2VyU3RlcE91dEJ1dHRvbkl0ZW0uZW5hYmxlZCA9
IGZhbHNlOworICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyLmFkZE5hdmlnYXRpb25JdGVtKHRo
aXMuX2RlYnVnZ2VyU3RlcE91dEJ1dHRvbkl0ZW0pOwogCi0gICAgdmFyIGJyZWFrcG9pbnRzR3Jv
dXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoW2JyZWFrcG9pbnRzUm93
XSk7Ci0gICAgdmFyIGJyZWFrcG9pbnRzU2VjdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWls
c1NlY3Rpb24oInNjcmlwdHMiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNjcmlwdHMiKSwgW2Jy
ZWFrcG9pbnRzR3JvdXBdKTsKLSAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmFwcGVuZENoaWxkKGJy
ZWFrcG9pbnRzU2VjdGlvbi5lbGVtZW50KTsKKyAgICAgICAgLy8gQWRkIHRoaXMgb2Zmc2V0LXNl
Y3Rpb25zIGNsYXNzIG5hbWUgc28gdGhlIHN0aWNreSBoZWFkZXJzIGRvbid0IG92ZXJsYXAgdGhl
IG5hdmlnYXRpb24gYmFyLgorICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJ
bnNwZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFuZWwuT2Zmc2V0U2VjdGlvbnNTdHlsZUNsYXNzTmFt
ZSk7CiAKLSAgICB0aGlzLl9jYWxsU3RhY2tDb250ZW50VHJlZU91dGxpbmUgPSB0aGlzLmNyZWF0
ZUNvbnRlbnRUcmVlT3V0bGluZSh0cnVlKTsKLSAgICB0aGlzLl9jYWxsU3RhY2tDb250ZW50VHJl
ZU91dGxpbmUub25zZWxlY3QgPSB0aGlzLl90cmVlRWxlbWVudFNlbGVjdGVkLmJpbmQodGhpcyk7
CisgICAgICAgIHRoaXMuX2dsb2JhbEJyZWFrcG9pbnRzRm9sZGVyVHJlZUVsZW1lbnQgPSBuZXcg
V2ViSW5zcGVjdG9yLkZvbGRlclRyZWVFbGVtZW50KFdlYkluc3BlY3Rvci5VSVN0cmluZygiR2xv
YmFsIEJyZWFrcG9pbnRzIiksIG51bGwsIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQYW5l
bC5HbG9iYWxJY29uU3R5bGVDbGFzc05hbWUpOworICAgICAgICB0aGlzLl9hbGxFeGNlcHRpb25z
QnJlYWtwb2ludFRyZWVFbGVtZW50ID0gbmV3IFdlYkluc3BlY3Rvci5CcmVha3BvaW50VHJlZUVs
ZW1lbnQoV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5hbGxFeGNlcHRpb25zQnJlYWtwb2lu
dCwgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBhbmVsLkV4Y2VwdGlvbkljb25TdHlsZUNs
YXNzTmFtZSwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJBbGwgRXhjZXB0aW9ucyIpKTsKKyAgICAg
ICAgdGhpcy5fYWxsVW5jYXVnaHRFeGNlcHRpb25zQnJlYWtwb2ludFRyZWVFbGVtZW50ID0gbmV3
IFdlYkluc3BlY3Rvci5CcmVha3BvaW50VHJlZUVsZW1lbnQoV2ViSW5zcGVjdG9yLmRlYnVnZ2Vy
TWFuYWdlci5hbGxVbmNhdWdodEV4Y2VwdGlvbnNCcmVha3BvaW50LCBXZWJJbnNwZWN0b3IuRGVi
dWdnZXJTaWRlYmFyUGFuZWwuRXhjZXB0aW9uSWNvblN0eWxlQ2xhc3NOYW1lLCBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIkFsbCBVbmNhdWdodCBFeGNlcHRpb25zIikpOwogCi0gICAgdGhpcy5fY2Fs
bFN0YWNrUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdyhXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIk5vIENhbGwgRnJhbWVzIikpOwotICAgIHRoaXMuX2NhbGxTdGFja1Jvdy5z
aG93RW1wdHlNZXNzYWdlKCk7CisgICAgICAgIHRoaXMuZmlsdGVyQmFyLnBsYWNlaG9sZGVyID0g
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGaWx0ZXIgQnJlYWtwb2ludCBMaXN0Iik7CisgICAgICAg
IHZhciBzaG93UmVzb3VyY2VzV2l0aEJyZWFrcG9pbnRzT25seUZpbHRlckZ1bmN0aW9uID0gZnVu
Y3Rpb24odHJlZUVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIEtlZXAgYnJlYWtw
b2ludHMgYW5kIG90aGVyIGVsZW1lbnRzIHRoYXQgYXJlbid0IHJlc291cmNlcy4KKyAgICAgICAg
ICAgIGlmICghdHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVl
RWxlbWVudCB8fCB0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5CcmVha3BvaW50
VHJlZUVsZW1lbnQpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICB2YXIgY2Fs
bFN0YWNrR3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoW3RoaXMu
X2NhbGxTdGFja1Jvd10pOwotICAgIHRoaXMuX2NhbGxTdGFja1NlY3Rpb24gPSBuZXcgV2ViSW5z
cGVjdG9yLkRldGFpbHNTZWN0aW9uKCJjYWxsLXN0YWNrIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJDYWxsIFN0YWNrIiksIFtjYWxsU3RhY2tHcm91cF0pOworICAgICAgICAgICAgLy8gS2VlcCBy
ZXNvdXJjZXMgd2l0aCBicmVha3BvaW50cy4KKyAgICAgICAgICAgIGlmICh0cmVlRWxlbWVudC5o
YXNDaGlsZHJlbikgeworICAgICAgICAgICAgICAgIGZvciAodmFyIGNoaWxkIG9mIHRyZWVFbGVt
ZW50LmNoaWxkcmVuKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZCBpbnN0YW5jZW9m
IFdlYkluc3BlY3Rvci5CcmVha3BvaW50VHJlZUVsZW1lbnQpCisgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH07CiAKLSAgICB0aGlzLl9wYXVzZVJlYXNv
blRyZWVPdXRsaW5lID0gbnVsbDsKKyAgICAgICAgdGhpcy5maWx0ZXJCYXIuYWRkRmlsdGVyQmFy
QnV0dG9uKCJkZWJ1Z2dlci1zaG93LXJlc291cmNlcy13aXRoLWNoaWxkcmVuLW9ubHkiLCBzaG93
UmVzb3VyY2VzV2l0aEJyZWFrcG9pbnRzT25seUZpbHRlckZ1bmN0aW9uLCB0cnVlLCBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIlNob3cgb25seSByZXNvdXJjZXMgd2l0aCBicmVha3BvaW50cy4iKSwg
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTaG93IHJlc291cmNlcyB3aXRoIGFuZCB3aXRob3V0IGJy
ZWFrcG9pbnRzLiIpLCBwbGF0Zm9ybUltYWdlUGF0aCgiQnJlYWtwb2ludHMuc3ZnIiksIDE1LCAx
NSk7CiAKLSAgICB0aGlzLl9wYXVzZVJlYXNvbkxpbmtDb250YWluZXJFbGVtZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwotICAgIHRoaXMuX3BhdXNlUmVhc29uVGV4dFJvdyA9
IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25UZXh0Um93OwotICAgIHRoaXMuX3BhdXNl
UmVhc29uR3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoW3RoaXMu
X3BhdXNlUmVhc29uVGV4dFJvd10pOwotICAgIHRoaXMuX3BhdXNlUmVhc29uU2VjdGlvbiA9IG5l
dyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24oInBhdXNlZC1yZWFzb24iLCBudWxsLCBbdGhp
cy5fcGF1c2VSZWFzb25Hcm91cF0sIHRoaXMuX3BhdXNlUmVhc29uTGlua0NvbnRhaW5lckVsZW1l
bnQpOwotICAgIHRoaXMuX3BhdXNlUmVhc29uU2VjdGlvbi50aXRsZSA9IFdlYkluc3BlY3Rvci5V
SVN0cmluZygiUGF1c2UgUmVhc29uIik7CisgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRzQ29udGVu
dFRyZWVPdXRsaW5lID0gdGhpcy5jb250ZW50VHJlZU91dGxpbmU7CisgICAgICAgIHRoaXMuX2Jy
ZWFrcG9pbnRzQ29udGVudFRyZWVPdXRsaW5lLm9uc2VsZWN0ID0gdGhpcy5fdHJlZUVsZW1lbnRT
ZWxlY3RlZC5iaW5kKHRoaXMpOworICAgICAgICB0aGlzLl9icmVha3BvaW50c0NvbnRlbnRUcmVl
T3V0bGluZS5vbmRlbGV0ZSA9IHRoaXMuX2JyZWFrcG9pbnRUcmVlT3V0bGluZURlbGV0ZVRyZWVF
bGVtZW50LmJpbmQodGhpcyk7CisgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRzQ29udGVudFRyZWVP
dXRsaW5lLm9uY29udGV4dG1lbnUgPSB0aGlzLl9icmVha3BvaW50VHJlZU91dGxpbmVDb250ZXh0
TWVudVRyZWVFbGVtZW50LmJpbmQodGhpcyk7CiAKLSAgICBXZWJJbnNwZWN0b3IuQnJlYWtwb2lu
dC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5CcmVha3BvaW50LkV2ZW50LkRpc3BsYXlM
b2NhdGlvbkRpZENoYW5nZSwgdGhpcy5fYnJlYWtwb2ludERpc3BsYXlMb2NhdGlvbkRpZENoYW5n
ZSwgdGhpcyk7Ci19OworICAgICAgICB0aGlzLl9icmVha3BvaW50c0NvbnRlbnRUcmVlT3V0bGlu
ZS5hcHBlbmRDaGlsZCh0aGlzLl9nbG9iYWxCcmVha3BvaW50c0ZvbGRlclRyZWVFbGVtZW50KTsK
KyAgICAgICAgdGhpcy5fZ2xvYmFsQnJlYWtwb2ludHNGb2xkZXJUcmVlRWxlbWVudC5hcHBlbmRD
aGlsZCh0aGlzLl9hbGxFeGNlcHRpb25zQnJlYWtwb2ludFRyZWVFbGVtZW50KTsKKyAgICAgICAg
dGhpcy5fZ2xvYmFsQnJlYWtwb2ludHNGb2xkZXJUcmVlRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlz
Ll9hbGxVbmNhdWdodEV4Y2VwdGlvbnNCcmVha3BvaW50VHJlZUVsZW1lbnQpOworICAgICAgICB0
aGlzLl9nbG9iYWxCcmVha3BvaW50c0ZvbGRlclRyZWVFbGVtZW50LmV4cGFuZCgpOwogCi1XZWJJ
bnNwZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFuZWwuT2Zmc2V0U2VjdGlvbnNTdHlsZUNsYXNzTmFt
ZSA9ICJvZmZzZXQtc2VjdGlvbnMiOwotV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBhbmVs
LkRlYnVnZ2VyUGF1c2VkU3R5bGVDbGFzc05hbWUgPSAicGF1c2VkIjsKLVdlYkluc3BlY3Rvci5E
ZWJ1Z2dlclNpZGViYXJQYW5lbC5FeGNlcHRpb25JY29uU3R5bGVDbGFzc05hbWUgPSAiYnJlYWtw
b2ludC1leGNlcHRpb24taWNvbiI7Ci1XZWJJbnNwZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFuZWwu
UGF1c2VkQnJlYWtwb2ludEljb25TdHlsZUNsYXNzTmFtZSA9ICJicmVha3BvaW50LXBhdXNlZC1p
Y29uIjsKLVdlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQYW5lbC5HbG9iYWxJY29uU3R5bGVD
bGFzc05hbWUgPSAiZ2xvYmFsLWJyZWFrcG9pbnRzLWljb24iOworICAgICAgICB2YXIgYnJlYWtw
b2ludHNSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworICAgICAgICBi
cmVha3BvaW50c1Jvdy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2JyZWFrcG9pbnRzQ29udGVu
dFRyZWVPdXRsaW5lLmVsZW1lbnQpOwogCi1XZWJJbnNwZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFu
ZWwuU2VsZWN0ZWRBbGxFeGNlcHRpb25zQ29va2llS2V5ID0gImRlYnVnZ2VyLXNpZGViYXItcGFu
ZWwtYWxsLWV4Y2VwdGlvbnMtYnJlYWtwb2ludCI7Ci1XZWJJbnNwZWN0b3IuRGVidWdnZXJTaWRl
YmFyUGFuZWwuU2VsZWN0ZWRBbGxVbmNhdWdodEV4Y2VwdGlvbnNDb29raWVLZXkgPSAiZGVidWdn
ZXItc2lkZWJhci1wYW5lbC1hbGwtdW5jYXVnaHQtZXhjZXB0aW9ucy1icmVha3BvaW50IjsKKyAg
ICAgICAgdmFyIGJyZWFrcG9pbnRzR3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0
aW9uR3JvdXAoW2JyZWFrcG9pbnRzUm93XSk7CisgICAgICAgIHZhciBicmVha3BvaW50c1NlY3Rp
b24gPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uKCJzY3JpcHRzIiwgV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJTY3JpcHRzIiksIFticmVha3BvaW50c0dyb3VwXSk7CisgICAgICAgIHRo
aXMuY29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoYnJlYWtwb2ludHNTZWN0aW9uLmVsZW1lbnQp
OworCisgICAgICAgIHRoaXMuX2NhbGxTdGFja0NvbnRlbnRUcmVlT3V0bGluZSA9IHRoaXMuY3Jl
YXRlQ29udGVudFRyZWVPdXRsaW5lKHRydWUpOworICAgICAgICB0aGlzLl9jYWxsU3RhY2tDb250
ZW50VHJlZU91dGxpbmUub25zZWxlY3QgPSB0aGlzLl90cmVlRWxlbWVudFNlbGVjdGVkLmJpbmQo
dGhpcyk7CisKKyAgICAgICAgdGhpcy5fY2FsbFN0YWNrUm93ID0gbmV3IFdlYkluc3BlY3Rvci5E
ZXRhaWxzU2VjdGlvblJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk5vIENhbGwgRnJhbWVzIikp
OworICAgICAgICB0aGlzLl9jYWxsU3RhY2tSb3cuc2hvd0VtcHR5TWVzc2FnZSgpOworCisgICAg
ICAgIHZhciBjYWxsU3RhY2tHcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25H
cm91cChbdGhpcy5fY2FsbFN0YWNrUm93XSk7CisgICAgICAgIHRoaXMuX2NhbGxTdGFja1NlY3Rp
b24gPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uKCJjYWxsLXN0YWNrIiwgV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJDYWxsIFN0YWNrIiksIFtjYWxsU3RhY2tHcm91cF0pOwogCi1XZWJJ
bnNwZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVj
dG9yOiBXZWJJbnNwZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFuZWwsCi0gICAgX19wcm90b19fOiBX
ZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUsCisgICAgICAgIHRo
aXMuX3BhdXNlUmVhc29uVHJlZU91dGxpbmUgPSBudWxsOworCisgICAgICAgIHRoaXMuX3BhdXNl
UmVhc29uTGlua0NvbnRhaW5lckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFu
Iik7CisgICAgICAgIHRoaXMuX3BhdXNlUmVhc29uVGV4dFJvdyA9IG5ldyBXZWJJbnNwZWN0b3Iu
RGV0YWlsc1NlY3Rpb25UZXh0Um93OworICAgICAgICB0aGlzLl9wYXVzZVJlYXNvbkdyb3VwID0g
bmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwKFt0aGlzLl9wYXVzZVJlYXNvblRl
eHRSb3ddKTsKKyAgICAgICAgdGhpcy5fcGF1c2VSZWFzb25TZWN0aW9uID0gbmV3IFdlYkluc3Bl
Y3Rvci5EZXRhaWxzU2VjdGlvbigicGF1c2VkLXJlYXNvbiIsIG51bGwsIFt0aGlzLl9wYXVzZVJl
YXNvbkdyb3VwXSwgdGhpcy5fcGF1c2VSZWFzb25MaW5rQ29udGFpbmVyRWxlbWVudCk7CisgICAg
ICAgIHRoaXMuX3BhdXNlUmVhc29uU2VjdGlvbi50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiUGF1c2UgUmVhc29uIik7CisKKyAgICAgICAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQuYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5FdmVudC5EaXNwbGF5TG9jYXRp
b25EaWRDaGFuZ2UsIHRoaXMuX2JyZWFrcG9pbnREaXNwbGF5TG9jYXRpb25EaWRDaGFuZ2UsIHRo
aXMpOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCkBAIC0xNzYsMjUgKzE2NSwyNSBAQCBXZWJJ
bnNwZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICByZXR1
cm4gISF0aGlzLl9icmVha3BvaW50c0NvbnRlbnRUcmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVt
ZW50CiAgICAgICAgICAgICB8fCAhIXRoaXMuX2NhbGxTdGFja0NvbnRlbnRUcmVlT3V0bGluZS5z
ZWxlY3RlZFRyZWVFbGVtZW50CiAgICAgICAgICAgICB8fCAodGhpcy5fcGF1c2VSZWFzb25UcmVl
T3V0bGluZSAmJiAhIXRoaXMuX3BhdXNlUmVhc29uVHJlZU91dGxpbmUuc2VsZWN0ZWRUcmVlRWxl
bWVudCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93RGVmYXVsdENvbnRlbnRWaWV3OiBmdW5j
dGlvbigpCisgICAgc2hvd0RlZmF1bHRDb250ZW50VmlldygpCiAgICAgewogICAgICAgICBXZWJJ
bnNwZWN0b3IucmVzb3VyY2VTaWRlYmFyUGFuZWwuc2hvd0RlZmF1bHRDb250ZW50VmlldygpOwot
ICAgIH0sCisgICAgfQogCi0gICAgdHJlZUVsZW1lbnRGb3JSZXByZXNlbnRlZE9iamVjdDogZnVu
Y3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCisgICAgdHJlZUVsZW1lbnRGb3JSZXByZXNlbnRlZE9i
amVjdChyZXByZXNlbnRlZE9iamVjdCkKICAgICB7CiAgICAgICAgIC8vIFRoZSBtYWluIHJlc291
cmNlIGlzIHVzZWQgYXMgdGhlIHJlcHJlc2VudGVkT2JqZWN0IGluc3RlYWQgb2YgRnJhbWUgaW4g
b3VyIHRyZWUuCiAgICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYklu
c3BlY3Rvci5GcmFtZSkKICAgICAgICAgICAgIHJlcHJlc2VudGVkT2JqZWN0ID0gcmVwcmVzZW50
ZWRPYmplY3QubWFpblJlc291cmNlOwogCiAgICAgICAgIHJldHVybiB0aGlzLmNvbnRlbnRUcmVl
T3V0bGluZS5nZXRDYWNoZWRUcmVlRWxlbWVudChyZXByZXNlbnRlZE9iamVjdCk7Ci0gICAgfSwK
KyAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQKIAotICAgIHNhdmVTdGF0ZVRvQ29va2llOiBmdW5j
dGlvbihjb29raWUpCisgICAgc2F2ZVN0YXRlVG9Db29raWUoY29va2llKQogICAgIHsKICAgICAg
ICAgY29uc29sZS5hc3NlcnQoY29va2llKTsKIApAQCAtMjEwLDEwICsxOTksMTAgQEAgV2ViSW5z
cGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKHJl
cHJlc2VudGVkT2JqZWN0ID09PSBXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLmFsbFVuY2F1
Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnQpCiAgICAgICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9y
LkRlYnVnZ2VyU2lkZWJhclBhbmVsLlNlbGVjdGVkQWxsVW5jYXVnaHRFeGNlcHRpb25zQ29va2ll
S2V5XSA9IHRydWU7CiAKLSAgICAgICAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFu
ZWwucHJvdG90eXBlLnNhdmVTdGF0ZVRvQ29va2llLmNhbGwodGhpcywgY29va2llKTsKLSAgICB9
LAorICAgICAgICBzdXBlci5zYXZlU3RhdGVUb0Nvb2tpZShjb29raWUpOworICAgIH0KIAotICAg
IHJlc3RvcmVTdGF0ZUZyb21Db29raWU6IGZ1bmN0aW9uKGNvb2tpZSwgcmVsYXhlZE1hdGNoRGVs
YXkpCisgICAgcmVzdG9yZVN0YXRlRnJvbUNvb2tpZShjb29raWUsIHJlbGF4ZWRNYXRjaERlbGF5
KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoY29va2llKTsKIApAQCAtMjIzLDEyICsy
MTIsMTIgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgZWxzZSBpZiAoY29va2llW1dlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQYW5l
bC5TZWxlY3RlZEFsbFVuY2F1Z2h0RXhjZXB0aW9uc0Nvb2tpZUtleV0pCiAgICAgICAgICAgICB0
aGlzLl9hbGxVbmNhdWdodEV4Y2VwdGlvbnNCcmVha3BvaW50VHJlZUVsZW1lbnQucmV2ZWFsQW5k
U2VsZWN0KCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5OYXZpZ2F0
aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZS5yZXN0b3JlU3RhdGVGcm9tQ29va2llLmNhbGwodGhp
cywgY29va2llLCByZWxheGVkTWF0Y2hEZWxheSk7Ci0gICAgfSwKKyAgICAgICAgICAgIHN1cGVy
LnJlc3RvcmVTdGF0ZUZyb21Db29raWUoY29va2llLCByZWxheGVkTWF0Y2hEZWxheSk7CisgICAg
fQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX2RlYnVnZ2VyUGF1c2VSZXN1bWVCdXR0b25DbGlj
a2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBfZGVidWdnZXJQYXVzZVJlc3VtZUJ1dHRvbkNsaWNr
ZWQoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdl
ci5wYXVzZWQpCiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLnJlc3Vt
ZSgpOwpAQCAtMjM2LDI0ICsyMjUsMjQgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBh
bmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2RlYnVnZ2VyUGF1c2VSZXN1bWVC
dXR0b25JdGVtLmVuYWJsZWQgPSBmYWxzZTsKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1
Z2dlck1hbmFnZXIucGF1c2UoKTsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCi0gICAgX2Rl
YnVnZ2VyU3RlcE92ZXJCdXR0b25DbGlja2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBfZGVidWdn
ZXJTdGVwT3ZlckJ1dHRvbkNsaWNrZWQoZXZlbnQpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0
b3IuZGVidWdnZXJNYW5hZ2VyLnN0ZXBPdmVyKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZGVi
dWdnZXJTdGVwSW50b0J1dHRvbkNsaWNrZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9kZWJ1Z2dl
clN0ZXBJbnRvQnV0dG9uQ2xpY2tlZChldmVudCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rv
ci5kZWJ1Z2dlck1hbmFnZXIuc3RlcEludG8oKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9kZWJ1
Z2dlclN0ZXBPdXRCdXR0b25DbGlja2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBfZGVidWdnZXJT
dGVwT3V0QnV0dG9uQ2xpY2tlZChldmVudCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5k
ZWJ1Z2dlck1hbmFnZXIuc3RlcE91dCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX2RlYnVnZ2Vy
RGlkUGF1c2U6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9kZWJ1Z2dlckRpZFBhdXNlKGV2ZW50KQog
ICAgIHsKICAgICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5pbnNlcnRCZWZvcmUodGhpcy5fY2Fs
bFN0YWNrU2VjdGlvbi5lbGVtZW50LCB0aGlzLmNvbnRlbnRFbGVtZW50LmZpcnN0Q2hpbGQpOwog
ICAgICAgICBpZiAodGhpcy5fdXBkYXRlUGF1c2VSZWFzb24oKSkKQEAgLTI2NSw5ICsyNTQsOSBA
QCBXZWJJbnNwZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAg
ICB0aGlzLl9kZWJ1Z2dlclN0ZXBJbnRvQnV0dG9uSXRlbS5lbmFibGVkID0gdHJ1ZTsKIAogICAg
ICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuRGVidWdnZXJTaWRl
YmFyUGFuZWwuRGVidWdnZXJQYXVzZWRTdHlsZUNsYXNzTmFtZSk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfZGVidWdnZXJEaWRSZXN1bWU6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9kZWJ1Z2dlckRp
ZFJlc3VtZShldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX2NhbGxTdGFja1NlY3Rpb24uZWxl
bWVudC5yZW1vdmUoKTsKICAgICAgICAgdGhpcy5fcGF1c2VSZWFzb25TZWN0aW9uLmVsZW1lbnQu
cmVtb3ZlKCk7CkBAIC0yNzksMTkgKzI2OCwxOSBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJTaWRl
YmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9kZWJ1Z2dlclN0ZXBPdXRCdXR0
b25JdGVtLmVuYWJsZWQgPSBmYWxzZTsKIAogICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0
LnJlbW92ZShXZWJJbnNwZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFuZWwuRGVidWdnZXJQYXVzZWRT
dHlsZUNsYXNzTmFtZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfYnJlYWtwb2ludHNFbmFibGVk
RGlkQ2hhbmdlOiBmdW5jdGlvbihldmVudCkKKyAgICBfYnJlYWtwb2ludHNFbmFibGVkRGlkQ2hh
bmdlKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fZGVidWdnZXJCcmVha3BvaW50c0J1dHRv
bkl0ZW0uYWN0aXZhdGVkID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5icmVha3BvaW50
c0VuYWJsZWQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfYnJlYWtwb2ludHNUb2dnbGVCdXR0b25D
bGlja2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBfYnJlYWtwb2ludHNUb2dnbGVCdXR0b25DbGlj
a2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5i
cmVha3BvaW50c0VuYWJsZWQgPSAhdGhpcy5fZGVidWdnZXJCcmVha3BvaW50c0J1dHRvbkl0ZW0u
YWN0aXZhdGVkOwotICAgIH0sCisgICAgfQogCi0gICAgX2FkZEJyZWFrcG9pbnQ6IGZ1bmN0aW9u
KGJyZWFrcG9pbnQpCisgICAgX2FkZEJyZWFrcG9pbnQoYnJlYWtwb2ludCkKICAgICB7CiAgICAg
ICAgIHZhciBzb3VyY2VDb2RlID0gYnJlYWtwb2ludC5zb3VyY2VDb2RlTG9jYXRpb24uZGlzcGxh
eVNvdXJjZUNvZGU7CiAgICAgICAgIGlmICghc291cmNlQ29kZSkKQEAgLTMxMSwxNiArMzAwLDE2
IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIGlmIChwYXJlbnRUcmVlRWxlbWVudC5jaGlsZHJlbi5sZW5ndGggPT09IDEpCiAgICAgICAg
ICAgICBwYXJlbnRUcmVlRWxlbWVudC5leHBhbmQoKTsKICAgICAgICAgcmV0dXJuIGJyZWFrcG9p
bnRUcmVlRWxlbWVudDsKLSAgICB9LAorICAgIH0KIAotICAgIF9hZGRCcmVha3BvaW50c0ZvclNv
dXJjZUNvZGU6IGZ1bmN0aW9uKHNvdXJjZUNvZGUpCisgICAgX2FkZEJyZWFrcG9pbnRzRm9yU291
cmNlQ29kZShzb3VyY2VDb2RlKQogICAgIHsKICAgICAgICAgdmFyIGJyZWFrcG9pbnRzID0gV2Vi
SW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5icmVha3BvaW50c0ZvclNvdXJjZUNvZGUoc291cmNl
Q29kZSk7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnJlYWtwb2ludHMubGVuZ3RoOyAr
K2kpCiAgICAgICAgICAgICB0aGlzLl9hZGRCcmVha3BvaW50KGJyZWFrcG9pbnRzW2ldLCBzb3Vy
Y2VDb2RlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9hZGRUcmVlRWxlbWVudEZvclNvdXJjZUNv
ZGVUb0NvbnRlbnRUcmVlT3V0bGluZTogZnVuY3Rpb24oc291cmNlQ29kZSkKKyAgICBfYWRkVHJl
ZUVsZW1lbnRGb3JTb3VyY2VDb2RlVG9Db250ZW50VHJlZU91dGxpbmUoc291cmNlQ29kZSkKICAg
ICB7CiAgICAgICAgIHZhciB0cmVlRWxlbWVudCA9IHRoaXMuX2JyZWFrcG9pbnRzQ29udGVudFRy
ZWVPdXRsaW5lLmdldENhY2hlZFRyZWVFbGVtZW50KHNvdXJjZUNvZGUpOwogICAgICAgICBpZiAo
IXRyZWVFbGVtZW50KSB7CkBAIC0zNDAsOSArMzI5LDkgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2Vy
U2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiB0
cmVlRWxlbWVudDsKLSAgICB9LAorICAgIH0KIAotICAgIF9yZXNvdXJjZUFkZGVkOiBmdW5jdGlv
bihldmVudCkKKyAgICBfcmVzb3VyY2VBZGRlZChldmVudCkKICAgICB7CiAgICAgICAgIHZhciBy
ZXNvdXJjZSA9IGV2ZW50LmRhdGEucmVzb3VyY2U7CiAKQEAgLTM1MSwxNiArMzQwLDE2IEBAIFdl
Ykluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAg
dGhpcy5fYWRkVHJlZUVsZW1lbnRGb3JTb3VyY2VDb2RlVG9Db250ZW50VHJlZU91dGxpbmUocmVz
b3VyY2UpOwogICAgICAgICB0aGlzLl9hZGRCcmVha3BvaW50c0ZvclNvdXJjZUNvZGUocmVzb3Vy
Y2UpOwotICAgIH0sCisgICAgfQogCi0gICAgX21haW5SZXNvdXJjZUNoYW5nZWQ6IGZ1bmN0aW9u
KGV2ZW50KQorICAgIF9tYWluUmVzb3VyY2VDaGFuZ2VkKGV2ZW50KQogICAgIHsKICAgICAgICAg
dmFyIHJlc291cmNlID0gZXZlbnQudGFyZ2V0Lm1haW5SZXNvdXJjZTsKICAgICAgICAgdGhpcy5f
YWRkVHJlZUVsZW1lbnRGb3JTb3VyY2VDb2RlVG9Db250ZW50VHJlZU91dGxpbmUocmVzb3VyY2Up
OwogICAgICAgICB0aGlzLl9hZGRCcmVha3BvaW50c0ZvclNvdXJjZUNvZGUocmVzb3VyY2UpOwot
ICAgIH0sCisgICAgfQogCi0gICAgX3NjcmlwdEFkZGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBf
c2NyaXB0QWRkZWQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgc2NyaXB0ID0gZXZlbnQuZGF0
YS5zY3JpcHQ7CiAKQEAgLTM4MCw5ICszNjksOSBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJTaWRl
YmFyUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuX2FkZFRyZWVFbGVtZW50Rm9y
U291cmNlQ29kZVRvQ29udGVudFRyZWVPdXRsaW5lKHNjcmlwdCk7CiAgICAgICAgIHRoaXMuX2Fk
ZEJyZWFrcG9pbnRzRm9yU291cmNlQ29kZShzY3JpcHQpOwotICAgIH0sCisgICAgfQogCi0gICAg
X3NjcmlwdHNDbGVhcmVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfc2NyaXB0c0NsZWFyZWQoZXZl
bnQpCiAgICAgewogICAgICAgICBmb3IgKHZhciBpID0gdGhpcy5fYnJlYWtwb2ludHNDb250ZW50
VHJlZU91dGxpbmUuY2hpbGRyZW4ubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHsKICAgICAgICAg
ICAgIHZhciB0cmVlRWxlbWVudCA9IHRoaXMuX2JyZWFrcG9pbnRzQ29udGVudFRyZWVPdXRsaW5l
LmNoaWxkcmVuW2ldOwpAQCAtMzkxLDE1ICszODAsMTUgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2Vy
U2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgICAgICAgICAgdGhpcy5fYnJlYWtwb2lu
dHNDb250ZW50VHJlZU91dGxpbmUucmVtb3ZlQ2hpbGRBdEluZGV4KGksIHRydWUsIHRydWUpOwog
ICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfYnJlYWtwb2ludEFkZGVkOiBmdW5jdGlv
bihldmVudCkKKyAgICBfYnJlYWtwb2ludEFkZGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFy
IGJyZWFrcG9pbnQgPSBldmVudC5kYXRhLmJyZWFrcG9pbnQ7CiAgICAgICAgIHRoaXMuX2FkZEJy
ZWFrcG9pbnQoYnJlYWtwb2ludCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfYnJlYWtwb2ludFJl
bW92ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9icmVha3BvaW50UmVtb3ZlZChldmVudCkKICAg
ICB7CiAgICAgICAgIHZhciBicmVha3BvaW50ID0gZXZlbnQuZGF0YS5icmVha3BvaW50OwogCkBA
IC00MTUsOSArNDA0LDkgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBhbmVsLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLl9yZW1vdmVCcmVh
a3BvaW50VHJlZUVsZW1lbnQoYnJlYWtwb2ludFRyZWVFbGVtZW50KTsKLSAgICB9LAorICAgIH0K
IAotICAgIF9icmVha3BvaW50RGlzcGxheUxvY2F0aW9uRGlkQ2hhbmdlOiBmdW5jdGlvbihldmVu
dCkKKyAgICBfYnJlYWtwb2ludERpc3BsYXlMb2NhdGlvbkRpZENoYW5nZShldmVudCkKICAgICB7
CiAgICAgICAgIHZhciBicmVha3BvaW50ID0gZXZlbnQudGFyZ2V0OwogICAgICAgICBpZiAoZXZl
bnQuZGF0YS5vbGREaXNwbGF5U291cmNlQ29kZSA9PT0gYnJlYWtwb2ludC5kaXNwbGF5U291cmNl
Q29kZSkKQEAgLTQzNywxNyArNDI2LDE3IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQ
YW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKG5ld0JyZWFrcG9pbnRUcmVlRWxlbWVu
dCAmJiB3YXNTZWxlY3RlZCkKICAgICAgICAgICAgIG5ld0JyZWFrcG9pbnRUcmVlRWxlbWVudC5y
ZXZlYWxBbmRTZWxlY3QodHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUpOwotICAgIH0sCisgICAgfQog
Ci0gICAgX3JlbW92ZUJyZWFrcG9pbnRUcmVlRWxlbWVudDogZnVuY3Rpb24oYnJlYWtwb2ludFRy
ZWVFbGVtZW50KQorICAgIF9yZW1vdmVCcmVha3BvaW50VHJlZUVsZW1lbnQoYnJlYWtwb2ludFRy
ZWVFbGVtZW50KQogICAgIHsKICAgICAgICAgdmFyIHBhcmVudFRyZWVFbGVtZW50ID0gYnJlYWtw
b2ludFRyZWVFbGVtZW50LnBhcmVudDsKICAgICAgICAgcGFyZW50VHJlZUVsZW1lbnQucmVtb3Zl
Q2hpbGQoYnJlYWtwb2ludFRyZWVFbGVtZW50KTsKIAogICAgICAgICBjb25zb2xlLmFzc2VydChw
YXJlbnRUcmVlRWxlbWVudC5wYXJlbnQgPT09IHRoaXMuX2JyZWFrcG9pbnRzQ29udGVudFRyZWVP
dXRsaW5lKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9kZWJ1Z2dlckNhbGxGcmFtZXNEaWRDaGFu
Z2U6IGZ1bmN0aW9uKCkKKyAgICBfZGVidWdnZXJDYWxsRnJhbWVzRGlkQ2hhbmdlKCkKICAgICB7
CiAgICAgICAgIHRoaXMuX2NhbGxTdGFja0NvbnRlbnRUcmVlT3V0bGluZS5yZW1vdmVDaGlsZHJl
bigpOwogCkBAIC00NzIsOSArNDYxLDkgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBh
bmVsLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAodHJlZUVsZW1lbnRUb1NlbGVjdCkKICAg
ICAgICAgICAgIHRyZWVFbGVtZW50VG9TZWxlY3Quc2VsZWN0KHRydWUsIHRydWUpOwotICAgIH0s
CisgICAgfQogCi0gICAgX2RlYnVnZ2VyQWN0aXZlQ2FsbEZyYW1lRGlkQ2hhbmdlOiBmdW5jdGlv
bigpCisgICAgX2RlYnVnZ2VyQWN0aXZlQ2FsbEZyYW1lRGlkQ2hhbmdlKCkKICAgICB7CiAgICAg
ICAgIHZhciBjYWxsRnJhbWVzID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5jYWxsRnJh
bWVzOwogICAgICAgICBpZiAoIWNhbGxGcmFtZXMpCkBAIC00ODUsOSArNDc0LDkgQEAgV2ViSW5z
cGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgLy8gc2lu
Y2UgdGhlcmUgbWlnaHQgYmUgY2FsbCBmcmFtZXMgaW4gdGhlIGJhY2tlbmQgdGhhdCB3ZXJlIHJl
bW92ZWQgd2hlbiBwcm9jZXNzaW5nIHRoZSBjYWxsCiAgICAgICAgIC8vIGZyYW1lIHBheWxvYWQu
CiAgICAgICAgIHRoaXMuX2RlYnVnZ2VyU3RlcE91dEJ1dHRvbkl0ZW0uZW5hYmxlZCA9IGluZGV4
T2ZBY3RpdmVDYWxsRnJhbWUgPCBjYWxsRnJhbWVzLmxlbmd0aCAtIDE7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfYnJlYWtwb2ludHNCZW5lYXRoVHJlZUVsZW1lbnQ6IGZ1bmN0aW9uKHRyZWVFbGVt
ZW50KQorICAgIF9icmVha3BvaW50c0JlbmVhdGhUcmVlRWxlbWVudCh0cmVlRWxlbWVudCkKICAg
ICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV2ViSW5z
cGVjdG9yLlJlc291cmNlVHJlZUVsZW1lbnQgfHwgdHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXZWJJ
bnNwZWN0b3IuU2NyaXB0VHJlZUVsZW1lbnQpOwogICAgICAgICBpZiAoISh0cmVlRWxlbWVudCBp
bnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50KSAmJiAhKHRyZWVFbGVt
ZW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlNjcmlwdFRyZWVFbGVtZW50KSkKQEAgLTUwNCwy
NCArNDkzLDI0IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQYW5lbC5wcm90b3R5cGUg
PSB7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gYnJlYWtwb2ludHM7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfcmVtb3ZlQWxsQnJlYWtwb2ludHM6IGZ1bmN0aW9uKGJyZWFrcG9pbnRzKQor
ICAgIF9yZW1vdmVBbGxCcmVha3BvaW50cyhicmVha3BvaW50cykKICAgICB7CiAgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgYnJlYWtwb2ludHMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAg
IHZhciBicmVha3BvaW50ID0gYnJlYWtwb2ludHNbaV07CiAgICAgICAgICAgICBpZiAoV2ViSW5z
cGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5pc0JyZWFrcG9pbnRSZW1vdmFibGUoYnJlYWtwb2ludCkp
CiAgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVCcmVh
a3BvaW50KGJyZWFrcG9pbnQpOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdG9n
Z2xlQWxsQnJlYWtwb2ludHM6IGZ1bmN0aW9uKGJyZWFrcG9pbnRzLCBkaXNhYmxlZCkKKyAgICBf
dG9nZ2xlQWxsQnJlYWtwb2ludHMoYnJlYWtwb2ludHMsIGRpc2FibGVkKQogICAgIHsKICAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBicmVha3BvaW50cy5sZW5ndGg7ICsraSkKICAgICAgICAg
ICAgIGJyZWFrcG9pbnRzW2ldLmRpc2FibGVkID0gZGlzYWJsZWQ7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfYnJlYWtwb2ludFRyZWVPdXRsaW5lRGVsZXRlVHJlZUVsZW1lbnQ6IGZ1bmN0aW9uKHRy
ZWVFbGVtZW50KQorICAgIF9icmVha3BvaW50VHJlZU91dGxpbmVEZWxldGVUcmVlRWxlbWVudCh0
cmVlRWxlbWVudCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRyZWVFbGVtZW50LnNl
bGVjdGVkKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQodHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxlbWVudCB8fCB0cmVlRWxlbWVudCBpbnN0YW5jZW9m
IFdlYkluc3BlY3Rvci5TY3JpcHRUcmVlRWxlbWVudCk7CkBAIC01MzgsOSArNTI3LDkgQEAgV2Vi
SW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
IG5leHRTaWJsaW5nLnNlbGVjdCh0cnVlLCB0cnVlKTsKIAogICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICB9LAorICAgIH0KIAotICAgIF9icmVha3BvaW50VHJlZU91dGxpbmVDb250ZXh0TWVudVRy
ZWVFbGVtZW50OiBmdW5jdGlvbihldmVudCwgdHJlZUVsZW1lbnQpCisgICAgX2JyZWFrcG9pbnRU
cmVlT3V0bGluZUNvbnRleHRNZW51VHJlZUVsZW1lbnQoZXZlbnQsIHRyZWVFbGVtZW50KQogICAg
IHsKICAgICAgICAgY29uc29sZS5hc3NlcnQodHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2VUcmVlRWxlbWVudCB8fCB0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdlYklu
c3BlY3Rvci5TY3JpcHRUcmVlRWxlbWVudCB8fCB0cmVlRWxlbWVudC5jb25zdHJ1Y3RvciA9PT0g
V2ViSW5zcGVjdG9yLkZvbGRlclRyZWVFbGVtZW50KTsKICAgICAgICAgaWYgKCEodHJlZUVsZW1l
bnQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxlbWVudCkgJiYgISh0cmVl
RWxlbWVudCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5TY3JpcHRUcmVlRWxlbWVudCkpCkBAIC01
NzIsOSArNTYxLDkgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBhbmVsLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJFbmFibGUgQnJlYWtwb2ludHMiKSwgdG9nZ2xlQWxsUmVzb3VyY2VCcmVha3BvaW50
cy5iaW5kKHRoaXMpKTsKICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIkRlbGV0ZSBCcmVha3BvaW50cyIpLCByZW1vdmVBbGxSZXNvdXJjZUJyZWFr
cG9pbnRzLmJpbmQodGhpcykpOwogICAgICAgICBjb250ZXh0TWVudS5zaG93KCk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfdHJlZUVsZW1lbnRTZWxlY3RlZDogZnVuY3Rpb24odHJlZUVsZW1lbnQs
IHNlbGVjdGVkQnlVc2VyKQorICAgIF90cmVlRWxlbWVudFNlbGVjdGVkKHRyZWVFbGVtZW50LCBz
ZWxlY3RlZEJ5VXNlcikKICAgICB7CiAgICAgICAgIGZ1bmN0aW9uIGRlc2VsZWN0Q2FsbFN0YWNr
Q29udGVudFRyZWVFbGVtZW50cygpCiAgICAgICAgIHsKQEAgLTY0Myw5ICs2MzIsOSBAQCBXZWJJ
bnNwZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAg
cmV0dXJuOwogCiAgICAgICAgIFdlYkluc3BlY3Rvci5yZXNvdXJjZVNpZGViYXJQYW5lbC5zaG93
U291cmNlQ29kZUxvY2F0aW9uKGJyZWFrcG9pbnQuc291cmNlQ29kZUxvY2F0aW9uKTsKLSAgICB9
LAorICAgIH0KIAotICAgIF9jb21wYXJlVG9wTGV2ZWxUcmVlRWxlbWVudHM6IGZ1bmN0aW9uKGEs
IGIpCisgICAgX2NvbXBhcmVUb3BMZXZlbFRyZWVFbGVtZW50cyhhLCBiKQogICAgIHsKICAgICAg
ICAgaWYgKGEgPT09IHRoaXMuX2dsb2JhbEJyZWFrcG9pbnRzRm9sZGVyVHJlZUVsZW1lbnQpCiAg
ICAgICAgICAgICByZXR1cm4gLTE7CkBAIC02NTMsOSArNjQyLDkgQEAgV2ViSW5zcGVjdG9yLkRl
YnVnZ2VyU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiAxOwog
CiAgICAgICAgIHJldHVybiBhLm1haW5UaXRsZS5sb2NhbGVDb21wYXJlKGIubWFpblRpdGxlKTsK
LSAgICB9LAorICAgIH0KIAotICAgIF9jb21wYXJlQnJlYWtwb2ludFRyZWVFbGVtZW50czogZnVu
Y3Rpb24oYSwgYikKKyAgICBfY29tcGFyZUJyZWFrcG9pbnRUcmVlRWxlbWVudHMoYSwgYikKICAg
ICB7CiAgICAgICAgIHZhciBhTG9jYXRpb24gPSBhLmJyZWFrcG9pbnQuc291cmNlQ29kZUxvY2F0
aW9uOwogICAgICAgICB2YXIgYkxvY2F0aW9uID0gYi5icmVha3BvaW50LnNvdXJjZUNvZGVMb2Nh
dGlvbjsKQEAgLTY2NSwxNyArNjU0LDE3IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQ
YW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4gY29tcGFyaXNvblJlc3VsdDsK
IAogICAgICAgICByZXR1cm4gYUxvY2F0aW9uLmRpc3BsYXlDb2x1bW5OdW1iZXIgLSBiTG9jYXRp
b24uZGlzcGxheUNvbHVtbk51bWJlcjsKLSAgICB9LAorICAgIH0KIAotICAgIF91cGRhdGVQYXVz
ZVJlYXNvbjogZnVuY3Rpb24oKQorICAgIF91cGRhdGVQYXVzZVJlYXNvbigpCiAgICAgewogICAg
ICAgICB0aGlzLl9wYXVzZVJlYXNvblRyZWVPdXRsaW5lID0gbnVsbDsKIAogICAgICAgICB0aGlz
Ll91cGRhdGVQYXVzZVJlYXNvbkdvdG9BcnJvdygpOwogICAgICAgICByZXR1cm4gdGhpcy5fdXBk
YXRlUGF1c2VSZWFzb25TZWN0aW9uKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdXBkYXRlUGF1
c2VSZWFzb25TZWN0aW9uOiBmdW5jdGlvbigpCisgICAgX3VwZGF0ZVBhdXNlUmVhc29uU2VjdGlv
bigpCiAgICAgewogICAgICAgICB2YXIgcGF1c2VEYXRhID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2Vy
TWFuYWdlci5wYXVzZURhdGE7CiAKQEAgLTc0Niw5ICs3MzUsOSBAQCBXZWJJbnNwZWN0b3IuRGVi
dWdnZXJTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0sCisgICAgfQogCi0gICAgX3VwZGF0ZVBhdXNlUmVhc29uR290b0Fy
cm93OiBmdW5jdGlvbigpCisgICAgX3VwZGF0ZVBhdXNlUmVhc29uR290b0Fycm93KCkKICAgICB7
CiAgICAgICAgIHRoaXMuX3BhdXNlUmVhc29uTGlua0NvbnRhaW5lckVsZW1lbnQucmVtb3ZlQ2hp
bGRyZW4oKTsKIApAQCAtNzY0LDMgKzc1MywxMiBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJTaWRl
YmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9wYXVzZVJlYXNvbkxpbmtDb250
YWluZXJFbGVtZW50LmFwcGVuZENoaWxkKGxpbmtFbGVtZW50KTsKICAgICB9CiB9OworCitXZWJJ
bnNwZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFuZWwuT2Zmc2V0U2VjdGlvbnNTdHlsZUNsYXNzTmFt
ZSA9ICJvZmZzZXQtc2VjdGlvbnMiOworV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBhbmVs
LkRlYnVnZ2VyUGF1c2VkU3R5bGVDbGFzc05hbWUgPSAicGF1c2VkIjsKK1dlYkluc3BlY3Rvci5E
ZWJ1Z2dlclNpZGViYXJQYW5lbC5FeGNlcHRpb25JY29uU3R5bGVDbGFzc05hbWUgPSAiYnJlYWtw
b2ludC1leGNlcHRpb24taWNvbiI7CitXZWJJbnNwZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFuZWwu
UGF1c2VkQnJlYWtwb2ludEljb25TdHlsZUNsYXNzTmFtZSA9ICJicmVha3BvaW50LXBhdXNlZC1p
Y29uIjsKK1dlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQYW5lbC5HbG9iYWxJY29uU3R5bGVD
bGFzc05hbWUgPSAiZ2xvYmFsLWJyZWFrcG9pbnRzLWljb24iOworCitXZWJJbnNwZWN0b3IuRGVi
dWdnZXJTaWRlYmFyUGFuZWwuU2VsZWN0ZWRBbGxFeGNlcHRpb25zQ29va2llS2V5ID0gImRlYnVn
Z2VyLXNpZGViYXItcGFuZWwtYWxsLWV4Y2VwdGlvbnMtYnJlYWtwb2ludCI7CitXZWJJbnNwZWN0
b3IuRGVidWdnZXJTaWRlYmFyUGFuZWwuU2VsZWN0ZWRBbGxVbmNhdWdodEV4Y2VwdGlvbnNDb29r
aWVLZXkgPSAiZGVidWdnZXItc2lkZWJhci1wYW5lbC1hbGwtdW5jYXVnaHQtZXhjZXB0aW9ucy1i
cmVha3BvaW50IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0RldGFpbHNTaWRlYmFyUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9EZXRhaWxzU2lkZWJhclBhbmVsLmpzCmluZGV4IDEzOGU2ODRk
MTM0MGNiMGE2OTdkYTYyYjg5MDhiMGIwZTk4Zjc3ZTMuLmMwMDdiNWNlMzIzM2Q5MzEwYjNjN2Nl
NWFiNjU0ODg2Y2Y3NWQxZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0RldGFpbHNTaWRlYmFyUGFuZWwuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGV0YWlsc1NpZGViYXJQYW5lbC5qcwpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMs
NDcgKzIzLDQ4IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAot
V2ViSW5zcGVjdG9yLkRldGFpbHNTaWRlYmFyUGFuZWwgPSBmdW5jdGlvbihpZGVudGlmaWVyLCBk
aXNwbGF5TmFtZSwgc2luZ3VsYXJEaXNwbGF5TmFtZSwgaW1hZ2UsIGtleWJvYXJkU2hvcnRjdXRL
ZXksIGVsZW1lbnQpCitXZWJJbnNwZWN0b3IuRGV0YWlsc1NpZGViYXJQYW5lbCA9IGNsYXNzIERl
dGFpbHNTaWRlYmFyUGFuZWwgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuU2lkZWJhclBhbmVsCiB7Ci0g
ICAgaWYgKGtleWJvYXJkU2hvcnRjdXRLZXkpCi0gICAgICAgIHRoaXMuX2tleWJvYXJkU2hvcnRj
dXQgPSBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQoV2ViSW5zcGVjdG9yLktleWJv
YXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29udHJvbCB8IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0
Y3V0Lk1vZGlmaWVyLlNoaWZ0LCBrZXlib2FyZFNob3J0Y3V0S2V5LCB0aGlzLnRvZ2dsZS5iaW5k
KHRoaXMpKTsKLQotICAgIGlmICh0aGlzLl9rZXlib2FyZFNob3J0Y3V0KSB7Ci0gICAgICAgIHZh
ciBzaG93VG9vbFRpcCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2hvdyB0aGUgJXMgZGV0YWls
cyBzaWRlYmFyICglcykiKS5mb3JtYXQoc2luZ3VsYXJEaXNwbGF5TmFtZSwgdGhpcy5fa2V5Ym9h
cmRTaG9ydGN1dC5kaXNwbGF5TmFtZSk7Ci0gICAgICAgIHZhciBoaWRlVG9vbFRpcCA9IFdlYklu
c3BlY3Rvci5VSVN0cmluZygiSGlkZSB0aGUgJXMgZGV0YWlscyBzaWRlYmFyICglcykiKS5mb3Jt
YXQoc2luZ3VsYXJEaXNwbGF5TmFtZSwgdGhpcy5fa2V5Ym9hcmRTaG9ydGN1dC5kaXNwbGF5TmFt
ZSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgdmFyIHNob3dUb29sVGlwID0gV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJTaG93IHRoZSAlcyBkZXRhaWxzIHNpZGViYXIiKS5mb3JtYXQoc2luZ3VsYXJE
aXNwbGF5TmFtZSk7Ci0gICAgICAgIHZhciBoaWRlVG9vbFRpcCA9IFdlYkluc3BlY3Rvci5VSVN0
cmluZygiSGlkZSB0aGUgJXMgZGV0YWlscyBzaWRlYmFyIikuZm9ybWF0KHNpbmd1bGFyRGlzcGxh
eU5hbWUpOwotICAgIH0KKyAgICBjb25zdHJ1Y3RvcihpZGVudGlmaWVyLCBkaXNwbGF5TmFtZSwg
c2luZ3VsYXJEaXNwbGF5TmFtZSwgaW1hZ2UsIGtleWJvYXJkU2hvcnRjdXRLZXksIGVsZW1lbnQp
CisgICAgeworICAgICAgICB2YXIga2V5Ym9hcmRTaG9ydGN1dCA9IG51bGw7CisgICAgICAgIGlm
IChrZXlib2FyZFNob3J0Y3V0S2V5KQorICAgICAgICAgICAga2V5Ym9hcmRTaG9ydGN1dCA9IG5l
dyBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dChXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9y
dGN1dC5Nb2RpZmllci5Db250cm9sIHwgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9k
aWZpZXIuU2hpZnQsIGtleWJvYXJkU2hvcnRjdXRLZXkpOwogCi0gICAgV2ViSW5zcGVjdG9yLlNp
ZGViYXJQYW5lbC5jYWxsKHRoaXMsIGlkZW50aWZpZXIsIGRpc3BsYXlOYW1lLCBzaG93VG9vbFRp
cCwgaGlkZVRvb2xUaXAsIGltYWdlLCBlbGVtZW50KTsKKyAgICAgICAgaWYgKGtleWJvYXJkU2hv
cnRjdXQpIHsKKyAgICAgICAgICAgIHZhciBzaG93VG9vbFRpcCA9IFdlYkluc3BlY3Rvci5VSVN0
cmluZygiU2hvdyB0aGUgJXMgZGV0YWlscyBzaWRlYmFyICglcykiKS5mb3JtYXQoc2luZ3VsYXJE
aXNwbGF5TmFtZSwga2V5Ym9hcmRTaG9ydGN1dC5kaXNwbGF5TmFtZSk7CisgICAgICAgICAgICB2
YXIgaGlkZVRvb2xUaXAgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkhpZGUgdGhlICVzIGRldGFp
bHMgc2lkZWJhciAoJXMpIikuZm9ybWF0KHNpbmd1bGFyRGlzcGxheU5hbWUsIGtleWJvYXJkU2hv
cnRjdXQuZGlzcGxheU5hbWUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdmFyIHNo
b3dUb29sVGlwID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTaG93IHRoZSAlcyBkZXRhaWxzIHNp
ZGViYXIiKS5mb3JtYXQoc2luZ3VsYXJEaXNwbGF5TmFtZSk7CisgICAgICAgICAgICB2YXIgaGlk
ZVRvb2xUaXAgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkhpZGUgdGhlICVzIGRldGFpbHMgc2lk
ZWJhciIpLmZvcm1hdChzaW5ndWxhckRpc3BsYXlOYW1lKTsKKyAgICAgICAgfQogCi0gICAgdGhp
cy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkRldGFpbHNTaWRlYmFyUGFuZWwu
U3R5bGVDbGFzc05hbWUpOwotfTsKKyAgICAgICAgc3VwZXIoaWRlbnRpZmllciwgZGlzcGxheU5h
bWUsIHNob3dUb29sVGlwLCBoaWRlVG9vbFRpcCwgaW1hZ2UsIGVsZW1lbnQpOwogCi1XZWJJbnNw
ZWN0b3IuRGV0YWlsc1NpZGViYXJQYW5lbC5TdHlsZUNsYXNzTmFtZSA9ICJkZXRhaWxzIjsKKyAg
ICAgICAgdGhpcy5fa2V5Ym9hcmRTaG9ydGN1dCA9IGtleWJvYXJkU2hvcnRjdXQ7CisgICAgICAg
IGlmICh0aGlzLl9rZXlib2FyZFNob3J0Y3V0KQorICAgICAgICAgICAgdGhpcy5fa2V5Ym9hcmRT
aG9ydGN1dC5jYWxsYmFjayA9IHRoaXMudG9nZ2xlLmJpbmQodGhpcyk7CiAKLVdlYkluc3BlY3Rv
ci5EZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2Vi
SW5zcGVjdG9yLkRldGFpbHNTaWRlYmFyUGFuZWwsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0
b3IuU2lkZWJhclBhbmVsLnByb3RvdHlwZSwKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlz
dC5hZGQoImRldGFpbHMiKTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAotICAgIGluc3BlY3Q6
IGZ1bmN0aW9uKG9iamVjdHMpCisgICAgaW5zcGVjdChvYmplY3RzKQogICAgIHsKICAgICAgICAg
Ly8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IH0sCisgICAgfQogCi0gICAgc2hvd246IGZ1bmN0aW9uKCkKKyAgICBzaG93bigpCiAgICAgewog
ICAgICAgICBpZiAodGhpcy5fbmVlZHNSZWZyZXNoKSB7CiAgICAgICAgICAgICBkZWxldGUgdGhp
cy5fbmVlZHNSZWZyZXNoOwogICAgICAgICAgICAgdGhpcy5yZWZyZXNoKCk7CiAgICAgICAgIH0K
LSAgICB9LAorICAgIH0KIAotICAgIG5lZWRzUmVmcmVzaDogZnVuY3Rpb24oKQorICAgIG5lZWRz
UmVmcmVzaCgpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWQpIHsKICAgICAgICAg
ICAgIHRoaXMuX25lZWRzUmVmcmVzaCA9IHRydWU7CkBAIC03MSw5ICs3Miw5IEBAIFdlYkluc3Bl
Y3Rvci5EZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAg
ICAgIHRoaXMucmVmcmVzaCgpOwotICAgIH0sCisgICAgfQogCi0gICAgcmVmcmVzaDogZnVuY3Rp
b24oKQorICAgIHJlZnJlc2goKQogICAgIHsKICAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3Vi
Y2xhc3Nlcy4KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9MYXllclRyZWVEZXRhaWxzU2lkZWJhclBhbmVsLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGF5ZXJUcmVlRGV0YWlsc1NpZGViYXJQ
YW5lbC5qcwppbmRleCAzNmExODVlZjVhNWFhYzQ2NGIyMDM3MTcyMTcyODc2ZjY3ZDQzNDI1Li5i
OWMwZjhmY2Q3Y2FlMzVlY2NmODBhYzQwODViZjc2ZDZjZGQ3MDc2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MYXllclRyZWVEZXRhaWxzU2lk
ZWJhclBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0xheWVyVHJlZURldGFpbHNTaWRlYmFyUGFuZWwuanMKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDMyICsyMywyOCBAQAogICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5MYXll
clRyZWVEZXRhaWxzU2lkZWJhclBhbmVsID0gZnVuY3Rpb24oKQorV2ViSW5zcGVjdG9yLkxheWVy
VHJlZURldGFpbHNTaWRlYmFyUGFuZWwgPSBjbGFzcyBMYXllclRyZWVEZXRhaWxzU2lkZWJhclBh
bmVsIGV4dGVuZHMgV2ViSW5zcGVjdG9yLkRPTURldGFpbHNTaWRlYmFyUGFuZWwKIHsKLSAgICBX
ZWJJbnNwZWN0b3IuRE9NRGV0YWlsc1NpZGViYXJQYW5lbC5jYWxsKHRoaXMsICJsYXllci10cmVl
IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJMYXllcnMiKSwgV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJMYXllciIpLCAiSW1hZ2VzL05hdmlnYXRpb25JdGVtTGF5ZXJzLnN2ZyIsICIzIik7Ci0KLSAg
ICB0aGlzLl9kYXRhR3JpZE5vZGVzQnlMYXllcklkID0ge307Ci0KLSAgICB0aGlzLmVsZW1lbnQu
Y2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuTGF5ZXJUcmVlRGV0YWlsc1NpZGViYXJQYW5lbC5T
dHlsZUNsYXNzTmFtZSk7CisgICAgY29uc3RydWN0b3IoKQorICAgIHsKKyAgICAgICAgc3VwZXIo
ImxheWVyLXRyZWUiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxheWVycyIpLCBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIkxheWVyIiksICJJbWFnZXMvTmF2aWdhdGlvbkl0ZW1MYXllcnMuc3ZnIiwg
IjMiKTsKIAotICAgIFdlYkluc3BlY3Rvci5zaG93U2hhZG93RE9NU2V0dGluZy5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5TZXR0aW5nLkV2ZW50LkNoYW5nZWQsIHRoaXMuX3Nob3dTaGFk
b3dET01TZXR0aW5nQ2hhbmdlZCwgdGhpcyk7CisgICAgICAgIHRoaXMuX2RhdGFHcmlkTm9kZXNC
eUxheWVySWQgPSB7fTsKIAotICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLCB0
aGlzLl93aW5kb3dSZXNpemVkLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xh
c3NMaXN0LmFkZCgibGF5ZXItdHJlZSIpOwogCi0gICAgdGhpcy5fYnVpbGRMYXllckluZm9TZWN0
aW9uKCk7Ci0gICAgdGhpcy5fYnVpbGREYXRhR3JpZFNlY3Rpb24oKTsKLSAgICB0aGlzLl9idWls
ZEJvdHRvbUJhcigpOwotfTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dTaGFkb3dET01TZXR0
aW5nLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNldHRpbmcuRXZlbnQuQ2hhbmdlZCwg
dGhpcy5fc2hvd1NoYWRvd0RPTVNldHRpbmdDaGFuZ2VkLCB0aGlzKTsKIAotV2ViSW5zcGVjdG9y
LkxheWVyVHJlZURldGFpbHNTaWRlYmFyUGFuZWwuU3R5bGVDbGFzc05hbWUgPSAibGF5ZXItdHJl
ZSI7CisgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLCB0aGlzLl93aW5k
b3dSZXNpemVkLmJpbmQodGhpcykpOwogCi1XZWJJbnNwZWN0b3IuTGF5ZXJUcmVlRGV0YWlsc1Np
ZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5M
YXllclRyZWVEZXRhaWxzU2lkZWJhclBhbmVsLAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9y
LkRPTURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlLAorICAgICAgICB0aGlzLl9idWlsZExh
eWVySW5mb1NlY3Rpb24oKTsKKyAgICAgICAgdGhpcy5fYnVpbGREYXRhR3JpZFNlY3Rpb24oKTsK
KyAgICAgICAgdGhpcy5fYnVpbGRCb3R0b21CYXIoKTsKKyAgICB9CiAKICAgICAvLyBEZXRhaWxz
U2lkZWJhclBhbmVsIE92ZXJyaWRlcy4KIAotICAgIHNob3duOiBmdW5jdGlvbigpCisgICAgc2hv
d24oKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmxheWVyVHJlZU1hbmFnZXIuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuTGF5ZXJUcmVlTWFuYWdlci5FdmVudC5MYXllclRyZWVE
aWRDaGFuZ2UsIHRoaXMuX2xheWVyVHJlZURpZENoYW5nZSwgdGhpcyk7CiAKQEAgLTU3LDE2ICs1
MywxNiBAQCBXZWJJbnNwZWN0b3IuTGF5ZXJUcmVlRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5
cGUgPSB7CiAgICAgICAgIHRoaXMubmVlZHNSZWZyZXNoKCk7CiAKICAgICAgICAgV2ViSW5zcGVj
dG9yLkRPTURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlLnNob3duLmNhbGwodGhpcyk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBoaWRkZW46IGZ1bmN0aW9uKCkKKyAgICBoaWRkZW4oKQogICAg
IHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmxheWVyVHJlZU1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuTGF5ZXJUcmVlTWFuYWdlci5FdmVudC5MYXllclRyZWVEaWRDaGFu
Z2UsIHRoaXMuX2xheWVyVHJlZURpZENoYW5nZSwgdGhpcyk7CiAKICAgICAgICAgV2ViSW5zcGVj
dG9yLkRPTURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlLmhpZGRlbi5jYWxsKHRoaXMpOwot
ICAgIH0sCisgICAgfQogCi0gICAgcmVmcmVzaDogZnVuY3Rpb24oKQorICAgIHJlZnJlc2goKQog
ICAgIHsKICAgICAgICAgaWYgKCF0aGlzLmRvbU5vZGUpCiAgICAgICAgICAgICByZXR1cm47CkBA
IC03NSwzNSArNzEsMzUgQEAgV2ViSW5zcGVjdG9yLkxheWVyVHJlZURldGFpbHNTaWRlYmFyUGFu
ZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fdW5maWx0ZXJlZENoaWxkTGF5ZXJz
ID0gY2hpbGRMYXllcnM7CiAgICAgICAgICAgICB0aGlzLl91cGRhdGVEaXNwbGF5V2l0aExheWVy
cyhsYXllckZvck5vZGUsIGNoaWxkTGF5ZXJzKTsKICAgICAgICAgfS5iaW5kKHRoaXMpKTsKLSAg
ICB9LAorICAgIH0KIAogICAgIC8vIERPTURldGFpbHNTaWRlYmFyUGFuZWwgT3ZlcnJpZGVzCiAK
LSAgICBzdXBwb3J0c0RPTU5vZGU6IGZ1bmN0aW9uKG5vZGVUb0luc3BlY3QpCisgICAgc3VwcG9y
dHNET01Ob2RlKG5vZGVUb0luc3BlY3QpCiAgICAgewogICAgICAgICByZXR1cm4gV2ViSW5zcGVj
dG9yLmxheWVyVHJlZU1hbmFnZXIuc3VwcG9ydGVkICYmIG5vZGVUb0luc3BlY3Qubm9kZVR5cGUo
KSA9PT0gTm9kZS5FTEVNRU5UX05PREU7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRl
CiAKLSAgICBfbGF5ZXJUcmVlRGlkQ2hhbmdlOiBmdW5jdGlvbihldmVudCkKKyAgICBfbGF5ZXJU
cmVlRGlkQ2hhbmdlKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5uZWVkc1JlZnJlc2goKTsK
LSAgICB9LAorICAgIH0KIAotICAgIF9zaG93U2hhZG93RE9NU2V0dGluZ0NoYW5nZWQ6IGZ1bmN0
aW9uKGV2ZW50KQorICAgIF9zaG93U2hhZG93RE9NU2V0dGluZ0NoYW5nZWQoZXZlbnQpCiAgICAg
ewogICAgICAgICBpZiAodGhpcy5zZWxlY3RlZCkKICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZURp
c3BsYXlXaXRoTGF5ZXJzKHRoaXMuX2xheWVyRm9yTm9kZSwgdGhpcy5fdW5maWx0ZXJlZENoaWxk
TGF5ZXJzKTsKLSAgICB9LAorICAgIH0KIAotICAgIF93aW5kb3dSZXNpemVkOiBmdW5jdGlvbihl
dmVudCkKKyAgICBfd2luZG93UmVzaXplZChldmVudCkKICAgICB7CiAgICAgICAgIGlmICh0aGlz
Ll9wb3BvdmVyICYmIHRoaXMuX3BvcG92ZXIudmlzaWJsZSkKICAgICAgICAgICAgIHRoaXMuX3Vw
ZGF0ZVBvcG92ZXJGb3JTZWxlY3RlZE5vZGUoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9idWls
ZExheWVySW5mb1NlY3Rpb246IGZ1bmN0aW9uKCkKKyAgICBfYnVpbGRMYXllckluZm9TZWN0aW9u
KCkKICAgICB7CiAgICAgICAgIHZhciByb3dzID0gdGhpcy5fbGF5ZXJJbmZvUm93cyA9IHt9Owog
ICAgICAgICB2YXIgcm93c0FycmF5ID0gW107CkBAIC0xMjIsOSArMTE4LDkgQEAgV2ViSW5zcGVj
dG9yLkxheWVyVHJlZURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0
aGlzLl9sYXllckluZm9TZWN0aW9uID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbigi
bGF5ZXItaW5mbyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiTGF5ZXIgSW5mbyIpLCBbdGhpcy5f
bm9MYXllckluZm9ybWF0aW9uR3JvdXBdKTsKIAogICAgICAgICB0aGlzLmNvbnRlbnRFbGVtZW50
LmFwcGVuZENoaWxkKHRoaXMuX2xheWVySW5mb1NlY3Rpb24uZWxlbWVudCk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfYnVpbGREYXRhR3JpZFNlY3Rpb246IGZ1bmN0aW9uKCkKKyAgICBfYnVpbGRE
YXRhR3JpZFNlY3Rpb24oKQogICAgIHsKICAgICAgICAgdmFyIGNvbHVtbnMgPSB7bmFtZToge30s
IHBhaW50Q291bnQ6IHt9LCBtZW1vcnk6IHt9fTsKIApAQCAtMTYwLDkgKzE1Niw5IEBAIFdlYklu
c3BlY3Rvci5MYXllclRyZWVEZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKIAogICAg
ICAgICB2YXIgZWxlbWVudCA9IHRoaXMuY29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoc2VjdGlv
bi5lbGVtZW50KTsKICAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKHNlY3Rpb24uaWRlbnRp
Zmllcik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfYnVpbGRCb3R0b21CYXI6IGZ1bmN0aW9uKCkK
KyAgICBfYnVpbGRCb3R0b21CYXIoKQogICAgIHsKICAgICAgICAgdmFyIGJvdHRvbUJhciA9IHRo
aXMuZWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7CiAg
ICAgICAgIGJvdHRvbUJhci5jbGFzc05hbWUgPSAiYm90dG9tLWJhciI7CkBAIC0xNzIsOSArMTY4
LDkgQEAgV2ViSW5zcGVjdG9yLkxheWVyVHJlZURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBl
ID0gewogCiAgICAgICAgIHRoaXMuX2xheWVyc01lbW9yeUxhYmVsID0gYm90dG9tQmFyLmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTsKICAgICAgICAgdGhpcy5fbGF5
ZXJzTWVtb3J5TGFiZWwuY2xhc3NOYW1lID0gImxheWVycy1tZW1vcnktbGFiZWwiOwotICAgIH0s
CisgICAgfQogCi0gICAgX3NvcnREYXRhR3JpZDogZnVuY3Rpb24oKQorICAgIF9zb3J0RGF0YUdy
aWQoKQogICAgIHsKICAgICAgICAgdmFyIHNvcnRDb2x1bW5JZGVudGlmaWVyID0gdGhpcy5fZGF0
YUdyaWQuc29ydENvbHVtbklkZW50aWZpZXI7CiAKQEAgLTE4Nyw5ICsxODMsOSBAQCBXZWJJbnNw
ZWN0b3IuTGF5ZXJUcmVlRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICAg
ICAgdGhpcy5fZGF0YUdyaWQuc29ydE5vZGVzKGNvbXBhcmF0b3IpOwogICAgICAgICB0aGlzLl91
cGRhdGVQb3BvdmVyRm9yU2VsZWN0ZWROb2RlKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc2Vs
ZWN0ZWREYXRhR3JpZE5vZGVDaGFuZ2VkOiBmdW5jdGlvbigpCisgICAgX3NlbGVjdGVkRGF0YUdy
aWROb2RlQ2hhbmdlZCgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fZGF0YUdyaWQuc2VsZWN0
ZWROb2RlKSB7CiAgICAgICAgICAgICB0aGlzLl9oaWdobGlnaHRTZWxlY3RlZE5vZGUoKTsKQEAg
LTE5OCwyNyArMTk0LDI3IEBAIFdlYkluc3BlY3Rvci5MYXllclRyZWVEZXRhaWxzU2lkZWJhclBh
bmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdl
ci5oaWRlRE9NTm9kZUhpZ2hsaWdodCgpOwogICAgICAgICAgICAgdGhpcy5faGlkZVBvcG92ZXIo
KTsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCi0gICAgX2RhdGFHcmlkR2FpbmVkRm9jdXM6
IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9kYXRhR3JpZEdhaW5lZEZvY3VzKGV2ZW50KQogICAgIHsK
ICAgICAgICAgdGhpcy5faGlnaGxpZ2h0U2VsZWN0ZWROb2RlKCk7CiAgICAgICAgIHRoaXMuX3No
b3dQb3BvdmVyRm9yU2VsZWN0ZWROb2RlKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZGF0YUdy
aWRMb3N0Rm9jdXM6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9kYXRhR3JpZExvc3RGb2N1cyhldmVu
dCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5oaWRlRE9NTm9k
ZUhpZ2hsaWdodCgpOwogICAgICAgICB0aGlzLl9oaWRlUG9wb3ZlcigpOwotICAgIH0sCisgICAg
fQogCi0gICAgX2RhdGFHcmlkV2FzQ2xpY2tlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2RhdGFH
cmlkV2FzQ2xpY2tlZChldmVudCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9kYXRhR3JpZC5z
ZWxlY3RlZE5vZGUgJiYgZXZlbnQudGFyZ2V0LnBhcmVudE5vZGUuY2xhc3NMaXN0LmNvbnRhaW5z
KCJmaWxsZXIiKSkKICAgICAgICAgICAgIHRoaXMuX2RhdGFHcmlkLnNlbGVjdGVkTm9kZS5kZXNl
bGVjdCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX2hpZ2hsaWdodFNlbGVjdGVkTm9kZTogZnVu
Y3Rpb24oKQorICAgIF9oaWdobGlnaHRTZWxlY3RlZE5vZGUoKQogICAgIHsKICAgICAgICAgdmFy
IGRhdGFHcmlkTm9kZSA9IHRoaXMuX2RhdGFHcmlkLnNlbGVjdGVkTm9kZTsKICAgICAgICAgaWYg
KCFkYXRhR3JpZE5vZGUpCkBAIC0yMjksOSArMjI1LDkgQEAgV2ViSW5zcGVjdG9yLkxheWVyVHJl
ZURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgV2ViSW5zcGVj
dG9yLmRvbVRyZWVNYW5hZ2VyLmhpZ2hsaWdodFJlY3QobGF5ZXIuYm91bmRzLCB0cnVlKTsKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmhpZ2hs
aWdodERPTU5vZGUobGF5ZXIubm9kZUlkKTsKLSAgICB9LAorICAgIH0KIAotICAgIF91cGRhdGVE
aXNwbGF5V2l0aExheWVyczogZnVuY3Rpb24obGF5ZXJGb3JOb2RlLCBjaGlsZExheWVycykKKyAg
ICBfdXBkYXRlRGlzcGxheVdpdGhMYXllcnMobGF5ZXJGb3JOb2RlLCBjaGlsZExheWVycykKICAg
ICB7CiAgICAgICAgIGlmICghV2ViSW5zcGVjdG9yLnNob3dTaGFkb3dET01TZXR0aW5nLnZhbHVl
KSB7CiAgICAgICAgICAgICBjaGlsZExheWVycyA9IGNoaWxkTGF5ZXJzLmZpbHRlcihmdW5jdGlv
bihsYXllcikgewpAQCAtMjQ1LDExICsyNDEsMTEgQEAgV2ViSW5zcGVjdG9yLkxheWVyVHJlZURl
dGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuX2xheWVyRm9y
Tm9kZSA9IGxheWVyRm9yTm9kZTsKICAgICAgICAgdGhpcy5fY2hpbGRMYXllcnMgPSBjaGlsZExh
eWVyczsKLSAgICB9LAorICAgIH0KIAotICAgIF91cGRhdGVMYXllckluZm9TZWN0aW9uOiBmdW5j
dGlvbihsYXllcikKKyAgICBfdXBkYXRlTGF5ZXJJbmZvU2VjdGlvbihsYXllcikKICAgICB7Ci0g
ICAgICAgIGNvbnN0IGVtRGFzaCA9ICJcdTIwMTQiOworICAgICAgICB2YXIgZW1EYXNoID0gIlx1
MjAxNCI7CiAKICAgICAgICAgdGhpcy5fbGF5ZXJJbmZvU2VjdGlvbi5ncm91cHMgPSBsYXllciA/
IFt0aGlzLl9sYXllckluZm9Hcm91cF0gOiBbdGhpcy5fbm9MYXllckluZm9ybWF0aW9uR3JvdXBd
OwogCkBAIC0yNjAsOSArMjU2LDkgQEAgV2ViSW5zcGVjdG9yLkxheWVyVHJlZURldGFpbHNTaWRl
YmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9sYXllckluZm9Sb3dzWyJXaWR0
aCJdLnZhbHVlID0gbGF5ZXIuY29tcG9zaXRlZEJvdW5kcy53aWR0aCArICJweCI7CiAgICAgICAg
IHRoaXMuX2xheWVySW5mb1Jvd3NbIkhlaWdodCJdLnZhbHVlID0gbGF5ZXIuY29tcG9zaXRlZEJv
dW5kcy5oZWlnaHQgKyAicHgiOwogICAgICAgICB0aGlzLl9sYXllckluZm9Sb3dzWyJQYWludHMi
XS52YWx1ZSA9IGxheWVyLnBhaW50Q291bnQgKyAiIjsKLSAgICB9LAorICAgIH0KIAotICAgIF91
cGRhdGVEYXRhR3JpZDogZnVuY3Rpb24obGF5ZXJGb3JOb2RlLCBjaGlsZExheWVycykKKyAgICBf
dXBkYXRlRGF0YUdyaWQobGF5ZXJGb3JOb2RlLCBjaGlsZExheWVycykKICAgICB7CiAgICAgICAg
IHZhciBkYXRhR3JpZCA9IHRoaXMuX2RhdGFHcmlkOwogCkBAIC0yOTEsMTggKzI4NywxOCBAQCBX
ZWJJbnNwZWN0b3IuTGF5ZXJUcmVlRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIHRoaXMuX3NvcnREYXRhR3JpZCgpOwogCiAgICAgICAgIHRoaXMuX2NoaWxkTGF5ZXJz
Um93LmRhdGFHcmlkID0gIWlzRW1wdHlPYmplY3QoY2hpbGRMYXllcnMpID8gdGhpcy5fZGF0YUdy
aWQgOiBudWxsOwotICAgIH0sCisgICAgfQogCi0gICAgX2RhdGFHcmlkTm9kZUZvckxheWVyOiBm
dW5jdGlvbihsYXllcikKKyAgICBfZGF0YUdyaWROb2RlRm9yTGF5ZXIobGF5ZXIpCiAgICAgewog
ICAgICAgICB2YXIgbm9kZSA9IG5ldyBXZWJJbnNwZWN0b3IuTGF5ZXJUcmVlRGF0YUdyaWROb2Rl
KGxheWVyKTsKIAogICAgICAgICB0aGlzLl9kYXRhR3JpZE5vZGVzQnlMYXllcklkW2xheWVyLmxh
eWVySWRdID0gbm9kZTsKIAogICAgICAgICByZXR1cm4gbm9kZTsKLSAgICB9LAorICAgIH0KIAot
ICAgIF91cGRhdGVNZXRyaWNzOiBmdW5jdGlvbihsYXllckZvck5vZGUsIGNoaWxkTGF5ZXJzKQor
ICAgIF91cGRhdGVNZXRyaWNzKGxheWVyRm9yTm9kZSwgY2hpbGRMYXllcnMpCiAgICAgewogICAg
ICAgICB2YXIgbGF5ZXJDb3VudCA9IDA7CiAgICAgICAgIHZhciB0b3RhbE1lbW9yeSA9IDA7CkBA
IC0zMTksOSArMzE1LDkgQEAgV2ViSW5zcGVjdG9yLkxheWVyVHJlZURldGFpbHNTaWRlYmFyUGFu
ZWwucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuX2xheWVyc0NvdW50TGFiZWwudGV4dENv
bnRlbnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxheWVyIENvdW50OiAlZCIpLmZvcm1hdChs
YXllckNvdW50KTsKICAgICAgICAgdGhpcy5fbGF5ZXJzTWVtb3J5TGFiZWwudGV4dENvbnRlbnQg
PSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk1lbW9yeTogJXMiKS5mb3JtYXQoTnVtYmVyLmJ5dGVz
VG9TdHJpbmcodG90YWxNZW1vcnkpKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9zaG93UG9wb3Zl
ckZvclNlbGVjdGVkTm9kZTogZnVuY3Rpb24oKQorICAgIF9zaG93UG9wb3ZlckZvclNlbGVjdGVk
Tm9kZSgpCiAgICAgewogICAgICAgICB2YXIgZGF0YUdyaWROb2RlID0gdGhpcy5fZGF0YUdyaWQu
c2VsZWN0ZWROb2RlOwogICAgICAgICBpZiAoIWRhdGFHcmlkTm9kZSkKQEAgLTMzMSw5ICszMjcs
OSBAQCBXZWJJbnNwZWN0b3IuTGF5ZXJUcmVlRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICBpZiAoZGF0YUdyaWROb2RlID09PSB0aGlzLl9kYXRhR3JpZC5zZWxl
Y3RlZE5vZGUpCiAgICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlUG9wb3ZlckZvclNlbGVjdGVk
Tm9kZShjb250ZW50KTsKICAgICAgICAgfS5iaW5kKHRoaXMpKTsKLSAgICB9LAorICAgIH0KIAot
ICAgIF91cGRhdGVQb3BvdmVyRm9yU2VsZWN0ZWROb2RlOiBmdW5jdGlvbihjb250ZW50KQorICAg
IF91cGRhdGVQb3BvdmVyRm9yU2VsZWN0ZWROb2RlKGNvbnRlbnQpCiAgICAgewogICAgICAgICB2
YXIgZGF0YUdyaWROb2RlID0gdGhpcy5fZGF0YUdyaWQuc2VsZWN0ZWROb2RlOwogICAgICAgICBp
ZiAoIWRhdGFHcmlkTm9kZSkKQEAgLTM0OSwxNSArMzQ1LDE1IEBAIFdlYkluc3BlY3Rvci5MYXll
clRyZWVEZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHBvcG92
ZXIuY29udGVudCA9IGNvbnRlbnQ7CiAKICAgICAgICAgcG9wb3Zlci5wcmVzZW50KHRhcmdldEZy
YW1lLnBhZCgyKSwgW1dlYkluc3BlY3Rvci5SZWN0RWRnZS5NSU5fWF0pOwotICAgIH0sCisgICAg
fQogCi0gICAgX2hpZGVQb3BvdmVyOiBmdW5jdGlvbigpCisgICAgX2hpZGVQb3BvdmVyKCkKICAg
ICB7CiAgICAgICAgIGlmICh0aGlzLl9wb3BvdmVyKQogICAgICAgICAgICAgdGhpcy5fcG9wb3Zl
ci5kaXNtaXNzKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY29udGVudEZvclBvcG92ZXI6IGZ1
bmN0aW9uKGxheWVyLCBjYWxsYmFjaykKKyAgICBfY29udGVudEZvclBvcG92ZXIobGF5ZXIsIGNh
bGxiYWNrKQogICAgIHsKICAgICAgICAgdmFyIGNvbnRlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKTsKICAgICAgICAgY29udGVudC5jbGFzc05hbWUgPSAibGF5ZXItdHJlZS1wb3Bv
dmVyIjsKQEAgLTM3OCw5ICszNzQsOSBAQCBXZWJJbnNwZWN0b3IuTGF5ZXJUcmVlRGV0YWlsc1Np
ZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0uYmluZCh0aGlzKSk7CiAKICAgICAg
ICAgcmV0dXJuIGNvbnRlbnQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcG9wdWxhdGVMaXN0T2ZD
b21wb3NpdGluZ1JlYXNvbnM6IGZ1bmN0aW9uKGxpc3QsIGNvbXBvc2l0aW5nUmVhc29ucykKKyAg
ICBfcG9wdWxhdGVMaXN0T2ZDb21wb3NpdGluZ1JlYXNvbnMobGlzdCwgY29tcG9zaXRpbmdSZWFz
b25zKQogICAgIHsKICAgICAgICAgZnVuY3Rpb24gYWRkUmVhc29uKHJlYXNvbikKICAgICAgICAg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
TmF2aWdhdGlvblNpZGViYXJQYW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25TaWRlYmFyUGFuZWwuanMKaW5kZXggODBlMDk4YmQwMDhm
ODMyNjE5NjgyZjA0OTA4OWViZjQ1N2QxOWIzZi4uNTRmNWM2NTIwOWIwM2RmYWU0OGZjMmVjMGJk
OGZlZWVlZTJlOTFlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvTmF2aWdhdGlvblNpZGViYXJQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmpzCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
Myw5OSArMjMsODggQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci1XZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbCA9IGZ1bmN0aW9uKGlkZW50aWZp
ZXIsIGRpc3BsYXlOYW1lLCBpbWFnZSwga2V5Ym9hcmRTaG9ydGN1dEtleSwgYXV0b1BydW5lT2xk
VG9wTGV2ZWxSZXNvdXJjZVRyZWVFbGVtZW50cywgYXV0b0hpZGVUb29sYmFySXRlbVdoZW5FbXB0
eSwgd2FudHNUb3BPdmVyZmxvd1NoYWRvdywgZWxlbWVudCwgcm9sZSwgbGFiZWwpCitXZWJJbnNw
ZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbCA9IGNsYXNzIE5hdmlnYXRpb25TaWRlYmFyUGFu
ZWwgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuU2lkZWJhclBhbmVsCiB7Ci0gICAgaWYgKGtleWJvYXJk
U2hvcnRjdXRLZXkpCi0gICAgICAgIHRoaXMuX2tleWJvYXJkU2hvcnRjdXQgPSBuZXcgV2ViSW5z
cGVjdG9yLktleWJvYXJkU2hvcnRjdXQoV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9k
aWZpZXIuQ29udHJvbCwga2V5Ym9hcmRTaG9ydGN1dEtleSwgdGhpcy50b2dnbGUuYmluZCh0aGlz
KSk7CisgICAgY29uc3RydWN0b3IoaWRlbnRpZmllciwgZGlzcGxheU5hbWUsIGltYWdlLCBrZXli
b2FyZFNob3J0Y3V0S2V5LCBhdXRvUHJ1bmVPbGRUb3BMZXZlbFJlc291cmNlVHJlZUVsZW1lbnRz
LCBhdXRvSGlkZVRvb2xiYXJJdGVtV2hlbkVtcHR5LCB3YW50c1RvcE92ZXJmbG93U2hhZG93LCBl
bGVtZW50LCByb2xlLCBsYWJlbCkKKyAgICB7CisgICAgICAgIHZhciBrZXlib2FyZFNob3J0Y3V0
ID0gbnVsbDsKKyAgICAgICAgaWYgKGtleWJvYXJkU2hvcnRjdXRLZXkpCisgICAgICAgICAgICBr
ZXlib2FyZFNob3J0Y3V0ID0gbmV3IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0KFdlYklu
c3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbnRyb2wsIGtleWJvYXJkU2hvcnRj
dXRLZXkpOwogCi0gICAgaWYgKHRoaXMuX2tleWJvYXJkU2hvcnRjdXQpIHsKLSAgICAgICAgdmFy
IHNob3dUb29sVGlwID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTaG93IHRoZSAlcyBuYXZpZ2F0
aW9uIHNpZGViYXIgKCVzKSIpLmZvcm1hdChkaXNwbGF5TmFtZSwgdGhpcy5fa2V5Ym9hcmRTaG9y
dGN1dC5kaXNwbGF5TmFtZSk7Ci0gICAgICAgIHZhciBoaWRlVG9vbFRpcCA9IFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiSGlkZSB0aGUgJXMgbmF2aWdhdGlvbiBzaWRlYmFyICglcykiKS5mb3JtYXQo
ZGlzcGxheU5hbWUsIHRoaXMuX2tleWJvYXJkU2hvcnRjdXQuZGlzcGxheU5hbWUpOwotICAgIH0g
ZWxzZSB7Ci0gICAgICAgIHZhciBzaG93VG9vbFRpcCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygi
U2hvdyB0aGUgJXMgbmF2aWdhdGlvbiBzaWRlYmFyIikuZm9ybWF0KGRpc3BsYXlOYW1lKTsKLSAg
ICAgICAgdmFyIGhpZGVUb29sVGlwID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJIaWRlIHRoZSAl
cyBuYXZpZ2F0aW9uIHNpZGViYXIiKS5mb3JtYXQoZGlzcGxheU5hbWUpOwotICAgIH0KKyAgICAg
ICAgaWYgKGtleWJvYXJkU2hvcnRjdXQpIHsKKyAgICAgICAgICAgIHZhciBzaG93VG9vbFRpcCA9
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2hvdyB0aGUgJXMgbmF2aWdhdGlvbiBzaWRlYmFyICgl
cykiKS5mb3JtYXQoZGlzcGxheU5hbWUsIGtleWJvYXJkU2hvcnRjdXQuZGlzcGxheU5hbWUpOwor
ICAgICAgICAgICAgdmFyIGhpZGVUb29sVGlwID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJIaWRl
IHRoZSAlcyBuYXZpZ2F0aW9uIHNpZGViYXIgKCVzKSIpLmZvcm1hdChkaXNwbGF5TmFtZSwga2V5
Ym9hcmRTaG9ydGN1dC5kaXNwbGF5TmFtZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICB2YXIgc2hvd1Rvb2xUaXAgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNob3cgdGhlICVzIG5h
dmlnYXRpb24gc2lkZWJhciIpLmZvcm1hdChkaXNwbGF5TmFtZSk7CisgICAgICAgICAgICB2YXIg
aGlkZVRvb2xUaXAgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkhpZGUgdGhlICVzIG5hdmlnYXRp
b24gc2lkZWJhciIpLmZvcm1hdChkaXNwbGF5TmFtZSk7CisgICAgICAgIH0KIAotICAgIFdlYklu
c3BlY3Rvci5TaWRlYmFyUGFuZWwuY2FsbCh0aGlzLCBpZGVudGlmaWVyLCBkaXNwbGF5TmFtZSwg
c2hvd1Rvb2xUaXAsIGhpZGVUb29sVGlwLCBpbWFnZSwgZWxlbWVudCwgcm9sZSwgbGFiZWwgfHwg
ZGlzcGxheU5hbWUpOworICAgICAgICBzdXBlcihpZGVudGlmaWVyLCBkaXNwbGF5TmFtZSwgc2hv
d1Rvb2xUaXAsIGhpZGVUb29sVGlwLCBpbWFnZSwgZWxlbWVudCwgcm9sZSwgbGFiZWwgfHwgZGlz
cGxheU5hbWUpOwogCi0gICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9y
Lk5hdmlnYXRpb25TaWRlYmFyUGFuZWwuU3R5bGVDbGFzc05hbWUpOworICAgICAgICB0aGlzLmVs
ZW1lbnQuY2xhc3NMaXN0LmFkZCgibmF2aWdhdGlvbiIpOwogCi0gICAgdGhpcy5fYXV0b0hpZGVU
b29sYmFySXRlbVdoZW5FbXB0eSA9IGF1dG9IaWRlVG9vbGJhckl0ZW1XaGVuRW1wdHkgfHwgZmFs
c2U7CisgICAgICAgIHRoaXMuX2tleWJvYXJkU2hvcnRjdXQgPSBrZXlib2FyZFNob3J0Y3V0Owor
ICAgICAgICB0aGlzLl9rZXlib2FyZFNob3J0Y3V0LmNhbGxiYWNrID0gdGhpcy50b2dnbGUuYmlu
ZCh0aGlzKTsKIAotICAgIGlmIChhdXRvSGlkZVRvb2xiYXJJdGVtV2hlbkVtcHR5KQotICAgICAg
ICB0aGlzLnRvb2xiYXJJdGVtLmhpZGRlbiA9IHRydWU7CisgICAgICAgIHRoaXMuX2F1dG9IaWRl
VG9vbGJhckl0ZW1XaGVuRW1wdHkgPSBhdXRvSGlkZVRvb2xiYXJJdGVtV2hlbkVtcHR5IHx8IGZh
bHNlOwogCi0gICAgdGhpcy5fdmlzaWJsZUNvbnRlbnRUcmVlT3V0bGluZXMgPSBuZXcgU2V0Owor
ICAgICAgICBpZiAoYXV0b0hpZGVUb29sYmFySXRlbVdoZW5FbXB0eSkKKyAgICAgICAgICAgIHRo
aXMudG9vbGJhckl0ZW0uaGlkZGVuID0gdHJ1ZTsKIAotICAgIHRoaXMuY29udGVudEVsZW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIiwgdGhpcy5fdXBkYXRlQ29udGVudE92ZXJmbG93U2hh
ZG93VmlzaWJpbGl0eS5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5fdmlzaWJsZUNvbnRlbnRU
cmVlT3V0bGluZXMgPSBuZXcgU2V0OwogCi0gICAgdGhpcy5fY29udGVudFRyZWVPdXRsaW5lID0g
dGhpcy5jcmVhdGVDb250ZW50VHJlZU91dGxpbmUodHJ1ZSk7CisgICAgICAgIHRoaXMuY29udGVu
dEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIiwgdGhpcy5fdXBkYXRlQ29udGVudE92
ZXJmbG93U2hhZG93VmlzaWJpbGl0eS5iaW5kKHRoaXMpKTsKIAotICAgIHRoaXMuX2ZpbHRlckJh
ciA9IG5ldyBXZWJJbnNwZWN0b3IuRmlsdGVyQmFyKCk7Ci0gICAgdGhpcy5fZmlsdGVyQmFyLmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZpbHRlckJhci5FdmVudC5GaWx0ZXJEaWRDaGFu
Z2UsIHRoaXMuX2ZpbHRlckRpZENoYW5nZSwgdGhpcyk7Ci0gICAgdGhpcy5lbGVtZW50LmFwcGVu
ZENoaWxkKHRoaXMuX2ZpbHRlckJhci5lbGVtZW50KTsKKyAgICAgICAgdGhpcy5fY29udGVudFRy
ZWVPdXRsaW5lID0gdGhpcy5jcmVhdGVDb250ZW50VHJlZU91dGxpbmUodHJ1ZSk7CiAKLSAgICB0
aGlzLl9ib3R0b21PdmVyZmxvd1NoYWRvd0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKTsKLSAgICB0aGlzLl9ib3R0b21PdmVyZmxvd1NoYWRvd0VsZW1lbnQuY2xhc3NOYW1l
ID0gV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwuT3ZlcmZsb3dTaGFkb3dFbGVt
ZW50U3R5bGVDbGFzc05hbWU7Ci0gICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2Jv
dHRvbU92ZXJmbG93U2hhZG93RWxlbWVudCk7CisgICAgICAgIHRoaXMuX2ZpbHRlckJhciA9IG5l
dyBXZWJJbnNwZWN0b3IuRmlsdGVyQmFyKCk7CisgICAgICAgIHRoaXMuX2ZpbHRlckJhci5hZGRF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5GaWx0ZXJCYXIuRXZlbnQuRmlsdGVyRGlkQ2hhbmdl
LCB0aGlzLl9maWx0ZXJEaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICB0aGlzLmVsZW1lbnQuYXBw
ZW5kQ2hpbGQodGhpcy5fZmlsdGVyQmFyLmVsZW1lbnQpOwogCi0gICAgaWYgKHdhbnRzVG9wT3Zl
cmZsb3dTaGFkb3cpIHsKLSAgICAgICAgdGhpcy5fdG9wT3ZlcmZsb3dTaGFkb3dFbGVtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgIHRoaXMuX3RvcE92ZXJmbG93
U2hhZG93RWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJh
clBhbmVsLk92ZXJmbG93U2hhZG93RWxlbWVudFN0eWxlQ2xhc3NOYW1lKTsKLSAgICAgICAgdGhp
cy5fdG9wT3ZlcmZsb3dTaGFkb3dFbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLk5h
dmlnYXRpb25TaWRlYmFyUGFuZWwuVG9wT3ZlcmZsb3dTaGFkb3dFbGVtZW50U3R5bGVDbGFzc05h
bWUpOwotICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fdG9wT3ZlcmZsb3dT
aGFkb3dFbGVtZW50KTsKLSAgICB9CisgICAgICAgIHRoaXMuX2JvdHRvbU92ZXJmbG93U2hhZG93
RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlzLl9i
b3R0b21PdmVyZmxvd1NoYWRvd0VsZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLk5hdmln
YXRpb25TaWRlYmFyUGFuZWwuT3ZlcmZsb3dTaGFkb3dFbGVtZW50U3R5bGVDbGFzc05hbWU7Cisg
ICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9ib3R0b21PdmVyZmxvd1NoYWRv
d0VsZW1lbnQpOwogCi0gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsIHRoaXMu
X3VwZGF0ZUNvbnRlbnRPdmVyZmxvd1NoYWRvd1Zpc2liaWxpdHkuYmluZCh0aGlzKSk7Ci0KLSAg
ICB0aGlzLl9maWx0ZXJzU2V0dGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuU2V0dGluZyhpZGVudGlm
aWVyICsgIi1uYXZpZ2F0aW9uLXNpZGViYXItZmlsdGVycyIsIHt9KTsKLSAgICB0aGlzLl9maWx0
ZXJCYXIuZmlsdGVycyA9IHRoaXMuX2ZpbHRlcnNTZXR0aW5nLnZhbHVlOworICAgICAgICBpZiAo
d2FudHNUb3BPdmVyZmxvd1NoYWRvdykgeworICAgICAgICAgICAgdGhpcy5fdG9wT3ZlcmZsb3dT
aGFkb3dFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgICAg
ICB0aGlzLl90b3BPdmVyZmxvd1NoYWRvd0VsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0
b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5PdmVyZmxvd1NoYWRvd0VsZW1lbnRTdHlsZUNsYXNz
TmFtZSk7CisgICAgICAgICAgICB0aGlzLl90b3BPdmVyZmxvd1NoYWRvd0VsZW1lbnQuY2xhc3NM
aXN0LmFkZChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5Ub3BPdmVyZmxvd1No
YWRvd0VsZW1lbnRTdHlsZUNsYXNzTmFtZSk7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBw
ZW5kQ2hpbGQodGhpcy5fdG9wT3ZlcmZsb3dTaGFkb3dFbGVtZW50KTsKKyAgICAgICAgfQogCi0g
ICAgdGhpcy5fZW1wdHlDb250ZW50UGxhY2Vob2xkZXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5fZW1wdHlDb250ZW50UGxhY2Vob2xkZXJFbGVtZW50
LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLkVtcHR5Q29u
dGVudFBsYWNlaG9sZGVyRWxlbWVudFN0eWxlQ2xhc3NOYW1lOworICAgICAgICB3aW5kb3cuYWRk
RXZlbnRMaXN0ZW5lcigicmVzaXplIiwgdGhpcy5fdXBkYXRlQ29udGVudE92ZXJmbG93U2hhZG93
VmlzaWJpbGl0eS5iaW5kKHRoaXMpKTsKIAotICAgIHRoaXMuX2VtcHR5Q29udGVudFBsYWNlaG9s
ZGVyTWVzc2FnZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICB0
aGlzLl9lbXB0eUNvbnRlbnRQbGFjZWhvbGRlck1lc3NhZ2VFbGVtZW50LmNsYXNzTmFtZSA9IFdl
Ykluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLkVtcHR5Q29udGVudFBsYWNlaG9sZGVy
TWVzc2FnZUVsZW1lbnRTdHlsZUNsYXNzTmFtZTsKLSAgICB0aGlzLl9lbXB0eUNvbnRlbnRQbGFj
ZWhvbGRlckVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZW1wdHlDb250ZW50UGxhY2Vob2xkZXJN
ZXNzYWdlRWxlbWVudCk7CisgICAgICAgIHRoaXMuX2ZpbHRlcnNTZXR0aW5nID0gbmV3IFdlYklu
c3BlY3Rvci5TZXR0aW5nKGlkZW50aWZpZXIgKyAiLW5hdmlnYXRpb24tc2lkZWJhci1maWx0ZXJz
Iiwge30pOworICAgICAgICB0aGlzLl9maWx0ZXJCYXIuZmlsdGVycyA9IHRoaXMuX2ZpbHRlcnNT
ZXR0aW5nLnZhbHVlOwogCi0gICAgdGhpcy5fZ2VuZXJhdGVTdHlsZVJ1bGVzSWZOZWVkZWQoKTsK
LSAgICB0aGlzLl9nZW5lcmF0ZURpc2Nsb3N1cmVUcmlhbmdsZXNJZk5lZWRlZCgpOworICAgICAg
ICB0aGlzLl9lbXB0eUNvbnRlbnRQbGFjZWhvbGRlckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKTsKKyAgICAgICAgdGhpcy5fZW1wdHlDb250ZW50UGxhY2Vob2xkZXJFbGVt
ZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLkVtcHR5
Q29udGVudFBsYWNlaG9sZGVyRWxlbWVudFN0eWxlQ2xhc3NOYW1lOwogCi0gICAgaWYgKGF1dG9Q
cnVuZU9sZFRvcExldmVsUmVzb3VyY2VUcmVlRWxlbWVudHMpIHsKLSAgICAgICAgV2ViSW5zcGVj
dG9yLkZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZyYW1lLkV2ZW50Lk1haW5S
ZXNvdXJjZURpZENoYW5nZSwgdGhpcy5fY2hlY2tGb3JPbGRSZXNvdXJjZXMsIHRoaXMpOwotICAg
ICAgICBXZWJJbnNwZWN0b3IuRnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJh
bWUuRXZlbnQuQ2hpbGRGcmFtZVdhc1JlbW92ZWQsIHRoaXMuX2NoZWNrRm9yT2xkUmVzb3VyY2Vz
LCB0aGlzKTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLkZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLkZyYW1lLkV2ZW50LlJlc291cmNlV2FzUmVtb3ZlZCwgdGhpcy5fY2hlY2tGb3JP
bGRSZXNvdXJjZXMsIHRoaXMpOwotICAgIH0KLX07CisgICAgICAgIHRoaXMuX2VtcHR5Q29udGVu
dFBsYWNlaG9sZGVyTWVzc2FnZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KTsKKyAgICAgICAgdGhpcy5fZW1wdHlDb250ZW50UGxhY2Vob2xkZXJNZXNzYWdlRWxlbWVudC5j
bGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5FbXB0eUNvbnRl
bnRQbGFjZWhvbGRlck1lc3NhZ2VFbGVtZW50U3R5bGVDbGFzc05hbWU7CisgICAgICAgIHRoaXMu
X2VtcHR5Q29udGVudFBsYWNlaG9sZGVyRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9lbXB0eUNv
bnRlbnRQbGFjZWhvbGRlck1lc3NhZ2VFbGVtZW50KTsKIAotV2ViSW5zcGVjdG9yLk5hdmlnYXRp
b25TaWRlYmFyUGFuZWwuU3R5bGVDbGFzc05hbWUgPSAibmF2aWdhdGlvbiI7Ci1XZWJJbnNwZWN0
b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5PdmVyZmxvd1NoYWRvd0VsZW1lbnRTdHlsZUNsYXNz
TmFtZSA9ICJvdmVyZmxvdy1zaGFkb3ciOwotV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFy
UGFuZWwuVG9wT3ZlcmZsb3dTaGFkb3dFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAidG9wIjsKLVdl
Ykluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLkNvbnRlbnRUcmVlT3V0bGluZUVsZW1l
bnRIaWRkZW5TdHlsZUNsYXNzTmFtZSA9ICJoaWRkZW4iOwotV2ViSW5zcGVjdG9yLk5hdmlnYXRp
b25TaWRlYmFyUGFuZWwuQ29udGVudFRyZWVPdXRsaW5lRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0g
Im5hdmlnYXRpb24tc2lkZWJhci1wYW5lbC1jb250ZW50LXRyZWUtb3V0bGluZSI7Ci1XZWJJbnNw
ZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5IaWRlRGlzY2xvc3VyZUJ1dHRvbnNTdHlsZUNs
YXNzTmFtZSA9ICJoaWRlLWRpc2Nsb3N1cmUtYnV0dG9ucyI7Ci1XZWJJbnNwZWN0b3IuTmF2aWdh
dGlvblNpZGViYXJQYW5lbC5FbXB0eUNvbnRlbnRQbGFjZWhvbGRlckVsZW1lbnRTdHlsZUNsYXNz
TmFtZSA9ICJlbXB0eS1jb250ZW50LXBsYWNlaG9sZGVyIjsKLVdlYkluc3BlY3Rvci5OYXZpZ2F0
aW9uU2lkZWJhclBhbmVsLkVtcHR5Q29udGVudFBsYWNlaG9sZGVyTWVzc2FnZUVsZW1lbnRTdHls
ZUNsYXNzTmFtZSA9ICJtZXNzYWdlIjsKLVdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBh
bmVsLkRpc2Nsb3N1cmVUcmlhbmdsZU9wZW5DYW52YXNJZGVudGlmaWVyID0gIm5hdmlnYXRpb24t
c2lkZWJhci1wYW5lbC1kaXNjbG9zdXJlLXRyaWFuZ2xlLW9wZW4iOwotV2ViSW5zcGVjdG9yLk5h
dmlnYXRpb25TaWRlYmFyUGFuZWwuRGlzY2xvc3VyZVRyaWFuZ2xlQ2xvc2VkQ2FudmFzSWRlbnRp
ZmllciA9ICJuYXZpZ2F0aW9uLXNpZGViYXItcGFuZWwtZGlzY2xvc3VyZS10cmlhbmdsZS1jbG9z
ZWQiOwotV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwuRGlzY2xvc3VyZVRyaWFu
Z2xlTm9ybWFsQ2FudmFzSWRlbnRpZmllclN1ZmZpeCA9ICItbm9ybWFsIjsKLVdlYkluc3BlY3Rv
ci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLkRpc2Nsb3N1cmVUcmlhbmdsZVNlbGVjdGVkQ2FudmFz
SWRlbnRpZmllclN1ZmZpeCA9ICItc2VsZWN0ZWQiOworICAgICAgICB0aGlzLl9nZW5lcmF0ZVN0
eWxlUnVsZXNJZk5lZWRlZCgpOworICAgICAgICB0aGlzLl9nZW5lcmF0ZURpc2Nsb3N1cmVUcmlh
bmdsZXNJZk5lZWRlZCgpOwogCi1XZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5w
cm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lk
ZWJhclBhbmVsLAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLlNpZGViYXJQYW5lbC5wcm90
b3R5cGUsCisgICAgICAgIGlmIChhdXRvUHJ1bmVPbGRUb3BMZXZlbFJlc291cmNlVHJlZUVsZW1l
bnRzKSB7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuRnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuTWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzLl9jaGVj
a0Zvck9sZFJlc291cmNlcywgdGhpcyk7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuRnJhbWUu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuQ2hpbGRGcmFtZVdhc1Jl
bW92ZWQsIHRoaXMuX2NoZWNrRm9yT2xkUmVzb3VyY2VzLCB0aGlzKTsKKyAgICAgICAgICAgIFdl
Ykluc3BlY3Rvci5GcmFtZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5GcmFtZS5FdmVu
dC5SZXNvdXJjZVdhc1JlbW92ZWQsIHRoaXMuX2NoZWNrRm9yT2xkUmVzb3VyY2VzLCB0aGlzKTsK
KyAgICAgICAgfQorICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGNvbnRlbnRUcmVl
T3V0bGluZUVsZW1lbnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnRlbnRUcmVl
T3V0bGluZS5lbGVtZW50OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGNvbnRlbnRUcmVlT3V0
bGluZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fY29udGVudFRyZWVPdXRsaW5lOwot
ICAgIH0sCisgICAgfQogCiAgICAgc2V0IGNvbnRlbnRUcmVlT3V0bGluZShuZXdUcmVlT3V0bGlu
ZSkKICAgICB7CkBAIC0xMzMsMzQgKzEyMiwzNCBAQCBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNp
ZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3Zpc2libGVDb250ZW50VHJl
ZU91dGxpbmVzLmFkZChuZXdUcmVlT3V0bGluZSk7CiAKICAgICAgICAgdGhpcy5fdXBkYXRlRmls
dGVyKCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgY29udGVudFRyZWVPdXRsaW5lVG9BdXRv
UHJ1bmUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnRlbnRUcmVlT3V0bGluZTsK
LSAgICB9LAorICAgIH0KIAogICAgIGdldCB2aXNpYmxlQ29udGVudFRyZWVPdXRsaW5lcygpCiAg
ICAgewogICAgICAgICByZXR1cm4gdGhpcy5fdmlzaWJsZUNvbnRlbnRUcmVlT3V0bGluZXM7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBnZXQgaGFzU2VsZWN0ZWRFbGVtZW50KCkKICAgICB7CiAgICAg
ICAgIHJldHVybiAhIXRoaXMuX2NvbnRlbnRUcmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50
OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGZpbHRlckJhcigpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdGhpcy5fZmlsdGVyQmFyOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHJlc3Rvcmlu
Z1N0YXRlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9yZXN0b3JpbmdTdGF0ZTsKLSAg
ICB9LAorICAgIH0KIAotICAgIGNyZWF0ZUNvbnRlbnRUcmVlT3V0bGluZTogZnVuY3Rpb24oZG9u
dEhpZGVCeURlZmF1bHQsIHN1cHByZXNzRmlsdGVyaW5nKQorICAgIGNyZWF0ZUNvbnRlbnRUcmVl
T3V0bGluZShkb250SGlkZUJ5RGVmYXVsdCwgc3VwcHJlc3NGaWx0ZXJpbmcpCiAgICAgewogICAg
ICAgICB2YXIgY29udGVudFRyZWVPdXRsaW5lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoIm9sIik7CiAgICAgICAgIGNvbnRlbnRUcmVlT3V0bGluZUVsZW1lbnQuY2xhc3NOYW1lID0g
V2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwuQ29udGVudFRyZWVPdXRsaW5lRWxl
bWVudFN0eWxlQ2xhc3NOYW1lOwpAQCAtMTgyLDI3ICsxNzEsMjcgQEAgV2ViSW5zcGVjdG9yLk5h
dmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fdmlz
aWJsZUNvbnRlbnRUcmVlT3V0bGluZXMuYWRkKGNvbnRlbnRUcmVlT3V0bGluZSk7CiAKICAgICAg
ICAgcmV0dXJuIGNvbnRlbnRUcmVlT3V0bGluZTsKLSAgICB9LAorICAgIH0KIAotICAgIHRyZWVF
bGVtZW50Rm9yUmVwcmVzZW50ZWRPYmplY3Q6IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQor
ICAgIHRyZWVFbGVtZW50Rm9yUmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50ZWRPYmplY3QpCiAg
ICAgewogICAgICAgICByZXR1cm4gdGhpcy5fY29udGVudFRyZWVPdXRsaW5lLmdldENhY2hlZFRy
ZWVFbGVtZW50KHJlcHJlc2VudGVkT2JqZWN0KTsKLSAgICB9LAorICAgIH0KIAotICAgIHNob3dE
ZWZhdWx0Q29udGVudFZpZXc6IGZ1bmN0aW9uKCkKKyAgICBzaG93RGVmYXVsdENvbnRlbnRWaWV3
KCkKICAgICB7CiAgICAgICAgIC8vIEltcGxlbW5ldGVkIGJ5IHN1YmNsYXNzZXMgaWYgbmVlZGVk
IHRvIHNob3cgYSBjb250ZW50IHZpZXcgd2hlbiBubyBleGlzdGluZyB0cmVlIGVsZW1lbnQgaXMg
c2VsZWN0ZWQuCi0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93Q29udGVudFZpZXdGb3JDdXJyZW50
U2VsZWN0aW9uOiBmdW5jdGlvbigpCisgICAgc2hvd0NvbnRlbnRWaWV3Rm9yQ3VycmVudFNlbGVj
dGlvbigpCiAgICAgewogICAgICAgICAvLyBSZXNlbGVjdCB0aGUgc2VsZWN0ZWQgdHJlZSBlbGVt
ZW50IHRvIGNhdXNlIHRoZSBjb250ZW50IHZpZXcgdG8gYmUgc2hvd24gYXMgd2VsbC4gPHJkYXI6
Ly9wcm9ibGVtLzEwODU0NzI3PgogICAgICAgICB2YXIgc2VsZWN0ZWRUcmVlRWxlbWVudCA9IHRo
aXMuX2NvbnRlbnRUcmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50OwogICAgICAgICBpZiAo
c2VsZWN0ZWRUcmVlRWxlbWVudCkKICAgICAgICAgICAgIHNlbGVjdGVkVHJlZUVsZW1lbnQuc2Vs
ZWN0KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzYXZlU3RhdGVUb0Nvb2tpZTogZnVuY3Rpb24o
Y29va2llKQorICAgIHNhdmVTdGF0ZVRvQ29va2llKGNvb2tpZSkKICAgICB7CiAgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KGNvb2tpZSk7CiAKQEAgLTIyNiwxMCArMjE1LDEwIEBAIFdlYkluc3BlY3Rv
ci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJlcHJl
c2VudGVkT2JqZWN0LnNhdmVJZGVudGl0eVRvQ29va2llKGNvb2tpZSk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIkVycm9yOiBUcmVlRWxlbWVudC5yZXByZXNlbnRl
ZE9iamVjdCBpcyBtaXNzaW5nIGEgc2F2ZUlkZW50aXR5VG9Db29raWUgaW1wbGVtZW50YXRpb24u
IFRyZWVFbGVtZW50LmNvbnN0cnVjdG9yOiAiLCBzZWxlY3RlZFRyZWVFbGVtZW50LmNvbnN0cnVj
dG9yKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFRoaXMgY2FuIGJlIHN1cHBsZW1lbnRlZCBi
eSBzdWJjbGFzc2VzIHRoYXQgYWRtaXQgYSBzaW1wbGVyIHN0cmF0ZWd5IGZvciBzdGF0aWMgdHJl
ZSBlbGVtZW50cy4KLSAgICByZXN0b3JlU3RhdGVGcm9tQ29va2llOiBmdW5jdGlvbihjb29raWUs
IHJlbGF4ZWRNYXRjaERlbGF5KQorICAgIHJlc3RvcmVTdGF0ZUZyb21Db29raWUoY29va2llLCBy
ZWxheGVkTWF0Y2hEZWxheSkKICAgICB7CiAgICAgICAgIHRoaXMuX3BlbmRpbmdWaWV3U3RhdGVD
b29raWUgPSBjb29raWU7CiAgICAgICAgIHRoaXMuX3Jlc3RvcmluZ1N0YXRlID0gdHJ1ZTsKQEAg
LTI1Myw5ICsyNDIsOSBAQCBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90
b3R5cGUgPSB7CiAgICAgICAgIC8vIElmIHRoZSBzcGVjaWZpYyB0cmVlIGVsZW1lbnQgd2Fzbid0
IGZvdW5kLCB3ZSBtYXkgbmVlZCB0byB3YWl0IGZvciB0aGUgcmVzb3VyY2VzCiAgICAgICAgIC8v
IHRvIGJlIHJlZ2lzdGVyZWQuIFdlIHRyeSBvbmUgbGFzdCB0aW1lIChtYXRjaCB0eXBlIG9ubHkp
IGFmdGVyIGFuIGFyYml0cmFyeSBhbW91bnQgb2YgdGltZW91dC4KICAgICAgICAgdGhpcy5fZmlu
YWxBdHRlbXB0VG9SZXN0b3JlVmlld1N0YXRlVGltZW91dCA9IHNldFRpbWVvdXQoZmluYWxBdHRl
bXB0VG9SZXN0b3JlVmlld1N0YXRlRnJvbUNvb2tpZS5iaW5kKHRoaXMpLCByZWxheGVkTWF0Y2hE
ZWxheSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93RW1wdHlDb250ZW50UGxhY2Vob2xkZXI6
IGZ1bmN0aW9uKG1lc3NhZ2UsIGhpZGVUb29sYmFySXRlbSkKKyAgICBzaG93RW1wdHlDb250ZW50
UGxhY2Vob2xkZXIobWVzc2FnZSwgaGlkZVRvb2xiYXJJdGVtKQogICAgIHsKICAgICAgICAgY29u
c29sZS5hc3NlcnQobWVzc2FnZSk7CiAKQEAgLTI2OCw5ICsyNTcsOSBAQCBXZWJJbnNwZWN0b3Iu
TmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2hpZGVU
b29sYmFySXRlbVdoZW5FbXB0eSA9IGhpZGVUb29sYmFySXRlbSB8fCBmYWxzZTsKICAgICAgICAg
dGhpcy5fdXBkYXRlVG9vbGJhckl0ZW1WaXNpYmlsaXR5KCk7CiAgICAgICAgIHRoaXMuX3VwZGF0
ZUNvbnRlbnRPdmVyZmxvd1NoYWRvd1Zpc2liaWxpdHkoKTsKLSAgICB9LAorICAgIH0KIAotICAg
IGhpZGVFbXB0eUNvbnRlbnRQbGFjZWhvbGRlcjogZnVuY3Rpb24oKQorICAgIGhpZGVFbXB0eUNv
bnRlbnRQbGFjZWhvbGRlcigpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2VtcHR5Q29udGVu
dFBsYWNlaG9sZGVyRWxlbWVudC5wYXJlbnROb2RlKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
MjgwLDkgKzI2OSw5IEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgdGhpcy5faGlkZVRvb2xiYXJJdGVtV2hlbkVtcHR5ID0gZmFsc2U7
CiAgICAgICAgIHRoaXMuX3VwZGF0ZVRvb2xiYXJJdGVtVmlzaWJpbGl0eSgpOwogICAgICAgICB0
aGlzLl91cGRhdGVDb250ZW50T3ZlcmZsb3dTaGFkb3dWaXNpYmlsaXR5KCk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICB1cGRhdGVFbXB0eUNvbnRlbnRQbGFjZWhvbGRlcjogZnVuY3Rpb24obWVzc2Fn
ZSkKKyAgICB1cGRhdGVFbXB0eUNvbnRlbnRQbGFjZWhvbGRlcihtZXNzYWdlKQogICAgIHsKICAg
ICAgICAgdGhpcy5fdXBkYXRlVG9vbGJhckl0ZW1WaXNpYmlsaXR5KCk7CiAKQEAgLTI5MywzNSAr
MjgyLDM1IEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgIC8vIFRoZXJlIGFyZSB0cmVlIGVsZW1lbnRzLCBhbmQgbm90IGFsbCBv
ZiB0aGVtIGFyZSBoaWRkZW4gYnkgdGhlIGZpbHRlci4KICAgICAgICAgICAgIHRoaXMuaGlkZUVt
cHR5Q29udGVudFBsYWNlaG9sZGVyKCk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAg
IHVwZGF0ZUZpbHRlcjogZnVuY3Rpb24oKQorICAgIHVwZGF0ZUZpbHRlcigpCiAgICAgewogICAg
ICAgICB0aGlzLl91cGRhdGVGaWx0ZXIoKTsKLSAgICB9LAorICAgIH0KIAotICAgIGhhc0N1c3Rv
bUZpbHRlcnM6IGZ1bmN0aW9uKCkKKyAgICBoYXNDdXN0b21GaWx0ZXJzKCkKICAgICB7CiAgICAg
ICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMgaWYgbmVlZGVkLgogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBtYXRjaFRyZWVFbGVtZW50QWdhaW5zdEN1
c3RvbUZpbHRlcnM6IGZ1bmN0aW9uKHRyZWVFbGVtZW50KQorICAgIG1hdGNoVHJlZUVsZW1lbnRB
Z2FpbnN0Q3VzdG9tRmlsdGVycyh0cmVlRWxlbWVudCkKICAgICB7CiAgICAgICAgIC8vIEltcGxl
bWVudGVkIGJ5IHN1YmNsYXNzZXMgaWYgbmVlZGVkLgogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICB9LAorICAgIH0KIAotICAgIG1hdGNoVHJlZUVsZW1lbnRBZ2FpbnN0RmlsdGVyRnVuY3Rpb25z
OiBmdW5jdGlvbih0cmVlRWxlbWVudCkKKyAgICBtYXRjaFRyZWVFbGVtZW50QWdhaW5zdEZpbHRl
ckZ1bmN0aW9ucyh0cmVlRWxlbWVudCkKICAgICB7CiAgICAgICAgIGZvciAodmFyIGZpbHRlckZ1
bmN0aW9uIG9mIHRoaXMuX2ZpbHRlckZ1bmN0aW9ucykgewogICAgICAgICAgICAgaWYgKGZpbHRl
ckZ1bmN0aW9uKHRyZWVFbGVtZW50KSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgfQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBhcHBs
eUZpbHRlcnNUb1RyZWVFbGVtZW50OiBmdW5jdGlvbih0cmVlRWxlbWVudCkKKyAgICBhcHBseUZp
bHRlcnNUb1RyZWVFbGVtZW50KHRyZWVFbGVtZW50KQogICAgIHsKICAgICAgICAgaWYgKCF0aGlz
Ll9maWx0ZXJCYXIuaGFzQWN0aXZlRmlsdGVycygpICYmICF0aGlzLmhhc0N1c3RvbUZpbHRlcnMo
KSkgewogICAgICAgICAgICAgLy8gTm8gZmlsdGVycywgc28gbWFrZSBldmVyeXRoaW5nIHZpc2li
bGUuCkBAIC0zOTksOSArMzg4LDkgQEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFu
ZWwucHJvdG90eXBlID0gewogCiAgICAgICAgIC8vIE1ha2UgdGhpcyBlbGVtZW50IGludmlzaWJs
ZSBzaW5jZSBpdCBkb2VzIG5vdCBtYXRjaC4KICAgICAgICAgdHJlZUVsZW1lbnQuaGlkZGVuID0g
dHJ1ZTsKLSAgICB9LAorICAgIH0KIAotICAgIHNob3c6IGZ1bmN0aW9uKCkKKyAgICBzaG93KCkK
ICAgICB7CiAgICAgICAgIGlmICghdGhpcy5wYXJlbnRTaWRlYmFyKQogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtNDA5LDkgKzM5OCw5IEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBh
bmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgV2ViSW5zcGVjdG9yLlNpZGViYXJQYW5lbC5wcm90
b3R5cGUuc2hvdy5jYWxsKHRoaXMpOwogCiAgICAgICAgIHRoaXMuY29udGVudFRyZWVPdXRsaW5l
RWxlbWVudC5mb2N1cygpOwotICAgIH0sCisgICAgfQogCi0gICAgc2hvd246IGZ1bmN0aW9uKCkK
KyAgICBzaG93bigpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuU2lkZWJhclBhbmVsLnBy
b3RvdHlwZS5zaG93bi5jYWxsKHRoaXMpOwogCkBAIC00MjAsMjYgKzQwOSwyNiBAQCBXZWJJbnNw
ZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIC8vIEZv
cmNlIHRoZSBuYXZpZ2F0aW9uIGl0ZW0gdG8gYmUgdmlzaWJsZS4gVGhpcyBtYWtlcyBzdXJlIGl0
IGlzCiAgICAgICAgIC8vIGFsd2F5cyB2aXNpYmxlIHdoZW4gdGhlIHBhbmVsIGlzIHNob3duLgog
ICAgICAgICB0aGlzLnRvb2xiYXJJdGVtLmhpZGRlbiA9IGZhbHNlOwotICAgIH0sCisgICAgfQog
Ci0gICAgaGlkZGVuOiBmdW5jdGlvbigpCisgICAgaGlkZGVuKCkKICAgICB7CiAgICAgICAgIFdl
Ykluc3BlY3Rvci5TaWRlYmFyUGFuZWwucHJvdG90eXBlLmhpZGRlbi5jYWxsKHRoaXMpOwogCiAg
ICAgICAgIHRoaXMuX3VwZGF0ZVRvb2xiYXJJdGVtVmlzaWJpbGl0eSgpOwotICAgIH0sCisgICAg
fQogCiAgICAgLy8gUHJpdmF0ZQogICAgIAotICAgIF91cGRhdGVDb250ZW50T3ZlcmZsb3dTaGFk
b3dWaXNpYmlsaXR5U29vbjogZnVuY3Rpb24oKQorICAgIF91cGRhdGVDb250ZW50T3ZlcmZsb3dT
aGFkb3dWaXNpYmlsaXR5U29vbigpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fdXBkYXRlQ29u
dGVudE92ZXJmbG93U2hhZG93VmlzaWJpbGl0eUlkZW50aWZpZXIpCiAgICAgICAgICAgICByZXR1
cm47CiAKICAgICAgICAgdGhpcy5fdXBkYXRlQ29udGVudE92ZXJmbG93U2hhZG93VmlzaWJpbGl0
eUlkZW50aWZpZXIgPSBzZXRUaW1lb3V0KHRoaXMuX3VwZGF0ZUNvbnRlbnRPdmVyZmxvd1NoYWRv
d1Zpc2liaWxpdHkuYmluZCh0aGlzKSwgMCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdXBkYXRl
Q29udGVudE92ZXJmbG93U2hhZG93VmlzaWJpbGl0eTogZnVuY3Rpb24oKQorICAgIF91cGRhdGVD
b250ZW50T3ZlcmZsb3dTaGFkb3dWaXNpYmlsaXR5KCkKICAgICB7CiAgICAgICAgIGRlbGV0ZSB0
aGlzLl91cGRhdGVDb250ZW50T3ZlcmZsb3dTaGFkb3dWaXNpYmlsaXR5SWRlbnRpZmllcjsKIApA
QCAtNDU0LDkgKzQ0Myw5IEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuUGxhdGZv
cm0uaXNMZWdhY3lNYWNPUykKLSAgICAgICAgICAgIGNvbnN0IGVkZ2VUaHJlc2hvbGQgPSAxMDsK
KyAgICAgICAgICAgIHZhciBlZGdlVGhyZXNob2xkID0gMTA7CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIGNvbnN0IGVkZ2VUaHJlc2hvbGQgPSAxOworICAgICAgICAgICAgdmFyIGVkZ2VUaHJl
c2hvbGQgPSAxOwogCiAgICAgICAgIHZhciBzY3JvbGxUb3AgPSB0aGlzLmNvbnRlbnRFbGVtZW50
LnNjcm9sbFRvcDsKIApAQCAtNDY2LDE2ICs0NTUsMTYgQEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRp
b25TaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICBpZiAodGhpcy5fdG9wT3ZlcmZs
b3dTaGFkb3dFbGVtZW50KQogICAgICAgICAgICAgdGhpcy5fdG9wT3ZlcmZsb3dTaGFkb3dFbGVt
ZW50LnN0eWxlLm9wYWNpdHkgPSAodG9wQ292ZXJhZ2UgLyBlZGdlVGhyZXNob2xkKS50b0ZpeGVk
KDEpOwogICAgICAgICB0aGlzLl9ib3R0b21PdmVyZmxvd1NoYWRvd0VsZW1lbnQuc3R5bGUub3Bh
Y2l0eSA9ICgxIC0gKGJvdHRvbUNvdmVyYWdlIC8gZWRnZVRocmVzaG9sZCkpLnRvRml4ZWQoMSk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdXBkYXRlVG9vbGJhckl0ZW1WaXNpYmlsaXR5OiBmdW5j
dGlvbigpCisgICAgX3VwZGF0ZVRvb2xiYXJJdGVtVmlzaWJpbGl0eSgpCiAgICAgewogICAgICAg
ICAvLyBIaWRlIHRoZSBuYXZpZ2F0aW9uIGl0ZW0gaWYgcmVxdWVzdGVkIG9yIGF1dG8taGlkaW5n
IGFuZCB3ZSBhcmUgbm90IHZpc2libGUgYW5kIHdlIGFyZSBlbXB0eS4KICAgICAgICAgdmFyIHNo
b3VsZEhpZGUgPSAoKHRoaXMuX2hpZGVUb29sYmFySXRlbVdoZW5FbXB0eSB8fCB0aGlzLl9hdXRv
SGlkZVRvb2xiYXJJdGVtV2hlbkVtcHR5KSAmJiAhdGhpcy5zZWxlY3RlZCAmJiAhdGhpcy5fY29u
dGVudFRyZWVPdXRsaW5lLmNoaWxkcmVuLmxlbmd0aCk7CiAgICAgICAgIHRoaXMudG9vbGJhckl0
ZW0uaGlkZGVuID0gc2hvdWxkSGlkZTsKLSAgICB9LAorICAgIH0KIAotICAgIF9jaGVja0ZvckVt
cHR5RmlsdGVyUmVzdWx0czogZnVuY3Rpb24oKQorICAgIF9jaGVja0ZvckVtcHR5RmlsdGVyUmVz
dWx0cygpCiAgICAgewogICAgICAgICAvLyBObyB0cmVlIGVsZW1lbnRzLCBzbyBkb24ndCB0b3Vj
aCB0aGUgZW1wdHkgY29udGVudCBwbGFjZWhvbGRlci4KICAgICAgICAgaWYgKCF0aGlzLl9jb250
ZW50VHJlZU91dGxpbmUuY2hpbGRyZW4ubGVuZ3RoKQpAQCAtNDk3LDE0ICs0ODYsMTQgQEAgV2Vi
SW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAv
LyBBbGwgdG9wIGxldmVsIHRyZWUgZWxlbWVudHMgYXJlIGhpZGRlbiwgc28gZmlsdGVyaW5nIGhp
ZCBldmVyeXRoaW5nLiBTaG93IGEgbWVzc2FnZS4KICAgICAgICAgdGhpcy5zaG93RW1wdHlDb250
ZW50UGxhY2Vob2xkZXIoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJObyBGaWx0ZXIgUmVzdWx0cyIp
KTsKICAgICAgICAgdGhpcy5fZW1wdHlGaWx0ZXJSZXN1bHRzID0gdHJ1ZTsKLSAgICB9LAorICAg
IH0KIAotICAgIF9maWx0ZXJEaWRDaGFuZ2U6IGZ1bmN0aW9uKCkKKyAgICBfZmlsdGVyRGlkQ2hh
bmdlKCkKICAgICB7CiAgICAgICAgIHRoaXMuX3VwZGF0ZUZpbHRlcigpOwotICAgIH0sCisgICAg
fQogCi0gICAgX3VwZGF0ZUZpbHRlcjogZnVuY3Rpb24oKQorICAgIF91cGRhdGVGaWx0ZXIoKQog
ICAgIHsKICAgICAgICAgdmFyIHNlbGVjdGVkVHJlZUVsZW1lbnQgPSB0aGlzLl9jb250ZW50VHJl
ZU91dGxpbmUuc2VsZWN0ZWRUcmVlRWxlbWVudDsKICAgICAgICAgdmFyIHNlbGVjdGlvbldhc0hp
ZGRlbiA9IHNlbGVjdGVkVHJlZUVsZW1lbnQgJiYgc2VsZWN0ZWRUcmVlRWxlbWVudC5oaWRkZW47
CkBAIC01MzQsOSArNTIzLDkgQEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgaWYgKGN1cnJlbnRDb250ZW50VmlldyBpbnN0YW5j
ZW9mIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3ICYmIHR5cGVvZiBj
dXJyZW50Q29udGVudFZpZXcuY3VycmVudFRpbWVsaW5lVmlldy5maWx0ZXJVcGRhdGVkID09PSAi
ZnVuY3Rpb24iKQogICAgICAgICAgICAgICAgIGN1cnJlbnRDb250ZW50Vmlldy5jdXJyZW50VGlt
ZWxpbmVWaWV3LmZpbHRlclVwZGF0ZWQoKTsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCi0g
ICAgX3RyZWVFbGVtZW50QWRkZWRPckNoYW5nZWQ6IGZ1bmN0aW9uKHRyZWVFbGVtZW50KQorICAg
IF90cmVlRWxlbWVudEFkZGVkT3JDaGFuZ2VkKHRyZWVFbGVtZW50KQogICAgIHsKICAgICAgICAg
Ly8gRG9uJ3QgcG9wdWxhdGUgaWYgd2UgZG9uJ3QgaGF2ZSBhbnkgYWN0aXZlIGZpbHRlcnMuCiAg
ICAgICAgIC8vIFdlIG9ubHkgbmVlZCB0byBwb3B1bGF0ZSB3aGVuIGEgZmlsdGVyIG5lZWRzIHRv
IHJldmVhbC4KQEAgLTU1NCwyMyArNTQzLDIzIEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lk
ZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAodGhpcy5zZWxlY3RlZCkKICAg
ICAgICAgICAgIHRoaXMuX2NoZWNrRWxlbWVudHNGb3JQZW5kaW5nVmlld1N0YXRlQ29va2llKHRy
ZWVFbGVtZW50KTsKLSAgICB9LAorICAgIH0KIAotICAgIF90cmVlRWxlbWVudEV4cGFuZGVkT3JD
b2xsYXBzZWQ6IGZ1bmN0aW9uKHRyZWVFbGVtZW50KQorICAgIF90cmVlRWxlbWVudEV4cGFuZGVk
T3JDb2xsYXBzZWQodHJlZUVsZW1lbnQpCiAgICAgewogICAgICAgICB0aGlzLl91cGRhdGVDb250
ZW50T3ZlcmZsb3dTaGFkb3dWaXNpYmlsaXR5KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZ2Vu
ZXJhdGVTdHlsZVJ1bGVzSWZOZWVkZWQ6IGZ1bmN0aW9uKCkKKyAgICBfZ2VuZXJhdGVTdHlsZVJ1
bGVzSWZOZWVkZWQoKQogICAgIHsKICAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9u
U2lkZWJhclBhbmVsLl9zdHlsZUVsZW1lbnQpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAg
ICAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwuX3N0eWxlRWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7CiAKLSAgICAgICAgY29uc3QgbWF4aW11bVNp
ZGViYXJUcmVlRGVwdGggPSAzMjsKLSAgICAgICAgY29uc3QgYmFzZUxlZnRQYWRkaW5nID0gNTsg
Ly8gTWF0Y2hlcyB0aGUgcGFkZGluZyBpbiBOYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmNzcyBmb3Ig
dGhlIGl0ZW0gY2xhc3MuIEtlZXAgaW4gc3luYy4KLSAgICAgICAgY29uc3QgZGVwdGhQYWRkaW5n
ID0gMTA7CisgICAgICAgIHZhciBtYXhpbXVtU2lkZWJhclRyZWVEZXB0aCA9IDMyOworICAgICAg
ICB2YXIgYmFzZUxlZnRQYWRkaW5nID0gNTsgLy8gTWF0Y2hlcyB0aGUgcGFkZGluZyBpbiBOYXZp
Z2F0aW9uU2lkZWJhclBhbmVsLmNzcyBmb3IgdGhlIGl0ZW0gY2xhc3MuIEtlZXAgaW4gc3luYy4K
KyAgICAgICAgdmFyIGRlcHRoUGFkZGluZyA9IDEwOwogCiAgICAgICAgIHZhciBzdHlsZVRleHQg
PSAiIjsKICAgICAgICAgdmFyIGNoaWxkcmVuU3Vic3RyaW5nID0gIiI7CkBAIC01ODQsOSArNTcz
LDkgQEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewog
ICAgICAgICBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5fc3R5bGVFbGVtZW50
LnRleHRDb250ZW50ID0gc3R5bGVUZXh0OwogCiAgICAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5k
Q2hpbGQoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwuX3N0eWxlRWxlbWVudCk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZ2VuZXJhdGVEaXNjbG9zdXJlVHJpYW5nbGVzSWZOZWVk
ZWQ6IGZ1bmN0aW9uKCkKKyAgICBfZ2VuZXJhdGVEaXNjbG9zdXJlVHJpYW5nbGVzSWZOZWVkZWQo
KQogICAgIHsKICAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVs
Ll9nZW5lcmF0ZWREaXNjbG9zdXJlVHJpYW5nbGVzKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
NjI1LDkgKzYxNCw5IEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3Rv
dHlwZSA9IHsKIAogICAgICAgICBnZW5lcmF0ZUNvbG9yZWRJbWFnZXNGb3JDU1MoIkltYWdlcy9E
aXNjbG9zdXJlVHJpYW5nbGVTbWFsbE9wZW4uc3ZnIiwgc3BlY2lmaWNhdGlvbnMsIDEzLCAxMywg
V2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwuRGlzY2xvc3VyZVRyaWFuZ2xlT3Bl
bkNhbnZhc0lkZW50aWZpZXIpOwogICAgICAgICBnZW5lcmF0ZUNvbG9yZWRJbWFnZXNGb3JDU1Mo
IkltYWdlcy9EaXNjbG9zdXJlVHJpYW5nbGVTbWFsbENsb3NlZC5zdmciLCBzcGVjaWZpY2F0aW9u
cywgMTMsIDEzLCBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5EaXNjbG9zdXJl
VHJpYW5nbGVDbG9zZWRDYW52YXNJZGVudGlmaWVyKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9j
aGVja0Zvck9sZFJlc291cmNlczogZnVuY3Rpb24oZXZlbnQpCisgICAgX2NoZWNrRm9yT2xkUmVz
b3VyY2VzKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2NoZWNrRm9yT2xkUmVzb3Vy
Y2VzVGltZW91dElkZW50aWZpZXIpCiAgICAgICAgICAgICByZXR1cm47CkBAIC02NTcsMTcgKzY0
NiwxNyBAQCBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7
CiAKICAgICAgICAgLy8gQ2hlY2sgb24gYSBkZWxheSB0byBjb2FsZXNjZSBtdWx0aXBsZSBjYWxs
cyB0byBfY2hlY2tGb3JPbGRSZXNvdXJjZXMuCiAgICAgICAgIHRoaXMuX2NoZWNrRm9yT2xkUmVz
b3VyY2VzVGltZW91dElkZW50aWZpZXIgPSBzZXRUaW1lb3V0KGRlbGF5ZWRXb3JrLmJpbmQodGhp
cyksIDApOwotICAgIH0sCisgICAgfQogCi0gICAgX2lzVHJlZUVsZW1lbnRXaXRob3V0UmVwcmVz
ZW50ZWRPYmplY3Q6IGZ1bmN0aW9uKHRyZWVFbGVtZW50KQorICAgIF9pc1RyZWVFbGVtZW50V2l0
aG91dFJlcHJlc2VudGVkT2JqZWN0KHRyZWVFbGVtZW50KQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkZvbGRlclRyZWVFbGVtZW50CiAg
ICAgICAgICAgICB8fCB0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5EYXRhYmFz
ZUhvc3RUcmVlRWxlbWVudAogICAgICAgICAgICAgfHwgdHlwZW9mIHRyZWVFbGVtZW50LnJlcHJl
c2VudGVkT2JqZWN0ID09PSAic3RyaW5nIgogICAgICAgICAgICAgfHwgdHJlZUVsZW1lbnQucmVw
cmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBTdHJpbmc7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBf
Y2hlY2tPdXRsaW5lc0ZvclBlbmRpbmdWaWV3U3RhdGVDb29raWU6IGZ1bmN0aW9uKG1hdGNoVHlw
ZU9ubHkpCisgICAgX2NoZWNrT3V0bGluZXNGb3JQZW5kaW5nVmlld1N0YXRlQ29va2llKG1hdGNo
VHlwZU9ubHkpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX3BlbmRpbmdWaWV3U3RhdGVDb29r
aWUpCiAgICAgICAgICAgICByZXR1cm47CkBAIC02ODIsOSArNjcxLDkgQEAgV2ViSW5zcGVjdG9y
Lk5hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB9KTsKIAogICAg
ICAgICByZXR1cm4gdGhpcy5fY2hlY2tFbGVtZW50c0ZvclBlbmRpbmdWaWV3U3RhdGVDb29raWUo
dmlzaWJsZVRyZWVFbGVtZW50cywgbWF0Y2hUeXBlT25seSk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfY2hlY2tFbGVtZW50c0ZvclBlbmRpbmdWaWV3U3RhdGVDb29raWU6IGZ1bmN0aW9uKHRyZWVF
bGVtZW50cywgbWF0Y2hUeXBlT25seSkKKyAgICBfY2hlY2tFbGVtZW50c0ZvclBlbmRpbmdWaWV3
U3RhdGVDb29raWUodHJlZUVsZW1lbnRzLCBtYXRjaFR5cGVPbmx5KQogICAgIHsKICAgICAgICAg
aWYgKCF0aGlzLl9wZW5kaW5nVmlld1N0YXRlQ29va2llKQogICAgICAgICAgICAgcmV0dXJuOwpA
QCAtNzQ2LDMgKzczNSwxNSBAQCBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5w
cm90b3R5cGUgPSB7CiAgICAgICAgIH0KICAgICB9CiB9OworCitXZWJJbnNwZWN0b3IuTmF2aWdh
dGlvblNpZGViYXJQYW5lbC5PdmVyZmxvd1NoYWRvd0VsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJv
dmVyZmxvdy1zaGFkb3ciOworV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwuVG9w
T3ZlcmZsb3dTaGFkb3dFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAidG9wIjsKK1dlYkluc3BlY3Rv
ci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLkNvbnRlbnRUcmVlT3V0bGluZUVsZW1lbnRIaWRkZW5T
dHlsZUNsYXNzTmFtZSA9ICJoaWRkZW4iOworV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFy
UGFuZWwuQ29udGVudFRyZWVPdXRsaW5lRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gIm5hdmlnYXRp
b24tc2lkZWJhci1wYW5lbC1jb250ZW50LXRyZWUtb3V0bGluZSI7CitXZWJJbnNwZWN0b3IuTmF2
aWdhdGlvblNpZGViYXJQYW5lbC5IaWRlRGlzY2xvc3VyZUJ1dHRvbnNTdHlsZUNsYXNzTmFtZSA9
ICJoaWRlLWRpc2Nsb3N1cmUtYnV0dG9ucyI7CitXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGVi
YXJQYW5lbC5FbXB0eUNvbnRlbnRQbGFjZWhvbGRlckVsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJl
bXB0eS1jb250ZW50LXBsYWNlaG9sZGVyIjsKK1dlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJh
clBhbmVsLkVtcHR5Q29udGVudFBsYWNlaG9sZGVyTWVzc2FnZUVsZW1lbnRTdHlsZUNsYXNzTmFt
ZSA9ICJtZXNzYWdlIjsKK1dlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLkRpc2Ns
b3N1cmVUcmlhbmdsZU9wZW5DYW52YXNJZGVudGlmaWVyID0gIm5hdmlnYXRpb24tc2lkZWJhci1w
YW5lbC1kaXNjbG9zdXJlLXRyaWFuZ2xlLW9wZW4iOworV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25T
aWRlYmFyUGFuZWwuRGlzY2xvc3VyZVRyaWFuZ2xlQ2xvc2VkQ2FudmFzSWRlbnRpZmllciA9ICJu
YXZpZ2F0aW9uLXNpZGViYXItcGFuZWwtZGlzY2xvc3VyZS10cmlhbmdsZS1jbG9zZWQiOworV2Vi
SW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwuRGlzY2xvc3VyZVRyaWFuZ2xlTm9ybWFs
Q2FudmFzSWRlbnRpZmllclN1ZmZpeCA9ICItbm9ybWFsIjsKK1dlYkluc3BlY3Rvci5OYXZpZ2F0
aW9uU2lkZWJhclBhbmVsLkRpc2Nsb3N1cmVUcmlhbmdsZVNlbGVjdGVkQ2FudmFzSWRlbnRpZmll
clN1ZmZpeCA9ICItc2VsZWN0ZWQiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvUHJvYmVEZXRhaWxzU2lkZWJhclBhbmVsLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUHJvYmVEZXRhaWxzU2lkZWJhclBh
bmVsLmpzCmluZGV4IDlkZDY5NTIzM2Q0ZWM1OGYxMjY2NzE0YTgwYzJhMjRmYTU4M2ZkNWQuLmFl
NzRiZTJhNjkzYmE1ZGQ1NmM5NWZmMTZkMmY2OWNlNDE4MTVhYWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Byb2JlRGV0YWlsc1NpZGViYXJQ
YW5lbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Q
cm9iZURldGFpbHNTaWRlYmFyUGFuZWwuanMKQEAgLTEsNiArMSw2IEBACiAvKgorICogQ29weXJp
Z2h0IChDKSAyMDE0LTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29w
eXJpZ2h0IChDKSAyMDEzIFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI0LDMzICsyNCwyOSBAQAog
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuUHJvYmVEZXRhaWxzU2lkZWJhclBh
bmVsID0gZnVuY3Rpb24oKQorV2ViSW5zcGVjdG9yLlByb2JlRGV0YWlsc1NpZGViYXJQYW5lbCA9
IGNsYXNzIFByb2JlRGV0YWlsc1NpZGViYXJQYW5lbCBleHRlbmRzIFdlYkluc3BlY3Rvci5EZXRh
aWxzU2lkZWJhclBhbmVsCiB7Ci0gICAgV2ViSW5zcGVjdG9yLkRldGFpbHNTaWRlYmFyUGFuZWwu
Y2FsbCh0aGlzLCAicHJvYmUiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlByb2JlcyIpLCBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIlByb2JlcyIpLCAiSW1hZ2VzL05hdmlnYXRpb25JdGVtUHJvYmVz
LnN2ZyIsICI2Iik7Ci0KLSAgICBXZWJJbnNwZWN0b3IucHJvYmVNYW5hZ2VyLmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLlByb2JlTWFuYWdlci5FdmVudC5Qcm9iZVNldEFkZGVkLCB0aGlz
Ll9wcm9iZVNldEFkZGVkLCB0aGlzKTsKLSAgICBXZWJJbnNwZWN0b3IucHJvYmVNYW5hZ2VyLmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlByb2JlTWFuYWdlci5FdmVudC5Qcm9iZVNldFJl
bW92ZWQsIHRoaXMuX3Byb2JlU2V0UmVtb3ZlZCwgdGhpcyk7CisgICAgY29uc3RydWN0b3IoKQor
ICAgIHsKKyAgICAgICAgc3VwZXIoInByb2JlIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQcm9i
ZXMiKSwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQcm9iZXMiKSwgIkltYWdlcy9OYXZpZ2F0aW9u
SXRlbVByb2Jlcy5zdmciLCAiNiIpOwogCi0gICAgdGhpcy5fcHJvYmVTZXRTZWN0aW9ucyA9IG5l
dyBNYXA7Ci0gICAgdGhpcy5faW5zcGVjdGVkUHJvYmVTZXRzID0gW107CisgICAgICAgIFdlYklu
c3BlY3Rvci5wcm9iZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUHJvYmVN
YW5hZ2VyLkV2ZW50LlByb2JlU2V0QWRkZWQsIHRoaXMuX3Byb2JlU2V0QWRkZWQsIHRoaXMpOwor
ICAgICAgICBXZWJJbnNwZWN0b3IucHJvYmVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLlByb2JlTWFuYWdlci5FdmVudC5Qcm9iZVNldFJlbW92ZWQsIHRoaXMuX3Byb2JlU2V0
UmVtb3ZlZCwgdGhpcyk7CiAKLSAgICAvLyBJbml0aWFsaXplIHNpZGViYXIgc2VjdGlvbnMgZm9y
IHByb2JlIHNldHMgdGhhdCBhbHJlYWR5IGV4aXN0LgotICAgIGZvciAodmFyIHByb2JlU2V0IG9m
IFdlYkluc3BlY3Rvci5wcm9iZU1hbmFnZXIucHJvYmVTZXRzKQotICAgICAgICB0aGlzLl9wcm9i
ZVNldEFkZGVkKHByb2JlU2V0KTsKLX07CisgICAgICAgIHRoaXMuX3Byb2JlU2V0U2VjdGlvbnMg
PSBuZXcgTWFwOworICAgICAgICB0aGlzLl9pbnNwZWN0ZWRQcm9iZVNldHMgPSBbXTsKIAotV2Vi
SW5zcGVjdG9yLlByb2JlRGV0YWlsc1NpZGViYXJQYW5lbC5PZmZzZXRTZWN0aW9uc1N0eWxlQ2xh
c3NOYW1lICA9ICJvZmZzZXQtc2VjdGlvbnMiOwotCi1XZWJJbnNwZWN0b3IuUHJvYmVEZXRhaWxz
U2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9y
LlByb2JlRGV0YWlsc1NpZGViYXJQYW5lbCwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5E
ZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZSwKKyAgICAgICAgLy8gSW5pdGlhbGl6ZSBzaWRl
YmFyIHNlY3Rpb25zIGZvciBwcm9iZSBzZXRzIHRoYXQgYWxyZWFkeSBleGlzdC4KKyAgICAgICAg
Zm9yICh2YXIgcHJvYmVTZXQgb2YgV2ViSW5zcGVjdG9yLnByb2JlTWFuYWdlci5wcm9iZVNldHMp
CisgICAgICAgICAgICB0aGlzLl9wcm9iZVNldEFkZGVkKHByb2JlU2V0KTsKKyAgICB9CiAKICAg
ICAvLyBQdWJsaWMKIAogICAgIGdldCBpbnNwZWN0ZWRQcm9iZVNldHMoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX2luc3BlY3RlZFByb2JlU2V0cy5zbGljZSgpOwotICAgIH0sCisgICAg
fQogCiAgICAgc2V0IGluc3BlY3RlZFByb2JlU2V0cyhuZXdQcm9iZVNldHMpCiAgICAgewpAQCAt
NjUsOSArNjEsOSBAQCBXZWJJbnNwZWN0b3IuUHJvYmVEZXRhaWxzU2lkZWJhclBhbmVsLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgIHZhciBzaG93blNlY3Rpb24gPSB0aGlzLl9wcm9iZVNldFNl
Y3Rpb25zLmdldChwcm9iZVNldCk7CiAgICAgICAgICAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmFw
cGVuZENoaWxkKHNob3duU2VjdGlvbi5lbGVtZW50KTsKICAgICAgICAgfQotICAgIH0sCisgICAg
fQogCi0gICAgaW5zcGVjdDogZnVuY3Rpb24ob2JqZWN0cykKKyAgICBpbnNwZWN0KG9iamVjdHMp
CiAgICAgewogICAgICAgICBpZiAoIShvYmplY3RzIGluc3RhbmNlb2YgQXJyYXkpKQogICAgICAg
ICAgICAgb2JqZWN0cyA9IFtvYmplY3RzXTsKQEAgLTkzLDExICs4OSwxMSBAQCBXZWJJbnNwZWN0
b3IuUHJvYmVEZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5p
bnNwZWN0ZWRQcm9iZVNldHMgPSBpbnNwZWN0ZWRQcm9iZVNldHM7CiAKICAgICAgICAgcmV0dXJu
ICEhdGhpcy5faW5zcGVjdGVkUHJvYmVTZXRzLmxlbmd0aDsKLSAgICB9LAorICAgIH0KIAogICAg
IC8vIFByaXZhdGUKIAotICAgIF9wcm9iZVNldEFkZGVkOiBmdW5jdGlvbihwcm9iZVNldE9yRXZl
bnQpCisgICAgX3Byb2JlU2V0QWRkZWQocHJvYmVTZXRPckV2ZW50KQogICAgIHsKICAgICAgICAg
dmFyIHByb2JlU2V0OwogICAgICAgICBpZiAocHJvYmVTZXRPckV2ZW50IGluc3RhbmNlb2YgV2Vi
SW5zcGVjdG9yLlByb2JlU2V0KQpAQCAtMTA4LDEwICsxMDQsMTAgQEAgV2ViSW5zcGVjdG9yLlBy
b2JlRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdmFyIG5ld1Nl
Y3Rpb24gPSBuZXcgV2ViSW5zcGVjdG9yLlByb2JlU2V0RGV0YWlsc1NlY3Rpb24ocHJvYmVTZXQp
OwogICAgICAgICB0aGlzLl9wcm9iZVNldFNlY3Rpb25zLnNldChwcm9iZVNldCwgbmV3U2VjdGlv
bik7Ci0gICAgfSwKKyAgICB9CiAKIAotICAgIF9wcm9iZVNldFJlbW92ZWQ6IGZ1bmN0aW9uKGV2
ZW50KQorICAgIF9wcm9iZVNldFJlbW92ZWQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgcHJv
YmVTZXQgPSBldmVudC5kYXRhLnByb2JlU2V0OwogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlz
Ll9wcm9iZVNldFNlY3Rpb25zLmhhcyhwcm9iZVNldCksICJSZW1vdmVkIHByb2JlIGdyb3VwICIs
IHByb2JlU2V0LCAiIGRvZXNuJ3QgaGF2ZSBhIHNpZGViYXIuIik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZURldGFpbHNTaWRl
YmFyUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9S
ZXNvdXJjZURldGFpbHNTaWRlYmFyUGFuZWwuanMKaW5kZXggZWQzNjkxYjE4ZGZjOWIxYTJlNDM3
MDZkMTc4MDgwOGNmN2M2YmVlYi4uZjAxYzdlODg4NDQ5MjdmNzBhZDY4YTQ5OTU1MGZkZmQzODMx
MThhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvUmVzb3VyY2VEZXRhaWxzU2lkZWJhclBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlRGV0YWlsc1NpZGViYXJQYW5lbC5qcwpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjMsOTkgKzIzLDk1IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotV2ViSW5zcGVjdG9yLlJlc291cmNlRGV0YWlsc1NpZGViYXJQYW5lbCA9IGZ1bmN0aW9uKCkK
K1dlYkluc3BlY3Rvci5SZXNvdXJjZURldGFpbHNTaWRlYmFyUGFuZWwgPSBjbGFzcyBSZXNvdXJj
ZURldGFpbHNTaWRlYmFyUGFuZWwgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NpZGViYXJQ
YW5lbAogewotICAgIFdlYkluc3BlY3Rvci5EZXRhaWxzU2lkZWJhclBhbmVsLmNhbGwodGhpcywg
InJlc291cmNlLWRldGFpbHMiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlc291cmNlIiksIFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiUmVzb3VyY2UiKSwgIkltYWdlcy9OYXZpZ2F0aW9uSXRlbUZp
bGUuc3ZnIiwgIjEiKTsKLQotICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZURldGFpbHNTaWRlYmFyUGFuZWwuU3R5bGVDbGFzc05hbWUpOwotCi0gICAg
dGhpcy5fcmVzb3VyY2UgPSBudWxsOworICAgIGNvbnN0cnVjdG9yKCkKKyAgICB7CisgICAgICAg
IHN1cGVyKCJyZXNvdXJjZS1kZXRhaWxzIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXNvdXJj
ZSIpLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlc291cmNlIiksICJJbWFnZXMvTmF2aWdhdGlv
bkl0ZW1GaWxlLnN2ZyIsICIxIik7CiAKLSAgICB0aGlzLl90eXBlTUlNRVR5cGVSb3cgPSBuZXcg
V2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiTUlNRSBUeXBlIikpOwotICAgIHRoaXMuX3R5cGVSZXNvdXJjZVR5cGVSb3cgPSBuZXcgV2Vi
SW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdlYkluc3BlY3Rvci5VSVN0cmluZygi
UmVzb3VyY2UgVHlwZSIpKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInJl
c291cmNlIik7CiAKLSAgICB0aGlzLl90eXBlU2VjdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0
YWlsc1NlY3Rpb24oInJlc291cmNlLXR5cGUiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlR5cGUi
KSk7Ci0gICAgdGhpcy5fdHlwZVNlY3Rpb24uZ3JvdXBzID0gW25ldyBXZWJJbnNwZWN0b3IuRGV0
YWlsc1NlY3Rpb25Hcm91cChbdGhpcy5fdHlwZU1JTUVUeXBlUm93LCB0aGlzLl90eXBlUmVzb3Vy
Y2VUeXBlUm93XSldOworICAgICAgICB0aGlzLl9yZXNvdXJjZSA9IG51bGw7CiAKLSAgICB0aGlz
Ll9sb2NhdGlvbkZ1bGxVUkxSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2lt
cGxlUm93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiRnVsbCBVUkwiKSk7Ci0gICAgdGhpcy5fbG9j
YXRpb25TY2hlbWVSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93
KFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2NoZW1lIikpOwotICAgIHRoaXMuX2xvY2F0aW9uSG9z
dFJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3coV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJIb3N0IikpOwotICAgIHRoaXMuX2xvY2F0aW9uUG9ydFJvdyA9IG5ldyBX
ZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJQb3J0IikpOwotICAgIHRoaXMuX2xvY2F0aW9uUGF0aFJvdyA9IG5ldyBXZWJJbnNwZWN0b3Iu
RGV0YWlsc1NlY3Rpb25TaW1wbGVSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQYXRoIikpOwot
ICAgIHRoaXMuX2xvY2F0aW9uUXVlcnlTdHJpbmdSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFp
bHNTZWN0aW9uU2ltcGxlUm93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiUXVlcnkgU3RyaW5nIikp
OwotICAgIHRoaXMuX2xvY2F0aW9uRnJhZ21lbnRSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFp
bHNTZWN0aW9uU2ltcGxlUm93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiRnJhZ21lbnQiKSk7Ci0g
ICAgdGhpcy5fbG9jYXRpb25GaWxlbmFtZVJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1Nl
Y3Rpb25TaW1wbGVSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGaWxlbmFtZSIpKTsKLSAgICB0
aGlzLl9pbml0aWF0b3JSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxl
Um93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiSW5pdGlhdG9yIikpOworICAgICAgICB0aGlzLl90
eXBlTUlNRVR5cGVSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93
KFdlYkluc3BlY3Rvci5VSVN0cmluZygiTUlNRSBUeXBlIikpOworICAgICAgICB0aGlzLl90eXBl
UmVzb3VyY2VUeXBlUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBsZVJv
dyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlc291cmNlIFR5cGUiKSk7CiAKLSAgICB2YXIgZmly
c3RHcm91cCA9IFt0aGlzLl9sb2NhdGlvbkZ1bGxVUkxSb3ddOwotICAgIHZhciBzZWNvbmRHcm91
cCA9IFt0aGlzLl9sb2NhdGlvblNjaGVtZVJvdywgdGhpcy5fbG9jYXRpb25Ib3N0Um93LCB0aGlz
Ll9sb2NhdGlvblBvcnRSb3csIHRoaXMuX2xvY2F0aW9uUGF0aFJvdywKLSAgICAgICAgdGhpcy5f
bG9jYXRpb25RdWVyeVN0cmluZ1JvdywgdGhpcy5fbG9jYXRpb25GcmFnbWVudFJvdywgdGhpcy5f
bG9jYXRpb25GaWxlbmFtZVJvd107Ci0gICAgdmFyIHRoaXJkR3JvdXAgPSBbdGhpcy5faW5pdGlh
dG9yUm93XTsKKyAgICAgICAgdGhpcy5fdHlwZVNlY3Rpb24gPSBuZXcgV2ViSW5zcGVjdG9yLkRl
dGFpbHNTZWN0aW9uKCJyZXNvdXJjZS10eXBlIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUeXBl
IikpOworICAgICAgICB0aGlzLl90eXBlU2VjdGlvbi5ncm91cHMgPSBbbmV3IFdlYkluc3BlY3Rv
ci5EZXRhaWxzU2VjdGlvbkdyb3VwKFt0aGlzLl90eXBlTUlNRVR5cGVSb3csIHRoaXMuX3R5cGVS
ZXNvdXJjZVR5cGVSb3ddKV07CiAKLSAgICB0aGlzLl9mdWxsVVJMR3JvdXAgPSBuZXcgV2ViSW5z
cGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoZmlyc3RHcm91cCk7Ci0gICAgdGhpcy5fbG9jYXRp
b25VUkxDb21wb25lbnRzR3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3Jv
dXAoc2Vjb25kR3JvdXApOwotICAgIHRoaXMuX2luaXRpYXRvckdyb3VwID0gbmV3IFdlYkluc3Bl
Y3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwKHRoaXJkR3JvdXApOworICAgICAgICB0aGlzLl9sb2Nh
dGlvbkZ1bGxVUkxSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93
KFdlYkluc3BlY3Rvci5VSVN0cmluZygiRnVsbCBVUkwiKSk7CisgICAgICAgIHRoaXMuX2xvY2F0
aW9uU2NoZW1lUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBsZVJvdyhX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNjaGVtZSIpKTsKKyAgICAgICAgdGhpcy5fbG9jYXRpb25I
b3N0Um93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBsZVJvdyhXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIkhvc3QiKSk7CisgICAgICAgIHRoaXMuX2xvY2F0aW9uUG9ydFJvdyA9
IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3coV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJQb3J0IikpOworICAgICAgICB0aGlzLl9sb2NhdGlvblBhdGhSb3cgPSBuZXcgV2Vi
SW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdlYkluc3BlY3Rvci5VSVN0cmluZygi
UGF0aCIpKTsKKyAgICAgICAgdGhpcy5fbG9jYXRpb25RdWVyeVN0cmluZ1JvdyA9IG5ldyBXZWJJ
bnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJR
dWVyeSBTdHJpbmciKSk7CisgICAgICAgIHRoaXMuX2xvY2F0aW9uRnJhZ21lbnRSb3cgPSBuZXcg
V2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiRnJhZ21lbnQiKSk7CisgICAgICAgIHRoaXMuX2xvY2F0aW9uRmlsZW5hbWVSb3cgPSBuZXcg
V2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiRmlsZW5hbWUiKSk7CisgICAgICAgIHRoaXMuX2luaXRpYXRvclJvdyA9IG5ldyBXZWJJbnNw
ZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJJbml0
aWF0b3IiKSk7CiAKLSAgICB0aGlzLl9sb2NhdGlvblNlY3Rpb24gPSBuZXcgV2ViSW5zcGVjdG9y
LkRldGFpbHNTZWN0aW9uKCJyZXNvdXJjZS1sb2NhdGlvbiIsIFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiTG9jYXRpb24iKSwgW3RoaXMuX2Z1bGxVUkxHcm91cCwgdGhpcy5fbG9jYXRpb25VUkxDb21w
b25lbnRzR3JvdXAsIHRoaXMuX2luaXRpYXRvckdyb3VwXSk7CisgICAgICAgIHZhciBmaXJzdEdy
b3VwID0gW3RoaXMuX2xvY2F0aW9uRnVsbFVSTFJvd107CisgICAgICAgIHZhciBzZWNvbmRHcm91
cCA9IFt0aGlzLl9sb2NhdGlvblNjaGVtZVJvdywgdGhpcy5fbG9jYXRpb25Ib3N0Um93LCB0aGlz
Ll9sb2NhdGlvblBvcnRSb3csIHRoaXMuX2xvY2F0aW9uUGF0aFJvdywKKyAgICAgICAgICAgIHRo
aXMuX2xvY2F0aW9uUXVlcnlTdHJpbmdSb3csIHRoaXMuX2xvY2F0aW9uRnJhZ21lbnRSb3csIHRo
aXMuX2xvY2F0aW9uRmlsZW5hbWVSb3ddOworICAgICAgICB2YXIgdGhpcmRHcm91cCA9IFt0aGlz
Ll9pbml0aWF0b3JSb3ddOwogCi0gICAgdGhpcy5fcXVlcnlQYXJhbWV0ZXJzUm93ID0gbmV3IFdl
Ykluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkRhdGFHcmlkUm93KG51bGwsIFdlYkluc3BlY3Rvci5V
SVN0cmluZygiTm8gUXVlcnkgUGFyYW1ldGVycyIpKTsKLSAgICB0aGlzLl9xdWVyeVBhcmFtZXRl
cnNTZWN0aW9uID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbigicmVzb3VyY2UtcXVl
cnktcGFyYW1ldGVycyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiUXVlcnkgUGFyYW1ldGVycyIp
KTsKLSAgICB0aGlzLl9xdWVyeVBhcmFtZXRlcnNTZWN0aW9uLmdyb3VwcyA9IFtuZXcgV2ViSW5z
cGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoW3RoaXMuX3F1ZXJ5UGFyYW1ldGVyc1Jvd10pXTsK
KyAgICAgICAgdGhpcy5fZnVsbFVSTEdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2Vj
dGlvbkdyb3VwKGZpcnN0R3JvdXApOworICAgICAgICB0aGlzLl9sb2NhdGlvblVSTENvbXBvbmVu
dHNHcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChzZWNvbmRHcm91
cCk7CisgICAgICAgIHRoaXMuX2luaXRpYXRvckdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRh
aWxzU2VjdGlvbkdyb3VwKHRoaXJkR3JvdXApOwogCi0gICAgdGhpcy5fcmVxdWVzdERhdGFTZWN0
aW9uID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbigicmVzb3VyY2UtcmVxdWVzdC1k
YXRhIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXF1ZXN0IERhdGEiKSk7CisgICAgICAgIHRo
aXMuX2xvY2F0aW9uU2VjdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24oInJl
c291cmNlLWxvY2F0aW9uIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJMb2NhdGlvbiIpLCBbdGhp
cy5fZnVsbFVSTEdyb3VwLCB0aGlzLl9sb2NhdGlvblVSTENvbXBvbmVudHNHcm91cCwgdGhpcy5f
aW5pdGlhdG9yR3JvdXBdKTsKIAotICAgIHRoaXMuX3JlcXVlc3RNZXRob2RSb3cgPSBuZXcgV2Vi
SW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdlYkluc3BlY3Rvci5VSVN0cmluZygi
TWV0aG9kIikpOwotICAgIHRoaXMuX2NhY2hlZFJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWls
c1NlY3Rpb25TaW1wbGVSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDYWNoZWQiKSk7CisgICAg
ICAgIHRoaXMuX3F1ZXJ5UGFyYW1ldGVyc1JvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1Nl
Y3Rpb25EYXRhR3JpZFJvdyhudWxsLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk5vIFF1ZXJ5IFBh
cmFtZXRlcnMiKSk7CisgICAgICAgIHRoaXMuX3F1ZXJ5UGFyYW1ldGVyc1NlY3Rpb24gPSBuZXcg
V2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uKCJyZXNvdXJjZS1xdWVyeS1wYXJhbWV0ZXJzIiwg
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJRdWVyeSBQYXJhbWV0ZXJzIikpOworICAgICAgICB0aGlz
Ll9xdWVyeVBhcmFtZXRlcnNTZWN0aW9uLmdyb3VwcyA9IFtuZXcgV2ViSW5zcGVjdG9yLkRldGFp
bHNTZWN0aW9uR3JvdXAoW3RoaXMuX3F1ZXJ5UGFyYW1ldGVyc1Jvd10pXTsKIAotICAgIHRoaXMu
X3N0YXR1c1RleHRSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93
KFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3RhdHVzIikpOwotICAgIHRoaXMuX3N0YXR1c0NvZGVS
b3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiQ29kZSIpKTsKKyAgICAgICAgdGhpcy5fcmVxdWVzdERhdGFTZWN0aW9uID0g
bmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbigicmVzb3VyY2UtcmVxdWVzdC1kYXRhIiwg
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXF1ZXN0IERhdGEiKSk7CiAKLSAgICB0aGlzLl9lbmNv
ZGVkU2l6ZVJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3coV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJFbmNvZGVkIikpOwotICAgIHRoaXMuX2RlY29kZWRTaXplUm93
ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBsZVJvdyhXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIkRlY29kZWQiKSk7Ci0gICAgdGhpcy5fdHJhbnNmZXJTaXplUm93ID0gbmV3IFdl
Ykluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBsZVJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IlRyYW5zZmVyZWQiKSk7CisgICAgICAgIHRoaXMuX3JlcXVlc3RNZXRob2RSb3cgPSBuZXcgV2Vi
SW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdlYkluc3BlY3Rvci5VSVN0cmluZygi
TWV0aG9kIikpOworICAgICAgICB0aGlzLl9jYWNoZWRSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRl
dGFpbHNTZWN0aW9uU2ltcGxlUm93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2FjaGVkIikpOwog
Ci0gICAgdGhpcy5fY29tcHJlc3NlZFJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rp
b25TaW1wbGVSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb21wcmVzc2VkIikpOwotICAgIHRo
aXMuX2NvbXByZXNzaW9uUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBs
ZVJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvbXByZXNzaW9uIikpOworICAgICAgICB0aGlz
Ll9zdGF0dXNUZXh0Um93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBsZVJv
dyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0YXR1cyIpKTsKKyAgICAgICAgdGhpcy5fc3RhdHVz
Q29kZVJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3coV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJDb2RlIikpOwogCi0gICAgdmFyIHJlcXVlc3RHcm91cCA9IG5ldyBX
ZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbdGhpcy5fcmVxdWVzdE1ldGhvZFJvdywg
dGhpcy5fY2FjaGVkUm93XSk7Ci0gICAgdmFyIHN0YXR1c0dyb3VwID0gbmV3IFdlYkluc3BlY3Rv
ci5EZXRhaWxzU2VjdGlvbkdyb3VwKFt0aGlzLl9zdGF0dXNUZXh0Um93LCB0aGlzLl9zdGF0dXND
b2RlUm93XSk7Ci0gICAgdmFyIHNpemVHcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1Nl
Y3Rpb25Hcm91cChbdGhpcy5fZW5jb2RlZFNpemVSb3csIHRoaXMuX2RlY29kZWRTaXplUm93LCB0
aGlzLl90cmFuc2ZlclNpemVSb3ddKTsKLSAgICB2YXIgY29tcHJlc3Npb25Hcm91cCA9IG5ldyBX
ZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbdGhpcy5fY29tcHJlc3NlZFJvdywgdGhp
cy5fY29tcHJlc3Npb25Sb3ddKTsKKyAgICAgICAgdGhpcy5fZW5jb2RlZFNpemVSb3cgPSBuZXcg
V2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiRW5jb2RlZCIpKTsKKyAgICAgICAgdGhpcy5fZGVjb2RlZFNpemVSb3cgPSBuZXcgV2ViSW5z
cGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiRGVj
b2RlZCIpKTsKKyAgICAgICAgdGhpcy5fdHJhbnNmZXJTaXplUm93ID0gbmV3IFdlYkluc3BlY3Rv
ci5EZXRhaWxzU2VjdGlvblNpbXBsZVJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRyYW5zZmVy
ZWQiKSk7CiAKLSAgICB0aGlzLl9yZXF1ZXN0QW5kUmVzcG9uc2VTZWN0aW9uID0gbmV3IFdlYklu
c3BlY3Rvci5EZXRhaWxzU2VjdGlvbigicmVzb3VyY2UtcmVxdWVzdC1yZXNwb25zZSIsIFdlYklu
c3BlY3Rvci5VSVN0cmluZygiUmVxdWVzdCAmIFJlc3BvbnNlIiksIFtyZXF1ZXN0R3JvdXAsIHN0
YXR1c0dyb3VwLCBzaXplR3JvdXAsIGNvbXByZXNzaW9uR3JvdXBdKTsKKyAgICAgICAgdGhpcy5f
Y29tcHJlc3NlZFJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3co
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb21wcmVzc2VkIikpOworICAgICAgICB0aGlzLl9jb21w
cmVzc2lvblJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3coV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJDb21wcmVzc2lvbiIpKTsKIAotICAgIHRoaXMuX3JlcXVlc3RI
ZWFkZXJzUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkRhdGFHcmlkUm93KG51
bGwsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiTm8gUmVxdWVzdCBIZWFkZXJzIikpOwotICAgIHRo
aXMuX3JlcXVlc3RIZWFkZXJzU2VjdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rp
b24oInJlc291cmNlLXJlcXVlc3QtaGVhZGVycyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVx
dWVzdCBIZWFkZXJzIikpOwotICAgIHRoaXMuX3JlcXVlc3RIZWFkZXJzU2VjdGlvbi5ncm91cHMg
PSBbbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwKFt0aGlzLl9yZXF1ZXN0SGVh
ZGVyc1Jvd10pXTsKKyAgICAgICAgdmFyIHJlcXVlc3RHcm91cCA9IG5ldyBXZWJJbnNwZWN0b3Iu
RGV0YWlsc1NlY3Rpb25Hcm91cChbdGhpcy5fcmVxdWVzdE1ldGhvZFJvdywgdGhpcy5fY2FjaGVk
Um93XSk7CisgICAgICAgIHZhciBzdGF0dXNHcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWls
c1NlY3Rpb25Hcm91cChbdGhpcy5fc3RhdHVzVGV4dFJvdywgdGhpcy5fc3RhdHVzQ29kZVJvd10p
OworICAgICAgICB2YXIgc2l6ZUdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlv
bkdyb3VwKFt0aGlzLl9lbmNvZGVkU2l6ZVJvdywgdGhpcy5fZGVjb2RlZFNpemVSb3csIHRoaXMu
X3RyYW5zZmVyU2l6ZVJvd10pOworICAgICAgICB2YXIgY29tcHJlc3Npb25Hcm91cCA9IG5ldyBX
ZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbdGhpcy5fY29tcHJlc3NlZFJvdywgdGhp
cy5fY29tcHJlc3Npb25Sb3ddKTsKIAotICAgIHRoaXMuX3Jlc3BvbnNlSGVhZGVyc1JvdyA9IG5l
dyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25EYXRhR3JpZFJvdyhudWxsLCBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIk5vIFJlc3BvbnNlIEhlYWRlcnMiKSk7Ci0gICAgdGhpcy5fcmVzcG9uc2VI
ZWFkZXJzU2VjdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24oInJlc291cmNl
LXJlc3BvbnNlLWhlYWRlcnMiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlc3BvbnNlIEhlYWRl
cnMiKSk7Ci0gICAgdGhpcy5fcmVzcG9uc2VIZWFkZXJzU2VjdGlvbi5ncm91cHMgPSBbbmV3IFdl
Ykluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwKFt0aGlzLl9yZXNwb25zZUhlYWRlcnNSb3dd
KV07CisgICAgICAgIHRoaXMuX3JlcXVlc3RBbmRSZXNwb25zZVNlY3Rpb24gPSBuZXcgV2ViSW5z
cGVjdG9yLkRldGFpbHNTZWN0aW9uKCJyZXNvdXJjZS1yZXF1ZXN0LXJlc3BvbnNlIiwgV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJSZXF1ZXN0ICYgUmVzcG9uc2UiKSwgW3JlcXVlc3RHcm91cCwgc3Rh
dHVzR3JvdXAsIHNpemVHcm91cCwgY29tcHJlc3Npb25Hcm91cF0pOwogCi0gICAgLy8gUm93cyBm
b3IgdGhlICJJbWFnZSBTaXplIiBzZWN0aW9uLgotICAgIHRoaXMuX2ltYWdlV2lkdGhSb3cgPSBu
ZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdlYkluc3BlY3Rvci5VSVN0
cmluZygiV2lkdGgiKSk7Ci0gICAgdGhpcy5faW1hZ2VIZWlnaHRSb3cgPSBuZXcgV2ViSW5zcGVj
dG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiSGVpZ2h0
IikpOworICAgICAgICB0aGlzLl9yZXF1ZXN0SGVhZGVyc1JvdyA9IG5ldyBXZWJJbnNwZWN0b3Iu
RGV0YWlsc1NlY3Rpb25EYXRhR3JpZFJvdyhudWxsLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk5v
IFJlcXVlc3QgSGVhZGVycyIpKTsKKyAgICAgICAgdGhpcy5fcmVxdWVzdEhlYWRlcnNTZWN0aW9u
ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbigicmVzb3VyY2UtcmVxdWVzdC1oZWFk
ZXJzIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXF1ZXN0IEhlYWRlcnMiKSk7CisgICAgICAg
IHRoaXMuX3JlcXVlc3RIZWFkZXJzU2VjdGlvbi5ncm91cHMgPSBbbmV3IFdlYkluc3BlY3Rvci5E
ZXRhaWxzU2VjdGlvbkdyb3VwKFt0aGlzLl9yZXF1ZXN0SGVhZGVyc1Jvd10pXTsKIAotICAgIC8v
ICJJbWFnZSBTaXplIiBzZWN0aW9uIHdoZXJlIHdlIGRpc3BsYXkgaW50cmluc2ljIG1ldHJpY3Mg
Zm9yIGltYWdlIHJlc291cmNlcy4KLSAgICB0aGlzLl9pbWFnZVNpemVTZWN0aW9uID0gbmV3IFdl
Ykluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbigicmVzb3VyY2UtdHlwZSIsIFdlYkluc3BlY3Rvci5V
SVN0cmluZygiSW1hZ2UgU2l6ZSIpKTsKLSAgICB0aGlzLl9pbWFnZVNpemVTZWN0aW9uLmdyb3Vw
cyA9IFtuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoW3RoaXMuX2ltYWdlV2lk
dGhSb3csIHRoaXMuX2ltYWdlSGVpZ2h0Um93XSldOworICAgICAgICB0aGlzLl9yZXNwb25zZUhl
YWRlcnNSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uRGF0YUdyaWRSb3cobnVs
bCwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJObyBSZXNwb25zZSBIZWFkZXJzIikpOworICAgICAg
ICB0aGlzLl9yZXNwb25zZUhlYWRlcnNTZWN0aW9uID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxz
U2VjdGlvbigicmVzb3VyY2UtcmVzcG9uc2UtaGVhZGVycyIsIFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiUmVzcG9uc2UgSGVhZGVycyIpKTsKKyAgICAgICAgdGhpcy5fcmVzcG9uc2VIZWFkZXJzU2Vj
dGlvbi5ncm91cHMgPSBbbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwKFt0aGlz
Ll9yZXNwb25zZUhlYWRlcnNSb3ddKV07CiAKLSAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmFwcGVu
ZENoaWxkKHRoaXMuX3R5cGVTZWN0aW9uLmVsZW1lbnQpOwotICAgIHRoaXMuY29udGVudEVsZW1l
bnQuYXBwZW5kQ2hpbGQodGhpcy5fbG9jYXRpb25TZWN0aW9uLmVsZW1lbnQpOwotICAgIHRoaXMu
Y29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fcmVxdWVzdEFuZFJlc3BvbnNlU2VjdGlv
bi5lbGVtZW50KTsKLSAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3Jl
cXVlc3RIZWFkZXJzU2VjdGlvbi5lbGVtZW50KTsKLSAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmFw
cGVuZENoaWxkKHRoaXMuX3Jlc3BvbnNlSGVhZGVyc1NlY3Rpb24uZWxlbWVudCk7Ci19OworICAg
ICAgICAvLyBSb3dzIGZvciB0aGUgIkltYWdlIFNpemUiIHNlY3Rpb24uCisgICAgICAgIHRoaXMu
X2ltYWdlV2lkdGhSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93
KFdlYkluc3BlY3Rvci5VSVN0cmluZygiV2lkdGgiKSk7CisgICAgICAgIHRoaXMuX2ltYWdlSGVp
Z2h0Um93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBsZVJvdyhXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIkhlaWdodCIpKTsKIAotV2ViSW5zcGVjdG9yLlJlc291cmNlRGV0YWls
c1NpZGViYXJQYW5lbC5TdHlsZUNsYXNzTmFtZSA9ICJyZXNvdXJjZSI7CisgICAgICAgIC8vICJJ
bWFnZSBTaXplIiBzZWN0aW9uIHdoZXJlIHdlIGRpc3BsYXkgaW50cmluc2ljIG1ldHJpY3MgZm9y
IGltYWdlIHJlc291cmNlcy4KKyAgICAgICAgdGhpcy5faW1hZ2VTaXplU2VjdGlvbiA9IG5ldyBX
ZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24oInJlc291cmNlLXR5cGUiLCBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIkltYWdlIFNpemUiKSk7CisgICAgICAgIHRoaXMuX2ltYWdlU2l6ZVNlY3Rpb24u
Z3JvdXBzID0gW25ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbdGhpcy5faW1h
Z2VXaWR0aFJvdywgdGhpcy5faW1hZ2VIZWlnaHRSb3ddKV07CiAKLVdlYkluc3BlY3Rvci5SZXNv
dXJjZURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VEZXRhaWxzU2lkZWJhclBhbmVsLAotICAgIF9fcHJvdG9fXzog
V2ViSW5zcGVjdG9yLkRldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlLAorICAgICAgICB0aGlz
LmNvbnRlbnRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3R5cGVTZWN0aW9uLmVsZW1lbnQpOwor
ICAgICAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2xvY2F0aW9uU2Vj
dGlvbi5lbGVtZW50KTsKKyAgICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0
aGlzLl9yZXF1ZXN0QW5kUmVzcG9uc2VTZWN0aW9uLmVsZW1lbnQpOworICAgICAgICB0aGlzLmNv
bnRlbnRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3JlcXVlc3RIZWFkZXJzU2VjdGlvbi5lbGVt
ZW50KTsKKyAgICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9yZXNw
b25zZUhlYWRlcnNTZWN0aW9uLmVsZW1lbnQpOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCi0g
ICAgaW5zcGVjdDogZnVuY3Rpb24ob2JqZWN0cykKKyAgICBpbnNwZWN0KG9iamVjdHMpCiAgICAg
ewogICAgICAgICAvLyBDb252ZXJ0IHRvIGEgc2luZ2xlIGl0ZW0gYXJyYXkgaWYgbmVlZGVkLgog
ICAgICAgICBpZiAoIShvYmplY3RzIGluc3RhbmNlb2YgQXJyYXkpKQpAQCAtMTM5LDEyICsxMzUs
MTIgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUg
PSB7CiAgICAgICAgIHRoaXMucmVzb3VyY2UgPSByZXNvdXJjZVRvSW5zcGVjdDsKIAogICAgICAg
ICByZXR1cm4gISF0aGlzLl9yZXNvdXJjZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCByZXNv
dXJjZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2U7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBzZXQgcmVzb3VyY2UocmVzb3VyY2UpCiAgICAgewpAQCAtMTc2LDkgKzE3Miw5
IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlID0g
ewogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5uZWVkc1JlZnJlc2goKTsKLSAgICB9LAorICAg
IH0KIAotICAgIHJlZnJlc2g6IGZ1bmN0aW9uKCkKKyAgICByZWZyZXNoKCkKICAgICB7CiAgICAg
ICAgIGlmICghdGhpcy5fcmVzb3VyY2UpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xOTIsMTEg
KzE4OCwxMSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VEZXRhaWxzU2lkZWJhclBhbmVsLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgdGhpcy5fcmVmcmVzaFJlcXVlc3RIZWFkZXJzKCk7CiAgICAgICAg
IHRoaXMuX3JlZnJlc2hJbWFnZVNpemVTZWN0aW9uKCk7CiAgICAgICAgIHRoaXMuX3JlZnJlc2hS
ZXF1ZXN0RGF0YVNlY3Rpb24oKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAot
ICAgIF9yZWZyZXNoVVJMOiBmdW5jdGlvbigpCisgICAgX3JlZnJlc2hVUkwoKQogICAgIHsKICAg
ICAgICAgaWYgKCF0aGlzLl9yZXNvdXJjZSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTIzOCwy
NSArMjM0LDI1IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZURldGFpbHNTaWRlYmFyUGFuZWwucHJv
dG90eXBlID0gewogICAgICAgICAgICAgaWYgKHF1ZXJ5UGFyYW1ldGVyc1NlY3Rpb25FbGVtZW50
LnBhcmVudE5vZGUpCiAgICAgICAgICAgICAgICAgcXVlcnlQYXJhbWV0ZXJzU2VjdGlvbkVsZW1l
bnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChxdWVyeVBhcmFtZXRlcnNTZWN0aW9uRWxlbWVudCk7
CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIF9yZWZyZXNoUmVzb3VyY2VUeXBlOiBm
dW5jdGlvbigpCisgICAgX3JlZnJlc2hSZXNvdXJjZVR5cGUoKQogICAgIHsKICAgICAgICAgaWYg
KCF0aGlzLl9yZXNvdXJjZSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLl90
eXBlUmVzb3VyY2VUeXBlUm93LnZhbHVlID0gV2ViSW5zcGVjdG9yLlJlc291cmNlLmRpc3BsYXlO
YW1lRm9yVHlwZSh0aGlzLl9yZXNvdXJjZS50eXBlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9y
ZWZyZXNoTUlNRVR5cGU6IGZ1bmN0aW9uKCkKKyAgICBfcmVmcmVzaE1JTUVUeXBlKCkKICAgICB7
CiAgICAgICAgIGlmICghdGhpcy5fcmVzb3VyY2UpCiAgICAgICAgICAgICByZXR1cm47CiAKICAg
ICAgICAgdGhpcy5fdHlwZU1JTUVUeXBlUm93LnZhbHVlID0gdGhpcy5fcmVzb3VyY2UubWltZVR5
cGU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcmVmcmVzaFJlcXVlc3RBbmRSZXNwb25zZTogZnVu
Y3Rpb24oKQorICAgIF9yZWZyZXNoUmVxdWVzdEFuZFJlc3BvbnNlKCkKICAgICB7CiAgICAgICAg
IHZhciByZXNvdXJjZSA9IHRoaXMuX3Jlc291cmNlOwogICAgICAgICBpZiAoIXJlc291cmNlKQpA
QCAtMjY0LDcgKzI2MCw3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZURldGFpbHNTaWRlYmFyUGFu
ZWwucHJvdG90eXBlID0gewogCiAgICAgICAgIC8vIElmIHdlIGRvbid0IGhhdmUgYSB2YWx1ZSwg
d2Ugc2V0IGFuIGVtLWRhc2ggdG8ga2VlcCB0aGUgcm93IGZyb20gaGlkaW5nLgogICAgICAgICAv
LyBUaGlzIGtlZXBzIHRoZSBVSSBmcm9tIHNoaWZ0aW5nIGFyb3VuZCBhcyBkYXRhIGNvbWVzIGlu
LgotICAgICAgICBjb25zdCBlbURhc2ggPSAiXHUyMDE0IjsKKyAgICAgICAgdmFyIGVtRGFzaCA9
ICJcdTIwMTQiOwogCiAgICAgICAgIHRoaXMuX3JlcXVlc3RNZXRob2RSb3cudmFsdWUgPSByZXNv
dXJjZS5yZXF1ZXN0TWV0aG9kIHx8IGVtRGFzaDsKIApAQCAtMjc1LDIzICsyNzEsMjMgQEAgV2Vi
SW5zcGVjdG9yLlJlc291cmNlRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAg
ICAgICAgdGhpcy5fcmVmcmVzaFJlc3BvbnNlSGVhZGVycygpOwogICAgICAgICB0aGlzLl9yZWZy
ZXNoQ29tcHJlc3NlZCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX3ZhbHVlRm9yU2l6ZTogZnVu
Y3Rpb24oc2l6ZSkKKyAgICBfdmFsdWVGb3JTaXplKHNpemUpCiAgICAgewogICAgICAgICAvLyBJ
ZiB3ZSBkb24ndCBoYXZlIGEgdmFsdWUsIHdlIHNldCBhbiBlbS1kYXNoIHRvIGtlZXAgdGhlIHJv
dyBmcm9tIGhpZGluZy4KICAgICAgICAgLy8gVGhpcyBrZWVwcyB0aGUgVUkgZnJvbSBzaGlmdGlu
ZyBhcm91bmQgYXMgZGF0YSBjb21lcyBpbi4KLSAgICAgICAgY29uc3QgZW1EYXNoID0gIlx1MjAx
NCI7CisgICAgICAgIHZhciBlbURhc2ggPSAiXHUyMDE0IjsKICAgICAgICAgcmV0dXJuIHNpemUg
PiAwID8gTnVtYmVyLmJ5dGVzVG9TdHJpbmcoc2l6ZSkgOiBlbURhc2g7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfcmVmcmVzaENvbXByZXNzZWQ6IGZ1bmN0aW9uKCkKKyAgICBfcmVmcmVzaENvbXBy
ZXNzZWQoKQogICAgIHsKICAgICAgICAgdGhpcy5fY29tcHJlc3NlZFJvdy52YWx1ZSA9IHRoaXMu
X3Jlc291cmNlLmNvbXByZXNzZWQgPyBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlllcyIpIDogV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJObyIpOwogICAgICAgICB0aGlzLl9jb21wcmVzc2lvblJvdy52
YWx1ZSA9IHRoaXMuX3Jlc291cmNlLmNvbXByZXNzZWQgPyBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IiUuMmZcdTAwZDciKS5mb3JtYXQodGhpcy5fcmVzb3VyY2Uuc2l6ZSAvIHRoaXMuX3Jlc291cmNl
LmVuY29kZWRTaXplKSA6IG51bGw7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcmVmcmVzaERlY29k
ZWRTaXplOiBmdW5jdGlvbigpCisgICAgX3JlZnJlc2hEZWNvZGVkU2l6ZSgpCiAgICAgewogICAg
ICAgICBpZiAoIXRoaXMuX3Jlc291cmNlKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzAwLDkg
KzI5Niw5IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90
eXBlID0gewogICAgICAgICB0aGlzLl9kZWNvZGVkU2l6ZVJvdy52YWx1ZSA9IHRoaXMuX3ZhbHVl
Rm9yU2l6ZSh0aGlzLl9yZXNvdXJjZS5zaXplKTsKIAogICAgICAgICB0aGlzLl9yZWZyZXNoQ29t
cHJlc3NlZCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX3JlZnJlc2hUcmFuc2ZlclNpemU6IGZ1
bmN0aW9uKCkKKyAgICBfcmVmcmVzaFRyYW5zZmVyU2l6ZSgpCiAgICAgewogICAgICAgICBpZiAo
IXRoaXMuX3Jlc291cmNlKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzExLDI1ICszMDcsMjUg
QEAgV2ViSW5zcGVjdG9yLlJlc291cmNlRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7
CiAgICAgICAgIHRoaXMuX3RyYW5zZmVyU2l6ZVJvdy52YWx1ZSA9IHRoaXMuX3ZhbHVlRm9yU2l6
ZSh0aGlzLl9yZXNvdXJjZS50cmFuc2ZlclNpemUpOwogCiAgICAgICAgIHRoaXMuX3JlZnJlc2hD
b21wcmVzc2VkKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcmVmcmVzaFJlcXVlc3RIZWFkZXJz
OiBmdW5jdGlvbigpCisgICAgX3JlZnJlc2hSZXF1ZXN0SGVhZGVycygpCiAgICAgewogICAgICAg
ICBpZiAoIXRoaXMuX3Jlc291cmNlKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRo
aXMuX3JlcXVlc3RIZWFkZXJzUm93LmRhdGFHcmlkID0gdGhpcy5fY3JlYXRlTmFtZVZhbHVlRGF0
YUdyaWQodGhpcy5fcmVzb3VyY2UucmVxdWVzdEhlYWRlcnMpOwotICAgIH0sCisgICAgfQogCi0g
ICAgX3JlZnJlc2hSZXNwb25zZUhlYWRlcnM6IGZ1bmN0aW9uKCkKKyAgICBfcmVmcmVzaFJlc3Bv
bnNlSGVhZGVycygpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX3Jlc291cmNlKQogICAgICAg
ICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuX3Jlc3BvbnNlSGVhZGVyc1Jvdy5kYXRhR3Jp
ZCA9IHRoaXMuX2NyZWF0ZU5hbWVWYWx1ZURhdGFHcmlkKHRoaXMuX3Jlc291cmNlLnJlc3BvbnNl
SGVhZGVycyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY3JlYXRlTmFtZVZhbHVlRGF0YUdyaWQ6
IGZ1bmN0aW9uKGRhdGEpCisgICAgX2NyZWF0ZU5hbWVWYWx1ZURhdGFHcmlkKGRhdGEpCiAgICAg
ewogICAgICAgICBpZiAoIWRhdGEgfHwgZGF0YSBpbnN0YW5jZW9mIEFycmF5ID8gIWRhdGEubGVu
Z3RoIDogaXNFbXB0eU9iamVjdChkYXRhKSkKICAgICAgICAgICAgIHJldHVybiBudWxsOwpAQCAt
Mzc0LDkgKzM3MCw5IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZURldGFpbHNTaWRlYmFyUGFuZWwu
cHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIGRhdGFHcmlkOwotICAg
IH0sCisgICAgfQogCi0gICAgX3JlZnJlc2hJbWFnZVNpemVTZWN0aW9uOiBmdW5jdGlvbigpCisg
ICAgX3JlZnJlc2hJbWFnZVNpemVTZWN0aW9uKCkKICAgICB7CiAgICAgICAgIHZhciByZXNvdXJj
ZSA9IHRoaXMuX3Jlc291cmNlOwogCkBAIC0zOTksMTQgKzM5NSwxNCBAQCBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2VEZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRo
aXMuX2ltYWdlV2lkdGhSb3cudmFsdWUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIiVmcHgiKS5m
b3JtYXQoc2l6ZS53aWR0aCk7CiAgICAgICAgICAgICB0aGlzLl9pbWFnZUhlaWdodFJvdy52YWx1
ZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiJWZweCIpLmZvcm1hdChzaXplLmhlaWdodCk7CiAg
ICAgICAgIH0uYmluZCh0aGlzKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZ29Ub1JlcXVlc3RE
YXRhQ2xpY2tlZDogZnVuY3Rpb24oKQorICAgIF9nb1RvUmVxdWVzdERhdGFDbGlja2VkKCkKICAg
ICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5yZXNvdXJjZVNpZGViYXJQYW5lbC5zaG93UmVzb3Vy
Y2VSZXF1ZXN0KHRoaXMuX3Jlc291cmNlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9yZWZyZXNo
UmVxdWVzdERhdGFTZWN0aW9uOiBmdW5jdGlvbigpCisgICAgX3JlZnJlc2hSZXF1ZXN0RGF0YVNl
Y3Rpb24oKQogICAgIHsKICAgICAgICAgdmFyIHJlc291cmNlID0gdGhpcy5fcmVzb3VyY2U7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jl
c291cmNlU2lkZWJhclBhbmVsLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvUmVzb3VyY2VTaWRlYmFyUGFuZWwuanMKaW5kZXggMTM2NGE3NjMwZmZiM2JiMmJk
Mzc1N2I4OTU3MGYxNTVlOWEyMTRkNC4uOGEwYjkyYWY5OTYyNjQ4MDY1NDEwZjkxZGQ0MTlhZDI2
Y2UzMDY4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvUmVzb3VyY2VTaWRlYmFyUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VTaWRlYmFyUGFuZWwuanMKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDg2ICsyMyw4
NiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3Bl
Y3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbCA9IGZ1bmN0aW9uKCkgewotICAgIFdlYkluc3BlY3Rv
ci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmNhbGwodGhpcywgInJlc291cmNlIiwgV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJSZXNvdXJjZXMiKSwgIkltYWdlcy9OYXZpZ2F0aW9uSXRlbVN0b3JhZ2Uu
c3ZnIiwgIjEiLCB0cnVlLCBmYWxzZSwgdHJ1ZSk7Ci0KLSAgICB2YXIgc2VhcmNoRWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHNlYXJjaEVsZW1lbnQuY2xhc3NM
aXN0LmFkZCgic2VhcmNoLWJhciIpOwotICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChzZWFy
Y2hFbGVtZW50KTsKK1dlYkluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbCA9IGNsYXNzIFJl
c291cmNlU2lkZWJhclBhbmVsIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFy
UGFuZWwKK3sKKyAgICBjb25zdHJ1Y3RvcigpCisgICAgeworICAgICAgICBzdXBlcigicmVzb3Vy
Y2UiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlc291cmNlcyIpLCAiSW1hZ2VzL05hdmlnYXRp
b25JdGVtU3RvcmFnZS5zdmciLCAiMSIsIHRydWUsIGZhbHNlLCB0cnVlKTsKIAotICAgIHRoaXMu
X2lucHV0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7Ci0gICAgdGhp
cy5faW5wdXRFbGVtZW50LnR5cGUgPSAic2VhcmNoIjsKLSAgICB0aGlzLl9pbnB1dEVsZW1lbnQu
c3BlbGxjaGVjayA9IGZhbHNlOwotICAgIHRoaXMuX2lucHV0RWxlbWVudC5hZGRFdmVudExpc3Rl
bmVyKCJzZWFyY2giLCB0aGlzLl9zZWFyY2hGaWVsZENoYW5nZWQuYmluZCh0aGlzKSk7Ci0gICAg
dGhpcy5faW5wdXRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IiwgdGhpcy5fc2VhcmNo
RmllbGRJbnB1dC5iaW5kKHRoaXMpKTsKLSAgICB0aGlzLl9pbnB1dEVsZW1lbnQuc2V0QXR0cmli
dXRlKCJyZXN1bHRzIiwgNSk7Ci0gICAgdGhpcy5faW5wdXRFbGVtZW50LnNldEF0dHJpYnV0ZSgi
YXV0b3NhdmUiLCAiaW5zcGVjdG9yLXNlYXJjaCIpOwotICAgIHRoaXMuX2lucHV0RWxlbWVudC5z
ZXRBdHRyaWJ1dGUoInBsYWNlaG9sZGVyIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTZWFyY2gg
UmVzb3VyY2UgQ29udGVudCIpKTsKLSAgICBzZWFyY2hFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMu
X2lucHV0RWxlbWVudCk7CisgICAgICAgIHZhciBzZWFyY2hFbGVtZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHNlYXJjaEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgi
c2VhcmNoLWJhciIpOworICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoc2VhcmNoRWxl
bWVudCk7CiAKLSAgICB0aGlzLmZpbHRlckJhci5wbGFjZWhvbGRlciA9IFdlYkluc3BlY3Rvci5V
SVN0cmluZygiRmlsdGVyIFJlc291cmNlIExpc3QiKTsKKyAgICAgICAgdGhpcy5faW5wdXRFbGVt
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKKyAgICAgICAgdGhpcy5faW5w
dXRFbGVtZW50LnR5cGUgPSAic2VhcmNoIjsKKyAgICAgICAgdGhpcy5faW5wdXRFbGVtZW50LnNw
ZWxsY2hlY2sgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5faW5wdXRFbGVtZW50LmFkZEV2ZW50TGlz
dGVuZXIoInNlYXJjaCIsIHRoaXMuX3NlYXJjaEZpZWxkQ2hhbmdlZC5iaW5kKHRoaXMpKTsKKyAg
ICAgICAgdGhpcy5faW5wdXRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IiwgdGhpcy5f
c2VhcmNoRmllbGRJbnB1dC5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5faW5wdXRFbGVtZW50
LnNldEF0dHJpYnV0ZSgicmVzdWx0cyIsIDUpOworICAgICAgICB0aGlzLl9pbnB1dEVsZW1lbnQu
c2V0QXR0cmlidXRlKCJhdXRvc2F2ZSIsICJpbnNwZWN0b3Itc2VhcmNoIik7CisgICAgICAgIHRo
aXMuX2lucHV0RWxlbWVudC5zZXRBdHRyaWJ1dGUoInBsYWNlaG9sZGVyIiwgV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJTZWFyY2ggUmVzb3VyY2UgQ29udGVudCIpKTsKKyAgICAgICAgc2VhcmNoRWxl
bWVudC5hcHBlbmRDaGlsZCh0aGlzLl9pbnB1dEVsZW1lbnQpOwogCi0gICAgdGhpcy5fd2FpdGlu
Z0ZvckluaXRpYWxNYWluRnJhbWUgPSB0cnVlOwotICAgIHRoaXMuX2xhc3RTZWFyY2hlZFBhZ2VT
ZXR0aW5nID0gbmV3IFdlYkluc3BlY3Rvci5TZXR0aW5nKCJsYXN0LXNlYXJjaGVkLXBhZ2UiLCBu
dWxsKTsKKyAgICAgICAgdGhpcy5maWx0ZXJCYXIucGxhY2Vob2xkZXIgPSBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIkZpbHRlciBSZXNvdXJjZSBMaXN0Iik7CiAKLSAgICB0aGlzLl9zZWFyY2hRdWVy
eVNldHRpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLlNldHRpbmcoInNlYXJjaC1zaWRlYmFyLXF1ZXJ5
IiwgIiIpOwotICAgIHRoaXMuX2lucHV0RWxlbWVudC52YWx1ZSA9IHRoaXMuX3NlYXJjaFF1ZXJ5
U2V0dGluZy52YWx1ZTsKKyAgICAgICAgdGhpcy5fd2FpdGluZ0ZvckluaXRpYWxNYWluRnJhbWUg
PSB0cnVlOworICAgICAgICB0aGlzLl9sYXN0U2VhcmNoZWRQYWdlU2V0dGluZyA9IG5ldyBXZWJJ
bnNwZWN0b3IuU2V0dGluZygibGFzdC1zZWFyY2hlZC1wYWdlIiwgbnVsbCk7CiAKLSAgICB0aGlz
Ll9zZWFyY2hLZXlib2FyZFNob3J0Y3V0ID0gbmV3IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0
Y3V0KFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbW1hbmRPckNvbnRy
b2wgfCBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5TaGlmdCwgIkYiLCB0
aGlzLl9mb2N1c1NlYXJjaEZpZWxkLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLl9zZWFyY2hR
dWVyeVNldHRpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLlNldHRpbmcoInNlYXJjaC1zaWRlYmFyLXF1
ZXJ5IiwgIiIpOworICAgICAgICB0aGlzLl9pbnB1dEVsZW1lbnQudmFsdWUgPSB0aGlzLl9zZWFy
Y2hRdWVyeVNldHRpbmcudmFsdWU7CiAKLSAgICB0aGlzLl9sb2NhbFN0b3JhZ2VSb290VHJlZUVs
ZW1lbnQgPSBudWxsOwotICAgIHRoaXMuX3Nlc3Npb25TdG9yYWdlUm9vdFRyZWVFbGVtZW50ID0g
bnVsbDsKKyAgICAgICAgdGhpcy5fc2VhcmNoS2V5Ym9hcmRTaG9ydGN1dCA9IG5ldyBXZWJJbnNw
ZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dChXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2Rp
Zmllci5Db21tYW5kT3JDb250cm9sIHwgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9k
aWZpZXIuU2hpZnQsICJGIiwgdGhpcy5fZm9jdXNTZWFyY2hGaWVsZC5iaW5kKHRoaXMpKTsKIAot
ICAgIHRoaXMuX2RhdGFiYXNlUm9vdFRyZWVFbGVtZW50ID0gbnVsbDsKLSAgICB0aGlzLl9kYXRh
YmFzZUhvc3RUcmVlRWxlbWVudE1hcCA9IHt9OworICAgICAgICB0aGlzLl9sb2NhbFN0b3JhZ2VS
b290VHJlZUVsZW1lbnQgPSBudWxsOworICAgICAgICB0aGlzLl9zZXNzaW9uU3RvcmFnZVJvb3RU
cmVlRWxlbWVudCA9IG51bGw7CiAKLSAgICB0aGlzLl9pbmRleGVkRGF0YWJhc2VSb290VHJlZUVs
ZW1lbnQgPSBudWxsOwotICAgIHRoaXMuX2luZGV4ZWREYXRhYmFzZUhvc3RUcmVlRWxlbWVudE1h
cCA9IHt9OworICAgICAgICB0aGlzLl9kYXRhYmFzZVJvb3RUcmVlRWxlbWVudCA9IG51bGw7Cisg
ICAgICAgIHRoaXMuX2RhdGFiYXNlSG9zdFRyZWVFbGVtZW50TWFwID0ge307CiAKLSAgICB0aGlz
Ll9jb29raWVTdG9yYWdlUm9vdFRyZWVFbGVtZW50ID0gbnVsbDsKKyAgICAgICAgdGhpcy5faW5k
ZXhlZERhdGFiYXNlUm9vdFRyZWVFbGVtZW50ID0gbnVsbDsKKyAgICAgICAgdGhpcy5faW5kZXhl
ZERhdGFiYXNlSG9zdFRyZWVFbGVtZW50TWFwID0ge307CiAKLSAgICB0aGlzLl9hcHBsaWNhdGlv
bkNhY2hlUm9vdFRyZWVFbGVtZW50ID0gbnVsbDsKLSAgICB0aGlzLl9hcHBsaWNhdGlvbkNhY2hl
VVJMVHJlZUVsZW1lbnRNYXAgPSB7fTsKKyAgICAgICAgdGhpcy5fY29va2llU3RvcmFnZVJvb3RU
cmVlRWxlbWVudCA9IG51bGw7CiAKLSAgICBXZWJJbnNwZWN0b3Iuc3RvcmFnZU1hbmFnZXIuYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU3RvcmFnZU1hbmFnZXIuRXZlbnQuQ29va2llU3Rv
cmFnZU9iamVjdFdhc0FkZGVkLCB0aGlzLl9jb29raWVTdG9yYWdlT2JqZWN0V2FzQWRkZWQsIHRo
aXMpOwotICAgIFdlYkluc3BlY3Rvci5zdG9yYWdlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5TdG9yYWdlTWFuYWdlci5FdmVudC5ET01TdG9yYWdlT2JqZWN0V2FzQWRkZWQs
IHRoaXMuX2RvbVN0b3JhZ2VPYmplY3RXYXNBZGRlZCwgdGhpcyk7Ci0gICAgV2ViSW5zcGVjdG9y
LnN0b3JhZ2VNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlN0b3JhZ2VNYW5h
Z2VyLkV2ZW50LkRPTVN0b3JhZ2VPYmplY3RXYXNJbnNwZWN0ZWQsIHRoaXMuX2RvbVN0b3JhZ2VP
YmplY3RXYXNJbnNwZWN0ZWQsIHRoaXMpOwotICAgIFdlYkluc3BlY3Rvci5zdG9yYWdlTWFuYWdl
ci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5TdG9yYWdlTWFuYWdlci5FdmVudC5EYXRh
YmFzZVdhc0FkZGVkLCB0aGlzLl9kYXRhYmFzZVdhc0FkZGVkLCB0aGlzKTsKLSAgICBXZWJJbnNw
ZWN0b3Iuc3RvcmFnZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU3RvcmFn
ZU1hbmFnZXIuRXZlbnQuRGF0YWJhc2VXYXNJbnNwZWN0ZWQsIHRoaXMuX2RhdGFiYXNlV2FzSW5z
cGVjdGVkLCB0aGlzKTsKLSAgICBXZWJJbnNwZWN0b3Iuc3RvcmFnZU1hbmFnZXIuYWRkRXZlbnRM
aXN0ZW5lcihXZWJJbnNwZWN0b3IuU3RvcmFnZU1hbmFnZXIuRXZlbnQuSW5kZXhlZERhdGFiYXNl
V2FzQWRkZWQsIHRoaXMuX2luZGV4ZWREYXRhYmFzZVdhc0FkZGVkLCB0aGlzKTsKLSAgICBXZWJJ
bnNwZWN0b3Iuc3RvcmFnZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU3Rv
cmFnZU1hbmFnZXIuRXZlbnQuQ2xlYXJlZCwgdGhpcy5fc3RvcmFnZUNsZWFyZWQsIHRoaXMpOwor
ICAgICAgICB0aGlzLl9hcHBsaWNhdGlvbkNhY2hlUm9vdFRyZWVFbGVtZW50ID0gbnVsbDsKKyAg
ICAgICAgdGhpcy5fYXBwbGljYXRpb25DYWNoZVVSTFRyZWVFbGVtZW50TWFwID0ge307CiAKLSAg
ICBXZWJJbnNwZWN0b3IuYXBwbGljYXRpb25DYWNoZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuRXZlbnQuRnJhbWVNYW5pZmVzdEFk
ZGVkLCB0aGlzLl9mcmFtZU1hbmlmZXN0QWRkZWQsIHRoaXMpOwotICAgIFdlYkluc3BlY3Rvci5h
cHBsaWNhdGlvbkNhY2hlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5BcHBs
aWNhdGlvbkNhY2hlTWFuYWdlci5FdmVudC5GcmFtZU1hbmlmZXN0UmVtb3ZlZCwgdGhpcy5fZnJh
bWVNYW5pZmVzdFJlbW92ZWQsIHRoaXMpOworICAgICAgICBXZWJJbnNwZWN0b3Iuc3RvcmFnZU1h
bmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU3RvcmFnZU1hbmFnZXIuRXZlbnQu
Q29va2llU3RvcmFnZU9iamVjdFdhc0FkZGVkLCB0aGlzLl9jb29raWVTdG9yYWdlT2JqZWN0V2Fz
QWRkZWQsIHRoaXMpOworICAgICAgICBXZWJJbnNwZWN0b3Iuc3RvcmFnZU1hbmFnZXIuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU3RvcmFnZU1hbmFnZXIuRXZlbnQuRE9NU3RvcmFnZU9i
amVjdFdhc0FkZGVkLCB0aGlzLl9kb21TdG9yYWdlT2JqZWN0V2FzQWRkZWQsIHRoaXMpOworICAg
ICAgICBXZWJJbnNwZWN0b3Iuc3RvcmFnZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuU3RvcmFnZU1hbmFnZXIuRXZlbnQuRE9NU3RvcmFnZU9iamVjdFdhc0luc3BlY3RlZCwg
dGhpcy5fZG9tU3RvcmFnZU9iamVjdFdhc0luc3BlY3RlZCwgdGhpcyk7CisgICAgICAgIFdlYklu
c3BlY3Rvci5zdG9yYWdlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5TdG9y
YWdlTWFuYWdlci5FdmVudC5EYXRhYmFzZVdhc0FkZGVkLCB0aGlzLl9kYXRhYmFzZVdhc0FkZGVk
LCB0aGlzKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnN0b3JhZ2VNYW5hZ2VyLmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLlN0b3JhZ2VNYW5hZ2VyLkV2ZW50LkRhdGFiYXNlV2FzSW5zcGVj
dGVkLCB0aGlzLl9kYXRhYmFzZVdhc0luc3BlY3RlZCwgdGhpcyk7CisgICAgICAgIFdlYkluc3Bl
Y3Rvci5zdG9yYWdlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5TdG9yYWdl
TWFuYWdlci5FdmVudC5JbmRleGVkRGF0YWJhc2VXYXNBZGRlZCwgdGhpcy5faW5kZXhlZERhdGFi
YXNlV2FzQWRkZWQsIHRoaXMpOworICAgICAgICBXZWJJbnNwZWN0b3Iuc3RvcmFnZU1hbmFnZXIu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU3RvcmFnZU1hbmFnZXIuRXZlbnQuQ2xlYXJl
ZCwgdGhpcy5fc3RvcmFnZUNsZWFyZWQsIHRoaXMpOwogCi0gICAgV2ViSW5zcGVjdG9yLmZyYW1l
UmVzb3VyY2VNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZyYW1lUmVzb3Vy
Y2VNYW5hZ2VyLkV2ZW50Lk1haW5GcmFtZURpZENoYW5nZSwgdGhpcy5fbWFpbkZyYW1lRGlkQ2hh
bmdlLCB0aGlzKTsKLSAgICBXZWJJbnNwZWN0b3IuZnJhbWVSZXNvdXJjZU1hbmFnZXIuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWVSZXNvdXJjZU1hbmFnZXIuRXZlbnQuRnJhbWVX
YXNBZGRlZCwgdGhpcy5fZnJhbWVXYXNBZGRlZCwgdGhpcyk7CisgICAgICAgIFdlYkluc3BlY3Rv
ci5hcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5B
cHBsaWNhdGlvbkNhY2hlTWFuYWdlci5FdmVudC5GcmFtZU1hbmlmZXN0QWRkZWQsIHRoaXMuX2Zy
YW1lTWFuaWZlc3RBZGRlZCwgdGhpcyk7CisgICAgICAgIFdlYkluc3BlY3Rvci5hcHBsaWNhdGlv
bkNhY2hlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNh
Y2hlTWFuYWdlci5FdmVudC5GcmFtZU1hbmlmZXN0UmVtb3ZlZCwgdGhpcy5fZnJhbWVNYW5pZmVz
dFJlbW92ZWQsIHRoaXMpOwogCi0gICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLkV2ZW50LkRPTU5vZGVXYXNJ
bnNwZWN0ZWQsIHRoaXMuX2RvbU5vZGVXYXNJbnNwZWN0ZWQsIHRoaXMpOworICAgICAgICBXZWJJ
bnNwZWN0b3IuZnJhbWVSZXNvdXJjZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuRnJhbWVSZXNvdXJjZU1hbmFnZXIuRXZlbnQuTWFpbkZyYW1lRGlkQ2hhbmdlLCB0aGlzLl9t
YWluRnJhbWVEaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICBXZWJJbnNwZWN0b3IuZnJhbWVSZXNv
dXJjZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWVSZXNvdXJjZU1h
bmFnZXIuRXZlbnQuRnJhbWVXYXNBZGRlZCwgdGhpcy5fZnJhbWVXYXNBZGRlZCwgdGhpcyk7CiAK
LSAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5TY3JpcHRBZGRlZCwgdGhpcy5fc2NyaXB0V2Fz
QWRkZWQsIHRoaXMpOwotICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRM
aXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlNjcmlwdHNDbGVhcmVk
LCB0aGlzLl9zY3JpcHRzQ2xlYXJlZCwgdGhpcyk7CisgICAgICAgIFdlYkluc3BlY3Rvci5kb21U
cmVlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdlci5F
dmVudC5ET01Ob2RlV2FzSW5zcGVjdGVkLCB0aGlzLl9kb21Ob2RlV2FzSW5zcGVjdGVkLCB0aGlz
KTsKIAotICAgIFdlYkluc3BlY3Rvci5ub3RpZmljYXRpb25zLmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLk5vdGlmaWNhdGlvbi5FeHRyYURvbWFpbnNBY3RpdmF0ZWQsIHRoaXMuX2V4dHJh
RG9tYWluc0FjdGl2YXRlZCwgdGhpcyk7CisgICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1h
bmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyLkV2ZW50
LlNjcmlwdEFkZGVkLCB0aGlzLl9zY3JpcHRXYXNBZGRlZCwgdGhpcyk7CisgICAgICAgIFdlYklu
c3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVi
dWdnZXJNYW5hZ2VyLkV2ZW50LlNjcmlwdHNDbGVhcmVkLCB0aGlzLl9zY3JpcHRzQ2xlYXJlZCwg
dGhpcyk7CiAKLSAgICB0aGlzLl9yZXNvdXJjZXNDb250ZW50VHJlZU91dGxpbmUgPSB0aGlzLmNv
bnRlbnRUcmVlT3V0bGluZTsKLSAgICB0aGlzLl9zZWFyY2hDb250ZW50VHJlZU91dGxpbmUgPSB0
aGlzLmNyZWF0ZUNvbnRlbnRUcmVlT3V0bGluZSgpOworICAgICAgICBXZWJJbnNwZWN0b3Iubm90
aWZpY2F0aW9ucy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Ob3RpZmljYXRpb24uRXh0
cmFEb21haW5zQWN0aXZhdGVkLCB0aGlzLl9leHRyYURvbWFpbnNBY3RpdmF0ZWQsIHRoaXMpOwog
Ci0gICAgdGhpcy5fcmVzb3VyY2VzQ29udGVudFRyZWVPdXRsaW5lLm9uc2VsZWN0ID0gdGhpcy5f
dHJlZUVsZW1lbnRTZWxlY3RlZC5iaW5kKHRoaXMpOwotICAgIHRoaXMuX3NlYXJjaENvbnRlbnRU
cmVlT3V0bGluZS5vbnNlbGVjdCA9IHRoaXMuX3RyZWVFbGVtZW50U2VsZWN0ZWQuYmluZCh0aGlz
KTsKKyAgICAgICAgdGhpcy5fcmVzb3VyY2VzQ29udGVudFRyZWVPdXRsaW5lID0gdGhpcy5jb250
ZW50VHJlZU91dGxpbmU7CisgICAgICAgIHRoaXMuX3NlYXJjaENvbnRlbnRUcmVlT3V0bGluZSA9
IHRoaXMuY3JlYXRlQ29udGVudFRyZWVPdXRsaW5lKCk7CiAKLSAgICB0aGlzLl9yZXNvdXJjZXND
b250ZW50VHJlZU91dGxpbmUuaW5jbHVkZVNvdXJjZU1hcFJlc291cmNlQ2hpbGRyZW4gPSB0cnVl
OworICAgICAgICB0aGlzLl9yZXNvdXJjZXNDb250ZW50VHJlZU91dGxpbmUub25zZWxlY3QgPSB0
aGlzLl90cmVlRWxlbWVudFNlbGVjdGVkLmJpbmQodGhpcyk7CisgICAgICAgIHRoaXMuX3NlYXJj
aENvbnRlbnRUcmVlT3V0bGluZS5vbnNlbGVjdCA9IHRoaXMuX3RyZWVFbGVtZW50U2VsZWN0ZWQu
YmluZCh0aGlzKTsKIAotICAgIGlmIChXZWJJbnNwZWN0b3IuZGVidWdnYWJsZVR5cGUgPT09IFdl
Ykluc3BlY3Rvci5EZWJ1Z2dhYmxlVHlwZS5KYXZhU2NyaXB0KQotICAgICAgICB0aGlzLl9yZXNv
dXJjZXNDb250ZW50VHJlZU91dGxpbmUuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rv
ci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLkhpZGVEaXNjbG9zdXJlQnV0dG9uc1N0eWxlQ2xhc3NO
YW1lKTsKLX07CisgICAgICAgIHRoaXMuX3Jlc291cmNlc0NvbnRlbnRUcmVlT3V0bGluZS5pbmNs
dWRlU291cmNlTWFwUmVzb3VyY2VDaGlsZHJlbiA9IHRydWU7CiAKLVdlYkluc3BlY3Rvci5SZXNv
dXJjZVNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbCwKKyAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5kZWJ1
Z2dhYmxlVHlwZSA9PT0gV2ViSW5zcGVjdG9yLkRlYnVnZ2FibGVUeXBlLkphdmFTY3JpcHQpCisg
ICAgICAgICAgICB0aGlzLl9yZXNvdXJjZXNDb250ZW50VHJlZU91dGxpbmUuZWxlbWVudC5jbGFz
c0xpc3QuYWRkKFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLkhpZGVEaXNjbG9z
dXJlQnV0dG9uc1N0eWxlQ2xhc3NOYW1lKTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAotICAg
IHNob3dEZWZhdWx0Q29udGVudFZpZXc6IGZ1bmN0aW9uKCkKKyAgICBzaG93RGVmYXVsdENvbnRl
bnRWaWV3KCkKICAgICB7CiAgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuZnJhbWVSZXNvdXJjZU1h
bmFnZXIubWFpbkZyYW1lKSB7CiAgICAgICAgICAgICB0aGlzLnNob3dNYWluRnJhbWUoKTsKQEAg
LTExMiw0MSArMTEyLDQxIEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbC5wcm90
b3R5cGUgPSB7CiAgICAgICAgIHZhciBmaXJzdFRyZWVFbGVtZW50ID0gdGhpcy5fcmVzb3VyY2Vz
Q29udGVudFRyZWVPdXRsaW5lLmNoaWxkcmVuWzBdOwogICAgICAgICBpZiAoZmlyc3RUcmVlRWxl
bWVudCkKICAgICAgICAgICAgIGZpcnN0VHJlZUVsZW1lbnQucmV2ZWFsQW5kU2VsZWN0KCk7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBnZXQgY29udGVudFRyZWVPdXRsaW5lVG9BdXRvUHJ1bmUoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3NlYXJjaENvbnRlbnRUcmVlT3V0bGluZTsKLSAg
ICB9LAorICAgIH0KIAotICAgIHNob3dNYWluRnJhbWU6IGZ1bmN0aW9uKG5vZGVUb1NlbGVjdCwg
cHJldmVudEZvY3VzQ2hhbmdlKQorICAgIHNob3dNYWluRnJhbWUobm9kZVRvU2VsZWN0LCBwcmV2
ZW50Rm9jdXNDaGFuZ2UpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuY29udGVudEJyb3dz
ZXIuc2hvd0NvbnRlbnRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QoV2ViSW5zcGVjdG9yLmZyYW1l
UmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93TWFp
bkZyYW1lRE9NVHJlZTogZnVuY3Rpb24obm9kZVRvU2VsZWN0LCBwcmV2ZW50Rm9jdXNDaGFuZ2Up
CisgICAgc2hvd01haW5GcmFtZURPTVRyZWUobm9kZVRvU2VsZWN0LCBwcmV2ZW50Rm9jdXNDaGFu
Z2UpCiAgICAgewogICAgICAgICB2YXIgY29udGVudFZpZXcgPSBXZWJJbnNwZWN0b3IuY29udGVu
dEJyb3dzZXIuY29udGVudFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdChXZWJJbnNwZWN0b3IuZnJh
bWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lKTsKICAgICAgICAgY29udGVudFZpZXcuc2hvd0RP
TVRyZWUobm9kZVRvU2VsZWN0LCBwcmV2ZW50Rm9jdXNDaGFuZ2UpOwogICAgICAgICBXZWJJbnNw
ZWN0b3IuY29udGVudEJyb3dzZXIuc2hvd0NvbnRlbnRWaWV3KGNvbnRlbnRWaWV3KTsKLSAgICB9
LAorICAgIH0KIAotICAgIHNob3dNYWluRnJhbWVTb3VyY2VDb2RlOiBmdW5jdGlvbigpCisgICAg
c2hvd01haW5GcmFtZVNvdXJjZUNvZGUoKQogICAgIHsKICAgICAgICAgdmFyIGNvbnRlbnRWaWV3
ID0gV2ViSW5zcGVjdG9yLmNvbnRlbnRCcm93c2VyLmNvbnRlbnRWaWV3Rm9yUmVwcmVzZW50ZWRP
YmplY3QoV2ViSW5zcGVjdG9yLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZSk7CiAgICAg
ICAgIGNvbnRlbnRWaWV3LnNob3dTb3VyY2VDb2RlKCk7CiAgICAgICAgIFdlYkluc3BlY3Rvci5j
b250ZW50QnJvd3Nlci5zaG93Q29udGVudFZpZXcoY29udGVudFZpZXcpOwotICAgIH0sCisgICAg
fQogCi0gICAgc2hvd0NvbnRlbnRGbG93RE9NVHJlZTogZnVuY3Rpb24oY29udGVudEZsb3csIG5v
ZGVUb1NlbGVjdCwgcHJldmVudEZvY3VzQ2hhbmdlKQorICAgIHNob3dDb250ZW50Rmxvd0RPTVRy
ZWUoY29udGVudEZsb3csIG5vZGVUb1NlbGVjdCwgcHJldmVudEZvY3VzQ2hhbmdlKQogICAgIHsK
ICAgICAgICAgdmFyIGNvbnRlbnRWaWV3ID0gV2ViSW5zcGVjdG9yLmNvbnRlbnRCcm93c2VyLmNv
bnRlbnRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QoY29udGVudEZsb3cpOwogICAgICAgICBpZiAo
bm9kZVRvU2VsZWN0KQogICAgICAgICAgICAgY29udGVudFZpZXcuc2VsZWN0QW5kUmV2ZWFsRE9N
Tm9kZShub2RlVG9TZWxlY3QsIHByZXZlbnRGb2N1c0NoYW5nZSk7CiAgICAgICAgIFdlYkluc3Bl
Y3Rvci5jb250ZW50QnJvd3Nlci5zaG93Q29udGVudFZpZXcoY29udGVudFZpZXcpOwotICAgIH0s
CisgICAgfQogCi0gICAgc2hvd1NvdXJjZUNvZGVGb3JGcmFtZTogZnVuY3Rpb24oZnJhbWVJZGVu
dGlmaWVyLCByZXZlYWxBbmRTZWxlY3RUcmVlRWxlbWVudCkKKyAgICBzaG93U291cmNlQ29kZUZv
ckZyYW1lKGZyYW1lSWRlbnRpZmllciwgcmV2ZWFsQW5kU2VsZWN0VHJlZUVsZW1lbnQpCiAgICAg
ewogICAgICAgICBkZWxldGUgdGhpcy5fZnJhbWVJZGVudGlmaWVyVG9TaG93U291cmNlQ29kZVdo
ZW5BdmFpbGFibGU7CiAKQEAgLTE2OCw5ICsxNjgsOSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VT
aWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgICAgIGlmIChyZXZlYWxBbmRTZWxlY3RU
cmVlRWxlbWVudCkKICAgICAgICAgICAgIHRoaXMudHJlZUVsZW1lbnRGb3JSZXByZXNlbnRlZE9i
amVjdChmcmFtZSkucmV2ZWFsQW5kU2VsZWN0KHRydWUsIHRydWUsIHRydWUsIHRydWUpOwotICAg
IH0sCisgICAgfQogCi0gICAgc2hvd1NvdXJjZUNvZGU6IGZ1bmN0aW9uKHNvdXJjZUNvZGUsIHBv
c2l0aW9uVG9SZXZlYWwsIHRleHRSYW5nZVRvU2VsZWN0LCBmb3JjZVVuZm9ybWF0dGVkKQorICAg
IHNob3dTb3VyY2VDb2RlKHNvdXJjZUNvZGUsIHBvc2l0aW9uVG9SZXZlYWwsIHRleHRSYW5nZVRv
U2VsZWN0LCBmb3JjZVVuZm9ybWF0dGVkKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQo
IXBvc2l0aW9uVG9SZXZlYWwgfHwgcG9zaXRpb25Ub1JldmVhbCBpbnN0YW5jZW9mIFdlYkluc3Bl
Y3Rvci5Tb3VyY2VDb2RlUG9zaXRpb24sIHBvc2l0aW9uVG9SZXZlYWwpOwogICAgICAgICB2YXIg
cmVwcmVzZW50ZWRPYmplY3QgPSBzb3VyY2VDb2RlOwpAQCAtMTg2LDQxICsxODYsNDEgQEAgV2Vi
SW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB2
YXIgY29va2llID0gcG9zaXRpb25Ub1JldmVhbCA/IHtsaW5lTnVtYmVyOiBwb3NpdGlvblRvUmV2
ZWFsLmxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcjogcG9zaXRpb25Ub1JldmVhbC5jb2x1bW5OdW1i
ZXJ9IDoge307CiAgICAgICAgIFdlYkluc3BlY3Rvci5jb250ZW50QnJvd3Nlci5zaG93Q29udGVu
dFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdChyZXByZXNlbnRlZE9iamVjdCwgY29va2llKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIHNob3dTb3VyY2VDb2RlTG9jYXRpb246IGZ1bmN0aW9uKHNvdXJj
ZUNvZGVMb2NhdGlvbikKKyAgICBzaG93U291cmNlQ29kZUxvY2F0aW9uKHNvdXJjZUNvZGVMb2Nh
dGlvbikKICAgICB7CiAgICAgICAgIHRoaXMuc2hvd1NvdXJjZUNvZGUoc291cmNlQ29kZUxvY2F0
aW9uLmRpc3BsYXlTb3VyY2VDb2RlLCBzb3VyY2VDb2RlTG9jYXRpb24uZGlzcGxheVBvc2l0aW9u
KCkpOwotICAgIH0sCisgICAgfQogCi0gICAgc2hvd09yaWdpbmFsVW5mb3JtYXR0ZWRTb3VyY2VD
b2RlTG9jYXRpb246IGZ1bmN0aW9uKHNvdXJjZUNvZGVMb2NhdGlvbikKKyAgICBzaG93T3JpZ2lu
YWxVbmZvcm1hdHRlZFNvdXJjZUNvZGVMb2NhdGlvbihzb3VyY2VDb2RlTG9jYXRpb24pCiAgICAg
ewogICAgICAgICB0aGlzLnNob3dTb3VyY2VDb2RlKHNvdXJjZUNvZGVMb2NhdGlvbi5zb3VyY2VD
b2RlLCBzb3VyY2VDb2RlTG9jYXRpb24ucG9zaXRpb24oKSwgdW5kZWZpbmVkLCB0cnVlKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIHNob3dPcmlnaW5hbE9yRm9ybWF0dGVkU291cmNlQ29kZUxvY2F0
aW9uOiBmdW5jdGlvbihzb3VyY2VDb2RlTG9jYXRpb24pCisgICAgc2hvd09yaWdpbmFsT3JGb3Jt
YXR0ZWRTb3VyY2VDb2RlTG9jYXRpb24oc291cmNlQ29kZUxvY2F0aW9uKQogICAgIHsKICAgICAg
ICAgdGhpcy5zaG93U291cmNlQ29kZShzb3VyY2VDb2RlTG9jYXRpb24uc291cmNlQ29kZSwgc291
cmNlQ29kZUxvY2F0aW9uLmZvcm1hdHRlZFBvc2l0aW9uKCkpOwotICAgIH0sCisgICAgfQogCi0g
ICAgc2hvd1NvdXJjZUNvZGVUZXh0UmFuZ2U6IGZ1bmN0aW9uKHNvdXJjZUNvZGVUZXh0UmFuZ2Up
CisgICAgc2hvd1NvdXJjZUNvZGVUZXh0UmFuZ2Uoc291cmNlQ29kZVRleHRSYW5nZSkKICAgICB7
CiAgICAgICAgIHZhciB0ZXh0UmFuZ2VUb1NlbGVjdCA9IHNvdXJjZUNvZGVUZXh0UmFuZ2UuZGlz
cGxheVRleHRSYW5nZTsKICAgICAgICAgdGhpcy5zaG93U291cmNlQ29kZShzb3VyY2VDb2RlVGV4
dFJhbmdlLmRpc3BsYXlTb3VyY2VDb2RlLCB0ZXh0UmFuZ2VUb1NlbGVjdC5zdGFydFBvc2l0aW9u
KCksIHRleHRSYW5nZVRvU2VsZWN0KTsKLSAgICB9LAorICAgIH0KIAotICAgIHNob3dPcmlnaW5h
bE9yRm9ybWF0dGVkU291cmNlQ29kZVRleHRSYW5nZTogZnVuY3Rpb24oc291cmNlQ29kZVRleHRS
YW5nZSkKKyAgICBzaG93T3JpZ2luYWxPckZvcm1hdHRlZFNvdXJjZUNvZGVUZXh0UmFuZ2Uoc291
cmNlQ29kZVRleHRSYW5nZSkKICAgICB7CiAgICAgICAgIHZhciB0ZXh0UmFuZ2VUb1NlbGVjdCA9
IHNvdXJjZUNvZGVUZXh0UmFuZ2UuZm9ybWF0dGVkVGV4dFJhbmdlOwogICAgICAgICB0aGlzLnNo
b3dTb3VyY2VDb2RlKHNvdXJjZUNvZGVUZXh0UmFuZ2Uuc291cmNlQ29kZSwgdGV4dFJhbmdlVG9T
ZWxlY3Quc3RhcnRQb3NpdGlvbigpLCB0ZXh0UmFuZ2VUb1NlbGVjdCk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBzaG93UmVzb3VyY2U6IGZ1bmN0aW9uKHJlc291cmNlKQorICAgIHNob3dSZXNvdXJj
ZShyZXNvdXJjZSkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5jb250ZW50QnJvd3Nlci5z
aG93Q29udGVudFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdChyZXNvdXJjZS5pc01haW5SZXNvdXJj
ZSgpID8gcmVzb3VyY2UucGFyZW50RnJhbWUgOiByZXNvdXJjZSk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBzaG93UmVzb3VyY2VSZXF1ZXN0OiBmdW5jdGlvbihyZXNvdXJjZSkKKyAgICBzaG93UmVz
b3VyY2VSZXF1ZXN0KHJlc291cmNlKQogICAgIHsKICAgICAgICAgdmFyIGNvbnRlbnRWaWV3ID0g
V2ViSW5zcGVjdG9yLmNvbnRlbnRCcm93c2VyLmNvbnRlbnRWaWV3Rm9yUmVwcmVzZW50ZWRPYmpl
Y3QocmVzb3VyY2UuaXNNYWluUmVzb3VyY2UoKSA/IHJlc291cmNlLnBhcmVudEZyYW1lIDogcmVz
b3VyY2UpOwogCkBAIC0yMzYsOSArMjM2LDkgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJh
clBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmVzb3VyY2VDb250ZW50Vmlldy5zaG93UmVx
dWVzdCgpOwogCiAgICAgICAgIFdlYkluc3BlY3Rvci5jb250ZW50QnJvd3Nlci5zaG93Q29udGVu
dFZpZXcoY29udGVudFZpZXcpOwotICAgIH0sCisgICAgfQogCi0gICAgdHJlZUVsZW1lbnRGb3JS
ZXByZXNlbnRlZE9iamVjdDogZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCisgICAgdHJlZUVs
ZW1lbnRGb3JSZXByZXNlbnRlZE9iamVjdChyZXByZXNlbnRlZE9iamVjdCkKICAgICB7CiAgICAg
ICAgIC8vIEEgY3VzdG9tIGltcGxlbWVudGF0aW9uIGlzIG5lZWRlZCBmb3IgdGhpcyBzaW5jZSB0
aGUgZnJhbWVzIGFyZSBwb3B1bGF0ZWQgbGF6aWx5LgogCkBAIC0zMDUsOSArMzA1LDkgQEAgV2Vi
SW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhp
cy5fYW5vbnltb3VzU2NyaXB0c0ZvbGRlclRyZWVFbGVtZW50LmFwcGVuZENoaWxkKHNjcmlwdFRy
ZWVFbGVtZW50KTsKIAogICAgICAgICByZXR1cm4gc2NyaXB0VHJlZUVsZW1lbnQ7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBwZXJmb3JtU2VhcmNoOiBmdW5jdGlvbihzZWFyY2hUZXJtKQorICAgIHBl
cmZvcm1TZWFyY2goc2VhcmNoVGVybSkKICAgICB7CiAgICAgICAgIC8vIEJlZm9yZSBwZXJmb3Jt
aW5nIGEgbmV3IHNlYXJjaCwgY2xlYXIgdGhlIG9sZCBzZWFyY2guCiAgICAgICAgIHRoaXMuX3Nl
YXJjaENvbnRlbnRUcmVlT3V0bGluZS5yZW1vdmVDaGlsZHJlbigpOwpAQCAtNTE1LDM1ICs1MTUs
MzUgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgLy8gPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzEzMTI1Mj4gV2ViIEluc3BlY3RvcjogSlND
b250ZXh0IGluc3BlY3Rpb24gUmVzb3VyY2Ugc2VhcmNoIGRvZXMgbm90IHdvcmsKICAgICAgICAg
aWYgKCF3aW5kb3cuRE9NQWdlbnQgJiYgIXdpbmRvdy5QYWdlQWdlbnQpCiAgICAgICAgICAgICB1
cGRhdGVFbXB0eUNvbnRlbnRQbGFjZWhvbGRlclNvb24uY2FsbCh0aGlzKTsKLSAgICB9LAorICAg
IH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9zaG93UmVzb3VyY2VzQ29udGVudFRyZWVPdXRs
aW5lOiBmdW5jdGlvbigpCisgICAgX3Nob3dSZXNvdXJjZXNDb250ZW50VHJlZU91dGxpbmUoKQog
ICAgIHsKICAgICAgICAgdGhpcy5maWx0ZXJCYXIucGxhY2Vob2xkZXIgPSBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIkZpbHRlciBSZXNvdXJjZSBMaXN0Iik7CiAgICAgICAgIHRoaXMuY29udGVudFRy
ZWVPdXRsaW5lID0gdGhpcy5fcmVzb3VyY2VzQ29udGVudFRyZWVPdXRsaW5lOwotICAgIH0sCisg
ICAgfQogCi0gICAgX3Nob3dTZWFyY2hDb250ZW50VHJlZU91dGxpbmU6IGZ1bmN0aW9uKCkKKyAg
ICBfc2hvd1NlYXJjaENvbnRlbnRUcmVlT3V0bGluZSgpCiAgICAgewogICAgICAgICB0aGlzLmZp
bHRlckJhci5wbGFjZWhvbGRlciA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRmlsdGVyIFNlYXJj
aCBSZXN1bHRzIik7CiAgICAgICAgIHRoaXMuY29udGVudFRyZWVPdXRsaW5lID0gdGhpcy5fc2Vh
cmNoQ29udGVudFRyZWVPdXRsaW5lOwotICAgIH0sCisgICAgfQogCi0gICAgX3NlYXJjaEZpZWxk
Q2hhbmdlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3NlYXJjaEZpZWxkQ2hhbmdlZChldmVudCkK
ICAgICB7CiAgICAgICAgIHRoaXMucGVyZm9ybVNlYXJjaChldmVudC50YXJnZXQudmFsdWUpOwot
ICAgIH0sCisgICAgfQogCi0gICAgX3NlYXJjaEZpZWxkSW5wdXQ6IGZ1bmN0aW9uKGV2ZW50KQor
ICAgIF9zZWFyY2hGaWVsZElucHV0KGV2ZW50KQogICAgIHsKICAgICAgICAgLy8gSWYgdGhlIHNl
YXJjaCBmaWVsZCBpcyBjbGVhcmVkLCBpbW1lZGlhdGVseSBjbGVhciB0aGUgc2VhcmNoIHJlc3Vs
dHMgdHJlZSBvdXRsaW5lLgogICAgICAgICBpZiAoIWV2ZW50LnRhcmdldC52YWx1ZS5sZW5ndGgg
JiYgdGhpcy5jb250ZW50VHJlZU91dGxpbmUgPT09IHRoaXMuX3NlYXJjaENvbnRlbnRUcmVlT3V0
bGluZSkKICAgICAgICAgICAgIHRoaXMucGVyZm9ybVNlYXJjaCgiIik7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfc2VhcmNoVHJlZUVsZW1lbnRGb3JSZXNvdXJjZTogZnVuY3Rpb24ocmVzb3VyY2Up
CisgICAgX3NlYXJjaFRyZWVFbGVtZW50Rm9yUmVzb3VyY2UocmVzb3VyY2UpCiAgICAgewogICAg
ICAgICB2YXIgcmVzb3VyY2VUcmVlRWxlbWVudCA9IHRoaXMuX3NlYXJjaENvbnRlbnRUcmVlT3V0
bGluZS5nZXRDYWNoZWRUcmVlRWxlbWVudChyZXNvdXJjZSk7CiAgICAgICAgIGlmICghcmVzb3Vy
Y2VUcmVlRWxlbWVudCkgewpAQCAtNTU1LDkgKzU1NSw5IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJj
ZVNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4g
cmVzb3VyY2VUcmVlRWxlbWVudDsKLSAgICB9LAorICAgIH0KIAotICAgIF9zZWFyY2hUcmVlRWxl
bWVudEZvclNjcmlwdDogZnVuY3Rpb24oc2NyaXB0KQorICAgIF9zZWFyY2hUcmVlRWxlbWVudEZv
clNjcmlwdChzY3JpcHQpCiAgICAgewogICAgICAgICB2YXIgc2NyaXB0VHJlZUVsZW1lbnQgPSB0
aGlzLl9zZWFyY2hDb250ZW50VHJlZU91dGxpbmUuZ2V0Q2FjaGVkVHJlZUVsZW1lbnQoc2NyaXB0
KTsKICAgICAgICAgaWYgKCFzY3JpcHRUcmVlRWxlbWVudCkgewpAQCAtNTY5LDE2ICs1NjksMTYg
QEAgV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgfQogCiAgICAgICAgIHJldHVybiBzY3JpcHRUcmVlRWxlbWVudDsKLSAgICB9LAorICAgIH0K
IAotICAgIF9mb2N1c1NlYXJjaEZpZWxkOiBmdW5jdGlvbihrZXlib2FyZFNob3J0Y3V0LCBldmVu
dCkKKyAgICBfZm9jdXNTZWFyY2hGaWVsZChrZXlib2FyZFNob3J0Y3V0LCBldmVudCkKICAgICB7
CiAgICAgICAgIHRoaXMuc2hvdygpOwogCiAgICAgICAgIHRoaXMuX2lucHV0RWxlbWVudC5zZWxl
Y3QoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9tYWluRnJhbWVEaWRDaGFuZ2U6IGZ1bmN0aW9u
KGV2ZW50KQorICAgIF9tYWluRnJhbWVEaWRDaGFuZ2UoZXZlbnQpCiAgICAgewogICAgICAgICBp
ZiAodGhpcy5fbWFpbkZyYW1lVHJlZUVsZW1lbnQpIHsKICAgICAgICAgICAgIHRoaXMuX21haW5G
cmFtZVRyZWVFbGVtZW50LmZyYW1lLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZy
YW1lLkV2ZW50Lk1haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcy5fbWFpbkZyYW1lTWFpblJlc291
cmNlRGlkQ2hhbmdlLCB0aGlzKTsKQEAgLTYxNiw5ICs2MTYsOSBAQCBXZWJJbnNwZWN0b3IuUmVz
b3VyY2VTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgICAgIC8vIFNlYXJjaCBmb3Ig
d2hhdGV2ZXIgaXMgaW4gdGhlIGlucHV0IGZpZWxkLiBUaGlzIHdhcyBwb3B1bGF0ZWQgd2l0aCB0
aGUgbGFzdCB1c2VkIHNlYXJjaCB0ZXJtLgogICAgICAgICB0aGlzLnBlcmZvcm1TZWFyY2godGhp
cy5faW5wdXRFbGVtZW50LnZhbHVlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9tYWluRnJhbWVN
YWluUmVzb3VyY2VEaWRDaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9tYWluRnJhbWVNYWlu
UmVzb3VyY2VEaWRDaGFuZ2UoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgd2FzU2hvd2luZ1Jl
c291cmNlU2lkZWJhciA9IHRoaXMuc2VsZWN0ZWQ7CiAgICAgICAgIHZhciBjdXJyZW50Q29udGVu
dFZpZXcgPSBXZWJJbnNwZWN0b3IuY29udGVudEJyb3dzZXIuY3VycmVudENvbnRlbnRWaWV3OwpA
QCAtNjU1LDkgKzY1NSw5IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbC5wcm90
b3R5cGUgPSB7CiAgICAgICAgIC8vIERlbGF5IHRoaXMgd29yayBiZWNhdXNlIG90aGVyIGxpc3Rl
bmVycyBvZiB0aGlzIGV2ZW50IG1pZ2h0IG5vdCBoYXZlIGZpcmVkIHlldC4gU28gc2VsZWN0aW5n
IHRoZSBtYWluIGZyYW1lCiAgICAgICAgIC8vIGJlZm9yZSB0aG9zZSBsaXN0ZW5lcnMgZG8gdGhl
aXIgd29yayBtaWdodCBjYXVzZSB0aGUgY29udGVudCBvZiB0aGUgb2xkIHBhZ2UgdG8gc2hvdyBp
bnN0ZWFkIG9mIHRoZSBuZXcgcGFnZS4KICAgICAgICAgc2V0VGltZW91dChkZWxheWVkV29yay5i
aW5kKHRoaXMpLCAwKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9mcmFtZVdhc0FkZGVkOiBmdW5j
dGlvbihldmVudCkKKyAgICBfZnJhbWVXYXNBZGRlZChldmVudCkKICAgICB7CiAgICAgICAgIGlm
ICghdGhpcy5fZnJhbWVJZGVudGlmaWVyVG9TaG93U291cmNlQ29kZVdoZW5BdmFpbGFibGUpCiAg
ICAgICAgICAgICByZXR1cm47CkBAIC02NjcsOSArNjY3LDkgQEAgV2ViSW5zcGVjdG9yLlJlc291
cmNlU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybjsKIAogICAg
ICAgICB0aGlzLnNob3dTb3VyY2VDb2RlRm9yRnJhbWUoZnJhbWUuaWQsIHRydWUpOwotICAgIH0s
CisgICAgfQogCi0gICAgX3NjcmlwdFdhc0FkZGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfc2Ny
aXB0V2FzQWRkZWQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgc2NyaXB0ID0gZXZlbnQuZGF0
YS5zY3JpcHQ7CiAKQEAgLTcxNSw5ICs3MTUsOSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRl
YmFyUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgICAgICAgICBwYXJlbnRGb2xkZXJUcmVlRWxl
bWVudC5hcHBlbmRDaGlsZChzY3JpcHRUcmVlRWxlbWVudCk7CiAgICAgICAgIH0KLSAgICB9LAor
ICAgIH0KIAotICAgIF9zY3JpcHRzQ2xlYXJlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3Njcmlw
dHNDbGVhcmVkKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2V4dGVuc2lvblNjcmlw
dHNGb2xkZXJUcmVlRWxlbWVudCkgewogICAgICAgICAgICAgaWYgKHRoaXMuX2V4dGVuc2lvblNj
cmlwdHNGb2xkZXJUcmVlRWxlbWVudC5wYXJlbnQpCkBAIC03MzYsOSArNzM2LDkgQEAgV2ViSW5z
cGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAg
ICB0aGlzLl9hbm9ueW1vdXNTY3JpcHRzRm9sZGVyVHJlZUVsZW1lbnQucGFyZW50LnJlbW92ZUNo
aWxkKHRoaXMuX2Fub255bW91c1NjcmlwdHNGb2xkZXJUcmVlRWxlbWVudCk7CiAgICAgICAgICAg
ICB0aGlzLl9hbm9ueW1vdXNTY3JpcHRzRm9sZGVyVHJlZUVsZW1lbnQgPSBudWxsOwogICAgICAg
ICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc2NyaXB0c1RvU2VhcmNoOiBmdW5jdGlvbihldmVu
dCkKKyAgICBfc2NyaXB0c1RvU2VhcmNoKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIG5vblJl
c291cmNlU2NyaXB0cyA9IFtdOwogCkBAIC03NjMsOSArNzYzLDkgQEAgV2ViSW5zcGVjdG9yLlJl
c291cmNlU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHJl
dHVybiBub25SZXNvdXJjZVNjcmlwdHM7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdHJlZUVsZW1l
bnRTZWxlY3RlZDogZnVuY3Rpb24odHJlZUVsZW1lbnQsIHNlbGVjdGVkQnlVc2VyKQorICAgIF90
cmVlRWxlbWVudFNlbGVjdGVkKHRyZWVFbGVtZW50LCBzZWxlY3RlZEJ5VXNlcikKICAgICB7CiAg
ICAgICAgIGlmICh0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Gb2xkZXJUcmVl
RWxlbWVudCB8fCB0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5EYXRhYmFzZUhv
c3RUcmVlRWxlbWVudCB8fAogICAgICAgICAgICAgdHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXZWJJ
bnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlSG9zdFRyZWVFbGVtZW50IHx8IHRyZWVFbGVtZW50IGlu
c3RhbmNlb2YgV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZVRyZWVFbGVtZW50KQpAQCAtNzg4
LDE0ICs3ODgsMTQgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVsLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgIHRoaXMuc2hvd01haW5GcmFtZURPTVRyZWUodHJlZUVsZW1lbnQu
cmVwcmVzZW50ZWRPYmplY3QuZG9tTm9kZSwgdHJ1ZSk7CiAgICAgICAgIGVsc2UgaWYgKHRyZWVF
bGVtZW50LnJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlNvdXJjZUNv
ZGVTZWFyY2hNYXRjaE9iamVjdCkKICAgICAgICAgICAgIHRoaXMuc2hvd09yaWdpbmFsT3JGb3Jt
YXR0ZWRTb3VyY2VDb2RlVGV4dFJhbmdlKHRyZWVFbGVtZW50LnJlcHJlc2VudGVkT2JqZWN0LnNv
dXJjZUNvZGVUZXh0UmFuZ2UpOwotICAgIH0sCisgICAgfQogCi0gICAgX2RvbU5vZGVXYXNJbnNw
ZWN0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9kb21Ob2RlV2FzSW5zcGVjdGVkKGV2ZW50KQog
ICAgIHsKICAgICAgICAgdGhpcy5zaG93TWFpbkZyYW1lRE9NVHJlZShldmVudC5kYXRhLm5vZGUp
OwotICAgIH0sCisgICAgfQogCi0gICAgX2RvbVN0b3JhZ2VPYmplY3RXYXNBZGRlZDogZnVuY3Rp
b24oZXZlbnQpCisgICAgX2RvbVN0b3JhZ2VPYmplY3RXYXNBZGRlZChldmVudCkKICAgICB7CiAg
ICAgICAgIHZhciBkb21TdG9yYWdlID0gZXZlbnQuZGF0YS5kb21TdG9yYWdlOwogICAgICAgICB2
YXIgc3RvcmFnZUVsZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VUcmVlRWxlbWVu
dChkb21TdG9yYWdlKTsKQEAgLTgwNCwxNiArODA0LDE2IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJj
ZVNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9sb2NhbFN0b3Jh
Z2VSb290VHJlZUVsZW1lbnQgPSB0aGlzLl9hZGRTdG9yYWdlQ2hpbGQoc3RvcmFnZUVsZW1lbnQs
IHRoaXMuX2xvY2FsU3RvcmFnZVJvb3RUcmVlRWxlbWVudCwgV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJMb2NhbCBTdG9yYWdlIikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB0aGlzLl9zZXNz
aW9uU3RvcmFnZVJvb3RUcmVlRWxlbWVudCA9IHRoaXMuX2FkZFN0b3JhZ2VDaGlsZChzdG9yYWdl
RWxlbWVudCwgdGhpcy5fc2Vzc2lvblN0b3JhZ2VSb290VHJlZUVsZW1lbnQsIFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiU2Vzc2lvbiBTdG9yYWdlIikpOwotICAgIH0sCisgICAgfQogCi0gICAgX2Rv
bVN0b3JhZ2VPYmplY3RXYXNJbnNwZWN0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9kb21TdG9y
YWdlT2JqZWN0V2FzSW5zcGVjdGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIGRvbVN0b3Jh
Z2UgPSBldmVudC5kYXRhLmRvbVN0b3JhZ2U7CiAgICAgICAgIHZhciB0cmVlRWxlbWVudCA9IHRo
aXMudHJlZUVsZW1lbnRGb3JSZXByZXNlbnRlZE9iamVjdChkb21TdG9yYWdlKTsKICAgICAgICAg
dHJlZUVsZW1lbnQucmV2ZWFsQW5kU2VsZWN0KHRydWUpOwotICAgIH0sCisgICAgfQogCi0gICAg
X2RhdGFiYXNlV2FzQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9kYXRhYmFzZVdhc0FkZGVk
KGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIGRhdGFiYXNlID0gZXZlbnQuZGF0YS5kYXRhYmFz
ZTsKIApAQCAtODI2LDE2ICs4MjYsMTYgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBh
bmVsLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB2YXIgZGF0YWJhc2VFbGVtZW50ID0gbmV3IFdl
Ykluc3BlY3Rvci5EYXRhYmFzZVRyZWVFbGVtZW50KGRhdGFiYXNlKTsKICAgICAgICAgdGhpcy5f
ZGF0YWJhc2VIb3N0VHJlZUVsZW1lbnRNYXBbZGF0YWJhc2UuaG9zdF0uYXBwZW5kQ2hpbGQoZGF0
YWJhc2VFbGVtZW50KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9kYXRhYmFzZVdhc0luc3BlY3Rl
ZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2RhdGFiYXNlV2FzSW5zcGVjdGVkKGV2ZW50KQogICAg
IHsKICAgICAgICAgdmFyIGRhdGFiYXNlID0gZXZlbnQuZGF0YS5kYXRhYmFzZTsKICAgICAgICAg
dmFyIHRyZWVFbGVtZW50ID0gdGhpcy50cmVlRWxlbWVudEZvclJlcHJlc2VudGVkT2JqZWN0KGRh
dGFiYXNlKTsKICAgICAgICAgdHJlZUVsZW1lbnQucmV2ZWFsQW5kU2VsZWN0KHRydWUpOwotICAg
IH0sCisgICAgfQogCi0gICAgX2luZGV4ZWREYXRhYmFzZVdhc0FkZGVkOiBmdW5jdGlvbihldmVu
dCkKKyAgICBfaW5kZXhlZERhdGFiYXNlV2FzQWRkZWQoZXZlbnQpCiAgICAgewogICAgICAgICB2
YXIgaW5kZXhlZERhdGFiYXNlID0gZXZlbnQuZGF0YS5pbmRleGVkRGF0YWJhc2U7CiAKQEAgLTg0
OCwxNyArODQ4LDE3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbC5wcm90b3R5
cGUgPSB7CiAKICAgICAgICAgdmFyIGluZGV4ZWREYXRhYmFzZUVsZW1lbnQgPSBuZXcgV2ViSW5z
cGVjdG9yLkluZGV4ZWREYXRhYmFzZVRyZWVFbGVtZW50KGluZGV4ZWREYXRhYmFzZSk7CiAgICAg
ICAgIHRoaXMuX2luZGV4ZWREYXRhYmFzZUhvc3RUcmVlRWxlbWVudE1hcFtpbmRleGVkRGF0YWJh
c2UuaG9zdF0uYXBwZW5kQ2hpbGQoaW5kZXhlZERhdGFiYXNlRWxlbWVudCk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfY29va2llU3RvcmFnZU9iamVjdFdhc0FkZGVkOiBmdW5jdGlvbihldmVudCkK
KyAgICBfY29va2llU3RvcmFnZU9iamVjdFdhc0FkZGVkKGV2ZW50KQogICAgIHsKICAgICAgICAg
Y29uc29sZS5hc3NlcnQoZXZlbnQuZGF0YS5jb29raWVTdG9yYWdlIGluc3RhbmNlb2YgV2ViSW5z
cGVjdG9yLkNvb2tpZVN0b3JhZ2VPYmplY3QpOwogCiAgICAgICAgIHZhciBjb29raWVFbGVtZW50
ID0gbmV3IFdlYkluc3BlY3Rvci5Db29raWVTdG9yYWdlVHJlZUVsZW1lbnQoZXZlbnQuZGF0YS5j
b29raWVTdG9yYWdlKTsKICAgICAgICAgdGhpcy5fY29va2llU3RvcmFnZVJvb3RUcmVlRWxlbWVu
dCA9IHRoaXMuX2FkZFN0b3JhZ2VDaGlsZChjb29raWVFbGVtZW50LCB0aGlzLl9jb29raWVTdG9y
YWdlUm9vdFRyZWVFbGVtZW50LCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvb2tpZXMiKSk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBfZnJhbWVNYW5pZmVzdEFkZGVkOiBmdW5jdGlvbihldmVudCkK
KyAgICBfZnJhbWVNYW5pZmVzdEFkZGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIGZyYW1l
TWFuaWZlc3QgPSBldmVudC5kYXRhLmZyYW1lTWFuaWZlc3Q7CiAgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KGZyYW1lTWFuaWZlc3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNo
ZUZyYW1lKTsKQEAgLTg3MiwxNCArODcyLDE0IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVNpZGVi
YXJQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdmFyIGZyYW1lQ2FjaGVFbGVtZW50ID0g
bmV3IFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWVUcmVlRWxlbWVudChmcmFtZU1h
bmlmZXN0KTsKICAgICAgICAgdGhpcy5fYXBwbGljYXRpb25DYWNoZVVSTFRyZWVFbGVtZW50TWFw
W21hbmlmZXN0VVJMXS5hcHBlbmRDaGlsZChmcmFtZUNhY2hlRWxlbWVudCk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfZnJhbWVNYW5pZmVzdFJlbW92ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9m
cmFtZU1hbmlmZXN0UmVtb3ZlZChldmVudCkKICAgICB7CiAgICAgICAgICAvLyBGSVhNRTogSW1w
bGVtZW50IHRoaXMuCi0gICAgfSwKKyAgICB9CiAKLSAgICBfY29tcGFyZVRyZWVFbGVtZW50czog
ZnVuY3Rpb24oYSwgYikKKyAgICBfY29tcGFyZVRyZWVFbGVtZW50cyhhLCBiKQogICAgIHsKICAg
ICAgICAgLy8gQWx3YXlzIHNvcnQgdGhlIG1haW4gZnJhbWUgZWxlbWVudCBmaXJzdC4KICAgICAg
ICAgaWYgKGEgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudCkKQEAgLTg5
MSw5ICs4OTEsOSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRlYmFyUGFuZWwucHJvdG90eXBl
ID0gewogICAgICAgICBjb25zb2xlLmFzc2VydChiLm1haW5UaXRsZSk7CiAKICAgICAgICAgcmV0
dXJuIChhLm1haW5UaXRsZSB8fCAiIikubG9jYWxlQ29tcGFyZShiLm1haW5UaXRsZSB8fCAiIik7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfYWRkU3RvcmFnZUNoaWxkOiBmdW5jdGlvbihjaGlsZEVs
ZW1lbnQsIHBhcmVudEVsZW1lbnQsIGZvbGRlck5hbWUpCisgICAgX2FkZFN0b3JhZ2VDaGlsZChj
aGlsZEVsZW1lbnQsIHBhcmVudEVsZW1lbnQsIGZvbGRlck5hbWUpCiAgICAgewogICAgICAgICBp
ZiAoIXBhcmVudEVsZW1lbnQpIHsKICAgICAgICAgICAgIGNoaWxkRWxlbWVudC5mbGF0dGVuZWQg
PSB0cnVlOwpAQCAtOTIzLDkgKzkyMyw5IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQ
YW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHBhcmVudEVsZW1lbnQuaW5zZXJ0Q2hpbGQoY2hp
bGRFbGVtZW50LCBpbnNlcnRpb25JbmRleEZvck9iamVjdEluTGlzdFNvcnRlZEJ5RnVuY3Rpb24o
Y2hpbGRFbGVtZW50LCBwYXJlbnRFbGVtZW50LmNoaWxkcmVuLCB0aGlzLl9jb21wYXJlVHJlZUVs
ZW1lbnRzKSk7CiAKICAgICAgICAgcmV0dXJuIHBhcmVudEVsZW1lbnQ7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfc3RvcmFnZUNsZWFyZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9zdG9yYWdlQ2xl
YXJlZChldmVudCkKICAgICB7CiAgICAgICAgIC8vIENsb3NlIGFsbCBET00gYW5kIGNvb2tpZSBz
dG9yYWdlIGNvbnRlbnQgdmlld3Mgc2luY2UgdGhlIG1haW4gZnJhbWUgaGFzIG5hdmlnYXRlZCBh
bmQgYWxsIHN0b3JhZ2VzIGFyZSBjbGVhcmVkLgogICAgICAgICBXZWJJbnNwZWN0b3IuY29udGVu
dEJyb3dzZXIuY29udGVudFZpZXdDb250YWluZXIuY2xvc2VBbGxDb250ZW50Vmlld3NPZlByb3Rv
dHlwZShXZWJJbnNwZWN0b3IuQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3KTsKQEAgLTk2MSwxMyAr
OTYxLDExIEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7
CiAgICAgICAgIHRoaXMuX2Nvb2tpZVN0b3JhZ2VSb290VHJlZUVsZW1lbnQgPSBudWxsOwogICAg
ICAgICB0aGlzLl9hcHBsaWNhdGlvbkNhY2hlUm9vdFRyZWVFbGVtZW50ID0gbnVsbDsKICAgICAg
ICAgdGhpcy5fYXBwbGljYXRpb25DYWNoZVVSTFRyZWVFbGVtZW50TWFwID0ge307Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfZXh0cmFEb21haW5zQWN0aXZhdGVkOiBmdW5jdGlvbigpCisgICAgX2V4
dHJhRG9tYWluc0FjdGl2YXRlZCgpCiAgICAgewogICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLmRl
YnVnZ2FibGVUeXBlID09PSBXZWJJbnNwZWN0b3IuRGVidWdnYWJsZVR5cGUuSmF2YVNjcmlwdCkK
ICAgICAgICAgICAgIHRoaXMuX3Jlc291cmNlc0NvbnRlbnRUcmVlT3V0bGluZS5lbGVtZW50LmNs
YXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwuSGlkZURp
c2Nsb3N1cmVCdXR0b25zU3R5bGVDbGFzc05hbWUpOwogICAgIH0KIH07Ci0KLVdlYkluc3BlY3Rv
ci5SZXNvdXJjZVNpZGViYXJQYW5lbC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9y
Lk5hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2NvcGVDaGFpbkRldGFpbHNTaWRlYmFy
UGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TY29w
ZUNoYWluRGV0YWlsc1NpZGViYXJQYW5lbC5qcwppbmRleCBjMmNiYzAxNWI3YmQ3ZTNiYzM3MjMy
M2ExODFhOTlkMmVhYTc4NzA3Li4wZDBiMzM0ZTg5NmQyOGU3MGZmM2QwMWIxMTczMWE3MDAwNGI2
OWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9TY29wZUNoYWluRGV0YWlsc1NpZGViYXJQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TY29wZUNoYWluRGV0YWlsc1NpZGViYXJQYW5lbC5q
cwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjMsMjEgKzIzLDE3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAotV2ViSW5zcGVjdG9yLlNjb3BlQ2hhaW5EZXRhaWxzU2lkZWJhclBhbmVsID0gZnVuY3Rp
b24oKQorV2ViSW5zcGVjdG9yLlNjb3BlQ2hhaW5EZXRhaWxzU2lkZWJhclBhbmVsID0gY2xhc3Mg
U2NvcGVDaGFpbkRldGFpbHNTaWRlYmFyUGFuZWwgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuRGV0YWls
c1NpZGViYXJQYW5lbAogewotICAgIFdlYkluc3BlY3Rvci5EZXRhaWxzU2lkZWJhclBhbmVsLmNh
bGwodGhpcywgInNjb3BlLWNoYWluIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTY29wZSBDaGFp
biIpLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNjb3BlIENoYWluIiksICJJbWFnZXMvTmF2aWdh
dGlvbkl0ZW1WYXJpYWJsZS5zdmciLCAiNSIpOwotCi0gICAgdGhpcy5fY2FsbEZyYW1lID0gbnVs
bDsKLQotICAgIC8vIFVwZGF0ZSBvbiBjb25zb2xlIHByb21wdCBldmFsIGFzIG9iamVjdHMgaW4g
dGhlIHNjb3BlIGNoYWluIG1heSBoYXZlIGNoYW5nZWQuCi0gICAgV2ViSW5zcGVjdG9yLnJ1bnRp
bWVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJ1bnRpbWVNYW5hZ2VyLkV2
ZW50LkRpZEV2YWx1YXRlLCB0aGlzLm5lZWRzUmVmcmVzaCwgdGhpcyk7Ci19OworICAgIGNvbnN0
cnVjdG9yKCkKKyAgICB7CisgICAgICAgIHN1cGVyKCJzY29wZS1jaGFpbiIsIFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiU2NvcGUgQ2hhaW4iKSwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTY29wZSBD
aGFpbiIpLCAiSW1hZ2VzL05hdmlnYXRpb25JdGVtVmFyaWFibGUuc3ZnIiwgIjUiKTsKIAotV2Vi
SW5zcGVjdG9yLlNjb3BlQ2hhaW5EZXRhaWxzU2lkZWJhclBhbmVsLmF1dG9FeHBhbmRQcm9wZXJ0
aWVzID0gbmV3IFNldDsKKyAgICAgICAgdGhpcy5fY2FsbEZyYW1lID0gbnVsbDsKIAotV2ViSW5z
cGVjdG9yLlNjb3BlQ2hhaW5EZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKLSAgICBj
b25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlNjb3BlQ2hhaW5EZXRhaWxzU2lkZWJhclBhbmVsLAot
ICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLkRldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBl
LAorICAgICAgICAvLyBVcGRhdGUgb24gY29uc29sZSBwcm9tcHQgZXZhbCBhcyBvYmplY3RzIGlu
IHRoZSBzY29wZSBjaGFpbiBtYXkgaGF2ZSBjaGFuZ2VkLgorICAgICAgICBXZWJJbnNwZWN0b3Iu
cnVudGltZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUnVudGltZU1hbmFn
ZXIuRXZlbnQuRGlkRXZhbHVhdGUsIHRoaXMubmVlZHNSZWZyZXNoLCB0aGlzKTsKKyAgICB9CiAK
ICAgICAvLyBQdWJsaWMKIApAQCAtNjAsMTIgKzU2LDEyIEBAIFdlYkluc3BlY3Rvci5TY29wZUNo
YWluRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuY2FsbEZy
YW1lID0gY2FsbEZyYW1lVG9JbnNwZWN0OwogCiAgICAgICAgIHJldHVybiAhIXRoaXMuY2FsbEZy
YW1lOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGNhbGxGcmFtZSgpCiAgICAgewogICAgICAg
ICByZXR1cm4gdGhpcy5fY2FsbEZyYW1lOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGNhbGxG
cmFtZShjYWxsRnJhbWUpCiAgICAgewpAQCAtNzUsNyArNzEsNyBAQCBXZWJJbnNwZWN0b3IuU2Nv
cGVDaGFpbkRldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9j
YWxsRnJhbWUgPSBjYWxsRnJhbWU7CiAKICAgICAgICAgdGhpcy5uZWVkc1JlZnJlc2goKTsKLSAg
ICB9LAorICAgIH0KIAogICAgIHJlZnJlc2goKQogICAgIHsKQEAgLTE4MSwxMyArMTc3LDEzIEBA
IFdlYkluc3BlY3Rvci5TY29wZUNoYWluRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7
CiAgICAgICAgIC8vIFdlIG5lZWQgYSB0aW1lb3V0IGluIHBsYWNlIGluIGNhc2UgdGhlcmUgYXJl
IGxvbmcgcnVubmluZywgcGVuZGluZyBiYWNrZW5kIGRpc3BhdGNoZXMuIFRoaXMgY2FuIGhhcHBl
bgogICAgICAgICAvLyBpZiB0aGUgZGVidWdnZXIgaXMgcGF1c2VkIGluIGNvZGUgdGhhdCB3YXMg
ZXhlY3V0ZWQgZnJvbSB0aGUgY29uc29sZS4gVGhlIGNvbnNvbGUgd2lsbCBiZSB3YWl0aW5nIGZv
cgogICAgICAgICAvLyB0aGUgcmVzdWx0IG9mIHRoZSBleGVjdXRpb24gYW5kIHdpdGhvdXQgYSB0
aW1lb3V0IHdlIHdvdWxkIG5ldmVyIHVwZGF0ZSB0aGUgc2NvcGUgdmFyaWFibGVzLgotICAgICAg
ICB2YXIgZGVsYXkgPSBXZWJJbnNwZWN0b3IuU2NvcGVDaGFpbkRldGFpbHNTaWRlYmFyUGFuZWwu
YXV0b0V4cGFuZFByb3BlcnRpZXMuc2l6ZSA9PT0gMCA/IDUwIDogMjUwOworICAgICAgICB2YXIg
ZGVsYXkgPSBXZWJJbnNwZWN0b3IuU2NvcGVDaGFpbkRldGFpbHNTaWRlYmFyUGFuZWwuX2F1dG9F
eHBhbmRQcm9wZXJ0aWVzLnNpemUgPT09IDAgPyA1MCA6IDI1MDsKICAgICAgICAgdmFyIHRpbWVv
dXQgPSBzZXRUaW1lb3V0KGRlbGF5ZWRXb3JrLmJpbmQodGhpcyksIGRlbGF5KTsKIAogICAgICAg
ICAvLyBTaW5jZSBPYmplY3RUcmVlVmlldyBwb3B1bGF0ZXMgYXN5bmNocm9ub3VzbHksIHdlIHdh
bnQgdG8gd2FpdCB0byByZXBsYWNlIHRoZSBleGlzdGluZyBjb250ZW50CiAgICAgICAgIC8vIHVu
dGlsIGFmdGVyIGFsbCB0aGUgcGVuZGluZyBhc3luY2hyb25vdXMgcmVxdWVzdHMgYXJlIGNvbXBs
ZXRlZC4gVGhpcyBwcmV2ZW50cyBzZXZlcmUgZmxhc2hpbmcgd2hpbGUgc3RlcHBpbmcuCiAgICAg
ICAgIEluc3BlY3RvckJhY2tlbmQucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhkZWxheWVkV29y
ay5iaW5kKHRoaXMpKTsKLSAgICB9LAorICAgIH0KIAogICAgIF9wcm9wZXJ0eVBhdGhJZGVudGlm
aWVyRm9yVHJlZUVsZW1lbnQoaWRlbnRpZmllciwgb2JqZWN0UHJvcGVydHlUcmVlRWxlbWVudCkK
ICAgICB7CkBAIC0xOTksNyArMTk1LDcgQEAgV2ViSW5zcGVjdG9yLlNjb3BlQ2hhaW5EZXRhaWxz
U2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiBudWxsOwogCiAg
ICAgICAgIHJldHVybiBpZGVudGlmaWVyICsgIi0iICsgcHJvcGVydHlQYXRoLmZ1bGxQYXRoOwot
ICAgIH0sCisgICAgfQogCiAgICAgX29iamVjdFRyZWVBZGRIYW5kbGVyKGlkZW50aWZpZXIsIHRy
ZWVFbGVtZW50KQogICAgIHsKQEAgLTIwNyw5ICsyMDMsOSBAQCBXZWJJbnNwZWN0b3IuU2NvcGVD
aGFpbkRldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICBpZiAoIXByb3Bl
cnR5UGF0aElkZW50aWZpZXIpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKFdl
Ykluc3BlY3Rvci5TY29wZUNoYWluRGV0YWlsc1NpZGViYXJQYW5lbC5hdXRvRXhwYW5kUHJvcGVy
dGllcy5oYXMocHJvcGVydHlQYXRoSWRlbnRpZmllcikpCisgICAgICAgIGlmIChXZWJJbnNwZWN0
b3IuU2NvcGVDaGFpbkRldGFpbHNTaWRlYmFyUGFuZWwuX2F1dG9FeHBhbmRQcm9wZXJ0aWVzLmhh
cyhwcm9wZXJ0eVBhdGhJZGVudGlmaWVyKSkKICAgICAgICAgICAgIHRyZWVFbGVtZW50LmV4cGFu
ZCgpOwotICAgIH0sCisgICAgfQogCiAgICAgX29iamVjdFRyZWVFeHBhbmRIYW5kbGVyKGlkZW50
aWZpZXIsIHRyZWVFbGVtZW50KQogICAgIHsKQEAgLTIxNyw4ICsyMTMsOCBAQCBXZWJJbnNwZWN0
b3IuU2NvcGVDaGFpbkRldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICBp
ZiAoIXByb3BlcnR5UGF0aElkZW50aWZpZXIpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAg
ICAgV2ViSW5zcGVjdG9yLlNjb3BlQ2hhaW5EZXRhaWxzU2lkZWJhclBhbmVsLmF1dG9FeHBhbmRQ
cm9wZXJ0aWVzLmFkZChwcm9wZXJ0eVBhdGhJZGVudGlmaWVyKTsKLSAgICB9LAorICAgICAgICBX
ZWJJbnNwZWN0b3IuU2NvcGVDaGFpbkRldGFpbHNTaWRlYmFyUGFuZWwuX2F1dG9FeHBhbmRQcm9w
ZXJ0aWVzLmFkZChwcm9wZXJ0eVBhdGhJZGVudGlmaWVyKTsKKyAgICB9CiAKICAgICBfb2JqZWN0
VHJlZUNvbGxhcHNlSGFuZGxlcihpZGVudGlmaWVyLCB0cmVlRWxlbWVudCkKICAgICB7CkBAIC0y
MjYsNiArMjIyLDggQEAgV2ViSW5zcGVjdG9yLlNjb3BlQ2hhaW5EZXRhaWxzU2lkZWJhclBhbmVs
LnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKCFwcm9wZXJ0eVBhdGhJZGVudGlmaWVyKQogICAg
ICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIFdlYkluc3BlY3Rvci5TY29wZUNoYWluRGV0YWls
c1NpZGViYXJQYW5lbC5hdXRvRXhwYW5kUHJvcGVydGllcy5kZWxldGUocHJvcGVydHlQYXRoSWRl
bnRpZmllcik7CisgICAgICAgIFdlYkluc3BlY3Rvci5TY29wZUNoYWluRGV0YWlsc1NpZGViYXJQ
YW5lbC5fYXV0b0V4cGFuZFByb3BlcnRpZXMuZGVsZXRlKHByb3BlcnR5UGF0aElkZW50aWZpZXIp
OwogICAgIH0KIH07CisKK1dlYkluc3BlY3Rvci5TY29wZUNoYWluRGV0YWlsc1NpZGViYXJQYW5l
bC5fYXV0b0V4cGFuZFByb3BlcnRpZXMgPSBuZXcgU2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2lkZWJhci5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NpZGViYXIuanMKaW5kZXggYjgyYmM3Yzcz
YmFiMjIwM2U3OWFkZDlkMWEzZmRjNDI2ZWMwNjNjOC4uNmMyMTZhODlhNTM5ZTYzZDFhOWNiMjMz
MWMyODBhY2I5MDJiMjgzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvU2lkZWJhci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9TaWRlYmFyLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw1NiArMjMsMzggQEAKICAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuU2lkZWJhciA9IGZ1
bmN0aW9uKGVsZW1lbnQsIHNpZGUsIHNpZGViYXJQYW5lbHMsIHJvbGUsIGxhYmVsKSB7Ci0gICAg
Ly8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3Ms
IGFuZCBjYWxsIHN1cGVyKCkuCi0gICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMp
OworV2ViSW5zcGVjdG9yLlNpZGViYXIgPSBjbGFzcyBTaWRlYmFyIGV4dGVuZHMgV2ViSW5zcGVj
dG9yLk9iamVjdAoreworICAgIGNvbnN0cnVjdG9yKGVsZW1lbnQsIHNpZGUsIHNpZGViYXJQYW5l
bHMsIHJvbGUsIGxhYmVsKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAotICAgIGNvbnNvbGUu
YXNzZXJ0KCFzaWRlIHx8IHNpZGUgPT09IFdlYkluc3BlY3Rvci5TaWRlYmFyLlNpZGVzLkxlZnQg
fHwgc2lkZSA9PT0gV2ViSW5zcGVjdG9yLlNpZGViYXIuU2lkZXMuUmlnaHQpOwotICAgIHRoaXMu
X3NpZGUgPSBzaWRlIHx8IFdlYkluc3BlY3Rvci5TaWRlYmFyLlNpZGVzLkxlZnQ7CisgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KCFzaWRlIHx8IHNpZGUgPT09IFdlYkluc3BlY3Rvci5TaWRlYmFyLlNp
ZGVzLkxlZnQgfHwgc2lkZSA9PT0gV2ViSW5zcGVjdG9yLlNpZGViYXIuU2lkZXMuUmlnaHQpOwor
ICAgICAgICB0aGlzLl9zaWRlID0gc2lkZSB8fCBXZWJJbnNwZWN0b3IuU2lkZWJhci5TaWRlcy5M
ZWZ0OwogCi0gICAgdGhpcy5fZWxlbWVudCA9IGVsZW1lbnQgfHwgZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7Ci0gICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rv
ci5TaWRlYmFyLlN0eWxlQ2xhc3NOYW1lKTsKLSAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5h
ZGQoV2ViSW5zcGVjdG9yLlNpZGViYXIuQ29sbGFwc2VkU3R5bGVDbGFzc05hbWUpOwotICAgIHRo
aXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCh0aGlzLl9zaWRlKTsKKyAgICAgICAgdGhpcy5fZWxl
bWVudCA9IGVsZW1lbnQgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAg
IHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgic2lkZWJhciIpOworICAgICAgICB0aGlzLl9l
bGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlNpZGViYXIuQ29sbGFwc2VkU3R5bGVD
bGFzc05hbWUpOworICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQodGhpcy5fc2lk
ZSk7CiAKLSAgICB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgicm9sZSIsIHJvbGUgfHwgImdy
b3VwIik7Ci0gICAgaWYgKGxhYmVsKQotICAgICAgICB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0
ZSgiYXJpYS1sYWJlbCIsIGxhYmVsKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1
dGUoInJvbGUiLCByb2xlIHx8ICJncm91cCIpOworICAgICAgICBpZiAobGFiZWwpCisgICAgICAg
ICAgICB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsIGxhYmVsKTsKIAot
ICAgIHRoaXMuX3Jlc2l6ZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlJlc2l6ZXIoV2ViSW5zcGVjdG9y
LlJlc2l6ZXIuUnVsZU9yaWVudGF0aW9uLlZlcnRpY2FsLCB0aGlzKTsKLSAgICB0aGlzLl9lbGVt
ZW50Lmluc2VydEJlZm9yZSh0aGlzLl9yZXNpemVyLmVsZW1lbnQsIHRoaXMuX2VsZW1lbnQuZmly
c3RDaGlsZCk7CisgICAgICAgIHRoaXMuX3Jlc2l6ZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlJlc2l6
ZXIoV2ViSW5zcGVjdG9yLlJlc2l6ZXIuUnVsZU9yaWVudGF0aW9uLlZlcnRpY2FsLCB0aGlzKTsK
KyAgICAgICAgdGhpcy5fZWxlbWVudC5pbnNlcnRCZWZvcmUodGhpcy5fcmVzaXplci5lbGVtZW50
LCB0aGlzLl9lbGVtZW50LmZpcnN0Q2hpbGQpOwogCi0gICAgdGhpcy5fc2lkZWJhclBhbmVscyA9
IFtdOworICAgICAgICB0aGlzLl9zaWRlYmFyUGFuZWxzID0gW107CiAKLSAgICBpZiAoc2lkZWJh
clBhbmVscykgewotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpZGViYXJQYW5lbHMubGVu
Z3RoOyArK2kpCi0gICAgICAgICAgICB0aGlzLmFkZFNpZGViYXJQYW5lbChzaWRlYmFyUGFuZWxz
W2ldKTsKKyAgICAgICAgaWYgKHNpZGViYXJQYW5lbHMpIHsKKyAgICAgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgc2lkZWJhclBhbmVscy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgICAgICB0
aGlzLmFkZFNpZGViYXJQYW5lbChzaWRlYmFyUGFuZWxzW2ldKTsKKyAgICAgICAgfQogICAgIH0K
LX07Ci0KLS8vIEZJWE1FOiBNb3ZlIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcyBh
bmQgd2UgY2FuIHJlbW92ZSB0aGlzLgotV2ViSW5zcGVjdG9yLk9iamVjdC5kZXByZWNhdGVkQWRk
Q29uc3RydWN0b3JGdW5jdGlvbnMoV2ViSW5zcGVjdG9yLlNpZGViYXIpOwotCi1XZWJJbnNwZWN0
b3IuU2lkZWJhci5TdHlsZUNsYXNzTmFtZSA9ICJzaWRlYmFyIjsKLVdlYkluc3BlY3Rvci5TaWRl
YmFyLkNvbGxhcHNlZFN0eWxlQ2xhc3NOYW1lID0gImNvbGxhcHNlZCI7Ci1XZWJJbnNwZWN0b3Iu
U2lkZWJhci5BYnNvbHV0ZU1pbmltdW1XaWR0aCA9IDIwMDsKLQotV2ViSW5zcGVjdG9yLlNpZGVi
YXIuU2lkZXMgPSB7fTsKLVdlYkluc3BlY3Rvci5TaWRlYmFyLlNpZGVzLlJpZ2h0ID0gInJpZ2h0
IjsKLVdlYkluc3BlY3Rvci5TaWRlYmFyLlNpZGVzLkxlZnQgPSAibGVmdCI7Ci0KLVdlYkluc3Bl
Y3Rvci5TaWRlYmFyLkV2ZW50ID0gewotICAgIFNpZGViYXJQYW5lbFNlbGVjdGVkOiAic2lkZWJh
ci1zaWRlYmFyLXBhbmVsLXNlbGVjdGVkIiwKLSAgICBDb2xsYXBzZWRTdGF0ZURpZENoYW5nZTog
InNpZGViYXItc2lkZWJhci1jb2xsYXBzZWQtc3RhdGUtZGlkLWNoYW5nZSIsCi0gICAgV2lkdGhE
aWRDaGFuZ2U6ICJzaWRlYmFyLXdpZHRoLWRpZC1jaGFuZ2UiLAotfTsKLQotV2ViSW5zcGVjdG9y
LlNpZGViYXIucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuU2lk
ZWJhciwKIAogICAgIC8vIFB1YmxpYwogCi0gICAgYWRkU2lkZWJhclBhbmVsOiBmdW5jdGlvbihz
aWRlYmFyUGFuZWwpCisgICAgYWRkU2lkZWJhclBhbmVsKHNpZGViYXJQYW5lbCkKICAgICB7CiAg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KHNpZGViYXJQYW5lbCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rv
ci5TaWRlYmFyUGFuZWwpOwogICAgICAgICBpZiAoIShzaWRlYmFyUGFuZWwgaW5zdGFuY2VvZiBX
ZWJJbnNwZWN0b3IuU2lkZWJhclBhbmVsKSkKQEAgLTkwLDkgKzcyLDkgQEAgV2ViSW5zcGVjdG9y
LlNpZGViYXIucHJvdG90eXBlID0gewogICAgICAgICBzaWRlYmFyUGFuZWwuYWRkZWQoKTsKIAog
ICAgICAgICByZXR1cm4gc2lkZWJhclBhbmVsOwotICAgIH0sCisgICAgfQogCi0gICAgcmVtb3Zl
U2lkZWJhclBhbmVsOiBmdW5jdGlvbihzaWRlYmFyUGFuZWxPcklkZW50aWZpZXJPckluZGV4LCBp
bmRleCkKKyAgICByZW1vdmVTaWRlYmFyUGFuZWwoc2lkZWJhclBhbmVsT3JJZGVudGlmaWVyT3JJ
bmRleCwgaW5kZXgpCiAgICAgewogICAgICAgICB2YXIgc2lkZWJhclBhbmVsID0gdGhpcy5maW5k
U2lkZWJhclBhbmVsKHNpZGViYXJQYW5lbE9ySWRlbnRpZmllck9ySW5kZXgpOwogICAgICAgICBp
ZiAoIXNpZGViYXJQYW5lbCkKQEAgLTExMywxMiArOTUsMTIgQEAgV2ViSW5zcGVjdG9yLlNpZGVi
YXIucHJvdG90eXBlID0gewogICAgICAgICBzaWRlYmFyUGFuZWwucmVtb3ZlZCgpOwogCiAgICAg
ICAgIHJldHVybiBzaWRlYmFyUGFuZWw7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc2VsZWN0
ZWRTaWRlYmFyUGFuZWwoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkU2lk
ZWJhclBhbmVsIHx8IG51bGw7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgc2VsZWN0ZWRTaWRl
YmFyUGFuZWwoc2lkZWJhclBhbmVsT3JJZGVudGlmaWVyT3JJbmRleCkKICAgICB7CkBAIC0xNDks
MjQgKzEzMSwyNCBAQCBXZWJJbnNwZWN0b3IuU2lkZWJhci5wcm90b3R5cGUgPSB7CiAgICAgICAg
IH0KIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3Iu
U2lkZWJhci5FdmVudC5TaWRlYmFyUGFuZWxTZWxlY3RlZCk7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICBnZXQgbWluaW11bVdpZHRoKCkKICAgICB7CiAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3Iu
U2lkZWJhci5BYnNvbHV0ZU1pbmltdW1XaWR0aDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBt
YXhpbXVtV2lkdGgoKQogICAgIHsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMga2luZCBvZiBh
cmJpdHJhcnkgYW5kIGlkZWFsbHkgd291bGQgYmUgYSBtb3JlIGNvbXBsZXggY2FsY3VsYXRpb24g
YmFzZWQgb24gdGhlCiAgICAgICAgIC8vIGF2YWlsYWJsZSBzcGFjZSBmb3IgdGhlIHNpYmxpbmcg
ZWxlbWVudHMuCiAgICAgICAgIHJldHVybiBNYXRoLnJvdW5kKHdpbmRvdy5pbm5lcldpZHRoIC8g
Myk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgd2lkdGgoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX2VsZW1lbnQub2Zmc2V0V2lkdGg7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQg
d2lkdGgobmV3V2lkdGgpCiAgICAgewpAQCAtMTgxLDEyICsxNjMsMTIgQEAgV2ViSW5zcGVjdG9y
LlNpZGViYXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRTaWRlYmFy
UGFuZWwud2lkdGhEaWRDaGFuZ2UoKTsKIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xp
c3RlbmVycyhXZWJJbnNwZWN0b3IuU2lkZWJhci5FdmVudC5XaWR0aERpZENoYW5nZSk7Ci0gICAg
fSwKKyAgICB9CiAKICAgICBnZXQgY29sbGFwc2VkKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhXZWJJbnNwZWN0b3IuU2lkZWJhci5Db2xs
YXBzZWRTdHlsZUNsYXNzTmFtZSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgY29sbGFwc2Vk
KGZsYWcpCiAgICAgewpAQCAtMjExLDI0ICsxOTMsMjQgQEAgV2ViSW5zcGVjdG9yLlNpZGViYXIu
cHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdl
Ykluc3BlY3Rvci5TaWRlYmFyLkV2ZW50LkNvbGxhcHNlZFN0YXRlRGlkQ2hhbmdlKTsKICAgICAg
ICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlNpZGViYXIuRXZl
bnQuV2lkdGhEaWRDaGFuZ2UpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNpZGViYXJQYW5l
bHMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3NpZGViYXJQYW5lbHM7Ci0gICAgfSwK
KyAgICB9CiAKICAgICBnZXQgZWxlbWVudCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5f
ZWxlbWVudDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzaWRlKCkKICAgICB7CiAgICAgICAg
IHJldHVybiB0aGlzLl9zaWRlOwotICAgIH0sCisgICAgfQogCi0gICAgZmluZFNpZGViYXJQYW5l
bDogZnVuY3Rpb24oc2lkZWJhclBhbmVsT3JJZGVudGlmaWVyT3JJbmRleCkKKyAgICBmaW5kU2lk
ZWJhclBhbmVsKHNpZGViYXJQYW5lbE9ySWRlbnRpZmllck9ySW5kZXgpCiAgICAgewogICAgICAg
ICB2YXIgc2lkZWJhclBhbmVsID0gbnVsbDsKIApAQCAtMjQ3LDE2ICsyMjksMTYgQEAgV2ViSW5z
cGVjdG9yLlNpZGViYXIucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJu
IHNpZGViYXJQYW5lbDsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByb3RlY3RlZAogCi0gICAg
cmVzaXplckRyYWdTdGFydGVkOiBmdW5jdGlvbihyZXNpemVyKQorICAgIHJlc2l6ZXJEcmFnU3Rh
cnRlZChyZXNpemVyKQogICAgIHsKICAgICAgICAgdGhpcy5fd2lkdGhCZWZvcmVSZXNpemUgPSB0
aGlzLndpZHRoOwotICAgIH0sCisgICAgfQogCi0gICAgcmVzaXplckRyYWdnaW5nOiBmdW5jdGlv
bihyZXNpemVyLCBwb3NpdGlvbkRlbHRhKQorICAgIHJlc2l6ZXJEcmFnZ2luZyhyZXNpemVyLCBw
b3NpdGlvbkRlbHRhKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3NpZGUgPT09IFdlYkluc3Bl
Y3Rvci5TaWRlYmFyLlNpZGVzLkxlZnQpCiAgICAgICAgICAgICBwb3NpdGlvbkRlbHRhICo9IC0x
OwpAQCAtMjY0LDE5ICsyNDYsMzEgQEAgV2ViSW5zcGVjdG9yLlNpZGViYXIucHJvdG90eXBlID0g
ewogICAgICAgICB2YXIgbmV3V2lkdGggPSBwb3NpdGlvbkRlbHRhICsgdGhpcy5fd2lkdGhCZWZv
cmVSZXNpemU7CiAgICAgICAgIHRoaXMud2lkdGggPSBuZXdXaWR0aDsKICAgICAgICAgdGhpcy5j
b2xsYXBzZWQgPSAobmV3V2lkdGggPCAodGhpcy5taW5pbXVtV2lkdGggLyAyKSk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICByZXNpemVyRHJhZ0VuZGVkOiBmdW5jdGlvbihyZXNpemVyKQorICAgIHJl
c2l6ZXJEcmFnRW5kZWQocmVzaXplcikKICAgICB7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl93aWR0
aEJlZm9yZVJlc2l6ZTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9u
YXZpZ2F0aW9uSXRlbVNlbGVjdGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfbmF2aWdhdGlvbkl0
ZW1TZWxlY3RlZChldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuc2VsZWN0ZWRTaWRlYmFyUGFu
ZWwgPSBldmVudC50YXJnZXQuc2VsZWN0ZWROYXZpZ2F0aW9uSXRlbSA/IGV2ZW50LnRhcmdldC5z
ZWxlY3RlZE5hdmlnYXRpb25JdGVtLmlkZW50aWZpZXIgOiBudWxsOwogICAgIH0KIH07CiAKLVdl
Ykluc3BlY3Rvci5TaWRlYmFyLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2Jq
ZWN0LnByb3RvdHlwZTsKK1dlYkluc3BlY3Rvci5TaWRlYmFyLkNvbGxhcHNlZFN0eWxlQ2xhc3NO
YW1lID0gImNvbGxhcHNlZCI7CitXZWJJbnNwZWN0b3IuU2lkZWJhci5BYnNvbHV0ZU1pbmltdW1X
aWR0aCA9IDIwMDsKKworV2ViSW5zcGVjdG9yLlNpZGViYXIuU2lkZXMgPSB7CisgICAgUmlnaHQ6
ICJyaWdodCIsCisgICAgTGVmdDogImxlZnQiCit9OworCitXZWJJbnNwZWN0b3IuU2lkZWJhci5F
dmVudCA9IHsKKyAgICBTaWRlYmFyUGFuZWxTZWxlY3RlZDogInNpZGViYXItc2lkZWJhci1wYW5l
bC1zZWxlY3RlZCIsCisgICAgQ29sbGFwc2VkU3RhdGVEaWRDaGFuZ2U6ICJzaWRlYmFyLXNpZGVi
YXItY29sbGFwc2VkLXN0YXRlLWRpZC1jaGFuZ2UiLAorICAgIFdpZHRoRGlkQ2hhbmdlOiAic2lk
ZWJhci13aWR0aC1kaWQtY2hhbmdlIiwKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TaWRlYmFyUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TaWRlYmFyUGFuZWwuanMKaW5kZXggMjc3ODRl
N2ZmNTc0N2Y2MzdjYjc5Yzg3NWQ2ZTRjOGQyOWE2NTNjOS4uN2NlMDJhMjU5ZjFiZGYzZDgyMWIw
MGM3MGQ3Yzg3OWQzMWRiMDg3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvU2lkZWJhclBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NpZGViYXJQYW5lbC5qcwpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsNjggKzIzLDYxIEBA
CiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9y
LlNpZGViYXJQYW5lbCA9IGZ1bmN0aW9uKGlkZW50aWZpZXIsIGRpc3BsYXlOYW1lLCBzaG93VG9v
bFRpcCwgaGlkZVRvb2xUaXAsIGltYWdlLCBlbGVtZW50LCByb2xlLCBsYWJlbCkKK1dlYkluc3Bl
Y3Rvci5TaWRlYmFyUGFuZWwgPSBjbGFzcyBTaWRlYmFyUGFuZWwgZXh0ZW5kcyBXZWJJbnNwZWN0
b3IuT2JqZWN0CiB7Ci0gICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rv
ci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCi0gICAgLy8gV2ViSW5zcGVjdG9y
Lk9iamVjdC5jYWxsKHRoaXMpOwotCi0gICAgdGhpcy5faWRlbnRpZmllciA9IGlkZW50aWZpZXI7
CisgICAgY29uc3RydWN0b3IoaWRlbnRpZmllciwgZGlzcGxheU5hbWUsIHNob3dUb29sVGlwLCBo
aWRlVG9vbFRpcCwgaW1hZ2UsIGVsZW1lbnQsIHJvbGUsIGxhYmVsKQorICAgIHsKKyAgICAgICAg
c3VwZXIoKTsKIAotICAgIHRoaXMuX3Rvb2xiYXJJdGVtID0gbmV3IFdlYkluc3BlY3Rvci5BY3Rp
dmF0ZUJ1dHRvblRvb2xiYXJJdGVtKGlkZW50aWZpZXIsIHNob3dUb29sVGlwLCBoaWRlVG9vbFRp
cCwgZGlzcGxheU5hbWUsIGltYWdlLCBudWxsLCAidGFiIik7Ci0gICAgdGhpcy5fdG9vbGJhckl0
ZW0uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZl
bnQuQ2xpY2tlZCwgdGhpcy50b2dnbGUsIHRoaXMpOwotICAgIHRoaXMuX3Rvb2xiYXJJdGVtLmVu
YWJsZWQgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5faWRlbnRpZmllciA9IGlkZW50aWZpZXI7CiAK
LSAgICB0aGlzLl9lbGVtZW50ID0gZWxlbWVudCB8fCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKTsKLSAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlNpZGVi
YXJQYW5lbC5TdHlsZUNsYXNzTmFtZSk7Ci0gICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRk
KGlkZW50aWZpZXIpOworICAgICAgICB0aGlzLl90b29sYmFySXRlbSA9IG5ldyBXZWJJbnNwZWN0
b3IuQWN0aXZhdGVCdXR0b25Ub29sYmFySXRlbShpZGVudGlmaWVyLCBzaG93VG9vbFRpcCwgaGlk
ZVRvb2xUaXAsIGRpc3BsYXlOYW1lLCBpbWFnZSwgbnVsbCwgInRhYiIpOworICAgICAgICB0aGlz
Ll90b29sYmFySXRlbS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0
aW9uSXRlbS5FdmVudC5DbGlja2VkLCB0aGlzLnRvZ2dsZSwgdGhpcyk7CisgICAgICAgIHRoaXMu
X3Rvb2xiYXJJdGVtLmVuYWJsZWQgPSBmYWxzZTsKIAotICAgIHRoaXMuX2VsZW1lbnQuc2V0QXR0
cmlidXRlKCJyb2xlIiwgcm9sZSB8fCAiZ3JvdXAiKTsKLSAgICB0aGlzLl9lbGVtZW50LnNldEF0
dHJpYnV0ZSgiYXJpYS1sYWJlbCIsIGxhYmVsIHx8IGRpc3BsYXlOYW1lKTsKKyAgICAgICAgdGhp
cy5fZWxlbWVudCA9IGVsZW1lbnQgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Cisg
ICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgicGFuZWwiKTsKKyAgICAgICAgdGhp
cy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKGlkZW50aWZpZXIpOwogCi0gICAgdGhpcy5fY29udGVu
dEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICB0aGlzLl9jb250
ZW50RWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuU2lkZWJhclBhbmVsLkNvbnRlbnRF
bGVtZW50U3R5bGVDbGFzc05hbWU7Ci0gICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlz
Ll9jb250ZW50RWxlbWVudCk7Ci19OworICAgICAgICB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0
ZSgicm9sZSIsIHJvbGUgfHwgImdyb3VwIik7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuc2V0QXR0
cmlidXRlKCJhcmlhLWxhYmVsIiwgbGFiZWwgfHwgZGlzcGxheU5hbWUpOwogCi1XZWJJbnNwZWN0
b3IuU2lkZWJhclBhbmVsLlN0eWxlQ2xhc3NOYW1lID0gInBhbmVsIjsKLVdlYkluc3BlY3Rvci5T
aWRlYmFyUGFuZWwuU2VsZWN0ZWRTdHlsZUNsYXNzTmFtZSA9ICJzZWxlY3RlZCI7Ci1XZWJJbnNw
ZWN0b3IuU2lkZWJhclBhbmVsLkNvbnRlbnRFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAiY29udGVu
dCI7Ci0KLVdlYkluc3BlY3Rvci5TaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewotICAgIGNvbnN0
cnVjdG9yOiBXZWJJbnNwZWN0b3IuU2lkZWJhclBhbmVsLAotICAgIF9fcHJvdG9fXzogV2ViSW5z
cGVjdG9yLk9iamVjdC5wcm90b3R5cGUsCisgICAgICAgIHRoaXMuX2NvbnRlbnRFbGVtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuX2NvbnRlbnRFbGVt
ZW50LmNsYXNzTmFtZSA9ICJjb250ZW50IjsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRD
aGlsZCh0aGlzLl9jb250ZW50RWxlbWVudCk7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAg
ICBnZXQgaWRlbnRpZmllcigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5faWRlbnRpZmll
cjsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCB0b29sYmFySXRlbSgpCiAgICAgewogICAgICAg
ICByZXR1cm4gdGhpcy5fdG9vbGJhckl0ZW07Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZWxl
bWVudCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudDsKLSAgICB9LAorICAg
IH0KIAogICAgIGdldCBjb250ZW50RWxlbWVudCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5fY29udGVudEVsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgdmlzaWJsZSgpCiAg
ICAgewogICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZCAmJiB0aGlzLl9wYXJlbnRTaWRlYmFy
ICYmICF0aGlzLl9wYXJlbnRTaWRlYmFyLmNvbGxhcHNlZDsKLSAgICB9LAorICAgIH0KIAogICAg
IGdldCBzZWxlY3RlZCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudC5jbGFz
c0xpc3QuY29udGFpbnMoV2ViSW5zcGVjdG9yLlNpZGViYXJQYW5lbC5TZWxlY3RlZFN0eWxlQ2xh
c3NOYW1lKTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBzZWxlY3RlZChmbGFnKQogICAgIHsK
QEAgLTkyLDc1ICs4NSw3NyBAQCBXZWJJbnNwZWN0b3IuU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3Iu
U2lkZWJhclBhbmVsLlNlbGVjdGVkU3R5bGVDbGFzc05hbWUpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLlNpZGVi
YXJQYW5lbC5TZWxlY3RlZFN0eWxlQ2xhc3NOYW1lKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCBwYXJlbnRTaWRlYmFyKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9wYXJlbnRTaWRl
YmFyOwotICAgIH0sCisgICAgfQogCi0gICAgc2hvdzogZnVuY3Rpb24oKQorICAgIHNob3coKQog
ICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9wYXJlbnRTaWRlYmFyKQogICAgICAgICAgICAgcmV0
dXJuOwogCiAgICAgICAgIHRoaXMuX3BhcmVudFNpZGViYXIuY29sbGFwc2VkID0gZmFsc2U7CiAg
ICAgICAgIHRoaXMuX3BhcmVudFNpZGViYXIuc2VsZWN0ZWRTaWRlYmFyUGFuZWwgPSB0aGlzOwot
ICAgIH0sCisgICAgfQogCi0gICAgaGlkZTogZnVuY3Rpb24oKQorICAgIGhpZGUoKQogICAgIHsK
ICAgICAgICAgaWYgKCF0aGlzLl9wYXJlbnRTaWRlYmFyKQogICAgICAgICAgICAgcmV0dXJuOwog
CiAgICAgICAgIHRoaXMuX3BhcmVudFNpZGViYXIuY29sbGFwc2VkID0gdHJ1ZTsKICAgICAgICAg
dGhpcy5fcGFyZW50U2lkZWJhci5zZWxlY3RlZFNpZGViYXJQYW5lbCA9IG51bGw7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICB0b2dnbGU6IGZ1bmN0aW9uKCkKKyAgICB0b2dnbGUoKQogICAgIHsKICAg
ICAgICAgaWYgKHRoaXMudmlzaWJsZSkKICAgICAgICAgICAgIHRoaXMuaGlkZSgpOwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICB0aGlzLnNob3coKTsKLSAgICB9LAorICAgIH0KIAotICAgIGFk
ZGVkOiBmdW5jdGlvbigpCisgICAgYWRkZWQoKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3Nl
cnQodGhpcy5fcGFyZW50U2lkZWJhcik7CiAgICAgICAgIHRoaXMuX3Rvb2xiYXJJdGVtLmVuYWJs
ZWQgPSB0cnVlOwogICAgICAgICB0aGlzLl90b29sYmFySXRlbS5hY3RpdmF0ZWQgPSB0aGlzLnZp
c2libGU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZW1vdmVkOiBmdW5jdGlvbigpCisgICAgcmVt
b3ZlZCgpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fcGFyZW50U2lkZWJh
cik7CiAgICAgICAgIHRoaXMuX3Rvb2xiYXJJdGVtLmVuYWJsZWQgPSBmYWxzZTsKICAgICAgICAg
dGhpcy5fdG9vbGJhckl0ZW0uYWN0aXZhdGVkID0gZmFsc2U7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICB3aWxsUmVtb3ZlOiBmdW5jdGlvbigpCisgICAgd2lsbFJlbW92ZSgpCiAgICAgewogICAgICAg
ICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgotICAgIH0sCisgICAgfQogCi0gICAgc2hv
d246IGZ1bmN0aW9uKCkKKyAgICBzaG93bigpCiAgICAgewogICAgICAgICAvLyBJbXBsZW1lbnRl
ZCBieSBzdWJjbGFzc2VzLgotICAgIH0sCisgICAgfQogCi0gICAgaGlkZGVuOiBmdW5jdGlvbigp
CisgICAgaGlkZGVuKCkKICAgICB7CiAgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNz
ZXMuCi0gICAgfSwKKyAgICB9CiAKLSAgICB3aWR0aERpZENoYW5nZTogZnVuY3Rpb24oKQorICAg
IHdpZHRoRGlkQ2hhbmdlKCkKICAgICB7CiAgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNs
YXNzZXMuCi0gICAgfSwKKyAgICB9CiAKLSAgICB2aXNpYmlsaXR5RGlkQ2hhbmdlOiBmdW5jdGlv
bigpCisgICAgdmlzaWJpbGl0eURpZENoYW5nZSgpCiAgICAgewogICAgICAgICB0aGlzLl90b29s
YmFySXRlbS5hY3RpdmF0ZWQgPSB0aGlzLnZpc2libGU7CiAgICAgfQogfTsKKworV2ViSW5zcGVj
dG9yLlNpZGViYXJQYW5lbC5TZWxlY3RlZFN0eWxlQ2xhc3NOYW1lID0gInNlbGVjdGVkIjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVs
aW5lU2lkZWJhclBhbmVsLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvVGltZWxpbmVTaWRlYmFyUGFuZWwuanMKaW5kZXggNWI4YzczZGIwMWU4MTljZTkxZGVi
NjczNTJjODBkYjc3MTU4YTcxMy4uN2U4ZDRlZTZkNDRlMzEyMjA2MGNkZjk5MjkyNTA3ZWZmZmI0
ZDMzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvVGltZWxpbmVTaWRlYmFyUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVTaWRlYmFyUGFuZWwuanMKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDE1NSArMjMsMTMw
IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVj
dG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsID0gZnVuY3Rpb24oKQorV2ViSW5zcGVjdG9yLlRpbWVs
aW5lU2lkZWJhclBhbmVsID0gY2xhc3MgVGltZWxpbmVTaWRlYmFyUGFuZWwgZXh0ZW5kcyBXZWJJ
bnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbAogewotICAgIFdlYkluc3BlY3Rvci5OYXZp
Z2F0aW9uU2lkZWJhclBhbmVsLmNhbGwodGhpcywgInRpbWVsaW5lIiwgV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJUaW1lbGluZXMiKSwgIkltYWdlcy9OYXZpZ2F0aW9uSXRlbVN0b3B3YXRjaC5zdmci
LCAiMiIpOwotCi0gICAgdGhpcy5fdGltZWxpbmVFdmVudHNUaXRsZUJhckVsZW1lbnQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICB0aGlzLl90aW1lbGluZUV2ZW50c1RpdGxl
QmFyRWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5l
bC5UaXRsZUJhclN0eWxlQ2xhc3MpOwotICAgIHRoaXMuX3RpbWVsaW5lRXZlbnRzVGl0bGVCYXJF
bGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLlRp
bWVsaW5lRXZlbnRzVGl0bGVCYXJTdHlsZUNsYXNzKTsKLSAgICB0aGlzLmVsZW1lbnQuaW5zZXJ0
QmVmb3JlKHRoaXMuX3RpbWVsaW5lRXZlbnRzVGl0bGVCYXJFbGVtZW50LCB0aGlzLmVsZW1lbnQu
Zmlyc3RDaGlsZCk7Ci0KLSAgICB0aGlzLmNvbnRlbnRUcmVlT3V0bGluZUxhYmVsID0gIiI7Ci0K
LSAgICB0aGlzLl90aW1lbGluZXNDb250ZW50Q29udGFpbmVyRWxlbWVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuX3RpbWVsaW5lc0NvbnRlbnRDb250YWluZXJF
bGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLlRp
bWVsaW5lc0NvbnRlbnRDb250YWluZXJTdHlsZUNsYXNzKTsKLSAgICB0aGlzLmVsZW1lbnQuaW5z
ZXJ0QmVmb3JlKHRoaXMuX3RpbWVsaW5lc0NvbnRlbnRDb250YWluZXJFbGVtZW50LCB0aGlzLmVs
ZW1lbnQuZmlyc3RDaGlsZCk7Ci0KLSAgICB0aGlzLl9kaXNwbGF5ZWRSZWNvcmRpbmcgPSBudWxs
OwotICAgIHRoaXMuX2Rpc3BsYXllZENvbnRlbnRWaWV3ID0gbnVsbDsKLQotICAgIC8vIE1haW50
YWluIGFuIGludmlzaWJsZSB0cmVlIG91dGxpbmUgY29udGFpbmluZyB0cmVlIGVsZW1lbnRzIGZv
ciBhbGwgcmVjb3JkaW5ncy4KLSAgICAvLyBUaGUgdmlzaWJsZSByZWNvcmRpbmcncyB0cmVlIGVs
ZW1lbnQgaXMgc2VsZWN0ZWQgd2hlbiB0aGUgY29udGVudCB2aWV3IGNoYW5nZXMuCi0gICAgdGhp
cy5fcmVjb3JkaW5nVHJlZUVsZW1lbnRNYXAgPSBuZXcgTWFwOwotICAgIHRoaXMuX3JlY29yZGlu
Z3NUcmVlT3V0bGluZSA9IHRoaXMuY3JlYXRlQ29udGVudFRyZWVPdXRsaW5lKHRydWUsIHRydWUp
OwotICAgIHRoaXMuX3JlY29yZGluZ3NUcmVlT3V0bGluZS5lbGVtZW50LmNsYXNzTGlzdC5hZGQo
V2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwuSGlkZURpc2Nsb3N1cmVCdXR0b25z
U3R5bGVDbGFzc05hbWUpOwotICAgIHRoaXMuX3JlY29yZGluZ3NUcmVlT3V0bGluZS5lbGVtZW50
LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwuQ29udGVu
dFRyZWVPdXRsaW5lRWxlbWVudEhpZGRlblN0eWxlQ2xhc3NOYW1lKTsKLSAgICB0aGlzLl9yZWNv
cmRpbmdzVHJlZU91dGxpbmUub25zZWxlY3QgPSB0aGlzLl9yZWNvcmRpbmdzVHJlZUVsZW1lbnRT
ZWxlY3RlZC5iaW5kKHRoaXMpOwotICAgIHRoaXMuX3RpbWVsaW5lc0NvbnRlbnRDb250YWluZXJF
bGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3JlY29yZGluZ3NUcmVlT3V0bGluZS5lbGVtZW50KTsK
LQotICAgIC8vIE1haW50YWluIGEgdHJlZSBvdXRsaW5lIHdpdGggdHJlZSBlbGVtZW50cyBmb3Ig
ZWFjaCB0aW1lbGluZSBvZiB0aGUgc2VsZWN0ZWQgcmVjb3JkaW5nLgotICAgIHRoaXMuX3RpbWVs
aW5lc1RyZWVPdXRsaW5lID0gdGhpcy5jcmVhdGVDb250ZW50VHJlZU91dGxpbmUodHJ1ZSwgdHJ1
ZSk7Ci0gICAgdGhpcy5fdGltZWxpbmVzVHJlZU91dGxpbmUuZWxlbWVudC5jbGFzc0xpc3QuYWRk
KFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLkhpZGVEaXNjbG9zdXJlQnV0dG9u
c1N0eWxlQ2xhc3NOYW1lKTsKLSAgICB0aGlzLl90aW1lbGluZXNUcmVlT3V0bGluZS5vbnNlbGVj
dCA9IHRoaXMuX3RpbWVsaW5lc1RyZWVFbGVtZW50U2VsZWN0ZWQuYmluZCh0aGlzKTsKLSAgICB0
aGlzLl90aW1lbGluZXNDb250ZW50Q29udGFpbmVyRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl90
aW1lbGluZXNUcmVlT3V0bGluZS5lbGVtZW50KTsKLQotICAgIHRoaXMuX3RpbWVsaW5lVHJlZUVs
ZW1lbnRNYXAgPSBuZXcgTWFwOwotCi0gICAgdmFyIHRpbWVsaW5lc1RpdGxlQmFyRWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRpbWVsaW5lc1RpdGxlQmFyRWxl
bWVudC50ZXh0Q29udGVudCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiVGltZWxpbmVzIik7Ci0g
ICAgdGltZWxpbmVzVGl0bGVCYXJFbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlRp
bWVsaW5lU2lkZWJhclBhbmVsLlRpdGxlQmFyU3R5bGVDbGFzcyk7Ci0gICAgdGltZWxpbmVzVGl0
bGVCYXJFbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBh
bmVsLlRpbWVsaW5lc1RpdGxlQmFyU3R5bGVDbGFzcyk7Ci0gICAgdGhpcy5lbGVtZW50Lmluc2Vy
dEJlZm9yZSh0aW1lbGluZXNUaXRsZUJhckVsZW1lbnQsIHRoaXMuZWxlbWVudC5maXJzdENoaWxk
KTsKLQotICAgIHZhciBzdGF0dXNCYXJFbGVtZW50ID0gdGhpcy5fc3RhdHVzQmFyRWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHN0YXR1c0JhckVsZW1lbnQuY2xh
c3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuU3RhdHVzQmFyU3R5
bGVDbGFzcyk7Ci0gICAgdGhpcy5lbGVtZW50Lmluc2VydEJlZm9yZShzdGF0dXNCYXJFbGVtZW50
LCB0aGlzLmVsZW1lbnQuZmlyc3RDaGlsZCk7Ci0KLSAgICB0aGlzLl9yZWNvcmRHbHlwaEVsZW1l
bnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICB0aGlzLl9yZWNvcmRHbHlw
aEVsZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLlJl
Y29yZEdseXBoU3R5bGVDbGFzczsKLSAgICB0aGlzLl9yZWNvcmRHbHlwaEVsZW1lbnQuYWRkRXZl
bnRMaXN0ZW5lcigibW91c2VvdmVyIiwgdGhpcy5fcmVjb3JkR2x5cGhNb3VzZWRPdmVyLmJpbmQo
dGhpcykpOwotICAgIHRoaXMuX3JlY29yZEdseXBoRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJt
b3VzZW91dCIsIHRoaXMuX3JlY29yZEdseXBoTW91c2VkT3V0LmJpbmQodGhpcykpOwotICAgIHRo
aXMuX3JlY29yZEdseXBoRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX3Jl
Y29yZEdseXBoQ2xpY2tlZC5iaW5kKHRoaXMpKTsKLSAgICBzdGF0dXNCYXJFbGVtZW50LmFwcGVu
ZENoaWxkKHRoaXMuX3JlY29yZEdseXBoRWxlbWVudCk7Ci0KLSAgICB0aGlzLl9yZWNvcmRTdGF0
dXNFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5fcmVj
b3JkU3RhdHVzRWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFy
UGFuZWwuUmVjb3JkU3RhdHVzU3R5bGVDbGFzczsKLSAgICBzdGF0dXNCYXJFbGVtZW50LmFwcGVu
ZENoaWxkKHRoaXMuX3JlY29yZFN0YXR1c0VsZW1lbnQpOwotCi0gICAgV2ViSW5zcGVjdG9yLnNo
b3dSZXBsYXlJbnRlcmZhY2VTZXR0aW5nLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNl
dHRpbmcuRXZlbnQuQ2hhbmdlZCwgdGhpcy5fdXBkYXRlUmVwbGF5SW50ZXJmYWNlVmlzaWJpbGl0
eSwgdGhpcyk7Ci0KLSAgICAvLyBXZSBhbHdheXMgY3JlYXRlIGEgbmF2aWdhdGlvbiBiYXI7IGl0
cyB2aXNpYmlsaXR5IGlzIGNvbnRyb2xsZWQgYnkgV2ViSW5zcGVjdG9yLnNob3dSZXBsYXlJbnRl
cmZhY2VTZXR0aW5nLgotICAgIHRoaXMuX25hdmlnYXRpb25CYXIgPSBuZXcgV2ViSW5zcGVjdG9y
Lk5hdmlnYXRpb25CYXI7Ci0gICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX25hdmln
YXRpb25CYXIuZWxlbWVudCk7Ci0KLSAgICB2YXIgdG9vbFRpcCA9IFdlYkluc3BlY3Rvci5VSVN0
cmluZygiQmVnaW4gQ2FwdHVyaW5nIik7Ci0gICAgdmFyIGFsdFRvb2xUaXAgPSBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIkVuZCBDYXB0dXJpbmciKTsKLSAgICB0aGlzLl9yZXBsYXlDYXB0dXJlQnV0
dG9uSXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbSgi
cmVwbGF5LWNhcHR1cmUiLCB0b29sVGlwLCBhbHRUb29sVGlwLCAiSW1hZ2VzL0NpcmNsZS5zdmci
LCAxNiwgMTYpOwotICAgIHRoaXMuX3JlcGxheUNhcHR1cmVCdXR0b25JdGVtLmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQsIHRo
aXMuX3JlcGxheUNhcHR1cmVCdXR0b25DbGlja2VkLCB0aGlzKTsKLSAgICB0aGlzLl9yZXBsYXlD
YXB0dXJlQnV0dG9uSXRlbS5lbmFibGVkID0gdHJ1ZTsKLSAgICB0aGlzLl9uYXZpZ2F0aW9uQmFy
LmFkZE5hdmlnYXRpb25JdGVtKHRoaXMuX3JlcGxheUNhcHR1cmVCdXR0b25JdGVtKTsKLQotICAg
IHZhciBwYXVzZUltYWdlLCByZXN1bWVJbWFnZTsKLSAgICBpZiAoV2ViSW5zcGVjdG9yLlBsYXRm
b3JtLmlzTGVnYWN5TWFjT1MpIHsKLSAgICAgICAgcGF1c2VJbWFnZSA9IHtzcmM6ICJJbWFnZXMv
TGVnYWN5L1BhdXNlLnN2ZyIsIHdpZHRoOiAxNiwgaGVpZ2h0OiAxNn07Ci0gICAgICAgIHJlc3Vt
ZUltYWdlID0ge3NyYzogIkltYWdlcy9MZWdhY3kvUmVzdW1lLnN2ZyIsIHdpZHRoOiAxNiwgaGVp
Z2h0OiAxNn07Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgcGF1c2VJbWFnZSA9IHtzcmM6ICJJbWFn
ZXMvUGF1c2Uuc3ZnIiwgd2lkdGg6IDE1LCBoZWlnaHQ6IDE1fTsKLSAgICAgICAgcmVzdW1lSW1h
Z2UgPSB7c3JjOiAiSW1hZ2VzL1Jlc3VtZS5zdmciLCB3aWR0aDogMTUsIGhlaWdodDogMTV9Owot
ICAgIH0KLQotICAgIHRvb2xUaXAgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0YXJ0IFBsYXli
YWNrIik7Ci0gICAgYWx0VG9vbFRpcCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUGF1c2UgUGxh
eWJhY2siKTsKLSAgICB0aGlzLl9yZXBsYXlQYXVzZVJlc3VtZUJ1dHRvbkl0ZW0gPSBuZXcgV2Vi
SW5zcGVjdG9yLlRvZ2dsZUJ1dHRvbk5hdmlnYXRpb25JdGVtKCJyZXBsYXktcGF1c2UtcmVzdW1l
IiwgdG9vbFRpcCwgYWx0VG9vbFRpcCwgcmVzdW1lSW1hZ2Uuc3JjLCBwYXVzZUltYWdlLnNyYywg
cGF1c2VJbWFnZS53aWR0aCwgcGF1c2VJbWFnZS5oZWlnaHQsIHRydWUpOwotICAgIHRoaXMuX3Jl
cGxheVBhdXNlUmVzdW1lQnV0dG9uSXRlbS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5C
dXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCB0aGlzLl9yZXBsYXlQYXVzZVJlc3Vt
ZUJ1dHRvbkNsaWNrZWQsIHRoaXMpOwotICAgIHRoaXMuX3JlcGxheVBhdXNlUmVzdW1lQnV0dG9u
SXRlbS5lbmFibGVkID0gZmFsc2U7Ci0gICAgdGhpcy5fbmF2aWdhdGlvbkJhci5hZGROYXZpZ2F0
aW9uSXRlbSh0aGlzLl9yZXBsYXlQYXVzZVJlc3VtZUJ1dHRvbkl0ZW0pOwotCi0gICAgV2ViSW5z
cGVjdG9yLnJlcGxheU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUmVwbGF5
TWFuYWdlci5FdmVudC5DYXB0dXJlU3RhcnRlZCwgdGhpcy5fY2FwdHVyZVN0YXJ0ZWQsIHRoaXMp
OwotICAgIFdlYkluc3BlY3Rvci5yZXBsYXlNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLlJlcGxheU1hbmFnZXIuRXZlbnQuQ2FwdHVyZVN0b3BwZWQsIHRoaXMuX2NhcHR1cmVT
dG9wcGVkLCB0aGlzKTsKLQotICAgIHRoaXMuX3N0YXR1c0JhckVsZW1lbnQub25jb250ZXh0bWVu
dSA9IHRoaXMuX2NvbnRleHRNZW51TmF2aWdhdGlvbkJhck9yU3RhdHVzQmFyLmJpbmQodGhpcyk7
Ci0gICAgdGhpcy5fbmF2aWdhdGlvbkJhci5lbGVtZW50Lm9uY29udGV4dG1lbnUgPSB0aGlzLl9j
b250ZXh0TWVudU5hdmlnYXRpb25CYXJPclN0YXR1c0Jhci5iaW5kKHRoaXMpOwotICAgIHRoaXMu
X3VwZGF0ZVJlcGxheUludGVyZmFjZVZpc2liaWxpdHkoKTsKLQotICAgIFdlYkluc3BlY3Rvci50
aW1lbGluZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmVNYW5h
Z2VyLkV2ZW50LlJlY29yZGluZ0NyZWF0ZWQsIHRoaXMuX3JlY29yZGluZ0NyZWF0ZWQsIHRoaXMp
OwotICAgIFdlYkluc3BlY3Rvci50aW1lbGluZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuVGltZWxpbmVNYW5hZ2VyLkV2ZW50LlJlY29yZGluZ0xvYWRlZCwgdGhpcy5fcmVj
b3JkaW5nTG9hZGVkLCB0aGlzKTsKLQotICAgIFdlYkluc3BlY3Rvci5jb250ZW50QnJvd3Nlci5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3Nlci5FdmVudC5DdXJyZW50
Q29udGVudFZpZXdEaWRDaGFuZ2UsIHRoaXMuX2NvbnRlbnRCcm93c2VyQ3VycmVudENvbnRlbnRW
aWV3RGlkQ2hhbmdlLCB0aGlzKTsKLSAgICBXZWJJbnNwZWN0b3IudGltZWxpbmVNYW5hZ2VyLmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFuYWdlci5FdmVudC5DYXB0dXJp
bmdTdGFydGVkLCB0aGlzLl9jYXB0dXJpbmdTdGFydGVkLCB0aGlzKTsKLSAgICBXZWJJbnNwZWN0
b3IudGltZWxpbmVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5l
TWFuYWdlci5FdmVudC5DYXB0dXJpbmdTdG9wcGVkLCB0aGlzLl9jYXB0dXJpbmdTdG9wcGVkLCB0
aGlzKTsKLX07CisgICAgY29uc3RydWN0b3IoKQorICAgIHsKKyAgICAgICAgc3VwZXIoInRpbWVs
aW5lIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUaW1lbGluZXMiKSwgIkltYWdlcy9OYXZpZ2F0
aW9uSXRlbVN0b3B3YXRjaC5zdmciLCAiMiIpOworCisgICAgICAgIHRoaXMuX3RpbWVsaW5lRXZl
bnRzVGl0bGVCYXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAg
ICAgIHRoaXMuX3RpbWVsaW5lRXZlbnRzVGl0bGVCYXJFbGVtZW50LmNsYXNzTGlzdC5hZGQoV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLlRpdGxlQmFyU3R5bGVDbGFzcyk7CisgICAg
ICAgIHRoaXMuX3RpbWVsaW5lRXZlbnRzVGl0bGVCYXJFbGVtZW50LmNsYXNzTGlzdC5hZGQoV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLlRpbWVsaW5lRXZlbnRzVGl0bGVCYXJTdHls
ZUNsYXNzKTsKKyAgICAgICAgdGhpcy5lbGVtZW50Lmluc2VydEJlZm9yZSh0aGlzLl90aW1lbGlu
ZUV2ZW50c1RpdGxlQmFyRWxlbWVudCwgdGhpcy5lbGVtZW50LmZpcnN0Q2hpbGQpOworCisgICAg
ICAgIHRoaXMuY29udGVudFRyZWVPdXRsaW5lTGFiZWwgPSAiIjsKKworICAgICAgICB0aGlzLl90
aW1lbGluZXNDb250ZW50Q29udGFpbmVyRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOworICAgICAgICB0aGlzLl90aW1lbGluZXNDb250ZW50Q29udGFpbmVyRWxlbWVudC5j
bGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5UaW1lbGluZXND
b250ZW50Q29udGFpbmVyU3R5bGVDbGFzcyk7CisgICAgICAgIHRoaXMuZWxlbWVudC5pbnNlcnRC
ZWZvcmUodGhpcy5fdGltZWxpbmVzQ29udGVudENvbnRhaW5lckVsZW1lbnQsIHRoaXMuZWxlbWVu
dC5maXJzdENoaWxkKTsKKworICAgICAgICB0aGlzLl9kaXNwbGF5ZWRSZWNvcmRpbmcgPSBudWxs
OworICAgICAgICB0aGlzLl9kaXNwbGF5ZWRDb250ZW50VmlldyA9IG51bGw7CisKKyAgICAgICAg
Ly8gTWFpbnRhaW4gYW4gaW52aXNpYmxlIHRyZWUgb3V0bGluZSBjb250YWluaW5nIHRyZWUgZWxl
bWVudHMgZm9yIGFsbCByZWNvcmRpbmdzLgorICAgICAgICAvLyBUaGUgdmlzaWJsZSByZWNvcmRp
bmcncyB0cmVlIGVsZW1lbnQgaXMgc2VsZWN0ZWQgd2hlbiB0aGUgY29udGVudCB2aWV3IGNoYW5n
ZXMuCisgICAgICAgIHRoaXMuX3JlY29yZGluZ1RyZWVFbGVtZW50TWFwID0gbmV3IE1hcDsKKyAg
ICAgICAgdGhpcy5fcmVjb3JkaW5nc1RyZWVPdXRsaW5lID0gdGhpcy5jcmVhdGVDb250ZW50VHJl
ZU91dGxpbmUodHJ1ZSwgdHJ1ZSk7CisgICAgICAgIHRoaXMuX3JlY29yZGluZ3NUcmVlT3V0bGlu
ZS5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFu
ZWwuSGlkZURpc2Nsb3N1cmVCdXR0b25zU3R5bGVDbGFzc05hbWUpOworICAgICAgICB0aGlzLl9y
ZWNvcmRpbmdzVHJlZU91dGxpbmUuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5O
YXZpZ2F0aW9uU2lkZWJhclBhbmVsLkNvbnRlbnRUcmVlT3V0bGluZUVsZW1lbnRIaWRkZW5TdHls
ZUNsYXNzTmFtZSk7CisgICAgICAgIHRoaXMuX3JlY29yZGluZ3NUcmVlT3V0bGluZS5vbnNlbGVj
dCA9IHRoaXMuX3JlY29yZGluZ3NUcmVlRWxlbWVudFNlbGVjdGVkLmJpbmQodGhpcyk7CisgICAg
ICAgIHRoaXMuX3RpbWVsaW5lc0NvbnRlbnRDb250YWluZXJFbGVtZW50LmFwcGVuZENoaWxkKHRo
aXMuX3JlY29yZGluZ3NUcmVlT3V0bGluZS5lbGVtZW50KTsKKworICAgICAgICAvLyBNYWludGFp
biBhIHRyZWUgb3V0bGluZSB3aXRoIHRyZWUgZWxlbWVudHMgZm9yIGVhY2ggdGltZWxpbmUgb2Yg
dGhlIHNlbGVjdGVkIHJlY29yZGluZy4KKyAgICAgICAgdGhpcy5fdGltZWxpbmVzVHJlZU91dGxp
bmUgPSB0aGlzLmNyZWF0ZUNvbnRlbnRUcmVlT3V0bGluZSh0cnVlLCB0cnVlKTsKKyAgICAgICAg
dGhpcy5fdGltZWxpbmVzVHJlZU91dGxpbmUuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3Bl
Y3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLkhpZGVEaXNjbG9zdXJlQnV0dG9uc1N0eWxlQ2xh
c3NOYW1lKTsKKyAgICAgICAgdGhpcy5fdGltZWxpbmVzVHJlZU91dGxpbmUub25zZWxlY3QgPSB0
aGlzLl90aW1lbGluZXNUcmVlRWxlbWVudFNlbGVjdGVkLmJpbmQodGhpcyk7CisgICAgICAgIHRo
aXMuX3RpbWVsaW5lc0NvbnRlbnRDb250YWluZXJFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3Rp
bWVsaW5lc1RyZWVPdXRsaW5lLmVsZW1lbnQpOworCisgICAgICAgIHRoaXMuX3RpbWVsaW5lVHJl
ZUVsZW1lbnRNYXAgPSBuZXcgTWFwOworCisgICAgICAgIHZhciB0aW1lbGluZXNUaXRsZUJhckVs
ZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgdGltZWxpbmVz
VGl0bGVCYXJFbGVtZW50LnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUaW1l
bGluZXMiKTsKKyAgICAgICAgdGltZWxpbmVzVGl0bGVCYXJFbGVtZW50LmNsYXNzTGlzdC5hZGQo
V2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLlRpdGxlQmFyU3R5bGVDbGFzcyk7Cisg
ICAgICAgIHRpbWVsaW5lc1RpdGxlQmFyRWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rv
ci5UaW1lbGluZVNpZGViYXJQYW5lbC5UaW1lbGluZXNUaXRsZUJhclN0eWxlQ2xhc3MpOworICAg
ICAgICB0aGlzLmVsZW1lbnQuaW5zZXJ0QmVmb3JlKHRpbWVsaW5lc1RpdGxlQmFyRWxlbWVudCwg
dGhpcy5lbGVtZW50LmZpcnN0Q2hpbGQpOworCisgICAgICAgIHZhciBzdGF0dXNCYXJFbGVtZW50
ID0gdGhpcy5fc3RhdHVzQmFyRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
OworICAgICAgICBzdGF0dXNCYXJFbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlRp
bWVsaW5lU2lkZWJhclBhbmVsLlN0YXR1c0JhclN0eWxlQ2xhc3MpOworICAgICAgICB0aGlzLmVs
ZW1lbnQuaW5zZXJ0QmVmb3JlKHN0YXR1c0JhckVsZW1lbnQsIHRoaXMuZWxlbWVudC5maXJzdENo
aWxkKTsKKworICAgICAgICB0aGlzLl9yZWNvcmRHbHlwaEVsZW1lbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgdGhpcy5fcmVjb3JkR2x5cGhFbGVtZW50LmNsYXNz
TmFtZSA9IFdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5SZWNvcmRHbHlwaFN0eWxl
Q2xhc3M7CisgICAgICAgIHRoaXMuX3JlY29yZEdseXBoRWxlbWVudC5hZGRFdmVudExpc3RlbmVy
KCJtb3VzZW92ZXIiLCB0aGlzLl9yZWNvcmRHbHlwaE1vdXNlZE92ZXIuYmluZCh0aGlzKSk7Cisg
ICAgICAgIHRoaXMuX3JlY29yZEdseXBoRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW91
dCIsIHRoaXMuX3JlY29yZEdseXBoTW91c2VkT3V0LmJpbmQodGhpcykpOworICAgICAgICB0aGlz
Ll9yZWNvcmRHbHlwaEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9yZWNv
cmRHbHlwaENsaWNrZWQuYmluZCh0aGlzKSk7CisgICAgICAgIHN0YXR1c0JhckVsZW1lbnQuYXBw
ZW5kQ2hpbGQodGhpcy5fcmVjb3JkR2x5cGhFbGVtZW50KTsKKworICAgICAgICB0aGlzLl9yZWNv
cmRTdGF0dXNFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAg
IHRoaXMuX3JlY29yZFN0YXR1c0VsZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLlRpbWVs
aW5lU2lkZWJhclBhbmVsLlJlY29yZFN0YXR1c1N0eWxlQ2xhc3M7CisgICAgICAgIHN0YXR1c0Jh
ckVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fcmVjb3JkU3RhdHVzRWxlbWVudCk7CisKKyAgICAg
ICAgV2ViSW5zcGVjdG9yLnNob3dSZXBsYXlJbnRlcmZhY2VTZXR0aW5nLmFkZEV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLlNldHRpbmcuRXZlbnQuQ2hhbmdlZCwgdGhpcy5fdXBkYXRlUmVwbGF5
SW50ZXJmYWNlVmlzaWJpbGl0eSwgdGhpcyk7CisKKyAgICAgICAgLy8gV2UgYWx3YXlzIGNyZWF0
ZSBhIG5hdmlnYXRpb24gYmFyOyBpdHMgdmlzaWJpbGl0eSBpcyBjb250cm9sbGVkIGJ5IFdlYklu
c3BlY3Rvci5zaG93UmVwbGF5SW50ZXJmYWNlU2V0dGluZy4KKyAgICAgICAgdGhpcy5fbmF2aWdh
dGlvbkJhciA9IG5ldyBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhcjsKKyAgICAgICAgdGhpcy5l
bGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX25hdmlnYXRpb25CYXIuZWxlbWVudCk7CisKKyAgICAg
ICAgdmFyIHRvb2xUaXAgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkJlZ2luIENhcHR1cmluZyIp
OworICAgICAgICB2YXIgYWx0VG9vbFRpcCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRW5kIENh
cHR1cmluZyIpOworICAgICAgICB0aGlzLl9yZXBsYXlDYXB0dXJlQnV0dG9uSXRlbSA9IG5ldyBX
ZWJJbnNwZWN0b3IuQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbSgicmVwbGF5LWNhcHR1cmUi
LCB0b29sVGlwLCBhbHRUb29sVGlwLCAiSW1hZ2VzL0NpcmNsZS5zdmciLCAxNiwgMTYpOworICAg
ICAgICB0aGlzLl9yZXBsYXlDYXB0dXJlQnV0dG9uSXRlbS5hZGRFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCB0aGlzLl9yZXBsYXlD
YXB0dXJlQnV0dG9uQ2xpY2tlZCwgdGhpcyk7CisgICAgICAgIHRoaXMuX3JlcGxheUNhcHR1cmVC
dXR0b25JdGVtLmVuYWJsZWQgPSB0cnVlOworICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyLmFk
ZE5hdmlnYXRpb25JdGVtKHRoaXMuX3JlcGxheUNhcHR1cmVCdXR0b25JdGVtKTsKIAotV2ViSW5z
cGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLkhpZGRlblN0eWxlQ2xhc3NOYW1lID0gImhpZGRl
biI7Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuU3RhdHVzQmFyU3R5bGVDbGFz
cyA9ICJzdGF0dXMtYmFyIjsKLVdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5SZWNv
cmRHbHlwaFN0eWxlQ2xhc3MgPSAicmVjb3JkLWdseXBoIjsKLVdlYkluc3BlY3Rvci5UaW1lbGlu
ZVNpZGViYXJQYW5lbC5SZWNvcmRHbHlwaFJlY29yZGluZ1N0eWxlQ2xhc3MgPSAicmVjb3JkaW5n
IjsKLVdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5SZWNvcmRHbHlwaFJlY29yZGlu
Z0ZvcmNlZFN0eWxlQ2xhc3MgPSAiZm9yY2VkIjsKLVdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGVi
YXJQYW5lbC5SZWNvcmRTdGF0dXNTdHlsZUNsYXNzID0gInJlY29yZC1zdGF0dXMiOwotV2ViSW5z
cGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLlRpdGxlQmFyU3R5bGVDbGFzcyA9ICJ0aXRsZS1i
YXIiOwotV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLlRpbWVsaW5lc1RpdGxlQmFy
U3R5bGVDbGFzcyA9ICJ0aW1lbGluZXMiOwotV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBh
bmVsLlRpbWVsaW5lRXZlbnRzVGl0bGVCYXJTdHlsZUNsYXNzID0gInRpbWVsaW5lLWV2ZW50cyI7
Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuVGltZWxpbmVzQ29udGVudENvbnRh
aW5lclN0eWxlQ2xhc3MgPSAidGltZWxpbmVzLWNvbnRlbnQiOwotV2ViSW5zcGVjdG9yLlRpbWVs
aW5lU2lkZWJhclBhbmVsLkNsb3NlQnV0dG9uU3R5bGVDbGFzcyA9ICJjbG9zZS1idXR0b24iOwot
V2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLkxhcmdlSWNvblN0eWxlQ2xhc3MgPSAi
bGFyZ2UiOwotV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLlN0b3B3YXRjaEljb25T
dHlsZUNsYXNzID0gInN0b3B3YXRjaC1pY29uIjsKLVdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGVi
YXJQYW5lbC5OZXR3b3JrSWNvblN0eWxlQ2xhc3MgPSAibmV0d29yay1pY29uIjsKLVdlYkluc3Bl
Y3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5Db2xvcnNJY29uU3R5bGVDbGFzcyA9ICJjb2xvcnMt
aWNvbiI7Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuU2NyaXB0SWNvblN0eWxl
Q2xhc3MgPSAic2NyaXB0LWljb24iOwotV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVs
LlJ1bkxvb3BJY29uU3R5bGVDbGFzcyA9ICJydW5sb29wLWljb24iOwotV2ViSW5zcGVjdG9yLlRp
bWVsaW5lU2lkZWJhclBhbmVsLlRpbWVsaW5lUmVjb3JkaW5nQ29udGVudFZpZXdTaG93aW5nU3R5
bGVDbGFzcyA9ICJ0aW1lbGluZS1yZWNvcmRpbmctY29udGVudC12aWV3LXNob3dpbmciOworICAg
ICAgICB2YXIgcGF1c2VJbWFnZSwgcmVzdW1lSW1hZ2U7CisgICAgICAgIGlmIChXZWJJbnNwZWN0
b3IuUGxhdGZvcm0uaXNMZWdhY3lNYWNPUykgeworICAgICAgICAgICAgcGF1c2VJbWFnZSA9IHtz
cmM6ICJJbWFnZXMvTGVnYWN5L1BhdXNlLnN2ZyIsIHdpZHRoOiAxNiwgaGVpZ2h0OiAxNn07Cisg
ICAgICAgICAgICByZXN1bWVJbWFnZSA9IHtzcmM6ICJJbWFnZXMvTGVnYWN5L1Jlc3VtZS5zdmci
LCB3aWR0aDogMTYsIGhlaWdodDogMTZ9OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
cGF1c2VJbWFnZSA9IHtzcmM6ICJJbWFnZXMvUGF1c2Uuc3ZnIiwgd2lkdGg6IDE1LCBoZWlnaHQ6
IDE1fTsKKyAgICAgICAgICAgIHJlc3VtZUltYWdlID0ge3NyYzogIkltYWdlcy9SZXN1bWUuc3Zn
Iiwgd2lkdGg6IDE1LCBoZWlnaHQ6IDE1fTsKKyAgICAgICAgfQogCi1XZWJJbnNwZWN0b3IuVGlt
ZWxpbmVTaWRlYmFyUGFuZWwuU2hvd2luZ1RpbWVsaW5lUmVjb3JkaW5nQ29udGVudFZpZXdDb29r
aWVLZXkgPSAidGltZWxpbmUtc2lkZWJhci1wYW5lbC1zaG93aW5nLXRpbWVsaW5lLXJlY29yZGlu
Zy1jb250ZW50LXZpZXciOwotV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLlNlbGVj
dGVkVGltZWxpbmVWaWV3SWRlbnRpZmllckNvb2tpZUtleSA9ICJ0aW1lbGluZS1zaWRlYmFyLXBh
bmVsLXNlbGVjdGVkLXRpbWVsaW5lLXZpZXctaWRlbnRpZmllciI7Ci1XZWJJbnNwZWN0b3IuVGlt
ZWxpbmVTaWRlYmFyUGFuZWwuT3ZlcnZpZXdUaW1lbGluZUlkZW50aWZpZXJDb29raWVWYWx1ZSA9
ICJvdmVydmlldyI7CisgICAgICAgIHRvb2xUaXAgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0
YXJ0IFBsYXliYWNrIik7CisgICAgICAgIGFsdFRvb2xUaXAgPSBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIlBhdXNlIFBsYXliYWNrIik7CisgICAgICAgIHRoaXMuX3JlcGxheVBhdXNlUmVzdW1lQnV0
dG9uSXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuVG9nZ2xlQnV0dG9uTmF2aWdhdGlvbkl0ZW0oInJl
cGxheS1wYXVzZS1yZXN1bWUiLCB0b29sVGlwLCBhbHRUb29sVGlwLCByZXN1bWVJbWFnZS5zcmMs
IHBhdXNlSW1hZ2Uuc3JjLCBwYXVzZUltYWdlLndpZHRoLCBwYXVzZUltYWdlLmhlaWdodCwgdHJ1
ZSk7CisgICAgICAgIHRoaXMuX3JlcGxheVBhdXNlUmVzdW1lQnV0dG9uSXRlbS5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCB0
aGlzLl9yZXBsYXlQYXVzZVJlc3VtZUJ1dHRvbkNsaWNrZWQsIHRoaXMpOworICAgICAgICB0aGlz
Ll9yZXBsYXlQYXVzZVJlc3VtZUJ1dHRvbkl0ZW0uZW5hYmxlZCA9IGZhbHNlOworICAgICAgICB0
aGlzLl9uYXZpZ2F0aW9uQmFyLmFkZE5hdmlnYXRpb25JdGVtKHRoaXMuX3JlcGxheVBhdXNlUmVz
dW1lQnV0dG9uSXRlbSk7CiAKLVdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5wcm90
b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQ
YW5lbCwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVs
LnByb3RvdHlwZSwKKyAgICAgICAgV2ViSW5zcGVjdG9yLnJlcGxheU1hbmFnZXIuYWRkRXZlbnRM
aXN0ZW5lcihXZWJJbnNwZWN0b3IuUmVwbGF5TWFuYWdlci5FdmVudC5DYXB0dXJlU3RhcnRlZCwg
dGhpcy5fY2FwdHVyZVN0YXJ0ZWQsIHRoaXMpOworICAgICAgICBXZWJJbnNwZWN0b3IucmVwbGF5
TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5SZXBsYXlNYW5hZ2VyLkV2ZW50
LkNhcHR1cmVTdG9wcGVkLCB0aGlzLl9jYXB0dXJlU3RvcHBlZCwgdGhpcyk7CisKKyAgICAgICAg
dGhpcy5fc3RhdHVzQmFyRWxlbWVudC5vbmNvbnRleHRtZW51ID0gdGhpcy5fY29udGV4dE1lbnVO
YXZpZ2F0aW9uQmFyT3JTdGF0dXNCYXIuYmluZCh0aGlzKTsKKyAgICAgICAgdGhpcy5fbmF2aWdh
dGlvbkJhci5lbGVtZW50Lm9uY29udGV4dG1lbnUgPSB0aGlzLl9jb250ZXh0TWVudU5hdmlnYXRp
b25CYXJPclN0YXR1c0Jhci5iaW5kKHRoaXMpOworICAgICAgICB0aGlzLl91cGRhdGVSZXBsYXlJ
bnRlcmZhY2VWaXNpYmlsaXR5KCk7CisKKyAgICAgICAgV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFu
YWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIuRXZlbnQu
UmVjb3JkaW5nQ3JlYXRlZCwgdGhpcy5fcmVjb3JkaW5nQ3JlYXRlZCwgdGhpcyk7CisgICAgICAg
IFdlYkluc3BlY3Rvci50aW1lbGluZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuVGltZWxpbmVNYW5hZ2VyLkV2ZW50LlJlY29yZGluZ0xvYWRlZCwgdGhpcy5fcmVjb3JkaW5n
TG9hZGVkLCB0aGlzKTsKKworICAgICAgICBXZWJJbnNwZWN0b3IuY29udGVudEJyb3dzZXIuYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXIuRXZlbnQuQ3VycmVudENv
bnRlbnRWaWV3RGlkQ2hhbmdlLCB0aGlzLl9jb250ZW50QnJvd3NlckN1cnJlbnRDb250ZW50Vmll
d0RpZENoYW5nZSwgdGhpcyk7CisgICAgICAgIFdlYkluc3BlY3Rvci50aW1lbGluZU1hbmFnZXIu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmVNYW5hZ2VyLkV2ZW50LkNhcHR1
cmluZ1N0YXJ0ZWQsIHRoaXMuX2NhcHR1cmluZ1N0YXJ0ZWQsIHRoaXMpOworICAgICAgICBXZWJJ
bnNwZWN0b3IudGltZWxpbmVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRp
bWVsaW5lTWFuYWdlci5FdmVudC5DYXB0dXJpbmdTdG9wcGVkLCB0aGlzLl9jYXB0dXJpbmdTdG9w
cGVkLCB0aGlzKTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAotICAgIHNob3duOiBmdW5jdGlv
bigpCisgICAgc2hvd24oKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25T
aWRlYmFyUGFuZWwucHJvdG90eXBlLnNob3duLmNhbGwodGhpcyk7CiAKICAgICAgICAgaWYgKHRo
aXMuX2Rpc3BsYXllZENvbnRlbnRWaWV3KQogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNvbnRl
bnRCcm93c2VyLnNob3dDb250ZW50Vmlldyh0aGlzLl9kaXNwbGF5ZWRDb250ZW50Vmlldyk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBzaG93RGVmYXVsdENvbnRlbnRWaWV3OiBmdW5jdGlvbigpCisg
ICAgc2hvd0RlZmF1bHRDb250ZW50VmlldygpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fZGlz
cGxheWVkQ29udGVudFZpZXcpCiAgICAgICAgICAgICB0aGlzLnNob3dUaW1lbGluZU92ZXJ2aWV3
KCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgaGFzU2VsZWN0ZWRFbGVtZW50KCkKICAgICB7
CiAgICAgICAgIHJldHVybiAhIXRoaXMuX2NvbnRlbnRUcmVlT3V0bGluZS5zZWxlY3RlZFRyZWVF
bGVtZW50IHx8ICEhdGhpcy5fcmVjb3JkaW5nc1RyZWVPdXRsaW5lLnNlbGVjdGVkVHJlZUVsZW1l
bnQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB0cmVlRWxlbWVudEZvclJlcHJlc2VudGVkT2JqZWN0
OiBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkKKyAgICB0cmVlRWxlbWVudEZvclJlcHJlc2Vu
dGVkT2JqZWN0KHJlcHJlc2VudGVkT2JqZWN0KQogICAgIHsKICAgICAgICAgaWYgKHJlcHJlc2Vu
dGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nKQogICAg
ICAgICAgICAgcmV0dXJuIHRoaXMuX3JlY29yZGluZ1RyZWVFbGVtZW50TWFwLmdldChyZXByZXNl
bnRlZE9iamVjdCk7CkBAIC0yNDAsMTIgKzIxNSwxMiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVT
aWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIG51
bGw7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgY29udGVudFRyZWVPdXRsaW5lTGFiZWwoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3RpbWVsaW5lRXZlbnRzVGl0bGVCYXJFbGVtZW50
LnRleHRDb250ZW50OwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGNvbnRlbnRUcmVlT3V0bGlu
ZUxhYmVsKGxhYmVsKQogICAgIHsKQEAgLTI1Myw1NiArMjI4LDU2IEBAIFdlYkluc3BlY3Rvci5U
aW1lbGluZVNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5fdGltZWxp
bmVFdmVudHNUaXRsZUJhckVsZW1lbnQudGV4dENvbnRlbnQgPSBsYWJlbDsKICAgICAgICAgdGhp
cy5maWx0ZXJCYXIucGxhY2Vob2xkZXIgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZpbHRlciAl
cyIpLmZvcm1hdChsYWJlbCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93VGltZWxpbmVPdmVy
dmlldzogZnVuY3Rpb24oKQorICAgIHNob3dUaW1lbGluZU92ZXJ2aWV3KCkKICAgICB7CiAgICAg
ICAgIGlmICh0aGlzLl90aW1lbGluZXNUcmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50KQog
ICAgICAgICAgICAgdGhpcy5fdGltZWxpbmVzVHJlZU91dGxpbmUuc2VsZWN0ZWRUcmVlRWxlbWVu
dC5kZXNlbGVjdCgpOwogCiAgICAgICAgIHRoaXMuX2Rpc3BsYXllZENvbnRlbnRWaWV3LnNob3dP
dmVydmlld1RpbWVsaW5lVmlldygpOwogICAgICAgICBXZWJJbnNwZWN0b3IuY29udGVudEJyb3dz
ZXIuc2hvd0NvbnRlbnRWaWV3KHRoaXMuX2Rpc3BsYXllZENvbnRlbnRWaWV3KTsKLSAgICB9LAor
ICAgIH0KIAotICAgIHNob3dUaW1lbGluZVZpZXdGb3JUaW1lbGluZTogZnVuY3Rpb24odGltZWxp
bmUpCisgICAgc2hvd1RpbWVsaW5lVmlld0ZvclRpbWVsaW5lKHRpbWVsaW5lKQogICAgIHsKICAg
ICAgICAgY29uc29sZS5hc3NlcnQodGltZWxpbmUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmUsIHRpbWVsaW5lKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fdGltZWxpbmVU
cmVlRWxlbWVudE1hcC5oYXModGltZWxpbmUpLCAiQ2Fubm90IHNob3cgdGltZWxpbmUgYmVjYXVz
ZSBpdCBkb2VzIG5vdCBiZWxvbmcgdG8gdGhlIHNob3duIHJlY29yZGluZy4iLCB0aW1lbGluZSk7
CiAKICAgICAgICAgLy8gRGVmZXIgc2hvd2luZyB0aGUgcmVsZXZhbnQgdGltZWxpbmUgdG8gdGhl
IG9uc2VsZWN0IGhhbmRsZXIgb2YgdGhlIHRpbWVsaW5lcyB0cmVlIGVsZW1lbnQuCi0gICAgICAg
IGNvbnN0IHdhc1NlbGVjdGVkQnlVc2VyID0gdHJ1ZTsKLSAgICAgICAgY29uc3Qgc2hvdWxkU3Vw
cHJlc3NPblNlbGVjdCA9IGZhbHNlOworICAgICAgICB2YXIgd2FzU2VsZWN0ZWRCeVVzZXIgPSB0
cnVlOworICAgICAgICB2YXIgc2hvdWxkU3VwcHJlc3NPblNlbGVjdCA9IGZhbHNlOwogICAgICAg
ICB0aGlzLl90aW1lbGluZVRyZWVFbGVtZW50TWFwLmdldCh0aW1lbGluZSkuc2VsZWN0KHRydWUs
IHdhc1NlbGVjdGVkQnlVc2VyLCBzaG91bGRTdXBwcmVzc09uU2VsZWN0LCB0cnVlKTsKLSAgICB9
LAorICAgIH0KIAogICAgIC8vIFByb3RlY3RlZAogCi0gICAgdXBkYXRlRmlsdGVyOiBmdW5jdGlv
bigpCisgICAgdXBkYXRlRmlsdGVyKCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5OYXZp
Z2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZS51cGRhdGVGaWx0ZXIuY2FsbCh0aGlzKTsKIAog
ICAgICAgICB0aGlzLl9kaXNwbGF5ZWRDb250ZW50Vmlldy5maWx0ZXJEaWRDaGFuZ2UoKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIGhhc0N1c3RvbUZpbHRlcnM6IGZ1bmN0aW9uKCkKKyAgICBoYXND
dXN0b21GaWx0ZXJzKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0sCisgICAg
fQogCi0gICAgbWF0Y2hUcmVlRWxlbWVudEFnYWluc3RDdXN0b21GaWx0ZXJzOiBmdW5jdGlvbih0
cmVlRWxlbWVudCkKKyAgICBtYXRjaFRyZWVFbGVtZW50QWdhaW5zdEN1c3RvbUZpbHRlcnModHJl
ZUVsZW1lbnQpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2Rpc3BsYXllZENvbnRlbnRWaWV3
KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc3Bs
YXllZENvbnRlbnRWaWV3Lm1hdGNoVHJlZUVsZW1lbnRBZ2FpbnN0Q3VzdG9tRmlsdGVycyh0cmVl
RWxlbWVudCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjYW5TaG93RGlmZmVyZW50Q29udGVudFZp
ZXc6IGZ1bmN0aW9uKCkKKyAgICBjYW5TaG93RGlmZmVyZW50Q29udGVudFZpZXcoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuICF0aGlzLnJlc3RvcmluZ1N0YXRlIHx8ICF0aGlzLl9yZXN0b3JlZFNo
b3dpbmdUaW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3OwotICAgIH0sCisgICAgfQogCi0gICAg
c2F2ZVN0YXRlVG9Db29raWU6IGZ1bmN0aW9uKGNvb2tpZSkKKyAgICBzYXZlU3RhdGVUb0Nvb2tp
ZShjb29raWUpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChjb29raWUpOwogCkBAIC0z
MTQsMTAgKzI4OSwxMCBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwucHJvdG90
eXBlID0gewogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9yLlRp
bWVsaW5lU2lkZWJhclBhbmVsLlNlbGVjdGVkVGltZWxpbmVWaWV3SWRlbnRpZmllckNvb2tpZUtl
eV0gPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuT3ZlcnZpZXdUaW1lbGluZUlk
ZW50aWZpZXJDb29raWVWYWx1ZTsKIAotICAgICAgICBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNp
ZGViYXJQYW5lbC5wcm90b3R5cGUuc2F2ZVN0YXRlVG9Db29raWUuY2FsbCh0aGlzLCBjb29raWUp
OwotICAgIH0sCisgICAgICAgIHN1cGVyLnNhdmVTdGF0ZVRvQ29va2llKGNvb2tpZSk7CisgICAg
fQogCi0gICAgcmVzdG9yZVN0YXRlRnJvbUNvb2tpZTogZnVuY3Rpb24oY29va2llLCByZWxheGVk
TWF0Y2hEZWxheSkKKyAgICByZXN0b3JlU3RhdGVGcm9tQ29va2llKGNvb2tpZSwgcmVsYXhlZE1h
dGNoRGVsYXkpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChjb29raWUpOwogCkBAIC0z
NDAsMTEgKzMxNSwxMSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwucHJvdG90
eXBlID0gewogCiAgICAgICAgIC8vIERvbid0IGNhbGwgTmF2aWdhdGlvblNpZGViYXJQYW5lbC5y
ZXN0b3JlU3RhdGVGcm9tQ29va2llLCBiZWNhdXNlIGl0IHRyaWVzIHRvIG1hdGNoIGJhc2VkCiAg
ICAgICAgIC8vIG9uIHR5cGUgb25seSBhcyBhIGxhc3QgcmVzb3J0LiBUaGlzIHdvdWxkIGNhdXNl
IHRoZSBmaXJzdCByZWNvcmRpbmcgdG8gYmUgcmVzZWxlY3RlZCBvbiByZWxvYWQuCi0gICAgfSwK
KyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfcmVjb3JkaW5nc1RyZWVFbGVtZW50U2Vs
ZWN0ZWQ6IGZ1bmN0aW9uKHRyZWVFbGVtZW50LCBzZWxlY3RlZEJ5VXNlcikKKyAgICBfcmVjb3Jk
aW5nc1RyZWVFbGVtZW50U2VsZWN0ZWQodHJlZUVsZW1lbnQsIHNlbGVjdGVkQnlVc2VyKQogICAg
IHsKICAgICAgICAgY29uc29sZS5hc3NlcnQodHJlZUVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3Qg
aW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmcpOwogICAgICAgICBjb25z
b2xlLmFzc2VydCghc2VsZWN0ZWRCeVVzZXIsICJSZWNvcmRpbmcgdHJlZSBlbGVtZW50cyBzaG91
bGQgYmUgaGlkZGVuIGFuZCBvbmx5IHByb2dyYW1tYXRpY2FsbHkgc2VsZWN0YWJsZS4iKTsKQEAg
LTM1NCwxNiArMzI5LDE2IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5wcm90
b3R5cGUgPSB7CiAgICAgICAgIC8vIERlc2VsZWN0IG9yIHJlLXNlbGVjdCB0aGUgdGltZWxpbmUg
dHJlZSBlbGVtZW50IGZvciB0aGUgdGltZWxpbmUgdmlldyBiZWluZyBkaXNwbGF5ZWQuCiAgICAg
ICAgIHZhciBjdXJyZW50VGltZWxpbmVWaWV3ID0gdGhpcy5fZGlzcGxheWVkQ29udGVudFZpZXcu
Y3VycmVudFRpbWVsaW5lVmlldzsKICAgICAgICAgaWYgKGN1cnJlbnRUaW1lbGluZVZpZXcgJiYg
Y3VycmVudFRpbWVsaW5lVmlldy5yZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZSkgewotICAgICAgICAgICAgY29uc3Qgd2FzU2VsZWN0ZWRCeVVzZXIgPSBm
YWxzZTsgLy8gVGhpcyBpcyBhIHNpbXVsYXRlZCBzZWxlY3Rpb24uCi0gICAgICAgICAgICBjb25z
dCBzaG91bGRTdXBwcmVzc09uU2VsZWN0ID0gZmFsc2U7CisgICAgICAgICAgICB2YXIgd2FzU2Vs
ZWN0ZWRCeVVzZXIgPSBmYWxzZTsgLy8gVGhpcyBpcyBhIHNpbXVsYXRlZCBzZWxlY3Rpb24uCisg
ICAgICAgICAgICB2YXIgc2hvdWxkU3VwcHJlc3NPblNlbGVjdCA9IGZhbHNlOwogICAgICAgICAg
ICAgdGhpcy5fdGltZWxpbmVUcmVlRWxlbWVudE1hcC5nZXQoY3VycmVudFRpbWVsaW5lVmlldy5y
ZXByZXNlbnRlZE9iamVjdCkuc2VsZWN0KHRydWUsIHdhc1NlbGVjdGVkQnlVc2VyLCBzaG91bGRT
dXBwcmVzc09uU2VsZWN0LCB0cnVlKTsKICAgICAgICAgfSBlbHNlIGlmICh0aGlzLl90aW1lbGlu
ZXNUcmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50KQogICAgICAgICAgICAgdGhpcy5fdGlt
ZWxpbmVzVHJlZU91dGxpbmUuc2VsZWN0ZWRUcmVlRWxlbWVudC5kZXNlbGVjdCgpOwogCiAgICAg
ICAgIHRoaXMudXBkYXRlRmlsdGVyKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdGltZWxpbmVz
VHJlZUVsZW1lbnRTZWxlY3RlZDogZnVuY3Rpb24odHJlZUVsZW1lbnQsIHNlbGVjdGVkQnlVc2Vy
KQorICAgIF90aW1lbGluZXNUcmVlRWxlbWVudFNlbGVjdGVkKHRyZWVFbGVtZW50LCBzZWxlY3Rl
ZEJ5VXNlcikKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3RpbWVsaW5lVHJl
ZUVsZW1lbnRNYXAuZ2V0KHRyZWVFbGVtZW50LnJlcHJlc2VudGVkT2JqZWN0KSA9PT0gdHJlZUVs
ZW1lbnQsIHRyZWVFbGVtZW50KTsKIApAQCAtMzc5LDI3ICszNTQsMjcgQEAgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlzLl9kaXNw
bGF5ZWRDb250ZW50Vmlldy5zaG93VGltZWxpbmVWaWV3Rm9yVGltZWxpbmUodGltZWxpbmUpOwog
ICAgICAgICBXZWJJbnNwZWN0b3IuY29udGVudEJyb3dzZXIuc2hvd0NvbnRlbnRWaWV3KHRoaXMu
X2Rpc3BsYXllZENvbnRlbnRWaWV3KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9jb250ZW50QnJv
d3NlckN1cnJlbnRDb250ZW50Vmlld0RpZENoYW5nZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX2Nv
bnRlbnRCcm93c2VyQ3VycmVudENvbnRlbnRWaWV3RGlkQ2hhbmdlKGV2ZW50KQogICAgIHsKICAg
ICAgICAgdmFyIGRpZFNob3dUaW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3ID0gV2ViSW5zcGVj
dG9yLmNvbnRlbnRCcm93c2VyLmN1cnJlbnRDb250ZW50VmlldyBpbnN0YW5jZW9mIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3OwogICAgICAgICB0aGlzLmVsZW1lbnQu
Y2xhc3NMaXN0LnRvZ2dsZShXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuVGltZWxp
bmVSZWNvcmRpbmdDb250ZW50Vmlld1Nob3dpbmdTdHlsZUNsYXNzLCBkaWRTaG93VGltZWxpbmVS
ZWNvcmRpbmdDb250ZW50Vmlldyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY2FwdHVyaW5nU3Rh
cnRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2NhcHR1cmluZ1N0YXJ0ZWQoZXZlbnQpCiAgICAg
ewogICAgICAgICB0aGlzLl9yZWNvcmRTdGF0dXNFbGVtZW50LnRleHRDb250ZW50ID0gV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJSZWNvcmRpbmciKTsKICAgICAgICAgdGhpcy5fcmVjb3JkR2x5cGhF
bGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLlJl
Y29yZEdseXBoUmVjb3JkaW5nU3R5bGVDbGFzcyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY2Fw
dHVyaW5nU3RvcHBlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2NhcHR1cmluZ1N0b3BwZWQoZXZl
bnQpCiAgICAgewogICAgICAgICB0aGlzLl9yZWNvcmRTdGF0dXNFbGVtZW50LnRleHRDb250ZW50
ID0gIiI7CiAgICAgICAgIHRoaXMuX3JlY29yZEdseXBoRWxlbWVudC5jbGFzc0xpc3QucmVtb3Zl
KFdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5SZWNvcmRHbHlwaFJlY29yZGluZ1N0
eWxlQ2xhc3MpOwotICAgIH0sCisgICAgfQogCi0gICAgX3JlY29yZGluZ0NyZWF0ZWQ6IGZ1bmN0
aW9uKGV2ZW50KQorICAgIF9yZWNvcmRpbmdDcmVhdGVkKGV2ZW50KQogICAgIHsKICAgICAgICAg
dmFyIHJlY29yZGluZyA9IGV2ZW50LmRhdGEucmVjb3JkaW5nOwogICAgICAgICBjb25zb2xlLmFz
c2VydChyZWNvcmRpbmcgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmcs
IHJlY29yZGluZyk7CkBAIC00MDksOSArMzg0LDkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lk
ZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fcmVjb3JkaW5nc1RyZWVPdXRs
aW5lLmFwcGVuZENoaWxkKHJlY29yZGluZ1RyZWVFbGVtZW50KTsKIAogICAgICAgICB0aGlzLl9y
ZWNvcmRpbmdDb3VudENoYW5nZWQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9yZWNvcmRpbmdD
b3VudENoYW5nZWQ6IGZ1bmN0aW9uKCkKKyAgICBfcmVjb3JkaW5nQ291bnRDaGFuZ2VkKCkKICAg
ICB7CiAgICAgICAgIHZhciBwcmV2aW91c1RyZWVFbGVtZW50ID0gbnVsbDsKICAgICAgICAgZm9y
ICh2YXIgdHJlZUVsZW1lbnQgb2YgdGhpcy5fcmVjb3JkaW5nVHJlZUVsZW1lbnRNYXAudmFsdWVz
KCkpIHsKQEAgLTQyMiw5ICszOTcsOSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFu
ZWwucHJvdG90eXBlID0gewogCiAgICAgICAgICAgICBwcmV2aW91c1RyZWVFbGVtZW50ID0gdHJl
ZUVsZW1lbnQ7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIF9yZWNvcmRpbmdTZWxl
Y3RlZDogZnVuY3Rpb24ocmVjb3JkaW5nKQorICAgIF9yZWNvcmRpbmdTZWxlY3RlZChyZWNvcmRp
bmcpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChyZWNvcmRpbmcgaW5zdGFuY2VvZiBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmcsIHJlY29yZGluZyk7CiAKQEAgLTQ0OCwxNCAr
NDIzLDE0IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7
CiAgICAgICAgIHRoaXMuX2Rpc3BsYXllZENvbnRlbnRWaWV3ID0gV2ViSW5zcGVjdG9yLmNvbnRl
bnRCcm93c2VyLmNvbnRlbnRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QodGhpcy5fZGlzcGxheWVk
UmVjb3JkaW5nKTsKICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWQpCiAgICAgICAgICAgICBXZWJJ
bnNwZWN0b3IuY29udGVudEJyb3dzZXIuc2hvd0NvbnRlbnRWaWV3KHRoaXMuX2Rpc3BsYXllZENv
bnRlbnRWaWV3KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9yZWNvcmRpbmdMb2FkZWQ6IGZ1bmN0
aW9uKGV2ZW50KQorICAgIF9yZWNvcmRpbmdMb2FkZWQoZXZlbnQpCiAgICAgewogICAgICAgICB0
aGlzLl9yZWNvcmRpbmdTZWxlY3RlZChXZWJJbnNwZWN0b3IudGltZWxpbmVNYW5hZ2VyLmFjdGl2
ZVJlY29yZGluZyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdGltZWxpbmVBZGRlZDogZnVuY3Rp
b24odGltZWxpbmVPckV2ZW50KQorICAgIF90aW1lbGluZUFkZGVkKHRpbWVsaW5lT3JFdmVudCkK
ICAgICB7CiAgICAgICAgIHZhciB0aW1lbGluZSA9IHRpbWVsaW5lT3JFdmVudDsKICAgICAgICAg
aWYgKCEodGltZWxpbmUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVGltZWxpbmUpKQpAQCAtNDY1
LDcgKzQ0MCw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5wcm90b3R5cGUg
PSB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl90aW1lbGluZVRyZWVFbGVtZW50TWFw
Lmhhcyh0aW1lbGluZSksIHRpbWVsaW5lKTsKIAogICAgICAgICB2YXIgdGltZWxpbmVUcmVlRWxl
bWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50KFt0aW1lbGluZS5pY29u
Q2xhc3NOYW1lLCBXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuTGFyZ2VJY29uU3R5
bGVDbGFzc10sIHRpbWVsaW5lLmRpc3BsYXlOYW1lLCBudWxsLCB0aW1lbGluZSk7Ci0gICAgICAg
IGNvbnN0IHRvb2x0aXAgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNsb3NlICVzIHRpbWVsaW5l
IHZpZXciKS5mb3JtYXQodGltZWxpbmUuZGlzcGxheU5hbWUpOworICAgICAgICB2YXIgdG9vbHRp
cCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2xvc2UgJXMgdGltZWxpbmUgdmlldyIpLmZvcm1h
dCh0aW1lbGluZS5kaXNwbGF5TmFtZSk7CiAgICAgICAgIHdyYXBwZWRTVkdEb2N1bWVudChwbGF0
Zm9ybUltYWdlUGF0aCgiQ2xvc2VMYXJnZS5zdmciKSwgV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lk
ZWJhclBhbmVsLkNsb3NlQnV0dG9uU3R5bGVDbGFzcywgdG9vbHRpcCwgZnVuY3Rpb24oZWxlbWVu
dCkgewogICAgICAgICAgICAgdmFyIGJ1dHRvbiA9IG5ldyBXZWJJbnNwZWN0b3IuVHJlZUVsZW1l
bnRTdGF0dXNCdXR0b24oZWxlbWVudCk7CiAgICAgICAgICAgICBidXR0b24uYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuVHJlZUVsZW1lbnRTdGF0dXNCdXR0b24uRXZlbnQuQ2xpY2tlZCwg
dGhpcy5zaG93VGltZWxpbmVPdmVydmlldywgdGhpcyk7CkBAIC00NzUsMjQgKzQ1MCwyNCBAQCBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0
aGlzLl90aW1lbGluZVRyZWVFbGVtZW50TWFwLnNldCh0aW1lbGluZSwgdGltZWxpbmVUcmVlRWxl
bWVudCk7CiAKICAgICAgICAgdGhpcy5fdGltZWxpbmVDb3VudENoYW5nZWQoKTsKLSAgICB9LAor
ICAgIH0KIAotICAgIF90aW1lbGluZVJlbW92ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF90aW1l
bGluZVJlbW92ZWQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgdGltZWxpbmUgPSBldmVudC5k
YXRhLnRpbWVsaW5lOwogICAgICAgICBjb25zb2xlLmFzc2VydCh0aW1lbGluZSBpbnN0YW5jZW9m
IFdlYkluc3BlY3Rvci5UaW1lbGluZSwgdGltZWxpbmUpOwogICAgICAgICBjb25zb2xlLmFzc2Vy
dCh0aGlzLl90aW1lbGluZVRyZWVFbGVtZW50TWFwLmhhcyh0aW1lbGluZSksIHRpbWVsaW5lKTsK
IAogICAgICAgICB2YXIgdGltZWxpbmVUcmVlRWxlbWVudCA9IHRoaXMuX3RpbWVsaW5lVHJlZUVs
ZW1lbnRNYXAudGFrZSh0aW1lbGluZSk7Ci0gICAgICAgIGNvbnN0IHNob3VsZFN1cHByZXNzT25E
ZXNlbGVjdCA9IGZhbHNlOwotICAgICAgICBjb25zdCBzaG91bGRTdXBwcmVzc1NlbGVjdFNpYmxp
bmcgPSB0cnVlOworICAgICAgICB2YXIgc2hvdWxkU3VwcHJlc3NPbkRlc2VsZWN0ID0gZmFsc2U7
CisgICAgICAgIHZhciBzaG91bGRTdXBwcmVzc1NlbGVjdFNpYmxpbmcgPSB0cnVlOwogICAgICAg
ICB0aGlzLl90aW1lbGluZXNUcmVlT3V0bGluZS5yZW1vdmVDaGlsZCh0aW1lbGluZVRyZWVFbGVt
ZW50LCBzaG91bGRTdXBwcmVzc09uRGVzZWxlY3QsIHNob3VsZFN1cHByZXNzU2VsZWN0U2libGlu
Zyk7CiAgICAgICAgIHRoaXMuX3RpbWVsaW5lVHJlZUVsZW1lbnRNYXAuZGVsZXRlKHRpbWVsaW5l
KTsKIAogICAgICAgICB0aGlzLl90aW1lbGluZUNvdW50Q2hhbmdlZCgpOwotICAgIH0sCisgICAg
fQogCi0gICAgX3RpbWVsaW5lQ291bnRDaGFuZ2VkOiBmdW5jdGlvbigpCisgICAgX3RpbWVsaW5l
Q291bnRDaGFuZ2VkKCkKICAgICB7CiAgICAgICAgIHZhciBwcmV2aW91c1RyZWVFbGVtZW50ID0g
bnVsbDsKICAgICAgICAgZm9yICh2YXIgdHJlZUVsZW1lbnQgb2YgdGhpcy5fdGltZWxpbmVUcmVl
RWxlbWVudE1hcC52YWx1ZXMoKSkgewpAQCAtNTA0LDE2ICs0NzksMTYgQEAgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHByZXZpb3Vz
VHJlZUVsZW1lbnQgPSB0cmVlRWxlbWVudDsKICAgICAgICAgfQogCi0gICAgICAgIGNvbnN0IHRp
bWVsaW5lSGVpZ2h0ID0gMzY7Ci0gICAgICAgIGNvbnN0IGV2ZW50VGl0bGVCYXJPZmZzZXQgPSA1
MTsKLSAgICAgICAgY29uc3QgY29udGVudEVsZW1lbnRPZmZzZXQgPSA3NDsKKyAgICAgICAgdmFy
IHRpbWVsaW5lSGVpZ2h0ID0gMzY7CisgICAgICAgIHZhciBldmVudFRpdGxlQmFyT2Zmc2V0ID0g
NTE7CisgICAgICAgIHZhciBjb250ZW50RWxlbWVudE9mZnNldCA9IDc0OwogICAgICAgICB2YXIg
dGltZWxpbmVDb3VudCA9IHRoaXMuX2Rpc3BsYXllZFJlY29yZGluZy50aW1lbGluZXMuc2l6ZTsK
ICAgICAgICAgdGhpcy5fdGltZWxpbmVzQ29udGVudENvbnRhaW5lckVsZW1lbnQuc3R5bGUuaGVp
Z2h0ID0gKHRpbWVsaW5lSGVpZ2h0ICogdGltZWxpbmVDb3VudCkgKyAicHgiOwogICAgICAgICB0
aGlzLl90aW1lbGluZUV2ZW50c1RpdGxlQmFyRWxlbWVudC5zdHlsZS50b3AgPSAodGltZWxpbmVI
ZWlnaHQgKiB0aW1lbGluZUNvdW50ICsgZXZlbnRUaXRsZUJhck9mZnNldCkgKyAicHgiOwogICAg
ICAgICB0aGlzLmNvbnRlbnRFbGVtZW50LnN0eWxlLnRvcCA9ICh0aW1lbGluZUhlaWdodCAqIHRp
bWVsaW5lQ291bnQgKyBjb250ZW50RWxlbWVudE9mZnNldCkgKyAicHgiOwotICAgIH0sCisgICAg
fQogCi0gICAgX3JlY29yZEdseXBoTW91c2VkT3ZlcjogZnVuY3Rpb24oZXZlbnQpCisgICAgX3Jl
Y29yZEdseXBoTW91c2VkT3ZlcihldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX3JlY29yZEds
eXBoRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQ
YW5lbC5SZWNvcmRHbHlwaFJlY29yZGluZ0ZvcmNlZFN0eWxlQ2xhc3MpOwogCkBAIC01MjEsOSAr
NDk2LDkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgICAgIHRoaXMuX3JlY29yZFN0YXR1c0VsZW1lbnQudGV4dENvbnRlbnQgPSBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIlN0b3AgUmVjb3JkaW5nIik7CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIHRoaXMuX3JlY29yZFN0YXR1c0VsZW1lbnQudGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIlN0YXJ0IFJlY29yZGluZyIpOwotICAgIH0sCisgICAgfQogCi0gICAgX3Jl
Y29yZEdseXBoTW91c2VkT3V0OiBmdW5jdGlvbihldmVudCkKKyAgICBfcmVjb3JkR2x5cGhNb3Vz
ZWRPdXQoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9yZWNvcmRHbHlwaEVsZW1lbnQuY2xh
c3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuUmVjb3JkR2x5
cGhSZWNvcmRpbmdGb3JjZWRTdHlsZUNsYXNzKTsKIApAQCAtNTMxLDkgKzUwNiw5IEBAIFdlYklu
c3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0
aGlzLl9yZWNvcmRTdGF0dXNFbGVtZW50LnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJSZWNvcmRpbmciKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdGhpcy5fcmVjb3Jk
U3RhdHVzRWxlbWVudC50ZXh0Q29udGVudCA9ICIiOwotICAgIH0sCisgICAgfQogCi0gICAgX3Jl
Y29yZEdseXBoQ2xpY2tlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3JlY29yZEdseXBoQ2xpY2tl
ZChldmVudCkKICAgICB7CiAgICAgICAgIC8vIEFkZCBmb3JjZWQgY2xhc3MgdG8gcHJldmVudCB0
aGUgZ2x5cGggZnJvbSBzaG93aW5nIGEgY29uZnVzaW5nIHN0YXR1cyBhZnRlciBjbGljay4KICAg
ICAgICAgdGhpcy5fcmVjb3JkR2x5cGhFbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9y
LlRpbWVsaW5lU2lkZWJhclBhbmVsLlJlY29yZEdseXBoUmVjb3JkaW5nRm9yY2VkU3R5bGVDbGFz
cyk7CkBAIC01NDcsMTkgKzUyMiwxOSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFu
ZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgLy8gU2hvdyB0aGUgdGltZWxpbmUgdG8gd2hp
Y2ggZXZlbnRzIHdpbGwgYmUgYXBwZW5kZWQuCiAgICAgICAgICAgICB0aGlzLl9yZWNvcmRpbmdM
b2FkZWQoKTsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCiAgICAgLy8gVGhlc2UgbWV0aG9k
cyBhcmUgb25seSB1c2VkIHdoZW4gUmVwbGF5QWdlbnQgaXMgYXZhaWxhYmxlLgogCi0gICAgX3Vw
ZGF0ZVJlcGxheUludGVyZmFjZVZpc2liaWxpdHk6IGZ1bmN0aW9uKCkKKyAgICBfdXBkYXRlUmVw
bGF5SW50ZXJmYWNlVmlzaWJpbGl0eSgpCiAgICAgewogICAgICAgICB2YXIgc2hvdWxkU2hvd1Jl
cGxheUludGVyZmFjZSA9IHdpbmRvdy5SZXBsYXlBZ2VudCAmJiBXZWJJbnNwZWN0b3Iuc2hvd1Jl
cGxheUludGVyZmFjZVNldHRpbmcudmFsdWU7CiAKICAgICAgICAgdGhpcy5fc3RhdHVzQmFyRWxl
bWVudC5jbGFzc0xpc3QudG9nZ2xlKFdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5I
aWRkZW5TdHlsZUNsYXNzTmFtZSwgc2hvdWxkU2hvd1JlcGxheUludGVyZmFjZSk7CiAgICAgICAg
IHRoaXMuX25hdmlnYXRpb25CYXIuZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKFdlYkluc3BlY3Rv
ci5UaW1lbGluZVNpZGViYXJQYW5lbC5IaWRkZW5TdHlsZUNsYXNzTmFtZSwgIXNob3VsZFNob3dS
ZXBsYXlJbnRlcmZhY2UpOwotICAgIH0sCisgICAgfQogCi0gICAgX2NvbnRleHRNZW51TmF2aWdh
dGlvbkJhck9yU3RhdHVzQmFyOiBmdW5jdGlvbigpCisgICAgX2NvbnRleHRNZW51TmF2aWdhdGlv
bkJhck9yU3RhdHVzQmFyKCkKICAgICB7CiAgICAgICAgIGlmICghd2luZG93LlJlcGxheUFnZW50
KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNTc0LDkgKzU0OSw5IEBAIFdlYkluc3BlY3Rvci5U
aW1lbGluZVNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTaG93IFJl
cGxheSBDb250cm9scyIpLCB0b2dnbGVSZXBsYXlJbnRlcmZhY2UpOwogICAgICAgICBjb250ZXh0
TWVudS5zaG93KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcmVwbGF5Q2FwdHVyZUJ1dHRvbkNs
aWNrZWQ6IGZ1bmN0aW9uKCkKKyAgICBfcmVwbGF5Q2FwdHVyZUJ1dHRvbkNsaWNrZWQoKQogICAg
IHsKICAgICAgICAgaWYgKCF0aGlzLl9yZXBsYXlDYXB0dXJlQnV0dG9uSXRlbS5hY3RpdmF0ZWQp
IHsKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5yZXBsYXlNYW5hZ2VyLnN0YXJ0Q2FwdHVyaW5n
KCk7CkBAIC01OTEsMzQgKzU2Niw1NyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFu
ZWwucHJvdG90eXBlID0gewogCiAgICAgICAgICAgICB0aGlzLl9yZXBsYXlDYXB0dXJlQnV0dG9u
SXRlbS5lbmFibGVkID0gZmFsc2U7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIF9y
ZXBsYXlQYXVzZVJlc3VtZUJ1dHRvbkNsaWNrZWQ6IGZ1bmN0aW9uKCkKKyAgICBfcmVwbGF5UGF1
c2VSZXN1bWVCdXR0b25DbGlja2VkKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9yZXBsYXlQ
YXVzZVJlc3VtZUJ1dHRvbkl0ZW0udG9nZ2xlZCkKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5y
ZXBsYXlNYW5hZ2VyLnBhdXNlUGxheWJhY2soKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
V2ViSW5zcGVjdG9yLnJlcGxheU1hbmFnZXIucmVwbGF5VG9Db21wbGV0aW9uKCk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfY2FwdHVyZVN0YXJ0ZWQ6IGZ1bmN0aW9uKCkKKyAgICBfY2FwdHVyZVN0
YXJ0ZWQoKQogICAgIHsKICAgICAgICAgdGhpcy5fcmVwbGF5Q2FwdHVyZUJ1dHRvbkl0ZW0uZW5h
YmxlZCA9IHRydWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY2FwdHVyZVN0b3BwZWQ6IGZ1bmN0
aW9uKCkKKyAgICBfY2FwdHVyZVN0b3BwZWQoKQogICAgIHsKICAgICAgICAgdGhpcy5fcmVwbGF5
Q2FwdHVyZUJ1dHRvbkl0ZW0uYWN0aXZhdGVkID0gZmFsc2U7CiAgICAgICAgIHRoaXMuX3JlcGxh
eVBhdXNlUmVzdW1lQnV0dG9uSXRlbS5lbmFibGVkID0gdHJ1ZTsKLSAgICB9LAorICAgIH0KIAot
ICAgIF9wbGF5YmFja1N0YXJ0ZWQ6IGZ1bmN0aW9uKCkKKyAgICBfcGxheWJhY2tTdGFydGVkKCkK
ICAgICB7CiAgICAgICAgIHRoaXMuX3JlcGxheVBhdXNlUmVzdW1lQnV0dG9uSXRlbS50b2dnbGVk
ID0gdHJ1ZTsKLSAgICB9LAorICAgIH0KIAotICAgIF9wbGF5YmFja1BhdXNlZDogZnVuY3Rpb24o
KQorICAgIF9wbGF5YmFja1BhdXNlZCgpCiAgICAgewogICAgICAgICB0aGlzLl9yZXBsYXlQYXVz
ZVJlc3VtZUJ1dHRvbkl0ZW0udG9nZ2xlZCA9IGZhbHNlOwogICAgIH0KIH07CisKK1dlYkluc3Bl
Y3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5IaWRkZW5TdHlsZUNsYXNzTmFtZSA9ICJoaWRkZW4i
OworV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLlN0YXR1c0JhclN0eWxlQ2xhc3Mg
PSAic3RhdHVzLWJhciI7CitXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuUmVjb3Jk
R2x5cGhTdHlsZUNsYXNzID0gInJlY29yZC1nbHlwaCI7CitXZWJJbnNwZWN0b3IuVGltZWxpbmVT
aWRlYmFyUGFuZWwuUmVjb3JkR2x5cGhSZWNvcmRpbmdTdHlsZUNsYXNzID0gInJlY29yZGluZyI7
CitXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuUmVjb3JkR2x5cGhSZWNvcmRpbmdG
b3JjZWRTdHlsZUNsYXNzID0gImZvcmNlZCI7CitXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFy
UGFuZWwuUmVjb3JkU3RhdHVzU3R5bGVDbGFzcyA9ICJyZWNvcmQtc3RhdHVzIjsKK1dlYkluc3Bl
Y3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5UaXRsZUJhclN0eWxlQ2xhc3MgPSAidGl0bGUtYmFy
IjsKK1dlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5UaW1lbGluZXNUaXRsZUJhclN0
eWxlQ2xhc3MgPSAidGltZWxpbmVzIjsKK1dlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5l
bC5UaW1lbGluZUV2ZW50c1RpdGxlQmFyU3R5bGVDbGFzcyA9ICJ0aW1lbGluZS1ldmVudHMiOwor
V2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLlRpbWVsaW5lc0NvbnRlbnRDb250YWlu
ZXJTdHlsZUNsYXNzID0gInRpbWVsaW5lcy1jb250ZW50IjsKK1dlYkluc3BlY3Rvci5UaW1lbGlu
ZVNpZGViYXJQYW5lbC5DbG9zZUJ1dHRvblN0eWxlQ2xhc3MgPSAiY2xvc2UtYnV0dG9uIjsKK1dl
Ykluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5MYXJnZUljb25TdHlsZUNsYXNzID0gImxh
cmdlIjsKK1dlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5TdG9wd2F0Y2hJY29uU3R5
bGVDbGFzcyA9ICJzdG9wd2F0Y2gtaWNvbiI7CitXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFy
UGFuZWwuTmV0d29ya0ljb25TdHlsZUNsYXNzID0gIm5ldHdvcmstaWNvbiI7CitXZWJJbnNwZWN0
b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuQ29sb3JzSWNvblN0eWxlQ2xhc3MgPSAiY29sb3JzLWlj
b24iOworV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLlNjcmlwdEljb25TdHlsZUNs
YXNzID0gInNjcmlwdC1pY29uIjsKK1dlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5S
dW5Mb29wSWNvblN0eWxlQ2xhc3MgPSAicnVubG9vcC1pY29uIjsKK1dlYkluc3BlY3Rvci5UaW1l
bGluZVNpZGViYXJQYW5lbC5UaW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3U2hvd2luZ1N0eWxl
Q2xhc3MgPSAidGltZWxpbmUtcmVjb3JkaW5nLWNvbnRlbnQtdmlldy1zaG93aW5nIjsKKworV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLlNob3dpbmdUaW1lbGluZVJlY29yZGluZ0Nv
bnRlbnRWaWV3Q29va2llS2V5ID0gInRpbWVsaW5lLXNpZGViYXItcGFuZWwtc2hvd2luZy10aW1l
bGluZS1yZWNvcmRpbmctY29udGVudC12aWV3IjsKK1dlYkluc3BlY3Rvci5UaW1lbGluZVNpZGVi
YXJQYW5lbC5TZWxlY3RlZFRpbWVsaW5lVmlld0lkZW50aWZpZXJDb29raWVLZXkgPSAidGltZWxp
bmUtc2lkZWJhci1wYW5lbC1zZWxlY3RlZC10aW1lbGluZS12aWV3LWlkZW50aWZpZXIiOworV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLk92ZXJ2aWV3VGltZWxpbmVJZGVudGlmaWVy
Q29va2llVmFsdWUgPSAib3ZlcnZpZXciOwo=
</data>
<flag name="review"
          id="274323"
          type_id="1"
          status="+"
          setter="joepeck"
    />
    <flag name="commit-queue"
          id="274324"
          type_id="3"
          status="-"
          setter="joepeck"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249504</attachid>
            <date>2015-03-26 11:48:19 -0700</date>
            <delta_ts>2015-03-26 11:48:19 -0700</delta_ts>
            <desc>Patch (Ignore Space)</desc>
            <filename>Ignore-space.patch</filename>
            <type>text/plain</type>
            <size>140108</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDdmM2Y0OGQuLjc1ZjRkMTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMzIEBACiAyMDE1LTAzLTI2ICBUaW1vdGh5IEhhdGNo
ZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KIAorICAgICAgICBXZWIgSW5zcGVjdG9yOiBDb252ZXJ0
IHNpZGViYXIgY2xhc3NlcyB0byBFUzYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE0MzEwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvS2V5Ym9hcmRTaG9ydGN1dC5q
czoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Ll9oYW5kbGVLZXlEb3du
KTogQ29udGludWUgaWYgY2FsbGJhY2sgaXMgbnVsbC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5L
ZXlib2FyZFNob3J0Y3V0LnByb3RvdHlwZS5zZXQgY2FsbGJhY2spOiBBZGRlZC4KKworICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQXBwbGljYXRpb25DYWNoZURldGFpbHNTaWRlYmFyUGFu
ZWwuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURldGFpbHNTaWRl
YmFyUGFuZWwuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9ET01EZXRhaWxzU2lk
ZWJhclBhbmVsLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRE9NTm9kZURldGFp
bHNTaWRlYmFyUGFuZWwuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9EZWJ1Z2dl
clNpZGViYXJQYW5lbC5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0RldGFpbHNT
aWRlYmFyUGFuZWwuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9MYXllclRyZWVE
ZXRhaWxzU2lkZWJhclBhbmVsLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvTmF2
aWdhdGlvblNpZGViYXJQYW5lbC5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1By
b2JlRGV0YWlsc1NpZGViYXJQYW5lbC5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdz
L1Jlc291cmNlRGV0YWlsc1NpZGViYXJQYW5lbC5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L1ZpZXdzL1Jlc291cmNlU2lkZWJhclBhbmVsLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
Vmlld3MvU2NvcGVDaGFpbkRldGFpbHNTaWRlYmFyUGFuZWwuanM6CisgICAgICAgICogVXNlcklu
dGVyZmFjZS9WaWV3cy9TaWRlYmFyLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3Mv
U2lkZWJhclBhbmVsLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVT
aWRlYmFyUGFuZWwuanM6CisgICAgICAgIENvbnZlcnRlZCB0byBFUzYgY2xhc3Nlcy4KKworMjAx
NS0wMy0yNiAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CisKICAgICAgICAg
V2ViIEluc3BlY3RvcjogQ29udmVydCBzb21lIFZpZXcgY2xhc3NlcyB0byBFUzYgY2xhc3Nlcwog
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzMTA3CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9L
ZXlib2FyZFNob3J0Y3V0LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TW9kZWxzL0tleWJvYXJkU2hvcnRjdXQuanMKaW5kZXggZTdhMDM4ZS4uOTA5ZjdjMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0tleWJvYXJk
U2hvcnRjdXQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9k
ZWxzL0tleWJvYXJkU2hvcnRjdXQuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc4LDYgKzc4LDkgQEAgV2ViSW5zcGVjdG9yLktleWJv
YXJkU2hvcnRjdXQgPSBjbGFzcyBLZXlib2FyZFNob3J0Y3V0IGV4dGVuZHMgV2ViSW5zcGVjdG9y
Lk9iamUKICAgICAgICAgICAgICAgICBpZiAoIWtleWJvYXJkU2hvcnRjdXQubWF0Y2hlc0V2ZW50
KGV2ZW50KSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAKKyAgICAgICAgICAgICAg
ICBpZiAoIWtleWJvYXJkU2hvcnRjdXQuY2FsbGJhY2spCisgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworCiAgICAgICAgICAgICAgICAga2V5Ym9hcmRTaG9ydGN1dC5jYWxsYmFjayhldmVu
dCwga2V5Ym9hcmRTaG9ydGN1dCk7CiAKICAgICAgICAgICAgICAgICBpZiAoa2V5Ym9hcmRTaG9y
dGN1dC5pbXBsaWNpdGx5UHJldmVudHNEZWZhdWx0KQpAQCAtMTIzLDYgKzEyNiwxMyBAQCBXZWJJ
bnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dCA9IGNsYXNzIEtleWJvYXJkU2hvcnRjdXQgZXh0ZW5k
cyBXZWJJbnNwZWN0b3IuT2JqZQogICAgICAgICByZXR1cm4gdGhpcy5fY2FsbGJhY2s7CiAgICAg
fQogCisgICAgc2V0IGNhbGxiYWNrKGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgY29uc29sZS5h
c3NlcnQoIWNhbGxiYWNrIHx8IHR5cGVvZiBjYWxsYmFjayA9PT0gImZ1bmN0aW9uIik7CisKKyAg
ICAgICAgdGhpcy5fY2FsbGJhY2sgPSBjYWxsYmFjayB8fCBudWxsOworICAgIH0KKwogICAgIGdl
dCBkaXNhYmxlZCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9BcHBsaWNh
dGlvbkNhY2hlRGV0YWlsc1NpZGViYXJQYW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0FwcGxpY2F0aW9uQ2FjaGVEZXRhaWxzU2lkZWJhclBhbmVsLmpz
CmluZGV4IDkzNGQyNjQuLmZjYWFjZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0FwcGxpY2F0aW9uQ2FjaGVEZXRhaWxzU2lkZWJhclBhbmVs
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0FwcGxp
Y2F0aW9uQ2FjaGVEZXRhaWxzU2lkZWJhclBhbmVsLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw5ICsyMywxMSBAQAogICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5BcHBsaWNh
dGlvbkNhY2hlRGV0YWlsc1NpZGViYXJQYW5lbCA9IGZ1bmN0aW9uKCkKK1dlYkluc3BlY3Rvci5B
cHBsaWNhdGlvbkNhY2hlRGV0YWlsc1NpZGViYXJQYW5lbCA9IGNsYXNzIEFwcGxpY2F0aW9uQ2Fj
aGVEZXRhaWxzU2lkZWJhclBhbmVsIGV4dGVuZHMgV2ViSW5zcGVjdG9yLkRldGFpbHNTaWRlYmFy
UGFuZWwKIHsKLSAgICBXZWJJbnNwZWN0b3IuRGV0YWlsc1NpZGViYXJQYW5lbC5jYWxsKHRoaXMs
ICJhcHBsaWNhdGlvbi1jYWNoZS1kZXRhaWxzIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdG9y
YWdlIiksIFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3RvcmFnZSIpLCAiSW1hZ2VzL05hdmlnYXRp
b25JdGVtU3RvcmFnZS5zdmciKTsKKyAgICBjb25zdHJ1Y3RvcigpCisgICAgeworICAgICAgICBz
dXBlcigiYXBwbGljYXRpb24tY2FjaGUtZGV0YWlscyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygi
U3RvcmFnZSIpLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0b3JhZ2UiKSwgIkltYWdlcy9OYXZp
Z2F0aW9uSXRlbVN0b3JhZ2Uuc3ZnIik7CiAKICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlz
dC5hZGQoV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVEZXRhaWxzU2lkZWJhclBhbmVsLlN0
eWxlQ2xhc3NOYW1lKTsKIApAQCAtNTAsMjcgKzUyLDExIEBAIFdlYkluc3BlY3Rvci5BcHBsaWNh
dGlvbkNhY2hlRGV0YWlsc1NpZGViYXJQYW5lbCA9IGZ1bmN0aW9uKCkKIAogICAgICAgICBXZWJJ
bnNwZWN0b3IuYXBwbGljYXRpb25DYWNoZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuRXZlbnQuTmV0d29ya1N0YXRlVXBkYXRlZCwg
dGhpcy5fbmV0d29ya1N0YXRlVXBkYXRlZCwgdGhpcyk7CiAgICAgICAgIFdlYkluc3BlY3Rvci5h
cHBsaWNhdGlvbkNhY2hlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5BcHBs
aWNhdGlvbkNhY2hlTWFuYWdlci5FdmVudC5GcmFtZU1hbmlmZXN0U3RhdHVzQ2hhbmdlZCwgdGhp
cy5fZnJhbWVNYW5pZmVzdFN0YXR1c0NoYW5nZWQsIHRoaXMpOwotfTsKLQotV2ViSW5zcGVjdG9y
LkFwcGxpY2F0aW9uQ2FjaGVEZXRhaWxzU2lkZWJhclBhbmVsLlN0eWxlQ2xhc3NOYW1lID0gImFw
cGxpY2F0aW9uLWNhY2hlIjsKLQotLy8gVGhpcyBuZWVkcyB0byBiZSBrZXB0IGluIHN5bmMgd2l0
aCBBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5qcy4KLVdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNh
Y2hlRGV0YWlsc1NpZGViYXJQYW5lbC5TdGF0dXMgPSB7Ci0gICAgMDogIlVuY2FjaGVkIiwKLSAg
ICAxOiAiSWRsZSIsCi0gICAgMjogIkNoZWNraW5nIiwKLSAgICAzOiAiRG93bmxvYWRpbmciLAot
ICAgIDQ6ICJVcGRhdGVSZWFkeSIsCi0gICAgNTogIk9ic29sZXRlIgotfTsKLQotV2ViSW5zcGVj
dG9yLkFwcGxpY2F0aW9uQ2FjaGVEZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKLSAg
ICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVEZXRhaWxzU2lkZWJh
clBhbmVsLAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLkRldGFpbHNTaWRlYmFyUGFuZWwu
cHJvdG90eXBlLAorICAgIH0KIAogICAgIC8vIFB1YmxpYwogCi0gICAgaW5zcGVjdDogZnVuY3Rp
b24ob2JqZWN0cykKKyAgICBpbnNwZWN0KG9iamVjdHMpCiAgICAgewogICAgICAgICAvLyBDb252
ZXJ0IHRvIGEgc2luZ2xlIGl0ZW0gYXJyYXkgaWYgbmVlZGVkLgogICAgICAgICBpZiAoIShvYmpl
Y3RzIGluc3RhbmNlb2YgQXJyYXkpKQpAQCAtODksMTIgKzc1LDEyIEBAIFdlYkluc3BlY3Rvci5B
cHBsaWNhdGlvbkNhY2hlRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAg
IHRoaXMuYXBwbGljYXRpb25DYWNoZUZyYW1lID0gYXBwbGljYXRpb25DYWNoZUZyYW1lVG9JbnNw
ZWN0OwogCiAgICAgICAgIHJldHVybiAhIXRoaXMuYXBwbGljYXRpb25DYWNoZUZyYW1lOwotICAg
IH0sCisgICAgfQogCiAgICAgZ2V0IGFwcGxpY2F0aW9uQ2FjaGVGcmFtZSgpCiAgICAgewogICAg
ICAgICByZXR1cm4gdGhpcy5fYXBwbGljYXRpb25DYWNoZUZyYW1lOwotICAgIH0sCisgICAgfQog
CiAgICAgc2V0IGFwcGxpY2F0aW9uQ2FjaGVGcmFtZShhcHBsaWNhdGlvbkNhY2hlRnJhbWUpCiAg
ICAgewpAQCAtMTA0LDkgKzkwLDkgQEAgV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVEZXRh
aWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fYXBwbGljYXRpb25D
YWNoZUZyYW1lID0gYXBwbGljYXRpb25DYWNoZUZyYW1lOwogCiAgICAgICAgIHRoaXMubmVlZHNS
ZWZyZXNoKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZWZyZXNoOiBmdW5jdGlvbigpCisgICAg
cmVmcmVzaCgpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuYXBwbGljYXRpb25DYWNoZUZyYW1l
KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTE2LDE5ICsxMDIsMTkgQEAgV2ViSW5zcGVjdG9y
LkFwcGxpY2F0aW9uQ2FjaGVEZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKIAogICAg
ICAgICB0aGlzLl9yZWZyZXNoT25saW5lUm93KCk7CiAgICAgICAgIHRoaXMuX3JlZnJlc2hTdGF0
dXNSb3coKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9uZXR3b3Jr
U3RhdGVVcGRhdGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfbmV0d29ya1N0YXRlVXBkYXRlZChl
dmVudCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5hcHBsaWNhdGlvbkNhY2hlRnJhbWUpCiAg
ICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5fcmVmcmVzaE9ubGluZVJvdygpOwot
ICAgIH0sCisgICAgfQogCi0gICAgX2ZyYW1lTWFuaWZlc3RTdGF0dXNDaGFuZ2VkOiBmdW5jdGlv
bihldmVudCkKKyAgICBfZnJhbWVNYW5pZmVzdFN0YXR1c0NoYW5nZWQoZXZlbnQpCiAgICAgewog
ICAgICAgICBpZiAoIXRoaXMuYXBwbGljYXRpb25DYWNoZUZyYW1lKQogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtMTM4LDE1ICsxMjQsMjcgQEAgV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVE
ZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybjsKIAog
ICAgICAgICB0aGlzLl9yZWZyZXNoU3RhdHVzUm93KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBf
cmVmcmVzaE9ubGluZVJvdzogZnVuY3Rpb24oKQorICAgIF9yZWZyZXNoT25saW5lUm93KCkKICAg
ICB7CiAgICAgICAgIHRoaXMuX29ubGluZVJvdy52YWx1ZSA9IFdlYkluc3BlY3Rvci5hcHBsaWNh
dGlvbkNhY2hlTWFuYWdlci5vbmxpbmUgPyBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlllcyIpIDog
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJObyIpOwotICAgIH0sCisgICAgfQogCi0gICAgX3JlZnJl
c2hTdGF0dXNSb3c6IGZ1bmN0aW9uKCkKKyAgICBfcmVmcmVzaFN0YXR1c1JvdygpCiAgICAgewog
ICAgICAgICB0aGlzLl9zdGF0dXNSb3cudmFsdWUgPSBXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25D
YWNoZURldGFpbHNTaWRlYmFyUGFuZWwuU3RhdHVzW3RoaXMuYXBwbGljYXRpb25DYWNoZUZyYW1l
LnN0YXR1c107CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVEZXRh
aWxzU2lkZWJhclBhbmVsLlN0eWxlQ2xhc3NOYW1lID0gImFwcGxpY2F0aW9uLWNhY2hlIjsKKwor
Ly8gVGhpcyBuZWVkcyB0byBiZSBrZXB0IGluIHN5bmMgd2l0aCBBcHBsaWNhdGlvbkNhY2hlTWFu
YWdlci5qcy4KK1dlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRGV0YWlsc1NpZGViYXJQYW5l
bC5TdGF0dXMgPSB7CisgICAgMDogIlVuY2FjaGVkIiwKKyAgICAxOiAiSWRsZSIsCisgICAgMjog
IkNoZWNraW5nIiwKKyAgICAzOiAiRG93bmxvYWRpbmciLAorICAgIDQ6ICJVcGRhdGVSZWFkeSIs
CisgICAgNTogIk9ic29sZXRlIgorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGV0YWlsc1Np
ZGViYXJQYW5lbC5qcwppbmRleCAwZWE4ZjljLi4xMjg4MDI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURldGFpbHNTaWRlYmFy
UGFuZWwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
Q1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw5ICsyMywxMSBAQAogICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5DU1NTdHlsZURl
dGFpbHNTaWRlYmFyUGFuZWwgPSBmdW5jdGlvbigpCitXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZXRh
aWxzU2lkZWJhclBhbmVsID0gY2xhc3MgQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsIGV4dGVu
ZHMgV2ViSW5zcGVjdG9yLkRPTURldGFpbHNTaWRlYmFyUGFuZWwKIHsKLSAgICBXZWJJbnNwZWN0
b3IuRE9NRGV0YWlsc1NpZGViYXJQYW5lbC5jYWxsKHRoaXMsICJjc3Mtc3R5bGUiLCBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIlN0eWxlcyIpLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0eWxlIiks
ICJJbWFnZXMvTmF2aWdhdGlvbkl0ZW1CcnVzaEFuZFJ1bGVyLnN2ZyIsICI0Iik7CisgICAgY29u
c3RydWN0b3IoKQorICAgIHsKKyAgICAgICAgc3VwZXIoImNzcy1zdHlsZSIsIFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiU3R5bGVzIiksIFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3R5bGUiKSwgIklt
YWdlcy9OYXZpZ2F0aW9uSXRlbUJydXNoQW5kUnVsZXIuc3ZnIiwgIjQiKTsKIAogICAgICAgICB0
aGlzLl9zZWxlY3RlZFBhbmVsID0gbnVsbDsKIApAQCAtODIsMjQgKzg0LDE2IEBAIFdlYkluc3Bl
Y3Rvci5DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwgPSBmdW5jdGlvbigpCiAKICAgICAgICAg
Ly8gVGhpcyB3aWxsIGNhdXNlIHRoZSBzZWxlY3RlZCBwYW5lbCB0byBiZSBzZXQgaW4gX25hdmln
YXRpb25JdGVtU2VsZWN0ZWQuCiAgICAgICAgIHRoaXMuX25hdmlnYXRpb25CYXIuc2VsZWN0ZWRO
YXZpZ2F0aW9uSXRlbSA9IHRoaXMuX2xhc3RTZWxlY3RlZFNlY3Rpb25TZXR0aW5nLnZhbHVlOwot
fTsKLQotV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5Qc2V1ZG9DbGFz
c2VzRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gInBzZXVkby1jbGFzc2VzIjsKLVdlYkluc3BlY3Rv
ci5DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwuUHNldWRvQ2xhc3Nlc0dyb3VwRWxlbWVudFN0
eWxlQ2xhc3NOYW1lID0gImdyb3VwIjsKLVdlYkluc3BlY3Rvci5DU1NTdHlsZURldGFpbHNTaWRl
YmFyUGFuZWwuTm9Gb3JjZWRQc2V1ZG9DbGFzc2VzU2Nyb2xsT2Zmc2V0ID0gMzg7IC8vIERlZmF1
bHQgaGVpZ2h0IG9mIHRoZSBmb3JjZWQgcHNldWRvIGNsYXNzZXMgY29udGFpbmVyLiBVcGRhdGVk
IGluIHdpZHRoRGlkQ2hhbmdlLgotCi1XZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZXRhaWxzU2lkZWJh
clBhbmVsLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkNTU1N0
eWxlRGV0YWlsc1NpZGViYXJQYW5lbCwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5ET01E
ZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZSwKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAot
ICAgIHN1cHBvcnRzRE9NTm9kZTogZnVuY3Rpb24obm9kZVRvSW5zcGVjdCkKKyAgICBzdXBwb3J0
c0RPTU5vZGUobm9kZVRvSW5zcGVjdCkKICAgICB7CiAgICAgICAgIHJldHVybiBub2RlVG9JbnNw
ZWN0Lm5vZGVUeXBlKCkgPT09IE5vZGUuRUxFTUVOVF9OT0RFOwotICAgIH0sCisgICAgfQogCi0g
ICAgcmVmcmVzaDogZnVuY3Rpb24oKQorICAgIHJlZnJlc2goKQogICAgIHsKICAgICAgICAgdmFy
IGRvbU5vZGUgPSB0aGlzLmRvbU5vZGU7CiAgICAgICAgIGlmICghZG9tTm9kZSkKQEAgLTExMyw5
ICsxMDcsOSBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuX3VwZGF0ZVBzZXVkb0NsYXNzQ2hl
Y2tib3hlcygpOwotICAgIH0sCisgICAgfQogCi0gICAgdmlzaWJpbGl0eURpZENoYW5nZTogZnVu
Y3Rpb24oKQorICAgIHZpc2liaWxpdHlEaWRDaGFuZ2UoKQogICAgIHsKICAgICAgICAgV2ViSW5z
cGVjdG9yLlNpZGViYXJQYW5lbC5wcm90b3R5cGUudmlzaWJpbGl0eURpZENoYW5nZS5jYWxsKHRo
aXMpOwogCkBAIC0xMzMsMjcgKzEyNywyNyBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZXRhaWxz
U2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlzLl9zZWxlY3RlZFBhbmVs
LnNob3duKCk7CiAgICAgICAgIHRoaXMuX3NlbGVjdGVkUGFuZWwubWFya0FzTmVlZHNSZWZyZXNo
KHRoaXMuZG9tTm9kZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB3aWR0aERpZENoYW5nZTogZnVu
Y3Rpb24oKQorICAgIHdpZHRoRGlkQ2hhbmdlKCkKICAgICB7CiAgICAgICAgIHRoaXMuX3VwZGF0
ZU5vRm9yY2VkUHNldWRvQ2xhc3Nlc1Njcm9sbE9mZnNldCgpOwogCiAgICAgICAgIGlmICh0aGlz
Ll9zZWxlY3RlZFBhbmVsKQogICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRQYW5lbC53aWR0aERp
ZENoYW5nZSgpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJvdGVjdGVkCiAKLSAgICBhZGRF
dmVudExpc3RlbmVyczogZnVuY3Rpb24oKQorICAgIGFkZEV2ZW50TGlzdGVuZXJzKCkKICAgICB7
CiAgICAgICAgIHRoaXMuZG9tTm9kZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01O
b2RlLkV2ZW50LkVuYWJsZWRQc2V1ZG9DbGFzc2VzQ2hhbmdlZCwgdGhpcy5fdXBkYXRlUHNldWRv
Q2xhc3NDaGVja2JveGVzLCB0aGlzKTsKLSAgICB9LAorICAgIH0KIAotICAgIHJlbW92ZUV2ZW50
TGlzdGVuZXJzOiBmdW5jdGlvbigpCisgICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcnMoKQogICAgIHsK
ICAgICAgICAgdGhpcy5kb21Ob2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhp
cyk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKQEAgLTE2MiwxNSArMTU2LDE1
IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlID0g
ewogICAgICAgICBpZiAoIVdlYkluc3BlY3Rvci5jc3NTdHlsZU1hbmFnZXIuY2FuRm9yY2VQc2V1
ZG9DbGFzc2VzKCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgcmV0dXJuIHRoaXMu
ZG9tTm9kZSAmJiB0aGlzLmRvbU5vZGUuZW5hYmxlZFBzZXVkb0NsYXNzZXMubGVuZ3RoID8gMCA6
IFdlYkluc3BlY3Rvci5DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwuTm9Gb3JjZWRQc2V1ZG9D
bGFzc2VzU2Nyb2xsT2Zmc2V0OwotICAgIH0sCisgICAgfQogCi0gICAgX3VwZGF0ZU5vRm9yY2Vk
UHNldWRvQ2xhc3Nlc1Njcm9sbE9mZnNldDogZnVuY3Rpb24oKQorICAgIF91cGRhdGVOb0ZvcmNl
ZFBzZXVkb0NsYXNzZXNTY3JvbGxPZmZzZXQoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2Zv
cmNlZFBzZXVkb0NsYXNzQ29udGFpbmVyKQogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLkNTU1N0
eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5Ob0ZvcmNlZFBzZXVkb0NsYXNzZXNTY3JvbGxPZmZzZXQg
PSB0aGlzLl9mb3JjZWRQc2V1ZG9DbGFzc0NvbnRhaW5lci5vZmZzZXRIZWlnaHQ7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfbmF2aWdhdGlvbkl0ZW1TZWxlY3RlZDogZnVuY3Rpb24oZXZlbnQpCisg
ICAgX25hdmlnYXRpb25JdGVtU2VsZWN0ZWQoZXZlbnQpCiAgICAgewogICAgICAgICBjb25zb2xl
LmFzc2VydChldmVudC50YXJnZXQuc2VsZWN0ZWROYXZpZ2F0aW9uSXRlbSk7CiAgICAgICAgIGlm
ICghZXZlbnQudGFyZ2V0LnNlbGVjdGVkTmF2aWdhdGlvbkl0ZW0pCkBAIC0yMDgsMTcgKzIwMiwx
NyBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9
IHsKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuX2xhc3RTZWxlY3RlZFNlY3Rpb25TZXR0aW5n
LnZhbHVlID0gc2VsZWN0ZWROYXZpZ2F0aW9uSXRlbS5pZGVudGlmaWVyOwotICAgIH0sCisgICAg
fQogCi0gICAgX2ZvcmNlZFBzZXVkb0NsYXNzQ2hlY2tib3hDaGFuZ2VkOiBmdW5jdGlvbihwc2V1
ZG9DbGFzcywgZXZlbnQpCisgICAgX2ZvcmNlZFBzZXVkb0NsYXNzQ2hlY2tib3hDaGFuZ2VkKHBz
ZXVkb0NsYXNzLCBldmVudCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5kb21Ob2RlKQogICAg
ICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuZG9tTm9kZS5zZXRQc2V1ZG9DbGFzc0Vu
YWJsZWQocHNldWRvQ2xhc3MsIGV2ZW50LnRhcmdldC5jaGVja2VkKTsKLSAgICB9LAorICAgIH0K
IAotICAgIF91cGRhdGVQc2V1ZG9DbGFzc0NoZWNrYm94ZXM6IGZ1bmN0aW9uKCkKKyAgICBfdXBk
YXRlUHNldWRvQ2xhc3NDaGVja2JveGVzKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5kb21O
b2RlKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjMxLDMgKzIyNSw3IEBAIFdlYkluc3BlY3Rv
ci5DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB9CiAg
ICAgfQogfTsKKworV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5Qc2V1
ZG9DbGFzc2VzRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gInBzZXVkby1jbGFzc2VzIjsKK1dlYklu
c3BlY3Rvci5DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwuUHNldWRvQ2xhc3Nlc0dyb3VwRWxl
bWVudFN0eWxlQ2xhc3NOYW1lID0gImdyb3VwIjsKK1dlYkluc3BlY3Rvci5DU1NTdHlsZURldGFp
bHNTaWRlYmFyUGFuZWwuTm9Gb3JjZWRQc2V1ZG9DbGFzc2VzU2Nyb2xsT2Zmc2V0ID0gMzg7IC8v
IERlZmF1bHQgaGVpZ2h0IG9mIHRoZSBmb3JjZWQgcHNldWRvIGNsYXNzZXMgY29udGFpbmVyLiBV
cGRhdGVkIGluIHdpZHRoRGlkQ2hhbmdlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NRGV0YWlsc1NpZGViYXJQYW5lbC5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTURldGFpbHNTaWRlYmFyUGFu
ZWwuanMKaW5kZXggYTAxODQ2Ni4uZGFhN2VmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NRGV0YWlsc1NpZGViYXJQYW5lbC5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01EZXRhaWxzU2lk
ZWJhclBhbmVsLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yMywyMiArMjMsMjAgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuRE9NRGV0YWlsc1NpZGViYXJQYW5lbCA9IGZ1
bmN0aW9uKGlkZW50aWZpZXIsIGRpc3BsYXlOYW1lLCBzaW5ndWxhckRpc3BsYXlOYW1lLCBpbWFn
ZSwga2V5Ym9hcmRTaG9ydGN1dEtleSwgZWxlbWVudCkKK1dlYkluc3BlY3Rvci5ET01EZXRhaWxz
U2lkZWJhclBhbmVsID0gY2xhc3MgRE9NRGV0YWlsc1NpZGViYXJQYW5lbCBleHRlbmRzIFdlYklu
c3BlY3Rvci5EZXRhaWxzU2lkZWJhclBhbmVsCiB7Ci0gICAgV2ViSW5zcGVjdG9yLkRldGFpbHNT
aWRlYmFyUGFuZWwuY2FsbCh0aGlzLCBpZGVudGlmaWVyLCBkaXNwbGF5TmFtZSwgc2luZ3VsYXJE
aXNwbGF5TmFtZSwgaW1hZ2UsIGtleWJvYXJkU2hvcnRjdXRLZXksIGVsZW1lbnQpOworICAgIGNv
bnN0cnVjdG9yKGlkZW50aWZpZXIsIGRpc3BsYXlOYW1lLCBzaW5ndWxhckRpc3BsYXlOYW1lLCBp
bWFnZSwga2V5Ym9hcmRTaG9ydGN1dEtleSwgZWxlbWVudCkKKyAgICB7CisgICAgICAgIHN1cGVy
KGlkZW50aWZpZXIsIGRpc3BsYXlOYW1lLCBzaW5ndWxhckRpc3BsYXlOYW1lLCBpbWFnZSwga2V5
Ym9hcmRTaG9ydGN1dEtleSwgZWxlbWVudCk7CiAKICAgICAgICAgdGhpcy5lbGVtZW50LmFkZEV2
ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fbW91c2VXYXNDbGlja2VkLmJpbmQodGhpcyksIHRy
dWUpOwogCiAgICAgICAgIHRoaXMuX2RvbU5vZGUgPSBudWxsOwotfTsKLQotV2ViSW5zcGVjdG9y
LkRPTURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBX
ZWJJbnNwZWN0b3IuRE9NRGV0YWlsc1NpZGViYXJQYW5lbCwKLSAgICBfX3Byb3RvX186IFdlYklu
c3BlY3Rvci5EZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZSwKKyAgICB9CiAKICAgICAvLyBQ
dWJsaWMKIAotICAgIGluc3BlY3Q6IGZ1bmN0aW9uKG9iamVjdHMpCisgICAgaW5zcGVjdChvYmpl
Y3RzKQogICAgIHsKICAgICAgICAgLy8gQ29udmVydCB0byBhIHNpbmdsZSBpdGVtIGFycmF5IGlm
IG5lZWRlZC4KICAgICAgICAgaWYgKCEob2JqZWN0cyBpbnN0YW5jZW9mIEFycmF5KSkKQEAgLTYw
LDEyICs1OCwxMiBAQCBXZWJJbnNwZWN0b3IuRE9NRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5
cGUgPSB7CiAgICAgICAgIHRoaXMuZG9tTm9kZSA9IG5vZGVUb0luc3BlY3Q7CiAKICAgICAgICAg
cmV0dXJuICEhdGhpcy5fZG9tTm9kZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBkb21Ob2Rl
KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9kb21Ob2RlOwotICAgIH0sCisgICAgfQog
CiAgICAgc2V0IGRvbU5vZGUoZG9tTm9kZSkKICAgICB7CkBAIC04MSwyNyArNzksMjcgQEAgV2Vi
SW5zcGVjdG9yLkRPTURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgdGhpcy5hZGRFdmVudExpc3RlbmVycygpOwogCiAgICAgICAgIHRoaXMubmVlZHNSZWZyZXNo
KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzdXBwb3J0c0RPTU5vZGU6IGZ1bmN0aW9uKG5vZGVU
b0luc3BlY3QpCisgICAgc3VwcG9ydHNET01Ob2RlKG5vZGVUb0luc3BlY3QpCiAgICAgewogICAg
ICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgogICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICB9LAorICAgIH0KIAotICAgIGFkZEV2ZW50TGlzdGVuZXJzOiBmdW5jdGlvbigpCisgICAg
YWRkRXZlbnRMaXN0ZW5lcnMoKQogICAgIHsKICAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3Vi
Y2xhc3Nlcy4KLSAgICB9LAorICAgIH0KIAotICAgIHJlbW92ZUV2ZW50TGlzdGVuZXJzOiBmdW5j
dGlvbigpCisgICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcnMoKQogICAgIHsKICAgICAgICAgLy8gSW1w
bGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUK
IAotICAgIF9tb3VzZVdhc0NsaWNrZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9tb3VzZVdhc0Ns
aWNrZWQoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fZG9tTm9kZSAmJiB0aGlzLl9k
b21Ob2RlLm93bmVyRG9jdW1lbnQpIHsKICAgICAgICAgICAgIHZhciBtYWluUmVzb3VyY2UgPSBX
ZWJJbnNwZWN0b3IuZnJhbWVSZXNvdXJjZU1hbmFnZXIucmVzb3VyY2VGb3JVUkwodGhpcy5fZG9t
Tm9kZS5vd25lckRvY3VtZW50LmRvY3VtZW50VVJMKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTU5vZGVEZXRhaWxzU2lkZWJhclBhbmVs
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NTm9kZURl
dGFpbHNTaWRlYmFyUGFuZWwuanMKaW5kZXggOGMxMWU4OS4uNDFlZDY2NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NTm9kZURldGFpbHNT
aWRlYmFyUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvRE9NTm9kZURldGFpbHNTaWRlYmFyUGFuZWwuanMKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMTUgKzIzLDE3IEBA
CiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9y
LkRPTU5vZGVEZXRhaWxzU2lkZWJhclBhbmVsID0gZnVuY3Rpb24oKQorV2ViSW5zcGVjdG9yLkRP
TU5vZGVEZXRhaWxzU2lkZWJhclBhbmVsID0gY2xhc3MgRE9NTm9kZURldGFpbHNTaWRlYmFyUGFu
ZWwgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuRE9NRGV0YWlsc1NpZGViYXJQYW5lbAogewotICAgIFdl
Ykluc3BlY3Rvci5ET01EZXRhaWxzU2lkZWJhclBhbmVsLmNhbGwodGhpcywgImRvbS1ub2RlLWRl
dGFpbHMiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk5vZGUiKSwgV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJOb2RlIiksICJJbWFnZXMvTmF2aWdhdGlvbkl0ZW1BbmdsZUJyYWNrZXRzLnN2ZyIsICIy
Iik7CisgICAgY29uc3RydWN0b3IoKQorICAgIHsKKyAgICAgICAgc3VwZXIoImRvbS1ub2RlLWRl
dGFpbHMiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk5vZGUiKSwgV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJOb2RlIiksICJJbWFnZXMvTmF2aWdhdGlvbkl0ZW1BbmdsZUJyYWNrZXRzLnN2ZyIsICIy
Iik7CiAKICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLkV2ZW50LkF0dHJpYnV0ZU1vZGlmaWVkLCB0
aGlzLl9hdHRyaWJ1dGVzQ2hhbmdlZCwgdGhpcyk7CiAgICAgICAgIFdlYkluc3BlY3Rvci5kb21U
cmVlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdlci5F
dmVudC5BdHRyaWJ1dGVSZW1vdmVkLCB0aGlzLl9hdHRyaWJ1dGVzQ2hhbmdlZCwgdGhpcyk7CiAg
ICAgICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5ET01UcmVlTWFuYWdlci5FdmVudC5DaGFyYWN0ZXJEYXRhTW9kaWZpZWQsIHRoaXMu
X2NoYXJhY3RlckRhdGFNb2RpZmllZCwgdGhpcyk7CiAKLSAgICB0aGlzLmVsZW1lbnQuY2xhc3NM
aXN0LmFkZChXZWJJbnNwZWN0b3IuRE9NTm9kZURldGFpbHNTaWRlYmFyUGFuZWwuU3R5bGVDbGFz
c05hbWUpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiZG9tLW5vZGUiKTsK
IAogICAgICAgICB0aGlzLl9pZGVudGl0eU5vZGVUeXBlUm93ID0gbmV3IFdlYkluc3BlY3Rvci5E
ZXRhaWxzU2VjdGlvblNpbXBsZVJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlR5cGUiKSk7CiAg
ICAgICAgIHRoaXMuX2lkZW50aXR5Tm9kZU5hbWVSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFp
bHNTZWN0aW9uU2ltcGxlUm93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiTmFtZSIpKTsKQEAgLTg4
LDE4ICs5MCwxMSBAQCBXZWJJbnNwZWN0b3IuRE9NTm9kZURldGFpbHNTaWRlYmFyUGFuZWwgPSBm
dW5jdGlvbigpCiAKICAgICAgICAgICAgIHRoaXMuY29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQo
YWNjZXNzaWJpbGl0eVNlY3Rpb24uZWxlbWVudCk7CiAgICAgICAgIH0KLX07Ci0KLVdlYkluc3Bl
Y3Rvci5ET01Ob2RlRGV0YWlsc1NpZGViYXJQYW5lbC5TdHlsZUNsYXNzTmFtZSA9ICJkb20tbm9k
ZSI7Ci1XZWJJbnNwZWN0b3IuRE9NTm9kZURldGFpbHNTaWRlYmFyUGFuZWwuUHJvcGVydGllc09i
amVjdEdyb3VwTmFtZSA9ICJkb20tbm9kZS1kZXRhaWxzLXNpZGViYXItcHJvcGVydGllcy1vYmpl
Y3QtZ3JvdXAiOwotCi1XZWJJbnNwZWN0b3IuRE9NTm9kZURldGFpbHNTaWRlYmFyUGFuZWwucHJv
dG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuRE9NTm9kZURldGFpbHNT
aWRlYmFyUGFuZWwsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuRE9NRGV0YWlsc1NpZGVi
YXJQYW5lbC5wcm90b3R5cGUsCisgICAgICAgIH0KIAogICAgIC8vIFB1YmxpYwogCi0gICAgcmVm
cmVzaDogZnVuY3Rpb24oKQorICAgIHJlZnJlc2goKQogICAgIHsKICAgICAgICAgdmFyIGRvbU5v
ZGUgPSB0aGlzLmRvbU5vZGU7CiAgICAgICAgIGlmICghZG9tTm9kZSkKQEAgLTExMywyMSArMTA4
LDIxIEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUg
PSB7CiAgICAgICAgIHRoaXMuX3JlZnJlc2hQcm9wZXJ0aWVzKCk7CiAgICAgICAgIHRoaXMuX3Jl
ZnJlc2hFdmVudExpc3RlbmVycygpOwogICAgICAgICB0aGlzLl9yZWZyZXNoQWNjZXNzaWJpbGl0
eSgpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX2FjY2Vzc2liaWxp
dHlTdXBwb3J0ZWQ6IGZ1bmN0aW9uKCkKKyAgICBfYWNjZXNzaWJpbGl0eVN1cHBvcnRlZCgpCiAg
ICAgewogICAgICAgICByZXR1cm4gd2luZG93LkRPTUFnZW50ICYmIERPTUFnZW50LmdldEFjY2Vz
c2liaWxpdHlQcm9wZXJ0aWVzRm9yTm9kZTsKLSAgICB9LAorICAgIH0KIAotICAgIF9yZWZyZXNo
QXR0cmlidXRlczogZnVuY3Rpb24oKQorICAgIF9yZWZyZXNoQXR0cmlidXRlcygpCiAgICAgewog
ICAgICAgICB0aGlzLl9hdHRyaWJ1dGVzRGF0YUdyaWRSb3cuZGF0YUdyaWQgPSB0aGlzLl9jcmVh
dGVBdHRyaWJ1dGVzRGF0YUdyaWQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9yZWZyZXNoUHJv
cGVydGllczogZnVuY3Rpb24oKQorICAgIF9yZWZyZXNoUHJvcGVydGllcygpCiAgICAgewogICAg
ICAgICB2YXIgZG9tTm9kZSA9IHRoaXMuZG9tTm9kZTsKICAgICAgICAgaWYgKCFkb21Ob2RlKQpA
QCAtMjE0LDkgKzIwOSw5IEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlRGV0YWlsc1NpZGViYXJQYW5l
bC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgZWxlbWVudC5hcHBlbmRDaGlsZChkZXRh
aWxzU2VjdGlvbi5lbGVtZW50KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0sCisg
ICAgfQogCi0gICAgX3JlZnJlc2hFdmVudExpc3RlbmVyczogZnVuY3Rpb24oKQorICAgIF9yZWZy
ZXNoRXZlbnRMaXN0ZW5lcnMoKQogICAgIHsKICAgICAgICAgdmFyIGRvbU5vZGUgPSB0aGlzLmRv
bU5vZGU7CiAgICAgICAgIGlmICghZG9tTm9kZSkKQEAgLTI2NCwxMSArMjU5LDE4IEBAIFdlYklu
c3BlY3Rvci5ET01Ob2RlRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICAgICAgcm93cy5wdXNoKGV2ZW50TGlzdGVuZXJTZWN0aW9uc1tldmVudExpc3RlbmVyVHlw
ZXNbaV1dKTsKICAgICAgICAgICAgIHRoaXMuX2V2ZW50TGlzdGVuZXJzU2VjdGlvbkdyb3VwLnJv
d3MgPSByb3dzOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CisKKyAgICBfcmVmcmVzaEFjY2Vz
c2liaWxpdHkoKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9hY2Nlc3NpYmlsaXR5U3VwcG9y
dGVkKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdmFyIGRvbU5vZGUgPSB0aGlz
LmRvbU5vZGU7CisgICAgICAgIGlmICghZG9tTm9kZSkKKyAgICAgICAgICAgIHJldHVybjsKIAot
ICAgIF9yZWZyZXNoQWNjZXNzaWJpbGl0eTogKGZ1bmN0aW9uKCkgewogICAgICAgICB2YXIgcHJv
cGVydGllcyA9IHt9OwotICAgICAgICB2YXIgZG9tTm9kZTsKIAogICAgICAgICBmdW5jdGlvbiBi
b29sZWFuVmFsdWVUb0xvY2FsaXplZFN0cmluZ0lmVHJ1ZShwcm9wZXJ0eSkgewogICAgICAgICAg
ICAgaWYgKHByb3BlcnRpZXNbcHJvcGVydHldKQpAQCAtNTI1LDM3ICs1MjcsMjUgQEAgV2ViSW5z
cGVjdG9yLkRPTU5vZGVEZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGZ1bmN0aW9uIHJlZnJlc2hBWCgpIHsKLSAgICAg
ICAgICAgIGlmICghdGhpcy5fYWNjZXNzaWJpbGl0eVN1cHBvcnRlZCgpKQotICAgICAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBkb21Ob2RlIGlzIGF2
YWlsYWJsZSBpbiB0aGUgY2xvc3VyZSBzY29wZS4KLSAgICAgICAgICAgIGRvbU5vZGUgPSB0aGlz
LmRvbU5vZGU7Ci0gICAgICAgICAgICBpZiAoIWRvbU5vZGUpCi0gICAgICAgICAgICAgICAgcmV0
dXJuOwotCiAgICAgICAgIGRvbU5vZGUuYWNjZXNzaWJpbGl0eVByb3BlcnRpZXMoYWNjZXNzaWJp
bGl0eVByb3BlcnRpZXNDYWxsYmFjay5iaW5kKHRoaXMpKTsKICAgICB9CiAKLSAgICAgICAgcmV0
dXJuIHJlZnJlc2hBWDsKLSAgICB9KCkpLAotCi0gICAgX2F0dHJpYnV0ZXNDaGFuZ2VkOiBmdW5j
dGlvbihldmVudCkKKyAgICBfYXR0cmlidXRlc0NoYW5nZWQoZXZlbnQpCiAgICAgewogICAgICAg
ICBpZiAoZXZlbnQuZGF0YS5ub2RlICE9PSB0aGlzLmRvbU5vZGUpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIHRoaXMuX3JlZnJlc2hBdHRyaWJ1dGVzKCk7CiAgICAgICAgIHRoaXMuX3Jl
ZnJlc2hBY2Nlc3NpYmlsaXR5KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY2hhcmFjdGVyRGF0
YU1vZGlmaWVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfY2hhcmFjdGVyRGF0YU1vZGlmaWVkKGV2
ZW50KQogICAgIHsKICAgICAgICAgaWYgKGV2ZW50LmRhdGEubm9kZSAhPT0gdGhpcy5kb21Ob2Rl
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB0aGlzLl9pZGVudGl0eU5vZGVWYWx1ZVJv
dy52YWx1ZSA9IHRoaXMuZG9tTm9kZS5ub2RlVmFsdWUoKTsKLSAgICB9LAorICAgIH0KIAotICAg
IF9ub2RlVHlwZURpc3BsYXlOYW1lOiBmdW5jdGlvbigpCisgICAgX25vZGVUeXBlRGlzcGxheU5h
bWUoKQogICAgIHsKICAgICAgICAgc3dpdGNoICh0aGlzLmRvbU5vZGUubm9kZVR5cGUoKSkgewog
ICAgICAgICBjYXNlIE5vZGUuRUxFTUVOVF9OT0RFOgpAQCAtNTc4LDkgKzU2OCw5IEBAIFdlYklu
c3BlY3Rvci5ET01Ob2RlRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICBjb25zb2xlLmVycm9yKCJVbmtub3duIERPTSBub2RlIHR5cGU6ICIsIHRoaXMuZG9tTm9k
ZS5ub2RlVHlwZSgpKTsKICAgICAgICAgICAgIHJldHVybiB0aGlzLmRvbU5vZGUubm9kZVR5cGUo
KTsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCi0gICAgX2NyZWF0ZUF0dHJpYnV0ZXNEYXRh
R3JpZDogZnVuY3Rpb24oKQorICAgIF9jcmVhdGVBdHRyaWJ1dGVzRGF0YUdyaWQoKQogICAgIHsK
ICAgICAgICAgdmFyIGRvbU5vZGUgPSB0aGlzLmRvbU5vZGU7CiAgICAgICAgIGlmICghZG9tTm9k
ZSB8fCAhZG9tTm9kZS5oYXNBdHRyaWJ1dGVzKCkpCkBAIC01OTMsNyArNTgzLDEwIEBAIFdlYklu
c3BlY3Rvci5ET01Ob2RlRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cmlidXRlcy5sZW5ndGg7ICsraSkgewogICAgICAgICAg
ICAgdmFyIGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZXNbaV07CiAKKyAgICAgICAgICAgIGNvbnNvbGUu
bG9nKGF0dHJpYnV0ZS5uYW1lLCBhdHRyaWJ1dGUudmFsdWUpOworCiAgICAgICAgICAgICB2YXIg
bm9kZSA9IG5ldyBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlKHtuYW1lOiBhdHRyaWJ1dGUubmFt
ZSwgdmFsdWU6IGF0dHJpYnV0ZS52YWx1ZSB8fCAiIn0sIGZhbHNlKTsKKyAgICAgICAgICAgIGNv
bnNvbGUubG9nKG5vZGUpOwogICAgICAgICAgICAgbm9kZS5zZWxlY3RhYmxlID0gdHJ1ZTsKIAog
ICAgICAgICAgICAgZGF0YUdyaWQuYXBwZW5kQ2hpbGQobm9kZSk7CkBAIC02MDIsMyArNTk1LDUg
QEAgV2ViSW5zcGVjdG9yLkRPTU5vZGVEZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgcmV0dXJuIGRhdGFHcmlkOwogICAgIH0KIH07CisKK1dlYkluc3BlY3Rvci5ET01O
b2RlRGV0YWlsc1NpZGViYXJQYW5lbC5Qcm9wZXJ0aWVzT2JqZWN0R3JvdXBOYW1lID0gImRvbS1u
b2RlLWRldGFpbHMtc2lkZWJhci1wcm9wZXJ0aWVzLW9iamVjdC1ncm91cCI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZWJ1Z2dlclNpZGVi
YXJQYW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Rl
YnVnZ2VyU2lkZWJhclBhbmVsLmpzCmluZGV4IDY3ODcyOTkuLjVhN2U3MDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RlYnVnZ2VyU2lkZWJh
clBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0RlYnVnZ2VyU2lkZWJhclBhbmVsLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw5ICsyMywxMSBAQAogICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQ
YW5lbCA9IGZ1bmN0aW9uKCkKK1dlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQYW5lbCA9IGNs
YXNzIERlYnVnZ2VyU2lkZWJhclBhbmVsIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25T
aWRlYmFyUGFuZWwKIHsKLSAgICBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5j
YWxsKHRoaXMsICJkZWJ1Z2dlciIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiRGVidWdnZXIiKSwg
IkltYWdlcy9OYXZpZ2F0aW9uSXRlbUJ1Zy5zdmciLCAiMyIsIHRydWUpOworICAgIGNvbnN0cnVj
dG9yKCkKKyAgICB7CisgICAgICAgIHN1cGVyKCJkZWJ1Z2dlciIsIFdlYkluc3BlY3Rvci5VSVN0
cmluZygiRGVidWdnZXIiKSwgIkltYWdlcy9OYXZpZ2F0aW9uSXRlbUJ1Zy5zdmciLCAiMyIsIHRy
dWUpOwogCiAgICAgICAgIFdlYkluc3BlY3Rvci5GcmFtZS5hZGRFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5GcmFtZS5FdmVudC5NYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMuX21haW5SZXNv
dXJjZUNoYW5nZWQsIHRoaXMpOwogICAgICAgICBXZWJJbnNwZWN0b3IuRnJhbWUuYWRkRXZlbnRM
aXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuUmVzb3VyY2VXYXNBZGRlZCwgdGhpcy5f
cmVzb3VyY2VBZGRlZCwgdGhpcyk7CkBAIC0xNTQsMjAgKzE1Niw3IEBAIFdlYkluc3BlY3Rvci5E
ZWJ1Z2dlclNpZGViYXJQYW5lbCA9IGZ1bmN0aW9uKCkKICAgICAgICAgdGhpcy5fcGF1c2VSZWFz
b25TZWN0aW9uLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQYXVzZSBSZWFzb24iKTsK
IAogICAgICAgICBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5CcmVha3BvaW50LkV2ZW50LkRpc3BsYXlMb2NhdGlvbkRpZENoYW5nZSwgdGhpcy5f
YnJlYWtwb2ludERpc3BsYXlMb2NhdGlvbkRpZENoYW5nZSwgdGhpcyk7Ci19OwotCi1XZWJJbnNw
ZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFuZWwuT2Zmc2V0U2VjdGlvbnNTdHlsZUNsYXNzTmFtZSA9
ICJvZmZzZXQtc2VjdGlvbnMiOwotV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBhbmVsLkRl
YnVnZ2VyUGF1c2VkU3R5bGVDbGFzc05hbWUgPSAicGF1c2VkIjsKLVdlYkluc3BlY3Rvci5EZWJ1
Z2dlclNpZGViYXJQYW5lbC5FeGNlcHRpb25JY29uU3R5bGVDbGFzc05hbWUgPSAiYnJlYWtwb2lu
dC1leGNlcHRpb24taWNvbiI7Ci1XZWJJbnNwZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFuZWwuUGF1
c2VkQnJlYWtwb2ludEljb25TdHlsZUNsYXNzTmFtZSA9ICJicmVha3BvaW50LXBhdXNlZC1pY29u
IjsKLVdlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQYW5lbC5HbG9iYWxJY29uU3R5bGVDbGFz
c05hbWUgPSAiZ2xvYmFsLWJyZWFrcG9pbnRzLWljb24iOwotCi1XZWJJbnNwZWN0b3IuRGVidWdn
ZXJTaWRlYmFyUGFuZWwuU2VsZWN0ZWRBbGxFeGNlcHRpb25zQ29va2llS2V5ID0gImRlYnVnZ2Vy
LXNpZGViYXItcGFuZWwtYWxsLWV4Y2VwdGlvbnMtYnJlYWtwb2ludCI7Ci1XZWJJbnNwZWN0b3Iu
RGVidWdnZXJTaWRlYmFyUGFuZWwuU2VsZWN0ZWRBbGxVbmNhdWdodEV4Y2VwdGlvbnNDb29raWVL
ZXkgPSAiZGVidWdnZXItc2lkZWJhci1wYW5lbC1hbGwtdW5jYXVnaHQtZXhjZXB0aW9ucy1icmVh
a3BvaW50IjsKLQotV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9
IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBhbmVsLAot
ICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90
eXBlLAorICAgIH0KIAogICAgIC8vIFB1YmxpYwogCkBAIC0xNzYsMjUgKzE2NSwyNSBAQCBXZWJJ
bnNwZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICByZXR1
cm4gISF0aGlzLl9icmVha3BvaW50c0NvbnRlbnRUcmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVt
ZW50CiAgICAgICAgICAgICB8fCAhIXRoaXMuX2NhbGxTdGFja0NvbnRlbnRUcmVlT3V0bGluZS5z
ZWxlY3RlZFRyZWVFbGVtZW50CiAgICAgICAgICAgICB8fCAodGhpcy5fcGF1c2VSZWFzb25UcmVl
T3V0bGluZSAmJiAhIXRoaXMuX3BhdXNlUmVhc29uVHJlZU91dGxpbmUuc2VsZWN0ZWRUcmVlRWxl
bWVudCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93RGVmYXVsdENvbnRlbnRWaWV3OiBmdW5j
dGlvbigpCisgICAgc2hvd0RlZmF1bHRDb250ZW50VmlldygpCiAgICAgewogICAgICAgICBXZWJJ
bnNwZWN0b3IucmVzb3VyY2VTaWRlYmFyUGFuZWwuc2hvd0RlZmF1bHRDb250ZW50VmlldygpOwot
ICAgIH0sCisgICAgfQogCi0gICAgdHJlZUVsZW1lbnRGb3JSZXByZXNlbnRlZE9iamVjdDogZnVu
Y3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCisgICAgdHJlZUVsZW1lbnRGb3JSZXByZXNlbnRlZE9i
amVjdChyZXByZXNlbnRlZE9iamVjdCkKICAgICB7CiAgICAgICAgIC8vIFRoZSBtYWluIHJlc291
cmNlIGlzIHVzZWQgYXMgdGhlIHJlcHJlc2VudGVkT2JqZWN0IGluc3RlYWQgb2YgRnJhbWUgaW4g
b3VyIHRyZWUuCiAgICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYklu
c3BlY3Rvci5GcmFtZSkKICAgICAgICAgICAgIHJlcHJlc2VudGVkT2JqZWN0ID0gcmVwcmVzZW50
ZWRPYmplY3QubWFpblJlc291cmNlOwogCiAgICAgICAgIHJldHVybiB0aGlzLmNvbnRlbnRUcmVl
T3V0bGluZS5nZXRDYWNoZWRUcmVlRWxlbWVudChyZXByZXNlbnRlZE9iamVjdCk7Ci0gICAgfSwK
KyAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQKIAotICAgIHNhdmVTdGF0ZVRvQ29va2llOiBmdW5j
dGlvbihjb29raWUpCisgICAgc2F2ZVN0YXRlVG9Db29raWUoY29va2llKQogICAgIHsKICAgICAg
ICAgY29uc29sZS5hc3NlcnQoY29va2llKTsKIApAQCAtMjEwLDEwICsxOTksMTAgQEAgV2ViSW5z
cGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKHJl
cHJlc2VudGVkT2JqZWN0ID09PSBXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLmFsbFVuY2F1
Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnQpCiAgICAgICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9y
LkRlYnVnZ2VyU2lkZWJhclBhbmVsLlNlbGVjdGVkQWxsVW5jYXVnaHRFeGNlcHRpb25zQ29va2ll
S2V5XSA9IHRydWU7CiAKLSAgICAgICAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFu
ZWwucHJvdG90eXBlLnNhdmVTdGF0ZVRvQ29va2llLmNhbGwodGhpcywgY29va2llKTsKLSAgICB9
LAorICAgICAgICBzdXBlci5zYXZlU3RhdGVUb0Nvb2tpZShjb29raWUpOworICAgIH0KIAotICAg
IHJlc3RvcmVTdGF0ZUZyb21Db29raWU6IGZ1bmN0aW9uKGNvb2tpZSwgcmVsYXhlZE1hdGNoRGVs
YXkpCisgICAgcmVzdG9yZVN0YXRlRnJvbUNvb2tpZShjb29raWUsIHJlbGF4ZWRNYXRjaERlbGF5
KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoY29va2llKTsKIApAQCAtMjIzLDEyICsy
MTIsMTIgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgZWxzZSBpZiAoY29va2llW1dlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQYW5l
bC5TZWxlY3RlZEFsbFVuY2F1Z2h0RXhjZXB0aW9uc0Nvb2tpZUtleV0pCiAgICAgICAgICAgICB0
aGlzLl9hbGxVbmNhdWdodEV4Y2VwdGlvbnNCcmVha3BvaW50VHJlZUVsZW1lbnQucmV2ZWFsQW5k
U2VsZWN0KCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5OYXZpZ2F0
aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZS5yZXN0b3JlU3RhdGVGcm9tQ29va2llLmNhbGwodGhp
cywgY29va2llLCByZWxheGVkTWF0Y2hEZWxheSk7Ci0gICAgfSwKKyAgICAgICAgICAgIHN1cGVy
LnJlc3RvcmVTdGF0ZUZyb21Db29raWUoY29va2llLCByZWxheGVkTWF0Y2hEZWxheSk7CisgICAg
fQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX2RlYnVnZ2VyUGF1c2VSZXN1bWVCdXR0b25DbGlj
a2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBfZGVidWdnZXJQYXVzZVJlc3VtZUJ1dHRvbkNsaWNr
ZWQoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdl
ci5wYXVzZWQpCiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLnJlc3Vt
ZSgpOwpAQCAtMjM2LDI0ICsyMjUsMjQgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBh
bmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2RlYnVnZ2VyUGF1c2VSZXN1bWVC
dXR0b25JdGVtLmVuYWJsZWQgPSBmYWxzZTsKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1
Z2dlck1hbmFnZXIucGF1c2UoKTsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCi0gICAgX2Rl
YnVnZ2VyU3RlcE92ZXJCdXR0b25DbGlja2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBfZGVidWdn
ZXJTdGVwT3ZlckJ1dHRvbkNsaWNrZWQoZXZlbnQpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0
b3IuZGVidWdnZXJNYW5hZ2VyLnN0ZXBPdmVyKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZGVi
dWdnZXJTdGVwSW50b0J1dHRvbkNsaWNrZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9kZWJ1Z2dl
clN0ZXBJbnRvQnV0dG9uQ2xpY2tlZChldmVudCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rv
ci5kZWJ1Z2dlck1hbmFnZXIuc3RlcEludG8oKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9kZWJ1
Z2dlclN0ZXBPdXRCdXR0b25DbGlja2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBfZGVidWdnZXJT
dGVwT3V0QnV0dG9uQ2xpY2tlZChldmVudCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5k
ZWJ1Z2dlck1hbmFnZXIuc3RlcE91dCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX2RlYnVnZ2Vy
RGlkUGF1c2U6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9kZWJ1Z2dlckRpZFBhdXNlKGV2ZW50KQog
ICAgIHsKICAgICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5pbnNlcnRCZWZvcmUodGhpcy5fY2Fs
bFN0YWNrU2VjdGlvbi5lbGVtZW50LCB0aGlzLmNvbnRlbnRFbGVtZW50LmZpcnN0Q2hpbGQpOwog
ICAgICAgICBpZiAodGhpcy5fdXBkYXRlUGF1c2VSZWFzb24oKSkKQEAgLTI2NSw5ICsyNTQsOSBA
QCBXZWJJbnNwZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAg
ICB0aGlzLl9kZWJ1Z2dlclN0ZXBJbnRvQnV0dG9uSXRlbS5lbmFibGVkID0gdHJ1ZTsKIAogICAg
ICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuRGVidWdnZXJTaWRl
YmFyUGFuZWwuRGVidWdnZXJQYXVzZWRTdHlsZUNsYXNzTmFtZSk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfZGVidWdnZXJEaWRSZXN1bWU6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9kZWJ1Z2dlckRp
ZFJlc3VtZShldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX2NhbGxTdGFja1NlY3Rpb24uZWxl
bWVudC5yZW1vdmUoKTsKICAgICAgICAgdGhpcy5fcGF1c2VSZWFzb25TZWN0aW9uLmVsZW1lbnQu
cmVtb3ZlKCk7CkBAIC0yNzksMTkgKzI2OCwxOSBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJTaWRl
YmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9kZWJ1Z2dlclN0ZXBPdXRCdXR0
b25JdGVtLmVuYWJsZWQgPSBmYWxzZTsKIAogICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0
LnJlbW92ZShXZWJJbnNwZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFuZWwuRGVidWdnZXJQYXVzZWRT
dHlsZUNsYXNzTmFtZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfYnJlYWtwb2ludHNFbmFibGVk
RGlkQ2hhbmdlOiBmdW5jdGlvbihldmVudCkKKyAgICBfYnJlYWtwb2ludHNFbmFibGVkRGlkQ2hh
bmdlKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fZGVidWdnZXJCcmVha3BvaW50c0J1dHRv
bkl0ZW0uYWN0aXZhdGVkID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5icmVha3BvaW50
c0VuYWJsZWQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfYnJlYWtwb2ludHNUb2dnbGVCdXR0b25D
bGlja2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBfYnJlYWtwb2ludHNUb2dnbGVCdXR0b25DbGlj
a2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5i
cmVha3BvaW50c0VuYWJsZWQgPSAhdGhpcy5fZGVidWdnZXJCcmVha3BvaW50c0J1dHRvbkl0ZW0u
YWN0aXZhdGVkOwotICAgIH0sCisgICAgfQogCi0gICAgX2FkZEJyZWFrcG9pbnQ6IGZ1bmN0aW9u
KGJyZWFrcG9pbnQpCisgICAgX2FkZEJyZWFrcG9pbnQoYnJlYWtwb2ludCkKICAgICB7CiAgICAg
ICAgIHZhciBzb3VyY2VDb2RlID0gYnJlYWtwb2ludC5zb3VyY2VDb2RlTG9jYXRpb24uZGlzcGxh
eVNvdXJjZUNvZGU7CiAgICAgICAgIGlmICghc291cmNlQ29kZSkKQEAgLTMxMSwxNiArMzAwLDE2
IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIGlmIChwYXJlbnRUcmVlRWxlbWVudC5jaGlsZHJlbi5sZW5ndGggPT09IDEpCiAgICAgICAg
ICAgICBwYXJlbnRUcmVlRWxlbWVudC5leHBhbmQoKTsKICAgICAgICAgcmV0dXJuIGJyZWFrcG9p
bnRUcmVlRWxlbWVudDsKLSAgICB9LAorICAgIH0KIAotICAgIF9hZGRCcmVha3BvaW50c0ZvclNv
dXJjZUNvZGU6IGZ1bmN0aW9uKHNvdXJjZUNvZGUpCisgICAgX2FkZEJyZWFrcG9pbnRzRm9yU291
cmNlQ29kZShzb3VyY2VDb2RlKQogICAgIHsKICAgICAgICAgdmFyIGJyZWFrcG9pbnRzID0gV2Vi
SW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5icmVha3BvaW50c0ZvclNvdXJjZUNvZGUoc291cmNl
Q29kZSk7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnJlYWtwb2ludHMubGVuZ3RoOyAr
K2kpCiAgICAgICAgICAgICB0aGlzLl9hZGRCcmVha3BvaW50KGJyZWFrcG9pbnRzW2ldLCBzb3Vy
Y2VDb2RlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9hZGRUcmVlRWxlbWVudEZvclNvdXJjZUNv
ZGVUb0NvbnRlbnRUcmVlT3V0bGluZTogZnVuY3Rpb24oc291cmNlQ29kZSkKKyAgICBfYWRkVHJl
ZUVsZW1lbnRGb3JTb3VyY2VDb2RlVG9Db250ZW50VHJlZU91dGxpbmUoc291cmNlQ29kZSkKICAg
ICB7CiAgICAgICAgIHZhciB0cmVlRWxlbWVudCA9IHRoaXMuX2JyZWFrcG9pbnRzQ29udGVudFRy
ZWVPdXRsaW5lLmdldENhY2hlZFRyZWVFbGVtZW50KHNvdXJjZUNvZGUpOwogICAgICAgICBpZiAo
IXRyZWVFbGVtZW50KSB7CkBAIC0zNDAsOSArMzI5LDkgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2Vy
U2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiB0
cmVlRWxlbWVudDsKLSAgICB9LAorICAgIH0KIAotICAgIF9yZXNvdXJjZUFkZGVkOiBmdW5jdGlv
bihldmVudCkKKyAgICBfcmVzb3VyY2VBZGRlZChldmVudCkKICAgICB7CiAgICAgICAgIHZhciBy
ZXNvdXJjZSA9IGV2ZW50LmRhdGEucmVzb3VyY2U7CiAKQEAgLTM1MSwxNiArMzQwLDE2IEBAIFdl
Ykluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAg
dGhpcy5fYWRkVHJlZUVsZW1lbnRGb3JTb3VyY2VDb2RlVG9Db250ZW50VHJlZU91dGxpbmUocmVz
b3VyY2UpOwogICAgICAgICB0aGlzLl9hZGRCcmVha3BvaW50c0ZvclNvdXJjZUNvZGUocmVzb3Vy
Y2UpOwotICAgIH0sCisgICAgfQogCi0gICAgX21haW5SZXNvdXJjZUNoYW5nZWQ6IGZ1bmN0aW9u
KGV2ZW50KQorICAgIF9tYWluUmVzb3VyY2VDaGFuZ2VkKGV2ZW50KQogICAgIHsKICAgICAgICAg
dmFyIHJlc291cmNlID0gZXZlbnQudGFyZ2V0Lm1haW5SZXNvdXJjZTsKICAgICAgICAgdGhpcy5f
YWRkVHJlZUVsZW1lbnRGb3JTb3VyY2VDb2RlVG9Db250ZW50VHJlZU91dGxpbmUocmVzb3VyY2Up
OwogICAgICAgICB0aGlzLl9hZGRCcmVha3BvaW50c0ZvclNvdXJjZUNvZGUocmVzb3VyY2UpOwot
ICAgIH0sCisgICAgfQogCi0gICAgX3NjcmlwdEFkZGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBf
c2NyaXB0QWRkZWQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgc2NyaXB0ID0gZXZlbnQuZGF0
YS5zY3JpcHQ7CiAKQEAgLTM4MCw5ICszNjksOSBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJTaWRl
YmFyUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuX2FkZFRyZWVFbGVtZW50Rm9y
U291cmNlQ29kZVRvQ29udGVudFRyZWVPdXRsaW5lKHNjcmlwdCk7CiAgICAgICAgIHRoaXMuX2Fk
ZEJyZWFrcG9pbnRzRm9yU291cmNlQ29kZShzY3JpcHQpOwotICAgIH0sCisgICAgfQogCi0gICAg
X3NjcmlwdHNDbGVhcmVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfc2NyaXB0c0NsZWFyZWQoZXZl
bnQpCiAgICAgewogICAgICAgICBmb3IgKHZhciBpID0gdGhpcy5fYnJlYWtwb2ludHNDb250ZW50
VHJlZU91dGxpbmUuY2hpbGRyZW4ubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHsKICAgICAgICAg
ICAgIHZhciB0cmVlRWxlbWVudCA9IHRoaXMuX2JyZWFrcG9pbnRzQ29udGVudFRyZWVPdXRsaW5l
LmNoaWxkcmVuW2ldOwpAQCAtMzkxLDE1ICszODAsMTUgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2Vy
U2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgICAgICAgICAgdGhpcy5fYnJlYWtwb2lu
dHNDb250ZW50VHJlZU91dGxpbmUucmVtb3ZlQ2hpbGRBdEluZGV4KGksIHRydWUsIHRydWUpOwog
ICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfYnJlYWtwb2ludEFkZGVkOiBmdW5jdGlv
bihldmVudCkKKyAgICBfYnJlYWtwb2ludEFkZGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFy
IGJyZWFrcG9pbnQgPSBldmVudC5kYXRhLmJyZWFrcG9pbnQ7CiAgICAgICAgIHRoaXMuX2FkZEJy
ZWFrcG9pbnQoYnJlYWtwb2ludCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfYnJlYWtwb2ludFJl
bW92ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9icmVha3BvaW50UmVtb3ZlZChldmVudCkKICAg
ICB7CiAgICAgICAgIHZhciBicmVha3BvaW50ID0gZXZlbnQuZGF0YS5icmVha3BvaW50OwogCkBA
IC00MTUsOSArNDA0LDkgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBhbmVsLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLl9yZW1vdmVCcmVh
a3BvaW50VHJlZUVsZW1lbnQoYnJlYWtwb2ludFRyZWVFbGVtZW50KTsKLSAgICB9LAorICAgIH0K
IAotICAgIF9icmVha3BvaW50RGlzcGxheUxvY2F0aW9uRGlkQ2hhbmdlOiBmdW5jdGlvbihldmVu
dCkKKyAgICBfYnJlYWtwb2ludERpc3BsYXlMb2NhdGlvbkRpZENoYW5nZShldmVudCkKICAgICB7
CiAgICAgICAgIHZhciBicmVha3BvaW50ID0gZXZlbnQudGFyZ2V0OwogICAgICAgICBpZiAoZXZl
bnQuZGF0YS5vbGREaXNwbGF5U291cmNlQ29kZSA9PT0gYnJlYWtwb2ludC5kaXNwbGF5U291cmNl
Q29kZSkKQEAgLTQzNywxNyArNDI2LDE3IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQ
YW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKG5ld0JyZWFrcG9pbnRUcmVlRWxlbWVu
dCAmJiB3YXNTZWxlY3RlZCkKICAgICAgICAgICAgIG5ld0JyZWFrcG9pbnRUcmVlRWxlbWVudC5y
ZXZlYWxBbmRTZWxlY3QodHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUpOwotICAgIH0sCisgICAgfQog
Ci0gICAgX3JlbW92ZUJyZWFrcG9pbnRUcmVlRWxlbWVudDogZnVuY3Rpb24oYnJlYWtwb2ludFRy
ZWVFbGVtZW50KQorICAgIF9yZW1vdmVCcmVha3BvaW50VHJlZUVsZW1lbnQoYnJlYWtwb2ludFRy
ZWVFbGVtZW50KQogICAgIHsKICAgICAgICAgdmFyIHBhcmVudFRyZWVFbGVtZW50ID0gYnJlYWtw
b2ludFRyZWVFbGVtZW50LnBhcmVudDsKICAgICAgICAgcGFyZW50VHJlZUVsZW1lbnQucmVtb3Zl
Q2hpbGQoYnJlYWtwb2ludFRyZWVFbGVtZW50KTsKIAogICAgICAgICBjb25zb2xlLmFzc2VydChw
YXJlbnRUcmVlRWxlbWVudC5wYXJlbnQgPT09IHRoaXMuX2JyZWFrcG9pbnRzQ29udGVudFRyZWVP
dXRsaW5lKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9kZWJ1Z2dlckNhbGxGcmFtZXNEaWRDaGFu
Z2U6IGZ1bmN0aW9uKCkKKyAgICBfZGVidWdnZXJDYWxsRnJhbWVzRGlkQ2hhbmdlKCkKICAgICB7
CiAgICAgICAgIHRoaXMuX2NhbGxTdGFja0NvbnRlbnRUcmVlT3V0bGluZS5yZW1vdmVDaGlsZHJl
bigpOwogCkBAIC00NzIsOSArNDYxLDkgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBh
bmVsLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAodHJlZUVsZW1lbnRUb1NlbGVjdCkKICAg
ICAgICAgICAgIHRyZWVFbGVtZW50VG9TZWxlY3Quc2VsZWN0KHRydWUsIHRydWUpOwotICAgIH0s
CisgICAgfQogCi0gICAgX2RlYnVnZ2VyQWN0aXZlQ2FsbEZyYW1lRGlkQ2hhbmdlOiBmdW5jdGlv
bigpCisgICAgX2RlYnVnZ2VyQWN0aXZlQ2FsbEZyYW1lRGlkQ2hhbmdlKCkKICAgICB7CiAgICAg
ICAgIHZhciBjYWxsRnJhbWVzID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5jYWxsRnJh
bWVzOwogICAgICAgICBpZiAoIWNhbGxGcmFtZXMpCkBAIC00ODUsOSArNDc0LDkgQEAgV2ViSW5z
cGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgLy8gc2lu
Y2UgdGhlcmUgbWlnaHQgYmUgY2FsbCBmcmFtZXMgaW4gdGhlIGJhY2tlbmQgdGhhdCB3ZXJlIHJl
bW92ZWQgd2hlbiBwcm9jZXNzaW5nIHRoZSBjYWxsCiAgICAgICAgIC8vIGZyYW1lIHBheWxvYWQu
CiAgICAgICAgIHRoaXMuX2RlYnVnZ2VyU3RlcE91dEJ1dHRvbkl0ZW0uZW5hYmxlZCA9IGluZGV4
T2ZBY3RpdmVDYWxsRnJhbWUgPCBjYWxsRnJhbWVzLmxlbmd0aCAtIDE7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfYnJlYWtwb2ludHNCZW5lYXRoVHJlZUVsZW1lbnQ6IGZ1bmN0aW9uKHRyZWVFbGVt
ZW50KQorICAgIF9icmVha3BvaW50c0JlbmVhdGhUcmVlRWxlbWVudCh0cmVlRWxlbWVudCkKICAg
ICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV2ViSW5z
cGVjdG9yLlJlc291cmNlVHJlZUVsZW1lbnQgfHwgdHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXZWJJ
bnNwZWN0b3IuU2NyaXB0VHJlZUVsZW1lbnQpOwogICAgICAgICBpZiAoISh0cmVlRWxlbWVudCBp
bnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50KSAmJiAhKHRyZWVFbGVt
ZW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlNjcmlwdFRyZWVFbGVtZW50KSkKQEAgLTUwNCwy
NCArNDkzLDI0IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQYW5lbC5wcm90b3R5cGUg
PSB7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gYnJlYWtwb2ludHM7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfcmVtb3ZlQWxsQnJlYWtwb2ludHM6IGZ1bmN0aW9uKGJyZWFrcG9pbnRzKQor
ICAgIF9yZW1vdmVBbGxCcmVha3BvaW50cyhicmVha3BvaW50cykKICAgICB7CiAgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgYnJlYWtwb2ludHMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAg
IHZhciBicmVha3BvaW50ID0gYnJlYWtwb2ludHNbaV07CiAgICAgICAgICAgICBpZiAoV2ViSW5z
cGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5pc0JyZWFrcG9pbnRSZW1vdmFibGUoYnJlYWtwb2ludCkp
CiAgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVCcmVh
a3BvaW50KGJyZWFrcG9pbnQpOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdG9n
Z2xlQWxsQnJlYWtwb2ludHM6IGZ1bmN0aW9uKGJyZWFrcG9pbnRzLCBkaXNhYmxlZCkKKyAgICBf
dG9nZ2xlQWxsQnJlYWtwb2ludHMoYnJlYWtwb2ludHMsIGRpc2FibGVkKQogICAgIHsKICAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBicmVha3BvaW50cy5sZW5ndGg7ICsraSkKICAgICAgICAg
ICAgIGJyZWFrcG9pbnRzW2ldLmRpc2FibGVkID0gZGlzYWJsZWQ7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfYnJlYWtwb2ludFRyZWVPdXRsaW5lRGVsZXRlVHJlZUVsZW1lbnQ6IGZ1bmN0aW9uKHRy
ZWVFbGVtZW50KQorICAgIF9icmVha3BvaW50VHJlZU91dGxpbmVEZWxldGVUcmVlRWxlbWVudCh0
cmVlRWxlbWVudCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRyZWVFbGVtZW50LnNl
bGVjdGVkKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQodHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxlbWVudCB8fCB0cmVlRWxlbWVudCBpbnN0YW5jZW9m
IFdlYkluc3BlY3Rvci5TY3JpcHRUcmVlRWxlbWVudCk7CkBAIC01MzgsOSArNTI3LDkgQEAgV2Vi
SW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
IG5leHRTaWJsaW5nLnNlbGVjdCh0cnVlLCB0cnVlKTsKIAogICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICB9LAorICAgIH0KIAotICAgIF9icmVha3BvaW50VHJlZU91dGxpbmVDb250ZXh0TWVudVRy
ZWVFbGVtZW50OiBmdW5jdGlvbihldmVudCwgdHJlZUVsZW1lbnQpCisgICAgX2JyZWFrcG9pbnRU
cmVlT3V0bGluZUNvbnRleHRNZW51VHJlZUVsZW1lbnQoZXZlbnQsIHRyZWVFbGVtZW50KQogICAg
IHsKICAgICAgICAgY29uc29sZS5hc3NlcnQodHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2VUcmVlRWxlbWVudCB8fCB0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdlYklu
c3BlY3Rvci5TY3JpcHRUcmVlRWxlbWVudCB8fCB0cmVlRWxlbWVudC5jb25zdHJ1Y3RvciA9PT0g
V2ViSW5zcGVjdG9yLkZvbGRlclRyZWVFbGVtZW50KTsKICAgICAgICAgaWYgKCEodHJlZUVsZW1l
bnQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxlbWVudCkgJiYgISh0cmVl
RWxlbWVudCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5TY3JpcHRUcmVlRWxlbWVudCkpCkBAIC01
NzIsOSArNTYxLDkgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBhbmVsLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJFbmFibGUgQnJlYWtwb2ludHMiKSwgdG9nZ2xlQWxsUmVzb3VyY2VCcmVha3BvaW50
cy5iaW5kKHRoaXMpKTsKICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIkRlbGV0ZSBCcmVha3BvaW50cyIpLCByZW1vdmVBbGxSZXNvdXJjZUJyZWFr
cG9pbnRzLmJpbmQodGhpcykpOwogICAgICAgICBjb250ZXh0TWVudS5zaG93KCk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfdHJlZUVsZW1lbnRTZWxlY3RlZDogZnVuY3Rpb24odHJlZUVsZW1lbnQs
IHNlbGVjdGVkQnlVc2VyKQorICAgIF90cmVlRWxlbWVudFNlbGVjdGVkKHRyZWVFbGVtZW50LCBz
ZWxlY3RlZEJ5VXNlcikKICAgICB7CiAgICAgICAgIGZ1bmN0aW9uIGRlc2VsZWN0Q2FsbFN0YWNr
Q29udGVudFRyZWVFbGVtZW50cygpCiAgICAgICAgIHsKQEAgLTY0Myw5ICs2MzIsOSBAQCBXZWJJ
bnNwZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAg
cmV0dXJuOwogCiAgICAgICAgIFdlYkluc3BlY3Rvci5yZXNvdXJjZVNpZGViYXJQYW5lbC5zaG93
U291cmNlQ29kZUxvY2F0aW9uKGJyZWFrcG9pbnQuc291cmNlQ29kZUxvY2F0aW9uKTsKLSAgICB9
LAorICAgIH0KIAotICAgIF9jb21wYXJlVG9wTGV2ZWxUcmVlRWxlbWVudHM6IGZ1bmN0aW9uKGEs
IGIpCisgICAgX2NvbXBhcmVUb3BMZXZlbFRyZWVFbGVtZW50cyhhLCBiKQogICAgIHsKICAgICAg
ICAgaWYgKGEgPT09IHRoaXMuX2dsb2JhbEJyZWFrcG9pbnRzRm9sZGVyVHJlZUVsZW1lbnQpCiAg
ICAgICAgICAgICByZXR1cm4gLTE7CkBAIC02NTMsOSArNjQyLDkgQEAgV2ViSW5zcGVjdG9yLkRl
YnVnZ2VyU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiAxOwog
CiAgICAgICAgIHJldHVybiBhLm1haW5UaXRsZS5sb2NhbGVDb21wYXJlKGIubWFpblRpdGxlKTsK
LSAgICB9LAorICAgIH0KIAotICAgIF9jb21wYXJlQnJlYWtwb2ludFRyZWVFbGVtZW50czogZnVu
Y3Rpb24oYSwgYikKKyAgICBfY29tcGFyZUJyZWFrcG9pbnRUcmVlRWxlbWVudHMoYSwgYikKICAg
ICB7CiAgICAgICAgIHZhciBhTG9jYXRpb24gPSBhLmJyZWFrcG9pbnQuc291cmNlQ29kZUxvY2F0
aW9uOwogICAgICAgICB2YXIgYkxvY2F0aW9uID0gYi5icmVha3BvaW50LnNvdXJjZUNvZGVMb2Nh
dGlvbjsKQEAgLTY2NSwxNyArNjU0LDE3IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQ
YW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4gY29tcGFyaXNvblJlc3VsdDsK
IAogICAgICAgICByZXR1cm4gYUxvY2F0aW9uLmRpc3BsYXlDb2x1bW5OdW1iZXIgLSBiTG9jYXRp
b24uZGlzcGxheUNvbHVtbk51bWJlcjsKLSAgICB9LAorICAgIH0KIAotICAgIF91cGRhdGVQYXVz
ZVJlYXNvbjogZnVuY3Rpb24oKQorICAgIF91cGRhdGVQYXVzZVJlYXNvbigpCiAgICAgewogICAg
ICAgICB0aGlzLl9wYXVzZVJlYXNvblRyZWVPdXRsaW5lID0gbnVsbDsKIAogICAgICAgICB0aGlz
Ll91cGRhdGVQYXVzZVJlYXNvbkdvdG9BcnJvdygpOwogICAgICAgICByZXR1cm4gdGhpcy5fdXBk
YXRlUGF1c2VSZWFzb25TZWN0aW9uKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdXBkYXRlUGF1
c2VSZWFzb25TZWN0aW9uOiBmdW5jdGlvbigpCisgICAgX3VwZGF0ZVBhdXNlUmVhc29uU2VjdGlv
bigpCiAgICAgewogICAgICAgICB2YXIgcGF1c2VEYXRhID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2Vy
TWFuYWdlci5wYXVzZURhdGE7CiAKQEAgLTc0Niw5ICs3MzUsOSBAQCBXZWJJbnNwZWN0b3IuRGVi
dWdnZXJTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0sCisgICAgfQogCi0gICAgX3VwZGF0ZVBhdXNlUmVhc29uR290b0Fy
cm93OiBmdW5jdGlvbigpCisgICAgX3VwZGF0ZVBhdXNlUmVhc29uR290b0Fycm93KCkKICAgICB7
CiAgICAgICAgIHRoaXMuX3BhdXNlUmVhc29uTGlua0NvbnRhaW5lckVsZW1lbnQucmVtb3ZlQ2hp
bGRyZW4oKTsKIApAQCAtNzY0LDMgKzc1MywxMiBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJTaWRl
YmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9wYXVzZVJlYXNvbkxpbmtDb250
YWluZXJFbGVtZW50LmFwcGVuZENoaWxkKGxpbmtFbGVtZW50KTsKICAgICB9CiB9OworCitXZWJJ
bnNwZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFuZWwuT2Zmc2V0U2VjdGlvbnNTdHlsZUNsYXNzTmFt
ZSA9ICJvZmZzZXQtc2VjdGlvbnMiOworV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBhbmVs
LkRlYnVnZ2VyUGF1c2VkU3R5bGVDbGFzc05hbWUgPSAicGF1c2VkIjsKK1dlYkluc3BlY3Rvci5E
ZWJ1Z2dlclNpZGViYXJQYW5lbC5FeGNlcHRpb25JY29uU3R5bGVDbGFzc05hbWUgPSAiYnJlYWtw
b2ludC1leGNlcHRpb24taWNvbiI7CitXZWJJbnNwZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFuZWwu
UGF1c2VkQnJlYWtwb2ludEljb25TdHlsZUNsYXNzTmFtZSA9ICJicmVha3BvaW50LXBhdXNlZC1p
Y29uIjsKK1dlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQYW5lbC5HbG9iYWxJY29uU3R5bGVD
bGFzc05hbWUgPSAiZ2xvYmFsLWJyZWFrcG9pbnRzLWljb24iOworCitXZWJJbnNwZWN0b3IuRGVi
dWdnZXJTaWRlYmFyUGFuZWwuU2VsZWN0ZWRBbGxFeGNlcHRpb25zQ29va2llS2V5ID0gImRlYnVn
Z2VyLXNpZGViYXItcGFuZWwtYWxsLWV4Y2VwdGlvbnMtYnJlYWtwb2ludCI7CitXZWJJbnNwZWN0
b3IuRGVidWdnZXJTaWRlYmFyUGFuZWwuU2VsZWN0ZWRBbGxVbmNhdWdodEV4Y2VwdGlvbnNDb29r
aWVLZXkgPSAiZGVidWdnZXItc2lkZWJhci1wYW5lbC1hbGwtdW5jYXVnaHQtZXhjZXB0aW9ucy1i
cmVha3BvaW50IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0RldGFpbHNTaWRlYmFyUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9EZXRhaWxzU2lkZWJhclBhbmVsLmpzCmluZGV4IDEzOGU2ODQu
LmMwMDdiNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0RldGFpbHNTaWRlYmFyUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvRGV0YWlsc1NpZGViYXJQYW5lbC5qcwpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsNDcgKzIzLDQ4
IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVj
dG9yLkRldGFpbHNTaWRlYmFyUGFuZWwgPSBmdW5jdGlvbihpZGVudGlmaWVyLCBkaXNwbGF5TmFt
ZSwgc2luZ3VsYXJEaXNwbGF5TmFtZSwgaW1hZ2UsIGtleWJvYXJkU2hvcnRjdXRLZXksIGVsZW1l
bnQpCitXZWJJbnNwZWN0b3IuRGV0YWlsc1NpZGViYXJQYW5lbCA9IGNsYXNzIERldGFpbHNTaWRl
YmFyUGFuZWwgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuU2lkZWJhclBhbmVsCiB7CisgICAgY29uc3Ry
dWN0b3IoaWRlbnRpZmllciwgZGlzcGxheU5hbWUsIHNpbmd1bGFyRGlzcGxheU5hbWUsIGltYWdl
LCBrZXlib2FyZFNob3J0Y3V0S2V5LCBlbGVtZW50KQorICAgIHsKKyAgICAgICAgdmFyIGtleWJv
YXJkU2hvcnRjdXQgPSBudWxsOwogICAgICAgICBpZiAoa2V5Ym9hcmRTaG9ydGN1dEtleSkKLSAg
ICAgICAgdGhpcy5fa2V5Ym9hcmRTaG9ydGN1dCA9IG5ldyBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRT
aG9ydGN1dChXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5Db250cm9sIHwg
V2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuU2hpZnQsIGtleWJvYXJkU2hv
cnRjdXRLZXksIHRoaXMudG9nZ2xlLmJpbmQodGhpcykpOworICAgICAgICAgICAga2V5Ym9hcmRT
aG9ydGN1dCA9IG5ldyBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dChXZWJJbnNwZWN0b3Iu
S2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5Db250cm9sIHwgV2ViSW5zcGVjdG9yLktleWJvYXJk
U2hvcnRjdXQuTW9kaWZpZXIuU2hpZnQsIGtleWJvYXJkU2hvcnRjdXRLZXkpOwogCi0gICAgaWYg
KHRoaXMuX2tleWJvYXJkU2hvcnRjdXQpIHsKLSAgICAgICAgdmFyIHNob3dUb29sVGlwID0gV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJTaG93IHRoZSAlcyBkZXRhaWxzIHNpZGViYXIgKCVzKSIpLmZv
cm1hdChzaW5ndWxhckRpc3BsYXlOYW1lLCB0aGlzLl9rZXlib2FyZFNob3J0Y3V0LmRpc3BsYXlO
YW1lKTsKLSAgICAgICAgdmFyIGhpZGVUb29sVGlwID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJI
aWRlIHRoZSAlcyBkZXRhaWxzIHNpZGViYXIgKCVzKSIpLmZvcm1hdChzaW5ndWxhckRpc3BsYXlO
YW1lLCB0aGlzLl9rZXlib2FyZFNob3J0Y3V0LmRpc3BsYXlOYW1lKTsKKyAgICAgICAgaWYgKGtl
eWJvYXJkU2hvcnRjdXQpIHsKKyAgICAgICAgICAgIHZhciBzaG93VG9vbFRpcCA9IFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiU2hvdyB0aGUgJXMgZGV0YWlscyBzaWRlYmFyICglcykiKS5mb3JtYXQo
c2luZ3VsYXJEaXNwbGF5TmFtZSwga2V5Ym9hcmRTaG9ydGN1dC5kaXNwbGF5TmFtZSk7CisgICAg
ICAgICAgICB2YXIgaGlkZVRvb2xUaXAgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkhpZGUgdGhl
ICVzIGRldGFpbHMgc2lkZWJhciAoJXMpIikuZm9ybWF0KHNpbmd1bGFyRGlzcGxheU5hbWUsIGtl
eWJvYXJkU2hvcnRjdXQuZGlzcGxheU5hbWUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgdmFyIHNob3dUb29sVGlwID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTaG93IHRoZSAlcyBk
ZXRhaWxzIHNpZGViYXIiKS5mb3JtYXQoc2luZ3VsYXJEaXNwbGF5TmFtZSk7CiAgICAgICAgICAg
ICB2YXIgaGlkZVRvb2xUaXAgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkhpZGUgdGhlICVzIGRl
dGFpbHMgc2lkZWJhciIpLmZvcm1hdChzaW5ndWxhckRpc3BsYXlOYW1lKTsKICAgICAgICAgfQog
Ci0gICAgV2ViSW5zcGVjdG9yLlNpZGViYXJQYW5lbC5jYWxsKHRoaXMsIGlkZW50aWZpZXIsIGRp
c3BsYXlOYW1lLCBzaG93VG9vbFRpcCwgaGlkZVRvb2xUaXAsIGltYWdlLCBlbGVtZW50KTsKLQot
ICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5EZXRhaWxzU2lkZWJh
clBhbmVsLlN0eWxlQ2xhc3NOYW1lKTsKLX07CisgICAgICAgIHN1cGVyKGlkZW50aWZpZXIsIGRp
c3BsYXlOYW1lLCBzaG93VG9vbFRpcCwgaGlkZVRvb2xUaXAsIGltYWdlLCBlbGVtZW50KTsKIAot
V2ViSW5zcGVjdG9yLkRldGFpbHNTaWRlYmFyUGFuZWwuU3R5bGVDbGFzc05hbWUgPSAiZGV0YWls
cyI7CisgICAgICAgIHRoaXMuX2tleWJvYXJkU2hvcnRjdXQgPSBrZXlib2FyZFNob3J0Y3V0Owor
ICAgICAgICBpZiAodGhpcy5fa2V5Ym9hcmRTaG9ydGN1dCkKKyAgICAgICAgICAgIHRoaXMuX2tl
eWJvYXJkU2hvcnRjdXQuY2FsbGJhY2sgPSB0aGlzLnRvZ2dsZS5iaW5kKHRoaXMpOwogCi1XZWJJ
bnNwZWN0b3IuRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0
b3I6IFdlYkluc3BlY3Rvci5EZXRhaWxzU2lkZWJhclBhbmVsLAotICAgIF9fcHJvdG9fXzogV2Vi
SW5zcGVjdG9yLlNpZGViYXJQYW5lbC5wcm90b3R5cGUsCisgICAgICAgIHRoaXMuZWxlbWVudC5j
bGFzc0xpc3QuYWRkKCJkZXRhaWxzIik7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKLSAgICBp
bnNwZWN0OiBmdW5jdGlvbihvYmplY3RzKQorICAgIGluc3BlY3Qob2JqZWN0cykKICAgICB7CiAg
ICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB9LAorICAgIH0KIAotICAgIHNob3duOiBmdW5jdGlvbigpCisgICAgc2hvd24oKQog
ICAgIHsKICAgICAgICAgaWYgKHRoaXMuX25lZWRzUmVmcmVzaCkgewogICAgICAgICAgICAgZGVs
ZXRlIHRoaXMuX25lZWRzUmVmcmVzaDsKICAgICAgICAgICAgIHRoaXMucmVmcmVzaCgpOwogICAg
ICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBuZWVkc1JlZnJlc2g6IGZ1bmN0aW9uKCkKKyAg
ICBuZWVkc1JlZnJlc2goKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkKSB7CiAg
ICAgICAgICAgICB0aGlzLl9uZWVkc1JlZnJlc2ggPSB0cnVlOwpAQCAtNzEsOSArNzIsOSBAQCBX
ZWJJbnNwZWN0b3IuRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0K
IAogICAgICAgICB0aGlzLnJlZnJlc2goKTsKLSAgICB9LAorICAgIH0KIAotICAgIHJlZnJlc2g6
IGZ1bmN0aW9uKCkKKyAgICByZWZyZXNoKCkKICAgICB7CiAgICAgICAgIC8vIEltcGxlbWVudGVk
IGJ5IHN1YmNsYXNzZXMuCiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvTGF5ZXJUcmVlRGV0YWlsc1NpZGViYXJQYW5lbC5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xheWVyVHJlZURldGFpbHNT
aWRlYmFyUGFuZWwuanMKaW5kZXggMzZhMTg1ZS4uYjljMGY4ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGF5ZXJUcmVlRGV0YWlsc1NpZGVi
YXJQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9MYXllclRyZWVEZXRhaWxzU2lkZWJhclBhbmVsLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywxMyArMjMsMTUgQEAKICAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuTGF5ZXJU
cmVlRGV0YWlsc1NpZGViYXJQYW5lbCA9IGZ1bmN0aW9uKCkKK1dlYkluc3BlY3Rvci5MYXllclRy
ZWVEZXRhaWxzU2lkZWJhclBhbmVsID0gY2xhc3MgTGF5ZXJUcmVlRGV0YWlsc1NpZGViYXJQYW5l
bCBleHRlbmRzIFdlYkluc3BlY3Rvci5ET01EZXRhaWxzU2lkZWJhclBhbmVsCiB7Ci0gICAgV2Vi
SW5zcGVjdG9yLkRPTURldGFpbHNTaWRlYmFyUGFuZWwuY2FsbCh0aGlzLCAibGF5ZXItdHJlZSIs
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiTGF5ZXJzIiksIFdlYkluc3BlY3Rvci5VSVN0cmluZygi
TGF5ZXIiKSwgIkltYWdlcy9OYXZpZ2F0aW9uSXRlbUxheWVycy5zdmciLCAiMyIpOworICAgIGNv
bnN0cnVjdG9yKCkKKyAgICB7CisgICAgICAgIHN1cGVyKCJsYXllci10cmVlIiwgV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJMYXllcnMiKSwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJMYXllciIpLCAi
SW1hZ2VzL05hdmlnYXRpb25JdGVtTGF5ZXJzLnN2ZyIsICIzIik7CiAKICAgICAgICAgdGhpcy5f
ZGF0YUdyaWROb2Rlc0J5TGF5ZXJJZCA9IHt9OwogCi0gICAgdGhpcy5lbGVtZW50LmNsYXNzTGlz
dC5hZGQoV2ViSW5zcGVjdG9yLkxheWVyVHJlZURldGFpbHNTaWRlYmFyUGFuZWwuU3R5bGVDbGFz
c05hbWUpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgibGF5ZXItdHJlZSIp
OwogCiAgICAgICAgIFdlYkluc3BlY3Rvci5zaG93U2hhZG93RE9NU2V0dGluZy5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5TZXR0aW5nLkV2ZW50LkNoYW5nZWQsIHRoaXMuX3Nob3dTaGFk
b3dET01TZXR0aW5nQ2hhbmdlZCwgdGhpcyk7CiAKQEAgLTM4LDE3ICs0MCwxMSBAQCBXZWJJbnNw
ZWN0b3IuTGF5ZXJUcmVlRGV0YWlsc1NpZGViYXJQYW5lbCA9IGZ1bmN0aW9uKCkKICAgICAgICAg
dGhpcy5fYnVpbGRMYXllckluZm9TZWN0aW9uKCk7CiAgICAgICAgIHRoaXMuX2J1aWxkRGF0YUdy
aWRTZWN0aW9uKCk7CiAgICAgICAgIHRoaXMuX2J1aWxkQm90dG9tQmFyKCk7Ci19OwotCi1XZWJJ
bnNwZWN0b3IuTGF5ZXJUcmVlRGV0YWlsc1NpZGViYXJQYW5lbC5TdHlsZUNsYXNzTmFtZSA9ICJs
YXllci10cmVlIjsKLQotV2ViSW5zcGVjdG9yLkxheWVyVHJlZURldGFpbHNTaWRlYmFyUGFuZWwu
cHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuTGF5ZXJUcmVlRGV0
YWlsc1NpZGViYXJQYW5lbCwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5ET01EZXRhaWxz
U2lkZWJhclBhbmVsLnByb3RvdHlwZSwKKyAgICB9CiAKICAgICAvLyBEZXRhaWxzU2lkZWJhclBh
bmVsIE92ZXJyaWRlcy4KIAotICAgIHNob3duOiBmdW5jdGlvbigpCisgICAgc2hvd24oKQogICAg
IHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmxheWVyVHJlZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuTGF5ZXJUcmVlTWFuYWdlci5FdmVudC5MYXllclRyZWVEaWRDaGFuZ2Us
IHRoaXMuX2xheWVyVHJlZURpZENoYW5nZSwgdGhpcyk7CiAKQEAgLTU3LDE2ICs1MywxNiBAQCBX
ZWJJbnNwZWN0b3IuTGF5ZXJUcmVlRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIHRoaXMubmVlZHNSZWZyZXNoKCk7CiAKICAgICAgICAgV2ViSW5zcGVjdG9yLkRPTURl
dGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlLnNob3duLmNhbGwodGhpcyk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBoaWRkZW46IGZ1bmN0aW9uKCkKKyAgICBoaWRkZW4oKQogICAgIHsKICAgICAg
ICAgV2ViSW5zcGVjdG9yLmxheWVyVHJlZU1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuTGF5ZXJUcmVlTWFuYWdlci5FdmVudC5MYXllclRyZWVEaWRDaGFuZ2UsIHRoaXMu
X2xheWVyVHJlZURpZENoYW5nZSwgdGhpcyk7CiAKICAgICAgICAgV2ViSW5zcGVjdG9yLkRPTURl
dGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlLmhpZGRlbi5jYWxsKHRoaXMpOwotICAgIH0sCisg
ICAgfQogCi0gICAgcmVmcmVzaDogZnVuY3Rpb24oKQorICAgIHJlZnJlc2goKQogICAgIHsKICAg
ICAgICAgaWYgKCF0aGlzLmRvbU5vZGUpCiAgICAgICAgICAgICByZXR1cm47CkBAIC03NSwzNSAr
NzEsMzUgQEAgV2ViSW5zcGVjdG9yLkxheWVyVHJlZURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90
eXBlID0gewogICAgICAgICAgICAgdGhpcy5fdW5maWx0ZXJlZENoaWxkTGF5ZXJzID0gY2hpbGRM
YXllcnM7CiAgICAgICAgICAgICB0aGlzLl91cGRhdGVEaXNwbGF5V2l0aExheWVycyhsYXllckZv
ck5vZGUsIGNoaWxkTGF5ZXJzKTsKICAgICAgICAgfS5iaW5kKHRoaXMpKTsKLSAgICB9LAorICAg
IH0KIAogICAgIC8vIERPTURldGFpbHNTaWRlYmFyUGFuZWwgT3ZlcnJpZGVzCiAKLSAgICBzdXBw
b3J0c0RPTU5vZGU6IGZ1bmN0aW9uKG5vZGVUb0luc3BlY3QpCisgICAgc3VwcG9ydHNET01Ob2Rl
KG5vZGVUb0luc3BlY3QpCiAgICAgewogICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLmxheWVy
VHJlZU1hbmFnZXIuc3VwcG9ydGVkICYmIG5vZGVUb0luc3BlY3Qubm9kZVR5cGUoKSA9PT0gTm9k
ZS5FTEVNRU5UX05PREU7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBf
bGF5ZXJUcmVlRGlkQ2hhbmdlOiBmdW5jdGlvbihldmVudCkKKyAgICBfbGF5ZXJUcmVlRGlkQ2hh
bmdlKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5uZWVkc1JlZnJlc2goKTsKLSAgICB9LAor
ICAgIH0KIAotICAgIF9zaG93U2hhZG93RE9NU2V0dGluZ0NoYW5nZWQ6IGZ1bmN0aW9uKGV2ZW50
KQorICAgIF9zaG93U2hhZG93RE9NU2V0dGluZ0NoYW5nZWQoZXZlbnQpCiAgICAgewogICAgICAg
ICBpZiAodGhpcy5zZWxlY3RlZCkKICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZURpc3BsYXlXaXRo
TGF5ZXJzKHRoaXMuX2xheWVyRm9yTm9kZSwgdGhpcy5fdW5maWx0ZXJlZENoaWxkTGF5ZXJzKTsK
LSAgICB9LAorICAgIH0KIAotICAgIF93aW5kb3dSZXNpemVkOiBmdW5jdGlvbihldmVudCkKKyAg
ICBfd2luZG93UmVzaXplZChldmVudCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9wb3BvdmVy
ICYmIHRoaXMuX3BvcG92ZXIudmlzaWJsZSkKICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVBvcG92
ZXJGb3JTZWxlY3RlZE5vZGUoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9idWlsZExheWVySW5m
b1NlY3Rpb246IGZ1bmN0aW9uKCkKKyAgICBfYnVpbGRMYXllckluZm9TZWN0aW9uKCkKICAgICB7
CiAgICAgICAgIHZhciByb3dzID0gdGhpcy5fbGF5ZXJJbmZvUm93cyA9IHt9OwogICAgICAgICB2
YXIgcm93c0FycmF5ID0gW107CkBAIC0xMjIsOSArMTE4LDkgQEAgV2ViSW5zcGVjdG9yLkxheWVy
VHJlZURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9sYXll
ckluZm9TZWN0aW9uID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbigibGF5ZXItaW5m
byIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiTGF5ZXIgSW5mbyIpLCBbdGhpcy5fbm9MYXllcklu
Zm9ybWF0aW9uR3JvdXBdKTsKIAogICAgICAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmFwcGVuZENo
aWxkKHRoaXMuX2xheWVySW5mb1NlY3Rpb24uZWxlbWVudCk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfYnVpbGREYXRhR3JpZFNlY3Rpb246IGZ1bmN0aW9uKCkKKyAgICBfYnVpbGREYXRhR3JpZFNl
Y3Rpb24oKQogICAgIHsKICAgICAgICAgdmFyIGNvbHVtbnMgPSB7bmFtZToge30sIHBhaW50Q291
bnQ6IHt9LCBtZW1vcnk6IHt9fTsKIApAQCAtMTYwLDkgKzE1Niw5IEBAIFdlYkluc3BlY3Rvci5M
YXllclRyZWVEZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB2YXIg
ZWxlbWVudCA9IHRoaXMuY29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoc2VjdGlvbi5lbGVtZW50
KTsKICAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKHNlY3Rpb24uaWRlbnRpZmllcik7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBfYnVpbGRCb3R0b21CYXI6IGZ1bmN0aW9uKCkKKyAgICBfYnVp
bGRCb3R0b21CYXIoKQogICAgIHsKICAgICAgICAgdmFyIGJvdHRvbUJhciA9IHRoaXMuZWxlbWVu
dC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7CiAgICAgICAgIGJv
dHRvbUJhci5jbGFzc05hbWUgPSAiYm90dG9tLWJhciI7CkBAIC0xNzIsOSArMTY4LDkgQEAgV2Vi
SW5zcGVjdG9yLkxheWVyVHJlZURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogCiAg
ICAgICAgIHRoaXMuX2xheWVyc01lbW9yeUxhYmVsID0gYm90dG9tQmFyLmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTsKICAgICAgICAgdGhpcy5fbGF5ZXJzTWVtb3J5
TGFiZWwuY2xhc3NOYW1lID0gImxheWVycy1tZW1vcnktbGFiZWwiOwotICAgIH0sCisgICAgfQog
Ci0gICAgX3NvcnREYXRhR3JpZDogZnVuY3Rpb24oKQorICAgIF9zb3J0RGF0YUdyaWQoKQogICAg
IHsKICAgICAgICAgdmFyIHNvcnRDb2x1bW5JZGVudGlmaWVyID0gdGhpcy5fZGF0YUdyaWQuc29y
dENvbHVtbklkZW50aWZpZXI7CiAKQEAgLTE4Nyw5ICsxODMsOSBAQCBXZWJJbnNwZWN0b3IuTGF5
ZXJUcmVlRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5f
ZGF0YUdyaWQuc29ydE5vZGVzKGNvbXBhcmF0b3IpOwogICAgICAgICB0aGlzLl91cGRhdGVQb3Bv
dmVyRm9yU2VsZWN0ZWROb2RlKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc2VsZWN0ZWREYXRh
R3JpZE5vZGVDaGFuZ2VkOiBmdW5jdGlvbigpCisgICAgX3NlbGVjdGVkRGF0YUdyaWROb2RlQ2hh
bmdlZCgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fZGF0YUdyaWQuc2VsZWN0ZWROb2RlKSB7
CiAgICAgICAgICAgICB0aGlzLl9oaWdobGlnaHRTZWxlY3RlZE5vZGUoKTsKQEAgLTE5OCwyNyAr
MTk0LDI3IEBAIFdlYkluc3BlY3Rvci5MYXllclRyZWVEZXRhaWxzU2lkZWJhclBhbmVsLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5oaWRlRE9N
Tm9kZUhpZ2hsaWdodCgpOwogICAgICAgICAgICAgdGhpcy5faGlkZVBvcG92ZXIoKTsKICAgICAg
ICAgfQotICAgIH0sCisgICAgfQogCi0gICAgX2RhdGFHcmlkR2FpbmVkRm9jdXM6IGZ1bmN0aW9u
KGV2ZW50KQorICAgIF9kYXRhR3JpZEdhaW5lZEZvY3VzKGV2ZW50KQogICAgIHsKICAgICAgICAg
dGhpcy5faGlnaGxpZ2h0U2VsZWN0ZWROb2RlKCk7CiAgICAgICAgIHRoaXMuX3Nob3dQb3BvdmVy
Rm9yU2VsZWN0ZWROb2RlKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZGF0YUdyaWRMb3N0Rm9j
dXM6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9kYXRhR3JpZExvc3RGb2N1cyhldmVudCkKICAgICB7
CiAgICAgICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5oaWRlRE9NTm9kZUhpZ2hsaWdo
dCgpOwogICAgICAgICB0aGlzLl9oaWRlUG9wb3ZlcigpOwotICAgIH0sCisgICAgfQogCi0gICAg
X2RhdGFHcmlkV2FzQ2xpY2tlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2RhdGFHcmlkV2FzQ2xp
Y2tlZChldmVudCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9kYXRhR3JpZC5zZWxlY3RlZE5v
ZGUgJiYgZXZlbnQudGFyZ2V0LnBhcmVudE5vZGUuY2xhc3NMaXN0LmNvbnRhaW5zKCJmaWxsZXIi
KSkKICAgICAgICAgICAgIHRoaXMuX2RhdGFHcmlkLnNlbGVjdGVkTm9kZS5kZXNlbGVjdCgpOwot
ICAgIH0sCisgICAgfQogCi0gICAgX2hpZ2hsaWdodFNlbGVjdGVkTm9kZTogZnVuY3Rpb24oKQor
ICAgIF9oaWdobGlnaHRTZWxlY3RlZE5vZGUoKQogICAgIHsKICAgICAgICAgdmFyIGRhdGFHcmlk
Tm9kZSA9IHRoaXMuX2RhdGFHcmlkLnNlbGVjdGVkTm9kZTsKICAgICAgICAgaWYgKCFkYXRhR3Jp
ZE5vZGUpCkBAIC0yMjksOSArMjI1LDkgQEAgV2ViSW5zcGVjdG9yLkxheWVyVHJlZURldGFpbHNT
aWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRy
ZWVNYW5hZ2VyLmhpZ2hsaWdodFJlY3QobGF5ZXIuYm91bmRzLCB0cnVlKTsKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmhpZ2hsaWdodERPTU5v
ZGUobGF5ZXIubm9kZUlkKTsKLSAgICB9LAorICAgIH0KIAotICAgIF91cGRhdGVEaXNwbGF5V2l0
aExheWVyczogZnVuY3Rpb24obGF5ZXJGb3JOb2RlLCBjaGlsZExheWVycykKKyAgICBfdXBkYXRl
RGlzcGxheVdpdGhMYXllcnMobGF5ZXJGb3JOb2RlLCBjaGlsZExheWVycykKICAgICB7CiAgICAg
ICAgIGlmICghV2ViSW5zcGVjdG9yLnNob3dTaGFkb3dET01TZXR0aW5nLnZhbHVlKSB7CiAgICAg
ICAgICAgICBjaGlsZExheWVycyA9IGNoaWxkTGF5ZXJzLmZpbHRlcihmdW5jdGlvbihsYXllcikg
ewpAQCAtMjQ1LDExICsyNDEsMTEgQEAgV2ViSW5zcGVjdG9yLkxheWVyVHJlZURldGFpbHNTaWRl
YmFyUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuX2xheWVyRm9yTm9kZSA9IGxh
eWVyRm9yTm9kZTsKICAgICAgICAgdGhpcy5fY2hpbGRMYXllcnMgPSBjaGlsZExheWVyczsKLSAg
ICB9LAorICAgIH0KIAotICAgIF91cGRhdGVMYXllckluZm9TZWN0aW9uOiBmdW5jdGlvbihsYXll
cikKKyAgICBfdXBkYXRlTGF5ZXJJbmZvU2VjdGlvbihsYXllcikKICAgICB7Ci0gICAgICAgIGNv
bnN0IGVtRGFzaCA9ICJcdTIwMTQiOworICAgICAgICB2YXIgZW1EYXNoID0gIlx1MjAxNCI7CiAK
ICAgICAgICAgdGhpcy5fbGF5ZXJJbmZvU2VjdGlvbi5ncm91cHMgPSBsYXllciA/IFt0aGlzLl9s
YXllckluZm9Hcm91cF0gOiBbdGhpcy5fbm9MYXllckluZm9ybWF0aW9uR3JvdXBdOwogCkBAIC0y
NjAsOSArMjU2LDkgQEAgV2ViSW5zcGVjdG9yLkxheWVyVHJlZURldGFpbHNTaWRlYmFyUGFuZWwu
cHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9sYXllckluZm9Sb3dzWyJXaWR0aCJdLnZhbHVl
ID0gbGF5ZXIuY29tcG9zaXRlZEJvdW5kcy53aWR0aCArICJweCI7CiAgICAgICAgIHRoaXMuX2xh
eWVySW5mb1Jvd3NbIkhlaWdodCJdLnZhbHVlID0gbGF5ZXIuY29tcG9zaXRlZEJvdW5kcy5oZWln
aHQgKyAicHgiOwogICAgICAgICB0aGlzLl9sYXllckluZm9Sb3dzWyJQYWludHMiXS52YWx1ZSA9
IGxheWVyLnBhaW50Q291bnQgKyAiIjsKLSAgICB9LAorICAgIH0KIAotICAgIF91cGRhdGVEYXRh
R3JpZDogZnVuY3Rpb24obGF5ZXJGb3JOb2RlLCBjaGlsZExheWVycykKKyAgICBfdXBkYXRlRGF0
YUdyaWQobGF5ZXJGb3JOb2RlLCBjaGlsZExheWVycykKICAgICB7CiAgICAgICAgIHZhciBkYXRh
R3JpZCA9IHRoaXMuX2RhdGFHcmlkOwogCkBAIC0yOTEsMTggKzI4NywxOCBAQCBXZWJJbnNwZWN0
b3IuTGF5ZXJUcmVlRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRo
aXMuX3NvcnREYXRhR3JpZCgpOwogCiAgICAgICAgIHRoaXMuX2NoaWxkTGF5ZXJzUm93LmRhdGFH
cmlkID0gIWlzRW1wdHlPYmplY3QoY2hpbGRMYXllcnMpID8gdGhpcy5fZGF0YUdyaWQgOiBudWxs
OwotICAgIH0sCisgICAgfQogCi0gICAgX2RhdGFHcmlkTm9kZUZvckxheWVyOiBmdW5jdGlvbihs
YXllcikKKyAgICBfZGF0YUdyaWROb2RlRm9yTGF5ZXIobGF5ZXIpCiAgICAgewogICAgICAgICB2
YXIgbm9kZSA9IG5ldyBXZWJJbnNwZWN0b3IuTGF5ZXJUcmVlRGF0YUdyaWROb2RlKGxheWVyKTsK
IAogICAgICAgICB0aGlzLl9kYXRhR3JpZE5vZGVzQnlMYXllcklkW2xheWVyLmxheWVySWRdID0g
bm9kZTsKIAogICAgICAgICByZXR1cm4gbm9kZTsKLSAgICB9LAorICAgIH0KIAotICAgIF91cGRh
dGVNZXRyaWNzOiBmdW5jdGlvbihsYXllckZvck5vZGUsIGNoaWxkTGF5ZXJzKQorICAgIF91cGRh
dGVNZXRyaWNzKGxheWVyRm9yTm9kZSwgY2hpbGRMYXllcnMpCiAgICAgewogICAgICAgICB2YXIg
bGF5ZXJDb3VudCA9IDA7CiAgICAgICAgIHZhciB0b3RhbE1lbW9yeSA9IDA7CkBAIC0zMTksOSAr
MzE1LDkgQEAgV2ViSW5zcGVjdG9yLkxheWVyVHJlZURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90
eXBlID0gewogCiAgICAgICAgIHRoaXMuX2xheWVyc0NvdW50TGFiZWwudGV4dENvbnRlbnQgPSBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxheWVyIENvdW50OiAlZCIpLmZvcm1hdChsYXllckNvdW50
KTsKICAgICAgICAgdGhpcy5fbGF5ZXJzTWVtb3J5TGFiZWwudGV4dENvbnRlbnQgPSBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIk1lbW9yeTogJXMiKS5mb3JtYXQoTnVtYmVyLmJ5dGVzVG9TdHJpbmco
dG90YWxNZW1vcnkpKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9zaG93UG9wb3ZlckZvclNlbGVj
dGVkTm9kZTogZnVuY3Rpb24oKQorICAgIF9zaG93UG9wb3ZlckZvclNlbGVjdGVkTm9kZSgpCiAg
ICAgewogICAgICAgICB2YXIgZGF0YUdyaWROb2RlID0gdGhpcy5fZGF0YUdyaWQuc2VsZWN0ZWRO
b2RlOwogICAgICAgICBpZiAoIWRhdGFHcmlkTm9kZSkKQEAgLTMzMSw5ICszMjcsOSBAQCBXZWJJ
bnNwZWN0b3IuTGF5ZXJUcmVlRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgICAgICBpZiAoZGF0YUdyaWROb2RlID09PSB0aGlzLl9kYXRhR3JpZC5zZWxlY3RlZE5vZGUp
CiAgICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlUG9wb3ZlckZvclNlbGVjdGVkTm9kZShjb250
ZW50KTsKICAgICAgICAgfS5iaW5kKHRoaXMpKTsKLSAgICB9LAorICAgIH0KIAotICAgIF91cGRh
dGVQb3BvdmVyRm9yU2VsZWN0ZWROb2RlOiBmdW5jdGlvbihjb250ZW50KQorICAgIF91cGRhdGVQ
b3BvdmVyRm9yU2VsZWN0ZWROb2RlKGNvbnRlbnQpCiAgICAgewogICAgICAgICB2YXIgZGF0YUdy
aWROb2RlID0gdGhpcy5fZGF0YUdyaWQuc2VsZWN0ZWROb2RlOwogICAgICAgICBpZiAoIWRhdGFH
cmlkTm9kZSkKQEAgLTM0OSwxNSArMzQ1LDE1IEBAIFdlYkluc3BlY3Rvci5MYXllclRyZWVEZXRh
aWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHBvcG92ZXIuY29udGVu
dCA9IGNvbnRlbnQ7CiAKICAgICAgICAgcG9wb3Zlci5wcmVzZW50KHRhcmdldEZyYW1lLnBhZCgy
KSwgW1dlYkluc3BlY3Rvci5SZWN0RWRnZS5NSU5fWF0pOwotICAgIH0sCisgICAgfQogCi0gICAg
X2hpZGVQb3BvdmVyOiBmdW5jdGlvbigpCisgICAgX2hpZGVQb3BvdmVyKCkKICAgICB7CiAgICAg
ICAgIGlmICh0aGlzLl9wb3BvdmVyKQogICAgICAgICAgICAgdGhpcy5fcG9wb3Zlci5kaXNtaXNz
KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY29udGVudEZvclBvcG92ZXI6IGZ1bmN0aW9uKGxh
eWVyLCBjYWxsYmFjaykKKyAgICBfY29udGVudEZvclBvcG92ZXIobGF5ZXIsIGNhbGxiYWNrKQog
ICAgIHsKICAgICAgICAgdmFyIGNvbnRlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KTsKICAgICAgICAgY29udGVudC5jbGFzc05hbWUgPSAibGF5ZXItdHJlZS1wb3BvdmVyIjsKQEAg
LTM3OCw5ICszNzQsOSBAQCBXZWJJbnNwZWN0b3IuTGF5ZXJUcmVlRGV0YWlsc1NpZGViYXJQYW5l
bC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0uYmluZCh0aGlzKSk7CiAKICAgICAgICAgcmV0dXJu
IGNvbnRlbnQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcG9wdWxhdGVMaXN0T2ZDb21wb3NpdGlu
Z1JlYXNvbnM6IGZ1bmN0aW9uKGxpc3QsIGNvbXBvc2l0aW5nUmVhc29ucykKKyAgICBfcG9wdWxh
dGVMaXN0T2ZDb21wb3NpdGluZ1JlYXNvbnMobGlzdCwgY29tcG9zaXRpbmdSZWFzb25zKQogICAg
IHsKICAgICAgICAgZnVuY3Rpb24gYWRkUmVhc29uKHJlYXNvbikKICAgICAgICAgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdhdGlv
blNpZGViYXJQYW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL05hdmlnYXRpb25TaWRlYmFyUGFuZWwuanMKaW5kZXggODBlMDk4Yi4uNTRmNWM2NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdh
dGlvblNpZGViYXJQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywyMiArMjMsMjggQEAKICAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuTmF2
aWdhdGlvblNpZGViYXJQYW5lbCA9IGZ1bmN0aW9uKGlkZW50aWZpZXIsIGRpc3BsYXlOYW1lLCBp
bWFnZSwga2V5Ym9hcmRTaG9ydGN1dEtleSwgYXV0b1BydW5lT2xkVG9wTGV2ZWxSZXNvdXJjZVRy
ZWVFbGVtZW50cywgYXV0b0hpZGVUb29sYmFySXRlbVdoZW5FbXB0eSwgd2FudHNUb3BPdmVyZmxv
d1NoYWRvdywgZWxlbWVudCwgcm9sZSwgbGFiZWwpCitXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNp
ZGViYXJQYW5lbCA9IGNsYXNzIE5hdmlnYXRpb25TaWRlYmFyUGFuZWwgZXh0ZW5kcyBXZWJJbnNw
ZWN0b3IuU2lkZWJhclBhbmVsCiB7CisgICAgY29uc3RydWN0b3IoaWRlbnRpZmllciwgZGlzcGxh
eU5hbWUsIGltYWdlLCBrZXlib2FyZFNob3J0Y3V0S2V5LCBhdXRvUHJ1bmVPbGRUb3BMZXZlbFJl
c291cmNlVHJlZUVsZW1lbnRzLCBhdXRvSGlkZVRvb2xiYXJJdGVtV2hlbkVtcHR5LCB3YW50c1Rv
cE92ZXJmbG93U2hhZG93LCBlbGVtZW50LCByb2xlLCBsYWJlbCkKKyAgICB7CisgICAgICAgIHZh
ciBrZXlib2FyZFNob3J0Y3V0ID0gbnVsbDsKICAgICAgICAgaWYgKGtleWJvYXJkU2hvcnRjdXRL
ZXkpCi0gICAgICAgIHRoaXMuX2tleWJvYXJkU2hvcnRjdXQgPSBuZXcgV2ViSW5zcGVjdG9yLktl
eWJvYXJkU2hvcnRjdXQoV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29u
dHJvbCwga2V5Ym9hcmRTaG9ydGN1dEtleSwgdGhpcy50b2dnbGUuYmluZCh0aGlzKSk7CisgICAg
ICAgICAgICBrZXlib2FyZFNob3J0Y3V0ID0gbmV3IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0
Y3V0KFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbnRyb2wsIGtleWJv
YXJkU2hvcnRjdXRLZXkpOwogCi0gICAgaWYgKHRoaXMuX2tleWJvYXJkU2hvcnRjdXQpIHsKLSAg
ICAgICAgdmFyIHNob3dUb29sVGlwID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTaG93IHRoZSAl
cyBuYXZpZ2F0aW9uIHNpZGViYXIgKCVzKSIpLmZvcm1hdChkaXNwbGF5TmFtZSwgdGhpcy5fa2V5
Ym9hcmRTaG9ydGN1dC5kaXNwbGF5TmFtZSk7Ci0gICAgICAgIHZhciBoaWRlVG9vbFRpcCA9IFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiSGlkZSB0aGUgJXMgbmF2aWdhdGlvbiBzaWRlYmFyICglcyki
KS5mb3JtYXQoZGlzcGxheU5hbWUsIHRoaXMuX2tleWJvYXJkU2hvcnRjdXQuZGlzcGxheU5hbWUp
OworICAgICAgICBpZiAoa2V5Ym9hcmRTaG9ydGN1dCkgeworICAgICAgICAgICAgdmFyIHNob3dU
b29sVGlwID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTaG93IHRoZSAlcyBuYXZpZ2F0aW9uIHNp
ZGViYXIgKCVzKSIpLmZvcm1hdChkaXNwbGF5TmFtZSwga2V5Ym9hcmRTaG9ydGN1dC5kaXNwbGF5
TmFtZSk7CisgICAgICAgICAgICB2YXIgaGlkZVRvb2xUaXAgPSBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIkhpZGUgdGhlICVzIG5hdmlnYXRpb24gc2lkZWJhciAoJXMpIikuZm9ybWF0KGRpc3BsYXlO
YW1lLCBrZXlib2FyZFNob3J0Y3V0LmRpc3BsYXlOYW1lKTsKICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgIHZhciBzaG93VG9vbFRpcCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2hvdyB0
aGUgJXMgbmF2aWdhdGlvbiBzaWRlYmFyIikuZm9ybWF0KGRpc3BsYXlOYW1lKTsKICAgICAgICAg
ICAgIHZhciBoaWRlVG9vbFRpcCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiSGlkZSB0aGUgJXMg
bmF2aWdhdGlvbiBzaWRlYmFyIikuZm9ybWF0KGRpc3BsYXlOYW1lKTsKICAgICAgICAgfQogCi0g
ICAgV2ViSW5zcGVjdG9yLlNpZGViYXJQYW5lbC5jYWxsKHRoaXMsIGlkZW50aWZpZXIsIGRpc3Bs
YXlOYW1lLCBzaG93VG9vbFRpcCwgaGlkZVRvb2xUaXAsIGltYWdlLCBlbGVtZW50LCByb2xlLCBs
YWJlbCB8fCBkaXNwbGF5TmFtZSk7CisgICAgICAgIHN1cGVyKGlkZW50aWZpZXIsIGRpc3BsYXlO
YW1lLCBzaG93VG9vbFRpcCwgaGlkZVRvb2xUaXAsIGltYWdlLCBlbGVtZW50LCByb2xlLCBsYWJl
bCB8fCBkaXNwbGF5TmFtZSk7CisKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQo
Im5hdmlnYXRpb24iKTsKIAotICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3Bl
Y3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLlN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgdGhp
cy5fa2V5Ym9hcmRTaG9ydGN1dCA9IGtleWJvYXJkU2hvcnRjdXQ7CisgICAgICAgIHRoaXMuX2tl
eWJvYXJkU2hvcnRjdXQuY2FsbGJhY2sgPSB0aGlzLnRvZ2dsZS5iaW5kKHRoaXMpOwogCiAgICAg
ICAgIHRoaXMuX2F1dG9IaWRlVG9vbGJhckl0ZW1XaGVuRW1wdHkgPSBhdXRvSGlkZVRvb2xiYXJJ
dGVtV2hlbkVtcHR5IHx8IGZhbHNlOwogCkBAIC04NiwzNiArOTIsMTkgQEAgV2ViSW5zcGVjdG9y
Lk5hdmlnYXRpb25TaWRlYmFyUGFuZWwgPSBmdW5jdGlvbihpZGVudGlmaWVyLCBkaXNwbGF5TmFt
ZSwgaW1hZ2UsIGsKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5GcmFtZS5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5GcmFtZS5FdmVudC5DaGlsZEZyYW1lV2FzUmVtb3ZlZCwgdGhpcy5f
Y2hlY2tGb3JPbGRSZXNvdXJjZXMsIHRoaXMpOwogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLkZy
YW1lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZyYW1lLkV2ZW50LlJlc291cmNlV2Fz
UmVtb3ZlZCwgdGhpcy5fY2hlY2tGb3JPbGRSZXNvdXJjZXMsIHRoaXMpOwogICAgICAgICB9Ci19
OwotCi1XZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5TdHlsZUNsYXNzTmFtZSA9
ICJuYXZpZ2F0aW9uIjsKLVdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLk92ZXJm
bG93U2hhZG93RWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gIm92ZXJmbG93LXNoYWRvdyI7Ci1XZWJJ
bnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5Ub3BPdmVyZmxvd1NoYWRvd0VsZW1lbnRT
dHlsZUNsYXNzTmFtZSA9ICJ0b3AiOwotV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFu
ZWwuQ29udGVudFRyZWVPdXRsaW5lRWxlbWVudEhpZGRlblN0eWxlQ2xhc3NOYW1lID0gImhpZGRl
biI7Ci1XZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5Db250ZW50VHJlZU91dGxp
bmVFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAibmF2aWdhdGlvbi1zaWRlYmFyLXBhbmVsLWNvbnRl
bnQtdHJlZS1vdXRsaW5lIjsKLVdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLkhp
ZGVEaXNjbG9zdXJlQnV0dG9uc1N0eWxlQ2xhc3NOYW1lID0gImhpZGUtZGlzY2xvc3VyZS1idXR0
b25zIjsKLVdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLkVtcHR5Q29udGVudFBs
YWNlaG9sZGVyRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gImVtcHR5LWNvbnRlbnQtcGxhY2Vob2xk
ZXIiOwotV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwuRW1wdHlDb250ZW50UGxh
Y2Vob2xkZXJNZXNzYWdlRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gIm1lc3NhZ2UiOwotV2ViSW5z
cGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwuRGlzY2xvc3VyZVRyaWFuZ2xlT3BlbkNhbnZh
c0lkZW50aWZpZXIgPSAibmF2aWdhdGlvbi1zaWRlYmFyLXBhbmVsLWRpc2Nsb3N1cmUtdHJpYW5n
bGUtb3BlbiI7Ci1XZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5EaXNjbG9zdXJl
VHJpYW5nbGVDbG9zZWRDYW52YXNJZGVudGlmaWVyID0gIm5hdmlnYXRpb24tc2lkZWJhci1wYW5l
bC1kaXNjbG9zdXJlLXRyaWFuZ2xlLWNsb3NlZCI7Ci1XZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNp
ZGViYXJQYW5lbC5EaXNjbG9zdXJlVHJpYW5nbGVOb3JtYWxDYW52YXNJZGVudGlmaWVyU3VmZml4
ID0gIi1ub3JtYWwiOwotV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwuRGlzY2xv
c3VyZVRyaWFuZ2xlU2VsZWN0ZWRDYW52YXNJZGVudGlmaWVyU3VmZml4ID0gIi1zZWxlY3RlZCI7
Ci0KLVdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKLSAg
ICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwsCi0gICAg
X19wcm90b19fOiBXZWJJbnNwZWN0b3IuU2lkZWJhclBhbmVsLnByb3RvdHlwZSwKKyAgICB9CiAK
ICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBjb250ZW50VHJlZU91dGxpbmVFbGVtZW50KCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9jb250ZW50VHJlZU91dGxpbmUuZWxlbWVudDsKLSAg
ICB9LAorICAgIH0KIAogICAgIGdldCBjb250ZW50VHJlZU91dGxpbmUoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX2NvbnRlbnRUcmVlT3V0bGluZTsKLSAgICB9LAorICAgIH0KIAogICAg
IHNldCBjb250ZW50VHJlZU91dGxpbmUobmV3VHJlZU91dGxpbmUpCiAgICAgewpAQCAtMTMzLDM0
ICsxMjIsMzQgQEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBl
ID0gewogICAgICAgICB0aGlzLl92aXNpYmxlQ29udGVudFRyZWVPdXRsaW5lcy5hZGQobmV3VHJl
ZU91dGxpbmUpOwogCiAgICAgICAgIHRoaXMuX3VwZGF0ZUZpbHRlcigpOwotICAgIH0sCisgICAg
fQogCiAgICAgZ2V0IGNvbnRlbnRUcmVlT3V0bGluZVRvQXV0b1BydW5lKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB0aGlzLl9jb250ZW50VHJlZU91dGxpbmU7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICBnZXQgdmlzaWJsZUNvbnRlbnRUcmVlT3V0bGluZXMoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX3Zpc2libGVDb250ZW50VHJlZU91dGxpbmVzOwotICAgIH0sCisgICAgfQogCiAgICAg
Z2V0IGhhc1NlbGVjdGVkRWxlbWVudCgpCiAgICAgewogICAgICAgICByZXR1cm4gISF0aGlzLl9j
b250ZW50VHJlZU91dGxpbmUuc2VsZWN0ZWRUcmVlRWxlbWVudDsKLSAgICB9LAorICAgIH0KIAog
ICAgIGdldCBmaWx0ZXJCYXIoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbHRlckJh
cjsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCByZXN0b3JpbmdTdGF0ZSgpCiAgICAgewogICAg
ICAgICByZXR1cm4gdGhpcy5fcmVzdG9yaW5nU3RhdGU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBj
cmVhdGVDb250ZW50VHJlZU91dGxpbmU6IGZ1bmN0aW9uKGRvbnRIaWRlQnlEZWZhdWx0LCBzdXBw
cmVzc0ZpbHRlcmluZykKKyAgICBjcmVhdGVDb250ZW50VHJlZU91dGxpbmUoZG9udEhpZGVCeURl
ZmF1bHQsIHN1cHByZXNzRmlsdGVyaW5nKQogICAgIHsKICAgICAgICAgdmFyIGNvbnRlbnRUcmVl
T3V0bGluZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvbCIpOwogICAgICAgICBj
b250ZW50VHJlZU91dGxpbmVFbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5OYXZpZ2F0
aW9uU2lkZWJhclBhbmVsLkNvbnRlbnRUcmVlT3V0bGluZUVsZW1lbnRTdHlsZUNsYXNzTmFtZTsK
QEAgLTE4MiwyNyArMTcxLDI3IEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVs
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX3Zpc2libGVDb250ZW50VHJlZU91dGxp
bmVzLmFkZChjb250ZW50VHJlZU91dGxpbmUpOwogCiAgICAgICAgIHJldHVybiBjb250ZW50VHJl
ZU91dGxpbmU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB0cmVlRWxlbWVudEZvclJlcHJlc2VudGVk
T2JqZWN0OiBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkKKyAgICB0cmVlRWxlbWVudEZvclJl
cHJlc2VudGVkT2JqZWN0KHJlcHJlc2VudGVkT2JqZWN0KQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX2NvbnRlbnRUcmVlT3V0bGluZS5nZXRDYWNoZWRUcmVlRWxlbWVudChyZXByZXNlbnRl
ZE9iamVjdCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93RGVmYXVsdENvbnRlbnRWaWV3OiBm
dW5jdGlvbigpCisgICAgc2hvd0RlZmF1bHRDb250ZW50VmlldygpCiAgICAgewogICAgICAgICAv
LyBJbXBsZW1uZXRlZCBieSBzdWJjbGFzc2VzIGlmIG5lZWRlZCB0byBzaG93IGEgY29udGVudCB2
aWV3IHdoZW4gbm8gZXhpc3RpbmcgdHJlZSBlbGVtZW50IGlzIHNlbGVjdGVkLgotICAgIH0sCisg
ICAgfQogCi0gICAgc2hvd0NvbnRlbnRWaWV3Rm9yQ3VycmVudFNlbGVjdGlvbjogZnVuY3Rpb24o
KQorICAgIHNob3dDb250ZW50Vmlld0ZvckN1cnJlbnRTZWxlY3Rpb24oKQogICAgIHsKICAgICAg
ICAgLy8gUmVzZWxlY3QgdGhlIHNlbGVjdGVkIHRyZWUgZWxlbWVudCB0byBjYXVzZSB0aGUgY29u
dGVudCB2aWV3IHRvIGJlIHNob3duIGFzIHdlbGwuIDxyZGFyOi8vcHJvYmxlbS8xMDg1NDcyNz4K
ICAgICAgICAgdmFyIHNlbGVjdGVkVHJlZUVsZW1lbnQgPSB0aGlzLl9jb250ZW50VHJlZU91dGxp
bmUuc2VsZWN0ZWRUcmVlRWxlbWVudDsKICAgICAgICAgaWYgKHNlbGVjdGVkVHJlZUVsZW1lbnQp
CiAgICAgICAgICAgICBzZWxlY3RlZFRyZWVFbGVtZW50LnNlbGVjdCgpOwotICAgIH0sCisgICAg
fQogCi0gICAgc2F2ZVN0YXRlVG9Db29raWU6IGZ1bmN0aW9uKGNvb2tpZSkKKyAgICBzYXZlU3Rh
dGVUb0Nvb2tpZShjb29raWUpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChjb29raWUp
OwogCkBAIC0yMjYsMTAgKzIxNSwxMCBAQCBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQ
YW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXByZXNlbnRlZE9iamVjdC5zYXZlSWRl
bnRpdHlUb0Nvb2tpZShjb29raWUpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb25zb2xl
LmVycm9yKCJFcnJvcjogVHJlZUVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3QgaXMgbWlzc2luZyBh
IHNhdmVJZGVudGl0eVRvQ29va2llIGltcGxlbWVudGF0aW9uLiBUcmVlRWxlbWVudC5jb25zdHJ1
Y3RvcjogIiwgc2VsZWN0ZWRUcmVlRWxlbWVudC5jb25zdHJ1Y3Rvcik7Ci0gICAgfSwKKyAgICB9
CiAKICAgICAvLyBUaGlzIGNhbiBiZSBzdXBwbGVtZW50ZWQgYnkgc3ViY2xhc3NlcyB0aGF0IGFk
bWl0IGEgc2ltcGxlciBzdHJhdGVneSBmb3Igc3RhdGljIHRyZWUgZWxlbWVudHMuCi0gICAgcmVz
dG9yZVN0YXRlRnJvbUNvb2tpZTogZnVuY3Rpb24oY29va2llLCByZWxheGVkTWF0Y2hEZWxheSkK
KyAgICByZXN0b3JlU3RhdGVGcm9tQ29va2llKGNvb2tpZSwgcmVsYXhlZE1hdGNoRGVsYXkpCiAg
ICAgewogICAgICAgICB0aGlzLl9wZW5kaW5nVmlld1N0YXRlQ29va2llID0gY29va2llOwogICAg
ICAgICB0aGlzLl9yZXN0b3JpbmdTdGF0ZSA9IHRydWU7CkBAIC0yNTMsOSArMjQyLDkgQEAgV2Vi
SW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAv
LyBJZiB0aGUgc3BlY2lmaWMgdHJlZSBlbGVtZW50IHdhc24ndCBmb3VuZCwgd2UgbWF5IG5lZWQg
dG8gd2FpdCBmb3IgdGhlIHJlc291cmNlcwogICAgICAgICAvLyB0byBiZSByZWdpc3RlcmVkLiBX
ZSB0cnkgb25lIGxhc3QgdGltZSAobWF0Y2ggdHlwZSBvbmx5KSBhZnRlciBhbiBhcmJpdHJhcnkg
YW1vdW50IG9mIHRpbWVvdXQuCiAgICAgICAgIHRoaXMuX2ZpbmFsQXR0ZW1wdFRvUmVzdG9yZVZp
ZXdTdGF0ZVRpbWVvdXQgPSBzZXRUaW1lb3V0KGZpbmFsQXR0ZW1wdFRvUmVzdG9yZVZpZXdTdGF0
ZUZyb21Db29raWUuYmluZCh0aGlzKSwgcmVsYXhlZE1hdGNoRGVsYXkpOwotICAgIH0sCisgICAg
fQogCi0gICAgc2hvd0VtcHR5Q29udGVudFBsYWNlaG9sZGVyOiBmdW5jdGlvbihtZXNzYWdlLCBo
aWRlVG9vbGJhckl0ZW0pCisgICAgc2hvd0VtcHR5Q29udGVudFBsYWNlaG9sZGVyKG1lc3NhZ2Us
IGhpZGVUb29sYmFySXRlbSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG1lc3NhZ2Up
OwogCkBAIC0yNjgsOSArMjU3LDkgQEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFu
ZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9oaWRlVG9vbGJhckl0ZW1XaGVuRW1wdHkg
PSBoaWRlVG9vbGJhckl0ZW0gfHwgZmFsc2U7CiAgICAgICAgIHRoaXMuX3VwZGF0ZVRvb2xiYXJJ
dGVtVmlzaWJpbGl0eSgpOwogICAgICAgICB0aGlzLl91cGRhdGVDb250ZW50T3ZlcmZsb3dTaGFk
b3dWaXNpYmlsaXR5KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBoaWRlRW1wdHlDb250ZW50UGxh
Y2Vob2xkZXI6IGZ1bmN0aW9uKCkKKyAgICBoaWRlRW1wdHlDb250ZW50UGxhY2Vob2xkZXIoKQog
ICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9lbXB0eUNvbnRlbnRQbGFjZWhvbGRlckVsZW1lbnQu
cGFyZW50Tm9kZSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTI4MCw5ICsyNjksOSBAQCBXZWJJ
bnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRo
aXMuX2hpZGVUb29sYmFySXRlbVdoZW5FbXB0eSA9IGZhbHNlOwogICAgICAgICB0aGlzLl91cGRh
dGVUb29sYmFySXRlbVZpc2liaWxpdHkoKTsKICAgICAgICAgdGhpcy5fdXBkYXRlQ29udGVudE92
ZXJmbG93U2hhZG93VmlzaWJpbGl0eSgpOwotICAgIH0sCisgICAgfQogCi0gICAgdXBkYXRlRW1w
dHlDb250ZW50UGxhY2Vob2xkZXI6IGZ1bmN0aW9uKG1lc3NhZ2UpCisgICAgdXBkYXRlRW1wdHlD
b250ZW50UGxhY2Vob2xkZXIobWVzc2FnZSkKICAgICB7CiAgICAgICAgIHRoaXMuX3VwZGF0ZVRv
b2xiYXJJdGVtVmlzaWJpbGl0eSgpOwogCkBAIC0yOTMsMzUgKzI4MiwzNSBAQCBXZWJJbnNwZWN0
b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAvLyBU
aGVyZSBhcmUgdHJlZSBlbGVtZW50cywgYW5kIG5vdCBhbGwgb2YgdGhlbSBhcmUgaGlkZGVuIGJ5
IHRoZSBmaWx0ZXIuCiAgICAgICAgICAgICB0aGlzLmhpZGVFbXB0eUNvbnRlbnRQbGFjZWhvbGRl
cigpOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1cGRhdGVGaWx0ZXI6IGZ1bmN0
aW9uKCkKKyAgICB1cGRhdGVGaWx0ZXIoKQogICAgIHsKICAgICAgICAgdGhpcy5fdXBkYXRlRmls
dGVyKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBoYXNDdXN0b21GaWx0ZXJzOiBmdW5jdGlvbigp
CisgICAgaGFzQ3VzdG9tRmlsdGVycygpCiAgICAgewogICAgICAgICAvLyBJbXBsZW1lbnRlZCBi
eSBzdWJjbGFzc2VzIGlmIG5lZWRlZC4KICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0sCisg
ICAgfQogCi0gICAgbWF0Y2hUcmVlRWxlbWVudEFnYWluc3RDdXN0b21GaWx0ZXJzOiBmdW5jdGlv
bih0cmVlRWxlbWVudCkKKyAgICBtYXRjaFRyZWVFbGVtZW50QWdhaW5zdEN1c3RvbUZpbHRlcnMo
dHJlZUVsZW1lbnQpCiAgICAgewogICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2Vz
IGlmIG5lZWRlZC4KICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBt
YXRjaFRyZWVFbGVtZW50QWdhaW5zdEZpbHRlckZ1bmN0aW9uczogZnVuY3Rpb24odHJlZUVsZW1l
bnQpCisgICAgbWF0Y2hUcmVlRWxlbWVudEFnYWluc3RGaWx0ZXJGdW5jdGlvbnModHJlZUVsZW1l
bnQpCiAgICAgewogICAgICAgICBmb3IgKHZhciBmaWx0ZXJGdW5jdGlvbiBvZiB0aGlzLl9maWx0
ZXJGdW5jdGlvbnMpIHsKICAgICAgICAgICAgIGlmIChmaWx0ZXJGdW5jdGlvbih0cmVlRWxlbWVu
dCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0sCisgICAgfQogCi0gICAgYXBwbHlGaWx0ZXJzVG9UcmVlRWxlbWVu
dDogZnVuY3Rpb24odHJlZUVsZW1lbnQpCisgICAgYXBwbHlGaWx0ZXJzVG9UcmVlRWxlbWVudCh0
cmVlRWxlbWVudCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fZmlsdGVyQmFyLmhhc0FjdGl2
ZUZpbHRlcnMoKSAmJiAhdGhpcy5oYXNDdXN0b21GaWx0ZXJzKCkpIHsKICAgICAgICAgICAgIC8v
IE5vIGZpbHRlcnMsIHNvIG1ha2UgZXZlcnl0aGluZyB2aXNpYmxlLgpAQCAtMzk5LDkgKzM4OCw5
IEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKIAog
ICAgICAgICAvLyBNYWtlIHRoaXMgZWxlbWVudCBpbnZpc2libGUgc2luY2UgaXQgZG9lcyBub3Qg
bWF0Y2guCiAgICAgICAgIHRyZWVFbGVtZW50LmhpZGRlbiA9IHRydWU7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBzaG93OiBmdW5jdGlvbigpCisgICAgc2hvdygpCiAgICAgewogICAgICAgICBpZiAo
IXRoaXMucGFyZW50U2lkZWJhcikKICAgICAgICAgICAgIHJldHVybjsKQEAgLTQwOSw5ICszOTgs
OSBAQCBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIFdlYkluc3BlY3Rvci5TaWRlYmFyUGFuZWwucHJvdG90eXBlLnNob3cuY2FsbCh0aGlz
KTsKIAogICAgICAgICB0aGlzLmNvbnRlbnRUcmVlT3V0bGluZUVsZW1lbnQuZm9jdXMoKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIHNob3duOiBmdW5jdGlvbigpCisgICAgc2hvd24oKQogICAgIHsK
ICAgICAgICAgV2ViSW5zcGVjdG9yLlNpZGViYXJQYW5lbC5wcm90b3R5cGUuc2hvd24uY2FsbCh0
aGlzKTsKIApAQCAtNDIwLDI2ICs0MDksMjYgQEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRl
YmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAvLyBGb3JjZSB0aGUgbmF2aWdhdGlvbiBp
dGVtIHRvIGJlIHZpc2libGUuIFRoaXMgbWFrZXMgc3VyZSBpdCBpcwogICAgICAgICAvLyBhbHdh
eXMgdmlzaWJsZSB3aGVuIHRoZSBwYW5lbCBpcyBzaG93bi4KICAgICAgICAgdGhpcy50b29sYmFy
SXRlbS5oaWRkZW4gPSBmYWxzZTsKLSAgICB9LAorICAgIH0KIAotICAgIGhpZGRlbjogZnVuY3Rp
b24oKQorICAgIGhpZGRlbigpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuU2lkZWJhclBh
bmVsLnByb3RvdHlwZS5oaWRkZW4uY2FsbCh0aGlzKTsKIAogICAgICAgICB0aGlzLl91cGRhdGVU
b29sYmFySXRlbVZpc2liaWxpdHkoKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUK
ICAgICAKLSAgICBfdXBkYXRlQ29udGVudE92ZXJmbG93U2hhZG93VmlzaWJpbGl0eVNvb246IGZ1
bmN0aW9uKCkKKyAgICBfdXBkYXRlQ29udGVudE92ZXJmbG93U2hhZG93VmlzaWJpbGl0eVNvb24o
KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3VwZGF0ZUNvbnRlbnRPdmVyZmxvd1NoYWRvd1Zp
c2liaWxpdHlJZGVudGlmaWVyKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMu
X3VwZGF0ZUNvbnRlbnRPdmVyZmxvd1NoYWRvd1Zpc2liaWxpdHlJZGVudGlmaWVyID0gc2V0VGlt
ZW91dCh0aGlzLl91cGRhdGVDb250ZW50T3ZlcmZsb3dTaGFkb3dWaXNpYmlsaXR5LmJpbmQodGhp
cyksIDApOwotICAgIH0sCisgICAgfQogCi0gICAgX3VwZGF0ZUNvbnRlbnRPdmVyZmxvd1NoYWRv
d1Zpc2liaWxpdHk6IGZ1bmN0aW9uKCkKKyAgICBfdXBkYXRlQ29udGVudE92ZXJmbG93U2hhZG93
VmlzaWJpbGl0eSgpCiAgICAgewogICAgICAgICBkZWxldGUgdGhpcy5fdXBkYXRlQ29udGVudE92
ZXJmbG93U2hhZG93VmlzaWJpbGl0eUlkZW50aWZpZXI7CiAKQEAgLTQ1NCw5ICs0NDMsOSBAQCBX
ZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAg
IH0KIAogICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLlBsYXRmb3JtLmlzTGVnYWN5TWFjT1MpCi0g
ICAgICAgICAgICBjb25zdCBlZGdlVGhyZXNob2xkID0gMTA7CisgICAgICAgICAgICB2YXIgZWRn
ZVRocmVzaG9sZCA9IDEwOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb25zdCBlZGdlVGhy
ZXNob2xkID0gMTsKKyAgICAgICAgICAgIHZhciBlZGdlVGhyZXNob2xkID0gMTsKIAogICAgICAg
ICB2YXIgc2Nyb2xsVG9wID0gdGhpcy5jb250ZW50RWxlbWVudC5zY3JvbGxUb3A7CiAKQEAgLTQ2
NiwxNiArNDU1LDE2IEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgaWYgKHRoaXMuX3RvcE92ZXJmbG93U2hhZG93RWxlbWVudCkKICAg
ICAgICAgICAgIHRoaXMuX3RvcE92ZXJmbG93U2hhZG93RWxlbWVudC5zdHlsZS5vcGFjaXR5ID0g
KHRvcENvdmVyYWdlIC8gZWRnZVRocmVzaG9sZCkudG9GaXhlZCgxKTsKICAgICAgICAgdGhpcy5f
Ym90dG9tT3ZlcmZsb3dTaGFkb3dFbGVtZW50LnN0eWxlLm9wYWNpdHkgPSAoMSAtIChib3R0b21D
b3ZlcmFnZSAvIGVkZ2VUaHJlc2hvbGQpKS50b0ZpeGVkKDEpOwotICAgIH0sCisgICAgfQogCi0g
ICAgX3VwZGF0ZVRvb2xiYXJJdGVtVmlzaWJpbGl0eTogZnVuY3Rpb24oKQorICAgIF91cGRhdGVU
b29sYmFySXRlbVZpc2liaWxpdHkoKQogICAgIHsKICAgICAgICAgLy8gSGlkZSB0aGUgbmF2aWdh
dGlvbiBpdGVtIGlmIHJlcXVlc3RlZCBvciBhdXRvLWhpZGluZyBhbmQgd2UgYXJlIG5vdCB2aXNp
YmxlIGFuZCB3ZSBhcmUgZW1wdHkuCiAgICAgICAgIHZhciBzaG91bGRIaWRlID0gKCh0aGlzLl9o
aWRlVG9vbGJhckl0ZW1XaGVuRW1wdHkgfHwgdGhpcy5fYXV0b0hpZGVUb29sYmFySXRlbVdoZW5F
bXB0eSkgJiYgIXRoaXMuc2VsZWN0ZWQgJiYgIXRoaXMuX2NvbnRlbnRUcmVlT3V0bGluZS5jaGls
ZHJlbi5sZW5ndGgpOwogICAgICAgICB0aGlzLnRvb2xiYXJJdGVtLmhpZGRlbiA9IHNob3VsZEhp
ZGU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY2hlY2tGb3JFbXB0eUZpbHRlclJlc3VsdHM6IGZ1
bmN0aW9uKCkKKyAgICBfY2hlY2tGb3JFbXB0eUZpbHRlclJlc3VsdHMoKQogICAgIHsKICAgICAg
ICAgLy8gTm8gdHJlZSBlbGVtZW50cywgc28gZG9uJ3QgdG91Y2ggdGhlIGVtcHR5IGNvbnRlbnQg
cGxhY2Vob2xkZXIuCiAgICAgICAgIGlmICghdGhpcy5fY29udGVudFRyZWVPdXRsaW5lLmNoaWxk
cmVuLmxlbmd0aCkKQEAgLTQ5NywxNCArNDg2LDE0IEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9u
U2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgLy8gQWxsIHRvcCBsZXZlbCB0cmVl
IGVsZW1lbnRzIGFyZSBoaWRkZW4sIHNvIGZpbHRlcmluZyBoaWQgZXZlcnl0aGluZy4gU2hvdyBh
IG1lc3NhZ2UuCiAgICAgICAgIHRoaXMuc2hvd0VtcHR5Q29udGVudFBsYWNlaG9sZGVyKFdlYklu
c3BlY3Rvci5VSVN0cmluZygiTm8gRmlsdGVyIFJlc3VsdHMiKSk7CiAgICAgICAgIHRoaXMuX2Vt
cHR5RmlsdGVyUmVzdWx0cyA9IHRydWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZmlsdGVyRGlk
Q2hhbmdlOiBmdW5jdGlvbigpCisgICAgX2ZpbHRlckRpZENoYW5nZSgpCiAgICAgewogICAgICAg
ICB0aGlzLl91cGRhdGVGaWx0ZXIoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF91cGRhdGVGaWx0
ZXI6IGZ1bmN0aW9uKCkKKyAgICBfdXBkYXRlRmlsdGVyKCkKICAgICB7CiAgICAgICAgIHZhciBz
ZWxlY3RlZFRyZWVFbGVtZW50ID0gdGhpcy5fY29udGVudFRyZWVPdXRsaW5lLnNlbGVjdGVkVHJl
ZUVsZW1lbnQ7CiAgICAgICAgIHZhciBzZWxlY3Rpb25XYXNIaWRkZW4gPSBzZWxlY3RlZFRyZWVF
bGVtZW50ICYmIHNlbGVjdGVkVHJlZUVsZW1lbnQuaGlkZGVuOwpAQCAtNTM0LDkgKzUyMyw5IEBA
IFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgIGlmIChjdXJyZW50Q29udGVudFZpZXcgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVSZWNvcmRpbmdDb250ZW50VmlldyAmJiB0eXBlb2YgY3VycmVudENvbnRlbnRWaWV3LmN1
cnJlbnRUaW1lbGluZVZpZXcuZmlsdGVyVXBkYXRlZCA9PT0gImZ1bmN0aW9uIikKICAgICAgICAg
ICAgICAgICBjdXJyZW50Q29udGVudFZpZXcuY3VycmVudFRpbWVsaW5lVmlldy5maWx0ZXJVcGRh
dGVkKCk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIF90cmVlRWxlbWVudEFkZGVk
T3JDaGFuZ2VkOiBmdW5jdGlvbih0cmVlRWxlbWVudCkKKyAgICBfdHJlZUVsZW1lbnRBZGRlZE9y
Q2hhbmdlZCh0cmVlRWxlbWVudCkKICAgICB7CiAgICAgICAgIC8vIERvbid0IHBvcHVsYXRlIGlm
IHdlIGRvbid0IGhhdmUgYW55IGFjdGl2ZSBmaWx0ZXJzLgogICAgICAgICAvLyBXZSBvbmx5IG5l
ZWQgdG8gcG9wdWxhdGUgd2hlbiBhIGZpbHRlciBuZWVkcyB0byByZXZlYWwuCkBAIC01NTQsMjMg
KzU0MywyMyBAQCBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUg
PSB7CiAKICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWQpCiAgICAgICAgICAgICB0aGlzLl9jaGVj
a0VsZW1lbnRzRm9yUGVuZGluZ1ZpZXdTdGF0ZUNvb2tpZSh0cmVlRWxlbWVudCk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfdHJlZUVsZW1lbnRFeHBhbmRlZE9yQ29sbGFwc2VkOiBmdW5jdGlvbih0
cmVlRWxlbWVudCkKKyAgICBfdHJlZUVsZW1lbnRFeHBhbmRlZE9yQ29sbGFwc2VkKHRyZWVFbGVt
ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fdXBkYXRlQ29udGVudE92ZXJmbG93U2hhZG93Vmlz
aWJpbGl0eSgpOwotICAgIH0sCisgICAgfQogCi0gICAgX2dlbmVyYXRlU3R5bGVSdWxlc0lmTmVl
ZGVkOiBmdW5jdGlvbigpCisgICAgX2dlbmVyYXRlU3R5bGVSdWxlc0lmTmVlZGVkKCkKICAgICB7
CiAgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5fc3R5bGVF
bGVtZW50KQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIFdlYkluc3BlY3Rvci5OYXZp
Z2F0aW9uU2lkZWJhclBhbmVsLl9zdHlsZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJzdHlsZSIpOwogCi0gICAgICAgIGNvbnN0IG1heGltdW1TaWRlYmFyVHJlZURlcHRoID0gMzI7
Ci0gICAgICAgIGNvbnN0IGJhc2VMZWZ0UGFkZGluZyA9IDU7IC8vIE1hdGNoZXMgdGhlIHBhZGRp
bmcgaW4gTmF2aWdhdGlvblNpZGViYXJQYW5lbC5jc3MgZm9yIHRoZSBpdGVtIGNsYXNzLiBLZWVw
IGluIHN5bmMuCi0gICAgICAgIGNvbnN0IGRlcHRoUGFkZGluZyA9IDEwOworICAgICAgICB2YXIg
bWF4aW11bVNpZGViYXJUcmVlRGVwdGggPSAzMjsKKyAgICAgICAgdmFyIGJhc2VMZWZ0UGFkZGlu
ZyA9IDU7IC8vIE1hdGNoZXMgdGhlIHBhZGRpbmcgaW4gTmF2aWdhdGlvblNpZGViYXJQYW5lbC5j
c3MgZm9yIHRoZSBpdGVtIGNsYXNzLiBLZWVwIGluIHN5bmMuCisgICAgICAgIHZhciBkZXB0aFBh
ZGRpbmcgPSAxMDsKIAogICAgICAgICB2YXIgc3R5bGVUZXh0ID0gIiI7CiAgICAgICAgIHZhciBj
aGlsZHJlblN1YnN0cmluZyA9ICIiOwpAQCAtNTg0LDkgKzU3Myw5IEBAIFdlYkluc3BlY3Rvci5O
YXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgV2ViSW5zcGVjdG9y
Lk5hdmlnYXRpb25TaWRlYmFyUGFuZWwuX3N0eWxlRWxlbWVudC50ZXh0Q29udGVudCA9IHN0eWxl
VGV4dDsKIAogICAgICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKFdlYkluc3BlY3Rvci5O
YXZpZ2F0aW9uU2lkZWJhclBhbmVsLl9zdHlsZUVsZW1lbnQpOwotICAgIH0sCisgICAgfQogCi0g
ICAgX2dlbmVyYXRlRGlzY2xvc3VyZVRyaWFuZ2xlc0lmTmVlZGVkOiBmdW5jdGlvbigpCisgICAg
X2dlbmVyYXRlRGlzY2xvc3VyZVRyaWFuZ2xlc0lmTmVlZGVkKCkKICAgICB7CiAgICAgICAgIGlm
IChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5fZ2VuZXJhdGVkRGlzY2xvc3Vy
ZVRyaWFuZ2xlcykKICAgICAgICAgICAgIHJldHVybjsKQEAgLTYyNSw5ICs2MTQsOSBAQCBXZWJJ
bnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAg
Z2VuZXJhdGVDb2xvcmVkSW1hZ2VzRm9yQ1NTKCJJbWFnZXMvRGlzY2xvc3VyZVRyaWFuZ2xlU21h
bGxPcGVuLnN2ZyIsIHNwZWNpZmljYXRpb25zLCAxMywgMTMsIFdlYkluc3BlY3Rvci5OYXZpZ2F0
aW9uU2lkZWJhclBhbmVsLkRpc2Nsb3N1cmVUcmlhbmdsZU9wZW5DYW52YXNJZGVudGlmaWVyKTsK
ICAgICAgICAgZ2VuZXJhdGVDb2xvcmVkSW1hZ2VzRm9yQ1NTKCJJbWFnZXMvRGlzY2xvc3VyZVRy
aWFuZ2xlU21hbGxDbG9zZWQuc3ZnIiwgc3BlY2lmaWNhdGlvbnMsIDEzLCAxMywgV2ViSW5zcGVj
dG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwuRGlzY2xvc3VyZVRyaWFuZ2xlQ2xvc2VkQ2FudmFz
SWRlbnRpZmllcik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY2hlY2tGb3JPbGRSZXNvdXJjZXM6
IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9jaGVja0Zvck9sZFJlc291cmNlcyhldmVudCkKICAgICB7
CiAgICAgICAgIGlmICh0aGlzLl9jaGVja0Zvck9sZFJlc291cmNlc1RpbWVvdXRJZGVudGlmaWVy
KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNjU3LDE3ICs2NDYsMTcgQEAgV2ViSW5zcGVjdG9y
Lk5hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgICAgIC8vIENoZWNr
IG9uIGEgZGVsYXkgdG8gY29hbGVzY2UgbXVsdGlwbGUgY2FsbHMgdG8gX2NoZWNrRm9yT2xkUmVz
b3VyY2VzLgogICAgICAgICB0aGlzLl9jaGVja0Zvck9sZFJlc291cmNlc1RpbWVvdXRJZGVudGlm
aWVyID0gc2V0VGltZW91dChkZWxheWVkV29yay5iaW5kKHRoaXMpLCAwKTsKLSAgICB9LAorICAg
IH0KIAotICAgIF9pc1RyZWVFbGVtZW50V2l0aG91dFJlcHJlc2VudGVkT2JqZWN0OiBmdW5jdGlv
bih0cmVlRWxlbWVudCkKKyAgICBfaXNUcmVlRWxlbWVudFdpdGhvdXRSZXByZXNlbnRlZE9iamVj
dCh0cmVlRWxlbWVudCkKICAgICB7CiAgICAgICAgIHJldHVybiB0cmVlRWxlbWVudCBpbnN0YW5j
ZW9mIFdlYkluc3BlY3Rvci5Gb2xkZXJUcmVlRWxlbWVudAogICAgICAgICAgICAgfHwgdHJlZUVs
ZW1lbnQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRGF0YWJhc2VIb3N0VHJlZUVsZW1lbnQKICAg
ICAgICAgICAgIHx8IHR5cGVvZiB0cmVlRWxlbWVudC5yZXByZXNlbnRlZE9iamVjdCA9PT0gInN0
cmluZyIKICAgICAgICAgICAgIHx8IHRyZWVFbGVtZW50LnJlcHJlc2VudGVkT2JqZWN0IGluc3Rh
bmNlb2YgU3RyaW5nOwotICAgIH0sCisgICAgfQogCi0gICAgX2NoZWNrT3V0bGluZXNGb3JQZW5k
aW5nVmlld1N0YXRlQ29va2llOiBmdW5jdGlvbihtYXRjaFR5cGVPbmx5KQorICAgIF9jaGVja091
dGxpbmVzRm9yUGVuZGluZ1ZpZXdTdGF0ZUNvb2tpZShtYXRjaFR5cGVPbmx5KQogICAgIHsKICAg
ICAgICAgaWYgKCF0aGlzLl9wZW5kaW5nVmlld1N0YXRlQ29va2llKQogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtNjgyLDkgKzY3MSw5IEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBh
bmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgfSk7CiAKICAgICAgICAgcmV0dXJuIHRoaXMuX2No
ZWNrRWxlbWVudHNGb3JQZW5kaW5nVmlld1N0YXRlQ29va2llKHZpc2libGVUcmVlRWxlbWVudHMs
IG1hdGNoVHlwZU9ubHkpOwotICAgIH0sCisgICAgfQogCi0gICAgX2NoZWNrRWxlbWVudHNGb3JQ
ZW5kaW5nVmlld1N0YXRlQ29va2llOiBmdW5jdGlvbih0cmVlRWxlbWVudHMsIG1hdGNoVHlwZU9u
bHkpCisgICAgX2NoZWNrRWxlbWVudHNGb3JQZW5kaW5nVmlld1N0YXRlQ29va2llKHRyZWVFbGVt
ZW50cywgbWF0Y2hUeXBlT25seSkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fcGVuZGluZ1Zp
ZXdTdGF0ZUNvb2tpZSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTc0NiwzICs3MzUsMTUgQEAg
V2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAg
ICB9CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwuT3Zl
cmZsb3dTaGFkb3dFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAib3ZlcmZsb3ctc2hhZG93IjsKK1dl
Ykluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLlRvcE92ZXJmbG93U2hhZG93RWxlbWVu
dFN0eWxlQ2xhc3NOYW1lID0gInRvcCI7CitXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQ
YW5lbC5Db250ZW50VHJlZU91dGxpbmVFbGVtZW50SGlkZGVuU3R5bGVDbGFzc05hbWUgPSAiaGlk
ZGVuIjsKK1dlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLkNvbnRlbnRUcmVlT3V0
bGluZUVsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJuYXZpZ2F0aW9uLXNpZGViYXItcGFuZWwtY29u
dGVudC10cmVlLW91dGxpbmUiOworV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwu
SGlkZURpc2Nsb3N1cmVCdXR0b25zU3R5bGVDbGFzc05hbWUgPSAiaGlkZS1kaXNjbG9zdXJlLWJ1
dHRvbnMiOworV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwuRW1wdHlDb250ZW50
UGxhY2Vob2xkZXJFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAiZW1wdHktY29udGVudC1wbGFjZWhv
bGRlciI7CitXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5FbXB0eUNvbnRlbnRQ
bGFjZWhvbGRlck1lc3NhZ2VFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAibWVzc2FnZSI7CitXZWJJ
bnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5EaXNjbG9zdXJlVHJpYW5nbGVPcGVuQ2Fu
dmFzSWRlbnRpZmllciA9ICJuYXZpZ2F0aW9uLXNpZGViYXItcGFuZWwtZGlzY2xvc3VyZS10cmlh
bmdsZS1vcGVuIjsKK1dlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLkRpc2Nsb3N1
cmVUcmlhbmdsZUNsb3NlZENhbnZhc0lkZW50aWZpZXIgPSAibmF2aWdhdGlvbi1zaWRlYmFyLXBh
bmVsLWRpc2Nsb3N1cmUtdHJpYW5nbGUtY2xvc2VkIjsKK1dlYkluc3BlY3Rvci5OYXZpZ2F0aW9u
U2lkZWJhclBhbmVsLkRpc2Nsb3N1cmVUcmlhbmdsZU5vcm1hbENhbnZhc0lkZW50aWZpZXJTdWZm
aXggPSAiLW5vcm1hbCI7CitXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5EaXNj
bG9zdXJlVHJpYW5nbGVTZWxlY3RlZENhbnZhc0lkZW50aWZpZXJTdWZmaXggPSAiLXNlbGVjdGVk
IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1Byb2JlRGV0YWlsc1NpZGViYXJQYW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1Byb2JlRGV0YWlsc1NpZGViYXJQYW5lbC5qcwppbmRleCA5ZGQ2OTUy
Li5hZTc0YmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9Qcm9iZURldGFpbHNTaWRlYmFyUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUHJvYmVEZXRhaWxzU2lkZWJhclBhbmVsLmpzCkBA
IC0xLDYgKzEsNiBAQAogLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMyBVbml2ZXJzaXR5IG9m
IFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yNCw5ICsyNCwxMSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNw
ZWN0b3IuUHJvYmVEZXRhaWxzU2lkZWJhclBhbmVsID0gZnVuY3Rpb24oKQorV2ViSW5zcGVjdG9y
LlByb2JlRGV0YWlsc1NpZGViYXJQYW5lbCA9IGNsYXNzIFByb2JlRGV0YWlsc1NpZGViYXJQYW5l
bCBleHRlbmRzIFdlYkluc3BlY3Rvci5EZXRhaWxzU2lkZWJhclBhbmVsCiB7Ci0gICAgV2ViSW5z
cGVjdG9yLkRldGFpbHNTaWRlYmFyUGFuZWwuY2FsbCh0aGlzLCAicHJvYmUiLCBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIlByb2JlcyIpLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlByb2JlcyIpLCAi
SW1hZ2VzL05hdmlnYXRpb25JdGVtUHJvYmVzLnN2ZyIsICI2Iik7CisgICAgY29uc3RydWN0b3Io
KQorICAgIHsKKyAgICAgICAgc3VwZXIoInByb2JlIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQ
cm9iZXMiKSwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQcm9iZXMiKSwgIkltYWdlcy9OYXZpZ2F0
aW9uSXRlbVByb2Jlcy5zdmciLCAiNiIpOwogCiAgICAgICAgIFdlYkluc3BlY3Rvci5wcm9iZU1h
bmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUHJvYmVNYW5hZ2VyLkV2ZW50LlBy
b2JlU2V0QWRkZWQsIHRoaXMuX3Byb2JlU2V0QWRkZWQsIHRoaXMpOwogICAgICAgICBXZWJJbnNw
ZWN0b3IucHJvYmVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlByb2JlTWFu
YWdlci5FdmVudC5Qcm9iZVNldFJlbW92ZWQsIHRoaXMuX3Byb2JlU2V0UmVtb3ZlZCwgdGhpcyk7
CkBAIC0zNywyMCArMzksMTQgQEAgV2ViSW5zcGVjdG9yLlByb2JlRGV0YWlsc1NpZGViYXJQYW5l
bCA9IGZ1bmN0aW9uKCkKICAgICAgICAgLy8gSW5pdGlhbGl6ZSBzaWRlYmFyIHNlY3Rpb25zIGZv
ciBwcm9iZSBzZXRzIHRoYXQgYWxyZWFkeSBleGlzdC4KICAgICAgICAgZm9yICh2YXIgcHJvYmVT
ZXQgb2YgV2ViSW5zcGVjdG9yLnByb2JlTWFuYWdlci5wcm9iZVNldHMpCiAgICAgICAgICAgICB0
aGlzLl9wcm9iZVNldEFkZGVkKHByb2JlU2V0KTsKLX07Ci0KLVdlYkluc3BlY3Rvci5Qcm9iZURl
dGFpbHNTaWRlYmFyUGFuZWwuT2Zmc2V0U2VjdGlvbnNTdHlsZUNsYXNzTmFtZSAgPSAib2Zmc2V0
LXNlY3Rpb25zIjsKLQotV2ViSW5zcGVjdG9yLlByb2JlRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90
b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5Qcm9iZURldGFpbHNTaWRl
YmFyUGFuZWwsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuRGV0YWlsc1NpZGViYXJQYW5l
bC5wcm90b3R5cGUsCisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgaW5zcGVjdGVk
UHJvYmVTZXRzKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9pbnNwZWN0ZWRQcm9iZVNl
dHMuc2xpY2UoKTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBpbnNwZWN0ZWRQcm9iZVNldHMo
bmV3UHJvYmVTZXRzKQogICAgIHsKQEAgLTY1LDkgKzYxLDkgQEAgV2ViSW5zcGVjdG9yLlByb2Jl
RGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB2YXIgc2hvd25T
ZWN0aW9uID0gdGhpcy5fcHJvYmVTZXRTZWN0aW9ucy5nZXQocHJvYmVTZXQpOwogICAgICAgICAg
ICAgdGhpcy5jb250ZW50RWxlbWVudC5hcHBlbmRDaGlsZChzaG93blNlY3Rpb24uZWxlbWVudCk7
CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIGluc3BlY3Q6IGZ1bmN0aW9uKG9iamVj
dHMpCisgICAgaW5zcGVjdChvYmplY3RzKQogICAgIHsKICAgICAgICAgaWYgKCEob2JqZWN0cyBp
bnN0YW5jZW9mIEFycmF5KSkKICAgICAgICAgICAgIG9iamVjdHMgPSBbb2JqZWN0c107CkBAIC05
MywxMSArODksMTEgQEAgV2ViSW5zcGVjdG9yLlByb2JlRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90
b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuaW5zcGVjdGVkUHJvYmVTZXRzID0gaW5zcGVjdGVkUHJv
YmVTZXRzOwogCiAgICAgICAgIHJldHVybiAhIXRoaXMuX2luc3BlY3RlZFByb2JlU2V0cy5sZW5n
dGg7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfcHJvYmVTZXRBZGRl
ZDogZnVuY3Rpb24ocHJvYmVTZXRPckV2ZW50KQorICAgIF9wcm9iZVNldEFkZGVkKHByb2JlU2V0
T3JFdmVudCkKICAgICB7CiAgICAgICAgIHZhciBwcm9iZVNldDsKICAgICAgICAgaWYgKHByb2Jl
U2V0T3JFdmVudCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Qcm9iZVNldCkKQEAgLTEwOCwxMCAr
MTA0LDEwIEBAIFdlYkluc3BlY3Rvci5Qcm9iZURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBl
ID0gewogCiAgICAgICAgIHZhciBuZXdTZWN0aW9uID0gbmV3IFdlYkluc3BlY3Rvci5Qcm9iZVNl
dERldGFpbHNTZWN0aW9uKHByb2JlU2V0KTsKICAgICAgICAgdGhpcy5fcHJvYmVTZXRTZWN0aW9u
cy5zZXQocHJvYmVTZXQsIG5ld1NlY3Rpb24pOwotICAgIH0sCisgICAgfQogCiAKLSAgICBfcHJv
YmVTZXRSZW1vdmVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfcHJvYmVTZXRSZW1vdmVkKGV2ZW50
KQogICAgIHsKICAgICAgICAgdmFyIHByb2JlU2V0ID0gZXZlbnQuZGF0YS5wcm9iZVNldDsKICAg
ICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fcHJvYmVTZXRTZWN0aW9ucy5oYXMocHJvYmVTZXQp
LCAiUmVtb3ZlZCBwcm9iZSBncm91cCAiLCBwcm9iZVNldCwgIiBkb2Vzbid0IGhhdmUgYSBzaWRl
YmFyLiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvUmVzb3VyY2VEZXRhaWxzU2lkZWJhclBhbmVsLmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VEZXRhaWxzU2lkZWJhclBhbmVsLmpzCmlu
ZGV4IGVkMzY5MWIuLmYwMWM3ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlRGV0YWlsc1NpZGViYXJQYW5lbC5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZURldGFpbHNT
aWRlYmFyUGFuZWwuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTIzLDExICsyMywxMyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5SZXNvdXJjZURldGFpbHNTaWRlYmFyUGFu
ZWwgPSBmdW5jdGlvbigpCitXZWJJbnNwZWN0b3IuUmVzb3VyY2VEZXRhaWxzU2lkZWJhclBhbmVs
ID0gY2xhc3MgUmVzb3VyY2VEZXRhaWxzU2lkZWJhclBhbmVsIGV4dGVuZHMgV2ViSW5zcGVjdG9y
LkRldGFpbHNTaWRlYmFyUGFuZWwKIHsKLSAgICBXZWJJbnNwZWN0b3IuRGV0YWlsc1NpZGViYXJQ
YW5lbC5jYWxsKHRoaXMsICJyZXNvdXJjZS1kZXRhaWxzIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJSZXNvdXJjZSIpLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlc291cmNlIiksICJJbWFnZXMv
TmF2aWdhdGlvbkl0ZW1GaWxlLnN2ZyIsICIxIik7CisgICAgY29uc3RydWN0b3IoKQorICAgIHsK
KyAgICAgICAgc3VwZXIoInJlc291cmNlLWRldGFpbHMiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IlJlc291cmNlIiksIFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVzb3VyY2UiKSwgIkltYWdlcy9O
YXZpZ2F0aW9uSXRlbUZpbGUuc3ZnIiwgIjEiKTsKIAotICAgIHRoaXMuZWxlbWVudC5jbGFzc0xp
c3QuYWRkKFdlYkluc3BlY3Rvci5SZXNvdXJjZURldGFpbHNTaWRlYmFyUGFuZWwuU3R5bGVDbGFz
c05hbWUpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgicmVzb3VyY2UiKTsK
IAogICAgICAgICB0aGlzLl9yZXNvdXJjZSA9IG51bGw7CiAKQEAgLTEwNSwxNyArMTA3LDExIEBA
IFdlYkluc3BlY3Rvci5SZXNvdXJjZURldGFpbHNTaWRlYmFyUGFuZWwgPSBmdW5jdGlvbigpCiAg
ICAgICAgIHRoaXMuY29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fcmVxdWVzdEFuZFJl
c3BvbnNlU2VjdGlvbi5lbGVtZW50KTsKICAgICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5hcHBl
bmRDaGlsZCh0aGlzLl9yZXF1ZXN0SGVhZGVyc1NlY3Rpb24uZWxlbWVudCk7CiAgICAgICAgIHRo
aXMuY29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fcmVzcG9uc2VIZWFkZXJzU2VjdGlv
bi5lbGVtZW50KTsKLX07Ci0KLVdlYkluc3BlY3Rvci5SZXNvdXJjZURldGFpbHNTaWRlYmFyUGFu
ZWwuU3R5bGVDbGFzc05hbWUgPSAicmVzb3VyY2UiOwotCi1XZWJJbnNwZWN0b3IuUmVzb3VyY2VE
ZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5z
cGVjdG9yLlJlc291cmNlRGV0YWlsc1NpZGViYXJQYW5lbCwKLSAgICBfX3Byb3RvX186IFdlYklu
c3BlY3Rvci5EZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZSwKKyAgICB9CiAKICAgICAvLyBQ
dWJsaWMKIAotICAgIGluc3BlY3Q6IGZ1bmN0aW9uKG9iamVjdHMpCisgICAgaW5zcGVjdChvYmpl
Y3RzKQogICAgIHsKICAgICAgICAgLy8gQ29udmVydCB0byBhIHNpbmdsZSBpdGVtIGFycmF5IGlm
IG5lZWRlZC4KICAgICAgICAgaWYgKCEob2JqZWN0cyBpbnN0YW5jZW9mIEFycmF5KSkKQEAgLTEz
OSwxMiArMTM1LDEyIEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZURldGFpbHNTaWRlYmFyUGFuZWwu
cHJvdG90eXBlID0gewogICAgICAgICB0aGlzLnJlc291cmNlID0gcmVzb3VyY2VUb0luc3BlY3Q7
CiAKICAgICAgICAgcmV0dXJuICEhdGhpcy5fcmVzb3VyY2U7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICBnZXQgcmVzb3VyY2UoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlOwot
ICAgIH0sCisgICAgfQogCiAgICAgc2V0IHJlc291cmNlKHJlc291cmNlKQogICAgIHsKQEAgLTE3
Niw5ICsxNzIsOSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VEZXRhaWxzU2lkZWJhclBhbmVsLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMubmVlZHNSZWZyZXNoKCk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICByZWZyZXNoOiBmdW5jdGlvbigpCisgICAgcmVmcmVzaCgpCiAg
ICAgewogICAgICAgICBpZiAoIXRoaXMuX3Jlc291cmNlKQogICAgICAgICAgICAgcmV0dXJuOwpA
QCAtMTkyLDExICsxODgsMTEgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlRGV0YWlsc1NpZGViYXJQ
YW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3JlZnJlc2hSZXF1ZXN0SGVhZGVycygp
OwogICAgICAgICB0aGlzLl9yZWZyZXNoSW1hZ2VTaXplU2VjdGlvbigpOwogICAgICAgICB0aGlz
Ll9yZWZyZXNoUmVxdWVzdERhdGFTZWN0aW9uKCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQ
cml2YXRlCiAKLSAgICBfcmVmcmVzaFVSTDogZnVuY3Rpb24oKQorICAgIF9yZWZyZXNoVVJMKCkK
ICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fcmVzb3VyY2UpCiAgICAgICAgICAgICByZXR1cm47
CkBAIC0yMzgsMjUgKzIzNCwyNSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VEZXRhaWxzU2lkZWJh
clBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGlmIChxdWVyeVBhcmFtZXRlcnNTZWN0
aW9uRWxlbWVudC5wYXJlbnROb2RlKQogICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1ldGVyc1Nl
Y3Rpb25FbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQocXVlcnlQYXJhbWV0ZXJzU2VjdGlv
bkVsZW1lbnQpOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcmVmcmVzaFJlc291
cmNlVHlwZTogZnVuY3Rpb24oKQorICAgIF9yZWZyZXNoUmVzb3VyY2VUeXBlKCkKICAgICB7CiAg
ICAgICAgIGlmICghdGhpcy5fcmVzb3VyY2UpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAg
ICAgdGhpcy5fdHlwZVJlc291cmNlVHlwZVJvdy52YWx1ZSA9IFdlYkluc3BlY3Rvci5SZXNvdXJj
ZS5kaXNwbGF5TmFtZUZvclR5cGUodGhpcy5fcmVzb3VyY2UudHlwZSk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfcmVmcmVzaE1JTUVUeXBlOiBmdW5jdGlvbigpCisgICAgX3JlZnJlc2hNSU1FVHlw
ZSgpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX3Jlc291cmNlKQogICAgICAgICAgICAgcmV0
dXJuOwogCiAgICAgICAgIHRoaXMuX3R5cGVNSU1FVHlwZVJvdy52YWx1ZSA9IHRoaXMuX3Jlc291
cmNlLm1pbWVUeXBlOwotICAgIH0sCisgICAgfQogCi0gICAgX3JlZnJlc2hSZXF1ZXN0QW5kUmVz
cG9uc2U6IGZ1bmN0aW9uKCkKKyAgICBfcmVmcmVzaFJlcXVlc3RBbmRSZXNwb25zZSgpCiAgICAg
ewogICAgICAgICB2YXIgcmVzb3VyY2UgPSB0aGlzLl9yZXNvdXJjZTsKICAgICAgICAgaWYgKCFy
ZXNvdXJjZSkKQEAgLTI2NCw3ICsyNjAsNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VEZXRhaWxz
U2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgICAgICAvLyBJZiB3ZSBkb24ndCBoYXZl
IGEgdmFsdWUsIHdlIHNldCBhbiBlbS1kYXNoIHRvIGtlZXAgdGhlIHJvdyBmcm9tIGhpZGluZy4K
ICAgICAgICAgLy8gVGhpcyBrZWVwcyB0aGUgVUkgZnJvbSBzaGlmdGluZyBhcm91bmQgYXMgZGF0
YSBjb21lcyBpbi4KLSAgICAgICAgY29uc3QgZW1EYXNoID0gIlx1MjAxNCI7CisgICAgICAgIHZh
ciBlbURhc2ggPSAiXHUyMDE0IjsKIAogICAgICAgICB0aGlzLl9yZXF1ZXN0TWV0aG9kUm93LnZh
bHVlID0gcmVzb3VyY2UucmVxdWVzdE1ldGhvZCB8fCBlbURhc2g7CiAKQEAgLTI3NSwyMyArMjcx
LDIzIEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBl
ID0gewogCiAgICAgICAgIHRoaXMuX3JlZnJlc2hSZXNwb25zZUhlYWRlcnMoKTsKICAgICAgICAg
dGhpcy5fcmVmcmVzaENvbXByZXNzZWQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF92YWx1ZUZv
clNpemU6IGZ1bmN0aW9uKHNpemUpCisgICAgX3ZhbHVlRm9yU2l6ZShzaXplKQogICAgIHsKICAg
ICAgICAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSBhIHZhbHVlLCB3ZSBzZXQgYW4gZW0tZGFzaCB0byBr
ZWVwIHRoZSByb3cgZnJvbSBoaWRpbmcuCiAgICAgICAgIC8vIFRoaXMga2VlcHMgdGhlIFVJIGZy
b20gc2hpZnRpbmcgYXJvdW5kIGFzIGRhdGEgY29tZXMgaW4uCi0gICAgICAgIGNvbnN0IGVtRGFz
aCA9ICJcdTIwMTQiOworICAgICAgICB2YXIgZW1EYXNoID0gIlx1MjAxNCI7CiAgICAgICAgIHJl
dHVybiBzaXplID4gMCA/IE51bWJlci5ieXRlc1RvU3RyaW5nKHNpemUpIDogZW1EYXNoOwotICAg
IH0sCisgICAgfQogCi0gICAgX3JlZnJlc2hDb21wcmVzc2VkOiBmdW5jdGlvbigpCisgICAgX3Jl
ZnJlc2hDb21wcmVzc2VkKCkKICAgICB7CiAgICAgICAgIHRoaXMuX2NvbXByZXNzZWRSb3cudmFs
dWUgPSB0aGlzLl9yZXNvdXJjZS5jb21wcmVzc2VkID8gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJZ
ZXMiKSA6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiTm8iKTsKICAgICAgICAgdGhpcy5fY29tcHJl
c3Npb25Sb3cudmFsdWUgPSB0aGlzLl9yZXNvdXJjZS5jb21wcmVzc2VkID8gV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCIlLjJmXHUwMGQ3IikuZm9ybWF0KHRoaXMuX3Jlc291cmNlLnNpemUgLyB0aGlz
Ll9yZXNvdXJjZS5lbmNvZGVkU2l6ZSkgOiBudWxsOwotICAgIH0sCisgICAgfQogCi0gICAgX3Jl
ZnJlc2hEZWNvZGVkU2l6ZTogZnVuY3Rpb24oKQorICAgIF9yZWZyZXNoRGVjb2RlZFNpemUoKQog
ICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9yZXNvdXJjZSkKICAgICAgICAgICAgIHJldHVybjsK
QEAgLTMwMCw5ICsyOTYsOSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VEZXRhaWxzU2lkZWJhclBh
bmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fZGVjb2RlZFNpemVSb3cudmFsdWUgPSB0
aGlzLl92YWx1ZUZvclNpemUodGhpcy5fcmVzb3VyY2Uuc2l6ZSk7CiAKICAgICAgICAgdGhpcy5f
cmVmcmVzaENvbXByZXNzZWQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9yZWZyZXNoVHJhbnNm
ZXJTaXplOiBmdW5jdGlvbigpCisgICAgX3JlZnJlc2hUcmFuc2ZlclNpemUoKQogICAgIHsKICAg
ICAgICAgaWYgKCF0aGlzLl9yZXNvdXJjZSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTMxMSwy
NSArMzA3LDI1IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZURldGFpbHNTaWRlYmFyUGFuZWwucHJv
dG90eXBlID0gewogICAgICAgICB0aGlzLl90cmFuc2ZlclNpemVSb3cudmFsdWUgPSB0aGlzLl92
YWx1ZUZvclNpemUodGhpcy5fcmVzb3VyY2UudHJhbnNmZXJTaXplKTsKIAogICAgICAgICB0aGlz
Ll9yZWZyZXNoQ29tcHJlc3NlZCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX3JlZnJlc2hSZXF1
ZXN0SGVhZGVyczogZnVuY3Rpb24oKQorICAgIF9yZWZyZXNoUmVxdWVzdEhlYWRlcnMoKQogICAg
IHsKICAgICAgICAgaWYgKCF0aGlzLl9yZXNvdXJjZSkKICAgICAgICAgICAgIHJldHVybjsKIAog
ICAgICAgICB0aGlzLl9yZXF1ZXN0SGVhZGVyc1Jvdy5kYXRhR3JpZCA9IHRoaXMuX2NyZWF0ZU5h
bWVWYWx1ZURhdGFHcmlkKHRoaXMuX3Jlc291cmNlLnJlcXVlc3RIZWFkZXJzKTsKLSAgICB9LAor
ICAgIH0KIAotICAgIF9yZWZyZXNoUmVzcG9uc2VIZWFkZXJzOiBmdW5jdGlvbigpCisgICAgX3Jl
ZnJlc2hSZXNwb25zZUhlYWRlcnMoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9yZXNvdXJj
ZSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLl9yZXNwb25zZUhlYWRlcnNS
b3cuZGF0YUdyaWQgPSB0aGlzLl9jcmVhdGVOYW1lVmFsdWVEYXRhR3JpZCh0aGlzLl9yZXNvdXJj
ZS5yZXNwb25zZUhlYWRlcnMpOwotICAgIH0sCisgICAgfQogCi0gICAgX2NyZWF0ZU5hbWVWYWx1
ZURhdGFHcmlkOiBmdW5jdGlvbihkYXRhKQorICAgIF9jcmVhdGVOYW1lVmFsdWVEYXRhR3JpZChk
YXRhKQogICAgIHsKICAgICAgICAgaWYgKCFkYXRhIHx8IGRhdGEgaW5zdGFuY2VvZiBBcnJheSA/
ICFkYXRhLmxlbmd0aCA6IGlzRW1wdHlPYmplY3QoZGF0YSkpCiAgICAgICAgICAgICByZXR1cm4g
bnVsbDsKQEAgLTM3NCw5ICszNzAsOSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VEZXRhaWxzU2lk
ZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBkYXRh
R3JpZDsKLSAgICB9LAorICAgIH0KIAotICAgIF9yZWZyZXNoSW1hZ2VTaXplU2VjdGlvbjogZnVu
Y3Rpb24oKQorICAgIF9yZWZyZXNoSW1hZ2VTaXplU2VjdGlvbigpCiAgICAgewogICAgICAgICB2
YXIgcmVzb3VyY2UgPSB0aGlzLl9yZXNvdXJjZTsKIApAQCAtMzk5LDE0ICszOTUsMTQgQEAgV2Vi
SW5zcGVjdG9yLlJlc291cmNlRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgICAgICB0aGlzLl9pbWFnZVdpZHRoUm93LnZhbHVlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCIlZnB4IikuZm9ybWF0KHNpemUud2lkdGgpOwogICAgICAgICAgICAgdGhpcy5faW1hZ2VIZWln
aHRSb3cudmFsdWUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIiVmcHgiKS5mb3JtYXQoc2l6ZS5o
ZWlnaHQpOwogICAgICAgICB9LmJpbmQodGhpcykpOwotICAgIH0sCisgICAgfQogCi0gICAgX2dv
VG9SZXF1ZXN0RGF0YUNsaWNrZWQ6IGZ1bmN0aW9uKCkKKyAgICBfZ29Ub1JlcXVlc3REYXRhQ2xp
Y2tlZCgpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IucmVzb3VyY2VTaWRlYmFyUGFuZWwu
c2hvd1Jlc291cmNlUmVxdWVzdCh0aGlzLl9yZXNvdXJjZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfcmVmcmVzaFJlcXVlc3REYXRhU2VjdGlvbjogZnVuY3Rpb24oKQorICAgIF9yZWZyZXNoUmVx
dWVzdERhdGFTZWN0aW9uKCkKICAgICB7CiAgICAgICAgIHZhciByZXNvdXJjZSA9IHRoaXMuX3Jl
c291cmNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9SZXNvdXJjZVNpZGViYXJQYW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlU2lkZWJhclBhbmVsLmpzCmluZGV4IDEzNjRhNzYu
LjhhMGI5MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1Jlc291cmNlU2lkZWJhclBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlU2lkZWJhclBhbmVsLmpzCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw4ICsyMywx
MSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3Bl
Y3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbCA9IGZ1bmN0aW9uKCkgewotICAgIFdlYkluc3BlY3Rv
ci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmNhbGwodGhpcywgInJlc291cmNlIiwgV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJSZXNvdXJjZXMiKSwgIkltYWdlcy9OYXZpZ2F0aW9uSXRlbVN0b3JhZ2Uu
c3ZnIiwgIjEiLCB0cnVlLCBmYWxzZSwgdHJ1ZSk7CitXZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRl
YmFyUGFuZWwgPSBjbGFzcyBSZXNvdXJjZVNpZGViYXJQYW5lbCBleHRlbmRzIFdlYkluc3BlY3Rv
ci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsCit7CisgICAgY29uc3RydWN0b3IoKQorICAgIHsKKyAg
ICAgICAgc3VwZXIoInJlc291cmNlIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXNvdXJjZXMi
KSwgIkltYWdlcy9OYXZpZ2F0aW9uSXRlbVN0b3JhZ2Uuc3ZnIiwgIjEiLCB0cnVlLCBmYWxzZSwg
dHJ1ZSk7CiAKICAgICAgICAgdmFyIHNlYXJjaEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKTsKICAgICAgICAgc2VhcmNoRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJzZWFyY2gt
YmFyIik7CkBAIC05NSwxNCArOTgsMTEgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBh
bmVsID0gZnVuY3Rpb24oKSB7CiAKICAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5kZWJ1Z2dhYmxl
VHlwZSA9PT0gV2ViSW5zcGVjdG9yLkRlYnVnZ2FibGVUeXBlLkphdmFTY3JpcHQpCiAgICAgICAg
ICAgICB0aGlzLl9yZXNvdXJjZXNDb250ZW50VHJlZU91dGxpbmUuZWxlbWVudC5jbGFzc0xpc3Qu
YWRkKFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLkhpZGVEaXNjbG9zdXJlQnV0
dG9uc1N0eWxlQ2xhc3NOYW1lKTsKLX07Ci0KLVdlYkluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQ
YW5lbC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5SZXNvdXJj
ZVNpZGViYXJQYW5lbCwKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAotICAgIHNob3dEZWZhdWx0
Q29udGVudFZpZXc6IGZ1bmN0aW9uKCkKKyAgICBzaG93RGVmYXVsdENvbnRlbnRWaWV3KCkKICAg
ICB7CiAgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZy
YW1lKSB7CiAgICAgICAgICAgICB0aGlzLnNob3dNYWluRnJhbWUoKTsKQEAgLTExMiw0MSArMTEy
LDQxIEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIHZhciBmaXJzdFRyZWVFbGVtZW50ID0gdGhpcy5fcmVzb3VyY2VzQ29udGVudFRyZWVP
dXRsaW5lLmNoaWxkcmVuWzBdOwogICAgICAgICBpZiAoZmlyc3RUcmVlRWxlbWVudCkKICAgICAg
ICAgICAgIGZpcnN0VHJlZUVsZW1lbnQucmV2ZWFsQW5kU2VsZWN0KCk7Ci0gICAgfSwKKyAgICB9
CiAKICAgICBnZXQgY29udGVudFRyZWVPdXRsaW5lVG9BdXRvUHJ1bmUoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX3NlYXJjaENvbnRlbnRUcmVlT3V0bGluZTsKLSAgICB9LAorICAgIH0K
IAotICAgIHNob3dNYWluRnJhbWU6IGZ1bmN0aW9uKG5vZGVUb1NlbGVjdCwgcHJldmVudEZvY3Vz
Q2hhbmdlKQorICAgIHNob3dNYWluRnJhbWUobm9kZVRvU2VsZWN0LCBwcmV2ZW50Rm9jdXNDaGFu
Z2UpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuY29udGVudEJyb3dzZXIuc2hvd0NvbnRl
bnRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QoV2ViSW5zcGVjdG9yLmZyYW1lUmVzb3VyY2VNYW5h
Z2VyLm1haW5GcmFtZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93TWFpbkZyYW1lRE9NVHJl
ZTogZnVuY3Rpb24obm9kZVRvU2VsZWN0LCBwcmV2ZW50Rm9jdXNDaGFuZ2UpCisgICAgc2hvd01h
aW5GcmFtZURPTVRyZWUobm9kZVRvU2VsZWN0LCBwcmV2ZW50Rm9jdXNDaGFuZ2UpCiAgICAgewog
ICAgICAgICB2YXIgY29udGVudFZpZXcgPSBXZWJJbnNwZWN0b3IuY29udGVudEJyb3dzZXIuY29u
dGVudFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdChXZWJJbnNwZWN0b3IuZnJhbWVSZXNvdXJjZU1h
bmFnZXIubWFpbkZyYW1lKTsKICAgICAgICAgY29udGVudFZpZXcuc2hvd0RPTVRyZWUobm9kZVRv
U2VsZWN0LCBwcmV2ZW50Rm9jdXNDaGFuZ2UpOwogICAgICAgICBXZWJJbnNwZWN0b3IuY29udGVu
dEJyb3dzZXIuc2hvd0NvbnRlbnRWaWV3KGNvbnRlbnRWaWV3KTsKLSAgICB9LAorICAgIH0KIAot
ICAgIHNob3dNYWluRnJhbWVTb3VyY2VDb2RlOiBmdW5jdGlvbigpCisgICAgc2hvd01haW5GcmFt
ZVNvdXJjZUNvZGUoKQogICAgIHsKICAgICAgICAgdmFyIGNvbnRlbnRWaWV3ID0gV2ViSW5zcGVj
dG9yLmNvbnRlbnRCcm93c2VyLmNvbnRlbnRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QoV2ViSW5z
cGVjdG9yLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZSk7CiAgICAgICAgIGNvbnRlbnRW
aWV3LnNob3dTb3VyY2VDb2RlKCk7CiAgICAgICAgIFdlYkluc3BlY3Rvci5jb250ZW50QnJvd3Nl
ci5zaG93Q29udGVudFZpZXcoY29udGVudFZpZXcpOwotICAgIH0sCisgICAgfQogCi0gICAgc2hv
d0NvbnRlbnRGbG93RE9NVHJlZTogZnVuY3Rpb24oY29udGVudEZsb3csIG5vZGVUb1NlbGVjdCwg
cHJldmVudEZvY3VzQ2hhbmdlKQorICAgIHNob3dDb250ZW50Rmxvd0RPTVRyZWUoY29udGVudEZs
b3csIG5vZGVUb1NlbGVjdCwgcHJldmVudEZvY3VzQ2hhbmdlKQogICAgIHsKICAgICAgICAgdmFy
IGNvbnRlbnRWaWV3ID0gV2ViSW5zcGVjdG9yLmNvbnRlbnRCcm93c2VyLmNvbnRlbnRWaWV3Rm9y
UmVwcmVzZW50ZWRPYmplY3QoY29udGVudEZsb3cpOwogICAgICAgICBpZiAobm9kZVRvU2VsZWN0
KQogICAgICAgICAgICAgY29udGVudFZpZXcuc2VsZWN0QW5kUmV2ZWFsRE9NTm9kZShub2RlVG9T
ZWxlY3QsIHByZXZlbnRGb2N1c0NoYW5nZSk7CiAgICAgICAgIFdlYkluc3BlY3Rvci5jb250ZW50
QnJvd3Nlci5zaG93Q29udGVudFZpZXcoY29udGVudFZpZXcpOwotICAgIH0sCisgICAgfQogCi0g
ICAgc2hvd1NvdXJjZUNvZGVGb3JGcmFtZTogZnVuY3Rpb24oZnJhbWVJZGVudGlmaWVyLCByZXZl
YWxBbmRTZWxlY3RUcmVlRWxlbWVudCkKKyAgICBzaG93U291cmNlQ29kZUZvckZyYW1lKGZyYW1l
SWRlbnRpZmllciwgcmV2ZWFsQW5kU2VsZWN0VHJlZUVsZW1lbnQpCiAgICAgewogICAgICAgICBk
ZWxldGUgdGhpcy5fZnJhbWVJZGVudGlmaWVyVG9TaG93U291cmNlQ29kZVdoZW5BdmFpbGFibGU7
CiAKQEAgLTE2OCw5ICsxNjgsOSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRlYmFyUGFuZWwu
cHJvdG90eXBlID0gewogCiAgICAgICAgIGlmIChyZXZlYWxBbmRTZWxlY3RUcmVlRWxlbWVudCkK
ICAgICAgICAgICAgIHRoaXMudHJlZUVsZW1lbnRGb3JSZXByZXNlbnRlZE9iamVjdChmcmFtZSku
cmV2ZWFsQW5kU2VsZWN0KHRydWUsIHRydWUsIHRydWUsIHRydWUpOwotICAgIH0sCisgICAgfQog
Ci0gICAgc2hvd1NvdXJjZUNvZGU6IGZ1bmN0aW9uKHNvdXJjZUNvZGUsIHBvc2l0aW9uVG9SZXZl
YWwsIHRleHRSYW5nZVRvU2VsZWN0LCBmb3JjZVVuZm9ybWF0dGVkKQorICAgIHNob3dTb3VyY2VD
b2RlKHNvdXJjZUNvZGUsIHBvc2l0aW9uVG9SZXZlYWwsIHRleHRSYW5nZVRvU2VsZWN0LCBmb3Jj
ZVVuZm9ybWF0dGVkKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoIXBvc2l0aW9uVG9S
ZXZlYWwgfHwgcG9zaXRpb25Ub1JldmVhbCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Tb3VyY2VD
b2RlUG9zaXRpb24sIHBvc2l0aW9uVG9SZXZlYWwpOwogICAgICAgICB2YXIgcmVwcmVzZW50ZWRP
YmplY3QgPSBzb3VyY2VDb2RlOwpAQCAtMTg2LDQxICsxODYsNDEgQEAgV2ViSW5zcGVjdG9yLlJl
c291cmNlU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB2YXIgY29va2llID0g
cG9zaXRpb25Ub1JldmVhbCA/IHtsaW5lTnVtYmVyOiBwb3NpdGlvblRvUmV2ZWFsLmxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlcjogcG9zaXRpb25Ub1JldmVhbC5jb2x1bW5OdW1iZXJ9IDoge307CiAg
ICAgICAgIFdlYkluc3BlY3Rvci5jb250ZW50QnJvd3Nlci5zaG93Q29udGVudFZpZXdGb3JSZXBy
ZXNlbnRlZE9iamVjdChyZXByZXNlbnRlZE9iamVjdCwgY29va2llKTsKLSAgICB9LAorICAgIH0K
IAotICAgIHNob3dTb3VyY2VDb2RlTG9jYXRpb246IGZ1bmN0aW9uKHNvdXJjZUNvZGVMb2NhdGlv
bikKKyAgICBzaG93U291cmNlQ29kZUxvY2F0aW9uKHNvdXJjZUNvZGVMb2NhdGlvbikKICAgICB7
CiAgICAgICAgIHRoaXMuc2hvd1NvdXJjZUNvZGUoc291cmNlQ29kZUxvY2F0aW9uLmRpc3BsYXlT
b3VyY2VDb2RlLCBzb3VyY2VDb2RlTG9jYXRpb24uZGlzcGxheVBvc2l0aW9uKCkpOwotICAgIH0s
CisgICAgfQogCi0gICAgc2hvd09yaWdpbmFsVW5mb3JtYXR0ZWRTb3VyY2VDb2RlTG9jYXRpb246
IGZ1bmN0aW9uKHNvdXJjZUNvZGVMb2NhdGlvbikKKyAgICBzaG93T3JpZ2luYWxVbmZvcm1hdHRl
ZFNvdXJjZUNvZGVMb2NhdGlvbihzb3VyY2VDb2RlTG9jYXRpb24pCiAgICAgewogICAgICAgICB0
aGlzLnNob3dTb3VyY2VDb2RlKHNvdXJjZUNvZGVMb2NhdGlvbi5zb3VyY2VDb2RlLCBzb3VyY2VD
b2RlTG9jYXRpb24ucG9zaXRpb24oKSwgdW5kZWZpbmVkLCB0cnVlKTsKLSAgICB9LAorICAgIH0K
IAotICAgIHNob3dPcmlnaW5hbE9yRm9ybWF0dGVkU291cmNlQ29kZUxvY2F0aW9uOiBmdW5jdGlv
bihzb3VyY2VDb2RlTG9jYXRpb24pCisgICAgc2hvd09yaWdpbmFsT3JGb3JtYXR0ZWRTb3VyY2VD
b2RlTG9jYXRpb24oc291cmNlQ29kZUxvY2F0aW9uKQogICAgIHsKICAgICAgICAgdGhpcy5zaG93
U291cmNlQ29kZShzb3VyY2VDb2RlTG9jYXRpb24uc291cmNlQ29kZSwgc291cmNlQ29kZUxvY2F0
aW9uLmZvcm1hdHRlZFBvc2l0aW9uKCkpOwotICAgIH0sCisgICAgfQogCi0gICAgc2hvd1NvdXJj
ZUNvZGVUZXh0UmFuZ2U6IGZ1bmN0aW9uKHNvdXJjZUNvZGVUZXh0UmFuZ2UpCisgICAgc2hvd1Nv
dXJjZUNvZGVUZXh0UmFuZ2Uoc291cmNlQ29kZVRleHRSYW5nZSkKICAgICB7CiAgICAgICAgIHZh
ciB0ZXh0UmFuZ2VUb1NlbGVjdCA9IHNvdXJjZUNvZGVUZXh0UmFuZ2UuZGlzcGxheVRleHRSYW5n
ZTsKICAgICAgICAgdGhpcy5zaG93U291cmNlQ29kZShzb3VyY2VDb2RlVGV4dFJhbmdlLmRpc3Bs
YXlTb3VyY2VDb2RlLCB0ZXh0UmFuZ2VUb1NlbGVjdC5zdGFydFBvc2l0aW9uKCksIHRleHRSYW5n
ZVRvU2VsZWN0KTsKLSAgICB9LAorICAgIH0KIAotICAgIHNob3dPcmlnaW5hbE9yRm9ybWF0dGVk
U291cmNlQ29kZVRleHRSYW5nZTogZnVuY3Rpb24oc291cmNlQ29kZVRleHRSYW5nZSkKKyAgICBz
aG93T3JpZ2luYWxPckZvcm1hdHRlZFNvdXJjZUNvZGVUZXh0UmFuZ2Uoc291cmNlQ29kZVRleHRS
YW5nZSkKICAgICB7CiAgICAgICAgIHZhciB0ZXh0UmFuZ2VUb1NlbGVjdCA9IHNvdXJjZUNvZGVU
ZXh0UmFuZ2UuZm9ybWF0dGVkVGV4dFJhbmdlOwogICAgICAgICB0aGlzLnNob3dTb3VyY2VDb2Rl
KHNvdXJjZUNvZGVUZXh0UmFuZ2Uuc291cmNlQ29kZSwgdGV4dFJhbmdlVG9TZWxlY3Quc3RhcnRQ
b3NpdGlvbigpLCB0ZXh0UmFuZ2VUb1NlbGVjdCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93
UmVzb3VyY2U6IGZ1bmN0aW9uKHJlc291cmNlKQorICAgIHNob3dSZXNvdXJjZShyZXNvdXJjZSkK
ICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5jb250ZW50QnJvd3Nlci5zaG93Q29udGVudFZp
ZXdGb3JSZXByZXNlbnRlZE9iamVjdChyZXNvdXJjZS5pc01haW5SZXNvdXJjZSgpID8gcmVzb3Vy
Y2UucGFyZW50RnJhbWUgOiByZXNvdXJjZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93UmVz
b3VyY2VSZXF1ZXN0OiBmdW5jdGlvbihyZXNvdXJjZSkKKyAgICBzaG93UmVzb3VyY2VSZXF1ZXN0
KHJlc291cmNlKQogICAgIHsKICAgICAgICAgdmFyIGNvbnRlbnRWaWV3ID0gV2ViSW5zcGVjdG9y
LmNvbnRlbnRCcm93c2VyLmNvbnRlbnRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QocmVzb3VyY2Uu
aXNNYWluUmVzb3VyY2UoKSA/IHJlc291cmNlLnBhcmVudEZyYW1lIDogcmVzb3VyY2UpOwogCkBA
IC0yMzYsOSArMjM2LDkgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVsLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgcmVzb3VyY2VDb250ZW50Vmlldy5zaG93UmVxdWVzdCgpOwogCiAg
ICAgICAgIFdlYkluc3BlY3Rvci5jb250ZW50QnJvd3Nlci5zaG93Q29udGVudFZpZXcoY29udGVu
dFZpZXcpOwotICAgIH0sCisgICAgfQogCi0gICAgdHJlZUVsZW1lbnRGb3JSZXByZXNlbnRlZE9i
amVjdDogZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCisgICAgdHJlZUVsZW1lbnRGb3JSZXBy
ZXNlbnRlZE9iamVjdChyZXByZXNlbnRlZE9iamVjdCkKICAgICB7CiAgICAgICAgIC8vIEEgY3Vz
dG9tIGltcGxlbWVudGF0aW9uIGlzIG5lZWRlZCBmb3IgdGhpcyBzaW5jZSB0aGUgZnJhbWVzIGFy
ZSBwb3B1bGF0ZWQgbGF6aWx5LgogCkBAIC0zMDUsOSArMzA1LDkgQEAgV2ViSW5zcGVjdG9yLlJl
c291cmNlU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fYW5vbnltb3Vz
U2NyaXB0c0ZvbGRlclRyZWVFbGVtZW50LmFwcGVuZENoaWxkKHNjcmlwdFRyZWVFbGVtZW50KTsK
IAogICAgICAgICByZXR1cm4gc2NyaXB0VHJlZUVsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBwZXJmb3JtU2VhcmNoOiBmdW5jdGlvbihzZWFyY2hUZXJtKQorICAgIHBlcmZvcm1TZWFyY2go
c2VhcmNoVGVybSkKICAgICB7CiAgICAgICAgIC8vIEJlZm9yZSBwZXJmb3JtaW5nIGEgbmV3IHNl
YXJjaCwgY2xlYXIgdGhlIG9sZCBzZWFyY2guCiAgICAgICAgIHRoaXMuX3NlYXJjaENvbnRlbnRU
cmVlT3V0bGluZS5yZW1vdmVDaGlsZHJlbigpOwpAQCAtNTE1LDM1ICs1MTUsMzUgQEAgV2ViSW5z
cGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgLy8gPGh0
dHBzOi8vd2Via2l0Lm9yZy9iLzEzMTI1Mj4gV2ViIEluc3BlY3RvcjogSlNDb250ZXh0IGluc3Bl
Y3Rpb24gUmVzb3VyY2Ugc2VhcmNoIGRvZXMgbm90IHdvcmsKICAgICAgICAgaWYgKCF3aW5kb3cu
RE9NQWdlbnQgJiYgIXdpbmRvdy5QYWdlQWdlbnQpCiAgICAgICAgICAgICB1cGRhdGVFbXB0eUNv
bnRlbnRQbGFjZWhvbGRlclNvb24uY2FsbCh0aGlzKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8v
IFByaXZhdGUKIAotICAgIF9zaG93UmVzb3VyY2VzQ29udGVudFRyZWVPdXRsaW5lOiBmdW5jdGlv
bigpCisgICAgX3Nob3dSZXNvdXJjZXNDb250ZW50VHJlZU91dGxpbmUoKQogICAgIHsKICAgICAg
ICAgdGhpcy5maWx0ZXJCYXIucGxhY2Vob2xkZXIgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZp
bHRlciBSZXNvdXJjZSBMaXN0Iik7CiAgICAgICAgIHRoaXMuY29udGVudFRyZWVPdXRsaW5lID0g
dGhpcy5fcmVzb3VyY2VzQ29udGVudFRyZWVPdXRsaW5lOwotICAgIH0sCisgICAgfQogCi0gICAg
X3Nob3dTZWFyY2hDb250ZW50VHJlZU91dGxpbmU6IGZ1bmN0aW9uKCkKKyAgICBfc2hvd1NlYXJj
aENvbnRlbnRUcmVlT3V0bGluZSgpCiAgICAgewogICAgICAgICB0aGlzLmZpbHRlckJhci5wbGFj
ZWhvbGRlciA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRmlsdGVyIFNlYXJjaCBSZXN1bHRzIik7
CiAgICAgICAgIHRoaXMuY29udGVudFRyZWVPdXRsaW5lID0gdGhpcy5fc2VhcmNoQ29udGVudFRy
ZWVPdXRsaW5lOwotICAgIH0sCisgICAgfQogCi0gICAgX3NlYXJjaEZpZWxkQ2hhbmdlZDogZnVu
Y3Rpb24oZXZlbnQpCisgICAgX3NlYXJjaEZpZWxkQ2hhbmdlZChldmVudCkKICAgICB7CiAgICAg
ICAgIHRoaXMucGVyZm9ybVNlYXJjaChldmVudC50YXJnZXQudmFsdWUpOwotICAgIH0sCisgICAg
fQogCi0gICAgX3NlYXJjaEZpZWxkSW5wdXQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9zZWFyY2hG
aWVsZElucHV0KGV2ZW50KQogICAgIHsKICAgICAgICAgLy8gSWYgdGhlIHNlYXJjaCBmaWVsZCBp
cyBjbGVhcmVkLCBpbW1lZGlhdGVseSBjbGVhciB0aGUgc2VhcmNoIHJlc3VsdHMgdHJlZSBvdXRs
aW5lLgogICAgICAgICBpZiAoIWV2ZW50LnRhcmdldC52YWx1ZS5sZW5ndGggJiYgdGhpcy5jb250
ZW50VHJlZU91dGxpbmUgPT09IHRoaXMuX3NlYXJjaENvbnRlbnRUcmVlT3V0bGluZSkKICAgICAg
ICAgICAgIHRoaXMucGVyZm9ybVNlYXJjaCgiIik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc2Vh
cmNoVHJlZUVsZW1lbnRGb3JSZXNvdXJjZTogZnVuY3Rpb24ocmVzb3VyY2UpCisgICAgX3NlYXJj
aFRyZWVFbGVtZW50Rm9yUmVzb3VyY2UocmVzb3VyY2UpCiAgICAgewogICAgICAgICB2YXIgcmVz
b3VyY2VUcmVlRWxlbWVudCA9IHRoaXMuX3NlYXJjaENvbnRlbnRUcmVlT3V0bGluZS5nZXRDYWNo
ZWRUcmVlRWxlbWVudChyZXNvdXJjZSk7CiAgICAgICAgIGlmICghcmVzb3VyY2VUcmVlRWxlbWVu
dCkgewpAQCAtNTU1LDkgKzU1NSw5IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5l
bC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gcmVzb3VyY2VUcmVl
RWxlbWVudDsKLSAgICB9LAorICAgIH0KIAotICAgIF9zZWFyY2hUcmVlRWxlbWVudEZvclNjcmlw
dDogZnVuY3Rpb24oc2NyaXB0KQorICAgIF9zZWFyY2hUcmVlRWxlbWVudEZvclNjcmlwdChzY3Jp
cHQpCiAgICAgewogICAgICAgICB2YXIgc2NyaXB0VHJlZUVsZW1lbnQgPSB0aGlzLl9zZWFyY2hD
b250ZW50VHJlZU91dGxpbmUuZ2V0Q2FjaGVkVHJlZUVsZW1lbnQoc2NyaXB0KTsKICAgICAgICAg
aWYgKCFzY3JpcHRUcmVlRWxlbWVudCkgewpAQCAtNTY5LDE2ICs1NjksMTYgQEAgV2ViSW5zcGVj
dG9yLlJlc291cmNlU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAg
ICAgIHJldHVybiBzY3JpcHRUcmVlRWxlbWVudDsKLSAgICB9LAorICAgIH0KIAotICAgIF9mb2N1
c1NlYXJjaEZpZWxkOiBmdW5jdGlvbihrZXlib2FyZFNob3J0Y3V0LCBldmVudCkKKyAgICBfZm9j
dXNTZWFyY2hGaWVsZChrZXlib2FyZFNob3J0Y3V0LCBldmVudCkKICAgICB7CiAgICAgICAgIHRo
aXMuc2hvdygpOwogCiAgICAgICAgIHRoaXMuX2lucHV0RWxlbWVudC5zZWxlY3QoKTsKLSAgICB9
LAorICAgIH0KIAotICAgIF9tYWluRnJhbWVEaWRDaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQorICAg
IF9tYWluRnJhbWVEaWRDaGFuZ2UoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fbWFp
bkZyYW1lVHJlZUVsZW1lbnQpIHsKICAgICAgICAgICAgIHRoaXMuX21haW5GcmFtZVRyZWVFbGVt
ZW50LmZyYW1lLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZyYW1lLkV2ZW50Lk1h
aW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcy5fbWFpbkZyYW1lTWFpblJlc291cmNlRGlkQ2hhbmdl
LCB0aGlzKTsKQEAgLTYxNiw5ICs2MTYsOSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRlYmFy
UGFuZWwucHJvdG90eXBlID0gewogCiAgICAgICAgIC8vIFNlYXJjaCBmb3Igd2hhdGV2ZXIgaXMg
aW4gdGhlIGlucHV0IGZpZWxkLiBUaGlzIHdhcyBwb3B1bGF0ZWQgd2l0aCB0aGUgbGFzdCB1c2Vk
IHNlYXJjaCB0ZXJtLgogICAgICAgICB0aGlzLnBlcmZvcm1TZWFyY2godGhpcy5faW5wdXRFbGVt
ZW50LnZhbHVlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9tYWluRnJhbWVNYWluUmVzb3VyY2VE
aWRDaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9tYWluRnJhbWVNYWluUmVzb3VyY2VEaWRD
aGFuZ2UoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgd2FzU2hvd2luZ1Jlc291cmNlU2lkZWJh
ciA9IHRoaXMuc2VsZWN0ZWQ7CiAgICAgICAgIHZhciBjdXJyZW50Q29udGVudFZpZXcgPSBXZWJJ
bnNwZWN0b3IuY29udGVudEJyb3dzZXIuY3VycmVudENvbnRlbnRWaWV3OwpAQCAtNjU1LDkgKzY1
NSw5IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIC8vIERlbGF5IHRoaXMgd29yayBiZWNhdXNlIG90aGVyIGxpc3RlbmVycyBvZiB0aGlz
IGV2ZW50IG1pZ2h0IG5vdCBoYXZlIGZpcmVkIHlldC4gU28gc2VsZWN0aW5nIHRoZSBtYWluIGZy
YW1lCiAgICAgICAgIC8vIGJlZm9yZSB0aG9zZSBsaXN0ZW5lcnMgZG8gdGhlaXIgd29yayBtaWdo
dCBjYXVzZSB0aGUgY29udGVudCBvZiB0aGUgb2xkIHBhZ2UgdG8gc2hvdyBpbnN0ZWFkIG9mIHRo
ZSBuZXcgcGFnZS4KICAgICAgICAgc2V0VGltZW91dChkZWxheWVkV29yay5iaW5kKHRoaXMpLCAw
KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9mcmFtZVdhc0FkZGVkOiBmdW5jdGlvbihldmVudCkK
KyAgICBfZnJhbWVXYXNBZGRlZChldmVudCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fZnJh
bWVJZGVudGlmaWVyVG9TaG93U291cmNlQ29kZVdoZW5BdmFpbGFibGUpCiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC02NjcsOSArNjY3LDkgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBh
bmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLnNo
b3dTb3VyY2VDb2RlRm9yRnJhbWUoZnJhbWUuaWQsIHRydWUpOwotICAgIH0sCisgICAgfQogCi0g
ICAgX3NjcmlwdFdhc0FkZGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfc2NyaXB0V2FzQWRkZWQo
ZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgc2NyaXB0ID0gZXZlbnQuZGF0YS5zY3JpcHQ7CiAK
QEAgLTcxNSw5ICs3MTUsOSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRlYmFyUGFuZWwucHJv
dG90eXBlID0gewogCiAgICAgICAgICAgICBwYXJlbnRGb2xkZXJUcmVlRWxlbWVudC5hcHBlbmRD
aGlsZChzY3JpcHRUcmVlRWxlbWVudCk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAg
IF9zY3JpcHRzQ2xlYXJlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3NjcmlwdHNDbGVhcmVkKGV2
ZW50KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2V4dGVuc2lvblNjcmlwdHNGb2xkZXJUcmVl
RWxlbWVudCkgewogICAgICAgICAgICAgaWYgKHRoaXMuX2V4dGVuc2lvblNjcmlwdHNGb2xkZXJU
cmVlRWxlbWVudC5wYXJlbnQpCkBAIC03MzYsOSArNzM2LDkgQEAgV2ViSW5zcGVjdG9yLlJlc291
cmNlU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICB0aGlzLl9hbm9u
eW1vdXNTY3JpcHRzRm9sZGVyVHJlZUVsZW1lbnQucGFyZW50LnJlbW92ZUNoaWxkKHRoaXMuX2Fu
b255bW91c1NjcmlwdHNGb2xkZXJUcmVlRWxlbWVudCk7CiAgICAgICAgICAgICB0aGlzLl9hbm9u
eW1vdXNTY3JpcHRzRm9sZGVyVHJlZUVsZW1lbnQgPSBudWxsOwogICAgICAgICB9Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfc2NyaXB0c1RvU2VhcmNoOiBmdW5jdGlvbihldmVudCkKKyAgICBfc2Ny
aXB0c1RvU2VhcmNoKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIG5vblJlc291cmNlU2NyaXB0
cyA9IFtdOwogCkBAIC03NjMsOSArNzYzLDkgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJh
clBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBub25SZXNv
dXJjZVNjcmlwdHM7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdHJlZUVsZW1lbnRTZWxlY3RlZDog
ZnVuY3Rpb24odHJlZUVsZW1lbnQsIHNlbGVjdGVkQnlVc2VyKQorICAgIF90cmVlRWxlbWVudFNl
bGVjdGVkKHRyZWVFbGVtZW50LCBzZWxlY3RlZEJ5VXNlcikKICAgICB7CiAgICAgICAgIGlmICh0
cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Gb2xkZXJUcmVlRWxlbWVudCB8fCB0
cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5EYXRhYmFzZUhvc3RUcmVlRWxlbWVu
dCB8fAogICAgICAgICAgICAgdHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuSW5k
ZXhlZERhdGFiYXNlSG9zdFRyZWVFbGVtZW50IHx8IHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV2Vi
SW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZVRyZWVFbGVtZW50KQpAQCAtNzg4LDE0ICs3ODgsMTQg
QEAgV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgIHRoaXMuc2hvd01haW5GcmFtZURPTVRyZWUodHJlZUVsZW1lbnQucmVwcmVzZW50ZWRP
YmplY3QuZG9tTm9kZSwgdHJ1ZSk7CiAgICAgICAgIGVsc2UgaWYgKHRyZWVFbGVtZW50LnJlcHJl
c2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVTZWFyY2hNYXRj
aE9iamVjdCkKICAgICAgICAgICAgIHRoaXMuc2hvd09yaWdpbmFsT3JGb3JtYXR0ZWRTb3VyY2VD
b2RlVGV4dFJhbmdlKHRyZWVFbGVtZW50LnJlcHJlc2VudGVkT2JqZWN0LnNvdXJjZUNvZGVUZXh0
UmFuZ2UpOwotICAgIH0sCisgICAgfQogCi0gICAgX2RvbU5vZGVXYXNJbnNwZWN0ZWQ6IGZ1bmN0
aW9uKGV2ZW50KQorICAgIF9kb21Ob2RlV2FzSW5zcGVjdGVkKGV2ZW50KQogICAgIHsKICAgICAg
ICAgdGhpcy5zaG93TWFpbkZyYW1lRE9NVHJlZShldmVudC5kYXRhLm5vZGUpOwotICAgIH0sCisg
ICAgfQogCi0gICAgX2RvbVN0b3JhZ2VPYmplY3RXYXNBZGRlZDogZnVuY3Rpb24oZXZlbnQpCisg
ICAgX2RvbVN0b3JhZ2VPYmplY3RXYXNBZGRlZChldmVudCkKICAgICB7CiAgICAgICAgIHZhciBk
b21TdG9yYWdlID0gZXZlbnQuZGF0YS5kb21TdG9yYWdlOwogICAgICAgICB2YXIgc3RvcmFnZUVs
ZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VUcmVlRWxlbWVudChkb21TdG9yYWdl
KTsKQEAgLTgwNCwxNiArODA0LDE2IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5l
bC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9sb2NhbFN0b3JhZ2VSb290VHJlZUVs
ZW1lbnQgPSB0aGlzLl9hZGRTdG9yYWdlQ2hpbGQoc3RvcmFnZUVsZW1lbnQsIHRoaXMuX2xvY2Fs
U3RvcmFnZVJvb3RUcmVlRWxlbWVudCwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJMb2NhbCBTdG9y
YWdlIikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB0aGlzLl9zZXNzaW9uU3RvcmFnZVJv
b3RUcmVlRWxlbWVudCA9IHRoaXMuX2FkZFN0b3JhZ2VDaGlsZChzdG9yYWdlRWxlbWVudCwgdGhp
cy5fc2Vzc2lvblN0b3JhZ2VSb290VHJlZUVsZW1lbnQsIFdlYkluc3BlY3Rvci5VSVN0cmluZygi
U2Vzc2lvbiBTdG9yYWdlIikpOwotICAgIH0sCisgICAgfQogCi0gICAgX2RvbVN0b3JhZ2VPYmpl
Y3RXYXNJbnNwZWN0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9kb21TdG9yYWdlT2JqZWN0V2Fz
SW5zcGVjdGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIGRvbVN0b3JhZ2UgPSBldmVudC5k
YXRhLmRvbVN0b3JhZ2U7CiAgICAgICAgIHZhciB0cmVlRWxlbWVudCA9IHRoaXMudHJlZUVsZW1l
bnRGb3JSZXByZXNlbnRlZE9iamVjdChkb21TdG9yYWdlKTsKICAgICAgICAgdHJlZUVsZW1lbnQu
cmV2ZWFsQW5kU2VsZWN0KHRydWUpOwotICAgIH0sCisgICAgfQogCi0gICAgX2RhdGFiYXNlV2Fz
QWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9kYXRhYmFzZVdhc0FkZGVkKGV2ZW50KQogICAg
IHsKICAgICAgICAgdmFyIGRhdGFiYXNlID0gZXZlbnQuZGF0YS5kYXRhYmFzZTsKIApAQCAtODI2
LDE2ICs4MjYsMTYgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVsLnByb3RvdHlw
ZSA9IHsKIAogICAgICAgICB2YXIgZGF0YWJhc2VFbGVtZW50ID0gbmV3IFdlYkluc3BlY3Rvci5E
YXRhYmFzZVRyZWVFbGVtZW50KGRhdGFiYXNlKTsKICAgICAgICAgdGhpcy5fZGF0YWJhc2VIb3N0
VHJlZUVsZW1lbnRNYXBbZGF0YWJhc2UuaG9zdF0uYXBwZW5kQ2hpbGQoZGF0YWJhc2VFbGVtZW50
KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9kYXRhYmFzZVdhc0luc3BlY3RlZDogZnVuY3Rpb24o
ZXZlbnQpCisgICAgX2RhdGFiYXNlV2FzSW5zcGVjdGVkKGV2ZW50KQogICAgIHsKICAgICAgICAg
dmFyIGRhdGFiYXNlID0gZXZlbnQuZGF0YS5kYXRhYmFzZTsKICAgICAgICAgdmFyIHRyZWVFbGVt
ZW50ID0gdGhpcy50cmVlRWxlbWVudEZvclJlcHJlc2VudGVkT2JqZWN0KGRhdGFiYXNlKTsKICAg
ICAgICAgdHJlZUVsZW1lbnQucmV2ZWFsQW5kU2VsZWN0KHRydWUpOwotICAgIH0sCisgICAgfQog
Ci0gICAgX2luZGV4ZWREYXRhYmFzZVdhc0FkZGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfaW5k
ZXhlZERhdGFiYXNlV2FzQWRkZWQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgaW5kZXhlZERh
dGFiYXNlID0gZXZlbnQuZGF0YS5pbmRleGVkRGF0YWJhc2U7CiAKQEAgLTg0OCwxNyArODQ4LDE3
IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAg
ICAgICAgdmFyIGluZGV4ZWREYXRhYmFzZUVsZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLkluZGV4
ZWREYXRhYmFzZVRyZWVFbGVtZW50KGluZGV4ZWREYXRhYmFzZSk7CiAgICAgICAgIHRoaXMuX2lu
ZGV4ZWREYXRhYmFzZUhvc3RUcmVlRWxlbWVudE1hcFtpbmRleGVkRGF0YWJhc2UuaG9zdF0uYXBw
ZW5kQ2hpbGQoaW5kZXhlZERhdGFiYXNlRWxlbWVudCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBf
Y29va2llU3RvcmFnZU9iamVjdFdhc0FkZGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfY29va2ll
U3RvcmFnZU9iamVjdFdhc0FkZGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3Nl
cnQoZXZlbnQuZGF0YS5jb29raWVTdG9yYWdlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNvb2tp
ZVN0b3JhZ2VPYmplY3QpOwogCiAgICAgICAgIHZhciBjb29raWVFbGVtZW50ID0gbmV3IFdlYklu
c3BlY3Rvci5Db29raWVTdG9yYWdlVHJlZUVsZW1lbnQoZXZlbnQuZGF0YS5jb29raWVTdG9yYWdl
KTsKICAgICAgICAgdGhpcy5fY29va2llU3RvcmFnZVJvb3RUcmVlRWxlbWVudCA9IHRoaXMuX2Fk
ZFN0b3JhZ2VDaGlsZChjb29raWVFbGVtZW50LCB0aGlzLl9jb29raWVTdG9yYWdlUm9vdFRyZWVF
bGVtZW50LCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvb2tpZXMiKSk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfZnJhbWVNYW5pZmVzdEFkZGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfZnJhbWVN
YW5pZmVzdEFkZGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIGZyYW1lTWFuaWZlc3QgPSBl
dmVudC5kYXRhLmZyYW1lTWFuaWZlc3Q7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGZyYW1lTWFu
aWZlc3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1lKTsKQEAg
LTg3MiwxNCArODcyLDE0IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbC5wcm90
b3R5cGUgPSB7CiAKICAgICAgICAgdmFyIGZyYW1lQ2FjaGVFbGVtZW50ID0gbmV3IFdlYkluc3Bl
Y3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWVUcmVlRWxlbWVudChmcmFtZU1hbmlmZXN0KTsKICAg
ICAgICAgdGhpcy5fYXBwbGljYXRpb25DYWNoZVVSTFRyZWVFbGVtZW50TWFwW21hbmlmZXN0VVJM
XS5hcHBlbmRDaGlsZChmcmFtZUNhY2hlRWxlbWVudCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBf
ZnJhbWVNYW5pZmVzdFJlbW92ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9mcmFtZU1hbmlmZXN0
UmVtb3ZlZChldmVudCkKICAgICB7CiAgICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMu
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY29tcGFyZVRyZWVFbGVtZW50czogZnVuY3Rpb24oYSwg
YikKKyAgICBfY29tcGFyZVRyZWVFbGVtZW50cyhhLCBiKQogICAgIHsKICAgICAgICAgLy8gQWx3
YXlzIHNvcnQgdGhlIG1haW4gZnJhbWUgZWxlbWVudCBmaXJzdC4KICAgICAgICAgaWYgKGEgaW5z
dGFuY2VvZiBXZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudCkKQEAgLTg5MSw5ICs4OTEsOSBA
QCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAg
ICBjb25zb2xlLmFzc2VydChiLm1haW5UaXRsZSk7CiAKICAgICAgICAgcmV0dXJuIChhLm1haW5U
aXRsZSB8fCAiIikubG9jYWxlQ29tcGFyZShiLm1haW5UaXRsZSB8fCAiIik7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfYWRkU3RvcmFnZUNoaWxkOiBmdW5jdGlvbihjaGlsZEVsZW1lbnQsIHBhcmVu
dEVsZW1lbnQsIGZvbGRlck5hbWUpCisgICAgX2FkZFN0b3JhZ2VDaGlsZChjaGlsZEVsZW1lbnQs
IHBhcmVudEVsZW1lbnQsIGZvbGRlck5hbWUpCiAgICAgewogICAgICAgICBpZiAoIXBhcmVudEVs
ZW1lbnQpIHsKICAgICAgICAgICAgIGNoaWxkRWxlbWVudC5mbGF0dGVuZWQgPSB0cnVlOwpAQCAt
OTIzLDkgKzkyMyw5IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbC5wcm90b3R5
cGUgPSB7CiAgICAgICAgIHBhcmVudEVsZW1lbnQuaW5zZXJ0Q2hpbGQoY2hpbGRFbGVtZW50LCBp
bnNlcnRpb25JbmRleEZvck9iamVjdEluTGlzdFNvcnRlZEJ5RnVuY3Rpb24oY2hpbGRFbGVtZW50
LCBwYXJlbnRFbGVtZW50LmNoaWxkcmVuLCB0aGlzLl9jb21wYXJlVHJlZUVsZW1lbnRzKSk7CiAK
ICAgICAgICAgcmV0dXJuIHBhcmVudEVsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc3Rv
cmFnZUNsZWFyZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9zdG9yYWdlQ2xlYXJlZChldmVudCkK
ICAgICB7CiAgICAgICAgIC8vIENsb3NlIGFsbCBET00gYW5kIGNvb2tpZSBzdG9yYWdlIGNvbnRl
bnQgdmlld3Mgc2luY2UgdGhlIG1haW4gZnJhbWUgaGFzIG5hdmlnYXRlZCBhbmQgYWxsIHN0b3Jh
Z2VzIGFyZSBjbGVhcmVkLgogICAgICAgICBXZWJJbnNwZWN0b3IuY29udGVudEJyb3dzZXIuY29u
dGVudFZpZXdDb250YWluZXIuY2xvc2VBbGxDb250ZW50Vmlld3NPZlByb3RvdHlwZShXZWJJbnNw
ZWN0b3IuQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3KTsKQEAgLTk2MSwxMyArOTYxLDExIEBAIFdl
Ykluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRo
aXMuX2Nvb2tpZVN0b3JhZ2VSb290VHJlZUVsZW1lbnQgPSBudWxsOwogICAgICAgICB0aGlzLl9h
cHBsaWNhdGlvbkNhY2hlUm9vdFRyZWVFbGVtZW50ID0gbnVsbDsKICAgICAgICAgdGhpcy5fYXBw
bGljYXRpb25DYWNoZVVSTFRyZWVFbGVtZW50TWFwID0ge307Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfZXh0cmFEb21haW5zQWN0aXZhdGVkOiBmdW5jdGlvbigpCisgICAgX2V4dHJhRG9tYWluc0Fj
dGl2YXRlZCgpCiAgICAgewogICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLmRlYnVnZ2FibGVUeXBl
ID09PSBXZWJJbnNwZWN0b3IuRGVidWdnYWJsZVR5cGUuSmF2YVNjcmlwdCkKICAgICAgICAgICAg
IHRoaXMuX3Jlc291cmNlc0NvbnRlbnRUcmVlT3V0bGluZS5lbGVtZW50LmNsYXNzTGlzdC5yZW1v
dmUoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwuSGlkZURpc2Nsb3N1cmVCdXR0
b25zU3R5bGVDbGFzc05hbWUpOwogICAgIH0KIH07Ci0KLVdlYkluc3BlY3Rvci5SZXNvdXJjZVNp
ZGViYXJQYW5lbC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25T
aWRlYmFyUGFuZWwucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvU2NvcGVDaGFpbkRldGFpbHNTaWRlYmFyUGFuZWwuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TY29wZUNoYWluRGV0YWls
c1NpZGViYXJQYW5lbC5qcwppbmRleCBjMmNiYzAxLi4wZDBiMzM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TY29wZUNoYWluRGV0YWlsc1Np
ZGViYXJQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9TY29wZUNoYWluRGV0YWlsc1NpZGViYXJQYW5lbC5qcwpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMjEgKzIzLDE3IEBACiAg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlNj
b3BlQ2hhaW5EZXRhaWxzU2lkZWJhclBhbmVsID0gZnVuY3Rpb24oKQorV2ViSW5zcGVjdG9yLlNj
b3BlQ2hhaW5EZXRhaWxzU2lkZWJhclBhbmVsID0gY2xhc3MgU2NvcGVDaGFpbkRldGFpbHNTaWRl
YmFyUGFuZWwgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NpZGViYXJQYW5lbAogewotICAg
IFdlYkluc3BlY3Rvci5EZXRhaWxzU2lkZWJhclBhbmVsLmNhbGwodGhpcywgInNjb3BlLWNoYWlu
IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTY29wZSBDaGFpbiIpLCBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIlNjb3BlIENoYWluIiksICJJbWFnZXMvTmF2aWdhdGlvbkl0ZW1WYXJpYWJsZS5zdmci
LCAiNSIpOworICAgIGNvbnN0cnVjdG9yKCkKKyAgICB7CisgICAgICAgIHN1cGVyKCJzY29wZS1j
aGFpbiIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2NvcGUgQ2hhaW4iKSwgV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJTY29wZSBDaGFpbiIpLCAiSW1hZ2VzL05hdmlnYXRpb25JdGVtVmFyaWFibGUu
c3ZnIiwgIjUiKTsKIAogICAgICAgICB0aGlzLl9jYWxsRnJhbWUgPSBudWxsOwogCiAgICAgICAg
IC8vIFVwZGF0ZSBvbiBjb25zb2xlIHByb21wdCBldmFsIGFzIG9iamVjdHMgaW4gdGhlIHNjb3Bl
IGNoYWluIG1heSBoYXZlIGNoYW5nZWQuCiAgICAgICAgIFdlYkluc3BlY3Rvci5ydW50aW1lTWFu
YWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5SdW50aW1lTWFuYWdlci5FdmVudC5E
aWRFdmFsdWF0ZSwgdGhpcy5uZWVkc1JlZnJlc2gsIHRoaXMpOwotfTsKLQotV2ViSW5zcGVjdG9y
LlNjb3BlQ2hhaW5EZXRhaWxzU2lkZWJhclBhbmVsLmF1dG9FeHBhbmRQcm9wZXJ0aWVzID0gbmV3
IFNldDsKLQotV2ViSW5zcGVjdG9yLlNjb3BlQ2hhaW5EZXRhaWxzU2lkZWJhclBhbmVsLnByb3Rv
dHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlNjb3BlQ2hhaW5EZXRhaWxz
U2lkZWJhclBhbmVsLAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLkRldGFpbHNTaWRlYmFy
UGFuZWwucHJvdG90eXBlLAorICAgIH0KIAogICAgIC8vIFB1YmxpYwogCkBAIC02MCwxMiArNTYs
MTIgQEAgV2ViSW5zcGVjdG9yLlNjb3BlQ2hhaW5EZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgdGhpcy5jYWxsRnJhbWUgPSBjYWxsRnJhbWVUb0luc3BlY3Q7CiAKICAg
ICAgICAgcmV0dXJuICEhdGhpcy5jYWxsRnJhbWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQg
Y2FsbEZyYW1lKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9jYWxsRnJhbWU7Ci0gICAg
fSwKKyAgICB9CiAKICAgICBzZXQgY2FsbEZyYW1lKGNhbGxGcmFtZSkKICAgICB7CkBAIC03NSw3
ICs3MSw3IEBAIFdlYkluc3BlY3Rvci5TY29wZUNoYWluRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90
b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2NhbGxGcmFtZSA9IGNhbGxGcmFtZTsKIAogICAgICAg
ICB0aGlzLm5lZWRzUmVmcmVzaCgpOwotICAgIH0sCisgICAgfQogCiAgICAgcmVmcmVzaCgpCiAg
ICAgewpAQCAtMTgxLDEzICsxNzcsMTMgQEAgV2ViSW5zcGVjdG9yLlNjb3BlQ2hhaW5EZXRhaWxz
U2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgLy8gV2UgbmVlZCBhIHRpbWVvdXQg
aW4gcGxhY2UgaW4gY2FzZSB0aGVyZSBhcmUgbG9uZyBydW5uaW5nLCBwZW5kaW5nIGJhY2tlbmQg
ZGlzcGF0Y2hlcy4gVGhpcyBjYW4gaGFwcGVuCiAgICAgICAgIC8vIGlmIHRoZSBkZWJ1Z2dlciBp
cyBwYXVzZWQgaW4gY29kZSB0aGF0IHdhcyBleGVjdXRlZCBmcm9tIHRoZSBjb25zb2xlLiBUaGUg
Y29uc29sZSB3aWxsIGJlIHdhaXRpbmcgZm9yCiAgICAgICAgIC8vIHRoZSByZXN1bHQgb2YgdGhl
IGV4ZWN1dGlvbiBhbmQgd2l0aG91dCBhIHRpbWVvdXQgd2Ugd291bGQgbmV2ZXIgdXBkYXRlIHRo
ZSBzY29wZSB2YXJpYWJsZXMuCi0gICAgICAgIHZhciBkZWxheSA9IFdlYkluc3BlY3Rvci5TY29w
ZUNoYWluRGV0YWlsc1NpZGViYXJQYW5lbC5hdXRvRXhwYW5kUHJvcGVydGllcy5zaXplID09PSAw
ID8gNTAgOiAyNTA7CisgICAgICAgIHZhciBkZWxheSA9IFdlYkluc3BlY3Rvci5TY29wZUNoYWlu
RGV0YWlsc1NpZGViYXJQYW5lbC5fYXV0b0V4cGFuZFByb3BlcnRpZXMuc2l6ZSA9PT0gMCA/IDUw
IDogMjUwOwogICAgICAgICB2YXIgdGltZW91dCA9IHNldFRpbWVvdXQoZGVsYXllZFdvcmsuYmlu
ZCh0aGlzKSwgZGVsYXkpOwogCiAgICAgICAgIC8vIFNpbmNlIE9iamVjdFRyZWVWaWV3IHBvcHVs
YXRlcyBhc3luY2hyb25vdXNseSwgd2Ugd2FudCB0byB3YWl0IHRvIHJlcGxhY2UgdGhlIGV4aXN0
aW5nIGNvbnRlbnQKICAgICAgICAgLy8gdW50aWwgYWZ0ZXIgYWxsIHRoZSBwZW5kaW5nIGFzeW5j
aHJvbm91cyByZXF1ZXN0cyBhcmUgY29tcGxldGVkLiBUaGlzIHByZXZlbnRzIHNldmVyZSBmbGFz
aGluZyB3aGlsZSBzdGVwcGluZy4KICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5ydW5BZnRlclBl
bmRpbmdEaXNwYXRjaGVzKGRlbGF5ZWRXb3JrLmJpbmQodGhpcykpOwotICAgIH0sCisgICAgfQog
CiAgICAgX3Byb3BlcnR5UGF0aElkZW50aWZpZXJGb3JUcmVlRWxlbWVudChpZGVudGlmaWVyLCBv
YmplY3RQcm9wZXJ0eVRyZWVFbGVtZW50KQogICAgIHsKQEAgLTE5OSw3ICsxOTUsNyBAQCBXZWJJ
bnNwZWN0b3IuU2NvcGVDaGFpbkRldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAg
ICAgICAgICAgcmV0dXJuIG51bGw7CiAKICAgICAgICAgcmV0dXJuIGlkZW50aWZpZXIgKyAiLSIg
KyBwcm9wZXJ0eVBhdGguZnVsbFBhdGg7Ci0gICAgfSwKKyAgICB9CiAKICAgICBfb2JqZWN0VHJl
ZUFkZEhhbmRsZXIoaWRlbnRpZmllciwgdHJlZUVsZW1lbnQpCiAgICAgewpAQCAtMjA3LDkgKzIw
Myw5IEBAIFdlYkluc3BlY3Rvci5TY29wZUNoYWluRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5
cGUgPSB7CiAgICAgICAgIGlmICghcHJvcGVydHlQYXRoSWRlbnRpZmllcikKICAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLlNjb3BlQ2hhaW5EZXRhaWxzU2lk
ZWJhclBhbmVsLmF1dG9FeHBhbmRQcm9wZXJ0aWVzLmhhcyhwcm9wZXJ0eVBhdGhJZGVudGlmaWVy
KSkKKyAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5TY29wZUNoYWluRGV0YWlsc1NpZGViYXJQYW5l
bC5fYXV0b0V4cGFuZFByb3BlcnRpZXMuaGFzKHByb3BlcnR5UGF0aElkZW50aWZpZXIpKQogICAg
ICAgICAgICAgdHJlZUVsZW1lbnQuZXhwYW5kKCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBfb2Jq
ZWN0VHJlZUV4cGFuZEhhbmRsZXIoaWRlbnRpZmllciwgdHJlZUVsZW1lbnQpCiAgICAgewpAQCAt
MjE3LDggKzIxMyw4IEBAIFdlYkluc3BlY3Rvci5TY29wZUNoYWluRGV0YWlsc1NpZGViYXJQYW5l
bC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICghcHJvcGVydHlQYXRoSWRlbnRpZmllcikKICAg
ICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBXZWJJbnNwZWN0b3IuU2NvcGVDaGFpbkRldGFp
bHNTaWRlYmFyUGFuZWwuYXV0b0V4cGFuZFByb3BlcnRpZXMuYWRkKHByb3BlcnR5UGF0aElkZW50
aWZpZXIpOwotICAgIH0sCisgICAgICAgIFdlYkluc3BlY3Rvci5TY29wZUNoYWluRGV0YWlsc1Np
ZGViYXJQYW5lbC5fYXV0b0V4cGFuZFByb3BlcnRpZXMuYWRkKHByb3BlcnR5UGF0aElkZW50aWZp
ZXIpOworICAgIH0KIAogICAgIF9vYmplY3RUcmVlQ29sbGFwc2VIYW5kbGVyKGlkZW50aWZpZXIs
IHRyZWVFbGVtZW50KQogICAgIHsKQEAgLTIyNiw2ICsyMjIsOCBAQCBXZWJJbnNwZWN0b3IuU2Nv
cGVDaGFpbkRldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICBpZiAoIXBy
b3BlcnR5UGF0aElkZW50aWZpZXIpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgV2Vi
SW5zcGVjdG9yLlNjb3BlQ2hhaW5EZXRhaWxzU2lkZWJhclBhbmVsLmF1dG9FeHBhbmRQcm9wZXJ0
aWVzLmRlbGV0ZShwcm9wZXJ0eVBhdGhJZGVudGlmaWVyKTsKKyAgICAgICAgV2ViSW5zcGVjdG9y
LlNjb3BlQ2hhaW5EZXRhaWxzU2lkZWJhclBhbmVsLl9hdXRvRXhwYW5kUHJvcGVydGllcy5kZWxl
dGUocHJvcGVydHlQYXRoSWRlbnRpZmllcik7CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLlNj
b3BlQ2hhaW5EZXRhaWxzU2lkZWJhclBhbmVsLl9hdXRvRXhwYW5kUHJvcGVydGllcyA9IG5ldyBT
ZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9TaWRlYmFyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
U2lkZWJhci5qcwppbmRleCBiODJiYzdjLi42YzIxNmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TaWRlYmFyLmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NpZGViYXIuanMKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDE1ICsyMywx
NyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3Bl
Y3Rvci5TaWRlYmFyID0gZnVuY3Rpb24oZWxlbWVudCwgc2lkZSwgc2lkZWJhclBhbmVscywgcm9s
ZSwgbGFiZWwpIHsKLSAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9y
Lk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KLSAgICAvLyBXZWJJbnNwZWN0b3Iu
T2JqZWN0LmNhbGwodGhpcyk7CitXZWJJbnNwZWN0b3IuU2lkZWJhciA9IGNsYXNzIFNpZGViYXIg
ZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0Cit7CisgICAgY29uc3RydWN0b3IoZWxlbWVudCwg
c2lkZSwgc2lkZWJhclBhbmVscywgcm9sZSwgbGFiZWwpCisgICAgeworICAgICAgICBzdXBlcigp
OwogCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFzaWRlIHx8IHNpZGUgPT09IFdlYkluc3BlY3Rv
ci5TaWRlYmFyLlNpZGVzLkxlZnQgfHwgc2lkZSA9PT0gV2ViSW5zcGVjdG9yLlNpZGViYXIuU2lk
ZXMuUmlnaHQpOwogICAgICAgICB0aGlzLl9zaWRlID0gc2lkZSB8fCBXZWJJbnNwZWN0b3IuU2lk
ZWJhci5TaWRlcy5MZWZ0OwogCiAgICAgICAgIHRoaXMuX2VsZW1lbnQgPSBlbGVtZW50IHx8IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0
LmFkZChXZWJJbnNwZWN0b3IuU2lkZWJhci5TdHlsZUNsYXNzTmFtZSk7CisgICAgICAgIHRoaXMu
X2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgic2lkZWJhciIpOwogICAgICAgICB0aGlzLl9lbGVtZW50
LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlNpZGViYXIuQ29sbGFwc2VkU3R5bGVDbGFzc05h
bWUpOwogICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQodGhpcy5fc2lkZSk7CiAK
QEAgLTQ4LDMxICs1MCwxMSBAQCBXZWJJbnNwZWN0b3IuU2lkZWJhciA9IGZ1bmN0aW9uKGVsZW1l
bnQsIHNpZGUsIHNpZGViYXJQYW5lbHMsIHJvbGUsIGxhYmVsKSB7CiAgICAgICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IHNpZGViYXJQYW5lbHMubGVuZ3RoOyArK2kpCiAgICAgICAgICAgICAg
ICAgdGhpcy5hZGRTaWRlYmFyUGFuZWwoc2lkZWJhclBhbmVsc1tpXSk7CiAgICAgICAgIH0KLX07
Ci0KLS8vIEZJWE1FOiBNb3ZlIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcyBhbmQg
d2UgY2FuIHJlbW92ZSB0aGlzLgotV2ViSW5zcGVjdG9yLk9iamVjdC5kZXByZWNhdGVkQWRkQ29u
c3RydWN0b3JGdW5jdGlvbnMoV2ViSW5zcGVjdG9yLlNpZGViYXIpOwotCi1XZWJJbnNwZWN0b3Iu
U2lkZWJhci5TdHlsZUNsYXNzTmFtZSA9ICJzaWRlYmFyIjsKLVdlYkluc3BlY3Rvci5TaWRlYmFy
LkNvbGxhcHNlZFN0eWxlQ2xhc3NOYW1lID0gImNvbGxhcHNlZCI7Ci1XZWJJbnNwZWN0b3IuU2lk
ZWJhci5BYnNvbHV0ZU1pbmltdW1XaWR0aCA9IDIwMDsKLQotV2ViSW5zcGVjdG9yLlNpZGViYXIu
U2lkZXMgPSB7fTsKLVdlYkluc3BlY3Rvci5TaWRlYmFyLlNpZGVzLlJpZ2h0ID0gInJpZ2h0IjsK
LVdlYkluc3BlY3Rvci5TaWRlYmFyLlNpZGVzLkxlZnQgPSAibGVmdCI7Ci0KLVdlYkluc3BlY3Rv
ci5TaWRlYmFyLkV2ZW50ID0gewotICAgIFNpZGViYXJQYW5lbFNlbGVjdGVkOiAic2lkZWJhci1z
aWRlYmFyLXBhbmVsLXNlbGVjdGVkIiwKLSAgICBDb2xsYXBzZWRTdGF0ZURpZENoYW5nZTogInNp
ZGViYXItc2lkZWJhci1jb2xsYXBzZWQtc3RhdGUtZGlkLWNoYW5nZSIsCi0gICAgV2lkdGhEaWRD
aGFuZ2U6ICJzaWRlYmFyLXdpZHRoLWRpZC1jaGFuZ2UiLAotfTsKLQotV2ViSW5zcGVjdG9yLlNp
ZGViYXIucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuU2lkZWJh
ciwKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAotICAgIGFkZFNpZGViYXJQYW5lbDogZnVuY3Rp
b24oc2lkZWJhclBhbmVsKQorICAgIGFkZFNpZGViYXJQYW5lbChzaWRlYmFyUGFuZWwpCiAgICAg
ewogICAgICAgICBjb25zb2xlLmFzc2VydChzaWRlYmFyUGFuZWwgaW5zdGFuY2VvZiBXZWJJbnNw
ZWN0b3IuU2lkZWJhclBhbmVsKTsKICAgICAgICAgaWYgKCEoc2lkZWJhclBhbmVsIGluc3RhbmNl
b2YgV2ViSW5zcGVjdG9yLlNpZGViYXJQYW5lbCkpCkBAIC05MCw5ICs3Miw5IEBAIFdlYkluc3Bl
Y3Rvci5TaWRlYmFyLnByb3RvdHlwZSA9IHsKICAgICAgICAgc2lkZWJhclBhbmVsLmFkZGVkKCk7
CiAKICAgICAgICAgcmV0dXJuIHNpZGViYXJQYW5lbDsKLSAgICB9LAorICAgIH0KIAotICAgIHJl
bW92ZVNpZGViYXJQYW5lbDogZnVuY3Rpb24oc2lkZWJhclBhbmVsT3JJZGVudGlmaWVyT3JJbmRl
eCwgaW5kZXgpCisgICAgcmVtb3ZlU2lkZWJhclBhbmVsKHNpZGViYXJQYW5lbE9ySWRlbnRpZmll
ck9ySW5kZXgsIGluZGV4KQogICAgIHsKICAgICAgICAgdmFyIHNpZGViYXJQYW5lbCA9IHRoaXMu
ZmluZFNpZGViYXJQYW5lbChzaWRlYmFyUGFuZWxPcklkZW50aWZpZXJPckluZGV4KTsKICAgICAg
ICAgaWYgKCFzaWRlYmFyUGFuZWwpCkBAIC0xMTMsMTIgKzk1LDEyIEBAIFdlYkluc3BlY3Rvci5T
aWRlYmFyLnByb3RvdHlwZSA9IHsKICAgICAgICAgc2lkZWJhclBhbmVsLnJlbW92ZWQoKTsKIAog
ICAgICAgICByZXR1cm4gc2lkZWJhclBhbmVsOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNl
bGVjdGVkU2lkZWJhclBhbmVsKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3Rl
ZFNpZGViYXJQYW5lbCB8fCBudWxsOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IHNlbGVjdGVk
U2lkZWJhclBhbmVsKHNpZGViYXJQYW5lbE9ySWRlbnRpZmllck9ySW5kZXgpCiAgICAgewpAQCAt
MTQ5LDI0ICsxMzEsMjQgQEAgV2ViSW5zcGVjdG9yLlNpZGViYXIucHJvdG90eXBlID0gewogICAg
ICAgICB9CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVj
dG9yLlNpZGViYXIuRXZlbnQuU2lkZWJhclBhbmVsU2VsZWN0ZWQpOwotICAgIH0sCisgICAgfQog
CiAgICAgZ2V0IG1pbmltdW1XaWR0aCgpCiAgICAgewogICAgICAgICByZXR1cm4gV2ViSW5zcGVj
dG9yLlNpZGViYXIuQWJzb2x1dGVNaW5pbXVtV2lkdGg7Ci0gICAgfSwKKyAgICB9CiAKICAgICBn
ZXQgbWF4aW11bVdpZHRoKCkKICAgICB7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIGtpbmQg
b2YgYXJiaXRyYXJ5IGFuZCBpZGVhbGx5IHdvdWxkIGJlIGEgbW9yZSBjb21wbGV4IGNhbGN1bGF0
aW9uIGJhc2VkIG9uIHRoZQogICAgICAgICAvLyBhdmFpbGFibGUgc3BhY2UgZm9yIHRoZSBzaWJs
aW5nIGVsZW1lbnRzLgogICAgICAgICByZXR1cm4gTWF0aC5yb3VuZCh3aW5kb3cuaW5uZXJXaWR0
aCAvIDMpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHdpZHRoKCkKICAgICB7CiAgICAgICAg
IHJldHVybiB0aGlzLl9lbGVtZW50Lm9mZnNldFdpZHRoOwotICAgIH0sCisgICAgfQogCiAgICAg
c2V0IHdpZHRoKG5ld1dpZHRoKQogICAgIHsKQEAgLTE4MSwxMiArMTYzLDEyIEBAIFdlYkluc3Bl
Y3Rvci5TaWRlYmFyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkU2lk
ZWJhclBhbmVsLndpZHRoRGlkQ2hhbmdlKCk7CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50
VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlNpZGViYXIuRXZlbnQuV2lkdGhEaWRDaGFuZ2UpOwot
ICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGNvbGxhcHNlZCgpCiAgICAgewogICAgICAgICByZXR1
cm4gdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoV2ViSW5zcGVjdG9yLlNpZGViYXIu
Q29sbGFwc2VkU3R5bGVDbGFzc05hbWUpOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGNvbGxh
cHNlZChmbGFnKQogICAgIHsKQEAgLTIxMSwyNCArMTkzLDI0IEBAIFdlYkluc3BlY3Rvci5TaWRl
YmFyLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVy
cyhXZWJJbnNwZWN0b3IuU2lkZWJhci5FdmVudC5Db2xsYXBzZWRTdGF0ZURpZENoYW5nZSk7CiAg
ICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5TaWRlYmFy
LkV2ZW50LldpZHRoRGlkQ2hhbmdlKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzaWRlYmFy
UGFuZWxzKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zaWRlYmFyUGFuZWxzOwotICAg
IH0sCisgICAgfQogCiAgICAgZ2V0IGVsZW1lbnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRo
aXMuX2VsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc2lkZSgpCiAgICAgewogICAg
ICAgICByZXR1cm4gdGhpcy5fc2lkZTsKLSAgICB9LAorICAgIH0KIAotICAgIGZpbmRTaWRlYmFy
UGFuZWw6IGZ1bmN0aW9uKHNpZGViYXJQYW5lbE9ySWRlbnRpZmllck9ySW5kZXgpCisgICAgZmlu
ZFNpZGViYXJQYW5lbChzaWRlYmFyUGFuZWxPcklkZW50aWZpZXJPckluZGV4KQogICAgIHsKICAg
ICAgICAgdmFyIHNpZGViYXJQYW5lbCA9IG51bGw7CiAKQEAgLTI0NywxNiArMjI5LDE2IEBAIFdl
Ykluc3BlY3Rvci5TaWRlYmFyLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHJl
dHVybiBzaWRlYmFyUGFuZWw7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQKIAot
ICAgIHJlc2l6ZXJEcmFnU3RhcnRlZDogZnVuY3Rpb24ocmVzaXplcikKKyAgICByZXNpemVyRHJh
Z1N0YXJ0ZWQocmVzaXplcikKICAgICB7CiAgICAgICAgIHRoaXMuX3dpZHRoQmVmb3JlUmVzaXpl
ID0gdGhpcy53aWR0aDsKLSAgICB9LAorICAgIH0KIAotICAgIHJlc2l6ZXJEcmFnZ2luZzogZnVu
Y3Rpb24ocmVzaXplciwgcG9zaXRpb25EZWx0YSkKKyAgICByZXNpemVyRHJhZ2dpbmcocmVzaXpl
ciwgcG9zaXRpb25EZWx0YSkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9zaWRlID09PSBXZWJJ
bnNwZWN0b3IuU2lkZWJhci5TaWRlcy5MZWZ0KQogICAgICAgICAgICAgcG9zaXRpb25EZWx0YSAq
PSAtMTsKQEAgLTI2NCwxOSArMjQ2LDMxIEBAIFdlYkluc3BlY3Rvci5TaWRlYmFyLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgdmFyIG5ld1dpZHRoID0gcG9zaXRpb25EZWx0YSArIHRoaXMuX3dpZHRo
QmVmb3JlUmVzaXplOwogICAgICAgICB0aGlzLndpZHRoID0gbmV3V2lkdGg7CiAgICAgICAgIHRo
aXMuY29sbGFwc2VkID0gKG5ld1dpZHRoIDwgKHRoaXMubWluaW11bVdpZHRoIC8gMikpOwotICAg
IH0sCisgICAgfQogCi0gICAgcmVzaXplckRyYWdFbmRlZDogZnVuY3Rpb24ocmVzaXplcikKKyAg
ICByZXNpemVyRHJhZ0VuZGVkKHJlc2l6ZXIpCiAgICAgewogICAgICAgICBkZWxldGUgdGhpcy5f
d2lkdGhCZWZvcmVSZXNpemU7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAg
ICBfbmF2aWdhdGlvbkl0ZW1TZWxlY3RlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX25hdmlnYXRp
b25JdGVtU2VsZWN0ZWQoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLnNlbGVjdGVkU2lkZWJh
clBhbmVsID0gZXZlbnQudGFyZ2V0LnNlbGVjdGVkTmF2aWdhdGlvbkl0ZW0gPyBldmVudC50YXJn
ZXQuc2VsZWN0ZWROYXZpZ2F0aW9uSXRlbS5pZGVudGlmaWVyIDogbnVsbDsKICAgICB9CiB9Owog
Ci1XZWJJbnNwZWN0b3IuU2lkZWJhci5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9y
Lk9iamVjdC5wcm90b3R5cGU7CitXZWJJbnNwZWN0b3IuU2lkZWJhci5Db2xsYXBzZWRTdHlsZUNs
YXNzTmFtZSA9ICJjb2xsYXBzZWQiOworV2ViSW5zcGVjdG9yLlNpZGViYXIuQWJzb2x1dGVNaW5p
bXVtV2lkdGggPSAyMDA7CisKK1dlYkluc3BlY3Rvci5TaWRlYmFyLlNpZGVzID0geworICAgIFJp
Z2h0OiAicmlnaHQiLAorICAgIExlZnQ6ICJsZWZ0IgorfTsKKworV2ViSW5zcGVjdG9yLlNpZGVi
YXIuRXZlbnQgPSB7CisgICAgU2lkZWJhclBhbmVsU2VsZWN0ZWQ6ICJzaWRlYmFyLXNpZGViYXIt
cGFuZWwtc2VsZWN0ZWQiLAorICAgIENvbGxhcHNlZFN0YXRlRGlkQ2hhbmdlOiAic2lkZWJhci1z
aWRlYmFyLWNvbGxhcHNlZC1zdGF0ZS1kaWQtY2hhbmdlIiwKKyAgICBXaWR0aERpZENoYW5nZTog
InNpZGViYXItd2lkdGgtZGlkLWNoYW5nZSIsCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2lkZWJhclBhbmVsLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2lkZWJhclBhbmVsLmpzCmluZGV4IDI3
Nzg0ZTcuLjdjZTAyYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1NpZGViYXJQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9TaWRlYmFyUGFuZWwuanMKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDEwICsyMywxMSBAQAogICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5TaWRl
YmFyUGFuZWwgPSBmdW5jdGlvbihpZGVudGlmaWVyLCBkaXNwbGF5TmFtZSwgc2hvd1Rvb2xUaXAs
IGhpZGVUb29sVGlwLCBpbWFnZSwgZWxlbWVudCwgcm9sZSwgbGFiZWwpCitXZWJJbnNwZWN0b3Iu
U2lkZWJhclBhbmVsID0gY2xhc3MgU2lkZWJhclBhbmVsIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9i
amVjdAogewotICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2Jq
ZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rvci5PYmpl
Y3QuY2FsbCh0aGlzKTsKKyAgICBjb25zdHJ1Y3RvcihpZGVudGlmaWVyLCBkaXNwbGF5TmFtZSwg
c2hvd1Rvb2xUaXAsIGhpZGVUb29sVGlwLCBpbWFnZSwgZWxlbWVudCwgcm9sZSwgbGFiZWwpCisg
ICAgeworICAgICAgICBzdXBlcigpOwogCiAgICAgICAgIHRoaXMuX2lkZW50aWZpZXIgPSBpZGVu
dGlmaWVyOwogCkBAIC0zNSw1NiArMzYsNDggQEAgV2ViSW5zcGVjdG9yLlNpZGViYXJQYW5lbCA9
IGZ1bmN0aW9uKGlkZW50aWZpZXIsIGRpc3BsYXlOYW1lLCBzaG93VG9vbFRpcCwgaGlkZVQKICAg
ICAgICAgdGhpcy5fdG9vbGJhckl0ZW0uZW5hYmxlZCA9IGZhbHNlOwogCiAgICAgICAgIHRoaXMu
X2VsZW1lbnQgPSBlbGVtZW50IHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAg
IHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuU2lkZWJhclBhbmVsLlN0
eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJwYW5l
bCIpOwogICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoaWRlbnRpZmllcik7CiAK
ICAgICAgICAgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoInJvbGUiLCByb2xlIHx8ICJncm91
cCIpOwogICAgICAgICB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsIGxh
YmVsIHx8IGRpc3BsYXlOYW1lKTsKIAogICAgICAgICB0aGlzLl9jb250ZW50RWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuX2NvbnRlbnRFbGVtZW50LmNs
YXNzTmFtZSA9IFdlYkluc3BlY3Rvci5TaWRlYmFyUGFuZWwuQ29udGVudEVsZW1lbnRTdHlsZUNs
YXNzTmFtZTsKKyAgICAgICAgdGhpcy5fY29udGVudEVsZW1lbnQuY2xhc3NOYW1lID0gImNvbnRl
bnQiOwogICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2NvbnRlbnRFbGVt
ZW50KTsKLX07Ci0KLVdlYkluc3BlY3Rvci5TaWRlYmFyUGFuZWwuU3R5bGVDbGFzc05hbWUgPSAi
cGFuZWwiOwotV2ViSW5zcGVjdG9yLlNpZGViYXJQYW5lbC5TZWxlY3RlZFN0eWxlQ2xhc3NOYW1l
ID0gInNlbGVjdGVkIjsKLVdlYkluc3BlY3Rvci5TaWRlYmFyUGFuZWwuQ29udGVudEVsZW1lbnRT
dHlsZUNsYXNzTmFtZSA9ICJjb250ZW50IjsKLQotV2ViSW5zcGVjdG9yLlNpZGViYXJQYW5lbC5w
cm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5TaWRlYmFyUGFuZWws
Ci0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZSwKKyAgICB9CiAK
ICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBpZGVudGlmaWVyKCkKICAgICB7CiAgICAgICAgIHJl
dHVybiB0aGlzLl9pZGVudGlmaWVyOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHRvb2xiYXJJ
dGVtKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl90b29sYmFySXRlbTsKLSAgICB9LAor
ICAgIH0KIAogICAgIGdldCBlbGVtZW50KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9l
bGVtZW50OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGNvbnRlbnRFbGVtZW50KCkKICAgICB7
CiAgICAgICAgIHJldHVybiB0aGlzLl9jb250ZW50RWxlbWVudDsKLSAgICB9LAorICAgIH0KIAog
ICAgIGdldCB2aXNpYmxlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkICYm
IHRoaXMuX3BhcmVudFNpZGViYXIgJiYgIXRoaXMuX3BhcmVudFNpZGViYXIuY29sbGFwc2VkOwot
ICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNlbGVjdGVkKCkKICAgICB7CiAgICAgICAgIHJldHVy
biB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhXZWJJbnNwZWN0b3IuU2lkZWJhclBh
bmVsLlNlbGVjdGVkU3R5bGVDbGFzc05hbWUpOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IHNl
bGVjdGVkKGZsYWcpCiAgICAgewpAQCAtOTIsNzUgKzg1LDc3IEBAIFdlYkluc3BlY3Rvci5TaWRl
YmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xp
c3QuYWRkKFdlYkluc3BlY3Rvci5TaWRlYmFyUGFuZWwuU2VsZWN0ZWRTdHlsZUNsYXNzTmFtZSk7
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92
ZShXZWJJbnNwZWN0b3IuU2lkZWJhclBhbmVsLlNlbGVjdGVkU3R5bGVDbGFzc05hbWUpOwotICAg
IH0sCisgICAgfQogCiAgICAgZ2V0IHBhcmVudFNpZGViYXIoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX3BhcmVudFNpZGViYXI7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93OiBmdW5j
dGlvbigpCisgICAgc2hvdygpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX3BhcmVudFNpZGVi
YXIpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5fcGFyZW50U2lkZWJhci5j
b2xsYXBzZWQgPSBmYWxzZTsKICAgICAgICAgdGhpcy5fcGFyZW50U2lkZWJhci5zZWxlY3RlZFNp
ZGViYXJQYW5lbCA9IHRoaXM7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBoaWRlOiBmdW5jdGlvbigp
CisgICAgaGlkZSgpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX3BhcmVudFNpZGViYXIpCiAg
ICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5fcGFyZW50U2lkZWJhci5jb2xsYXBz
ZWQgPSB0cnVlOwogICAgICAgICB0aGlzLl9wYXJlbnRTaWRlYmFyLnNlbGVjdGVkU2lkZWJhclBh
bmVsID0gbnVsbDsKLSAgICB9LAorICAgIH0KIAotICAgIHRvZ2dsZTogZnVuY3Rpb24oKQorICAg
IHRvZ2dsZSgpCiAgICAgewogICAgICAgICBpZiAodGhpcy52aXNpYmxlKQogICAgICAgICAgICAg
dGhpcy5oaWRlKCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHRoaXMuc2hvdygpOwotICAg
IH0sCisgICAgfQogCi0gICAgYWRkZWQ6IGZ1bmN0aW9uKCkKKyAgICBhZGRlZCgpCiAgICAgewog
ICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9wYXJlbnRTaWRlYmFyKTsKICAgICAgICAgdGhp
cy5fdG9vbGJhckl0ZW0uZW5hYmxlZCA9IHRydWU7CiAgICAgICAgIHRoaXMuX3Rvb2xiYXJJdGVt
LmFjdGl2YXRlZCA9IHRoaXMudmlzaWJsZTsKLSAgICB9LAorICAgIH0KIAotICAgIHJlbW92ZWQ6
IGZ1bmN0aW9uKCkKKyAgICByZW1vdmVkKCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KCF0aGlzLl9wYXJlbnRTaWRlYmFyKTsKICAgICAgICAgdGhpcy5fdG9vbGJhckl0ZW0uZW5hYmxl
ZCA9IGZhbHNlOwogICAgICAgICB0aGlzLl90b29sYmFySXRlbS5hY3RpdmF0ZWQgPSBmYWxzZTsK
LSAgICB9LAorICAgIH0KIAotICAgIHdpbGxSZW1vdmU6IGZ1bmN0aW9uKCkKKyAgICB3aWxsUmVt
b3ZlKCkKICAgICB7CiAgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCi0gICAg
fSwKKyAgICB9CiAKLSAgICBzaG93bjogZnVuY3Rpb24oKQorICAgIHNob3duKCkKICAgICB7CiAg
ICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCi0gICAgfSwKKyAgICB9CiAKLSAg
ICBoaWRkZW46IGZ1bmN0aW9uKCkKKyAgICBoaWRkZW4oKQogICAgIHsKICAgICAgICAgLy8gSW1w
bGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KLSAgICB9LAorICAgIH0KIAotICAgIHdpZHRoRGlkQ2hh
bmdlOiBmdW5jdGlvbigpCisgICAgd2lkdGhEaWRDaGFuZ2UoKQogICAgIHsKICAgICAgICAgLy8g
SW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KLSAgICB9LAorICAgIH0KIAotICAgIHZpc2liaWxp
dHlEaWRDaGFuZ2U6IGZ1bmN0aW9uKCkKKyAgICB2aXNpYmlsaXR5RGlkQ2hhbmdlKCkKICAgICB7
CiAgICAgICAgIHRoaXMuX3Rvb2xiYXJJdGVtLmFjdGl2YXRlZCA9IHRoaXMudmlzaWJsZTsKICAg
ICB9CiB9OworCitXZWJJbnNwZWN0b3IuU2lkZWJhclBhbmVsLlNlbGVjdGVkU3R5bGVDbGFzc05h
bWUgPSAic2VsZWN0ZWQiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvVGltZWxpbmVTaWRlYmFyUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVNpZGViYXJQYW5lbC5qcwppbmRleCA1
YjhjNzNkLi43ZThkNGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9UaW1lbGluZVNpZGViYXJQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVNpZGViYXJQYW5lbC5qcwpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMs
OSArMjMsMTEgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1X
ZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwgPSBmdW5jdGlvbigpCitXZWJJbnNwZWN0
b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwgPSBjbGFzcyBUaW1lbGluZVNpZGViYXJQYW5lbCBleHRl
bmRzIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsCiB7Ci0gICAgV2ViSW5zcGVj
dG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwuY2FsbCh0aGlzLCAidGltZWxpbmUiLCBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIlRpbWVsaW5lcyIpLCAiSW1hZ2VzL05hdmlnYXRpb25JdGVtU3RvcHdh
dGNoLnN2ZyIsICIyIik7CisgICAgY29uc3RydWN0b3IoKQorICAgIHsKKyAgICAgICAgc3VwZXIo
InRpbWVsaW5lIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUaW1lbGluZXMiKSwgIkltYWdlcy9O
YXZpZ2F0aW9uSXRlbVN0b3B3YXRjaC5zdmciLCAiMiIpOwogCiAgICAgICAgIHRoaXMuX3RpbWVs
aW5lRXZlbnRzVGl0bGVCYXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7
CiAgICAgICAgIHRoaXMuX3RpbWVsaW5lRXZlbnRzVGl0bGVCYXJFbGVtZW50LmNsYXNzTGlzdC5h
ZGQoV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLlRpdGxlQmFyU3R5bGVDbGFzcyk7
CkBAIC0xMjEsNTcgKzEyMywzMCBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwg
PSBmdW5jdGlvbigpCiAgICAgICAgIFdlYkluc3BlY3Rvci5jb250ZW50QnJvd3Nlci5hZGRFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3Nlci5FdmVudC5DdXJyZW50Q29udGVu
dFZpZXdEaWRDaGFuZ2UsIHRoaXMuX2NvbnRlbnRCcm93c2VyQ3VycmVudENvbnRlbnRWaWV3RGlk
Q2hhbmdlLCB0aGlzKTsKICAgICAgICAgV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFuYWdlci5hZGRF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIuRXZlbnQuQ2FwdHVyaW5n
U3RhcnRlZCwgdGhpcy5fY2FwdHVyaW5nU3RhcnRlZCwgdGhpcyk7CiAgICAgICAgIFdlYkluc3Bl
Y3Rvci50aW1lbGluZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxp
bmVNYW5hZ2VyLkV2ZW50LkNhcHR1cmluZ1N0b3BwZWQsIHRoaXMuX2NhcHR1cmluZ1N0b3BwZWQs
IHRoaXMpOwotfTsKLQotV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLkhpZGRlblN0
eWxlQ2xhc3NOYW1lID0gImhpZGRlbiI7Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFu
ZWwuU3RhdHVzQmFyU3R5bGVDbGFzcyA9ICJzdGF0dXMtYmFyIjsKLVdlYkluc3BlY3Rvci5UaW1l
bGluZVNpZGViYXJQYW5lbC5SZWNvcmRHbHlwaFN0eWxlQ2xhc3MgPSAicmVjb3JkLWdseXBoIjsK
LVdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5SZWNvcmRHbHlwaFJlY29yZGluZ1N0
eWxlQ2xhc3MgPSAicmVjb3JkaW5nIjsKLVdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5l
bC5SZWNvcmRHbHlwaFJlY29yZGluZ0ZvcmNlZFN0eWxlQ2xhc3MgPSAiZm9yY2VkIjsKLVdlYklu
c3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5SZWNvcmRTdGF0dXNTdHlsZUNsYXNzID0gInJl
Y29yZC1zdGF0dXMiOwotV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLlRpdGxlQmFy
U3R5bGVDbGFzcyA9ICJ0aXRsZS1iYXIiOwotV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBh
bmVsLlRpbWVsaW5lc1RpdGxlQmFyU3R5bGVDbGFzcyA9ICJ0aW1lbGluZXMiOwotV2ViSW5zcGVj
dG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLlRpbWVsaW5lRXZlbnRzVGl0bGVCYXJTdHlsZUNsYXNz
ID0gInRpbWVsaW5lLWV2ZW50cyI7Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwu
VGltZWxpbmVzQ29udGVudENvbnRhaW5lclN0eWxlQ2xhc3MgPSAidGltZWxpbmVzLWNvbnRlbnQi
OwotV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLkNsb3NlQnV0dG9uU3R5bGVDbGFz
cyA9ICJjbG9zZS1idXR0b24iOwotV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLkxh
cmdlSWNvblN0eWxlQ2xhc3MgPSAibGFyZ2UiOwotV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJh
clBhbmVsLlN0b3B3YXRjaEljb25TdHlsZUNsYXNzID0gInN0b3B3YXRjaC1pY29uIjsKLVdlYklu
c3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5OZXR3b3JrSWNvblN0eWxlQ2xhc3MgPSAibmV0
d29yay1pY29uIjsKLVdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5Db2xvcnNJY29u
U3R5bGVDbGFzcyA9ICJjb2xvcnMtaWNvbiI7Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFy
UGFuZWwuU2NyaXB0SWNvblN0eWxlQ2xhc3MgPSAic2NyaXB0LWljb24iOwotV2ViSW5zcGVjdG9y
LlRpbWVsaW5lU2lkZWJhclBhbmVsLlJ1bkxvb3BJY29uU3R5bGVDbGFzcyA9ICJydW5sb29wLWlj
b24iOwotV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLlRpbWVsaW5lUmVjb3JkaW5n
Q29udGVudFZpZXdTaG93aW5nU3R5bGVDbGFzcyA9ICJ0aW1lbGluZS1yZWNvcmRpbmctY29udGVu
dC12aWV3LXNob3dpbmciOwotCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuU2hv
d2luZ1RpbWVsaW5lUmVjb3JkaW5nQ29udGVudFZpZXdDb29raWVLZXkgPSAidGltZWxpbmUtc2lk
ZWJhci1wYW5lbC1zaG93aW5nLXRpbWVsaW5lLXJlY29yZGluZy1jb250ZW50LXZpZXciOwotV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLlNlbGVjdGVkVGltZWxpbmVWaWV3SWRlbnRp
ZmllckNvb2tpZUtleSA9ICJ0aW1lbGluZS1zaWRlYmFyLXBhbmVsLXNlbGVjdGVkLXRpbWVsaW5l
LXZpZXctaWRlbnRpZmllciI7Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuT3Zl
cnZpZXdUaW1lbGluZUlkZW50aWZpZXJDb29raWVWYWx1ZSA9ICJvdmVydmlldyI7Ci0KLVdlYklu
c3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0
b3I6IFdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbCwKLSAgICBfX3Byb3RvX186IFdl
Ykluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZSwKKyAgICB9CiAKICAg
ICAvLyBQdWJsaWMKIAotICAgIHNob3duOiBmdW5jdGlvbigpCisgICAgc2hvd24oKQogICAgIHsK
ICAgICAgICAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlLnNo
b3duLmNhbGwodGhpcyk7CiAKICAgICAgICAgaWYgKHRoaXMuX2Rpc3BsYXllZENvbnRlbnRWaWV3
KQogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNvbnRlbnRCcm93c2VyLnNob3dDb250ZW50Vmll
dyh0aGlzLl9kaXNwbGF5ZWRDb250ZW50Vmlldyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93
RGVmYXVsdENvbnRlbnRWaWV3OiBmdW5jdGlvbigpCisgICAgc2hvd0RlZmF1bHRDb250ZW50Vmll
dygpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fZGlzcGxheWVkQ29udGVudFZpZXcpCiAgICAg
ICAgICAgICB0aGlzLnNob3dUaW1lbGluZU92ZXJ2aWV3KCk7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICBnZXQgaGFzU2VsZWN0ZWRFbGVtZW50KCkKICAgICB7CiAgICAgICAgIHJldHVybiAhIXRoaXMu
X2NvbnRlbnRUcmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50IHx8ICEhdGhpcy5fcmVjb3Jk
aW5nc1RyZWVPdXRsaW5lLnNlbGVjdGVkVHJlZUVsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICB0cmVlRWxlbWVudEZvclJlcHJlc2VudGVkT2JqZWN0OiBmdW5jdGlvbihyZXByZXNlbnRlZE9i
amVjdCkKKyAgICB0cmVlRWxlbWVudEZvclJlcHJlc2VudGVkT2JqZWN0KHJlcHJlc2VudGVkT2Jq
ZWN0KQogICAgIHsKICAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nKQogICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Jl
Y29yZGluZ1RyZWVFbGVtZW50TWFwLmdldChyZXByZXNlbnRlZE9iamVjdCk7CkBAIC0yNDAsMTIg
KzIxNSwxMiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwucHJvdG90eXBlID0g
ewogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICBnZXQgY29udGVudFRyZWVPdXRsaW5lTGFiZWwoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRo
aXMuX3RpbWVsaW5lRXZlbnRzVGl0bGVCYXJFbGVtZW50LnRleHRDb250ZW50OwotICAgIH0sCisg
ICAgfQogCiAgICAgc2V0IGNvbnRlbnRUcmVlT3V0bGluZUxhYmVsKGxhYmVsKQogICAgIHsKQEAg
LTI1Myw1NiArMjI4LDU2IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5wcm90
b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5fdGltZWxpbmVFdmVudHNUaXRsZUJhckVsZW1lbnQu
dGV4dENvbnRlbnQgPSBsYWJlbDsKICAgICAgICAgdGhpcy5maWx0ZXJCYXIucGxhY2Vob2xkZXIg
PSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZpbHRlciAlcyIpLmZvcm1hdChsYWJlbCk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBzaG93VGltZWxpbmVPdmVydmlldzogZnVuY3Rpb24oKQorICAgIHNo
b3dUaW1lbGluZU92ZXJ2aWV3KCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl90aW1lbGluZXNU
cmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50KQogICAgICAgICAgICAgdGhpcy5fdGltZWxp
bmVzVHJlZU91dGxpbmUuc2VsZWN0ZWRUcmVlRWxlbWVudC5kZXNlbGVjdCgpOwogCiAgICAgICAg
IHRoaXMuX2Rpc3BsYXllZENvbnRlbnRWaWV3LnNob3dPdmVydmlld1RpbWVsaW5lVmlldygpOwog
ICAgICAgICBXZWJJbnNwZWN0b3IuY29udGVudEJyb3dzZXIuc2hvd0NvbnRlbnRWaWV3KHRoaXMu
X2Rpc3BsYXllZENvbnRlbnRWaWV3KTsKLSAgICB9LAorICAgIH0KIAotICAgIHNob3dUaW1lbGlu
ZVZpZXdGb3JUaW1lbGluZTogZnVuY3Rpb24odGltZWxpbmUpCisgICAgc2hvd1RpbWVsaW5lVmll
d0ZvclRpbWVsaW5lKHRpbWVsaW5lKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQodGlt
ZWxpbmUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVGltZWxpbmUsIHRpbWVsaW5lKTsKICAgICAg
ICAgY29uc29sZS5hc3NlcnQodGhpcy5fdGltZWxpbmVUcmVlRWxlbWVudE1hcC5oYXModGltZWxp
bmUpLCAiQ2Fubm90IHNob3cgdGltZWxpbmUgYmVjYXVzZSBpdCBkb2VzIG5vdCBiZWxvbmcgdG8g
dGhlIHNob3duIHJlY29yZGluZy4iLCB0aW1lbGluZSk7CiAKICAgICAgICAgLy8gRGVmZXIgc2hv
d2luZyB0aGUgcmVsZXZhbnQgdGltZWxpbmUgdG8gdGhlIG9uc2VsZWN0IGhhbmRsZXIgb2YgdGhl
IHRpbWVsaW5lcyB0cmVlIGVsZW1lbnQuCi0gICAgICAgIGNvbnN0IHdhc1NlbGVjdGVkQnlVc2Vy
ID0gdHJ1ZTsKLSAgICAgICAgY29uc3Qgc2hvdWxkU3VwcHJlc3NPblNlbGVjdCA9IGZhbHNlOwor
ICAgICAgICB2YXIgd2FzU2VsZWN0ZWRCeVVzZXIgPSB0cnVlOworICAgICAgICB2YXIgc2hvdWxk
U3VwcHJlc3NPblNlbGVjdCA9IGZhbHNlOwogICAgICAgICB0aGlzLl90aW1lbGluZVRyZWVFbGVt
ZW50TWFwLmdldCh0aW1lbGluZSkuc2VsZWN0KHRydWUsIHdhc1NlbGVjdGVkQnlVc2VyLCBzaG91
bGRTdXBwcmVzc09uU2VsZWN0LCB0cnVlKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByb3Rl
Y3RlZAogCi0gICAgdXBkYXRlRmlsdGVyOiBmdW5jdGlvbigpCisgICAgdXBkYXRlRmlsdGVyKCkK
ICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3Rv
dHlwZS51cGRhdGVGaWx0ZXIuY2FsbCh0aGlzKTsKIAogICAgICAgICB0aGlzLl9kaXNwbGF5ZWRD
b250ZW50Vmlldy5maWx0ZXJEaWRDaGFuZ2UoKTsKLSAgICB9LAorICAgIH0KIAotICAgIGhhc0N1
c3RvbUZpbHRlcnM6IGZ1bmN0aW9uKCkKKyAgICBoYXNDdXN0b21GaWx0ZXJzKCkKICAgICB7CiAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgIH0sCisgICAgfQogCi0gICAgbWF0Y2hUcmVlRWxlbWVu
dEFnYWluc3RDdXN0b21GaWx0ZXJzOiBmdW5jdGlvbih0cmVlRWxlbWVudCkKKyAgICBtYXRjaFRy
ZWVFbGVtZW50QWdhaW5zdEN1c3RvbUZpbHRlcnModHJlZUVsZW1lbnQpCiAgICAgewogICAgICAg
ICBpZiAoIXRoaXMuX2Rpc3BsYXllZENvbnRlbnRWaWV3KQogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKICAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc3BsYXllZENvbnRlbnRWaWV3Lm1hdGNoVHJl
ZUVsZW1lbnRBZ2FpbnN0Q3VzdG9tRmlsdGVycyh0cmVlRWxlbWVudCk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBjYW5TaG93RGlmZmVyZW50Q29udGVudFZpZXc6IGZ1bmN0aW9uKCkKKyAgICBjYW5T
aG93RGlmZmVyZW50Q29udGVudFZpZXcoKQogICAgIHsKICAgICAgICAgcmV0dXJuICF0aGlzLnJl
c3RvcmluZ1N0YXRlIHx8ICF0aGlzLl9yZXN0b3JlZFNob3dpbmdUaW1lbGluZVJlY29yZGluZ0Nv
bnRlbnRWaWV3OwotICAgIH0sCisgICAgfQogCi0gICAgc2F2ZVN0YXRlVG9Db29raWU6IGZ1bmN0
aW9uKGNvb2tpZSkKKyAgICBzYXZlU3RhdGVUb0Nvb2tpZShjb29raWUpCiAgICAgewogICAgICAg
ICBjb25zb2xlLmFzc2VydChjb29raWUpOwogCkBAIC0zMTQsMTAgKzI4OSwxMCBAQCBXZWJJbnNw
ZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLlNlbGVj
dGVkVGltZWxpbmVWaWV3SWRlbnRpZmllckNvb2tpZUtleV0gPSBXZWJJbnNwZWN0b3IuVGltZWxp
bmVTaWRlYmFyUGFuZWwuT3ZlcnZpZXdUaW1lbGluZUlkZW50aWZpZXJDb29raWVWYWx1ZTsKIAot
ICAgICAgICBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUuc2F2
ZVN0YXRlVG9Db29raWUuY2FsbCh0aGlzLCBjb29raWUpOwotICAgIH0sCisgICAgICAgIHN1cGVy
LnNhdmVTdGF0ZVRvQ29va2llKGNvb2tpZSk7CisgICAgfQogCi0gICAgcmVzdG9yZVN0YXRlRnJv
bUNvb2tpZTogZnVuY3Rpb24oY29va2llLCByZWxheGVkTWF0Y2hEZWxheSkKKyAgICByZXN0b3Jl
U3RhdGVGcm9tQ29va2llKGNvb2tpZSwgcmVsYXhlZE1hdGNoRGVsYXkpCiAgICAgewogICAgICAg
ICBjb25zb2xlLmFzc2VydChjb29raWUpOwogCkBAIC0zNDAsMTEgKzMxNSwxMSBAQCBXZWJJbnNw
ZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgICAgIC8vIERv
bid0IGNhbGwgTmF2aWdhdGlvblNpZGViYXJQYW5lbC5yZXN0b3JlU3RhdGVGcm9tQ29va2llLCBi
ZWNhdXNlIGl0IHRyaWVzIHRvIG1hdGNoIGJhc2VkCiAgICAgICAgIC8vIG9uIHR5cGUgb25seSBh
cyBhIGxhc3QgcmVzb3J0LiBUaGlzIHdvdWxkIGNhdXNlIHRoZSBmaXJzdCByZWNvcmRpbmcgdG8g
YmUgcmVzZWxlY3RlZCBvbiByZWxvYWQuCi0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRl
CiAKLSAgICBfcmVjb3JkaW5nc1RyZWVFbGVtZW50U2VsZWN0ZWQ6IGZ1bmN0aW9uKHRyZWVFbGVt
ZW50LCBzZWxlY3RlZEJ5VXNlcikKKyAgICBfcmVjb3JkaW5nc1RyZWVFbGVtZW50U2VsZWN0ZWQo
dHJlZUVsZW1lbnQsIHNlbGVjdGVkQnlVc2VyKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3Nl
cnQodHJlZUVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
VGltZWxpbmVSZWNvcmRpbmcpOwogICAgICAgICBjb25zb2xlLmFzc2VydCghc2VsZWN0ZWRCeVVz
ZXIsICJSZWNvcmRpbmcgdHJlZSBlbGVtZW50cyBzaG91bGQgYmUgaGlkZGVuIGFuZCBvbmx5IHBy
b2dyYW1tYXRpY2FsbHkgc2VsZWN0YWJsZS4iKTsKQEAgLTM1NCwxNiArMzI5LDE2IEBAIFdlYklu
c3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIC8vIERl
c2VsZWN0IG9yIHJlLXNlbGVjdCB0aGUgdGltZWxpbmUgdHJlZSBlbGVtZW50IGZvciB0aGUgdGlt
ZWxpbmUgdmlldyBiZWluZyBkaXNwbGF5ZWQuCiAgICAgICAgIHZhciBjdXJyZW50VGltZWxpbmVW
aWV3ID0gdGhpcy5fZGlzcGxheWVkQ29udGVudFZpZXcuY3VycmVudFRpbWVsaW5lVmlldzsKICAg
ICAgICAgaWYgKGN1cnJlbnRUaW1lbGluZVZpZXcgJiYgY3VycmVudFRpbWVsaW5lVmlldy5yZXBy
ZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5UaW1lbGluZSkgewotICAgICAg
ICAgICAgY29uc3Qgd2FzU2VsZWN0ZWRCeVVzZXIgPSBmYWxzZTsgLy8gVGhpcyBpcyBhIHNpbXVs
YXRlZCBzZWxlY3Rpb24uCi0gICAgICAgICAgICBjb25zdCBzaG91bGRTdXBwcmVzc09uU2VsZWN0
ID0gZmFsc2U7CisgICAgICAgICAgICB2YXIgd2FzU2VsZWN0ZWRCeVVzZXIgPSBmYWxzZTsgLy8g
VGhpcyBpcyBhIHNpbXVsYXRlZCBzZWxlY3Rpb24uCisgICAgICAgICAgICB2YXIgc2hvdWxkU3Vw
cHJlc3NPblNlbGVjdCA9IGZhbHNlOwogICAgICAgICAgICAgdGhpcy5fdGltZWxpbmVUcmVlRWxl
bWVudE1hcC5nZXQoY3VycmVudFRpbWVsaW5lVmlldy5yZXByZXNlbnRlZE9iamVjdCkuc2VsZWN0
KHRydWUsIHdhc1NlbGVjdGVkQnlVc2VyLCBzaG91bGRTdXBwcmVzc09uU2VsZWN0LCB0cnVlKTsK
ICAgICAgICAgfSBlbHNlIGlmICh0aGlzLl90aW1lbGluZXNUcmVlT3V0bGluZS5zZWxlY3RlZFRy
ZWVFbGVtZW50KQogICAgICAgICAgICAgdGhpcy5fdGltZWxpbmVzVHJlZU91dGxpbmUuc2VsZWN0
ZWRUcmVlRWxlbWVudC5kZXNlbGVjdCgpOwogCiAgICAgICAgIHRoaXMudXBkYXRlRmlsdGVyKCk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdGltZWxpbmVzVHJlZUVsZW1lbnRTZWxlY3RlZDogZnVu
Y3Rpb24odHJlZUVsZW1lbnQsIHNlbGVjdGVkQnlVc2VyKQorICAgIF90aW1lbGluZXNUcmVlRWxl
bWVudFNlbGVjdGVkKHRyZWVFbGVtZW50LCBzZWxlY3RlZEJ5VXNlcikKICAgICB7CiAgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3RpbWVsaW5lVHJlZUVsZW1lbnRNYXAuZ2V0KHRyZWVFbGVt
ZW50LnJlcHJlc2VudGVkT2JqZWN0KSA9PT0gdHJlZUVsZW1lbnQsIHRyZWVFbGVtZW50KTsKIApA
QCAtMzc5LDI3ICszNTQsMjcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLnBy
b3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlzLl9kaXNwbGF5ZWRDb250ZW50Vmlldy5zaG93VGlt
ZWxpbmVWaWV3Rm9yVGltZWxpbmUodGltZWxpbmUpOwogICAgICAgICBXZWJJbnNwZWN0b3IuY29u
dGVudEJyb3dzZXIuc2hvd0NvbnRlbnRWaWV3KHRoaXMuX2Rpc3BsYXllZENvbnRlbnRWaWV3KTsK
LSAgICB9LAorICAgIH0KIAotICAgIF9jb250ZW50QnJvd3NlckN1cnJlbnRDb250ZW50Vmlld0Rp
ZENoYW5nZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX2NvbnRlbnRCcm93c2VyQ3VycmVudENvbnRl
bnRWaWV3RGlkQ2hhbmdlKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIGRpZFNob3dUaW1lbGlu
ZVJlY29yZGluZ0NvbnRlbnRWaWV3ID0gV2ViSW5zcGVjdG9yLmNvbnRlbnRCcm93c2VyLmN1cnJl
bnRDb250ZW50VmlldyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZ0Nv
bnRlbnRWaWV3OwogICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZShXZWJJbnNw
ZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuVGltZWxpbmVSZWNvcmRpbmdDb250ZW50Vmlld1No
b3dpbmdTdHlsZUNsYXNzLCBkaWRTaG93VGltZWxpbmVSZWNvcmRpbmdDb250ZW50Vmlldyk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBfY2FwdHVyaW5nU3RhcnRlZDogZnVuY3Rpb24oZXZlbnQpCisg
ICAgX2NhcHR1cmluZ1N0YXJ0ZWQoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9yZWNvcmRT
dGF0dXNFbGVtZW50LnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZWNvcmRp
bmciKTsKICAgICAgICAgdGhpcy5fcmVjb3JkR2x5cGhFbGVtZW50LmNsYXNzTGlzdC5hZGQoV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLlJlY29yZEdseXBoUmVjb3JkaW5nU3R5bGVD
bGFzcyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY2FwdHVyaW5nU3RvcHBlZDogZnVuY3Rpb24o
ZXZlbnQpCisgICAgX2NhcHR1cmluZ1N0b3BwZWQoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlz
Ll9yZWNvcmRTdGF0dXNFbGVtZW50LnRleHRDb250ZW50ID0gIiI7CiAgICAgICAgIHRoaXMuX3Jl
Y29yZEdseXBoRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5UaW1lbGluZVNp
ZGViYXJQYW5lbC5SZWNvcmRHbHlwaFJlY29yZGluZ1N0eWxlQ2xhc3MpOwotICAgIH0sCisgICAg
fQogCi0gICAgX3JlY29yZGluZ0NyZWF0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9yZWNvcmRp
bmdDcmVhdGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIHJlY29yZGluZyA9IGV2ZW50LmRh
dGEucmVjb3JkaW5nOwogICAgICAgICBjb25zb2xlLmFzc2VydChyZWNvcmRpbmcgaW5zdGFuY2Vv
ZiBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmcsIHJlY29yZGluZyk7CkBAIC00MDksOSAr
Mzg0LDkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgdGhpcy5fcmVjb3JkaW5nc1RyZWVPdXRsaW5lLmFwcGVuZENoaWxkKHJlY29yZGlu
Z1RyZWVFbGVtZW50KTsKIAogICAgICAgICB0aGlzLl9yZWNvcmRpbmdDb3VudENoYW5nZWQoKTsK
LSAgICB9LAorICAgIH0KIAotICAgIF9yZWNvcmRpbmdDb3VudENoYW5nZWQ6IGZ1bmN0aW9uKCkK
KyAgICBfcmVjb3JkaW5nQ291bnRDaGFuZ2VkKCkKICAgICB7CiAgICAgICAgIHZhciBwcmV2aW91
c1RyZWVFbGVtZW50ID0gbnVsbDsKICAgICAgICAgZm9yICh2YXIgdHJlZUVsZW1lbnQgb2YgdGhp
cy5fcmVjb3JkaW5nVHJlZUVsZW1lbnRNYXAudmFsdWVzKCkpIHsKQEAgLTQyMiw5ICszOTcsOSBA
QCBXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogCiAgICAg
ICAgICAgICBwcmV2aW91c1RyZWVFbGVtZW50ID0gdHJlZUVsZW1lbnQ7CiAgICAgICAgIH0KLSAg
ICB9LAorICAgIH0KIAotICAgIF9yZWNvcmRpbmdTZWxlY3RlZDogZnVuY3Rpb24ocmVjb3JkaW5n
KQorICAgIF9yZWNvcmRpbmdTZWxlY3RlZChyZWNvcmRpbmcpCiAgICAgewogICAgICAgICBjb25z
b2xlLmFzc2VydChyZWNvcmRpbmcgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNv
cmRpbmcsIHJlY29yZGluZyk7CiAKQEAgLTQ0OCwxNCArNDIzLDE0IEBAIFdlYkluc3BlY3Rvci5U
aW1lbGluZVNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2Rpc3BsYXll
ZENvbnRlbnRWaWV3ID0gV2ViSW5zcGVjdG9yLmNvbnRlbnRCcm93c2VyLmNvbnRlbnRWaWV3Rm9y
UmVwcmVzZW50ZWRPYmplY3QodGhpcy5fZGlzcGxheWVkUmVjb3JkaW5nKTsKICAgICAgICAgaWYg
KHRoaXMuc2VsZWN0ZWQpCiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuY29udGVudEJyb3dzZXIu
c2hvd0NvbnRlbnRWaWV3KHRoaXMuX2Rpc3BsYXllZENvbnRlbnRWaWV3KTsKLSAgICB9LAorICAg
IH0KIAotICAgIF9yZWNvcmRpbmdMb2FkZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9yZWNvcmRp
bmdMb2FkZWQoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9yZWNvcmRpbmdTZWxlY3RlZChX
ZWJJbnNwZWN0b3IudGltZWxpbmVNYW5hZ2VyLmFjdGl2ZVJlY29yZGluZyk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfdGltZWxpbmVBZGRlZDogZnVuY3Rpb24odGltZWxpbmVPckV2ZW50KQorICAg
IF90aW1lbGluZUFkZGVkKHRpbWVsaW5lT3JFdmVudCkKICAgICB7CiAgICAgICAgIHZhciB0aW1l
bGluZSA9IHRpbWVsaW5lT3JFdmVudDsKICAgICAgICAgaWYgKCEodGltZWxpbmUgaW5zdGFuY2Vv
ZiBXZWJJbnNwZWN0b3IuVGltZWxpbmUpKQpAQCAtNDY1LDcgKzQ0MCw3IEBAIFdlYkluc3BlY3Rv
ci5UaW1lbGluZVNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KCF0aGlzLl90aW1lbGluZVRyZWVFbGVtZW50TWFwLmhhcyh0aW1lbGluZSksIHRpbWVsaW5l
KTsKIAogICAgICAgICB2YXIgdGltZWxpbmVUcmVlRWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3Iu
R2VuZXJhbFRyZWVFbGVtZW50KFt0aW1lbGluZS5pY29uQ2xhc3NOYW1lLCBXZWJJbnNwZWN0b3Iu
VGltZWxpbmVTaWRlYmFyUGFuZWwuTGFyZ2VJY29uU3R5bGVDbGFzc10sIHRpbWVsaW5lLmRpc3Bs
YXlOYW1lLCBudWxsLCB0aW1lbGluZSk7Ci0gICAgICAgIGNvbnN0IHRvb2x0aXAgPSBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIkNsb3NlICVzIHRpbWVsaW5lIHZpZXciKS5mb3JtYXQodGltZWxpbmUu
ZGlzcGxheU5hbWUpOworICAgICAgICB2YXIgdG9vbHRpcCA9IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiQ2xvc2UgJXMgdGltZWxpbmUgdmlldyIpLmZvcm1hdCh0aW1lbGluZS5kaXNwbGF5TmFtZSk7
CiAgICAgICAgIHdyYXBwZWRTVkdEb2N1bWVudChwbGF0Zm9ybUltYWdlUGF0aCgiQ2xvc2VMYXJn
ZS5zdmciKSwgV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLkNsb3NlQnV0dG9uU3R5
bGVDbGFzcywgdG9vbHRpcCwgZnVuY3Rpb24oZWxlbWVudCkgewogICAgICAgICAgICAgdmFyIGJ1
dHRvbiA9IG5ldyBXZWJJbnNwZWN0b3IuVHJlZUVsZW1lbnRTdGF0dXNCdXR0b24oZWxlbWVudCk7
CiAgICAgICAgICAgICBidXR0b24uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVHJlZUVs
ZW1lbnRTdGF0dXNCdXR0b24uRXZlbnQuQ2xpY2tlZCwgdGhpcy5zaG93VGltZWxpbmVPdmVydmll
dywgdGhpcyk7CkBAIC00NzUsMjQgKzQ1MCwyNCBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRl
YmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl90aW1lbGluZVRyZWVFbGVtZW50
TWFwLnNldCh0aW1lbGluZSwgdGltZWxpbmVUcmVlRWxlbWVudCk7CiAKICAgICAgICAgdGhpcy5f
dGltZWxpbmVDb3VudENoYW5nZWQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF90aW1lbGluZVJl
bW92ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF90aW1lbGluZVJlbW92ZWQoZXZlbnQpCiAgICAg
ewogICAgICAgICB2YXIgdGltZWxpbmUgPSBldmVudC5kYXRhLnRpbWVsaW5lOwogICAgICAgICBj
b25zb2xlLmFzc2VydCh0aW1lbGluZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5UaW1lbGluZSwg
dGltZWxpbmUpOwogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl90aW1lbGluZVRyZWVFbGVt
ZW50TWFwLmhhcyh0aW1lbGluZSksIHRpbWVsaW5lKTsKIAogICAgICAgICB2YXIgdGltZWxpbmVU
cmVlRWxlbWVudCA9IHRoaXMuX3RpbWVsaW5lVHJlZUVsZW1lbnRNYXAudGFrZSh0aW1lbGluZSk7
Ci0gICAgICAgIGNvbnN0IHNob3VsZFN1cHByZXNzT25EZXNlbGVjdCA9IGZhbHNlOwotICAgICAg
ICBjb25zdCBzaG91bGRTdXBwcmVzc1NlbGVjdFNpYmxpbmcgPSB0cnVlOworICAgICAgICB2YXIg
c2hvdWxkU3VwcHJlc3NPbkRlc2VsZWN0ID0gZmFsc2U7CisgICAgICAgIHZhciBzaG91bGRTdXBw
cmVzc1NlbGVjdFNpYmxpbmcgPSB0cnVlOwogICAgICAgICB0aGlzLl90aW1lbGluZXNUcmVlT3V0
bGluZS5yZW1vdmVDaGlsZCh0aW1lbGluZVRyZWVFbGVtZW50LCBzaG91bGRTdXBwcmVzc09uRGVz
ZWxlY3QsIHNob3VsZFN1cHByZXNzU2VsZWN0U2libGluZyk7CiAgICAgICAgIHRoaXMuX3RpbWVs
aW5lVHJlZUVsZW1lbnRNYXAuZGVsZXRlKHRpbWVsaW5lKTsKIAogICAgICAgICB0aGlzLl90aW1l
bGluZUNvdW50Q2hhbmdlZCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX3RpbWVsaW5lQ291bnRD
aGFuZ2VkOiBmdW5jdGlvbigpCisgICAgX3RpbWVsaW5lQ291bnRDaGFuZ2VkKCkKICAgICB7CiAg
ICAgICAgIHZhciBwcmV2aW91c1RyZWVFbGVtZW50ID0gbnVsbDsKICAgICAgICAgZm9yICh2YXIg
dHJlZUVsZW1lbnQgb2YgdGhpcy5fdGltZWxpbmVUcmVlRWxlbWVudE1hcC52YWx1ZXMoKSkgewpA
QCAtNTA0LDE2ICs0NzksMTYgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgIHByZXZpb3VzVHJlZUVsZW1lbnQgPSB0cmVlRWxlbWVu
dDsKICAgICAgICAgfQogCi0gICAgICAgIGNvbnN0IHRpbWVsaW5lSGVpZ2h0ID0gMzY7Ci0gICAg
ICAgIGNvbnN0IGV2ZW50VGl0bGVCYXJPZmZzZXQgPSA1MTsKLSAgICAgICAgY29uc3QgY29udGVu
dEVsZW1lbnRPZmZzZXQgPSA3NDsKKyAgICAgICAgdmFyIHRpbWVsaW5lSGVpZ2h0ID0gMzY7Cisg
ICAgICAgIHZhciBldmVudFRpdGxlQmFyT2Zmc2V0ID0gNTE7CisgICAgICAgIHZhciBjb250ZW50
RWxlbWVudE9mZnNldCA9IDc0OwogICAgICAgICB2YXIgdGltZWxpbmVDb3VudCA9IHRoaXMuX2Rp
c3BsYXllZFJlY29yZGluZy50aW1lbGluZXMuc2l6ZTsKICAgICAgICAgdGhpcy5fdGltZWxpbmVz
Q29udGVudENvbnRhaW5lckVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gKHRpbWVsaW5lSGVpZ2h0ICog
dGltZWxpbmVDb3VudCkgKyAicHgiOwogICAgICAgICB0aGlzLl90aW1lbGluZUV2ZW50c1RpdGxl
QmFyRWxlbWVudC5zdHlsZS50b3AgPSAodGltZWxpbmVIZWlnaHQgKiB0aW1lbGluZUNvdW50ICsg
ZXZlbnRUaXRsZUJhck9mZnNldCkgKyAicHgiOwogICAgICAgICB0aGlzLmNvbnRlbnRFbGVtZW50
LnN0eWxlLnRvcCA9ICh0aW1lbGluZUhlaWdodCAqIHRpbWVsaW5lQ291bnQgKyBjb250ZW50RWxl
bWVudE9mZnNldCkgKyAicHgiOwotICAgIH0sCisgICAgfQogCi0gICAgX3JlY29yZEdseXBoTW91
c2VkT3ZlcjogZnVuY3Rpb24oZXZlbnQpCisgICAgX3JlY29yZEdseXBoTW91c2VkT3ZlcihldmVu
dCkKICAgICB7CiAgICAgICAgIHRoaXMuX3JlY29yZEdseXBoRWxlbWVudC5jbGFzc0xpc3QucmVt
b3ZlKFdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5SZWNvcmRHbHlwaFJlY29yZGlu
Z0ZvcmNlZFN0eWxlQ2xhc3MpOwogCkBAIC01MjEsOSArNDk2LDkgQEAgV2ViSW5zcGVjdG9yLlRp
bWVsaW5lU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX3JlY29y
ZFN0YXR1c0VsZW1lbnQudGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0b3Ag
UmVjb3JkaW5nIik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHRoaXMuX3JlY29yZFN0YXR1
c0VsZW1lbnQudGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0YXJ0IFJlY29y
ZGluZyIpOwotICAgIH0sCisgICAgfQogCi0gICAgX3JlY29yZEdseXBoTW91c2VkT3V0OiBmdW5j
dGlvbihldmVudCkKKyAgICBfcmVjb3JkR2x5cGhNb3VzZWRPdXQoZXZlbnQpCiAgICAgewogICAg
ICAgICB0aGlzLl9yZWNvcmRHbHlwaEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0
b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuUmVjb3JkR2x5cGhSZWNvcmRpbmdGb3JjZWRTdHlsZUNs
YXNzKTsKIApAQCAtNTMxLDkgKzUwNiw5IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQ
YW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9yZWNvcmRTdGF0dXNFbGVtZW50
LnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZWNvcmRpbmciKTsKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgdGhpcy5fcmVjb3JkU3RhdHVzRWxlbWVudC50ZXh0Q29udGVu
dCA9ICIiOwotICAgIH0sCisgICAgfQogCi0gICAgX3JlY29yZEdseXBoQ2xpY2tlZDogZnVuY3Rp
b24oZXZlbnQpCisgICAgX3JlY29yZEdseXBoQ2xpY2tlZChldmVudCkKICAgICB7CiAgICAgICAg
IC8vIEFkZCBmb3JjZWQgY2xhc3MgdG8gcHJldmVudCB0aGUgZ2x5cGggZnJvbSBzaG93aW5nIGEg
Y29uZnVzaW5nIHN0YXR1cyBhZnRlciBjbGljay4KICAgICAgICAgdGhpcy5fcmVjb3JkR2x5cGhF
bGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLlJl
Y29yZEdseXBoUmVjb3JkaW5nRm9yY2VkU3R5bGVDbGFzcyk7CkBAIC01NDcsMTkgKzUyMiwxOSBA
QCBXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgLy8gU2hvdyB0aGUgdGltZWxpbmUgdG8gd2hpY2ggZXZlbnRzIHdpbGwgYmUgYXBwZW5k
ZWQuCiAgICAgICAgICAgICB0aGlzLl9yZWNvcmRpbmdMb2FkZWQoKTsKICAgICAgICAgfQotICAg
IH0sCisgICAgfQogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgb25seSB1c2VkIHdoZW4gUmVw
bGF5QWdlbnQgaXMgYXZhaWxhYmxlLgogCi0gICAgX3VwZGF0ZVJlcGxheUludGVyZmFjZVZpc2li
aWxpdHk6IGZ1bmN0aW9uKCkKKyAgICBfdXBkYXRlUmVwbGF5SW50ZXJmYWNlVmlzaWJpbGl0eSgp
CiAgICAgewogICAgICAgICB2YXIgc2hvdWxkU2hvd1JlcGxheUludGVyZmFjZSA9IHdpbmRvdy5S
ZXBsYXlBZ2VudCAmJiBXZWJJbnNwZWN0b3Iuc2hvd1JlcGxheUludGVyZmFjZVNldHRpbmcudmFs
dWU7CiAKICAgICAgICAgdGhpcy5fc3RhdHVzQmFyRWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKFdl
Ykluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5IaWRkZW5TdHlsZUNsYXNzTmFtZSwgc2hv
dWxkU2hvd1JlcGxheUludGVyZmFjZSk7CiAgICAgICAgIHRoaXMuX25hdmlnYXRpb25CYXIuZWxl
bWVudC5jbGFzc0xpc3QudG9nZ2xlKFdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5I
aWRkZW5TdHlsZUNsYXNzTmFtZSwgIXNob3VsZFNob3dSZXBsYXlJbnRlcmZhY2UpOwotICAgIH0s
CisgICAgfQogCi0gICAgX2NvbnRleHRNZW51TmF2aWdhdGlvbkJhck9yU3RhdHVzQmFyOiBmdW5j
dGlvbigpCisgICAgX2NvbnRleHRNZW51TmF2aWdhdGlvbkJhck9yU3RhdHVzQmFyKCkKICAgICB7
CiAgICAgICAgIGlmICghd2luZG93LlJlcGxheUFnZW50KQogICAgICAgICAgICAgcmV0dXJuOwpA
QCAtNTc0LDkgKzU0OSw5IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5wcm90
b3R5cGUgPSB7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0
ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTaG93IFJlcGxheSBDb250cm9scyIpLCB0b2dnbGVS
ZXBsYXlJbnRlcmZhY2UpOwogICAgICAgICBjb250ZXh0TWVudS5zaG93KCk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfcmVwbGF5Q2FwdHVyZUJ1dHRvbkNsaWNrZWQ6IGZ1bmN0aW9uKCkKKyAgICBf
cmVwbGF5Q2FwdHVyZUJ1dHRvbkNsaWNrZWQoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9y
ZXBsYXlDYXB0dXJlQnV0dG9uSXRlbS5hY3RpdmF0ZWQpIHsKICAgICAgICAgICAgIFdlYkluc3Bl
Y3Rvci5yZXBsYXlNYW5hZ2VyLnN0YXJ0Q2FwdHVyaW5nKCk7CkBAIC01OTEsMzQgKzU2Niw1NyBA
QCBXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogCiAgICAg
ICAgICAgICB0aGlzLl9yZXBsYXlDYXB0dXJlQnV0dG9uSXRlbS5lbmFibGVkID0gZmFsc2U7CiAg
ICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIF9yZXBsYXlQYXVzZVJlc3VtZUJ1dHRvbkNs
aWNrZWQ6IGZ1bmN0aW9uKCkKKyAgICBfcmVwbGF5UGF1c2VSZXN1bWVCdXR0b25DbGlja2VkKCkK
ICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9yZXBsYXlQYXVzZVJlc3VtZUJ1dHRvbkl0ZW0udG9n
Z2xlZCkKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5yZXBsYXlNYW5hZ2VyLnBhdXNlUGxheWJh
Y2soKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnJlcGxheU1hbmFn
ZXIucmVwbGF5VG9Db21wbGV0aW9uKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY2FwdHVyZVN0
YXJ0ZWQ6IGZ1bmN0aW9uKCkKKyAgICBfY2FwdHVyZVN0YXJ0ZWQoKQogICAgIHsKICAgICAgICAg
dGhpcy5fcmVwbGF5Q2FwdHVyZUJ1dHRvbkl0ZW0uZW5hYmxlZCA9IHRydWU7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfY2FwdHVyZVN0b3BwZWQ6IGZ1bmN0aW9uKCkKKyAgICBfY2FwdHVyZVN0b3Bw
ZWQoKQogICAgIHsKICAgICAgICAgdGhpcy5fcmVwbGF5Q2FwdHVyZUJ1dHRvbkl0ZW0uYWN0aXZh
dGVkID0gZmFsc2U7CiAgICAgICAgIHRoaXMuX3JlcGxheVBhdXNlUmVzdW1lQnV0dG9uSXRlbS5l
bmFibGVkID0gdHJ1ZTsKLSAgICB9LAorICAgIH0KIAotICAgIF9wbGF5YmFja1N0YXJ0ZWQ6IGZ1
bmN0aW9uKCkKKyAgICBfcGxheWJhY2tTdGFydGVkKCkKICAgICB7CiAgICAgICAgIHRoaXMuX3Jl
cGxheVBhdXNlUmVzdW1lQnV0dG9uSXRlbS50b2dnbGVkID0gdHJ1ZTsKLSAgICB9LAorICAgIH0K
IAotICAgIF9wbGF5YmFja1BhdXNlZDogZnVuY3Rpb24oKQorICAgIF9wbGF5YmFja1BhdXNlZCgp
CiAgICAgewogICAgICAgICB0aGlzLl9yZXBsYXlQYXVzZVJlc3VtZUJ1dHRvbkl0ZW0udG9nZ2xl
ZCA9IGZhbHNlOwogICAgIH0KIH07CisKK1dlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5l
bC5IaWRkZW5TdHlsZUNsYXNzTmFtZSA9ICJoaWRkZW4iOworV2ViSW5zcGVjdG9yLlRpbWVsaW5l
U2lkZWJhclBhbmVsLlN0YXR1c0JhclN0eWxlQ2xhc3MgPSAic3RhdHVzLWJhciI7CitXZWJJbnNw
ZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuUmVjb3JkR2x5cGhTdHlsZUNsYXNzID0gInJlY29y
ZC1nbHlwaCI7CitXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuUmVjb3JkR2x5cGhS
ZWNvcmRpbmdTdHlsZUNsYXNzID0gInJlY29yZGluZyI7CitXZWJJbnNwZWN0b3IuVGltZWxpbmVT
aWRlYmFyUGFuZWwuUmVjb3JkR2x5cGhSZWNvcmRpbmdGb3JjZWRTdHlsZUNsYXNzID0gImZvcmNl
ZCI7CitXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuUmVjb3JkU3RhdHVzU3R5bGVD
bGFzcyA9ICJyZWNvcmQtc3RhdHVzIjsKK1dlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5l
bC5UaXRsZUJhclN0eWxlQ2xhc3MgPSAidGl0bGUtYmFyIjsKK1dlYkluc3BlY3Rvci5UaW1lbGlu
ZVNpZGViYXJQYW5lbC5UaW1lbGluZXNUaXRsZUJhclN0eWxlQ2xhc3MgPSAidGltZWxpbmVzIjsK
K1dlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5UaW1lbGluZUV2ZW50c1RpdGxlQmFy
U3R5bGVDbGFzcyA9ICJ0aW1lbGluZS1ldmVudHMiOworV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lk
ZWJhclBhbmVsLlRpbWVsaW5lc0NvbnRlbnRDb250YWluZXJTdHlsZUNsYXNzID0gInRpbWVsaW5l
cy1jb250ZW50IjsKK1dlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5DbG9zZUJ1dHRv
blN0eWxlQ2xhc3MgPSAiY2xvc2UtYnV0dG9uIjsKK1dlYkluc3BlY3Rvci5UaW1lbGluZVNpZGVi
YXJQYW5lbC5MYXJnZUljb25TdHlsZUNsYXNzID0gImxhcmdlIjsKK1dlYkluc3BlY3Rvci5UaW1l
bGluZVNpZGViYXJQYW5lbC5TdG9wd2F0Y2hJY29uU3R5bGVDbGFzcyA9ICJzdG9wd2F0Y2gtaWNv
biI7CitXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuTmV0d29ya0ljb25TdHlsZUNs
YXNzID0gIm5ldHdvcmstaWNvbiI7CitXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwu
Q29sb3JzSWNvblN0eWxlQ2xhc3MgPSAiY29sb3JzLWljb24iOworV2ViSW5zcGVjdG9yLlRpbWVs
aW5lU2lkZWJhclBhbmVsLlNjcmlwdEljb25TdHlsZUNsYXNzID0gInNjcmlwdC1pY29uIjsKK1dl
Ykluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5SdW5Mb29wSWNvblN0eWxlQ2xhc3MgPSAi
cnVubG9vcC1pY29uIjsKK1dlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5UaW1lbGlu
ZVJlY29yZGluZ0NvbnRlbnRWaWV3U2hvd2luZ1N0eWxlQ2xhc3MgPSAidGltZWxpbmUtcmVjb3Jk
aW5nLWNvbnRlbnQtdmlldy1zaG93aW5nIjsKKworV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJh
clBhbmVsLlNob3dpbmdUaW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3Q29va2llS2V5ID0gInRp
bWVsaW5lLXNpZGViYXItcGFuZWwtc2hvd2luZy10aW1lbGluZS1yZWNvcmRpbmctY29udGVudC12
aWV3IjsKK1dlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5TZWxlY3RlZFRpbWVsaW5l
Vmlld0lkZW50aWZpZXJDb29raWVLZXkgPSAidGltZWxpbmUtc2lkZWJhci1wYW5lbC1zZWxlY3Rl
ZC10aW1lbGluZS12aWV3LWlkZW50aWZpZXIiOworV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJh
clBhbmVsLk92ZXJ2aWV3VGltZWxpbmVJZGVudGlmaWVyQ29va2llVmFsdWUgPSAib3ZlcnZpZXci
Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>