<?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>143128</bug_id>
          
          <creation_ts>2015-03-26 23:38:48 -0700</creation_ts>
          <short_desc>Web Inspector: Convert more misc View 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>1080555</commentid>
    <comment_count>0</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-03-26 23:38:48 -0700</bug_when>
    <thetext>A grab bag of misc View classes that are simple and easy to test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080556</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-03-26 23:39:02 -0700</bug_when>
    <thetext>&lt;rdar://problem/20322584&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080557</commentid>
    <comment_count>2</comment_count>
      <attachid>249555</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-03-26 23:41:47 -0700</bug_when>
    <thetext>Created attachment 249555
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080558</commentid>
    <comment_count>3</comment_count>
      <attachid>249556</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-03-26 23:42:47 -0700</bug_when>
    <thetext>Created attachment 249556
Patch (Ignore Space)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080562</commentid>
    <comment_count>4</comment_count>
      <attachid>249556</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-03-26 23:49:21 -0700</bug_when>
    <thetext>Comment on attachment 249556
Patch (Ignore Space)

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

r=me

&gt; Source/WebInspectorUI/UserInterface/Views/DashboardContainerView.js:280
&gt; +WebInspector.DashboardContainerView.AdvanceDirection = {
&gt; +    Forward: Symbol(&quot;dashboard-container-view-advance-direction-forward&quot;),
&gt; +    Backward: Symbol(&quot;dashboard-container-view-advance-direction-backward&quot;),
&gt; +    None: Symbol(&quot;dashboard-container-view-advance-direction-none&quot;)
&gt; +};
&gt; +

Nice, moving to Symbol!

&gt; Source/WebInspectorUI/UserInterface/Views/DashboardView.js:43
&gt; +    static create(representedObject)

Yay!

&gt; Source/WebInspectorUI/UserInterface/Views/DefaultDashboardView.js:106
&gt;          Object.defineProperty(item, &quot;text&quot;,
&gt;          {
&gt; -            set: function(newText)
&gt; +            set(newText)

So I think I told mattbaker the other day that I don&apos;t like this in Object.defineProperty. Since this is really about creating a set property with a function handler, not a method. But having thought more about this, the syntax is pretty cool, cause its the setter syntax inside the descriptor. I could go either way here.

&gt; Source/WebInspectorUI/UserInterface/Views/ObjectTreeView.js:-84
&gt; -WebInspector.ObjectTreeView.Mode = {
&gt; -    Properties: Symbol(&quot;object-tree-properties&quot;),
&gt; -    API: Symbol(&quot;object-tree-api&quot;),
&gt; -};

You will have conflicts with this file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080565</commentid>
    <comment_count>5</comment_count>
      <attachid>249555</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-03-27 00:28:06 -0700</bug_when>
    <thetext>Comment on attachment 249555
Patch

https://trac.webkit.org/r182055</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249555</attachid>
            <date>2015-03-26 23:41:47 -0700</date>
            <delta_ts>2015-03-26 23:49:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143128-20150326234114.patch</filename>
            <type>text/plain</type>
            <size>111214</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyMDQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBl
ZGY4YTg5ZmZkZTRmMWU0YjlmNjcwMTI5YjVkZWY3NjI0ZTlkOWRhLi5mYTI2MmU3NDU5ZDFmYzQ5
ZmEzMjM4NzEzMTc0ZjA4MTJiNzNhZjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwyOCBAQAogMjAxNS0wMy0yNiAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5j
b20+CiAKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQ29udmVydCBtb3JlIG1pc2MgVmlldyBjbGFz
c2VzIHRvIEVTNgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQzMTI4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcuanM6Cisg
ICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9Db21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsLmpz
OgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRGFzaGJvYXJkQ29udGFpbmVyVmlldy5q
czoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0Rhc2hib2FyZFZpZXcuanM6CisgICAg
ICAgICogVXNlckludGVyZmFjZS9WaWV3cy9EZWJ1Z2dlckRhc2hib2FyZFZpZXcuanM6CisgICAg
ICAgICogVXNlckludGVyZmFjZS9WaWV3cy9EZWZhdWx0RGFzaGJvYXJkVmlldy5qczoKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0ZpbHRlckJhckJ1dHRvbi5qczoKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL1ZpZXdzL01ldHJpY3NTdHlsZURldGFpbHNQYW5lbC5qczoKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1ZpZXdzL09iamVjdFByZXZpZXdWaWV3LmpzOgorICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0VHJlZVZpZXcuanM6CisgICAgICAgICogVXNlckludGVy
ZmFjZS9WaWV3cy9RdWlja0NvbnNvbGUuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3
cy9SZXBsYXlEYXNoYm9hcmRWaWV3LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3Mv
UnVsZXNTdHlsZURldGFpbHNQYW5lbC5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdz
L1N0eWxlRGV0YWlsc1BhbmVsLmpzOgorICAgICAgICBDb252ZXJ0ZWQgdG8gRVM2IGNsYXNzZXMu
CisKKzIwMTUtMDMtMjYgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgorCiAg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IENvbnZlcnQgVGV4dEVkaXRvciBjbGFzc2VzIHRvIEVTNgog
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzMTI3CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Nv
bXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9Db21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3LmpzCmluZGV4IGU1YmUzNWQ3
Y2Q2ZWFiYjAyZmUxOTBlMjdhMWEwMTBiMGQ0OWU0MzUuLjJkNzBiZDI1ZDIwYjQ2OWE3Yjc4YWI2
MDMxYzEwMTg4N2Y5Y2ZlYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0NvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29tcGxldGlvblN1Z2dlc3Rpb25z
Vmlldy5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjMsNTAgKzIzLDQzIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkNvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcgPSBmdW5j
dGlvbihkZWxlZ2F0ZSkKK1dlYkluc3BlY3Rvci5Db21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3ID0g
Y2xhc3MgQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmpl
Y3QKIHsKLSAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVj
dCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KLSAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0
LmNhbGwodGhpcyk7Ci0KLSAgICB0aGlzLl9kZWxlZ2F0ZSA9IGRlbGVnYXRlIHx8IG51bGw7Ci0K
LSAgICB0aGlzLl9zZWxlY3RlZEluZGV4ID0gTmFOOworICAgIGNvbnN0cnVjdG9yKGRlbGVnYXRl
KQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAotICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICB0aGlzLl9lbGVtZW50LmNsYXNzTmFtZSA9IFdl
Ykluc3BlY3Rvci5Db21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3LlN0eWxlQ2xhc3NOYW1lOworICAg
ICAgICB0aGlzLl9kZWxlZ2F0ZSA9IGRlbGVnYXRlIHx8IG51bGw7CiAKLSAgICB0aGlzLl9jb250
YWluZXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5f
Y29udGFpbmVyRWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuQ29tcGxldGlvblN1Z2dl
c3Rpb25zVmlldy5Db250YWluZXJFbGVtZW50U3R5bGVDbGFzc05hbWU7Ci0gICAgdGhpcy5fY29u
dGFpbmVyRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9tb3VzZURv
d24uYmluZCh0aGlzKSk7Ci0gICAgdGhpcy5fY29udGFpbmVyRWxlbWVudC5hZGRFdmVudExpc3Rl
bmVyKCJtb3VzZXVwIiwgdGhpcy5fbW91c2VVcC5iaW5kKHRoaXMpKTsKLSAgICB0aGlzLl9jb250
YWluZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5faXRlbUNsaWNrZWQu
YmluZCh0aGlzKSk7Ci0gICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jb250YWlu
ZXJFbGVtZW50KTsKLX07CisgICAgICAgIHRoaXMuX3NlbGVjdGVkSW5kZXggPSBOYU47CiAKLVdl
Ykluc3BlY3Rvci5Db21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3LlN0eWxlQ2xhc3NOYW1lID0gImNv
bXBsZXRpb24tc3VnZ2VzdGlvbnMiOwotV2ViSW5zcGVjdG9yLkNvbXBsZXRpb25TdWdnZXN0aW9u
c1ZpZXcuQ29udGFpbmVyRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gImNvbXBsZXRpb24tc3VnZ2Vz
dGlvbnMtY29udGFpbmVyIjsKLVdlYkluc3BlY3Rvci5Db21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3
Lkl0ZW1FbGVtZW50U3R5bGVDbGFzc05hbWUgPSAiaXRlbSI7Ci1XZWJJbnNwZWN0b3IuQ29tcGxl
dGlvblN1Z2dlc3Rpb25zVmlldy5TZWxlY3RlZEl0ZW1TdHlsZUNsYXNzTmFtZSA9ICJzZWxlY3Rl
ZCI7CisgICAgICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuQ29tcGxl
dGlvblN1Z2dlc3Rpb25zVmlldy5TdHlsZUNsYXNzTmFtZTsKIAotV2ViSW5zcGVjdG9yLkNvbXBs
ZXRpb25TdWdnZXN0aW9uc1ZpZXcucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJ
bnNwZWN0b3IuQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldywKKyAgICAgICAgdGhpcy5fY29udGFp
bmVyRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlz
Ll9jb250YWluZXJFbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5Db21wbGV0aW9uU3Vn
Z2VzdGlvbnNWaWV3LkNvbnRhaW5lckVsZW1lbnRTdHlsZUNsYXNzTmFtZTsKKyAgICAgICAgdGhp
cy5fY29udGFpbmVyRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9t
b3VzZURvd24uYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX2NvbnRhaW5lckVsZW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcigibW91c2V1cCIsIHRoaXMuX21vdXNlVXAuYmluZCh0aGlzKSk7CisgICAg
ICAgIHRoaXMuX2NvbnRhaW5lckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlz
Ll9pdGVtQ2xpY2tlZC5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRD
aGlsZCh0aGlzLl9jb250YWluZXJFbGVtZW50KTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAog
ICAgIGdldCBkZWxlZ2F0ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZGVsZWdhdGU7
Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgdmlzaWJsZSgpCiAgICAgewogICAgICAgICByZXR1
cm4gISF0aGlzLl9lbGVtZW50LnBhcmVudE5vZGU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQg
c2VsZWN0ZWRJbmRleCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRJbmRl
eDsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBzZWxlY3RlZEluZGV4KGluZGV4KQogICAgIHsK
QEAgLTgyLDkgKzc1LDkgQEAgV2ViSW5zcGVjdG9yLkNvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcu
cHJvdG90eXBlID0gewogCiAgICAgICAgIHNlbGVjdGVkSXRlbUVsZW1lbnQuY2xhc3NMaXN0LmFk
ZChXZWJJbnNwZWN0b3IuQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldy5TZWxlY3RlZEl0ZW1TdHls
ZUNsYXNzTmFtZSk7CiAgICAgICAgIHNlbGVjdGVkSXRlbUVsZW1lbnQuc2Nyb2xsSW50b1ZpZXdJ
Zk5lZWRlZChmYWxzZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzZWxlY3ROZXh0OiBmdW5jdGlv
bigpCisgICAgc2VsZWN0TmV4dCgpCiAgICAgewogICAgICAgICB2YXIgY291bnQgPSB0aGlzLl9j
b250YWluZXJFbGVtZW50LmNoaWxkcmVuLmxlbmd0aDsKIApAQCAtOTYsOSArODksOSBAQCBXZWJJ
bnNwZWN0b3IuQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAg
IHZhciBzZWxlY3RlZEl0ZW1FbGVtZW50ID0gdGhpcy5fc2VsZWN0ZWRJdGVtRWxlbWVudDsKICAg
ICAgICAgaWYgKHNlbGVjdGVkSXRlbUVsZW1lbnQgJiYgdGhpcy5fZGVsZWdhdGUgJiYgdHlwZW9m
IHRoaXMuX2RlbGVnYXRlLmNvbXBsZXRpb25TdWdnZXN0aW9uc1NlbGVjdGVkQ29tcGxldGlvbiA9
PT0gImZ1bmN0aW9uIikKICAgICAgICAgICAgIHRoaXMuX2RlbGVnYXRlLmNvbXBsZXRpb25TdWdn
ZXN0aW9uc1NlbGVjdGVkQ29tcGxldGlvbih0aGlzLCBzZWxlY3RlZEl0ZW1FbGVtZW50LnRleHRD
b250ZW50KTsKLSAgICB9LAorICAgIH0KIAotICAgIHNlbGVjdFByZXZpb3VzOiBmdW5jdGlvbigp
CisgICAgc2VsZWN0UHJldmlvdXMoKQogICAgIHsKICAgICAgICAgaWYgKGlzTmFOKHRoaXMuX3Nl
bGVjdGVkSW5kZXgpIHx8IHRoaXMuX3NlbGVjdGVkSW5kZXggPT09IDApCiAgICAgICAgICAgICB0
aGlzLnNlbGVjdGVkSW5kZXggPSB0aGlzLl9jb250YWluZXJFbGVtZW50LmNoaWxkcmVuLmxlbmd0
aCAtIDE7CkBAIC0xMDgsMTQgKzEwMSwxNCBAQCBXZWJJbnNwZWN0b3IuQ29tcGxldGlvblN1Z2dl
c3Rpb25zVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBzZWxlY3RlZEl0ZW1FbGVtZW50
ID0gdGhpcy5fc2VsZWN0ZWRJdGVtRWxlbWVudDsKICAgICAgICAgaWYgKHNlbGVjdGVkSXRlbUVs
ZW1lbnQgJiYgdGhpcy5fZGVsZWdhdGUgJiYgdHlwZW9mIHRoaXMuX2RlbGVnYXRlLmNvbXBsZXRp
b25TdWdnZXN0aW9uc1NlbGVjdGVkQ29tcGxldGlvbiA9PT0gImZ1bmN0aW9uIikKICAgICAgICAg
ICAgIHRoaXMuX2RlbGVnYXRlLmNvbXBsZXRpb25TdWdnZXN0aW9uc1NlbGVjdGVkQ29tcGxldGlv
bih0aGlzLCBzZWxlY3RlZEl0ZW1FbGVtZW50LnRleHRDb250ZW50KTsKLSAgICB9LAorICAgIH0K
IAotICAgIGlzSGFuZGxpbmdDbGlja0V2ZW50OiBmdW5jdGlvbigpCisgICAgaXNIYW5kbGluZ0Ns
aWNrRXZlbnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX21vdXNlSXNEb3duOwotICAg
IH0sCisgICAgfQogCi0gICAgc2hvdzogZnVuY3Rpb24oYW5jaG9yQm91bmRzKQorICAgIHNob3co
YW5jaG9yQm91bmRzKQogICAgIHsKICAgICAgICAgLy8gTWVhc3VyZSB0aGUgY29udGFpbmVyIHNv
IHdlIGNhbiBrbm93IHRoZSBpbnRyaW5zaWMgc2l6ZSBvZiB0aGUgaXRlbXMuCiAgICAgICAgIHRo
aXMuX2NvbnRhaW5lckVsZW1lbnQuc3R5bGUucG9zaXRpb24gPSAiYWJzb2x1dGUiOwpAQCAtMTI4
LDkgKzEyMSw5IEBAIFdlYkluc3BlY3Rvci5Db21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jb250YWlu
ZXJFbGVtZW50KTsKIAogICAgICAgICAvLyBMYXkgb3V0IHRoZSBzdWdnZXN0LWJveCByZWxhdGl2
ZSB0byB0aGUgYW5jaG9yQm91bmRzLgotICAgICAgICBjb25zdCBtYXJnaW4gPSAxMDsKLSAgICAg
ICAgY29uc3QgaG9yaXpvbnRhbFBhZGRpbmcgPSAyMjsKLSAgICAgICAgY29uc3QgYWJzb2x1dGVN
YXhpbXVtSGVpZ2h0ID0gMTYwOworICAgICAgICB2YXIgbWFyZ2luID0gMTA7CisgICAgICAgIHZh
ciBob3Jpem9udGFsUGFkZGluZyA9IDIyOworICAgICAgICB2YXIgYWJzb2x1dGVNYXhpbXVtSGVp
Z2h0ID0gMTYwOwogCiAgICAgICAgIHZhciB4ID0gYW5jaG9yQm91bmRzLm9yaWdpbi54OwogICAg
ICAgICB2YXIgeSA9IGFuY2hvckJvdW5kcy5vcmlnaW4ueSArIGFuY2hvckJvdW5kcy5zaXplLmhl
aWdodDsKQEAgLTE2MSwxNCArMTU0LDE0IEBAIFdlYkluc3BlY3Rvci5Db21wbGV0aW9uU3VnZ2Vz
dGlvbnNWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fZWxlbWVudC5zdHlsZS5oZWln
aHQgPSBoZWlnaHQgKyAicHgiOwogCiAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo
dGhpcy5fZWxlbWVudCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBoaWRlOiBmdW5jdGlvbigpCisg
ICAgaGlkZSgpCiAgICAgewogICAgICAgICB0aGlzLl9lbGVtZW50LnJlbW92ZSgpOwotICAgIH0s
CisgICAgfQogCi0gICAgdXBkYXRlOiBmdW5jdGlvbihjb21wbGV0aW9ucywgc2VsZWN0ZWRJbmRl
eCkKKyAgICB1cGRhdGUoY29tcGxldGlvbnMsIHNlbGVjdGVkSW5kZXgpCiAgICAgewogICAgICAg
ICB0aGlzLl9jb250YWluZXJFbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CiAKQEAgLTE4Myw3ICsx
NzYsNyBAQCBXZWJJbnNwZWN0b3IuQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldy5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICAgICAgaXRlbUVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0
b3IuQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldy5TZWxlY3RlZEl0ZW1TdHlsZUNsYXNzTmFtZSk7
CiAgICAgICAgICAgICB0aGlzLl9jb250YWluZXJFbGVtZW50LmFwcGVuZENoaWxkKGl0ZW1FbGVt
ZW50KTsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCkBAIC0x
OTUsMjMgKzE4OCwyMyBAQCBXZWJJbnNwZWN0b3IuQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldy5w
cm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBlbGVtZW50ID0gdGhpcy5fY29udGFpbmVyRWxlbWVu
dC5jaGlsZHJlblt0aGlzLl9zZWxlY3RlZEluZGV4XSB8fCBudWxsOwogICAgICAgICBjb25zb2xl
LmFzc2VydChlbGVtZW50KTsKICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfbW91c2VEb3duOiBmdW5jdGlvbihldmVudCkKKyAgICBfbW91c2VEb3duKGV2ZW50
KQogICAgIHsKICAgICAgICAgaWYgKGV2ZW50LmJ1dHRvbiAhPT0gMCkKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgdGhpcy5fbW91c2VJc0Rvd24gPSB0cnVlOwotICAgIH0sCisgICAgfQog
Ci0gICAgX21vdXNlVXA6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9tb3VzZVVwKGV2ZW50KQogICAg
IHsKICAgICAgICAgaWYgKGV2ZW50LmJ1dHRvbiAhPT0gMCkKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgdGhpcy5fbW91c2VJc0Rvd24gPSBmYWxzZTsKLSAgICB9LAorICAgIH0KIAotICAg
IF9pdGVtQ2xpY2tlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2l0ZW1DbGlja2VkKGV2ZW50KQog
ICAgIHsKICAgICAgICAgaWYgKGV2ZW50LmJ1dHRvbiAhPT0gMCkKICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTIyNiw0ICsyMTksNyBAQCBXZWJJbnNwZWN0b3IuQ29tcGxldGlvblN1Z2dlc3Rpb25z
Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLkNvbXBsZXRpb25T
dWdnZXN0aW9uc1ZpZXcucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3Qu
cHJvdG90eXBlOworV2ViSW5zcGVjdG9yLkNvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcuU3R5bGVD
bGFzc05hbWUgPSAiY29tcGxldGlvbi1zdWdnZXN0aW9ucyI7CitXZWJJbnNwZWN0b3IuQ29tcGxl
dGlvblN1Z2dlc3Rpb25zVmlldy5Db250YWluZXJFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAiY29t
cGxldGlvbi1zdWdnZXN0aW9ucy1jb250YWluZXIiOworV2ViSW5zcGVjdG9yLkNvbXBsZXRpb25T
dWdnZXN0aW9uc1ZpZXcuSXRlbUVsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJpdGVtIjsKK1dlYklu
c3BlY3Rvci5Db21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3LlNlbGVjdGVkSXRlbVN0eWxlQ2xhc3NO
YW1lID0gInNlbGVjdGVkIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0NvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db21wdXRlZFN0eWxlRGV0YWlsc1BhbmVs
LmpzCmluZGV4IDlhNTYyNmZkNGQ4MTQ5N2Q2NTZlOWU4YTA3MTYxMDkyYWYwOGQ1OTAuLmUxMDYx
ODZkNWFmM2UzMDQzZjY2YWI3ZjdhMzQ1Mjg1OGZkOGZhY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbXB1dGVkU3R5bGVEZXRhaWxzUGFu
ZWwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29t
cHV0ZWRTdHlsZURldGFpbHNQYW5lbC5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsODIgKzIzLDc5IEBACiAgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkNvbXB1dGVkU3R5bGVE
ZXRhaWxzUGFuZWwgPSBmdW5jdGlvbigpCitXZWJJbnNwZWN0b3IuQ29tcHV0ZWRTdHlsZURldGFp
bHNQYW5lbCA9IGNsYXNzIENvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwgZXh0ZW5kcyBXZWJJbnNw
ZWN0b3IuU3R5bGVEZXRhaWxzUGFuZWwKIHsKLSAgICBXZWJJbnNwZWN0b3IuU3R5bGVEZXRhaWxz
UGFuZWwuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbC5T
dHlsZUNsYXNzTmFtZSwgImNvbXB1dGVkIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb21wdXRl
ZCIpKTsKLQotICAgIHRoaXMuX2NvbXB1dGVkU3R5bGVTaG93QWxsU2V0dGluZyA9IG5ldyBXZWJJ
bnNwZWN0b3IuU2V0dGluZygiY29tcHV0ZWQtc3R5bGUtc2hvdy1hbGwiLCBmYWxzZSk7Ci0KLSAg
ICB2YXIgY29tcHV0ZWRTdHlsZVNob3dBbGxMYWJlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImxhYmVsIik7Ci0gICAgY29tcHV0ZWRTdHlsZVNob3dBbGxMYWJlbC50ZXh0Q29udGVudCA9IFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiU2hvdyBBbGwiKTsKKyAgICBjb25zdHJ1Y3RvcigpCisgICAg
eworICAgICAgICBzdXBlcihXZWJJbnNwZWN0b3IuQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbC5T
dHlsZUNsYXNzTmFtZSwgImNvbXB1dGVkIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb21wdXRl
ZCIpKTsKIAotICAgIHRoaXMuX2NvbXB1dGVkU3R5bGVTaG93QWxsQ2hlY2tib3ggPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOwotICAgIHRoaXMuX2NvbXB1dGVkU3R5bGVTaG93QWxs
Q2hlY2tib3gudHlwZSA9ICJjaGVja2JveCI7Ci0gICAgdGhpcy5fY29tcHV0ZWRTdHlsZVNob3dB
bGxDaGVja2JveC5jaGVja2VkID0gdGhpcy5fY29tcHV0ZWRTdHlsZVNob3dBbGxTZXR0aW5nLnZh
bHVlOwotICAgIHRoaXMuX2NvbXB1dGVkU3R5bGVTaG93QWxsQ2hlY2tib3guYWRkRXZlbnRMaXN0
ZW5lcigiY2hhbmdlIiwgdGhpcy5fY29tcHV0ZWRTdHlsZVNob3dBbGxDaGVja2JveFZhbHVlQ2hh
bmdlZC5iaW5kKHRoaXMpKTsKLSAgICBjb21wdXRlZFN0eWxlU2hvd0FsbExhYmVsLmFwcGVuZENo
aWxkKHRoaXMuX2NvbXB1dGVkU3R5bGVTaG93QWxsQ2hlY2tib3gpOworICAgICAgICB0aGlzLl9j
b21wdXRlZFN0eWxlU2hvd0FsbFNldHRpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLlNldHRpbmcoImNv
bXB1dGVkLXN0eWxlLXNob3ctYWxsIiwgZmFsc2UpOwogCi0gICAgdGhpcy5fcHJvcGVydGllc1Rl
eHRFZGl0b3IgPSBuZXcgV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9y
KHRoaXMpOwotICAgIHRoaXMuX3Byb3BlcnRpZXNUZXh0RWRpdG9yLnNob3dzSW1wbGljaXRQcm9w
ZXJ0aWVzID0gdGhpcy5fY29tcHV0ZWRTdHlsZVNob3dBbGxTZXR0aW5nLnZhbHVlOwotICAgIHRo
aXMuX3Byb3BlcnRpZXNUZXh0RWRpdG9yLmFsd2F5c1Nob3dQcm9wZXJ0eU5hbWVzID0gWyJkaXNw
bGF5IiwgIndpZHRoIiwgImhlaWdodCJdOwotICAgIHRoaXMuX3Byb3BlcnRpZXNUZXh0RWRpdG9y
LnNvcnRQcm9wZXJ0aWVzID0gdHJ1ZTsKKyAgICAgICAgdmFyIGNvbXB1dGVkU3R5bGVTaG93QWxs
TGFiZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsYWJlbCIpOworICAgICAgICBjb21wdXRl
ZFN0eWxlU2hvd0FsbExhYmVsLnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJT
aG93IEFsbCIpOwogCi0gICAgdmFyIHByb3BlcnRpZXNSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRl
dGFpbHNTZWN0aW9uUm93OwotICAgIHZhciBwcm9wZXJ0aWVzR3JvdXAgPSBuZXcgV2ViSW5zcGVj
dG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoW3Byb3BlcnRpZXNSb3ddKTsKLSAgICB2YXIgcHJvcGVy
dGllc1NlY3Rpb24gPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uKCJjb21wdXRlZC1z
dHlsZS1wcm9wZXJ0aWVzIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQcm9wZXJ0aWVzIiksIFtw
cm9wZXJ0aWVzR3JvdXBdLCBjb21wdXRlZFN0eWxlU2hvd0FsbExhYmVsKTsKKyAgICAgICAgdGhp
cy5fY29tcHV0ZWRTdHlsZVNob3dBbGxDaGVja2JveCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImlucHV0Iik7CisgICAgICAgIHRoaXMuX2NvbXB1dGVkU3R5bGVTaG93QWxsQ2hlY2tib3gudHlw
ZSA9ICJjaGVja2JveCI7CisgICAgICAgIHRoaXMuX2NvbXB1dGVkU3R5bGVTaG93QWxsQ2hlY2ti
b3guY2hlY2tlZCA9IHRoaXMuX2NvbXB1dGVkU3R5bGVTaG93QWxsU2V0dGluZy52YWx1ZTsKKyAg
ICAgICAgdGhpcy5fY29tcHV0ZWRTdHlsZVNob3dBbGxDaGVja2JveC5hZGRFdmVudExpc3RlbmVy
KCJjaGFuZ2UiLCB0aGlzLl9jb21wdXRlZFN0eWxlU2hvd0FsbENoZWNrYm94VmFsdWVDaGFuZ2Vk
LmJpbmQodGhpcykpOworICAgICAgICBjb21wdXRlZFN0eWxlU2hvd0FsbExhYmVsLmFwcGVuZENo
aWxkKHRoaXMuX2NvbXB1dGVkU3R5bGVTaG93QWxsQ2hlY2tib3gpOwogCi0gICAgcHJvcGVydGll
c1Jvdy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3Byb3BlcnRpZXNUZXh0RWRpdG9yLmVsZW1l
bnQpOworICAgICAgICB0aGlzLl9wcm9wZXJ0aWVzVGV4dEVkaXRvciA9IG5ldyBXZWJJbnNwZWN0
b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IodGhpcyk7CisgICAgICAgIHRoaXMuX3By
b3BlcnRpZXNUZXh0RWRpdG9yLnNob3dzSW1wbGljaXRQcm9wZXJ0aWVzID0gdGhpcy5fY29tcHV0
ZWRTdHlsZVNob3dBbGxTZXR0aW5nLnZhbHVlOworICAgICAgICB0aGlzLl9wcm9wZXJ0aWVzVGV4
dEVkaXRvci5hbHdheXNTaG93UHJvcGVydHlOYW1lcyA9IFsiZGlzcGxheSIsICJ3aWR0aCIsICJo
ZWlnaHQiXTsKKyAgICAgICAgdGhpcy5fcHJvcGVydGllc1RleHRFZGl0b3Iuc29ydFByb3BlcnRp
ZXMgPSB0cnVlOwogCi0gICAgLy8gUmVnaW9uIGZsb3cgbmFtZSBpcyB1c2VkIHRvIGRpc3BsYXkg
dGhlICJmbG93LWZyb20iIHByb3BlcnR5IG9mIHRoZSBSZWdpb24gQ29udGFpbmVycy4KLSAgICB0
aGlzLl9yZWdpb25GbG93RnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7
Ci0gICAgdGhpcy5fcmVnaW9uRmxvd0ZyYWdtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImltZyIpKS5jbGFzc05hbWUgPSAiaWNvbiI7Ci0gICAgdGhpcy5fcmVnaW9uRmxv
d05hbWVMYWJlbFZhbHVlID0gdGhpcy5fcmVnaW9uRmxvd0ZyYWdtZW50LmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKSk7CisgICAgICAgIHZhciBwcm9wZXJ0aWVzUm93
ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKyAgICAgICAgdmFyIHByb3Bl
cnRpZXNHcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbcHJvcGVy
dGllc1Jvd10pOworICAgICAgICB2YXIgcHJvcGVydGllc1NlY3Rpb24gPSBuZXcgV2ViSW5zcGVj
dG9yLkRldGFpbHNTZWN0aW9uKCJjb21wdXRlZC1zdHlsZS1wcm9wZXJ0aWVzIiwgV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJQcm9wZXJ0aWVzIiksIFtwcm9wZXJ0aWVzR3JvdXBdLCBjb21wdXRlZFN0
eWxlU2hvd0FsbExhYmVsKTsKIAotICAgIHZhciBnb1RvUmVnaW9uRmxvd0J1dHRvbiA9IHRoaXMu
X3JlZ2lvbkZsb3dGcmFnbWVudC5hcHBlbmRDaGlsZChXZWJJbnNwZWN0b3IuY3JlYXRlR29Ub0Fy
cm93QnV0dG9uKCkpOwotICAgIGdvVG9SZWdpb25GbG93QnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIo
ImNsaWNrIiwgdGhpcy5fZ29Ub1JlZ2lvbkZsb3dBcnJvd1dhc0NsaWNrZWQuYmluZCh0aGlzKSk7
CisgICAgICAgIHByb3BlcnRpZXNSb3cuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9wcm9wZXJ0
aWVzVGV4dEVkaXRvci5lbGVtZW50KTsKIAotICAgIHRoaXMuX3JlZ2lvbkZsb3dOYW1lUm93ID0g
bmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBsZVJvdyhXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIlJlZ2lvbiBGbG93IikpOwotICAgIHRoaXMuX3JlZ2lvbkZsb3dOYW1lUm93LmVsZW1l
bnQuY2xhc3NMaXN0LmFkZCgiY29udGVudC1mbG93LWxpbmsiKTsKKyAgICAgICAgLy8gUmVnaW9u
IGZsb3cgbmFtZSBpcyB1c2VkIHRvIGRpc3BsYXkgdGhlICJmbG93LWZyb20iIHByb3BlcnR5IG9m
IHRoZSBSZWdpb24gQ29udGFpbmVycy4KKyAgICAgICAgdGhpcy5fcmVnaW9uRmxvd0ZyYWdtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgICAgICB0aGlzLl9yZWdpb25G
bG93RnJhZ21lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIikpLmNs
YXNzTmFtZSA9ICJpY29uIjsKKyAgICAgICAgdGhpcy5fcmVnaW9uRmxvd05hbWVMYWJlbFZhbHVl
ID0gdGhpcy5fcmVnaW9uRmxvd0ZyYWdtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoInNwYW4iKSk7CiAKLSAgICAvLyBDb250ZW50IGZsb3cgbmFtZSBpcyB1c2VkIHRvIGRp
c3BsYXkgdGhlICJmbG93LWludG8iIHByb3BlcnR5IG9mIHRoZSBDb250ZW50IG5vZGVzLgotICAg
IHRoaXMuX2NvbnRlbnRGbG93RnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFu
Iik7Ci0gICAgdGhpcy5fY29udGVudEZsb3dGcmFnbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJpbWciKSkuY2xhc3NOYW1lID0gImljb24iOwotICAgIHRoaXMuX2NvbnRl
bnRGbG93TmFtZUxhYmVsVmFsdWUgPSB0aGlzLl9jb250ZW50Rmxvd0ZyYWdtZW50LmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKSk7CisgICAgICAgIHZhciBnb1RvUmVn
aW9uRmxvd0J1dHRvbiA9IHRoaXMuX3JlZ2lvbkZsb3dGcmFnbWVudC5hcHBlbmRDaGlsZChXZWJJ
bnNwZWN0b3IuY3JlYXRlR29Ub0Fycm93QnV0dG9uKCkpOworICAgICAgICBnb1RvUmVnaW9uRmxv
d0J1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2dvVG9SZWdpb25GbG93QXJy
b3dXYXNDbGlja2VkLmJpbmQodGhpcykpOwogCi0gICAgdmFyIGdvVG9Db250ZW50Rmxvd0J1dHRv
biA9IHRoaXMuX2NvbnRlbnRGbG93RnJhZ21lbnQuYXBwZW5kQ2hpbGQoV2ViSW5zcGVjdG9yLmNy
ZWF0ZUdvVG9BcnJvd0J1dHRvbigpKTsKLSAgICBnb1RvQ29udGVudEZsb3dCdXR0b24uYWRkRXZl
bnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9nb1RvQ29udGVudEZsb3dBcnJvd1dhc0NsaWNrZWQu
YmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX3JlZ2lvbkZsb3dOYW1lUm93ID0gbmV3IFdlYklu
c3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBsZVJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJl
Z2lvbiBGbG93IikpOworICAgICAgICB0aGlzLl9yZWdpb25GbG93TmFtZVJvdy5lbGVtZW50LmNs
YXNzTGlzdC5hZGQoImNvbnRlbnQtZmxvdy1saW5rIik7CiAKLSAgICB0aGlzLl9jb250ZW50Rmxv
d05hbWVSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdlYklu
c3BlY3Rvci5VSVN0cmluZygiQ29udGVudCBGbG93IikpOwotICAgIHRoaXMuX2NvbnRlbnRGbG93
TmFtZVJvdy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImNvbnRlbnQtZmxvdy1saW5rIik7CisgICAg
ICAgIC8vIENvbnRlbnQgZmxvdyBuYW1lIGlzIHVzZWQgdG8gZGlzcGxheSB0aGUgImZsb3ctaW50
byIgcHJvcGVydHkgb2YgdGhlIENvbnRlbnQgbm9kZXMuCisgICAgICAgIHRoaXMuX2NvbnRlbnRG
bG93RnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgICAgIHRo
aXMuX2NvbnRlbnRGbG93RnJhZ21lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiaW1nIikpLmNsYXNzTmFtZSA9ICJpY29uIjsKKyAgICAgICAgdGhpcy5fY29udGVudEZsb3dO
YW1lTGFiZWxWYWx1ZSA9IHRoaXMuX2NvbnRlbnRGbG93RnJhZ21lbnQuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpKTsKIAotICAgIHZhciBmbG93TmFtZXNHcm91cCA9
IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbdGhpcy5fcmVnaW9uRmxvd05h
bWVSb3csIHRoaXMuX2NvbnRlbnRGbG93TmFtZVJvd10pOwotICAgIHRoaXMuX2Zsb3dOYW1lc1Nl
Y3Rpb24gPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uKCJjb250ZW50LWZsb3ciLCBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZsb3dzIiksIFtmbG93TmFtZXNHcm91cF0pOworICAgICAg
ICB2YXIgZ29Ub0NvbnRlbnRGbG93QnV0dG9uID0gdGhpcy5fY29udGVudEZsb3dGcmFnbWVudC5h
cHBlbmRDaGlsZChXZWJJbnNwZWN0b3IuY3JlYXRlR29Ub0Fycm93QnV0dG9uKCkpOworICAgICAg
ICBnb1RvQ29udGVudEZsb3dCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9n
b1RvQ29udGVudEZsb3dBcnJvd1dhc0NsaWNrZWQuYmluZCh0aGlzKSk7CiAKLSAgICB0aGlzLl9j
b250YWluZXJSZWdpb25zRGF0YUdyaWQgPSBuZXcgV2ViSW5zcGVjdG9yLkRPTVRyZWVEYXRhR3Jp
ZDsKLSAgICB0aGlzLl9jb250YWluZXJSZWdpb25zRGF0YUdyaWQuZWxlbWVudC5jbGFzc0xpc3Qu
YWRkKCJuby1oZWFkZXIiKTsKKyAgICAgICAgdGhpcy5fY29udGVudEZsb3dOYW1lUm93ID0gbmV3
IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBsZVJvdyhXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIkNvbnRlbnQgRmxvdyIpKTsKKyAgICAgICAgdGhpcy5fY29udGVudEZsb3dOYW1lUm93LmVs
ZW1lbnQuY2xhc3NMaXN0LmFkZCgiY29udGVudC1mbG93LWxpbmsiKTsKIAotICAgIHZhciBjb250
YWluZXJSZWdpb25zUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkRhdGFHcmlk
Um93KHRoaXMuX2NvbnRhaW5lclJlZ2lvbnNEYXRhR3JpZCk7Ci0gICAgdmFyIGNvbnRhaW5lclJl
Z2lvbnNHcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbY29udGFp
bmVyUmVnaW9uc1Jvd10pOwotICAgIHRoaXMuX2NvbnRhaW5lclJlZ2lvbnNGbG93U2VjdGlvbiA9
IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24oImNvbnRhaW5lci1yZWdpb25zIiwgV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJDb250YWluZXIgUmVnaW9ucyIpLCBbY29udGFpbmVyUmVnaW9u
c0dyb3VwXSk7CisgICAgICAgIHZhciBmbG93TmFtZXNHcm91cCA9IG5ldyBXZWJJbnNwZWN0b3Iu
RGV0YWlsc1NlY3Rpb25Hcm91cChbdGhpcy5fcmVnaW9uRmxvd05hbWVSb3csIHRoaXMuX2NvbnRl
bnRGbG93TmFtZVJvd10pOworICAgICAgICB0aGlzLl9mbG93TmFtZXNTZWN0aW9uID0gbmV3IFdl
Ykluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbigiY29udGVudC1mbG93IiwgV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJGbG93cyIpLCBbZmxvd05hbWVzR3JvdXBdKTsKIAotICAgIHRoaXMuZWxlbWVudC5h
cHBlbmRDaGlsZChwcm9wZXJ0aWVzU2VjdGlvbi5lbGVtZW50KTsKLSAgICB0aGlzLmVsZW1lbnQu
YXBwZW5kQ2hpbGQodGhpcy5fZmxvd05hbWVzU2VjdGlvbi5lbGVtZW50KTsKLSAgICB0aGlzLmVs
ZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fY29udGFpbmVyUmVnaW9uc0Zsb3dTZWN0aW9uLmVsZW1l
bnQpOworICAgICAgICB0aGlzLl9jb250YWluZXJSZWdpb25zRGF0YUdyaWQgPSBuZXcgV2ViSW5z
cGVjdG9yLkRPTVRyZWVEYXRhR3JpZDsKKyAgICAgICAgdGhpcy5fY29udGFpbmVyUmVnaW9uc0Rh
dGFHcmlkLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgibm8taGVhZGVyIik7CiAKLSAgICB0aGlzLl9y
ZXNldEZsb3dEZXRhaWxzKCk7Ci19OworICAgICAgICB2YXIgY29udGFpbmVyUmVnaW9uc1JvdyA9
IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25EYXRhR3JpZFJvdyh0aGlzLl9jb250YWlu
ZXJSZWdpb25zRGF0YUdyaWQpOworICAgICAgICB2YXIgY29udGFpbmVyUmVnaW9uc0dyb3VwID0g
bmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwKFtjb250YWluZXJSZWdpb25zUm93
XSk7CisgICAgICAgIHRoaXMuX2NvbnRhaW5lclJlZ2lvbnNGbG93U2VjdGlvbiA9IG5ldyBXZWJJ
bnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24oImNvbnRhaW5lci1yZWdpb25zIiwgV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJDb250YWluZXIgUmVnaW9ucyIpLCBbY29udGFpbmVyUmVnaW9uc0dyb3VwXSk7
CiAKLVdlYkluc3BlY3Rvci5Db21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsLlN0eWxlQ2xhc3NOYW1l
ID0gImNvbXB1dGVkIjsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRp
ZXNTZWN0aW9uLmVsZW1lbnQpOworICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhp
cy5fZmxvd05hbWVzU2VjdGlvbi5lbGVtZW50KTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVu
ZENoaWxkKHRoaXMuX2NvbnRhaW5lclJlZ2lvbnNGbG93U2VjdGlvbi5lbGVtZW50KTsKIAotV2Vi
SW5zcGVjdG9yLkNvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlID0gewotICAgIGNv
bnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbCwKKyAgICAg
ICAgdGhpcy5fcmVzZXRGbG93RGV0YWlscygpOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAg
ICAgZ2V0IHJlZ2lvbkZsb3coKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3JlZ2lvbkZs
b3c7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgcmVnaW9uRmxvdyhyZWdpb25GbG93KQogICAg
IHsKQEAgLTEwNiwxMiArMTAzLDEyIEBAIFdlYkluc3BlY3Rvci5Db21wdXRlZFN0eWxlRGV0YWls
c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fcmVnaW9uRmxvd05hbWVMYWJlbFZh
bHVlLnRleHRDb250ZW50ID0gcmVnaW9uRmxvdyA/IHJlZ2lvbkZsb3cubmFtZSA6ICIiOwogICAg
ICAgICB0aGlzLl9yZWdpb25GbG93TmFtZVJvdy52YWx1ZSA9IHJlZ2lvbkZsb3cgPyB0aGlzLl9y
ZWdpb25GbG93RnJhZ21lbnQgOiBudWxsOwogICAgICAgICB0aGlzLl91cGRhdGVGbG93TmFtZXNT
ZWN0aW9uVmlzaWJpbGl0eSgpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGNvbnRlbnRGbG93
KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9jb250ZW50RmxvdzsKLSAgICB9LAorICAg
IH0KIAogICAgIHNldCBjb250ZW50Rmxvdyhjb250ZW50RmxvdykKICAgICB7CkBAIC0xMTksMTIg
KzExNiwxMiBAQCBXZWJJbnNwZWN0b3IuQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5
cGUgPSB7CiAgICAgICAgIHRoaXMuX2NvbnRlbnRGbG93TmFtZUxhYmVsVmFsdWUudGV4dENvbnRl
bnQgPSBjb250ZW50RmxvdyA/IGNvbnRlbnRGbG93Lm5hbWUgOiAiIjsKICAgICAgICAgdGhpcy5f
Y29udGVudEZsb3dOYW1lUm93LnZhbHVlID0gY29udGVudEZsb3cgPyB0aGlzLl9jb250ZW50Rmxv
d0ZyYWdtZW50IDogbnVsbDsKICAgICAgICAgdGhpcy5fdXBkYXRlRmxvd05hbWVzU2VjdGlvblZp
c2liaWxpdHkoKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBjb250YWluZXJSZWdpb25zKCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9jb250YWluZXJSZWdpb25zOwotICAgIH0sCisg
ICAgfQogCiAgICAgc2V0IGNvbnRhaW5lclJlZ2lvbnMocmVnaW9ucykKICAgICB7CkBAIC0xNDAs
NTAgKzEzNyw1MCBAQCBXZWJJbnNwZWN0b3IuQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbC5wcm90
b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9jb250YWluZXJSZWdpb25zRGF0YUdyaWQuYXBw
ZW5kQ2hpbGQobmV3IFdlYkluc3BlY3Rvci5ET01UcmVlRGF0YUdyaWROb2RlKHJlZ2lvbk5vZGUp
KTsKIAogICAgICAgICB0aGlzLl9jb250YWluZXJSZWdpb25zRmxvd1NlY3Rpb24uZWxlbWVudC5j
bGFzc0xpc3QucmVtb3ZlKCJoaWRkZW4iKTsKLSAgICB9LAorICAgIH0KIAotICAgIHJlZnJlc2g6
IGZ1bmN0aW9uKCkKKyAgICByZWZyZXNoKCkKICAgICB7CiAgICAgICAgIHRoaXMuX3Byb3BlcnRp
ZXNUZXh0RWRpdG9yLnN0eWxlID0gdGhpcy5ub2RlU3R5bGVzLmNvbXB1dGVkU3R5bGU7CiAgICAg
ICAgIHRoaXMuX3JlZnJlc2hGbG93RGV0YWlscyh0aGlzLm5vZGVTdHlsZXMubm9kZSk7Ci0gICAg
fSwKKyAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQKIAotICAgIHNob3duOiBmdW5jdGlvbigpCisg
ICAgc2hvd24oKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLlN0eWxlRGV0YWlsc1BhbmVs
LnByb3RvdHlwZS5zaG93bi5jYWxsKHRoaXMpOwogCiAgICAgICAgIHRoaXMuX3Byb3BlcnRpZXNU
ZXh0RWRpdG9yLnVwZGF0ZUxheW91dCgpOwotICAgIH0sCisgICAgfQogCi0gICAgd2lkdGhEaWRD
aGFuZ2U6IGZ1bmN0aW9uKCkKKyAgICB3aWR0aERpZENoYW5nZSgpCiAgICAgewogICAgICAgICB0
aGlzLl9wcm9wZXJ0aWVzVGV4dEVkaXRvci51cGRhdGVMYXlvdXQoKTsKLSAgICB9LAorICAgIH0K
IAogICAgIC8vIFByaXZhdGUKIAotICAgIF9jb21wdXRlZFN0eWxlU2hvd0FsbENoZWNrYm94VmFs
dWVDaGFuZ2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBfY29tcHV0ZWRTdHlsZVNob3dBbGxDaGVj
a2JveFZhbHVlQ2hhbmdlZChldmVudCkKICAgICB7CiAgICAgICAgIHZhciBjaGVja2VkID0gdGhp
cy5fY29tcHV0ZWRTdHlsZVNob3dBbGxDaGVja2JveC5jaGVja2VkOwogICAgICAgICB0aGlzLl9j
b21wdXRlZFN0eWxlU2hvd0FsbFNldHRpbmcudmFsdWUgPSBjaGVja2VkOwogICAgICAgICB0aGlz
Ll9wcm9wZXJ0aWVzVGV4dEVkaXRvci5zaG93c0ltcGxpY2l0UHJvcGVydGllcyA9IGNoZWNrZWQ7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdXBkYXRlRmxvd05hbWVzU2VjdGlvblZpc2liaWxpdHk6
IGZ1bmN0aW9uKCkKKyAgICBfdXBkYXRlRmxvd05hbWVzU2VjdGlvblZpc2liaWxpdHkoKQogICAg
IHsKICAgICAgICAgdGhpcy5fZmxvd05hbWVzU2VjdGlvbi5lbGVtZW50LmNsYXNzTGlzdC50b2dn
bGUoImhpZGRlbiIsICF0aGlzLl9jb250ZW50RmxvdyAmJiAhdGhpcy5fcmVnaW9uRmxvdyk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBfcmVzZXRGbG93RGV0YWlscyA6IGZ1bmN0aW9uKCkKKyAgICBf
cmVzZXRGbG93RGV0YWlscyAoKQogICAgIHsKICAgICAgICAgdGhpcy5yZWdpb25GbG93ID0gbnVs
bDsKICAgICAgICAgdGhpcy5jb250ZW50RmxvdyA9IG51bGw7CiAgICAgICAgIHRoaXMuY29udGFp
bmVyUmVnaW9ucyA9IG51bGw7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcmVmcmVzaEZsb3dEZXRh
aWxzOiBmdW5jdGlvbihkb21Ob2RlKQorICAgIF9yZWZyZXNoRmxvd0RldGFpbHMoZG9tTm9kZSkK
ICAgICB7CiAgICAgICAgIHRoaXMuX3Jlc2V0Rmxvd0RldGFpbHMoKTsKICAgICAgICAgaWYgKCFk
b21Ob2RlKQpAQCAtMjAzLDE3ICsyMDAsMTcgQEAgV2ViSW5zcGVjdG9yLkNvbXB1dGVkU3R5bGVE
ZXRhaWxzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgV2ViSW5zcGVj
dG9yLmRvbVRyZWVNYW5hZ2VyLmdldE5vZGVDb250ZW50Rmxvd0luZm8oZG9tTm9kZSwgY29udGVu
dEZsb3dJbmZvUmVhZHkuYmluZCh0aGlzKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZ29Ub1Jl
Z2lvbkZsb3dBcnJvd1dhc0NsaWNrZWQ6IGZ1bmN0aW9uKCkKKyAgICBfZ29Ub1JlZ2lvbkZsb3dB
cnJvd1dhc0NsaWNrZWQoKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLnJlc291cmNlU2lk
ZWJhclBhbmVsLnNob3dDb250ZW50Rmxvd0RPTVRyZWUodGhpcy5fcmVnaW9uRmxvdyk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBfZ29Ub0NvbnRlbnRGbG93QXJyb3dXYXNDbGlja2VkOiBmdW5jdGlv
bigpCisgICAgX2dvVG9Db250ZW50Rmxvd0Fycm93V2FzQ2xpY2tlZCgpCiAgICAgewogICAgICAg
ICBXZWJJbnNwZWN0b3IucmVzb3VyY2VTaWRlYmFyUGFuZWwuc2hvd0NvbnRlbnRGbG93RE9NVHJl
ZSh0aGlzLl9jb250ZW50RmxvdywgdGhpcy5ub2RlU3R5bGVzLm5vZGUsIHRydWUpOwogICAgIH0K
IH07CiAKLVdlYkluc3BlY3Rvci5Db21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5f
X3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlOworV2Vi
SW5zcGVjdG9yLkNvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwuU3R5bGVDbGFzc05hbWUgPSAiY29t
cHV0ZWQiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvRGFzaGJvYXJkQ29udGFpbmVyVmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0Rhc2hib2FyZENvbnRhaW5lclZpZXcuanMKaW5kZXggOTM4MWY3
ODRkNmFiNjJiYWY2ODA5NTI4MTE2MjRmOThkNmQ0OWJhMy4uOWE0ZTJmMDZiYTljMGRiNTAzODQw
NzllMDUyY2YyN2U2ODNiMTg4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvRGFzaGJvYXJkQ29udGFpbmVyVmlldy5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXNoYm9hcmRDb250YWluZXJWaWV3
LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTIzLDUxICsyMywzNSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5EYXNoYm9hcmRDb250YWluZXJWaWV3ID0gZnVuY3Rp
b24oKSB7Ci0gICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmpl
Y3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCi0gICAgLy8gV2ViSW5zcGVjdG9yLk9iamVj
dC5jYWxsKHRoaXMpOwotCi0gICAgdGhpcy5fdG9vbGJhckl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9y
Lk5hdmlnYXRpb25JdGVtKCJkYXNoYm9hcmQtY29udGFpbmVyIiwgImdyb3VwIiwgV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJBY3Rpdml0eSBWaWV3ZXIiKSk7Ci0KLSAgICB0aGlzLl9hZHZhbmNlRm9y
d2FyZEFycm93RWxlbWVudCA9IHRoaXMuX3Rvb2xiYXJJdGVtLmVsZW1lbnQuYXBwZW5kQ2hpbGQo
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpOwotICAgIHRoaXMuX2FkdmFuY2VGb3J3YXJk
QXJyb3dFbGVtZW50LmNsYXNzTmFtZSA9ICJhZHZhbmNlLWFycm93IGFkdmFuY2UtZm9yd2FyZCI7
Ci0gICAgdGhpcy5fYWR2YW5jZUJhY2t3YXJkQXJyb3dFbGVtZW50ID0gdGhpcy5fdG9vbGJhckl0
ZW0uZWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7Ci0g
ICAgdGhpcy5fYWR2YW5jZUJhY2t3YXJkQXJyb3dFbGVtZW50LmNsYXNzTmFtZSA9ICJhZHZhbmNl
LWFycm93IGFkdmFuY2UtYmFja3dhcmQiOwotCi0gICAgdGhpcy5fYWR2YW5jZUZvcndhcmRBcnJv
d0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9hZHZhbmNlRm9yd2FyZEFy
cm93Q2xpY2tlZC5iaW5kKHRoaXMpKTsKLSAgICB0aGlzLl9hZHZhbmNlQmFja3dhcmRBcnJvd0Vs
ZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9hZHZhbmNlQmFja3dhcmRBcnJv
d0NsaWNrZWQuYmluZCh0aGlzKSk7Ci0KLSAgICAvLyBSZXByZXNlbnRzIGN1cnJlbnRseSBvcGVu
IGRhc2hib2FyZHMsIHdpdGggdGhlIG1vc3QgcmVjZW50IGVudHJpZXMgYXBwZW5kZWQgdG8gdGhl
IGVuZC4KLSAgICB0aGlzLl9kYXNoYm9hcmRTdGFjayA9IFtdOwotICAgIHRoaXMuX2N1cnJlbnRJ
bmRleCA9IC0xOworV2ViSW5zcGVjdG9yLkRhc2hib2FyZENvbnRhaW5lclZpZXcgPSBjbGFzcyBE
YXNoYm9hcmRDb250YWluZXJWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAoreworICAg
IGNvbnN0cnVjdG9yKCkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKLSAgICB0aGlzLl91cGRh
dGVBZHZhbmNlQXJyb3dWaXNpYmlsaXR5KCk7Ci19OworICAgICAgICB0aGlzLl90b29sYmFySXRl
bSA9IG5ldyBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkl0ZW0oImRhc2hib2FyZC1jb250YWluZXIi
LCAiZ3JvdXAiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkFjdGl2aXR5IFZpZXdlciIpKTsKIAot
V2ViSW5zcGVjdG9yLkRhc2hib2FyZENvbnRhaW5lclZpZXcuVmlzaWJsZURhc2hib2FyZFN0eWxl
Q2xhc3NOYW1lID0gInZpc2libGUiOwotV2ViSW5zcGVjdG9yLkRhc2hib2FyZENvbnRhaW5lclZp
ZXcuSW5hY3RpdmVTdHlsZUNsYXNzTmFtZSA9ICJpbmFjdGl2ZSI7CisgICAgICAgIHRoaXMuX2Fk
dmFuY2VGb3J3YXJkQXJyb3dFbGVtZW50ID0gdGhpcy5fdG9vbGJhckl0ZW0uZWxlbWVudC5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7CisgICAgICAgIHRoaXMuX2Fk
dmFuY2VGb3J3YXJkQXJyb3dFbGVtZW50LmNsYXNzTmFtZSA9ICJhZHZhbmNlLWFycm93IGFkdmFu
Y2UtZm9yd2FyZCI7CisgICAgICAgIHRoaXMuX2FkdmFuY2VCYWNrd2FyZEFycm93RWxlbWVudCA9
IHRoaXMuX3Rvb2xiYXJJdGVtLmVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2IikpOworICAgICAgICB0aGlzLl9hZHZhbmNlQmFja3dhcmRBcnJvd0VsZW1lbnQu
Y2xhc3NOYW1lID0gImFkdmFuY2UtYXJyb3cgYWR2YW5jZS1iYWNrd2FyZCI7CiAKLVdlYkluc3Bl
Y3Rvci5EYXNoYm9hcmRDb250YWluZXJWaWV3LkFkdmFuY2VEaXJlY3Rpb24gPSB7Ci0gICAgRm9y
d2FyZDogImRhc2hib2FyZC1jb250YWluZXItdmlldy1hZHZhbmNlLWRpcmVjdGlvbi1mb3J3YXJk
IiwKLSAgICBCYWNrd2FyZDogImRhc2hib2FyZC1jb250YWluZXItdmlldy1hZHZhbmNlLWRpcmVj
dGlvbi1iYWNrd2FyZCIsCi0gICAgTm9uZTogImRhc2hib2FyZC1jb250YWluZXItdmlldy1hZHZh
bmNlLWRpcmVjdGlvbi1ub25lIgotfTsKKyAgICAgICAgdGhpcy5fYWR2YW5jZUZvcndhcmRBcnJv
d0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9hZHZhbmNlRm9yd2FyZEFy
cm93Q2xpY2tlZC5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5fYWR2YW5jZUJhY2t3YXJkQXJy
b3dFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fYWR2YW5jZUJhY2t3YXJk
QXJyb3dDbGlja2VkLmJpbmQodGhpcykpOwogCi1XZWJJbnNwZWN0b3IuRGFzaGJvYXJkQ29udGFp
bmVyVmlldy5Gb3J3YXJkSW5jb21pbmdEYXNoYm9hcmRTdHlsZUNsYXNzTmFtZSA9ICJzbGlkZS1p
bi1kb3duIjsKLVdlYkluc3BlY3Rvci5EYXNoYm9hcmRDb250YWluZXJWaWV3LkJhY2t3YXJkSW5j
b21pbmdEYXNoYm9hcmRTdHlsZUNsYXNzTmFtZSA9ICJzbGlkZS1pbi11cCI7Ci1XZWJJbnNwZWN0
b3IuRGFzaGJvYXJkQ29udGFpbmVyVmlldy5Gb3J3YXJkT3V0Z29pbmdEYXNoYm9hcmRTdHlsZUNs
YXNzTmFtZSA9ICJzbGlkZS1vdXQtZG93biI7Ci1XZWJJbnNwZWN0b3IuRGFzaGJvYXJkQ29udGFp
bmVyVmlldy5CYWNrd2FyZE91dGdvaW5nRGFzaGJvYXJkU3R5bGVDbGFzc05hbWUgPSAic2xpZGUt
b3V0LXVwIjsKKyAgICAgICAgLy8gUmVwcmVzZW50cyBjdXJyZW50bHkgb3BlbiBkYXNoYm9hcmRz
LCB3aXRoIHRoZSBtb3N0IHJlY2VudCBlbnRyaWVzIGFwcGVuZGVkIHRvIHRoZSBlbmQuCisgICAg
ICAgIHRoaXMuX2Rhc2hib2FyZFN0YWNrID0gW107CisgICAgICAgIHRoaXMuX2N1cnJlbnRJbmRl
eCA9IC0xOwogCi1XZWJJbnNwZWN0b3IuRGFzaGJvYXJkQ29udGFpbmVyVmlldy5wcm90b3R5cGUg
PSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5EYXNoYm9hcmRDb250YWluZXJWaWV3
LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGUsCisgICAgICAg
IHRoaXMuX3VwZGF0ZUFkdmFuY2VBcnJvd1Zpc2liaWxpdHkoKTsKKyAgICB9CiAKICAgICAvLyBQ
dWJsaWMKIAogICAgIGdldCB0b29sYmFySXRlbSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5fdG9vbGJhckl0ZW07Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgY3VycmVudERhc2hib2Fy
ZFZpZXcoKQogICAgIHsKQEAgLTc1LDkgKzU5LDkgQEAgV2ViSW5zcGVjdG9yLkRhc2hib2FyZENv
bnRhaW5lclZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAKICAg
ICAgICAgcmV0dXJuIHRoaXMuX2Rhc2hib2FyZFN0YWNrW3RoaXMuX2N1cnJlbnRJbmRleF07Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBzaG93RGFzaGJvYXJkVmlld0ZvclJlcHJlc2VudGVkT2JqZWN0
OiBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkKKyAgICBzaG93RGFzaGJvYXJkVmlld0ZvclJl
cHJlc2VudGVkT2JqZWN0KHJlcHJlc2VudGVkT2JqZWN0KQogICAgIHsKICAgICAgICAgdmFyIGRh
c2hib2FyZFZpZXcgPSB0aGlzLl9kYXNoYm9hcmRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QocmVw
cmVzZW50ZWRPYmplY3QpOwogICAgICAgICBpZiAoIWRhc2hib2FyZFZpZXcpCkBAIC04OSw5ICs3
Myw5IEBAIFdlYkluc3BlY3Rvci5EYXNoYm9hcmRDb250YWluZXJWaWV3LnByb3RvdHlwZSA9IHsK
ICAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5fZGFzaGJvYXJkU3RhY2suaW5kZXhPZihkYXNoYm9h
cmRWaWV3KTsKICAgICAgICAgdGhpcy5fc2hvd0Rhc2hib2FyZEF0SW5kZXgoaW5kZXgpOwogICAg
ICAgICByZXR1cm4gZGFzaGJvYXJkVmlldzsKLSAgICB9LAorICAgIH0KIAotICAgIGhpZGVEYXNo
Ym9hcmRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3Q6IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0
KQorICAgIGhpZGVEYXNoYm9hcmRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50ZWRP
YmplY3QpCiAgICAgewogICAgICAgICB2YXIgb25seVJldHVybkV4aXN0aW5nVmlld3MgPSB0cnVl
OwogICAgICAgICB2YXIgZGFzaGJvYXJkVmlldyA9IHRoaXMuX2Rhc2hib2FyZFZpZXdGb3JSZXBy
ZXNlbnRlZE9iamVjdChyZXByZXNlbnRlZE9iamVjdCwgb25seVJldHVybkV4aXN0aW5nVmlld3Mp
OwpAQCAtMTAxLDkgKzg1LDkgQEAgV2ViSW5zcGVjdG9yLkRhc2hib2FyZENvbnRhaW5lclZpZXcu
cHJvdG90eXBlID0gewogCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2N1cnJlbnRJbmRl
eCA+IDApOwogICAgICAgICB0aGlzLl9zaG93RGFzaGJvYXJkQXRJbmRleCh0aGlzLl9jdXJyZW50
SW5kZXggLSAxKTsKLSAgICB9LAorICAgIH0KIAotICAgIGNsb3NlRGFzaGJvYXJkVmlld0ZvclJl
cHJlc2VudGVkT2JqZWN0OiBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkKKyAgICBjbG9zZURh
c2hib2FyZFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdChyZXByZXNlbnRlZE9iamVjdCkKICAgICB7
CiAgICAgICAgIHZhciBvbmx5UmV0dXJuRXhpc3RpbmdWaWV3cyA9IHRydWU7CiAgICAgICAgIHZh
ciBkYXNoYm9hcmRWaWV3ID0gdGhpcy5fZGFzaGJvYXJkVmlld0ZvclJlcHJlc2VudGVkT2JqZWN0
KHJlcHJlc2VudGVkT2JqZWN0LCBvbmx5UmV0dXJuRXhpc3RpbmdWaWV3cyk7CkBAIC0xMTEsMzUg
Kzk1LDM1IEBAIFdlYkluc3BlY3Rvci5EYXNoYm9hcmRDb250YWluZXJWaWV3LnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgIHJldHVybiBudWxsOwogCiAgICAgICAgIHRoaXMuX2Nsb3NlRGFzaGJv
YXJkVmlldyhkYXNoYm9hcmRWaWV3KTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUK
IAotICAgIF9hZHZhbmNlRm9yd2FyZEFycm93Q2xpY2tlZDogZnVuY3Rpb24oKQorICAgIF9hZHZh
bmNlRm9yd2FyZEFycm93Q2xpY2tlZCgpCiAgICAgewogICAgICAgICB0aGlzLl9zaG93RGFzaGJv
YXJkQXRJbmRleCh0aGlzLl9jdXJyZW50SW5kZXggKyAxKTsKLSAgICB9LAorICAgIH0KIAotICAg
IF9hZHZhbmNlQmFja3dhcmRBcnJvd0NsaWNrZWQ6IGZ1bmN0aW9uKCkKKyAgICBfYWR2YW5jZUJh
Y2t3YXJkQXJyb3dDbGlja2VkKCkKICAgICB7CiAgICAgICAgIHRoaXMuX3Nob3dEYXNoYm9hcmRB
dEluZGV4KHRoaXMuX2N1cnJlbnRJbmRleCAtIDEpOwotICAgIH0sCisgICAgfQogCi0gICAgX2Rp
c21pc3NBZHZhbmNlQXJyb3dzOiBmdW5jdGlvbigpCisgICAgX2Rpc21pc3NBZHZhbmNlQXJyb3dz
KCkKICAgICB7CiAgICAgICAgIHRoaXMuX2FkdmFuY2VGb3J3YXJkQXJyb3dFbGVtZW50LmNsYXNz
TGlzdC5hZGQoV2ViSW5zcGVjdG9yLkRhc2hib2FyZENvbnRhaW5lclZpZXcuSW5hY3RpdmVTdHls
ZUNsYXNzTmFtZSk7CiAgICAgICAgIHRoaXMuX2FkdmFuY2VCYWNrd2FyZEFycm93RWxlbWVudC5j
bGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5EYXNoYm9hcmRDb250YWluZXJWaWV3LkluYWN0aXZl
U3R5bGVDbGFzc05hbWUpOwotICAgIH0sCisgICAgfQogCi0gICAgX3VwZGF0ZUFkdmFuY2VBcnJv
d1Zpc2liaWxpdHk6IGZ1bmN0aW9uKCkKKyAgICBfdXBkYXRlQWR2YW5jZUFycm93VmlzaWJpbGl0
eSgpCiAgICAgewogICAgICAgICB2YXIgY2FuQWR2YW5jZUZvcndhcmQgPSB0aGlzLl9jdXJyZW50
SW5kZXggPCB0aGlzLl9kYXNoYm9hcmRTdGFjay5sZW5ndGggLSAxOwogICAgICAgICB2YXIgY2Fu
QWR2YW5jZUJhY2t3YXJkID0gdGhpcy5fY3VycmVudEluZGV4ID4gMDsKICAgICAgICAgdGhpcy5f
YWR2YW5jZUZvcndhcmRBcnJvd0VsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZShXZWJJbnNwZWN0b3Iu
RGFzaGJvYXJkQ29udGFpbmVyVmlldy5JbmFjdGl2ZVN0eWxlQ2xhc3NOYW1lLCAhY2FuQWR2YW5j
ZUZvcndhcmQpOwogICAgICAgICB0aGlzLl9hZHZhbmNlQmFja3dhcmRBcnJvd0VsZW1lbnQuY2xh
c3NMaXN0LnRvZ2dsZShXZWJJbnNwZWN0b3IuRGFzaGJvYXJkQ29udGFpbmVyVmlldy5JbmFjdGl2
ZVN0eWxlQ2xhc3NOYW1lLCAhY2FuQWR2YW5jZUJhY2t3YXJkKTsKLSAgICB9LAorICAgIH0KIAot
ICAgIF9kYXNoYm9hcmRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3Q6IGZ1bmN0aW9uKHJlcHJlc2Vu
dGVkT2JqZWN0LCBvbmx5UmV0dXJuRXhpc3RpbmdWaWV3cykKKyAgICBfZGFzaGJvYXJkVmlld0Zv
clJlcHJlc2VudGVkT2JqZWN0KHJlcHJlc2VudGVkT2JqZWN0LCBvbmx5UmV0dXJuRXhpc3RpbmdW
aWV3cykKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlcHJlc2VudGVkT2JqZWN0KTsK
IApAQCAtMTU0LDkgKzEzOCw5IEBAIFdlYkluc3BlY3Rvci5EYXNoYm9hcmRDb250YWluZXJWaWV3
LnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0cnkgewogICAgICAgICAgICAgLy8gTm8gZXhpc3Rp
bmcgY29udGVudCB2aWV3IGZvdW5kLCBtYWtlIGEgbmV3IG9uZS4KLSAgICAgICAgICAgIGRhc2hi
b2FyZFZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLkRhc2hib2FyZFZpZXcocmVwcmVzZW50ZWRPYmpl
Y3QpOworICAgICAgICAgICAgZGFzaGJvYXJkVmlldyA9IFdlYkluc3BlY3Rvci5EYXNoYm9hcmRW
aWV3LmNyZWF0ZShyZXByZXNlbnRlZE9iamVjdCk7CiAgICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAg
ICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7CisgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUs
IGUuc3RhY2spOwogICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgIH0KIApAQCAtMTY0
LDkgKzE0OCw5IEBAIFdlYkluc3BlY3Rvci5EYXNoYm9hcmRDb250YWluZXJWaWV3LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgdGhpcy5fdG9vbGJhckl0ZW0uZWxlbWVudC5hcHBlbmRDaGlsZChkYXNo
Ym9hcmRWaWV3LmVsZW1lbnQpOwogCiAgICAgICAgIHJldHVybiBkYXNoYm9hcmRWaWV3OwotICAg
IH0sCisgICAgfQogCi0gICAgX3Nob3dEYXNoYm9hcmRBdEluZGV4OiBmdW5jdGlvbihpbmRleCkK
KyAgICBfc2hvd0Rhc2hib2FyZEF0SW5kZXgoaW5kZXgpCiAgICAgewogICAgICAgICBjb25zb2xl
LmFzc2VydChpbmRleCA+PSAwICYmIGluZGV4IDw9IHRoaXMuX2Rhc2hib2FyZFN0YWNrLmxlbmd0
aCAtIDEpOwogCkBAIC0xODUsOSArMTY5LDkgQEAgV2ViSW5zcGVjdG9yLkRhc2hib2FyZENvbnRh
aW5lclZpZXcucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuX2N1cnJlbnRJbmRleCA9IGlu
ZGV4OwogICAgICAgICB0aGlzLl9zaG93RGFzaGJvYXJkVmlldyh0aGlzLmN1cnJlbnREYXNoYm9h
cmRWaWV3LCBpc0luaXRpYWxEYXNoYm9hcmQgPyBpbml0aWFsRGlyZWN0aW9uIDogYWR2YW5jZURp
cmVjdGlvbik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc2hvd0Rhc2hib2FyZFZpZXc6IGZ1bmN0
aW9uKGRhc2hib2FyZFZpZXcsIGFkdmFuY2VEaXJlY3Rpb24pCisgICAgX3Nob3dEYXNoYm9hcmRW
aWV3KGRhc2hib2FyZFZpZXcsIGFkdmFuY2VEaXJlY3Rpb24pCiAgICAgewogICAgICAgICBjb25z
b2xlLmFzc2VydChkYXNoYm9hcmRWaWV3IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkRhc2hib2Fy
ZFZpZXcpOwogCkBAIC0yMDMsMjMgKzE4NywyNCBAQCBXZWJJbnNwZWN0b3IuRGFzaGJvYXJkQ29u
dGFpbmVyVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBjb250YWluZXIgPSB0aGlzOwog
ICAgICAgICBkYXNoYm9hcmRWaWV3LmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3Iu
RGFzaGJvYXJkQ29udGFpbmVyVmlldy5WaXNpYmxlRGFzaGJvYXJkU3R5bGVDbGFzc05hbWUpOwog
CisgICAgICAgIGZ1bmN0aW9uIGFuaW1hdGlvbkVuZGVkKGV2ZW50KSB7CisgICAgICAgICAgICBp
ZiAoZXZlbnQudGFyZ2V0ICE9PSBkYXNoYm9hcmRWaWV3LmVsZW1lbnQpCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgICAgICBkYXNoYm9hcmRWaWV3LmVsZW1lbnQucmVtb3ZlRXZl
bnRMaXN0ZW5lcigid2Via2l0QW5pbWF0aW9uRW5kIiwgYW5pbWF0aW9uRW5kZWQpOworICAgICAg
ICAgICAgZGFzaGJvYXJkVmlldy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoYW5pbWF0aW9uQ2xh
c3MpOworICAgICAgICAgICAgY29udGFpbmVyLl91cGRhdGVBZHZhbmNlQXJyb3dWaXNpYmlsaXR5
KCk7CisgICAgICAgIH0KKwogICAgICAgICBpZiAoYW5pbWF0aW9uQ2xhc3MpIHsKLSAgICAgICAg
ICAgIGZ1bmN0aW9uIGFuaW1hdGlvbkVuZGVkKGV2ZW50KSB7Ci0gICAgICAgICAgICAgICAgaWYg
KGV2ZW50LnRhcmdldCAhPT0gZGFzaGJvYXJkVmlldy5lbGVtZW50KQotICAgICAgICAgICAgICAg
ICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgICAgICBkYXNoYm9hcmRWaWV3LmVsZW1lbnQucmVt
b3ZlRXZlbnRMaXN0ZW5lcigid2Via2l0QW5pbWF0aW9uRW5kIiwgYW5pbWF0aW9uRW5kZWQpOwot
ICAgICAgICAgICAgICAgIGRhc2hib2FyZFZpZXcuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKGFu
aW1hdGlvbkNsYXNzKTsKLSAgICAgICAgICAgICAgICBjb250YWluZXIuX3VwZGF0ZUFkdmFuY2VB
cnJvd1Zpc2liaWxpdHkoKTsKLSAgICAgICAgICAgIH0KICAgICAgICAgICAgIGRhc2hib2FyZFZp
ZXcuZWxlbWVudC5jbGFzc0xpc3QuYWRkKGFuaW1hdGlvbkNsYXNzKTsKICAgICAgICAgICAgIGRh
c2hib2FyZFZpZXcuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRBbmltYXRpb25FbmQi
LCBhbmltYXRpb25FbmRlZCk7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gZGFzaGJvYXJk
VmlldzsKLSAgICB9LAorICAgIH0KIAotICAgIF9oaWRlRGFzaGJvYXJkVmlldzogZnVuY3Rpb24o
ZGFzaGJvYXJkVmlldywgYWR2YW5jZURpcmVjdGlvbiwgY2FsbGJhY2spCisgICAgX2hpZGVEYXNo
Ym9hcmRWaWV3KGRhc2hib2FyZFZpZXcsIGFkdmFuY2VEaXJlY3Rpb24sIGNhbGxiYWNrKQogICAg
IHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoZGFzaGJvYXJkVmlldyBpbnN0YW5jZW9mIFdlYklu
c3BlY3Rvci5EYXNoYm9hcmRWaWV3KTsKICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5jdXJy
ZW50RGFzaGJvYXJkVmlldyA9PT0gZGFzaGJvYXJkVmlldyk7CkBAIC0yMzUsMjYgKzIyMCwyNyBA
QCBXZWJJbnNwZWN0b3IuRGFzaGJvYXJkQ29udGFpbmVyVmlldy5wcm90b3R5cGUgPSB7CiAKICAg
ICAgICAgdmFyIGNvbnRhaW5lciA9IHRoaXM7CiAKKyAgICAgICAgZnVuY3Rpb24gYW5pbWF0aW9u
RW5kZWQoZXZlbnQpIHsKKyAgICAgICAgICAgIGlmIChldmVudC50YXJnZXQgIT09IGRhc2hib2Fy
ZFZpZXcuZWxlbWVudCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGRh
c2hib2FyZFZpZXcuZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJraXRBbmltYXRpb25F
bmQiLCBhbmltYXRpb25FbmRlZCk7CisgICAgICAgICAgICBkYXNoYm9hcmRWaWV3LmVsZW1lbnQu
Y2xhc3NMaXN0LnJlbW92ZShhbmltYXRpb25DbGFzcyk7CisgICAgICAgICAgICBkYXNoYm9hcmRW
aWV3LmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuRGFzaGJvYXJkQ29udGFp
bmVyVmlldy5WaXNpYmxlRGFzaGJvYXJkU3R5bGVDbGFzc05hbWUpOworICAgICAgICAgICAgY29u
dGFpbmVyLl91cGRhdGVBZHZhbmNlQXJyb3dWaXNpYmlsaXR5KCk7CisKKyAgICAgICAgICAgIGlm
ICh0eXBlb2YgY2FsbGJhY2sgPT09ICJmdW5jdGlvbiIpCisgICAgICAgICAgICAgICAgY2FsbGJh
Y2soKTsKKyAgICAgICAgfQorCiAgICAgICAgIGlmIChhbmltYXRpb25DbGFzcykgewotICAgICAg
ICAgICAgZnVuY3Rpb24gYW5pbWF0aW9uRW5kZWQoZXZlbnQpIHsKLSAgICAgICAgICAgICAgICBp
ZiAoZXZlbnQudGFyZ2V0ICE9PSBkYXNoYm9hcmRWaWV3LmVsZW1lbnQpCi0gICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgICAgIGRhc2hib2FyZFZpZXcuZWxlbWVudC5y
ZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJraXRBbmltYXRpb25FbmQiLCBhbmltYXRpb25FbmRlZCk7
Ci0gICAgICAgICAgICAgICAgZGFzaGJvYXJkVmlldy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUo
YW5pbWF0aW9uQ2xhc3MpOwotICAgICAgICAgICAgICAgIGRhc2hib2FyZFZpZXcuZWxlbWVudC5j
bGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5EYXNoYm9hcmRDb250YWluZXJWaWV3LlZpc2li
bGVEYXNoYm9hcmRTdHlsZUNsYXNzTmFtZSk7Ci0gICAgICAgICAgICAgICAgY29udGFpbmVyLl91
cGRhdGVBZHZhbmNlQXJyb3dWaXNpYmlsaXR5KCk7Ci0KLSAgICAgICAgICAgICAgICBpZiAodHlw
ZW9mIGNhbGxiYWNrID09PSAiZnVuY3Rpb24iKQotICAgICAgICAgICAgICAgICAgICBjYWxsYmFj
aygpOwotICAgICAgICAgICAgfQogICAgICAgICAgICAgZGFzaGJvYXJkVmlldy5lbGVtZW50LmNs
YXNzTGlzdC5hZGQoYW5pbWF0aW9uQ2xhc3MpOwogICAgICAgICAgICAgZGFzaGJvYXJkVmlldy5l
bGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIndlYmtpdEFuaW1hdGlvbkVuZCIsIGFuaW1hdGlvbkVu
ZGVkKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBkYXNoYm9hcmRWaWV3LmVsZW1lbnQu
Y2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuRGFzaGJvYXJkQ29udGFpbmVyVmlldy5WaXNp
YmxlRGFzaGJvYXJkU3R5bGVDbGFzc05hbWUpOwotICAgIH0sCisgICAgfQogCi0gICAgX2Nsb3Nl
RGFzaGJvYXJkVmlldzogZnVuY3Rpb24oZGFzaGJvYXJkVmlldykKKyAgICBfY2xvc2VEYXNoYm9h
cmRWaWV3KGRhc2hib2FyZFZpZXcpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChkYXNo
Ym9hcmRWaWV3IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkRhc2hib2FyZFZpZXcpOwogCkBAIC0y
ODIsMyArMjY4LDE3IEBAIFdlYkluc3BlY3Rvci5EYXNoYm9hcmRDb250YWluZXJWaWV3LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgdGhpcy5fdXBkYXRlQWR2YW5jZUFycm93VmlzaWJpbGl0eSgpOwog
ICAgIH0KIH07CisKK1dlYkluc3BlY3Rvci5EYXNoYm9hcmRDb250YWluZXJWaWV3LlZpc2libGVE
YXNoYm9hcmRTdHlsZUNsYXNzTmFtZSA9ICJ2aXNpYmxlIjsKK1dlYkluc3BlY3Rvci5EYXNoYm9h
cmRDb250YWluZXJWaWV3LkluYWN0aXZlU3R5bGVDbGFzc05hbWUgPSAiaW5hY3RpdmUiOworCitX
ZWJJbnNwZWN0b3IuRGFzaGJvYXJkQ29udGFpbmVyVmlldy5BZHZhbmNlRGlyZWN0aW9uID0gewor
ICAgIEZvcndhcmQ6IFN5bWJvbCgiZGFzaGJvYXJkLWNvbnRhaW5lci12aWV3LWFkdmFuY2UtZGly
ZWN0aW9uLWZvcndhcmQiKSwKKyAgICBCYWNrd2FyZDogU3ltYm9sKCJkYXNoYm9hcmQtY29udGFp
bmVyLXZpZXctYWR2YW5jZS1kaXJlY3Rpb24tYmFja3dhcmQiKSwKKyAgICBOb25lOiBTeW1ib2wo
ImRhc2hib2FyZC1jb250YWluZXItdmlldy1hZHZhbmNlLWRpcmVjdGlvbi1ub25lIikKK307CisK
K1dlYkluc3BlY3Rvci5EYXNoYm9hcmRDb250YWluZXJWaWV3LkZvcndhcmRJbmNvbWluZ0Rhc2hi
b2FyZFN0eWxlQ2xhc3NOYW1lID0gInNsaWRlLWluLWRvd24iOworV2ViSW5zcGVjdG9yLkRhc2hi
b2FyZENvbnRhaW5lclZpZXcuQmFja3dhcmRJbmNvbWluZ0Rhc2hib2FyZFN0eWxlQ2xhc3NOYW1l
ID0gInNsaWRlLWluLXVwIjsKK1dlYkluc3BlY3Rvci5EYXNoYm9hcmRDb250YWluZXJWaWV3LkZv
cndhcmRPdXRnb2luZ0Rhc2hib2FyZFN0eWxlQ2xhc3NOYW1lID0gInNsaWRlLW91dC1kb3duIjsK
K1dlYkluc3BlY3Rvci5EYXNoYm9hcmRDb250YWluZXJWaWV3LkJhY2t3YXJkT3V0Z29pbmdEYXNo
Ym9hcmRTdHlsZUNsYXNzTmFtZSA9ICJzbGlkZS1vdXQtdXAiOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGFzaGJvYXJkVmlldy5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Rhc2hib2FyZFZpZXcuanMK
aW5kZXggYjczNDVjMGRiOWVlYTUxYmFhMjRkZjZlNDdjZjgyOThlMTBjNmRlZS4uNmFmOWVhNzc3
N2M0MmE5OGQ3ZDBkYzMyOTRhM2IzNDA4OTc4Y2RhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGFzaGJvYXJkVmlldy5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXNoYm9hcmRWaWV3LmpzCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTIzLDEwICsyMywyNSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLVdlYkluc3BlY3Rvci5EYXNoYm9hcmRWaWV3ID0gZnVuY3Rpb24ocmVwcmVzZW50ZWRP
YmplY3QsIGlkZW50aWZpZXIpCitXZWJJbnNwZWN0b3IuRGFzaGJvYXJkVmlldyA9IGNsYXNzIERh
c2hib2FyZFZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgLy8gQ3JlYXRp
bmcgYSBuZXcgRGFzaGJvYXJkVmlldyBkaXJlY3RseSByZXR1cm5zIGFuIGluc3RhbmNlIG9mIHRo
ZSBwcm9wZXIgc3ViY2xhc3MuCi0gICAgaWYgKHRoaXMuY29uc3RydWN0b3IgPT09IFdlYkluc3Bl
Y3Rvci5EYXNoYm9hcmRWaWV3KSB7CisgICAgY29uc3RydWN0b3IocmVwcmVzZW50ZWRPYmplY3Qs
IGlkZW50aWZpZXIpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydChpZGVudGlmaWVyKTsK
KworICAgICAgICBzdXBlcigpOworCisgICAgICAgIHRoaXMuX3JlcHJlc2VudGVkT2JqZWN0ID0g
cmVwcmVzZW50ZWRPYmplY3Q7CisKKyAgICAgICAgdGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQo
V2ViSW5zcGVjdG9yLkRhc2hib2FyZFZpZXcuU3R5bGVDbGFzc05hbWUpOworICAgICAgICB0aGlz
Ll9lbGVtZW50LmNsYXNzTGlzdC5hZGQoaWRlbnRpZmllcik7CisgICAgfQorCisgICAgLy8gU3Rh
dGljCisKKyAgICBzdGF0aWMgY3JlYXRlKHJlcHJlc2VudGVkT2JqZWN0KQorICAgIHsKICAgICAg
ICAgY29uc29sZS5hc3NlcnQocmVwcmVzZW50ZWRPYmplY3QpOwogCiAgICAgICAgIGlmIChyZXBy
ZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJvYXJkKQpA
QCAtNDEsNTAgKzU2LDMyIEBAIFdlYkluc3BlY3Rvci5EYXNoYm9hcmRWaWV3ID0gZnVuY3Rpb24o
cmVwcmVzZW50ZWRPYmplY3QsIGlkZW50aWZpZXIpCiAgICAgICAgIHRocm93ICJDYW4ndCBtYWtl
IGEgRGFzaGJvYXJkVmlldyBmb3IgYW4gdW5rbm93biByZXByZXNlbnRlZE9iamVjdC4iOwogICAg
IH0KIAotICAgIC8vIE90aGVyd2lzZSwgYSBzdWJjbGFzcyBpcyBjYWxsaW5nIHRoZSBiYXNlIGNv
bnN0cnVjdG9yLgotICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuY29uc3RydWN0b3IgIT09IFdlYklu
c3BlY3Rvci5EYXNoYm9hcmRWaWV3ICYmIHRoaXMgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRGFz
aGJvYXJkVmlldyk7Ci0gICAgY29uc29sZS5hc3NlcnQoaWRlbnRpZmllcik7Ci0KLSAgICAvLyBG
SVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5k
IGNhbGwgc3VwZXIoKS4KLSAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7Ci0K
LSAgICB0aGlzLl9yZXByZXNlbnRlZE9iamVjdCA9IHJlcHJlc2VudGVkT2JqZWN0OwotCi0gICAg
dGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMu
X2VsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuRGFzaGJvYXJkVmlldy5TdHlsZUNs
YXNzTmFtZSk7Ci0gICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKGlkZW50aWZpZXIpOwot
fTsKLQotV2ViSW5zcGVjdG9yLkRhc2hib2FyZFZpZXcuU3R5bGVDbGFzc05hbWUgPSAiZGFzaGJv
YXJkIjsKLQotV2ViSW5zcGVjdG9yLkRhc2hib2FyZFZpZXcucHJvdG90eXBlID0gewotICAgIGNv
bnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuRGFzaGJvYXJkVmlldywKLSAgICBfX3Byb3RvX186IFdl
Ykluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlLAotCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQg
ZWxlbWVudCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudDsKLSAgICB9LAor
ICAgIH0KIAogICAgIGdldCByZXByZXNlbnRlZE9iamVjdCgpCiAgICAgewogICAgICAgICByZXR1
cm4gdGhpcy5fcmVwcmVzZW50ZWRPYmplY3Q7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93bjog
ZnVuY3Rpb24oKQorICAgIHNob3duKCkKICAgICB7CiAgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5
IHN1YmNsYXNzZXMuCi0gICAgfSwKKyAgICB9CiAKLSAgICBoaWRkZW46IGZ1bmN0aW9uKCkKKyAg
ICBoaWRkZW4oKQogICAgIHsKICAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4K
LSAgICB9LAorICAgIH0KIAotICAgIGNsb3NlZDogZnVuY3Rpb24oKQorICAgIGNsb3NlZCgpCiAg
ICAgewogICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgogICAgIH0KIH07CisK
K1dlYkluc3BlY3Rvci5EYXNoYm9hcmRWaWV3LlN0eWxlQ2xhc3NOYW1lID0gImRhc2hib2FyZCI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9E
ZWJ1Z2dlckRhc2hib2FyZFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9EZWJ1Z2dlckRhc2hib2FyZFZpZXcuanMKaW5kZXggZGY2MGM0ZmY4MjY2MzIy
ZmVlMWY5NmM5ZWJmZThhZjdmMjhiNDVjOC4uMzU3MDk2ZThjNzk5NWY3Y2Q1MTk3ZmM4OWUwYmYz
YmVmMzFhYTBjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvRGVidWdnZXJEYXNoYm9hcmRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RlYnVnZ2VyRGFzaGJvYXJkVmlldy5qcwpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw1NyAr
MjMsNDggQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJ
bnNwZWN0b3IuRGVidWdnZXJEYXNoYm9hcmRWaWV3ID0gZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmpl
Y3QpCitXZWJJbnNwZWN0b3IuRGVidWdnZXJEYXNoYm9hcmRWaWV3ID0gY2xhc3MgRGVidWdnZXJE
YXNoYm9hcmRWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkRhc2hib2FyZFZpZXcKIHsKLSAgICBX
ZWJJbnNwZWN0b3IuRGFzaGJvYXJkVmlldy5jYWxsKHRoaXMsIHJlcHJlc2VudGVkT2JqZWN0LCAi
ZGVidWdnZXIiKTsKLQotICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRM
aXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LkFjdGl2ZUNhbGxGcmFt
ZURpZENoYW5nZSwgdGhpcy5fcmVidWlsZExvY2F0aW9uLCB0aGlzKTsKLQotICAgIHRoaXMuX25h
dmlnYXRpb25CYXIgPSBuZXcgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXI7Ci0gICAgdGhpcy5l
bGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX25hdmlnYXRpb25CYXIuZWxlbWVudCk7CisgICAgY29u
c3RydWN0b3IocmVwcmVzZW50ZWRPYmplY3QpCisgICAgeworICAgICAgICBzdXBlcihyZXByZXNl
bnRlZE9iamVjdCwgImRlYnVnZ2VyIik7CiAKLSAgICB2YXIgcmVzdW1lSW1hZ2U7Ci0gICAgaWYg
KFdlYkluc3BlY3Rvci5QbGF0Zm9ybS5pc0xlZ2FjeU1hY09TKQotICAgICAgICByZXN1bWVJbWFn
ZSA9IHtzcmM6ICJJbWFnZXMvTGVnYWN5L1Jlc3VtZS5zdmciLCB3aWR0aDogMTYsIGhlaWdodDog
MTZ9OwotICAgIGVsc2UKLSAgICAgICAgcmVzdW1lSW1hZ2UgPSB7c3JjOiAiSW1hZ2VzL1Jlc3Vt
ZS5zdmciLCB3aWR0aDogMTUsIGhlaWdodDogMTV9OworICAgICAgICBXZWJJbnNwZWN0b3IuZGVi
dWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdl
ci5FdmVudC5BY3RpdmVDYWxsRnJhbWVEaWRDaGFuZ2UsIHRoaXMuX3JlYnVpbGRMb2NhdGlvbiwg
dGhpcyk7CiAKLSAgICB2YXIgdG9vbHRpcCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29udGlu
dWUgc2NyaXB0IGV4ZWN1dGlvbiAoJXMgb3IgJXMpIikuZm9ybWF0KFdlYkluc3BlY3Rvci5kZWJ1
Z2dlclNpZGViYXJQYW5lbC5wYXVzZU9yUmVzdW1lS2V5Ym9hcmRTaG9ydGN1dC5kaXNwbGF5TmFt
ZSwgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyU2lkZWJhclBhbmVsLnBhdXNlT3JSZXN1bWVBbHRlcm5h
dGVLZXlib2FyZFNob3J0Y3V0LmRpc3BsYXlOYW1lKTsKLSAgICB0aGlzLl9kZWJ1Z2dlclJlc3Vt
ZUJ1dHRvbkl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLkFjdGl2YXRlQnV0dG9uTmF2aWdhdGlvbkl0
ZW0oImRlYnVnZ2VyLWRhc2hib2FyZC1wYXVzZSIsIHRvb2x0aXAsIHRvb2x0aXAsIHJlc3VtZUlt
YWdlLnNyYywgcmVzdW1lSW1hZ2Uud2lkdGgsIHJlc3VtZUltYWdlLmhlaWdodCwgdHJ1ZSk7Ci0g
ICAgdGhpcy5fZGVidWdnZXJSZXN1bWVCdXR0b25JdGVtLmFjdGl2YXRlZCA9IHRydWU7Ci0gICAg
dGhpcy5fZGVidWdnZXJSZXN1bWVCdXR0b25JdGVtLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQsIHRoaXMuX3Jlc3VtZUJ1dHRv
bkNsaWNrZWQsIHRoaXMpOwotICAgIHRoaXMuX25hdmlnYXRpb25CYXIuYWRkTmF2aWdhdGlvbkl0
ZW0odGhpcy5fZGVidWdnZXJSZXN1bWVCdXR0b25JdGVtKTsKKyAgICAgICAgdGhpcy5fbmF2aWdh
dGlvbkJhciA9IG5ldyBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhcjsKKyAgICAgICAgdGhpcy5l
bGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX25hdmlnYXRpb25CYXIuZWxlbWVudCk7CiAKLSAgICB2
YXIgbWVzc2FnZSA9IHRoaXMuX21lc3NhZ2VFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7Ci0gICAgbWVzc2FnZS5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5EZWJ1Z2dl
ckRhc2hib2FyZFZpZXcuTWVzc2FnZVN0eWxlQ2xhc3NOYW1lKTsKLSAgICBtZXNzYWdlLnRpdGxl
ID0gbWVzc2FnZS50ZXh0Q29udGVudCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRGVidWdnZXIg
UGF1c2VkIik7Ci0gICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKG1lc3NhZ2UpOworICAgICAg
ICB2YXIgcmVzdW1lSW1hZ2U7CisgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuUGxhdGZvcm0uaXNM
ZWdhY3lNYWNPUykKKyAgICAgICAgICAgIHJlc3VtZUltYWdlID0ge3NyYzogIkltYWdlcy9MZWdh
Y3kvUmVzdW1lLnN2ZyIsIHdpZHRoOiAxNiwgaGVpZ2h0OiAxNn07CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHJlc3VtZUltYWdlID0ge3NyYzogIkltYWdlcy9SZXN1bWUuc3ZnIiwgd2lkdGg6
IDE1LCBoZWlnaHQ6IDE1fTsKIAotICAgIHZhciBkaXZpZGVyRWxlbWVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIGRpdmlkZXJFbGVtZW50LmNsYXNzTGlzdC5hZGQoV2Vi
SW5zcGVjdG9yLkRlYnVnZ2VyRGFzaGJvYXJkVmlldy5EaXZpZGVyU3R5bGVDbGFzc05hbWUpOwot
ICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChkaXZpZGVyRWxlbWVudCk7CisgICAgICAgIHZh
ciB0b29sdGlwID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb250aW51ZSBzY3JpcHQgZXhlY3V0
aW9uICglcyBvciAlcykiKS5mb3JtYXQoV2ViSW5zcGVjdG9yLmRlYnVnZ2VyU2lkZWJhclBhbmVs
LnBhdXNlT3JSZXN1bWVLZXlib2FyZFNob3J0Y3V0LmRpc3BsYXlOYW1lLCBXZWJJbnNwZWN0b3Iu
ZGVidWdnZXJTaWRlYmFyUGFuZWwucGF1c2VPclJlc3VtZUFsdGVybmF0ZUtleWJvYXJkU2hvcnRj
dXQuZGlzcGxheU5hbWUpOworICAgICAgICB0aGlzLl9kZWJ1Z2dlclJlc3VtZUJ1dHRvbkl0ZW0g
PSBuZXcgV2ViSW5zcGVjdG9yLkFjdGl2YXRlQnV0dG9uTmF2aWdhdGlvbkl0ZW0oImRlYnVnZ2Vy
LWRhc2hib2FyZC1wYXVzZSIsIHRvb2x0aXAsIHRvb2x0aXAsIHJlc3VtZUltYWdlLnNyYywgcmVz
dW1lSW1hZ2Uud2lkdGgsIHJlc3VtZUltYWdlLmhlaWdodCwgdHJ1ZSk7CisgICAgICAgIHRoaXMu
X2RlYnVnZ2VyUmVzdW1lQnV0dG9uSXRlbS5hY3RpdmF0ZWQgPSB0cnVlOworICAgICAgICB0aGlz
Ll9kZWJ1Z2dlclJlc3VtZUJ1dHRvbkl0ZW0uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
QnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgdGhpcy5fcmVzdW1lQnV0dG9uQ2xp
Y2tlZCwgdGhpcyk7CisgICAgICAgIHRoaXMuX25hdmlnYXRpb25CYXIuYWRkTmF2aWdhdGlvbkl0
ZW0odGhpcy5fZGVidWdnZXJSZXN1bWVCdXR0b25JdGVtKTsKIAotICAgIHZhciBsb2NhdGlvbkVs
ZW1lbnQgPSB0aGlzLl9sb2NhdGlvbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKTsKLSAgICBsb2NhdGlvbkVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuRGVi
dWdnZXJEYXNoYm9hcmRWaWV3LkxvY2F0aW9uU3R5bGVDbGFzc05hbWUpOwotICAgIHRoaXMuZWxl
bWVudC5hcHBlbmRDaGlsZChsb2NhdGlvbkVsZW1lbnQpOworICAgICAgICB2YXIgbWVzc2FnZSA9
IHRoaXMuX21lc3NhZ2VFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Cisg
ICAgICAgIG1lc3NhZ2UuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuRGVidWdnZXJEYXNoYm9h
cmRWaWV3Lk1lc3NhZ2VTdHlsZUNsYXNzTmFtZSk7CisgICAgICAgIG1lc3NhZ2UudGl0bGUgPSBt
ZXNzYWdlLnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEZWJ1Z2dlciBQYXVz
ZWQiKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKG1lc3NhZ2UpOwogCi0gICAg
dGhpcy5fcmVidWlsZExvY2F0aW9uKCk7Ci19OworICAgICAgICB2YXIgZGl2aWRlckVsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgZGl2aWRlckVsZW1lbnQu
Y2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuRGVidWdnZXJEYXNoYm9hcmRWaWV3LkRpdmlkZXJT
dHlsZUNsYXNzTmFtZSk7CisgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChkaXZpZGVy
RWxlbWVudCk7CiAKLVdlYkluc3BlY3Rvci5EZWJ1Z2dlckRhc2hib2FyZFZpZXcuRnVuY3Rpb25J
Y29uU3R5bGVDbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuQ2FsbEZyYW1lVHJlZUVsZW1lbnQuRnVu
Y3Rpb25JY29uU3R5bGVDbGFzc05hbWU7Ci1XZWJJbnNwZWN0b3IuRGVidWdnZXJEYXNoYm9hcmRW
aWV3LkV2ZW50TGlzdGVuZXJJY29uU3R5bGVDbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuQ2FsbEZy
YW1lVHJlZUVsZW1lbnQuRXZlbnRMaXN0ZW5lckljb25TdHlsZUNsYXNzTmFtZTsKKyAgICAgICAg
dmFyIGxvY2F0aW9uRWxlbWVudCA9IHRoaXMuX2xvY2F0aW9uRWxlbWVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICBsb2NhdGlvbkVsZW1lbnQuY2xhc3NMaXN0LmFk
ZChXZWJJbnNwZWN0b3IuRGVidWdnZXJEYXNoYm9hcmRWaWV3LkxvY2F0aW9uU3R5bGVDbGFzc05h
bWUpOworICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQobG9jYXRpb25FbGVtZW50KTsK
IAotV2ViSW5zcGVjdG9yLkRlYnVnZ2VyRGFzaGJvYXJkVmlldy5JY29uU3R5bGVDbGFzc05hbWUg
PSAiaWNvbiI7Ci1XZWJJbnNwZWN0b3IuRGVidWdnZXJEYXNoYm9hcmRWaWV3Lk1lc3NhZ2VTdHls
ZUNsYXNzTmFtZSA9ICJtZXNzYWdlIjsKLVdlYkluc3BlY3Rvci5EZWJ1Z2dlckRhc2hib2FyZFZp
ZXcuRGl2aWRlclN0eWxlQ2xhc3NOYW1lID0gImRpdmlkZXIiOwotV2ViSW5zcGVjdG9yLkRlYnVn
Z2VyRGFzaGJvYXJkVmlldy5Mb2NhdGlvblN0eWxlQ2xhc3NOYW1lID0gImxvY2F0aW9uIjsKLVdl
Ykluc3BlY3Rvci5EZWJ1Z2dlckRhc2hib2FyZFZpZXcuRnVuY3Rpb25OYW1lU3R5bGVDbGFzc05h
bWUgPSAiZnVuY3Rpb24tbmFtZSI7CisgICAgICAgIHRoaXMuX3JlYnVpbGRMb2NhdGlvbigpOwor
ICAgIH0KIAotV2ViSW5zcGVjdG9yLkRlYnVnZ2VyRGFzaGJvYXJkVmlldy5wcm90b3R5cGUgPSB7
Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5EZWJ1Z2dlckRhc2hib2FyZFZpZXcsCi0g
ICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuRGFzaGJvYXJkVmlldy5wcm90b3R5cGUsCisgICAg
Ly8gUHJpdmF0ZQogCi0gICAgX3JlYnVpbGRMb2NhdGlvbjogZnVuY3Rpb24oKQorICAgIF9yZWJ1
aWxkTG9jYXRpb24oKQogICAgIHsKICAgICAgICAgaWYgKCFXZWJJbnNwZWN0b3IuZGVidWdnZXJN
YW5hZ2VyLmFjdGl2ZUNhbGxGcmFtZSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEwNywxMCAr
OTgsMTkgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyRGFzaGJvYXJkVmlldy5wcm90b3R5cGUgPSB7
CiAgICAgICAgIHZhciBzaG91bGRQcmV2ZW50TGlua0Zsb2F0ID0gdHJ1ZTsKICAgICAgICAgdmFy
IGxpbmtFbGVtZW50ID0gV2ViSW5zcGVjdG9yLmNyZWF0ZVNvdXJjZUNvZGVMb2NhdGlvbkxpbmso
c291cmNlQ29kZUxvY2F0aW9uLCBzaG91bGRQcmV2ZW50TGlua0Zsb2F0KTsKICAgICAgICAgdGhp
cy5fbG9jYXRpb25FbGVtZW50LmFwcGVuZENoaWxkKGxpbmtFbGVtZW50KTsKLSAgICB9LAorICAg
IH0KIAotICAgIF9yZXN1bWVCdXR0b25DbGlja2VkOiBmdW5jdGlvbigpCisgICAgX3Jlc3VtZUJ1
dHRvbkNsaWNrZWQoKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdl
ci5yZXN1bWUoKTsKICAgICB9CiB9OworCitXZWJJbnNwZWN0b3IuRGVidWdnZXJEYXNoYm9hcmRW
aWV3LkZ1bmN0aW9uSWNvblN0eWxlQ2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkNhbGxGcmFtZVRy
ZWVFbGVtZW50LkZ1bmN0aW9uSWNvblN0eWxlQ2xhc3NOYW1lOworV2ViSW5zcGVjdG9yLkRlYnVn
Z2VyRGFzaGJvYXJkVmlldy5FdmVudExpc3RlbmVySWNvblN0eWxlQ2xhc3NOYW1lID0gV2ViSW5z
cGVjdG9yLkNhbGxGcmFtZVRyZWVFbGVtZW50LkV2ZW50TGlzdGVuZXJJY29uU3R5bGVDbGFzc05h
bWU7CisKK1dlYkluc3BlY3Rvci5EZWJ1Z2dlckRhc2hib2FyZFZpZXcuSWNvblN0eWxlQ2xhc3NO
YW1lID0gImljb24iOworV2ViSW5zcGVjdG9yLkRlYnVnZ2VyRGFzaGJvYXJkVmlldy5NZXNzYWdl
U3R5bGVDbGFzc05hbWUgPSAibWVzc2FnZSI7CitXZWJJbnNwZWN0b3IuRGVidWdnZXJEYXNoYm9h
cmRWaWV3LkRpdmlkZXJTdHlsZUNsYXNzTmFtZSA9ICJkaXZpZGVyIjsKK1dlYkluc3BlY3Rvci5E
ZWJ1Z2dlckRhc2hib2FyZFZpZXcuTG9jYXRpb25TdHlsZUNsYXNzTmFtZSA9ICJsb2NhdGlvbiI7
CitXZWJJbnNwZWN0b3IuRGVidWdnZXJEYXNoYm9hcmRWaWV3LkZ1bmN0aW9uTmFtZVN0eWxlQ2xh
c3NOYW1lID0gImZ1bmN0aW9uLW5hbWUiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGVmYXVsdERhc2hib2FyZFZpZXcuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZWZhdWx0RGFzaGJvYXJkVmlldy5q
cwppbmRleCBlNjI0MjkzMDM3MTk5OTEwYzA3MmNhNzYxYjZiNjA2NzRlNzU5NDk0Li4wMTI5ZGFh
ZjJhYTM3Y2RkZGM1YzlkYWFmN2I4MTkxY2YyYzU0YmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZWZhdWx0RGFzaGJvYXJkVmlldy5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZWZhdWx0RGFz
aGJvYXJkVmlldy5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMs
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEzLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yMyw1MiArMjMsNDggQEAKICAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotV2ViSW5zcGVjdG9yLkRlZmF1bHREYXNoYm9hcmRWaWV3ID0gZnVuY3Rpb24ocmVwcmVzZW50
ZWRPYmplY3QpCitXZWJJbnNwZWN0b3IuRGVmYXVsdERhc2hib2FyZFZpZXcgPSBjbGFzcyBEZWZh
dWx0RGFzaGJvYXJkVmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5EYXNoYm9hcmRWaWV3CiB7Ci0g
ICAgV2ViSW5zcGVjdG9yLkRhc2hib2FyZFZpZXcuY2FsbCh0aGlzLCByZXByZXNlbnRlZE9iamVj
dCwgImRlZmF1bHQiKTsKLQotICAgIHJlcHJlc2VudGVkT2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLkRlZmF1bHREYXNoYm9hcmQuRXZlbnQuRGF0YURpZENoYW5nZSwgd2luZG93
LnJlcXVlc3RBbmltYXRpb25GcmFtZS5iaW5kKG51bGwsIHRoaXMuX3VwZGF0ZURpc3BsYXkuYmlu
ZCh0aGlzKSkpOwotCi0gICAgdGhpcy5faXRlbXMgPSB7Ci0gICAgICAgIHJlc291cmNlc0NvdW50
OiB7Ci0gICAgICAgICAgICB0b29sdGlwOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRvdGFsIG51
bWJlciBvZiByZXNvdXJjZXMsIGNsaWNrIHRvIHNob3cgdGhlIFJlc291cmNlcyBuYXZpZ2F0aW9u
IHNpZGViYXIiKSwKLSAgICAgICAgICAgIGhhbmRsZXI6IHRoaXMuX3Jlc291cmNlc1dhc0NsaWNr
ZWQKLSAgICAgICAgfSwKLSAgICAgICAgcmVzb3VyY2VzU2l6ZTogewotICAgICAgICAgICAgdG9v
bHRpcDogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUb3RhbCBzaXplIG9mIGFsbCByZXNvdXJjZXMs
IGNsaWNrIHRvIHNob3cgdGhlIE5ldHdvcmsgUmVxdWVzdHMgdGltZWxpbmUiKSwKLSAgICAgICAg
ICAgIGhhbmRsZXI6IHRoaXMuX25ldHdvcmtJdGVtV2FzQ2xpY2tlZAotICAgICAgICB9LAotICAg
ICAgICB0aW1lOiB7Ci0gICAgICAgICAgICB0b29sdGlwOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IlRpbWUgdW50aWwgdGhlIGxvYWQgZXZlbnQgZmlyZWQsIGNsaWNrIHRvIHNob3cgdGhlIE5ldHdv
cmsgUmVxdWVzdHMgdGltZWxpbmUiKSwKLSAgICAgICAgICAgIGhhbmRsZXI6IHRoaXMuX25ldHdv
cmtJdGVtV2FzQ2xpY2tlZAotICAgICAgICB9LAotICAgICAgICBsb2dzOiB7Ci0gICAgICAgICAg
ICB0b29sdGlwOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvbnNvbGUgbG9ncywgY2xpY2sgdG8g
c2hvdyB0aGUgQ29uc29sZSIpLAotICAgICAgICAgICAgaGFuZGxlcjogdGhpcy5fY29uc29sZUl0
ZW1XYXNDbGlja2VkLmJpbmQodGhpcywgV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LlNjb3Bl
cy5Mb2dzKQotICAgICAgICB9LAotICAgICAgICBlcnJvcnM6IHsKLSAgICAgICAgICAgIHRvb2x0
aXA6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29uc29sZSBlcnJvcnMsIGNsaWNrIHRvIHNob3cg
dGhlIENvbnNvbGUiKSwKLSAgICAgICAgICAgIGhhbmRsZXI6IHRoaXMuX2NvbnNvbGVJdGVtV2Fz
Q2xpY2tlZC5iaW5kKHRoaXMsIFdlYkluc3BlY3Rvci5Mb2dDb250ZW50Vmlldy5TY29wZXMuRXJy
b3JzKQotICAgICAgICB9LAotICAgICAgICBpc3N1ZXM6IHsKLSAgICAgICAgICAgIHRvb2x0aXA6
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29uc29sZSB3YXJuaW5ncywgY2xpY2sgdG8gc2hvdyB0
aGUgQ29uc29sZSIpLAotICAgICAgICAgICAgaGFuZGxlcjogdGhpcy5fY29uc29sZUl0ZW1XYXND
bGlja2VkLmJpbmQodGhpcywgV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LlNjb3Blcy5XYXJu
aW5ncykKLSAgICAgICAgfQotICAgIH07Ci0KLSAgICBmb3IgKHZhciBuYW1lIGluIHRoaXMuX2l0
ZW1zKQotICAgICAgICB0aGlzLl9hcHBlbmRFbGVtZW50Rm9yTmFtZWRJdGVtKG5hbWUpOwotfTsK
LQotV2ViSW5zcGVjdG9yLkRlZmF1bHREYXNoYm9hcmRWaWV3LkVuYWJsZWRJdGVtU3R5bGVDbGFz
c05hbWUgPSAiZW5hYmxlZCI7Ci0KLVdlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJvYXJkVmlldy5w
cm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJv
YXJkVmlldywKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5EYXNoYm9hcmRWaWV3LnByb3Rv
dHlwZSwKKyAgICBjb25zdHJ1Y3RvcihyZXByZXNlbnRlZE9iamVjdCkKKyAgICB7CisgICAgICAg
IHN1cGVyKHJlcHJlc2VudGVkT2JqZWN0LCAiZGVmYXVsdCIpOworCisgICAgICAgIHJlcHJlc2Vu
dGVkT2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlZmF1bHREYXNoYm9hcmQu
RXZlbnQuRGF0YURpZENoYW5nZSwgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZS5iaW5kKG51
bGwsIHRoaXMuX3VwZGF0ZURpc3BsYXkuYmluZCh0aGlzKSkpOworCisgICAgICAgIHRoaXMuX2l0
ZW1zID0geworICAgICAgICAgICAgcmVzb3VyY2VzQ291bnQ6IHsKKyAgICAgICAgICAgICAgICB0
b29sdGlwOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRvdGFsIG51bWJlciBvZiByZXNvdXJjZXMs
IGNsaWNrIHRvIHNob3cgdGhlIFJlc291cmNlcyBuYXZpZ2F0aW9uIHNpZGViYXIiKSwKKyAgICAg
ICAgICAgICAgICBoYW5kbGVyOiB0aGlzLl9yZXNvdXJjZXNXYXNDbGlja2VkCisgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgcmVzb3VyY2VzU2l6ZTogeworICAgICAgICAgICAgICAgIHRvb2x0
aXA6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiVG90YWwgc2l6ZSBvZiBhbGwgcmVzb3VyY2VzLCBj
bGljayB0byBzaG93IHRoZSBOZXR3b3JrIFJlcXVlc3RzIHRpbWVsaW5lIiksCisgICAgICAgICAg
ICAgICAgaGFuZGxlcjogdGhpcy5fbmV0d29ya0l0ZW1XYXNDbGlja2VkCisgICAgICAgICAgICB9
LAorICAgICAgICAgICAgdGltZTogeworICAgICAgICAgICAgICAgIHRvb2x0aXA6IFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiVGltZSB1bnRpbCB0aGUgbG9hZCBldmVudCBmaXJlZCwgY2xpY2sgdG8g
c2hvdyB0aGUgTmV0d29yayBSZXF1ZXN0cyB0aW1lbGluZSIpLAorICAgICAgICAgICAgICAgIGhh
bmRsZXI6IHRoaXMuX25ldHdvcmtJdGVtV2FzQ2xpY2tlZAorICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgIGxvZ3M6IHsKKyAgICAgICAgICAgICAgICB0b29sdGlwOiBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIkNvbnNvbGUgbG9ncywgY2xpY2sgdG8gc2hvdyB0aGUgQ29uc29sZSIpLAorICAgICAg
ICAgICAgICAgIGhhbmRsZXI6IHRoaXMuX2NvbnNvbGVJdGVtV2FzQ2xpY2tlZC5iaW5kKHRoaXMs
IFdlYkluc3BlY3Rvci5Mb2dDb250ZW50Vmlldy5TY29wZXMuTG9ncykKKyAgICAgICAgICAgIH0s
CisgICAgICAgICAgICBlcnJvcnM6IHsKKyAgICAgICAgICAgICAgICB0b29sdGlwOiBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIkNvbnNvbGUgZXJyb3JzLCBjbGljayB0byBzaG93IHRoZSBDb25zb2xl
IiksCisgICAgICAgICAgICAgICAgaGFuZGxlcjogdGhpcy5fY29uc29sZUl0ZW1XYXNDbGlja2Vk
LmJpbmQodGhpcywgV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LlNjb3Blcy5FcnJvcnMpCisg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgaXNzdWVzOiB7CisgICAgICAgICAgICAgICAgdG9v
bHRpcDogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb25zb2xlIHdhcm5pbmdzLCBjbGljayB0byBz
aG93IHRoZSBDb25zb2xlIiksCisgICAgICAgICAgICAgICAgaGFuZGxlcjogdGhpcy5fY29uc29s
ZUl0ZW1XYXNDbGlja2VkLmJpbmQodGhpcywgV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LlNj
b3Blcy5XYXJuaW5ncykKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKIAorICAgICAgICBmb3Ig
KHZhciBuYW1lIGluIHRoaXMuX2l0ZW1zKQorICAgICAgICAgICAgdGhpcy5fYXBwZW5kRWxlbWVu
dEZvck5hbWVkSXRlbShuYW1lKTsKKyAgICB9CisgICAgCiAgICAgLy8gUHJpdmF0ZQogCi0gICAg
X3VwZGF0ZURpc3BsYXk6IGZ1bmN0aW9uKCkKKyAgICBfdXBkYXRlRGlzcGxheSgpCiAgICAgewog
ICAgICAgICB2YXIgZGFzaGJvYXJkID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdDsKIApAQCAtODYs
MTQgKzgyLDE0IEBAIFdlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJvYXJkVmlldy5wcm90b3R5cGUg
PSB7CiAgICAgICAgIHZhciBzaXplSXRlbSA9IHRoaXMuX2l0ZW1zLnJlc291cmNlc1NpemU7CiAg
ICAgICAgIHNpemVJdGVtLnRleHQgPSBkYXNoYm9hcmQucmVzb3VyY2VzU2l6ZSA/IE51bWJlci5i
eXRlc1RvU3RyaW5nKGRhc2hib2FyZC5yZXNvdXJjZXNTaXplLCBmYWxzZSkgOiAiXHUyMDE0IjsK
ICAgICAgICAgdGhpcy5fc2V0SXRlbUVuYWJsZWQoc2l6ZUl0ZW0sIGRhc2hib2FyZC5yZXNvdXJj
ZXNTaXplID4gMCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZm9ybWF0UG9zc2libGVMYXJnZU51
bWJlcjogZnVuY3Rpb24obnVtYmVyKQorICAgIF9mb3JtYXRQb3NzaWJsZUxhcmdlTnVtYmVyKG51
bWJlcikKICAgICB7CiAgICAgICAgIHJldHVybiBudW1iZXIgPiA5OTkgPyBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIjk5OSsiKSA6IG51bWJlcjsKLSAgICB9LAorICAgIH0KIAotICAgIF9hcHBlbmRF
bGVtZW50Rm9yTmFtZWRJdGVtOiBmdW5jdGlvbihuYW1lKQorICAgIF9hcHBlbmRFbGVtZW50Rm9y
TmFtZWRJdGVtKG5hbWUpCiAgICAgewogICAgICAgICB2YXIgaXRlbSA9IHRoaXMuX2l0ZW1zW25h
bWVdOwogCkBAIC0xMDcsNyArMTAzLDcgQEAgV2ViSW5zcGVjdG9yLkRlZmF1bHREYXNoYm9hcmRW
aWV3LnByb3RvdHlwZSA9IHsKIAogICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoaXRlbSwg
InRleHQiLAogICAgICAgICB7Ci0gICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKG5ld1RleHQpCisg
ICAgICAgICAgICBzZXQobmV3VGV4dCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBp
ZiAobmV3VGV4dCA9PT0gaXRlbS5vdXRsZXQudGV4dENvbnRlbnQpCiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTExOCw5ICsxMTQsOSBAQCBXZWJJbnNwZWN0b3IuRGVmYXVsdERhc2hi
b2FyZFZpZXcucHJvdG90eXBlID0gewogICAgICAgICBpdGVtLmNvbnRhaW5lci5hZGRFdmVudExp
c3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgICAgICAgICB0aGlzLl9pdGVt
V2FzQ2xpY2tlZChuYW1lKTsKICAgICAgICAgfS5iaW5kKHRoaXMpKTsKLSAgICB9LAorICAgIH0K
IAotICAgIF9pdGVtV2FzQ2xpY2tlZDogZnVuY3Rpb24obmFtZSkKKyAgICBfaXRlbVdhc0NsaWNr
ZWQobmFtZSkKICAgICB7CiAgICAgICAgIHZhciBpdGVtID0gdGhpcy5faXRlbXNbbmFtZV07CiAg
ICAgICAgIGlmICghaXRlbS5jb250YWluZXIuY2xhc3NMaXN0LmNvbnRhaW5zKFdlYkluc3BlY3Rv
ci5EZWZhdWx0RGFzaGJvYXJkVmlldy5FbmFibGVkSXRlbVN0eWxlQ2xhc3NOYW1lKSkKQEAgLTEy
OCwyNSArMTI0LDI1IEBAIFdlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJvYXJkVmlldy5wcm90b3R5
cGUgPSB7CiAKICAgICAgICAgaWYgKGl0ZW0uaGFuZGxlcikKICAgICAgICAgICAgIGl0ZW0uaGFu
ZGxlci5jYWxsKHRoaXMpOwotICAgIH0sCisgICAgfQogCi0gICAgX3Jlc291cmNlc1dhc0NsaWNr
ZWQ6IGZ1bmN0aW9uKCkKKyAgICBfcmVzb3VyY2VzV2FzQ2xpY2tlZCgpCiAgICAgewogICAgICAg
ICBXZWJJbnNwZWN0b3IubmF2aWdhdGlvblNpZGViYXIuc2VsZWN0ZWRTaWRlYmFyUGFuZWwgPSBX
ZWJJbnNwZWN0b3IucmVzb3VyY2VTaWRlYmFyUGFuZWw7CiAgICAgICAgIFdlYkluc3BlY3Rvci5u
YXZpZ2F0aW9uU2lkZWJhci5jb2xsYXBzZWQgPSBmYWxzZTsKLSAgICB9LAorICAgIH0KIAotICAg
IF9uZXR3b3JrSXRlbVdhc0NsaWNrZWQ6IGZ1bmN0aW9uKCkKKyAgICBfbmV0d29ya0l0ZW1XYXND
bGlja2VkKCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5uYXZpZ2F0aW9uU2lkZWJhci5z
ZWxlY3RlZFNpZGViYXJQYW5lbCA9IFdlYkluc3BlY3Rvci50aW1lbGluZVNpZGViYXJQYW5lbDsK
LSAgICB9LAorICAgIH0KIAotICAgIF9jb25zb2xlSXRlbVdhc0NsaWNrZWQ6IGZ1bmN0aW9uKHNj
b3BlKQorICAgIF9jb25zb2xlSXRlbVdhc0NsaWNrZWQoc2NvcGUpCiAgICAgewogICAgICAgICBX
ZWJJbnNwZWN0b3Iuc2hvd0NvbnNvbGVWaWV3KHNjb3BlKTsKLSAgICB9LAorICAgIH0KIAotICAg
IF9zZXRDb25zb2xlSXRlbVZhbHVlOiBmdW5jdGlvbihpdGVtTmFtZSwgbmV3VmFsdWUpCisgICAg
X3NldENvbnNvbGVJdGVtVmFsdWUoaXRlbU5hbWUsIG5ld1ZhbHVlKQogICAgIHsKICAgICAgICAg
dmFyIGlWYXJOYW1lID0gIl8iICsgaXRlbU5hbWU7CiAgICAgICAgIHZhciBwcmV2aW91c1ZhbHVl
ID0gdGhpc1tpVmFyTmFtZV07CkBAIC0xNzgsOSArMTc0LDkgQEAgV2ViSW5zcGVjdG9yLkRlZmF1
bHREYXNoYm9hcmRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGNvbnRhaW5lci5hZGRF
dmVudExpc3RlbmVyKCJ3ZWJraXRBbmltYXRpb25FbmQiLCBhbmltYXRpb25FbmRlZCk7CiAKICAg
ICAgICAgY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoInB1bHNpbmciKTsKLSAgICB9LAorICAgIH0K
IAotICAgIF9zZXRJdGVtRW5hYmxlZDogZnVuY3Rpb24oaXRlbSwgZW5hYmxlZCkKKyAgICBfc2V0
SXRlbUVuYWJsZWQoaXRlbSwgZW5hYmxlZCkKICAgICB7CiAgICAgICAgIGlmIChlbmFibGVkKQog
ICAgICAgICAgICAgaXRlbS5jb250YWluZXIuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuRGVm
YXVsdERhc2hib2FyZFZpZXcuRW5hYmxlZEl0ZW1TdHlsZUNsYXNzTmFtZSk7CkBAIC0xODgsMyAr
MTg0LDUgQEAgV2ViSW5zcGVjdG9yLkRlZmF1bHREYXNoYm9hcmRWaWV3LnByb3RvdHlwZSA9IHsK
ICAgICAgICAgICAgIGl0ZW0uY29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9y
LkRlZmF1bHREYXNoYm9hcmRWaWV3LkVuYWJsZWRJdGVtU3R5bGVDbGFzc05hbWUpOwogICAgIH0K
IH07CisKK1dlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJvYXJkVmlldy5FbmFibGVkSXRlbVN0eWxl
Q2xhc3NOYW1lID0gImVuYWJsZWQiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvRmlsdGVyQmFyQnV0dG9uLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRmlsdGVyQmFyQnV0dG9uLmpzCmluZGV4IGIwOWNl
NmUzMzFiNzAwZjg1YTNjMzg5ZDVmMWZlOTZjZmE3ZGM1YTcuLmY4NmMzMjEwZGFmNmJmNTNkMDVm
MTBjMzc0ZmNlOWY3ZmFhNjY5MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0ZpbHRlckJhckJ1dHRvbi5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9GaWx0ZXJCYXJCdXR0b24uanMKQEAgLTIzLDM4
ICsyMywzNCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdl
Ykluc3BlY3Rvci5GaWx0ZXJCYXJCdXR0b24gPSBmdW5jdGlvbihpZGVudGlmaWVyLCBmaWx0ZXJG
dW5jdGlvbiwgYWN0aXZhdGVkQnlEZWZhdWx0LCBkZWZhdWx0VG9vbFRpcCwgYWN0aXZhdGVkVG9v
bFRpcCwgaW1hZ2UsIGltYWdlV2lkdGgsIGltYWdlSGVpZ2h0LCBzdXBwcmVzc0VtYm9zcywgcm9s
ZSkKK1dlYkluc3BlY3Rvci5GaWx0ZXJCYXJCdXR0b24gPSBjbGFzcyBGaWx0ZXJCYXJCdXR0b24g
ZXh0ZW5kcyBXZWJJbnNwZWN0b3IuQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbQogewotICAg
IFdlYkluc3BlY3Rvci5BY3RpdmF0ZUJ1dHRvbk5hdmlnYXRpb25JdGVtLmNhbGwodGhpcywgaWRl
bnRpZmllciwgZGVmYXVsdFRvb2xUaXAsIGFjdGl2YXRlZFRvb2xUaXAsIGltYWdlLCBpbWFnZVdp
ZHRoLCBpbWFnZUhlaWdodCwgc3VwcHJlc3NFbWJvc3MsIHJvbGUpOwotCi0gICAgdGhpcy5fZmls
dGVyRnVuY3Rpb24gPSBmaWx0ZXJGdW5jdGlvbjsKLQotICAgIHRoaXMuX2FjdGl2YXRlZFNldHRp
bmcgPSBuZXcgV2ViSW5zcGVjdG9yLlNldHRpbmcoaWRlbnRpZmllciwgYWN0aXZhdGVkQnlEZWZh
dWx0KTsKLQotICAgIHRoaXMuYWN0aXZhdGVkID0gISF0aGlzLl9hY3RpdmF0ZWRTZXR0aW5nLnZh
bHVlOwotfTsKKyAgICBjb25zdHJ1Y3RvcihpZGVudGlmaWVyLCBmaWx0ZXJGdW5jdGlvbiwgYWN0
aXZhdGVkQnlEZWZhdWx0LCBkZWZhdWx0VG9vbFRpcCwgYWN0aXZhdGVkVG9vbFRpcCwgaW1hZ2Us
IGltYWdlV2lkdGgsIGltYWdlSGVpZ2h0LCBzdXBwcmVzc0VtYm9zcywgcm9sZSkKKyAgICB7Cisg
ICAgICAgIHN1cGVyKGlkZW50aWZpZXIsIGRlZmF1bHRUb29sVGlwLCBhY3RpdmF0ZWRUb29sVGlw
LCBpbWFnZSwgaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQsIHN1cHByZXNzRW1ib3NzLCByb2xlKTsK
IAotV2ViSW5zcGVjdG9yLkZpbHRlckJhckJ1dHRvbi5TdHlsZUNsYXNzTmFtZSA9ICJmaWx0ZXIt
YmFyLWJ1dHRvbiI7CisgICAgICAgIHRoaXMuX2ZpbHRlckZ1bmN0aW9uID0gZmlsdGVyRnVuY3Rp
b247CiAKLVdlYkluc3BlY3Rvci5GaWx0ZXJCYXJCdXR0b24uRXZlbnQgPSB7Ci0gICAgQWN0aXZh
dGVkU3RhdGVUb2dnbGVkOiAiZmlsdGVyLWJhci1hY3RpdmF0ZWQtc3RhdGUtdG9nZ2xlZCIKLX07
CisgICAgICAgIHRoaXMuX2FjdGl2YXRlZFNldHRpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLlNldHRp
bmcoaWRlbnRpZmllciwgYWN0aXZhdGVkQnlEZWZhdWx0KTsKIAotV2ViSW5zcGVjdG9yLkZpbHRl
ckJhckJ1dHRvbi5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5G
aWx0ZXJCYXJCdXR0b24sCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuQWN0aXZhdGVCdXR0
b25OYXZpZ2F0aW9uSXRlbS5wcm90b3R5cGUsCisgICAgICAgIHRoaXMuYWN0aXZhdGVkID0gISF0
aGlzLl9hY3RpdmF0ZWRTZXR0aW5nLnZhbHVlOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAg
ICAgZ2V0IGZpbHRlckZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9maWx0
ZXJGdW5jdGlvbjsKLSAgICB9LAorICAgIH0KIAotICAgIHRvZ2dsZTogZnVuY3Rpb24oKQorICAg
IHRvZ2dsZSgpCiAgICAgewogICAgICAgICB0aGlzLmFjdGl2YXRlZCA9ICF0aGlzLmFjdGl2YXRl
ZDsKICAgICAgICAgdGhpcy5fYWN0aXZhdGVkU2V0dGluZy52YWx1ZSA9IHRoaXMuYWN0aXZhdGVk
OwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRmls
dGVyQmFyQnV0dG9uLkV2ZW50LkFjdGl2YXRlZFN0YXRlVG9nZ2xlZCk7CiAgICAgfQogfTsKKwor
V2ViSW5zcGVjdG9yLkZpbHRlckJhckJ1dHRvbi5FdmVudCA9IHsKKyAgICBBY3RpdmF0ZWRTdGF0
ZVRvZ2dsZWQ6ICJmaWx0ZXItYmFyLWFjdGl2YXRlZC1zdGF0ZS10b2dnbGVkIgorfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL01ldHJpY3NT
dHlsZURldGFpbHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL01ldHJpY3NTdHlsZURldGFpbHNQYW5lbC5qcwppbmRleCBkMjhhODMyMTk4ODBkOGY1
NDI0NDdjNGI0ZmExNjA0ZmM4ZDUxOTExLi44ODk1NDMxOGZiNDg2M2Y0M2Q4YjkzZmE4YzE1YTJk
Njg3ODQyNzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9NZXRyaWNzU3R5bGVEZXRhaWxzUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTWV0cmljc1N0eWxlRGV0YWlsc1BhbmVsLmpzCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
MywyOSArMjMsMjQgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci1XZWJJbnNwZWN0b3IuTWV0cmljc1N0eWxlRGV0YWlsc1BhbmVsID0gZnVuY3Rpb24oKQorV2Vi
SW5zcGVjdG9yLk1ldHJpY3NTdHlsZURldGFpbHNQYW5lbCA9IGNsYXNzIE1ldHJpY3NTdHlsZURl
dGFpbHNQYW5lbCBleHRlbmRzIFdlYkluc3BlY3Rvci5TdHlsZURldGFpbHNQYW5lbAogewotICAg
IFdlYkluc3BlY3Rvci5TdHlsZURldGFpbHNQYW5lbC5jYWxsKHRoaXMsIFdlYkluc3BlY3Rvci5N
ZXRyaWNzU3R5bGVEZXRhaWxzUGFuZWwuU3R5bGVDbGFzc05hbWUsICJtZXRyaWNzIiwgV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJNZXRyaWNzIikpOwotCi0gICAgdGhpcy5fYm94TW9kZWxEaWFncmFt
Um93ID0gbmV3IFdlYkluc3BlY3Rvci5Cb3hNb2RlbERldGFpbHNTZWN0aW9uUm93OwotCi0gICAg
dmFyIGJveE1vZGVsR3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAo
W3RoaXMuX2JveE1vZGVsRGlhZ3JhbVJvd10pOwotICAgIHZhciBib3hNb2RlbFNlY3Rpb24gPSBu
ZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uKCJzdHlsZS1ib3gtbW9kZWwiLCBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIkJveCBNb2RlbCIpLCBbYm94TW9kZWxHcm91cF0pOworICAgIGNvbnN0
cnVjdG9yKCkKKyAgICB7CisgICAgICAgIHN1cGVyKCJtZXRyaWNzIiwgIm1ldHJpY3MiLCBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIk1ldHJpY3MiKSk7CiAKLSAgICB0aGlzLmVsZW1lbnQuYXBwZW5k
Q2hpbGQoYm94TW9kZWxTZWN0aW9uLmVsZW1lbnQpOwotfTsKKyAgICAgICAgdGhpcy5fYm94TW9k
ZWxEaWFncmFtUm93ID0gbmV3IFdlYkluc3BlY3Rvci5Cb3hNb2RlbERldGFpbHNTZWN0aW9uUm93
OwogCi1XZWJJbnNwZWN0b3IuTWV0cmljc1N0eWxlRGV0YWlsc1BhbmVsLlN0eWxlQ2xhc3NOYW1l
ID0gIm1ldHJpY3MiOworICAgICAgICB2YXIgYm94TW9kZWxHcm91cCA9IG5ldyBXZWJJbnNwZWN0
b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbdGhpcy5fYm94TW9kZWxEaWFncmFtUm93XSk7CisgICAg
ICAgIHZhciBib3hNb2RlbFNlY3Rpb24gPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9u
KCJzdHlsZS1ib3gtbW9kZWwiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkJveCBNb2RlbCIpLCBb
Ym94TW9kZWxHcm91cF0pOwogCi1XZWJJbnNwZWN0b3IuTWV0cmljc1N0eWxlRGV0YWlsc1BhbmVs
LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLk1ldHJpY3NTdHls
ZURldGFpbHNQYW5lbCwKKyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKGJveE1vZGVs
U2VjdGlvbi5lbGVtZW50KTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAotICAgIHJlZnJlc2g6
IGZ1bmN0aW9uKCkKKyAgICByZWZyZXNoKCkKICAgICB7CiAgICAgICAgIHRoaXMuX2JveE1vZGVs
RGlhZ3JhbVJvdy5ub2RlU3R5bGVzID0gdGhpcy5ub2RlU3R5bGVzOwogICAgIH0KIH07Ci0KLVdl
Ykluc3BlY3Rvci5NZXRyaWNzU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLl9fcHJvdG9fXyA9
IFdlYkluc3BlY3Rvci5TdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9PYmplY3RQcmV2aWV3Vmll
dy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL09iamVjdFBy
ZXZpZXdWaWV3LmpzCmluZGV4IGExY2JiOTIxNjYwNzhiODExNzI0YTJhMjljODhkMDZjODQwYWI2
ZTUuLmU4MTIyOWQ4YWQ2NmUzMTY1Y2ZjYmNkNTQyOWZhZTJhOGM0OWEyNzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL09iamVjdFByZXZpZXdW
aWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL09i
amVjdFByZXZpZXdWaWV3LmpzCkBAIC0yMyw4MCArMjMsNzIgQEAKICAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuT2JqZWN0UHJldmlld1ZpZXcg
PSBmdW5jdGlvbihwcmV2aWV3LCBtb2RlKQorV2ViSW5zcGVjdG9yLk9iamVjdFByZXZpZXdWaWV3
ID0gY2xhc3MgT2JqZWN0UHJldmlld1ZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7
Ci0gICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3Vi
Y2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCi0gICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxs
KHRoaXMpOwotCi0gICAgY29uc29sZS5hc3NlcnQocHJldmlldyBpbnN0YW5jZW9mIFdlYkluc3Bl
Y3Rvci5PYmplY3RQcmV2aWV3KTsKLQotICAgIHRoaXMuX3ByZXZpZXcgPSBwcmV2aWV3OwotICAg
IHRoaXMuX21vZGUgPSBtb2RlIHx8IFdlYkluc3BlY3Rvci5PYmplY3RQcmV2aWV3Vmlldy5Nb2Rl
LkZ1bGw7CisgICAgY29uc3RydWN0b3IocHJldmlldywgbW9kZSkKKyAgICB7CisgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KHByZXZpZXcgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuT2JqZWN0UHJldmll
dyk7CiAKLSAgICB0aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIp
OwotICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NOYW1lID0gIm9iamVjdC1wcmV2aWV3IjsKKyAgICAg
ICAgc3VwZXIoKTsKIAotICAgIHRoaXMuX3ByZXZpZXdFbGVtZW50ID0gdGhpcy5fZWxlbWVudC5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIikpOwotICAgIHRoaXMuX3By
ZXZpZXdFbGVtZW50LmNsYXNzTmFtZSA9ICJwcmV2aWV3IjsKLSAgICB0aGlzLl9sb3NzbGVzcyA9
IHRoaXMuX2FwcGVuZFByZXZpZXcodGhpcy5fcHJldmlld0VsZW1lbnQsIHRoaXMuX3ByZXZpZXcp
OworICAgICAgICB0aGlzLl9wcmV2aWV3ID0gcHJldmlldzsKKyAgICAgICAgdGhpcy5fbW9kZSA9
IG1vZGUgfHwgV2ViSW5zcGVjdG9yLk9iamVjdFByZXZpZXdWaWV3Lk1vZGUuRnVsbDsKIAotICAg
IHRoaXMuX3RpdGxlRWxlbWVudCA9IHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgic3BhbiIpKTsKLSAgICB0aGlzLl90aXRsZUVsZW1lbnQuY2xhc3NOYW1l
ID0gInRpdGxlIjsKLSAgICB0aGlzLl90aXRsZUVsZW1lbnQuaGlkZGVuID0gdHJ1ZTsKLSAgICB0
aGlzLl9pbml0VGl0bGVFbGVtZW50KCk7CisgICAgICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NOYW1l
ID0gIm9iamVjdC1wcmV2aWV3IjsKIAotICAgIGlmICh0aGlzLl9wcmV2aWV3Lmhhc1NpemUoKSkg
ewotICAgICAgICB2YXIgc2l6ZUVsZW1lbnQgPSB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKSk7Ci0gICAgICAgIHNpemVFbGVtZW50LmNsYXNz
TmFtZSA9ICJzaXplIjsKLSAgICAgICAgc2l6ZUVsZW1lbnQudGV4dENvbnRlbnQgPSAiICgiICsg
dGhpcy5fcHJldmlldy5zaXplICsgIikiOwotICAgIH0KKyAgICAgICAgdGhpcy5fcHJldmlld0Vs
ZW1lbnQgPSB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
InNwYW4iKSk7CisgICAgICAgIHRoaXMuX3ByZXZpZXdFbGVtZW50LmNsYXNzTmFtZSA9ICJwcmV2
aWV3IjsKKyAgICAgICAgdGhpcy5fbG9zc2xlc3MgPSB0aGlzLl9hcHBlbmRQcmV2aWV3KHRoaXMu
X3ByZXZpZXdFbGVtZW50LCB0aGlzLl9wcmV2aWV3KTsKIAotICAgIGlmICh0aGlzLl9sb3NzbGVz
cykKLSAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJsb3NzbGVzcyIpOwotfTsK
KyAgICAgICAgdGhpcy5fdGl0bGVFbGVtZW50ID0gdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZChk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIikpOworICAgICAgICB0aGlzLl90aXRsZUVsZW1l
bnQuY2xhc3NOYW1lID0gInRpdGxlIjsKKyAgICAgICAgdGhpcy5fdGl0bGVFbGVtZW50LmhpZGRl
biA9IHRydWU7CisgICAgICAgIHRoaXMuX2luaXRUaXRsZUVsZW1lbnQoKTsKIAotV2ViSW5zcGVj
dG9yLk9iamVjdFByZXZpZXdWaWV3Lk1vZGUgPSB7Ci0gICAgQnJpZWY6IFN5bWJvbCgib2JqZWN0
LXByZXZpZXctYnJpZWYiKSwKLSAgICBGdWxsOiBTeW1ib2woIm9iamVjdC1wcmV2aWV3LWZ1bGwi
KSwKLX07CisgICAgICAgIGlmICh0aGlzLl9wcmV2aWV3Lmhhc1NpemUoKSkgeworICAgICAgICAg
ICAgdmFyIHNpemVFbGVtZW50ID0gdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJzcGFuIikpOworICAgICAgICAgICAgc2l6ZUVsZW1lbnQuY2xhc3NOYW1l
ID0gInNpemUiOworICAgICAgICAgICAgc2l6ZUVsZW1lbnQudGV4dENvbnRlbnQgPSAiICgiICsg
dGhpcy5fcHJldmlldy5zaXplICsgIikiOworICAgICAgICB9CiAKLVdlYkluc3BlY3Rvci5PYmpl
Y3RQcmV2aWV3Vmlldy5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rv
ci5PYmplY3RQcmV2aWV3VmlldywKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmplY3Qu
cHJvdG90eXBlLAorICAgICAgICBpZiAodGhpcy5fbG9zc2xlc3MpCisgICAgICAgICAgICB0aGlz
Ll9lbGVtZW50LmNsYXNzTGlzdC5hZGQoImxvc3NsZXNzIik7CisgICAgfQogCiAgICAgLy8gUHVi
bGljCiAKICAgICBnZXQgcHJldmlldygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcHJl
dmlldzsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBlbGVtZW50KCkKICAgICB7CiAgICAgICAg
IHJldHVybiB0aGlzLl9lbGVtZW50OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IG1vZGUoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX21vZGU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBn
ZXQgbG9zc2xlc3MoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2xvc3NsZXNzOwotICAg
IH0sCisgICAgfQogCiAgICAgc2hvd1RpdGxlKCkKICAgICB7CiAgICAgICAgIHRoaXMuX3RpdGxl
RWxlbWVudC5oaWRkZW4gPSBmYWxzZTsKICAgICAgICAgdGhpcy5fcHJldmlld0VsZW1lbnQuaGlk
ZGVuID0gdHJ1ZTsKLSAgICB9LAorICAgIH0KIAogICAgIHNob3dQcmV2aWV3KCkKICAgICB7CiAg
ICAgICAgIHRoaXMuX3RpdGxlRWxlbWVudC5oaWRkZW4gPSB0cnVlOwogICAgICAgICB0aGlzLl9w
cmV2aWV3RWxlbWVudC5oaWRkZW4gPSBmYWxzZTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFBy
aXZhdGUKIApAQCAtMTA3LDEyICs5OSwxMiBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0UHJldmlld1Zp
ZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fdGl0bGVFbGVtZW50LmFwcGVuZENo
aWxkKFdlYkluc3BlY3Rvci5Gb3JtYXR0ZWRWYWx1ZS5jcmVhdGVFbGVtZW50Rm9yT2JqZWN0UHJl
dmlldyh0aGlzLl9wcmV2aWV3KSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHRoaXMuX3Rp
dGxlRWxlbWVudC50ZXh0Q29udGVudCA9IHRoaXMuX3ByZXZpZXcuZGVzY3JpcHRpb24gfHwgIiI7
Ci0gICAgfSwKKyAgICB9CiAKICAgICBfbnVtYmVyT2ZQcm9wZXJ0aWVzVG9TaG93SW5Nb2RlKCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9tb2RlID09PSBXZWJJbnNwZWN0b3IuT2JqZWN0
UHJldmlld1ZpZXcuTW9kZS5CcmllZiA/IDMgOiBJbmZpbml0eTsKLSAgICB9LAorICAgIH0KIAog
ICAgIF9hcHBlbmRQcmV2aWV3KGVsZW1lbnQsIHByZXZpZXcpCiAgICAgewpAQCAtMTM5LDcgKzEz
MSw3IEBAIFdlYkluc3BlY3Rvci5PYmplY3RQcmV2aWV3Vmlldy5wcm90b3R5cGUgPSB7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2FwcGVuZFByb3BlcnR5UHJldmlld3MoYm9keUVsZW1l
bnQsIHByZXZpZXcpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiB0aGlzLl9hcHBlbmRWYWx1
ZVByZXZpZXcoYm9keUVsZW1lbnQsIHByZXZpZXcpOwotICAgIH0sCisgICAgfQogCiAgICAgX2Fw
cGVuZEVudHJ5UHJldmlld3MoZWxlbWVudCwgcHJldmlldykKICAgICB7CkBAIC0xNzIsNyArMTY0
LDcgQEAgV2ViSW5zcGVjdG9yLk9iamVjdFByZXZpZXdWaWV3LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgZWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShpc0l0ZXJhdG9y
ID8gIl0iIDogIn0iKSk7CiAKICAgICAgICAgcmV0dXJuIGxvc3NsZXNzOwotICAgIH0sCisgICAg
fQogCiAgICAgX2FwcGVuZFByb3BlcnR5UHJldmlld3MoZWxlbWVudCwgcHJldmlldykKICAgICB7
CkBAIC0yMjQsNyArMjE2LDcgQEAgV2ViSW5zcGVjdG9yLk9iamVjdFByZXZpZXdWaWV3LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgZWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0
Tm9kZShpc0FycmF5ID8gIl0iIDogIn0iKSk7CiAKICAgICAgICAgcmV0dXJuIHByZXZpZXcubG9z
c2xlc3M7Ci0gICAgfSwKKyAgICB9CiAKICAgICBfYXBwZW5kVmFsdWVQcmV2aWV3KGVsZW1lbnQs
IHByZXZpZXcpCiAgICAgewpAQCAtMjMyLDMgKzIyNCw4IEBAIFdlYkluc3BlY3Rvci5PYmplY3RQ
cmV2aWV3Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIH07
CisKK1dlYkluc3BlY3Rvci5PYmplY3RQcmV2aWV3Vmlldy5Nb2RlID0geworICAgIEJyaWVmOiBT
eW1ib2woIm9iamVjdC1wcmV2aWV3LWJyaWVmIiksCisgICAgRnVsbDogU3ltYm9sKCJvYmplY3Qt
cHJldmlldy1mdWxsIiksCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0VHJlZVZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9PYmplY3RUcmVlVmlldy5qcwppbmRleCBiM2I2MTNhYTFj
NzdlMmNjOWJlMmE3ZTlhMGNhOGY2NTFkMmJmZWE3Li40YWZiZWQ0Mzc4Y2U2YWIzZjQyNTRmZDVh
NTgzYmJhOWEzNzI4YzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9PYmplY3RUcmVlVmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9PYmplY3RUcmVlVmlldy5qcwpAQCAtMjMsMTQ0ICsyMywx
MzggQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNw
ZWN0b3IuT2JqZWN0VHJlZVZpZXcgPSBmdW5jdGlvbihvYmplY3QsIG1vZGUsIHByb3BlcnR5UGF0
aCwgZm9yY2VFeHBhbmRpbmcpCitXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVZpZXcgPSBjbGFzcyBP
YmplY3RUcmVlVmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICAvLyBGSVhN
RTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNh
bGwgc3VwZXIoKS4KLSAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7Ci0KLSAg
ICBjb25zb2xlLmFzc2VydChvYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVtb3RlT2Jq
ZWN0KTsKLSAgICBjb25zb2xlLmFzc2VydCghcHJvcGVydHlQYXRoIHx8IHByb3BlcnR5UGF0aCBp
bnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Qcm9wZXJ0eVBhdGgpOwotCi0gICAgdGhpcy5fb2JqZWN0
ID0gb2JqZWN0OwotICAgIHRoaXMuX21vZGUgPSBtb2RlIHx8IFdlYkluc3BlY3Rvci5PYmplY3RU
cmVlVmlldy5Nb2RlLlByb3BlcnRpZXM7Ci0gICAgdGhpcy5fcHJvcGVydHlQYXRoID0gcHJvcGVy
dHlQYXRoIHx8IG5ldyBXZWJJbnNwZWN0b3IuUHJvcGVydHlQYXRoKHRoaXMuX29iamVjdCwgInRo
aXMiKTsKLSAgICB0aGlzLl9leHBhbmRlZCA9IGZhbHNlOwotICAgIHRoaXMuX2hhc0xvc3NsZXNz
UHJldmlldyA9IGZhbHNlOwotCi0gICAgLy8gSWYgT2JqZWN0VHJlZSBpcyB1c2VkIG91dHNpZGUg
b2YgdGhlIGNvbnNvbGUsIHdlIGRvIG5vdCBrbm93IHdoZW4gdG8gcmVsZWFzZQotICAgIC8vIFdl
YWtNYXAgZW50cmllcy4gQ3VycmVudGx5IGNvbGxhcHNlIHdvdWxkIHdvcmsuIEZvciB0aGUgY29u
c29sZSwgd2UgY2FuIGp1c3QKLSAgICAvLyBsaXN0ZW4gZm9yIGNvbnNvbGUgY2xlYXIgZXZlbnRz
LiBDdXJyZW50bHkgYWxsIE9iamVjdFRyZWVzIGFyZSBpbiB0aGUgY29uc29sZS4KLSAgICB0aGlz
Ll9pbkNvbnNvbGUgPSB0cnVlOwotCi0gICAgdGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NOYW1lID0gIm9iamVjdC10
cmVlIjsKLQotICAgIGlmICh0aGlzLl9vYmplY3QucHJldmlldykgewotICAgICAgICB0aGlzLl9w
cmV2aWV3VmlldyA9IG5ldyBXZWJJbnNwZWN0b3IuT2JqZWN0UHJldmlld1ZpZXcodGhpcy5fb2Jq
ZWN0LnByZXZpZXcpOwotICAgICAgICB0aGlzLl9wcmV2aWV3Vmlldy5lbGVtZW50LmFkZEV2ZW50
TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5faGFuZGxlUHJldmlld09yVGl0bGVFbGVtZW50Q2xpY2su
YmluZCh0aGlzKSk7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fcHJl
dmlld1ZpZXcuZWxlbWVudCk7Ci0KLSAgICAgICAgaWYgKHRoaXMuX3ByZXZpZXdWaWV3Lmxvc3Ns
ZXNzICYmICF0aGlzLl9wcm9wZXJ0eVBhdGgucGFyZW50ICYmICFmb3JjZUV4cGFuZGluZykgewot
ICAgICAgICAgICAgdGhpcy5faGFzTG9zc2xlc3NQcmV2aWV3ID0gdHJ1ZTsKLSAgICAgICAgICAg
IHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJsb3NzbGVzcy1wcmV2aWV3Iik7CisgICAgY29u
c3RydWN0b3Iob2JqZWN0LCBtb2RlLCBwcm9wZXJ0eVBhdGgsIGZvcmNlRXhwYW5kaW5nKQorICAg
IHsKKyAgICAgICAgc3VwZXIoKTsKKworICAgICAgICBjb25zb2xlLmFzc2VydChvYmplY3QgaW5z
dGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0KTsKKyAgICAgICAgY29uc29sZS5hc3Nl
cnQoIXByb3BlcnR5UGF0aCB8fCBwcm9wZXJ0eVBhdGggaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
UHJvcGVydHlQYXRoKTsKKworICAgICAgICB0aGlzLl9vYmplY3QgPSBvYmplY3Q7CisgICAgICAg
IHRoaXMuX21vZGUgPSBtb2RlIHx8IFdlYkluc3BlY3Rvci5PYmplY3RUcmVlVmlldy5Nb2RlLlBy
b3BlcnRpZXM7CisgICAgICAgIHRoaXMuX3Byb3BlcnR5UGF0aCA9IHByb3BlcnR5UGF0aCB8fCBu
ZXcgV2ViSW5zcGVjdG9yLlByb3BlcnR5UGF0aCh0aGlzLl9vYmplY3QsICJ0aGlzIik7CisgICAg
ICAgIHRoaXMuX2V4cGFuZGVkID0gZmFsc2U7CisgICAgICAgIHRoaXMuX2hhc0xvc3NsZXNzUHJl
dmlldyA9IGZhbHNlOworCisgICAgICAgIC8vIElmIE9iamVjdFRyZWUgaXMgdXNlZCBvdXRzaWRl
IG9mIHRoZSBjb25zb2xlLCB3ZSBkbyBub3Qga25vdyB3aGVuIHRvIHJlbGVhc2UKKyAgICAgICAg
Ly8gV2Vha01hcCBlbnRyaWVzLiBDdXJyZW50bHkgY29sbGFwc2Ugd291bGQgd29yay4gRm9yIHRo
ZSBjb25zb2xlLCB3ZSBjYW4ganVzdAorICAgICAgICAvLyBsaXN0ZW4gZm9yIGNvbnNvbGUgY2xl
YXIgZXZlbnRzLiBDdXJyZW50bHkgYWxsIE9iamVjdFRyZWVzIGFyZSBpbiB0aGUgY29uc29sZS4K
KyAgICAgICAgdGhpcy5faW5Db25zb2xlID0gdHJ1ZTsKKworICAgICAgICB0aGlzLl9lbGVtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuX2VsZW1lbnQu
Y2xhc3NOYW1lID0gIm9iamVjdC10cmVlIjsKKworICAgICAgICBpZiAodGhpcy5fb2JqZWN0LnBy
ZXZpZXcpIHsKKyAgICAgICAgICAgIHRoaXMuX3ByZXZpZXdWaWV3ID0gbmV3IFdlYkluc3BlY3Rv
ci5PYmplY3RQcmV2aWV3Vmlldyh0aGlzLl9vYmplY3QucHJldmlldyk7CisgICAgICAgICAgICB0
aGlzLl9wcmV2aWV3Vmlldy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5f
aGFuZGxlUHJldmlld09yVGl0bGVFbGVtZW50Q2xpY2suYmluZCh0aGlzKSk7CisgICAgICAgICAg
ICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3ByZXZpZXdWaWV3LmVsZW1lbnQpOwor
CisgICAgICAgICAgICBpZiAodGhpcy5fcHJldmlld1ZpZXcubG9zc2xlc3MgJiYgIXRoaXMuX3By
b3BlcnR5UGF0aC5wYXJlbnQgJiYgIWZvcmNlRXhwYW5kaW5nKSB7CisgICAgICAgICAgICAgICAg
dGhpcy5faGFzTG9zc2xlc3NQcmV2aWV3ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB0aGlzLmVs
ZW1lbnQuY2xhc3NMaXN0LmFkZCgibG9zc2xlc3MtcHJldmlldyIpOworICAgICAgICAgICAgfQor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhpcy5fdGl0bGVFbGVtZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgICAgICAgICAgdGhpcy5fdGl0bGVFbGVtZW50
LmNsYXNzTmFtZSA9ICJ0aXRsZSI7CisgICAgICAgICAgICB0aGlzLl90aXRsZUVsZW1lbnQuYXBw
ZW5kQ2hpbGQoV2ViSW5zcGVjdG9yLkZvcm1hdHRlZFZhbHVlLmNyZWF0ZUVsZW1lbnRGb3JSZW1v
dGVPYmplY3QodGhpcy5fb2JqZWN0KSk7CisgICAgICAgICAgICB0aGlzLl90aXRsZUVsZW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9oYW5kbGVQcmV2aWV3T3JUaXRsZUVsZW1l
bnRDbGljay5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hp
bGQodGhpcy5fdGl0bGVFbGVtZW50KTsKICAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAg
IHRoaXMuX3RpdGxlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKLSAg
ICAgICAgdGhpcy5fdGl0bGVFbGVtZW50LmNsYXNzTmFtZSA9ICJ0aXRsZSI7Ci0gICAgICAgIHRo
aXMuX3RpdGxlRWxlbWVudC5hcHBlbmRDaGlsZChXZWJJbnNwZWN0b3IuRm9ybWF0dGVkVmFsdWUu
Y3JlYXRlRWxlbWVudEZvclJlbW90ZU9iamVjdCh0aGlzLl9vYmplY3QpKTsKLSAgICAgICAgdGhp
cy5fdGl0bGVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5faGFuZGxlUHJl
dmlld09yVGl0bGVFbGVtZW50Q2xpY2suYmluZCh0aGlzKSk7Ci0gICAgICAgIHRoaXMuX2VsZW1l
bnQuYXBwZW5kQ2hpbGQodGhpcy5fdGl0bGVFbGVtZW50KTsKLSAgICB9CiAKLSAgICB0aGlzLl9v
dXRsaW5lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9sIik7Ci0gICAgdGhpcy5f
b3V0bGluZUVsZW1lbnQuY2xhc3NOYW1lID0gIm9iamVjdC10cmVlLW91dGxpbmUiOwotICAgIHRo
aXMuX291dGxpbmUgPSBuZXcgV2ViSW5zcGVjdG9yLlRyZWVPdXRsaW5lKHRoaXMuX291dGxpbmVF
bGVtZW50KTsKLSAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX291dGxpbmVFbGVt
ZW50KTsKKyAgICAgICAgdGhpcy5fb3V0bGluZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJvbCIpOworICAgICAgICB0aGlzLl9vdXRsaW5lRWxlbWVudC5jbGFzc05hbWUgPSAib2Jq
ZWN0LXRyZWUtb3V0bGluZSI7CisgICAgICAgIHRoaXMuX291dGxpbmUgPSBuZXcgV2ViSW5zcGVj
dG9yLlRyZWVPdXRsaW5lKHRoaXMuX291dGxpbmVFbGVtZW50KTsKKyAgICAgICAgdGhpcy5fZWxl
bWVudC5hcHBlbmRDaGlsZCh0aGlzLl9vdXRsaW5lRWxlbWVudCk7CiAKLSAgICAvLyBGSVhNRTog
U3VwcG9ydCBlZGl0YWJsZSBPYmplY3RUcmVlcy4KLX07CisgICAgICAgIC8vIEZJWE1FOiBTdXBw
b3J0IGVkaXRhYmxlIE9iamVjdFRyZWVzLgorICAgIH0KIAotV2ViSW5zcGVjdG9yLk9iamVjdFRy
ZWVWaWV3LmVtcHR5TWVzc2FnZUVsZW1lbnQgPSBmdW5jdGlvbihtZXNzYWdlKQotewotICAgIHZh
ciBlbXB0eU1lc3NhZ2VFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0g
ICAgZW1wdHlNZXNzYWdlRWxlbWVudC5jbGFzc05hbWUgPSAiZW1wdHktbWVzc2FnZSI7Ci0gICAg
ZW1wdHlNZXNzYWdlRWxlbWVudC50ZXh0Q29udGVudCA9IG1lc3NhZ2U7Ci0gICAgcmV0dXJuIGVt
cHR5TWVzc2FnZUVsZW1lbnQ7Ci19OworICAgIC8vIFN0YXRpYwogCi1XZWJJbnNwZWN0b3IuT2Jq
ZWN0VHJlZVZpZXcuTW9kZSA9IHsKLSAgICBQcm9wZXJ0aWVzOiBTeW1ib2woIm9iamVjdC10cmVl
LXByb3BlcnRpZXMiKSwKLSAgICBBUEk6IFN5bWJvbCgib2JqZWN0LXRyZWUtYXBpIiksCi19Owor
ICAgIHN0YXRpYyBjcmVhdGVFbXB0eU1lc3NhZ2VFbGVtZW50KG1lc3NhZ2UpCisgICAgeworICAg
ICAgICB2YXIgZW1wdHlNZXNzYWdlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpOworICAgICAgICBlbXB0eU1lc3NhZ2VFbGVtZW50LmNsYXNzTmFtZSA9ICJlbXB0eS1tZXNz
YWdlIjsKKyAgICAgICAgZW1wdHlNZXNzYWdlRWxlbWVudC50ZXh0Q29udGVudCA9IG1lc3NhZ2U7
CisgICAgICAgIHJldHVybiBlbXB0eU1lc3NhZ2VFbGVtZW50OworICAgIH0KIAotV2ViSW5zcGVj
dG9yLk9iamVjdFRyZWVWaWV3LkNvbXBhcmVQcm9wZXJ0eURlc2NyaXB0b3JzID0gZnVuY3Rpb24o
cHJvcGVydHlBLCBwcm9wZXJ0eUIpCi17Ci0gICAgdmFyIGEgPSBwcm9wZXJ0eUEubmFtZTsKLSAg
ICB2YXIgYiA9IHByb3BlcnR5Qi5uYW1lOwotCi0gICAgLy8gUHV0IF9fcHJvdG9fXyBhdCB0aGUg
Ym90dG9tLgotICAgIGlmIChhID09PSAiX19wcm90b19fIikKLSAgICAgICAgcmV0dXJuIDE7Ci0g
ICAgaWYgKGIgPT09ICJfX3Byb3RvX18iKQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICAvLyBQ
dXQgaW50ZXJuYWwgcHJvcGVydGllcyBhdCB0aGUgdG9wLgotICAgIGlmIChhLmlzSW50ZXJuYWxQ
cm9wZXJ0eSAmJiAhYi5pc0ludGVybmFsUHJvcGVydHkpCi0gICAgICAgIHJldHVybiAtMTsKLSAg
ICBpZiAoYi5pc0ludGVybmFsUHJvcGVydHkgJiYgIWEuaXNJbnRlcm5hbFByb3BlcnR5KQotICAg
ICAgICByZXR1cm4gMTsKLQotICAgIC8vIGlmIHVzZWQgZWxzZXdoZXJlIG1ha2Ugc3VyZSB0bwot
ICAgIC8vICAtIGNvbnZlcnQgYSBhbmQgYiB0byBzdHJpbmdzIChub3QgbmVlZGVkIGhlcmUsIHBy
b3BlcnRpZXMgYXJlIGFsbCBzdHJpbmdzKQotICAgIC8vICAtIGNoZWNrIGlmIGEgPT0gYiAobm90
IG5lZWRlZCBoZXJlLCBubyB0d28gcHJvcGVydGllcyBjYW4gYmUgdGhlIHNhbWUpCi0KLSAgICB2
YXIgZGlmZiA9IDA7Ci0gICAgdmFyIGNodW5rID0gL15cZCt8XlxEKy87Ci0gICAgdmFyIGNodW5r
YSwgY2h1bmtiLCBhbnVtLCBibnVtOwotICAgIHdoaWxlIChkaWZmID09PSAwKSB7Ci0gICAgICAg
IGlmICghYSAmJiBiKQotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBpZiAoIWIgJiYg
YSkKKyAgICBzdGF0aWMgY29tcGFyZVByb3BlcnR5RGVzY3JpcHRvcnMocHJvcGVydHlBLCBwcm9w
ZXJ0eUIpCisgICAgeworICAgICAgICB2YXIgYSA9IHByb3BlcnR5QS5uYW1lOworICAgICAgICB2
YXIgYiA9IHByb3BlcnR5Qi5uYW1lOworCisgICAgICAgIC8vIFB1dCBfX3Byb3RvX18gYXQgdGhl
IGJvdHRvbS4KKyAgICAgICAgaWYgKGEgPT09ICJfX3Byb3RvX18iKQogICAgICAgICAgICAgcmV0
dXJuIDE7Ci0gICAgICAgIGNodW5rYSA9IGEubWF0Y2goY2h1bmspWzBdOwotICAgICAgICBjaHVu
a2IgPSBiLm1hdGNoKGNodW5rKVswXTsKLSAgICAgICAgYW51bSA9ICFpc05hTihjaHVua2EpOwot
ICAgICAgICBibnVtID0gIWlzTmFOKGNodW5rYik7Ci0gICAgICAgIGlmIChhbnVtICYmICFibnVt
KQorICAgICAgICBpZiAoYiA9PT0gIl9fcHJvdG9fXyIpCisgICAgICAgICAgICByZXR1cm4gLTE7
CisKKyAgICAgICAgLy8gUHV0IGludGVybmFsIHByb3BlcnRpZXMgYXQgdGhlIHRvcC4KKyAgICAg
ICAgaWYgKGEuaXNJbnRlcm5hbFByb3BlcnR5ICYmICFiLmlzSW50ZXJuYWxQcm9wZXJ0eSkKICAg
ICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgaWYgKGJudW0gJiYgIWFudW0pCisgICAgICAg
IGlmIChiLmlzSW50ZXJuYWxQcm9wZXJ0eSAmJiAhYS5pc0ludGVybmFsUHJvcGVydHkpCiAgICAg
ICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgaWYgKGFudW0gJiYgYm51bSkgewotICAgICAgICAg
ICAgZGlmZiA9IGNodW5rYSAtIGNodW5rYjsKLSAgICAgICAgICAgIGlmIChkaWZmID09PSAwICYm
IGNodW5rYS5sZW5ndGggIT09IGNodW5rYi5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgICBpZiAo
IStjaHVua2EgJiYgIStjaHVua2IpIC8vIGNodW5rcyBhcmUgc3RyaW5ncyBvZiBhbGwgMHMgKHNw
ZWNpYWwgY2FzZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNodW5rYS5sZW5ndGggLSBj
aHVua2IubGVuZ3RoOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGNodW5rYi5sZW5ndGggLSBjaHVua2EubGVuZ3RoOwotICAgICAgICAgICAgfQotICAg
ICAgICB9IGVsc2UgaWYgKGNodW5rYSAhPT0gY2h1bmtiKQotICAgICAgICAgICAgcmV0dXJuIChj
aHVua2EgPCBjaHVua2IpID8gLTEgOiAxOwotICAgICAgICBhID0gYS5zdWJzdHJpbmcoY2h1bmth
Lmxlbmd0aCk7Ci0gICAgICAgIGIgPSBiLnN1YnN0cmluZyhjaHVua2IubGVuZ3RoKTsKLSAgICB9
Ci0gICAgcmV0dXJuIGRpZmY7Ci19OwogCi1XZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVZpZXcucHJv
dG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVZpZXcs
Ci0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZSwKKyAgICAgICAg
Ly8gaWYgdXNlZCBlbHNld2hlcmUgbWFrZSBzdXJlIHRvCisgICAgICAgIC8vICAtIGNvbnZlcnQg
YSBhbmQgYiB0byBzdHJpbmdzIChub3QgbmVlZGVkIGhlcmUsIHByb3BlcnRpZXMgYXJlIGFsbCBz
dHJpbmdzKQorICAgICAgICAvLyAgLSBjaGVjayBpZiBhID09IGIgKG5vdCBuZWVkZWQgaGVyZSwg
bm8gdHdvIHByb3BlcnRpZXMgY2FuIGJlIHRoZSBzYW1lKQorCisgICAgICAgIHZhciBkaWZmID0g
MDsKKyAgICAgICAgdmFyIGNodW5rID0gL15cZCt8XlxEKy87CisgICAgICAgIHZhciBjaHVua2Es
IGNodW5rYiwgYW51bSwgYm51bTsKKyAgICAgICAgd2hpbGUgKGRpZmYgPT09IDApIHsKKyAgICAg
ICAgICAgIGlmICghYSAmJiBiKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAg
ICAgIGlmICghYiAmJiBhKQorICAgICAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICAgICAg
Y2h1bmthID0gYS5tYXRjaChjaHVuaylbMF07CisgICAgICAgICAgICBjaHVua2IgPSBiLm1hdGNo
KGNodW5rKVswXTsKKyAgICAgICAgICAgIGFudW0gPSAhaXNOYU4oY2h1bmthKTsKKyAgICAgICAg
ICAgIGJudW0gPSAhaXNOYU4oY2h1bmtiKTsKKyAgICAgICAgICAgIGlmIChhbnVtICYmICFibnVt
KQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIGlmIChibnVtICYmICFh
bnVtKQorICAgICAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICAgICAgaWYgKGFudW0gJiYg
Ym51bSkgeworICAgICAgICAgICAgICAgIGRpZmYgPSBjaHVua2EgLSBjaHVua2I7CisgICAgICAg
ICAgICAgICAgaWYgKGRpZmYgPT09IDAgJiYgY2h1bmthLmxlbmd0aCAhPT0gY2h1bmtiLmxlbmd0
aCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIStjaHVua2EgJiYgIStjaHVua2IpIC8vIGNo
dW5rcyBhcmUgc3RyaW5ncyBvZiBhbGwgMHMgKHNwZWNpYWwgY2FzZSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBjaHVua2EubGVuZ3RoIC0gY2h1bmtiLmxlbmd0aDsKKyAgICAgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNodW5rYi5s
ZW5ndGggLSBjaHVua2EubGVuZ3RoOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0g
ZWxzZSBpZiAoY2h1bmthICE9PSBjaHVua2IpCisgICAgICAgICAgICAgICAgcmV0dXJuIChjaHVu
a2EgPCBjaHVua2IpID8gLTEgOiAxOworICAgICAgICAgICAgYSA9IGEuc3Vic3RyaW5nKGNodW5r
YS5sZW5ndGgpOworICAgICAgICAgICAgYiA9IGIuc3Vic3RyaW5nKGNodW5rYi5sZW5ndGgpOwor
ICAgICAgICB9CisgICAgICAgIHJldHVybiBkaWZmOworICAgIH0KIAogICAgIC8vIFB1YmxpYwog
CiAgICAgZ2V0IG9iamVjdCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fb2JqZWN0Owot
ICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGVsZW1lbnQoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX2VsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgdHJlZU91dGxpbmUoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX291dGxpbmU7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICBnZXQgZXhwYW5kZWQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2V4cGFuZGVkOwot
ICAgIH0sCisgICAgfQogCiAgICAgZXhwYW5kKCkKICAgICB7CkBAIC0xNzYsNyArMTcwLDcgQEAg
V2ViSW5zcGVjdG9yLk9iamVjdFRyZWVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5f
dHJhY2tXZWFrRW50cmllcygpOwogCiAgICAgICAgIHRoaXMudXBkYXRlKCk7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBjb2xsYXBzZSgpCiAgICAgewpAQCAtMTkwLDE0ICsxODQsMTQgQEAgV2ViSW5z
cGVjdG9yLk9iamVjdFRyZWVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX3By
ZXZpZXdWaWV3LnNob3dQcmV2aWV3KCk7CiAKICAgICAgICAgdGhpcy5fdW50cmFja1dlYWtFbnRy
aWVzKCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzaG93T25seVByb3BlcnRpZXMoKQogICAgIHsK
ICAgICAgICAgdGhpcy5faW5Db25zb2xlID0gZmFsc2U7CiAKICAgICAgICAgdGhpcy5fZWxlbWVu
dC5jbGFzc0xpc3QuYWRkKCJwcm9wZXJ0aWVzLW9ubHkiKTsKLSAgICB9LAorICAgIH0KIAogICAg
IGFwcGVuZFRpdGxlU3VmZml4KHN1ZmZpeEVsZW1lbnQpCiAgICAgewpAQCAtMjA1LDcgKzE5OSw3
IEBAIFdlYkluc3BlY3Rvci5PYmplY3RUcmVlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICB0aGlzLl9wcmV2aWV3Vmlldy5lbGVtZW50LmFwcGVuZENoaWxkKHN1ZmZpeEVsZW1lbnQpOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICB0aGlzLl90aXRsZUVsZW1lbnQuYXBwZW5kQ2hpbGQo
c3VmZml4RWxlbWVudCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBhcHBlbmRFeHRyYVByb3BlcnR5
RGVzY3JpcHRvcihwcm9wZXJ0eURlc2NyaXB0b3IpCiAgICAgewpAQCAtMjEzLDcgKzIwNyw3IEBA
IFdlYkluc3BlY3Rvci5PYmplY3RUcmVlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0
aGlzLl9leHRyYVByb3BlcnRpZXMgPSBbXTsKIAogICAgICAgICB0aGlzLl9leHRyYVByb3BlcnRp
ZXMucHVzaChwcm9wZXJ0eURlc2NyaXB0b3IpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJv
dGVjdGVkCiAKQEAgLTIyMyw3ICsyMTcsNyBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVZpZXcu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fb2JqZWN0LmdldENvbGxlY3Rpb25FbnRy
aWVzKDAsIDEwMCwgdGhpcy5fdXBkYXRlQ2hpbGRyZW4uYmluZCh0aGlzLCB0aGlzLl91cGRhdGVF
bnRyaWVzKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHRoaXMuX29iamVjdC5nZXREaXNw
bGF5YWJsZVByb3BlcnR5RGVzY3JpcHRvcnModGhpcy5fdXBkYXRlQ2hpbGRyZW4uYmluZCh0aGlz
LCB0aGlzLl91cGRhdGVQcm9wZXJ0aWVzKSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2
YXRlCiAKQEAgLTIzMiwxMyArMjI2LDEzIEBAIFdlYkluc3BlY3Rvci5PYmplY3RUcmVlVmlldy5w
cm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX291dGxpbmUucmVtb3ZlQ2hpbGRyZW4oKTsKIAog
ICAgICAgICBpZiAoIWxpc3QpIHsKLSAgICAgICAgICAgIHZhciBlcnJvck1lc3NhZ2VFbGVtZW50
ID0gV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVWaWV3LmVtcHR5TWVzc2FnZUVsZW1lbnQoV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJDb3VsZCBub3QgZmV0Y2ggcHJvcGVydGllcy4gT2JqZWN0IG1heSBu
byBsb25nZXIgZXhpc3QuIikpOworICAgICAgICAgICAgdmFyIGVycm9yTWVzc2FnZUVsZW1lbnQg
PSBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVZpZXcuY3JlYXRlRW1wdHlNZXNzYWdlRWxlbWVudChX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvdWxkIG5vdCBmZXRjaCBwcm9wZXJ0aWVzLiBPYmplY3Qg
bWF5IG5vIGxvbmdlciBleGlzdC4iKSk7CiAgICAgICAgICAgICB0aGlzLl9vdXRsaW5lLmFwcGVu
ZENoaWxkKG5ldyBXZWJJbnNwZWN0b3IuVHJlZUVsZW1lbnQoZXJyb3JNZXNzYWdlRWxlbWVudCwg
bnVsbCwgZmFsc2UpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAg
IGhhbmRsZXIuY2FsbCh0aGlzLCBsaXN0LCB0aGlzLl9wcm9wZXJ0eVBhdGgpOwotICAgIH0sCisg
ICAgfQogCiAgICAgX3VwZGF0ZUVudHJpZXMoZW50cmllcywgcHJvcGVydHlQYXRoKQogICAgIHsK
QEAgLTI1MSw3ICsyNDUsNyBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVZpZXcucHJvdG90eXBl
ID0gewogICAgICAgICB9CiAKICAgICAgICAgaWYgKCF0aGlzLl9vdXRsaW5lLmNoaWxkcmVuLmxl
bmd0aCkgewotICAgICAgICAgICAgdmFyIGVtcHR5TWVzc2FnZUVsZW1lbnQgPSBXZWJJbnNwZWN0
b3IuT2JqZWN0VHJlZVZpZXcuZW1wdHlNZXNzYWdlRWxlbWVudChXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIk5vIEVudHJpZXMuIikpOworICAgICAgICAgICAgdmFyIGVtcHR5TWVzc2FnZUVsZW1lbnQg
PSBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVZpZXcuY3JlYXRlRW1wdHlNZXNzYWdlRWxlbWVudChX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk5vIEVudHJpZXMuIikpOwogICAgICAgICAgICAgdGhpcy5f
b3V0bGluZS5hcHBlbmRDaGlsZChuZXcgV2ViSW5zcGVjdG9yLlRyZWVFbGVtZW50KGVtcHR5TWVz
c2FnZUVsZW1lbnQsIG51bGwsIGZhbHNlKSk7CiAgICAgICAgIH0KIApAQCAtMjYwLDE0ICsyNTQs
MTQgQEAgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIGlmIChwcm9wZXJ0eURlc2NyaXB0b3IpCiAgICAgICAgICAgICAgICAgdGhpcy5fb3V0bGlu
ZS5hcHBlbmRDaGlsZChuZXcgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVQcm9wZXJ0eVRyZWVFbGVt
ZW50KHByb3BlcnR5RGVzY3JpcHRvciwgcHJvcGVydHlQYXRoLCB0aGlzLl9tb2RlKSk7CiAgICAg
ICAgIH0uYmluZCh0aGlzKSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBfdXBkYXRlUHJvcGVydGll
cyhwcm9wZXJ0aWVzLCBwcm9wZXJ0eVBhdGgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fZXh0
cmFQcm9wZXJ0aWVzKQogICAgICAgICAgICAgcHJvcGVydGllcyA9IHByb3BlcnRpZXMuY29uY2F0
KHRoaXMuX2V4dHJhUHJvcGVydGllcyk7CiAKLSAgICAgICAgcHJvcGVydGllcy5zb3J0KFdlYklu
c3BlY3Rvci5PYmplY3RUcmVlVmlldy5Db21wYXJlUHJvcGVydHlEZXNjcmlwdG9ycyk7CisgICAg
ICAgIHByb3BlcnRpZXMuc29ydChXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVZpZXcuY29tcGFyZVBy
b3BlcnR5RGVzY3JpcHRvcnMpOwogCiAgICAgICAgIHZhciBpc0FycmF5ID0gdGhpcy5fb2JqZWN0
LmlzQXJyYXkoKTsKICAgICAgICAgdmFyIGlzUHJvcGVydHlNb2RlID0gdGhpcy5fbW9kZSA9PT0g
V2ViSW5zcGVjdG9yLk9iamVjdFRyZWVWaWV3Lk1vZGUuUHJvcGVydGllczsKQEAgLTI4MywxMCAr
Mjc3LDEwIEBAIFdlYkluc3BlY3Rvci5PYmplY3RUcmVlVmlldy5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIH0KIAogICAgICAgICBpZiAoIXRoaXMuX291dGxpbmUuY2hpbGRyZW4ubGVuZ3RoKSB7Ci0g
ICAgICAgICAgICB2YXIgZW1wdHlNZXNzYWdlRWxlbWVudCA9IFdlYkluc3BlY3Rvci5PYmplY3RU
cmVlVmlldy5lbXB0eU1lc3NhZ2VFbGVtZW50KFdlYkluc3BlY3Rvci5VSVN0cmluZygiTm8gUHJv
cGVydGllcy4iKSk7CisgICAgICAgICAgICB2YXIgZW1wdHlNZXNzYWdlRWxlbWVudCA9IFdlYklu
c3BlY3Rvci5PYmplY3RUcmVlVmlldy5jcmVhdGVFbXB0eU1lc3NhZ2VFbGVtZW50KFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiTm8gUHJvcGVydGllcy4iKSk7CiAgICAgICAgICAgICB0aGlzLl9vdXRs
aW5lLmFwcGVuZENoaWxkKG5ldyBXZWJJbnNwZWN0b3IuVHJlZUVsZW1lbnQoZW1wdHlNZXNzYWdl
RWxlbWVudCwgbnVsbCwgZmFsc2UpKTsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCiAgICAg
X2hhbmRsZVByZXZpZXdPclRpdGxlRWxlbWVudENsaWNrKGV2ZW50KQogICAgIHsKQEAgLTI5OSw3
ICsyOTMsNyBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVZpZXcucHJvdG90eXBlID0gewogICAg
ICAgICAgICAgdGhpcy5jb2xsYXBzZSgpOwogCiAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlv
bigpOwotICAgIH0sCisgICAgfQogCiAgICAgX3RyYWNrV2Vha0VudHJpZXMoKQogICAgIHsKQEAg
LTMxNiw3ICszMTAsNyBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVZpZXcucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmxvZ01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuTG9nTWFuYWdlci5FdmVudC5BY3RpdmVMb2dDbGVhcmVkLCB0aGlzLl91bnRy
YWNrV2Vha0VudHJpZXMsIHRoaXMpOwogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmxvZ01hbmFn
ZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuTG9nTWFuYWdlci5FdmVudC5TZXNzaW9u
U3RhcnRlZCwgdGhpcy5fdW50cmFja1dlYWtFbnRyaWVzLCB0aGlzKTsKICAgICAgICAgfQotICAg
IH0sCisgICAgfQogCiAgICAgX3VudHJhY2tXZWFrRW50cmllcygpCiAgICAgewpAQCAtMzM5LDUg
KzMzMywxMCBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVZpZXcucHJvdG90eXBlID0gewogICAg
ICAgICAvLyBGSVhNRTogVGhpcyBvbmx5IHRyaWVzIHRvIHJlbGVhc2Ugd2VhayBlbnRyaWVzIGlm
IHRoaXMgb2JqZWN0IHdhcyBhIFdlYWtNYXAuCiAgICAgICAgIC8vIElmIHRoZXJlIHdhcyBhIFdl
YWtNYXAgZXhwYW5kZWQgaW4gYSBzdWItb2JqZWN0LCB3ZSB3aWxsIG5ldmVyIHJlbGVhc2UgdGhv
c2UgdmFsdWVzLgogICAgICAgICAvLyBTaG91bGQgd2UgYXR0ZW1wdCB3YWxraW5nIHRoZSBlbnRp
cmUgdHJlZSBhbmQgcmVsZWFzZSB3ZWFrIGNvbGxlY3Rpb25zPwotICAgIH0sCisgICAgfQorfTsK
KworV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVWaWV3Lk1vZGUgPSB7CisgICAgUHJvcGVydGllczog
U3ltYm9sKCJvYmplY3QtdHJlZS1wcm9wZXJ0aWVzIiksCisgICAgQVBJOiBTeW1ib2woIm9iamVj
dC10cmVlLWFwaSIpLAogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1F1aWNrQ29uc29sZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1F1aWNrQ29uc29sZS5qcwppbmRleCA3ODE1MjQyNzRiNGYyOWU5
MTc4YzUwYzZhNGM2MTRkNTY2OWU2M2I4Li5jYWFhYzYwYjFlYWY0MzljYThlOTQ1MDRlYjc4N2Zj
N2ZhMzNkZGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9RdWlja0NvbnNvbGUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvUXVpY2tDb25zb2xlLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywxMDUgKzIzLDg3IEBACiAgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlF1aWNrQ29u
c29sZSA9IGZ1bmN0aW9uKGVsZW1lbnQpCitXZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xlID0gY2xh
c3MgUXVpY2tDb25zb2xlIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIC8vIEZJ
WE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQg
Y2FsbCBzdXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKLQot
ICAgIHRoaXMuX3RvZ2dsZU9yRm9jdXNLZXlib2FyZFNob3J0Y3V0ID0gbmV3IFdlYkluc3BlY3Rv
ci5LZXlib2FyZFNob3J0Y3V0KG51bGwsIFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lktl
eS5Fc2NhcGUsIHRoaXMuX3RvZ2dsZU9yRm9jdXMuYmluZCh0aGlzKSk7Ci0KLSAgICB2YXIgbWFp
bkZyYW1lRXhlY3V0aW9uQ29udGV4dCA9IG5ldyBXZWJJbnNwZWN0b3IuRXhlY3V0aW9uQ29udGV4
dChXZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xlLk1haW5GcmFtZUNvbnRleHRFeGVjdXRpb25JZGVu
dGlmaWVyLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk1haW4gRnJhbWUiKSwgdHJ1ZSwgbnVsbCk7
Ci0gICAgdGhpcy5fbWFpbkZyYW1lRXhlY3V0aW9uQ29udGV4dFBhdGhDb21wb25lbnQgPSB0aGlz
Ll9jcmVhdGVFeGVjdXRpb25Db250ZXh0UGF0aENvbXBvbmVudChtYWluRnJhbWVFeGVjdXRpb25D
b250ZXh0Lm5hbWUsIG1haW5GcmFtZUV4ZWN1dGlvbkNvbnRleHQuaWRlbnRpZmllcik7Ci0gICAg
dGhpcy5fc2VsZWN0ZWRFeGVjdXRpb25Db250ZXh0UGF0aENvbXBvbmVudCA9IHRoaXMuX21haW5G
cmFtZUV4ZWN1dGlvbkNvbnRleHRQYXRoQ29tcG9uZW50OwotCi0gICAgdGhpcy5fb3RoZXJFeGVj
dXRpb25Db250ZXh0UGF0aENvbXBvbmVudHMgPSBbXTsKLSAgICB0aGlzLl9mcmFtZUlkZW50aWZp
ZXJUb0V4ZWN1dGlvbkNvbnRleHRQYXRoQ29tcG9uZW50TWFwID0ge307Ci0KLSAgICB0aGlzLl9l
bGVtZW50ID0gZWxlbWVudCB8fCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICB0
aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZS5TdHls
ZUNsYXNzTmFtZSk7CisgICAgY29uc3RydWN0b3IoZWxlbWVudCkKKyAgICB7CisgICAgICAgIHN1
cGVyKCk7CiAKLSAgICB0aGlzLnByb21wdCA9IG5ldyBXZWJJbnNwZWN0b3IuQ29uc29sZVByb21w
dChudWxsLCAidGV4dC9qYXZhc2NyaXB0Iik7Ci0gICAgdGhpcy5wcm9tcHQuZWxlbWVudC5jbGFz
c0xpc3QuYWRkKFdlYkluc3BlY3Rvci5RdWlja0NvbnNvbGUuVGV4dFByb21wdFN0eWxlQ2xhc3NO
YW1lKTsKLSAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMucHJvbXB0LmVsZW1lbnQp
OworICAgICAgICB0aGlzLl90b2dnbGVPckZvY3VzS2V5Ym9hcmRTaG9ydGN1dCA9IG5ldyBXZWJJ
bnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dChudWxsLCBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9y
dGN1dC5LZXkuRXNjYXBlLCB0aGlzLl90b2dnbGVPckZvY3VzLmJpbmQodGhpcykpOwogCi0gICAg
Ly8gRklYTUU6IENvZGVNaXJyb3IgNCBoYXMgYSBkZWZhdWx0ICJFc2MiIGtleSBoYW5kbGVyIHRo
YXQgYWx3YXlzIHByZXZlbnRzIGRlZmF1bHQuCi0gICAgLy8gT3VyIGtleWJvYXJkIHNob3J0Y3V0
IGFib3ZlIHdpbGwgcmVzcGVjdCB0aGUgZGVmYXVsdCBwcmV2ZW50ZWQgYW5kIGlnbm9yZSB0aGUg
ZXZlbnQKLSAgICAvLyBhbmQgbm90IHRvZ2dsZSB0aGUgY29uc29sZS4gSW5zdGFsbCBvdXIgb3du
IEVzY2FwZSBrZXkgaGFuZGxlciB0aGF0IHdpbGwgdHJpZ2dlcgotICAgIC8vIHdoZW4gdGhlIENv
bnNvbGVQcm9tcHQgaXMgZW1wdHksIHRvIHJlc3RvcmUgdG9nZ2xpbmcgYmVoYXZpb3IuIEEgYmV0
dGVyIHNvbHV0aW9uCi0gICAgLy8gd291bGQgYmUgZm9yIENvZGVNaXJyb3IncyBldmVudCBoYW5k
bGVyIHRvIHBhc3MgaWYgaXQgZG9lc24ndCBkbyBhbnl0aGluZy4KLSAgICB0aGlzLnByb21wdC5l
c2NhcGVLZXlIYW5kbGVyV2hlbkVtcHR5ID0gZnVuY3Rpb24oKSB7IFdlYkluc3BlY3Rvci50b2dn
bGVTcGxpdENvbnNvbGUoKTsgfTsKKyAgICAgICAgdmFyIG1haW5GcmFtZUV4ZWN1dGlvbkNvbnRl
eHQgPSBuZXcgV2ViSW5zcGVjdG9yLkV4ZWN1dGlvbkNvbnRleHQoV2ViSW5zcGVjdG9yLlF1aWNr
Q29uc29sZS5NYWluRnJhbWVDb250ZXh0RXhlY3V0aW9uSWRlbnRpZmllciwgV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJNYWluIEZyYW1lIiksIHRydWUsIG51bGwpOworICAgICAgICB0aGlzLl9tYWlu
RnJhbWVFeGVjdXRpb25Db250ZXh0UGF0aENvbXBvbmVudCA9IHRoaXMuX2NyZWF0ZUV4ZWN1dGlv
bkNvbnRleHRQYXRoQ29tcG9uZW50KG1haW5GcmFtZUV4ZWN1dGlvbkNvbnRleHQubmFtZSwgbWFp
bkZyYW1lRXhlY3V0aW9uQ29udGV4dC5pZGVudGlmaWVyKTsKKyAgICAgICAgdGhpcy5fc2VsZWN0
ZWRFeGVjdXRpb25Db250ZXh0UGF0aENvbXBvbmVudCA9IHRoaXMuX21haW5GcmFtZUV4ZWN1dGlv
bkNvbnRleHRQYXRoQ29tcG9uZW50OwogCi0gICAgdGhpcy5wcm9tcHQuc2hvd24oKTsKKyAgICAg
ICAgdGhpcy5fb3RoZXJFeGVjdXRpb25Db250ZXh0UGF0aENvbXBvbmVudHMgPSBbXTsKKyAgICAg
ICAgdGhpcy5fZnJhbWVJZGVudGlmaWVyVG9FeGVjdXRpb25Db250ZXh0UGF0aENvbXBvbmVudE1h
cCA9IHt9OwogCi0gICAgdGhpcy5fbmF2aWdhdGlvbkJhciA9IG5ldyBXZWJJbnNwZWN0b3IuUXVp
Y2tDb25zb2xlTmF2aWdhdGlvbkJhcjsKLSAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRo
aXMuX25hdmlnYXRpb25CYXIuZWxlbWVudCk7CisgICAgICAgIHRoaXMuX2VsZW1lbnQgPSBlbGVt
ZW50IHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlzLl9lbGVt
ZW50LmNsYXNzTGlzdC5hZGQoInF1aWNrLWNvbnNvbGUiKTsKIAotICAgIHRoaXMuX2V4ZWN1dGlv
bkNvbnRleHRTZWxlY3Rvckl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhO
YXZpZ2F0aW9uSXRlbTsKLSAgICB0aGlzLl9leGVjdXRpb25Db250ZXh0U2VsZWN0b3JJdGVtLnNo
b3dTZWxlY3RvckFycm93cyA9IHRydWU7Ci0gICAgdGhpcy5fbmF2aWdhdGlvbkJhci5hZGROYXZp
Z2F0aW9uSXRlbSh0aGlzLl9leGVjdXRpb25Db250ZXh0U2VsZWN0b3JJdGVtKTsKKyAgICAgICAg
dGhpcy5wcm9tcHQgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnNvbGVQcm9tcHQobnVsbCwgInRleHQv
amF2YXNjcmlwdCIpOworICAgICAgICB0aGlzLnByb21wdC5lbGVtZW50LmNsYXNzTGlzdC5hZGQo
V2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZS5UZXh0UHJvbXB0U3R5bGVDbGFzc05hbWUpOworICAg
ICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMucHJvbXB0LmVsZW1lbnQpOwogCi0g
ICAgdGhpcy5fZXhlY3V0aW9uQ29udGV4dFNlbGVjdG9yRGl2aWRlciA9IG5ldyBXZWJJbnNwZWN0
b3IuRGl2aWRlck5hdmlnYXRpb25JdGVtOwotICAgIHRoaXMuX25hdmlnYXRpb25CYXIuYWRkTmF2
aWdhdGlvbkl0ZW0odGhpcy5fZXhlY3V0aW9uQ29udGV4dFNlbGVjdG9yRGl2aWRlcik7CisgICAg
ICAgIC8vIEZJWE1FOiBDb2RlTWlycm9yIDQgaGFzIGEgZGVmYXVsdCAiRXNjIiBrZXkgaGFuZGxl
ciB0aGF0IGFsd2F5cyBwcmV2ZW50cyBkZWZhdWx0LgorICAgICAgICAvLyBPdXIga2V5Ym9hcmQg
c2hvcnRjdXQgYWJvdmUgd2lsbCByZXNwZWN0IHRoZSBkZWZhdWx0IHByZXZlbnRlZCBhbmQgaWdu
b3JlIHRoZSBldmVudAorICAgICAgICAvLyBhbmQgbm90IHRvZ2dsZSB0aGUgY29uc29sZS4gSW5z
dGFsbCBvdXIgb3duIEVzY2FwZSBrZXkgaGFuZGxlciB0aGF0IHdpbGwgdHJpZ2dlcgorICAgICAg
ICAvLyB3aGVuIHRoZSBDb25zb2xlUHJvbXB0IGlzIGVtcHR5LCB0byByZXN0b3JlIHRvZ2dsaW5n
IGJlaGF2aW9yLiBBIGJldHRlciBzb2x1dGlvbgorICAgICAgICAvLyB3b3VsZCBiZSBmb3IgQ29k
ZU1pcnJvcidzIGV2ZW50IGhhbmRsZXIgdG8gcGFzcyBpZiBpdCBkb2Vzbid0IGRvIGFueXRoaW5n
LgorICAgICAgICB0aGlzLnByb21wdC5lc2NhcGVLZXlIYW5kbGVyV2hlbkVtcHR5ID0gZnVuY3Rp
b24oKSB7IFdlYkluc3BlY3Rvci50b2dnbGVTcGxpdENvbnNvbGUoKTsgfTsKIAotICAgIHRoaXMu
X3JlYnVpbGRFeGVjdXRpb25Db250ZXh0UGF0aENvbXBvbmVudHMoKTsKKyAgICAgICAgdGhpcy5w
cm9tcHQuc2hvd24oKTsKIAotICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyA2KTogRXhlY3V0aW9u
IGNvbnRleHRzIGRpZCBub3QgZXhpc3QsIGV2YWx1YXRpb24gd29ya2VkIHdpdGggZnJhbWUgaWRz
LgotICAgIGlmIChXZWJJbnNwZWN0b3IuRXhlY3V0aW9uQ29udGV4dC5zdXBwb3J0ZWQoKSkgewot
ICAgICAgICBXZWJJbnNwZWN0b3IuRnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
RnJhbWUuRXZlbnQuUGFnZUV4ZWN1dGlvbkNvbnRleHRDaGFuZ2VkLCB0aGlzLl9mcmFtZVBhZ2VF
eGVjdXRpb25Db250ZXh0c0NoYW5nZWQsIHRoaXMpOwotICAgICAgICBXZWJJbnNwZWN0b3IuRnJh
bWUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuRXhlY3V0aW9uQ29u
dGV4dHNDbGVhcmVkLCB0aGlzLl9mcmFtZUV4ZWN1dGlvbkNvbnRleHRzQ2xlYXJlZCwgdGhpcyk7
Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLmZyYW1lUmVzb3VyY2VNYW5hZ2Vy
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZyYW1lUmVzb3VyY2VNYW5hZ2VyLkV2ZW50
LkZyYW1lV2FzQWRkZWQsIHRoaXMuX2ZyYW1lQWRkZWQsIHRoaXMpOwotICAgICAgICBXZWJJbnNw
ZWN0b3IuZnJhbWVSZXNvdXJjZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
RnJhbWVSZXNvdXJjZU1hbmFnZXIuRXZlbnQuRnJhbWVXYXNSZW1vdmVkLCB0aGlzLl9mcmFtZVJl
bW92ZWQsIHRoaXMpOwotICAgICAgICBXZWJJbnNwZWN0b3IuRnJhbWUuYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuTWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzLl9m
cmFtZU1haW5SZXNvdXJjZUNoYW5nZWQsIHRoaXMpOwotICAgIH0KKyAgICAgICAgdGhpcy5fbmF2
aWdhdGlvbkJhciA9IG5ldyBXZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xlTmF2aWdhdGlvbkJhcjsK
KyAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9uYXZpZ2F0aW9uQmFyLmVs
ZW1lbnQpOwogCi0gICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuQWN0aXZlQ2FsbEZyYW1lRGlk
Q2hhbmdlLCB0aGlzLl9kZWJ1Z2dlckFjdGl2ZUNhbGxGcmFtZURpZENoYW5nZSwgdGhpcyk7Ci19
OworICAgICAgICB0aGlzLl9leGVjdXRpb25Db250ZXh0U2VsZWN0b3JJdGVtID0gbmV3IFdlYklu
c3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoTmF2aWdhdGlvbkl0ZW07CisgICAgICAgIHRoaXMuX2V4
ZWN1dGlvbkNvbnRleHRTZWxlY3Rvckl0ZW0uc2hvd1NlbGVjdG9yQXJyb3dzID0gdHJ1ZTsKKyAg
ICAgICAgdGhpcy5fbmF2aWdhdGlvbkJhci5hZGROYXZpZ2F0aW9uSXRlbSh0aGlzLl9leGVjdXRp
b25Db250ZXh0U2VsZWN0b3JJdGVtKTsKIAotV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZS5TdHls
ZUNsYXNzTmFtZSA9ICJxdWljay1jb25zb2xlIjsKLVdlYkluc3BlY3Rvci5RdWlja0NvbnNvbGUu
U2hvd2luZ0xvZ0NsYXNzTmFtZSA9ICJzaG93aW5nLWxvZyI7Ci1XZWJJbnNwZWN0b3IuUXVpY2tD
b25zb2xlLk5hdmlnYXRpb25CYXJDb250YWluZXJTdHlsZUNsYXNzTmFtZSA9ICJuYXZpZ2F0aW9u
LWJhci1jb250YWluZXIiOwotV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZS5OYXZpZ2F0aW9uQmFy
U3BhY2VyU3R5bGVDbGFzc05hbWUgPSAibmF2aWdhdGlvbi1iYXItc3BhY2VyIjsKLVdlYkluc3Bl
Y3Rvci5RdWlja0NvbnNvbGUuVGV4dFByb21wdFN0eWxlQ2xhc3NOYW1lID0gInRleHQtcHJvbXB0
IjsKLQotV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZS5Ub29sYmFyU2luZ2xlTGluZUhlaWdodCA9
IDIxOwotV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZS5Ub29sYmFyUHJvbXB0UGFkZGluZyA9IDQ7
Ci1XZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xlLlRvb2xiYXJUb3BCb3JkZXIgPSAxOworICAgICAg
ICB0aGlzLl9leGVjdXRpb25Db250ZXh0U2VsZWN0b3JEaXZpZGVyID0gbmV3IFdlYkluc3BlY3Rv
ci5EaXZpZGVyTmF2aWdhdGlvbkl0ZW07CisgICAgICAgIHRoaXMuX25hdmlnYXRpb25CYXIuYWRk
TmF2aWdhdGlvbkl0ZW0odGhpcy5fZXhlY3V0aW9uQ29udGV4dFNlbGVjdG9yRGl2aWRlcik7CiAK
LVdlYkluc3BlY3Rvci5RdWlja0NvbnNvbGUuTWFpbkZyYW1lQ29udGV4dEV4ZWN1dGlvbklkZW50
aWZpZXIgPSB1bmRlZmluZWQ7CisgICAgICAgIHRoaXMuX3JlYnVpbGRFeGVjdXRpb25Db250ZXh0
UGF0aENvbXBvbmVudHMoKTsKIAotV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZS5FdmVudCA9IHsK
LSAgICBEaWRSZXNpemU6ICJxdWljay1jb25zb2xlLWRpZC1yZXNpemUiCi19OworICAgICAgICAv
LyBDT01QQVRJQklMSVRZIChpT1MgNik6IEV4ZWN1dGlvbiBjb250ZXh0cyBkaWQgbm90IGV4aXN0
LCBldmFsdWF0aW9uIHdvcmtlZCB3aXRoIGZyYW1lIGlkcy4KKyAgICAgICAgaWYgKFdlYkluc3Bl
Y3Rvci5FeGVjdXRpb25Db250ZXh0LnN1cHBvcnRlZCgpKSB7CisgICAgICAgICAgICBXZWJJbnNw
ZWN0b3IuRnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuUGFn
ZUV4ZWN1dGlvbkNvbnRleHRDaGFuZ2VkLCB0aGlzLl9mcmFtZVBhZ2VFeGVjdXRpb25Db250ZXh0
c0NoYW5nZWQsIHRoaXMpOworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLkZyYW1lLmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZyYW1lLkV2ZW50LkV4ZWN1dGlvbkNvbnRleHRzQ2xlYXJl
ZCwgdGhpcy5fZnJhbWVFeGVjdXRpb25Db250ZXh0c0NsZWFyZWQsIHRoaXMpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZyYW1lUmVzb3VyY2VNYW5hZ2VyLkV2ZW50LkZy
YW1lV2FzQWRkZWQsIHRoaXMuX2ZyYW1lQWRkZWQsIHRoaXMpOworICAgICAgICAgICAgV2ViSW5z
cGVjdG9yLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LkZyYW1lUmVzb3VyY2VNYW5hZ2VyLkV2ZW50LkZyYW1lV2FzUmVtb3ZlZCwgdGhpcy5fZnJhbWVS
ZW1vdmVkLCB0aGlzKTsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5GcmFtZS5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5GcmFtZS5FdmVudC5NYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRo
aXMuX2ZyYW1lTWFpblJlc291cmNlQ2hhbmdlZCwgdGhpcyk7CisgICAgICAgIH0KIAotV2ViSW5z
cGVjdG9yLlF1aWNrQ29uc29sZS5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYklu
c3BlY3Rvci5RdWlja0NvbnNvbGUsCisgICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFn
ZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LkFj
dGl2ZUNhbGxGcmFtZURpZENoYW5nZSwgdGhpcy5fZGVidWdnZXJBY3RpdmVDYWxsRnJhbWVEaWRD
aGFuZ2UsIHRoaXMpOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGVsZW1lbnQo
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICBnZXQgbmF2aWdhdGlvbkJhcigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fbmF2
aWdhdGlvbkJhcjsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBleGVjdXRpb25Db250ZXh0SWRl
bnRpZmllcigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRFeGVjdXRpb25D
b250ZXh0UGF0aENvbXBvbmVudC5fZXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXQ6IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGVMYXlvdXQo
KQogICAgIHsKICAgICAgICAgLy8gQSBoYXJkIG1heGltdW0gc2l6ZSBvZiAzMyUgb2YgdGhlIHdp
bmRvdy4KLSAgICAgICAgY29uc3QgbWF4aW11bUFsbG93ZWRIZWlnaHQgPSBNYXRoLnJvdW5kKHdp
bmRvdy5pbm5lckhlaWdodCAqIDAuMzMpOworICAgICAgICB2YXIgbWF4aW11bUFsbG93ZWRIZWln
aHQgPSBNYXRoLnJvdW5kKHdpbmRvdy5pbm5lckhlaWdodCAqIDAuMzMpOwogICAgICAgICB0aGlz
LnByb21wdC5lbGVtZW50LnN0eWxlLm1heEhlaWdodCA9IG1heGltdW1BbGxvd2VkSGVpZ2h0ICsg
InB4IjsKLSAgICB9LAorICAgIH0KIAotICAgIGNvbnNvbGVMb2dWaXNpYmlsaXR5Q2hhbmdlZDog
ZnVuY3Rpb24odmlzaWJsZSkKKyAgICBjb25zb2xlTG9nVmlzaWJpbGl0eUNoYW5nZWQodmlzaWJs
ZSkKICAgICB7CiAgICAgICAgIGlmICh2aXNpYmxlKQogICAgICAgICAgICAgdGhpcy5lbGVtZW50
LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZS5TaG93aW5nTG9nQ2xhc3NO
YW1lKTsKQEAgLTEyOSwxMSArMTExLDExIEBAIFdlYkluc3BlY3Rvci5RdWlja0NvbnNvbGUucHJv
dG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2Vi
SW5zcGVjdG9yLlF1aWNrQ29uc29sZS5TaG93aW5nTG9nQ2xhc3NOYW1lKTsKIAogICAgICAgICB0
aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xlLkV2
ZW50LkRpZFJlc2l6ZSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBf
ZXhlY3V0aW9uQ29udGV4dFBhdGhDb21wb25lbnRzVG9EaXNwbGF5OiBmdW5jdGlvbigpCisgICAg
X2V4ZWN1dGlvbkNvbnRleHRQYXRoQ29tcG9uZW50c1RvRGlzcGxheSgpCiAgICAgewogICAgICAg
ICAvLyBJZiB3ZSBhcmUgaW4gdGhlIGRlYnVnZ2VyIHRoZSBjb25zb2xlIHdpbGwgdXNlIHRoZSBh
Y3RpdmUgY2FsbCBmcmFtZSwgZG9uJ3Qgc2hvdyB0aGUgc2VsZWN0b3IuCiAgICAgICAgIGlmIChX
ZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLmFjdGl2ZUNhbGxGcmFtZSkKQEAgLTE0NCw5ICsx
MjYsOSBAQCBXZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xlLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIHJldHVybiBbXTsKIAogICAgICAgICByZXR1cm4gW3RoaXMuX3NlbGVjdGVkRXhlY3V0aW9u
Q29udGV4dFBhdGhDb21wb25lbnRdOwotICAgIH0sCisgICAgfQogCi0gICAgX3JlYnVpbGRFeGVj
dXRpb25Db250ZXh0UGF0aENvbXBvbmVudHM6IGZ1bmN0aW9uKCkKKyAgICBfcmVidWlsZEV4ZWN1
dGlvbkNvbnRleHRQYXRoQ29tcG9uZW50cygpCiAgICAgewogICAgICAgICB2YXIgY29tcG9uZW50
cyA9IHRoaXMuX2V4ZWN1dGlvbkNvbnRleHRQYXRoQ29tcG9uZW50c1RvRGlzcGxheSgpOwogICAg
ICAgICB2YXIgaXNFbXB0eSA9ICFjb21wb25lbnRzLmxlbmd0aDsKQEAgLTE1NSw5ICsxMzcsOSBA
QCBXZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xlLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlz
Ll9leGVjdXRpb25Db250ZXh0U2VsZWN0b3JJdGVtLmhpZGRlbiA9IGlzRW1wdHk7CiAgICAgICAg
IHRoaXMuX2V4ZWN1dGlvbkNvbnRleHRTZWxlY3RvckRpdmlkZXIuaGlkZGVuID0gaXNFbXB0eTsK
LSAgICB9LAorICAgIH0KIAotICAgIF9mcmFtZVBhZ2VFeGVjdXRpb25Db250ZXh0c0NoYW5nZWQ6
IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9mcmFtZVBhZ2VFeGVjdXRpb25Db250ZXh0c0NoYW5nZWQo
ZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgZnJhbWUgPSBldmVudC50YXJnZXQ7CiAKQEAgLTE3
MCw5ICsxNTIsOSBAQCBXZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xlLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIHRoaXMuX3NlbGVjdGVkRXhlY3V0aW9uQ29udGV4dFBhdGhDb21wb25lbnQgPSBu
ZXdFeGVjdXRpb25Db250ZXh0UGF0aENvbXBvbmVudDsKICAgICAgICAgICAgIHRoaXMuX3JlYnVp
bGRFeGVjdXRpb25Db250ZXh0UGF0aENvbXBvbmVudHMoKTsKICAgICAgICAgfQotICAgIH0sCisg
ICAgfQogCi0gICAgX2ZyYW1lRXhlY3V0aW9uQ29udGV4dHNDbGVhcmVkOiBmdW5jdGlvbihldmVu
dCkKKyAgICBfZnJhbWVFeGVjdXRpb25Db250ZXh0c0NsZWFyZWQoZXZlbnQpCiAgICAgewogICAg
ICAgICB2YXIgZnJhbWUgPSBldmVudC50YXJnZXQ7CiAKQEAgLTE4NywyNyArMTY5LDI3IEBAIFdl
Ykluc3BlY3Rvci5RdWlja0NvbnNvbGUucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAg
ICAgdGhpcy5fcmVtb3ZlRXhlY3V0aW9uQ29udGV4dFBhdGhDb21wb25lbnRGb3JGcmFtZShmcmFt
ZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZnJhbWVBZGRlZDogZnVuY3Rpb24oZXZlbnQpCisg
ICAgX2ZyYW1lQWRkZWQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgZnJhbWUgPSBldmVudC5k
YXRhLmZyYW1lOwogICAgICAgICB0aGlzLl9pbnNlcnRFeGVjdXRpb25Db250ZXh0UGF0aENvbXBv
bmVudEZvckZyYW1lKGZyYW1lKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9mcmFtZVJlbW92ZWQ6
IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9mcmFtZVJlbW92ZWQoZXZlbnQpCiAgICAgewogICAgICAg
ICB2YXIgZnJhbWUgPSBldmVudC5kYXRhLmZyYW1lOwogICAgICAgICB0aGlzLl9yZW1vdmVFeGVj
dXRpb25Db250ZXh0UGF0aENvbXBvbmVudEZvckZyYW1lKGZyYW1lKTsKLSAgICB9LAorICAgIH0K
IAotICAgIF9mcmFtZU1haW5SZXNvdXJjZUNoYW5nZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9m
cmFtZU1haW5SZXNvdXJjZUNoYW5nZWQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgZnJhbWUg
PSBldmVudC50YXJnZXQ7CiAgICAgICAgIHRoaXMuX3VwZGF0ZUV4ZWN1dGlvbkNvbnRleHRQYXRo
Q29tcG9uZW50Rm9yRnJhbWUoZnJhbWUpOwotICAgIH0sCisgICAgfQogCi0gICAgX2NyZWF0ZUV4
ZWN1dGlvbkNvbnRleHRQYXRoQ29tcG9uZW50OiBmdW5jdGlvbihuYW1lLCBpZGVudGlmaWVyKQor
ICAgIF9jcmVhdGVFeGVjdXRpb25Db250ZXh0UGF0aENvbXBvbmVudChuYW1lLCBpZGVudGlmaWVy
KQogICAgIHsKICAgICAgICAgdmFyIHBhdGhDb21wb25lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLkhp
ZXJhcmNoaWNhbFBhdGhDb21wb25lbnQobmFtZSwgImV4ZWN1dGlvbi1jb250ZXh0IiwgaWRlbnRp
ZmllciwgdHJ1ZSwgdHJ1ZSk7CiAgICAgICAgIHBhdGhDb21wb25lbnQuYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5FdmVudC5TaWJsaW5nV2Fz
U2VsZWN0ZWQsIHRoaXMuX3BhdGhDb21wb25lbnRTZWxlY3RlZCwgdGhpcyk7CkBAIC0yMTUsOSAr
MTk3LDkgQEAgV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZS5wcm90b3R5cGUgPSB7CiAgICAgICAg
IHBhdGhDb21wb25lbnQudHJ1bmNhdGVkRGlzcGxheU5hbWVMZW5ndGggPSA1MDsKICAgICAgICAg
cGF0aENvbXBvbmVudC5fZXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIgPSBpZGVudGlmaWVyOwog
ICAgICAgICByZXR1cm4gcGF0aENvbXBvbmVudDsKLSAgICB9LAorICAgIH0KIAotICAgIF9jcmVh
dGVFeGVjdXRpb25Db250ZXh0UGF0aENvbXBvbmVudEZyb21GcmFtZTogZnVuY3Rpb24oZnJhbWUp
CisgICAgX2NyZWF0ZUV4ZWN1dGlvbkNvbnRleHRQYXRoQ29tcG9uZW50RnJvbUZyYW1lKGZyYW1l
KQogICAgIHsKICAgICAgICAgdmFyIG5hbWUgPSBmcmFtZS5uYW1lID8gZnJhbWUubmFtZSArICIg
XHUyMDE0ICIgKyBmcmFtZS5tYWluUmVzb3VyY2UuZGlzcGxheU5hbWUgOiBmcmFtZS5tYWluUmVz
b3VyY2UuZGlzcGxheU5hbWU7CiAgICAgICAgIHZhciBpZGVudGlmaWVyID0gV2ViSW5zcGVjdG9y
LkV4ZWN1dGlvbkNvbnRleHQuc3VwcG9ydGVkKCkgPyBmcmFtZS5wYWdlRXhlY3V0aW9uQ29udGV4
dC5pZCA6IGZyYW1lLmlkOwpAQCAtMjI2LDkgKzIwOCw5IEBAIFdlYkluc3BlY3Rvci5RdWlja0Nv
bnNvbGUucHJvdG90eXBlID0gewogICAgICAgICBwYXRoQ29tcG9uZW50Ll9mcmFtZSA9IGZyYW1l
OwogCiAgICAgICAgIHJldHVybiBwYXRoQ29tcG9uZW50OwotICAgIH0sCisgICAgfQogCi0gICAg
X2NvbXBhcmVFeGVjdXRpb25Db250ZXh0UGF0aENvbXBvbmVudHM6IGZ1bmN0aW9uKGEsIGIpCisg
ICAgX2NvbXBhcmVFeGVjdXRpb25Db250ZXh0UGF0aENvbXBvbmVudHMoYSwgYikKICAgICB7CiAg
ICAgICAgIC8vICJNYWluIEZyYW1lIiBhbHdheXMgb24gdG9wLgogICAgICAgICBpZiAoIWEuX2Zy
YW1lKQpAQCAtMjQzLDkgKzIyNSw5IEBAIFdlYkluc3BlY3Rvci5RdWlja0NvbnNvbGUucHJvdG90
eXBlID0gewogICAgICAgICAgICAgcmV0dXJuIDE7CiAKICAgICAgICAgcmV0dXJuIGEuZGlzcGxh
eU5hbWUubG9jYWxlQ29tcGFyZShiLmRpc3BsYXlOYW1lKTsKLSAgICB9LAorICAgIH0KIAotICAg
IF9pbnNlcnRFeGVjdXRpb25Db250ZXh0UGF0aENvbXBvbmVudEZvckZyYW1lOiBmdW5jdGlvbihm
cmFtZSwgc2tpcFJlYnVpbGQpCisgICAgX2luc2VydEV4ZWN1dGlvbkNvbnRleHRQYXRoQ29tcG9u
ZW50Rm9yRnJhbWUoZnJhbWUsIHNraXBSZWJ1aWxkKQogICAgIHsKICAgICAgICAgaWYgKGZyYW1l
LmlzTWFpbkZyYW1lKCkpCiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbWFpbkZyYW1lRXhlY3V0
aW9uQ29udGV4dFBhdGhDb21wb25lbnQ7CkBAIC0yNzYsOSArMjU4LDkgQEAgV2ViSW5zcGVjdG9y
LlF1aWNrQ29uc29sZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9yZWJ1aWxkRXhl
Y3V0aW9uQ29udGV4dFBhdGhDb21wb25lbnRzKCk7CiAKICAgICAgICAgcmV0dXJuIGV4ZWN1dGlv
bkNvbnRleHRQYXRoQ29tcG9uZW50OwotICAgIH0sCisgICAgfQogCi0gICAgX3JlbW92ZUV4ZWN1
dGlvbkNvbnRleHRQYXRoQ29tcG9uZW50Rm9yRnJhbWU6IGZ1bmN0aW9uKGZyYW1lLCBza2lwUmVi
dWlsZCkKKyAgICBfcmVtb3ZlRXhlY3V0aW9uQ29udGV4dFBhdGhDb21wb25lbnRGb3JGcmFtZShm
cmFtZSwgc2tpcFJlYnVpbGQpCiAgICAgewogICAgICAgICBpZiAoZnJhbWUuaXNNYWluRnJhbWUo
KSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTMwNiw5ICsyODgsOSBAQCBXZWJJbnNwZWN0b3Iu
UXVpY2tDb25zb2xlLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAoIXNraXBSZWJ1aWxkKQog
ICAgICAgICAgICAgdGhpcy5fcmVidWlsZEV4ZWN1dGlvbkNvbnRleHRQYXRoQ29tcG9uZW50cygp
OwotICAgIH0sCisgICAgfQogCi0gICAgX3VwZGF0ZUV4ZWN1dGlvbkNvbnRleHRQYXRoQ29tcG9u
ZW50Rm9yRnJhbWU6IGZ1bmN0aW9uKGZyYW1lKQorICAgIF91cGRhdGVFeGVjdXRpb25Db250ZXh0
UGF0aENvbXBvbmVudEZvckZyYW1lKGZyYW1lKQogICAgIHsKICAgICAgICAgaWYgKGZyYW1lLmlz
TWFpbkZyYW1lKCkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0zMjYsOSArMzA4LDkgQEAgV2Vi
SW5zcGVjdG9yLlF1aWNrQ29uc29sZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9z
ZWxlY3RlZEV4ZWN1dGlvbkNvbnRleHRQYXRoQ29tcG9uZW50ID0gbmV3RXhlY3V0aW9uQ29udGV4
dFBhdGhDb21wb25lbnQ7CiAKICAgICAgICAgdGhpcy5fcmVidWlsZEV4ZWN1dGlvbkNvbnRleHRQ
YXRoQ29tcG9uZW50cygpOwotICAgIH0sCisgICAgfQogCi0gICAgX3BhdGhDb21wb25lbnRTZWxl
Y3RlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3BhdGhDb21wb25lbnRTZWxlY3RlZChldmVudCkK
ICAgICB7CiAgICAgICAgIGlmIChldmVudC5kYXRhLnBhdGhDb21wb25lbnQgPT09IHRoaXMuX3Nl
bGVjdGVkRXhlY3V0aW9uQ29udGV4dFBhdGhDb21wb25lbnQpCiAgICAgICAgICAgICByZXR1cm47
CkBAIC0zMzYsMTkgKzMxOCwxOSBAQCBXZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xlLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgdGhpcy5fc2VsZWN0ZWRFeGVjdXRpb25Db250ZXh0UGF0aENvbXBvbmVu
dCA9IGV2ZW50LmRhdGEucGF0aENvbXBvbmVudDsKIAogICAgICAgICB0aGlzLl9yZWJ1aWxkRXhl
Y3V0aW9uQ29udGV4dFBhdGhDb21wb25lbnRzKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcGF0
aENvbXBvbmVudENsaWNrZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9wYXRoQ29tcG9uZW50Q2xp
Y2tlZChldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMucHJvbXB0LmZvY3VzKCk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfZGVidWdnZXJBY3RpdmVDYWxsRnJhbWVEaWRDaGFuZ2U6IGZ1bmN0aW9u
KGV2ZW50KQorICAgIF9kZWJ1Z2dlckFjdGl2ZUNhbGxGcmFtZURpZENoYW5nZShldmVudCkKICAg
ICB7CiAgICAgICAgIHRoaXMuX3JlYnVpbGRFeGVjdXRpb25Db250ZXh0UGF0aENvbXBvbmVudHMo
KTsKLSAgICB9LAorICAgIH0KIAotICAgIF90b2dnbGVPckZvY3VzOiBmdW5jdGlvbihldmVudCkK
KyAgICBfdG9nZ2xlT3JGb2N1cyhldmVudCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLnByb21w
dC5mb2N1c2VkKQogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnRvZ2dsZVNwbGl0Q29uc29sZSgp
OwpAQCAtMzU3LDQgKzMzOSwxNyBAQCBXZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xlLnByb3RvdHlw
ZSA9IHsKICAgICB9CiB9OwogCi1XZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xlLnByb3RvdHlwZS5f
X3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKK1dlYkluc3BlY3Rvci5R
dWlja0NvbnNvbGUuU2hvd2luZ0xvZ0NsYXNzTmFtZSA9ICJzaG93aW5nLWxvZyI7CitXZWJJbnNw
ZWN0b3IuUXVpY2tDb25zb2xlLk5hdmlnYXRpb25CYXJDb250YWluZXJTdHlsZUNsYXNzTmFtZSA9
ICJuYXZpZ2F0aW9uLWJhci1jb250YWluZXIiOworV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZS5O
YXZpZ2F0aW9uQmFyU3BhY2VyU3R5bGVDbGFzc05hbWUgPSAibmF2aWdhdGlvbi1iYXItc3BhY2Vy
IjsKK1dlYkluc3BlY3Rvci5RdWlja0NvbnNvbGUuVGV4dFByb21wdFN0eWxlQ2xhc3NOYW1lID0g
InRleHQtcHJvbXB0IjsKKworV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZS5Ub29sYmFyU2luZ2xl
TGluZUhlaWdodCA9IDIxOworV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZS5Ub29sYmFyUHJvbXB0
UGFkZGluZyA9IDQ7CitXZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xlLlRvb2xiYXJUb3BCb3JkZXIg
PSAxOworCitXZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xlLk1haW5GcmFtZUNvbnRleHRFeGVjdXRp
b25JZGVudGlmaWVyID0gdW5kZWZpbmVkOworCitXZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xlLkV2
ZW50ID0geworICAgIERpZFJlc2l6ZTogInF1aWNrLWNvbnNvbGUtZGlkLXJlc2l6ZSIKK307CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXBs
YXlEYXNoYm9hcmRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvUmVwbGF5RGFzaGJvYXJkVmlldy5qcwppbmRleCBhNTNlYTExNmQzODVmMGViYzY0ODVi
YTMwNDNiZDBlMzNjOTFiM2ZjLi45MmNiZmI4YjZjMjFlOGYxZWU2MDBhZTdmOTdiYjk2OGRhMTgy
MGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9SZXBsYXlEYXNoYm9hcmRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1JlcGxheURhc2hib2FyZFZpZXcuanMKQEAgLTEsNCArMSw1IEBACiAv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqIENvcHlyaWdodCAoQykgMjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yMyw2NSArMjQsNTYgQEAKICAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuUmVwbGF5
RGFzaGJvYXJkVmlldyA9IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQorV2ViSW5zcGVjdG9y
LlJlcGxheURhc2hib2FyZFZpZXcgPSBjbGFzcyBSZXBsYXlEYXNoYm9hcmRWaWV3IGV4dGVuZHMg
V2ViSW5zcGVjdG9yLkRhc2hib2FyZFZpZXcKIHsKLSAgICBXZWJJbnNwZWN0b3IuRGFzaGJvYXJk
Vmlldy5jYWxsKHRoaXMsIHJlcHJlc2VudGVkT2JqZWN0LCAicmVwbGF5Iik7Ci0KLSAgICB0aGlz
Ll9uYXZpZ2F0aW9uQmFyID0gbmV3IFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyOwotICAgIHRo
aXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9uYXZpZ2F0aW9uQmFyLmVsZW1lbnQpOwotCi0g
ICAgdGhpcy5fY2FwdHVyZUJ1dHRvbkl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLkFjdGl2YXRlQnV0
dG9uTmF2aWdhdGlvbkl0ZW0oInJlcGxheS1kYXNoYm9hcmQtY2FwdHVyZSIsIFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiU3RhcnQgUmVjb3JkaW5nIiksIFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3Rv
cCBSZWNvcmRpbmciKSwgIkltYWdlcy9SZXBsYXlSZWNvcmRpbmdCdXR0b24uc3ZnIiwgMTYsIDE2
KTsKLSAgICB0aGlzLl9jYXB0dXJlQnV0dG9uSXRlbS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCB0aGlzLl9jYXB0dXJlQnV0
dG9uSXRlbUNsaWNrZWQsIHRoaXMpOwotICAgIHRoaXMuX2NhcHR1cmVCdXR0b25JdGVtLmhpZGRl
biA9IHRydWU7Ci0gICAgdGhpcy5fbmF2aWdhdGlvbkJhci5hZGROYXZpZ2F0aW9uSXRlbSh0aGlz
Ll9jYXB0dXJlQnV0dG9uSXRlbSk7Ci0KLSAgICB0aGlzLl9yZXBsYXlCdXR0b25JdGVtID0gbmV3
IFdlYkluc3BlY3Rvci5Ub2dnbGVCdXR0b25OYXZpZ2F0aW9uSXRlbSgicmVwbGF5LWRhc2hib2Fy
ZC1yZXBsYXkiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0YXJ0IFBsYXliYWNrIiksIFdlYklu
c3BlY3Rvci5VSVN0cmluZygiUGF1c2UgUGxheWJhY2siKSwgIkltYWdlcy9SZXBsYXlQbGF5QnV0
dG9uLnN2ZyIsICJJbWFnZXMvUmVwbGF5UGF1c2VCdXR0b24uc3ZnIiwgMTYsIDE2KTsKLSAgICB0
aGlzLl9yZXBsYXlCdXR0b25JdGVtLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkJ1dHRv
bk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQsIHRoaXMuX3JlcGxheUJ1dHRvbkl0ZW1DbGlj
a2VkLCB0aGlzKTsKLSAgICB0aGlzLl9yZXBsYXlCdXR0b25JdGVtLmhpZGRlbiA9IHRydWU7Ci0g
ICAgdGhpcy5fbmF2aWdhdGlvbkJhci5hZGROYXZpZ2F0aW9uSXRlbSh0aGlzLl9yZXBsYXlCdXR0
b25JdGVtKTsKLQotICAgIC8vIEFkZCBldmVudHMgcmVxdWlyZWQgdG8gdHJhY2sgY2FwdHVyZSBh
bmQgcmVwbGF5IHN0YXRlLgotICAgIFdlYkluc3BlY3Rvci5yZXBsYXlNYW5hZ2VyLmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJlcGxheU1hbmFnZXIuRXZlbnQuQ2FwdHVyZVN0YXJ0ZWQs
IHRoaXMuX2NhcHR1cmVTdGFydGVkLCB0aGlzKTsKLSAgICBXZWJJbnNwZWN0b3IucmVwbGF5TWFu
YWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5SZXBsYXlNYW5hZ2VyLkV2ZW50LkNh
cHR1cmVTdG9wcGVkLCB0aGlzLl9jYXB0dXJlU3RvcHBlZCwgdGhpcyk7Ci0gICAgV2ViSW5zcGVj
dG9yLnJlcGxheU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUmVwbGF5TWFu
YWdlci5FdmVudC5QbGF5YmFja1N0YXJ0ZWQsIHRoaXMuX3BsYXliYWNrU3RhcnRlZCwgdGhpcyk7
Ci0gICAgV2ViSW5zcGVjdG9yLnJlcGxheU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuUmVwbGF5TWFuYWdlci5FdmVudC5QbGF5YmFja1BhdXNlZCwgdGhpcy5fcGxheWJhY2tQ
YXVzZWQsIHRoaXMpOwotICAgIFdlYkluc3BlY3Rvci5yZXBsYXlNYW5hZ2VyLmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLlJlcGxheU1hbmFnZXIuRXZlbnQuUGxheWJhY2tGaW5pc2hlZCwg
dGhpcy5fcGxheWJhY2tGaW5pc2hlZCwgdGhpcyk7Ci0KLSAgICAvLyBNYW51YWxseSBpbml0aWFs
aXplIHN0eWxlIGNsYXNzZXMgYnkgcXVlcnlpbmcgY3VycmVudCByZXBsYXkgc3RhdGUuCi0gICAg
aWYgKFdlYkluc3BlY3Rvci5yZXBsYXlNYW5hZ2VyLnNlc3Npb25TdGF0ZSA9PT0gV2ViSW5zcGVj
dG9yLlJlcGxheU1hbmFnZXIuU2Vzc2lvblN0YXRlLkNhcHR1cmluZykKLSAgICAgICAgdGhpcy5f
Y2FwdHVyZVN0YXJ0ZWQoKTsKLSAgICBlbHNlIGlmIChXZWJJbnNwZWN0b3IucmVwbGF5TWFuYWdl
ci5zZXNzaW9uU3RhdGUgPT09IFdlYkluc3BlY3Rvci5SZXBsYXlNYW5hZ2VyLlNlc3Npb25TdGF0
ZS5JbmFjdGl2ZSkKLSAgICAgICAgdGhpcy5fY2FwdHVyZVN0b3BwZWQoKTsKLSAgICAvLyBSZXBs
YXlNYW5hZ2VyLnNlc3Npb25TdGF0ZSBtdXN0IGJlIFJlcGxheWluZy4KLSAgICBlbHNlIGlmIChX
ZWJJbnNwZWN0b3IucmVwbGF5TWFuYWdlci5zZWdtZW50U3RhdGUgPT09IFdlYkluc3BlY3Rvci5S
ZXBsYXlNYW5hZ2VyLlNlZ21lbnRTdGF0ZS5EaXNwYXRjaGluZykKLSAgICAgICAgdGhpcy5fcGxh
eWJhY2tTdGFydGVkKCk7Ci0gICAgLy8gUmVwbGF5TWFuYWdlci5zZXNzaW9uU3RhdGUgbXVzdCBi
ZSBVbmxvYWRlZCBvciBMb2FkZWQsIHNvIGV4ZWN1dGlvbiBpcyBwYXVzZWQuCi0gICAgZWxzZQot
ICAgICAgICB0aGlzLl9wbGF5YmFja1BhdXNlZCgpOwotfTsKLQotLy8gQ2xhc3MgbmFtZXMgZm9y
IHRvcC1sZXZlbCBmbGV4IGl0ZW1zIHdpdGhpbiB0aGUgcmVwbGF5IGRhc2hib2FyZC4KLVdlYklu
c3BlY3Rvci5SZXBsYXlEYXNoYm9hcmRWaWV3LlJlY29yZGluZ0NvbnRhaW5lclN0eWxlQ2xhc3NO
YW1lID0gInJlY29yZGluZy1jb250YWluZXIiOworICAgIGNvbnN0cnVjdG9yKHJlcHJlc2VudGVk
T2JqZWN0KQorICAgIHsKKyAgICAgICAgc3VwZXIocmVwcmVzZW50ZWRPYmplY3QsICJyZXBsYXki
KTsKIAotLy8gQ2xhc3MgbmFtZXMgZm9yIHNpbmdsZSBidXR0b25zLgotV2ViSW5zcGVjdG9yLlJl
cGxheURhc2hib2FyZFZpZXcuUmVjb3JkQnV0dG9uU3R5bGVDbGFzc05hbWUgPSAicmVjb3JkLWJ1
dHRvbiI7Ci1XZWJJbnNwZWN0b3IuUmVwbGF5RGFzaGJvYXJkVmlldy5SZXBsYXlCdXR0b25TdHls
ZUNsYXNzTmFtZSA9ICJyZXBsYXktYnV0dG9uIjsKKyAgICAgICAgdGhpcy5fbmF2aWdhdGlvbkJh
ciA9IG5ldyBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhcjsKKyAgICAgICAgdGhpcy5lbGVtZW50
LmFwcGVuZENoaWxkKHRoaXMuX25hdmlnYXRpb25CYXIuZWxlbWVudCk7CiAKLVdlYkluc3BlY3Rv
ci5SZXBsYXlEYXNoYm9hcmRWaWV3LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2Vi
SW5zcGVjdG9yLlJlcGxheURhc2hib2FyZFZpZXcsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0
b3IuRGFzaGJvYXJkVmlldy5wcm90b3R5cGUsCisgICAgICAgIHRoaXMuX2NhcHR1cmVCdXR0b25J
dGVtID0gbmV3IFdlYkluc3BlY3Rvci5BY3RpdmF0ZUJ1dHRvbk5hdmlnYXRpb25JdGVtKCJyZXBs
YXktZGFzaGJvYXJkLWNhcHR1cmUiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0YXJ0IFJlY29y
ZGluZyIpLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0b3AgUmVjb3JkaW5nIiksICJJbWFnZXMv
UmVwbGF5UmVjb3JkaW5nQnV0dG9uLnN2ZyIsIDE2LCAxNik7CisgICAgICAgIHRoaXMuX2NhcHR1
cmVCdXR0b25JdGVtLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRp
b25JdGVtLkV2ZW50LkNsaWNrZWQsIHRoaXMuX2NhcHR1cmVCdXR0b25JdGVtQ2xpY2tlZCwgdGhp
cyk7CisgICAgICAgIHRoaXMuX2NhcHR1cmVCdXR0b25JdGVtLmhpZGRlbiA9IHRydWU7CisgICAg
ICAgIHRoaXMuX25hdmlnYXRpb25CYXIuYWRkTmF2aWdhdGlvbkl0ZW0odGhpcy5fY2FwdHVyZUJ1
dHRvbkl0ZW0pOwogCisgICAgICAgIHRoaXMuX3JlcGxheUJ1dHRvbkl0ZW0gPSBuZXcgV2ViSW5z
cGVjdG9yLlRvZ2dsZUJ1dHRvbk5hdmlnYXRpb25JdGVtKCJyZXBsYXktZGFzaGJvYXJkLXJlcGxh
eSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3RhcnQgUGxheWJhY2siKSwgV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJQYXVzZSBQbGF5YmFjayIpLCAiSW1hZ2VzL1JlcGxheVBsYXlCdXR0b24uc3Zn
IiwgIkltYWdlcy9SZXBsYXlQYXVzZUJ1dHRvbi5zdmciLCAxNiwgMTYpOworICAgICAgICB0aGlz
Ll9yZXBsYXlCdXR0b25JdGVtLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkJ1dHRvbk5h
dmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQsIHRoaXMuX3JlcGxheUJ1dHRvbkl0ZW1DbGlja2Vk
LCB0aGlzKTsKKyAgICAgICAgdGhpcy5fcmVwbGF5QnV0dG9uSXRlbS5oaWRkZW4gPSB0cnVlOwor
ICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyLmFkZE5hdmlnYXRpb25JdGVtKHRoaXMuX3JlcGxh
eUJ1dHRvbkl0ZW0pOworCisgICAgICAgIC8vIEFkZCBldmVudHMgcmVxdWlyZWQgdG8gdHJhY2sg
Y2FwdHVyZSBhbmQgcmVwbGF5IHN0YXRlLgorICAgICAgICBXZWJJbnNwZWN0b3IucmVwbGF5TWFu
YWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5SZXBsYXlNYW5hZ2VyLkV2ZW50LkNh
cHR1cmVTdGFydGVkLCB0aGlzLl9jYXB0dXJlU3RhcnRlZCwgdGhpcyk7CisgICAgICAgIFdlYklu
c3BlY3Rvci5yZXBsYXlNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJlcGxh
eU1hbmFnZXIuRXZlbnQuQ2FwdHVyZVN0b3BwZWQsIHRoaXMuX2NhcHR1cmVTdG9wcGVkLCB0aGlz
KTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnJlcGxheU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuUmVwbGF5TWFuYWdlci5FdmVudC5QbGF5YmFja1N0YXJ0ZWQsIHRoaXMuX3Bs
YXliYWNrU3RhcnRlZCwgdGhpcyk7CisgICAgICAgIFdlYkluc3BlY3Rvci5yZXBsYXlNYW5hZ2Vy
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJlcGxheU1hbmFnZXIuRXZlbnQuUGxheWJh
Y2tQYXVzZWQsIHRoaXMuX3BsYXliYWNrUGF1c2VkLCB0aGlzKTsKKyAgICAgICAgV2ViSW5zcGVj
dG9yLnJlcGxheU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUmVwbGF5TWFu
YWdlci5FdmVudC5QbGF5YmFja0ZpbmlzaGVkLCB0aGlzLl9wbGF5YmFja0ZpbmlzaGVkLCB0aGlz
KTsKKworICAgICAgICAvLyBNYW51YWxseSBpbml0aWFsaXplIHN0eWxlIGNsYXNzZXMgYnkgcXVl
cnlpbmcgY3VycmVudCByZXBsYXkgc3RhdGUuCisgICAgICAgIGlmIChXZWJJbnNwZWN0b3IucmVw
bGF5TWFuYWdlci5zZXNzaW9uU3RhdGUgPT09IFdlYkluc3BlY3Rvci5SZXBsYXlNYW5hZ2VyLlNl
c3Npb25TdGF0ZS5DYXB0dXJpbmcpCisgICAgICAgICAgICB0aGlzLl9jYXB0dXJlU3RhcnRlZCgp
OworICAgICAgICBlbHNlIGlmIChXZWJJbnNwZWN0b3IucmVwbGF5TWFuYWdlci5zZXNzaW9uU3Rh
dGUgPT09IFdlYkluc3BlY3Rvci5SZXBsYXlNYW5hZ2VyLlNlc3Npb25TdGF0ZS5JbmFjdGl2ZSkK
KyAgICAgICAgICAgIHRoaXMuX2NhcHR1cmVTdG9wcGVkKCk7CisgICAgICAgIC8vIFJlcGxheU1h
bmFnZXIuc2Vzc2lvblN0YXRlIG11c3QgYmUgUmVwbGF5aW5nLgorICAgICAgICBlbHNlIGlmIChX
ZWJJbnNwZWN0b3IucmVwbGF5TWFuYWdlci5zZWdtZW50U3RhdGUgPT09IFdlYkluc3BlY3Rvci5S
ZXBsYXlNYW5hZ2VyLlNlZ21lbnRTdGF0ZS5EaXNwYXRjaGluZykKKyAgICAgICAgICAgIHRoaXMu
X3BsYXliYWNrU3RhcnRlZCgpOworICAgICAgICAvLyBSZXBsYXlNYW5hZ2VyLnNlc3Npb25TdGF0
ZSBtdXN0IGJlIFVubG9hZGVkIG9yIExvYWRlZCwgc28gZXhlY3V0aW9uIGlzIHBhdXNlZC4KKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgdGhpcy5fcGxheWJhY2tQYXVzZWQoKTsKKyAgICB9Cisg
ICAgCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX2NhcHR1cmVCdXR0b25JdGVtQ2xpY2tlZDogZnVu
Y3Rpb24oKQorICAgIF9jYXB0dXJlQnV0dG9uSXRlbUNsaWNrZWQoKQogICAgIHsKICAgICAgICAg
aWYgKFdlYkluc3BlY3Rvci5yZXBsYXlNYW5hZ2VyLnNlc3Npb25TdGF0ZSAhPT0gV2ViSW5zcGVj
dG9yLlJlcGxheU1hbmFnZXIuU2Vzc2lvblN0YXRlLkNhcHR1cmluZykKICAgICAgICAgICAgIFdl
Ykluc3BlY3Rvci5yZXBsYXlNYW5hZ2VyLnN0YXJ0Q2FwdHVyaW5nKCk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5yZXBsYXlNYW5hZ2VyLnN0b3BDYXB0dXJpbmcoKTsK
LSAgICB9LAorICAgIH0KIAotICAgIF9yZXBsYXlCdXR0b25JdGVtQ2xpY2tlZDogZnVuY3Rpb24o
ZXZlbnQpCisgICAgX3JlcGxheUJ1dHRvbkl0ZW1DbGlja2VkKGV2ZW50KQogICAgIHsKICAgICAg
ICAgY29uc29sZS5hc3NlcnQoV2ViSW5zcGVjdG9yLnJlcGxheU1hbmFnZXIuc2Vzc2lvblN0YXRl
ICE9PSBXZWJJbnNwZWN0b3IuUmVwbGF5TWFuYWdlci5TZXNzaW9uU3RhdGUuQ2FwdHVyaW5nLCAi
VHJpZWQgdG8gc3RhcnQgcmVwbGF5aW5nIHdoaWxlIFNlc3Npb25TdGF0ZSBpcyBDYXB0dXJpbmch
Iik7CiAKQEAgLTkxLDM0ICs4MywzOCBAQCBXZWJJbnNwZWN0b3IuUmVwbGF5RGFzaGJvYXJkVmll
dy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IucmVwbGF5TWFuYWdlci5w
YXVzZVBsYXliYWNrKCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5y
ZXBsYXlNYW5hZ2VyLnJlcGxheVRvQ29tcGxldGlvbigpOwotICAgIH0sCisgICAgfQogCi0gICAg
X2NhcHR1cmVTdGFydGVkOiBmdW5jdGlvbigpCisgICAgX2NhcHR1cmVTdGFydGVkKCkKICAgICB7
CiAgICAgICAgIHRoaXMuX2NhcHR1cmVCdXR0b25JdGVtLmhpZGRlbiA9IGZhbHNlOwogICAgICAg
ICB0aGlzLl9jYXB0dXJlQnV0dG9uSXRlbS5hY3RpdmF0ZWQgPSB0cnVlOwogICAgICAgICB0aGlz
Ll9yZXBsYXlCdXR0b25JdGVtLmhpZGRlbiA9IHRydWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBf
Y2FwdHVyZVN0b3BwZWQ6IGZ1bmN0aW9uKCkKKyAgICBfY2FwdHVyZVN0b3BwZWQoKQogICAgIHsK
ICAgICAgICAgdGhpcy5fY2FwdHVyZUJ1dHRvbkl0ZW0uYWN0aXZhdGVkID0gZmFsc2U7CiAgICAg
ICAgIHRoaXMuX2NhcHR1cmVCdXR0b25JdGVtLmhpZGRlbiA9IHRydWU7CiAgICAgICAgIHRoaXMu
X3JlcGxheUJ1dHRvbkl0ZW0uaGlkZGVuID0gZmFsc2U7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBf
cGxheWJhY2tTdGFydGVkOiBmdW5jdGlvbigpCisgICAgX3BsYXliYWNrU3RhcnRlZCgpCiAgICAg
ewogICAgICAgICB0aGlzLl9yZXBsYXlCdXR0b25JdGVtLnRvZ2dsZWQgPSB0cnVlOwotICAgIH0s
CisgICAgfQogCi0gICAgX3BsYXliYWNrUGF1c2VkOiBmdW5jdGlvbigpCisgICAgX3BsYXliYWNr
UGF1c2VkKCkKICAgICB7CiAgICAgICAgIHRoaXMuX3JlcGxheUJ1dHRvbkl0ZW0udG9nZ2xlZCA9
IGZhbHNlOwotICAgIH0sCisgICAgfQogCi0gICAgX3BsYXliYWNrRmluaXNoZWQ6IGZ1bmN0aW9u
KCkKKyAgICBfcGxheWJhY2tGaW5pc2hlZCgpCiAgICAgewogICAgICAgICB0aGlzLl9yZXBsYXlC
dXR0b25JdGVtLnRvZ2dsZWQgPSBmYWxzZTsKICAgICB9CiB9OworCitXZWJJbnNwZWN0b3IuUmVw
bGF5RGFzaGJvYXJkVmlldy5SZWNvcmRpbmdDb250YWluZXJTdHlsZUNsYXNzTmFtZSA9ICJyZWNv
cmRpbmctY29udGFpbmVyIjsKK1dlYkluc3BlY3Rvci5SZXBsYXlEYXNoYm9hcmRWaWV3LlJlY29y
ZEJ1dHRvblN0eWxlQ2xhc3NOYW1lID0gInJlY29yZC1idXR0b24iOworV2ViSW5zcGVjdG9yLlJl
cGxheURhc2hib2FyZFZpZXcuUmVwbGF5QnV0dG9uU3R5bGVDbGFzc05hbWUgPSAicmVwbGF5LWJ1
dHRvbiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9SdWxlc1N0eWxlRGV0YWlsc1BhbmVsLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvUnVsZXNTdHlsZURldGFpbHNQYW5lbC5qcwppbmRleCAyMTViMTg2
Y2ExZDk2YTc2NmE5MTM3ODM2ODRkMjgyOTc1ODJjNTg5Li5jZmUzNzNhMjQ1YWU5NmU3Yzc1MTVk
NDczODlmYTgzZWZmYWNiOTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9SdWxlc1N0eWxlRGV0YWlsc1BhbmVsLmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1J1bGVzU3R5bGVEZXRhaWxzUGFuZWwu
anMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTIzLDIzICsyMywxOCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLVdlYkluc3BlY3Rvci5SdWxlc1N0eWxlRGV0YWlsc1BhbmVsID0gZnVuY3Rpb24oKQor
V2ViSW5zcGVjdG9yLlJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwgPSBjbGFzcyBSdWxlc1N0eWxlRGV0
YWlsc1BhbmVsIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlN0eWxlRGV0YWlsc1BhbmVsCiB7Ci0gICAg
V2ViSW5zcGVjdG9yLlN0eWxlRGV0YWlsc1BhbmVsLmNhbGwodGhpcywgV2ViSW5zcGVjdG9yLlJ1
bGVzU3R5bGVEZXRhaWxzUGFuZWwuU3R5bGVDbGFzc05hbWUsICJydWxlcyIsIFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiUnVsZXMiKSk7Ci0KLSAgICB0aGlzLl9zZWN0aW9ucyA9IFtdOwotfTsKLQot
V2ViSW5zcGVjdG9yLlJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwuU3R5bGVDbGFzc05hbWUgPSAicnVs
ZXMiOwotV2ViSW5zcGVjdG9yLlJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwuTGFiZWxFbGVtZW50U3R5
bGVDbGFzc05hbWUgPSAibGFiZWwiOwotV2ViSW5zcGVjdG9yLlJ1bGVzU3R5bGVEZXRhaWxzUGFu
ZWwuTmV3UnVsZUVsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJuZXctcnVsZSI7CisgICAgY29uc3Ry
dWN0b3IoKQorICAgIHsKKyAgICAgICAgc3VwZXIoInJ1bGVzIiwgInJ1bGVzIiwgV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJSdWxlcyIpKTsKIAotV2ViSW5zcGVjdG9yLlJ1bGVzU3R5bGVEZXRhaWxz
UGFuZWwucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuUnVsZXNT
dHlsZURldGFpbHNQYW5lbCwKKyAgICAgICAgdGhpcy5fc2VjdGlvbnMgPSBbXTsKKyAgICB9CiAK
ICAgICAvLyBQdWJsaWMKIAotICAgIHJlZnJlc2g6IGZ1bmN0aW9uKHNpZ25pZmljYW50Q2hhbmdl
KQorICAgIHJlZnJlc2goc2lnbmlmaWNhbnRDaGFuZ2UpCiAgICAgewogICAgICAgICAvLyBXZSBv
bmx5IG5lZWQgdG8gZG8gYSByZWJ1aWxkIG9uIHNpZ25pZmljYW50IGNoYW5nZXMuIE90aGVyIGNo
YW5nZXMgYXJlIGhhbmRsZWQKICAgICAgICAgLy8gYnkgdGhlIHNlY3Rpb25zIGFuZCB0ZXh0IGVk
aXRvcnMgdGhlbXNlbHZlcy4KQEAgLTE1MCw3ICsxNDUsNyBAQCBXZWJJbnNwZWN0b3IuUnVsZXNT
dHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgICAgIGlmICghdGhpcy5u
b2RlU3R5bGVzLm5vZGUuaXNJblNoYWRvd1RyZWUoKSkgewogICAgICAgICAgICAgICAgIHZhciBu
ZXdSdWxlQnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgICAg
ICAgICAgbmV3UnVsZUJ1dHRvbi5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuUnVsZXNTdHlsZURl
dGFpbHNQYW5lbC5OZXdSdWxlRWxlbWVudFN0eWxlQ2xhc3NOYW1lOworICAgICAgICAgICAgICAg
IG5ld1J1bGVCdXR0b24uY2xhc3NOYW1lID0gIm5ldy1ydWxlIjsKICAgICAgICAgICAgICAgICBu
ZXdSdWxlQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fbmV3UnVsZUNsaWNr
ZWQuYmluZCh0aGlzKSk7CiAKICAgICAgICAgICAgICAgICBuZXdSdWxlQnV0dG9uLmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpKTsKQEAgLTE4OSw3ICsxODQsNyBAQCBX
ZWJJbnNwZWN0b3IuUnVsZXNTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICAgICAgcHJlZml4RWxlbWVudC50ZXh0Q29udGVudCA9IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiSW5oZXJpdGVkIEZyb206ICIpOwogCiAgICAgICAgICAgICAgICAgdmFyIGluaGVyaXRlZExh
YmVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgICAgICAgICAgaW5o
ZXJpdGVkTGFiZWwuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLlJ1bGVzU3R5bGVEZXRhaWxzUGFu
ZWwuTGFiZWxFbGVtZW50U3R5bGVDbGFzc05hbWU7CisgICAgICAgICAgICAgICAgaW5oZXJpdGVk
TGFiZWwuY2xhc3NOYW1lID0gImxhYmVsIjsKICAgICAgICAgICAgICAgICBpbmhlcml0ZWRMYWJl
bC5hcHBlbmRDaGlsZChwcmVmaXhFbGVtZW50KTsKICAgICAgICAgICAgICAgICBpbmhlcml0ZWRM
YWJlbC5hcHBlbmRDaGlsZChXZWJJbnNwZWN0b3IubGlua2lmeU5vZGVSZWZlcmVuY2Uoc3R5bGUu
bm9kZSkpOwogICAgICAgICAgICAgICAgIG5ld0RPTUZyYWdtZW50LmFwcGVuZENoaWxkKGluaGVy
aXRlZExhYmVsKTsKQEAgLTIxMiw3ICsyMDcsNyBAQCBXZWJJbnNwZWN0b3IuUnVsZXNTdHlsZURl
dGFpbHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgICAgIHByZWZpeEVsZW1l
bnQudGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk1lZGlhOiAiKTsKIAogICAg
ICAgICAgICAgICAgICAgICB2YXIgbWVkaWFMYWJlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOwotICAgICAgICAgICAgICAgICAgICBtZWRpYUxhYmVsLmNsYXNzTmFtZSA9IFdlYklu
c3BlY3Rvci5SdWxlc1N0eWxlRGV0YWlsc1BhbmVsLkxhYmVsRWxlbWVudFN0eWxlQ2xhc3NOYW1l
OworICAgICAgICAgICAgICAgICAgICBtZWRpYUxhYmVsLmNsYXNzTmFtZSA9ICJsYWJlbCI7CiAg
ICAgICAgICAgICAgICAgICAgIG1lZGlhTGFiZWwuYXBwZW5kQ2hpbGQocHJlZml4RWxlbWVudCk7
CiAgICAgICAgICAgICAgICAgICAgIG1lZGlhTGFiZWwuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlVGV4dE5vZGUobWVkaWEudGV4dCkpOwogCkBAIC0yNDQsMTEgKzIzOSwxMSBAQCBXZWJJbnNw
ZWN0b3IuUnVsZXNTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYg
KHByZXZpb3VzRm9jdXNlZFNlY3Rpb24pCiAgICAgICAgICAgICBwcmV2aW91c0ZvY3VzZWRTZWN0
aW9uLmZvY3VzKCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQKIAotICAgIHNo
b3duOiBmdW5jdGlvbigpCisgICAgc2hvd24oKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9y
LlN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5zaG93bi5jYWxsKHRoaXMpOwogCkBAIC0yNTks
OSArMjU0LDkgQEAgV2ViSW5zcGVjdG9yLlJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgc2VjdGlvbi5zdHlsZS5fX3J1bGVzU2VjdGlvbiA9IHNlY3Rpb247
CiAgICAgICAgICAgICBzZWN0aW9uLnVwZGF0ZUxheW91dCgpOwogICAgICAgICB9Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBoaWRkZW46IGZ1bmN0aW9uKCkKKyAgICBoaWRkZW4oKQogICAgIHsKICAg
ICAgICAgV2ViSW5zcGVjdG9yLlN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5oaWRkZW4uY2Fs
bCh0aGlzKTsKIApAQCAtMjY5LDIxICsyNjQsMTkgQEAgV2ViSW5zcGVjdG9yLlJ1bGVzU3R5bGVE
ZXRhaWxzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAvLyB0byByZWxlYXNlIHRoZWlyIG9i
amVjdHMgd2hlbiB0aGlzIHBhbmVsIGlzIG5vdCB2aXNpYmxlLgogICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IHRoaXMuX3NlY3Rpb25zLmxlbmd0aDsgKytpKQogICAgICAgICAgICAgZGVsZXRl
IHRoaXMuX3NlY3Rpb25zW2ldLnN0eWxlLl9fcnVsZXNTZWN0aW9uOwotICAgIH0sCisgICAgfQog
Ci0gICAgd2lkdGhEaWRDaGFuZ2U6IGZ1bmN0aW9uKCkKKyAgICB3aWR0aERpZENoYW5nZSgpCiAg
ICAgewogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX3NlY3Rpb25zLmxlbmd0aDsg
KytpKQogICAgICAgICAgICAgdGhpcy5fc2VjdGlvbnNbaV0udXBkYXRlTGF5b3V0KCk7Ci0gICAg
fSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfbmV3UnVsZUNsaWNrZWQ6IGZ1bmN0
aW9uKGV2ZW50KQorICAgIF9uZXdSdWxlQ2xpY2tlZChldmVudCkKICAgICB7CiAgICAgICAgIHRo
aXMuX2ZvY3VzTmV4dE5ld0luc3BlY3RvclJ1bGUgPSB0cnVlOwogICAgICAgICB0aGlzLm5vZGVT
dHlsZXMuYWRkRW1wdHlSdWxlKCk7CiAgICAgfQogfTsKLQotV2ViSW5zcGVjdG9yLlJ1bGVzU3R5
bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5TdHlsZURl
dGFpbHNQYW5lbC5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9TdHlsZURldGFpbHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1N0eWxlRGV0YWlsc1BhbmVsLmpzCmluZGV4IDQx
ZjYzNTcwYzZkZjk3MDlhOTY2NDhiNjIyNzIyYWY1ZDMwYzIxMTQuLjBkYWUxYzgzODQyMDYzMGVm
NGVhMjg1NGQzZTNiMWZjOWNjMDkyZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1N0eWxlRGV0YWlsc1BhbmVsLmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1N0eWxlRGV0YWlsc1BhbmVsLmpzCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
Myw0MyArMjMsNDIgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci1XZWJJbnNwZWN0b3IuU3R5bGVEZXRhaWxzUGFuZWwgPSBmdW5jdGlvbihjbGFzc05hbWUsIGlk
ZW50aWZpZXIsIGxhYmVsKQorV2ViSW5zcGVjdG9yLlN0eWxlRGV0YWlsc1BhbmVsID0gY2xhc3Mg
U3R5bGVEZXRhaWxzUGFuZWwgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgdGhp
cy5fZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuX2Vs
ZW1lbnQuY2xhc3NOYW1lID0gY2xhc3NOYW1lOwotCi0gICAgLy8gQWRkIHRoaXMgb2Zmc2V0LXNl
Y3Rpb25zIGNsYXNzIG5hbWUgc28gdGhlIHN0aWNreSBoZWFkZXJzIGRvbid0IG92ZXJsYXAgdGhl
IG5hdmlnYXRpb24gYmFyLgotICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3Bl
Y3Rvci5TdHlsZURldGFpbHNQYW5lbC5PZmZzZXRTZWN0aW9uc1N0eWxlQ2xhc3NOYW1lKTsKKyAg
ICBjb25zdHJ1Y3RvcihjbGFzc05hbWUsIGlkZW50aWZpZXIsIGxhYmVsKQorICAgIHsKKyAgICAg
ICAgc3VwZXIoKTsKIAotICAgIHRoaXMuX25hdmlnYXRpb25JdGVtID0gbmV3IFdlYkluc3BlY3Rv
ci5SYWRpb0J1dHRvbk5hdmlnYXRpb25JdGVtKGlkZW50aWZpZXIsIGxhYmVsKTsKKyAgICAgICAg
dGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0
aGlzLl9lbGVtZW50LmNsYXNzTmFtZSA9IGNsYXNzTmFtZTsKIAotICAgIHRoaXMuX25vZGVTdHls
ZXMgPSBudWxsOwotICAgIHRoaXMuX3Zpc2libGUgPSBmYWxzZTsKLX07CisgICAgICAgIC8vIEFk
ZCB0aGlzIG9mZnNldC1zZWN0aW9ucyBjbGFzcyBuYW1lIHNvIHRoZSBzdGlja3kgaGVhZGVycyBk
b24ndCBvdmVybGFwIHRoZSBuYXZpZ2F0aW9uIGJhci4KKyAgICAgICAgdGhpcy5lbGVtZW50LmNs
YXNzTGlzdC5hZGQoIm9mZnNldC1zZWN0aW9ucyIpOwogCi1XZWJJbnNwZWN0b3IuU3R5bGVEZXRh
aWxzUGFuZWwuT2Zmc2V0U2VjdGlvbnNTdHlsZUNsYXNzTmFtZSA9ICJvZmZzZXQtc2VjdGlvbnMi
OworICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uSXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuUmFkaW9C
dXR0b25OYXZpZ2F0aW9uSXRlbShpZGVudGlmaWVyLCBsYWJlbCk7CiAKLVdlYkluc3BlY3Rvci5T
dHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3Bl
Y3Rvci5TdHlsZURldGFpbHNQYW5lbCwKKyAgICAgICAgdGhpcy5fbm9kZVN0eWxlcyA9IG51bGw7
CisgICAgICAgIHRoaXMuX3Zpc2libGUgPSBmYWxzZTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMK
IAogICAgIGdldCBlbGVtZW50KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50
OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IG5hdmlnYXRpb25JdGVtKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB0aGlzLl9uYXZpZ2F0aW9uSXRlbTsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCBub2RlU3R5bGVzKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9ub2RlU3R5bGVzOwot
ICAgIH0sCisgICAgfQogCi0gICAgc2hvd246IGZ1bmN0aW9uKCkKKyAgICBzaG93bigpCiAgICAg
ewogICAgICAgICBpZiAodGhpcy5fdmlzaWJsZSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTY3
LDE5ICs2NiwxOSBAQCBXZWJJbnNwZWN0b3IuU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlID0g
ewogICAgICAgICB0aGlzLl92aXNpYmxlID0gdHJ1ZTsKIAogICAgICAgICB0aGlzLl9yZWZyZXNo
Tm9kZVN0eWxlcygpOwotICAgIH0sCisgICAgfQogCi0gICAgaGlkZGVuOiBmdW5jdGlvbigpCisg
ICAgaGlkZGVuKCkKICAgICB7CiAgICAgICAgIHRoaXMuX3Zpc2libGUgPSBmYWxzZTsKLSAgICB9
LAorICAgIH0KIAotICAgIHdpZHRoRGlkQ2hhbmdlOiBmdW5jdGlvbigpCisgICAgd2lkdGhEaWRD
aGFuZ2UoKQogICAgIHsKICAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KLSAg
ICB9LAorICAgIH0KIAotICAgIG1hcmtBc05lZWRzUmVmcmVzaDogZnVuY3Rpb24oZG9tTm9kZSkK
KyAgICBtYXJrQXNOZWVkc1JlZnJlc2goZG9tTm9kZSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KGRvbU5vZGUpOwogICAgICAgICBpZiAoIWRvbU5vZGUpCkBAIC0xMDUsMTIgKzEwNCwx
MiBAQCBXZWJJbnNwZWN0b3IuU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlID0gewogCiAgICAg
ICAgIGlmICh0aGlzLl92aXNpYmxlKQogICAgICAgICAgICAgdGhpcy5fcmVmcmVzaE5vZGVTdHls
ZXMoKTsKLSAgICB9LAorICAgIH0KIAotICAgIHJlZnJlc2g6IGZ1bmN0aW9uKHNpZ25pZmljYW50
Q2hhbmdlKQorICAgIHJlZnJlc2goc2lnbmlmaWNhbnRDaGFuZ2UpCiAgICAgewogICAgICAgICAv
LyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJp
dmF0ZQogCkBAIC0xMTksMTYgKzExOCwxNiBAQCBXZWJJbnNwZWN0b3IuU3R5bGVEZXRhaWxzUGFu
ZWwucHJvdG90eXBlID0gewogICAgICAgICBpZiAoIVdlYkluc3BlY3Rvci5jc3NTdHlsZU1hbmFn
ZXIuY2FuRm9yY2VQc2V1ZG9DbGFzc2VzKCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAg
ICAgcmV0dXJuIHRoaXMubm9kZVN0eWxlcy5ub2RlLmVuYWJsZWRQc2V1ZG9DbGFzc2VzLmxlbmd0
aCA/IDAgOiBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLk5vRm9yY2Vk
UHNldWRvQ2xhc3Nlc1Njcm9sbE9mZnNldDsKLSAgICB9LAorICAgIH0KIAotICAgIF9yZWZyZXNo
Tm9kZVN0eWxlczogZnVuY3Rpb24oKQorICAgIF9yZWZyZXNoTm9kZVN0eWxlcygpCiAgICAgewog
ICAgICAgICBpZiAoIXRoaXMuX25vZGVTdHlsZXMpCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIHRoaXMuX25vZGVTdHlsZXMucmVmcmVzaCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX3Jl
ZnJlc2hQcmVzZXJ2aW5nU2Nyb2xsUG9zaXRpb246IGZ1bmN0aW9uKHNpZ25pZmljYW50Q2hhbmdl
KQorICAgIF9yZWZyZXNoUHJlc2VydmluZ1Njcm9sbFBvc2l0aW9uKHNpZ25pZmljYW50Q2hhbmdl
KQogICAgIHsKICAgICAgICAgc2lnbmlmaWNhbnRDaGFuZ2UgPSB0aGlzLl9mb3JjZVNpZ25pZmlj
YW50Q2hhbmdlIHx8IHNpZ25pZmljYW50Q2hhbmdlIHx8IGZhbHNlOwogICAgICAgICBkZWxldGUg
dGhpcy5fZm9yY2VTaWduaWZpY2FudENoYW5nZTsKQEAgLTE0NSwxOSArMTQ0LDE3IEBAIFdlYklu
c3BlY3Rvci5TdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKHRo
aXMuZWxlbWVudC5wYXJlbnROb2RlKQogICAgICAgICAgICAgdGhpcy5lbGVtZW50LnBhcmVudE5v
ZGUuc2Nyb2xsVG9wID0gcHJldmlvdXNTY3JvbGxUb3A7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBf
bm9kZVN0eWxlc1JlZnJlc2hlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX25vZGVTdHlsZXNSZWZy
ZXNoZWQoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fdmlzaWJsZSkKICAgICAgICAg
ICAgIHRoaXMuX3JlZnJlc2hQcmVzZXJ2aW5nU2Nyb2xsUG9zaXRpb24oZXZlbnQuZGF0YS5zaWdu
aWZpY2FudENoYW5nZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfbm9kZVN0eWxlc05lZWRzUmVm
cmVzaGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfbm9kZVN0eWxlc05lZWRzUmVmcmVzaGVkKGV2
ZW50KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3Zpc2libGUpCiAgICAgICAgICAgICB0aGlz
Ll9yZWZyZXNoTm9kZVN0eWxlcygpOwogICAgIH0KIH07Ci0KLVdlYkluc3BlY3Rvci5TdHlsZURl
dGFpbHNQYW5lbC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90
b3R5cGU7Cg==
</data>
<flag name="review"
          id="274377"
          type_id="1"
          status="+"
          setter="joepeck"
    />
    <flag name="commit-queue"
          id="274378"
          type_id="3"
          status="-"
          setter="joepeck"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249556</attachid>
            <date>2015-03-26 23:42:47 -0700</date>
            <delta_ts>2015-03-26 23:42:47 -0700</delta_ts>
            <desc>Patch (Ignore Space)</desc>
            <filename>143128-ignore-space.patch</filename>
            <type>text/plain</type>
            <size>71695</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGVkZjhhODkuLmZhMjYyZTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI4IEBACiAyMDE1LTAzLTI2ICBUaW1vdGh5IEhhdGNo
ZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KIAorICAgICAgICBXZWIgSW5zcGVjdG9yOiBDb252ZXJ0
IG1vcmUgbWlzYyBWaWV3IGNsYXNzZXMgdG8gRVM2CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMxMjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ29tcGxldGlvblN1
Z2dlc3Rpb25zVmlldy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NvbXB1dGVk
U3R5bGVEZXRhaWxzUGFuZWwuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9EYXNo
Ym9hcmRDb250YWluZXJWaWV3LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRGFz
aGJvYXJkVmlldy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0RlYnVnZ2VyRGFz
aGJvYXJkVmlldy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0RlZmF1bHREYXNo
Ym9hcmRWaWV3LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRmlsdGVyQmFyQnV0
dG9uLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvTWV0cmljc1N0eWxlRGV0YWls
c1BhbmVsLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0UHJldmlld1Zp
ZXcuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9PYmplY3RUcmVlVmlldy5qczoK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1F1aWNrQ29uc29sZS5qczoKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1ZpZXdzL1JlcGxheURhc2hib2FyZFZpZXcuanM6CisgICAgICAgICog
VXNlckludGVyZmFjZS9WaWV3cy9SdWxlc1N0eWxlRGV0YWlsc1BhbmVsLmpzOgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvVmlld3MvU3R5bGVEZXRhaWxzUGFuZWwuanM6CisgICAgICAgIENvbnZl
cnRlZCB0byBFUzYgY2xhc3Nlcy4KKworMjAxNS0wMy0yNiAgVGltb3RoeSBIYXRjaGVyICA8dGlt
b3RoeUBhcHBsZS5jb20+CisKICAgICAgICAgV2ViIEluc3BlY3RvcjogQ29udmVydCBUZXh0RWRp
dG9yIGNsYXNzZXMgdG8gRVM2CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDMxMjcKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldy5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbXBsZXRpb25TdWdnZXN0aW9uc1Zp
ZXcuanMKaW5kZXggZTViZTM1ZC4uMmQ3MGJkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldy5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db21wbGV0aW9u
U3VnZ2VzdGlvbnNWaWV3LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yMywxMCArMjMsMTEgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuQ29tcGxldGlvblN1Z2dlc3Rpb25z
VmlldyA9IGZ1bmN0aW9uKGRlbGVnYXRlKQorV2ViSW5zcGVjdG9yLkNvbXBsZXRpb25TdWdnZXN0
aW9uc1ZpZXcgPSBjbGFzcyBDb21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3IGV4dGVuZHMgV2ViSW5z
cGVjdG9yLk9iamVjdAogewotICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNw
ZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgotICAgIC8vIFdlYkluc3Bl
Y3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICBjb25zdHJ1Y3RvcihkZWxlZ2F0ZSkKKyAgICB7
CisgICAgICAgIHN1cGVyKCk7CiAKICAgICAgICAgdGhpcy5fZGVsZWdhdGUgPSBkZWxlZ2F0ZSB8
fCBudWxsOwogCkBAIC00MSwzMiArNDIsMjQgQEAgV2ViSW5zcGVjdG9yLkNvbXBsZXRpb25TdWdn
ZXN0aW9uc1ZpZXcgPSBmdW5jdGlvbihkZWxlZ2F0ZSkKICAgICAgICAgdGhpcy5fY29udGFpbmVy
RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIiwgdGhpcy5fbW91c2VVcC5iaW5kKHRo
aXMpKTsKICAgICAgICAgdGhpcy5fY29udGFpbmVyRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJj
bGljayIsIHRoaXMuX2l0ZW1DbGlja2VkLmJpbmQodGhpcykpOwogICAgICAgICB0aGlzLl9lbGVt
ZW50LmFwcGVuZENoaWxkKHRoaXMuX2NvbnRhaW5lckVsZW1lbnQpOwotfTsKLQotV2ViSW5zcGVj
dG9yLkNvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcuU3R5bGVDbGFzc05hbWUgPSAiY29tcGxldGlv
bi1zdWdnZXN0aW9ucyI7Ci1XZWJJbnNwZWN0b3IuQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldy5D
b250YWluZXJFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAiY29tcGxldGlvbi1zdWdnZXN0aW9ucy1j
b250YWluZXIiOwotV2ViSW5zcGVjdG9yLkNvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcuSXRlbUVs
ZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJpdGVtIjsKLVdlYkluc3BlY3Rvci5Db21wbGV0aW9uU3Vn
Z2VzdGlvbnNWaWV3LlNlbGVjdGVkSXRlbVN0eWxlQ2xhc3NOYW1lID0gInNlbGVjdGVkIjsKLQot
V2ViSW5zcGVjdG9yLkNvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcucHJvdG90eXBlID0gewotICAg
IGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldywKKyAg
ICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBkZWxlZ2F0ZSgpCiAgICAgewogICAgICAg
ICByZXR1cm4gdGhpcy5fZGVsZWdhdGU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgdmlzaWJs
ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gISF0aGlzLl9lbGVtZW50LnBhcmVudE5vZGU7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBnZXQgc2VsZWN0ZWRJbmRleCgpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdGhpcy5fc2VsZWN0ZWRJbmRleDsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBzZWxl
Y3RlZEluZGV4KGluZGV4KQogICAgIHsKQEAgLTgyLDkgKzc1LDkgQEAgV2ViSW5zcGVjdG9yLkNv
bXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcucHJvdG90eXBlID0gewogCiAgICAgICAgIHNlbGVjdGVk
SXRlbUVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuQ29tcGxldGlvblN1Z2dlc3Rp
b25zVmlldy5TZWxlY3RlZEl0ZW1TdHlsZUNsYXNzTmFtZSk7CiAgICAgICAgIHNlbGVjdGVkSXRl
bUVsZW1lbnQuc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZChmYWxzZSk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBzZWxlY3ROZXh0OiBmdW5jdGlvbigpCisgICAgc2VsZWN0TmV4dCgpCiAgICAgewogICAg
ICAgICB2YXIgY291bnQgPSB0aGlzLl9jb250YWluZXJFbGVtZW50LmNoaWxkcmVuLmxlbmd0aDsK
IApAQCAtOTYsOSArODksOSBAQCBXZWJJbnNwZWN0b3IuQ29tcGxldGlvblN1Z2dlc3Rpb25zVmll
dy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBzZWxlY3RlZEl0ZW1FbGVtZW50ID0gdGhpcy5f
c2VsZWN0ZWRJdGVtRWxlbWVudDsKICAgICAgICAgaWYgKHNlbGVjdGVkSXRlbUVsZW1lbnQgJiYg
dGhpcy5fZGVsZWdhdGUgJiYgdHlwZW9mIHRoaXMuX2RlbGVnYXRlLmNvbXBsZXRpb25TdWdnZXN0
aW9uc1NlbGVjdGVkQ29tcGxldGlvbiA9PT0gImZ1bmN0aW9uIikKICAgICAgICAgICAgIHRoaXMu
X2RlbGVnYXRlLmNvbXBsZXRpb25TdWdnZXN0aW9uc1NlbGVjdGVkQ29tcGxldGlvbih0aGlzLCBz
ZWxlY3RlZEl0ZW1FbGVtZW50LnRleHRDb250ZW50KTsKLSAgICB9LAorICAgIH0KIAotICAgIHNl
bGVjdFByZXZpb3VzOiBmdW5jdGlvbigpCisgICAgc2VsZWN0UHJldmlvdXMoKQogICAgIHsKICAg
ICAgICAgaWYgKGlzTmFOKHRoaXMuX3NlbGVjdGVkSW5kZXgpIHx8IHRoaXMuX3NlbGVjdGVkSW5k
ZXggPT09IDApCiAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSB0aGlzLl9jb250YWlu
ZXJFbGVtZW50LmNoaWxkcmVuLmxlbmd0aCAtIDE7CkBAIC0xMDgsMTQgKzEwMSwxNCBAQCBXZWJJ
bnNwZWN0b3IuQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAg
IHZhciBzZWxlY3RlZEl0ZW1FbGVtZW50ID0gdGhpcy5fc2VsZWN0ZWRJdGVtRWxlbWVudDsKICAg
ICAgICAgaWYgKHNlbGVjdGVkSXRlbUVsZW1lbnQgJiYgdGhpcy5fZGVsZWdhdGUgJiYgdHlwZW9m
IHRoaXMuX2RlbGVnYXRlLmNvbXBsZXRpb25TdWdnZXN0aW9uc1NlbGVjdGVkQ29tcGxldGlvbiA9
PT0gImZ1bmN0aW9uIikKICAgICAgICAgICAgIHRoaXMuX2RlbGVnYXRlLmNvbXBsZXRpb25TdWdn
ZXN0aW9uc1NlbGVjdGVkQ29tcGxldGlvbih0aGlzLCBzZWxlY3RlZEl0ZW1FbGVtZW50LnRleHRD
b250ZW50KTsKLSAgICB9LAorICAgIH0KIAotICAgIGlzSGFuZGxpbmdDbGlja0V2ZW50OiBmdW5j
dGlvbigpCisgICAgaXNIYW5kbGluZ0NsaWNrRXZlbnQoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX21vdXNlSXNEb3duOwotICAgIH0sCisgICAgfQogCi0gICAgc2hvdzogZnVuY3Rpb24o
YW5jaG9yQm91bmRzKQorICAgIHNob3coYW5jaG9yQm91bmRzKQogICAgIHsKICAgICAgICAgLy8g
TWVhc3VyZSB0aGUgY29udGFpbmVyIHNvIHdlIGNhbiBrbm93IHRoZSBpbnRyaW5zaWMgc2l6ZSBv
ZiB0aGUgaXRlbXMuCiAgICAgICAgIHRoaXMuX2NvbnRhaW5lckVsZW1lbnQuc3R5bGUucG9zaXRp
b24gPSAiYWJzb2x1dGUiOwpAQCAtMTI4LDkgKzEyMSw5IEBAIFdlYkluc3BlY3Rvci5Db21wbGV0
aW9uU3VnZ2VzdGlvbnNWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fZWxlbWVudC5h
cHBlbmRDaGlsZCh0aGlzLl9jb250YWluZXJFbGVtZW50KTsKIAogICAgICAgICAvLyBMYXkgb3V0
IHRoZSBzdWdnZXN0LWJveCByZWxhdGl2ZSB0byB0aGUgYW5jaG9yQm91bmRzLgotICAgICAgICBj
b25zdCBtYXJnaW4gPSAxMDsKLSAgICAgICAgY29uc3QgaG9yaXpvbnRhbFBhZGRpbmcgPSAyMjsK
LSAgICAgICAgY29uc3QgYWJzb2x1dGVNYXhpbXVtSGVpZ2h0ID0gMTYwOworICAgICAgICB2YXIg
bWFyZ2luID0gMTA7CisgICAgICAgIHZhciBob3Jpem9udGFsUGFkZGluZyA9IDIyOworICAgICAg
ICB2YXIgYWJzb2x1dGVNYXhpbXVtSGVpZ2h0ID0gMTYwOwogCiAgICAgICAgIHZhciB4ID0gYW5j
aG9yQm91bmRzLm9yaWdpbi54OwogICAgICAgICB2YXIgeSA9IGFuY2hvckJvdW5kcy5vcmlnaW4u
eSArIGFuY2hvckJvdW5kcy5zaXplLmhlaWdodDsKQEAgLTE2MSwxNCArMTU0LDE0IEBAIFdlYklu
c3BlY3Rvci5Db21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAg
dGhpcy5fZWxlbWVudC5zdHlsZS5oZWlnaHQgPSBoZWlnaHQgKyAicHgiOwogCiAgICAgICAgIGRv
Y3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5fZWxlbWVudCk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBoaWRlOiBmdW5jdGlvbigpCisgICAgaGlkZSgpCiAgICAgewogICAgICAgICB0aGlzLl9l
bGVtZW50LnJlbW92ZSgpOwotICAgIH0sCisgICAgfQogCi0gICAgdXBkYXRlOiBmdW5jdGlvbihj
b21wbGV0aW9ucywgc2VsZWN0ZWRJbmRleCkKKyAgICB1cGRhdGUoY29tcGxldGlvbnMsIHNlbGVj
dGVkSW5kZXgpCiAgICAgewogICAgICAgICB0aGlzLl9jb250YWluZXJFbGVtZW50LnJlbW92ZUNo
aWxkcmVuKCk7CiAKQEAgLTE4Myw3ICsxNzYsNyBAQCBXZWJJbnNwZWN0b3IuQ29tcGxldGlvblN1
Z2dlc3Rpb25zVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgaXRlbUVsZW1lbnQu
Y2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldy5TZWxl
Y3RlZEl0ZW1TdHlsZUNsYXNzTmFtZSk7CiAgICAgICAgICAgICB0aGlzLl9jb250YWluZXJFbGVt
ZW50LmFwcGVuZENoaWxkKGl0ZW1FbGVtZW50KTsKICAgICAgICAgfQotICAgIH0sCisgICAgfQog
CiAgICAgLy8gUHJpdmF0ZQogCkBAIC0xOTUsMjMgKzE4OCwyMyBAQCBXZWJJbnNwZWN0b3IuQ29t
cGxldGlvblN1Z2dlc3Rpb25zVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBlbGVtZW50
ID0gdGhpcy5fY29udGFpbmVyRWxlbWVudC5jaGlsZHJlblt0aGlzLl9zZWxlY3RlZEluZGV4XSB8
fCBudWxsOwogICAgICAgICBjb25zb2xlLmFzc2VydChlbGVtZW50KTsKICAgICAgICAgcmV0dXJu
IGVsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfbW91c2VEb3duOiBmdW5jdGlvbihldmVu
dCkKKyAgICBfbW91c2VEb3duKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKGV2ZW50LmJ1dHRv
biAhPT0gMCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgdGhpcy5fbW91c2VJc0Rvd24g
PSB0cnVlOwotICAgIH0sCisgICAgfQogCi0gICAgX21vdXNlVXA6IGZ1bmN0aW9uKGV2ZW50KQor
ICAgIF9tb3VzZVVwKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKGV2ZW50LmJ1dHRvbiAhPT0g
MCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgdGhpcy5fbW91c2VJc0Rvd24gPSBmYWxz
ZTsKLSAgICB9LAorICAgIH0KIAotICAgIF9pdGVtQ2xpY2tlZDogZnVuY3Rpb24oZXZlbnQpCisg
ICAgX2l0ZW1DbGlja2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKGV2ZW50LmJ1dHRvbiAh
PT0gMCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTIyNiw0ICsyMTksNyBAQCBXZWJJbnNwZWN0
b3IuQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldy5wcm90b3R5cGUgPSB7CiAgICAgfQogfTsKIAot
V2ViSW5zcGVjdG9yLkNvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcucHJvdG90eXBlLl9fcHJvdG9f
XyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOworV2ViSW5zcGVjdG9yLkNvbXBsZXRp
b25TdWdnZXN0aW9uc1ZpZXcuU3R5bGVDbGFzc05hbWUgPSAiY29tcGxldGlvbi1zdWdnZXN0aW9u
cyI7CitXZWJJbnNwZWN0b3IuQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldy5Db250YWluZXJFbGVt
ZW50U3R5bGVDbGFzc05hbWUgPSAiY29tcGxldGlvbi1zdWdnZXN0aW9ucy1jb250YWluZXIiOwor
V2ViSW5zcGVjdG9yLkNvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcuSXRlbUVsZW1lbnRTdHlsZUNs
YXNzTmFtZSA9ICJpdGVtIjsKK1dlYkluc3BlY3Rvci5Db21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3
LlNlbGVjdGVkSXRlbVN0eWxlQ2xhc3NOYW1lID0gInNlbGVjdGVkIjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbXB1dGVkU3R5bGVEZXRh
aWxzUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9D
b21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsLmpzCmluZGV4IDlhNTYyNmYuLmUxMDYxODYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbXB1dGVk
U3R5bGVEZXRhaWxzUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbC5qcwpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsOSArMjMsMTEgQEAK
ICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3Iu
Q29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbCA9IGZ1bmN0aW9uKCkKK1dlYkluc3BlY3Rvci5Db21w
dXRlZFN0eWxlRGV0YWlsc1BhbmVsID0gY2xhc3MgQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbCBl
eHRlbmRzIFdlYkluc3BlY3Rvci5TdHlsZURldGFpbHNQYW5lbAogewotICAgIFdlYkluc3BlY3Rv
ci5TdHlsZURldGFpbHNQYW5lbC5jYWxsKHRoaXMsIFdlYkluc3BlY3Rvci5Db21wdXRlZFN0eWxl
RGV0YWlsc1BhbmVsLlN0eWxlQ2xhc3NOYW1lLCAiY29tcHV0ZWQiLCBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIkNvbXB1dGVkIikpOworICAgIGNvbnN0cnVjdG9yKCkKKyAgICB7CisgICAgICAgIHN1
cGVyKFdlYkluc3BlY3Rvci5Db21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsLlN0eWxlQ2xhc3NOYW1l
LCAiY29tcHV0ZWQiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvbXB1dGVkIikpOwogCiAgICAg
ICAgIHRoaXMuX2NvbXB1dGVkU3R5bGVTaG93QWxsU2V0dGluZyA9IG5ldyBXZWJJbnNwZWN0b3Iu
U2V0dGluZygiY29tcHV0ZWQtc3R5bGUtc2hvdy1hbGwiLCBmYWxzZSk7CiAKQEAgLTg2LDE5ICs4
OCwxNCBAQCBXZWJJbnNwZWN0b3IuQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbCA9IGZ1bmN0aW9u
KCkKICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2NvbnRhaW5lclJlZ2lv
bnNGbG93U2VjdGlvbi5lbGVtZW50KTsKIAogICAgICAgICB0aGlzLl9yZXNldEZsb3dEZXRhaWxz
KCk7Ci19OwotCi1XZWJJbnNwZWN0b3IuQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbC5TdHlsZUNs
YXNzTmFtZSA9ICJjb21wdXRlZCI7Ci0KLVdlYkluc3BlY3Rvci5Db21wdXRlZFN0eWxlRGV0YWls
c1BhbmVsLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkNvbXB1
dGVkU3R5bGVEZXRhaWxzUGFuZWwsCisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQg
cmVnaW9uRmxvdygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcmVnaW9uRmxvdzsKLSAg
ICB9LAorICAgIH0KIAogICAgIHNldCByZWdpb25GbG93KHJlZ2lvbkZsb3cpCiAgICAgewpAQCAt
MTA2LDEyICsxMDMsMTIgQEAgV2ViSW5zcGVjdG9yLkNvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwu
cHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9yZWdpb25GbG93TmFtZUxhYmVsVmFsdWUudGV4
dENvbnRlbnQgPSByZWdpb25GbG93ID8gcmVnaW9uRmxvdy5uYW1lIDogIiI7CiAgICAgICAgIHRo
aXMuX3JlZ2lvbkZsb3dOYW1lUm93LnZhbHVlID0gcmVnaW9uRmxvdyA/IHRoaXMuX3JlZ2lvbkZs
b3dGcmFnbWVudCA6IG51bGw7CiAgICAgICAgIHRoaXMuX3VwZGF0ZUZsb3dOYW1lc1NlY3Rpb25W
aXNpYmlsaXR5KCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgY29udGVudEZsb3coKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnRlbnRGbG93OwotICAgIH0sCisgICAgfQogCiAg
ICAgc2V0IGNvbnRlbnRGbG93KGNvbnRlbnRGbG93KQogICAgIHsKQEAgLTExOSwxMiArMTE2LDEy
IEBAIFdlYkluc3BlY3Rvci5Db21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgdGhpcy5fY29udGVudEZsb3dOYW1lTGFiZWxWYWx1ZS50ZXh0Q29udGVudCA9IGNv
bnRlbnRGbG93ID8gY29udGVudEZsb3cubmFtZSA6ICIiOwogICAgICAgICB0aGlzLl9jb250ZW50
Rmxvd05hbWVSb3cudmFsdWUgPSBjb250ZW50RmxvdyA/IHRoaXMuX2NvbnRlbnRGbG93RnJhZ21l
bnQgOiBudWxsOwogICAgICAgICB0aGlzLl91cGRhdGVGbG93TmFtZXNTZWN0aW9uVmlzaWJpbGl0
eSgpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGNvbnRhaW5lclJlZ2lvbnMoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnRhaW5lclJlZ2lvbnM7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICBzZXQgY29udGFpbmVyUmVnaW9ucyhyZWdpb25zKQogICAgIHsKQEAgLTE0MCw1MCArMTM3
LDUwIEBAIFdlYkluc3BlY3Rvci5Db21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgIHRoaXMuX2NvbnRhaW5lclJlZ2lvbnNEYXRhR3JpZC5hcHBlbmRDaGls
ZChuZXcgV2ViSW5zcGVjdG9yLkRPTVRyZWVEYXRhR3JpZE5vZGUocmVnaW9uTm9kZSkpOwogCiAg
ICAgICAgIHRoaXMuX2NvbnRhaW5lclJlZ2lvbnNGbG93U2VjdGlvbi5lbGVtZW50LmNsYXNzTGlz
dC5yZW1vdmUoImhpZGRlbiIpOwotICAgIH0sCisgICAgfQogCi0gICAgcmVmcmVzaDogZnVuY3Rp
b24oKQorICAgIHJlZnJlc2goKQogICAgIHsKICAgICAgICAgdGhpcy5fcHJvcGVydGllc1RleHRF
ZGl0b3Iuc3R5bGUgPSB0aGlzLm5vZGVTdHlsZXMuY29tcHV0ZWRTdHlsZTsKICAgICAgICAgdGhp
cy5fcmVmcmVzaEZsb3dEZXRhaWxzKHRoaXMubm9kZVN0eWxlcy5ub2RlKTsKLSAgICB9LAorICAg
IH0KIAogICAgIC8vIFByb3RlY3RlZAogCi0gICAgc2hvd246IGZ1bmN0aW9uKCkKKyAgICBzaG93
bigpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90
eXBlLnNob3duLmNhbGwodGhpcyk7CiAKICAgICAgICAgdGhpcy5fcHJvcGVydGllc1RleHRFZGl0
b3IudXBkYXRlTGF5b3V0KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB3aWR0aERpZENoYW5nZTog
ZnVuY3Rpb24oKQorICAgIHdpZHRoRGlkQ2hhbmdlKCkKICAgICB7CiAgICAgICAgIHRoaXMuX3By
b3BlcnRpZXNUZXh0RWRpdG9yLnVwZGF0ZUxheW91dCgpOwotICAgIH0sCisgICAgfQogCiAgICAg
Ly8gUHJpdmF0ZQogCi0gICAgX2NvbXB1dGVkU3R5bGVTaG93QWxsQ2hlY2tib3hWYWx1ZUNoYW5n
ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9jb21wdXRlZFN0eWxlU2hvd0FsbENoZWNrYm94VmFs
dWVDaGFuZ2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIGNoZWNrZWQgPSB0aGlzLl9jb21w
dXRlZFN0eWxlU2hvd0FsbENoZWNrYm94LmNoZWNrZWQ7CiAgICAgICAgIHRoaXMuX2NvbXB1dGVk
U3R5bGVTaG93QWxsU2V0dGluZy52YWx1ZSA9IGNoZWNrZWQ7CiAgICAgICAgIHRoaXMuX3Byb3Bl
cnRpZXNUZXh0RWRpdG9yLnNob3dzSW1wbGljaXRQcm9wZXJ0aWVzID0gY2hlY2tlZDsKLSAgICB9
LAorICAgIH0KIAotICAgIF91cGRhdGVGbG93TmFtZXNTZWN0aW9uVmlzaWJpbGl0eTogZnVuY3Rp
b24oKQorICAgIF91cGRhdGVGbG93TmFtZXNTZWN0aW9uVmlzaWJpbGl0eSgpCiAgICAgewogICAg
ICAgICB0aGlzLl9mbG93TmFtZXNTZWN0aW9uLmVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgiaGlk
ZGVuIiwgIXRoaXMuX2NvbnRlbnRGbG93ICYmICF0aGlzLl9yZWdpb25GbG93KTsKLSAgICB9LAor
ICAgIH0KIAotICAgIF9yZXNldEZsb3dEZXRhaWxzIDogZnVuY3Rpb24oKQorICAgIF9yZXNldEZs
b3dEZXRhaWxzICgpCiAgICAgewogICAgICAgICB0aGlzLnJlZ2lvbkZsb3cgPSBudWxsOwogICAg
ICAgICB0aGlzLmNvbnRlbnRGbG93ID0gbnVsbDsKICAgICAgICAgdGhpcy5jb250YWluZXJSZWdp
b25zID0gbnVsbDsKLSAgICB9LAorICAgIH0KIAotICAgIF9yZWZyZXNoRmxvd0RldGFpbHM6IGZ1
bmN0aW9uKGRvbU5vZGUpCisgICAgX3JlZnJlc2hGbG93RGV0YWlscyhkb21Ob2RlKQogICAgIHsK
ICAgICAgICAgdGhpcy5fcmVzZXRGbG93RGV0YWlscygpOwogICAgICAgICBpZiAoIWRvbU5vZGUp
CkBAIC0yMDMsMTcgKzIwMCwxNyBAQCBXZWJJbnNwZWN0b3IuQ29tcHV0ZWRTdHlsZURldGFpbHNQ
YW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICBXZWJJbnNwZWN0b3IuZG9t
VHJlZU1hbmFnZXIuZ2V0Tm9kZUNvbnRlbnRGbG93SW5mbyhkb21Ob2RlLCBjb250ZW50Rmxvd0lu
Zm9SZWFkeS5iaW5kKHRoaXMpKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9nb1RvUmVnaW9uRmxv
d0Fycm93V2FzQ2xpY2tlZDogZnVuY3Rpb24oKQorICAgIF9nb1RvUmVnaW9uRmxvd0Fycm93V2Fz
Q2xpY2tlZCgpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IucmVzb3VyY2VTaWRlYmFyUGFu
ZWwuc2hvd0NvbnRlbnRGbG93RE9NVHJlZSh0aGlzLl9yZWdpb25GbG93KTsKLSAgICB9LAorICAg
IH0KIAotICAgIF9nb1RvQ29udGVudEZsb3dBcnJvd1dhc0NsaWNrZWQ6IGZ1bmN0aW9uKCkKKyAg
ICBfZ29Ub0NvbnRlbnRGbG93QXJyb3dXYXNDbGlja2VkKCkKICAgICB7CiAgICAgICAgIFdlYklu
c3BlY3Rvci5yZXNvdXJjZVNpZGViYXJQYW5lbC5zaG93Q29udGVudEZsb3dET01UcmVlKHRoaXMu
X2NvbnRlbnRGbG93LCB0aGlzLm5vZGVTdHlsZXMubm9kZSwgdHJ1ZSk7CiAgICAgfQogfTsKIAot
V2ViSW5zcGVjdG9yLkNvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLl9fcHJvdG9f
XyA9IFdlYkluc3BlY3Rvci5TdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGU7CitXZWJJbnNwZWN0
b3IuQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbC5TdHlsZUNsYXNzTmFtZSA9ICJjb21wdXRlZCI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9E
YXNoYm9hcmRDb250YWluZXJWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvRGFzaGJvYXJkQ29udGFpbmVyVmlldy5qcwppbmRleCA5MzgxZjc4Li45YTRl
MmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9EYXNoYm9hcmRDb250YWluZXJWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0Rhc2hib2FyZENvbnRhaW5lclZpZXcuanMKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsOSAr
MjMsMTEgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJ
bnNwZWN0b3IuRGFzaGJvYXJkQ29udGFpbmVyVmlldyA9IGZ1bmN0aW9uKCkgewotICAgIC8vIEZJ
WE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQg
Y2FsbCBzdXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKK1dl
Ykluc3BlY3Rvci5EYXNoYm9hcmRDb250YWluZXJWaWV3ID0gY2xhc3MgRGFzaGJvYXJkQ29udGFp
bmVyVmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKK3sKKyAgICBjb25zdHJ1Y3Rvcigp
CisgICAgeworICAgICAgICBzdXBlcigpOwogCiAgICAgICAgIHRoaXMuX3Rvb2xiYXJJdGVtID0g
bmV3IFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uSXRlbSgiZGFzaGJvYXJkLWNvbnRhaW5lciIsICJn
cm91cCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQWN0aXZpdHkgVmlld2VyIikpOwogCkBAIC00
MiwzMiArNDQsMTQgQEAgV2ViSW5zcGVjdG9yLkRhc2hib2FyZENvbnRhaW5lclZpZXcgPSBmdW5j
dGlvbigpIHsKICAgICAgICAgdGhpcy5fY3VycmVudEluZGV4ID0gLTE7CiAKICAgICAgICAgdGhp
cy5fdXBkYXRlQWR2YW5jZUFycm93VmlzaWJpbGl0eSgpOwotfTsKLQotV2ViSW5zcGVjdG9yLkRh
c2hib2FyZENvbnRhaW5lclZpZXcuVmlzaWJsZURhc2hib2FyZFN0eWxlQ2xhc3NOYW1lID0gInZp
c2libGUiOwotV2ViSW5zcGVjdG9yLkRhc2hib2FyZENvbnRhaW5lclZpZXcuSW5hY3RpdmVTdHls
ZUNsYXNzTmFtZSA9ICJpbmFjdGl2ZSI7Ci0KLVdlYkluc3BlY3Rvci5EYXNoYm9hcmRDb250YWlu
ZXJWaWV3LkFkdmFuY2VEaXJlY3Rpb24gPSB7Ci0gICAgRm9yd2FyZDogImRhc2hib2FyZC1jb250
YWluZXItdmlldy1hZHZhbmNlLWRpcmVjdGlvbi1mb3J3YXJkIiwKLSAgICBCYWNrd2FyZDogImRh
c2hib2FyZC1jb250YWluZXItdmlldy1hZHZhbmNlLWRpcmVjdGlvbi1iYWNrd2FyZCIsCi0gICAg
Tm9uZTogImRhc2hib2FyZC1jb250YWluZXItdmlldy1hZHZhbmNlLWRpcmVjdGlvbi1ub25lIgot
fTsKLQotV2ViSW5zcGVjdG9yLkRhc2hib2FyZENvbnRhaW5lclZpZXcuRm9yd2FyZEluY29taW5n
RGFzaGJvYXJkU3R5bGVDbGFzc05hbWUgPSAic2xpZGUtaW4tZG93biI7Ci1XZWJJbnNwZWN0b3Iu
RGFzaGJvYXJkQ29udGFpbmVyVmlldy5CYWNrd2FyZEluY29taW5nRGFzaGJvYXJkU3R5bGVDbGFz
c05hbWUgPSAic2xpZGUtaW4tdXAiOwotV2ViSW5zcGVjdG9yLkRhc2hib2FyZENvbnRhaW5lclZp
ZXcuRm9yd2FyZE91dGdvaW5nRGFzaGJvYXJkU3R5bGVDbGFzc05hbWUgPSAic2xpZGUtb3V0LWRv
d24iOwotV2ViSW5zcGVjdG9yLkRhc2hib2FyZENvbnRhaW5lclZpZXcuQmFja3dhcmRPdXRnb2lu
Z0Rhc2hib2FyZFN0eWxlQ2xhc3NOYW1lID0gInNsaWRlLW91dC11cCI7Ci0KLVdlYkluc3BlY3Rv
ci5EYXNoYm9hcmRDb250YWluZXJWaWV3LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3Rvcjog
V2ViSW5zcGVjdG9yLkRhc2hib2FyZENvbnRhaW5lclZpZXcsCi0gICAgX19wcm90b19fOiBXZWJJ
bnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZSwKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAg
IGdldCB0b29sYmFySXRlbSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fdG9vbGJhckl0
ZW07Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgY3VycmVudERhc2hib2FyZFZpZXcoKQogICAg
IHsKQEAgLTc1LDkgKzU5LDkgQEAgV2ViSW5zcGVjdG9yLkRhc2hib2FyZENvbnRhaW5lclZpZXcu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAKICAgICAgICAgcmV0dXJu
IHRoaXMuX2Rhc2hib2FyZFN0YWNrW3RoaXMuX2N1cnJlbnRJbmRleF07Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBzaG93RGFzaGJvYXJkVmlld0ZvclJlcHJlc2VudGVkT2JqZWN0OiBmdW5jdGlvbihy
ZXByZXNlbnRlZE9iamVjdCkKKyAgICBzaG93RGFzaGJvYXJkVmlld0ZvclJlcHJlc2VudGVkT2Jq
ZWN0KHJlcHJlc2VudGVkT2JqZWN0KQogICAgIHsKICAgICAgICAgdmFyIGRhc2hib2FyZFZpZXcg
PSB0aGlzLl9kYXNoYm9hcmRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50ZWRPYmpl
Y3QpOwogICAgICAgICBpZiAoIWRhc2hib2FyZFZpZXcpCkBAIC04OSw5ICs3Myw5IEBAIFdlYklu
c3BlY3Rvci5EYXNoYm9hcmRDb250YWluZXJWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFy
IGluZGV4ID0gdGhpcy5fZGFzaGJvYXJkU3RhY2suaW5kZXhPZihkYXNoYm9hcmRWaWV3KTsKICAg
ICAgICAgdGhpcy5fc2hvd0Rhc2hib2FyZEF0SW5kZXgoaW5kZXgpOwogICAgICAgICByZXR1cm4g
ZGFzaGJvYXJkVmlldzsKLSAgICB9LAorICAgIH0KIAotICAgIGhpZGVEYXNoYm9hcmRWaWV3Rm9y
UmVwcmVzZW50ZWRPYmplY3Q6IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQorICAgIGhpZGVE
YXNoYm9hcmRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50ZWRPYmplY3QpCiAgICAg
ewogICAgICAgICB2YXIgb25seVJldHVybkV4aXN0aW5nVmlld3MgPSB0cnVlOwogICAgICAgICB2
YXIgZGFzaGJvYXJkVmlldyA9IHRoaXMuX2Rhc2hib2FyZFZpZXdGb3JSZXByZXNlbnRlZE9iamVj
dChyZXByZXNlbnRlZE9iamVjdCwgb25seVJldHVybkV4aXN0aW5nVmlld3MpOwpAQCAtMTAxLDkg
Kzg1LDkgQEAgV2ViSW5zcGVjdG9yLkRhc2hib2FyZENvbnRhaW5lclZpZXcucHJvdG90eXBlID0g
ewogCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2N1cnJlbnRJbmRleCA+IDApOwogICAg
ICAgICB0aGlzLl9zaG93RGFzaGJvYXJkQXRJbmRleCh0aGlzLl9jdXJyZW50SW5kZXggLSAxKTsK
LSAgICB9LAorICAgIH0KIAotICAgIGNsb3NlRGFzaGJvYXJkVmlld0ZvclJlcHJlc2VudGVkT2Jq
ZWN0OiBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkKKyAgICBjbG9zZURhc2hib2FyZFZpZXdG
b3JSZXByZXNlbnRlZE9iamVjdChyZXByZXNlbnRlZE9iamVjdCkKICAgICB7CiAgICAgICAgIHZh
ciBvbmx5UmV0dXJuRXhpc3RpbmdWaWV3cyA9IHRydWU7CiAgICAgICAgIHZhciBkYXNoYm9hcmRW
aWV3ID0gdGhpcy5fZGFzaGJvYXJkVmlld0ZvclJlcHJlc2VudGVkT2JqZWN0KHJlcHJlc2VudGVk
T2JqZWN0LCBvbmx5UmV0dXJuRXhpc3RpbmdWaWV3cyk7CkBAIC0xMTEsMzUgKzk1LDM1IEBAIFdl
Ykluc3BlY3Rvci5EYXNoYm9hcmRDb250YWluZXJWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIHJldHVybiBudWxsOwogCiAgICAgICAgIHRoaXMuX2Nsb3NlRGFzaGJvYXJkVmlldyhkYXNo
Ym9hcmRWaWV3KTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9hZHZh
bmNlRm9yd2FyZEFycm93Q2xpY2tlZDogZnVuY3Rpb24oKQorICAgIF9hZHZhbmNlRm9yd2FyZEFy
cm93Q2xpY2tlZCgpCiAgICAgewogICAgICAgICB0aGlzLl9zaG93RGFzaGJvYXJkQXRJbmRleCh0
aGlzLl9jdXJyZW50SW5kZXggKyAxKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9hZHZhbmNlQmFj
a3dhcmRBcnJvd0NsaWNrZWQ6IGZ1bmN0aW9uKCkKKyAgICBfYWR2YW5jZUJhY2t3YXJkQXJyb3dD
bGlja2VkKCkKICAgICB7CiAgICAgICAgIHRoaXMuX3Nob3dEYXNoYm9hcmRBdEluZGV4KHRoaXMu
X2N1cnJlbnRJbmRleCAtIDEpOwotICAgIH0sCisgICAgfQogCi0gICAgX2Rpc21pc3NBZHZhbmNl
QXJyb3dzOiBmdW5jdGlvbigpCisgICAgX2Rpc21pc3NBZHZhbmNlQXJyb3dzKCkKICAgICB7CiAg
ICAgICAgIHRoaXMuX2FkdmFuY2VGb3J3YXJkQXJyb3dFbGVtZW50LmNsYXNzTGlzdC5hZGQoV2Vi
SW5zcGVjdG9yLkRhc2hib2FyZENvbnRhaW5lclZpZXcuSW5hY3RpdmVTdHlsZUNsYXNzTmFtZSk7
CiAgICAgICAgIHRoaXMuX2FkdmFuY2VCYWNrd2FyZEFycm93RWxlbWVudC5jbGFzc0xpc3QuYWRk
KFdlYkluc3BlY3Rvci5EYXNoYm9hcmRDb250YWluZXJWaWV3LkluYWN0aXZlU3R5bGVDbGFzc05h
bWUpOwotICAgIH0sCisgICAgfQogCi0gICAgX3VwZGF0ZUFkdmFuY2VBcnJvd1Zpc2liaWxpdHk6
IGZ1bmN0aW9uKCkKKyAgICBfdXBkYXRlQWR2YW5jZUFycm93VmlzaWJpbGl0eSgpCiAgICAgewog
ICAgICAgICB2YXIgY2FuQWR2YW5jZUZvcndhcmQgPSB0aGlzLl9jdXJyZW50SW5kZXggPCB0aGlz
Ll9kYXNoYm9hcmRTdGFjay5sZW5ndGggLSAxOwogICAgICAgICB2YXIgY2FuQWR2YW5jZUJhY2t3
YXJkID0gdGhpcy5fY3VycmVudEluZGV4ID4gMDsKICAgICAgICAgdGhpcy5fYWR2YW5jZUZvcndh
cmRBcnJvd0VsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZShXZWJJbnNwZWN0b3IuRGFzaGJvYXJkQ29u
dGFpbmVyVmlldy5JbmFjdGl2ZVN0eWxlQ2xhc3NOYW1lLCAhY2FuQWR2YW5jZUZvcndhcmQpOwog
ICAgICAgICB0aGlzLl9hZHZhbmNlQmFja3dhcmRBcnJvd0VsZW1lbnQuY2xhc3NMaXN0LnRvZ2ds
ZShXZWJJbnNwZWN0b3IuRGFzaGJvYXJkQ29udGFpbmVyVmlldy5JbmFjdGl2ZVN0eWxlQ2xhc3NO
YW1lLCAhY2FuQWR2YW5jZUJhY2t3YXJkKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9kYXNoYm9h
cmRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3Q6IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0LCBv
bmx5UmV0dXJuRXhpc3RpbmdWaWV3cykKKyAgICBfZGFzaGJvYXJkVmlld0ZvclJlcHJlc2VudGVk
T2JqZWN0KHJlcHJlc2VudGVkT2JqZWN0LCBvbmx5UmV0dXJuRXhpc3RpbmdWaWV3cykKICAgICB7
CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlcHJlc2VudGVkT2JqZWN0KTsKIApAQCAtMTU0LDkg
KzEzOCw5IEBAIFdlYkluc3BlY3Rvci5EYXNoYm9hcmRDb250YWluZXJWaWV3LnByb3RvdHlwZSA9
IHsKIAogICAgICAgICB0cnkgewogICAgICAgICAgICAgLy8gTm8gZXhpc3RpbmcgY29udGVudCB2
aWV3IGZvdW5kLCBtYWtlIGEgbmV3IG9uZS4KLSAgICAgICAgICAgIGRhc2hib2FyZFZpZXcgPSBu
ZXcgV2ViSW5zcGVjdG9yLkRhc2hib2FyZFZpZXcocmVwcmVzZW50ZWRPYmplY3QpOworICAgICAg
ICAgICAgZGFzaGJvYXJkVmlldyA9IFdlYkluc3BlY3Rvci5EYXNoYm9hcmRWaWV3LmNyZWF0ZShy
ZXByZXNlbnRlZE9iamVjdCk7CiAgICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICAgIGNv
bnNvbGUuZXJyb3IoZSk7CisgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUsIGUuc3RhY2spOwog
ICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgIH0KIApAQCAtMTY0LDkgKzE0OCw5IEBA
IFdlYkluc3BlY3Rvci5EYXNoYm9hcmRDb250YWluZXJWaWV3LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgdGhpcy5fdG9vbGJhckl0ZW0uZWxlbWVudC5hcHBlbmRDaGlsZChkYXNoYm9hcmRWaWV3LmVs
ZW1lbnQpOwogCiAgICAgICAgIHJldHVybiBkYXNoYm9hcmRWaWV3OwotICAgIH0sCisgICAgfQog
Ci0gICAgX3Nob3dEYXNoYm9hcmRBdEluZGV4OiBmdW5jdGlvbihpbmRleCkKKyAgICBfc2hvd0Rh
c2hib2FyZEF0SW5kZXgoaW5kZXgpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChpbmRl
eCA+PSAwICYmIGluZGV4IDw9IHRoaXMuX2Rhc2hib2FyZFN0YWNrLmxlbmd0aCAtIDEpOwogCkBA
IC0xODUsOSArMTY5LDkgQEAgV2ViSW5zcGVjdG9yLkRhc2hib2FyZENvbnRhaW5lclZpZXcucHJv
dG90eXBlID0gewogCiAgICAgICAgIHRoaXMuX2N1cnJlbnRJbmRleCA9IGluZGV4OwogICAgICAg
ICB0aGlzLl9zaG93RGFzaGJvYXJkVmlldyh0aGlzLmN1cnJlbnREYXNoYm9hcmRWaWV3LCBpc0lu
aXRpYWxEYXNoYm9hcmQgPyBpbml0aWFsRGlyZWN0aW9uIDogYWR2YW5jZURpcmVjdGlvbik7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBfc2hvd0Rhc2hib2FyZFZpZXc6IGZ1bmN0aW9uKGRhc2hib2Fy
ZFZpZXcsIGFkdmFuY2VEaXJlY3Rpb24pCisgICAgX3Nob3dEYXNoYm9hcmRWaWV3KGRhc2hib2Fy
ZFZpZXcsIGFkdmFuY2VEaXJlY3Rpb24pCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChk
YXNoYm9hcmRWaWV3IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkRhc2hib2FyZFZpZXcpOwogCkBA
IC0yMDMsNyArMTg3LDYgQEAgV2ViSW5zcGVjdG9yLkRhc2hib2FyZENvbnRhaW5lclZpZXcucHJv
dG90eXBlID0gewogICAgICAgICB2YXIgY29udGFpbmVyID0gdGhpczsKICAgICAgICAgZGFzaGJv
YXJkVmlldy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkRhc2hib2FyZENvbnRh
aW5lclZpZXcuVmlzaWJsZURhc2hib2FyZFN0eWxlQ2xhc3NOYW1lKTsKIAotICAgICAgICBpZiAo
YW5pbWF0aW9uQ2xhc3MpIHsKICAgICAgICAgZnVuY3Rpb24gYW5pbWF0aW9uRW5kZWQoZXZlbnQp
IHsKICAgICAgICAgICAgIGlmIChldmVudC50YXJnZXQgIT09IGRhc2hib2FyZFZpZXcuZWxlbWVu
dCkKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0yMTIsMTQgKzE5NSwxNiBAQCBXZWJJbnNw
ZWN0b3IuRGFzaGJvYXJkQ29udGFpbmVyVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBk
YXNoYm9hcmRWaWV3LmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShhbmltYXRpb25DbGFzcyk7CiAg
ICAgICAgICAgICBjb250YWluZXIuX3VwZGF0ZUFkdmFuY2VBcnJvd1Zpc2liaWxpdHkoKTsKICAg
ICAgICAgfQorCisgICAgICAgIGlmIChhbmltYXRpb25DbGFzcykgewogICAgICAgICAgICAgZGFz
aGJvYXJkVmlldy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoYW5pbWF0aW9uQ2xhc3MpOwogICAgICAg
ICAgICAgZGFzaGJvYXJkVmlldy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIndlYmtpdEFuaW1h
dGlvbkVuZCIsIGFuaW1hdGlvbkVuZGVkKTsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBk
YXNoYm9hcmRWaWV3OwotICAgIH0sCisgICAgfQogCi0gICAgX2hpZGVEYXNoYm9hcmRWaWV3OiBm
dW5jdGlvbihkYXNoYm9hcmRWaWV3LCBhZHZhbmNlRGlyZWN0aW9uLCBjYWxsYmFjaykKKyAgICBf
aGlkZURhc2hib2FyZFZpZXcoZGFzaGJvYXJkVmlldywgYWR2YW5jZURpcmVjdGlvbiwgY2FsbGJh
Y2spCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChkYXNoYm9hcmRWaWV3IGluc3RhbmNl
b2YgV2ViSW5zcGVjdG9yLkRhc2hib2FyZFZpZXcpOwogICAgICAgICBjb25zb2xlLmFzc2VydCh0
aGlzLmN1cnJlbnREYXNoYm9hcmRWaWV3ID09PSBkYXNoYm9hcmRWaWV3KTsKQEAgLTIzNSw3ICsy
MjAsNiBAQCBXZWJJbnNwZWN0b3IuRGFzaGJvYXJkQ29udGFpbmVyVmlldy5wcm90b3R5cGUgPSB7
CiAKICAgICAgICAgdmFyIGNvbnRhaW5lciA9IHRoaXM7CiAKLSAgICAgICAgaWYgKGFuaW1hdGlv
bkNsYXNzKSB7CiAgICAgICAgIGZ1bmN0aW9uIGFuaW1hdGlvbkVuZGVkKGV2ZW50KSB7CiAgICAg
ICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ICE9PSBkYXNoYm9hcmRWaWV3LmVsZW1lbnQpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjQ4LDEzICsyMzIsMTUgQEAgV2ViSW5zcGVjdG9yLkRh
c2hib2FyZENvbnRhaW5lclZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgaWYgKHR5cGVv
ZiBjYWxsYmFjayA9PT0gImZ1bmN0aW9uIikKICAgICAgICAgICAgICAgICBjYWxsYmFjaygpOwog
ICAgICAgICB9CisKKyAgICAgICAgaWYgKGFuaW1hdGlvbkNsYXNzKSB7CiAgICAgICAgICAgICBk
YXNoYm9hcmRWaWV3LmVsZW1lbnQuY2xhc3NMaXN0LmFkZChhbmltYXRpb25DbGFzcyk7CiAgICAg
ICAgICAgICBkYXNoYm9hcmRWaWV3LmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0QW5p
bWF0aW9uRW5kIiwgYW5pbWF0aW9uRW5kZWQpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAg
IGRhc2hib2FyZFZpZXcuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5EYXNo
Ym9hcmRDb250YWluZXJWaWV3LlZpc2libGVEYXNoYm9hcmRTdHlsZUNsYXNzTmFtZSk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBfY2xvc2VEYXNoYm9hcmRWaWV3OiBmdW5jdGlvbihkYXNoYm9hcmRW
aWV3KQorICAgIF9jbG9zZURhc2hib2FyZFZpZXcoZGFzaGJvYXJkVmlldykKICAgICB7CiAgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KGRhc2hib2FyZFZpZXcgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
RGFzaGJvYXJkVmlldyk7CiAKQEAgLTI4MiwzICsyNjgsMTcgQEAgV2ViSW5zcGVjdG9yLkRhc2hi
b2FyZENvbnRhaW5lclZpZXcucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl91cGRhdGVBZHZh
bmNlQXJyb3dWaXNpYmlsaXR5KCk7CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLkRhc2hib2Fy
ZENvbnRhaW5lclZpZXcuVmlzaWJsZURhc2hib2FyZFN0eWxlQ2xhc3NOYW1lID0gInZpc2libGUi
OworV2ViSW5zcGVjdG9yLkRhc2hib2FyZENvbnRhaW5lclZpZXcuSW5hY3RpdmVTdHlsZUNsYXNz
TmFtZSA9ICJpbmFjdGl2ZSI7CisKK1dlYkluc3BlY3Rvci5EYXNoYm9hcmRDb250YWluZXJWaWV3
LkFkdmFuY2VEaXJlY3Rpb24gPSB7CisgICAgRm9yd2FyZDogU3ltYm9sKCJkYXNoYm9hcmQtY29u
dGFpbmVyLXZpZXctYWR2YW5jZS1kaXJlY3Rpb24tZm9yd2FyZCIpLAorICAgIEJhY2t3YXJkOiBT
eW1ib2woImRhc2hib2FyZC1jb250YWluZXItdmlldy1hZHZhbmNlLWRpcmVjdGlvbi1iYWNrd2Fy
ZCIpLAorICAgIE5vbmU6IFN5bWJvbCgiZGFzaGJvYXJkLWNvbnRhaW5lci12aWV3LWFkdmFuY2Ut
ZGlyZWN0aW9uLW5vbmUiKQorfTsKKworV2ViSW5zcGVjdG9yLkRhc2hib2FyZENvbnRhaW5lclZp
ZXcuRm9yd2FyZEluY29taW5nRGFzaGJvYXJkU3R5bGVDbGFzc05hbWUgPSAic2xpZGUtaW4tZG93
biI7CitXZWJJbnNwZWN0b3IuRGFzaGJvYXJkQ29udGFpbmVyVmlldy5CYWNrd2FyZEluY29taW5n
RGFzaGJvYXJkU3R5bGVDbGFzc05hbWUgPSAic2xpZGUtaW4tdXAiOworV2ViSW5zcGVjdG9yLkRh
c2hib2FyZENvbnRhaW5lclZpZXcuRm9yd2FyZE91dGdvaW5nRGFzaGJvYXJkU3R5bGVDbGFzc05h
bWUgPSAic2xpZGUtb3V0LWRvd24iOworV2ViSW5zcGVjdG9yLkRhc2hib2FyZENvbnRhaW5lclZp
ZXcuQmFja3dhcmRPdXRnb2luZ0Rhc2hib2FyZFN0eWxlQ2xhc3NOYW1lID0gInNsaWRlLW91dC11
cCI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9EYXNoYm9hcmRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvRGFzaGJvYXJkVmlldy5qcwppbmRleCBiNzM0NWMwLi42YWY5ZWE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXNoYm9hcmRWaWV3
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Rhc2hi
b2FyZFZpZXcuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
My0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjMsMTAgKzIzLDI1IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkRhc2hib2FyZFZpZXcgPSBmdW5jdGlv
bihyZXByZXNlbnRlZE9iamVjdCwgaWRlbnRpZmllcikKK1dlYkluc3BlY3Rvci5EYXNoYm9hcmRW
aWV3ID0gY2xhc3MgRGFzaGJvYXJkVmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKK3sK
KyAgICBjb25zdHJ1Y3RvcihyZXByZXNlbnRlZE9iamVjdCwgaWRlbnRpZmllcikKKyAgICB7Cisg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KGlkZW50aWZpZXIpOworCisgICAgICAgIHN1cGVyKCk7CisK
KyAgICAgICAgdGhpcy5fcmVwcmVzZW50ZWRPYmplY3QgPSByZXByZXNlbnRlZE9iamVjdDsKKwor
ICAgICAgICB0aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Cisg
ICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuRGFzaGJvYXJk
Vmlldy5TdHlsZUNsYXNzTmFtZSk7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFk
ZChpZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICAvLyBTdGF0aWMKKworICAgIHN0YXRpYyBjcmVh
dGUocmVwcmVzZW50ZWRPYmplY3QpCiAgICAgewotICAgIC8vIENyZWF0aW5nIGEgbmV3IERhc2hi
b2FyZFZpZXcgZGlyZWN0bHkgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiB0aGUgcHJvcGVyIHN1YmNs
YXNzLgotICAgIGlmICh0aGlzLmNvbnN0cnVjdG9yID09PSBXZWJJbnNwZWN0b3IuRGFzaGJvYXJk
VmlldykgewogICAgICAgICBjb25zb2xlLmFzc2VydChyZXByZXNlbnRlZE9iamVjdCk7CiAKICAg
ICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkRlZmF1
bHREYXNoYm9hcmQpCkBAIC00MSw1MCArNTYsMzIgQEAgV2ViSW5zcGVjdG9yLkRhc2hib2FyZFZp
ZXcgPSBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCwgaWRlbnRpZmllcikKICAgICAgICAgdGhy
b3cgIkNhbid0IG1ha2UgYSBEYXNoYm9hcmRWaWV3IGZvciBhbiB1bmtub3duIHJlcHJlc2VudGVk
T2JqZWN0LiI7CiAgICAgfQogCi0gICAgLy8gT3RoZXJ3aXNlLCBhIHN1YmNsYXNzIGlzIGNhbGxp
bmcgdGhlIGJhc2UgY29uc3RydWN0b3IuCi0gICAgY29uc29sZS5hc3NlcnQodGhpcy5jb25zdHJ1
Y3RvciAhPT0gV2ViSW5zcGVjdG9yLkRhc2hib2FyZFZpZXcgJiYgdGhpcyBpbnN0YW5jZW9mIFdl
Ykluc3BlY3Rvci5EYXNoYm9hcmRWaWV3KTsKLSAgICBjb25zb2xlLmFzc2VydChpZGVudGlmaWVy
KTsKLQotICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0
IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3Qu
Y2FsbCh0aGlzKTsKLQotICAgIHRoaXMuX3JlcHJlc2VudGVkT2JqZWN0ID0gcmVwcmVzZW50ZWRP
YmplY3Q7Ci0KLSAgICB0aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2
Iik7Ci0gICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5EYXNoYm9h
cmRWaWV3LlN0eWxlQ2xhc3NOYW1lKTsKLSAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQo
aWRlbnRpZmllcik7Ci19OwotCi1XZWJJbnNwZWN0b3IuRGFzaGJvYXJkVmlldy5TdHlsZUNsYXNz
TmFtZSA9ICJkYXNoYm9hcmQiOwotCi1XZWJJbnNwZWN0b3IuRGFzaGJvYXJkVmlldy5wcm90b3R5
cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5EYXNoYm9hcmRWaWV3LAotICAg
IF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGUsCi0KICAgICAvLyBQdWJs
aWMKIAogICAgIGdldCBlbGVtZW50KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9lbGVt
ZW50OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHJlcHJlc2VudGVkT2JqZWN0KCkKICAgICB7
CiAgICAgICAgIHJldHVybiB0aGlzLl9yZXByZXNlbnRlZE9iamVjdDsKLSAgICB9LAorICAgIH0K
IAotICAgIHNob3duOiBmdW5jdGlvbigpCisgICAgc2hvd24oKQogICAgIHsKICAgICAgICAgLy8g
SW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KLSAgICB9LAorICAgIH0KIAotICAgIGhpZGRlbjog
ZnVuY3Rpb24oKQorICAgIGhpZGRlbigpCiAgICAgewogICAgICAgICAvLyBJbXBsZW1lbnRlZCBi
eSBzdWJjbGFzc2VzLgotICAgIH0sCisgICAgfQogCi0gICAgY2xvc2VkOiBmdW5jdGlvbigpCisg
ICAgY2xvc2VkKCkKICAgICB7CiAgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMu
CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLkRhc2hib2FyZFZpZXcuU3R5bGVDbGFzc05hbWUg
PSAiZGFzaGJvYXJkIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0RlYnVnZ2VyRGFzaGJvYXJkVmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RlYnVnZ2VyRGFzaGJvYXJkVmlldy5qcwppbmRleCBk
ZjYwYzRmLi4zNTcwOTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9EZWJ1Z2dlckRhc2hib2FyZFZpZXcuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGVidWdnZXJEYXNoYm9hcmRWaWV3LmpzCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIz
LDkgKzIzLDExIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAot
V2ViSW5zcGVjdG9yLkRlYnVnZ2VyRGFzaGJvYXJkVmlldyA9IGZ1bmN0aW9uKHJlcHJlc2VudGVk
T2JqZWN0KQorV2ViSW5zcGVjdG9yLkRlYnVnZ2VyRGFzaGJvYXJkVmlldyA9IGNsYXNzIERlYnVn
Z2VyRGFzaGJvYXJkVmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5EYXNoYm9hcmRWaWV3CiB7Ci0g
ICAgV2ViSW5zcGVjdG9yLkRhc2hib2FyZFZpZXcuY2FsbCh0aGlzLCByZXByZXNlbnRlZE9iamVj
dCwgImRlYnVnZ2VyIik7CisgICAgY29uc3RydWN0b3IocmVwcmVzZW50ZWRPYmplY3QpCisgICAg
eworICAgICAgICBzdXBlcihyZXByZXNlbnRlZE9iamVjdCwgImRlYnVnZ2VyIik7CiAKICAgICAg
ICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuQWN0aXZlQ2FsbEZyYW1lRGlkQ2hhbmdlLCB0aGlz
Ll9yZWJ1aWxkTG9jYXRpb24sIHRoaXMpOwogCkBAIC01OCwyMiArNjAsMTEgQEAgV2ViSW5zcGVj
dG9yLkRlYnVnZ2VyRGFzaGJvYXJkVmlldyA9IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQog
ICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQobG9jYXRpb25FbGVtZW50KTsKIAogICAg
ICAgICB0aGlzLl9yZWJ1aWxkTG9jYXRpb24oKTsKLX07Ci0KLVdlYkluc3BlY3Rvci5EZWJ1Z2dl
ckRhc2hib2FyZFZpZXcuRnVuY3Rpb25JY29uU3R5bGVDbGFzc05hbWUgPSBXZWJJbnNwZWN0b3Iu
Q2FsbEZyYW1lVHJlZUVsZW1lbnQuRnVuY3Rpb25JY29uU3R5bGVDbGFzc05hbWU7Ci1XZWJJbnNw
ZWN0b3IuRGVidWdnZXJEYXNoYm9hcmRWaWV3LkV2ZW50TGlzdGVuZXJJY29uU3R5bGVDbGFzc05h
bWUgPSBXZWJJbnNwZWN0b3IuQ2FsbEZyYW1lVHJlZUVsZW1lbnQuRXZlbnRMaXN0ZW5lckljb25T
dHlsZUNsYXNzTmFtZTsKLQotV2ViSW5zcGVjdG9yLkRlYnVnZ2VyRGFzaGJvYXJkVmlldy5JY29u
U3R5bGVDbGFzc05hbWUgPSAiaWNvbiI7Ci1XZWJJbnNwZWN0b3IuRGVidWdnZXJEYXNoYm9hcmRW
aWV3Lk1lc3NhZ2VTdHlsZUNsYXNzTmFtZSA9ICJtZXNzYWdlIjsKLVdlYkluc3BlY3Rvci5EZWJ1
Z2dlckRhc2hib2FyZFZpZXcuRGl2aWRlclN0eWxlQ2xhc3NOYW1lID0gImRpdmlkZXIiOwotV2Vi
SW5zcGVjdG9yLkRlYnVnZ2VyRGFzaGJvYXJkVmlldy5Mb2NhdGlvblN0eWxlQ2xhc3NOYW1lID0g
ImxvY2F0aW9uIjsKLVdlYkluc3BlY3Rvci5EZWJ1Z2dlckRhc2hib2FyZFZpZXcuRnVuY3Rpb25O
YW1lU3R5bGVDbGFzc05hbWUgPSAiZnVuY3Rpb24tbmFtZSI7CisgICAgfQogCi1XZWJJbnNwZWN0
b3IuRGVidWdnZXJEYXNoYm9hcmRWaWV3LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3Rvcjog
V2ViSW5zcGVjdG9yLkRlYnVnZ2VyRGFzaGJvYXJkVmlldywKLSAgICBfX3Byb3RvX186IFdlYklu
c3BlY3Rvci5EYXNoYm9hcmRWaWV3LnByb3RvdHlwZSwKKyAgICAvLyBQcml2YXRlCiAKLSAgICBf
cmVidWlsZExvY2F0aW9uOiBmdW5jdGlvbigpCisgICAgX3JlYnVpbGRMb2NhdGlvbigpCiAgICAg
ewogICAgICAgICBpZiAoIVdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIuYWN0aXZlQ2FsbEZy
YW1lKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTA3LDEwICs5OCwxOSBAQCBXZWJJbnNwZWN0
b3IuRGVidWdnZXJEYXNoYm9hcmRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIHNob3Vs
ZFByZXZlbnRMaW5rRmxvYXQgPSB0cnVlOwogICAgICAgICB2YXIgbGlua0VsZW1lbnQgPSBXZWJJ
bnNwZWN0b3IuY3JlYXRlU291cmNlQ29kZUxvY2F0aW9uTGluayhzb3VyY2VDb2RlTG9jYXRpb24s
IHNob3VsZFByZXZlbnRMaW5rRmxvYXQpOwogICAgICAgICB0aGlzLl9sb2NhdGlvbkVsZW1lbnQu
YXBwZW5kQ2hpbGQobGlua0VsZW1lbnQpOwotICAgIH0sCisgICAgfQogCi0gICAgX3Jlc3VtZUJ1
dHRvbkNsaWNrZWQ6IGZ1bmN0aW9uKCkKKyAgICBfcmVzdW1lQnV0dG9uQ2xpY2tlZCgpCiAgICAg
ewogICAgICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLnJlc3VtZSgpOwogICAgIH0K
IH07CisKK1dlYkluc3BlY3Rvci5EZWJ1Z2dlckRhc2hib2FyZFZpZXcuRnVuY3Rpb25JY29uU3R5
bGVDbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuQ2FsbEZyYW1lVHJlZUVsZW1lbnQuRnVuY3Rpb25J
Y29uU3R5bGVDbGFzc05hbWU7CitXZWJJbnNwZWN0b3IuRGVidWdnZXJEYXNoYm9hcmRWaWV3LkV2
ZW50TGlzdGVuZXJJY29uU3R5bGVDbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuQ2FsbEZyYW1lVHJl
ZUVsZW1lbnQuRXZlbnRMaXN0ZW5lckljb25TdHlsZUNsYXNzTmFtZTsKKworV2ViSW5zcGVjdG9y
LkRlYnVnZ2VyRGFzaGJvYXJkVmlldy5JY29uU3R5bGVDbGFzc05hbWUgPSAiaWNvbiI7CitXZWJJ
bnNwZWN0b3IuRGVidWdnZXJEYXNoYm9hcmRWaWV3Lk1lc3NhZ2VTdHlsZUNsYXNzTmFtZSA9ICJt
ZXNzYWdlIjsKK1dlYkluc3BlY3Rvci5EZWJ1Z2dlckRhc2hib2FyZFZpZXcuRGl2aWRlclN0eWxl
Q2xhc3NOYW1lID0gImRpdmlkZXIiOworV2ViSW5zcGVjdG9yLkRlYnVnZ2VyRGFzaGJvYXJkVmll
dy5Mb2NhdGlvblN0eWxlQ2xhc3NOYW1lID0gImxvY2F0aW9uIjsKK1dlYkluc3BlY3Rvci5EZWJ1
Z2dlckRhc2hib2FyZFZpZXcuRnVuY3Rpb25OYW1lU3R5bGVDbGFzc05hbWUgPSAiZnVuY3Rpb24t
bmFtZSI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9EZWZhdWx0RGFzaGJvYXJkVmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0RlZmF1bHREYXNoYm9hcmRWaWV3LmpzCmluZGV4IGU2MjQyOTMuLjAx
MjlkYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0RlZmF1bHREYXNoYm9hcmRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0RlZmF1bHREYXNoYm9hcmRWaWV3LmpzCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDkgKzIz
LDExIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJv
YXJkVmlldyA9IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQorV2ViSW5zcGVjdG9yLkRlZmF1
bHREYXNoYm9hcmRWaWV3ID0gY2xhc3MgRGVmYXVsdERhc2hib2FyZFZpZXcgZXh0ZW5kcyBXZWJJ
bnNwZWN0b3IuRGFzaGJvYXJkVmlldwogewotICAgIFdlYkluc3BlY3Rvci5EYXNoYm9hcmRWaWV3
LmNhbGwodGhpcywgcmVwcmVzZW50ZWRPYmplY3QsICJkZWZhdWx0Iik7CisgICAgY29uc3RydWN0
b3IocmVwcmVzZW50ZWRPYmplY3QpCisgICAgeworICAgICAgICBzdXBlcihyZXByZXNlbnRlZE9i
amVjdCwgImRlZmF1bHQiKTsKIAogICAgICAgICByZXByZXNlbnRlZE9iamVjdC5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJvYXJkLkV2ZW50LkRhdGFEaWRDaGFuZ2Us
IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUuYmluZChudWxsLCB0aGlzLl91cGRhdGVEaXNw
bGF5LmJpbmQodGhpcykpKTsKIApAQCAtNTgsMTcgKzYwLDExIEBAIFdlYkluc3BlY3Rvci5EZWZh
dWx0RGFzaGJvYXJkVmlldyA9IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQogCiAgICAgICAg
IGZvciAodmFyIG5hbWUgaW4gdGhpcy5faXRlbXMpCiAgICAgICAgICAgICB0aGlzLl9hcHBlbmRF
bGVtZW50Rm9yTmFtZWRJdGVtKG5hbWUpOwotfTsKLQotV2ViSW5zcGVjdG9yLkRlZmF1bHREYXNo
Ym9hcmRWaWV3LkVuYWJsZWRJdGVtU3R5bGVDbGFzc05hbWUgPSAiZW5hYmxlZCI7Ci0KLVdlYklu
c3BlY3Rvci5EZWZhdWx0RGFzaGJvYXJkVmlldy5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0
b3I6IFdlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJvYXJkVmlldywKLSAgICBfX3Byb3RvX186IFdl
Ykluc3BlY3Rvci5EYXNoYm9hcmRWaWV3LnByb3RvdHlwZSwKKyAgICB9CiAgICAgCiAgICAgLy8g
UHJpdmF0ZQogCi0gICAgX3VwZGF0ZURpc3BsYXk6IGZ1bmN0aW9uKCkKKyAgICBfdXBkYXRlRGlz
cGxheSgpCiAgICAgewogICAgICAgICB2YXIgZGFzaGJvYXJkID0gdGhpcy5yZXByZXNlbnRlZE9i
amVjdDsKIApAQCAtODYsMTQgKzgyLDE0IEBAIFdlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJvYXJk
Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBzaXplSXRlbSA9IHRoaXMuX2l0ZW1zLnJl
c291cmNlc1NpemU7CiAgICAgICAgIHNpemVJdGVtLnRleHQgPSBkYXNoYm9hcmQucmVzb3VyY2Vz
U2l6ZSA/IE51bWJlci5ieXRlc1RvU3RyaW5nKGRhc2hib2FyZC5yZXNvdXJjZXNTaXplLCBmYWxz
ZSkgOiAiXHUyMDE0IjsKICAgICAgICAgdGhpcy5fc2V0SXRlbUVuYWJsZWQoc2l6ZUl0ZW0sIGRh
c2hib2FyZC5yZXNvdXJjZXNTaXplID4gMCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZm9ybWF0
UG9zc2libGVMYXJnZU51bWJlcjogZnVuY3Rpb24obnVtYmVyKQorICAgIF9mb3JtYXRQb3NzaWJs
ZUxhcmdlTnVtYmVyKG51bWJlcikKICAgICB7CiAgICAgICAgIHJldHVybiBudW1iZXIgPiA5OTkg
PyBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIjk5OSsiKSA6IG51bWJlcjsKLSAgICB9LAorICAgIH0K
IAotICAgIF9hcHBlbmRFbGVtZW50Rm9yTmFtZWRJdGVtOiBmdW5jdGlvbihuYW1lKQorICAgIF9h
cHBlbmRFbGVtZW50Rm9yTmFtZWRJdGVtKG5hbWUpCiAgICAgewogICAgICAgICB2YXIgaXRlbSA9
IHRoaXMuX2l0ZW1zW25hbWVdOwogCkBAIC0xMDcsNyArMTAzLDcgQEAgV2ViSW5zcGVjdG9yLkRl
ZmF1bHREYXNoYm9hcmRWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgICAgICBPYmplY3QuZGVmaW5l
UHJvcGVydHkoaXRlbSwgInRleHQiLAogICAgICAgICB7Ci0gICAgICAgICAgICBzZXQ6IGZ1bmN0
aW9uKG5ld1RleHQpCisgICAgICAgICAgICBzZXQobmV3VGV4dCkKICAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICAgICBpZiAobmV3VGV4dCA9PT0gaXRlbS5vdXRsZXQudGV4dENvbnRlbnQpCiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTExOCw5ICsxMTQsOSBAQCBXZWJJbnNwZWN0
b3IuRGVmYXVsdERhc2hib2FyZFZpZXcucHJvdG90eXBlID0gewogICAgICAgICBpdGVtLmNvbnRh
aW5lci5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgICAg
ICAgICB0aGlzLl9pdGVtV2FzQ2xpY2tlZChuYW1lKTsKICAgICAgICAgfS5iaW5kKHRoaXMpKTsK
LSAgICB9LAorICAgIH0KIAotICAgIF9pdGVtV2FzQ2xpY2tlZDogZnVuY3Rpb24obmFtZSkKKyAg
ICBfaXRlbVdhc0NsaWNrZWQobmFtZSkKICAgICB7CiAgICAgICAgIHZhciBpdGVtID0gdGhpcy5f
aXRlbXNbbmFtZV07CiAgICAgICAgIGlmICghaXRlbS5jb250YWluZXIuY2xhc3NMaXN0LmNvbnRh
aW5zKFdlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJvYXJkVmlldy5FbmFibGVkSXRlbVN0eWxlQ2xh
c3NOYW1lKSkKQEAgLTEyOCwyNSArMTI0LDI1IEBAIFdlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJv
YXJkVmlldy5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKGl0ZW0uaGFuZGxlcikKICAgICAg
ICAgICAgIGl0ZW0uaGFuZGxlci5jYWxsKHRoaXMpOwotICAgIH0sCisgICAgfQogCi0gICAgX3Jl
c291cmNlc1dhc0NsaWNrZWQ6IGZ1bmN0aW9uKCkKKyAgICBfcmVzb3VyY2VzV2FzQ2xpY2tlZCgp
CiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IubmF2aWdhdGlvblNpZGViYXIuc2VsZWN0ZWRT
aWRlYmFyUGFuZWwgPSBXZWJJbnNwZWN0b3IucmVzb3VyY2VTaWRlYmFyUGFuZWw7CiAgICAgICAg
IFdlYkluc3BlY3Rvci5uYXZpZ2F0aW9uU2lkZWJhci5jb2xsYXBzZWQgPSBmYWxzZTsKLSAgICB9
LAorICAgIH0KIAotICAgIF9uZXR3b3JrSXRlbVdhc0NsaWNrZWQ6IGZ1bmN0aW9uKCkKKyAgICBf
bmV0d29ya0l0ZW1XYXNDbGlja2VkKCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5uYXZp
Z2F0aW9uU2lkZWJhci5zZWxlY3RlZFNpZGViYXJQYW5lbCA9IFdlYkluc3BlY3Rvci50aW1lbGlu
ZVNpZGViYXJQYW5lbDsKLSAgICB9LAorICAgIH0KIAotICAgIF9jb25zb2xlSXRlbVdhc0NsaWNr
ZWQ6IGZ1bmN0aW9uKHNjb3BlKQorICAgIF9jb25zb2xlSXRlbVdhc0NsaWNrZWQoc2NvcGUpCiAg
ICAgewogICAgICAgICBXZWJJbnNwZWN0b3Iuc2hvd0NvbnNvbGVWaWV3KHNjb3BlKTsKLSAgICB9
LAorICAgIH0KIAotICAgIF9zZXRDb25zb2xlSXRlbVZhbHVlOiBmdW5jdGlvbihpdGVtTmFtZSwg
bmV3VmFsdWUpCisgICAgX3NldENvbnNvbGVJdGVtVmFsdWUoaXRlbU5hbWUsIG5ld1ZhbHVlKQog
ICAgIHsKICAgICAgICAgdmFyIGlWYXJOYW1lID0gIl8iICsgaXRlbU5hbWU7CiAgICAgICAgIHZh
ciBwcmV2aW91c1ZhbHVlID0gdGhpc1tpVmFyTmFtZV07CkBAIC0xNzgsOSArMTc0LDkgQEAgV2Vi
SW5zcGVjdG9yLkRlZmF1bHREYXNoYm9hcmRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
IGNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRBbmltYXRpb25FbmQiLCBhbmltYXRp
b25FbmRlZCk7CiAKICAgICAgICAgY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoInB1bHNpbmciKTsK
LSAgICB9LAorICAgIH0KIAotICAgIF9zZXRJdGVtRW5hYmxlZDogZnVuY3Rpb24oaXRlbSwgZW5h
YmxlZCkKKyAgICBfc2V0SXRlbUVuYWJsZWQoaXRlbSwgZW5hYmxlZCkKICAgICB7CiAgICAgICAg
IGlmIChlbmFibGVkKQogICAgICAgICAgICAgaXRlbS5jb250YWluZXIuY2xhc3NMaXN0LmFkZChX
ZWJJbnNwZWN0b3IuRGVmYXVsdERhc2hib2FyZFZpZXcuRW5hYmxlZEl0ZW1TdHlsZUNsYXNzTmFt
ZSk7CkBAIC0xODgsMyArMTg0LDUgQEAgV2ViSW5zcGVjdG9yLkRlZmF1bHREYXNoYm9hcmRWaWV3
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGl0ZW0uY29udGFpbmVyLmNsYXNzTGlzdC5yZW1v
dmUoV2ViSW5zcGVjdG9yLkRlZmF1bHREYXNoYm9hcmRWaWV3LkVuYWJsZWRJdGVtU3R5bGVDbGFz
c05hbWUpOwogICAgIH0KIH07CisKK1dlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJvYXJkVmlldy5F
bmFibGVkSXRlbVN0eWxlQ2xhc3NOYW1lID0gImVuYWJsZWQiOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRmlsdGVyQmFyQnV0dG9uLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRmlsdGVyQmFyQnV0dG9u
LmpzCmluZGV4IGIwOWNlNmUuLmY4NmMzMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ZpbHRlckJhckJ1dHRvbi5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9GaWx0ZXJCYXJCdXR0b24uanMKQEAg
LTIzLDM4ICsyMywzNCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLVdlYkluc3BlY3Rvci5GaWx0ZXJCYXJCdXR0b24gPSBmdW5jdGlvbihpZGVudGlmaWVyLCBm
aWx0ZXJGdW5jdGlvbiwgYWN0aXZhdGVkQnlEZWZhdWx0LCBkZWZhdWx0VG9vbFRpcCwgYWN0aXZh
dGVkVG9vbFRpcCwgaW1hZ2UsIGltYWdlV2lkdGgsIGltYWdlSGVpZ2h0LCBzdXBwcmVzc0VtYm9z
cywgcm9sZSkKK1dlYkluc3BlY3Rvci5GaWx0ZXJCYXJCdXR0b24gPSBjbGFzcyBGaWx0ZXJCYXJC
dXR0b24gZXh0ZW5kcyBXZWJJbnNwZWN0b3IuQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbQog
ewotICAgIFdlYkluc3BlY3Rvci5BY3RpdmF0ZUJ1dHRvbk5hdmlnYXRpb25JdGVtLmNhbGwodGhp
cywgaWRlbnRpZmllciwgZGVmYXVsdFRvb2xUaXAsIGFjdGl2YXRlZFRvb2xUaXAsIGltYWdlLCBp
bWFnZVdpZHRoLCBpbWFnZUhlaWdodCwgc3VwcHJlc3NFbWJvc3MsIHJvbGUpOworICAgIGNvbnN0
cnVjdG9yKGlkZW50aWZpZXIsIGZpbHRlckZ1bmN0aW9uLCBhY3RpdmF0ZWRCeURlZmF1bHQsIGRl
ZmF1bHRUb29sVGlwLCBhY3RpdmF0ZWRUb29sVGlwLCBpbWFnZSwgaW1hZ2VXaWR0aCwgaW1hZ2VI
ZWlnaHQsIHN1cHByZXNzRW1ib3NzLCByb2xlKQorICAgIHsKKyAgICAgICAgc3VwZXIoaWRlbnRp
ZmllciwgZGVmYXVsdFRvb2xUaXAsIGFjdGl2YXRlZFRvb2xUaXAsIGltYWdlLCBpbWFnZVdpZHRo
LCBpbWFnZUhlaWdodCwgc3VwcHJlc3NFbWJvc3MsIHJvbGUpOwogCiAgICAgICAgIHRoaXMuX2Zp
bHRlckZ1bmN0aW9uID0gZmlsdGVyRnVuY3Rpb247CiAKICAgICAgICAgdGhpcy5fYWN0aXZhdGVk
U2V0dGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuU2V0dGluZyhpZGVudGlmaWVyLCBhY3RpdmF0ZWRC
eURlZmF1bHQpOwogCiAgICAgICAgIHRoaXMuYWN0aXZhdGVkID0gISF0aGlzLl9hY3RpdmF0ZWRT
ZXR0aW5nLnZhbHVlOwotfTsKLQotV2ViSW5zcGVjdG9yLkZpbHRlckJhckJ1dHRvbi5TdHlsZUNs
YXNzTmFtZSA9ICJmaWx0ZXItYmFyLWJ1dHRvbiI7Ci0KLVdlYkluc3BlY3Rvci5GaWx0ZXJCYXJC
dXR0b24uRXZlbnQgPSB7Ci0gICAgQWN0aXZhdGVkU3RhdGVUb2dnbGVkOiAiZmlsdGVyLWJhci1h
Y3RpdmF0ZWQtc3RhdGUtdG9nZ2xlZCIKLX07Ci0KLVdlYkluc3BlY3Rvci5GaWx0ZXJCYXJCdXR0
b24ucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuRmlsdGVyQmFy
QnV0dG9uLAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLkFjdGl2YXRlQnV0dG9uTmF2aWdh
dGlvbkl0ZW0ucHJvdG90eXBlLAorICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGZp
bHRlckZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9maWx0ZXJGdW5jdGlv
bjsKLSAgICB9LAorICAgIH0KIAotICAgIHRvZ2dsZTogZnVuY3Rpb24oKQorICAgIHRvZ2dsZSgp
CiAgICAgewogICAgICAgICB0aGlzLmFjdGl2YXRlZCA9ICF0aGlzLmFjdGl2YXRlZDsKICAgICAg
ICAgdGhpcy5fYWN0aXZhdGVkU2V0dGluZy52YWx1ZSA9IHRoaXMuYWN0aXZhdGVkOwogICAgICAg
ICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRmlsdGVyQmFyQnV0
dG9uLkV2ZW50LkFjdGl2YXRlZFN0YXRlVG9nZ2xlZCk7CiAgICAgfQogfTsKKworV2ViSW5zcGVj
dG9yLkZpbHRlckJhckJ1dHRvbi5FdmVudCA9IHsKKyAgICBBY3RpdmF0ZWRTdGF0ZVRvZ2dsZWQ6
ICJmaWx0ZXItYmFyLWFjdGl2YXRlZC1zdGF0ZS10b2dnbGVkIgorfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL01ldHJpY3NTdHlsZURldGFp
bHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL01l
dHJpY3NTdHlsZURldGFpbHNQYW5lbC5qcwppbmRleCBkMjhhODMyLi44ODk1NDMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9NZXRyaWNzU3R5
bGVEZXRhaWxzUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvTWV0cmljc1N0eWxlRGV0YWlsc1BhbmVsLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw5ICsyMywxMSBAQAogICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5NZXRy
aWNzU3R5bGVEZXRhaWxzUGFuZWwgPSBmdW5jdGlvbigpCitXZWJJbnNwZWN0b3IuTWV0cmljc1N0
eWxlRGV0YWlsc1BhbmVsID0gY2xhc3MgTWV0cmljc1N0eWxlRGV0YWlsc1BhbmVsIGV4dGVuZHMg
V2ViSW5zcGVjdG9yLlN0eWxlRGV0YWlsc1BhbmVsCiB7Ci0gICAgV2ViSW5zcGVjdG9yLlN0eWxl
RGV0YWlsc1BhbmVsLmNhbGwodGhpcywgV2ViSW5zcGVjdG9yLk1ldHJpY3NTdHlsZURldGFpbHNQ
YW5lbC5TdHlsZUNsYXNzTmFtZSwgIm1ldHJpY3MiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk1l
dHJpY3MiKSk7CisgICAgY29uc3RydWN0b3IoKQorICAgIHsKKyAgICAgICAgc3VwZXIoIm1ldHJp
Y3MiLCAibWV0cmljcyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiTWV0cmljcyIpKTsKIAogICAg
ICAgICB0aGlzLl9ib3hNb2RlbERpYWdyYW1Sb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkJveE1vZGVs
RGV0YWlsc1NlY3Rpb25Sb3c7CiAKQEAgLTMzLDE5ICszNSwxMiBAQCBXZWJJbnNwZWN0b3IuTWV0
cmljc1N0eWxlRGV0YWlsc1BhbmVsID0gZnVuY3Rpb24oKQogICAgICAgICB2YXIgYm94TW9kZWxT
ZWN0aW9uID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbigic3R5bGUtYm94LW1vZGVs
IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJCb3ggTW9kZWwiKSwgW2JveE1vZGVsR3JvdXBdKTsK
IAogICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoYm94TW9kZWxTZWN0aW9uLmVsZW1l
bnQpOwotfTsKLQotV2ViSW5zcGVjdG9yLk1ldHJpY3NTdHlsZURldGFpbHNQYW5lbC5TdHlsZUNs
YXNzTmFtZSA9ICJtZXRyaWNzIjsKLQotV2ViSW5zcGVjdG9yLk1ldHJpY3NTdHlsZURldGFpbHNQ
YW5lbC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5NZXRyaWNz
U3R5bGVEZXRhaWxzUGFuZWwsCisgICAgfQogCiAgICAgLy8gUHVibGljCiAKLSAgICByZWZyZXNo
OiBmdW5jdGlvbigpCisgICAgcmVmcmVzaCgpCiAgICAgewogICAgICAgICB0aGlzLl9ib3hNb2Rl
bERpYWdyYW1Sb3cubm9kZVN0eWxlcyA9IHRoaXMubm9kZVN0eWxlczsKICAgICB9CiB9OwotCi1X
ZWJJbnNwZWN0b3IuTWV0cmljc1N0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fX3Byb3RvX18g
PSBXZWJJbnNwZWN0b3IuU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0UHJldmlld1Zp
ZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9PYmplY3RQ
cmV2aWV3Vmlldy5qcwppbmRleCBhMWNiYjkyLi5lODEyMjlkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9PYmplY3RQcmV2aWV3Vmlldy5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9PYmplY3RQcmV2
aWV3Vmlldy5qcwpAQCAtMjMsMTMgKzIzLDE0IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLk9iamVjdFByZXZpZXdWaWV3ID0gZnVuY3Rp
b24ocHJldmlldywgbW9kZSkKK1dlYkluc3BlY3Rvci5PYmplY3RQcmV2aWV3VmlldyA9IGNsYXNz
IE9iamVjdFByZXZpZXdWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAoreworICAgIGNv
bnN0cnVjdG9yKHByZXZpZXcsIG1vZGUpCiAgICAgewotICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRo
aXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgot
ICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKLQogICAgICAgICBjb25zb2xl
LmFzc2VydChwcmV2aWV3IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLk9iamVjdFByZXZpZXcpOwog
CisgICAgICAgIHN1cGVyKCk7CisKICAgICAgICAgdGhpcy5fcHJldmlldyA9IHByZXZpZXc7CiAg
ICAgICAgIHRoaXMuX21vZGUgPSBtb2RlIHx8IFdlYkluc3BlY3Rvci5PYmplY3RQcmV2aWV3Vmll
dy5Nb2RlLkZ1bGw7CiAKQEAgLTUzLDUwICs1NCw0MSBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0UHJl
dmlld1ZpZXcgPSBmdW5jdGlvbihwcmV2aWV3LCBtb2RlKQogCiAgICAgICAgIGlmICh0aGlzLl9s
b3NzbGVzcykKICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgibG9zc2xl
c3MiKTsKLX07Ci0KLVdlYkluc3BlY3Rvci5PYmplY3RQcmV2aWV3Vmlldy5Nb2RlID0gewotICAg
IEJyaWVmOiBTeW1ib2woIm9iamVjdC1wcmV2aWV3LWJyaWVmIiksCi0gICAgRnVsbDogU3ltYm9s
KCJvYmplY3QtcHJldmlldy1mdWxsIiksCi19OwotCi1XZWJJbnNwZWN0b3IuT2JqZWN0UHJldmll
d1ZpZXcucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuT2JqZWN0
UHJldmlld1ZpZXcsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlw
ZSwKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBwcmV2aWV3KCkKICAgICB7CiAg
ICAgICAgIHJldHVybiB0aGlzLl9wcmV2aWV3OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGVs
ZW1lbnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBnZXQgbW9kZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fbW9kZTsK
LSAgICB9LAorICAgIH0KIAogICAgIGdldCBsb3NzbGVzcygpCiAgICAgewogICAgICAgICByZXR1
cm4gdGhpcy5fbG9zc2xlc3M7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzaG93VGl0bGUoKQogICAg
IHsKICAgICAgICAgdGhpcy5fdGl0bGVFbGVtZW50LmhpZGRlbiA9IGZhbHNlOwogICAgICAgICB0
aGlzLl9wcmV2aWV3RWxlbWVudC5oaWRkZW4gPSB0cnVlOwotICAgIH0sCisgICAgfQogCiAgICAg
c2hvd1ByZXZpZXcoKQogICAgIHsKICAgICAgICAgdGhpcy5fdGl0bGVFbGVtZW50LmhpZGRlbiA9
IHRydWU7CiAgICAgICAgIHRoaXMuX3ByZXZpZXdFbGVtZW50LmhpZGRlbiA9IGZhbHNlOwotICAg
IH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCkBAIC0xMDcsMTIgKzk5LDEyIEBAIFdlYklu
c3BlY3Rvci5PYmplY3RQcmV2aWV3Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlz
Ll90aXRsZUVsZW1lbnQuYXBwZW5kQ2hpbGQoV2ViSW5zcGVjdG9yLkZvcm1hdHRlZFZhbHVlLmNy
ZWF0ZUVsZW1lbnRGb3JPYmplY3RQcmV2aWV3KHRoaXMuX3ByZXZpZXcpKTsKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgdGhpcy5fdGl0bGVFbGVtZW50LnRleHRDb250ZW50ID0gdGhpcy5fcHJl
dmlldy5kZXNjcmlwdGlvbiB8fCAiIjsKLSAgICB9LAorICAgIH0KIAogICAgIF9udW1iZXJPZlBy
b3BlcnRpZXNUb1Nob3dJbk1vZGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX21vZGUg
PT09IFdlYkluc3BlY3Rvci5PYmplY3RQcmV2aWV3Vmlldy5Nb2RlLkJyaWVmID8gMyA6IEluZmlu
aXR5OwotICAgIH0sCisgICAgfQogCiAgICAgX2FwcGVuZFByZXZpZXcoZWxlbWVudCwgcHJldmll
dykKICAgICB7CkBAIC0xMzksNyArMTMxLDcgQEAgV2ViSW5zcGVjdG9yLk9iamVjdFByZXZpZXdW
aWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fYXBwZW5kUHJv
cGVydHlQcmV2aWV3cyhib2R5RWxlbWVudCwgcHJldmlldyk7CiAgICAgICAgIH0KICAgICAgICAg
cmV0dXJuIHRoaXMuX2FwcGVuZFZhbHVlUHJldmlldyhib2R5RWxlbWVudCwgcHJldmlldyk7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBfYXBwZW5kRW50cnlQcmV2aWV3cyhlbGVtZW50LCBwcmV2aWV3
KQogICAgIHsKQEAgLTE3Miw3ICsxNjQsNyBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0UHJldmlld1Zp
ZXcucHJvdG90eXBlID0gewogICAgICAgICBlbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNy
ZWF0ZVRleHROb2RlKGlzSXRlcmF0b3IgPyAiXSIgOiAifSIpKTsKIAogICAgICAgICByZXR1cm4g
bG9zc2xlc3M7Ci0gICAgfSwKKyAgICB9CiAKICAgICBfYXBwZW5kUHJvcGVydHlQcmV2aWV3cyhl
bGVtZW50LCBwcmV2aWV3KQogICAgIHsKQEAgLTIyNCw3ICsyMTYsNyBAQCBXZWJJbnNwZWN0b3Iu
T2JqZWN0UHJldmlld1ZpZXcucHJvdG90eXBlID0gewogICAgICAgICBlbGVtZW50LmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGlzQXJyYXkgPyAiXSIgOiAifSIpKTsKIAogICAg
ICAgICByZXR1cm4gcHJldmlldy5sb3NzbGVzczsKLSAgICB9LAorICAgIH0KIAogICAgIF9hcHBl
bmRWYWx1ZVByZXZpZXcoZWxlbWVudCwgcHJldmlldykKICAgICB7CkBAIC0yMzIsMyArMjI0LDgg
QEAgV2ViSW5zcGVjdG9yLk9iamVjdFByZXZpZXdWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLk9iamVjdFByZXZpZXdWaWV3
Lk1vZGUgPSB7CisgICAgQnJpZWY6IFN5bWJvbCgib2JqZWN0LXByZXZpZXctYnJpZWYiKSwKKyAg
ICBGdWxsOiBTeW1ib2woIm9iamVjdC1wcmV2aWV3LWZ1bGwiKSwKK307CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9PYmplY3RUcmVlVmlldy5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL09iamVjdFRyZWVW
aWV3LmpzCmluZGV4IGIzYjYxM2EuLjRhZmJlZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL09iamVjdFRyZWVWaWV3LmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL09iamVjdFRyZWVWaWV3LmpzCkBA
IC0yMywxMCArMjMsMTEgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi1XZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVZpZXcgPSBmdW5jdGlvbihvYmplY3QsIG1vZGUs
IHByb3BlcnR5UGF0aCwgZm9yY2VFeHBhbmRpbmcpCitXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVZp
ZXcgPSBjbGFzcyBPYmplY3RUcmVlVmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsK
LSAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJj
bGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KLSAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwo
dGhpcyk7CisgICAgY29uc3RydWN0b3Iob2JqZWN0LCBtb2RlLCBwcm9wZXJ0eVBhdGgsIGZvcmNl
RXhwYW5kaW5nKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAogICAgICAgICBjb25zb2xlLmFz
c2VydChvYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0KTsKICAgICAg
ICAgY29uc29sZS5hc3NlcnQoIXByb3BlcnR5UGF0aCB8fCBwcm9wZXJ0eVBhdGggaW5zdGFuY2Vv
ZiBXZWJJbnNwZWN0b3IuUHJvcGVydHlQYXRoKTsKQEAgLTY4LDIyICs2OSwxOSBAQCBXZWJJbnNw
ZWN0b3IuT2JqZWN0VHJlZVZpZXcgPSBmdW5jdGlvbihvYmplY3QsIG1vZGUsIHByb3BlcnR5UGF0
aCwgZm9yY2VFeHBhbmRpbgogICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMu
X291dGxpbmVFbGVtZW50KTsKIAogICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBlZGl0YWJsZSBP
YmplY3RUcmVlcy4KLX07CisgICAgfQogCi1XZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVZpZXcuZW1w
dHlNZXNzYWdlRWxlbWVudCA9IGZ1bmN0aW9uKG1lc3NhZ2UpCisgICAgLy8gU3RhdGljCisKKyAg
ICBzdGF0aWMgY3JlYXRlRW1wdHlNZXNzYWdlRWxlbWVudChtZXNzYWdlKQogICAgIHsKICAgICAg
ICAgdmFyIGVtcHR5TWVzc2FnZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KTsKICAgICAgICAgZW1wdHlNZXNzYWdlRWxlbWVudC5jbGFzc05hbWUgPSAiZW1wdHktbWVzc2Fn
ZSI7CiAgICAgICAgIGVtcHR5TWVzc2FnZUVsZW1lbnQudGV4dENvbnRlbnQgPSBtZXNzYWdlOwog
ICAgICAgICByZXR1cm4gZW1wdHlNZXNzYWdlRWxlbWVudDsKLX07Ci0KLVdlYkluc3BlY3Rvci5P
YmplY3RUcmVlVmlldy5Nb2RlID0gewotICAgIFByb3BlcnRpZXM6IFN5bWJvbCgib2JqZWN0LXRy
ZWUtcHJvcGVydGllcyIpLAotICAgIEFQSTogU3ltYm9sKCJvYmplY3QtdHJlZS1hcGkiKSwKLX07
CisgICAgfQogCi1XZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVZpZXcuQ29tcGFyZVByb3BlcnR5RGVz
Y3JpcHRvcnMgPSBmdW5jdGlvbihwcm9wZXJ0eUEsIHByb3BlcnR5QikKKyAgICBzdGF0aWMgY29t
cGFyZVByb3BlcnR5RGVzY3JpcHRvcnMocHJvcGVydHlBLCBwcm9wZXJ0eUIpCiAgICAgewogICAg
ICAgICB2YXIgYSA9IHByb3BlcnR5QS5uYW1lOwogICAgICAgICB2YXIgYiA9IHByb3BlcnR5Qi5u
YW1lOwpAQCAtMTM0LDMzICsxMzIsMjkgQEAgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVWaWV3LkNv
bXBhcmVQcm9wZXJ0eURlc2NyaXB0b3JzID0gZnVuY3Rpb24ocHJvcGVydHlBLCBwcm8KICAgICAg
ICAgICAgIGIgPSBiLnN1YnN0cmluZyhjaHVua2IubGVuZ3RoKTsKICAgICAgICAgfQogICAgICAg
ICByZXR1cm4gZGlmZjsKLX07Ci0KLVdlYkluc3BlY3Rvci5PYmplY3RUcmVlVmlldy5wcm90b3R5
cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5PYmplY3RUcmVlVmlldywKLSAg
ICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlLAorICAgIH0KIAogICAg
IC8vIFB1YmxpYwogCiAgICAgZ2V0IG9iamVjdCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5fb2JqZWN0OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGVsZW1lbnQoKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgdHJl
ZU91dGxpbmUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX291dGxpbmU7Ci0gICAgfSwK
KyAgICB9CiAKICAgICBnZXQgZXhwYW5kZWQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X2V4cGFuZGVkOwotICAgIH0sCisgICAgfQogCiAgICAgZXhwYW5kKCkKICAgICB7CkBAIC0xNzYs
NyArMTcwLDcgQEAgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVWaWV3LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgdGhpcy5fdHJhY2tXZWFrRW50cmllcygpOwogCiAgICAgICAgIHRoaXMudXBkYXRlKCk7
Ci0gICAgfSwKKyAgICB9CiAKICAgICBjb2xsYXBzZSgpCiAgICAgewpAQCAtMTkwLDE0ICsxODQs
MTQgQEAgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIHRoaXMuX3ByZXZpZXdWaWV3LnNob3dQcmV2aWV3KCk7CiAKICAgICAgICAgdGhpcy5fdW50
cmFja1dlYWtFbnRyaWVzKCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzaG93T25seVByb3BlcnRp
ZXMoKQogICAgIHsKICAgICAgICAgdGhpcy5faW5Db25zb2xlID0gZmFsc2U7CiAKICAgICAgICAg
dGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJwcm9wZXJ0aWVzLW9ubHkiKTsKLSAgICB9LAor
ICAgIH0KIAogICAgIGFwcGVuZFRpdGxlU3VmZml4KHN1ZmZpeEVsZW1lbnQpCiAgICAgewpAQCAt
MjA1LDcgKzE5OSw3IEBAIFdlYkluc3BlY3Rvci5PYmplY3RUcmVlVmlldy5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICB0aGlzLl9wcmV2aWV3Vmlldy5lbGVtZW50LmFwcGVuZENoaWxkKHN1ZmZp
eEVsZW1lbnQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB0aGlzLl90aXRsZUVsZW1lbnQu
YXBwZW5kQ2hpbGQoc3VmZml4RWxlbWVudCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBhcHBlbmRF
eHRyYVByb3BlcnR5RGVzY3JpcHRvcihwcm9wZXJ0eURlc2NyaXB0b3IpCiAgICAgewpAQCAtMjEz
LDcgKzIwNyw3IEBAIFdlYkluc3BlY3Rvci5PYmplY3RUcmVlVmlldy5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICB0aGlzLl9leHRyYVByb3BlcnRpZXMgPSBbXTsKIAogICAgICAgICB0aGlzLl9l
eHRyYVByb3BlcnRpZXMucHVzaChwcm9wZXJ0eURlc2NyaXB0b3IpOwotICAgIH0sCisgICAgfQog
CiAgICAgLy8gUHJvdGVjdGVkCiAKQEAgLTIyMyw3ICsyMTcsNyBAQCBXZWJJbnNwZWN0b3IuT2Jq
ZWN0VHJlZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fb2JqZWN0LmdldENv
bGxlY3Rpb25FbnRyaWVzKDAsIDEwMCwgdGhpcy5fdXBkYXRlQ2hpbGRyZW4uYmluZCh0aGlzLCB0
aGlzLl91cGRhdGVFbnRyaWVzKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHRoaXMuX29i
amVjdC5nZXREaXNwbGF5YWJsZVByb3BlcnR5RGVzY3JpcHRvcnModGhpcy5fdXBkYXRlQ2hpbGRy
ZW4uYmluZCh0aGlzLCB0aGlzLl91cGRhdGVQcm9wZXJ0aWVzKSk7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICAvLyBQcml2YXRlCiAKQEAgLTIzMiwxMyArMjI2LDEzIEBAIFdlYkluc3BlY3Rvci5PYmpl
Y3RUcmVlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX291dGxpbmUucmVtb3ZlQ2hp
bGRyZW4oKTsKIAogICAgICAgICBpZiAoIWxpc3QpIHsKLSAgICAgICAgICAgIHZhciBlcnJvck1l
c3NhZ2VFbGVtZW50ID0gV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVWaWV3LmVtcHR5TWVzc2FnZUVs
ZW1lbnQoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb3VsZCBub3QgZmV0Y2ggcHJvcGVydGllcy4g
T2JqZWN0IG1heSBubyBsb25nZXIgZXhpc3QuIikpOworICAgICAgICAgICAgdmFyIGVycm9yTWVz
c2FnZUVsZW1lbnQgPSBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVZpZXcuY3JlYXRlRW1wdHlNZXNz
YWdlRWxlbWVudChXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvdWxkIG5vdCBmZXRjaCBwcm9wZXJ0
aWVzLiBPYmplY3QgbWF5IG5vIGxvbmdlciBleGlzdC4iKSk7CiAgICAgICAgICAgICB0aGlzLl9v
dXRsaW5lLmFwcGVuZENoaWxkKG5ldyBXZWJJbnNwZWN0b3IuVHJlZUVsZW1lbnQoZXJyb3JNZXNz
YWdlRWxlbWVudCwgbnVsbCwgZmFsc2UpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCiAgICAgICAgIGhhbmRsZXIuY2FsbCh0aGlzLCBsaXN0LCB0aGlzLl9wcm9wZXJ0eVBhdGgp
OwotICAgIH0sCisgICAgfQogCiAgICAgX3VwZGF0ZUVudHJpZXMoZW50cmllcywgcHJvcGVydHlQ
YXRoKQogICAgIHsKQEAgLTI1MSw3ICsyNDUsNyBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVZp
ZXcucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgaWYgKCF0aGlzLl9vdXRsaW5l
LmNoaWxkcmVuLmxlbmd0aCkgewotICAgICAgICAgICAgdmFyIGVtcHR5TWVzc2FnZUVsZW1lbnQg
PSBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVZpZXcuZW1wdHlNZXNzYWdlRWxlbWVudChXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIk5vIEVudHJpZXMuIikpOworICAgICAgICAgICAgdmFyIGVtcHR5TWVz
c2FnZUVsZW1lbnQgPSBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVZpZXcuY3JlYXRlRW1wdHlNZXNz
YWdlRWxlbWVudChXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk5vIEVudHJpZXMuIikpOwogICAgICAg
ICAgICAgdGhpcy5fb3V0bGluZS5hcHBlbmRDaGlsZChuZXcgV2ViSW5zcGVjdG9yLlRyZWVFbGVt
ZW50KGVtcHR5TWVzc2FnZUVsZW1lbnQsIG51bGwsIGZhbHNlKSk7CiAgICAgICAgIH0KIApAQCAt
MjYwLDE0ICsyNTQsMTQgQEAgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVWaWV3LnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgIGlmIChwcm9wZXJ0eURlc2NyaXB0b3IpCiAgICAgICAgICAgICAgICAg
dGhpcy5fb3V0bGluZS5hcHBlbmRDaGlsZChuZXcgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVQcm9w
ZXJ0eVRyZWVFbGVtZW50KHByb3BlcnR5RGVzY3JpcHRvciwgcHJvcGVydHlQYXRoLCB0aGlzLl9t
b2RlKSk7CiAgICAgICAgIH0uYmluZCh0aGlzKSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBfdXBk
YXRlUHJvcGVydGllcyhwcm9wZXJ0aWVzLCBwcm9wZXJ0eVBhdGgpCiAgICAgewogICAgICAgICBp
ZiAodGhpcy5fZXh0cmFQcm9wZXJ0aWVzKQogICAgICAgICAgICAgcHJvcGVydGllcyA9IHByb3Bl
cnRpZXMuY29uY2F0KHRoaXMuX2V4dHJhUHJvcGVydGllcyk7CiAKLSAgICAgICAgcHJvcGVydGll
cy5zb3J0KFdlYkluc3BlY3Rvci5PYmplY3RUcmVlVmlldy5Db21wYXJlUHJvcGVydHlEZXNjcmlw
dG9ycyk7CisgICAgICAgIHByb3BlcnRpZXMuc29ydChXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVZp
ZXcuY29tcGFyZVByb3BlcnR5RGVzY3JpcHRvcnMpOwogCiAgICAgICAgIHZhciBpc0FycmF5ID0g
dGhpcy5fb2JqZWN0LmlzQXJyYXkoKTsKICAgICAgICAgdmFyIGlzUHJvcGVydHlNb2RlID0gdGhp
cy5fbW9kZSA9PT0gV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVWaWV3Lk1vZGUuUHJvcGVydGllczsK
QEAgLTI4MywxMCArMjc3LDEwIEBAIFdlYkluc3BlY3Rvci5PYmplY3RUcmVlVmlldy5wcm90b3R5
cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIXRoaXMuX291dGxpbmUuY2hpbGRyZW4u
bGVuZ3RoKSB7Ci0gICAgICAgICAgICB2YXIgZW1wdHlNZXNzYWdlRWxlbWVudCA9IFdlYkluc3Bl
Y3Rvci5PYmplY3RUcmVlVmlldy5lbXB0eU1lc3NhZ2VFbGVtZW50KFdlYkluc3BlY3Rvci5VSVN0
cmluZygiTm8gUHJvcGVydGllcy4iKSk7CisgICAgICAgICAgICB2YXIgZW1wdHlNZXNzYWdlRWxl
bWVudCA9IFdlYkluc3BlY3Rvci5PYmplY3RUcmVlVmlldy5jcmVhdGVFbXB0eU1lc3NhZ2VFbGVt
ZW50KFdlYkluc3BlY3Rvci5VSVN0cmluZygiTm8gUHJvcGVydGllcy4iKSk7CiAgICAgICAgICAg
ICB0aGlzLl9vdXRsaW5lLmFwcGVuZENoaWxkKG5ldyBXZWJJbnNwZWN0b3IuVHJlZUVsZW1lbnQo
ZW1wdHlNZXNzYWdlRWxlbWVudCwgbnVsbCwgZmFsc2UpKTsKICAgICAgICAgfQotICAgIH0sCisg
ICAgfQogCiAgICAgX2hhbmRsZVByZXZpZXdPclRpdGxlRWxlbWVudENsaWNrKGV2ZW50KQogICAg
IHsKQEAgLTI5OSw3ICsyOTMsNyBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVZpZXcucHJvdG90
eXBlID0gewogICAgICAgICAgICAgdGhpcy5jb2xsYXBzZSgpOwogCiAgICAgICAgIGV2ZW50LnN0
b3BQcm9wYWdhdGlvbigpOwotICAgIH0sCisgICAgfQogCiAgICAgX3RyYWNrV2Vha0VudHJpZXMo
KQogICAgIHsKQEAgLTMxNiw3ICszMTAsNyBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVZpZXcu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmxvZ01hbmFnZXIuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuTG9nTWFuYWdlci5FdmVudC5BY3RpdmVMb2dDbGVhcmVk
LCB0aGlzLl91bnRyYWNrV2Vha0VudHJpZXMsIHRoaXMpOwogICAgICAgICAgICAgV2ViSW5zcGVj
dG9yLmxvZ01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuTG9nTWFuYWdlci5F
dmVudC5TZXNzaW9uU3RhcnRlZCwgdGhpcy5fdW50cmFja1dlYWtFbnRyaWVzLCB0aGlzKTsKICAg
ICAgICAgfQotICAgIH0sCisgICAgfQogCiAgICAgX3VudHJhY2tXZWFrRW50cmllcygpCiAgICAg
ewpAQCAtMzM5LDUgKzMzMywxMCBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVZpZXcucHJvdG90
eXBlID0gewogICAgICAgICAvLyBGSVhNRTogVGhpcyBvbmx5IHRyaWVzIHRvIHJlbGVhc2Ugd2Vh
ayBlbnRyaWVzIGlmIHRoaXMgb2JqZWN0IHdhcyBhIFdlYWtNYXAuCiAgICAgICAgIC8vIElmIHRo
ZXJlIHdhcyBhIFdlYWtNYXAgZXhwYW5kZWQgaW4gYSBzdWItb2JqZWN0LCB3ZSB3aWxsIG5ldmVy
IHJlbGVhc2UgdGhvc2UgdmFsdWVzLgogICAgICAgICAvLyBTaG91bGQgd2UgYXR0ZW1wdCB3YWxr
aW5nIHRoZSBlbnRpcmUgdHJlZSBhbmQgcmVsZWFzZSB3ZWFrIGNvbGxlY3Rpb25zPwotICAgIH0s
CisgICAgfQorfTsKKworV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVWaWV3Lk1vZGUgPSB7CisgICAg
UHJvcGVydGllczogU3ltYm9sKCJvYmplY3QtdHJlZS1wcm9wZXJ0aWVzIiksCisgICAgQVBJOiBT
eW1ib2woIm9iamVjdC10cmVlLWFwaSIpLAogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1F1aWNrQ29uc29sZS5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1F1aWNrQ29uc29sZS5qcwppbmRleCA3ODE1
MjQyLi5jYWFhYzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9RdWlja0NvbnNvbGUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvUXVpY2tDb25zb2xlLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywxMCArMjMsMTEgQEAKICAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuUXVpY2tD
b25zb2xlID0gZnVuY3Rpb24oZWxlbWVudCkKK1dlYkluc3BlY3Rvci5RdWlja0NvbnNvbGUgPSBj
bGFzcyBRdWlja0NvbnNvbGUgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgLy8g
RklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFu
ZCBjYWxsIHN1cGVyKCkuCi0gICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwor
ICAgIGNvbnN0cnVjdG9yKGVsZW1lbnQpCisgICAgeworICAgICAgICBzdXBlcigpOwogCiAgICAg
ICAgIHRoaXMuX3RvZ2dsZU9yRm9jdXNLZXlib2FyZFNob3J0Y3V0ID0gbmV3IFdlYkluc3BlY3Rv
ci5LZXlib2FyZFNob3J0Y3V0KG51bGwsIFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lktl
eS5Fc2NhcGUsIHRoaXMuX3RvZ2dsZU9yRm9jdXMuYmluZCh0aGlzKSk7CiAKQEAgLTM4LDcgKzM5
LDcgQEAgV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZSA9IGZ1bmN0aW9uKGVsZW1lbnQpCiAgICAg
ICAgIHRoaXMuX2ZyYW1lSWRlbnRpZmllclRvRXhlY3V0aW9uQ29udGV4dFBhdGhDb21wb25lbnRN
YXAgPSB7fTsKIAogICAgICAgICB0aGlzLl9lbGVtZW50ID0gZWxlbWVudCB8fCBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2Vi
SW5zcGVjdG9yLlF1aWNrQ29uc29sZS5TdHlsZUNsYXNzTmFtZSk7CisgICAgICAgIHRoaXMuX2Vs
ZW1lbnQuY2xhc3NMaXN0LmFkZCgicXVpY2stY29uc29sZSIpOwogCiAgICAgICAgIHRoaXMucHJv
bXB0ID0gbmV3IFdlYkluc3BlY3Rvci5Db25zb2xlUHJvbXB0KG51bGwsICJ0ZXh0L2phdmFzY3Jp
cHQiKTsKICAgICAgICAgdGhpcy5wcm9tcHQuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3Bl
Y3Rvci5RdWlja0NvbnNvbGUuVGV4dFByb21wdFN0eWxlQ2xhc3NOYW1lKTsKQEAgLTc2LDUyICs3
NywzMyBAQCBXZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xlID0gZnVuY3Rpb24oZWxlbWVudCkKICAg
ICAgICAgfQogCiAgICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRM
aXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LkFjdGl2ZUNhbGxGcmFt
ZURpZENoYW5nZSwgdGhpcy5fZGVidWdnZXJBY3RpdmVDYWxsRnJhbWVEaWRDaGFuZ2UsIHRoaXMp
OwotfTsKLQotV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZS5TdHlsZUNsYXNzTmFtZSA9ICJxdWlj
ay1jb25zb2xlIjsKLVdlYkluc3BlY3Rvci5RdWlja0NvbnNvbGUuU2hvd2luZ0xvZ0NsYXNzTmFt
ZSA9ICJzaG93aW5nLWxvZyI7Ci1XZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xlLk5hdmlnYXRpb25C
YXJDb250YWluZXJTdHlsZUNsYXNzTmFtZSA9ICJuYXZpZ2F0aW9uLWJhci1jb250YWluZXIiOwot
V2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZS5OYXZpZ2F0aW9uQmFyU3BhY2VyU3R5bGVDbGFzc05h
bWUgPSAibmF2aWdhdGlvbi1iYXItc3BhY2VyIjsKLVdlYkluc3BlY3Rvci5RdWlja0NvbnNvbGUu
VGV4dFByb21wdFN0eWxlQ2xhc3NOYW1lID0gInRleHQtcHJvbXB0IjsKLQotV2ViSW5zcGVjdG9y
LlF1aWNrQ29uc29sZS5Ub29sYmFyU2luZ2xlTGluZUhlaWdodCA9IDIxOwotV2ViSW5zcGVjdG9y
LlF1aWNrQ29uc29sZS5Ub29sYmFyUHJvbXB0UGFkZGluZyA9IDQ7Ci1XZWJJbnNwZWN0b3IuUXVp
Y2tDb25zb2xlLlRvb2xiYXJUb3BCb3JkZXIgPSAxOwotCi1XZWJJbnNwZWN0b3IuUXVpY2tDb25z
b2xlLk1haW5GcmFtZUNvbnRleHRFeGVjdXRpb25JZGVudGlmaWVyID0gdW5kZWZpbmVkOwotCi1X
ZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xlLkV2ZW50ID0gewotICAgIERpZFJlc2l6ZTogInF1aWNr
LWNvbnNvbGUtZGlkLXJlc2l6ZSIKLX07Ci0KLVdlYkluc3BlY3Rvci5RdWlja0NvbnNvbGUucHJv
dG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xlLAor
ICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGVsZW1lbnQoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgbmF2aWdh
dGlvbkJhcigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fbmF2aWdhdGlvbkJhcjsKLSAg
ICB9LAorICAgIH0KIAogICAgIGdldCBleGVjdXRpb25Db250ZXh0SWRlbnRpZmllcigpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRFeGVjdXRpb25Db250ZXh0UGF0aENvbXBv
bmVudC5fZXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1
cGRhdGVMYXlvdXQ6IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGVMYXlvdXQoKQogICAgIHsKICAgICAg
ICAgLy8gQSBoYXJkIG1heGltdW0gc2l6ZSBvZiAzMyUgb2YgdGhlIHdpbmRvdy4KLSAgICAgICAg
Y29uc3QgbWF4aW11bUFsbG93ZWRIZWlnaHQgPSBNYXRoLnJvdW5kKHdpbmRvdy5pbm5lckhlaWdo
dCAqIDAuMzMpOworICAgICAgICB2YXIgbWF4aW11bUFsbG93ZWRIZWlnaHQgPSBNYXRoLnJvdW5k
KHdpbmRvdy5pbm5lckhlaWdodCAqIDAuMzMpOwogICAgICAgICB0aGlzLnByb21wdC5lbGVtZW50
LnN0eWxlLm1heEhlaWdodCA9IG1heGltdW1BbGxvd2VkSGVpZ2h0ICsgInB4IjsKLSAgICB9LAor
ICAgIH0KIAotICAgIGNvbnNvbGVMb2dWaXNpYmlsaXR5Q2hhbmdlZDogZnVuY3Rpb24odmlzaWJs
ZSkKKyAgICBjb25zb2xlTG9nVmlzaWJpbGl0eUNoYW5nZWQodmlzaWJsZSkKICAgICB7CiAgICAg
ICAgIGlmICh2aXNpYmxlKQogICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQo
V2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZS5TaG93aW5nTG9nQ2xhc3NOYW1lKTsKQEAgLTEyOSwx
MSArMTExLDExIEBAIFdlYkluc3BlY3Rvci5RdWlja0NvbnNvbGUucHJvdG90eXBlID0gewogICAg
ICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLlF1aWNr
Q29uc29sZS5TaG93aW5nTG9nQ2xhc3NOYW1lKTsKIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xlLkV2ZW50LkRpZFJlc2l6ZSk7
Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfZXhlY3V0aW9uQ29udGV4
dFBhdGhDb21wb25lbnRzVG9EaXNwbGF5OiBmdW5jdGlvbigpCisgICAgX2V4ZWN1dGlvbkNvbnRl
eHRQYXRoQ29tcG9uZW50c1RvRGlzcGxheSgpCiAgICAgewogICAgICAgICAvLyBJZiB3ZSBhcmUg
aW4gdGhlIGRlYnVnZ2VyIHRoZSBjb25zb2xlIHdpbGwgdXNlIHRoZSBhY3RpdmUgY2FsbCBmcmFt
ZSwgZG9uJ3Qgc2hvdyB0aGUgc2VsZWN0b3IuCiAgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuZGVi
dWdnZXJNYW5hZ2VyLmFjdGl2ZUNhbGxGcmFtZSkKQEAgLTE0NCw5ICsxMjYsOSBAQCBXZWJJbnNw
ZWN0b3IuUXVpY2tDb25zb2xlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiBbXTsK
IAogICAgICAgICByZXR1cm4gW3RoaXMuX3NlbGVjdGVkRXhlY3V0aW9uQ29udGV4dFBhdGhDb21w
b25lbnRdOwotICAgIH0sCisgICAgfQogCi0gICAgX3JlYnVpbGRFeGVjdXRpb25Db250ZXh0UGF0
aENvbXBvbmVudHM6IGZ1bmN0aW9uKCkKKyAgICBfcmVidWlsZEV4ZWN1dGlvbkNvbnRleHRQYXRo
Q29tcG9uZW50cygpCiAgICAgewogICAgICAgICB2YXIgY29tcG9uZW50cyA9IHRoaXMuX2V4ZWN1
dGlvbkNvbnRleHRQYXRoQ29tcG9uZW50c1RvRGlzcGxheSgpOwogICAgICAgICB2YXIgaXNFbXB0
eSA9ICFjb21wb25lbnRzLmxlbmd0aDsKQEAgLTE1NSw5ICsxMzcsOSBAQCBXZWJJbnNwZWN0b3Iu
UXVpY2tDb25zb2xlLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlzLl9leGVjdXRpb25Db250
ZXh0U2VsZWN0b3JJdGVtLmhpZGRlbiA9IGlzRW1wdHk7CiAgICAgICAgIHRoaXMuX2V4ZWN1dGlv
bkNvbnRleHRTZWxlY3RvckRpdmlkZXIuaGlkZGVuID0gaXNFbXB0eTsKLSAgICB9LAorICAgIH0K
IAotICAgIF9mcmFtZVBhZ2VFeGVjdXRpb25Db250ZXh0c0NoYW5nZWQ6IGZ1bmN0aW9uKGV2ZW50
KQorICAgIF9mcmFtZVBhZ2VFeGVjdXRpb25Db250ZXh0c0NoYW5nZWQoZXZlbnQpCiAgICAgewog
ICAgICAgICB2YXIgZnJhbWUgPSBldmVudC50YXJnZXQ7CiAKQEAgLTE3MCw5ICsxNTIsOSBAQCBX
ZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMu
X3NlbGVjdGVkRXhlY3V0aW9uQ29udGV4dFBhdGhDb21wb25lbnQgPSBuZXdFeGVjdXRpb25Db250
ZXh0UGF0aENvbXBvbmVudDsKICAgICAgICAgICAgIHRoaXMuX3JlYnVpbGRFeGVjdXRpb25Db250
ZXh0UGF0aENvbXBvbmVudHMoKTsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCi0gICAgX2Zy
YW1lRXhlY3V0aW9uQ29udGV4dHNDbGVhcmVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfZnJhbWVF
eGVjdXRpb25Db250ZXh0c0NsZWFyZWQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgZnJhbWUg
PSBldmVudC50YXJnZXQ7CiAKQEAgLTE4NywyNyArMTY5LDI3IEBAIFdlYkluc3BlY3Rvci5RdWlj
a0NvbnNvbGUucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5fcmVtb3Zl
RXhlY3V0aW9uQ29udGV4dFBhdGhDb21wb25lbnRGb3JGcmFtZShmcmFtZSk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfZnJhbWVBZGRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2ZyYW1lQWRkZWQo
ZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgZnJhbWUgPSBldmVudC5kYXRhLmZyYW1lOwogICAg
ICAgICB0aGlzLl9pbnNlcnRFeGVjdXRpb25Db250ZXh0UGF0aENvbXBvbmVudEZvckZyYW1lKGZy
YW1lKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9mcmFtZVJlbW92ZWQ6IGZ1bmN0aW9uKGV2ZW50
KQorICAgIF9mcmFtZVJlbW92ZWQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgZnJhbWUgPSBl
dmVudC5kYXRhLmZyYW1lOwogICAgICAgICB0aGlzLl9yZW1vdmVFeGVjdXRpb25Db250ZXh0UGF0
aENvbXBvbmVudEZvckZyYW1lKGZyYW1lKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9mcmFtZU1h
aW5SZXNvdXJjZUNoYW5nZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9mcmFtZU1haW5SZXNvdXJj
ZUNoYW5nZWQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgZnJhbWUgPSBldmVudC50YXJnZXQ7
CiAgICAgICAgIHRoaXMuX3VwZGF0ZUV4ZWN1dGlvbkNvbnRleHRQYXRoQ29tcG9uZW50Rm9yRnJh
bWUoZnJhbWUpOwotICAgIH0sCisgICAgfQogCi0gICAgX2NyZWF0ZUV4ZWN1dGlvbkNvbnRleHRQ
YXRoQ29tcG9uZW50OiBmdW5jdGlvbihuYW1lLCBpZGVudGlmaWVyKQorICAgIF9jcmVhdGVFeGVj
dXRpb25Db250ZXh0UGF0aENvbXBvbmVudChuYW1lLCBpZGVudGlmaWVyKQogICAgIHsKICAgICAg
ICAgdmFyIHBhdGhDb21wb25lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhD
b21wb25lbnQobmFtZSwgImV4ZWN1dGlvbi1jb250ZXh0IiwgaWRlbnRpZmllciwgdHJ1ZSwgdHJ1
ZSk7CiAgICAgICAgIHBhdGhDb21wb25lbnQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
SGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5FdmVudC5TaWJsaW5nV2FzU2VsZWN0ZWQsIHRoaXMu
X3BhdGhDb21wb25lbnRTZWxlY3RlZCwgdGhpcyk7CkBAIC0yMTUsOSArMTk3LDkgQEAgV2ViSW5z
cGVjdG9yLlF1aWNrQ29uc29sZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHBhdGhDb21wb25lbnQu
dHJ1bmNhdGVkRGlzcGxheU5hbWVMZW5ndGggPSA1MDsKICAgICAgICAgcGF0aENvbXBvbmVudC5f
ZXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIgPSBpZGVudGlmaWVyOwogICAgICAgICByZXR1cm4g
cGF0aENvbXBvbmVudDsKLSAgICB9LAorICAgIH0KIAotICAgIF9jcmVhdGVFeGVjdXRpb25Db250
ZXh0UGF0aENvbXBvbmVudEZyb21GcmFtZTogZnVuY3Rpb24oZnJhbWUpCisgICAgX2NyZWF0ZUV4
ZWN1dGlvbkNvbnRleHRQYXRoQ29tcG9uZW50RnJvbUZyYW1lKGZyYW1lKQogICAgIHsKICAgICAg
ICAgdmFyIG5hbWUgPSBmcmFtZS5uYW1lID8gZnJhbWUubmFtZSArICIgXHUyMDE0ICIgKyBmcmFt
ZS5tYWluUmVzb3VyY2UuZGlzcGxheU5hbWUgOiBmcmFtZS5tYWluUmVzb3VyY2UuZGlzcGxheU5h
bWU7CiAgICAgICAgIHZhciBpZGVudGlmaWVyID0gV2ViSW5zcGVjdG9yLkV4ZWN1dGlvbkNvbnRl
eHQuc3VwcG9ydGVkKCkgPyBmcmFtZS5wYWdlRXhlY3V0aW9uQ29udGV4dC5pZCA6IGZyYW1lLmlk
OwpAQCAtMjI2LDkgKzIwOCw5IEBAIFdlYkluc3BlY3Rvci5RdWlja0NvbnNvbGUucHJvdG90eXBl
ID0gewogICAgICAgICBwYXRoQ29tcG9uZW50Ll9mcmFtZSA9IGZyYW1lOwogCiAgICAgICAgIHJl
dHVybiBwYXRoQ29tcG9uZW50OwotICAgIH0sCisgICAgfQogCi0gICAgX2NvbXBhcmVFeGVjdXRp
b25Db250ZXh0UGF0aENvbXBvbmVudHM6IGZ1bmN0aW9uKGEsIGIpCisgICAgX2NvbXBhcmVFeGVj
dXRpb25Db250ZXh0UGF0aENvbXBvbmVudHMoYSwgYikKICAgICB7CiAgICAgICAgIC8vICJNYWlu
IEZyYW1lIiBhbHdheXMgb24gdG9wLgogICAgICAgICBpZiAoIWEuX2ZyYW1lKQpAQCAtMjQzLDkg
KzIyNSw5IEBAIFdlYkluc3BlY3Rvci5RdWlja0NvbnNvbGUucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgcmV0dXJuIDE7CiAKICAgICAgICAgcmV0dXJuIGEuZGlzcGxheU5hbWUubG9jYWxlQ29t
cGFyZShiLmRpc3BsYXlOYW1lKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9pbnNlcnRFeGVjdXRp
b25Db250ZXh0UGF0aENvbXBvbmVudEZvckZyYW1lOiBmdW5jdGlvbihmcmFtZSwgc2tpcFJlYnVp
bGQpCisgICAgX2luc2VydEV4ZWN1dGlvbkNvbnRleHRQYXRoQ29tcG9uZW50Rm9yRnJhbWUoZnJh
bWUsIHNraXBSZWJ1aWxkKQogICAgIHsKICAgICAgICAgaWYgKGZyYW1lLmlzTWFpbkZyYW1lKCkp
CiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbWFpbkZyYW1lRXhlY3V0aW9uQ29udGV4dFBhdGhD
b21wb25lbnQ7CkBAIC0yNzYsOSArMjU4LDkgQEAgV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZS5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9yZWJ1aWxkRXhlY3V0aW9uQ29udGV4dFBh
dGhDb21wb25lbnRzKCk7CiAKICAgICAgICAgcmV0dXJuIGV4ZWN1dGlvbkNvbnRleHRQYXRoQ29t
cG9uZW50OwotICAgIH0sCisgICAgfQogCi0gICAgX3JlbW92ZUV4ZWN1dGlvbkNvbnRleHRQYXRo
Q29tcG9uZW50Rm9yRnJhbWU6IGZ1bmN0aW9uKGZyYW1lLCBza2lwUmVidWlsZCkKKyAgICBfcmVt
b3ZlRXhlY3V0aW9uQ29udGV4dFBhdGhDb21wb25lbnRGb3JGcmFtZShmcmFtZSwgc2tpcFJlYnVp
bGQpCiAgICAgewogICAgICAgICBpZiAoZnJhbWUuaXNNYWluRnJhbWUoKSkKICAgICAgICAgICAg
IHJldHVybjsKQEAgLTMwNiw5ICsyODgsOSBAQCBXZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xlLnBy
b3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAoIXNraXBSZWJ1aWxkKQogICAgICAgICAgICAgdGhp
cy5fcmVidWlsZEV4ZWN1dGlvbkNvbnRleHRQYXRoQ29tcG9uZW50cygpOwotICAgIH0sCisgICAg
fQogCi0gICAgX3VwZGF0ZUV4ZWN1dGlvbkNvbnRleHRQYXRoQ29tcG9uZW50Rm9yRnJhbWU6IGZ1
bmN0aW9uKGZyYW1lKQorICAgIF91cGRhdGVFeGVjdXRpb25Db250ZXh0UGF0aENvbXBvbmVudEZv
ckZyYW1lKGZyYW1lKQogICAgIHsKICAgICAgICAgaWYgKGZyYW1lLmlzTWFpbkZyYW1lKCkpCiAg
ICAgICAgICAgICByZXR1cm47CkBAIC0zMjYsOSArMzA4LDkgQEAgV2ViSW5zcGVjdG9yLlF1aWNr
Q29uc29sZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZEV4ZWN1dGlv
bkNvbnRleHRQYXRoQ29tcG9uZW50ID0gbmV3RXhlY3V0aW9uQ29udGV4dFBhdGhDb21wb25lbnQ7
CiAKICAgICAgICAgdGhpcy5fcmVidWlsZEV4ZWN1dGlvbkNvbnRleHRQYXRoQ29tcG9uZW50cygp
OwotICAgIH0sCisgICAgfQogCi0gICAgX3BhdGhDb21wb25lbnRTZWxlY3RlZDogZnVuY3Rpb24o
ZXZlbnQpCisgICAgX3BhdGhDb21wb25lbnRTZWxlY3RlZChldmVudCkKICAgICB7CiAgICAgICAg
IGlmIChldmVudC5kYXRhLnBhdGhDb21wb25lbnQgPT09IHRoaXMuX3NlbGVjdGVkRXhlY3V0aW9u
Q29udGV4dFBhdGhDb21wb25lbnQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0zMzYsMTkgKzMx
OCwxOSBAQCBXZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xlLnByb3RvdHlwZSA9IHsKICAgICAgICAg
dGhpcy5fc2VsZWN0ZWRFeGVjdXRpb25Db250ZXh0UGF0aENvbXBvbmVudCA9IGV2ZW50LmRhdGEu
cGF0aENvbXBvbmVudDsKIAogICAgICAgICB0aGlzLl9yZWJ1aWxkRXhlY3V0aW9uQ29udGV4dFBh
dGhDb21wb25lbnRzKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcGF0aENvbXBvbmVudENsaWNr
ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9wYXRoQ29tcG9uZW50Q2xpY2tlZChldmVudCkKICAg
ICB7CiAgICAgICAgIHRoaXMucHJvbXB0LmZvY3VzKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBf
ZGVidWdnZXJBY3RpdmVDYWxsRnJhbWVEaWRDaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9k
ZWJ1Z2dlckFjdGl2ZUNhbGxGcmFtZURpZENoYW5nZShldmVudCkKICAgICB7CiAgICAgICAgIHRo
aXMuX3JlYnVpbGRFeGVjdXRpb25Db250ZXh0UGF0aENvbXBvbmVudHMoKTsKLSAgICB9LAorICAg
IH0KIAotICAgIF90b2dnbGVPckZvY3VzOiBmdW5jdGlvbihldmVudCkKKyAgICBfdG9nZ2xlT3JG
b2N1cyhldmVudCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLnByb21wdC5mb2N1c2VkKQogICAg
ICAgICAgICAgV2ViSW5zcGVjdG9yLnRvZ2dsZVNwbGl0Q29uc29sZSgpOwpAQCAtMzU3LDQgKzMz
OSwxNyBAQCBXZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xlLnByb3RvdHlwZSA9IHsKICAgICB9CiB9
OwogCi1XZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xlLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJ
bnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKK1dlYkluc3BlY3Rvci5RdWlja0NvbnNvbGUuU2hv
d2luZ0xvZ0NsYXNzTmFtZSA9ICJzaG93aW5nLWxvZyI7CitXZWJJbnNwZWN0b3IuUXVpY2tDb25z
b2xlLk5hdmlnYXRpb25CYXJDb250YWluZXJTdHlsZUNsYXNzTmFtZSA9ICJuYXZpZ2F0aW9uLWJh
ci1jb250YWluZXIiOworV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZS5OYXZpZ2F0aW9uQmFyU3Bh
Y2VyU3R5bGVDbGFzc05hbWUgPSAibmF2aWdhdGlvbi1iYXItc3BhY2VyIjsKK1dlYkluc3BlY3Rv
ci5RdWlja0NvbnNvbGUuVGV4dFByb21wdFN0eWxlQ2xhc3NOYW1lID0gInRleHQtcHJvbXB0IjsK
KworV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZS5Ub29sYmFyU2luZ2xlTGluZUhlaWdodCA9IDIx
OworV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZS5Ub29sYmFyUHJvbXB0UGFkZGluZyA9IDQ7CitX
ZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xlLlRvb2xiYXJUb3BCb3JkZXIgPSAxOworCitXZWJJbnNw
ZWN0b3IuUXVpY2tDb25zb2xlLk1haW5GcmFtZUNvbnRleHRFeGVjdXRpb25JZGVudGlmaWVyID0g
dW5kZWZpbmVkOworCitXZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xlLkV2ZW50ID0geworICAgIERp
ZFJlc2l6ZTogInF1aWNrLWNvbnNvbGUtZGlkLXJlc2l6ZSIKK307CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXBsYXlEYXNoYm9hcmRWaWV3
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVwbGF5RGFz
aGJvYXJkVmlldy5qcwppbmRleCBhNTNlYTExLi45MmNiZmI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXBsYXlEYXNoYm9hcmRWaWV3Lmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1JlcGxheURh
c2hib2FyZFZpZXcuanMKQEAgLTEsNCArMSw1IEBACiAvKgorICogQ29weXJpZ2h0IChDKSAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxNCBV
bml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CkBAIC0yMyw5ICsyNCwxMSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5SZXBsYXlEYXNoYm9hcmRWaWV3ID0gZnVuY3Rpb24o
cmVwcmVzZW50ZWRPYmplY3QpCitXZWJJbnNwZWN0b3IuUmVwbGF5RGFzaGJvYXJkVmlldyA9IGNs
YXNzIFJlcGxheURhc2hib2FyZFZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuRGFzaGJvYXJkVmll
dwogewotICAgIFdlYkluc3BlY3Rvci5EYXNoYm9hcmRWaWV3LmNhbGwodGhpcywgcmVwcmVzZW50
ZWRPYmplY3QsICJyZXBsYXkiKTsKKyAgICBjb25zdHJ1Y3RvcihyZXByZXNlbnRlZE9iamVjdCkK
KyAgICB7CisgICAgICAgIHN1cGVyKHJlcHJlc2VudGVkT2JqZWN0LCAicmVwbGF5Iik7CiAKICAg
ICAgICAgdGhpcy5fbmF2aWdhdGlvbkJhciA9IG5ldyBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJh
cjsKICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX25hdmlnYXRpb25CYXIu
ZWxlbWVudCk7CkBAIC01OCwzMCArNjEsMTkgQEAgV2ViSW5zcGVjdG9yLlJlcGxheURhc2hib2Fy
ZFZpZXcgPSBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkKICAgICAgICAgLy8gUmVwbGF5TWFu
YWdlci5zZXNzaW9uU3RhdGUgbXVzdCBiZSBVbmxvYWRlZCBvciBMb2FkZWQsIHNvIGV4ZWN1dGlv
biBpcyBwYXVzZWQuCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHRoaXMuX3BsYXliYWNrUGF1
c2VkKCk7Ci19OwotCi0vLyBDbGFzcyBuYW1lcyBmb3IgdG9wLWxldmVsIGZsZXggaXRlbXMgd2l0
aGluIHRoZSByZXBsYXkgZGFzaGJvYXJkLgotV2ViSW5zcGVjdG9yLlJlcGxheURhc2hib2FyZFZp
ZXcuUmVjb3JkaW5nQ29udGFpbmVyU3R5bGVDbGFzc05hbWUgPSAicmVjb3JkaW5nLWNvbnRhaW5l
ciI7Ci0KLS8vIENsYXNzIG5hbWVzIGZvciBzaW5nbGUgYnV0dG9ucy4KLVdlYkluc3BlY3Rvci5S
ZXBsYXlEYXNoYm9hcmRWaWV3LlJlY29yZEJ1dHRvblN0eWxlQ2xhc3NOYW1lID0gInJlY29yZC1i
dXR0b24iOwotV2ViSW5zcGVjdG9yLlJlcGxheURhc2hib2FyZFZpZXcuUmVwbGF5QnV0dG9uU3R5
bGVDbGFzc05hbWUgPSAicmVwbGF5LWJ1dHRvbiI7Ci0KLVdlYkluc3BlY3Rvci5SZXBsYXlEYXNo
Ym9hcmRWaWV3LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlJl
cGxheURhc2hib2FyZFZpZXcsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuRGFzaGJvYXJk
Vmlldy5wcm90b3R5cGUsCisgICAgfQogICAgIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9jYXB0
dXJlQnV0dG9uSXRlbUNsaWNrZWQ6IGZ1bmN0aW9uKCkKKyAgICBfY2FwdHVyZUJ1dHRvbkl0ZW1D
bGlja2VkKCkKICAgICB7CiAgICAgICAgIGlmIChXZWJJbnNwZWN0b3IucmVwbGF5TWFuYWdlci5z
ZXNzaW9uU3RhdGUgIT09IFdlYkluc3BlY3Rvci5SZXBsYXlNYW5hZ2VyLlNlc3Npb25TdGF0ZS5D
YXB0dXJpbmcpCiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IucmVwbGF5TWFuYWdlci5zdGFydENh
cHR1cmluZygpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IucmVwbGF5
TWFuYWdlci5zdG9wQ2FwdHVyaW5nKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcmVwbGF5QnV0
dG9uSXRlbUNsaWNrZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9yZXBsYXlCdXR0b25JdGVtQ2xp
Y2tlZChldmVudCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KFdlYkluc3BlY3Rvci5y
ZXBsYXlNYW5hZ2VyLnNlc3Npb25TdGF0ZSAhPT0gV2ViSW5zcGVjdG9yLlJlcGxheU1hbmFnZXIu
U2Vzc2lvblN0YXRlLkNhcHR1cmluZywgIlRyaWVkIHRvIHN0YXJ0IHJlcGxheWluZyB3aGlsZSBT
ZXNzaW9uU3RhdGUgaXMgQ2FwdHVyaW5nISIpOwogCkBAIC05MSwzNCArODMsMzggQEAgV2ViSW5z
cGVjdG9yLlJlcGxheURhc2hib2FyZFZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgV2Vi
SW5zcGVjdG9yLnJlcGxheU1hbmFnZXIucGF1c2VQbGF5YmFjaygpOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBXZWJJbnNwZWN0b3IucmVwbGF5TWFuYWdlci5yZXBsYXlUb0NvbXBsZXRpb24o
KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9jYXB0dXJlU3RhcnRlZDogZnVuY3Rpb24oKQorICAg
IF9jYXB0dXJlU3RhcnRlZCgpCiAgICAgewogICAgICAgICB0aGlzLl9jYXB0dXJlQnV0dG9uSXRl
bS5oaWRkZW4gPSBmYWxzZTsKICAgICAgICAgdGhpcy5fY2FwdHVyZUJ1dHRvbkl0ZW0uYWN0aXZh
dGVkID0gdHJ1ZTsKICAgICAgICAgdGhpcy5fcmVwbGF5QnV0dG9uSXRlbS5oaWRkZW4gPSB0cnVl
OwotICAgIH0sCisgICAgfQogCi0gICAgX2NhcHR1cmVTdG9wcGVkOiBmdW5jdGlvbigpCisgICAg
X2NhcHR1cmVTdG9wcGVkKCkKICAgICB7CiAgICAgICAgIHRoaXMuX2NhcHR1cmVCdXR0b25JdGVt
LmFjdGl2YXRlZCA9IGZhbHNlOwogICAgICAgICB0aGlzLl9jYXB0dXJlQnV0dG9uSXRlbS5oaWRk
ZW4gPSB0cnVlOwogICAgICAgICB0aGlzLl9yZXBsYXlCdXR0b25JdGVtLmhpZGRlbiA9IGZhbHNl
OwotICAgIH0sCisgICAgfQogCi0gICAgX3BsYXliYWNrU3RhcnRlZDogZnVuY3Rpb24oKQorICAg
IF9wbGF5YmFja1N0YXJ0ZWQoKQogICAgIHsKICAgICAgICAgdGhpcy5fcmVwbGF5QnV0dG9uSXRl
bS50b2dnbGVkID0gdHJ1ZTsKLSAgICB9LAorICAgIH0KIAotICAgIF9wbGF5YmFja1BhdXNlZDog
ZnVuY3Rpb24oKQorICAgIF9wbGF5YmFja1BhdXNlZCgpCiAgICAgewogICAgICAgICB0aGlzLl9y
ZXBsYXlCdXR0b25JdGVtLnRvZ2dsZWQgPSBmYWxzZTsKLSAgICB9LAorICAgIH0KIAotICAgIF9w
bGF5YmFja0ZpbmlzaGVkOiBmdW5jdGlvbigpCisgICAgX3BsYXliYWNrRmluaXNoZWQoKQogICAg
IHsKICAgICAgICAgdGhpcy5fcmVwbGF5QnV0dG9uSXRlbS50b2dnbGVkID0gZmFsc2U7CiAgICAg
fQogfTsKKworV2ViSW5zcGVjdG9yLlJlcGxheURhc2hib2FyZFZpZXcuUmVjb3JkaW5nQ29udGFp
bmVyU3R5bGVDbGFzc05hbWUgPSAicmVjb3JkaW5nLWNvbnRhaW5lciI7CitXZWJJbnNwZWN0b3Iu
UmVwbGF5RGFzaGJvYXJkVmlldy5SZWNvcmRCdXR0b25TdHlsZUNsYXNzTmFtZSA9ICJyZWNvcmQt
YnV0dG9uIjsKK1dlYkluc3BlY3Rvci5SZXBsYXlEYXNoYm9hcmRWaWV3LlJlcGxheUJ1dHRvblN0
eWxlQ2xhc3NOYW1lID0gInJlcGxheS1idXR0b24iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUnVsZXNTdHlsZURldGFpbHNQYW5lbC5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1J1bGVzU3R5bGVEZXRh
aWxzUGFuZWwuanMKaW5kZXggMjE1YjE4Ni4uY2ZlMzczYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUnVsZXNTdHlsZURldGFpbHNQYW5lbC5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SdWxlc1N0
eWxlRGV0YWlsc1BhbmVsLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yMywyMyArMjMsMTggQEAKICAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuUnVsZXNTdHlsZURldGFpbHNQYW5l
bCA9IGZ1bmN0aW9uKCkKK1dlYkluc3BlY3Rvci5SdWxlc1N0eWxlRGV0YWlsc1BhbmVsID0gY2xh
c3MgUnVsZXNTdHlsZURldGFpbHNQYW5lbCBleHRlbmRzIFdlYkluc3BlY3Rvci5TdHlsZURldGFp
bHNQYW5lbAogewotICAgIFdlYkluc3BlY3Rvci5TdHlsZURldGFpbHNQYW5lbC5jYWxsKHRoaXMs
IFdlYkluc3BlY3Rvci5SdWxlc1N0eWxlRGV0YWlsc1BhbmVsLlN0eWxlQ2xhc3NOYW1lLCAicnVs
ZXMiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJ1bGVzIikpOworICAgIGNvbnN0cnVjdG9yKCkK
KyAgICB7CisgICAgICAgIHN1cGVyKCJydWxlcyIsICJydWxlcyIsIFdlYkluc3BlY3Rvci5VSVN0
cmluZygiUnVsZXMiKSk7CiAKICAgICAgICAgdGhpcy5fc2VjdGlvbnMgPSBbXTsKLX07Ci0KLVdl
Ykluc3BlY3Rvci5SdWxlc1N0eWxlRGV0YWlsc1BhbmVsLlN0eWxlQ2xhc3NOYW1lID0gInJ1bGVz
IjsKLVdlYkluc3BlY3Rvci5SdWxlc1N0eWxlRGV0YWlsc1BhbmVsLkxhYmVsRWxlbWVudFN0eWxl
Q2xhc3NOYW1lID0gImxhYmVsIjsKLVdlYkluc3BlY3Rvci5SdWxlc1N0eWxlRGV0YWlsc1BhbmVs
Lk5ld1J1bGVFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAibmV3LXJ1bGUiOwotCi1XZWJJbnNwZWN0
b3IuUnVsZXNTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6
IFdlYkluc3BlY3Rvci5SdWxlc1N0eWxlRGV0YWlsc1BhbmVsLAorICAgIH0KIAogICAgIC8vIFB1
YmxpYwogCi0gICAgcmVmcmVzaDogZnVuY3Rpb24oc2lnbmlmaWNhbnRDaGFuZ2UpCisgICAgcmVm
cmVzaChzaWduaWZpY2FudENoYW5nZSkKICAgICB7CiAgICAgICAgIC8vIFdlIG9ubHkgbmVlZCB0
byBkbyBhIHJlYnVpbGQgb24gc2lnbmlmaWNhbnQgY2hhbmdlcy4gT3RoZXIgY2hhbmdlcyBhcmUg
aGFuZGxlZAogICAgICAgICAvLyBieSB0aGUgc2VjdGlvbnMgYW5kIHRleHQgZWRpdG9ycyB0aGVt
c2VsdmVzLgpAQCAtMTUwLDcgKzE0NSw3IEBAIFdlYkluc3BlY3Rvci5SdWxlc1N0eWxlRGV0YWls
c1BhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgICAgICAgICAgaWYgKCF0aGlzLm5vZGVTdHlsZXMu
bm9kZS5pc0luU2hhZG93VHJlZSgpKSB7CiAgICAgICAgICAgICAgICAgdmFyIG5ld1J1bGVCdXR0
b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgICAgICAgICBuZXdS
dWxlQnV0dG9uLmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5SdWxlc1N0eWxlRGV0YWlsc1BhbmVs
Lk5ld1J1bGVFbGVtZW50U3R5bGVDbGFzc05hbWU7CisgICAgICAgICAgICAgICAgbmV3UnVsZUJ1
dHRvbi5jbGFzc05hbWUgPSAibmV3LXJ1bGUiOwogICAgICAgICAgICAgICAgIG5ld1J1bGVCdXR0
b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9uZXdSdWxlQ2xpY2tlZC5iaW5kKHRo
aXMpKTsKIAogICAgICAgICAgICAgICAgIG5ld1J1bGVCdXR0b24uYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiaW1nIikpOwpAQCAtMTg5LDcgKzE4NCw3IEBAIFdlYkluc3BlY3Rv
ci5SdWxlc1N0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICBw
cmVmaXhFbGVtZW50LnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJJbmhlcml0
ZWQgRnJvbTogIik7CiAKICAgICAgICAgICAgICAgICB2YXIgaW5oZXJpdGVkTGFiZWwgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgICAgICAgICBpbmhlcml0ZWRMYWJl
bC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuUnVsZXNTdHlsZURldGFpbHNQYW5lbC5MYWJlbEVs
ZW1lbnRTdHlsZUNsYXNzTmFtZTsKKyAgICAgICAgICAgICAgICBpbmhlcml0ZWRMYWJlbC5jbGFz
c05hbWUgPSAibGFiZWwiOwogICAgICAgICAgICAgICAgIGluaGVyaXRlZExhYmVsLmFwcGVuZENo
aWxkKHByZWZpeEVsZW1lbnQpOwogICAgICAgICAgICAgICAgIGluaGVyaXRlZExhYmVsLmFwcGVu
ZENoaWxkKFdlYkluc3BlY3Rvci5saW5raWZ5Tm9kZVJlZmVyZW5jZShzdHlsZS5ub2RlKSk7CiAg
ICAgICAgICAgICAgICAgbmV3RE9NRnJhZ21lbnQuYXBwZW5kQ2hpbGQoaW5oZXJpdGVkTGFiZWwp
OwpAQCAtMjEyLDcgKzIwNyw3IEBAIFdlYkluc3BlY3Rvci5SdWxlc1N0eWxlRGV0YWlsc1BhbmVs
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICAgICAgcHJlZml4RWxlbWVudC50ZXh0Q29u
dGVudCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiTWVkaWE6ICIpOwogCiAgICAgICAgICAgICAg
ICAgICAgIHZhciBtZWRpYUxhYmVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0g
ICAgICAgICAgICAgICAgICAgIG1lZGlhTGFiZWwuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLlJ1
bGVzU3R5bGVEZXRhaWxzUGFuZWwuTGFiZWxFbGVtZW50U3R5bGVDbGFzc05hbWU7CisgICAgICAg
ICAgICAgICAgICAgIG1lZGlhTGFiZWwuY2xhc3NOYW1lID0gImxhYmVsIjsKICAgICAgICAgICAg
ICAgICAgICAgbWVkaWFMYWJlbC5hcHBlbmRDaGlsZChwcmVmaXhFbGVtZW50KTsKICAgICAgICAg
ICAgICAgICAgICAgbWVkaWFMYWJlbC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9k
ZShtZWRpYS50ZXh0KSk7CiAKQEAgLTI0NCwxMSArMjM5LDExIEBAIFdlYkluc3BlY3Rvci5SdWxl
c1N0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAocHJldmlvdXNG
b2N1c2VkU2VjdGlvbikKICAgICAgICAgICAgIHByZXZpb3VzRm9jdXNlZFNlY3Rpb24uZm9jdXMo
KTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByb3RlY3RlZAogCi0gICAgc2hvd246IGZ1bmN0
aW9uKCkKKyAgICBzaG93bigpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuU3R5bGVEZXRh
aWxzUGFuZWwucHJvdG90eXBlLnNob3duLmNhbGwodGhpcyk7CiAKQEAgLTI1OSw5ICsyNTQsOSBA
QCBXZWJJbnNwZWN0b3IuUnVsZXNTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgICAgICBzZWN0aW9uLnN0eWxlLl9fcnVsZXNTZWN0aW9uID0gc2VjdGlvbjsKICAgICAgICAg
ICAgIHNlY3Rpb24udXBkYXRlTGF5b3V0KCk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAot
ICAgIGhpZGRlbjogZnVuY3Rpb24oKQorICAgIGhpZGRlbigpCiAgICAgewogICAgICAgICBXZWJJ
bnNwZWN0b3IuU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLmhpZGRlbi5jYWxsKHRoaXMpOwog
CkBAIC0yNjksMjEgKzI2NCwxOSBAQCBXZWJJbnNwZWN0b3IuUnVsZXNTdHlsZURldGFpbHNQYW5l
bC5wcm90b3R5cGUgPSB7CiAgICAgICAgIC8vIHRvIHJlbGVhc2UgdGhlaXIgb2JqZWN0cyB3aGVu
IHRoaXMgcGFuZWwgaXMgbm90IHZpc2libGUuCiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
dGhpcy5fc2VjdGlvbnMubGVuZ3RoOyArK2kpCiAgICAgICAgICAgICBkZWxldGUgdGhpcy5fc2Vj
dGlvbnNbaV0uc3R5bGUuX19ydWxlc1NlY3Rpb247Ci0gICAgfSwKKyAgICB9CiAKLSAgICB3aWR0
aERpZENoYW5nZTogZnVuY3Rpb24oKQorICAgIHdpZHRoRGlkQ2hhbmdlKCkKICAgICB7CiAgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc2VjdGlvbnMubGVuZ3RoOyArK2kpCiAgICAg
ICAgICAgICB0aGlzLl9zZWN0aW9uc1tpXS51cGRhdGVMYXlvdXQoKTsKLSAgICB9LAorICAgIH0K
IAogICAgIC8vIFByaXZhdGUKIAotICAgIF9uZXdSdWxlQ2xpY2tlZDogZnVuY3Rpb24oZXZlbnQp
CisgICAgX25ld1J1bGVDbGlja2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fZm9jdXNO
ZXh0TmV3SW5zcGVjdG9yUnVsZSA9IHRydWU7CiAgICAgICAgIHRoaXMubm9kZVN0eWxlcy5hZGRF
bXB0eVJ1bGUoKTsKICAgICB9CiB9OwotCi1XZWJJbnNwZWN0b3IuUnVsZXNTdHlsZURldGFpbHNQ
YW5lbC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlN0eWxlRGV0YWlsc1BhbmVs
LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1N0eWxlRGV0YWlsc1BhbmVsLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvU3R5bGVEZXRhaWxzUGFuZWwuanMKaW5kZXggNDFmNjM1Ny4uMGRh
ZTFjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvU3R5bGVEZXRhaWxzUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvU3R5bGVEZXRhaWxzUGFuZWwuanMKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDQzICsyMyw0MiBAQAogICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5TdHls
ZURldGFpbHNQYW5lbCA9IGZ1bmN0aW9uKGNsYXNzTmFtZSwgaWRlbnRpZmllciwgbGFiZWwpCitX
ZWJJbnNwZWN0b3IuU3R5bGVEZXRhaWxzUGFuZWwgPSBjbGFzcyBTdHlsZURldGFpbHNQYW5lbCBl
eHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKKyAgICBjb25zdHJ1Y3RvcihjbGFzc05hbWUs
IGlkZW50aWZpZXIsIGxhYmVsKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKKwogICAgICAgICB0
aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgIHRo
aXMuX2VsZW1lbnQuY2xhc3NOYW1lID0gY2xhc3NOYW1lOwogCiAgICAgICAgIC8vIEFkZCB0aGlz
IG9mZnNldC1zZWN0aW9ucyBjbGFzcyBuYW1lIHNvIHRoZSBzdGlja3kgaGVhZGVycyBkb24ndCBv
dmVybGFwIHRoZSBuYXZpZ2F0aW9uIGJhci4KLSAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFk
ZChXZWJJbnNwZWN0b3IuU3R5bGVEZXRhaWxzUGFuZWwuT2Zmc2V0U2VjdGlvbnNTdHlsZUNsYXNz
TmFtZSk7CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJvZmZzZXQtc2VjdGlv
bnMiKTsKIAogICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uSXRlbSA9IG5ldyBXZWJJbnNwZWN0b3Iu
UmFkaW9CdXR0b25OYXZpZ2F0aW9uSXRlbShpZGVudGlmaWVyLCBsYWJlbCk7CiAKICAgICAgICAg
dGhpcy5fbm9kZVN0eWxlcyA9IG51bGw7CiAgICAgICAgIHRoaXMuX3Zpc2libGUgPSBmYWxzZTsK
LX07Ci0KLVdlYkluc3BlY3Rvci5TdHlsZURldGFpbHNQYW5lbC5PZmZzZXRTZWN0aW9uc1N0eWxl
Q2xhc3NOYW1lID0gIm9mZnNldC1zZWN0aW9ucyI7Ci0KLVdlYkluc3BlY3Rvci5TdHlsZURldGFp
bHNQYW5lbC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5TdHls
ZURldGFpbHNQYW5lbCwKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBlbGVtZW50
KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50OwotICAgIH0sCisgICAgfQog
CiAgICAgZ2V0IG5hdmlnYXRpb25JdGVtKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9u
YXZpZ2F0aW9uSXRlbTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBub2RlU3R5bGVzKCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9ub2RlU3R5bGVzOwotICAgIH0sCisgICAgfQogCi0g
ICAgc2hvd246IGZ1bmN0aW9uKCkKKyAgICBzaG93bigpCiAgICAgewogICAgICAgICBpZiAodGhp
cy5fdmlzaWJsZSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTY3LDE5ICs2NiwxOSBAQCBXZWJJ
bnNwZWN0b3IuU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl92
aXNpYmxlID0gdHJ1ZTsKIAogICAgICAgICB0aGlzLl9yZWZyZXNoTm9kZVN0eWxlcygpOwotICAg
IH0sCisgICAgfQogCi0gICAgaGlkZGVuOiBmdW5jdGlvbigpCisgICAgaGlkZGVuKCkKICAgICB7
CiAgICAgICAgIHRoaXMuX3Zpc2libGUgPSBmYWxzZTsKLSAgICB9LAorICAgIH0KIAotICAgIHdp
ZHRoRGlkQ2hhbmdlOiBmdW5jdGlvbigpCisgICAgd2lkdGhEaWRDaGFuZ2UoKQogICAgIHsKICAg
ICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KLSAgICB9LAorICAgIH0KIAotICAg
IG1hcmtBc05lZWRzUmVmcmVzaDogZnVuY3Rpb24oZG9tTm9kZSkKKyAgICBtYXJrQXNOZWVkc1Jl
ZnJlc2goZG9tTm9kZSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRvbU5vZGUpOwog
ICAgICAgICBpZiAoIWRvbU5vZGUpCkBAIC0xMDUsMTIgKzEwNCwxMiBAQCBXZWJJbnNwZWN0b3Iu
U3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgICAgIGlmICh0aGlzLl92aXNp
YmxlKQogICAgICAgICAgICAgdGhpcy5fcmVmcmVzaE5vZGVTdHlsZXMoKTsKLSAgICB9LAorICAg
IH0KIAotICAgIHJlZnJlc2g6IGZ1bmN0aW9uKHNpZ25pZmljYW50Q2hhbmdlKQorICAgIHJlZnJl
c2goc2lnbmlmaWNhbnRDaGFuZ2UpCiAgICAgewogICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBz
dWJjbGFzc2VzLgotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCkBAIC0xMTksMTYg
KzExOCwxNiBAQCBXZWJJbnNwZWN0b3IuU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlID0gewog
ICAgICAgICBpZiAoIVdlYkluc3BlY3Rvci5jc3NTdHlsZU1hbmFnZXIuY2FuRm9yY2VQc2V1ZG9D
bGFzc2VzKCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgcmV0dXJuIHRoaXMubm9k
ZVN0eWxlcy5ub2RlLmVuYWJsZWRQc2V1ZG9DbGFzc2VzLmxlbmd0aCA/IDAgOiBXZWJJbnNwZWN0
b3IuQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLk5vRm9yY2VkUHNldWRvQ2xhc3Nlc1Njcm9s
bE9mZnNldDsKLSAgICB9LAorICAgIH0KIAotICAgIF9yZWZyZXNoTm9kZVN0eWxlczogZnVuY3Rp
b24oKQorICAgIF9yZWZyZXNoTm9kZVN0eWxlcygpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMu
X25vZGVTdHlsZXMpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHRoaXMuX25vZGVTdHls
ZXMucmVmcmVzaCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX3JlZnJlc2hQcmVzZXJ2aW5nU2Ny
b2xsUG9zaXRpb246IGZ1bmN0aW9uKHNpZ25pZmljYW50Q2hhbmdlKQorICAgIF9yZWZyZXNoUHJl
c2VydmluZ1Njcm9sbFBvc2l0aW9uKHNpZ25pZmljYW50Q2hhbmdlKQogICAgIHsKICAgICAgICAg
c2lnbmlmaWNhbnRDaGFuZ2UgPSB0aGlzLl9mb3JjZVNpZ25pZmljYW50Q2hhbmdlIHx8IHNpZ25p
ZmljYW50Q2hhbmdlIHx8IGZhbHNlOwogICAgICAgICBkZWxldGUgdGhpcy5fZm9yY2VTaWduaWZp
Y2FudENoYW5nZTsKQEAgLTE0NSwxOSArMTQ0LDE3IEBAIFdlYkluc3BlY3Rvci5TdHlsZURldGFp
bHNQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKHRoaXMuZWxlbWVudC5wYXJlbnRO
b2RlKQogICAgICAgICAgICAgdGhpcy5lbGVtZW50LnBhcmVudE5vZGUuc2Nyb2xsVG9wID0gcHJl
dmlvdXNTY3JvbGxUb3A7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfbm9kZVN0eWxlc1JlZnJlc2hl
ZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX25vZGVTdHlsZXNSZWZyZXNoZWQoZXZlbnQpCiAgICAg
ewogICAgICAgICBpZiAodGhpcy5fdmlzaWJsZSkKICAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hQ
cmVzZXJ2aW5nU2Nyb2xsUG9zaXRpb24oZXZlbnQuZGF0YS5zaWduaWZpY2FudENoYW5nZSk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBfbm9kZVN0eWxlc05lZWRzUmVmcmVzaGVkOiBmdW5jdGlvbihl
dmVudCkKKyAgICBfbm9kZVN0eWxlc05lZWRzUmVmcmVzaGVkKGV2ZW50KQogICAgIHsKICAgICAg
ICAgaWYgKHRoaXMuX3Zpc2libGUpCiAgICAgICAgICAgICB0aGlzLl9yZWZyZXNoTm9kZVN0eWxl
cygpOwogICAgIH0KIH07Ci0KLVdlYkluc3BlY3Rvci5TdHlsZURldGFpbHNQYW5lbC5wcm90b3R5
cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>