<?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>83773</bug_id>
          
          <creation_ts>2012-04-12 05:20:02 -0700</creation_ts>
          <short_desc>Web Inspector: extracting NetworkRequest from Resource (step 2)</short_desc>
          <delta_ts>2012-04-12 06:13:07 -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 (Deprecated)</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>601120</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-04-12 05:20:02 -0700</bug_when>
    <thetext>This step moves request-related views from being resource-based to request-based.
See https://bugs.webkit.org/show_bug.cgi?id=61363 for the meta bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601137</commentid>
    <comment_count>1</comment_count>
      <attachid>136886</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-04-12 05:54:52 -0700</bug_when>
    <thetext>Created attachment 136886
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601143</commentid>
    <comment_count>2</comment_count>
      <attachid>136886</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-04-12 06:02:35 -0700</bug_when>
    <thetext>Comment on attachment 136886
Patch

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

&gt; Source/WebCore/inspector/front-end/Resource.js:168
&gt; +    request: function()

Could you do rename and modifications like this in separate patches please, otherwise it is impossible to say if it breaks anything as the change size grows to more than 100Kb?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601145</commentid>
    <comment_count>3</comment_count>
      <attachid>136886</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-04-12 06:04:29 -0700</bug_when>
    <thetext>Comment on attachment 136886
Patch

Attachment 136886 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/12390410</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601149</commentid>
    <comment_count>4</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-04-12 06:06:15 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 136886 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=136886&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/Resource.js:168
&gt; &gt; +    request: function()
&gt; 
&gt; Could you do rename and modifications like this in separate patches please, otherwise it is impossible to say if it breaks anything as the change size grows to more than 100Kb?

Reverted this change, sorry about that. I was splitting a larger patch, so it squeezed in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601151</commentid>
    <comment_count>5</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-04-12 06:13:07 -0700</bug_when>
    <thetext>Committed r113966: &lt;http://trac.webkit.org/changeset/113966&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136886</attachid>
            <date>2012-04-12 05:54:52 -0700</date>
            <delta_ts>2012-04-12 06:04:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83773-20120412165449.patch</filename>
            <type>text/plain</type>
            <size>127439</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzODM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGUzMGIyNDUzMWM1NmI0
MGFlODZjZjY0YTc4NzAyMmJhOWU5MjQ0NS4uNDI2YTEwZjE5ZGYyODgyNDQxNDBiZTE5ZGQ1ZTZm
Y2Y1MWRhYTMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDEyLTA0LTEyICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IGV4dHJhY3RpbmcgTmV0d29ya1JlcXVlc3QgZnJvbSBSZXNvdXJjZSAoc3RlcCAyKQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODM3NzMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHN0ZXAgbW92
ZXMgcmVxdWVzdC1yZWxhdGVkIHZpZXdzIGZyb20gYmVpbmcgcmVzb3VyY2UtYmFzZWQgdG8gcmVx
dWVzdC1iYXNlZC4KKyAgICAgICAgU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02MTM2MyBmb3IgdGhlIG1ldGEgYnVnLgorCisgICAgICAgICogV2ViQ29yZS5neXBp
OgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIGlu
c3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5weToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL0NvbnRlbnRQcm92aWRlcnMuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VD
b250ZW50UHJvdmlkZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlQ29udGVudFBy
b3ZpZGVyLnByb3RvdHlwZS5yZXF1ZXN0Q29udGVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
UmVzb3VyY2VDb250ZW50UHJvdmlkZXIucHJvdG90eXBlLnNlYXJjaEluQ29udGVudCk6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrSXRlbVZpZXcuanM6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuTmV0d29ya0l0ZW1WaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXF1
ZXN0Q29udGVudFZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlcXVlc3RDb250ZW50Vmll
dy5wcm90b3R5cGUuX2Vuc3VyZUlubmVyVmlld1Nob3duKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3Jr
TG9nVmlldy5wcm90b3R5cGUuX3Nob3dQb3BvdmVyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL05ldHdvcmtSZXF1ZXN0LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtS
ZXF1ZXN0LnByb3RvdHlwZS5yZXNvdXJjZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVu
ZC9SYXdTb3VyY2VDb2RlLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUu
cHJvdG90eXBlLl9jcmVhdGVDb250ZW50UHJvdmlkZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvUmVxdWVzdENvb2tpZXNWaWV3LmpzOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZUNvb2tpZXNWaWV3LmpzLgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlJlcXVlc3RDb29raWVzVmlldyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9SZXF1ZXN0SFRNTFZpZXcuanM6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlSFRNTFZpZXcuanMuCisgICAgICAgIChXZWJJbnNw
ZWN0b3IuUmVxdWVzdEhUTUxWaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXF1ZXN0SFRN
TFZpZXcucHJvdG90eXBlLl9jcmVhdGVJRnJhbWUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvUmVxdWVzdEhlYWRlcnNWaWV3LmpzOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZUhlYWRlcnNWaWV3LmpzLgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlJlcXVlc3RIZWFkZXJzVmlldyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250
LWVuZC9SZXF1ZXN0SlNPTlZpZXcuanM6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlSlNPTlZpZXcuanMuCisgICAgICAgIChXZWJJbnNwZWN0
b3IuUmVxdWVzdEpTT05WaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXF1ZXN0SlNPTlZp
ZXcucGFyc2VKU09OLldlYkluc3BlY3Rvci5SZXF1ZXN0SlNPTlZpZXcucGFyc2VKU09OUCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9SZXF1ZXN0UHJldmlld1ZpZXcuanM6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlUHJldmll
d1ZpZXcuanMuCisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVxdWVzdFByZXZpZXdWaWV3KToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5SZXF1ZXN0UHJldmlld1ZpZXcucHJvdG90eXBlLmNvbnRlbnRM
b2FkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlcXVlc3RQcmV2aWV3Vmlldy5wcm90b3R5
cGUuX2NyZWF0ZVByZXZpZXdWaWV3KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Jl
cXVlc3RSZXNwb25zZVZpZXcuanM6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1Jlc291cmNlUmVzcG9uc2VWaWV3LmpzLgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlJlcXVlc3RSZXNwb25zZVZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlcXVlc3RS
ZXNwb25zZVZpZXcucHJvdG90eXBlLmdldCBzb3VyY2VWaWV3KToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5SZXF1ZXN0UmVzcG9uc2VWaWV3LnByb3RvdHlwZS5jb250ZW50TG9hZGVkKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1JlcXVlc3RUaW1pbmdWaWV3LmpzOiBSZW5hbWVkIGZy
b20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVRpbWluZ1ZpZXcu
anMuCisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVxdWVzdFRpbWluZ1ZpZXcpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlJlcXVlc3RUaW1pbmdWaWV3LnByb3RvdHlwZS5fcmVmcmVzaCk6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9SZXF1ZXN0Vmlldy5qczogQ29waWVkIGZyb20gU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUmVxdWVzdC5qcy4KKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5SZXF1ZXN0Vmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVx
dWVzdFZpZXcucHJvdG90eXBlLmhhc0NvbnRlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJl
cXVlc3RWaWV3Lmhhc1RleHRDb250ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXF1ZXN0
Vmlldy5ub25Tb3VyY2VWaWV3Rm9yUmVxdWVzdCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250
LWVuZC9SZXNvdXJjZVZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VTb3Vy
Y2VGcmFtZS5fY2Fub25pY2FsTUlNRVR5cGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291
cmNlU291cmNlRnJhbWUuX21pbWVUeXBlRm9yUmVzb3VyY2UpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlJlc291cmNlU291cmNlRnJhbWUucHJvdG90eXBlLnJlcXVlc3RDb250ZW50KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVNvdXJjZUZyYW1lLnByb3RvdHlwZS5fY29udGVudENo
YW5nZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlUmV2aXNpb25Tb3VyY2VGcmFt
ZS5wcm90b3R5cGUucmVxdWVzdENvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvV2ViS2l0LnFyYzoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5o
dG1sOgorCiAyMDEyLTA0LTEyICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEZpeCBhIGNvdXBsZSBvZiBjb21waWxlciBhbm5vdGF0
aW9ucyBhZnRlciByMTEzOTYzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGE5MzExZWMxZjM2MWI5YzE2
NzM0MDBlOTM3YjQ5MDdkMzZiM2M5MmQuLjY3NGNiNGQ5YWYzODFjZTJiNjYxZTQ0NzYyMWJjMjNh
ODNkZDY1NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTYzNjEsMjAgKzYzNjEsMjEgQEAKICAgICAg
ICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1Byb3BlcnRpZXNTaWRlYmFyUGFuZS5qcycsCiAg
ICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9SYXdTb3VyY2VDb2RlLmpzJywKICAgICAg
ICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1JlbW90ZU9iamVjdC5qcycsCisgICAgICAgICAg
ICAnaW5zcGVjdG9yL2Zyb250LWVuZC9SZXF1ZXN0Q29va2llc1ZpZXcuanMnLAorICAgICAgICAg
ICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvUmVxdWVzdEhlYWRlcnNWaWV3LmpzJywKKyAgICAgICAg
ICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1JlcXVlc3RKU09OVmlldy5qcycsCisgICAgICAgICAg
ICAnaW5zcGVjdG9yL2Zyb250LWVuZC9SZXF1ZXN0SFRNTFZpZXcuanMnLAorICAgICAgICAgICAg
J2luc3BlY3Rvci9mcm9udC1lbmQvUmVxdWVzdFByZXZpZXdWaWV3LmpzJywKKyAgICAgICAgICAg
ICdpbnNwZWN0b3IvZnJvbnQtZW5kL1JlcXVlc3RSZXNwb25zZVZpZXcuanMnLAorICAgICAgICAg
ICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvUmVxdWVzdFRpbWluZ1ZpZXcuanMnLAorICAgICAgICAg
ICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvUmVxdWVzdFZpZXcuanMnLAogICAgICAgICAgICAgJ2lu
c3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2UuanMnLAotICAgICAgICAgICAgJ2luc3BlY3Rvci9m
cm9udC1lbmQvUmVzb3VyY2VDb29raWVzVmlldy5qcycsCi0gICAgICAgICAgICAnaW5zcGVjdG9y
L2Zyb250LWVuZC9SZXNvdXJjZUhlYWRlcnNWaWV3LmpzJywKLSAgICAgICAgICAgICdpbnNwZWN0
b3IvZnJvbnQtZW5kL1Jlc291cmNlSlNPTlZpZXcuanMnLAotICAgICAgICAgICAgJ2luc3BlY3Rv
ci9mcm9udC1lbmQvUmVzb3VyY2VIVE1MVmlldy5qcycsCi0gICAgICAgICAgICAnaW5zcGVjdG9y
L2Zyb250LWVuZC9SZXNvdXJjZVJlc3BvbnNlVmlldy5qcycsCiAgICAgICAgICAgICAnaW5zcGVj
dG9yL2Zyb250LWVuZC9SZXNvdXJjZVNjcmlwdE1hcHBpbmcuanMnLAotICAgICAgICAgICAgJ2lu
c3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VUaW1pbmdWaWV3LmpzJywKICAgICAgICAgICAgICdp
bnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVHJlZU1vZGVsLmpzJywKICAgICAgICAgICAgICdp
bnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVHlwZS5qcycsCiAgICAgICAgICAgICAnaW5zcGVj
dG9yL2Zyb250LWVuZC9SZXNvdXJjZVV0aWxzLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3Iv
ZnJvbnQtZW5kL1Jlc291cmNlVmlldy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250
LWVuZC9SZXNvdXJjZXNQYW5lbC5qcycsCi0gICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVu
ZC9SZXNvdXJjZVByZXZpZXdWaWV3LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQt
ZW5kL1Njb3BlQ2hhaW5TaWRlYmFyUGFuZS5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zy
b250LWVuZC9TY3JpcHQuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvU2Ny
aXB0Rm9ybWF0dGVyLmpzJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oKaW5kZXggMzY4NjFkMjMzYjJlMGYyMjljMjJhNWI5Y2VlZDdlNGJmODdmZTY0Yi4u
YjBhYmU3ZWUwMmQ4ZGZiMDEzNTRlM2ViMzU2ZWViM2Q0MTdlZmU0YSAxMDA3NTUKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTc0MDgxLDQ3ICs3NDA4MSw1
MSBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCi0JCQkJCVJlbGF0aXZlUGF0aD0i
Li5caW5zcGVjdG9yXGZyb250LWVuZFxSZXNvdXJjZS5qcyIKKwkJCQkJUmVsYXRpdmVQYXRoPSIu
LlxpbnNwZWN0b3JcZnJvbnQtZW5kXFJlcXVlc3RDb29raWVzVmlldy5qcyIKIAkJCQkJPgogCQkJ
CTwvRmlsZT4KIAkJCQk8RmlsZQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9u
dC1lbmRcUmVzb3VyY2VDb29raWVzVmlldy5qcyIKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNw
ZWN0b3JcZnJvbnQtZW5kXFJlcXVlc3RIZWFkZXJzVmlldy5qcyIKIAkJCQkJPgogCQkJCTwvRmls
ZT4KIAkJCQk8RmlsZQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRc
UmVzb3VyY2VIZWFkZXJzVmlldy5qcyIKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3Jc
ZnJvbnQtZW5kXFJlcXVlc3RIVE1MVmlldy5qcyIKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8
RmlsZQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcUmVzb3VyY2VI
VE1MVmlldy5qcyIKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXFJl
cXVlc3RKU09OVmlldy5qcyIKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQotCQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcUmVzb3VyY2VKU09OVmlldy5qcyIK
KwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXFJlcXVlc3RQcmV2aWV3
Vmlldy5qcyIKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQotCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcUmVzb3VyY2VQcmV2aWV3Vmlldy5qcyIKKwkJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXFJlcXVlc3RSZXNwb25zZVZpZXcu
anMiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKLQkJCQkJUmVsYXRpdmVQYXRoPSIu
LlxpbnNwZWN0b3JcZnJvbnQtZW5kXFJlc291cmNlUmVzcG9uc2VWaWV3LmpzIgorCQkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcUmVxdWVzdFRpbWluZ1ZpZXcuanMiCiAJ
CQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNw
ZWN0b3JcZnJvbnQtZW5kXHJlc291cmNlc1BhbmVsLmNzcyIKKwkJCQkJUmVsYXRpdmVQYXRoPSIu
LlxpbnNwZWN0b3JcZnJvbnQtZW5kXFJlcXVlc3RWaWV3LmpzIgogCQkJCQk+CiAJCQkJPC9GaWxl
PgogCQkJCTxGaWxlCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxS
ZXNvdXJjZXNQYW5lbC5qcyIKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQt
ZW5kXFJlc291cmNlLmpzIgogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCi0JCQkJCVJl
bGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxSZXNvdXJjZVNjcmlwdE1hcHBpbmcu
anMiCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxyZXNvdXJjZXNQ
YW5lbC5jc3MiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKLQkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXFJlc291cmNlVGltaW5nVmlldy5qcyIKKwkJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXFJlc291cmNlc1BhbmVsLmpzIgor
CQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5z
cGVjdG9yXGZyb250LWVuZFxSZXNvdXJjZVNjcmlwdE1hcHBpbmcuanMiCiAJCQkJCT4KIAkJCQk8
L0ZpbGU+CiAJCQkJPEZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9j
b21waWxlLWZyb250LWVuZC5weSBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZy
b250LWVuZC5weQppbmRleCA5MDNhYTgyZmU5NDQyNTQwMTg5ZDlmZDhlZDFiNGQ0MjI3NjFkMzY3
Li5kZmE4OTg3ZTA4N2EwYjZjNGZjZmRjMDA1NWZjNWYwODRhNmRiOWI0IDEwMDc1NQotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQucHkKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5CkBAIC0xNzUsMTMgKzE3NSwx
NCBAQCBtb2R1bGVzID0gWwogICAgICAgICAgICAgIkZvbnRWaWV3LmpzIiwKICAgICAgICAgICAg
ICJJbWFnZVZpZXcuanMiLAogICAgICAgICAgICAgIk5ldHdvcmtJdGVtVmlldy5qcyIsCi0gICAg
ICAgICAgICAiUmVzb3VyY2VDb29raWVzVmlldy5qcyIsCi0gICAgICAgICAgICAiUmVzb3VyY2VI
ZWFkZXJzVmlldy5qcyIsCi0gICAgICAgICAgICAiUmVzb3VyY2VIVE1MVmlldy5qcyIsCi0gICAg
ICAgICAgICAiUmVzb3VyY2VKU09OVmlldy5qcyIsCi0gICAgICAgICAgICAiUmVzb3VyY2VQcmV2
aWV3Vmlldy5qcyIsCi0gICAgICAgICAgICAiUmVzb3VyY2VSZXNwb25zZVZpZXcuanMiLAotICAg
ICAgICAgICAgIlJlc291cmNlVGltaW5nVmlldy5qcyIsCisgICAgICAgICAgICAiUmVxdWVzdENv
b2tpZXNWaWV3LmpzIiwKKyAgICAgICAgICAgICJSZXF1ZXN0SGVhZGVyc1ZpZXcuanMiLAorICAg
ICAgICAgICAgIlJlcXVlc3RIVE1MVmlldy5qcyIsCisgICAgICAgICAgICAiUmVxdWVzdEpTT05W
aWV3LmpzIiwKKyAgICAgICAgICAgICJSZXF1ZXN0UHJldmlld1ZpZXcuanMiLAorICAgICAgICAg
ICAgIlJlcXVlc3RSZXNwb25zZVZpZXcuanMiLAorICAgICAgICAgICAgIlJlcXVlc3RUaW1pbmdW
aWV3LmpzIiwKKyAgICAgICAgICAgICJSZXF1ZXN0Vmlldy5qcyIsCiAgICAgICAgICAgICAiUmVz
b3VyY2VWaWV3LmpzIiwKICAgICAgICAgICAgICJOZXR3b3JrUGFuZWwuanMiLAogICAgICAgICBd
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0UnVs
ZXMuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0UnVsZXMuanMK
aW5kZXggODEzZGJjNjE5ZjA2ZjRjMjcyM2E3ZjFhN2FkZWU5MDZhZTZkYzIxZi4uMGRkZjg1ZWRl
MmVlZTE3ZWM0MTNkOWY3NDdiMzE0YjhmM2QzM2ZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdFJ1bGVzLmpzCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRSdWxlcy5qcwpAQCAtMzU2LDcgKzM1Niw3IEBAIFdl
Ykluc3BlY3Rvci5BdWRpdFJ1bGVzLlVudXNlZENzc1J1bGUucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgICAgICAgICAgdmFyIHJl
c291cmNlID0gV2ViSW5zcGVjdG9yLnJlc291cmNlRm9yVVJMKHN0eWxlU2hlZXQuc291cmNlVVJM
KTsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGlzSW5saW5lQmxvY2sgPSByZXNvdXJjZSAmJiBy
ZXNvdXJjZS5yZXF1ZXN0ICYmIHJlc291cmNlLnJlcXVlc3QudHlwZSA9PSBXZWJJbnNwZWN0b3Iu
cmVzb3VyY2VUeXBlcy5Eb2N1bWVudDsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGlzSW5saW5l
QmxvY2sgPSByZXNvdXJjZSAmJiByZXNvdXJjZS5yZXF1ZXN0KCkgJiYgcmVzb3VyY2UucmVxdWVz
dCgpLnR5cGUgPT0gV2ViSW5zcGVjdG9yLnJlc291cmNlVHlwZXMuRG9jdW1lbnQ7CiAgICAgICAg
ICAgICAgICAgICAgIHZhciB1cmwgPSAhaXNJbmxpbmVCbG9jayA/IFdlYkluc3BlY3Rvci5BdWRp
dFJ1bGVSZXN1bHQubGlua2lmeURpc3BsYXlOYW1lKHN0eWxlU2hlZXQuc291cmNlVVJMKSA6IFN0
cmluZy5zcHJpbnRmKCJJbmxpbmUgYmxvY2sgIyVkIiwgKytpbmxpbmVCbG9ja09yZGluYWwpOwog
ICAgICAgICAgICAgICAgICAgICB2YXIgcGN0VW51c2VkID0gTWF0aC5yb3VuZCgxMDAgKiB1bnVz
ZWRTdHlsZXNoZWV0U2l6ZSAvIHN0eWxlc2hlZXRTaXplKTsKICAgICAgICAgICAgICAgICAgICAg
aWYgKCFzdW1tYXJ5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9Db250ZW50UHJvdmlkZXJzLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9Db250ZW50UHJvdmlkZXJzLmpzCmluZGV4IGMxNGE1MzBjYTVlNDdhMjg5NWU1YzIzY2Rk
MjdmOGZkZGMyMmY4MzUuLjQzOWYyYzU2NzEyNmM4NDZmN2UyOGRlODM3NjdlNWRmOGViNGZhOTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29udGVudFBy
b3ZpZGVycy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnRl
bnRQcm92aWRlcnMuanMKQEAgLTIwNSwxMiArMjA1LDEyIEBAIFdlYkluc3BlY3Rvci5Db25jYXRl
bmF0ZWRTY3JpcHRzQ29udGVudFByb3ZpZGVyLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNw
ZWN0CiAvKioKICAqIEBjb25zdHJ1Y3RvcgogICogQGltcGxlbWVudHMge1dlYkluc3BlY3Rvci5D
b250ZW50UHJvdmlkZXJ9Ci0gKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5OZXR3b3JrUmVxdWVzdH0g
cmVxdWVzdAorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2V9IHJlc291cmNlCiAgKi8K
LVdlYkluc3BlY3Rvci5SZXNvdXJjZUNvbnRlbnRQcm92aWRlciA9IGZ1bmN0aW9uKHJlcXVlc3Qp
CitXZWJJbnNwZWN0b3IuUmVzb3VyY2VDb250ZW50UHJvdmlkZXIgPSBmdW5jdGlvbihyZXNvdXJj
ZSkKIHsKLSAgICB0aGlzLl9taW1lVHlwZSA9IHJlcXVlc3QudHlwZSA9PT0gV2ViSW5zcGVjdG9y
LnJlc291cmNlVHlwZXMuU2NyaXB0ID8gInRleHQvamF2YXNjcmlwdCIgOiAidGV4dC9odG1sIjsK
LSAgICB0aGlzLl9yZXF1ZXN0ID0gcmVxdWVzdDsKKyAgICB0aGlzLl9taW1lVHlwZSA9IHJlc291
cmNlLnR5cGUgPT09IFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5cGVzLlNjcmlwdCA/ICJ0ZXh0L2ph
dmFzY3JpcHQiIDogInRleHQvaHRtbCI7CisgICAgdGhpcy5fcmVzb3VyY2UgPSByZXNvdXJjZTsK
IH07CiAKIFdlYkluc3BlY3Rvci5SZXNvdXJjZUNvbnRlbnRQcm92aWRlci5wcm90b3R5cGUgPSB7
CkBAIC0yMjMsNyArMjIzLDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlQ29udGVudFByb3ZpZGVy
LnByb3RvdHlwZSA9IHsKICAgICAgICAgewogICAgICAgICAgICAgY2FsbGJhY2sodGhpcy5fbWlt
ZVR5cGUsIGNvbnRlbnQpOwogICAgICAgICB9Ci0gICAgICAgIHRoaXMuX3JlcXVlc3QucmVxdWVz
dENvbnRlbnQoZGlkUmVxdWVzdENvbnRlbnQuYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX3Jl
c291cmNlLnJlcXVlc3RDb250ZW50KGRpZFJlcXVlc3RDb250ZW50LmJpbmQodGhpcykpOwogICAg
IH0sCiAKICAgICAvKioKQEAgLTIzNCw3ICsyMzQsNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VD
b250ZW50UHJvdmlkZXIucHJvdG90eXBlID0gewogICAgICAqLwogICAgIHNlYXJjaEluQ29udGVu
dDogZnVuY3Rpb24ocXVlcnksIGNhc2VTZW5zaXRpdmUsIGlzUmVnZXgsIGNhbGxiYWNrKQogICAg
IHsKLSAgICAgICAgdGhpcy5fcmVxdWVzdC5zZWFyY2hJbkNvbnRlbnQocXVlcnksIGNhc2VTZW5z
aXRpdmUsIGlzUmVnZXgsIGNhbGxiYWNrKTsKKyAgICAgICAgdGhpcy5fcmVzb3VyY2Uuc2VhcmNo
SW5Db250ZW50KHF1ZXJ5LCBjYXNlU2Vuc2l0aXZlLCBpc1JlZ2V4LCBjYWxsYmFjayk7CiAgICAg
fQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05l
dHdvcmtJdGVtVmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0
d29ya0l0ZW1WaWV3LmpzCmluZGV4IDljOWNhYzMxN2MxNTAxNjY4M2Q0NDNjYzJhYzIzNmJlYjEx
YmYwZjUuLjY4ZTQ5MGNmMzc3MDVjM2FhNmE5MGMzZDA2Yzc2YzhiMTQ3N2RhOTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya0l0ZW1WaWV3Lmpz
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya0l0ZW1WaWV3
LmpzCkBAIC0yOSwzMSArMjksMzEgQEAKICAqLwogCiAvKioKLSAqIEBleHRlbmRzIHtXZWJJbnNw
ZWN0b3IuVGFiYmVkUGFuZX0KICAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3Bl
Y3Rvci5UYWJiZWRQYW5lfQorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVlc3R9
IHJlcXVlc3QKICAqLwotV2ViSW5zcGVjdG9yLk5ldHdvcmtJdGVtVmlldyA9IGZ1bmN0aW9uKHJl
c291cmNlKQorV2ViSW5zcGVjdG9yLk5ldHdvcmtJdGVtVmlldyA9IGZ1bmN0aW9uKHJlcXVlc3Qp
CiB7CiAgICAgV2ViSW5zcGVjdG9yLlRhYmJlZFBhbmUuY2FsbCh0aGlzKTsKLQogICAgIHRoaXMu
ZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJuZXR3b3JrLWl0ZW0tdmlldyIpOwogCi0gICAgdmFyIGhl
YWRlcnNWaWV3ID0gbmV3IFdlYkluc3BlY3Rvci5SZXNvdXJjZUhlYWRlcnNWaWV3KHJlc291cmNl
LnJlcXVlc3QpOworICAgIHZhciBoZWFkZXJzVmlldyA9IG5ldyBXZWJJbnNwZWN0b3IuUmVxdWVz
dEhlYWRlcnNWaWV3KHJlcXVlc3QpOwogICAgIHRoaXMuYXBwZW5kVGFiKCJoZWFkZXJzIiwgV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJIZWFkZXJzIiksIGhlYWRlcnNWaWV3KTsKIAotICAgIHZhciBy
ZXNwb25zZVZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLlJlc291cmNlUmVzcG9uc2VWaWV3KHJlc291
cmNlKTsKLSAgICB2YXIgcHJldmlld1ZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLlJlc291cmNlUHJl
dmlld1ZpZXcocmVzb3VyY2UsIHJlc3BvbnNlVmlldyk7CisgICAgdmFyIHJlc3BvbnNlVmlldyA9
IG5ldyBXZWJJbnNwZWN0b3IuUmVxdWVzdFJlc3BvbnNlVmlldyhyZXF1ZXN0KTsKKyAgICB2YXIg
cHJldmlld1ZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLlJlcXVlc3RQcmV2aWV3VmlldyhyZXF1ZXN0
LCByZXNwb25zZVZpZXcpOwogCiAgICAgdGhpcy5hcHBlbmRUYWIoInByZXZpZXciLCBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIlByZXZpZXciKSwgcHJldmlld1ZpZXcpOwogICAgIHRoaXMuYXBwZW5k
VGFiKCJyZXNwb25zZSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVzcG9uc2UiKSwgcmVzcG9u
c2VWaWV3KTsKIAotICAgIGlmIChyZXNvdXJjZS5yZXF1ZXN0Q29va2llcyB8fCByZXNvdXJjZS5y
ZXNwb25zZUNvb2tpZXMpIHsKLSAgICAgICAgdGhpcy5fY29va2llc1ZpZXcgPSBuZXcgV2ViSW5z
cGVjdG9yLlJlc291cmNlQ29va2llc1ZpZXcocmVzb3VyY2UucmVxdWVzdCk7CisgICAgaWYgKHJl
cXVlc3QucmVxdWVzdENvb2tpZXMgfHwgcmVxdWVzdC5yZXNwb25zZUNvb2tpZXMpIHsKKyAgICAg
ICAgdGhpcy5fY29va2llc1ZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLlJlcXVlc3RDb29raWVzVmll
dyhyZXF1ZXN0KTsKICAgICAgICAgdGhpcy5hcHBlbmRUYWIoImNvb2tpZXMiLCBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIkNvb2tpZXMiKSwgdGhpcy5fY29va2llc1ZpZXcpOwogICAgIH0KIAotICAg
IGlmIChyZXNvdXJjZS50aW1pbmcpIHsKLSAgICAgICAgdmFyIHRpbWluZ1ZpZXcgPSBuZXcgV2Vi
SW5zcGVjdG9yLlJlc291cmNlVGltaW5nVmlldyhyZXNvdXJjZS5yZXF1ZXN0KTsKKyAgICBpZiAo
cmVxdWVzdC50aW1pbmcpIHsKKyAgICAgICAgdmFyIHRpbWluZ1ZpZXcgPSBuZXcgV2ViSW5zcGVj
dG9yLlJlcXVlc3RUaW1pbmdWaWV3KHJlcXVlc3QpOwogICAgICAgICB0aGlzLmFwcGVuZFRhYigi
dGltaW5nIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUaW1pbmciKSwgdGltaW5nVmlldyk7CiAg
ICAgfQogCkBAIC05MiwxNSArOTIsMTYgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtJdGVtVmlldy5w
cm90b3R5cGUgPSB7CiBXZWJJbnNwZWN0b3IuTmV0d29ya0l0ZW1WaWV3LnByb3RvdHlwZS5fX3By
b3RvX18gPSBXZWJJbnNwZWN0b3IuVGFiYmVkUGFuZS5wcm90b3R5cGU7CiAKIC8qKgotICogQGV4
dGVuZHMge1dlYkluc3BlY3Rvci5SZXNvdXJjZVZpZXd9CiAgKiBAY29uc3RydWN0b3IKKyAqIEBl
eHRlbmRzIHtXZWJJbnNwZWN0b3IuUmVxdWVzdFZpZXd9CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rv
ci5OZXR3b3JrUmVxdWVzdH0gcmVxdWVzdAogICovCi1XZWJJbnNwZWN0b3IuUmVzb3VyY2VDb250
ZW50VmlldyA9IGZ1bmN0aW9uKHJlc291cmNlKQorV2ViSW5zcGVjdG9yLlJlcXVlc3RDb250ZW50
VmlldyA9IGZ1bmN0aW9uKHJlcXVlc3QpCiB7Ci0gICAgV2ViSW5zcGVjdG9yLlJlc291cmNlVmll
dy5jYWxsKHRoaXMsIHJlc291cmNlKTsKKyAgICBXZWJJbnNwZWN0b3IuUmVxdWVzdFZpZXcuY2Fs
bCh0aGlzLCByZXF1ZXN0KTsKIH0KIAotV2ViSW5zcGVjdG9yLlJlc291cmNlQ29udGVudFZpZXcu
cHJvdG90eXBlID0geworV2ViSW5zcGVjdG9yLlJlcXVlc3RDb250ZW50Vmlldy5wcm90b3R5cGUg
PSB7CiAgICAgaGFzQ29udGVudDogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRy
dWU7CkBAIC0xMzMsNyArMTM0LDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlQ29udGVudFZpZXcu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5jb250ZW50TG9hZGVkKCk7CiAgICAgICAg
IH0KIAotICAgICAgICB0aGlzLnJlc291cmNlLnJlcXVlc3RDb250ZW50KGNhbGxiYWNrLmJpbmQo
dGhpcykpOworICAgICAgICB0aGlzLnJlcXVlc3QucmVxdWVzdENvbnRlbnQoY2FsbGJhY2suYmlu
ZCh0aGlzKSk7CiAgICAgfSwKIAogICAgIGNvbnRlbnRMb2FkZWQ6IGZ1bmN0aW9uKCkKQEAgLTE1
Myw0ICsxNTQsNCBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGUg
PSB7CiAgICAgfQogfQogCi1XZWJJbnNwZWN0b3IuUmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5
cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5wcm90b3R5cGU7CitXZWJJ
bnNwZWN0b3IuUmVxdWVzdENvbnRlbnRWaWV3LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNw
ZWN0b3IuUmVxdWVzdFZpZXcucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qcwppbmRleCBjMmRkMGFhZDhhZGE4MzUzZDZj
MGE2NDk4NmI5NjUzMGM4YmM1YWE1Li4zY2JhMWRhZGNjNmFlMzBmNWQyMTU1NDY3MGRhYmRlZjBh
NGU2ZTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05l
dHdvcmtQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05l
dHdvcmtQYW5lbC5qcwpAQCAtOTI2LDcgKzkyNiw3IEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrTG9n
Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgX3Nob3dQb3BvdmVyOiBmdW5jdGlvbihhbmNob3IsIHBv
cG92ZXIpCiAgICAgewogICAgICAgICB2YXIgcmVxdWVzdCA9IGFuY2hvci5wYXJlbnRFbGVtZW50
LnJlcXVlc3Q7Ci0gICAgICAgIHZhciB0YWJsZUVsZW1lbnQgPSBXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2VUaW1pbmdWaWV3LmNyZWF0ZVRpbWluZ1RhYmxlKHJlcXVlc3QpOworICAgICAgICB2YXIgdGFi
bGVFbGVtZW50ID0gV2ViSW5zcGVjdG9yLlJlcXVlc3RUaW1pbmdWaWV3LmNyZWF0ZVRpbWluZ1Rh
YmxlKHJlcXVlc3QpOwogICAgICAgICBwb3BvdmVyLnNob3codGFibGVFbGVtZW50LCBhbmNob3Ip
OwogICAgIH0sCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvUmF3U291cmNlQ29kZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
UmF3U291cmNlQ29kZS5qcwppbmRleCA3ZjRiNzE5MGZlOWY0N2M1NmRmY2MzMTRiOWRjYjRiYmVh
MjkyZWIxLi45N2I5Y2Q2MjcyNWJjZDQwNDkwZWNjMzE5N2NhYzZlNDE0YmY0Y2Y1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jhd1NvdXJjZUNvZGUuanMK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SYXdTb3VyY2VDb2RlLmpz
CkBAIC0xNjEsOSArMTYxLDggQEAgV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUucHJvdG90eXBl
ID0gewogCiAgICAgX2NyZWF0ZUNvbnRlbnRQcm92aWRlcjogZnVuY3Rpb24oKQogICAgIHsKLSAg
ICAgICAgaWYgKHRoaXMuX3JlcXVlc3QgJiYgdGhpcy5fcmVxdWVzdC5maW5pc2hlZCkgewotICAg
ICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDb250ZW50UHJvdmlkZXIo
dGhpcy5fcmVxdWVzdCk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKHRoaXMuX3JlcXVlc3QgJiYg
dGhpcy5fcmVxdWVzdC5maW5pc2hlZCkKKyAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVj
dG9yLlJlc291cmNlQ29udGVudFByb3ZpZGVyKHRoaXMuX3JlcXVlc3QucmVzb3VyY2UoKSk7CiAg
ICAgICAgIGlmICh0aGlzLl9zY3JpcHRzLmxlbmd0aCA9PT0gMSAmJiAhdGhpcy5fc2NyaXB0c1sw
XS5saW5lT2Zmc2V0ICYmICF0aGlzLl9zY3JpcHRzWzBdLmNvbHVtbk9mZnNldCkKICAgICAgICAg
ICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlNjcmlwdENvbnRlbnRQcm92aWRlcih0aGlzLl9z
Y3JpcHRzWzBdKTsKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuQ29uY2F0ZW5hdGVk
U2NyaXB0c0NvbnRlbnRQcm92aWRlcih0aGlzLl9zY3JpcHRzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVxdWVzdENvb2tpZXNWaWV3LmpzIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXF1ZXN0Q29va2llc1ZpZXcuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZGJhZjlkMzZhMGUwY2U1NzI3NzRiNTc1MDZhYmE1MjkwNzUzNDc5YQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVxdWVzdENv
b2tpZXNWaWV3LmpzCkBAIC0wLDAgKzEsODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4
dGVuZHMge1dlYkluc3BlY3Rvci5WaWV3fQorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuTmV0d29y
a1JlcXVlc3R9IHJlcXVlc3QKKyAqLworV2ViSW5zcGVjdG9yLlJlcXVlc3RDb29raWVzVmlldyA9
IGZ1bmN0aW9uKHJlcXVlc3QpCit7CisgICAgV2ViSW5zcGVjdG9yLlZpZXcuY2FsbCh0aGlzKTsK
KyAgICB0aGlzLmVsZW1lbnQuYWRkU3R5bGVDbGFzcygicmVzb3VyY2UtY29va2llcy12aWV3Iik7
CisKKyAgICB0aGlzLl9yZXF1ZXN0ID0gcmVxdWVzdDsKKworICAgIHJlcXVlc3QuYWRkRXZlbnRM
aXN0ZW5lcihXZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVlc3QuRXZlbnRzLlJlcXVlc3RIZWFkZXJz
Q2hhbmdlZCwgdGhpcy5fcmVmcmVzaENvb2tpZXMsIHRoaXMpOworICAgIHJlcXVlc3QuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVlc3QuRXZlbnRzLlJlc3BvbnNlSGVh
ZGVyc0NoYW5nZWQsIHRoaXMuX3JlZnJlc2hDb29raWVzLCB0aGlzKTsKK30KKworV2ViSW5zcGVj
dG9yLlJlcXVlc3RDb29raWVzVmlldy5wcm90b3R5cGUgPSB7CisgICAgd2FzU2hvd246IGZ1bmN0
aW9uKCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fZ290Q29va2llcykgeworICAgICAgICAg
ICAgaWYgKCF0aGlzLl9lbXB0eVZpZXcpIHsKKyAgICAgICAgICAgICAgICB0aGlzLl9lbXB0eVZp
ZXcgPSBuZXcgV2ViSW5zcGVjdG9yLkVtcHR5VmlldyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRo
aXMgcmVxdWVzdCBoYXMgbm8gY29va2llcy4iKSk7CisgICAgICAgICAgICAgICAgdGhpcy5fZW1w
dHlWaWV3LnNob3codGhpcy5lbGVtZW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdGhpcy5fY29va2llc1RhYmxlKQorICAg
ICAgICAgICAgdGhpcy5fYnVpbGRDb29raWVzVGFibGUoKTsKKyAgICB9LAorCisgICAgZ2V0IF9n
b3RDb29raWVzKCkKKyAgICB7CisgICAgICAgIHJldHVybiAhISh0aGlzLl9yZXF1ZXN0LnJlcXVl
c3RDb29raWVzIHx8IHRoaXMuX3JlcXVlc3QucmVzcG9uc2VDb29raWVzKTsKKyAgICB9LAorCisg
ICAgX2J1aWxkQ29va2llc1RhYmxlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLmRl
dGFjaENoaWxkVmlld3MoKTsKKworICAgICAgICB0aGlzLl9jb29raWVzVGFibGUgPSBuZXcgV2Vi
SW5zcGVjdG9yLkNvb2tpZXNUYWJsZShudWxsLCB0cnVlKTsKKyAgICAgICAgdGhpcy5fY29va2ll
c1RhYmxlLmFkZENvb2tpZXNGb2xkZXIoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXF1ZXN0IENv
b2tpZXMiKSwgdGhpcy5fcmVxdWVzdC5yZXF1ZXN0Q29va2llcyk7CisgICAgICAgIHRoaXMuX2Nv
b2tpZXNUYWJsZS5hZGRDb29raWVzRm9sZGVyKFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVzcG9u
c2UgQ29va2llcyIpLCB0aGlzLl9yZXF1ZXN0LnJlc3BvbnNlQ29va2llcyk7CisgICAgICAgIHRo
aXMuX2Nvb2tpZXNUYWJsZS5zaG93KHRoaXMuZWxlbWVudCk7CisgICAgfSwKKworICAgIF9yZWZy
ZXNoQ29va2llczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgZGVsZXRlIHRoaXMuX2Nvb2tp
ZXNUYWJsZTsKKyAgICAgICAgaWYgKCF0aGlzLl9nb3RDb29raWVzIHx8ICF0aGlzLmlzU2hvd2lu
ZygpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0aGlzLl9idWlsZENvb2tpZXNUYWJs
ZSgpOworICAgICAgICB0aGlzLl9jb29raWVzVGFibGUudXBkYXRlV2lkdGhzKCk7CisgICAgfQor
fQorCitXZWJJbnNwZWN0b3IuUmVxdWVzdENvb2tpZXNWaWV3LnByb3RvdHlwZS5fX3Byb3RvX18g
PSBXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1JlcXVlc3RIVE1MVmlldy5qcyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvUmVxdWVzdEhUTUxWaWV3LmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxN2Y4
MTMwNTI4YjExZWFlNjc5OGVhMGY5YjU4ZWFmYmE2NzUwOTEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1JlcXVlc3RIVE1MVmlldy5qcwpAQCAt
MCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtXZWJJbnNwZWN0
b3IuUmVxdWVzdFZpZXd9CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5OZXR3b3JrUmVxdWVzdH0g
cmVxdWVzdAorICovCitXZWJJbnNwZWN0b3IuUmVxdWVzdEhUTUxWaWV3ID0gZnVuY3Rpb24ocmVx
dWVzdCkKK3sKKyAgICBXZWJJbnNwZWN0b3IuUmVxdWVzdFZpZXcuY2FsbCh0aGlzLCByZXF1ZXN0
KTsKKyAgICB0aGlzLmVsZW1lbnQuYWRkU3R5bGVDbGFzcygiaHRtbCIpOworfQorCitXZWJJbnNw
ZWN0b3IuUmVxdWVzdEhUTUxWaWV3LnByb3RvdHlwZSA9IHsKKyAgICBoYXNDb250ZW50OiBmdW5j
dGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9LAorCisgICAgd2FzU2hv
d246IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2NyZWF0ZUlGcmFtZSgpOworICAg
IH0sCisKKyAgICB3aWxsSGlkZTogZnVuY3Rpb24ocGFyZW50RWxlbWVudCkKKyAgICB7CisgICAg
ICAgIHRoaXMuZWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOworICAgIH0sCisKKyAgICBfY3JlYXRl
SUZyYW1lOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICAvLyBXZSBuZWVkIHRvIGNyZWF0ZSBp
ZnJhbWUgYWdhaW4gZWFjaCB0aW1lIGJlY2F1c2UgY29udGVudERvY3VtZW50CisgICAgICAgIC8v
IGlzIGRlbGV0ZWQgd2hlbiBpZnJhbWUgaXMgcmVtb3ZlZCBmcm9tIGl0cyBwYXJlbnQuCisgICAg
ICAgIHRoaXMuZWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOworICAgICAgICB2YXIgaWZyYW1lID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CisgICAgICAgIHRoaXMuZWxlbWVudC5h
cHBlbmRDaGlsZChpZnJhbWUpOworICAgICAgICBpZnJhbWUuc2V0QXR0cmlidXRlKCJzYW5kYm94
IiwgIiIpOyAvLyBGb3JiaWQgdG8gcnVuIEphdmFTY3JpcHQgYW5kIHNldCB1bmlxdWUgb3JpZ2lu
LgorCisgICAgICAgIGlmcmFtZS5jb250ZW50RG9jdW1lbnQuYm9keS5pbm5lckhUTUwgPSB0aGlz
LnJlcXVlc3QuY29udGVudDsKKyAgICB9Cit9CisKK1dlYkluc3BlY3Rvci5SZXF1ZXN0SFRNTFZp
ZXcucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5SZXF1ZXN0Vmlldy5wcm90b3R5
cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1JlcXVl
c3RIZWFkZXJzVmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVx
dWVzdEhlYWRlcnNWaWV3LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjViZmM4ODczM2ZmZWJkYzlkZTcyOGE1MzFm
YWIzYTQ1M2E3OWMwODcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1JlcXVlc3RIZWFkZXJzVmlldy5qcwpAQCAtMCwwICsxLDQxMyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSBJQk0gQ29ycC4gMjAwOSAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29t
cHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
CisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
Ky8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLlZpZXd9Cisg
KiBAcGFyYW0ge1dlYkluc3BlY3Rvci5OZXR3b3JrUmVxdWVzdH0gcmVxdWVzdAorICovCitXZWJJ
bnNwZWN0b3IuUmVxdWVzdEhlYWRlcnNWaWV3ID0gZnVuY3Rpb24ocmVxdWVzdCkKK3sKKyAgICBX
ZWJJbnNwZWN0b3IuVmlldy5jYWxsKHRoaXMpOworICAgIHRoaXMucmVnaXN0ZXJSZXF1aXJlZENT
UygicmVzb3VyY2VWaWV3LmNzcyIpOworICAgIHRoaXMuZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJy
ZXNvdXJjZS1oZWFkZXJzLXZpZXciKTsKKworICAgIHRoaXMuX3JlcXVlc3QgPSByZXF1ZXN0Owor
CisgICAgdGhpcy5faGVhZGVyc0xpc3RFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
b2wiKTsKKyAgICB0aGlzLl9oZWFkZXJzTGlzdEVsZW1lbnQuY2xhc3NOYW1lID0gIm91dGxpbmUt
ZGlzY2xvc3VyZSI7CisgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2hlYWRlcnNM
aXN0RWxlbWVudCk7CisKKyAgICB0aGlzLl9oZWFkZXJzVHJlZU91dGxpbmUgPSBuZXcgVHJlZU91
dGxpbmUodGhpcy5faGVhZGVyc0xpc3RFbGVtZW50KTsKKyAgICB0aGlzLl9oZWFkZXJzVHJlZU91
dGxpbmUuZXhwYW5kVHJlZUVsZW1lbnRzV2hlbkFycm93aW5nID0gdHJ1ZTsKKworICAgIHRoaXMu
X3VybFRyZWVFbGVtZW50ID0gbmV3IFRyZWVFbGVtZW50KCIiLCBudWxsLCBmYWxzZSk7CisgICAg
dGhpcy5fdXJsVHJlZUVsZW1lbnQuc2VsZWN0YWJsZSA9IGZhbHNlOworICAgIHRoaXMuX2hlYWRl
cnNUcmVlT3V0bGluZS5hcHBlbmRDaGlsZCh0aGlzLl91cmxUcmVlRWxlbWVudCk7CisKKyAgICB0
aGlzLl9yZXF1ZXN0TWV0aG9kVHJlZUVsZW1lbnQgPSBuZXcgVHJlZUVsZW1lbnQoIiIsIG51bGws
IGZhbHNlKTsKKyAgICB0aGlzLl9yZXF1ZXN0TWV0aG9kVHJlZUVsZW1lbnQuc2VsZWN0YWJsZSA9
IGZhbHNlOworICAgIHRoaXMuX2hlYWRlcnNUcmVlT3V0bGluZS5hcHBlbmRDaGlsZCh0aGlzLl9y
ZXF1ZXN0TWV0aG9kVHJlZUVsZW1lbnQpOworCisgICAgdGhpcy5fc3RhdHVzQ29kZVRyZWVFbGVt
ZW50ID0gbmV3IFRyZWVFbGVtZW50KCIiLCBudWxsLCBmYWxzZSk7CisgICAgdGhpcy5fc3RhdHVz
Q29kZVRyZWVFbGVtZW50LnNlbGVjdGFibGUgPSBmYWxzZTsKKyAgICB0aGlzLl9oZWFkZXJzVHJl
ZU91dGxpbmUuYXBwZW5kQ2hpbGQodGhpcy5fc3RhdHVzQ29kZVRyZWVFbGVtZW50KTsKKworICAg
IHRoaXMuX3JlcXVlc3RIZWFkZXJzVHJlZUVsZW1lbnQgPSBuZXcgVHJlZUVsZW1lbnQoIiIsIG51
bGwsIHRydWUpOworICAgIHRoaXMuX3JlcXVlc3RIZWFkZXJzVHJlZUVsZW1lbnQuZXhwYW5kZWQg
PSB0cnVlOworICAgIHRoaXMuX3JlcXVlc3RIZWFkZXJzVHJlZUVsZW1lbnQuc2VsZWN0YWJsZSA9
IGZhbHNlOworICAgIHRoaXMuX2hlYWRlcnNUcmVlT3V0bGluZS5hcHBlbmRDaGlsZCh0aGlzLl9y
ZXF1ZXN0SGVhZGVyc1RyZWVFbGVtZW50KTsKKworICAgIHRoaXMuX2RlY29kZVJlcXVlc3RQYXJh
bWV0ZXJzID0gdHJ1ZTsKKworICAgIHRoaXMuX3Nob3dSZXF1ZXN0SGVhZGVyc1RleHQgPSBmYWxz
ZTsKKyAgICB0aGlzLl9zaG93UmVzcG9uc2VIZWFkZXJzVGV4dCA9IGZhbHNlOworCisgICAgdGhp
cy5fcXVlcnlTdHJpbmdUcmVlRWxlbWVudCA9IG5ldyBUcmVlRWxlbWVudCgiIiwgbnVsbCwgdHJ1
ZSk7CisgICAgdGhpcy5fcXVlcnlTdHJpbmdUcmVlRWxlbWVudC5leHBhbmRlZCA9IHRydWU7Cisg
ICAgdGhpcy5fcXVlcnlTdHJpbmdUcmVlRWxlbWVudC5zZWxlY3RhYmxlID0gZmFsc2U7CisgICAg
dGhpcy5fcXVlcnlTdHJpbmdUcmVlRWxlbWVudC5oaWRkZW4gPSB0cnVlOworICAgIHRoaXMuX2hl
YWRlcnNUcmVlT3V0bGluZS5hcHBlbmRDaGlsZCh0aGlzLl9xdWVyeVN0cmluZ1RyZWVFbGVtZW50
KTsKKworICAgIHRoaXMuX3VybEZyYWdtZW50VHJlZUVsZW1lbnQgPSBuZXcgVHJlZUVsZW1lbnQo
IiIsIG51bGwsIHRydWUpOworICAgIHRoaXMuX3VybEZyYWdtZW50VHJlZUVsZW1lbnQuZXhwYW5k
ZWQgPSB0cnVlOworICAgIHRoaXMuX3VybEZyYWdtZW50VHJlZUVsZW1lbnQuc2VsZWN0YWJsZSA9
IGZhbHNlOworICAgIHRoaXMuX3VybEZyYWdtZW50VHJlZUVsZW1lbnQuaGlkZGVuID0gdHJ1ZTsK
KyAgICB0aGlzLl9oZWFkZXJzVHJlZU91dGxpbmUuYXBwZW5kQ2hpbGQodGhpcy5fdXJsRnJhZ21l
bnRUcmVlRWxlbWVudCk7CisKKyAgICB0aGlzLl9mb3JtRGF0YVRyZWVFbGVtZW50ID0gbmV3IFRy
ZWVFbGVtZW50KCIiLCBudWxsLCB0cnVlKTsKKyAgICB0aGlzLl9mb3JtRGF0YVRyZWVFbGVtZW50
LmV4cGFuZGVkID0gdHJ1ZTsKKyAgICB0aGlzLl9mb3JtRGF0YVRyZWVFbGVtZW50LnNlbGVjdGFi
bGUgPSBmYWxzZTsKKyAgICB0aGlzLl9mb3JtRGF0YVRyZWVFbGVtZW50LmhpZGRlbiA9IHRydWU7
CisgICAgdGhpcy5faGVhZGVyc1RyZWVPdXRsaW5lLmFwcGVuZENoaWxkKHRoaXMuX2Zvcm1EYXRh
VHJlZUVsZW1lbnQpOworCisgICAgdGhpcy5fcmVxdWVzdFBheWxvYWRUcmVlRWxlbWVudCA9IG5l
dyBUcmVlRWxlbWVudChXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlcXVlc3QgUGF5bG9hZCIpLCBu
dWxsLCB0cnVlKTsKKyAgICB0aGlzLl9yZXF1ZXN0UGF5bG9hZFRyZWVFbGVtZW50LmV4cGFuZGVk
ID0gdHJ1ZTsKKyAgICB0aGlzLl9yZXF1ZXN0UGF5bG9hZFRyZWVFbGVtZW50LnNlbGVjdGFibGUg
PSBmYWxzZTsKKyAgICB0aGlzLl9yZXF1ZXN0UGF5bG9hZFRyZWVFbGVtZW50LmhpZGRlbiA9IHRy
dWU7CisgICAgdGhpcy5faGVhZGVyc1RyZWVPdXRsaW5lLmFwcGVuZENoaWxkKHRoaXMuX3JlcXVl
c3RQYXlsb2FkVHJlZUVsZW1lbnQpOworCisgICAgdGhpcy5fcmVzcG9uc2VIZWFkZXJzVHJlZUVs
ZW1lbnQgPSBuZXcgVHJlZUVsZW1lbnQoIiIsIG51bGwsIHRydWUpOworICAgIHRoaXMuX3Jlc3Bv
bnNlSGVhZGVyc1RyZWVFbGVtZW50LmV4cGFuZGVkID0gdHJ1ZTsKKyAgICB0aGlzLl9yZXNwb25z
ZUhlYWRlcnNUcmVlRWxlbWVudC5zZWxlY3RhYmxlID0gZmFsc2U7CisgICAgdGhpcy5faGVhZGVy
c1RyZWVPdXRsaW5lLmFwcGVuZENoaWxkKHRoaXMuX3Jlc3BvbnNlSGVhZGVyc1RyZWVFbGVtZW50
KTsKKworICAgIHJlcXVlc3QuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuTmV0d29ya1Jl
cXVlc3QuRXZlbnRzLlJlcXVlc3RIZWFkZXJzQ2hhbmdlZCwgdGhpcy5fcmVmcmVzaFJlcXVlc3RI
ZWFkZXJzLCB0aGlzKTsKKyAgICByZXF1ZXN0LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
Lk5ldHdvcmtSZXF1ZXN0LkV2ZW50cy5SZXNwb25zZUhlYWRlcnNDaGFuZ2VkLCB0aGlzLl9yZWZy
ZXNoUmVzcG9uc2VIZWFkZXJzLCB0aGlzKTsKKyAgICByZXF1ZXN0LmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLk5ldHdvcmtSZXF1ZXN0LkV2ZW50cy5GaW5pc2hlZExvYWRpbmcsIHRoaXMu
X3JlZnJlc2hIVFRQSW5mb3JtYXRpb24sIHRoaXMpOworCisgICAgdGhpcy5fcmVmcmVzaFVSTCgp
OworICAgIHRoaXMuX3JlZnJlc2hRdWVyeVN0cmluZygpOworICAgIHRoaXMuX3JlZnJlc2hVcmxG
cmFnbWVudCgpOworICAgIHRoaXMuX3JlZnJlc2hSZXF1ZXN0SGVhZGVycygpOworICAgIHRoaXMu
X3JlZnJlc2hSZXNwb25zZUhlYWRlcnMoKTsKKyAgICB0aGlzLl9yZWZyZXNoSFRUUEluZm9ybWF0
aW9uKCk7Cit9CisKK1dlYkluc3BlY3Rvci5SZXF1ZXN0SGVhZGVyc1ZpZXcucHJvdG90eXBlID0g
eworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICogQHBhcmFtIHtz
dHJpbmd9IHZhbHVlCisgICAgICovCisgICAgX2Zvcm1hdEhlYWRlcjogZnVuY3Rpb24obmFtZSwg
dmFsdWUpCisgICAgeworICAgICAgICB2YXIgZnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1
bWVudEZyYWdtZW50KCk7CisgICAgICAgIGZyYWdtZW50LmNyZWF0ZUNoaWxkKCJkaXYiLCAiaGVh
ZGVyLW5hbWUiKS50ZXh0Q29udGVudCA9IG5hbWUgKyAiOiI7CisgICAgICAgIGZyYWdtZW50LmNy
ZWF0ZUNoaWxkKCJkaXYiLCAiaGVhZGVyLXZhbHVlIHNvdXJjZS1jb2RlIikudGV4dENvbnRlbnQg
PSB2YWx1ZTsKKworICAgICAgICByZXR1cm4gZnJhZ21lbnQ7CisgICAgfSwKKworICAgIC8qKgor
ICAgICAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjbGFz
c05hbWUKKyAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGRlY29kZVBhcmFtZXRlcnMKKyAgICAgKi8K
KyAgICBfZm9ybWF0UGFyYW1ldGVyOiBmdW5jdGlvbih2YWx1ZSwgY2xhc3NOYW1lLCBkZWNvZGVQ
YXJhbWV0ZXJzKQorICAgIHsKKyAgICAgICAgdmFyIGVycm9yRGVjb2RpbmcgPSBmYWxzZTsKKwor
ICAgICAgICBpZiAoZGVjb2RlUGFyYW1ldGVycykgeworICAgICAgICAgICAgdmFsdWUgPSB2YWx1
ZS5yZXBsYWNlKC9cKy9nLCAiICIpOworICAgICAgICAgICAgaWYgKHZhbHVlLmluZGV4T2YoIiUi
KSA+PSAwKSB7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgdmFs
dWUgPSBkZWNvZGVVUklDb21wb25lbnQodmFsdWUpOworICAgICAgICAgICAgICAgIH0gY2F0Y2go
ZSkgeworICAgICAgICAgICAgICAgICAgICBlcnJvckRlY29kaW5nID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgdmFyIGRpdiA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICBkaXYuY2xhc3NOYW1lID0gY2xh
c3NOYW1lOworICAgICAgICBpZiAoZXJyb3JEZWNvZGluZykKKyAgICAgICAgICAgIGRpdi5jcmVh
dGVDaGlsZCgic3BhbiIsICJlcnJvci1tZXNzYWdlIikudGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIih1bmFibGUgdG8gZGVjb2RlIHZhbHVlKSIpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBkaXYudGV4dENvbnRlbnQgPSB2YWx1ZTsKKyAgICAgICAgcmV0dXJuIGRpdjsK
KyAgICB9LAorCisgICAgX3JlZnJlc2hVUkw6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRo
aXMuX3VybFRyZWVFbGVtZW50LnRpdGxlID0gdGhpcy5fZm9ybWF0SGVhZGVyKFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiUmVxdWVzdCBVUkwiKSwgdGhpcy5fcmVxdWVzdC51cmwpOworICAgIH0sCisK
KyAgICBfcmVmcmVzaFF1ZXJ5U3RyaW5nOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIg
cXVlcnlQYXJhbWV0ZXJzID0gdGhpcy5fcmVxdWVzdC5xdWVyeVBhcmFtZXRlcnM7CisgICAgICAg
IHRoaXMuX3F1ZXJ5U3RyaW5nVHJlZUVsZW1lbnQuaGlkZGVuID0gIXF1ZXJ5UGFyYW1ldGVyczsK
KyAgICAgICAgaWYgKHF1ZXJ5UGFyYW1ldGVycykKKyAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hQ
YXJtcyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlF1ZXJ5IFN0cmluZyBQYXJhbWV0ZXJzIiksIHF1
ZXJ5UGFyYW1ldGVycywgdGhpcy5fcXVlcnlTdHJpbmdUcmVlRWxlbWVudCk7CisgICAgfSwKKwor
ICAgIF9yZWZyZXNoVXJsRnJhZ21lbnQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciB1
cmxGcmFnbWVudCA9IHRoaXMuX3JlcXVlc3QudXJsRnJhZ21lbnQ7CisgICAgICAgIHRoaXMuX3Vy
bEZyYWdtZW50VHJlZUVsZW1lbnQuaGlkZGVuID0gIXVybEZyYWdtZW50OworCisgICAgICAgIGlm
ICghdXJsRnJhZ21lbnQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdmFyIHNlY3Rp
b25UaXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiVVJMIGZyYWdtZW50Iik7CisKKyAgICAg
ICAgdGhpcy5fdXJsRnJhZ21lbnRUcmVlRWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOworICAgICAg
ICB0aGlzLl91cmxGcmFnbWVudFRyZWVFbGVtZW50Lmxpc3RJdGVtRWxlbWVudC5yZW1vdmVDaGls
ZHJlbigpOworICAgICAgICB0aGlzLl91cmxGcmFnbWVudFRyZWVFbGVtZW50Lmxpc3RJdGVtRWxl
bWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzZWN0aW9uVGl0bGUpKTsK
KworICAgICAgICB2YXIgZnJhZ21lbnRUcmVlRWxlbWVudCA9IG5ldyBUcmVlRWxlbWVudChudWxs
LCBudWxsLCBmYWxzZSk7CisgICAgICAgIGZyYWdtZW50VHJlZUVsZW1lbnQudGl0bGUgPSB0aGlz
Ll9mb3JtYXRIZWFkZXIoIiMiLCB1cmxGcmFnbWVudCk7CisgICAgICAgIGZyYWdtZW50VHJlZUVs
ZW1lbnQuc2VsZWN0YWJsZSA9IGZhbHNlOworICAgICAgICB0aGlzLl91cmxGcmFnbWVudFRyZWVF
bGVtZW50LmFwcGVuZENoaWxkKGZyYWdtZW50VHJlZUVsZW1lbnQpOworICAgIH0sCisKKyAgICBf
cmVmcmVzaEZvcm1EYXRhOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9mb3JtRGF0
YVRyZWVFbGVtZW50LmhpZGRlbiA9IHRydWU7CisgICAgICAgIHRoaXMuX3JlcXVlc3RQYXlsb2Fk
VHJlZUVsZW1lbnQuaGlkZGVuID0gdHJ1ZTsKKworICAgICAgICB2YXIgZm9ybURhdGEgPSB0aGlz
Ll9yZXF1ZXN0LnJlcXVlc3RGb3JtRGF0YTsKKyAgICAgICAgaWYgKCFmb3JtRGF0YSkKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICB2YXIgZm9ybVBhcmFtZXRlcnMgPSB0aGlzLl9yZXF1
ZXN0LmZvcm1QYXJhbWV0ZXJzOworICAgICAgICBpZiAoZm9ybVBhcmFtZXRlcnMpIHsKKyAgICAg
ICAgICAgIHRoaXMuX2Zvcm1EYXRhVHJlZUVsZW1lbnQuaGlkZGVuID0gZmFsc2U7CisgICAgICAg
ICAgICB0aGlzLl9yZWZyZXNoUGFybXMoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGb3JtIERhdGEi
KSwgZm9ybVBhcmFtZXRlcnMsIHRoaXMuX2Zvcm1EYXRhVHJlZUVsZW1lbnQpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgdGhpcy5fcmVxdWVzdFBheWxvYWRUcmVlRWxlbWVudC5oaWRk
ZW4gPSBmYWxzZTsKKyAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hSZXF1ZXN0UGF5bG9hZChmb3Jt
RGF0YSk7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgX3JlZnJlc2hSZXF1ZXN0UGF5bG9hZDog
ZnVuY3Rpb24oZm9ybURhdGEpCisgICAgeworICAgICAgICB0aGlzLl9yZXF1ZXN0UGF5bG9hZFRy
ZWVFbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CisKKyAgICAgICAgdmFyIHRpdGxlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRpdGxlLmNsYXNzTmFtZSA9ICJyYXct
Zm9ybS1kYXRhIGhlYWRlci12YWx1ZSBzb3VyY2UtY29kZSI7CisgICAgICAgIHRpdGxlLnRleHRD
b250ZW50ID0gZm9ybURhdGE7CisKKyAgICAgICAgdmFyIHBhcm1UcmVlRWxlbWVudCA9IG5ldyBU
cmVlRWxlbWVudCh0aXRsZSwgbnVsbCwgZmFsc2UpOworICAgICAgICBwYXJtVHJlZUVsZW1lbnQu
c2VsZWN0YWJsZSA9IGZhbHNlOworICAgICAgICB0aGlzLl9yZXF1ZXN0UGF5bG9hZFRyZWVFbGVt
ZW50LmFwcGVuZENoaWxkKHBhcm1UcmVlRWxlbWVudCk7CisgICAgfSwKKworICAgIF9yZWZyZXNo
UGFybXM6IGZ1bmN0aW9uKHRpdGxlLCBwYXJtcywgcGFybXNUcmVlRWxlbWVudCkKKyAgICB7Cisg
ICAgICAgIHBhcm1zVHJlZUVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKKworICAgICAgICBwYXJt
c1RyZWVFbGVtZW50Lmxpc3RJdGVtRWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOworICAgICAgICBw
YXJtc1RyZWVFbGVtZW50Lmxpc3RJdGVtRWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZSh0aXRsZSkpOworCisgICAgICAgIHZhciBoZWFkZXJDb3VudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICAgICAgaGVhZGVyQ291bnQuYWRkU3R5bGVDbGFz
cygiaGVhZGVyLWNvdW50Iik7CisgICAgICAgIGhlYWRlckNvdW50LnRleHRDb250ZW50ID0gV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCIgKCVkKSIsIHBhcm1zLmxlbmd0aCk7CisgICAgICAgIHBhcm1z
VHJlZUVsZW1lbnQubGlzdEl0ZW1FbGVtZW50LmFwcGVuZENoaWxkKGhlYWRlckNvdW50KTsKKwor
ICAgICAgICB2YXIgdG9nZ2xlVGl0bGUgPSB0aGlzLl9kZWNvZGVSZXF1ZXN0UGFyYW1ldGVycyA/
IFdlYkluc3BlY3Rvci5VSVN0cmluZygidmlldyBVUkwgZW5jb2RlZCIpIDogV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJ2aWV3IGRlY29kZWQiKTsKKyAgICAgICAgdmFyIHRvZ2dsZUJ1dHRvbiA9IHRo
aXMuX2NyZWF0ZVRvZ2dsZUJ1dHRvbih0b2dnbGVUaXRsZSk7CisgICAgICAgIHRvZ2dsZUJ1dHRv
bi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX3RvZ2dsZVVSTGRlY29kaW5nLmJpbmQo
dGhpcykpOworICAgICAgICBwYXJtc1RyZWVFbGVtZW50Lmxpc3RJdGVtRWxlbWVudC5hcHBlbmRD
aGlsZCh0b2dnbGVCdXR0b24pOworCisKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJt
cy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdmFyIHBhcmFtTmFtZVZhbHVlID0gZG9jdW1l
bnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOworICAgICAgICAgICAgdmFyIG5hbWUgPSB0aGlz
Ll9mb3JtYXRQYXJhbWV0ZXIocGFybXNbaV0ubmFtZSArICI6IiwgImhlYWRlci1uYW1lIiwgdGhp
cy5fZGVjb2RlUmVxdWVzdFBhcmFtZXRlcnMpOworICAgICAgICAgICAgdmFyIHZhbHVlID0gdGhp
cy5fZm9ybWF0UGFyYW1ldGVyKHBhcm1zW2ldLnZhbHVlLCAiaGVhZGVyLXZhbHVlIHNvdXJjZS1j
b2RlIiwgdGhpcy5fZGVjb2RlUmVxdWVzdFBhcmFtZXRlcnMpOworICAgICAgICAgICAgcGFyYW1O
YW1lVmFsdWUuYXBwZW5kQ2hpbGQobmFtZSk7CisgICAgICAgICAgICBwYXJhbU5hbWVWYWx1ZS5h
cHBlbmRDaGlsZCh2YWx1ZSk7CisKKyAgICAgICAgICAgIHZhciBwYXJtVHJlZUVsZW1lbnQgPSBu
ZXcgVHJlZUVsZW1lbnQocGFyYW1OYW1lVmFsdWUsIG51bGwsIGZhbHNlKTsKKyAgICAgICAgICAg
IHBhcm1UcmVlRWxlbWVudC5zZWxlY3RhYmxlID0gZmFsc2U7CisgICAgICAgICAgICBwYXJtc1Ry
ZWVFbGVtZW50LmFwcGVuZENoaWxkKHBhcm1UcmVlRWxlbWVudCk7CisgICAgICAgIH0KKyAgICB9
LAorCisgICAgX3RvZ2dsZVVSTGRlY29kaW5nOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAg
ICAgIHRoaXMuX2RlY29kZVJlcXVlc3RQYXJhbWV0ZXJzID0gIXRoaXMuX2RlY29kZVJlcXVlc3RQ
YXJhbWV0ZXJzOworICAgICAgICB0aGlzLl9yZWZyZXNoUXVlcnlTdHJpbmcoKTsKKyAgICAgICAg
dGhpcy5fcmVmcmVzaEZvcm1EYXRhKCk7CisgICAgfSwKKworICAgIF9nZXRIZWFkZXJWYWx1ZTog
ZnVuY3Rpb24oaGVhZGVycywga2V5KQorICAgIHsKKyAgICAgICAgdmFyIGxvd2VyS2V5ID0ga2V5
LnRvTG93ZXJDYXNlKCk7CisgICAgICAgIGZvciAodmFyIHRlc3RLZXkgaW4gaGVhZGVycykgewor
ICAgICAgICAgICAgaWYgKHRlc3RLZXkudG9Mb3dlckNhc2UoKSA9PT0gbG93ZXJLZXkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGhlYWRlcnNbdGVzdEtleV07CisgICAgICAgIH0KKyAgICB9LAor
CisgICAgX3JlZnJlc2hSZXF1ZXN0SGVhZGVyczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAg
dmFyIGFkZGl0aW9uYWxSb3cgPSBudWxsOworICAgICAgICBpZiAodHlwZW9mIHRoaXMuX3JlcXVl
c3Qud2ViU29ja2V0UmVxdWVzdEtleTMgIT09ICJ1bmRlZmluZWQiKQorICAgICAgICAgICAgYWRk
aXRpb25hbFJvdyA9IHtoZWFkZXI6ICIoS2V5MykiLCB2YWx1ZTogdGhpcy5fcmVxdWVzdC53ZWJT
b2NrZXRSZXF1ZXN0S2V5M307CisgICAgICAgIGlmICh0aGlzLl9zaG93UmVxdWVzdEhlYWRlcnNU
ZXh0KQorICAgICAgICAgICAgdGhpcy5fcmVmcmVzaEhlYWRlcnNUZXh0KFdlYkluc3BlY3Rvci5V
SVN0cmluZygiUmVxdWVzdCBIZWFkZXJzIiksIHRoaXMuX3JlcXVlc3Quc29ydGVkUmVxdWVzdEhl
YWRlcnMsIHRoaXMuX3JlcXVlc3QucmVxdWVzdEhlYWRlcnNUZXh0LCB0aGlzLl9yZXF1ZXN0SGVh
ZGVyc1RyZWVFbGVtZW50KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGhpcy5fcmVmcmVz
aEhlYWRlcnMoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXF1ZXN0IEhlYWRlcnMiKSwgdGhpcy5f
cmVxdWVzdC5zb3J0ZWRSZXF1ZXN0SGVhZGVycywgYWRkaXRpb25hbFJvdywgdGhpcy5fcmVxdWVz
dEhlYWRlcnNUcmVlRWxlbWVudCk7CisKKyAgICAgICAgaWYgKHRoaXMuX3JlcXVlc3QucmVxdWVz
dEhlYWRlcnNUZXh0KSB7CisgICAgICAgICAgICB2YXIgdG9nZ2xlQnV0dG9uID0gdGhpcy5fY3Jl
YXRlSGVhZGVyc1RvZ2dsZUJ1dHRvbih0aGlzLl9zaG93UmVxdWVzdEhlYWRlcnNUZXh0KTsKKyAg
ICAgICAgICAgIHRvZ2dsZUJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX3Rv
Z2dsZVJlcXVlc3RIZWFkZXJzVGV4dC5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAgIHRoaXMuX3Jl
cXVlc3RIZWFkZXJzVHJlZUVsZW1lbnQubGlzdEl0ZW1FbGVtZW50LmFwcGVuZENoaWxkKHRvZ2ds
ZUJ1dHRvbik7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl9yZWZyZXNoRm9ybURhdGEoKTsK
KyAgICB9LAorCisgICAgX3JlZnJlc2hSZXNwb25zZUhlYWRlcnM6IGZ1bmN0aW9uKCkKKyAgICB7
CisgICAgICAgIHZhciBhZGRpdGlvbmFsUm93ID0gbnVsbDsKKyAgICAgICAgaWYgKHR5cGVvZiB0
aGlzLl9yZXF1ZXN0LndlYlNvY2tldENoYWxsZW5nZVJlc3BvbnNlICE9PSAidW5kZWZpbmVkIikK
KyAgICAgICAgICAgIGFkZGl0aW9uYWxSb3cgPSB7aGVhZGVyOiAiKENoYWxsZW5nZSBSZXNwb25z
ZSkiLCB2YWx1ZTogdGhpcy5fcmVxdWVzdC53ZWJTb2NrZXRDaGFsbGVuZ2VSZXNwb25zZX07Cisg
ICAgICAgIGlmICh0aGlzLl9zaG93UmVzcG9uc2VIZWFkZXJzVGV4dCkKKyAgICAgICAgICAgIHRo
aXMuX3JlZnJlc2hIZWFkZXJzVGV4dChXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlc3BvbnNlIEhl
YWRlcnMiKSwgdGhpcy5fcmVxdWVzdC5zb3J0ZWRSZXNwb25zZUhlYWRlcnMsIHRoaXMuX3JlcXVl
c3QucmVzcG9uc2VIZWFkZXJzVGV4dCwgdGhpcy5fcmVzcG9uc2VIZWFkZXJzVHJlZUVsZW1lbnQp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICB0aGlzLl9yZWZyZXNoSGVhZGVycyhXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIlJlc3BvbnNlIEhlYWRlcnMiKSwgdGhpcy5fcmVxdWVzdC5zb3J0ZWRS
ZXNwb25zZUhlYWRlcnMsIGFkZGl0aW9uYWxSb3csIHRoaXMuX3Jlc3BvbnNlSGVhZGVyc1RyZWVF
bGVtZW50KTsKKworICAgICAgICBpZiAodGhpcy5fcmVxdWVzdC5yZXNwb25zZUhlYWRlcnNUZXh0
KSB7CisgICAgICAgICAgICB2YXIgdG9nZ2xlQnV0dG9uID0gdGhpcy5fY3JlYXRlSGVhZGVyc1Rv
Z2dsZUJ1dHRvbih0aGlzLl9zaG93UmVzcG9uc2VIZWFkZXJzVGV4dCk7CisgICAgICAgICAgICB0
b2dnbGVCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl90b2dnbGVSZXNwb25z
ZUhlYWRlcnNUZXh0LmJpbmQodGhpcykpOworICAgICAgICAgICAgdGhpcy5fcmVzcG9uc2VIZWFk
ZXJzVHJlZUVsZW1lbnQubGlzdEl0ZW1FbGVtZW50LmFwcGVuZENoaWxkKHRvZ2dsZUJ1dHRvbik7
CisgICAgICAgIH0KKyAgICB9LAorCisgICAgX3JlZnJlc2hIVFRQSW5mb3JtYXRpb246IGZ1bmN0
aW9uKCkKKyAgICB7CisgICAgICAgIHZhciByZXF1ZXN0TWV0aG9kRWxlbWVudCA9IHRoaXMuX3Jl
cXVlc3RNZXRob2RUcmVlRWxlbWVudDsKKyAgICAgICAgcmVxdWVzdE1ldGhvZEVsZW1lbnQuaGlk
ZGVuID0gIXRoaXMuX3JlcXVlc3Quc3RhdHVzQ29kZTsKKyAgICAgICAgdmFyIHN0YXR1c0NvZGVF
bGVtZW50ID0gdGhpcy5fc3RhdHVzQ29kZVRyZWVFbGVtZW50OworICAgICAgICBzdGF0dXNDb2Rl
RWxlbWVudC5oaWRkZW4gPSAhdGhpcy5fcmVxdWVzdC5zdGF0dXNDb2RlOworCisgICAgICAgIGlm
ICh0aGlzLl9yZXF1ZXN0LnN0YXR1c0NvZGUpIHsKKyAgICAgICAgICAgIHZhciBzdGF0dXNJbWFn
ZVNvdXJjZSA9ICIiOworICAgICAgICAgICAgaWYgKHRoaXMuX3JlcXVlc3Quc3RhdHVzQ29kZSA8
IDMwMCB8fCB0aGlzLl9yZXF1ZXN0LnN0YXR1c0NvZGUgPT09IDMwNCkKKyAgICAgICAgICAgICAg
ICBzdGF0dXNJbWFnZVNvdXJjZSA9ICJJbWFnZXMvc3VjY2Vzc0dyZWVuRG90LnBuZyI7CisgICAg
ICAgICAgICBlbHNlIGlmICh0aGlzLl9yZXF1ZXN0LnN0YXR1c0NvZGUgPCA0MDApCisgICAgICAg
ICAgICAgICAgc3RhdHVzSW1hZ2VTb3VyY2UgPSAiSW1hZ2VzL3dhcm5pbmdPcmFuZ2VEb3QucG5n
IjsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzdGF0dXNJbWFnZVNvdXJjZSA9
ICJJbWFnZXMvZXJyb3JSZWREb3QucG5nIjsKKworICAgICAgICAgICAgcmVxdWVzdE1ldGhvZEVs
ZW1lbnQudGl0bGUgPSB0aGlzLl9mb3JtYXRIZWFkZXIoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJS
ZXF1ZXN0IE1ldGhvZCIpLCB0aGlzLl9yZXF1ZXN0LnJlcXVlc3RNZXRob2QpOworCisgICAgICAg
ICAgICB2YXIgc3RhdHVzQ29kZUZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFn
bWVudCgpOworICAgICAgICAgICAgc3RhdHVzQ29kZUZyYWdtZW50LmNyZWF0ZUNoaWxkKCJkaXYi
LCAiaGVhZGVyLW5hbWUiKS50ZXh0Q29udGVudCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3Rh
dHVzIENvZGUiKSArICI6IjsKKworICAgICAgICAgICAgdmFyIHN0YXR1c0NvZGVJbWFnZSA9IHN0
YXR1c0NvZGVGcmFnbWVudC5jcmVhdGVDaGlsZCgiaW1nIiwgInJlc291cmNlLXN0YXR1cy1pbWFn
ZSIpOworICAgICAgICAgICAgc3RhdHVzQ29kZUltYWdlLnNyYyA9IHN0YXR1c0ltYWdlU291cmNl
OworICAgICAgICAgICAgc3RhdHVzQ29kZUltYWdlLnRpdGxlID0gdGhpcy5fcmVxdWVzdC5zdGF0
dXNDb2RlICsgIiAiICsgdGhpcy5fcmVxdWVzdC5zdGF0dXNUZXh0OworICAgICAgICAgICAgdmFy
IHZhbHVlID0gc3RhdHVzQ29kZUZyYWdtZW50LmNyZWF0ZUNoaWxkKCJkaXYiLCAiaGVhZGVyLXZh
bHVlIHNvdXJjZS1jb2RlIik7CisgICAgICAgICAgICB2YWx1ZS50ZXh0Q29udGVudCA9IHRoaXMu
X3JlcXVlc3Quc3RhdHVzQ29kZSArICIgIiArIHRoaXMuX3JlcXVlc3Quc3RhdHVzVGV4dDsKKyAg
ICAgICAgICAgIGlmICh0aGlzLl9yZXF1ZXN0LmNhY2hlZCkKKyAgICAgICAgICAgICAgICB2YWx1
ZS5jcmVhdGVDaGlsZCgic3BhbiIsICJzdGF0dXMtZnJvbS1jYWNoZSIpLnRleHRDb250ZW50ID0g
IiAiICsgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIoZnJvbSBjYWNoZSkiKTsKKworICAgICAgICAg
ICAgc3RhdHVzQ29kZUVsZW1lbnQudGl0bGUgPSBzdGF0dXNDb2RlRnJhZ21lbnQ7CisgICAgICAg
IH0KKyAgICB9LAorCisgICAgX3JlZnJlc2hIZWFkZXJzVGl0bGU6IGZ1bmN0aW9uKHRpdGxlLCBo
ZWFkZXJzVHJlZUVsZW1lbnQsIGhlYWRlcnNMZW5ndGgpCisgICAgeworICAgICAgICBoZWFkZXJz
VHJlZUVsZW1lbnQubGlzdEl0ZW1FbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CisgICAgICAgIGhl
YWRlcnNUcmVlRWxlbWVudC5saXN0SXRlbUVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlVGV4dE5vZGUodGl0bGUpKTsKKworICAgICAgICB2YXIgaGVhZGVyQ291bnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgICAgIGhlYWRlckNvdW50LmFkZFN0eWxlQ2xh
c3MoImhlYWRlci1jb3VudCIpOworICAgICAgICBoZWFkZXJDb3VudC50ZXh0Q29udGVudCA9IFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiICglZCkiLCBoZWFkZXJzTGVuZ3RoKTsKKyAgICAgICAgaGVh
ZGVyc1RyZWVFbGVtZW50Lmxpc3RJdGVtRWxlbWVudC5hcHBlbmRDaGlsZChoZWFkZXJDb3VudCk7
CisgICAgfSwKKworICAgIF9yZWZyZXNoSGVhZGVyczogZnVuY3Rpb24odGl0bGUsIGhlYWRlcnMs
IGFkZGl0aW9uYWxSb3csIGhlYWRlcnNUcmVlRWxlbWVudCkKKyAgICB7CisgICAgICAgIGhlYWRl
cnNUcmVlRWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOworCisgICAgICAgIHZhciBsZW5ndGggPSBo
ZWFkZXJzLmxlbmd0aDsKKyAgICAgICAgdGhpcy5fcmVmcmVzaEhlYWRlcnNUaXRsZSh0aXRsZSwg
aGVhZGVyc1RyZWVFbGVtZW50LCBsZW5ndGgpOworICAgICAgICBoZWFkZXJzVHJlZUVsZW1lbnQu
aGlkZGVuID0gIWxlbmd0aDsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7ICsr
aSkgeworICAgICAgICAgICAgdmFyIGhlYWRlclRyZWVFbGVtZW50ID0gbmV3IFRyZWVFbGVtZW50
KG51bGwsIG51bGwsIGZhbHNlKTsKKyAgICAgICAgICAgIGhlYWRlclRyZWVFbGVtZW50LnRpdGxl
ID0gdGhpcy5fZm9ybWF0SGVhZGVyKGhlYWRlcnNbaV0uaGVhZGVyLCBoZWFkZXJzW2ldLnZhbHVl
KTsKKyAgICAgICAgICAgIGhlYWRlclRyZWVFbGVtZW50LnNlbGVjdGFibGUgPSBmYWxzZTsKKyAg
ICAgICAgICAgIGhlYWRlcnNUcmVlRWxlbWVudC5hcHBlbmRDaGlsZChoZWFkZXJUcmVlRWxlbWVu
dCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoYWRkaXRpb25hbFJvdykgeworICAgICAgICAg
ICAgdmFyIGhlYWRlclRyZWVFbGVtZW50ID0gbmV3IFRyZWVFbGVtZW50KG51bGwsIG51bGwsIGZh
bHNlKTsKKyAgICAgICAgICAgIGhlYWRlclRyZWVFbGVtZW50LnRpdGxlID0gdGhpcy5fZm9ybWF0
SGVhZGVyKGFkZGl0aW9uYWxSb3cuaGVhZGVyLCBhZGRpdGlvbmFsUm93LnZhbHVlKTsKKyAgICAg
ICAgICAgIGhlYWRlclRyZWVFbGVtZW50LnNlbGVjdGFibGUgPSBmYWxzZTsKKyAgICAgICAgICAg
IGhlYWRlcnNUcmVlRWxlbWVudC5hcHBlbmRDaGlsZChoZWFkZXJUcmVlRWxlbWVudCk7CisgICAg
ICAgIH0KKyAgICB9LAorCisgICAgX3JlZnJlc2hIZWFkZXJzVGV4dDogZnVuY3Rpb24odGl0bGUs
IGhlYWRlcnMsIGhlYWRlcnNUZXh0LCBoZWFkZXJzVHJlZUVsZW1lbnQpCisgICAgeworICAgICAg
ICBoZWFkZXJzVHJlZUVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKKworICAgICAgICB0aGlzLl9y
ZWZyZXNoSGVhZGVyc1RpdGxlKHRpdGxlLCBoZWFkZXJzVHJlZUVsZW1lbnQsIGhlYWRlcnMubGVu
Z3RoKTsKKyAgICAgICAgdmFyIGhlYWRlclRyZWVFbGVtZW50ID0gbmV3IFRyZWVFbGVtZW50KG51
bGwsIG51bGwsIGZhbHNlKTsKKyAgICAgICAgaGVhZGVyVHJlZUVsZW1lbnQuc2VsZWN0YWJsZSA9
IGZhbHNlOworICAgICAgICBoZWFkZXJzVHJlZUVsZW1lbnQuYXBwZW5kQ2hpbGQoaGVhZGVyVHJl
ZUVsZW1lbnQpOworCisgICAgICAgIHZhciBoZWFkZXJzVGV4dEVsZW1lbnQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgICAgIGhlYWRlcnNUZXh0RWxlbWVudC5hZGRTdHls
ZUNsYXNzKCJoZWFkZXItdmFsdWUiKTsKKyAgICAgICAgaGVhZGVyc1RleHRFbGVtZW50LmFkZFN0
eWxlQ2xhc3MoInNvdXJjZS1jb2RlIik7CisgICAgICAgIGhlYWRlcnNUZXh0RWxlbWVudC50ZXh0
Q29udGVudCA9IFN0cmluZyhoZWFkZXJzVGV4dCkudHJpbSgpOworICAgICAgICBoZWFkZXJUcmVl
RWxlbWVudC5saXN0SXRlbUVsZW1lbnQuYXBwZW5kQ2hpbGQoaGVhZGVyc1RleHRFbGVtZW50KTsK
KyAgICB9LAorCisgICAgX3RvZ2dsZVJlcXVlc3RIZWFkZXJzVGV4dDogZnVuY3Rpb24oZXZlbnQp
CisgICAgeworICAgICAgICB0aGlzLl9zaG93UmVxdWVzdEhlYWRlcnNUZXh0ID0gIXRoaXMuX3No
b3dSZXF1ZXN0SGVhZGVyc1RleHQ7CisgICAgICAgIHRoaXMuX3JlZnJlc2hSZXF1ZXN0SGVhZGVy
cygpOworICAgIH0sCisKKyAgICBfdG9nZ2xlUmVzcG9uc2VIZWFkZXJzVGV4dDogZnVuY3Rpb24o
ZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLl9zaG93UmVzcG9uc2VIZWFkZXJzVGV4dCA9ICF0
aGlzLl9zaG93UmVzcG9uc2VIZWFkZXJzVGV4dDsKKyAgICAgICAgdGhpcy5fcmVmcmVzaFJlc3Bv
bnNlSGVhZGVycygpOworICAgIH0sCisKKyAgICBfY3JlYXRlVG9nZ2xlQnV0dG9uOiBmdW5jdGlv
bih0aXRsZSkKKyAgICB7CisgICAgICAgIHZhciBidXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJzcGFuIik7CisgICAgICAgIGJ1dHRvbi5hZGRTdHlsZUNsYXNzKCJoZWFkZXItdG9nZ2xl
Iik7CisgICAgICAgIGJ1dHRvbi50ZXh0Q29udGVudCA9IHRpdGxlOworICAgICAgICByZXR1cm4g
YnV0dG9uOworICAgIH0sCisKKyAgICBfY3JlYXRlSGVhZGVyc1RvZ2dsZUJ1dHRvbjogZnVuY3Rp
b24oaXNIZWFkZXJzVGV4dFNob3duKQorICAgIHsKKyAgICAgICAgdmFyIHRvZ2dsZVRpdGxlID0g
aXNIZWFkZXJzVGV4dFNob3duID8gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJ2aWV3IHBhcnNlZCIp
IDogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJ2aWV3IHNvdXJjZSIpOworICAgICAgICByZXR1cm4g
dGhpcy5fY3JlYXRlVG9nZ2xlQnV0dG9uKHRvZ2dsZVRpdGxlKTsKKyAgICB9Cit9CisKK1dlYklu
c3BlY3Rvci5SZXF1ZXN0SGVhZGVyc1ZpZXcucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3Bl
Y3Rvci5WaWV3LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvUmVxdWVzdEpTT05WaWV3LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9SZXF1ZXN0SlNPTlZpZXcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDM2YWNiNGI4YWU4OTU0
N2UxMWNiYThkOWZjZGFjYzMyMWEwYTJiYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVxdWVzdEpTT05WaWV3LmpzCkBAIC0wLDAgKzEsMTE2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuUmVxdWVz
dFZpZXd9CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5OZXR3b3JrUmVxdWVzdH0gcmVxdWVzdAor
ICovCitXZWJJbnNwZWN0b3IuUmVxdWVzdEpTT05WaWV3ID0gZnVuY3Rpb24ocmVxdWVzdCwgcGFy
c2VkSlNPTikKK3sKKyAgICBXZWJJbnNwZWN0b3IuUmVxdWVzdFZpZXcuY2FsbCh0aGlzLCByZXF1
ZXN0KTsKKyAgICB0aGlzLl9wYXJzZWRKU09OID0gcGFyc2VkSlNPTjsKKyAgICB0aGlzLmVsZW1l
bnQuYWRkU3R5bGVDbGFzcygianNvbiIpOworfQorCitXZWJJbnNwZWN0b3IuUmVxdWVzdEpTT05W
aWV3LnBhcnNlSlNPTiA9IGZ1bmN0aW9uKHRleHQpCit7CisgICAgdmFyIHByZWZpeCA9ICIiOwor
CisgICAgLy8gVHJpbSB3aGlsZSgxKSwgZm9yKDs7KSwgd2VpcmQgbnVtYmVycywgZXRjLiBXZSBu
ZWVkIEpTT04gc3RhcnQuCisgICAgdmFyIHN0YXJ0ID0gL1t7W10vLmV4ZWModGV4dCk7CisgICAg
aWYgKHN0YXJ0ICYmIHN0YXJ0LmluZGV4KSB7CisgICAgICAgIHByZWZpeCA9IHRleHQuc3Vic3Ry
aW5nKDAsIHN0YXJ0LmluZGV4KTsKKyAgICAgICAgdGV4dCA9IHRleHQuc3Vic3RyaW5nKHN0YXJ0
LmluZGV4KTsKKyAgICB9CisKKyAgICB0cnkgeworICAgICAgICByZXR1cm4gbmV3IFdlYkluc3Bl
Y3Rvci5QYXJzZWRKU09OKEpTT04ucGFyc2UodGV4dCksIHByZWZpeCwgIiIpOworICAgIH0gY2F0
Y2ggKGUpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKworV2ViSW5zcGVjdG9yLlJlcXVl
c3RKU09OVmlldy5wYXJzZUpTT05QID0gZnVuY3Rpb24odGV4dCkKK3sKKyAgICAvLyBUYWtpbmcg
ZXZlcnl0aGluZyBiZXR3ZWVuIGZpcnN0IGFuZCBsYXN0IHBhcmVudGhlc2VzCisgICAgdmFyIHN0
YXJ0ID0gdGV4dC5pbmRleE9mKCIoIik7CisgICAgdmFyIGVuZCA9IHRleHQubGFzdEluZGV4T2Yo
IikiKTsKKyAgICBpZiAoc3RhcnQgPT0gLTEgfHwgZW5kID09IC0xIHx8IGVuZCA8IHN0YXJ0KQor
ICAgICAgICByZXR1cm47CisKKyAgICB2YXIgcHJlZml4ID0gdGV4dC5zdWJzdHJpbmcoMCwgc3Rh
cnQgKyAxKTsKKyAgICB2YXIgc3VmZml4ID0gdGV4dC5zdWJzdHJpbmcoZW5kKTsKKyAgICB0ZXh0
ID0gdGV4dC5zdWJzdHJpbmcoc3RhcnQgKyAxLCBlbmQpOworCisgICAgdHJ5IHsKKyAgICAgICAg
cmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuUGFyc2VkSlNPTihKU09OLnBhcnNlKHRleHQpLCBwcmVm
aXgsIHN1ZmZpeCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICByZXR1cm47CisgICAgfQor
fQorCitXZWJJbnNwZWN0b3IuUmVxdWVzdEpTT05WaWV3LnByb3RvdHlwZSA9IHsKKyAgICBoYXND
b250ZW50OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9LAor
CisgICAgd2FzU2hvd246IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2luaXRpYWxp
emUoKTsKKyAgICB9LAorCisgICAgX2luaXRpYWxpemU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAg
ICAgIGlmICh0aGlzLl9pbml0aWFsaXplZCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
dGhpcy5faW5pdGlhbGl6ZWQgPSB0cnVlOworCisgICAgICAgIHZhciBvYmogPSBXZWJJbnNwZWN0
b3IuUmVtb3RlT2JqZWN0LmZyb21Mb2NhbE9iamVjdCh0aGlzLl9wYXJzZWRKU09OLmRhdGEpOwor
ICAgICAgICB2YXIgdGl0bGUgPSB0aGlzLl9wYXJzZWRKU09OLnByZWZpeCArIG9iai5kZXNjcmlw
dGlvbiArIHRoaXMuX3BhcnNlZEpTT04uc3VmZml4OworICAgICAgICB2YXIgc2VjdGlvbiA9IG5l
dyBXZWJJbnNwZWN0b3IuT2JqZWN0UHJvcGVydGllc1NlY3Rpb24ob2JqLCB0aXRsZSk7CisgICAg
ICAgIHNlY3Rpb24uZXhwYW5kKCk7CisgICAgICAgIHNlY3Rpb24uZWRpdGFibGUgPSBmYWxzZTsK
KyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHNlY3Rpb24uZWxlbWVudCk7CisgICAg
fQorfQorCitXZWJJbnNwZWN0b3IuUmVxdWVzdEpTT05WaWV3LnByb3RvdHlwZS5fX3Byb3RvX18g
PSBXZWJJbnNwZWN0b3IuUmVxdWVzdFZpZXcucHJvdG90eXBlOworCisvKioKKyAqIEBjb25zdHJ1
Y3RvcgorICovCitXZWJJbnNwZWN0b3IuUGFyc2VkSlNPTiA9IGZ1bmN0aW9uKGRhdGEsIHByZWZp
eCwgc3VmZml4KQoreworICAgIHRoaXMuZGF0YSA9IGRhdGE7CisgICAgdGhpcy5wcmVmaXggPSBw
cmVmaXg7CisgICAgdGhpcy5zdWZmaXggPSBzdWZmaXg7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1JlcXVlc3RQcmV2aWV3Vmlldy5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVxdWVzdFByZXZpZXdWaWV3LmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRiZjNhMjRkNDQ4M2QwM2UxOWIxMzFjYjFjNjEyM2M2NjI0ZTI0YzIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1JlcXVlc3RQcmV2
aWV3Vmlldy5qcwpAQCAtMCwwICsxLDk2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRl
bmRzIHtXZWJJbnNwZWN0b3IuUmVxdWVzdENvbnRlbnRWaWV3fQorICogQHBhcmFtIHtXZWJJbnNw
ZWN0b3IuTmV0d29ya1JlcXVlc3R9IHJlcXVlc3QKKyAqLworV2ViSW5zcGVjdG9yLlJlcXVlc3RQ
cmV2aWV3VmlldyA9IGZ1bmN0aW9uKHJlcXVlc3QsIHJlc3BvbnNlVmlldykKK3sKKyAgICBXZWJJ
bnNwZWN0b3IuUmVxdWVzdENvbnRlbnRWaWV3LmNhbGwodGhpcywgcmVxdWVzdCk7CisgICAgdGhp
cy5fcmVzcG9uc2VWaWV3ID0gcmVzcG9uc2VWaWV3OworfQorCitXZWJJbnNwZWN0b3IuUmVxdWVz
dFByZXZpZXdWaWV3LnByb3RvdHlwZSA9IHsKKyAgICBjb250ZW50TG9hZGVkOiBmdW5jdGlvbigp
CisgICAgeworICAgICAgICBpZiAoIXRoaXMucmVxdWVzdC5jb250ZW50KSB7CisgICAgICAgICAg
ICBpZiAoIXRoaXMuX2VtcHR5VmlldykgeworICAgICAgICAgICAgICAgIHRoaXMuX2VtcHR5Vmll
dyA9IHRoaXMuX2NyZWF0ZUVtcHR5VmlldygpOworICAgICAgICAgICAgICAgIHRoaXMuX2VtcHR5
Vmlldy5zaG93KHRoaXMuZWxlbWVudCk7CisgICAgICAgICAgICAgICAgdGhpcy5pbm5lclZpZXcg
PSB0aGlzLl9lbXB0eVZpZXc7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBpZiAodGhpcy5fZW1wdHlWaWV3KSB7CisgICAgICAgICAgICAgICAgdGhpcy5fZW1w
dHlWaWV3LmRldGFjaCgpOworICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9lbXB0eVZpZXc7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghdGhpcy5fcHJldmlld1ZpZXcpCisg
ICAgICAgICAgICAgICAgdGhpcy5fcHJldmlld1ZpZXcgPSB0aGlzLl9jcmVhdGVQcmV2aWV3Vmll
dygpOworICAgICAgICAgICAgdGhpcy5fcHJldmlld1ZpZXcuc2hvdyh0aGlzLmVsZW1lbnQpOwor
ICAgICAgICAgICAgdGhpcy5pbm5lclZpZXcgPSB0aGlzLl9wcmV2aWV3VmlldzsKKyAgICAgICAg
fQorICAgIH0sCisKKyAgICBfY3JlYXRlRW1wdHlWaWV3OiBmdW5jdGlvbigpCisgICAgeworICAg
ICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5FbXB0eVZpZXcoV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJUaGlzIHJlcXVlc3QgaGFzIG5vIHByZXZpZXcgYXZhaWxhYmxlLiIpKTsKKyAgICB9LAor
CisgICAgX2NyZWF0ZVByZXZpZXdWaWV3OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAo
dGhpcy5yZXF1ZXN0Lmhhc0Vycm9yU3RhdHVzQ29kZSgpICYmIHRoaXMucmVxdWVzdC5jb250ZW50
KQorICAgICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuUmVxdWVzdEhUTUxWaWV3KHRo
aXMucmVxdWVzdCk7CisKKyAgICAgICAgaWYgKHRoaXMucmVxdWVzdC50eXBlID09PSBXZWJJbnNw
ZWN0b3IucmVzb3VyY2VUeXBlcy5YSFIgJiYgdGhpcy5yZXF1ZXN0LmNvbnRlbnQpIHsKKyAgICAg
ICAgICAgIHZhciBwYXJzZWRKU09OID0gV2ViSW5zcGVjdG9yLlJlcXVlc3RKU09OVmlldy5wYXJz
ZUpTT04odGhpcy5yZXF1ZXN0LmNvbnRlbnQpOworICAgICAgICAgICAgaWYgKHBhcnNlZEpTT04p
CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuUmVxdWVzdEpTT05WaWV3
KHRoaXMucmVxdWVzdCwgcGFyc2VkSlNPTik7CisgICAgICAgIH0KKworICAgICAgICBpZiAodGhp
cy5yZXF1ZXN0LmNvbnRlbnQgJiYgdGhpcy5yZXF1ZXN0LnR5cGUgPT09IFdlYkluc3BlY3Rvci5y
ZXNvdXJjZVR5cGVzLlNjcmlwdCAmJiB0aGlzLnJlcXVlc3QubWltZVR5cGUgPT09ICJhcHBsaWNh
dGlvbi9qc29uIikgeworICAgICAgICAgICAgdmFyIHBhcnNlZEpTT05QID0gV2ViSW5zcGVjdG9y
LlJlcXVlc3RKU09OVmlldy5wYXJzZUpTT05QKHRoaXMucmVxdWVzdC5jb250ZW50KTsKKyAgICAg
ICAgICAgIGlmIChwYXJzZWRKU09OUCkKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFdlYklu
c3BlY3Rvci5SZXF1ZXN0SlNPTlZpZXcodGhpcy5yZXF1ZXN0LCBwYXJzZWRKU09OUCk7CisgICAg
ICAgIH0KKworICAgICAgICBpZiAodGhpcy5fcmVzcG9uc2VWaWV3LnNvdXJjZVZpZXcpCisgICAg
ICAgICAgICByZXR1cm4gdGhpcy5fcmVzcG9uc2VWaWV3LnNvdXJjZVZpZXc7CisKKyAgICAgICAg
aWYgKHRoaXMucmVxdWVzdC50eXBlID09PSBXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5PdGhl
cikKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9jcmVhdGVFbXB0eVZpZXcoKTsKKworICAgICAg
ICByZXR1cm4gV2ViSW5zcGVjdG9yLlJlcXVlc3RWaWV3Lm5vblNvdXJjZVZpZXdGb3JSZXF1ZXN0
KHRoaXMucmVxdWVzdCk7CisgICAgfQorfQorCitXZWJJbnNwZWN0b3IuUmVxdWVzdFByZXZpZXdW
aWV3LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuUmVxdWVzdENvbnRlbnRWaWV3
LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvUmVxdWVzdFJlc3BvbnNlVmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvUmVxdWVzdFJlc3BvbnNlVmlldy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NDk3N2NmNTBlMTAyOTZi
NjM4MzViMTdlMTUwNGU2MWM3MTBiZTg4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXF1ZXN0UmVzcG9uc2VWaWV3LmpzCkBAIC0wLDAgKzEs
NjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5SZXF1
ZXN0Q29udGVudFZpZXd9CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5OZXR3b3JrUmVxdWVzdH0g
cmVxdWVzdAorICovCitXZWJJbnNwZWN0b3IuUmVxdWVzdFJlc3BvbnNlVmlldyA9IGZ1bmN0aW9u
KHJlcXVlc3QpCit7CisgICAgV2ViSW5zcGVjdG9yLlJlcXVlc3RDb250ZW50Vmlldy5jYWxsKHRo
aXMsIHJlcXVlc3QpOworfQorCitXZWJJbnNwZWN0b3IuUmVxdWVzdFJlc3BvbnNlVmlldy5wcm90
b3R5cGUgPSB7CisgICAgZ2V0IHNvdXJjZVZpZXcoKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlz
Ll9zb3VyY2VWaWV3ICYmIFdlYkluc3BlY3Rvci5SZXF1ZXN0Vmlldy5oYXNUZXh0Q29udGVudCh0
aGlzLnJlcXVlc3QpKQorICAgICAgICAgICAgdGhpcy5fc291cmNlVmlldyA9IG5ldyBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2VTb3VyY2VGcmFtZSh0aGlzLnJlcXVlc3QpOworICAgICAgICByZXR1cm4g
dGhpcy5fc291cmNlVmlldzsKKyAgICB9LAorCisgICAgY29udGVudExvYWRlZDogZnVuY3Rpb24o
KQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLnJlcXVlc3QuY29udGVudCB8fCAhdGhpcy5zb3Vy
Y2VWaWV3KSB7CisgICAgICAgICAgICBpZiAoIXRoaXMuX2VtcHR5VmlldykgeworICAgICAgICAg
ICAgICAgIHRoaXMuX2VtcHR5VmlldyA9IG5ldyBXZWJJbnNwZWN0b3IuRW1wdHlWaWV3KFdlYklu
c3BlY3Rvci5VSVN0cmluZygiVGhpcyByZXF1ZXN0IGhhcyBubyByZXNwb25zZSBkYXRhIGF2YWls
YWJsZS4iKSk7CisgICAgICAgICAgICAgICAgdGhpcy5fZW1wdHlWaWV3LnNob3codGhpcy5lbGVt
ZW50KTsKKyAgICAgICAgICAgICAgICB0aGlzLmlubmVyVmlldyA9IHRoaXMuX2VtcHR5VmlldzsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmICh0aGlzLl9l
bXB0eVZpZXcpIHsKKyAgICAgICAgICAgICAgICB0aGlzLl9lbXB0eVZpZXcuZGV0YWNoKCk7Cisg
ICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2VtcHR5VmlldzsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgdGhpcy5zb3VyY2VWaWV3LnNob3codGhpcy5lbGVtZW50KTsKKyAgICAgICAg
ICAgIHRoaXMuaW5uZXJWaWV3ID0gdGhpcy5zb3VyY2VWaWV3OworICAgICAgICB9CisgICAgfQor
fQorCitXZWJJbnNwZWN0b3IuUmVxdWVzdFJlc3BvbnNlVmlldy5wcm90b3R5cGUuX19wcm90b19f
ID0gV2ViSW5zcGVjdG9yLlJlcXVlc3RDb250ZW50Vmlldy5wcm90b3R5cGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1JlcXVlc3RUaW1pbmdWaWV3Lmpz
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXF1ZXN0VGltaW5nVmlldy5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44MjQwMDg4NTQzYTZiZGMyNjUxODJiZjdiZWJiNTU0MGFiMTNjNGE2Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXF1
ZXN0VGltaW5nVmlldy5qcwpAQCAtMCwwICsxLDE2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8qKgorICogQGNvbnN0cnVjdG9yCisg
KiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLlZpZXd9CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5O
ZXR3b3JrUmVxdWVzdH0gcmVxdWVzdAorICovCitXZWJJbnNwZWN0b3IuUmVxdWVzdFRpbWluZ1Zp
ZXcgPSBmdW5jdGlvbihyZXF1ZXN0KQoreworICAgIFdlYkluc3BlY3Rvci5WaWV3LmNhbGwodGhp
cyk7CisgICAgdGhpcy5lbGVtZW50LmFkZFN0eWxlQ2xhc3MoInJlc291cmNlLXRpbWluZy12aWV3
Iik7CisKKyAgICB0aGlzLl9yZXF1ZXN0ID0gcmVxdWVzdDsKKworICAgIHJlcXVlc3QuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVlc3QuRXZlbnRzLlRpbWluZ0NoYW5n
ZWQsIHRoaXMuX3JlZnJlc2gsIHRoaXMpOworfQorCitXZWJJbnNwZWN0b3IuUmVxdWVzdFRpbWlu
Z1ZpZXcucHJvdG90eXBlID0geworICAgIHdhc1Nob3duOiBmdW5jdGlvbigpCisgICAgeworICAg
ICAgICBpZiAoIXRoaXMuX3JlcXVlc3QudGltaW5nKSB7CisgICAgICAgICAgICBpZiAoIXRoaXMu
X2VtcHR5VmlldykgeworICAgICAgICAgICAgICAgIHRoaXMuX2VtcHR5VmlldyA9IG5ldyBXZWJJ
bnNwZWN0b3IuRW1wdHlWaWV3KFdlYkluc3BlY3Rvci5VSVN0cmluZygiVGhpcyByZXF1ZXN0IGhh
cyBubyBkZXRhaWxlZCB0aW1pbmcgaW5mby4iKSk7CisgICAgICAgICAgICAgICAgdGhpcy5fZW1w
dHlWaWV3LnNob3codGhpcy5lbGVtZW50KTsKKyAgICAgICAgICAgICAgICB0aGlzLmlubmVyVmll
dyA9IHRoaXMuX2VtcHR5VmlldzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIGlmICh0aGlzLl9lbXB0eVZpZXcpIHsKKyAgICAgICAgICAg
IHRoaXMuX2VtcHR5Vmlldy5kZXRhY2goKTsKKyAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9lbXB0
eVZpZXc7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl9yZWZyZXNoKCk7CisgICAgfSwKKwor
ICAgIF9yZWZyZXNoOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAodGhpcy5fdGFibGVF
bGVtZW50KQorICAgICAgICAgICAgdGhpcy5fdGFibGVFbGVtZW50LnBhcmVudEVsZW1lbnQucmVt
b3ZlQ2hpbGQodGhpcy5fdGFibGVFbGVtZW50KTsKKworICAgICAgICB0aGlzLl90YWJsZUVsZW1l
bnQgPSBXZWJJbnNwZWN0b3IuUmVxdWVzdFRpbWluZ1ZpZXcuY3JlYXRlVGltaW5nVGFibGUodGhp
cy5fcmVxdWVzdCk7CisgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl90YWJs
ZUVsZW1lbnQpOworICAgIH0KK30KKworV2ViSW5zcGVjdG9yLlJlcXVlc3RUaW1pbmdWaWV3LmNy
ZWF0ZVRpbWluZ1RhYmxlID0gZnVuY3Rpb24ocmVxdWVzdCkKK3sKKyAgICB2YXIgdGFibGVFbGVt
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGFibGUiKTsKKyAgICB2YXIgcm93cyA9IFtd
OworCisgICAgZnVuY3Rpb24gYWRkUm93KHRpdGxlLCBjbGFzc05hbWUsIHN0YXJ0LCBlbmQpCisg
ICAgeworICAgICAgICB2YXIgcm93ID0ge307CisgICAgICAgIHJvdy50aXRsZSA9IHRpdGxlOwor
ICAgICAgICByb3cuY2xhc3NOYW1lID0gY2xhc3NOYW1lOworICAgICAgICByb3cuc3RhcnQgPSBz
dGFydDsKKyAgICAgICAgcm93LmVuZCA9IGVuZDsKKyAgICAgICAgcm93cy5wdXNoKHJvdyk7Cisg
ICAgfQorCisgICAgaWYgKHJlcXVlc3QudGltaW5nLnByb3h5U3RhcnQgIT09IC0xKQorICAgICAg
ICBhZGRSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQcm94eSIpLCAicHJveHkiLCByZXF1ZXN0
LnRpbWluZy5wcm94eVN0YXJ0LCByZXF1ZXN0LnRpbWluZy5wcm94eUVuZCk7CisKKyAgICBpZiAo
cmVxdWVzdC50aW1pbmcuZG5zU3RhcnQgIT09IC0xKQorICAgICAgICBhZGRSb3coV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJETlMgTG9va3VwIiksICJkbnMiLCByZXF1ZXN0LnRpbWluZy5kbnNTdGFy
dCwgcmVxdWVzdC50aW1pbmcuZG5zRW5kKTsKKworICAgIGlmIChyZXF1ZXN0LnRpbWluZy5jb25u
ZWN0U3RhcnQgIT09IC0xKSB7CisgICAgICAgIGlmIChyZXF1ZXN0LmNvbm5lY3Rpb25SZXVzZWQp
CisgICAgICAgICAgICBhZGRSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJCbG9ja2luZyIpLCAi
Y29ubmVjdGluZyIsIHJlcXVlc3QudGltaW5nLmNvbm5lY3RTdGFydCwgcmVxdWVzdC50aW1pbmcu
Y29ubmVjdEVuZCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdmFyIGNvbm5lY3RTdGFy
dCA9IHJlcXVlc3QudGltaW5nLmNvbm5lY3RTdGFydDsKKyAgICAgICAgICAgIC8vIENvbm5lY3Rp
b24gaW5jbHVkZXMgRE5TLCBzdWJ0cmFjdCBpdCBoZXJlLgorICAgICAgICAgICAgaWYgKHJlcXVl
c3QudGltaW5nLmRuc1N0YXJ0ICE9PSAtMSkKKyAgICAgICAgICAgICAgICBjb25uZWN0U3RhcnQg
Kz0gcmVxdWVzdC50aW1pbmcuZG5zRW5kIC0gcmVxdWVzdC50aW1pbmcuZG5zU3RhcnQ7CisgICAg
ICAgICAgICBhZGRSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb25uZWN0aW5nIiksICJjb25u
ZWN0aW5nIiwgY29ubmVjdFN0YXJ0LCByZXF1ZXN0LnRpbWluZy5jb25uZWN0RW5kKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIGlmIChyZXF1ZXN0LnRpbWluZy5zc2xTdGFydCAhPT0gLTEpCisg
ICAgICAgIGFkZFJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNTTCIpLCAic3NsIiwgcmVxdWVz
dC50aW1pbmcuc3NsU3RhcnQsIHJlcXVlc3QudGltaW5nLnNzbEVuZCk7CisKKyAgICB2YXIgc2Vu
ZFN0YXJ0ID0gcmVxdWVzdC50aW1pbmcuc2VuZFN0YXJ0OworICAgIGlmIChyZXF1ZXN0LnRpbWlu
Zy5zc2xTdGFydCAhPT0gLTEpCisgICAgICAgIHNlbmRTdGFydCArPSByZXF1ZXN0LnRpbWluZy5z
c2xFbmQgLSByZXF1ZXN0LnRpbWluZy5zc2xTdGFydDsKKworICAgIGFkZFJvdyhXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIlNlbmRpbmciKSwgInNlbmRpbmciLCByZXF1ZXN0LnRpbWluZy5zZW5kU3Rh
cnQsIHJlcXVlc3QudGltaW5nLnNlbmRFbmQpOworICAgIGFkZFJvdyhXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIldhaXRpbmciKSwgIndhaXRpbmciLCByZXF1ZXN0LnRpbWluZy5zZW5kRW5kLCByZXF1
ZXN0LnRpbWluZy5yZWNlaXZlSGVhZGVyc0VuZCk7CisgICAgYWRkUm93KFdlYkluc3BlY3Rvci5V
SVN0cmluZygiUmVjZWl2aW5nIiksICJyZWNlaXZpbmciLCAocmVxdWVzdC5yZXNwb25zZVJlY2Vp
dmVkVGltZSAtIHJlcXVlc3QudGltaW5nLnJlcXVlc3RUaW1lKSAqIDEwMDAsIChyZXF1ZXN0LmVu
ZFRpbWUgLSByZXF1ZXN0LnRpbWluZy5yZXF1ZXN0VGltZSkgKiAxMDAwKTsKKworICAgIGNvbnN0
IGNoYXJ0V2lkdGggPSAyMDA7CisgICAgdmFyIHRvdGFsID0gKHJlcXVlc3QuZW5kVGltZSAtIHJl
cXVlc3QudGltaW5nLnJlcXVlc3RUaW1lKSAqIDEwMDA7CisgICAgdmFyIHNjYWxlID0gY2hhcnRX
aWR0aCAvIHRvdGFsOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByb3dzLmxlbmd0aDsgKytp
KSB7CisgICAgICAgIHZhciB0ciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIik7CisgICAg
ICAgIHRhYmxlRWxlbWVudC5hcHBlbmRDaGlsZCh0cik7CisKKyAgICAgICAgdmFyIHRkID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKKyAgICAgICAgdGQudGV4dENvbnRlbnQgPSByb3dz
W2ldLnRpdGxlOworICAgICAgICB0ci5hcHBlbmRDaGlsZCh0ZCk7CisKKyAgICAgICAgdGQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOworICAgICAgICB0ZC53aWR0aCA9IGNoYXJ0V2lk
dGggKyAicHgiOworCisgICAgICAgIHZhciByb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKTsKKyAgICAgICAgcm93LmNsYXNzTmFtZSA9ICJuZXR3b3JrLXRpbWluZy1yb3ciOworICAg
ICAgICB0ZC5hcHBlbmRDaGlsZChyb3cpOworCisgICAgICAgIHZhciBiYXIgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgICAgIGJhci5jbGFzc05hbWUgPSAibmV0d29yay10
aW1pbmctYmFyICIgKyByb3dzW2ldLmNsYXNzTmFtZTsKKyAgICAgICAgYmFyLnN0eWxlLmxlZnQg
PSBzY2FsZSAqIHJvd3NbaV0uc3RhcnQgKyAicHgiOworICAgICAgICBiYXIuc3R5bGUucmlnaHQg
PSBzY2FsZSAqICh0b3RhbCAtIHJvd3NbaV0uZW5kKSArICJweCI7CisgICAgICAgIGJhci5zdHls
ZS5iYWNrZ3JvdW5kQ29sb3IgPSByb3dzW2ldLmNvbG9yOworICAgICAgICBiYXIudGV4dENvbnRl
bnQgPSAiXHUyMDBCIjsgLy8gSW1wb3J0YW50IGZvciAwLXRpbWUgaXRlbXMgdG8gaGF2ZSAwIHdp
ZHRoLgorICAgICAgICByb3cuYXBwZW5kQ2hpbGQoYmFyKTsKKworICAgICAgICB2YXIgdGl0bGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgICAgIHRpdGxlLmNsYXNzTmFt
ZSA9ICJuZXR3b3JrLXRpbWluZy1iYXItdGl0bGUiOworICAgICAgICBpZiAodG90YWwgLSByb3dz
W2ldLmVuZCA8IHJvd3NbaV0uc3RhcnQpCisgICAgICAgICAgICB0aXRsZS5zdHlsZS5yaWdodCA9
IChzY2FsZSAqICh0b3RhbCAtIHJvd3NbaV0uZW5kKSArIDMpICsgInB4IjsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgdGl0bGUuc3R5bGUubGVmdCA9IChzY2FsZSAqIHJvd3NbaV0uc3RhcnQg
KyAzKSArICJweCI7CisgICAgICAgIHRpdGxlLnRleHRDb250ZW50ID0gTnVtYmVyLnNlY29uZHNU
b1N0cmluZygocm93c1tpXS5lbmQgLSByb3dzW2ldLnN0YXJ0KSAvIDEwMDApOworICAgICAgICBy
b3cuYXBwZW5kQ2hpbGQodGl0bGUpOworCisgICAgICAgIHRyLmFwcGVuZENoaWxkKHRkKTsKKyAg
ICB9CisgICAgcmV0dXJuIHRhYmxlRWxlbWVudDsKK30KKworV2ViSW5zcGVjdG9yLlJlcXVlc3RU
aW1pbmdWaWV3LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5
cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1JlcXVl
c3RWaWV3LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXF1ZXN0Vmll
dy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jMDU2OTBmYTU3OGNmNTUyM2Y5OWFlZjFmZWUyMzQ0YmNhMGE3ODA0
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9S
ZXF1ZXN0Vmlldy5qcwpAQCAtMCwwICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBl
eHRlbmRzIHtXZWJJbnNwZWN0b3IuVmlld30KKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLk5ldHdv
cmtSZXF1ZXN0fSByZXF1ZXN0CisgKi8KK1dlYkluc3BlY3Rvci5SZXF1ZXN0VmlldyA9IGZ1bmN0
aW9uKHJlcXVlc3QpCit7CisgICAgV2ViSW5zcGVjdG9yLlZpZXcuY2FsbCh0aGlzKTsKKyAgICB0
aGlzLnJlZ2lzdGVyUmVxdWlyZWRDU1MoInJlc291cmNlVmlldy5jc3MiKTsKKworICAgIHRoaXMu
ZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJyZXNvdXJjZS12aWV3Iik7CisgICAgdGhpcy5yZXF1ZXN0
ID0gcmVxdWVzdDsKK30KKworV2ViSW5zcGVjdG9yLlJlcXVlc3RWaWV3LnByb3RvdHlwZSA9IHsK
KyAgICBoYXNDb250ZW50OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorfQorCitXZWJJbnNwZWN0b3IuUmVxdWVzdFZpZXcucHJvdG90eXBlLl9fcHJvdG9f
XyA9IFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlwZTsKKworLyoqCisgKiBAcGFyYW0ge1dlYklu
c3BlY3Rvci5OZXR3b3JrUmVxdWVzdH0gcmVxdWVzdAorICovCitXZWJJbnNwZWN0b3IuUmVxdWVz
dFZpZXcuaGFzVGV4dENvbnRlbnQgPSBmdW5jdGlvbihyZXF1ZXN0KQoreworICAgIGlmIChyZXF1
ZXN0LnR5cGUuaXNUZXh0VHlwZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsgCisgICAgaWYgKHJl
cXVlc3QudHlwZSA9PT0gV2ViSW5zcGVjdG9yLnJlc291cmNlVHlwZXMuT3RoZXIpCisgICAgICAg
IHJldHVybiByZXF1ZXN0LmNvbnRlbnQgJiYgIXJlcXVlc3QuY29udGVudEVuY29kZWQ7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCisvKioKKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLk5ldHdvcmtS
ZXF1ZXN0fSByZXF1ZXN0CisgKi8KK1dlYkluc3BlY3Rvci5SZXF1ZXN0Vmlldy5ub25Tb3VyY2VW
aWV3Rm9yUmVxdWVzdCA9IGZ1bmN0aW9uKHJlcXVlc3QpCit7CisgICAgc3dpdGNoIChyZXF1ZXN0
LnR5cGUpIHsKKyAgICBjYXNlIFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5cGVzLkltYWdlOgorICAg
ICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5JbWFnZVZpZXcocmVxdWVzdCk7CisgICAgY2Fz
ZSBXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5Gb250OgorICAgICAgICByZXR1cm4gbmV3IFdl
Ykluc3BlY3Rvci5Gb250VmlldyhyZXF1ZXN0KTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1
cm4gbmV3IFdlYkluc3BlY3Rvci5SZXF1ZXN0VmlldyhyZXF1ZXN0KTsKKyAgICB9Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpzIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZS5qcwppbmRleCA4ZTVm
NDU4MWRkZDZkNzhkYjNkOWM3MWQ0NTIxY2Y3MzBlMjNmMDY5Li5lMTFkN2RkNjMwYTRlYTRkNDdk
NmU1OGNhZjJhNzIzNWYwMjE3OGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvUmVzb3VyY2UuanMKQEAgLTE2MywxNCArMTYzLDIyIEBAIFdlYkluc3BlY3Rvci5S
ZXNvdXJjZS5FdmVudHMgPSB7CiAKIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUgPSB7
CiAgICAgLyoqCi0gICAgICogQHR5cGUge1dlYkluc3BlY3Rvci5OZXR3b3JrUmVxdWVzdH0KKyAg
ICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVlc3R9CiAgICAgICovCi0gICAg
Z2V0IHJlcXVlc3QoKQorICAgIHJlcXVlc3Q6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHJl
dHVybiAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5OZXR3b3JrUmVxdWVzdH0gKi8gdGhpczsKICAg
ICB9LAogCiAgICAgLyoqCisgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlJlc291cmNlfQor
ICAgICAqLworICAgIHJlc291cmNlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4g
dGhpczsKKyAgICB9LAorCisgICAgLyoqCiAgICAgICogQHR5cGUge3N0cmluZ30KICAgICAgKi8K
ICAgICBnZXQgdXJsKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvUmVzb3VyY2VDb29raWVzVmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvUmVzb3VyY2VDb29raWVzVmlldy5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNGU1MTgxOGM4OTc3MTk2NDVhYzcwYmFhMjA2MTI2NWY2ZDE2MzhhZi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlQ29va2llc1ZpZXcuanMKKysrIC9kZXYvbnVsbApAQCAt
MSw4NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBt
ZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotLyoqCi0gKiBAY29uc3RydWN0b3IKLSAqIEBleHRlbmRzIHtXZWJJbnNwZWN0
b3IuVmlld30KLSAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLk5ldHdvcmtSZXF1ZXN0fSByZXF1ZXN0
Ci0gKi8KLVdlYkluc3BlY3Rvci5SZXNvdXJjZUNvb2tpZXNWaWV3ID0gZnVuY3Rpb24ocmVxdWVz
dCkKLXsKLSAgICBXZWJJbnNwZWN0b3IuVmlldy5jYWxsKHRoaXMpOwotICAgIHRoaXMuZWxlbWVu
dC5hZGRTdHlsZUNsYXNzKCJyZXNvdXJjZS1jb29raWVzLXZpZXciKTsKLQotICAgIHRoaXMuX3Jl
cXVlc3QgPSByZXF1ZXN0OwotCi0gICAgcmVxdWVzdC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5OZXR3b3JrUmVxdWVzdC5FdmVudHMuUmVxdWVzdEhlYWRlcnNDaGFuZ2VkLCB0aGlzLl9y
ZWZyZXNoQ29va2llcywgdGhpcyk7Ci0gICAgcmVxdWVzdC5hZGRFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5OZXR3b3JrUmVxdWVzdC5FdmVudHMuUmVzcG9uc2VIZWFkZXJzQ2hhbmdlZCwgdGhp
cy5fcmVmcmVzaENvb2tpZXMsIHRoaXMpOwotfQotCi1XZWJJbnNwZWN0b3IuUmVzb3VyY2VDb29r
aWVzVmlldy5wcm90b3R5cGUgPSB7Ci0gICAgd2FzU2hvd246IGZ1bmN0aW9uKCkKLSAgICB7Ci0g
ICAgICAgIGlmICghdGhpcy5fZ290Q29va2llcykgewotICAgICAgICAgICAgaWYgKCF0aGlzLl9l
bXB0eVZpZXcpIHsKLSAgICAgICAgICAgICAgICB0aGlzLl9lbXB0eVZpZXcgPSBuZXcgV2ViSW5z
cGVjdG9yLkVtcHR5VmlldyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRoaXMgcmVxdWVzdCBoYXMg
bm8gY29va2llcy4iKSk7Ci0gICAgICAgICAgICAgICAgdGhpcy5fZW1wdHlWaWV3LnNob3codGhp
cy5lbGVtZW50KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotCi0gICAgICAgIGlmICghdGhpcy5fY29va2llc1RhYmxlKQotICAgICAgICAgICAgdGhpcy5f
YnVpbGRDb29raWVzVGFibGUoKTsKLSAgICB9LAotCi0gICAgZ2V0IF9nb3RDb29raWVzKCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiAhISh0aGlzLl9yZXF1ZXN0LnJlcXVlc3RDb29raWVzIHx8IHRo
aXMuX3JlcXVlc3QucmVzcG9uc2VDb29raWVzKTsKLSAgICB9LAotCi0gICAgX2J1aWxkQ29va2ll
c1RhYmxlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLmRldGFjaENoaWxkVmlld3Mo
KTsKLQotICAgICAgICB0aGlzLl9jb29raWVzVGFibGUgPSBuZXcgV2ViSW5zcGVjdG9yLkNvb2tp
ZXNUYWJsZShudWxsLCB0cnVlKTsKLSAgICAgICAgdGhpcy5fY29va2llc1RhYmxlLmFkZENvb2tp
ZXNGb2xkZXIoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXF1ZXN0IENvb2tpZXMiKSwgdGhpcy5f
cmVxdWVzdC5yZXF1ZXN0Q29va2llcyk7Ci0gICAgICAgIHRoaXMuX2Nvb2tpZXNUYWJsZS5hZGRD
b29raWVzRm9sZGVyKFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVzcG9uc2UgQ29va2llcyIpLCB0
aGlzLl9yZXF1ZXN0LnJlc3BvbnNlQ29va2llcyk7Ci0gICAgICAgIHRoaXMuX2Nvb2tpZXNUYWJs
ZS5zaG93KHRoaXMuZWxlbWVudCk7Ci0gICAgfSwKLQotICAgIF9yZWZyZXNoQ29va2llczogZnVu
Y3Rpb24oKQotICAgIHsKLSAgICAgICAgZGVsZXRlIHRoaXMuX2Nvb2tpZXNUYWJsZTsKLSAgICAg
ICAgaWYgKCF0aGlzLl9nb3RDb29raWVzIHx8ICF0aGlzLmlzU2hvd2luZygpKQotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB0aGlzLl9idWlsZENvb2tpZXNUYWJsZSgpOwotICAgICAgICB0
aGlzLl9jb29raWVzVGFibGUudXBkYXRlV2lkdGhzKCk7Ci0gICAgfQotfQotCi1XZWJJbnNwZWN0
b3IuUmVzb3VyY2VDb29raWVzVmlldy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9y
LlZpZXcucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9SZXNvdXJjZUhUTUxWaWV3LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9SZXNvdXJjZUhUTUxWaWV3LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA5YzRiNTVlZTM2ZTI1Yjk1NWE4MzA1NWJmZGU2ZGIwOWJiNmVjZDAxLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvUmVzb3VyY2VIVE1MVmlldy5qcworKysgL2Rldi9udWxsCkBAIC0xLDcwICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAq
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0vKioKLSAqIEBjb25zdHJ1Y3RvcgotICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5SZXNv
dXJjZVZpZXd9Ci0gKi8KLVdlYkluc3BlY3Rvci5SZXNvdXJjZUhUTUxWaWV3ID0gZnVuY3Rpb24o
cmVzb3VyY2UpCi17Ci0gICAgV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5jYWxsKHRoaXMsIHJl
c291cmNlKTsKLSAgICB0aGlzLmVsZW1lbnQuYWRkU3R5bGVDbGFzcygiaHRtbCIpOwotfQotCi1X
ZWJJbnNwZWN0b3IuUmVzb3VyY2VIVE1MVmlldy5wcm90b3R5cGUgPSB7Ci0gICAgaGFzQ29udGVu
dDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSwKLQotICAg
IHdhc1Nob3duOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLl9jcmVhdGVJRnJhbWUo
KTsKLSAgICB9LAotCi0gICAgd2lsbEhpZGU6IGZ1bmN0aW9uKHBhcmVudEVsZW1lbnQpCi0gICAg
ewotICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKLSAgICB9LAotCi0gICAg
X2NyZWF0ZUlGcmFtZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgLy8gV2UgbmVlZCB0byBj
cmVhdGUgaWZyYW1lIGFnYWluIGVhY2ggdGltZSBiZWNhdXNlIGNvbnRlbnREb2N1bWVudAotICAg
ICAgICAvLyBpcyBkZWxldGVkIHdoZW4gaWZyYW1lIGlzIHJlbW92ZWQgZnJvbSBpdHMgcGFyZW50
LgotICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKLSAgICAgICAgdmFyIGlm
cmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOwotICAgICAgICB0aGlzLmVs
ZW1lbnQuYXBwZW5kQ2hpbGQoaWZyYW1lKTsKLSAgICAgICAgaWZyYW1lLnNldEF0dHJpYnV0ZSgi
c2FuZGJveCIsICIiKTsgLy8gRm9yYmlkIHRvIHJ1biBKYXZhU2NyaXB0IGFuZCBzZXQgdW5pcXVl
IG9yaWdpbi4KLQotICAgICAgICBpZnJhbWUuY29udGVudERvY3VtZW50LmJvZHkuaW5uZXJIVE1M
ID0gdGhpcy5yZXNvdXJjZS5jb250ZW50OwotICAgIH0KLX0KLQotV2ViSW5zcGVjdG9yLlJlc291
cmNlSFRNTFZpZXcucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZVZp
ZXcucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9SZXNvdXJjZUhlYWRlcnNWaWV3LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9SZXNvdXJjZUhlYWRlcnNWaWV3LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAxNjUwZTY4OTc5NzMwZGU3NGQ1ODM4N2U2YTFjOTVkM2I4NWVjOGY1Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvUmVzb3VyY2VIZWFkZXJzVmlldy5qcworKysgL2Rldi9udWxsCkBAIC0x
LDQxMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIElCTSBDb3JwLiAyMDA5ICBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUg
bmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgot
ICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
LSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotLyoqCi0gKiBAY29uc3RydWN0b3IKLSAqIEBleHRlbmRzIHtXZWJJ
bnNwZWN0b3IuVmlld30KLSAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLk5ldHdvcmtSZXF1ZXN0fSBy
ZXF1ZXN0Ci0gKi8KLVdlYkluc3BlY3Rvci5SZXNvdXJjZUhlYWRlcnNWaWV3ID0gZnVuY3Rpb24o
cmVxdWVzdCkKLXsKLSAgICBXZWJJbnNwZWN0b3IuVmlldy5jYWxsKHRoaXMpOwotICAgIHRoaXMu
cmVnaXN0ZXJSZXF1aXJlZENTUygicmVzb3VyY2VWaWV3LmNzcyIpOwotICAgIHRoaXMuZWxlbWVu
dC5hZGRTdHlsZUNsYXNzKCJyZXNvdXJjZS1oZWFkZXJzLXZpZXciKTsKLQotICAgIHRoaXMuX3Jl
cXVlc3QgPSByZXF1ZXN0OwotCi0gICAgdGhpcy5faGVhZGVyc0xpc3RFbGVtZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgib2wiKTsKLSAgICB0aGlzLl9oZWFkZXJzTGlzdEVsZW1lbnQuY2xh
c3NOYW1lID0gIm91dGxpbmUtZGlzY2xvc3VyZSI7Ci0gICAgdGhpcy5lbGVtZW50LmFwcGVuZENo
aWxkKHRoaXMuX2hlYWRlcnNMaXN0RWxlbWVudCk7Ci0KLSAgICB0aGlzLl9oZWFkZXJzVHJlZU91
dGxpbmUgPSBuZXcgVHJlZU91dGxpbmUodGhpcy5faGVhZGVyc0xpc3RFbGVtZW50KTsKLSAgICB0
aGlzLl9oZWFkZXJzVHJlZU91dGxpbmUuZXhwYW5kVHJlZUVsZW1lbnRzV2hlbkFycm93aW5nID0g
dHJ1ZTsKLQotICAgIHRoaXMuX3VybFRyZWVFbGVtZW50ID0gbmV3IFRyZWVFbGVtZW50KCIiLCBu
dWxsLCBmYWxzZSk7Ci0gICAgdGhpcy5fdXJsVHJlZUVsZW1lbnQuc2VsZWN0YWJsZSA9IGZhbHNl
OwotICAgIHRoaXMuX2hlYWRlcnNUcmVlT3V0bGluZS5hcHBlbmRDaGlsZCh0aGlzLl91cmxUcmVl
RWxlbWVudCk7Ci0KLSAgICB0aGlzLl9yZXF1ZXN0TWV0aG9kVHJlZUVsZW1lbnQgPSBuZXcgVHJl
ZUVsZW1lbnQoIiIsIG51bGwsIGZhbHNlKTsKLSAgICB0aGlzLl9yZXF1ZXN0TWV0aG9kVHJlZUVs
ZW1lbnQuc2VsZWN0YWJsZSA9IGZhbHNlOwotICAgIHRoaXMuX2hlYWRlcnNUcmVlT3V0bGluZS5h
cHBlbmRDaGlsZCh0aGlzLl9yZXF1ZXN0TWV0aG9kVHJlZUVsZW1lbnQpOwotCi0gICAgdGhpcy5f
c3RhdHVzQ29kZVRyZWVFbGVtZW50ID0gbmV3IFRyZWVFbGVtZW50KCIiLCBudWxsLCBmYWxzZSk7
Ci0gICAgdGhpcy5fc3RhdHVzQ29kZVRyZWVFbGVtZW50LnNlbGVjdGFibGUgPSBmYWxzZTsKLSAg
ICB0aGlzLl9oZWFkZXJzVHJlZU91dGxpbmUuYXBwZW5kQ2hpbGQodGhpcy5fc3RhdHVzQ29kZVRy
ZWVFbGVtZW50KTsKLQotICAgIHRoaXMuX3JlcXVlc3RIZWFkZXJzVHJlZUVsZW1lbnQgPSBuZXcg
VHJlZUVsZW1lbnQoIiIsIG51bGwsIHRydWUpOwotICAgIHRoaXMuX3JlcXVlc3RIZWFkZXJzVHJl
ZUVsZW1lbnQuZXhwYW5kZWQgPSB0cnVlOwotICAgIHRoaXMuX3JlcXVlc3RIZWFkZXJzVHJlZUVs
ZW1lbnQuc2VsZWN0YWJsZSA9IGZhbHNlOwotICAgIHRoaXMuX2hlYWRlcnNUcmVlT3V0bGluZS5h
cHBlbmRDaGlsZCh0aGlzLl9yZXF1ZXN0SGVhZGVyc1RyZWVFbGVtZW50KTsKLQotICAgIHRoaXMu
X2RlY29kZVJlcXVlc3RQYXJhbWV0ZXJzID0gdHJ1ZTsKLQotICAgIHRoaXMuX3Nob3dSZXF1ZXN0
SGVhZGVyc1RleHQgPSBmYWxzZTsKLSAgICB0aGlzLl9zaG93UmVzcG9uc2VIZWFkZXJzVGV4dCA9
IGZhbHNlOwotCi0gICAgdGhpcy5fcXVlcnlTdHJpbmdUcmVlRWxlbWVudCA9IG5ldyBUcmVlRWxl
bWVudCgiIiwgbnVsbCwgdHJ1ZSk7Ci0gICAgdGhpcy5fcXVlcnlTdHJpbmdUcmVlRWxlbWVudC5l
eHBhbmRlZCA9IHRydWU7Ci0gICAgdGhpcy5fcXVlcnlTdHJpbmdUcmVlRWxlbWVudC5zZWxlY3Rh
YmxlID0gZmFsc2U7Ci0gICAgdGhpcy5fcXVlcnlTdHJpbmdUcmVlRWxlbWVudC5oaWRkZW4gPSB0
cnVlOwotICAgIHRoaXMuX2hlYWRlcnNUcmVlT3V0bGluZS5hcHBlbmRDaGlsZCh0aGlzLl9xdWVy
eVN0cmluZ1RyZWVFbGVtZW50KTsKLQotICAgIHRoaXMuX3VybEZyYWdtZW50VHJlZUVsZW1lbnQg
PSBuZXcgVHJlZUVsZW1lbnQoIiIsIG51bGwsIHRydWUpOwotICAgIHRoaXMuX3VybEZyYWdtZW50
VHJlZUVsZW1lbnQuZXhwYW5kZWQgPSB0cnVlOwotICAgIHRoaXMuX3VybEZyYWdtZW50VHJlZUVs
ZW1lbnQuc2VsZWN0YWJsZSA9IGZhbHNlOwotICAgIHRoaXMuX3VybEZyYWdtZW50VHJlZUVsZW1l
bnQuaGlkZGVuID0gdHJ1ZTsKLSAgICB0aGlzLl9oZWFkZXJzVHJlZU91dGxpbmUuYXBwZW5kQ2hp
bGQodGhpcy5fdXJsRnJhZ21lbnRUcmVlRWxlbWVudCk7Ci0KLSAgICB0aGlzLl9mb3JtRGF0YVRy
ZWVFbGVtZW50ID0gbmV3IFRyZWVFbGVtZW50KCIiLCBudWxsLCB0cnVlKTsKLSAgICB0aGlzLl9m
b3JtRGF0YVRyZWVFbGVtZW50LmV4cGFuZGVkID0gdHJ1ZTsKLSAgICB0aGlzLl9mb3JtRGF0YVRy
ZWVFbGVtZW50LnNlbGVjdGFibGUgPSBmYWxzZTsKLSAgICB0aGlzLl9mb3JtRGF0YVRyZWVFbGVt
ZW50LmhpZGRlbiA9IHRydWU7Ci0gICAgdGhpcy5faGVhZGVyc1RyZWVPdXRsaW5lLmFwcGVuZENo
aWxkKHRoaXMuX2Zvcm1EYXRhVHJlZUVsZW1lbnQpOwotCi0gICAgdGhpcy5fcmVxdWVzdFBheWxv
YWRUcmVlRWxlbWVudCA9IG5ldyBUcmVlRWxlbWVudChXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJl
cXVlc3QgUGF5bG9hZCIpLCBudWxsLCB0cnVlKTsKLSAgICB0aGlzLl9yZXF1ZXN0UGF5bG9hZFRy
ZWVFbGVtZW50LmV4cGFuZGVkID0gdHJ1ZTsKLSAgICB0aGlzLl9yZXF1ZXN0UGF5bG9hZFRyZWVF
bGVtZW50LnNlbGVjdGFibGUgPSBmYWxzZTsKLSAgICB0aGlzLl9yZXF1ZXN0UGF5bG9hZFRyZWVF
bGVtZW50LmhpZGRlbiA9IHRydWU7Ci0gICAgdGhpcy5faGVhZGVyc1RyZWVPdXRsaW5lLmFwcGVu
ZENoaWxkKHRoaXMuX3JlcXVlc3RQYXlsb2FkVHJlZUVsZW1lbnQpOwotCi0gICAgdGhpcy5fcmVz
cG9uc2VIZWFkZXJzVHJlZUVsZW1lbnQgPSBuZXcgVHJlZUVsZW1lbnQoIiIsIG51bGwsIHRydWUp
OwotICAgIHRoaXMuX3Jlc3BvbnNlSGVhZGVyc1RyZWVFbGVtZW50LmV4cGFuZGVkID0gdHJ1ZTsK
LSAgICB0aGlzLl9yZXNwb25zZUhlYWRlcnNUcmVlRWxlbWVudC5zZWxlY3RhYmxlID0gZmFsc2U7
Ci0gICAgdGhpcy5faGVhZGVyc1RyZWVPdXRsaW5lLmFwcGVuZENoaWxkKHRoaXMuX3Jlc3BvbnNl
SGVhZGVyc1RyZWVFbGVtZW50KTsKLQotICAgIHJlcXVlc3QuYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuTmV0d29ya1JlcXVlc3QuRXZlbnRzLlJlcXVlc3RIZWFkZXJzQ2hhbmdlZCwgdGhp
cy5fcmVmcmVzaFJlcXVlc3RIZWFkZXJzLCB0aGlzKTsKLSAgICByZXF1ZXN0LmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLk5ldHdvcmtSZXF1ZXN0LkV2ZW50cy5SZXNwb25zZUhlYWRlcnND
aGFuZ2VkLCB0aGlzLl9yZWZyZXNoUmVzcG9uc2VIZWFkZXJzLCB0aGlzKTsKLSAgICByZXF1ZXN0
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLk5ldHdvcmtSZXF1ZXN0LkV2ZW50cy5GaW5p
c2hlZExvYWRpbmcsIHRoaXMuX3JlZnJlc2hIVFRQSW5mb3JtYXRpb24sIHRoaXMpOwotCi0gICAg
dGhpcy5fcmVmcmVzaFVSTCgpOwotICAgIHRoaXMuX3JlZnJlc2hRdWVyeVN0cmluZygpOwotICAg
IHRoaXMuX3JlZnJlc2hVcmxGcmFnbWVudCgpOwotICAgIHRoaXMuX3JlZnJlc2hSZXF1ZXN0SGVh
ZGVycygpOwotICAgIHRoaXMuX3JlZnJlc2hSZXNwb25zZUhlYWRlcnMoKTsKLSAgICB0aGlzLl9y
ZWZyZXNoSFRUUEluZm9ybWF0aW9uKCk7Ci19Ci0KLVdlYkluc3BlY3Rvci5SZXNvdXJjZUhlYWRl
cnNWaWV3LnByb3RvdHlwZSA9IHsKLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFt
ZQotICAgICAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZQotICAgICAqLwotICAgIF9mb3JtYXRIZWFk
ZXI6IGZ1bmN0aW9uKG5hbWUsIHZhbHVlKQotICAgIHsKLSAgICAgICAgdmFyIGZyYWdtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwotICAgICAgICBmcmFnbWVudC5jcmVh
dGVDaGlsZCgiZGl2IiwgImhlYWRlci1uYW1lIikudGV4dENvbnRlbnQgPSBuYW1lICsgIjoiOwot
ICAgICAgICBmcmFnbWVudC5jcmVhdGVDaGlsZCgiZGl2IiwgImhlYWRlci12YWx1ZSBzb3VyY2Ut
Y29kZSIpLnRleHRDb250ZW50ID0gdmFsdWU7Ci0KLSAgICAgICAgcmV0dXJuIGZyYWdtZW50Owot
ICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUKLSAgICAgKiBA
cGFyYW0ge3N0cmluZ30gY2xhc3NOYW1lCi0gICAgICogQHBhcmFtIHtib29sZWFufSBkZWNvZGVQ
YXJhbWV0ZXJzCi0gICAgICovCi0gICAgX2Zvcm1hdFBhcmFtZXRlcjogZnVuY3Rpb24odmFsdWUs
IGNsYXNzTmFtZSwgZGVjb2RlUGFyYW1ldGVycykKLSAgICB7Ci0gICAgICAgIHZhciBlcnJvckRl
Y29kaW5nID0gZmFsc2U7Ci0KLSAgICAgICAgaWYgKGRlY29kZVBhcmFtZXRlcnMpIHsKLSAgICAg
ICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvXCsvZywgIiAiKTsKLSAgICAgICAgICAgIGlm
ICh2YWx1ZS5pbmRleE9mKCIlIikgPj0gMCkgewotICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAg
ICAgICAgICAgICAgICAgIHZhbHVlID0gZGVjb2RlVVJJQ29tcG9uZW50KHZhbHVlKTsKLSAgICAg
ICAgICAgICAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAgICAgICAgICAgICAgZXJyb3JEZWNvZGlu
ZyA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAg
ZGl2LmNsYXNzTmFtZSA9IGNsYXNzTmFtZTsKLSAgICAgICAgaWYgKGVycm9yRGVjb2RpbmcpCi0g
ICAgICAgICAgICBkaXYuY3JlYXRlQ2hpbGQoInNwYW4iLCAiZXJyb3ItbWVzc2FnZSIpLnRleHRD
b250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIodW5hYmxlIHRvIGRlY29kZSB2YWx1ZSki
KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZGl2LnRleHRDb250ZW50ID0gdmFsdWU7Ci0g
ICAgICAgIHJldHVybiBkaXY7Ci0gICAgfSwKLQotICAgIF9yZWZyZXNoVVJMOiBmdW5jdGlvbigp
Ci0gICAgewotICAgICAgICB0aGlzLl91cmxUcmVlRWxlbWVudC50aXRsZSA9IHRoaXMuX2Zvcm1h
dEhlYWRlcihXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlcXVlc3QgVVJMIiksIHRoaXMuX3JlcXVl
c3QudXJsKTsKLSAgICB9LAotCi0gICAgX3JlZnJlc2hRdWVyeVN0cmluZzogZnVuY3Rpb24oKQot
ICAgIHsKLSAgICAgICAgdmFyIHF1ZXJ5UGFyYW1ldGVycyA9IHRoaXMuX3JlcXVlc3QucXVlcnlQ
YXJhbWV0ZXJzOwotICAgICAgICB0aGlzLl9xdWVyeVN0cmluZ1RyZWVFbGVtZW50LmhpZGRlbiA9
ICFxdWVyeVBhcmFtZXRlcnM7Ci0gICAgICAgIGlmIChxdWVyeVBhcmFtZXRlcnMpCi0gICAgICAg
ICAgICB0aGlzLl9yZWZyZXNoUGFybXMoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJRdWVyeSBTdHJp
bmcgUGFyYW1ldGVycyIpLCBxdWVyeVBhcmFtZXRlcnMsIHRoaXMuX3F1ZXJ5U3RyaW5nVHJlZUVs
ZW1lbnQpOwotICAgIH0sCi0KLSAgICBfcmVmcmVzaFVybEZyYWdtZW50OiBmdW5jdGlvbigpCi0g
ICAgewotICAgICAgICB2YXIgdXJsRnJhZ21lbnQgPSB0aGlzLl9yZXF1ZXN0LnVybEZyYWdtZW50
OwotICAgICAgICB0aGlzLl91cmxGcmFnbWVudFRyZWVFbGVtZW50LmhpZGRlbiA9ICF1cmxGcmFn
bWVudDsKLQotICAgICAgICBpZiAoIXVybEZyYWdtZW50KQotICAgICAgICAgICAgcmV0dXJuOwot
Ci0gICAgICAgIHZhciBzZWN0aW9uVGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlVSTCBm
cmFnbWVudCIpOwotCi0gICAgICAgIHRoaXMuX3VybEZyYWdtZW50VHJlZUVsZW1lbnQucmVtb3Zl
Q2hpbGRyZW4oKTsKLSAgICAgICAgdGhpcy5fdXJsRnJhZ21lbnRUcmVlRWxlbWVudC5saXN0SXRl
bUVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKLSAgICAgICAgdGhpcy5fdXJsRnJhZ21lbnRUcmVl
RWxlbWVudC5saXN0SXRlbUVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUoc2VjdGlvblRpdGxlKSk7Ci0KLSAgICAgICAgdmFyIGZyYWdtZW50VHJlZUVsZW1lbnQgPSBu
ZXcgVHJlZUVsZW1lbnQobnVsbCwgbnVsbCwgZmFsc2UpOwotICAgICAgICBmcmFnbWVudFRyZWVF
bGVtZW50LnRpdGxlID0gdGhpcy5fZm9ybWF0SGVhZGVyKCIjIiwgdXJsRnJhZ21lbnQpOwotICAg
ICAgICBmcmFnbWVudFRyZWVFbGVtZW50LnNlbGVjdGFibGUgPSBmYWxzZTsKLSAgICAgICAgdGhp
cy5fdXJsRnJhZ21lbnRUcmVlRWxlbWVudC5hcHBlbmRDaGlsZChmcmFnbWVudFRyZWVFbGVtZW50
KTsKLSAgICB9LAotCi0gICAgX3JlZnJlc2hGb3JtRGF0YTogZnVuY3Rpb24oKQotICAgIHsKLSAg
ICAgICAgdGhpcy5fZm9ybURhdGFUcmVlRWxlbWVudC5oaWRkZW4gPSB0cnVlOwotICAgICAgICB0
aGlzLl9yZXF1ZXN0UGF5bG9hZFRyZWVFbGVtZW50LmhpZGRlbiA9IHRydWU7Ci0KLSAgICAgICAg
dmFyIGZvcm1EYXRhID0gdGhpcy5fcmVxdWVzdC5yZXF1ZXN0Rm9ybURhdGE7Ci0gICAgICAgIGlm
ICghZm9ybURhdGEpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdmFyIGZvcm1QYXJh
bWV0ZXJzID0gdGhpcy5fcmVxdWVzdC5mb3JtUGFyYW1ldGVyczsKLSAgICAgICAgaWYgKGZvcm1Q
YXJhbWV0ZXJzKSB7Ci0gICAgICAgICAgICB0aGlzLl9mb3JtRGF0YVRyZWVFbGVtZW50LmhpZGRl
biA9IGZhbHNlOwotICAgICAgICAgICAgdGhpcy5fcmVmcmVzaFBhcm1zKFdlYkluc3BlY3Rvci5V
SVN0cmluZygiRm9ybSBEYXRhIiksIGZvcm1QYXJhbWV0ZXJzLCB0aGlzLl9mb3JtRGF0YVRyZWVF
bGVtZW50KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHRoaXMuX3JlcXVlc3RQYXls
b2FkVHJlZUVsZW1lbnQuaGlkZGVuID0gZmFsc2U7Ci0gICAgICAgICAgICB0aGlzLl9yZWZyZXNo
UmVxdWVzdFBheWxvYWQoZm9ybURhdGEpOwotICAgICAgICB9Ci0gICAgfSwKLQotICAgIF9yZWZy
ZXNoUmVxdWVzdFBheWxvYWQ6IGZ1bmN0aW9uKGZvcm1EYXRhKQotICAgIHsKLSAgICAgICAgdGhp
cy5fcmVxdWVzdFBheWxvYWRUcmVlRWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwotCi0gICAgICAg
IHZhciB0aXRsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICB0aXRs
ZS5jbGFzc05hbWUgPSAicmF3LWZvcm0tZGF0YSBoZWFkZXItdmFsdWUgc291cmNlLWNvZGUiOwot
ICAgICAgICB0aXRsZS50ZXh0Q29udGVudCA9IGZvcm1EYXRhOwotCi0gICAgICAgIHZhciBwYXJt
VHJlZUVsZW1lbnQgPSBuZXcgVHJlZUVsZW1lbnQodGl0bGUsIG51bGwsIGZhbHNlKTsKLSAgICAg
ICAgcGFybVRyZWVFbGVtZW50LnNlbGVjdGFibGUgPSBmYWxzZTsKLSAgICAgICAgdGhpcy5fcmVx
dWVzdFBheWxvYWRUcmVlRWxlbWVudC5hcHBlbmRDaGlsZChwYXJtVHJlZUVsZW1lbnQpOwotICAg
IH0sCi0KLSAgICBfcmVmcmVzaFBhcm1zOiBmdW5jdGlvbih0aXRsZSwgcGFybXMsIHBhcm1zVHJl
ZUVsZW1lbnQpCi0gICAgewotICAgICAgICBwYXJtc1RyZWVFbGVtZW50LnJlbW92ZUNoaWxkcmVu
KCk7Ci0KLSAgICAgICAgcGFybXNUcmVlRWxlbWVudC5saXN0SXRlbUVsZW1lbnQucmVtb3ZlQ2hp
bGRyZW4oKTsKLSAgICAgICAgcGFybXNUcmVlRWxlbWVudC5saXN0SXRlbUVsZW1lbnQuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGl0bGUpKTsKLQotICAgICAgICB2YXIgaGVh
ZGVyQ291bnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7Ci0gICAgICAgIGhlYWRl
ckNvdW50LmFkZFN0eWxlQ2xhc3MoImhlYWRlci1jb3VudCIpOwotICAgICAgICBoZWFkZXJDb3Vu
dC50ZXh0Q29udGVudCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiICglZCkiLCBwYXJtcy5sZW5n
dGgpOwotICAgICAgICBwYXJtc1RyZWVFbGVtZW50Lmxpc3RJdGVtRWxlbWVudC5hcHBlbmRDaGls
ZChoZWFkZXJDb3VudCk7Ci0KLSAgICAgICAgdmFyIHRvZ2dsZVRpdGxlID0gdGhpcy5fZGVjb2Rl
UmVxdWVzdFBhcmFtZXRlcnMgPyBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoInZpZXcgVVJMIGVuY29k
ZWQiKSA6IFdlYkluc3BlY3Rvci5VSVN0cmluZygidmlldyBkZWNvZGVkIik7Ci0gICAgICAgIHZh
ciB0b2dnbGVCdXR0b24gPSB0aGlzLl9jcmVhdGVUb2dnbGVCdXR0b24odG9nZ2xlVGl0bGUpOwot
ICAgICAgICB0b2dnbGVCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl90b2dn
bGVVUkxkZWNvZGluZy5iaW5kKHRoaXMpKTsKLSAgICAgICAgcGFybXNUcmVlRWxlbWVudC5saXN0
SXRlbUVsZW1lbnQuYXBwZW5kQ2hpbGQodG9nZ2xlQnV0dG9uKTsKLQotCi0gICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgcGFybXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIHZhciBwYXJh
bU5hbWVWYWx1ZSA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKLSAgICAgICAg
ICAgIHZhciBuYW1lID0gdGhpcy5fZm9ybWF0UGFyYW1ldGVyKHBhcm1zW2ldLm5hbWUgKyAiOiIs
ICJoZWFkZXItbmFtZSIsIHRoaXMuX2RlY29kZVJlcXVlc3RQYXJhbWV0ZXJzKTsKLSAgICAgICAg
ICAgIHZhciB2YWx1ZSA9IHRoaXMuX2Zvcm1hdFBhcmFtZXRlcihwYXJtc1tpXS52YWx1ZSwgImhl
YWRlci12YWx1ZSBzb3VyY2UtY29kZSIsIHRoaXMuX2RlY29kZVJlcXVlc3RQYXJhbWV0ZXJzKTsK
LSAgICAgICAgICAgIHBhcmFtTmFtZVZhbHVlLmFwcGVuZENoaWxkKG5hbWUpOwotICAgICAgICAg
ICAgcGFyYW1OYW1lVmFsdWUuYXBwZW5kQ2hpbGQodmFsdWUpOwotCi0gICAgICAgICAgICB2YXIg
cGFybVRyZWVFbGVtZW50ID0gbmV3IFRyZWVFbGVtZW50KHBhcmFtTmFtZVZhbHVlLCBudWxsLCBm
YWxzZSk7Ci0gICAgICAgICAgICBwYXJtVHJlZUVsZW1lbnQuc2VsZWN0YWJsZSA9IGZhbHNlOwot
ICAgICAgICAgICAgcGFybXNUcmVlRWxlbWVudC5hcHBlbmRDaGlsZChwYXJtVHJlZUVsZW1lbnQp
OwotICAgICAgICB9Ci0gICAgfSwKLQotICAgIF90b2dnbGVVUkxkZWNvZGluZzogZnVuY3Rpb24o
ZXZlbnQpCi0gICAgewotICAgICAgICB0aGlzLl9kZWNvZGVSZXF1ZXN0UGFyYW1ldGVycyA9ICF0
aGlzLl9kZWNvZGVSZXF1ZXN0UGFyYW1ldGVyczsKLSAgICAgICAgdGhpcy5fcmVmcmVzaFF1ZXJ5
U3RyaW5nKCk7Ci0gICAgICAgIHRoaXMuX3JlZnJlc2hGb3JtRGF0YSgpOwotICAgIH0sCi0KLSAg
ICBfZ2V0SGVhZGVyVmFsdWU6IGZ1bmN0aW9uKGhlYWRlcnMsIGtleSkKLSAgICB7Ci0gICAgICAg
IHZhciBsb3dlcktleSA9IGtleS50b0xvd2VyQ2FzZSgpOwotICAgICAgICBmb3IgKHZhciB0ZXN0
S2V5IGluIGhlYWRlcnMpIHsKLSAgICAgICAgICAgIGlmICh0ZXN0S2V5LnRvTG93ZXJDYXNlKCkg
PT09IGxvd2VyS2V5KQotICAgICAgICAgICAgICAgIHJldHVybiBoZWFkZXJzW3Rlc3RLZXldOwot
ICAgICAgICB9Ci0gICAgfSwKLQotICAgIF9yZWZyZXNoUmVxdWVzdEhlYWRlcnM6IGZ1bmN0aW9u
KCkKLSAgICB7Ci0gICAgICAgIHZhciBhZGRpdGlvbmFsUm93ID0gbnVsbDsKLSAgICAgICAgaWYg
KHR5cGVvZiB0aGlzLl9yZXF1ZXN0LndlYlNvY2tldFJlcXVlc3RLZXkzICE9PSAidW5kZWZpbmVk
IikKLSAgICAgICAgICAgIGFkZGl0aW9uYWxSb3cgPSB7aGVhZGVyOiAiKEtleTMpIiwgdmFsdWU6
IHRoaXMuX3JlcXVlc3Qud2ViU29ja2V0UmVxdWVzdEtleTN9OwotICAgICAgICBpZiAodGhpcy5f
c2hvd1JlcXVlc3RIZWFkZXJzVGV4dCkKLSAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hIZWFkZXJz
VGV4dChXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlcXVlc3QgSGVhZGVycyIpLCB0aGlzLl9yZXF1
ZXN0LnNvcnRlZFJlcXVlc3RIZWFkZXJzLCB0aGlzLl9yZXF1ZXN0LnJlcXVlc3RIZWFkZXJzVGV4
dCwgdGhpcy5fcmVxdWVzdEhlYWRlcnNUcmVlRWxlbWVudCk7Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIHRoaXMuX3JlZnJlc2hIZWFkZXJzKFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVxdWVz
dCBIZWFkZXJzIiksIHRoaXMuX3JlcXVlc3Quc29ydGVkUmVxdWVzdEhlYWRlcnMsIGFkZGl0aW9u
YWxSb3csIHRoaXMuX3JlcXVlc3RIZWFkZXJzVHJlZUVsZW1lbnQpOwotCi0gICAgICAgIGlmICh0
aGlzLl9yZXF1ZXN0LnJlcXVlc3RIZWFkZXJzVGV4dCkgewotICAgICAgICAgICAgdmFyIHRvZ2ds
ZUJ1dHRvbiA9IHRoaXMuX2NyZWF0ZUhlYWRlcnNUb2dnbGVCdXR0b24odGhpcy5fc2hvd1JlcXVl
c3RIZWFkZXJzVGV4dCk7Ci0gICAgICAgICAgICB0b2dnbGVCdXR0b24uYWRkRXZlbnRMaXN0ZW5l
cigiY2xpY2siLCB0aGlzLl90b2dnbGVSZXF1ZXN0SGVhZGVyc1RleHQuYmluZCh0aGlzKSk7Ci0g
ICAgICAgICAgICB0aGlzLl9yZXF1ZXN0SGVhZGVyc1RyZWVFbGVtZW50Lmxpc3RJdGVtRWxlbWVu
dC5hcHBlbmRDaGlsZCh0b2dnbGVCdXR0b24pOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5f
cmVmcmVzaEZvcm1EYXRhKCk7Ci0gICAgfSwKLQotICAgIF9yZWZyZXNoUmVzcG9uc2VIZWFkZXJz
OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB2YXIgYWRkaXRpb25hbFJvdyA9IG51bGw7Ci0g
ICAgICAgIGlmICh0eXBlb2YgdGhpcy5fcmVxdWVzdC53ZWJTb2NrZXRDaGFsbGVuZ2VSZXNwb25z
ZSAhPT0gInVuZGVmaW5lZCIpCi0gICAgICAgICAgICBhZGRpdGlvbmFsUm93ID0ge2hlYWRlcjog
IihDaGFsbGVuZ2UgUmVzcG9uc2UpIiwgdmFsdWU6IHRoaXMuX3JlcXVlc3Qud2ViU29ja2V0Q2hh
bGxlbmdlUmVzcG9uc2V9OwotICAgICAgICBpZiAodGhpcy5fc2hvd1Jlc3BvbnNlSGVhZGVyc1Rl
eHQpCi0gICAgICAgICAgICB0aGlzLl9yZWZyZXNoSGVhZGVyc1RleHQoV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJSZXNwb25zZSBIZWFkZXJzIiksIHRoaXMuX3JlcXVlc3Quc29ydGVkUmVzcG9uc2VI
ZWFkZXJzLCB0aGlzLl9yZXF1ZXN0LnJlc3BvbnNlSGVhZGVyc1RleHQsIHRoaXMuX3Jlc3BvbnNl
SGVhZGVyc1RyZWVFbGVtZW50KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhpcy5fcmVm
cmVzaEhlYWRlcnMoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXNwb25zZSBIZWFkZXJzIiksIHRo
aXMuX3JlcXVlc3Quc29ydGVkUmVzcG9uc2VIZWFkZXJzLCBhZGRpdGlvbmFsUm93LCB0aGlzLl9y
ZXNwb25zZUhlYWRlcnNUcmVlRWxlbWVudCk7Ci0KLSAgICAgICAgaWYgKHRoaXMuX3JlcXVlc3Qu
cmVzcG9uc2VIZWFkZXJzVGV4dCkgewotICAgICAgICAgICAgdmFyIHRvZ2dsZUJ1dHRvbiA9IHRo
aXMuX2NyZWF0ZUhlYWRlcnNUb2dnbGVCdXR0b24odGhpcy5fc2hvd1Jlc3BvbnNlSGVhZGVyc1Rl
eHQpOwotICAgICAgICAgICAgdG9nZ2xlQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwg
dGhpcy5fdG9nZ2xlUmVzcG9uc2VIZWFkZXJzVGV4dC5iaW5kKHRoaXMpKTsKLSAgICAgICAgICAg
IHRoaXMuX3Jlc3BvbnNlSGVhZGVyc1RyZWVFbGVtZW50Lmxpc3RJdGVtRWxlbWVudC5hcHBlbmRD
aGlsZCh0b2dnbGVCdXR0b24pOwotICAgICAgICB9Ci0gICAgfSwKLQotICAgIF9yZWZyZXNoSFRU
UEluZm9ybWF0aW9uOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB2YXIgcmVxdWVzdE1ldGhv
ZEVsZW1lbnQgPSB0aGlzLl9yZXF1ZXN0TWV0aG9kVHJlZUVsZW1lbnQ7Ci0gICAgICAgIHJlcXVl
c3RNZXRob2RFbGVtZW50LmhpZGRlbiA9ICF0aGlzLl9yZXF1ZXN0LnN0YXR1c0NvZGU7Ci0gICAg
ICAgIHZhciBzdGF0dXNDb2RlRWxlbWVudCA9IHRoaXMuX3N0YXR1c0NvZGVUcmVlRWxlbWVudDsK
LSAgICAgICAgc3RhdHVzQ29kZUVsZW1lbnQuaGlkZGVuID0gIXRoaXMuX3JlcXVlc3Quc3RhdHVz
Q29kZTsKLQotICAgICAgICBpZiAodGhpcy5fcmVxdWVzdC5zdGF0dXNDb2RlKSB7Ci0gICAgICAg
ICAgICB2YXIgc3RhdHVzSW1hZ2VTb3VyY2UgPSAiIjsKLSAgICAgICAgICAgIGlmICh0aGlzLl9y
ZXF1ZXN0LnN0YXR1c0NvZGUgPCAzMDAgfHwgdGhpcy5fcmVxdWVzdC5zdGF0dXNDb2RlID09PSAz
MDQpCi0gICAgICAgICAgICAgICAgc3RhdHVzSW1hZ2VTb3VyY2UgPSAiSW1hZ2VzL3N1Y2Nlc3NH
cmVlbkRvdC5wbmciOwotICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5fcmVxdWVzdC5zdGF0dXND
b2RlIDwgNDAwKQotICAgICAgICAgICAgICAgIHN0YXR1c0ltYWdlU291cmNlID0gIkltYWdlcy93
YXJuaW5nT3JhbmdlRG90LnBuZyI7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
c3RhdHVzSW1hZ2VTb3VyY2UgPSAiSW1hZ2VzL2Vycm9yUmVkRG90LnBuZyI7Ci0KLSAgICAgICAg
ICAgIHJlcXVlc3RNZXRob2RFbGVtZW50LnRpdGxlID0gdGhpcy5fZm9ybWF0SGVhZGVyKFdlYklu
c3BlY3Rvci5VSVN0cmluZygiUmVxdWVzdCBNZXRob2QiKSwgdGhpcy5fcmVxdWVzdC5yZXF1ZXN0
TWV0aG9kKTsKLQotICAgICAgICAgICAgdmFyIHN0YXR1c0NvZGVGcmFnbWVudCA9IGRvY3VtZW50
LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKLSAgICAgICAgICAgIHN0YXR1c0NvZGVGcmFnbWVu
dC5jcmVhdGVDaGlsZCgiZGl2IiwgImhlYWRlci1uYW1lIikudGV4dENvbnRlbnQgPSBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIlN0YXR1cyBDb2RlIikgKyAiOiI7Ci0KLSAgICAgICAgICAgIHZhciBz
dGF0dXNDb2RlSW1hZ2UgPSBzdGF0dXNDb2RlRnJhZ21lbnQuY3JlYXRlQ2hpbGQoImltZyIsICJy
ZXNvdXJjZS1zdGF0dXMtaW1hZ2UiKTsKLSAgICAgICAgICAgIHN0YXR1c0NvZGVJbWFnZS5zcmMg
PSBzdGF0dXNJbWFnZVNvdXJjZTsKLSAgICAgICAgICAgIHN0YXR1c0NvZGVJbWFnZS50aXRsZSA9
IHRoaXMuX3JlcXVlc3Quc3RhdHVzQ29kZSArICIgIiArIHRoaXMuX3JlcXVlc3Quc3RhdHVzVGV4
dDsKLSAgICAgICAgICAgIHZhciB2YWx1ZSA9IHN0YXR1c0NvZGVGcmFnbWVudC5jcmVhdGVDaGls
ZCgiZGl2IiwgImhlYWRlci12YWx1ZSBzb3VyY2UtY29kZSIpOwotICAgICAgICAgICAgdmFsdWUu
dGV4dENvbnRlbnQgPSB0aGlzLl9yZXF1ZXN0LnN0YXR1c0NvZGUgKyAiICIgKyB0aGlzLl9yZXF1
ZXN0LnN0YXR1c1RleHQ7Ci0gICAgICAgICAgICBpZiAodGhpcy5fcmVxdWVzdC5jYWNoZWQpCi0g
ICAgICAgICAgICAgICAgdmFsdWUuY3JlYXRlQ2hpbGQoInNwYW4iLCAic3RhdHVzLWZyb20tY2Fj
aGUiKS50ZXh0Q29udGVudCA9ICIgIiArIFdlYkluc3BlY3Rvci5VSVN0cmluZygiKGZyb20gY2Fj
aGUpIik7Ci0KLSAgICAgICAgICAgIHN0YXR1c0NvZGVFbGVtZW50LnRpdGxlID0gc3RhdHVzQ29k
ZUZyYWdtZW50OwotICAgICAgICB9Ci0gICAgfSwKLQotICAgIF9yZWZyZXNoSGVhZGVyc1RpdGxl
OiBmdW5jdGlvbih0aXRsZSwgaGVhZGVyc1RyZWVFbGVtZW50LCBoZWFkZXJzTGVuZ3RoKQotICAg
IHsKLSAgICAgICAgaGVhZGVyc1RyZWVFbGVtZW50Lmxpc3RJdGVtRWxlbWVudC5yZW1vdmVDaGls
ZHJlbigpOwotICAgICAgICBoZWFkZXJzVHJlZUVsZW1lbnQubGlzdEl0ZW1FbGVtZW50LmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRpdGxlKSk7Ci0KLSAgICAgICAgdmFyIGhl
YWRlckNvdW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwotICAgICAgICBoZWFk
ZXJDb3VudC5hZGRTdHlsZUNsYXNzKCJoZWFkZXItY291bnQiKTsKLSAgICAgICAgaGVhZGVyQ291
bnQudGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIiAoJWQpIiwgaGVhZGVyc0xl
bmd0aCk7Ci0gICAgICAgIGhlYWRlcnNUcmVlRWxlbWVudC5saXN0SXRlbUVsZW1lbnQuYXBwZW5k
Q2hpbGQoaGVhZGVyQ291bnQpOwotICAgIH0sCi0KLSAgICBfcmVmcmVzaEhlYWRlcnM6IGZ1bmN0
aW9uKHRpdGxlLCBoZWFkZXJzLCBhZGRpdGlvbmFsUm93LCBoZWFkZXJzVHJlZUVsZW1lbnQpCi0g
ICAgewotICAgICAgICBoZWFkZXJzVHJlZUVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKLQotICAg
ICAgICB2YXIgbGVuZ3RoID0gaGVhZGVycy5sZW5ndGg7Ci0gICAgICAgIHRoaXMuX3JlZnJlc2hI
ZWFkZXJzVGl0bGUodGl0bGUsIGhlYWRlcnNUcmVlRWxlbWVudCwgbGVuZ3RoKTsKLSAgICAgICAg
aGVhZGVyc1RyZWVFbGVtZW50LmhpZGRlbiA9ICFsZW5ndGg7Ci0gICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIHZhciBoZWFkZXJUcmVlRWxlbWVu
dCA9IG5ldyBUcmVlRWxlbWVudChudWxsLCBudWxsLCBmYWxzZSk7Ci0gICAgICAgICAgICBoZWFk
ZXJUcmVlRWxlbWVudC50aXRsZSA9IHRoaXMuX2Zvcm1hdEhlYWRlcihoZWFkZXJzW2ldLmhlYWRl
ciwgaGVhZGVyc1tpXS52YWx1ZSk7Ci0gICAgICAgICAgICBoZWFkZXJUcmVlRWxlbWVudC5zZWxl
Y3RhYmxlID0gZmFsc2U7Ci0gICAgICAgICAgICBoZWFkZXJzVHJlZUVsZW1lbnQuYXBwZW5kQ2hp
bGQoaGVhZGVyVHJlZUVsZW1lbnQpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGFkZGl0aW9u
YWxSb3cpIHsKLSAgICAgICAgICAgIHZhciBoZWFkZXJUcmVlRWxlbWVudCA9IG5ldyBUcmVlRWxl
bWVudChudWxsLCBudWxsLCBmYWxzZSk7Ci0gICAgICAgICAgICBoZWFkZXJUcmVlRWxlbWVudC50
aXRsZSA9IHRoaXMuX2Zvcm1hdEhlYWRlcihhZGRpdGlvbmFsUm93LmhlYWRlciwgYWRkaXRpb25h
bFJvdy52YWx1ZSk7Ci0gICAgICAgICAgICBoZWFkZXJUcmVlRWxlbWVudC5zZWxlY3RhYmxlID0g
ZmFsc2U7Ci0gICAgICAgICAgICBoZWFkZXJzVHJlZUVsZW1lbnQuYXBwZW5kQ2hpbGQoaGVhZGVy
VHJlZUVsZW1lbnQpOwotICAgICAgICB9Ci0gICAgfSwKLQotICAgIF9yZWZyZXNoSGVhZGVyc1Rl
eHQ6IGZ1bmN0aW9uKHRpdGxlLCBoZWFkZXJzLCBoZWFkZXJzVGV4dCwgaGVhZGVyc1RyZWVFbGVt
ZW50KQotICAgIHsKLSAgICAgICAgaGVhZGVyc1RyZWVFbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7
Ci0KLSAgICAgICAgdGhpcy5fcmVmcmVzaEhlYWRlcnNUaXRsZSh0aXRsZSwgaGVhZGVyc1RyZWVF
bGVtZW50LCBoZWFkZXJzLmxlbmd0aCk7Ci0gICAgICAgIHZhciBoZWFkZXJUcmVlRWxlbWVudCA9
IG5ldyBUcmVlRWxlbWVudChudWxsLCBudWxsLCBmYWxzZSk7Ci0gICAgICAgIGhlYWRlclRyZWVF
bGVtZW50LnNlbGVjdGFibGUgPSBmYWxzZTsKLSAgICAgICAgaGVhZGVyc1RyZWVFbGVtZW50LmFw
cGVuZENoaWxkKGhlYWRlclRyZWVFbGVtZW50KTsKLQotICAgICAgICB2YXIgaGVhZGVyc1RleHRF
bGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwotICAgICAgICBoZWFkZXJz
VGV4dEVsZW1lbnQuYWRkU3R5bGVDbGFzcygiaGVhZGVyLXZhbHVlIik7Ci0gICAgICAgIGhlYWRl
cnNUZXh0RWxlbWVudC5hZGRTdHlsZUNsYXNzKCJzb3VyY2UtY29kZSIpOwotICAgICAgICBoZWFk
ZXJzVGV4dEVsZW1lbnQudGV4dENvbnRlbnQgPSBTdHJpbmcoaGVhZGVyc1RleHQpLnRyaW0oKTsK
LSAgICAgICAgaGVhZGVyVHJlZUVsZW1lbnQubGlzdEl0ZW1FbGVtZW50LmFwcGVuZENoaWxkKGhl
YWRlcnNUZXh0RWxlbWVudCk7Ci0gICAgfSwKLQotICAgIF90b2dnbGVSZXF1ZXN0SGVhZGVyc1Rl
eHQ6IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAgICAgdGhpcy5fc2hvd1JlcXVlc3RIZWFk
ZXJzVGV4dCA9ICF0aGlzLl9zaG93UmVxdWVzdEhlYWRlcnNUZXh0OwotICAgICAgICB0aGlzLl9y
ZWZyZXNoUmVxdWVzdEhlYWRlcnMoKTsKLSAgICB9LAotCi0gICAgX3RvZ2dsZVJlc3BvbnNlSGVh
ZGVyc1RleHQ6IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAgICAgdGhpcy5fc2hvd1Jlc3Bv
bnNlSGVhZGVyc1RleHQgPSAhdGhpcy5fc2hvd1Jlc3BvbnNlSGVhZGVyc1RleHQ7Ci0gICAgICAg
IHRoaXMuX3JlZnJlc2hSZXNwb25zZUhlYWRlcnMoKTsKLSAgICB9LAotCi0gICAgX2NyZWF0ZVRv
Z2dsZUJ1dHRvbjogZnVuY3Rpb24odGl0bGUpCi0gICAgewotICAgICAgICB2YXIgYnV0dG9uID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwotICAgICAgICBidXR0b24uYWRkU3R5bGVD
bGFzcygiaGVhZGVyLXRvZ2dsZSIpOwotICAgICAgICBidXR0b24udGV4dENvbnRlbnQgPSB0aXRs
ZTsKLSAgICAgICAgcmV0dXJuIGJ1dHRvbjsKLSAgICB9LAotCi0gICAgX2NyZWF0ZUhlYWRlcnNU
b2dnbGVCdXR0b246IGZ1bmN0aW9uKGlzSGVhZGVyc1RleHRTaG93bikKLSAgICB7Ci0gICAgICAg
IHZhciB0b2dnbGVUaXRsZSA9IGlzSGVhZGVyc1RleHRTaG93biA/IFdlYkluc3BlY3Rvci5VSVN0
cmluZygidmlldyBwYXJzZWQiKSA6IFdlYkluc3BlY3Rvci5VSVN0cmluZygidmlldyBzb3VyY2Ui
KTsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2NyZWF0ZVRvZ2dsZUJ1dHRvbih0b2dnbGVUaXRsZSk7
Ci0gICAgfQotfQotCi1XZWJJbnNwZWN0b3IuUmVzb3VyY2VIZWFkZXJzVmlldy5wcm90b3R5cGUu
X19wcm90b19fID0gV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZUpTT05WaWV3LmpzIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZUpTT05WaWV3LmpzCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZjIwZjJmOGRiYTIyZjgyOTEzZTM5MGI1NjVhOTI1
NDE1MGM2YzIzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VKU09OVmlldy5qcwor
KysgL2Rldi9udWxsCkBAIC0xLDExNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLyoqCi0gKiBAZXh0ZW5kcyB7V2ViSW5zcGVj
dG9yLlJlc291cmNlVmlld30KLSAqIEBjb25zdHJ1Y3RvcgotICovCi1XZWJJbnNwZWN0b3IuUmVz
b3VyY2VKU09OVmlldyA9IGZ1bmN0aW9uKHJlc291cmNlLCBwYXJzZWRKU09OKQotewotICAgIFdl
Ykluc3BlY3Rvci5SZXNvdXJjZVZpZXcuY2FsbCh0aGlzLCByZXNvdXJjZSk7Ci0gICAgdGhpcy5f
cGFyc2VkSlNPTiA9IHBhcnNlZEpTT047Ci0gICAgdGhpcy5lbGVtZW50LmFkZFN0eWxlQ2xhc3Mo
Impzb24iKTsKLX0KLQotV2ViSW5zcGVjdG9yLlJlc291cmNlSlNPTlZpZXcucGFyc2VKU09OID0g
ZnVuY3Rpb24odGV4dCkKLXsKLSAgICB2YXIgcHJlZml4ID0gIiI7Ci0KLSAgICAvLyBUcmltIHdo
aWxlKDEpLCBmb3IoOzspLCB3ZWlyZCBudW1iZXJzLCBldGMuIFdlIG5lZWQgSlNPTiBzdGFydC4K
LSAgICB2YXIgc3RhcnQgPSAvW3tbXS8uZXhlYyh0ZXh0KTsKLSAgICBpZiAoc3RhcnQgJiYgc3Rh
cnQuaW5kZXgpIHsKLSAgICAgICAgcHJlZml4ID0gdGV4dC5zdWJzdHJpbmcoMCwgc3RhcnQuaW5k
ZXgpOwotICAgICAgICB0ZXh0ID0gdGV4dC5zdWJzdHJpbmcoc3RhcnQuaW5kZXgpOwotICAgIH0K
LQotICAgIHRyeSB7Ci0gICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlBhcnNlZEpTT04o
SlNPTi5wYXJzZSh0ZXh0KSwgcHJlZml4LCAiIik7Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAg
ICByZXR1cm47Ci0gICAgfQotfQotCi1XZWJJbnNwZWN0b3IuUmVzb3VyY2VKU09OVmlldy5wYXJz
ZUpTT05QID0gZnVuY3Rpb24odGV4dCkKLXsKLSAgICAvLyBUYWtpbmcgZXZlcnl0aGluZyBiZXR3
ZWVuIGZpcnN0IGFuZCBsYXN0IHBhcmVudGhlc2VzCi0gICAgdmFyIHN0YXJ0ID0gdGV4dC5pbmRl
eE9mKCIoIik7Ci0gICAgdmFyIGVuZCA9IHRleHQubGFzdEluZGV4T2YoIikiKTsKLSAgICBpZiAo
c3RhcnQgPT0gLTEgfHwgZW5kID09IC0xIHx8IGVuZCA8IHN0YXJ0KQotICAgICAgICByZXR1cm47
Ci0KLSAgICB2YXIgcHJlZml4ID0gdGV4dC5zdWJzdHJpbmcoMCwgc3RhcnQgKyAxKTsKLSAgICB2
YXIgc3VmZml4ID0gdGV4dC5zdWJzdHJpbmcoZW5kKTsKLSAgICB0ZXh0ID0gdGV4dC5zdWJzdHJp
bmcoc3RhcnQgKyAxLCBlbmQpOwotCi0gICAgdHJ5IHsKLSAgICAgICAgcmV0dXJuIG5ldyBXZWJJ
bnNwZWN0b3IuUGFyc2VkSlNPTihKU09OLnBhcnNlKHRleHQpLCBwcmVmaXgsIHN1ZmZpeCk7Ci0g
ICAgfSBjYXRjaCAoZSkgewotICAgICAgICByZXR1cm47Ci0gICAgfQotfQotCi1XZWJJbnNwZWN0
b3IuUmVzb3VyY2VKU09OVmlldy5wcm90b3R5cGUgPSB7Ci0gICAgaGFzQ29udGVudDogZnVuY3Rp
b24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSwKLQotICAgIHdhc1Nob3du
OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLl9pbml0aWFsaXplKCk7Ci0gICAgfSwK
LQotICAgIF9pbml0aWFsaXplOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBpZiAodGhpcy5f
aW5pdGlhbGl6ZWQpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHRoaXMuX2luaXRpYWxp
emVkID0gdHJ1ZTsKLQotICAgICAgICB2YXIgb2JqID0gV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVj
dC5mcm9tTG9jYWxPYmplY3QodGhpcy5fcGFyc2VkSlNPTi5kYXRhKTsKLSAgICAgICAgdmFyIHRp
dGxlID0gdGhpcy5fcGFyc2VkSlNPTi5wcmVmaXggKyBvYmouZGVzY3JpcHRpb24gKyB0aGlzLl9w
YXJzZWRKU09OLnN1ZmZpeDsKLSAgICAgICAgdmFyIHNlY3Rpb24gPSBuZXcgV2ViSW5zcGVjdG9y
Lk9iamVjdFByb3BlcnRpZXNTZWN0aW9uKG9iaiwgdGl0bGUpOwotICAgICAgICBzZWN0aW9uLmV4
cGFuZCgpOwotICAgICAgICBzZWN0aW9uLmVkaXRhYmxlID0gZmFsc2U7Ci0gICAgICAgIHRoaXMu
ZWxlbWVudC5hcHBlbmRDaGlsZChzZWN0aW9uLmVsZW1lbnQpOwotICAgIH0KLX0KLQotV2ViSW5z
cGVjdG9yLlJlc291cmNlSlNPTlZpZXcucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rv
ci5SZXNvdXJjZVZpZXcucHJvdG90eXBlOwotCi0vKioKLSAqIEBjb25zdHJ1Y3RvcgotICovCi1X
ZWJJbnNwZWN0b3IuUGFyc2VkSlNPTiA9IGZ1bmN0aW9uKGRhdGEsIHByZWZpeCwgc3VmZml4KQot
ewotICAgIHRoaXMuZGF0YSA9IGRhdGE7Ci0gICAgdGhpcy5wcmVmaXggPSBwcmVmaXg7Ci0gICAg
dGhpcy5zdWZmaXggPSBzdWZmaXg7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlUHJldmlld1ZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlUHJldmlld1ZpZXcuanMKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDQ1MTY3N2NkMGJmMTdmZjE2NmQxMDJlMmRhZWNlZjAwNmI4ODgxOWMu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVByZXZpZXdWaWV3LmpzCisrKyAvZGV2
L251bGwKQEAgLTEsOTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLS8qKgotICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5SZXNv
dXJjZUNvbnRlbnRWaWV3fQotICogQGNvbnN0cnVjdG9yCi0gKi8KLVdlYkluc3BlY3Rvci5SZXNv
dXJjZVByZXZpZXdWaWV3ID0gZnVuY3Rpb24ocmVzb3VyY2UsIHJlc3BvbnNlVmlldykKLXsKLSAg
ICBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDb250ZW50Vmlldy5jYWxsKHRoaXMsIHJlc291cmNlKTsK
LSAgICB0aGlzLl9yZXNwb25zZVZpZXcgPSByZXNwb25zZVZpZXc7Ci19Ci0KLVdlYkluc3BlY3Rv
ci5SZXNvdXJjZVByZXZpZXdWaWV3LnByb3RvdHlwZSA9IHsKLSAgICBjb250ZW50TG9hZGVkOiBm
dW5jdGlvbigpCi0gICAgewotICAgICAgICBpZiAoIXRoaXMucmVzb3VyY2UuY29udGVudCkgewot
ICAgICAgICAgICAgaWYgKCF0aGlzLl9lbXB0eVZpZXcpIHsKLSAgICAgICAgICAgICAgICB0aGlz
Ll9lbXB0eVZpZXcgPSB0aGlzLl9jcmVhdGVFbXB0eVZpZXcoKTsKLSAgICAgICAgICAgICAgICB0
aGlzLl9lbXB0eVZpZXcuc2hvdyh0aGlzLmVsZW1lbnQpOwotICAgICAgICAgICAgICAgIHRoaXMu
aW5uZXJWaWV3ID0gdGhpcy5fZW1wdHlWaWV3OwotICAgICAgICAgICAgfQotICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgaWYgKHRoaXMuX2VtcHR5VmlldykgewotICAgICAgICAgICAgICAg
IHRoaXMuX2VtcHR5Vmlldy5kZXRhY2goKTsKLSAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5f
ZW1wdHlWaWV3OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoIXRoaXMuX3ByZXZp
ZXdWaWV3KQotICAgICAgICAgICAgICAgIHRoaXMuX3ByZXZpZXdWaWV3ID0gdGhpcy5fY3JlYXRl
UHJldmlld1ZpZXcoKTsKLSAgICAgICAgICAgIHRoaXMuX3ByZXZpZXdWaWV3LnNob3codGhpcy5l
bGVtZW50KTsKLSAgICAgICAgICAgIHRoaXMuaW5uZXJWaWV3ID0gdGhpcy5fcHJldmlld1ZpZXc7
Ci0gICAgICAgIH0KLSAgICB9LAotCi0gICAgX2NyZWF0ZUVtcHR5VmlldzogZnVuY3Rpb24oKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuRW1wdHlWaWV3KFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiVGhpcyByZXF1ZXN0IGhhcyBubyBwcmV2aWV3IGF2YWlsYWJsZS4iKSk7
Ci0gICAgfSwKLQotICAgIF9jcmVhdGVQcmV2aWV3VmlldzogZnVuY3Rpb24oKQotICAgIHsKLSAg
ICAgICAgaWYgKHRoaXMucmVzb3VyY2UuaGFzRXJyb3JTdGF0dXNDb2RlKCkgJiYgdGhpcy5yZXNv
dXJjZS5jb250ZW50KQotICAgICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2VIVE1MVmlldyh0aGlzLnJlc291cmNlKTsKLQotICAgICAgICBpZiAodGhpcy5yZXNvdXJjZS50
eXBlID09PSBXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5YSFIgJiYgdGhpcy5yZXNvdXJjZS5j
b250ZW50KSB7Ci0gICAgICAgICAgICB2YXIgcGFyc2VkSlNPTiA9IFdlYkluc3BlY3Rvci5SZXNv
dXJjZUpTT05WaWV3LnBhcnNlSlNPTih0aGlzLnJlc291cmNlLmNvbnRlbnQpOwotICAgICAgICAg
ICAgaWYgKHBhcnNlZEpTT04pCi0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0
b3IuUmVzb3VyY2VKU09OVmlldyh0aGlzLnJlc291cmNlLCBwYXJzZWRKU09OKTsKLSAgICAgICAg
fQotCi0gICAgICAgIGlmICh0aGlzLnJlc291cmNlLmNvbnRlbnQgJiYgdGhpcy5yZXNvdXJjZS50
eXBlID09PSBXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5TY3JpcHQgJiYgdGhpcy5yZXNvdXJj
ZS5taW1lVHlwZSA9PT0gImFwcGxpY2F0aW9uL2pzb24iKSB7Ci0gICAgICAgICAgICB2YXIgcGFy
c2VkSlNPTlAgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VKU09OVmlldy5wYXJzZUpTT05QKHRoaXMu
cmVzb3VyY2UuY29udGVudCk7Ci0gICAgICAgICAgICBpZiAocGFyc2VkSlNPTlApCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuUmVzb3VyY2VKU09OVmlldyh0aGlzLnJl
c291cmNlLCBwYXJzZWRKU09OUCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAodGhpcy5fcmVz
cG9uc2VWaWV3LnNvdXJjZVZpZXcpCi0gICAgICAgICAgICByZXR1cm4gdGhpcy5fcmVzcG9uc2VW
aWV3LnNvdXJjZVZpZXc7Ci0KLSAgICAgICAgaWYgKHRoaXMucmVzb3VyY2UudHlwZSA9PT0gV2Vi
SW5zcGVjdG9yLnJlc291cmNlVHlwZXMuT3RoZXIpCi0gICAgICAgICAgICByZXR1cm4gdGhpcy5f
Y3JlYXRlRW1wdHlWaWV3KCk7Ci0KLSAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5SZXNvdXJj
ZVZpZXcubm9uU291cmNlVmlld0ZvclJlc291cmNlKHRoaXMucmVzb3VyY2UpOwotICAgIH0KLX0K
LQotV2ViSW5zcGVjdG9yLlJlc291cmNlUHJldmlld1ZpZXcucHJvdG90eXBlLl9fcHJvdG9fXyA9
IFdlYkluc3BlY3Rvci5SZXNvdXJjZUNvbnRlbnRWaWV3LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VSZXNwb25zZVZpZXcu
anMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlUmVzcG9uc2VW
aWV3LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZDBmNTNjZmI5ZmExNWJkMDA5
NmJkMTZlZGIwNWUyNzRhYzA4ZjFhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VS
ZXNwb25zZVZpZXcuanMKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1
dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLyoqCi0gKiBAZXh0
ZW5kcyB7V2ViSW5zcGVjdG9yLlJlc291cmNlQ29udGVudFZpZXd9Ci0gKiBAY29uc3RydWN0b3IK
LSAqLwotV2ViSW5zcGVjdG9yLlJlc291cmNlUmVzcG9uc2VWaWV3ID0gZnVuY3Rpb24ocmVzb3Vy
Y2UpCi17Ci0gICAgV2ViSW5zcGVjdG9yLlJlc291cmNlQ29udGVudFZpZXcuY2FsbCh0aGlzLCBy
ZXNvdXJjZSk7Ci19Ci0KLVdlYkluc3BlY3Rvci5SZXNvdXJjZVJlc3BvbnNlVmlldy5wcm90b3R5
cGUgPSB7Ci0gICAgZ2V0IHNvdXJjZVZpZXcoKQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9z
b3VyY2VWaWV3ICYmIFdlYkluc3BlY3Rvci5SZXNvdXJjZVZpZXcuaGFzVGV4dENvbnRlbnQodGhp
cy5yZXNvdXJjZSkpCi0gICAgICAgICAgICB0aGlzLl9zb3VyY2VWaWV3ID0gbmV3IFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZVNvdXJjZUZyYW1lKHRoaXMucmVzb3VyY2UpOwotICAgICAgICByZXR1cm4g
dGhpcy5fc291cmNlVmlldzsKLSAgICB9LAotCi0gICAgY29udGVudExvYWRlZDogZnVuY3Rpb24o
KQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLnJlc291cmNlLmNvbnRlbnQgfHwgIXRoaXMuc291
cmNlVmlldykgewotICAgICAgICAgICAgaWYgKCF0aGlzLl9lbXB0eVZpZXcpIHsKLSAgICAgICAg
ICAgICAgICB0aGlzLl9lbXB0eVZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLkVtcHR5VmlldyhXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIlRoaXMgcmVxdWVzdCBoYXMgbm8gcmVzcG9uc2UgZGF0YSBhdmFp
bGFibGUuIikpOwotICAgICAgICAgICAgICAgIHRoaXMuX2VtcHR5Vmlldy5zaG93KHRoaXMuZWxl
bWVudCk7Ci0gICAgICAgICAgICAgICAgdGhpcy5pbm5lclZpZXcgPSB0aGlzLl9lbXB0eVZpZXc7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAodGhpcy5f
ZW1wdHlWaWV3KSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5fZW1wdHlWaWV3LmRldGFjaCgpOwot
ICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9lbXB0eVZpZXc7Ci0gICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgIHRoaXMuc291cmNlVmlldy5zaG93KHRoaXMuZWxlbWVudCk7Ci0gICAgICAg
ICAgICB0aGlzLmlubmVyVmlldyA9IHRoaXMuc291cmNlVmlldzsKLSAgICAgICAgfQotICAgIH0K
LX0KLQotV2ViSW5zcGVjdG9yLlJlc291cmNlUmVzcG9uc2VWaWV3LnByb3RvdHlwZS5fX3Byb3Rv
X18gPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlU2NyaXB0TWFw
cGluZy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VTY3Jp
cHRNYXBwaW5nLmpzCmluZGV4IGM1NjcyMTI2MzAwNzQxNDI3OGJiNmIxNjI5YjRkODIyZThjN2Y1
NzYuLjIyNmI4OWVhYWQwNzdhZGI5YTlhODY2NjgwYTIwYjdmZmIxZGMzOGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VTY3JpcHRNYXBwaW5n
LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VTY3Jp
cHRNYXBwaW5nLmpzCkBAIC05MSw3ICs5MSw3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVNjcmlw
dE1hcHBpbmcucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmVxdWVzdCA9IFdlYkluc3BlY3Rv
ci5uZXR3b3JrTWFuYWdlci5pbmZsaWdodFJlcXVlc3RGb3JVUkwoc2NyaXB0LnNvdXJjZVVSTCk7
CiAgICAgICAgICAgICBpZiAoIXJlcXVlc3QpIHsKICAgICAgICAgICAgICAgICB2YXIgcmVzb3Vy
Y2UgPSBXZWJJbnNwZWN0b3IucmVzb3VyY2VGb3JVUkwoc2NyaXB0LnNvdXJjZVVSTCk7Ci0gICAg
ICAgICAgICAgICAgcmVxdWVzdCA9IHJlc291cmNlID8gcmVzb3VyY2UucmVxdWVzdCA6IG51bGw7
CisgICAgICAgICAgICAgICAgcmVxdWVzdCA9IHJlc291cmNlID8gcmVzb3VyY2UucmVxdWVzdCgp
IDogbnVsbDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChyZXF1ZXN0ICYmIHJlcXVl
c3QudHlwZSA9PT0gV2ViSW5zcGVjdG9yLnJlc291cmNlVHlwZXMuRG9jdW1lbnQpIHsKICAgICAg
ICAgICAgICAgICBpc0lubGluZVNjcmlwdCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVGltaW5nVmlldy5qcyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VUaW1pbmdWaWV3LmpzCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMGNhYTk2ZTllODI3OWU1YTE0Yjg0Y2M1YzU3N2IwNWNi
MjZjOTc4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VUaW1pbmdWaWV3LmpzCisr
KyAvZGV2L251bGwKQEAgLTEsMTYxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0vKioKLSAqIEBjb25zdHJ1Y3RvcgotICogQGV4
dGVuZHMge1dlYkluc3BlY3Rvci5WaWV3fQotICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuTmV0d29y
a1JlcXVlc3R9IHJlcXVlc3QKLSAqLwotV2ViSW5zcGVjdG9yLlJlc291cmNlVGltaW5nVmlldyA9
IGZ1bmN0aW9uKHJlcXVlc3QpCi17Ci0gICAgV2ViSW5zcGVjdG9yLlZpZXcuY2FsbCh0aGlzKTsK
LSAgICB0aGlzLmVsZW1lbnQuYWRkU3R5bGVDbGFzcygicmVzb3VyY2UtdGltaW5nLXZpZXciKTsK
LQotICAgIHRoaXMuX3JlcXVlc3QgPSByZXF1ZXN0OwotCi0gICAgcmVxdWVzdC5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5OZXR3b3JrUmVxdWVzdC5FdmVudHMuVGltaW5nQ2hhbmdlZCwg
dGhpcy5fcmVmcmVzaCwgdGhpcyk7Ci19Ci0KLVdlYkluc3BlY3Rvci5SZXNvdXJjZVRpbWluZ1Zp
ZXcucHJvdG90eXBlID0gewotICAgIHdhc1Nob3duOiBmdW5jdGlvbigpCi0gICAgewotICAgICAg
ICBpZiAoIXRoaXMuX3JlcXVlc3QudGltaW5nKSB7Ci0gICAgICAgICAgICBpZiAoIXRoaXMuX2Vt
cHR5VmlldykgewotICAgICAgICAgICAgICAgIHRoaXMuX2VtcHR5VmlldyA9IG5ldyBXZWJJbnNw
ZWN0b3IuRW1wdHlWaWV3KFdlYkluc3BlY3Rvci5VSVN0cmluZygiVGhpcyByZXF1ZXN0IGhhcyBu
byBkZXRhaWxlZCB0aW1pbmcgaW5mby4iKSk7Ci0gICAgICAgICAgICAgICAgdGhpcy5fZW1wdHlW
aWV3LnNob3codGhpcy5lbGVtZW50KTsKLSAgICAgICAgICAgICAgICB0aGlzLmlubmVyVmlldyA9
IHRoaXMuX2VtcHR5VmlldzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotCi0gICAgICAgIGlmICh0aGlzLl9lbXB0eVZpZXcpIHsKLSAgICAgICAgICAgIHRo
aXMuX2VtcHR5Vmlldy5kZXRhY2goKTsKLSAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9lbXB0eVZp
ZXc7Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLl9yZWZyZXNoKCk7Ci0gICAgfSwKLQotICAg
IF9yZWZyZXNoOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBpZiAodGhpcy5fdGFibGVFbGVt
ZW50KQotICAgICAgICAgICAgdGhpcy5fdGFibGVFbGVtZW50LnBhcmVudEVsZW1lbnQucmVtb3Zl
Q2hpbGQodGhpcy5fdGFibGVFbGVtZW50KTsKLQotICAgICAgICB0aGlzLl90YWJsZUVsZW1lbnQg
PSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUaW1pbmdWaWV3LmNyZWF0ZVRpbWluZ1RhYmxlKHRoaXMu
X3JlcXVlc3QpOwotICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fdGFibGVF
bGVtZW50KTsKLSAgICB9Ci19Ci0KLVdlYkluc3BlY3Rvci5SZXNvdXJjZVRpbWluZ1ZpZXcuY3Jl
YXRlVGltaW5nVGFibGUgPSBmdW5jdGlvbihyZXF1ZXN0KQotewotICAgIHZhciB0YWJsZUVsZW1l
bnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0YWJsZSIpOwotICAgIHZhciByb3dzID0gW107
Ci0KLSAgICBmdW5jdGlvbiBhZGRSb3codGl0bGUsIGNsYXNzTmFtZSwgc3RhcnQsIGVuZCkKLSAg
ICB7Ci0gICAgICAgIHZhciByb3cgPSB7fTsKLSAgICAgICAgcm93LnRpdGxlID0gdGl0bGU7Ci0g
ICAgICAgIHJvdy5jbGFzc05hbWUgPSBjbGFzc05hbWU7Ci0gICAgICAgIHJvdy5zdGFydCA9IHN0
YXJ0OwotICAgICAgICByb3cuZW5kID0gZW5kOwotICAgICAgICByb3dzLnB1c2gocm93KTsKLSAg
ICB9Ci0KLSAgICBpZiAocmVxdWVzdC50aW1pbmcucHJveHlTdGFydCAhPT0gLTEpCi0gICAgICAg
IGFkZFJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlByb3h5IiksICJwcm94eSIsIHJlcXVlc3Qu
dGltaW5nLnByb3h5U3RhcnQsIHJlcXVlc3QudGltaW5nLnByb3h5RW5kKTsKLQotICAgIGlmIChy
ZXF1ZXN0LnRpbWluZy5kbnNTdGFydCAhPT0gLTEpCi0gICAgICAgIGFkZFJvdyhXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIkROUyBMb29rdXAiKSwgImRucyIsIHJlcXVlc3QudGltaW5nLmRuc1N0YXJ0
LCByZXF1ZXN0LnRpbWluZy5kbnNFbmQpOwotCi0gICAgaWYgKHJlcXVlc3QudGltaW5nLmNvbm5l
Y3RTdGFydCAhPT0gLTEpIHsKLSAgICAgICAgaWYgKHJlcXVlc3QuY29ubmVjdGlvblJldXNlZCkK
LSAgICAgICAgICAgIGFkZFJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkJsb2NraW5nIiksICJj
b25uZWN0aW5nIiwgcmVxdWVzdC50aW1pbmcuY29ubmVjdFN0YXJ0LCByZXF1ZXN0LnRpbWluZy5j
b25uZWN0RW5kKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICB2YXIgY29ubmVjdFN0YXJ0
ID0gcmVxdWVzdC50aW1pbmcuY29ubmVjdFN0YXJ0OwotICAgICAgICAgICAgLy8gQ29ubmVjdGlv
biBpbmNsdWRlcyBETlMsIHN1YnRyYWN0IGl0IGhlcmUuCi0gICAgICAgICAgICBpZiAocmVxdWVz
dC50aW1pbmcuZG5zU3RhcnQgIT09IC0xKQotICAgICAgICAgICAgICAgIGNvbm5lY3RTdGFydCAr
PSByZXF1ZXN0LnRpbWluZy5kbnNFbmQgLSByZXF1ZXN0LnRpbWluZy5kbnNTdGFydDsKLSAgICAg
ICAgICAgIGFkZFJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvbm5lY3RpbmciKSwgImNvbm5l
Y3RpbmciLCBjb25uZWN0U3RhcnQsIHJlcXVlc3QudGltaW5nLmNvbm5lY3RFbmQpOwotICAgICAg
ICB9Ci0gICAgfQotCi0gICAgaWYgKHJlcXVlc3QudGltaW5nLnNzbFN0YXJ0ICE9PSAtMSkKLSAg
ICAgICAgYWRkUm93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiU1NMIiksICJzc2wiLCByZXF1ZXN0
LnRpbWluZy5zc2xTdGFydCwgcmVxdWVzdC50aW1pbmcuc3NsRW5kKTsKLQotICAgIHZhciBzZW5k
U3RhcnQgPSByZXF1ZXN0LnRpbWluZy5zZW5kU3RhcnQ7Ci0gICAgaWYgKHJlcXVlc3QudGltaW5n
LnNzbFN0YXJ0ICE9PSAtMSkKLSAgICAgICAgc2VuZFN0YXJ0ICs9IHJlcXVlc3QudGltaW5nLnNz
bEVuZCAtIHJlcXVlc3QudGltaW5nLnNzbFN0YXJ0OwotCi0gICAgYWRkUm93KFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiU2VuZGluZyIpLCAic2VuZGluZyIsIHJlcXVlc3QudGltaW5nLnNlbmRTdGFy
dCwgcmVxdWVzdC50aW1pbmcuc2VuZEVuZCk7Ci0gICAgYWRkUm93KFdlYkluc3BlY3Rvci5VSVN0
cmluZygiV2FpdGluZyIpLCAid2FpdGluZyIsIHJlcXVlc3QudGltaW5nLnNlbmRFbmQsIHJlcXVl
c3QudGltaW5nLnJlY2VpdmVIZWFkZXJzRW5kKTsKLSAgICBhZGRSb3coV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJSZWNlaXZpbmciKSwgInJlY2VpdmluZyIsIChyZXF1ZXN0LnJlc3BvbnNlUmVjZWl2
ZWRUaW1lIC0gcmVxdWVzdC50aW1pbmcucmVxdWVzdFRpbWUpICogMTAwMCwgKHJlcXVlc3QuZW5k
VGltZSAtIHJlcXVlc3QudGltaW5nLnJlcXVlc3RUaW1lKSAqIDEwMDApOwotCi0gICAgY29uc3Qg
Y2hhcnRXaWR0aCA9IDIwMDsKLSAgICB2YXIgdG90YWwgPSAocmVxdWVzdC5lbmRUaW1lIC0gcmVx
dWVzdC50aW1pbmcucmVxdWVzdFRpbWUpICogMTAwMDsKLSAgICB2YXIgc2NhbGUgPSBjaGFydFdp
ZHRoIC8gdG90YWw7Ci0KLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJvd3MubGVuZ3RoOyArK2kp
IHsKLSAgICAgICAgdmFyIHRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidHIiKTsKLSAgICAg
ICAgdGFibGVFbGVtZW50LmFwcGVuZENoaWxkKHRyKTsKLQotICAgICAgICB2YXIgdGQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOwotICAgICAgICB0ZC50ZXh0Q29udGVudCA9IHJvd3Nb
aV0udGl0bGU7Ci0gICAgICAgIHRyLmFwcGVuZENoaWxkKHRkKTsKLQotICAgICAgICB0ZCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7Ci0gICAgICAgIHRkLndpZHRoID0gY2hhcnRXaWR0
aCArICJweCI7Ci0KLSAgICAgICAgdmFyIHJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpOwotICAgICAgICByb3cuY2xhc3NOYW1lID0gIm5ldHdvcmstdGltaW5nLXJvdyI7Ci0gICAg
ICAgIHRkLmFwcGVuZENoaWxkKHJvdyk7Ci0KLSAgICAgICAgdmFyIGJhciA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoInNwYW4iKTsKLSAgICAgICAgYmFyLmNsYXNzTmFtZSA9ICJuZXR3b3JrLXRp
bWluZy1iYXIgIiArIHJvd3NbaV0uY2xhc3NOYW1lOwotICAgICAgICBiYXIuc3R5bGUubGVmdCA9
IHNjYWxlICogcm93c1tpXS5zdGFydCArICJweCI7Ci0gICAgICAgIGJhci5zdHlsZS5yaWdodCA9
IHNjYWxlICogKHRvdGFsIC0gcm93c1tpXS5lbmQpICsgInB4IjsKLSAgICAgICAgYmFyLnN0eWxl
LmJhY2tncm91bmRDb2xvciA9IHJvd3NbaV0uY29sb3I7Ci0gICAgICAgIGJhci50ZXh0Q29udGVu
dCA9ICJcdTIwMEIiOyAvLyBJbXBvcnRhbnQgZm9yIDAtdGltZSBpdGVtcyB0byBoYXZlIDAgd2lk
dGguCi0gICAgICAgIHJvdy5hcHBlbmRDaGlsZChiYXIpOwotCi0gICAgICAgIHZhciB0aXRsZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKLSAgICAgICAgdGl0bGUuY2xhc3NOYW1l
ID0gIm5ldHdvcmstdGltaW5nLWJhci10aXRsZSI7Ci0gICAgICAgIGlmICh0b3RhbCAtIHJvd3Nb
aV0uZW5kIDwgcm93c1tpXS5zdGFydCkKLSAgICAgICAgICAgIHRpdGxlLnN0eWxlLnJpZ2h0ID0g
KHNjYWxlICogKHRvdGFsIC0gcm93c1tpXS5lbmQpICsgMykgKyAicHgiOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICB0aXRsZS5zdHlsZS5sZWZ0ID0gKHNjYWxlICogcm93c1tpXS5zdGFydCAr
IDMpICsgInB4IjsKLSAgICAgICAgdGl0bGUudGV4dENvbnRlbnQgPSBOdW1iZXIuc2Vjb25kc1Rv
U3RyaW5nKChyb3dzW2ldLmVuZCAtIHJvd3NbaV0uc3RhcnQpIC8gMTAwMCk7Ci0gICAgICAgIHJv
dy5hcHBlbmRDaGlsZCh0aXRsZSk7Ci0KLSAgICAgICAgdHIuYXBwZW5kQ2hpbGQodGQpOwotICAg
IH0KLSAgICByZXR1cm4gdGFibGVFbGVtZW50OwotfQotCi1XZWJJbnNwZWN0b3IuUmVzb3VyY2VU
aW1pbmdWaWV3LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5
cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291
cmNlVHJlZU1vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNv
dXJjZVRyZWVNb2RlbC5qcwppbmRleCA3ZDQ4NDIxMjliMDIyMjA1ZWUwMTQzZDNkNjA1NGU1MTdi
Mjk4Y2NlLi44ZGFhYTM1YzJmNTI4NDRjNGNlNjcyNWYwNGNhYTY0ZmI0YmJiMTE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVHJlZU1vZGVs
LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VUcmVl
TW9kZWwuanMKQEAgLTU1OSw3ICs1NTksNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRnJh
bWUucHJvdG90eXBlID0gewogICAgIF9hZGRSZXF1ZXN0OiBmdW5jdGlvbihyZXF1ZXN0KQogICAg
IHsKICAgICAgICAgdmFyIHJlc291cmNlID0gdGhpcy5fcmVzb3VyY2VzTWFwW3JlcXVlc3QudXJs
XTsKLSAgICAgICAgaWYgKHJlc291cmNlICYmIHJlc291cmNlLnJlcXVlc3QgPT09IHJlcXVlc3Qp
IHsKKyAgICAgICAgaWYgKHJlc291cmNlICYmIHJlc291cmNlLnJlcXVlc3QoKSA9PT0gcmVxdWVz
dCkgewogICAgICAgICAgICAgLy8gQWxyZWFkeSBpbiB0aGUgdHJlZSwgd2UganVzdCBnb3QgYW4g
ZXh0cmEgdXBkYXRlLgogICAgICAgICAgICAgcmV0dXJuIHJlc291cmNlOwogICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVmll
dy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VWaWV3Lmpz
CmluZGV4IDA1ZGQyNzYyYmRjYTRlYTExZmQ4YzIxN2NkMzE2Y2JmMjU3NzUzYjQuLmIxMDhmM2Mw
MjQzYTYzNzRjNzg4NjM5MDNjMjJiMzYxMWE2MmJjNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VWaWV3LmpzCkBAIC00OSw2ICs0OSw5IEBA
IFdlYkluc3BlY3Rvci5SZXNvdXJjZVZpZXcucHJvdG90eXBlID0gewogCiBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2VWaWV3LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuVmlldy5wcm90
b3R5cGU7CiAKKy8qKgorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2V9IHJlc291cmNl
CisgKi8KIFdlYkluc3BlY3Rvci5SZXNvdXJjZVZpZXcuaGFzVGV4dENvbnRlbnQgPSBmdW5jdGlv
bihyZXNvdXJjZSkKIHsKICAgICBpZiAocmVzb3VyY2UudHlwZS5pc1RleHRUeXBlKCkpCkBAIC01
OCw2ICs2MSw5IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVZpZXcuaGFzVGV4dENvbnRlbnQgPSBm
dW5jdGlvbihyZXNvdXJjZSkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKKy8qKgorICogQHBhcmFt
IHtXZWJJbnNwZWN0b3IuUmVzb3VyY2V9IHJlc291cmNlCisgKi8KIFdlYkluc3BlY3Rvci5SZXNv
dXJjZVZpZXcubm9uU291cmNlVmlld0ZvclJlc291cmNlID0gZnVuY3Rpb24ocmVzb3VyY2UpCiB7
CiAgICAgc3dpdGNoIChyZXNvdXJjZS50eXBlKSB7CkBAIC04MSwxNiArODcsMjAgQEAgV2ViSW5z
cGVjdG9yLlJlc291cmNlU291cmNlRnJhbWUgPSBmdW5jdGlvbihyZXNvdXJjZSkKICAgICB0aGlz
Ll9yZXNvdXJjZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5SZXNvdXJjZS5FdmVudHMu
UmV2aXNpb25BZGRlZCwgdGhpcy5fY29udGVudENoYW5nZWQsIHRoaXMpOwogfQogCi0vL1RoaXMg
aXMgYSBtYXAgZnJvbSByZXNvdXJjZS50eXBlIHRvIG1pbWUgdHlwZXMKLS8vZm91bmQgaW4gV2Vi
SW5zcGVjdG9yLlNvdXJjZVRva2VuaXplci5SZWdpc3RyeS4KLVdlYkluc3BlY3Rvci5SZXNvdXJj
ZVNvdXJjZUZyYW1lLkRlZmF1bHRNSU1FVHlwZUZvclJlc291cmNlVHlwZSA9IHsKLSAgICAwOiAi
dGV4dC9odG1sIiwKLSAgICAxOiAidGV4dC9jc3MiLAotICAgIDQ6ICJ0ZXh0L2phdmFzY3JpcHQi
CitXZWJJbnNwZWN0b3IuUmVzb3VyY2VTb3VyY2VGcmFtZS5fY2Fub25pY2FsTUlNRVR5cGUgPSBm
dW5jdGlvbihyZXNvdXJjZSkKK3sKKyAgICB2YXIgdHlwZSA9IHJlc291cmNlLnR5cGU7CisgICAg
aWYgKHR5cGUgPT09IFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5cGVzLkRvY3VtZW50KQorICAgICAg
ICByZXR1cm4gInRleHQvaHRtbCI7CisgICAgaWYgKHR5cGUgPT09IFdlYkluc3BlY3Rvci5yZXNv
dXJjZVR5cGVzLlN0eWxlc2hlZXQpCisgICAgICAgIHJldHVybiAidGV4dC9jc3MiOworICAgIGlm
ICh0eXBlID09PSBXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5TY3JpcHQpCisgICAgICAgIHJl
dHVybiAidGV4dC9qYXZhc2NyaXB0IjsKIH0KIAotV2ViSW5zcGVjdG9yLlJlc291cmNlU291cmNl
RnJhbWUubWltZVR5cGVGb3JSZXNvdXJjZSA9IGZ1bmN0aW9uKHJlc291cmNlKSB7Ci0gICAgcmV0
dXJuIFdlYkluc3BlY3Rvci5SZXNvdXJjZVNvdXJjZUZyYW1lLkRlZmF1bHRNSU1FVHlwZUZvclJl
c291cmNlVHlwZVtyZXNvdXJjZS50eXBlXSB8fCByZXNvdXJjZS5taW1lVHlwZTsKK1dlYkluc3Bl
Y3Rvci5SZXNvdXJjZVNvdXJjZUZyYW1lLl9taW1lVHlwZUZvclJlc291cmNlID0gZnVuY3Rpb24o
cmVzb3VyY2UpCit7CisgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5SZXNvdXJjZVNvdXJjZUZyYW1l
Ll9jYW5vbmljYWxNSU1FVHlwZShyZXNvdXJjZSkgfHwgcmVzb3VyY2UubWltZVR5cGU7CiB9CiAK
IFdlYkluc3BlY3Rvci5SZXNvdXJjZVNvdXJjZUZyYW1lLnByb3RvdHlwZSA9IHsKQEAgLTEwMyw3
ICsxMTMsNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTb3VyY2VGcmFtZS5wcm90b3R5cGUgPSB7
CiAgICAgewogICAgICAgICBmdW5jdGlvbiBjb250ZW50TG9hZGVkKHRleHQpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIHZhciBtaW1lVHlwZSA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZVNvdXJjZUZy
YW1lLm1pbWVUeXBlRm9yUmVzb3VyY2UodGhpcy5yZXNvdXJjZSk7CisgICAgICAgICAgICB2YXIg
bWltZVR5cGUgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTb3VyY2VGcmFtZS5fbWltZVR5cGVGb3JS
ZXNvdXJjZSh0aGlzLl9yZXNvdXJjZSk7CiAgICAgICAgICAgICBjYWxsYmFjayhtaW1lVHlwZSwg
dGV4dCk7CiAgICAgICAgIH0KIApAQCAtMTEyLDcgKzEyMiw3IEBAIFdlYkluc3BlY3Rvci5SZXNv
dXJjZVNvdXJjZUZyYW1lLnByb3RvdHlwZSA9IHsKIAogICAgIF9jb250ZW50Q2hhbmdlZDogZnVu
Y3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICB0aGlzLnNldENvbnRlbnQoV2ViSW5zcGVjdG9y
LlJlc291cmNlU291cmNlRnJhbWUubWltZVR5cGVGb3JSZXNvdXJjZVt0aGlzLl9yZXNvdXJjZV0s
IHRoaXMuX3Jlc291cmNlLmNvbnRlbnQpOworICAgICAgICB0aGlzLnNldENvbnRlbnQoV2ViSW5z
cGVjdG9yLlJlc291cmNlU291cmNlRnJhbWUuX21pbWVUeXBlRm9yUmVzb3VyY2VbdGhpcy5fcmVz
b3VyY2VdLCB0aGlzLl9yZXNvdXJjZS5jb250ZW50KTsKICAgICB9CiB9CiAKQEAgLTIwNCw3ICsy
MTQsNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VSZXZpc2lvblNvdXJjZUZyYW1lLnByb3RvdHlw
ZSA9IHsKICAgICB7CiAgICAgICAgIGZ1bmN0aW9uIGNvbnRlbnRMb2FkZWQodGV4dCkKICAgICAg
ICAgewotICAgICAgICAgICAgdmFyIG1pbWVUeXBlID0gV2ViSW5zcGVjdG9yLlJlc291cmNlU291
cmNlRnJhbWUubWltZVR5cGVGb3JSZXNvdXJjZSh0aGlzLnJlc291cmNlKTsKKyAgICAgICAgICAg
IHZhciBtaW1lVHlwZSA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZVNvdXJjZUZyYW1lLl9taW1lVHlw
ZUZvclJlc291cmNlKHRoaXMucmVzb3VyY2UpOwogICAgICAgICAgICAgY2FsbGJhY2sobWltZVR5
cGUsIHRleHQpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCmluZGV4IGIxM2Y0M2Q3MDkzNTc5M2NlZmY4
NTNiNmNkZmIyMGFlOTRmMGYzM2EuLjBjNmQxMjUyN2VjZDYxMTE4YzQxMGIxZTA1YjM4YmIzZWUx
MjYyMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVz
b3VyY2VzUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9S
ZXNvdXJjZXNQYW5lbC5qcwpAQCAtMTI2MCwxMCArMTI2MCwxMCBAQCBXZWJJbnNwZWN0b3IuRnJh
bWVSZXNvdXJjZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKIAogICAgIF9hcHBlbmRPcGVuSW5O
ZXR3b3JrUGFuZWxBY3Rpb246IGZ1bmN0aW9uKGNvbnRleHRNZW51LCBldmVudCkKICAgICB7Ci0g
ICAgICAgIGlmICghdGhpcy5fcmVzb3VyY2UucmVxdWVzdCkKKyAgICAgICAgaWYgKCF0aGlzLl9y
ZXNvdXJjZS5yZXF1ZXN0KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgY29udGV4
dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3Iub3BlbkluTmV0d29ya1BhbmVsTGFiZWwoKSwg
V2ViSW5zcGVjdG9yLm9wZW5SZXF1ZXN0SW5OZXR3b3JrUGFuZWwuYmluZChXZWJJbnNwZWN0b3Is
IHRoaXMuX3Jlc291cmNlLnJlcXVlc3QpKTsKKyAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRl
bShXZWJJbnNwZWN0b3Iub3BlbkluTmV0d29ya1BhbmVsTGFiZWwoKSwgV2ViSW5zcGVjdG9yLm9w
ZW5SZXF1ZXN0SW5OZXR3b3JrUGFuZWwuYmluZChXZWJJbnNwZWN0b3IsIHRoaXMuX3Jlc291cmNl
LnJlcXVlc3QoKSkpOwogICAgIH0sCiAKICAgICBfYXBwZW5kU2F2ZUFzQWN0aW9uOiBmdW5jdGlv
bihjb250ZXh0TWVudSwgZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1dlYktpdC5xcmMKaW5kZXggMzY0YjBiMjJmNWNhYzM5ZDkwNjQxZWE0YTE1ZjJkYmVjYTc0
MWVhNS4uZTRiNTBlZDVhNzhkMzdiNDkxNThiOWU2ZjI0MGExMWU2NTg5NGQyNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwpAQCAtMTAzLDE0ICsx
MDMsMTUgQEAKICAgICA8ZmlsZT5SYXdTb3VyY2VDb2RlLmpzPC9maWxlPgogICAgIDxmaWxlPlJl
bW90ZU9iamVjdC5qczwvZmlsZT4KICAgICA8ZmlsZT5SZXNvdXJjZS5qczwvZmlsZT4KLSAgICA8
ZmlsZT5SZXNvdXJjZUNvb2tpZXNWaWV3LmpzPC9maWxlPgotICAgIDxmaWxlPlJlc291cmNlSlNP
TlZpZXcuanM8L2ZpbGU+Ci0gICAgPGZpbGU+UmVzb3VyY2VIVE1MVmlldy5qczwvZmlsZT4KLSAg
ICA8ZmlsZT5SZXNvdXJjZUhlYWRlcnNWaWV3LmpzPC9maWxlPgotICAgIDxmaWxlPlJlc291cmNl
UHJldmlld1ZpZXcuanM8L2ZpbGU+Ci0gICAgPGZpbGU+UmVzb3VyY2VSZXNwb25zZVZpZXcuanM8
L2ZpbGU+CisgICAgPGZpbGU+UmVxdWVzdENvb2tpZXNWaWV3LmpzPC9maWxlPgorICAgIDxmaWxl
PlJlcXVlc3RKU09OVmlldy5qczwvZmlsZT4KKyAgICA8ZmlsZT5SZXF1ZXN0SFRNTFZpZXcuanM8
L2ZpbGU+CisgICAgPGZpbGU+UmVxdWVzdEhlYWRlcnNWaWV3LmpzPC9maWxlPgorICAgIDxmaWxl
PlJlcXVlc3RQcmV2aWV3Vmlldy5qczwvZmlsZT4KKyAgICA8ZmlsZT5SZXF1ZXN0UmVzcG9uc2VW
aWV3LmpzPC9maWxlPgorICAgIDxmaWxlPlJlcXVlc3RUaW1pbmdWaWV3LmpzPC9maWxlPgorICAg
IDxmaWxlPlJlcXVlc3RWaWV3LmpzPC9maWxlPgogICAgIDxmaWxlPlJlc291cmNlU2NyaXB0TWFw
cGluZy5qczwvZmlsZT4KLSAgICA8ZmlsZT5SZXNvdXJjZVRpbWluZ1ZpZXcuanM8L2ZpbGU+CiAg
ICAgPGZpbGU+UmVzb3VyY2VUcmVlTW9kZWwuanM8L2ZpbGU+CiAgICAgPGZpbGU+UmVzb3VyY2VU
eXBlLmpzPC9maWxlPgogICAgIDxmaWxlPlJlc291cmNlVXRpbHMuanM8L2ZpbGU+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAppbmRleCAy
YmYyOWViZWE4NThhMDFiMTM2MzUzZjk2N2ViZWYzNzMzMTI0YTYxLi4wNGM2NDA1YTNkNDFmYmJj
ZDQwYWQwMDI3MmJlMjNiNmFhZWFjNDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKQEAgLTExOCw2ICsxMTgsNyBAQCBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlRleHRWaWV3ZXIuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlNvdXJj
ZUZyYW1lLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIg
c3JjPSJSZXNvdXJjZVZpZXcuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0IiBzcmM9IlJlcXVlc3RWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJKYXZhU2NyaXB0U291cmNlRnJhbWUuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlNwbGl0Vmlldy5q
cyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iVGFi
YmVkRWRpdG9yQ29udGFpbmVyLmpzIj48L3NjcmlwdD4KQEAgLTEzOCwxMyArMTM5LDEzIEBAIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iQXVkaXRGb3Jt
YXR0ZXJzLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIg
c3JjPSJOZXR3b3JrSXRlbVZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0IiBzcmM9IkVtcHR5Vmlldy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iUmVzb3VyY2VIZWFkZXJzVmlldy5qcyI+PC9zY3Jp
cHQ+Ci0gICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iUmVzb3VyY2VDb29r
aWVzVmlldy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IHNyYz0iUmVzb3VyY2VUaW1pbmdWaWV3LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCIgc3JjPSJSZXNvdXJjZUpTT05WaWV3LmpzIj48L3NjcmlwdD4KLSAg
ICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJSZXNvdXJjZUhUTUxWaWV3Lmpz
Ij48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJSZXNv
dXJjZVJlc3BvbnNlVmlldy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiIHNyYz0iUmVzb3VyY2VQcmV2aWV3Vmlldy5qcyI+PC9zY3JpcHQ+CisgICAgPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iUmVxdWVzdEhlYWRlcnNWaWV3LmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJSZXF1ZXN0
Q29va2llc1ZpZXcuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0IiBzcmM9IlJlcXVlc3RUaW1pbmdWaWV3LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJSZXF1ZXN0SlNPTlZpZXcuanMiPjwvc2NyaXB0Pgor
ICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlJlcXVlc3RIVE1MVmlldy5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iUmVx
dWVzdFJlc3BvbnNlVmlldy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiIHNyYz0iUmVxdWVzdFByZXZpZXdWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJTY3JpcHRGb3JtYXR0ZXIuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkRPTVN5bnRheEhp
Z2hsaWdodGVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCIgc3JjPSJUZXh0RWRpdG9yTW9kZWwuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDQ2NWE0OTRiY2M2YWZhY2Y0MjY3MDNk
Yzk0OTgyMWVmN2RkNDY2YzcuLjk5ZTIzN2IxZTQ3ZDUyMzM5OWYzMWU3NGQ2N2UwNzQ4M2JlYWJl
YjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyMSBAQAorMjAxMi0wNC0xMSAgVml2ZWsgR2FsYXRhZ2UgIDx2aXZla2dhbGF0YWdl
QGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBEaXNhYmxpbmcgSW5zcGVjdG9y
IGNhdXNlcyBidWlsZCBmYWlsdXJlIG9uIFdpbmRvd3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzNTU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUGF2
ZWwgRmVsZG1hbi4KKworICAgICAgICBUaGUgY2FsbHMgdG8gaW5zcGVjdG9yIEFQSXMgYXJlIG5v
dCBwdXQgdW5kZXIgRU5BQkxFKElOU1BFQ1RPUikgZ3VhcmQuCisgICAgICAgIFRoaXMgY2hhbmdl
IGJyaW5ncyBhbGwgc3VjaCBBUEkgY2FsbHMgdW5kZXIgdGhlIGd1YXJkLgorCisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9MYXlvdXRUZXN0Q29udHJv
bGxlci5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFIpOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAg
KExheW91dFRlc3RDb250cm9sbGVyKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJ
bnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246Omludm9rZSk6CisK
IDIwMTItMDQtMTEgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgRml4IHJlZ3Jlc3Npb24gaW50cm9kdWNlZCBpbiByMTEzOTI3LgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDM0ZDFlNzE3
NjdkOWM2MWNhNjdmZjc4OGYxOWFjZDc2MGVhZWZiYjIuLjdiZjNhMmNlNjA5ODc3ZTZhNGJiMDdi
YjFkNmYzZjJkNmRkYzQ2MTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0wNC0xMiAgUGF2
ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBleHRyYWN0aW5nIE5ldHdvcmtSZXF1ZXN0IGZyb20gUmVzb3VyY2UgKHN0ZXAgMikKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzNzczCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3Rz
L2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstcmVxdWVzdC1yZXZpc2lvbi1jb250ZW50Lmh0bWw6
CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXF1ZXN0LXBhcmFtZXRl
cnMtZGVjb2RpbmcuaHRtbDoKKwogMjAxMi0wNC0xMiAgWmFsYW4gQnVqdGFzICA8emJ1anRhc0Bn
bWFpbC5jb20+CiAKICAgICAgICAgW1F0XVtXSzJdIFpvb20gZ2VzdHVyZSB3aXRoIGRvdWJsZSB0
YXAgY3Jhc2hlcyBvbiBpZnJhbWUgd2hlbiBtYWluIGZyYW1lIGhhcyBzY3JvbGwgb2Zmc2V0Lgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3
b3JrLXByZXZpZXctanNvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL25ldHdvcmstcHJldmlldy1qc29uLWV4cGVjdGVkLnR4dAppbmRleCBl
ZTdjNWJkYjU0ZmQzY2NlMzU0NzQ3NDNhYWZhNmRkOTI4ZGU5NjJkLi5iYWI1NmNjMjk1MmM0OWRh
ZWQ0NjNjYzNjN2QwYjAxOWZiYjNlMWZhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstcHJldmlldy1qc29uLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstcHJl
dmlldy1qc29uLWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDMgQEAKLVRlc3RzIFJlc291cmNlSlNP
TlZpZXcgYWJpbGl0eSB0byBwYXJzZSBKU09OIHBhc3NlZCBpbiBYSFIsIEpTT05QCitUZXN0cyBS
ZXF1ZXN0SlNPTlZpZXcgYWJpbGl0eSB0byBwYXJzZSBKU09OIHBhc3NlZCBpbiBYSFIsIEpTT05Q
CiAKIEJ1ZyA2NTU1OQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvbmV0d29yay9uZXR3b3JrLXByZXZpZXctanNvbi5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXByZXZpZXctanNvbi5odG1sCmluZGV4IDkx
MmRhMGIxMTUwN2UxZDE0ZjY0MWRkNTk2YjdkOGNjMDY1NWEwMzYuLjQ0ZjRjMDllZDU5N2E3YjRk
OWY1YmY2MGRkZTNmYzNmODE4ZThmY2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1wcmV2aWV3LWpzb24uaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstcHJldmlldy1qc29u
Lmh0bWwKQEAgLTgsMzcgKzgsMzcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgdmFyIHRlc3REYXRh
OwogCiAgICAgdGVzdERhdGEgPSAid2hpbGUoMSk7IjsKLSAgICBJbnNwZWN0b3JUZXN0LmFzc2Vy
dFRydWUoIVdlYkluc3BlY3Rvci5SZXNvdXJjZUpTT05WaWV3LnBhcnNlSlNPTih0ZXN0RGF0YSks
ICJTaG91bGQgbm90IGJlIGFibGUgdG8gcGFyc2UgXCIiICsgdGVzdERhdGEgKyAiXCIuIik7Cisg
ICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRUcnVlKCFXZWJJbnNwZWN0b3IuUmVxdWVzdEpTT05WaWV3
LnBhcnNlSlNPTih0ZXN0RGF0YSksICJTaG91bGQgbm90IGJlIGFibGUgdG8gcGFyc2UgXCIiICsg
dGVzdERhdGEgKyAiXCIuIik7CiAKICAgICB0ZXN0RGF0YSA9ICJ7XCJuYW1lXCI6IFwidmFsdWVc
IiI7Ci0gICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRUcnVlKCFXZWJJbnNwZWN0b3IuUmVzb3VyY2VK
U09OVmlldy5wYXJzZUpTT04odGVzdERhdGEpLCAiU2hvdWxkIG5vdCBiZSBhYmxlIHRvIHBhcnNl
IFwiIiArIHRlc3REYXRhICsgIlwiLiIpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0VHJ1ZSgh
V2ViSW5zcGVjdG9yLlJlcXVlc3RKU09OVmlldy5wYXJzZUpTT04odGVzdERhdGEpLCAiU2hvdWxk
IG5vdCBiZSBhYmxlIHRvIHBhcnNlIFwiIiArIHRlc3REYXRhICsgIlwiLiIpOwogCiAgICAgdGVz
dERhdGEgPSAie1wibmFtZVwiOiBcInZhbHVlXCJ9IjsKLSAgICB2YXIgcGFyc2VkSlNPTiA9IFdl
Ykluc3BlY3Rvci5SZXNvdXJjZUpTT05WaWV3LnBhcnNlSlNPTih0ZXN0RGF0YSk7CisgICAgdmFy
IHBhcnNlZEpTT04gPSBXZWJJbnNwZWN0b3IuUmVxdWVzdEpTT05WaWV3LnBhcnNlSlNPTih0ZXN0
RGF0YSk7CiAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMocGFyc2VkSlNPTi5wcmVmaXgs
ICIiKTsKICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhwYXJzZWRKU09OLmRhdGEubmFt
ZSwgInZhbHVlIik7CiAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMocGFyc2VkSlNPTi5z
dWZmaXgsICIiKTsKIAogICAgIHRlc3REYXRhID0gIndoaWxlKDEpOyB7XCJuYW1lXCI6IFwidmFs
dWVcIn0iOwotICAgIHBhcnNlZEpTT04gPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VKU09OVmlldy5w
YXJzZUpTT04odGVzdERhdGEpOworICAgIHBhcnNlZEpTT04gPSBXZWJJbnNwZWN0b3IuUmVxdWVz
dEpTT05WaWV3LnBhcnNlSlNPTih0ZXN0RGF0YSk7CiAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRF
cXVhbHMocGFyc2VkSlNPTi5wcmVmaXgsICJ3aGlsZSgxKTsgIik7CiAgICAgSW5zcGVjdG9yVGVz
dC5hc3NlcnRFcXVhbHMocGFyc2VkSlNPTi5kYXRhLm5hbWUsICJ2YWx1ZSIpOwogICAgIEluc3Bl
Y3RvclRlc3QuYXNzZXJ0RXF1YWxzKHBhcnNlZEpTT04uc3VmZml4LCAiIik7CiAKICAgICB0ZXN0
RGF0YSA9ICJmdW5jKHspIjsKLSAgICBJbnNwZWN0b3JUZXN0LmFzc2VydFRydWUoIVdlYkluc3Bl
Y3Rvci5SZXNvdXJjZUpTT05WaWV3LnBhcnNlSlNPTlAodGVzdERhdGEpLCAiU2hvdWxkIG5vdCBi
ZSBhYmxlIHRvIHBhcnNlIFwiIiArIHRlc3REYXRhICsgIlwiLiIpOworICAgIEluc3BlY3RvclRl
c3QuYXNzZXJ0VHJ1ZSghV2ViSW5zcGVjdG9yLlJlcXVlc3RKU09OVmlldy5wYXJzZUpTT05QKHRl
c3REYXRhKSwgIlNob3VsZCBub3QgYmUgYWJsZSB0byBwYXJzZSBcIiIgKyB0ZXN0RGF0YSArICJc
Ii4iKTsKIAogICAgIHRlc3REYXRhID0gImZ1bmMpeygiOwotICAgIEluc3BlY3RvclRlc3QuYXNz
ZXJ0VHJ1ZSghV2ViSW5zcGVjdG9yLlJlc291cmNlSlNPTlZpZXcucGFyc2VKU09OUCh0ZXN0RGF0
YSksICJTaG91bGQgbm90IGJlIGFibGUgdG8gcGFyc2UgXCIiICsgdGVzdERhdGEgKyAiXCIuIik7
CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRUcnVlKCFXZWJJbnNwZWN0b3IuUmVxdWVzdEpTT05W
aWV3LnBhcnNlSlNPTlAodGVzdERhdGEpLCAiU2hvdWxkIG5vdCBiZSBhYmxlIHRvIHBhcnNlIFwi
IiArIHRlc3REYXRhICsgIlwiLiIpOwogCiAgICAgdGVzdERhdGEgPSAiZnVuYyh7XCJuYW1lXCI6
IFwidmFsdWVcIn0iOwotICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0VHJ1ZSghV2ViSW5zcGVjdG9y
LlJlc291cmNlSlNPTlZpZXcucGFyc2VKU09OUCh0ZXN0RGF0YSksICJTaG91bGQgbm90IGJlIGFi
bGUgdG8gcGFyc2UgXCIiICsgdGVzdERhdGEgKyAiXCIuIik7CisgICAgSW5zcGVjdG9yVGVzdC5h
c3NlcnRUcnVlKCFXZWJJbnNwZWN0b3IuUmVxdWVzdEpTT05WaWV3LnBhcnNlSlNPTlAodGVzdERh
dGEpLCAiU2hvdWxkIG5vdCBiZSBhYmxlIHRvIHBhcnNlIFwiIiArIHRlc3REYXRhICsgIlwiLiIp
OwogCiAgICAgdGVzdERhdGEgPSAiZnVuY3tcIm5hbWVcIjogXCJ2YWx1ZVwifSkiOwotICAgIElu
c3BlY3RvclRlc3QuYXNzZXJ0VHJ1ZSghV2ViSW5zcGVjdG9yLlJlc291cmNlSlNPTlZpZXcucGFy
c2VKU09OUCh0ZXN0RGF0YSksICJTaG91bGQgbm90IGJlIGFibGUgdG8gcGFyc2UgXCIiICsgdGVz
dERhdGEgKyAiXCIuIik7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRUcnVlKCFXZWJJbnNwZWN0
b3IuUmVxdWVzdEpTT05WaWV3LnBhcnNlSlNPTlAodGVzdERhdGEpLCAiU2hvdWxkIG5vdCBiZSBh
YmxlIHRvIHBhcnNlIFwiIiArIHRlc3REYXRhICsgIlwiLiIpOwogCiAgICAgdGVzdERhdGEgPSAi
ZnVuYyh7XCJuYW1lXCI6IFwidmFsdWVcIn0pIjsKLSAgICB2YXIgcGFyc2VkSlNPTlAgPSBXZWJJ
bnNwZWN0b3IuUmVzb3VyY2VKU09OVmlldy5wYXJzZUpTT05QKHRlc3REYXRhKTsKKyAgICB2YXIg
cGFyc2VkSlNPTlAgPSBXZWJJbnNwZWN0b3IuUmVxdWVzdEpTT05WaWV3LnBhcnNlSlNPTlAodGVz
dERhdGEpOwogICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHBhcnNlZEpTT05QLnByZWZp
eCwgImZ1bmMoIik7CiAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMocGFyc2VkSlNPTlAu
ZGF0YS5uYW1lLCAidmFsdWUiKTsKICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhwYXJz
ZWRKU09OUC5zdWZmaXgsICIpIik7CkBAIC00OCw3ICs0OCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQog
PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Ci08cD5UZXN0cyBS
ZXNvdXJjZUpTT05WaWV3IGFiaWxpdHkgdG8gcGFyc2UgSlNPTiBwYXNzZWQgaW4gWEhSLCBKU09O
UDwvcD4KKzxwPlRlc3RzIFJlcXVlc3RKU09OVmlldyBhYmlsaXR5IHRvIHBhcnNlIEpTT04gcGFz
c2VkIGluIFhIUiwgSlNPTlA8L3A+CiA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NjU1NTkiPkJ1ZyA2NTU1OTwvYT4KIDwvYm9keT4KIDwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29y
ay1yZXF1ZXN0LXJldmlzaW9uLWNvbnRlbnQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1yZXF1ZXN0LXJldmlzaW9uLWNvbnRlbnQuaHRtbApp
bmRleCAzY2MwODYzOTE2Nzk1Njc4ZmI2NTI4NjIwOTMyNTYyMzFiYmY1NzY5Li40YmJmZDAwMjcx
ZGRkYWI4ZjcyNzAzZjhlZTJhN2E4YWFmN2VlOTJhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstcmVxdWVzdC1yZXZpc2lvbi1jb250
ZW50Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9u
ZXR3b3JrLXJlcXVlc3QtcmV2aXNpb24tY29udGVudC5odG1sCkBAIC0xNywxNSArMTcsMTcgQEAg
ZnVuY3Rpb24gdGVzdCgpCiAgICAgZnVuY3Rpb24gc3RlcDIobXNnKQogICAgIHsKICAgICAgICAg
dmFyIHJlcXVlc3QgPSBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVxdWVzdHNbV2ViSW5z
cGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlcXVlc3RzLmxlbmd0aCAtIDFdOwotICAgICAgICByZXF1
ZXN0LmFkZFJldmlzaW9uKCIiKTsKLSAgICAgICAgcmVxdWVzdC5oaXN0b3J5WzBdLnJlcXVlc3RD
b250ZW50KHN0ZXAzKTsKKyAgICAgICAgdmFyIHJlc291cmNlID0gcmVxdWVzdC5yZXNvdXJjZSgp
OworICAgICAgICByZXNvdXJjZS5hZGRSZXZpc2lvbigiIik7CisgICAgICAgIHJlc291cmNlLmhp
c3RvcnlbMF0ucmVxdWVzdENvbnRlbnQoc3RlcDMpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHN0
ZXAzKCkKICAgICB7CiAgICAgICAgIHZhciByZXF1ZXN0ID0gV2ViSW5zcGVjdG9yLnBhbmVscy5u
ZXR3b3JrLnJlcXVlc3RzW1dlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXF1ZXN0cy5sZW5n
dGggLSAxXTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQocmVxdWVzdC51cmwpOwot
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChyZXF1ZXN0LmNvbnRlbnQpOworICAgICAg
ICB2YXIgcmVzb3VyY2UgPSByZXF1ZXN0LnJlc291cmNlKCk7CisgICAgICAgIEluc3BlY3RvclRl
c3QuYWRkUmVzdWx0KHJlc291cmNlLnVybCk7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVz
dWx0KHJlc291cmNlLmNvbnRlbnQpOwogICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVz
dCgpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvcmVxdWVzdC1wYXJhbWV0ZXJzLWRlY29kaW5nLmh0bWwgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3JlcXVlc3QtcGFyYW1ldGVycy1kZWNvZGlu
Zy5odG1sCmluZGV4IGQ5YjRmZjFmMTE3ZWM5NTBkMjYzMGQ2MTNlNzI0Y2I5Nzc0ZjZhYTAuLjM1
ZGZkZDdiMmZjNzcwYzNlZDU4NTgyZTA2ZWJmZWM4MDRmMzczM2QgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVxdWVzdC1wYXJhbWV0ZXJzLWRl
Y29kaW5nLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9yZXF1ZXN0LXBhcmFtZXRlcnMtZGVjb2RpbmcuaHRtbApAQCAtNiw3ICs2LDcgQEAKIGZ1bmN0
aW9uIHRlc3QoKQogewogICAgIHZhciB2YWx1ZSA9ICJUZXN0KyUyMSU0MCUyMyUyNCUyNSU1RSUy
NiolMjglMjlfJTJCK3BhcmFtZXRlcnMuIjsKLSAgICB2YXIgcGFyYW1ldGVyRWxlbWVudCA9IFdl
Ykluc3BlY3Rvci5SZXNvdXJjZUhlYWRlcnNWaWV3LnByb3RvdHlwZS5fZm9ybWF0UGFyYW1ldGVy
KHZhbHVlLCAiIiwgdHJ1ZSk7CisgICAgdmFyIHBhcmFtZXRlckVsZW1lbnQgPSBXZWJJbnNwZWN0
b3IuUmVxdWVzdEhlYWRlcnNWaWV3LnByb3RvdHlwZS5fZm9ybWF0UGFyYW1ldGVyKHZhbHVlLCAi
IiwgdHJ1ZSk7CiAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIk9yaWdpbmFsIHZhbHVlOiAi
ICsgdmFsdWUpOwogICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJEZWNvZGVkIHZhbHVlOiAi
ICsgcGFyYW1ldGVyRWxlbWVudC50ZXh0Q29udGVudCk7CiAgICAgSW5zcGVjdG9yVGVzdC5jb21w
bGV0ZVRlc3QoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9z
b3VyY2UtZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zb3VyY2Ut
ZnJhbWUuaHRtbAppbmRleCAyMDI5OWJlYzRlOTU4ZWRkZDM0N2RlZTIzNzMzODBlZDc3M2VkZGEz
Li43N2MxZjYwMGU3MWY1N2M2NzlkYmJlZGVlYzFjZWI4MDVhYzNlNjVjIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc291cmNlLWZyYW1lLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NvdXJjZS1mcmFtZS5odG1sCkBAIC03Miw3ICs3
Miw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgZnVuY3Rpb24gdmlzaXQocmVzb3Vy
Y2UpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgaWYgKHJlc291cmNlLnVybC5pbmRl
eE9mKCJkZWJ1Z2dlci10ZXN0LmpzIikgIT09IC0xKSB7Ci0gICAgICAgICAgICAgICAgICAgIFdl
Ykluc3BlY3Rvci5wYW5lbHMubmV0d29yay5fc2hvd1JlcXVlc3QocmVzb3VyY2UucmVxdWVzdCwg
MSk7CisgICAgICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5fc2hv
d1JlcXVlc3QocmVzb3VyY2UucmVxdWVzdCgpLCAxKTsKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQo=
</data>
<flag name="review"
          id="141803"
          type_id="1"
          status="+"
          setter="yurys"
    />
    <flag name="commit-queue"
          id="141808"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
      

    </bug>

</bugzilla>