<?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>83684</bug_id>
          
          <creation_ts>2012-04-11 02:43:06 -0700</creation_ts>
          <short_desc>Web Inspector: extracting NetworkRequest from Resource (step 1)</short_desc>
          <delta_ts>2012-04-11 08:30:01 -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>600168</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-04-11 02:43:06 -0700</bug_when>
    <thetext>See https://bugs.webkit.org/show_bug.cgi?id=61363 for the meta bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600171</commentid>
    <comment_count>1</comment_count>
      <attachid>136649</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-04-11 02:57:29 -0700</bug_when>
    <thetext>Created attachment 136649
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600217</commentid>
    <comment_count>2</comment_count>
      <attachid>136649</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-04-11 06:03:05 -0700</bug_when>
    <thetext>Comment on attachment 136649
Patch

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

&gt; Source/WebCore/inspector/front-end/externs.js:94
&gt; +  

Remove this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600288</commentid>
    <comment_count>3</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-04-11 08:30:01 -0700</bug_when>
    <thetext>Committed r113863: &lt;http://trac.webkit.org/changeset/113863&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136649</attachid>
            <date>2012-04-11 02:57:29 -0700</date>
            <delta_ts>2012-04-11 06:03:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83684-20120411135726.patch</filename>
            <type>text/plain</type>
            <size>286310</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzODM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDBlMWJkMDkzNGUzODA2
MzFhOTYzOTk3YmNkOTcwNGVhYjFkOWMzZi4uOWU0MjI1YWM1MDAwNjQ3ZjczZjI0M2JjZjQzZjcy
ZGUzMzI5ZmNmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2OSBAQAorMjAxMi0wNC0xMSAgUGF2
ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBleHRyYWN0aW5nIE5ldHdvcmtSZXF1ZXN0IGZyb20gUmVzb3VyY2UgKHN0ZXAgMSkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzNjg0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWV0YSBidWc6IGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTM2My4KKyAgICAgICAgSW4g
dGhpcyBzdGVwLCBOZXR3b3JrUmVxdWVzdCBpcyBpbnRyb2R1Y2VkLiBJdCB0ZW1wb3JhcmlseSBp
bmhlcml0cyBmcm9tCisgICAgICAgIHRoZSBSZXNvdXJjZSwgYnV0IGFsbCB0aGUgY2FsbCBzaXRl
cyBhcmUgbm93IHJlZmVycmluZyB0byBpdCBhcyB0byByZXF1ZXN0LgorCisgICAgICAgICogV2Vi
Q29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAg
ICAgICAqIGluc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5weToKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL0FwcGxpY2F0aW9uQ2FjaGVJdGVtc1ZpZXcuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUl0ZW1zVmlldy5wcm90b3R5cGUuX3VwZGF0ZUNhbGxi
YWNrKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0TGF1bmNoZXJWaWV3Lmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0TGF1bmNoZXJWaWV3KToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5BdWRpdExhdW5jaGVyVmlldy5wcm90b3R5cGUuX29uUmVxdWVzdFN0YXJ0ZWQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0TGF1bmNoZXJWaWV3LnByb3RvdHlwZS5fb25S
ZXF1ZXN0RmluaXNoZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRSdWxl
cy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLmdldERvbWFpblRvUmVzb3Vy
Y2VzTWFwKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLkd6aXBSdWxlLnByb3Rv
dHlwZS5kb1J1bik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5HemlwUnVsZS5w
cm90b3R5cGUuX2lzQ29tcHJlc3NlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRSdWxl
cy5HemlwUnVsZS5wcm90b3R5cGUuX3Nob3VsZENvbXByZXNzKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5BdWRpdFJ1bGVzLkNvbWJpbmVFeHRlcm5hbFJlc291cmNlc1J1bGUucHJvdG90eXBlLmRv
UnVuKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLk1pbmltaXplRG5zTG9va3Vw
c1J1bGUucHJvdG90eXBlLmRvUnVuKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVz
LlBhcmFsbGVsaXplRG93bmxvYWRSdWxlLnByb3RvdHlwZS5kb1J1bik6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQXVkaXRSdWxlcy5VbnVzZWRDc3NSdWxlLnByb3RvdHlwZS5kb1J1bi5ldmFsQ2Fs
bGJhY2suc2VsZWN0b3JzQ2FsbGJhY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0UnVs
ZXMuQ2FjaGVDb250cm9sUnVsZS5wcm90b3R5cGUuZG9SdW4pOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkF1ZGl0UnVsZXMuQ2FjaGVDb250cm9sUnVsZS5wcm90b3R5cGUuaGFuZGxlTm9uQ2FjaGVh
YmxlUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLkNhY2hlQ29u
dHJvbFJ1bGUucHJvdG90eXBlLl9jYWNoZWFibGVBbmROb25DYWNoZWFibGVSZXNvdXJjZXMpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuQ2FjaGVDb250cm9sUnVsZS5wcm90b3R5
cGUuZXhlY0NoZWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLkNhY2hlQ29u
dHJvbFJ1bGUucHJvdG90eXBlLmZyZXNobmVzc0xpZmV0aW1lR3JlYXRlclRoYW4pOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuQ2FjaGVDb250cm9sUnVsZS5wcm90b3R5cGUucmVz
cG9uc2VIZWFkZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuQ2FjaGVDb250
cm9sUnVsZS5wcm90b3R5cGUuaGFzUmVzcG9uc2VIZWFkZXIpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkF1ZGl0UnVsZXMuQ2FjaGVDb250cm9sUnVsZS5wcm90b3R5cGUuaXNDb21wcmVzc2libGUp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuQ2FjaGVDb250cm9sUnVsZS5wcm90
b3R5cGUuaXNQdWJsaWNseUNhY2hlYWJsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRS
dWxlcy5DYWNoZUNvbnRyb2xSdWxlLnByb3RvdHlwZS5yZXNwb25zZUhlYWRlck1hdGNoKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLkNhY2hlQ29udHJvbFJ1bGUucHJvdG90eXBl
Lmhhc0V4cGxpY2l0RXhwaXJhdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRSdWxl
cy5DYWNoZUNvbnRyb2xSdWxlLnByb3RvdHlwZS5faXNFeHBsaWNpdGx5Tm9uQ2FjaGVhYmxlKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLkNhY2hlQ29udHJvbFJ1bGUucHJvdG90
eXBlLmlzQ2FjaGVhYmxlUmVzb3VyY2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0UnVs
ZXMuQnJvd3NlckNhY2hlQ29udHJvbFJ1bGUucHJvdG90eXBlLmhhbmRsZU5vbkNhY2hlYWJsZVJl
c291cmNlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5Ccm93c2VyQ2FjaGVD
b250cm9sUnVsZS5wcm90b3R5cGUucnVuQ2hlY2tzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5B
dWRpdFJ1bGVzLkJyb3dzZXJDYWNoZUNvbnRyb2xSdWxlLnByb3RvdHlwZS5fbWlzc2luZ0V4cGly
YXRpb25DaGVjayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5Ccm93c2VyQ2Fj
aGVDb250cm9sUnVsZS5wcm90b3R5cGUuX3ZhcnlDaGVjayk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQXVkaXRSdWxlcy5Ccm93c2VyQ2FjaGVDb250cm9sUnVsZS5wcm90b3R5cGUuX29uZU1vbnRo
RXhwaXJhdGlvbkNoZWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLkJyb3dz
ZXJDYWNoZUNvbnRyb2xSdWxlLnByb3RvdHlwZS5fb25lWWVhckV4cGlyYXRpb25DaGVjayk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5Qcm94eUNhY2hlQ29udHJvbFJ1bGUucHJv
dG90eXBlLnJ1bkNoZWNrcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5Qcm94
eUNhY2hlQ29udHJvbFJ1bGUucHJvdG90eXBlLl9xdWVzdGlvbk1hcmtDaGVjayk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5Qcm94eUNhY2hlQ29udHJvbFJ1bGUucHJvdG90eXBl
Ll9wdWJsaWNDYWNoaW5nQ2hlY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMu
UHJveHlDYWNoZUNvbnRyb2xSdWxlLnByb3RvdHlwZS5fc2V0Q29va2llQ2FjaGVhYmxlQ2hlY2sp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuQ29va2llUnVsZUJhc2UucHJvdG90
eXBlLmRvUnVuLnJlc3VsdENhbGxiYWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdFJ1
bGVzLkNvb2tpZVJ1bGVCYXNlLnByb3RvdHlwZS5kb1J1bik6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQXVkaXRSdWxlcy5Db29raWVSdWxlQmFzZS5wcm90b3R5cGUubWFwUmVzb3VyY2VDb29raWVz
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLkNvb2tpZVJ1bGVCYXNlLnByb3Rv
dHlwZS5fY2FsbGJhY2tGb3JSZXNvdXJjZUNvb2tpZVBhaXJzKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5BdWRpdFJ1bGVzLkNvb2tpZVNpemVSdWxlLnByb3RvdHlwZS5wcm9jZXNzQ29va2llcyk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5TdGF0aWNDb29raWVsZXNzUnVsZS5w
cm90b3R5cGUucHJvY2Vzc0Nvb2tpZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0UnVs
ZXMuU3RhdGljQ29va2llbGVzc1J1bGUucHJvdG90eXBlLl9jb2xsZWN0b3JDYWxsYmFjayk6Cisg
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdHNQYW5lbC5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5BdWRpdHNQYW5lbC5wcm90b3R5cGUuX2V4ZWN1dGVBdWRpdCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuQXVkaXRDYXRlZ29yeS5wcm90b3R5cGUucnVuKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5BdWRpdFJ1bGUucHJvdG90eXBlLnJ1bik6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQXVkaXRSdWxlLnByb3RvdHlwZS5kb1J1bik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250
LWVuZC9Db25zb2xlTWVzc2FnZS5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0Nv
bnNvbGVNb2RlbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xlRGlzcGF0Y2hlci5w
cm90b3R5cGUubWVzc2FnZUFkZGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0Nv
bnRlbnRQcm92aWRlcnMuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VDb250ZW50
UHJvdmlkZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlQ29udGVudFByb3ZpZGVy
LnByb3RvdHlwZS5yZXF1ZXN0Q29udGVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2VDb250ZW50UHJvdmlkZXIucHJvdG90eXBlLnNlYXJjaEluQ29udGVudCk6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLmpzOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uU2VydmVyLmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUuX29uR2V0SEFSKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlLl9ub3RpZnlSZXF1ZXN0Rmlu
aXNoZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvSEFSRW50cnkuanM6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuSEFSRW50cnkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhBUkVu
dHJ5LnByb3RvdHlwZS5idWlsZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSEFSRW50cnkucHJv
dG90eXBlLl9idWlsZFJlcXVlc3QpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhBUkVudHJ5LnBy
b3RvdHlwZS5fYnVpbGRSZXNwb25zZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSEFSRW50cnku
cHJvdG90eXBlLl9idWlsZENvbnRlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhBUkVudHJ5
LnByb3RvdHlwZS5fYnVpbGRUaW1pbmdzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IQVJFbnRy
eS5wcm90b3R5cGUuX2J1aWxkUG9zdERhdGEpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhBUkVu
dHJ5LnByb3RvdHlwZS5fYnVpbGRDb29raWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhBUkVu
dHJ5LnByb3RvdHlwZS5faW50ZXJ2YWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhBUkVudHJ5
LnByb3RvdHlwZS5nZXQgcmVxdWVzdEJvZHlTaXplKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5I
QVJFbnRyeS5wcm90b3R5cGUuZ2V0IHJlc3BvbnNlQm9keVNpemUpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkhBUkVudHJ5LnByb3RvdHlwZS5nZXQgcmVzcG9uc2VDb21wcmVzc2lvbik6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuSEFSTG9nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IQVJMb2cu
cHJvdG90eXBlLmJ1aWxkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IQVJMb2cucHJvdG90eXBl
Ll9idWlsZFBhZ2VzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IQVJMb2cucHJvdG90eXBlLl9j
b252ZXJ0UmVzb3VyY2UpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya0l0
ZW1WaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtJdGVtVmlldyk6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrTG9nLmpzOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLk5ldHdvcmtMb2cpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtMb2cucHJv
dG90eXBlLmdldCByZXF1ZXN0cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya0xvZy5w
cm90b3R5cGUucGFnZUxvYWRGb3JSZXF1ZXN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3
b3JrTG9nLnByb3RvdHlwZS5fb25NYWluRnJhbWVOYXZpZ2F0ZWQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLk5ldHdvcmtMb2cucHJvdG90eXBlLl9vblJlcXVlc3RTdGFydGVkKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5OZXR3b3JrTG9nLnByb3RvdHlwZS5fb25Mb2FkKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5QYWdlTG9hZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3
b3JrTWFuYWdlci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5nZXQg
dGhpcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIuZ2V0IE5ldHdvcmtB
Z2VudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZS5pbmZsaWdodFJlcXVlc3RGb3JV
UkwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtEaXNwYXRjaGVyKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5OZXR3b3JrRGlzcGF0Y2hlci5wcm90b3R5cGUuX3VwZGF0ZU5ldHdvcmtS
ZXF1ZXN0V2l0aFJlcXVlc3QpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtEaXNwYXRj
aGVyLnByb3RvdHlwZS5fdXBkYXRlTmV0d29ya1JlcXVlc3RXaXRoUmVzcG9uc2UpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtEaXNwYXRjaGVyLnByb3RvdHlwZS5fbWltZVR5cGVJc0Nv
bnNpc3RlbnRXaXRoVHlwZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya0Rpc3BhdGNo
ZXIucHJvdG90eXBlLl91cGRhdGVOZXR3b3JrUmVxdWVzdFdpdGhDYWNoZWRSZXNvdXJjZSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya0Rpc3BhdGNoZXIucHJvdG90eXBlLnJlcXVlc3RX
aWxsQmVTZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrRGlzcGF0Y2hlci5wcm90
b3R5cGUucmVxdWVzdFNlcnZlZEZyb21DYWNoZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0
d29ya0Rpc3BhdGNoZXIucHJvdG90eXBlLnJlc3BvbnNlUmVjZWl2ZWQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLk5ldHdvcmtEaXNwYXRjaGVyLnByb3RvdHlwZS5kYXRhUmVjZWl2ZWQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtEaXNwYXRjaGVyLnByb3RvdHlwZS5sb2FkaW5nRmlu
aXNoZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtEaXNwYXRjaGVyLnByb3RvdHlw
ZS5sb2FkaW5nRmFpbGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrRGlzcGF0Y2hl
ci5wcm90b3R5cGUucmVxdWVzdFNlcnZlZEZyb21NZW1vcnlDYWNoZSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuTmV0d29ya0Rpc3BhdGNoZXIucHJvdG90eXBlLndlYlNvY2tldENyZWF0ZWQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtEaXNwYXRjaGVyLnByb3RvdHlwZS53ZWJTb2Nr
ZXRXaWxsU2VuZEhhbmRzaGFrZVJlcXVlc3QpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdv
cmtEaXNwYXRjaGVyLnByb3RvdHlwZS53ZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZVJlY2VpdmVk
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrRGlzcGF0Y2hlci5wcm90b3R5cGUud2Vi
U29ja2V0Q2xvc2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrRGlzcGF0Y2hlci5w
cm90b3R5cGUuX2FwcGVuZFJlZGlyZWN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3Jr
RGlzcGF0Y2hlci5wcm90b3R5cGUuX3N0YXJ0TmV0d29ya1JlcXVlc3QpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLk5ldHdvcmtEaXNwYXRjaGVyLnByb3RvdHlwZS5fdXBkYXRlTmV0d29ya1JlcXVl
c3QpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtEaXNwYXRjaGVyLnByb3RvdHlwZS5f
ZmluaXNoTmV0d29ya1JlcXVlc3QpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtEaXNw
YXRjaGVyLnByb3RvdHlwZS5fZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5OZXR3b3JrRGlzcGF0Y2hlci5wcm90b3R5cGUuX2NyZWF0ZU5ldHdvcmtSZXF1
ZXN0KToKKyAgICAgICAgKGdldCBXZWJJbnNwZWN0b3IpOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvTmV0d29ya1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtM
b2dWaWV3LnByb3RvdHlwZS5faW5pdGlhbGl6ZVZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
Lk5ldHdvcmtMb2dWaWV3LnByb3RvdHlwZS5nZXQgc3RhdHVzQmFySXRlbXMpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dWaWV3LnByb3RvdHlwZS5fY3JlYXRlU29ydGluZ0Z1bmN0
aW9ucyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya0xvZ1ZpZXcucHJvdG90eXBlLl91
cGRhdGVTdW1tYXJ5QmFyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrTG9nVmlldy5w
cm90b3R5cGUuX3VwZGF0ZURpdmlkZXJzSWZOZWVkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
Lk5ldHdvcmtMb2dWaWV3LnByb3RvdHlwZS5faW52YWxpZGF0ZUFsbEl0ZW1zKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5OZXR3b3JrTG9nVmlldy5wcm90b3R5cGUuX3JlcXVlc3RHcmlkTm9kZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya0xvZ1ZpZXcucHJvdG90eXBlLl9jcmVhdGVS
ZXF1ZXN0R3JpZE5vZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dWaWV3LnBy
b3RvdHlwZS5fb25Mb2FkRXZlbnRGaXJlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29y
a0xvZ1ZpZXcucHJvdG90eXBlLl9kb21Db250ZW50TG9hZGVkRXZlbnRGaXJlZCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuTmV0d29ya0xvZ1ZpZXcucHJvdG90eXBlLnJlZnJlc2gpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dWaWV3LnByb3RvdHlwZS5fcmVzZXQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dWaWV3LnByb3RvdHlwZS5nZXQgcmVxdWVzdHMpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dWaWV3LnByb3RvdHlwZS5yZXF1ZXN0QnlJ
ZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya0xvZ1ZpZXcucHJvdG90eXBlLl9vblJl
cXVlc3RTdGFydGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrTG9nVmlldy5wcm90
b3R5cGUuX2FwcGVuZFJlcXVlc3QpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dW
aWV3LnByb3RvdHlwZS5fb25SZXF1ZXN0VXBkYXRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
TmV0d29ya0xvZ1ZpZXcucHJvdG90eXBlLl9yZWZyZXNoUmVxdWVzdCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuTmV0d29ya0xvZ1ZpZXcucHJvdG90eXBlLl9tYWluRnJhbWVOYXZpZ2F0ZWQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dWaWV3LnByb3RvdHlwZS5nZXQgX3NldExh
cmdlclJlcXVlc3RzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrTG9nVmlldy5wcm90
b3R5cGUuX2dldFBvcG92ZXJBbmNob3IpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtM
b2dWaWV3LnByb3RvdHlwZS5fc2hvd1BvcG92ZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5l
dHdvcmtMb2dWaWV3LnByb3RvdHlwZS5fY29udGV4dE1lbnUpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLk5ldHdvcmtMb2dWaWV3LnByb3RvdHlwZS5fY29weUFsbCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuTmV0d29ya0xvZ1ZpZXcucHJvdG90eXBlLl9jb3B5UmVxdWVzdCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuTmV0d29ya0xvZ1ZpZXcucHJvdG90eXBlLl9jb3B5TG9jYXRpb24pOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dWaWV3LnByb3RvdHlwZS5fY29weVJlcXVlc3RI
ZWFkZXJzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrTG9nVmlldy5wcm90b3R5cGUu
X2NvcHlSZXNwb25zZUhlYWRlcnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dW
aWV3LnByb3RvdHlwZS5fZXhwb3J0QWxsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3Jr
TG9nVmlldy5wcm90b3R5cGUuX2V4cG9ydFJlcXVlc3QpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
Lk5ldHdvcmtMb2dWaWV3LnByb3RvdHlwZS5fbWF0Y2hSZXF1ZXN0KToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5OZXR3b3JrTG9nVmlldy5wcm90b3R5cGUuX2NsZWFyU2VhcmNoTWF0Y2hlZExpc3Qp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dWaWV3LnByb3RvdHlwZS5fdXBkYXRl
U2VhcmNoTWF0Y2hlZExpc3RBZnRlclJlcXVlc3RJZENoYW5nZWQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLk5ldHdvcmtMb2dWaWV3LnByb3RvdHlwZS5fdXBkYXRlSGlnaGxpZ2h0SWZNYXRjaGVk
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrTG9nVmlldy5wcm90b3R5cGUuX2hpZ2hs
aWdodE50aE1hdGNoZWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrTG9n
Vmlldy5wcm90b3R5cGUucGVyZm9ybVNlYXJjaCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0
d29ya0xvZ1ZpZXcucHJvdG90eXBlLmp1bXBUb1ByZXZpb3VzU2VhcmNoUmVzdWx0KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrTG9nVmlldy5wcm90b3R5cGUuanVtcFRvTmV4dFNlYXJj
aFJlc3VsdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya0xvZ1ZpZXcucHJvdG90eXBl
LnJldmVhbEFuZEhpZ2hsaWdodFJlcXVlc3QpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdv
cmtQYW5lbC5wcm90b3R5cGUuaGFuZGxlU2hvcnRjdXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
Lk5ldHdvcmtQYW5lbC5wcm90b3R5cGUuZ2V0IHJlcXVlc3RzKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5OZXR3b3JrUGFuZWwucHJvdG90eXBlLnJlcXVlc3RCeUlkKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5OZXR3b3JrUGFuZWwucHJvdG90eXBlLl9yZXF1ZXN0QnlBbmNob3IpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtQYW5lbC5wcm90b3R5cGUuY2FuU2hvd0FuY2hvckxvY2F0
aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrUGFuZWwucHJvdG90eXBlLnNob3dB
bmNob3JMb2NhdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya1BhbmVsLnByb3Rv
dHlwZS5yZXZlYWxBbmRIaWdobGlnaHRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5O
ZXR3b3JrUGFuZWwucHJvdG90eXBlLl9vblZpZXdDbGVhcmVkKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5OZXR3b3JrUGFuZWwucHJvdG90eXBlLl9vblJlcXVlc3RTZWxlY3RlZCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuTmV0d29ya1BhbmVsLnByb3RvdHlwZS5fc2hvd1JlcXVlc3QpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtQYW5lbC5wcm90b3R5cGUuX2Nsb3NlVmlzaWJsZVJl
cXVlc3QpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtQYW5lbC5wcm90b3R5cGUuX3Rv
Z2dsZUdyaWRNb2RlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrUGFuZWwucHJvdG90
eXBlLl90b2dnbGVWaWV3aW5nUmVxdWVzdE1vZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5l
dHdvcmtUaW1lQ2FsY3VsYXRvci5wcm90b3R5cGUuY29tcHV0ZUJhckdyYXBoUGVyY2VudGFnZXMp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtUaW1lQ2FsY3VsYXRvci5wcm90b3R5cGUu
Y29tcHV0ZUJhckdyYXBoTGFiZWxzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrVGlt
ZUNhbGN1bGF0b3IucHJvdG90eXBlLnVwZGF0ZUJvdW5kYXJpZXMpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLk5ldHdvcmtUaW1lQ2FsY3VsYXRvci5wcm90b3R5cGUuX2xvd2VyQm91bmQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtUaW1lQ2FsY3VsYXRvci5wcm90b3R5cGUuX3VwcGVy
Qm91bmQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtUcmFuc2ZlclRpbWVDYWxjdWxh
dG9yLnByb3RvdHlwZS5fbG93ZXJCb3VuZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29y
a1RyYW5zZmVyVGltZUNhbGN1bGF0b3IucHJvdG90eXBlLl91cHBlckJvdW5kKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5OZXR3b3JrVHJhbnNmZXJEdXJhdGlvbkNhbGN1bGF0b3IucHJvdG90eXBl
Ll91cHBlckJvdW5kKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrRGF0YUdyaWROb2Rl
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrRGF0YUdyaWROb2RlLnByb3RvdHlwZS5p
c0ZpbHRlcmVkT3V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrRGF0YUdyaWROb2Rl
LnByb3RvdHlwZS5zZWxlY3QpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtEYXRhR3Jp
ZE5vZGUucHJvdG90eXBlLl9vcGVuSW5OZXdUYWIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5l
dHdvcmtEYXRhR3JpZE5vZGUucHJvdG90eXBlLmdldCBzZWxlY3RhYmxlKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5OZXR3b3JrRGF0YUdyaWROb2RlLnByb3RvdHlwZS5fY3JlYXRlVGltZWxpbmVD
ZWxsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrRGF0YUdyaWROb2RlLnByb3RvdHlw
ZS5yZWZyZXNoUmVxdWVzdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya0RhdGFHcmlk
Tm9kZS5wcm90b3R5cGUuX3JlZnJlc2hOYW1lQ2VsbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
TmV0d29ya0RhdGFHcmlkTm9kZS5wcm90b3R5cGUuX2ZpbGVOYW1lKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5OZXR3b3JrRGF0YUdyaWROb2RlLnByb3RvdHlwZS5fcmVmcmVzaFN0YXR1c0NlbGwp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtEYXRhR3JpZE5vZGUucHJvdG90eXBlLl9y
ZWZyZXNoVHlwZUNlbGwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtEYXRhR3JpZE5v
ZGUucHJvdG90eXBlLl9yZWZyZXNoSW5pdGlhdG9yQ2VsbCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuTmV0d29ya0RhdGFHcmlkTm9kZS5wcm90b3R5cGUuX3JlZnJlc2hTaXplQ2VsbCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya0RhdGFHcmlkTm9kZS5wcm90b3R5cGUuX3JlZnJlc2hU
aW1lQ2VsbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya0RhdGFHcmlkTm9kZS5wcm90
b3R5cGUucmVmcmVzaEdyYXBoKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrRGF0YUdy
aWROb2RlLk5hbWVDb21wYXJhdG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrRGF0
YUdyaWROb2RlLlNpemVDb21wYXJhdG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3Jr
RGF0YUdyaWROb2RlLkluaXRpYXRvckNvbXBhcmF0b3IpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
Lk5ldHdvcmtEYXRhR3JpZE5vZGUuUmVxdWVzdFByb3BlcnR5Q29tcGFyYXRvcik6CisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUmVxdWVzdC5qczogQWRkZWQuCisgICAgICAg
IChXZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVlc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvUmF3U291cmNlQ29kZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SYXdTb3VyY2VD
b2RlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLnByb3RvdHlwZS5fcmVx
dWVzdEZpbmlzaGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLnByb3Rv
dHlwZS5fY3JlYXRlQ29udGVudFByb3ZpZGVyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL1Jlc291cmNlLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZS5kaXNwbGF5TmFtZSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlLmdldCByZXF1ZXN0KToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZS5wcm90b3R5cGUuc2V0IGZpbmlzaGVkKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZS5wcm90b3R5cGUuc2V0IHRpbWluZyk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuUmVzb3VyY2UucHJvdG90eXBlLnNldCByZXF1ZXN0SGVhZGVycyk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlLnNldCByZXF1ZXN0SGVhZGVyc1RleHQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZS5zZXQgcmVzcG9uc2VIZWFkZXJz
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUuc2V0IHJlc3BvbnNl
SGVhZGVyc1RleHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZS5y
ZXF1ZXN0Q29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZUNv
b2tpZXNWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlQ29va2llc1ZpZXcp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlQ29va2llc1ZpZXcucHJvdG90eXBlLmdl
dCBfZ290Q29va2llcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VDb29raWVzVmll
dy5wcm90b3R5cGUuX2J1aWxkQ29va2llc1RhYmxlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL1Jlc291cmNlSGVhZGVyc1ZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVz
b3VyY2VIZWFkZXJzVmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VIZWFkZXJz
Vmlldy5wcm90b3R5cGUuX3JlZnJlc2hVUkwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291
cmNlSGVhZGVyc1ZpZXcucHJvdG90eXBlLl9yZWZyZXNoUXVlcnlTdHJpbmcpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlJlc291cmNlSGVhZGVyc1ZpZXcucHJvdG90eXBlLl9yZWZyZXNoVXJsRnJh
Z21lbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlSGVhZGVyc1ZpZXcucHJvdG90
eXBlLl9yZWZyZXNoRm9ybURhdGEpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlSGVh
ZGVyc1ZpZXcucHJvdG90eXBlLl9yZWZyZXNoUmVxdWVzdEhlYWRlcnMpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlJlc291cmNlSGVhZGVyc1ZpZXcucHJvdG90eXBlLl9yZWZyZXNoUmVzcG9uc2VI
ZWFkZXJzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZUhlYWRlcnNWaWV3LnByb3Rv
dHlwZS5fcmVmcmVzaEhUVFBJbmZvcm1hdGlvbik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250
LWVuZC9SZXNvdXJjZVNjcmlwdE1hcHBpbmcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVz
b3VyY2VTY3JpcHRNYXBwaW5nLnByb3RvdHlwZS5hZGRTY3JpcHQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvUmVzb3VyY2VUaW1pbmdWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlJlc291cmNlVGltaW5nVmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VU
aW1pbmdWaWV3LnByb3RvdHlwZS53YXNTaG93bik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVz
b3VyY2VUaW1pbmdWaWV3LnByb3RvdHlwZS5fcmVmcmVzaCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuUmVzb3VyY2VUaW1pbmdWaWV3LmNyZWF0ZVRpbWluZ1RhYmxlKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVHJlZU1vZGVsLmpzOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlJlc291cmNlVHJlZU1vZGVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRy
ZWVNb2RlbC5wcm90b3R5cGUuX2Zyb250ZW5kUmV1c2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5SZXNvdXJjZVRyZWVNb2RlbC5wcm90b3R5cGUuX29uUmVxdWVzdFVwZGF0ZWQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLnByb3RvdHlwZS5fb25SZXF1ZXN0VXBk
YXRlRHJvcHBlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwucHJv
dG90eXBlLl9jcmVhdGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VU
cmVlRnJhbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUZyYW1lLnByb3Rv
dHlwZS5fYWRkUmVxdWVzdCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJj
ZVV0aWxzLmpzOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwu
anM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRnJhbWVSZXNvdXJjZVRyZWVFbGVtZW50LnByb3Rv
dHlwZS5fYXBwZW5kT3BlbkluTmV0d29ya1BhbmVsQWN0aW9uKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL1dlYktpdC5xcmM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9l
eHRlcm5zLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLm5ldHdvcmtSZXF1ZXN0QnlJZCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5u
ZXR3b3JrUmVxdWVzdEJ5SWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLm9wZW5SZXF1ZXN0SW5O
ZXR3b3JrUGFuZWwpOgorCiAyMDEyLTA0LTExICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBGaXggY29tcGlsZXIgd2FybmluZ3MgZm9yIGdlbmVyYXRlZCBDYWxl
bmRhclBpY2tlci5jcHAgd2l0aCBWQysrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZjE5ZDBjZjVkODQw
YjdiMTQ3MGJlMzE3Yjc4MmYzYmE4ZDgzMmRlNi4uNDNlYzU3ODE4YTJjYzg3OWNhMzc4MDE4OWUz
MTFmYzhmOTUwMzY2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNjMyNiw2ICs2MzI2LDcgQEAKICAg
ICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtNYW5hZ2VyLmpzJywKICAgICAg
ICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtMb2cuanMnLAogICAgICAgICAgICAg
J2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpzJywKKyAgICAgICAgICAgICdpbnNw
ZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtSZXF1ZXN0LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0
b3IvZnJvbnQtZW5kL09iamVjdC5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVu
ZC9PYmplY3RQb3BvdmVySGVscGVyLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQt
ZW5kL09iamVjdFByb3BlcnRpZXNTZWN0aW9uLmpzJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggMGVkZDE2NWJmOWRhYmI1YTRhYTYzZWI1MWQw
OTFhY2YzYWM0ZmFkNC4uMWRkMTdkZWQzNmJhNzk5ODE2YzlkMDIwNzY3NmRiMDY4ZGViNjI0YiAx
MDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTcz
OTkzLDYgKzczOTkzLDEwIEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXE5ldHdvcmtSZXF1ZXN0LmpzIgor
CQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5z
cGVjdG9yXGZyb250LWVuZFxPYmplY3QuanMiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQucHkgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQucHkKaW5kZXggNjg0YzdkNWZi
NzUzNmVlZjNjODI4N2UwMzcxYzc1MTViMzI4NmUwMS4uZjMwNjk1ZGVjODNlNzdjMTBiMWZjZTE2
YTUzYmI1ZTY1ZjQ4ZDFhYyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Nv
bXBpbGUtZnJvbnQtZW5kLnB5CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxl
LWZyb250LWVuZC5weQpAQCAtOTIsNiArOTIsNyBAQCBtb2R1bGVzID0gWwogICAgICAgICAgICAg
IlJlc291cmNlVHlwZS5qcyIsCiAgICAgICAgICAgICAiUmVzb3VyY2VVdGlscy5qcyIsCiAgICAg
ICAgICAgICAiTmV0d29ya01hbmFnZXIuanMiLAorICAgICAgICAgICAgIk5ldHdvcmtSZXF1ZXN0
LmpzIiwKICAgICAgICAgICAgICJVSVNvdXJjZUNvZGUuanMiLAogICAgICAgICAgICAgIlVzZXJB
Z2VudFN1cHBvcnQuanMiLAogICAgICAgICBdCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0FwcGxpY2F0aW9uQ2FjaGVJdGVtc1ZpZXcuanMgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0FwcGxpY2F0aW9uQ2FjaGVJdGVtc1ZpZXcuanMK
aW5kZXggZTg5ZGUxYmY3MmJlMjUxZWEzMDNlOTFlMDc3YjAyYWUwNzlhMDU5ZS4uMjIzMTE1MTI5
MDM2YjcxYzY1ZGI3MmIzYzkyYTNmMDllNTQ4MjNhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BcHBsaWNhdGlvbkNhY2hlSXRlbXNWaWV3LmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXBwbGljYXRpb25DYWNoZUl0ZW1z
Vmlldy5qcwpAQCAtMTgwLDggKzE4MCw2IEBAIFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hl
SXRlbXNWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fc2l6ZSA9IGFwcGxpY2F0aW9u
Q2FjaGUuc2l6ZTsKICAgICAgICAgdGhpcy5fcmVzb3VyY2VzID0gYXBwbGljYXRpb25DYWNoZS5y
ZXNvdXJjZXM7CiAKLSAgICAgICAgdmFyIGxhc3RQYXRoQ29tcG9uZW50ID0gYXBwbGljYXRpb25D
YWNoZS5sYXN0UGF0aENvbXBvbmVudDsKLQogICAgICAgICBpZiAoIXRoaXMuX2RhdGFHcmlkKQog
ICAgICAgICAgICAgdGhpcy5fY3JlYXRlRGF0YUdyaWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdExhdW5jaGVyVmlldy5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRMYXVuY2hlclZpZXcuanMKaW5kZXgg
YWFhZjQwYTRjY2RmMDJmNGE5NmMzZGE0YTNhMTk2MDYwYjBjZDViMC4uNGYzZGQ0ODdmZGY5Mjhh
ZGFhMDIxMmM3MmQ5OGVkMTM1NjM5N2Q5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9BdWRpdExhdW5jaGVyVmlldy5qcworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0TGF1bmNoZXJWaWV3LmpzCkBAIC01OCw4ICs1OCw4
IEBAIFdlYkluc3BlY3Rvci5BdWRpdExhdW5jaGVyVmlldyA9IGZ1bmN0aW9uKHJ1bm5lckNhbGxi
YWNrLCBzdG9wQ2FsbGJhY2spCiAgICAgdGhpcy5faGVhZGVyRWxlbWVudC50ZXh0Q29udGVudCA9
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiTm8gYXVkaXRzIHRvIHJ1biIpOwogICAgIHRoaXMuX2Nv
bnRlbnRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2hlYWRlckVsZW1lbnQpOwogCi0gICAgV2Vi
SW5zcGVjdG9yLm5ldHdvcmtNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLk5l
dHdvcmtNYW5hZ2VyLkV2ZW50VHlwZXMuUmVzb3VyY2VTdGFydGVkLCB0aGlzLl9vblJlc291cmNl
U3RhcnRlZCwgdGhpcyk7Ci0gICAgV2ViSW5zcGVjdG9yLm5ldHdvcmtNYW5hZ2VyLmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLkV2ZW50VHlwZXMuUmVzb3VyY2VG
aW5pc2hlZCwgdGhpcy5fb25SZXNvdXJjZUZpbmlzaGVkLCB0aGlzKTsKKyAgICBXZWJJbnNwZWN0
b3IubmV0d29ya01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuTmV0d29ya01h
bmFnZXIuRXZlbnRUeXBlcy5SZXF1ZXN0U3RhcnRlZCwgdGhpcy5fb25SZXF1ZXN0U3RhcnRlZCwg
dGhpcyk7CisgICAgV2ViSW5zcGVjdG9yLm5ldHdvcmtNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLkV2ZW50VHlwZXMuUmVxdWVzdEZpbmlzaGVkLCB0
aGlzLl9vblJlcXVlc3RGaW5pc2hlZCwgdGhpcyk7CiB9CiAKIFdlYkluc3BlY3Rvci5BdWRpdExh
dW5jaGVyVmlldy5wcm90b3R5cGUgPSB7CkBAIC02OSwyMSArNjksMjEgQEAgV2ViSW5zcGVjdG9y
LkF1ZGl0TGF1bmNoZXJWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fdG90YWxSZXNv
dXJjZXMgPSAwOwogICAgIH0sCiAKLSAgICBfb25SZXNvdXJjZVN0YXJ0ZWQ6IGZ1bmN0aW9uKGV2
ZW50KQorICAgIF9vblJlcXVlc3RTdGFydGVkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAg
ICAgIHZhciByZXNvdXJjZSA9IGV2ZW50LmRhdGE7CisgICAgICAgIHZhciByZXF1ZXN0ID0gLyoq
IEB0eXBlIHtXZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVlc3R9ICovIGV2ZW50LmRhdGE7CiAgICAg
ICAgIC8vIElnbm9yZSBsb25nLWxpdmluZyBXZWJTb2NrZXRzIGZvciB0aGUgc2FrZSBvZiBwcm9n
cmVzcyBpbmRpY2F0b3IsIGFzIHdlIHdvbid0IGJlIHdhaXRpbmcgdGhlbSBhbnl3YXkuCi0gICAg
ICAgIGlmIChyZXNvdXJjZS50eXBlID09PSBXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5XZWJT
b2NrZXQpCisgICAgICAgIGlmIChyZXF1ZXN0LnR5cGUgPT09IFdlYkluc3BlY3Rvci5yZXNvdXJj
ZVR5cGVzLldlYlNvY2tldCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgKyt0aGlzLl90
b3RhbFJlc291cmNlczsKICAgICAgICAgdGhpcy5fdXBkYXRlUmVzb3VyY2VQcm9ncmVzcygpOwog
ICAgIH0sCiAKLSAgICBfb25SZXNvdXJjZUZpbmlzaGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBf
b25SZXF1ZXN0RmluaXNoZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIHJl
c291cmNlID0gZXZlbnQuZGF0YTsKKyAgICAgICAgdmFyIHJlcXVlc3QgPSAvKiogQHR5cGUge1dl
Ykluc3BlY3Rvci5OZXR3b3JrUmVxdWVzdH0gKi8gZXZlbnQuZGF0YTsKICAgICAgICAgLy8gU2Vl
IHJlc29yY2VTdGFydGVkIGZvciBkZXRhaWxzLgotICAgICAgICBpZiAocmVzb3VyY2UudHlwZSA9
PT0gV2ViSW5zcGVjdG9yLnJlc291cmNlVHlwZXMuV2ViU29ja2V0KQorICAgICAgICBpZiAocmVx
dWVzdC50eXBlID09PSBXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5XZWJTb2NrZXQpCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICsrdGhpcy5fbG9hZGVkUmVzb3VyY2VzOwogICAgICAg
ICB0aGlzLl91cGRhdGVSZXNvdXJjZVByb2dyZXNzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0UnVsZXMuanMgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0UnVsZXMuanMKaW5kZXggYTJkZGM0MzY2NjkxNmFmYmNm
OTI3N2Y2NWJmM2M2MDgzYTNlOGU3MS4uODEzZGJjNjE5ZjA2ZjRjMjcyM2E3ZjFhN2FkZWU5MDZh
ZTZkYzIxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9B
dWRpdFJ1bGVzLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVk
aXRSdWxlcy5qcwpAQCAtMzksMTcgKzM5LDE3IEBAIFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLkNh
Y2hlYWJsZVJlc3BvbnNlQ29kZXMgPQogICAgIDMwMTogdHJ1ZSwKICAgICA0MTA6IHRydWUsCiAK
LSAgICAzMDQ6IHRydWUgLy8gVW5kZXJseWluZyByZXNvdXJjZSBpcyBjYWNoZWFibGUKKyAgICAz
MDQ6IHRydWUgLy8gVW5kZXJseWluZyByZXF1ZXN0IGlzIGNhY2hlYWJsZQogfQogCi1XZWJJbnNw
ZWN0b3IuQXVkaXRSdWxlcy5nZXREb21haW5Ub1Jlc291cmNlc01hcCA9IGZ1bmN0aW9uKHJlc291
cmNlcywgdHlwZXMsIG5lZWRGdWxsUmVzb3VyY2VzKQorV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMu
Z2V0RG9tYWluVG9SZXNvdXJjZXNNYXAgPSBmdW5jdGlvbihyZXF1ZXN0cywgdHlwZXMsIG5lZWRG
dWxsUmVzb3VyY2VzKQogewogICAgIHZhciBkb21haW5Ub1Jlc291cmNlc01hcCA9IHt9OwotICAg
IGZvciAodmFyIGkgPSAwLCBzaXplID0gcmVzb3VyY2VzLmxlbmd0aDsgaSA8IHNpemU7ICsraSkg
ewotICAgICAgICB2YXIgcmVzb3VyY2UgPSByZXNvdXJjZXNbaV07Ci0gICAgICAgIGlmICh0eXBl
cyAmJiB0eXBlcy5pbmRleE9mKHJlc291cmNlLnR5cGUpID09PSAtMSkKKyAgICBmb3IgKHZhciBp
ID0gMCwgc2l6ZSA9IHJlcXVlc3RzLmxlbmd0aDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICB2
YXIgcmVxdWVzdCA9IHJlcXVlc3RzW2ldOworICAgICAgICBpZiAodHlwZXMgJiYgdHlwZXMuaW5k
ZXhPZihyZXF1ZXN0LnR5cGUpID09PSAtMSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICB2YXIgcGFyc2VkVVJMID0gcmVzb3VyY2UudXJsLmFzUGFyc2VkVVJMKCk7CisgICAgICAgIHZh
ciBwYXJzZWRVUkwgPSByZXF1ZXN0LnVybC5hc1BhcnNlZFVSTCgpOwogICAgICAgICBpZiAoIXBh
cnNlZFVSTCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB2YXIgZG9tYWluID0gcGFy
c2VkVVJMLmhvc3Q7CkBAIC01OCw3ICs1OCw3IEBAIFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLmdl
dERvbWFpblRvUmVzb3VyY2VzTWFwID0gZnVuY3Rpb24ocmVzb3VyY2VzLCB0eXBlcywgbmVlCiAg
ICAgICAgICAgZG9tYWluUmVzb3VyY2VzID0gW107CiAgICAgICAgICAgZG9tYWluVG9SZXNvdXJj
ZXNNYXBbZG9tYWluXSA9IGRvbWFpblJlc291cmNlczsKICAgICAgICAgfQotICAgICAgICBkb21h
aW5SZXNvdXJjZXMucHVzaChuZWVkRnVsbFJlc291cmNlcyA/IHJlc291cmNlIDogcmVzb3VyY2Uu
dXJsKTsKKyAgICAgICAgZG9tYWluUmVzb3VyY2VzLnB1c2gobmVlZEZ1bGxSZXNvdXJjZXMgPyBy
ZXF1ZXN0IDogcmVxdWVzdC51cmwpOwogICAgIH0KICAgICByZXR1cm4gZG9tYWluVG9SZXNvdXJj
ZXNNYXA7CiB9CkBAIC03MywyNiArNzMsMjkgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuR3pp
cFJ1bGUgPSBmdW5jdGlvbigpCiB9CiAKIFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLkd6aXBSdWxl
LnByb3RvdHlwZSA9IHsKLSAgICBkb1J1bjogZnVuY3Rpb24ocmVzb3VyY2VzLCByZXN1bHQsIGNh
bGxiYWNrLCBwcm9ncmVzc01vbml0b3IpCisgICAgLyoqCisgICAgICogQHBhcmFtIHtBcnJheS48
V2ViSW5zcGVjdG9yLk5ldHdvcmtSZXF1ZXN0Pn0gcmVxdWVzdHMKKyAgICAgKi8KKyAgICBkb1J1
bjogZnVuY3Rpb24ocmVxdWVzdHMsIHJlc3VsdCwgY2FsbGJhY2ssIHByb2dyZXNzTW9uaXRvcikK
ICAgICB7CiAgICAgICAgIHZhciB0b3RhbFNhdmluZ3MgPSAwOwogICAgICAgICB2YXIgY29tcHJl
c3NlZFNpemUgPSAwOwogICAgICAgICB2YXIgY2FuZGlkYXRlU2l6ZSA9IDA7CiAgICAgICAgIHZh
ciBzdW1tYXJ5ID0gcmVzdWx0LmFkZENoaWxkKCIiLCB0cnVlKTsKLSAgICAgICAgZm9yICh2YXIg
aSA9IDAsIGxlbmd0aCA9IHJlc291cmNlcy5sZW5ndGg7IGkgPCBsZW5ndGg7ICsraSkgewotICAg
ICAgICAgICAgdmFyIHJlc291cmNlID0gcmVzb3VyY2VzW2ldOwotICAgICAgICAgICAgaWYgKHJl
c291cmNlLnN0YXR1c0NvZGUgPT09IDMwNCkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsgLy8g
RG8gbm90IHRlc3QgMzA0IE5vdCBNb2RpZmllZCByZXNvdXJjZXMgYXMgdGhlaXIgY29udGVudHMg
YXJlIGFsd2F5cyBlbXB0eS4KLSAgICAgICAgICAgIGlmICh0aGlzLl9zaG91bGRDb21wcmVzcyhy
ZXNvdXJjZSkpIHsKLSAgICAgICAgICAgICAgICB2YXIgc2l6ZSA9IHJlc291cmNlLnJlc291cmNl
U2l6ZTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IHJlcXVlc3RzLmxlbmd0aDsg
aSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB2YXIgcmVxdWVzdCA9IHJlcXVlc3RzW2ld
OworICAgICAgICAgICAgaWYgKHJlcXVlc3Quc3RhdHVzQ29kZSA9PT0gMzA0KQorICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOyAvLyBEbyBub3QgdGVzdCAzMDQgTm90IE1vZGlmaWVkIHJlcXVlc3Rz
IGFzIHRoZWlyIGNvbnRlbnRzIGFyZSBhbHdheXMgZW1wdHkuCisgICAgICAgICAgICBpZiAodGhp
cy5fc2hvdWxkQ29tcHJlc3MocmVxdWVzdCkpIHsKKyAgICAgICAgICAgICAgICB2YXIgc2l6ZSA9
IHJlcXVlc3QucmVzb3VyY2VTaXplOwogICAgICAgICAgICAgICAgIGNhbmRpZGF0ZVNpemUgKz0g
c2l6ZTsKLSAgICAgICAgICAgICAgICBpZiAodGhpcy5faXNDb21wcmVzc2VkKHJlc291cmNlKSkg
eworICAgICAgICAgICAgICAgIGlmICh0aGlzLl9pc0NvbXByZXNzZWQocmVxdWVzdCkpIHsKICAg
ICAgICAgICAgICAgICAgICAgY29tcHJlc3NlZFNpemUgKz0gc2l6ZTsKICAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHZhciBz
YXZpbmdzID0gMiAqIHNpemUgLyAzOwogICAgICAgICAgICAgICAgIHRvdGFsU2F2aW5ncyArPSBz
YXZpbmdzOwotICAgICAgICAgICAgICAgIHN1bW1hcnkuYWRkRm9ybWF0dGVkKCIlciBjb3VsZCBz
YXZlIH4lcyIsIHJlc291cmNlLnVybCwgTnVtYmVyLmJ5dGVzVG9TdHJpbmcoc2F2aW5ncykpOwor
ICAgICAgICAgICAgICAgIHN1bW1hcnkuYWRkRm9ybWF0dGVkKCIlciBjb3VsZCBzYXZlIH4lcyIs
IHJlcXVlc3QudXJsLCBOdW1iZXIuYnl0ZXNUb1N0cmluZyhzYXZpbmdzKSk7CiAgICAgICAgICAg
ICAgICAgcmVzdWx0LnZpb2xhdGlvbkNvdW50Kys7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
QEAgLTEwMiwxOCArMTA1LDE4IEBAIFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLkd6aXBSdWxlLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgY2FsbGJhY2socmVzdWx0KTsKICAgICB9LAogCi0gICAgX2lz
Q29tcHJlc3NlZDogZnVuY3Rpb24ocmVzb3VyY2UpCisgICAgX2lzQ29tcHJlc3NlZDogZnVuY3Rp
b24ocmVxdWVzdCkKICAgICB7Ci0gICAgICAgIHZhciBlbmNvZGluZ0hlYWRlciA9IHJlc291cmNl
LnJlc3BvbnNlSGVhZGVyc1siQ29udGVudC1FbmNvZGluZyJdOworICAgICAgICB2YXIgZW5jb2Rp
bmdIZWFkZXIgPSByZXF1ZXN0LnJlc3BvbnNlSGVhZGVyc1siQ29udGVudC1FbmNvZGluZyJdOwog
ICAgICAgICBpZiAoIWVuY29kaW5nSGVhZGVyKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgICAgIHJldHVybiAvXGIoPzpnemlwfGRlZmxhdGUpXGIvLnRlc3QoZW5jb2RpbmdIZWFk
ZXIpOwogICAgIH0sCiAKLSAgICBfc2hvdWxkQ29tcHJlc3M6IGZ1bmN0aW9uKHJlc291cmNlKQor
ICAgIF9zaG91bGRDb21wcmVzczogZnVuY3Rpb24ocmVxdWVzdCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiByZXNvdXJjZS50eXBlLmlzVGV4dFR5cGUoKSAmJiByZXNvdXJjZS5kb21haW4gJiYgcmVz
b3VyY2UucmVzb3VyY2VTaXplICE9PSB1bmRlZmluZWQgJiYgcmVzb3VyY2UucmVzb3VyY2VTaXpl
ID4gMTUwOworICAgICAgICByZXR1cm4gcmVxdWVzdC50eXBlLmlzVGV4dFR5cGUoKSAmJiByZXF1
ZXN0LmRvbWFpbiAmJiByZXF1ZXN0LnJlc291cmNlU2l6ZSAhPT0gdW5kZWZpbmVkICYmIHJlcXVl
c3QucmVzb3VyY2VTaXplID4gMTUwOwogICAgIH0KIH0KIApAQCAtMTMyLDkgKzEzNSw5IEBAIFdl
Ykluc3BlY3Rvci5BdWRpdFJ1bGVzLkNvbWJpbmVFeHRlcm5hbFJlc291cmNlc1J1bGUgPSBmdW5j
dGlvbihpZCwgbmFtZSwgdHlwZSwKIH0KIAogV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuQ29tYmlu
ZUV4dGVybmFsUmVzb3VyY2VzUnVsZS5wcm90b3R5cGUgPSB7Ci0gICAgZG9SdW46IGZ1bmN0aW9u
KHJlc291cmNlcywgcmVzdWx0LCBjYWxsYmFjaywgcHJvZ3Jlc3NNb25pdG9yKQorICAgIGRvUnVu
OiBmdW5jdGlvbihyZXF1ZXN0cywgcmVzdWx0LCBjYWxsYmFjaywgcHJvZ3Jlc3NNb25pdG9yKQog
ICAgIHsKLSAgICAgICAgdmFyIGRvbWFpblRvUmVzb3VyY2VzTWFwID0gV2ViSW5zcGVjdG9yLkF1
ZGl0UnVsZXMuZ2V0RG9tYWluVG9SZXNvdXJjZXNNYXAocmVzb3VyY2VzLCBbdGhpcy5fdHlwZV0s
IGZhbHNlKTsKKyAgICAgICAgdmFyIGRvbWFpblRvUmVzb3VyY2VzTWFwID0gV2ViSW5zcGVjdG9y
LkF1ZGl0UnVsZXMuZ2V0RG9tYWluVG9SZXNvdXJjZXNNYXAocmVxdWVzdHMsIFt0aGlzLl90eXBl
XSwgZmFsc2UpOwogICAgICAgICB2YXIgcGVuYWxpemVkUmVzb3VyY2VDb3VudCA9IDA7CiAgICAg
ICAgIC8vIFRPRE86IHJlZmFjdG9yIGFjY29yZGluZyB0byB0aGUgY2hvc2VuIGkxOG4gYXBwcm9h
Y2gKICAgICAgICAgdmFyIHN1bW1hcnkgPSByZXN1bHQuYWRkQ2hpbGQoIiIsIHRydWUpOwpAQCAt
MTg3LDEwICsxOTAsMTAgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuTWluaW1pemVEbnNMb29r
dXBzUnVsZSA9IGZ1bmN0aW9uKGhvc3RDb3VudFRocmVzaG9sZCkgewogfQogCiBXZWJJbnNwZWN0
b3IuQXVkaXRSdWxlcy5NaW5pbWl6ZURuc0xvb2t1cHNSdWxlLnByb3RvdHlwZSA9IHsKLSAgICBk
b1J1bjogZnVuY3Rpb24ocmVzb3VyY2VzLCByZXN1bHQsIGNhbGxiYWNrLCBwcm9ncmVzc01vbml0
b3IpCisgICAgZG9SdW46IGZ1bmN0aW9uKHJlcXVlc3RzLCByZXN1bHQsIGNhbGxiYWNrLCBwcm9n
cmVzc01vbml0b3IpCiAgICAgewogICAgICAgICB2YXIgc3VtbWFyeSA9IHJlc3VsdC5hZGRDaGls
ZCgiIik7Ci0gICAgICAgIHZhciBkb21haW5Ub1Jlc291cmNlc01hcCA9IFdlYkluc3BlY3Rvci5B
dWRpdFJ1bGVzLmdldERvbWFpblRvUmVzb3VyY2VzTWFwKHJlc291cmNlcywgdW5kZWZpbmVkLCBm
YWxzZSk7CisgICAgICAgIHZhciBkb21haW5Ub1Jlc291cmNlc01hcCA9IFdlYkluc3BlY3Rvci5B
dWRpdFJ1bGVzLmdldERvbWFpblRvUmVzb3VyY2VzTWFwKHJlcXVlc3RzLCB1bmRlZmluZWQsIGZh
bHNlKTsKICAgICAgICAgZm9yICh2YXIgZG9tYWluIGluIGRvbWFpblRvUmVzb3VyY2VzTWFwKSB7
CiAgICAgICAgICAgICBpZiAoZG9tYWluVG9SZXNvdXJjZXNNYXBbZG9tYWluXS5sZW5ndGggPiAx
KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMjI1LDcgKzIyOCw3IEBAIFdlYkluc3Bl
Y3Rvci5BdWRpdFJ1bGVzLlBhcmFsbGVsaXplRG93bmxvYWRSdWxlID0gZnVuY3Rpb24ob3B0aW1h
bEhvc3RuYW1lQ291bnQsCiB9CiAKIFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLlBhcmFsbGVsaXpl
RG93bmxvYWRSdWxlLnByb3RvdHlwZSA9IHsKLSAgICBkb1J1bjogZnVuY3Rpb24ocmVzb3VyY2Vz
LCByZXN1bHQsIGNhbGxiYWNrLCBwcm9ncmVzc01vbml0b3IpCisgICAgZG9SdW46IGZ1bmN0aW9u
KHJlcXVlc3RzLCByZXN1bHQsIGNhbGxiYWNrLCBwcm9ncmVzc01vbml0b3IpCiAgICAgewogICAg
ICAgICBmdW5jdGlvbiBob3N0U29ydGVyKGEsIGIpCiAgICAgICAgIHsKQEAgLTIzNSw3ICsyMzgs
NyBAQCBXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5QYXJhbGxlbGl6ZURvd25sb2FkUnVsZS5wcm90
b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICB2YXIgZG9tYWluVG9SZXNvdXJjZXNNYXAg
PSBXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5nZXREb21haW5Ub1Jlc291cmNlc01hcCgKLSAgICAg
ICAgICAgIHJlc291cmNlcywKKyAgICAgICAgICAgIHJlcXVlc3RzLAogICAgICAgICAgICAgW1dl
Ykluc3BlY3Rvci5yZXNvdXJjZVR5cGVzLlN0eWxlc2hlZXQsIFdlYkluc3BlY3Rvci5yZXNvdXJj
ZVR5cGVzLkltYWdlXSwKICAgICAgICAgICAgIHRydWUpOwogCkBAIC0yNTMsOCArMjU2LDggQEAg
V2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuUGFyYWxsZWxpemVEb3dubG9hZFJ1bGUucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgaG9zdHMuc3BsaWNlKG9wdGltYWxIb3N0bmFtZUNvdW50KTsKIAog
ICAgICAgICB2YXIgYnVzaWVzdEhvc3RSZXNvdXJjZUNvdW50ID0gZG9tYWluVG9SZXNvdXJjZXNN
YXBbaG9zdHNbMF1dLmxlbmd0aDsKLSAgICAgICAgdmFyIHJlc291cmNlQ291bnRBYm92ZVRocmVz
aG9sZCA9IGJ1c2llc3RIb3N0UmVzb3VyY2VDb3VudCAtIHRoaXMuX21pblJlcXVlc3RUaHJlc2hv
bGQ7Ci0gICAgICAgIGlmIChyZXNvdXJjZUNvdW50QWJvdmVUaHJlc2hvbGQgPD0gMCkKKyAgICAg
ICAgdmFyIHJlcXVlc3RDb3VudEFib3ZlVGhyZXNob2xkID0gYnVzaWVzdEhvc3RSZXNvdXJjZUNv
dW50IC0gdGhpcy5fbWluUmVxdWVzdFRocmVzaG9sZDsKKyAgICAgICAgaWYgKHJlcXVlc3RDb3Vu
dEFib3ZlVGhyZXNob2xkIDw9IDApCiAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2sobnVsbCk7
CiAKICAgICAgICAgdmFyIGF2Z1Jlc291cmNlc1Blckhvc3QgPSAwOwpAQCAtMjY1LDE3ICsyNjgs
MTcgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuUGFyYWxsZWxpemVEb3dubG9hZFJ1bGUucHJv
dG90eXBlID0gewogICAgICAgICBhdmdSZXNvdXJjZXNQZXJIb3N0IC89IG9wdGltYWxIb3N0bmFt
ZUNvdW50OwogICAgICAgICBhdmdSZXNvdXJjZXNQZXJIb3N0ID0gTWF0aC5tYXgoYXZnUmVzb3Vy
Y2VzUGVySG9zdCwgMSk7CiAKLSAgICAgICAgdmFyIHBjdEFib3ZlQXZnID0gKHJlc291cmNlQ291
bnRBYm92ZVRocmVzaG9sZCAvIGF2Z1Jlc291cmNlc1Blckhvc3QpIC0gMS4wOworICAgICAgICB2
YXIgcGN0QWJvdmVBdmcgPSAocmVxdWVzdENvdW50QWJvdmVUaHJlc2hvbGQgLyBhdmdSZXNvdXJj
ZXNQZXJIb3N0KSAtIDEuMDsKICAgICAgICAgdmFyIG1pbkJhbGFuY2VUaHJlc2hvbGQgPSB0aGlz
Ll9taW5CYWxhbmNlVGhyZXNob2xkOwogICAgICAgICBpZiAocGN0QWJvdmVBdmcgPCBtaW5CYWxh
bmNlVGhyZXNob2xkKQogICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwpOwogCi0gICAg
ICAgIHZhciByZXNvdXJjZXNPbkJ1c2llc3RIb3N0ID0gZG9tYWluVG9SZXNvdXJjZXNNYXBbaG9z
dHNbMF1dOworICAgICAgICB2YXIgcmVxdWVzdHNPbkJ1c2llc3RIb3N0ID0gZG9tYWluVG9SZXNv
dXJjZXNNYXBbaG9zdHNbMF1dOwogICAgICAgICB2YXIgZW50cnkgPSByZXN1bHQuYWRkQ2hpbGQo
U3RyaW5nLnNwcmludGYoIlRoaXMgcGFnZSBtYWtlcyAlZCBwYXJhbGxlbGl6YWJsZSByZXF1ZXN0
cyB0byAlcy4gSW5jcmVhc2UgZG93bmxvYWQgcGFyYWxsZWxpemF0aW9uIGJ5IGRpc3RyaWJ1dGlu
ZyB0aGUgZm9sbG93aW5nIHJlcXVlc3RzIGFjcm9zcyBtdWx0aXBsZSBob3N0bmFtZXMuIiwgYnVz
aWVzdEhvc3RSZXNvdXJjZUNvdW50LCBob3N0c1swXSksIHRydWUpOwotICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHJlc291cmNlc09uQnVzaWVzdEhvc3QubGVuZ3RoOyArK2kpCi0gICAgICAg
ICAgICBlbnRyeS5hZGRVUkwocmVzb3VyY2VzT25CdXNpZXN0SG9zdFtpXS51cmwpOworICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHJlcXVlc3RzT25CdXNpZXN0SG9zdC5sZW5ndGg7ICsraSkK
KyAgICAgICAgICAgIGVudHJ5LmFkZFVSTChyZXF1ZXN0c09uQnVzaWVzdEhvc3RbaV0udXJsKTsK
IAotICAgICAgICByZXN1bHQudmlvbGF0aW9uQ291bnQgPSByZXNvdXJjZXNPbkJ1c2llc3RIb3N0
Lmxlbmd0aDsKKyAgICAgICAgcmVzdWx0LnZpb2xhdGlvbkNvdW50ID0gcmVxdWVzdHNPbkJ1c2ll
c3RIb3N0Lmxlbmd0aDsKICAgICAgICAgY2FsbGJhY2socmVzdWx0KTsKICAgICB9CiB9CkBAIC0y
OTQsNyArMjk3LDcgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuVW51c2VkQ3NzUnVsZSA9IGZ1
bmN0aW9uKCkKIH0KIAogV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuVW51c2VkQ3NzUnVsZS5wcm90
b3R5cGUgPSB7Ci0gICAgZG9SdW46IGZ1bmN0aW9uKHJlc291cmNlcywgcmVzdWx0LCBjYWxsYmFj
aywgcHJvZ3Jlc3NNb25pdG9yKQorICAgIGRvUnVuOiBmdW5jdGlvbihyZXF1ZXN0cywgcmVzdWx0
LCBjYWxsYmFjaywgcHJvZ3Jlc3NNb25pdG9yKQogICAgIHsKICAgICAgICAgdmFyIHNlbGYgPSB0
aGlzOwogCkBAIC0zNTMsNyArMzU2LDcgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuVW51c2Vk
Q3NzUnVsZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
IAogICAgICAgICAgICAgICAgICAgICB2YXIgcmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IucmVzb3Vy
Y2VGb3JVUkwoc3R5bGVTaGVldC5zb3VyY2VVUkwpOwotICAgICAgICAgICAgICAgICAgICB2YXIg
aXNJbmxpbmVCbG9jayA9IHJlc291cmNlICYmIHJlc291cmNlLnR5cGUgPT0gV2ViSW5zcGVjdG9y
LnJlc291cmNlVHlwZXMuRG9jdW1lbnQ7CisgICAgICAgICAgICAgICAgICAgIHZhciBpc0lubGlu
ZUJsb2NrID0gcmVzb3VyY2UgJiYgcmVzb3VyY2UucmVxdWVzdCAmJiByZXNvdXJjZS5yZXF1ZXN0
LnR5cGUgPT0gV2ViSW5zcGVjdG9yLnJlc291cmNlVHlwZXMuRG9jdW1lbnQ7CiAgICAgICAgICAg
ICAgICAgICAgIHZhciB1cmwgPSAhaXNJbmxpbmVCbG9jayA/IFdlYkluc3BlY3Rvci5BdWRpdFJ1
bGVSZXN1bHQubGlua2lmeURpc3BsYXlOYW1lKHN0eWxlU2hlZXQuc291cmNlVVJMKSA6IFN0cmlu
Zy5zcHJpbnRmKCJJbmxpbmUgYmxvY2sgIyVkIiwgKytpbmxpbmVCbG9ja09yZGluYWwpOwogICAg
ICAgICAgICAgICAgICAgICB2YXIgcGN0VW51c2VkID0gTWF0aC5yb3VuZCgxMDAgKiB1bnVzZWRT
dHlsZXNoZWV0U2l6ZSAvIHN0eWxlc2hlZXRTaXplKTsKICAgICAgICAgICAgICAgICAgICAgaWYg
KCFzdW1tYXJ5KQpAQCAtNDQxLDkgKzQ0NCw5IEBAIFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLkNh
Y2hlQ29udHJvbFJ1bGUuTWlsbGlzUGVyTW9udGggPSAxMDAwICogNjAgKiA2MCAqIDI0ICoKIAog
V2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuQ2FjaGVDb250cm9sUnVsZS5wcm90b3R5cGUgPSB7CiAK
LSAgICBkb1J1bjogZnVuY3Rpb24ocmVzb3VyY2VzLCByZXN1bHQsIGNhbGxiYWNrLCBwcm9ncmVz
c01vbml0b3IpCisgICAgZG9SdW46IGZ1bmN0aW9uKHJlcXVlc3RzLCByZXN1bHQsIGNhbGxiYWNr
LCBwcm9ncmVzc01vbml0b3IpCiAgICAgewotICAgICAgICB2YXIgY2FjaGVhYmxlQW5kTm9uQ2Fj
aGVhYmxlUmVzb3VyY2VzID0gdGhpcy5fY2FjaGVhYmxlQW5kTm9uQ2FjaGVhYmxlUmVzb3VyY2Vz
KHJlc291cmNlcyk7CisgICAgICAgIHZhciBjYWNoZWFibGVBbmROb25DYWNoZWFibGVSZXNvdXJj
ZXMgPSB0aGlzLl9jYWNoZWFibGVBbmROb25DYWNoZWFibGVSZXNvdXJjZXMocmVxdWVzdHMpOwog
ICAgICAgICBpZiAoY2FjaGVhYmxlQW5kTm9uQ2FjaGVhYmxlUmVzb3VyY2VzWzBdLmxlbmd0aCkK
ICAgICAgICAgICAgIHRoaXMucnVuQ2hlY2tzKGNhY2hlYWJsZUFuZE5vbkNhY2hlYWJsZVJlc291
cmNlc1swXSwgcmVzdWx0KTsKICAgICAgICAgdGhpcy5oYW5kbGVOb25DYWNoZWFibGVSZXNvdXJj
ZXMoY2FjaGVhYmxlQW5kTm9uQ2FjaGVhYmxlUmVzb3VyY2VzWzFdLCByZXN1bHQpOwpAQCAtNDUx
LDMyICs0NTQsMzIgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuQ2FjaGVDb250cm9sUnVsZS5w
cm90b3R5cGUgPSB7CiAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7CiAgICAgfSwKIAotICAgIGhh
bmRsZU5vbkNhY2hlYWJsZVJlc291cmNlczogZnVuY3Rpb24ocmVzb3VyY2VzLCByZXN1bHQpCisg
ICAgaGFuZGxlTm9uQ2FjaGVhYmxlUmVzb3VyY2VzOiBmdW5jdGlvbihyZXF1ZXN0cywgcmVzdWx0
KQogICAgIHsKICAgICB9LAogCi0gICAgX2NhY2hlYWJsZUFuZE5vbkNhY2hlYWJsZVJlc291cmNl
czogZnVuY3Rpb24ocmVzb3VyY2VzKQorICAgIF9jYWNoZWFibGVBbmROb25DYWNoZWFibGVSZXNv
dXJjZXM6IGZ1bmN0aW9uKHJlcXVlc3RzKQogICAgIHsKICAgICAgICAgdmFyIHByb2Nlc3NlZFJl
c291cmNlcyA9IFtbXSwgW11dOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc291cmNl
cy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgdmFyIHJlc291cmNlID0gcmVzb3VyY2VzW2ld
OwotICAgICAgICAgICAgaWYgKCF0aGlzLmlzQ2FjaGVhYmxlUmVzb3VyY2UocmVzb3VyY2UpKQor
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlcXVlc3RzLmxlbmd0aDsgKytpKSB7CisgICAg
ICAgICAgICB2YXIgcmVxdWVzdCA9IHJlcXVlc3RzW2ldOworICAgICAgICAgICAgaWYgKCF0aGlz
LmlzQ2FjaGVhYmxlUmVzb3VyY2UocmVxdWVzdCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgICAgICBpZiAodGhpcy5faXNFeHBsaWNpdGx5Tm9uQ2FjaGVhYmxlKHJlc291cmNl
KSkKLSAgICAgICAgICAgICAgICBwcm9jZXNzZWRSZXNvdXJjZXNbMV0ucHVzaChyZXNvdXJjZSk7
CisgICAgICAgICAgICBpZiAodGhpcy5faXNFeHBsaWNpdGx5Tm9uQ2FjaGVhYmxlKHJlcXVlc3Qp
KQorICAgICAgICAgICAgICAgIHByb2Nlc3NlZFJlc291cmNlc1sxXS5wdXNoKHJlcXVlc3QpOwog
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHByb2Nlc3NlZFJlc291cmNlc1swXS5w
dXNoKHJlc291cmNlKTsKKyAgICAgICAgICAgICAgICBwcm9jZXNzZWRSZXNvdXJjZXNbMF0ucHVz
aChyZXF1ZXN0KTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gcHJvY2Vzc2VkUmVzb3VyY2Vz
OwogICAgIH0sCiAKLSAgICBleGVjQ2hlY2s6IGZ1bmN0aW9uKG1lc3NhZ2VUZXh0LCByZXNvdXJj
ZUNoZWNrRnVuY3Rpb24sIHJlc291cmNlcywgcmVzdWx0KQorICAgIGV4ZWNDaGVjazogZnVuY3Rp
b24obWVzc2FnZVRleHQsIHJlcXVlc3RDaGVja0Z1bmN0aW9uLCByZXF1ZXN0cywgcmVzdWx0KQog
ICAgIHsKLSAgICAgICAgdmFyIHJlc291cmNlQ291bnQgPSByZXNvdXJjZXMubGVuZ3RoOworICAg
ICAgICB2YXIgcmVxdWVzdENvdW50ID0gcmVxdWVzdHMubGVuZ3RoOwogICAgICAgICB2YXIgdXJs
cyA9IFtdOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc291cmNlQ291bnQ7ICsraSkg
ewotICAgICAgICAgICAgaWYgKHJlc291cmNlQ2hlY2tGdW5jdGlvbi5jYWxsKHRoaXMsIHJlc291
cmNlc1tpXSkpCi0gICAgICAgICAgICAgICAgdXJscy5wdXNoKHJlc291cmNlc1tpXS51cmwpOwor
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlcXVlc3RDb3VudDsgKytpKSB7CisgICAgICAg
ICAgICBpZiAocmVxdWVzdENoZWNrRnVuY3Rpb24uY2FsbCh0aGlzLCByZXF1ZXN0c1tpXSkpCisg
ICAgICAgICAgICAgICAgdXJscy5wdXNoKHJlcXVlc3RzW2ldLnVybCk7CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKHVybHMubGVuZ3RoKSB7CiAgICAgICAgICAgICB2YXIgZW50cnkgPSByZXN1bHQu
YWRkQ2hpbGQobWVzc2FnZVRleHQsIHRydWUpOwpAQCAtNDg1LDkgKzQ4OCw5IEBAIFdlYkluc3Bl
Y3Rvci5BdWRpdFJ1bGVzLkNhY2hlQ29udHJvbFJ1bGUucHJvdG90eXBlID0gewogICAgICAgICB9
CiAgICAgfSwKIAotICAgIGZyZXNobmVzc0xpZmV0aW1lR3JlYXRlclRoYW46IGZ1bmN0aW9uKHJl
c291cmNlLCB0aW1lTXMpCisgICAgZnJlc2huZXNzTGlmZXRpbWVHcmVhdGVyVGhhbjogZnVuY3Rp
b24ocmVxdWVzdCwgdGltZU1zKQogICAgIHsKLSAgICAgICAgdmFyIGRhdGVIZWFkZXIgPSB0aGlz
LnJlc3BvbnNlSGVhZGVyKHJlc291cmNlLCAiRGF0ZSIpOworICAgICAgICB2YXIgZGF0ZUhlYWRl
ciA9IHRoaXMucmVzcG9uc2VIZWFkZXIocmVxdWVzdCwgIkRhdGUiKTsKICAgICAgICAgaWYgKCFk
YXRlSGVhZGVyKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC00OTYsMTIgKzQ5OSwx
MiBAQCBXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5DYWNoZUNvbnRyb2xSdWxlLnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICB2YXIgZnJlc2huZXNzTGlm
ZXRpbWVNczsKLSAgICAgICAgdmFyIG1heEFnZU1hdGNoID0gdGhpcy5yZXNwb25zZUhlYWRlck1h
dGNoKHJlc291cmNlLCAiQ2FjaGUtQ29udHJvbCIsICJtYXgtYWdlPShcXGQrKSIpOworICAgICAg
ICB2YXIgbWF4QWdlTWF0Y2ggPSB0aGlzLnJlc3BvbnNlSGVhZGVyTWF0Y2gocmVxdWVzdCwgIkNh
Y2hlLUNvbnRyb2wiLCAibWF4LWFnZT0oXFxkKykiKTsKIAogICAgICAgICBpZiAobWF4QWdlTWF0
Y2gpCiAgICAgICAgICAgICBmcmVzaG5lc3NMaWZldGltZU1zID0gKG1heEFnZU1hdGNoWzFdKSA/
IDEwMDAgKiBtYXhBZ2VNYXRjaFsxXSA6IDA7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAg
dmFyIGV4cGlyZXNIZWFkZXIgPSB0aGlzLnJlc3BvbnNlSGVhZGVyKHJlc291cmNlLCAiRXhwaXJl
cyIpOworICAgICAgICAgICAgdmFyIGV4cGlyZXNIZWFkZXIgPSB0aGlzLnJlc3BvbnNlSGVhZGVy
KHJlcXVlc3QsICJFeHBpcmVzIik7CiAgICAgICAgICAgICBpZiAoZXhwaXJlc0hlYWRlcikgewog
ICAgICAgICAgICAgICAgIHZhciBleHBEYXRlID0gRGF0ZS5wYXJzZShleHBpcmVzSGVhZGVyKTsK
ICAgICAgICAgICAgICAgICBpZiAoIWlzTmFOKGV4cERhdGUpKQpAQCAtNTEyLDU4ICs1MTUsNTgg
QEAgV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuQ2FjaGVDb250cm9sUnVsZS5wcm90b3R5cGUgPSB7
CiAgICAgICAgIHJldHVybiAoaXNOYU4oZnJlc2huZXNzTGlmZXRpbWVNcykpID8gZmFsc2UgOiBm
cmVzaG5lc3NMaWZldGltZU1zID4gdGltZU1zOwogICAgIH0sCiAKLSAgICByZXNwb25zZUhlYWRl
cjogZnVuY3Rpb24ocmVzb3VyY2UsIGhlYWRlcikKKyAgICByZXNwb25zZUhlYWRlcjogZnVuY3Rp
b24ocmVxdWVzdCwgaGVhZGVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHJlc291cmNlLnJlc3Bv
bnNlSGVhZGVyc1toZWFkZXJdOworICAgICAgICByZXR1cm4gcmVxdWVzdC5yZXNwb25zZUhlYWRl
cnNbaGVhZGVyXTsKICAgICB9LAogCi0gICAgaGFzUmVzcG9uc2VIZWFkZXI6IGZ1bmN0aW9uKHJl
c291cmNlLCBoZWFkZXIpCisgICAgaGFzUmVzcG9uc2VIZWFkZXI6IGZ1bmN0aW9uKHJlcXVlc3Qs
IGhlYWRlcikKICAgICB7Ci0gICAgICAgIHJldHVybiByZXNvdXJjZS5yZXNwb25zZUhlYWRlcnNb
aGVhZGVyXSAhPT0gdW5kZWZpbmVkOworICAgICAgICByZXR1cm4gcmVxdWVzdC5yZXNwb25zZUhl
YWRlcnNbaGVhZGVyXSAhPT0gdW5kZWZpbmVkOwogICAgIH0sCiAKLSAgICBpc0NvbXByZXNzaWJs
ZTogZnVuY3Rpb24ocmVzb3VyY2UpCisgICAgaXNDb21wcmVzc2libGU6IGZ1bmN0aW9uKHJlcXVl
c3QpCiAgICAgewotICAgICAgICByZXR1cm4gcmVzb3VyY2UudHlwZS5pc1RleHRUeXBlKCk7Cisg
ICAgICAgIHJldHVybiByZXF1ZXN0LnR5cGUuaXNUZXh0VHlwZSgpOwogICAgIH0sCiAKLSAgICBp
c1B1YmxpY2x5Q2FjaGVhYmxlOiBmdW5jdGlvbihyZXNvdXJjZSkKKyAgICBpc1B1YmxpY2x5Q2Fj
aGVhYmxlOiBmdW5jdGlvbihyZXF1ZXN0KQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX2lzRXhw
bGljaXRseU5vbkNhY2hlYWJsZShyZXNvdXJjZSkpCisgICAgICAgIGlmICh0aGlzLl9pc0V4cGxp
Y2l0bHlOb25DYWNoZWFibGUocmVxdWVzdCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICAgICAgaWYgKHRoaXMucmVzcG9uc2VIZWFkZXJNYXRjaChyZXNvdXJjZSwgIkNhY2hlLUNv
bnRyb2wiLCAicHVibGljIikpCisgICAgICAgIGlmICh0aGlzLnJlc3BvbnNlSGVhZGVyTWF0Y2go
cmVxdWVzdCwgIkNhY2hlLUNvbnRyb2wiLCAicHVibGljIikpCiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKIAotICAgICAgICByZXR1cm4gcmVzb3VyY2UudXJsLmluZGV4T2YoIj8iKSA9PSAtMSAm
JiAhdGhpcy5yZXNwb25zZUhlYWRlck1hdGNoKHJlc291cmNlLCAiQ2FjaGUtQ29udHJvbCIsICJw
cml2YXRlIik7CisgICAgICAgIHJldHVybiByZXF1ZXN0LnVybC5pbmRleE9mKCI/IikgPT0gLTEg
JiYgIXRoaXMucmVzcG9uc2VIZWFkZXJNYXRjaChyZXF1ZXN0LCAiQ2FjaGUtQ29udHJvbCIsICJw
cml2YXRlIik7CiAgICAgfSwKIAotICAgIHJlc3BvbnNlSGVhZGVyTWF0Y2g6IGZ1bmN0aW9uKHJl
c291cmNlLCBoZWFkZXIsIHJlZ2V4cCkKKyAgICByZXNwb25zZUhlYWRlck1hdGNoOiBmdW5jdGlv
bihyZXF1ZXN0LCBoZWFkZXIsIHJlZ2V4cCkKICAgICB7Ci0gICAgICAgIHJldHVybiByZXNvdXJj
ZS5yZXNwb25zZUhlYWRlcnNbaGVhZGVyXQotICAgICAgICAgICAgPyByZXNvdXJjZS5yZXNwb25z
ZUhlYWRlcnNbaGVhZGVyXS5tYXRjaChuZXcgUmVnRXhwKHJlZ2V4cCwgImltIikpCisgICAgICAg
IHJldHVybiByZXF1ZXN0LnJlc3BvbnNlSGVhZGVyc1toZWFkZXJdCisgICAgICAgICAgICA/IHJl
cXVlc3QucmVzcG9uc2VIZWFkZXJzW2hlYWRlcl0ubWF0Y2gobmV3IFJlZ0V4cChyZWdleHAsICJp
bSIpKQogICAgICAgICAgICAgOiB1bmRlZmluZWQ7CiAgICAgfSwKIAotICAgIGhhc0V4cGxpY2l0
RXhwaXJhdGlvbjogZnVuY3Rpb24ocmVzb3VyY2UpCisgICAgaGFzRXhwbGljaXRFeHBpcmF0aW9u
OiBmdW5jdGlvbihyZXF1ZXN0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuaGFzUmVzcG9u
c2VIZWFkZXIocmVzb3VyY2UsICJEYXRlIikgJiYKLSAgICAgICAgICAgICh0aGlzLmhhc1Jlc3Bv
bnNlSGVhZGVyKHJlc291cmNlLCAiRXhwaXJlcyIpIHx8IHRoaXMucmVzcG9uc2VIZWFkZXJNYXRj
aChyZXNvdXJjZSwgIkNhY2hlLUNvbnRyb2wiLCAibWF4LWFnZSIpKTsKKyAgICAgICAgcmV0dXJu
IHRoaXMuaGFzUmVzcG9uc2VIZWFkZXIocmVxdWVzdCwgIkRhdGUiKSAmJgorICAgICAgICAgICAg
KHRoaXMuaGFzUmVzcG9uc2VIZWFkZXIocmVxdWVzdCwgIkV4cGlyZXMiKSB8fCB0aGlzLnJlc3Bv
bnNlSGVhZGVyTWF0Y2gocmVxdWVzdCwgIkNhY2hlLUNvbnRyb2wiLCAibWF4LWFnZSIpKTsKICAg
ICB9LAogCi0gICAgX2lzRXhwbGljaXRseU5vbkNhY2hlYWJsZTogZnVuY3Rpb24ocmVzb3VyY2Up
CisgICAgX2lzRXhwbGljaXRseU5vbkNhY2hlYWJsZTogZnVuY3Rpb24ocmVxdWVzdCkKICAgICB7
Ci0gICAgICAgIHZhciBoYXNFeHBsaWNpdEV4cCA9IHRoaXMuaGFzRXhwbGljaXRFeHBpcmF0aW9u
KHJlc291cmNlKTsKLSAgICAgICAgcmV0dXJuIHRoaXMucmVzcG9uc2VIZWFkZXJNYXRjaChyZXNv
dXJjZSwgIkNhY2hlLUNvbnRyb2wiLCAiKG5vLWNhY2hlfG5vLXN0b3JlfG11c3QtcmV2YWxpZGF0
ZSkiKSB8fAotICAgICAgICAgICAgdGhpcy5yZXNwb25zZUhlYWRlck1hdGNoKHJlc291cmNlLCAi
UHJhZ21hIiwgIm5vLWNhY2hlIikgfHwKLSAgICAgICAgICAgIChoYXNFeHBsaWNpdEV4cCAmJiAh
dGhpcy5mcmVzaG5lc3NMaWZldGltZUdyZWF0ZXJUaGFuKHJlc291cmNlLCAwKSkgfHwKLSAgICAg
ICAgICAgICghaGFzRXhwbGljaXRFeHAgJiYgcmVzb3VyY2UudXJsICYmIHJlc291cmNlLnVybC5p
bmRleE9mKCI/IikgPj0gMCkgfHwKLSAgICAgICAgICAgICghaGFzRXhwbGljaXRFeHAgJiYgIXRo
aXMuaXNDYWNoZWFibGVSZXNvdXJjZShyZXNvdXJjZSkpOworICAgICAgICB2YXIgaGFzRXhwbGlj
aXRFeHAgPSB0aGlzLmhhc0V4cGxpY2l0RXhwaXJhdGlvbihyZXF1ZXN0KTsKKyAgICAgICAgcmV0
dXJuIHRoaXMucmVzcG9uc2VIZWFkZXJNYXRjaChyZXF1ZXN0LCAiQ2FjaGUtQ29udHJvbCIsICIo
bm8tY2FjaGV8bm8tc3RvcmV8bXVzdC1yZXZhbGlkYXRlKSIpIHx8CisgICAgICAgICAgICB0aGlz
LnJlc3BvbnNlSGVhZGVyTWF0Y2gocmVxdWVzdCwgIlByYWdtYSIsICJuby1jYWNoZSIpIHx8Cisg
ICAgICAgICAgICAoaGFzRXhwbGljaXRFeHAgJiYgIXRoaXMuZnJlc2huZXNzTGlmZXRpbWVHcmVh
dGVyVGhhbihyZXF1ZXN0LCAwKSkgfHwKKyAgICAgICAgICAgICghaGFzRXhwbGljaXRFeHAgJiYg
cmVxdWVzdC51cmwgJiYgcmVxdWVzdC51cmwuaW5kZXhPZigiPyIpID49IDApIHx8CisgICAgICAg
ICAgICAoIWhhc0V4cGxpY2l0RXhwICYmICF0aGlzLmlzQ2FjaGVhYmxlUmVzb3VyY2UocmVxdWVz
dCkpOwogICAgIH0sCiAKLSAgICBpc0NhY2hlYWJsZVJlc291cmNlOiBmdW5jdGlvbihyZXNvdXJj
ZSkKKyAgICBpc0NhY2hlYWJsZVJlc291cmNlOiBmdW5jdGlvbihyZXF1ZXN0KQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIHJlc291cmNlLnN0YXR1c0NvZGUgIT09IHVuZGVmaW5lZCAmJiBXZWJJbnNw
ZWN0b3IuQXVkaXRSdWxlcy5DYWNoZWFibGVSZXNwb25zZUNvZGVzW3Jlc291cmNlLnN0YXR1c0Nv
ZGVdOworICAgICAgICByZXR1cm4gcmVxdWVzdC5zdGF0dXNDb2RlICE9PSB1bmRlZmluZWQgJiYg
V2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuQ2FjaGVhYmxlUmVzcG9uc2VDb2Rlc1tyZXF1ZXN0LnN0
YXR1c0NvZGVdOwogICAgIH0KIH0KIApAQCAtNTc5LDYwICs1ODIsNjAgQEAgV2ViSW5zcGVjdG9y
LkF1ZGl0UnVsZXMuQnJvd3NlckNhY2hlQ29udHJvbFJ1bGUgPSBmdW5jdGlvbigpCiB9CiAKIFdl
Ykluc3BlY3Rvci5BdWRpdFJ1bGVzLkJyb3dzZXJDYWNoZUNvbnRyb2xSdWxlLnByb3RvdHlwZSA9
IHsKLSAgICBoYW5kbGVOb25DYWNoZWFibGVSZXNvdXJjZXM6IGZ1bmN0aW9uKHJlc291cmNlcywg
cmVzdWx0KQorICAgIGhhbmRsZU5vbkNhY2hlYWJsZVJlc291cmNlczogZnVuY3Rpb24ocmVxdWVz
dHMsIHJlc3VsdCkKICAgICB7Ci0gICAgICAgIGlmIChyZXNvdXJjZXMubGVuZ3RoKSB7CisgICAg
ICAgIGlmIChyZXF1ZXN0cy5sZW5ndGgpIHsKICAgICAgICAgICAgIHZhciBlbnRyeSA9IHJlc3Vs
dC5hZGRDaGlsZCgiVGhlIGZvbGxvd2luZyByZXNvdXJjZXMgYXJlIGV4cGxpY2l0bHkgbm9uLWNh
Y2hlYWJsZS4gQ29uc2lkZXIgbWFraW5nIHRoZW0gY2FjaGVhYmxlIGlmIHBvc3NpYmxlOiIsIHRy
dWUpOwotICAgICAgICAgICAgcmVzdWx0LnZpb2xhdGlvbkNvdW50ICs9IHJlc291cmNlcy5sZW5n
dGg7Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc291cmNlcy5sZW5ndGg7ICsr
aSkKLSAgICAgICAgICAgICAgICBlbnRyeS5hZGRVUkwocmVzb3VyY2VzW2ldLnVybCk7CisgICAg
ICAgICAgICByZXN1bHQudmlvbGF0aW9uQ291bnQgKz0gcmVxdWVzdHMubGVuZ3RoOworICAgICAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXF1ZXN0cy5sZW5ndGg7ICsraSkKKyAgICAgICAg
ICAgICAgICBlbnRyeS5hZGRVUkwocmVxdWVzdHNbaV0udXJsKTsKICAgICAgICAgfQogICAgIH0s
CiAKLSAgICBydW5DaGVja3M6IGZ1bmN0aW9uKHJlc291cmNlcywgcmVzdWx0LCBjYWxsYmFjaykK
KyAgICBydW5DaGVja3M6IGZ1bmN0aW9uKHJlcXVlc3RzLCByZXN1bHQsIGNhbGxiYWNrKQogICAg
IHsKICAgICAgICAgdGhpcy5leGVjQ2hlY2soIlRoZSBmb2xsb3dpbmcgcmVzb3VyY2VzIGFyZSBt
aXNzaW5nIGEgY2FjaGUgZXhwaXJhdGlvbi4gUmVzb3VyY2VzIHRoYXQgZG8gbm90IHNwZWNpZnkg
YW4gZXhwaXJhdGlvbiBtYXkgbm90IGJlIGNhY2hlZCBieSBicm93c2VyczoiLAotICAgICAgICAg
ICAgdGhpcy5fbWlzc2luZ0V4cGlyYXRpb25DaGVjaywgcmVzb3VyY2VzLCByZXN1bHQpOworICAg
ICAgICAgICAgdGhpcy5fbWlzc2luZ0V4cGlyYXRpb25DaGVjaywgcmVxdWVzdHMsIHJlc3VsdCk7
CiAgICAgICAgIHRoaXMuZXhlY0NoZWNrKCJUaGUgZm9sbG93aW5nIHJlc291cmNlcyBzcGVjaWZ5
IGEgXCJWYXJ5XCIgaGVhZGVyIHRoYXQgZGlzYWJsZXMgY2FjaGluZyBpbiBtb3N0IHZlcnNpb25z
IG9mIEludGVybmV0IEV4cGxvcmVyOiIsCi0gICAgICAgICAgICB0aGlzLl92YXJ5Q2hlY2ssIHJl
c291cmNlcywgcmVzdWx0KTsKKyAgICAgICAgICAgIHRoaXMuX3ZhcnlDaGVjaywgcmVxdWVzdHMs
IHJlc3VsdCk7CiAgICAgICAgIHRoaXMuZXhlY0NoZWNrKCJUaGUgZm9sbG93aW5nIGNhY2hlYWJs
ZSByZXNvdXJjZXMgaGF2ZSBhIHNob3J0IGZyZXNobmVzcyBsaWZldGltZToiLAotICAgICAgICAg
ICAgdGhpcy5fb25lTW9udGhFeHBpcmF0aW9uQ2hlY2ssIHJlc291cmNlcywgcmVzdWx0KTsKKyAg
ICAgICAgICAgIHRoaXMuX29uZU1vbnRoRXhwaXJhdGlvbkNoZWNrLCByZXF1ZXN0cywgcmVzdWx0
KTsKIAogICAgICAgICAvLyBVbmFibGUgdG8gaW1wbGVtZW50IHRoZSBmYXZpY29uIGNoZWNrIGR1
ZSB0byB0aGUgV2ViS2l0IGxpbWl0YXRpb25zLgogICAgICAgICB0aGlzLmV4ZWNDaGVjaygiVG8g
ZnVydGhlciBpbXByb3ZlIGNhY2hlIGhpdCByYXRlLCBzcGVjaWZ5IGFuIGV4cGlyYXRpb24gb25l
IHllYXIgaW4gdGhlIGZ1dHVyZSBmb3IgdGhlIGZvbGxvd2luZyBjYWNoZWFibGUgcmVzb3VyY2Vz
OiIsCi0gICAgICAgICAgICB0aGlzLl9vbmVZZWFyRXhwaXJhdGlvbkNoZWNrLCByZXNvdXJjZXMs
IHJlc3VsdCk7CisgICAgICAgICAgICB0aGlzLl9vbmVZZWFyRXhwaXJhdGlvbkNoZWNrLCByZXF1
ZXN0cywgcmVzdWx0KTsKICAgICB9LAogCi0gICAgX21pc3NpbmdFeHBpcmF0aW9uQ2hlY2s6IGZ1
bmN0aW9uKHJlc291cmNlKQorICAgIF9taXNzaW5nRXhwaXJhdGlvbkNoZWNrOiBmdW5jdGlvbihy
ZXF1ZXN0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuaXNDYWNoZWFibGVSZXNvdXJjZShy
ZXNvdXJjZSkgJiYgIXRoaXMuaGFzUmVzcG9uc2VIZWFkZXIocmVzb3VyY2UsICJTZXQtQ29va2ll
IikgJiYgIXRoaXMuaGFzRXhwbGljaXRFeHBpcmF0aW9uKHJlc291cmNlKTsKKyAgICAgICAgcmV0
dXJuIHRoaXMuaXNDYWNoZWFibGVSZXNvdXJjZShyZXF1ZXN0KSAmJiAhdGhpcy5oYXNSZXNwb25z
ZUhlYWRlcihyZXF1ZXN0LCAiU2V0LUNvb2tpZSIpICYmICF0aGlzLmhhc0V4cGxpY2l0RXhwaXJh
dGlvbihyZXF1ZXN0KTsKICAgICB9LAogCi0gICAgX3ZhcnlDaGVjazogZnVuY3Rpb24ocmVzb3Vy
Y2UpCisgICAgX3ZhcnlDaGVjazogZnVuY3Rpb24ocmVxdWVzdCkKICAgICB7Ci0gICAgICAgIHZh
ciB2YXJ5SGVhZGVyID0gdGhpcy5yZXNwb25zZUhlYWRlcihyZXNvdXJjZSwgIlZhcnkiKTsKKyAg
ICAgICAgdmFyIHZhcnlIZWFkZXIgPSB0aGlzLnJlc3BvbnNlSGVhZGVyKHJlcXVlc3QsICJWYXJ5
Iik7CiAgICAgICAgIGlmICh2YXJ5SGVhZGVyKSB7CiAgICAgICAgICAgICB2YXJ5SGVhZGVyID0g
dmFyeUhlYWRlci5yZXBsYWNlKC9Vc2VyLUFnZW50L2dpLCAiIik7CiAgICAgICAgICAgICB2YXJ5
SGVhZGVyID0gdmFyeUhlYWRlci5yZXBsYWNlKC9BY2NlcHQtRW5jb2RpbmcvZ2ksICIiKTsKICAg
ICAgICAgICAgIHZhcnlIZWFkZXIgPSB2YXJ5SGVhZGVyLnJlcGxhY2UoL1ssIF0qL2csICIiKTsK
ICAgICAgICAgfQotICAgICAgICByZXR1cm4gdmFyeUhlYWRlciAmJiB2YXJ5SGVhZGVyLmxlbmd0
aCAmJiB0aGlzLmlzQ2FjaGVhYmxlUmVzb3VyY2UocmVzb3VyY2UpICYmIHRoaXMuZnJlc2huZXNz
TGlmZXRpbWVHcmVhdGVyVGhhbihyZXNvdXJjZSwgMCk7CisgICAgICAgIHJldHVybiB2YXJ5SGVh
ZGVyICYmIHZhcnlIZWFkZXIubGVuZ3RoICYmIHRoaXMuaXNDYWNoZWFibGVSZXNvdXJjZShyZXF1
ZXN0KSAmJiB0aGlzLmZyZXNobmVzc0xpZmV0aW1lR3JlYXRlclRoYW4ocmVxdWVzdCwgMCk7CiAg
ICAgfSwKIAotICAgIF9vbmVNb250aEV4cGlyYXRpb25DaGVjazogZnVuY3Rpb24ocmVzb3VyY2Up
CisgICAgX29uZU1vbnRoRXhwaXJhdGlvbkNoZWNrOiBmdW5jdGlvbihyZXF1ZXN0KQogICAgIHsK
LSAgICAgICAgcmV0dXJuIHRoaXMuaXNDYWNoZWFibGVSZXNvdXJjZShyZXNvdXJjZSkgJiYKLSAg
ICAgICAgICAgICF0aGlzLmhhc1Jlc3BvbnNlSGVhZGVyKHJlc291cmNlLCAiU2V0LUNvb2tpZSIp
ICYmCi0gICAgICAgICAgICAhdGhpcy5mcmVzaG5lc3NMaWZldGltZUdyZWF0ZXJUaGFuKHJlc291
cmNlLCBXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5DYWNoZUNvbnRyb2xSdWxlLk1pbGxpc1Blck1v
bnRoKSAmJgotICAgICAgICAgICAgdGhpcy5mcmVzaG5lc3NMaWZldGltZUdyZWF0ZXJUaGFuKHJl
c291cmNlLCAwKTsKKyAgICAgICAgcmV0dXJuIHRoaXMuaXNDYWNoZWFibGVSZXNvdXJjZShyZXF1
ZXN0KSAmJgorICAgICAgICAgICAgIXRoaXMuaGFzUmVzcG9uc2VIZWFkZXIocmVxdWVzdCwgIlNl
dC1Db29raWUiKSAmJgorICAgICAgICAgICAgIXRoaXMuZnJlc2huZXNzTGlmZXRpbWVHcmVhdGVy
VGhhbihyZXF1ZXN0LCBXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5DYWNoZUNvbnRyb2xSdWxlLk1p
bGxpc1Blck1vbnRoKSAmJgorICAgICAgICAgICAgdGhpcy5mcmVzaG5lc3NMaWZldGltZUdyZWF0
ZXJUaGFuKHJlcXVlc3QsIDApOwogICAgIH0sCiAKLSAgICBfb25lWWVhckV4cGlyYXRpb25DaGVj
azogZnVuY3Rpb24ocmVzb3VyY2UpCisgICAgX29uZVllYXJFeHBpcmF0aW9uQ2hlY2s6IGZ1bmN0
aW9uKHJlcXVlc3QpCiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5pc0NhY2hlYWJsZVJlc291
cmNlKHJlc291cmNlKSAmJgotICAgICAgICAgICAgIXRoaXMuaGFzUmVzcG9uc2VIZWFkZXIocmVz
b3VyY2UsICJTZXQtQ29va2llIikgJiYKLSAgICAgICAgICAgICF0aGlzLmZyZXNobmVzc0xpZmV0
aW1lR3JlYXRlclRoYW4ocmVzb3VyY2UsIDExICogV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuQ2Fj
aGVDb250cm9sUnVsZS5NaWxsaXNQZXJNb250aCkgJiYKLSAgICAgICAgICAgIHRoaXMuZnJlc2hu
ZXNzTGlmZXRpbWVHcmVhdGVyVGhhbihyZXNvdXJjZSwgV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMu
Q2FjaGVDb250cm9sUnVsZS5NaWxsaXNQZXJNb250aCk7CisgICAgICAgIHJldHVybiB0aGlzLmlz
Q2FjaGVhYmxlUmVzb3VyY2UocmVxdWVzdCkgJiYKKyAgICAgICAgICAgICF0aGlzLmhhc1Jlc3Bv
bnNlSGVhZGVyKHJlcXVlc3QsICJTZXQtQ29va2llIikgJiYKKyAgICAgICAgICAgICF0aGlzLmZy
ZXNobmVzc0xpZmV0aW1lR3JlYXRlclRoYW4ocmVxdWVzdCwgMTEgKiBXZWJJbnNwZWN0b3IuQXVk
aXRSdWxlcy5DYWNoZUNvbnRyb2xSdWxlLk1pbGxpc1Blck1vbnRoKSAmJgorICAgICAgICAgICAg
dGhpcy5mcmVzaG5lc3NMaWZldGltZUdyZWF0ZXJUaGFuKHJlcXVlc3QsIFdlYkluc3BlY3Rvci5B
dWRpdFJ1bGVzLkNhY2hlQ29udHJvbFJ1bGUuTWlsbGlzUGVyTW9udGgpOwogICAgIH0KIH0KIApA
QCAtNjQ3LDMyICs2NTAsMzIgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuUHJveHlDYWNoZUNv
bnRyb2xSdWxlID0gZnVuY3Rpb24oKSB7CiB9CiAKIFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLlBy
b3h5Q2FjaGVDb250cm9sUnVsZS5wcm90b3R5cGUgPSB7Ci0gICAgcnVuQ2hlY2tzOiBmdW5jdGlv
bihyZXNvdXJjZXMsIHJlc3VsdCwgY2FsbGJhY2spCisgICAgcnVuQ2hlY2tzOiBmdW5jdGlvbihy
ZXF1ZXN0cywgcmVzdWx0LCBjYWxsYmFjaykKICAgICB7CiAgICAgICAgIHRoaXMuZXhlY0NoZWNr
KCJSZXNvdXJjZXMgd2l0aCBhIFwiP1wiIGluIHRoZSBVUkwgYXJlIG5vdCBjYWNoZWQgYnkgbW9z
dCBwcm94eSBjYWNoaW5nIHNlcnZlcnM6IiwKLSAgICAgICAgICAgIHRoaXMuX3F1ZXN0aW9uTWFy
a0NoZWNrLCByZXNvdXJjZXMsIHJlc3VsdCk7CisgICAgICAgICAgICB0aGlzLl9xdWVzdGlvbk1h
cmtDaGVjaywgcmVxdWVzdHMsIHJlc3VsdCk7CiAgICAgICAgIHRoaXMuZXhlY0NoZWNrKCJDb25z
aWRlciBhZGRpbmcgYSBcIkNhY2hlLUNvbnRyb2w6IHB1YmxpY1wiIGhlYWRlciB0byB0aGUgZm9s
bG93aW5nIHJlc291cmNlczoiLAotICAgICAgICAgICAgdGhpcy5fcHVibGljQ2FjaGluZ0NoZWNr
LCByZXNvdXJjZXMsIHJlc3VsdCk7CisgICAgICAgICAgICB0aGlzLl9wdWJsaWNDYWNoaW5nQ2hl
Y2ssIHJlcXVlc3RzLCByZXN1bHQpOwogICAgICAgICB0aGlzLmV4ZWNDaGVjaygiVGhlIGZvbGxv
d2luZyBwdWJsaWNseSBjYWNoZWFibGUgcmVzb3VyY2VzIGNvbnRhaW4gYSBTZXQtQ29va2llIGhl
YWRlci4gVGhpcyBzZWN1cml0eSB2dWxuZXJhYmlsaXR5IGNhbiBjYXVzZSBjb29raWVzIHRvIGJl
IHNoYXJlZCBieSBtdWx0aXBsZSB1c2Vycy4iLAotICAgICAgICAgICAgdGhpcy5fc2V0Q29va2ll
Q2FjaGVhYmxlQ2hlY2ssIHJlc291cmNlcywgcmVzdWx0KTsKKyAgICAgICAgICAgIHRoaXMuX3Nl
dENvb2tpZUNhY2hlYWJsZUNoZWNrLCByZXF1ZXN0cywgcmVzdWx0KTsKICAgICB9LAogCi0gICAg
X3F1ZXN0aW9uTWFya0NoZWNrOiBmdW5jdGlvbihyZXNvdXJjZSkKKyAgICBfcXVlc3Rpb25NYXJr
Q2hlY2s6IGZ1bmN0aW9uKHJlcXVlc3QpCiAgICAgewotICAgICAgICByZXR1cm4gcmVzb3VyY2Uu
dXJsLmluZGV4T2YoIj8iKSA+PSAwICYmICF0aGlzLmhhc1Jlc3BvbnNlSGVhZGVyKHJlc291cmNl
LCAiU2V0LUNvb2tpZSIpICYmIHRoaXMuaXNQdWJsaWNseUNhY2hlYWJsZShyZXNvdXJjZSk7Cisg
ICAgICAgIHJldHVybiByZXF1ZXN0LnVybC5pbmRleE9mKCI/IikgPj0gMCAmJiAhdGhpcy5oYXNS
ZXNwb25zZUhlYWRlcihyZXF1ZXN0LCAiU2V0LUNvb2tpZSIpICYmIHRoaXMuaXNQdWJsaWNseUNh
Y2hlYWJsZShyZXF1ZXN0KTsKICAgICB9LAogCi0gICAgX3B1YmxpY0NhY2hpbmdDaGVjazogZnVu
Y3Rpb24ocmVzb3VyY2UpCisgICAgX3B1YmxpY0NhY2hpbmdDaGVjazogZnVuY3Rpb24ocmVxdWVz
dCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLmlzQ2FjaGVhYmxlUmVzb3VyY2UocmVzb3Vy
Y2UpICYmCi0gICAgICAgICAgICAhdGhpcy5pc0NvbXByZXNzaWJsZShyZXNvdXJjZSkgJiYKLSAg
ICAgICAgICAgICF0aGlzLnJlc3BvbnNlSGVhZGVyTWF0Y2gocmVzb3VyY2UsICJDYWNoZS1Db250
cm9sIiwgInB1YmxpYyIpICYmCi0gICAgICAgICAgICAhdGhpcy5oYXNSZXNwb25zZUhlYWRlcihy
ZXNvdXJjZSwgIlNldC1Db29raWUiKTsKKyAgICAgICAgcmV0dXJuIHRoaXMuaXNDYWNoZWFibGVS
ZXNvdXJjZShyZXF1ZXN0KSAmJgorICAgICAgICAgICAgIXRoaXMuaXNDb21wcmVzc2libGUocmVx
dWVzdCkgJiYKKyAgICAgICAgICAgICF0aGlzLnJlc3BvbnNlSGVhZGVyTWF0Y2gocmVxdWVzdCwg
IkNhY2hlLUNvbnRyb2wiLCAicHVibGljIikgJiYKKyAgICAgICAgICAgICF0aGlzLmhhc1Jlc3Bv
bnNlSGVhZGVyKHJlcXVlc3QsICJTZXQtQ29va2llIik7CiAgICAgfSwKIAotICAgIF9zZXRDb29r
aWVDYWNoZWFibGVDaGVjazogZnVuY3Rpb24ocmVzb3VyY2UpCisgICAgX3NldENvb2tpZUNhY2hl
YWJsZUNoZWNrOiBmdW5jdGlvbihyZXF1ZXN0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMu
aGFzUmVzcG9uc2VIZWFkZXIocmVzb3VyY2UsICJTZXQtQ29va2llIikgJiYgdGhpcy5pc1B1Ymxp
Y2x5Q2FjaGVhYmxlKHJlc291cmNlKTsKKyAgICAgICAgcmV0dXJuIHRoaXMuaGFzUmVzcG9uc2VI
ZWFkZXIocmVxdWVzdCwgIlNldC1Db29raWUiKSAmJiB0aGlzLmlzUHVibGljbHlDYWNoZWFibGUo
cmVxdWVzdCk7CiAgICAgfQogfQogCkBAIC02ODgsNyArNjkxLDcgQEAgV2ViSW5zcGVjdG9yLkF1
ZGl0UnVsZXMuSW1hZ2VEaW1lbnNpb25zUnVsZSA9IGZ1bmN0aW9uKCkKIH0KIAogV2ViSW5zcGVj
dG9yLkF1ZGl0UnVsZXMuSW1hZ2VEaW1lbnNpb25zUnVsZS5wcm90b3R5cGUgPSB7Ci0gICAgZG9S
dW46IGZ1bmN0aW9uKHJlc291cmNlcywgcmVzdWx0LCBjYWxsYmFjaywgcHJvZ3Jlc3NNb25pdG9y
KQorICAgIGRvUnVuOiBmdW5jdGlvbihyZXF1ZXN0cywgcmVzdWx0LCBjYWxsYmFjaywgcHJvZ3Jl
c3NNb25pdG9yKQogICAgIHsKICAgICAgICAgdmFyIHVybFRvTm9EaW1lbnNpb25Db3VudCA9IHt9
OwogCkBAIC04MTQsNyArODE3LDcgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuQ3NzSW5IZWFk
UnVsZSA9IGZ1bmN0aW9uKCkKIH0KIAogV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuQ3NzSW5IZWFk
UnVsZS5wcm90b3R5cGUgPSB7Ci0gICAgZG9SdW46IGZ1bmN0aW9uKHJlc291cmNlcywgcmVzdWx0
LCBjYWxsYmFjaywgcHJvZ3Jlc3NNb25pdG9yKQorICAgIGRvUnVuOiBmdW5jdGlvbihyZXF1ZXN0
cywgcmVzdWx0LCBjYWxsYmFjaywgcHJvZ3Jlc3NNb25pdG9yKQogICAgIHsKICAgICAgICAgZnVu
Y3Rpb24gZXZhbENhbGxiYWNrKGV2YWxSZXN1bHQpCiAgICAgICAgIHsKQEAgLTg5OCw3ICs5MDEs
NyBAQCBXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5TdHlsZXNTY3JpcHRzT3JkZXJSdWxlID0gZnVu
Y3Rpb24oKQogfQogCiBXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5TdHlsZXNTY3JpcHRzT3JkZXJS
dWxlLnByb3RvdHlwZSA9IHsKLSAgICBkb1J1bjogZnVuY3Rpb24ocmVzb3VyY2VzLCByZXN1bHQs
IGNhbGxiYWNrLCBwcm9ncmVzc01vbml0b3IpCisgICAgZG9SdW46IGZ1bmN0aW9uKHJlcXVlc3Rz
LCByZXN1bHQsIGNhbGxiYWNrLCBwcm9ncmVzc01vbml0b3IpCiAgICAgewogICAgICAgICBmdW5j
dGlvbiBldmFsQ2FsbGJhY2socmVzdWx0VmFsdWUpCiAgICAgICAgIHsKQEAgLTk4MCw3ICs5ODMs
NyBAQCBXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5DU1NSdWxlQmFzZSA9IGZ1bmN0aW9uKGlkLCBu
YW1lKQogfQogCiBXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5DU1NSdWxlQmFzZS5wcm90b3R5cGUg
PSB7Ci0gICAgZG9SdW46IGZ1bmN0aW9uKHJlc291cmNlcywgcmVzdWx0LCBjYWxsYmFjaywgcHJv
Z3Jlc3NNb25pdG9yKQorICAgIGRvUnVuOiBmdW5jdGlvbihyZXF1ZXN0cywgcmVzdWx0LCBjYWxs
YmFjaywgcHJvZ3Jlc3NNb25pdG9yKQogICAgIHsKICAgICAgICAgQ1NTQWdlbnQuZ2V0QWxsU3R5
bGVTaGVldHMoc2hlZXRzQ2FsbGJhY2suYmluZCh0aGlzKSk7CiAKQEAgLTExNDEsMzcgKzExNDQs
MzcgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuQ29va2llUnVsZUJhc2UgPSBmdW5jdGlvbihp
ZCwgbmFtZSkKIH0KIAogV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuQ29va2llUnVsZUJhc2UucHJv
dG90eXBlID0gewotICAgIGRvUnVuOiBmdW5jdGlvbihyZXNvdXJjZXMsIHJlc3VsdCwgY2FsbGJh
Y2ssIHByb2dyZXNzTW9uaXRvcikKKyAgICBkb1J1bjogZnVuY3Rpb24ocmVxdWVzdHMsIHJlc3Vs
dCwgY2FsbGJhY2ssIHByb2dyZXNzTW9uaXRvcikKICAgICB7CiAgICAgICAgIHZhciBzZWxmID0g
dGhpczsKICAgICAgICAgZnVuY3Rpb24gcmVzdWx0Q2FsbGJhY2socmVjZWl2ZWRDb29raWVzLCBp
c0FkdmFuY2VkKSB7CiAgICAgICAgICAgICBpZiAocHJvZ3Jlc3NNb25pdG9yLmNhbmNlbGVkKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgc2VsZi5wcm9jZXNzQ29va2ll
cyhpc0FkdmFuY2VkID8gcmVjZWl2ZWRDb29raWVzIDogW10sIHJlc291cmNlcywgcmVzdWx0KTsK
KyAgICAgICAgICAgIHNlbGYucHJvY2Vzc0Nvb2tpZXMoaXNBZHZhbmNlZCA/IHJlY2VpdmVkQ29v
a2llcyA6IFtdLCByZXF1ZXN0cywgcmVzdWx0KTsKICAgICAgICAgICAgIGNhbGxiYWNrKHJlc3Vs
dCk7CiAgICAgICAgIH0KIAogICAgICAgICBXZWJJbnNwZWN0b3IuQ29va2llcy5nZXRDb29raWVz
QXN5bmMocmVzdWx0Q2FsbGJhY2spOwogICAgIH0sCiAKLSAgICBtYXBSZXNvdXJjZUNvb2tpZXM6
IGZ1bmN0aW9uKHJlc291cmNlc0J5RG9tYWluLCBhbGxDb29raWVzLCBjYWxsYmFjaykKKyAgICBt
YXBSZXNvdXJjZUNvb2tpZXM6IGZ1bmN0aW9uKHJlcXVlc3RzQnlEb21haW4sIGFsbENvb2tpZXMs
IGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhbGxDb29raWVz
Lmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBmb3IgKHZhciByZXNvdXJjZURvbWFpbiBpbiBy
ZXNvdXJjZXNCeURvbWFpbikgewotICAgICAgICAgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuQ29v
a2llcy5jb29raWVEb21haW5NYXRjaGVzUmVzb3VyY2VEb21haW4oYWxsQ29va2llc1tpXS5kb21h
aW4sIHJlc291cmNlRG9tYWluKSkKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2FsbGJhY2tG
b3JSZXNvdXJjZUNvb2tpZVBhaXJzKHJlc291cmNlc0J5RG9tYWluW3Jlc291cmNlRG9tYWluXSwg
YWxsQ29va2llc1tpXSwgY2FsbGJhY2spOworICAgICAgICAgICAgZm9yICh2YXIgcmVxdWVzdERv
bWFpbiBpbiByZXF1ZXN0c0J5RG9tYWluKSB7CisgICAgICAgICAgICAgICAgaWYgKFdlYkluc3Bl
Y3Rvci5Db29raWVzLmNvb2tpZURvbWFpbk1hdGNoZXNSZXNvdXJjZURvbWFpbihhbGxDb29raWVz
W2ldLmRvbWFpbiwgcmVxdWVzdERvbWFpbikpCisgICAgICAgICAgICAgICAgICAgIHRoaXMuX2Nh
bGxiYWNrRm9yUmVzb3VyY2VDb29raWVQYWlycyhyZXF1ZXN0c0J5RG9tYWluW3JlcXVlc3REb21h
aW5dLCBhbGxDb29raWVzW2ldLCBjYWxsYmFjayk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICB9LAogCi0gICAgX2NhbGxiYWNrRm9yUmVzb3VyY2VDb29raWVQYWlyczogZnVuY3Rpb24o
cmVzb3VyY2VzLCBjb29raWUsIGNhbGxiYWNrKQorICAgIF9jYWxsYmFja0ZvclJlc291cmNlQ29v
a2llUGFpcnM6IGZ1bmN0aW9uKHJlcXVlc3RzLCBjb29raWUsIGNhbGxiYWNrKQogICAgIHsKLSAg
ICAgICAgaWYgKCFyZXNvdXJjZXMpCisgICAgICAgIGlmICghcmVxdWVzdHMpCiAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzb3VyY2VzLmxlbmd0aDsg
KytpKSB7Ci0gICAgICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLkNvb2tpZXMuY29va2llTWF0Y2hl
c1Jlc291cmNlVVJMKGNvb2tpZSwgcmVzb3VyY2VzW2ldLnVybCkpCi0gICAgICAgICAgICAgICAg
Y2FsbGJhY2socmVzb3VyY2VzW2ldLCBjb29raWUpOworICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IHJlcXVlc3RzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBpZiAoV2ViSW5zcGVjdG9y
LkNvb2tpZXMuY29va2llTWF0Y2hlc1Jlc291cmNlVVJMKGNvb2tpZSwgcmVxdWVzdHNbaV0udXJs
KSkKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhyZXF1ZXN0c1tpXSwgY29va2llKTsKICAgICAg
ICAgfQogICAgIH0KIH0KQEAgLTEyMDYsNyArMTIwOSw3IEBAIFdlYkluc3BlY3Rvci5BdWRpdFJ1
bGVzLkNvb2tpZVNpemVSdWxlLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9LAogCi0gICAgcHJvY2Vzc0Nvb2tpZXM6IGZ1bmN0aW9uKGFsbENvb2tpZXMsIHJlc291
cmNlcywgcmVzdWx0KQorICAgIHByb2Nlc3NDb29raWVzOiBmdW5jdGlvbihhbGxDb29raWVzLCBy
ZXF1ZXN0cywgcmVzdWx0KQogICAgIHsKICAgICAgICAgZnVuY3Rpb24gbWF4U2l6ZVNvcnRlcihh
LCBiKQogICAgICAgICB7CkBAIC0xMjIwLDEyICsxMjIzLDEyIEBAIFdlYkluc3BlY3Rvci5BdWRp
dFJ1bGVzLkNvb2tpZVNpemVSdWxlLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB2YXIgY29va2ll
c1BlclJlc291cmNlRG9tYWluID0ge307CiAKLSAgICAgICAgZnVuY3Rpb24gY29sbGVjdG9yQ2Fs
bGJhY2socmVzb3VyY2UsIGNvb2tpZSkKKyAgICAgICAgZnVuY3Rpb24gY29sbGVjdG9yQ2FsbGJh
Y2socmVxdWVzdCwgY29va2llKQogICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgY29va2llcyA9
IGNvb2tpZXNQZXJSZXNvdXJjZURvbWFpbltyZXNvdXJjZS5kb21haW5dOworICAgICAgICAgICAg
dmFyIGNvb2tpZXMgPSBjb29raWVzUGVyUmVzb3VyY2VEb21haW5bcmVxdWVzdC5kb21haW5dOwog
ICAgICAgICAgICAgaWYgKCFjb29raWVzKSB7CiAgICAgICAgICAgICAgICAgY29va2llcyA9IFtd
OwotICAgICAgICAgICAgICAgIGNvb2tpZXNQZXJSZXNvdXJjZURvbWFpbltyZXNvdXJjZS5kb21h
aW5dID0gY29va2llczsKKyAgICAgICAgICAgICAgICBjb29raWVzUGVyUmVzb3VyY2VEb21haW5b
cmVxdWVzdC5kb21haW5dID0gY29va2llczsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNv
b2tpZXMucHVzaChjb29raWUpOwogICAgICAgICB9CkBAIC0xMjM1LDE2ICsxMjM4LDE2IEBAIFdl
Ykluc3BlY3Rvci5BdWRpdFJ1bGVzLkNvb2tpZVNpemVSdWxlLnByb3RvdHlwZSA9IHsKIAogICAg
ICAgICB2YXIgc29ydGVkQ29va2llU2l6ZXMgPSBbXTsKIAotICAgICAgICB2YXIgZG9tYWluVG9S
ZXNvdXJjZXNNYXAgPSBXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5nZXREb21haW5Ub1Jlc291cmNl
c01hcChyZXNvdXJjZXMsCisgICAgICAgIHZhciBkb21haW5Ub1Jlc291cmNlc01hcCA9IFdlYklu
c3BlY3Rvci5BdWRpdFJ1bGVzLmdldERvbWFpblRvUmVzb3VyY2VzTWFwKHJlcXVlc3RzLAogICAg
ICAgICAgICAgICAgIG51bGwsCiAgICAgICAgICAgICAgICAgdHJ1ZSk7CiAgICAgICAgIHZhciBt
YXRjaGluZ1Jlc291cmNlRGF0YSA9IHt9OwogICAgICAgICB0aGlzLm1hcFJlc291cmNlQ29va2ll
cyhkb21haW5Ub1Jlc291cmNlc01hcCwgYWxsQ29va2llcywgY29sbGVjdG9yQ2FsbGJhY2suYmlu
ZCh0aGlzKSk7CiAKLSAgICAgICAgZm9yICh2YXIgcmVzb3VyY2VEb21haW4gaW4gY29va2llc1Bl
clJlc291cmNlRG9tYWluKSB7Ci0gICAgICAgICAgICB2YXIgY29va2llcyA9IGNvb2tpZXNQZXJS
ZXNvdXJjZURvbWFpbltyZXNvdXJjZURvbWFpbl07CisgICAgICAgIGZvciAodmFyIHJlcXVlc3RE
b21haW4gaW4gY29va2llc1BlclJlc291cmNlRG9tYWluKSB7CisgICAgICAgICAgICB2YXIgY29v
a2llcyA9IGNvb2tpZXNQZXJSZXNvdXJjZURvbWFpbltyZXF1ZXN0RG9tYWluXTsKICAgICAgICAg
ICAgIHNvcnRlZENvb2tpZVNpemVzLnB1c2goewotICAgICAgICAgICAgICAgIGRvbWFpbjogcmVz
b3VyY2VEb21haW4sCisgICAgICAgICAgICAgICAgZG9tYWluOiByZXF1ZXN0RG9tYWluLAogICAg
ICAgICAgICAgICAgIGF2Z0Nvb2tpZVNpemU6IHRoaXMuX2F2ZXJhZ2UoY29va2llcyksCiAgICAg
ICAgICAgICAgICAgbWF4Q29va2llU2l6ZTogdGhpcy5fbWF4KGNvb2tpZXMpCiAgICAgICAgICAg
ICB9KTsKQEAgLTEyOTgsOSArMTMwMSw5IEBAIFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLlN0YXRp
Y0Nvb2tpZWxlc3NSdWxlID0gZnVuY3Rpb24obWluUmVzb3VyY2VzKQogfQogCiBXZWJJbnNwZWN0
b3IuQXVkaXRSdWxlcy5TdGF0aWNDb29raWVsZXNzUnVsZS5wcm90b3R5cGUgPSB7Ci0gICAgcHJv
Y2Vzc0Nvb2tpZXM6IGZ1bmN0aW9uKGFsbENvb2tpZXMsIHJlc291cmNlcywgcmVzdWx0KQorICAg
IHByb2Nlc3NDb29raWVzOiBmdW5jdGlvbihhbGxDb29raWVzLCByZXF1ZXN0cywgcmVzdWx0KQog
ICAgIHsKLSAgICAgICAgdmFyIGRvbWFpblRvUmVzb3VyY2VzTWFwID0gV2ViSW5zcGVjdG9yLkF1
ZGl0UnVsZXMuZ2V0RG9tYWluVG9SZXNvdXJjZXNNYXAocmVzb3VyY2VzLAorICAgICAgICB2YXIg
ZG9tYWluVG9SZXNvdXJjZXNNYXAgPSBXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5nZXREb21haW5U
b1Jlc291cmNlc01hcChyZXF1ZXN0cywKICAgICAgICAgICAgICAgICBbV2ViSW5zcGVjdG9yLnJl
c291cmNlVHlwZXMuU3R5bGVzaGVldCwKICAgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnJl
c291cmNlVHlwZXMuSW1hZ2VdLAogICAgICAgICAgICAgICAgIHRydWUpOwpAQCAtMTMyNiw5ICsx
MzI5LDkgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuU3RhdGljQ29va2llbGVzc1J1bGUucHJv
dG90eXBlID0gewogICAgICAgICByZXN1bHQudmlvbGF0aW9uQ291bnQgPSBiYWRVcmxzLmxlbmd0
aDsKICAgICB9LAogCi0gICAgX2NvbGxlY3RvckNhbGxiYWNrOiBmdW5jdGlvbihtYXRjaGluZ1Jl
c291cmNlRGF0YSwgcmVzb3VyY2UsIGNvb2tpZSkKKyAgICBfY29sbGVjdG9yQ2FsbGJhY2s6IGZ1
bmN0aW9uKG1hdGNoaW5nUmVzb3VyY2VEYXRhLCByZXF1ZXN0LCBjb29raWUpCiAgICAgewotICAg
ICAgICBtYXRjaGluZ1Jlc291cmNlRGF0YVtyZXNvdXJjZS51cmxdID0gKG1hdGNoaW5nUmVzb3Vy
Y2VEYXRhW3Jlc291cmNlLnVybF0gfHwgMCkgKyBjb29raWUuc2l6ZTsKKyAgICAgICAgbWF0Y2hp
bmdSZXNvdXJjZURhdGFbcmVxdWVzdC51cmxdID0gKG1hdGNoaW5nUmVzb3VyY2VEYXRhW3JlcXVl
c3QudXJsXSB8fCAwKSArIGNvb2tpZS5zaXplOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdHNQYW5lbC5qcyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRzUGFuZWwuanMKaW5kZXggNTIwMDQ3N2Mw
N2MzOWU0ZDg2NzU0MmMxN2Y0MzRkNmNjM2RjNTI0OS4uYjgzNGEwYjBmNDRiNWRkNGJhNDI5OWJm
MDU3NWM3ZDgwMGFlZmM4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9BdWRpdHNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0F1ZGl0c1BhbmVsLmpzCkBAIC0xMDMsNyArMTAzLDcgQEAgV2ViSW5zcGVjdG9yLkF1
ZGl0c1BhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgIF9leGVjdXRlQXVkaXQ6IGZ1bmN0aW9uKGNh
dGVnb3JpZXMsIHJlc3VsdENhbGxiYWNrKQogICAgIHsKLSAgICAgICAgdmFyIHJlc291cmNlcyA9
IFdlYkluc3BlY3Rvci5uZXR3b3JrTG9nLnJlc291cmNlczsKKyAgICAgICAgdmFyIHJlcXVlc3Rz
ID0gV2ViSW5zcGVjdG9yLm5ldHdvcmtMb2cucmVxdWVzdHM7CiAKICAgICAgICAgdmFyIHJ1bGVz
UmVtYWluaW5nID0gMDsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYXRlZ29yaWVzLmxl
bmd0aDsgKytpKQpAQCAtMTM4LDcgKzEzOCw3IEBAIFdlYkluc3BlY3Rvci5BdWRpdHNQYW5lbC5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICB2YXIgY2F0ZWdvcnkgPSBjYXRlZ29yaWVzW2ldOwog
ICAgICAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBXZWJJbnNwZWN0b3IuQXVkaXRDYXRlZ29yeVJl
c3VsdChjYXRlZ29yeSk7CiAgICAgICAgICAgICByZXN1bHRzLnB1c2gocmVzdWx0KTsKLSAgICAg
ICAgICAgIGNhdGVnb3J5LnJ1bihyZXNvdXJjZXMsIHJ1bGVSZXN1bHRSZWFkeUNhbGxiYWNrLmJp
bmQodGhpcywgcmVzdWx0KSwgdGhpcy5fcHJvZ3Jlc3NNb25pdG9yKTsKKyAgICAgICAgICAgIGNh
dGVnb3J5LnJ1bihyZXF1ZXN0cywgcnVsZVJlc3VsdFJlYWR5Q2FsbGJhY2suYmluZCh0aGlzLCBy
ZXN1bHQpLCB0aGlzLl9wcm9ncmVzc01vbml0b3IpOwogICAgICAgICB9CiAgICAgfSwKIApAQCAt
Mjg0LDExICsyODQsMTQgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0Q2F0ZWdvcnkucHJvdG90eXBlID0g
ewogICAgICAgICB0aGlzLl9ydWxlcy5wdXNoKHJ1bGUpOwogICAgIH0sCiAKLSAgICBydW46IGZ1
bmN0aW9uKHJlc291cmNlcywgY2FsbGJhY2ssIHByb2dyZXNzTW9uaXRvcikKKyAgICAvKioKKyAg
ICAgKiBAcGFyYW0ge0FycmF5LjxXZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVlc3Q+fSByZXF1ZXN0
cworICAgICAqLworICAgIHJ1bjogZnVuY3Rpb24ocmVxdWVzdHMsIGNhbGxiYWNrLCBwcm9ncmVz
c01vbml0b3IpCiAgICAgewogICAgICAgICB0aGlzLl9lbnN1cmVJbml0aWFsaXplZCgpOwogICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX3J1bGVzLmxlbmd0aDsgKytpKQotICAgICAg
ICAgICAgdGhpcy5fcnVsZXNbaV0ucnVuKHJlc291cmNlcywgY2FsbGJhY2ssIHByb2dyZXNzTW9u
aXRvcik7CisgICAgICAgICAgICB0aGlzLl9ydWxlc1tpXS5ydW4ocmVxdWVzdHMsIGNhbGxiYWNr
LCBwcm9ncmVzc01vbml0b3IpOwogICAgIH0sCiAKICAgICBfZW5zdXJlSW5pdGlhbGl6ZWQ6IGZ1
bmN0aW9uKCkKQEAgLTMzOCwxNyArMzQxLDIzIEBAIFdlYkluc3BlY3Rvci5BdWRpdFJ1bGUucHJv
dG90eXBlID0gewogICAgICAgICB0aGlzLl9zZXZlcml0eSA9IHNldmVyaXR5OwogICAgIH0sCiAK
LSAgICBydW46IGZ1bmN0aW9uKHJlc291cmNlcywgY2FsbGJhY2ssIHByb2dyZXNzTW9uaXRvcikK
KyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0FycmF5LjxXZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVl
c3Q+fSByZXF1ZXN0cworICAgICAqLworICAgIHJ1bjogZnVuY3Rpb24ocmVxdWVzdHMsIGNhbGxi
YWNrLCBwcm9ncmVzc01vbml0b3IpCiAgICAgewogICAgICAgICBpZiAocHJvZ3Jlc3NNb25pdG9y
LmNhbmNlbGVkKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHZhciByZXN1bHQgPSBu
ZXcgV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZVJlc3VsdCh0aGlzLmRpc3BsYXlOYW1lKTsKICAgICAg
ICAgcmVzdWx0LnNldmVyaXR5ID0gdGhpcy5fc2V2ZXJpdHk7Ci0gICAgICAgIHRoaXMuZG9SdW4o
cmVzb3VyY2VzLCByZXN1bHQsIGNhbGxiYWNrLCBwcm9ncmVzc01vbml0b3IpOworICAgICAgICB0
aGlzLmRvUnVuKHJlcXVlc3RzLCByZXN1bHQsIGNhbGxiYWNrLCBwcm9ncmVzc01vbml0b3IpOwog
ICAgIH0sCiAKLSAgICBkb1J1bjogZnVuY3Rpb24ocmVzb3VyY2VzLCByZXN1bHQsIGNhbGxiYWNr
LCBwcm9ncmVzc01vbml0b3IpCisgICAgLyoqCisgICAgICogQHBhcmFtIHtBcnJheS48V2ViSW5z
cGVjdG9yLk5ldHdvcmtSZXF1ZXN0Pn0gcmVxdWVzdHMKKyAgICAgKi8KKyAgICBkb1J1bjogZnVu
Y3Rpb24ocmVxdWVzdHMsIHJlc3VsdCwgY2FsbGJhY2ssIHByb2dyZXNzTW9uaXRvcikKICAgICB7
CiAgICAgICAgIHRocm93IG5ldyBFcnJvcigiZG9SdW4oKSBub3QgaW1wbGVtZW50ZWQiKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNv
bGVNZXNzYWdlLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xl
TWVzc2FnZS5qcwppbmRleCBjYTlkNmE2NzNjMzNiNzlhZjI0Yjg5MDAyNjNhODhmMGI4NGQ2OGI4
Li5kYmJlNDA2OWM4NTkyZDE5MmY4YWFiZjc2MzJhNWZlOGNmMzM5YjVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVNZXNzYWdlLmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZU1lc3NhZ2UuanMKQEAg
LTQyLDcgKzQyLDcgQEAKICAqIEBwYXJhbSB7bnVtYmVyPX0gcmVwZWF0Q291bnQKICAqIEBwYXJh
bSB7QXJyYXkuPFJ1bnRpbWVBZ2VudC5SZW1vdGVPYmplY3Q+PX0gcGFyYW1ldGVycwogICogQHBh
cmFtIHtDb25zb2xlQWdlbnQuU3RhY2tUcmFjZT19IHN0YWNrVHJhY2UKLSAqIEBwYXJhbSB7V2Vi
SW5zcGVjdG9yLlJlc291cmNlPX0gcmVxdWVzdAorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuTmV0
d29ya1JlcXVlc3Q9fSByZXF1ZXN0CiAgKi8KIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZUlt
cGwgPSBmdW5jdGlvbihzb3VyY2UsIGxldmVsLCBtZXNzYWdlLCBsaW5raWZpZXIsIHR5cGUsIHVy
bCwgbGluZSwgcmVwZWF0Q291bnQsIHBhcmFtZXRlcnMsIHN0YWNrVHJhY2UsIHJlcXVlc3QpCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVN
b2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZU1vZGVs
LmpzCmluZGV4IDcwYjA4N2YzOTY4MTUwNzVjY2E2NTgyN2Q5NTczZDc1NTNmNzU5NDUuLjcwZThh
YTBiMDRhOWZlZGRmODI4ZWRmOTg4MzQ3Yzk1MGY2ZTlkNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZU1vZGVsLmpzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZU1vZGVsLmpzCkBAIC0xODksNyArMTg5
LDcgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLnByb3RvdHlwZSA9IHsKICAqIEBwYXJh
bSB7bnVtYmVyPX0gcmVwZWF0Q291bnQKICAqIEBwYXJhbSB7QXJyYXkuPFJ1bnRpbWVBZ2VudC5S
ZW1vdGVPYmplY3Q+PX0gcGFyYW1ldGVycwogICogQHBhcmFtIHtDb25zb2xlQWdlbnQuU3RhY2tU
cmFjZT19IHN0YWNrVHJhY2UKLSAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlJlc291cmNlPX0gcmVx
dWVzdAorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVlc3Q9fSByZXF1ZXN0CiAg
KgogICogQHJldHVybiB7V2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlfQogICovCkBAIC0yNTQs
NyArMjU0LDcgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVEaXNwYXRjaGVyLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgICAgIHBheWxvYWQucmVwZWF0Q291bnQsCiAgICAgICAgICAgICBwYXlsb2FkLnBh
cmFtZXRlcnMsCiAgICAgICAgICAgICBwYXlsb2FkLnN0YWNrVHJhY2UsCi0gICAgICAgICAgICBw
YXlsb2FkLm5ldHdvcmtSZXF1ZXN0SWQgPyBXZWJJbnNwZWN0b3IubmV0d29ya1Jlc291cmNlQnlJ
ZChwYXlsb2FkLm5ldHdvcmtSZXF1ZXN0SWQpIDogdW5kZWZpbmVkKTsKKyAgICAgICAgICAgIHBh
eWxvYWQubmV0d29ya1JlcXVlc3RJZCA/IFdlYkluc3BlY3Rvci5uZXR3b3JrUmVxdWVzdEJ5SWQo
cGF5bG9hZC5uZXR3b3JrUmVxdWVzdElkKSA6IHVuZGVmaW5lZCk7CiAgICAgICAgIHRoaXMuX2Nv
bnNvbGUuYWRkTWVzc2FnZShjb25zb2xlTWVzc2FnZSk7CiAgICAgfSwKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db250ZW50UHJvdmlkZXJzLmpzIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db250ZW50UHJvdmlkZXJzLmpzCmlu
ZGV4IDhhODQ4NDc1N2I1MTg5YzM3ODZlYzIwNWFhZmZkNzUxNmU2NGI4YzEuLmMxNGE1MzBjYTVl
NDdhMjg5NWU1YzIzY2RkMjdmOGZkZGMyMmY4MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvQ29udGVudFByb3ZpZGVycy5qcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnRlbnRQcm92aWRlcnMuanMKQEAgLTIwNSwxMSAr
MjA1LDEyIEBAIFdlYkluc3BlY3Rvci5Db25jYXRlbmF0ZWRTY3JpcHRzQ29udGVudFByb3ZpZGVy
LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0CiAvKioKICAqIEBjb25zdHJ1Y3Rvcgog
ICogQGltcGxlbWVudHMge1dlYkluc3BlY3Rvci5Db250ZW50UHJvdmlkZXJ9CisgKiBAcGFyYW0g
e1dlYkluc3BlY3Rvci5OZXR3b3JrUmVxdWVzdH0gcmVxdWVzdAogICovCi1XZWJJbnNwZWN0b3Iu
UmVzb3VyY2VDb250ZW50UHJvdmlkZXIgPSBmdW5jdGlvbihyZXNvdXJjZSkKK1dlYkluc3BlY3Rv
ci5SZXNvdXJjZUNvbnRlbnRQcm92aWRlciA9IGZ1bmN0aW9uKHJlcXVlc3QpCiB7Ci0gICAgdGhp
cy5fbWltZVR5cGUgPSByZXNvdXJjZS50eXBlID09PSBXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBl
cy5TY3JpcHQgPyAidGV4dC9qYXZhc2NyaXB0IiA6ICJ0ZXh0L2h0bWwiOwotICAgIHRoaXMuX3Jl
c291cmNlID0gcmVzb3VyY2U7CisgICAgdGhpcy5fbWltZVR5cGUgPSByZXF1ZXN0LnR5cGUgPT09
IFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5cGVzLlNjcmlwdCA/ICJ0ZXh0L2phdmFzY3JpcHQiIDog
InRleHQvaHRtbCI7CisgICAgdGhpcy5fcmVxdWVzdCA9IHJlcXVlc3Q7CiB9OwogCiBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2VDb250ZW50UHJvdmlkZXIucHJvdG90eXBlID0gewpAQCAtMjIyLDcgKzIy
Myw3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZUNvbnRlbnRQcm92aWRlci5wcm90b3R5cGUgPSB7
CiAgICAgICAgIHsKICAgICAgICAgICAgIGNhbGxiYWNrKHRoaXMuX21pbWVUeXBlLCBjb250ZW50
KTsKICAgICAgICAgfQotICAgICAgICB0aGlzLl9yZXNvdXJjZS5yZXF1ZXN0Q29udGVudChkaWRS
ZXF1ZXN0Q29udGVudC5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5fcmVxdWVzdC5yZXF1ZXN0
Q29udGVudChkaWRSZXF1ZXN0Q29udGVudC5iaW5kKHRoaXMpKTsKICAgICB9LAogCiAgICAgLyoq
CkBAIC0yMzMsNyArMjM0LDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlQ29udGVudFByb3ZpZGVy
LnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBzZWFyY2hJbkNvbnRlbnQ6IGZ1bmN0aW9uKHF1
ZXJ5LCBjYXNlU2Vuc2l0aXZlLCBpc1JlZ2V4LCBjYWxsYmFjaykKICAgICB7Ci0gICAgICAgIHRo
aXMuX3Jlc291cmNlLnNlYXJjaEluQ29udGVudChxdWVyeSwgY2FzZVNlbnNpdGl2ZSwgaXNSZWdl
eCwgY2FsbGJhY2spOworICAgICAgICB0aGlzLl9yZXF1ZXN0LnNlYXJjaEluQ29udGVudChxdWVy
eSwgY2FzZVNlbnNpdGl2ZSwgaXNSZWdleCwgY2FsbGJhY2spOwogICAgIH0KIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclByZXNlbnRh
dGlvbk1vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dl
clByZXNlbnRhdGlvbk1vZGVsLmpzCmluZGV4IGI3MTBkNzBjZTUzMDNkYjhjOTJiMjU1NTlhYTJh
NDg4ZWI1YTAwNTMuLmExN2U3MWVkZjdhMTk5NDEzM2Y2NDk5OGY1MDg2NWE4YzRlNmI4NmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQcmVz
ZW50YXRpb25Nb2RlbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0RlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuanMKQEAgLTgwOSw3ICs4MDksNyBAQCBXZWJJbnNw
ZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbFJlc291cmNlQmluZGluZy5wcm90b3R5cGUg
PSB7CiAgICAgICogQHBhcmFtIHtzdHJpbmd9IGNvbnRlbnQKICAgICAgKiBAcGFyYW0ge2Z1bmN0
aW9uKD9zdHJpbmcpfSB1c2VyQ2FsbGJhY2sKICAgICAgKiBAcGFyYW0gez9zdHJpbmd9IG9sZENv
bnRlbnQKLSAgICAgKiBAcGFyYW0gez9zdHJpbmd9IG9sZENvbnRlbnRFbmNvZGVkCisgICAgICog
QHBhcmFtIHtib29sZWFufSBvbGRDb250ZW50RW5jb2RlZAogICAgICAqLwogICAgIF9zZXRDb250
ZW50V2l0aEluaXRpYWxDb250ZW50OiBmdW5jdGlvbih1aVNvdXJjZUNvZGUsIGNvbnRlbnQsIHVz
ZXJDYWxsYmFjaywgb2xkQ29udGVudCwgb2xkQ29udGVudEVuY29kZWQpCiAgICAgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIu
anMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblNlcnZlci5q
cwppbmRleCA2MDEzMzQ5NGQ5ZWY4M2RlMWVkZDExMGZmZDNiYTRlZDBjMGNlZTJmLi40YjRmZWFl
MWEzNDlkNTZhZDJkM2E2YjQ0Mjk4NDYyOGNkNDVlOTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblNlcnZlci5qcworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblNlcnZlci5qcwpAQCAtNDExLDcg
KzQxMSw3IEBAIFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlID0gewogCiAg
ICAgX29uR2V0SEFSOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB2YXIgcmVxdWVzdHMgPSBX
ZWJJbnNwZWN0b3IubmV0d29ya0xvZy5yZXNvdXJjZXM7CisgICAgICAgIHZhciByZXF1ZXN0cyA9
IFdlYkluc3BlY3Rvci5uZXR3b3JrTG9nLnJlcXVlc3RzOwogICAgICAgICB2YXIgaGFyTG9nID0g
KG5ldyBXZWJJbnNwZWN0b3IuSEFSTG9nKHJlcXVlc3RzKSkuYnVpbGQoKTsKICAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBoYXJMb2cuZW50cmllcy5sZW5ndGg7ICsraSkKICAgICAgICAgICAg
IGhhckxvZy5lbnRyaWVzW2ldLl9yZXF1ZXN0SWQgPSB0aGlzLl9yZXF1ZXN0SWQocmVxdWVzdHNb
aV0pOwpAQCAtNTM3LDcgKzUzNyw3IEBAIFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJv
dG90eXBlID0gewogICAgICAgICB0aGlzLl9yZWdpc3RlckF1dG9zdWJzY3JpcHRpb25IYW5kbGVy
KFdlYkluc3BlY3Rvci5leHRlbnNpb25BUEkuRXZlbnRzLkNvbnNvbGVNZXNzYWdlQWRkZWQsCiAg
ICAgICAgICAgICBXZWJJbnNwZWN0b3IuY29uc29sZSwgV2ViSW5zcGVjdG9yLkNvbnNvbGVNb2Rl
bC5FdmVudHMuTWVzc2FnZUFkZGVkLCB0aGlzLl9ub3RpZnlDb25zb2xlTWVzc2FnZUFkZGVkKTsK
ICAgICAgICAgdGhpcy5fcmVnaXN0ZXJBdXRvc3Vic2NyaXB0aW9uSGFuZGxlcihXZWJJbnNwZWN0
b3IuZXh0ZW5zaW9uQVBJLkV2ZW50cy5OZXR3b3JrUmVxdWVzdEZpbmlzaGVkLAotICAgICAgICAg
ICAgV2ViSW5zcGVjdG9yLm5ldHdvcmtNYW5hZ2VyLCBXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFn
ZXIuRXZlbnRUeXBlcy5SZXNvdXJjZUZpbmlzaGVkLCB0aGlzLl9ub3RpZnlSZXF1ZXN0RmluaXNo
ZWQpOworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLm5ldHdvcmtNYW5hZ2VyLCBXZWJJbnNwZWN0
b3IuTmV0d29ya01hbmFnZXIuRXZlbnRUeXBlcy5SZXF1ZXN0RmluaXNoZWQsIHRoaXMuX25vdGlm
eVJlcXVlc3RGaW5pc2hlZCk7CiAgICAgICAgIHRoaXMuX3JlZ2lzdGVyQXV0b3N1YnNjcmlwdGlv
bkhhbmRsZXIoV2ViSW5zcGVjdG9yLmV4dGVuc2lvbkFQSS5FdmVudHMuUmVzb3VyY2VBZGRlZCwK
ICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5yZXNvdXJjZVRyZWVNb2RlbCwKICAgICAgICAgICAg
IFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5FdmVudFR5cGVzLlJlc291cmNlQWRkZWQs
CkBAIC01OTIsNyArNTkyLDcgQEAgV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5
cGUgPSB7CiAKICAgICBfbm90aWZ5UmVxdWVzdEZpbmlzaGVkOiBmdW5jdGlvbihldmVudCkKICAg
ICB7Ci0gICAgICAgIHZhciByZXF1ZXN0ID0gZXZlbnQuZGF0YTsKKyAgICAgICAgdmFyIHJlcXVl
c3QgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5OZXR3b3JrUmVxdWVzdH0gKi8gZXZlbnQuZGF0
YTsKICAgICAgICAgdGhpcy5fcG9zdE5vdGlmaWNhdGlvbihXZWJJbnNwZWN0b3IuZXh0ZW5zaW9u
QVBJLkV2ZW50cy5OZXR3b3JrUmVxdWVzdEZpbmlzaGVkLCB0aGlzLl9yZXF1ZXN0SWQocmVxdWVz
dCksIChuZXcgV2ViSW5zcGVjdG9yLkhBUkVudHJ5KHJlcXVlc3QpKS5idWlsZCgpKTsKICAgICB9
LAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hBUkVu
dHJ5LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IQVJFbnRyeS5qcwpp
bmRleCBlOWMxZDM4MzBiOGY1NjkxOTM5MTc3YWVlZjgzZDZiNDA1MTI5YTk3Li5mNTQxYjIzYTUx
ZjEzYmVhODQ1YjQwYjhiZWQzZjk4MzY0YjhkMDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hBUkVudHJ5LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvSEFSRW50cnkuanMKQEAgLTM2LDExICszNiwxMSBAQAogCiAvKioK
ICAqIEBjb25zdHJ1Y3RvcgotICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2V9IHJlc291
cmNlCisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5OZXR3b3JrUmVxdWVzdH0gcmVxdWVzdAogICov
Ci1XZWJJbnNwZWN0b3IuSEFSRW50cnkgPSBmdW5jdGlvbihyZXNvdXJjZSkKK1dlYkluc3BlY3Rv
ci5IQVJFbnRyeSA9IGZ1bmN0aW9uKHJlcXVlc3QpCiB7Ci0gICAgdGhpcy5fcmVzb3VyY2UgPSBy
ZXNvdXJjZTsKKyAgICB0aGlzLl9yZXF1ZXN0ID0gcmVxdWVzdDsKIH0KIAogV2ViSW5zcGVjdG9y
LkhBUkVudHJ5LnByb3RvdHlwZSA9IHsKQEAgLTUwLDE0ICs1MCwxNCBAQCBXZWJJbnNwZWN0b3Iu
SEFSRW50cnkucHJvdG90eXBlID0gewogICAgIGJ1aWxkOiBmdW5jdGlvbigpCiAgICAgewogICAg
ICAgICB2YXIgZW50cnkgPSAgewotICAgICAgICAgICAgc3RhcnRlZERhdGVUaW1lOiBuZXcgRGF0
ZSh0aGlzLl9yZXNvdXJjZS5zdGFydFRpbWUgKiAxMDAwKSwKLSAgICAgICAgICAgIHRpbWU6IFdl
Ykluc3BlY3Rvci5IQVJFbnRyeS5fdG9NaWxsaXNlY29uZHModGhpcy5fcmVzb3VyY2UuZHVyYXRp
b24pLAorICAgICAgICAgICAgc3RhcnRlZERhdGVUaW1lOiBuZXcgRGF0ZSh0aGlzLl9yZXF1ZXN0
LnN0YXJ0VGltZSAqIDEwMDApLAorICAgICAgICAgICAgdGltZTogV2ViSW5zcGVjdG9yLkhBUkVu
dHJ5Ll90b01pbGxpc2Vjb25kcyh0aGlzLl9yZXF1ZXN0LmR1cmF0aW9uKSwKICAgICAgICAgICAg
IHJlcXVlc3Q6IHRoaXMuX2J1aWxkUmVxdWVzdCgpLAogICAgICAgICAgICAgcmVzcG9uc2U6IHRo
aXMuX2J1aWxkUmVzcG9uc2UoKSwKICAgICAgICAgICAgIGNhY2hlOiB7IH0sIC8vIE5vdCBzdXBw
b3J0ZWQgeWV0LgogICAgICAgICAgICAgdGltaW5nczogdGhpcy5fYnVpbGRUaW1pbmdzKCkKICAg
ICAgICAgfTsKLSAgICAgICAgdmFyIHBhZ2UgPSBXZWJJbnNwZWN0b3IubmV0d29ya0xvZy5wYWdl
TG9hZEZvclJlc291cmNlKHRoaXMuX3Jlc291cmNlKTsKKyAgICAgICAgdmFyIHBhZ2UgPSBXZWJJ
bnNwZWN0b3IubmV0d29ya0xvZy5wYWdlTG9hZEZvclJlcXVlc3QodGhpcy5fcmVxdWVzdCk7CiAg
ICAgICAgIGlmIChwYWdlKQogICAgICAgICAgICAgZW50cnkucGFnZXJlZiA9ICJwYWdlXyIgKyBw
YWdlLmlkOwogICAgICAgICByZXR1cm4gZW50cnk7CkBAIC02OSwxNiArNjksMTYgQEAgV2ViSW5z
cGVjdG9yLkhBUkVudHJ5LnByb3RvdHlwZSA9IHsKICAgICBfYnVpbGRSZXF1ZXN0OiBmdW5jdGlv
bigpCiAgICAgewogICAgICAgICB2YXIgcmVzID0gewotICAgICAgICAgICAgbWV0aG9kOiB0aGlz
Ll9yZXNvdXJjZS5yZXF1ZXN0TWV0aG9kLAotICAgICAgICAgICAgdXJsOiB0aGlzLl9idWlsZFJl
cXVlc3RVUkwodGhpcy5fcmVzb3VyY2UudXJsKSwKLSAgICAgICAgICAgIGh0dHBWZXJzaW9uOiB0
aGlzLl9yZXNvdXJjZS5yZXF1ZXN0SHR0cFZlcnNpb24sCi0gICAgICAgICAgICBoZWFkZXJzOiB0
aGlzLl9idWlsZEhlYWRlcnModGhpcy5fcmVzb3VyY2UucmVxdWVzdEhlYWRlcnMpLAotICAgICAg
ICAgICAgcXVlcnlTdHJpbmc6IHRoaXMuX2J1aWxkUGFyYW1ldGVycyh0aGlzLl9yZXNvdXJjZS5x
dWVyeVBhcmFtZXRlcnMgfHwgW10pLAotICAgICAgICAgICAgY29va2llczogdGhpcy5fYnVpbGRD
b29raWVzKHRoaXMuX3Jlc291cmNlLnJlcXVlc3RDb29raWVzIHx8IFtdKSwKLSAgICAgICAgICAg
IGhlYWRlcnNTaXplOiB0aGlzLl9yZXNvdXJjZS5yZXF1ZXN0SGVhZGVyc1NpemUsCisgICAgICAg
ICAgICBtZXRob2Q6IHRoaXMuX3JlcXVlc3QucmVxdWVzdE1ldGhvZCwKKyAgICAgICAgICAgIHVy
bDogdGhpcy5fYnVpbGRSZXF1ZXN0VVJMKHRoaXMuX3JlcXVlc3QudXJsKSwKKyAgICAgICAgICAg
IGh0dHBWZXJzaW9uOiB0aGlzLl9yZXF1ZXN0LnJlcXVlc3RIdHRwVmVyc2lvbiwKKyAgICAgICAg
ICAgIGhlYWRlcnM6IHRoaXMuX2J1aWxkSGVhZGVycyh0aGlzLl9yZXF1ZXN0LnJlcXVlc3RIZWFk
ZXJzKSwKKyAgICAgICAgICAgIHF1ZXJ5U3RyaW5nOiB0aGlzLl9idWlsZFBhcmFtZXRlcnModGhp
cy5fcmVxdWVzdC5xdWVyeVBhcmFtZXRlcnMgfHwgW10pLAorICAgICAgICAgICAgY29va2llczog
dGhpcy5fYnVpbGRDb29raWVzKHRoaXMuX3JlcXVlc3QucmVxdWVzdENvb2tpZXMgfHwgW10pLAor
ICAgICAgICAgICAgaGVhZGVyc1NpemU6IHRoaXMuX3JlcXVlc3QucmVxdWVzdEhlYWRlcnNTaXpl
LAogICAgICAgICAgICAgYm9keVNpemU6IHRoaXMucmVxdWVzdEJvZHlTaXplCiAgICAgICAgIH07
Ci0gICAgICAgIGlmICh0aGlzLl9yZXNvdXJjZS5yZXF1ZXN0Rm9ybURhdGEpCisgICAgICAgIGlm
ICh0aGlzLl9yZXF1ZXN0LnJlcXVlc3RGb3JtRGF0YSkKICAgICAgICAgICAgIHJlcy5wb3N0RGF0
YSA9IHRoaXMuX2J1aWxkUG9zdERhdGEoKTsKIAogICAgICAgICByZXR1cm4gcmVzOwpAQCAtOTAs
MTQgKzkwLDE0IEBAIFdlYkluc3BlY3Rvci5IQVJFbnRyeS5wcm90b3R5cGUgPSB7CiAgICAgX2J1
aWxkUmVzcG9uc2U6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiB7Ci0gICAgICAg
ICAgICBzdGF0dXM6IHRoaXMuX3Jlc291cmNlLnN0YXR1c0NvZGUsCi0gICAgICAgICAgICBzdGF0
dXNUZXh0OiB0aGlzLl9yZXNvdXJjZS5zdGF0dXNUZXh0LAotICAgICAgICAgICAgaHR0cFZlcnNp
b246IHRoaXMuX3Jlc291cmNlLnJlc3BvbnNlSHR0cFZlcnNpb24sCi0gICAgICAgICAgICBoZWFk
ZXJzOiB0aGlzLl9idWlsZEhlYWRlcnModGhpcy5fcmVzb3VyY2UucmVzcG9uc2VIZWFkZXJzKSwK
LSAgICAgICAgICAgIGNvb2tpZXM6IHRoaXMuX2J1aWxkQ29va2llcyh0aGlzLl9yZXNvdXJjZS5y
ZXNwb25zZUNvb2tpZXMgfHwgW10pLAorICAgICAgICAgICAgc3RhdHVzOiB0aGlzLl9yZXF1ZXN0
LnN0YXR1c0NvZGUsCisgICAgICAgICAgICBzdGF0dXNUZXh0OiB0aGlzLl9yZXF1ZXN0LnN0YXR1
c1RleHQsCisgICAgICAgICAgICBodHRwVmVyc2lvbjogdGhpcy5fcmVxdWVzdC5yZXNwb25zZUh0
dHBWZXJzaW9uLAorICAgICAgICAgICAgaGVhZGVyczogdGhpcy5fYnVpbGRIZWFkZXJzKHRoaXMu
X3JlcXVlc3QucmVzcG9uc2VIZWFkZXJzKSwKKyAgICAgICAgICAgIGNvb2tpZXM6IHRoaXMuX2J1
aWxkQ29va2llcyh0aGlzLl9yZXF1ZXN0LnJlc3BvbnNlQ29va2llcyB8fCBbXSksCiAgICAgICAg
ICAgICBjb250ZW50OiB0aGlzLl9idWlsZENvbnRlbnQoKSwKLSAgICAgICAgICAgIHJlZGlyZWN0
VVJMOiB0aGlzLl9yZXNvdXJjZS5yZXNwb25zZUhlYWRlclZhbHVlKCJMb2NhdGlvbiIpIHx8ICIi
LAotICAgICAgICAgICAgaGVhZGVyc1NpemU6IHRoaXMuX3Jlc291cmNlLnJlc3BvbnNlSGVhZGVy
c1NpemUsCisgICAgICAgICAgICByZWRpcmVjdFVSTDogdGhpcy5fcmVxdWVzdC5yZXNwb25zZUhl
YWRlclZhbHVlKCJMb2NhdGlvbiIpIHx8ICIiLAorICAgICAgICAgICAgaGVhZGVyc1NpemU6IHRo
aXMuX3JlcXVlc3QucmVzcG9uc2VIZWFkZXJzU2l6ZSwKICAgICAgICAgICAgIGJvZHlTaXplOiB0
aGlzLnJlc3BvbnNlQm9keVNpemUKICAgICAgICAgfTsKICAgICB9LApAQCAtMTA4LDkgKzEwOCw5
IEBAIFdlYkluc3BlY3Rvci5IQVJFbnRyeS5wcm90b3R5cGUgPSB7CiAgICAgX2J1aWxkQ29udGVu
dDogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdmFyIGNvbnRlbnQgPSB7Ci0gICAgICAgICAg
ICBzaXplOiB0aGlzLl9yZXNvdXJjZS5yZXNvdXJjZVNpemUsCi0gICAgICAgICAgICBtaW1lVHlw
ZTogdGhpcy5fcmVzb3VyY2UubWltZVR5cGUsCi0gICAgICAgICAgICAvLyB0ZXh0OiB0aGlzLl9y
ZXNvdXJjZS5jb250ZW50IC8vIFRPRE86IHB1bGwgb3V0IGludG8gYSBib29sZWFuIGZsYWcsIGFz
IGNvbnRlbnQgY2FuIGJlIGh1Z2UgKGFuZCBuZWVkcyB0byBiZSByZXF1ZXN0ZWQgd2l0aCBhbiBh
c3luYyBjYWxsKQorICAgICAgICAgICAgc2l6ZTogdGhpcy5fcmVxdWVzdC5yZXNvdXJjZVNpemUs
CisgICAgICAgICAgICBtaW1lVHlwZTogdGhpcy5fcmVxdWVzdC5taW1lVHlwZSwKKyAgICAgICAg
ICAgIC8vIHRleHQ6IHRoaXMuX3JlcXVlc3QuY29udGVudCAvLyBUT0RPOiBwdWxsIG91dCBpbnRv
IGEgYm9vbGVhbiBmbGFnLCBhcyBjb250ZW50IGNhbiBiZSBodWdlIChhbmQgbmVlZHMgdG8gYmUg
cmVxdWVzdGVkIHdpdGggYW4gYXN5bmMgY2FsbCkKICAgICAgICAgfTsKICAgICAgICAgdmFyIGNv
bXByZXNzaW9uID0gdGhpcy5yZXNwb25zZUNvbXByZXNzaW9uOwogICAgICAgICBpZiAodHlwZW9m
IGNvbXByZXNzaW9uID09PSAibnVtYmVyIikKQEAgLTEzMyw3ICsxMzMsNyBAQCBXZWJJbnNwZWN0
b3IuSEFSRW50cnkucHJvdG90eXBlID0gewogICAgICAgICBpZiAoc3NsICE9PSAtMSAmJiBzZW5k
ICE9PSAtMSkKICAgICAgICAgICAgIHNlbmQgLT0gc3NsOwogCi0gICAgICAgIGlmICh0aGlzLl9y
ZXNvdXJjZS5jb25uZWN0aW9uUmV1c2VkKSB7CisgICAgICAgIGlmICh0aGlzLl9yZXF1ZXN0LmNv
bm5lY3Rpb25SZXVzZWQpIHsKICAgICAgICAgICAgIGNvbm5lY3QgPSAtMTsKICAgICAgICAgICAg
IGJsb2NrZWQgPSB3YWl0Rm9yQ29ubmVjdGlvbjsKICAgICAgICAgfSBlbHNlIHsKQEAgLTE0OSw3
ICsxNDksNyBAQCBXZWJJbnNwZWN0b3IuSEFSRW50cnkucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgY29ubmVjdDogY29ubmVjdCwKICAgICAgICAgICAgIHNlbmQ6IHNlbmQsCiAgICAgICAgICAg
ICB3YWl0OiB0aGlzLl9pbnRlcnZhbCgic2VuZEVuZCIsICJyZWNlaXZlSGVhZGVyc0VuZCIpLAot
ICAgICAgICAgICAgcmVjZWl2ZTogV2ViSW5zcGVjdG9yLkhBUkVudHJ5Ll90b01pbGxpc2Vjb25k
cyh0aGlzLl9yZXNvdXJjZS5yZWNlaXZlRHVyYXRpb24pLAorICAgICAgICAgICAgcmVjZWl2ZTog
V2ViSW5zcGVjdG9yLkhBUkVudHJ5Ll90b01pbGxpc2Vjb25kcyh0aGlzLl9yZXF1ZXN0LnJlY2Vp
dmVEdXJhdGlvbiksCiAgICAgICAgICAgICBzc2w6IHNzbAogICAgICAgICB9OwogICAgIH0sCkBA
IC0xNzEsMTEgKzE3MSwxMSBAQCBXZWJJbnNwZWN0b3IuSEFSRW50cnkucHJvdG90eXBlID0gewog
ICAgIF9idWlsZFBvc3REYXRhOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB2YXIgcmVzID0g
ewotICAgICAgICAgICAgbWltZVR5cGU6IHRoaXMuX3Jlc291cmNlLnJlcXVlc3RIZWFkZXJWYWx1
ZSgiQ29udGVudC1UeXBlIiksCi0gICAgICAgICAgICB0ZXh0OiB0aGlzLl9yZXNvdXJjZS5yZXF1
ZXN0Rm9ybURhdGEKKyAgICAgICAgICAgIG1pbWVUeXBlOiB0aGlzLl9yZXF1ZXN0LnJlcXVlc3RI
ZWFkZXJWYWx1ZSgiQ29udGVudC1UeXBlIiksCisgICAgICAgICAgICB0ZXh0OiB0aGlzLl9yZXF1
ZXN0LnJlcXVlc3RGb3JtRGF0YQogICAgICAgICB9OwotICAgICAgICBpZiAodGhpcy5fcmVzb3Vy
Y2UuZm9ybVBhcmFtZXRlcnMpCi0gICAgICAgICAgIHJlcy5wYXJhbXMgPSB0aGlzLl9idWlsZFBh
cmFtZXRlcnModGhpcy5fcmVzb3VyY2UuZm9ybVBhcmFtZXRlcnMpOworICAgICAgICBpZiAodGhp
cy5fcmVxdWVzdC5mb3JtUGFyYW1ldGVycykKKyAgICAgICAgICAgcmVzLnBhcmFtcyA9IHRoaXMu
X2J1aWxkUGFyYW1ldGVycyh0aGlzLl9yZXF1ZXN0LmZvcm1QYXJhbWV0ZXJzKTsKICAgICAgICAg
cmV0dXJuIHJlczsKICAgICB9LAogCkBAIC0yMTcsNyArMjE3LDcgQEAgV2ViSW5zcGVjdG9yLkhB
UkVudHJ5LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHZhbHVlOiBjb29raWUudmFsdWUsCiAg
ICAgICAgICAgICBwYXRoOiBjb29raWUucGF0aCwKICAgICAgICAgICAgIGRvbWFpbjogY29va2ll
LmRvbWFpbiwKLSAgICAgICAgICAgIGV4cGlyZXM6IGNvb2tpZS5leHBpcmVzKG5ldyBEYXRlKHRo
aXMuX3Jlc291cmNlLnN0YXJ0VGltZSAqIDEwMDApKSwKKyAgICAgICAgICAgIGV4cGlyZXM6IGNv
b2tpZS5leHBpcmVzKG5ldyBEYXRlKHRoaXMuX3JlcXVlc3Quc3RhcnRUaW1lICogMTAwMCkpLAog
ICAgICAgICAgICAgaHR0cE9ubHk6IGNvb2tpZS5odHRwT25seSwKICAgICAgICAgICAgIHNlY3Vy
ZTogY29va2llLnNlY3VyZQogICAgICAgICB9OwpAQCAtMjMwLDcgKzIzMCw3IEBAIFdlYkluc3Bl
Y3Rvci5IQVJFbnRyeS5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX2ludGVydmFsOiBmdW5j
dGlvbihzdGFydCwgZW5kKQogICAgIHsKLSAgICAgICAgdmFyIHRpbWluZyA9IHRoaXMuX3Jlc291
cmNlLnRpbWluZzsKKyAgICAgICAgdmFyIHRpbWluZyA9IHRoaXMuX3JlcXVlc3QudGltaW5nOwog
ICAgICAgICBpZiAoIXRpbWluZykKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgdmFy
IHN0YXJ0VGltZSA9IHRpbWluZ1tzdGFydF07CkBAIC0yNDIsNyArMjQyLDcgQEAgV2ViSW5zcGVj
dG9yLkhBUkVudHJ5LnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBnZXQgcmVxdWVzdEJvZHlT
aXplKCkKICAgICB7Ci0gICAgICAgIHJldHVybiAhdGhpcy5fcmVzb3VyY2UucmVxdWVzdEZvcm1E
YXRhID8gMCA6IHRoaXMuX3Jlc291cmNlLnJlcXVlc3RGb3JtRGF0YS5sZW5ndGg7CisgICAgICAg
IHJldHVybiAhdGhpcy5fcmVxdWVzdC5yZXF1ZXN0Rm9ybURhdGEgPyAwIDogdGhpcy5fcmVxdWVz
dC5yZXF1ZXN0Rm9ybURhdGEubGVuZ3RoOwogICAgIH0sCiAKICAgICAvKioKQEAgLTI1MCw5ICsy
NTAsOSBAQCBXZWJJbnNwZWN0b3IuSEFSRW50cnkucHJvdG90eXBlID0gewogICAgICAqLwogICAg
IGdldCByZXNwb25zZUJvZHlTaXplKCkKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9yZXNvdXJj
ZS5jYWNoZWQgfHwgdGhpcy5fcmVzb3VyY2Uuc3RhdHVzQ29kZSA9PT0gMzA0KQorICAgICAgICBp
ZiAodGhpcy5fcmVxdWVzdC5jYWNoZWQgfHwgdGhpcy5fcmVxdWVzdC5zdGF0dXNDb2RlID09PSAz
MDQpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNl
LnRyYW5zZmVyU2l6ZSAtIHRoaXMuX3Jlc291cmNlLnJlc3BvbnNlSGVhZGVyc1NpemUKKyAgICAg
ICAgcmV0dXJuIHRoaXMuX3JlcXVlc3QudHJhbnNmZXJTaXplIC0gdGhpcy5fcmVxdWVzdC5yZXNw
b25zZUhlYWRlcnNTaXplCiAgICAgfSwKIAogICAgIC8qKgpAQCAtMjYwLDkgKzI2MCw5IEBAIFdl
Ykluc3BlY3Rvci5IQVJFbnRyeS5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgZ2V0IHJlc3Bv
bnNlQ29tcHJlc3Npb24oKQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX3Jlc291cmNlLmNhY2hl
ZCB8fCB0aGlzLl9yZXNvdXJjZS5zdGF0dXNDb2RlID09PSAzMDQpCisgICAgICAgIGlmICh0aGlz
Ll9yZXF1ZXN0LmNhY2hlZCB8fCB0aGlzLl9yZXF1ZXN0LnN0YXR1c0NvZGUgPT09IDMwNCkKICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlLnJlc291cmNl
U2l6ZSAtICh0aGlzLl9yZXNvdXJjZS50cmFuc2ZlclNpemUgLSB0aGlzLl9yZXNvdXJjZS5yZXNw
b25zZUhlYWRlcnNTaXplKTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3JlcXVlc3QucmVzb3VyY2VT
aXplIC0gKHRoaXMuX3JlcXVlc3QudHJhbnNmZXJTaXplIC0gdGhpcy5fcmVxdWVzdC5yZXNwb25z
ZUhlYWRlcnNTaXplKTsKICAgICB9CiB9CiAKQEAgLTI3NywxMSArMjc3LDExIEBAIFdlYkluc3Bl
Y3Rvci5IQVJFbnRyeS5fdG9NaWxsaXNlY29uZHMgPSBmdW5jdGlvbih0aW1lKQogCiAvKioKICAq
IEBjb25zdHJ1Y3RvcgotICogQHBhcmFtIHtBcnJheS48V2ViSW5zcGVjdG9yLlJlc291cmNlPn0g
cmVzb3VyY2VzCisgKiBAcGFyYW0ge0FycmF5LjxXZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVlc3Q+
fSByZXF1ZXN0cwogICovCi1XZWJJbnNwZWN0b3IuSEFSTG9nID0gZnVuY3Rpb24ocmVzb3VyY2Vz
KQorV2ViSW5zcGVjdG9yLkhBUkxvZyA9IGZ1bmN0aW9uKHJlcXVlc3RzKQogewotICAgIHRoaXMu
X3Jlc291cmNlcyA9IHJlc291cmNlczsKKyAgICB0aGlzLl9yZXF1ZXN0cyA9IHJlcXVlc3RzOwog
fQogCiBXZWJJbnNwZWN0b3IuSEFSTG9nLnByb3RvdHlwZSA9IHsKQEAgLTI5OSw3ICsyOTksNyBA
QCBXZWJJbnNwZWN0b3IuSEFSTG9nLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICB2ZXJz
aW9uOiB3ZWJLaXRWZXJzaW9uID8gd2ViS2l0VmVyc2lvblsxXSA6ICJuL2EiCiAgICAgICAgICAg
ICB9LAogICAgICAgICAgICAgcGFnZXM6IHRoaXMuX2J1aWxkUGFnZXMoKSwKLSAgICAgICAgICAg
IGVudHJpZXM6IHRoaXMuX3Jlc291cmNlcy5tYXAodGhpcy5fY29udmVydFJlc291cmNlLmJpbmQo
dGhpcykpCisgICAgICAgICAgICBlbnRyaWVzOiB0aGlzLl9yZXF1ZXN0cy5tYXAodGhpcy5fY29u
dmVydFJlc291cmNlLmJpbmQodGhpcykpCiAgICAgICAgIH0KICAgICB9LAogCkBAIC0zMTAsOCAr
MzEwLDggQEAgV2ViSW5zcGVjdG9yLkhBUkxvZy5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAg
ICB2YXIgc2VlbklkZW50aWZpZXJzID0ge307CiAgICAgICAgIHZhciBwYWdlcyA9IFtdOwotICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX3Jlc291cmNlcy5sZW5ndGg7ICsraSkgewot
ICAgICAgICAgICAgdmFyIHBhZ2UgPSBXZWJJbnNwZWN0b3IubmV0d29ya0xvZy5wYWdlTG9hZEZv
clJlc291cmNlKHRoaXMuX3Jlc291cmNlc1tpXSk7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgdGhpcy5fcmVxdWVzdHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHZhciBwYWdlID0g
V2ViSW5zcGVjdG9yLm5ldHdvcmtMb2cucGFnZUxvYWRGb3JSZXF1ZXN0KHRoaXMuX3JlcXVlc3Rz
W2ldKTsKICAgICAgICAgICAgIGlmICghcGFnZSB8fCBzZWVuSWRlbnRpZmllcnNbcGFnZS5pZF0p
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBzZWVuSWRlbnRpZmllcnNb
cGFnZS5pZF0gPSB0cnVlOwpAQCAtMzM4LDEyICszMzgsMTIgQEAgV2ViSW5zcGVjdG9yLkhBUkxv
Zy5wcm90b3R5cGUgPSB7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEBwYXJhbSB7V2ViSW5z
cGVjdG9yLlJlc291cmNlfSByZXNvdXJjZQorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLk5l
dHdvcmtSZXF1ZXN0fSByZXF1ZXN0CiAgICAgICogQHJldHVybiB7T2JqZWN0fQogICAgICAqLwot
ICAgIF9jb252ZXJ0UmVzb3VyY2U6IGZ1bmN0aW9uKHJlc291cmNlKQorICAgIF9jb252ZXJ0UmVz
b3VyY2U6IGZ1bmN0aW9uKHJlcXVlc3QpCiAgICAgewotICAgICAgICByZXR1cm4gKG5ldyBXZWJJ
bnNwZWN0b3IuSEFSRW50cnkocmVzb3VyY2UpKS5idWlsZCgpOworICAgICAgICByZXR1cm4gKG5l
dyBXZWJJbnNwZWN0b3IuSEFSRW50cnkocmVxdWVzdCkpLmJ1aWxkKCk7CiAgICAgfSwKIAogICAg
IC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3
b3JrSXRlbVZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdv
cmtJdGVtVmlldy5qcwppbmRleCA1YWFlYjQxNjRlZWU0ZDYzZmYwMmEyNTdkNTg4ZmI0YzkwNGQ1
OWE4Li45YzljYWMzMTdjMTUwMTY2ODNkNDQzY2MyYWMyMzZiZWIxMWJmMGY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtJdGVtVmlldy5qcwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtJdGVtVmlldy5q
cwpAQCAtMzgsNyArMzgsNyBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya0l0ZW1WaWV3ID0gZnVuY3Rp
b24ocmVzb3VyY2UpCiAKICAgICB0aGlzLmVsZW1lbnQuYWRkU3R5bGVDbGFzcygibmV0d29yay1p
dGVtLXZpZXciKTsKIAotICAgIHZhciBoZWFkZXJzVmlldyA9IG5ldyBXZWJJbnNwZWN0b3IuUmVz
b3VyY2VIZWFkZXJzVmlldyhyZXNvdXJjZSk7CisgICAgdmFyIGhlYWRlcnNWaWV3ID0gbmV3IFdl
Ykluc3BlY3Rvci5SZXNvdXJjZUhlYWRlcnNWaWV3KHJlc291cmNlLnJlcXVlc3QpOwogICAgIHRo
aXMuYXBwZW5kVGFiKCJoZWFkZXJzIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJIZWFkZXJzIiks
IGhlYWRlcnNWaWV3KTsKIAogICAgIHZhciByZXNwb25zZVZpZXcgPSBuZXcgV2ViSW5zcGVjdG9y
LlJlc291cmNlUmVzcG9uc2VWaWV3KHJlc291cmNlKTsKQEAgLTQ4LDEyICs0OCwxMiBAQCBXZWJJ
bnNwZWN0b3IuTmV0d29ya0l0ZW1WaWV3ID0gZnVuY3Rpb24ocmVzb3VyY2UpCiAgICAgdGhpcy5h
cHBlbmRUYWIoInJlc3BvbnNlIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXNwb25zZSIpLCBy
ZXNwb25zZVZpZXcpOwogCiAgICAgaWYgKHJlc291cmNlLnJlcXVlc3RDb29raWVzIHx8IHJlc291
cmNlLnJlc3BvbnNlQ29va2llcykgewotICAgICAgICB0aGlzLl9jb29raWVzVmlldyA9IG5ldyBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VDb29raWVzVmlldyhyZXNvdXJjZSk7CisgICAgICAgIHRoaXMu
X2Nvb2tpZXNWaWV3ID0gbmV3IFdlYkluc3BlY3Rvci5SZXNvdXJjZUNvb2tpZXNWaWV3KHJlc291
cmNlLnJlcXVlc3QpOwogICAgICAgICB0aGlzLmFwcGVuZFRhYigiY29va2llcyIsIFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiQ29va2llcyIpLCB0aGlzLl9jb29raWVzVmlldyk7CiAgICAgfQogCiAg
ICAgaWYgKHJlc291cmNlLnRpbWluZykgewotICAgICAgICB2YXIgdGltaW5nVmlldyA9IG5ldyBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VUaW1pbmdWaWV3KHJlc291cmNlKTsKKyAgICAgICAgdmFyIHRp
bWluZ1ZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLlJlc291cmNlVGltaW5nVmlldyhyZXNvdXJjZS5y
ZXF1ZXN0KTsKICAgICAgICAgdGhpcy5hcHBlbmRUYWIoInRpbWluZyIsIFdlYkluc3BlY3Rvci5V
SVN0cmluZygiVGltaW5nIiksIHRpbWluZ1ZpZXcpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrTG9nLmpzIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrTG9nLmpzCmluZGV4IDNjYjE2NGUyNDM3
MTNhYzQwNjExODEzMzEzZGY5MjI4ODdjNTEwOTguLjhiZjY0MjJjZWMwZDJhZmE3YjhiNzM4M2Zj
NzlhNGRiMzJiMzg5MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvTmV0d29ya0xvZy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL05ldHdvcmtMb2cuanMKQEAgLTMzLDggKzMzLDggQEAKICAqLwogV2ViSW5zcGVjdG9yLk5l
dHdvcmtMb2cgPSBmdW5jdGlvbigpCiB7Ci0gICAgdGhpcy5fcmVzb3VyY2VzID0gW107Ci0gICAg
V2ViSW5zcGVjdG9yLm5ldHdvcmtNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
Lk5ldHdvcmtNYW5hZ2VyLkV2ZW50VHlwZXMuUmVzb3VyY2VTdGFydGVkLCB0aGlzLl9vblJlc291
cmNlU3RhcnRlZCwgdGhpcyk7CisgICAgdGhpcy5fcmVxdWVzdHMgPSBbXTsKKyAgICBXZWJJbnNw
ZWN0b3IubmV0d29ya01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuTmV0d29y
a01hbmFnZXIuRXZlbnRUeXBlcy5SZXF1ZXN0U3RhcnRlZCwgdGhpcy5fb25SZXF1ZXN0U3RhcnRl
ZCwgdGhpcyk7CiAgICAgV2ViSW5zcGVjdG9yLnJlc291cmNlVHJlZU1vZGVsLmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLkV2ZW50VHlwZXMuTWFpbkZyYW1l
TmF2aWdhdGVkLCB0aGlzLl9vbk1haW5GcmFtZU5hdmlnYXRlZCwgdGhpcyk7CiAgICAgV2ViSW5z
cGVjdG9yLnJlc291cmNlVHJlZU1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJl
c291cmNlVHJlZU1vZGVsLkV2ZW50VHlwZXMuT25Mb2FkLCB0aGlzLl9vbkxvYWQsIHRoaXMpOwog
ICAgIFdlYkluc3BlY3Rvci5yZXNvdXJjZVRyZWVNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5FdmVudFR5cGVzLkRPTUNvbnRlbnRMb2FkZWQsIHRo
aXMuX29uRE9NQ29udGVudExvYWRlZCwgdGhpcyk7CkBAIC00MiwyMCArNDIsMjAgQEAgV2ViSW5z
cGVjdG9yLk5ldHdvcmtMb2cgPSBmdW5jdGlvbigpCiAKIFdlYkluc3BlY3Rvci5OZXR3b3JrTG9n
LnByb3RvdHlwZSA9IHsKICAgICAvKioKLSAgICAgKiBAcmV0dXJuIHtBcnJheS48V2ViSW5zcGVj
dG9yLlJlc291cmNlPn0KKyAgICAgKiBAcmV0dXJuIHtBcnJheS48V2ViSW5zcGVjdG9yLk5ldHdv
cmtSZXF1ZXN0Pn0KICAgICAgKi8KLSAgICBnZXQgcmVzb3VyY2VzKCkKKyAgICBnZXQgcmVxdWVz
dHMoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlczsKKyAgICAgICAgcmV0
dXJuIHRoaXMuX3JlcXVlc3RzOwogICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge1dl
Ykluc3BlY3Rvci5SZXNvdXJjZX0gcmVzb3VyY2UKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rv
ci5OZXR3b3JrUmVxdWVzdH0gcmVxdWVzdAogICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rvci5Q
YWdlTG9hZH0KICAgICAgKi8KLSAgICBwYWdlTG9hZEZvclJlc291cmNlOiBmdW5jdGlvbihyZXNv
dXJjZSkKKyAgICBwYWdlTG9hZEZvclJlcXVlc3Q6IGZ1bmN0aW9uKHJlcXVlc3QpCiAgICAgewot
ICAgICAgICByZXR1cm4gcmVzb3VyY2UuX19wYWdlOworICAgICAgICByZXR1cm4gcmVxdWVzdC5f
X3BhZ2U7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtNjQsMTYgKzY0LDE2IEBAIFdlYkluc3BlY3Rv
ci5OZXR3b3JrTG9nLnByb3RvdHlwZSA9IHsKICAgICBfb25NYWluRnJhbWVOYXZpZ2F0ZWQ6IGZ1
bmN0aW9uKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIG1haW5GcmFtZSA9IC8qKiB0eXBlIHtX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRnJhbWV9ICovIGV2ZW50LmRhdGE7Ci0gICAgICAgIC8v
IFByZXNlcnZlIHJlc291cmNlcyBmcm9tIHRoZSBuZXcgc2Vzc2lvbi4KKyAgICAgICAgLy8gUHJl
c2VydmUgcmVxdWVzdHMgZnJvbSB0aGUgbmV3IHNlc3Npb24uCiAgICAgICAgIHRoaXMuX2N1cnJl
bnRQYWdlTG9hZCA9IG51bGw7Ci0gICAgICAgIHZhciBvbGRSZXNvdXJjZXMgPSB0aGlzLl9yZXNv
dXJjZXMuc3BsaWNlKDAsIHRoaXMuX3Jlc291cmNlcy5sZW5ndGgpOwotICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IG9sZFJlc291cmNlcy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgdmFy
IHJlc291cmNlID0gb2xkUmVzb3VyY2VzW2ldOwotICAgICAgICAgICAgaWYgKHJlc291cmNlLmxv
YWRlcklkID09PSBtYWluRnJhbWUubG9hZGVySWQpIHsKKyAgICAgICAgdmFyIG9sZFJlcXVlc3Rz
ID0gdGhpcy5fcmVxdWVzdHMuc3BsaWNlKDAsIHRoaXMuX3JlcXVlc3RzLmxlbmd0aCk7CisgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb2xkUmVxdWVzdHMubGVuZ3RoOyArK2kpIHsKKyAgICAg
ICAgICAgIHZhciByZXF1ZXN0ID0gb2xkUmVxdWVzdHNbaV07CisgICAgICAgICAgICBpZiAocmVx
dWVzdC5sb2FkZXJJZCA9PT0gbWFpbkZyYW1lLmxvYWRlcklkKSB7CiAgICAgICAgICAgICAgICAg
aWYgKCF0aGlzLl9jdXJyZW50UGFnZUxvYWQpCi0gICAgICAgICAgICAgICAgICAgIHRoaXMuX2N1
cnJlbnRQYWdlTG9hZCA9IG5ldyBXZWJJbnNwZWN0b3IuUGFnZUxvYWQocmVzb3VyY2UpOwotICAg
ICAgICAgICAgICAgIHRoaXMuX3Jlc291cmNlcy5wdXNoKHJlc291cmNlKTsKLSAgICAgICAgICAg
ICAgICByZXNvdXJjZS5fX3BhZ2UgPSB0aGlzLl9jdXJyZW50UGFnZUxvYWQ7CisgICAgICAgICAg
ICAgICAgICAgIHRoaXMuX2N1cnJlbnRQYWdlTG9hZCA9IG5ldyBXZWJJbnNwZWN0b3IuUGFnZUxv
YWQocmVxdWVzdCk7CisgICAgICAgICAgICAgICAgdGhpcy5fcmVxdWVzdHMucHVzaChyZXF1ZXN0
KTsKKyAgICAgICAgICAgICAgICByZXF1ZXN0Ll9fcGFnZSA9IHRoaXMuX2N1cnJlbnRQYWdlTG9h
ZDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0sCkBAIC04MSwxMSArODEsMTEgQEAg
V2ViSW5zcGVjdG9yLk5ldHdvcmtMb2cucHJvdG90eXBlID0gewogICAgIC8qKgogICAgICAqIEBw
YXJhbSB7V2ViSW5zcGVjdG9yLkV2ZW50fSBldmVudAogICAgICAqLwotICAgIF9vblJlc291cmNl
U3RhcnRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX29uUmVxdWVzdFN0YXJ0ZWQ6IGZ1bmN0aW9u
KGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIHJlc291cmNlID0gLyoqIEB0eXBlIHtXZWJJbnNw
ZWN0b3IuUmVzb3VyY2V9ICovIGV2ZW50LmRhdGE7Ci0gICAgICAgIHRoaXMuX3Jlc291cmNlcy5w
dXNoKHJlc291cmNlKTsKLSAgICAgICAgcmVzb3VyY2UuX19wYWdlID0gdGhpcy5fY3VycmVudFBh
Z2VMb2FkOworICAgICAgICB2YXIgcmVxdWVzdCA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLk5l
dHdvcmtSZXF1ZXN0fSAqLyBldmVudC5kYXRhOworICAgICAgICB0aGlzLl9yZXF1ZXN0cy5wdXNo
KHJlcXVlc3QpOworICAgICAgICByZXF1ZXN0Ll9fcGFnZSA9IHRoaXMuX2N1cnJlbnRQYWdlTG9h
ZDsKICAgICB9LAogCiAgICAgLyoqCkBAIC0xMDQsOCArMTA0LDcgQEAgV2ViSW5zcGVjdG9yLk5l
dHdvcmtMb2cucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRQ
YWdlTG9hZCkKICAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRQYWdlTG9hZC5sb2FkVGltZSA9IGV2
ZW50LmRhdGE7Ci0gICAgfSwKLQorICAgIH0KIH0KIAogLyoqCkBAIC0xMTUsMTMgKzExNCwxMyBA
QCBXZWJJbnNwZWN0b3IubmV0d29ya0xvZyA9IG51bGw7CiAKIC8qKgogICogQGNvbnN0cnVjdG9y
Ci0gKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5SZXNvdXJjZX0gbWFpblJlc291cmNlCisgKiBAcGFy
YW0ge1dlYkluc3BlY3Rvci5OZXR3b3JrUmVxdWVzdH0gbWFpblJlcXVlc3QKICAqLwotV2ViSW5z
cGVjdG9yLlBhZ2VMb2FkID0gZnVuY3Rpb24obWFpblJlc291cmNlKQorV2ViSW5zcGVjdG9yLlBh
Z2VMb2FkID0gZnVuY3Rpb24obWFpblJlcXVlc3QpCiB7CiAgICAgdGhpcy5pZCA9ICsrV2ViSW5z
cGVjdG9yLlBhZ2VMb2FkLl9sYXN0SWRlbnRpZmllcjsKLSAgICB0aGlzLnVybCA9IG1haW5SZXNv
dXJjZS51cmw7Ci0gICAgdGhpcy5zdGFydFRpbWUgPSBtYWluUmVzb3VyY2Uuc3RhcnRUaW1lOwor
ICAgIHRoaXMudXJsID0gbWFpblJlcXVlc3QudXJsOworICAgIHRoaXMuc3RhcnRUaW1lID0gbWFp
blJlcXVlc3Quc3RhcnRUaW1lOwogfQogCiBXZWJJbnNwZWN0b3IuUGFnZUxvYWQuX2xhc3RJZGVu
dGlmaWVyID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvTmV0d29ya01hbmFnZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L05ldHdvcmtNYW5hZ2VyLmpzCmluZGV4IDBmNjhmY2UzYTUyNzI1NjAwMjZjNGMxYTVkOGY5ZDY2
Zjk4MjRiYjcuLjQ4ZjBmMWE5ZTU0NTNiNTIxNzYxNDM3OWEzZjJjZTc3OGZiOWYzNGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya01hbmFnZXIu
anMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrTWFuYWdl
ci5qcwpAQCAtNTEsMTAgKzUxLDEwIEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlciA9IGZ1
bmN0aW9uKCkKIFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5FdmVudFR5cGVzID0gewogICAg
IFJlc291cmNlVHJhY2tpbmdFbmFibGVkOiAiUmVzb3VyY2VUcmFja2luZ0VuYWJsZWQiLAogICAg
IFJlc291cmNlVHJhY2tpbmdEaXNhYmxlZDogIlJlc291cmNlVHJhY2tpbmdEaXNhYmxlZCIsCi0g
ICAgUmVzb3VyY2VTdGFydGVkOiAiUmVzb3VyY2VTdGFydGVkIiwKLSAgICBSZXNvdXJjZVVwZGF0
ZWQ6ICJSZXNvdXJjZVVwZGF0ZWQiLAotICAgIFJlc291cmNlRmluaXNoZWQ6ICJSZXNvdXJjZUZp
bmlzaGVkIiwKLSAgICBSZXNvdXJjZVVwZGF0ZURyb3BwZWQ6ICJSZXNvdXJjZVVwZGF0ZURyb3Bw
ZWQiCisgICAgUmVxdWVzdFN0YXJ0ZWQ6ICJSZXF1ZXN0U3RhcnRlZCIsCisgICAgUmVxdWVzdFVw
ZGF0ZWQ6ICJSZXF1ZXN0VXBkYXRlZCIsCisgICAgUmVxdWVzdEZpbmlzaGVkOiAiUmVxdWVzdEZp
bmlzaGVkIiwKKyAgICBSZXF1ZXN0VXBkYXRlRHJvcHBlZDogIlJlcXVlc3RVcGRhdGVEcm9wcGVk
IgogfQogCiBXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIuX01JTUVUeXBlcyA9IHsKQEAgLTEz
NSwxMSArMTM1LDExIEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUgPSB7
CiAKICAgICAvKioKICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsCi0gICAgICogQHJldHVybiB7
V2ViSW5zcGVjdG9yLlJlc291cmNlfQorICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rvci5OZXR3
b3JrUmVxdWVzdH0KICAgICAgKi8KLSAgICBpbmZsaWdodFJlc291cmNlRm9yVVJMOiBmdW5jdGlv
bih1cmwpCisgICAgaW5mbGlnaHRSZXF1ZXN0Rm9yVVJMOiBmdW5jdGlvbih1cmwpCiAgICAgewot
ICAgICAgICByZXR1cm4gdGhpcy5fZGlzcGF0Y2hlci5faW5mbGlnaHRSZXNvdXJjZXNCeVVSTFt1
cmxdOworICAgICAgICByZXR1cm4gdGhpcy5fZGlzcGF0Y2hlci5faW5mbGlnaHRSZXF1ZXN0c0J5
VVJMW3VybF07CiAgICAgfSwKIAogICAgIC8qKgpAQCAtMTY2LDcyICsxNjYsNzIgQEAgV2ViSW5z
cGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3Iu
T2JqZWN0LnByb3RvdHlwZTsKIFdlYkluc3BlY3Rvci5OZXR3b3JrRGlzcGF0Y2hlciA9IGZ1bmN0
aW9uKG1hbmFnZXIpCiB7CiAgICAgdGhpcy5fbWFuYWdlciA9IG1hbmFnZXI7Ci0gICAgdGhpcy5f
aW5mbGlnaHRSZXNvdXJjZXNCeUlkID0ge307Ci0gICAgdGhpcy5faW5mbGlnaHRSZXNvdXJjZXNC
eVVSTCA9IHt9OworICAgIHRoaXMuX2luZmxpZ2h0UmVxdWVzdHNCeUlkID0ge307CisgICAgdGhp
cy5faW5mbGlnaHRSZXF1ZXN0c0J5VVJMID0ge307CiAgICAgSW5zcGVjdG9yQmFja2VuZC5yZWdp
c3Rlck5ldHdvcmtEaXNwYXRjaGVyKHRoaXMpOwogfQogCiBXZWJJbnNwZWN0b3IuTmV0d29ya0Rp
c3BhdGNoZXIucHJvdG90eXBlID0gewogICAgIC8qKgotICAgICAqIEBwYXJhbSB7V2ViSW5zcGVj
dG9yLlJlc291cmNlfSByZXNvdXJjZQorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLk5ldHdv
cmtSZXF1ZXN0fSBuZXR3b3JrUmVxdWVzdAogICAgICAqIEBwYXJhbSB7TmV0d29ya0FnZW50LlJl
cXVlc3R9IHJlcXVlc3QKICAgICAgKi8KLSAgICBfdXBkYXRlUmVzb3VyY2VXaXRoUmVxdWVzdDog
ZnVuY3Rpb24ocmVzb3VyY2UsIHJlcXVlc3QpCisgICAgX3VwZGF0ZU5ldHdvcmtSZXF1ZXN0V2l0
aFJlcXVlc3Q6IGZ1bmN0aW9uKG5ldHdvcmtSZXF1ZXN0LCByZXF1ZXN0KQogICAgIHsKLSAgICAg
ICAgcmVzb3VyY2UucmVxdWVzdE1ldGhvZCA9IHJlcXVlc3QubWV0aG9kOwotICAgICAgICByZXNv
dXJjZS5yZXF1ZXN0SGVhZGVycyA9IHJlcXVlc3QuaGVhZGVyczsKLSAgICAgICAgcmVzb3VyY2Uu
cmVxdWVzdEZvcm1EYXRhID0gcmVxdWVzdC5wb3N0RGF0YTsKKyAgICAgICAgbmV0d29ya1JlcXVl
c3QucmVxdWVzdE1ldGhvZCA9IHJlcXVlc3QubWV0aG9kOworICAgICAgICBuZXR3b3JrUmVxdWVz
dC5yZXF1ZXN0SGVhZGVycyA9IHJlcXVlc3QuaGVhZGVyczsKKyAgICAgICAgbmV0d29ya1JlcXVl
c3QucmVxdWVzdEZvcm1EYXRhID0gcmVxdWVzdC5wb3N0RGF0YTsKICAgICB9LAogCiAgICAgLyoq
Ci0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2V9IHJlc291cmNlCisgICAgICog
QHBhcmFtIHtXZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVlc3R9IG5ldHdvcmtSZXF1ZXN0CiAgICAg
ICogQHBhcmFtIHtOZXR3b3JrQWdlbnQuUmVzcG9uc2U9fSByZXNwb25zZQogICAgICAqLwotICAg
IF91cGRhdGVSZXNvdXJjZVdpdGhSZXNwb25zZTogZnVuY3Rpb24ocmVzb3VyY2UsIHJlc3BvbnNl
KQorICAgIF91cGRhdGVOZXR3b3JrUmVxdWVzdFdpdGhSZXNwb25zZTogZnVuY3Rpb24obmV0d29y
a1JlcXVlc3QsIHJlc3BvbnNlKQogICAgIHsKICAgICAgICAgaWYgKCFyZXNwb25zZSkKICAgICAg
ICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAocmVzcG9uc2UudXJsICYmIHJlc291cmNlLnVy
bCAhPT0gcmVzcG9uc2UudXJsKQotICAgICAgICAgICAgcmVzb3VyY2UudXJsID0gcmVzcG9uc2Uu
dXJsOwotICAgICAgICByZXNvdXJjZS5taW1lVHlwZSA9IHJlc3BvbnNlLm1pbWVUeXBlOwotICAg
ICAgICByZXNvdXJjZS5zdGF0dXNDb2RlID0gcmVzcG9uc2Uuc3RhdHVzOwotICAgICAgICByZXNv
dXJjZS5zdGF0dXNUZXh0ID0gcmVzcG9uc2Uuc3RhdHVzVGV4dDsKLSAgICAgICAgcmVzb3VyY2Uu
cmVzcG9uc2VIZWFkZXJzID0gcmVzcG9uc2UuaGVhZGVyczsKKyAgICAgICAgaWYgKHJlc3BvbnNl
LnVybCAmJiBuZXR3b3JrUmVxdWVzdC51cmwgIT09IHJlc3BvbnNlLnVybCkKKyAgICAgICAgICAg
IG5ldHdvcmtSZXF1ZXN0LnVybCA9IHJlc3BvbnNlLnVybDsKKyAgICAgICAgbmV0d29ya1JlcXVl
c3QubWltZVR5cGUgPSByZXNwb25zZS5taW1lVHlwZTsKKyAgICAgICAgbmV0d29ya1JlcXVlc3Qu
c3RhdHVzQ29kZSA9IHJlc3BvbnNlLnN0YXR1czsKKyAgICAgICAgbmV0d29ya1JlcXVlc3Quc3Rh
dHVzVGV4dCA9IHJlc3BvbnNlLnN0YXR1c1RleHQ7CisgICAgICAgIG5ldHdvcmtSZXF1ZXN0LnJl
c3BvbnNlSGVhZGVycyA9IHJlc3BvbnNlLmhlYWRlcnM7CiAgICAgICAgIGlmIChyZXNwb25zZS5o
ZWFkZXJzVGV4dCkKLSAgICAgICAgICAgIHJlc291cmNlLnJlc3BvbnNlSGVhZGVyc1RleHQgPSBy
ZXNwb25zZS5oZWFkZXJzVGV4dDsKKyAgICAgICAgICAgIG5ldHdvcmtSZXF1ZXN0LnJlc3BvbnNl
SGVhZGVyc1RleHQgPSByZXNwb25zZS5oZWFkZXJzVGV4dDsKICAgICAgICAgaWYgKHJlc3BvbnNl
LnJlcXVlc3RIZWFkZXJzKQotICAgICAgICAgICAgcmVzb3VyY2UucmVxdWVzdEhlYWRlcnMgPSBy
ZXNwb25zZS5yZXF1ZXN0SGVhZGVyczsKKyAgICAgICAgICAgIG5ldHdvcmtSZXF1ZXN0LnJlcXVl
c3RIZWFkZXJzID0gcmVzcG9uc2UucmVxdWVzdEhlYWRlcnM7CiAgICAgICAgIGlmIChyZXNwb25z
ZS5yZXF1ZXN0SGVhZGVyc1RleHQpCi0gICAgICAgICAgICByZXNvdXJjZS5yZXF1ZXN0SGVhZGVy
c1RleHQgPSByZXNwb25zZS5yZXF1ZXN0SGVhZGVyc1RleHQ7CisgICAgICAgICAgICBuZXR3b3Jr
UmVxdWVzdC5yZXF1ZXN0SGVhZGVyc1RleHQgPSByZXNwb25zZS5yZXF1ZXN0SGVhZGVyc1RleHQ7
CiAKLSAgICAgICAgcmVzb3VyY2UuY29ubmVjdGlvblJldXNlZCA9IHJlc3BvbnNlLmNvbm5lY3Rp
b25SZXVzZWQ7Ci0gICAgICAgIHJlc291cmNlLmNvbm5lY3Rpb25JZCA9IHJlc3BvbnNlLmNvbm5l
Y3Rpb25JZDsKKyAgICAgICAgbmV0d29ya1JlcXVlc3QuY29ubmVjdGlvblJldXNlZCA9IHJlc3Bv
bnNlLmNvbm5lY3Rpb25SZXVzZWQ7CisgICAgICAgIG5ldHdvcmtSZXF1ZXN0LmNvbm5lY3Rpb25J
ZCA9IHJlc3BvbnNlLmNvbm5lY3Rpb25JZDsKIAogICAgICAgICBpZiAocmVzcG9uc2UuZnJvbURp
c2tDYWNoZSkKLSAgICAgICAgICAgIHJlc291cmNlLmNhY2hlZCA9IHRydWU7CisgICAgICAgICAg
ICBuZXR3b3JrUmVxdWVzdC5jYWNoZWQgPSB0cnVlOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICByZXNvdXJjZS50aW1pbmcgPSByZXNwb25zZS50aW1pbmc7CisgICAgICAgICAgICBuZXR3b3Jr
UmVxdWVzdC50aW1pbmcgPSByZXNwb25zZS50aW1pbmc7CiAKLSAgICAgICAgaWYgKCF0aGlzLl9t
aW1lVHlwZUlzQ29uc2lzdGVudFdpdGhUeXBlKHJlc291cmNlKSkgeworICAgICAgICBpZiAoIXRo
aXMuX21pbWVUeXBlSXNDb25zaXN0ZW50V2l0aFR5cGUobmV0d29ya1JlcXVlc3QpKSB7CiAgICAg
ICAgICAgICBXZWJJbnNwZWN0b3IuY29uc29sZS5hZGRNZXNzYWdlKFdlYkluc3BlY3Rvci5Db25z
b2xlTWVzc2FnZS5jcmVhdGUoV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VTb3Vy
Y2UuTmV0d29yaywKICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2Uu
TWVzc2FnZUxldmVsLldhcm5pbmcsCi0gICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJSZXNvdXJjZSBpbnRlcnByZXRlZCBhcyAlcyBidXQgdHJhbnNmZXJyZWQgd2l0aCBNSU1F
IHR5cGUgJXM6IFwiJXNcIi4iLCByZXNvdXJjZS50eXBlLnRpdGxlKCksIHJlc291cmNlLm1pbWVU
eXBlLCByZXNvdXJjZS51cmwpLAorICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiUmVzb3VyY2UgaW50ZXJwcmV0ZWQgYXMgJXMgYnV0IHRyYW5zZmVycmVkIHdpdGggTUlNRSB0
eXBlICVzOiBcIiVzXCIuIiwgbmV0d29ya1JlcXVlc3QudHlwZS50aXRsZSgpLCBuZXR3b3JrUmVx
dWVzdC5taW1lVHlwZSwgbmV0d29ya1JlcXVlc3QudXJsKSwKICAgICAgICAgICAgICAgICBXZWJJ
bnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuTG9nLAogICAgICAgICAgICAgICAg
ICIiLAogICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAgMSwKICAgICAgICAgICAg
ICAgICBbXSwKICAgICAgICAgICAgICAgICBudWxsLAotICAgICAgICAgICAgICAgIHJlc291cmNl
KSk7CisgICAgICAgICAgICAgICAgbmV0d29ya1JlcXVlc3QpKTsKICAgICAgICAgfQogICAgIH0s
CiAKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5SZXNvdXJjZX0gcmVzb3Vy
Y2UKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5OZXR3b3JrUmVxdWVzdH0gbmV0d29ya1Jl
cXVlc3QKICAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICAqLwotICAgIF9taW1lVHlwZUlz
Q29uc2lzdGVudFdpdGhUeXBlOiBmdW5jdGlvbihyZXNvdXJjZSkKKyAgICBfbWltZVR5cGVJc0Nv
bnNpc3RlbnRXaXRoVHlwZTogZnVuY3Rpb24obmV0d29ya1JlcXVlc3QpCiAgICAgewogICAgICAg
ICAvLyBJZiBzdGF0dXMgaXMgYW4gZXJyb3IsIGNvbnRlbnQgaXMgbGlrZWx5IHRvIGJlIG9mIGFu
IGluY29uc2lzdGVudCB0eXBlLAogICAgICAgICAvLyBhcyBpdCdzIGdvaW5nIHRvIGJlIGFuIGVy
cm9yIG1lc3NhZ2UuIFdlIGRvIG5vdCB3YW50IHRvIGVtaXQgYSB3YXJuaW5nCkBAIC0yMzksMzMg
KzIzOSwzMyBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya0Rpc3BhdGNoZXIucHJvdG90eXBlID0gewog
ICAgICAgICAvLyBBbHNvLCBpZiBhIFVSTCBsaWtlIGh0dHA6Ly9sb2NhbGhvc3Qvd2lraS9sb2Fk
LnBocD9kZWJ1Zz10cnVlJmxhbmc9ZW4gcHJvZHVjZXMgdGV4dC9jc3MgYW5kIGdldHMgcmVsb2Fk
ZWQsCiAgICAgICAgIC8vIGl0IGlzIDMwNCBOb3QgTW9kaWZpZWQgYW5kIGl0cyBndWVzc2VkIG1p
bWUtdHlwZSBpcyB0ZXh0L3BocCwgd2hpY2ggaXMgd3JvbmcuCiAgICAgICAgIC8vIERvbid0IGNo
ZWNrIGZvciBtaW1lLXR5cGVzIGluIDMwNC1yZXNvdXJjZXMuCi0gICAgICAgIGlmIChyZXNvdXJj
ZS5oYXNFcnJvclN0YXR1c0NvZGUoKSB8fCByZXNvdXJjZS5zdGF0dXNDb2RlID09PSAzMDQpCisg
ICAgICAgIGlmIChuZXR3b3JrUmVxdWVzdC5oYXNFcnJvclN0YXR1c0NvZGUoKSB8fCBuZXR3b3Jr
UmVxdWVzdC5zdGF0dXNDb2RlID09PSAzMDQpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAot
ICAgICAgICBpZiAodHlwZW9mIHJlc291cmNlLnR5cGUgPT09ICJ1bmRlZmluZWQiCi0gICAgICAg
ICAgICB8fCByZXNvdXJjZS50eXBlID09PSBXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5PdGhl
cgotICAgICAgICAgICAgfHwgcmVzb3VyY2UudHlwZSA9PT0gV2ViSW5zcGVjdG9yLnJlc291cmNl
VHlwZXMuWEhSCi0gICAgICAgICAgICB8fCByZXNvdXJjZS50eXBlID09PSBXZWJJbnNwZWN0b3Iu
cmVzb3VyY2VUeXBlcy5XZWJTb2NrZXQpCisgICAgICAgIGlmICh0eXBlb2YgbmV0d29ya1JlcXVl
c3QudHlwZSA9PT0gInVuZGVmaW5lZCIKKyAgICAgICAgICAgIHx8IG5ldHdvcmtSZXF1ZXN0LnR5
cGUgPT09IFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5cGVzLk90aGVyCisgICAgICAgICAgICB8fCBu
ZXR3b3JrUmVxdWVzdC50eXBlID09PSBXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5YSFIKKyAg
ICAgICAgICAgIHx8IG5ldHdvcmtSZXF1ZXN0LnR5cGUgPT09IFdlYkluc3BlY3Rvci5yZXNvdXJj
ZVR5cGVzLldlYlNvY2tldCkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgICAgIGlm
ICghcmVzb3VyY2UubWltZVR5cGUpCisgICAgICAgIGlmICghbmV0d29ya1JlcXVlc3QubWltZVR5
cGUpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gTWlnaHQgYmUgbm90IGtub3duIGZvciBj
YWNoZWQgcmVzb3VyY2VzIHdpdGggbnVsbCByZXNwb25zZXMuCiAKLSAgICAgICAgaWYgKHJlc291
cmNlLm1pbWVUeXBlIGluIFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5fTUlNRVR5cGVzKQot
ICAgICAgICAgICAgcmV0dXJuIHJlc291cmNlLnR5cGUubmFtZSgpIGluIFdlYkluc3BlY3Rvci5O
ZXR3b3JrTWFuYWdlci5fTUlNRVR5cGVzW3Jlc291cmNlLm1pbWVUeXBlXTsKKyAgICAgICAgaWYg
KG5ldHdvcmtSZXF1ZXN0Lm1pbWVUeXBlIGluIFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5f
TUlNRVR5cGVzKQorICAgICAgICAgICAgcmV0dXJuIG5ldHdvcmtSZXF1ZXN0LnR5cGUubmFtZSgp
IGluIFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5fTUlNRVR5cGVzW25ldHdvcmtSZXF1ZXN0
Lm1pbWVUeXBlXTsKIAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfSwKIAogICAgIC8qKgot
ICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlJlc291cmNlfSByZXNvdXJjZQorICAgICAqIEBw
YXJhbSB7V2ViSW5zcGVjdG9yLk5ldHdvcmtSZXF1ZXN0fSBuZXR3b3JrUmVxdWVzdAogICAgICAq
IEBwYXJhbSB7P05ldHdvcmtBZ2VudC5DYWNoZWRSZXNvdXJjZX0gY2FjaGVkUmVzb3VyY2UKICAg
ICAgKi8KLSAgICBfdXBkYXRlUmVzb3VyY2VXaXRoQ2FjaGVkUmVzb3VyY2U6IGZ1bmN0aW9uKHJl
c291cmNlLCBjYWNoZWRSZXNvdXJjZSkKKyAgICBfdXBkYXRlTmV0d29ya1JlcXVlc3RXaXRoQ2Fj
aGVkUmVzb3VyY2U6IGZ1bmN0aW9uKG5ldHdvcmtSZXF1ZXN0LCBjYWNoZWRSZXNvdXJjZSkKICAg
ICB7Ci0gICAgICAgIHJlc291cmNlLnR5cGUgPSBXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlc1tj
YWNoZWRSZXNvdXJjZS50eXBlXTsKLSAgICAgICAgcmVzb3VyY2UucmVzb3VyY2VTaXplID0gY2Fj
aGVkUmVzb3VyY2UuYm9keVNpemU7Ci0gICAgICAgIHRoaXMuX3VwZGF0ZVJlc291cmNlV2l0aFJl
c3BvbnNlKHJlc291cmNlLCBjYWNoZWRSZXNvdXJjZS5yZXNwb25zZSk7CisgICAgICAgIG5ldHdv
cmtSZXF1ZXN0LnR5cGUgPSBXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlc1tjYWNoZWRSZXNvdXJj
ZS50eXBlXTsKKyAgICAgICAgbmV0d29ya1JlcXVlc3QucmVzb3VyY2VTaXplID0gY2FjaGVkUmVz
b3VyY2UuYm9keVNpemU7CisgICAgICAgIHRoaXMuX3VwZGF0ZU5ldHdvcmtSZXF1ZXN0V2l0aFJl
c3BvbnNlKG5ldHdvcmtSZXF1ZXN0LCBjYWNoZWRSZXNvdXJjZS5yZXNwb25zZSk7CiAgICAgfSwK
IAogICAgIC8qKgpAQCAtMjkyLDIwICsyOTIsMjAgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtEaXNw
YXRjaGVyLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICByZXF1ZXN0V2lsbEJlU2VudDogZnVu
Y3Rpb24ocmVxdWVzdElkLCBmcmFtZUlkLCBsb2FkZXJJZCwgZG9jdW1lbnRVUkwsIHJlcXVlc3Qs
IHRpbWUsIGluaXRpYXRvciwgc3RhY2tUcmFjZSwgcmVkaXJlY3RSZXNwb25zZSkKICAgICB7Ci0g
ICAgICAgIHZhciByZXNvdXJjZSA9IHRoaXMuX2luZmxpZ2h0UmVzb3VyY2VzQnlJZFtyZXF1ZXN0
SWRdOwotICAgICAgICBpZiAocmVzb3VyY2UpIHsKKyAgICAgICAgdmFyIG5ldHdvcmtSZXF1ZXN0
ID0gdGhpcy5faW5mbGlnaHRSZXF1ZXN0c0J5SWRbcmVxdWVzdElkXTsKKyAgICAgICAgaWYgKG5l
dHdvcmtSZXF1ZXN0KSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogbW92ZSB0aGlzIGNoZWNrIHRv
IHRoZSBiYWNrZW5kLgogICAgICAgICAgICAgaWYgKCFyZWRpcmVjdFJlc3BvbnNlKQogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIHRoaXMucmVzcG9uc2VSZWNlaXZlZChyZXF1
ZXN0SWQsIGZyYW1lSWQsIGxvYWRlcklkLCB0aW1lLCAiT3RoZXIiLCByZWRpcmVjdFJlc3BvbnNl
KTsKLSAgICAgICAgICAgIHJlc291cmNlID0gdGhpcy5fYXBwZW5kUmVkaXJlY3QocmVxdWVzdElk
LCB0aW1lLCByZXF1ZXN0LnVybCk7CisgICAgICAgICAgICBuZXR3b3JrUmVxdWVzdCA9IHRoaXMu
X2FwcGVuZFJlZGlyZWN0KHJlcXVlc3RJZCwgdGltZSwgcmVxdWVzdC51cmwpOwogICAgICAgICB9
IGVsc2UKLSAgICAgICAgICAgIHJlc291cmNlID0gdGhpcy5fY3JlYXRlUmVzb3VyY2UocmVxdWVz
dElkLCBmcmFtZUlkLCBsb2FkZXJJZCwgcmVxdWVzdC51cmwsIGRvY3VtZW50VVJMLCBpbml0aWF0
b3IsIHN0YWNrVHJhY2UpOwotICAgICAgICByZXNvdXJjZS5oYXNOZXR3b3JrRGF0YSA9IHRydWU7
Ci0gICAgICAgIHRoaXMuX3VwZGF0ZVJlc291cmNlV2l0aFJlcXVlc3QocmVzb3VyY2UsIHJlcXVl
c3QpOwotICAgICAgICByZXNvdXJjZS5zdGFydFRpbWUgPSB0aW1lOworICAgICAgICAgICAgbmV0
d29ya1JlcXVlc3QgPSB0aGlzLl9jcmVhdGVOZXR3b3JrUmVxdWVzdChyZXF1ZXN0SWQsIGZyYW1l
SWQsIGxvYWRlcklkLCByZXF1ZXN0LnVybCwgZG9jdW1lbnRVUkwsIGluaXRpYXRvciwgc3RhY2tU
cmFjZSk7CisgICAgICAgIG5ldHdvcmtSZXF1ZXN0Lmhhc05ldHdvcmtEYXRhID0gdHJ1ZTsKKyAg
ICAgICAgdGhpcy5fdXBkYXRlTmV0d29ya1JlcXVlc3RXaXRoUmVxdWVzdChuZXR3b3JrUmVxdWVz
dCwgcmVxdWVzdCk7CisgICAgICAgIG5ldHdvcmtSZXF1ZXN0LnN0YXJ0VGltZSA9IHRpbWU7CiAK
LSAgICAgICAgdGhpcy5fc3RhcnRSZXNvdXJjZShyZXNvdXJjZSk7CisgICAgICAgIHRoaXMuX3N0
YXJ0TmV0d29ya1JlcXVlc3QobmV0d29ya1JlcXVlc3QpOwogICAgIH0sCiAKICAgICAvKioKQEAg
LTMxMywxMSArMzEzLDExIEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrRGlzcGF0Y2hlci5wcm90b3R5
cGUgPSB7CiAgICAgICovCiAgICAgcmVxdWVzdFNlcnZlZEZyb21DYWNoZTogZnVuY3Rpb24ocmVx
dWVzdElkKQogICAgIHsKLSAgICAgICAgdmFyIHJlc291cmNlID0gdGhpcy5faW5mbGlnaHRSZXNv
dXJjZXNCeUlkW3JlcXVlc3RJZF07Ci0gICAgICAgIGlmICghcmVzb3VyY2UpCisgICAgICAgIHZh
ciBuZXR3b3JrUmVxdWVzdCA9IHRoaXMuX2luZmxpZ2h0UmVxdWVzdHNCeUlkW3JlcXVlc3RJZF07
CisgICAgICAgIGlmICghbmV0d29ya1JlcXVlc3QpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAg
ICAgICAgcmVzb3VyY2UuY2FjaGVkID0gdHJ1ZTsKKyAgICAgICAgbmV0d29ya1JlcXVlc3QuY2Fj
aGVkID0gdHJ1ZTsKICAgICB9LAogCiAgICAgLyoqCkBAIC0zMzQsOCArMzM0LDggQEAgV2ViSW5z
cGVjdG9yLk5ldHdvcmtEaXNwYXRjaGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKHRoaXMu
X2lzTnVsbChyZXNwb25zZSkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgdmFyIHJl
c291cmNlID0gdGhpcy5faW5mbGlnaHRSZXNvdXJjZXNCeUlkW3JlcXVlc3RJZF07Ci0gICAgICAg
IGlmICghcmVzb3VyY2UpIHsKKyAgICAgICAgdmFyIG5ldHdvcmtSZXF1ZXN0ID0gdGhpcy5faW5m
bGlnaHRSZXF1ZXN0c0J5SWRbcmVxdWVzdElkXTsKKyAgICAgICAgaWYgKCFuZXR3b3JrUmVxdWVz
dCkgewogICAgICAgICAgICAgLy8gV2UgbWlzc2VkIHRoZSByZXF1ZXN0V2lsbEJlU2VudC4KICAg
ICAgICAgICAgIHZhciBldmVudERhdGEgPSB7fTsKICAgICAgICAgICAgIGV2ZW50RGF0YS51cmwg
PSByZXNwb25zZS51cmw7CkBAIC0zNDMsMTYgKzM0MywxNiBAQCBXZWJJbnNwZWN0b3IuTmV0d29y
a0Rpc3BhdGNoZXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgZXZlbnREYXRhLmxvYWRlcklk
ID0gbG9hZGVySWQ7CiAgICAgICAgICAgICBldmVudERhdGEucmVzb3VyY2VUeXBlID0gcmVzb3Vy
Y2VUeXBlOwogICAgICAgICAgICAgZXZlbnREYXRhLm1pbWVUeXBlID0gcmVzcG9uc2UubWltZVR5
cGU7Ci0gICAgICAgICAgICB0aGlzLl9tYW5hZ2VyLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhX
ZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIuRXZlbnRUeXBlcy5SZXNvdXJjZVVwZGF0ZURyb3Bw
ZWQsIGV2ZW50RGF0YSk7CisgICAgICAgICAgICB0aGlzLl9tYW5hZ2VyLmRpc3BhdGNoRXZlbnRU
b0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIuRXZlbnRUeXBlcy5SZXF1ZXN0
VXBkYXRlRHJvcHBlZCwgZXZlbnREYXRhKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCi0gICAgICAgIHJlc291cmNlLnJlc3BvbnNlUmVjZWl2ZWRUaW1lID0gdGltZTsKLSAgICAg
ICAgcmVzb3VyY2UudHlwZSA9IFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5cGVzW3Jlc291cmNlVHlw
ZV07CisgICAgICAgIG5ldHdvcmtSZXF1ZXN0LnJlc3BvbnNlUmVjZWl2ZWRUaW1lID0gdGltZTsK
KyAgICAgICAgbmV0d29ya1JlcXVlc3QudHlwZSA9IFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5cGVz
W3Jlc291cmNlVHlwZV07CiAKLSAgICAgICAgdGhpcy5fdXBkYXRlUmVzb3VyY2VXaXRoUmVzcG9u
c2UocmVzb3VyY2UsIHJlc3BvbnNlKTsKKyAgICAgICAgdGhpcy5fdXBkYXRlTmV0d29ya1JlcXVl
c3RXaXRoUmVzcG9uc2UobmV0d29ya1JlcXVlc3QsIHJlc3BvbnNlKTsKIAotICAgICAgICB0aGlz
Ll91cGRhdGVSZXNvdXJjZShyZXNvdXJjZSk7CisgICAgICAgIHRoaXMuX3VwZGF0ZU5ldHdvcmtS
ZXF1ZXN0KG5ldHdvcmtSZXF1ZXN0KTsKICAgICB9LAogCiAgICAgLyoqCkBAIC0zNjMsMTYgKzM2
MywxNiBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya0Rpc3BhdGNoZXIucHJvdG90eXBlID0gewogICAg
ICAqLwogICAgIGRhdGFSZWNlaXZlZDogZnVuY3Rpb24ocmVxdWVzdElkLCB0aW1lLCBkYXRhTGVu
Z3RoLCBlbmNvZGVkRGF0YUxlbmd0aCkKICAgICB7Ci0gICAgICAgIHZhciByZXNvdXJjZSA9IHRo
aXMuX2luZmxpZ2h0UmVzb3VyY2VzQnlJZFtyZXF1ZXN0SWRdOwotICAgICAgICBpZiAoIXJlc291
cmNlKQorICAgICAgICB2YXIgbmV0d29ya1JlcXVlc3QgPSB0aGlzLl9pbmZsaWdodFJlcXVlc3Rz
QnlJZFtyZXF1ZXN0SWRdOworICAgICAgICBpZiAoIW5ldHdvcmtSZXF1ZXN0KQogICAgICAgICAg
ICAgcmV0dXJuOwogCi0gICAgICAgIHJlc291cmNlLnJlc291cmNlU2l6ZSArPSBkYXRhTGVuZ3Ro
OworICAgICAgICBuZXR3b3JrUmVxdWVzdC5yZXNvdXJjZVNpemUgKz0gZGF0YUxlbmd0aDsKICAg
ICAgICAgaWYgKGVuY29kZWREYXRhTGVuZ3RoICE9IC0xKQotICAgICAgICAgICAgcmVzb3VyY2Uu
aW5jcmVhc2VUcmFuc2ZlclNpemUoZW5jb2RlZERhdGFMZW5ndGgpOwotICAgICAgICByZXNvdXJj
ZS5lbmRUaW1lID0gdGltZTsKKyAgICAgICAgICAgIG5ldHdvcmtSZXF1ZXN0LmluY3JlYXNlVHJh
bnNmZXJTaXplKGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICAgICAgbmV0d29ya1JlcXVlc3QuZW5k
VGltZSA9IHRpbWU7CiAKLSAgICAgICAgdGhpcy5fdXBkYXRlUmVzb3VyY2UocmVzb3VyY2UpOwor
ICAgICAgICB0aGlzLl91cGRhdGVOZXR3b3JrUmVxdWVzdChuZXR3b3JrUmVxdWVzdCk7CiAgICAg
fSwKIAogICAgIC8qKgpAQCAtMzgxLDEwICszODEsMTAgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtE
aXNwYXRjaGVyLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBsb2FkaW5nRmluaXNoZWQ6IGZ1
bmN0aW9uKHJlcXVlc3RJZCwgZmluaXNoVGltZSkKICAgICB7Ci0gICAgICAgIHZhciByZXNvdXJj
ZSA9IHRoaXMuX2luZmxpZ2h0UmVzb3VyY2VzQnlJZFtyZXF1ZXN0SWRdOwotICAgICAgICBpZiAo
IXJlc291cmNlKQorICAgICAgICB2YXIgbmV0d29ya1JlcXVlc3QgPSB0aGlzLl9pbmZsaWdodFJl
cXVlc3RzQnlJZFtyZXF1ZXN0SWRdOworICAgICAgICBpZiAoIW5ldHdvcmtSZXF1ZXN0KQogICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB0aGlzLl9maW5pc2hSZXNvdXJjZShyZXNvdXJjZSwg
ZmluaXNoVGltZSk7CisgICAgICAgIHRoaXMuX2ZpbmlzaE5ldHdvcmtSZXF1ZXN0KG5ldHdvcmtS
ZXF1ZXN0LCBmaW5pc2hUaW1lKTsKICAgICB9LAogCiAgICAgLyoqCkBAIC0zOTUsMTQgKzM5NSwx
NCBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya0Rpc3BhdGNoZXIucHJvdG90eXBlID0gewogICAgICAq
LwogICAgIGxvYWRpbmdGYWlsZWQ6IGZ1bmN0aW9uKHJlcXVlc3RJZCwgdGltZSwgbG9jYWxpemVk
RGVzY3JpcHRpb24sIGNhbmNlbGVkKQogICAgIHsKLSAgICAgICAgdmFyIHJlc291cmNlID0gdGhp
cy5faW5mbGlnaHRSZXNvdXJjZXNCeUlkW3JlcXVlc3RJZF07Ci0gICAgICAgIGlmICghcmVzb3Vy
Y2UpCisgICAgICAgIHZhciBuZXR3b3JrUmVxdWVzdCA9IHRoaXMuX2luZmxpZ2h0UmVxdWVzdHNC
eUlkW3JlcXVlc3RJZF07CisgICAgICAgIGlmICghbmV0d29ya1JlcXVlc3QpCiAgICAgICAgICAg
ICByZXR1cm47CiAKLSAgICAgICAgcmVzb3VyY2UuZmFpbGVkID0gdHJ1ZTsKLSAgICAgICAgcmVz
b3VyY2UuY2FuY2VsZWQgPSBjYW5jZWxlZDsKLSAgICAgICAgcmVzb3VyY2UubG9jYWxpemVkRmFp
bERlc2NyaXB0aW9uID0gbG9jYWxpemVkRGVzY3JpcHRpb247Ci0gICAgICAgIHRoaXMuX2Zpbmlz
aFJlc291cmNlKHJlc291cmNlLCB0aW1lKTsKKyAgICAgICAgbmV0d29ya1JlcXVlc3QuZmFpbGVk
ID0gdHJ1ZTsKKyAgICAgICAgbmV0d29ya1JlcXVlc3QuY2FuY2VsZWQgPSBjYW5jZWxlZDsKKyAg
ICAgICAgbmV0d29ya1JlcXVlc3QubG9jYWxpemVkRmFpbERlc2NyaXB0aW9uID0gbG9jYWxpemVk
RGVzY3JpcHRpb247CisgICAgICAgIHRoaXMuX2ZpbmlzaE5ldHdvcmtSZXF1ZXN0KG5ldHdvcmtS
ZXF1ZXN0LCB0aW1lKTsKICAgICB9LAogCiAgICAgLyoqCkBAIC00MTYsMTMgKzQxNiwxMyBAQCBX
ZWJJbnNwZWN0b3IuTmV0d29ya0Rpc3BhdGNoZXIucHJvdG90eXBlID0gewogICAgICAqLwogICAg
IHJlcXVlc3RTZXJ2ZWRGcm9tTWVtb3J5Q2FjaGU6IGZ1bmN0aW9uKHJlcXVlc3RJZCwgZnJhbWVJ
ZCwgbG9hZGVySWQsIGRvY3VtZW50VVJMLCB0aW1lLCBpbml0aWF0b3IsIGNhY2hlZFJlc291cmNl
KQogICAgIHsKLSAgICAgICAgdmFyIHJlc291cmNlID0gdGhpcy5fY3JlYXRlUmVzb3VyY2UocmVx
dWVzdElkLCBmcmFtZUlkLCBsb2FkZXJJZCwgY2FjaGVkUmVzb3VyY2UudXJsLCBkb2N1bWVudFVS
TCwgaW5pdGlhdG9yLCBudWxsKTsKLSAgICAgICAgdGhpcy5fdXBkYXRlUmVzb3VyY2VXaXRoQ2Fj
aGVkUmVzb3VyY2UocmVzb3VyY2UsIGNhY2hlZFJlc291cmNlKTsKLSAgICAgICAgcmVzb3VyY2Uu
Y2FjaGVkID0gdHJ1ZTsKLSAgICAgICAgcmVzb3VyY2UucmVxdWVzdE1ldGhvZCA9ICJHRVQiOwot
ICAgICAgICB0aGlzLl9zdGFydFJlc291cmNlKHJlc291cmNlKTsKLSAgICAgICAgcmVzb3VyY2Uu
c3RhcnRUaW1lID0gcmVzb3VyY2UucmVzcG9uc2VSZWNlaXZlZFRpbWUgPSB0aW1lOwotICAgICAg
ICB0aGlzLl9maW5pc2hSZXNvdXJjZShyZXNvdXJjZSwgdGltZSk7CisgICAgICAgIHZhciBuZXR3
b3JrUmVxdWVzdCA9IHRoaXMuX2NyZWF0ZU5ldHdvcmtSZXF1ZXN0KHJlcXVlc3RJZCwgZnJhbWVJ
ZCwgbG9hZGVySWQsIGNhY2hlZFJlc291cmNlLnVybCwgZG9jdW1lbnRVUkwsIGluaXRpYXRvciwg
bnVsbCk7CisgICAgICAgIHRoaXMuX3VwZGF0ZU5ldHdvcmtSZXF1ZXN0V2l0aENhY2hlZFJlc291
cmNlKG5ldHdvcmtSZXF1ZXN0LCBjYWNoZWRSZXNvdXJjZSk7CisgICAgICAgIG5ldHdvcmtSZXF1
ZXN0LmNhY2hlZCA9IHRydWU7CisgICAgICAgIG5ldHdvcmtSZXF1ZXN0LnJlcXVlc3RNZXRob2Qg
PSAiR0VUIjsKKyAgICAgICAgdGhpcy5fc3RhcnROZXR3b3JrUmVxdWVzdChuZXR3b3JrUmVxdWVz
dCk7CisgICAgICAgIG5ldHdvcmtSZXF1ZXN0LnN0YXJ0VGltZSA9IG5ldHdvcmtSZXF1ZXN0LnJl
c3BvbnNlUmVjZWl2ZWRUaW1lID0gdGltZTsKKyAgICAgICAgdGhpcy5fZmluaXNoTmV0d29ya1Jl
cXVlc3QobmV0d29ya1JlcXVlc3QsIHRpbWUpOwogICAgIH0sCiAKICAgICAvKioKQEAgLTQzMSw5
ICs0MzEsOSBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya0Rpc3BhdGNoZXIucHJvdG90eXBlID0gewog
ICAgICAqLwogICAgIHdlYlNvY2tldENyZWF0ZWQ6IGZ1bmN0aW9uKHJlcXVlc3RJZCwgcmVxdWVz
dFVSTCkKICAgICB7Ci0gICAgICAgIHZhciByZXNvdXJjZSA9IG5ldyBXZWJJbnNwZWN0b3IuUmVz
b3VyY2UocmVxdWVzdElkLCByZXF1ZXN0VVJMLCAiIiwgbnVsbCk7Ci0gICAgICAgIHJlc291cmNl
LnR5cGUgPSBXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5XZWJTb2NrZXQ7Ci0gICAgICAgIHRo
aXMuX3N0YXJ0UmVzb3VyY2UocmVzb3VyY2UpOworICAgICAgICB2YXIgbmV0d29ya1JlcXVlc3Qg
PSBuZXcgV2ViSW5zcGVjdG9yLk5ldHdvcmtSZXF1ZXN0KHJlcXVlc3RJZCwgcmVxdWVzdFVSTCwg
IiIsICIiKTsKKyAgICAgICAgbmV0d29ya1JlcXVlc3QudHlwZSA9IFdlYkluc3BlY3Rvci5yZXNv
dXJjZVR5cGVzLldlYlNvY2tldDsKKyAgICAgICAgdGhpcy5fc3RhcnROZXR3b3JrUmVxdWVzdChu
ZXR3b3JrUmVxdWVzdCk7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtNDQzLDE2ICs0NDMsMTYgQEAg
V2ViSW5zcGVjdG9yLk5ldHdvcmtEaXNwYXRjaGVyLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAg
ICB3ZWJTb2NrZXRXaWxsU2VuZEhhbmRzaGFrZVJlcXVlc3Q6IGZ1bmN0aW9uKHJlcXVlc3RJZCwg
dGltZSwgcmVxdWVzdCkKICAgICB7Ci0gICAgICAgIHZhciByZXNvdXJjZSA9IHRoaXMuX2luZmxp
Z2h0UmVzb3VyY2VzQnlJZFtyZXF1ZXN0SWRdOwotICAgICAgICBpZiAoIXJlc291cmNlKQorICAg
ICAgICB2YXIgbmV0d29ya1JlcXVlc3QgPSB0aGlzLl9pbmZsaWdodFJlcXVlc3RzQnlJZFtyZXF1
ZXN0SWRdOworICAgICAgICBpZiAoIW5ldHdvcmtSZXF1ZXN0KQogICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgIHJlc291cmNlLnJlcXVlc3RNZXRob2QgPSAiR0VUIjsKLSAgICAgICAgcmVz
b3VyY2UucmVxdWVzdEhlYWRlcnMgPSByZXF1ZXN0LmhlYWRlcnM7Ci0gICAgICAgIHJlc291cmNl
LndlYlNvY2tldFJlcXVlc3RLZXkzID0gcmVxdWVzdC5yZXF1ZXN0S2V5MzsKLSAgICAgICAgcmVz
b3VyY2Uuc3RhcnRUaW1lID0gdGltZTsKKyAgICAgICAgbmV0d29ya1JlcXVlc3QucmVxdWVzdE1l
dGhvZCA9ICJHRVQiOworICAgICAgICBuZXR3b3JrUmVxdWVzdC5yZXF1ZXN0SGVhZGVycyA9IHJl
cXVlc3QuaGVhZGVyczsKKyAgICAgICAgbmV0d29ya1JlcXVlc3Qud2ViU29ja2V0UmVxdWVzdEtl
eTMgPSByZXF1ZXN0LnJlcXVlc3RLZXkzOworICAgICAgICBuZXR3b3JrUmVxdWVzdC5zdGFydFRp
bWUgPSB0aW1lOwogCi0gICAgICAgIHRoaXMuX3VwZGF0ZVJlc291cmNlKHJlc291cmNlKTsKKyAg
ICAgICAgdGhpcy5fdXBkYXRlTmV0d29ya1JlcXVlc3QobmV0d29ya1JlcXVlc3QpOwogICAgIH0s
CiAKICAgICAvKioKQEAgLTQ2MiwxNyArNDYyLDE3IEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrRGlz
cGF0Y2hlci5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgd2ViU29ja2V0SGFuZHNoYWtlUmVz
cG9uc2VSZWNlaXZlZDogZnVuY3Rpb24ocmVxdWVzdElkLCB0aW1lLCByZXNwb25zZSkKICAgICB7
Ci0gICAgICAgIHZhciByZXNvdXJjZSA9IHRoaXMuX2luZmxpZ2h0UmVzb3VyY2VzQnlJZFtyZXF1
ZXN0SWRdOwotICAgICAgICBpZiAoIXJlc291cmNlKQorICAgICAgICB2YXIgbmV0d29ya1JlcXVl
c3QgPSB0aGlzLl9pbmZsaWdodFJlcXVlc3RzQnlJZFtyZXF1ZXN0SWRdOworICAgICAgICBpZiAo
IW5ldHdvcmtSZXF1ZXN0KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHJlc291cmNl
LnN0YXR1c0NvZGUgPSByZXNwb25zZS5zdGF0dXM7Ci0gICAgICAgIHJlc291cmNlLnN0YXR1c1Rl
eHQgPSByZXNwb25zZS5zdGF0dXNUZXh0OwotICAgICAgICByZXNvdXJjZS5yZXNwb25zZUhlYWRl
cnMgPSByZXNwb25zZS5oZWFkZXJzOwotICAgICAgICByZXNvdXJjZS53ZWJTb2NrZXRDaGFsbGVu
Z2VSZXNwb25zZSA9IHJlc3BvbnNlLmNoYWxsZW5nZVJlc3BvbnNlOwotICAgICAgICByZXNvdXJj
ZS5yZXNwb25zZVJlY2VpdmVkVGltZSA9IHRpbWU7CisgICAgICAgIG5ldHdvcmtSZXF1ZXN0LnN0
YXR1c0NvZGUgPSByZXNwb25zZS5zdGF0dXM7CisgICAgICAgIG5ldHdvcmtSZXF1ZXN0LnN0YXR1
c1RleHQgPSByZXNwb25zZS5zdGF0dXNUZXh0OworICAgICAgICBuZXR3b3JrUmVxdWVzdC5yZXNw
b25zZUhlYWRlcnMgPSByZXNwb25zZS5oZWFkZXJzOworICAgICAgICBuZXR3b3JrUmVxdWVzdC53
ZWJTb2NrZXRDaGFsbGVuZ2VSZXNwb25zZSA9IHJlc3BvbnNlLmNoYWxsZW5nZVJlc3BvbnNlOwor
ICAgICAgICBuZXR3b3JrUmVxdWVzdC5yZXNwb25zZVJlY2VpdmVkVGltZSA9IHRpbWU7CiAKLSAg
ICAgICAgdGhpcy5fdXBkYXRlUmVzb3VyY2UocmVzb3VyY2UpOworICAgICAgICB0aGlzLl91cGRh
dGVOZXR3b3JrUmVxdWVzdChuZXR3b3JrUmVxdWVzdCk7CiAgICAgfSwKIAogICAgIC8qKgpAQCAt
NDgxLDcwICs0ODEsNzEgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtEaXNwYXRjaGVyLnByb3RvdHlw
ZSA9IHsKICAgICAgKi8KICAgICB3ZWJTb2NrZXRDbG9zZWQ6IGZ1bmN0aW9uKHJlcXVlc3RJZCwg
dGltZSkKICAgICB7Ci0gICAgICAgIHZhciByZXNvdXJjZSA9IHRoaXMuX2luZmxpZ2h0UmVzb3Vy
Y2VzQnlJZFtyZXF1ZXN0SWRdOwotICAgICAgICBpZiAoIXJlc291cmNlKQorICAgICAgICB2YXIg
bmV0d29ya1JlcXVlc3QgPSB0aGlzLl9pbmZsaWdodFJlcXVlc3RzQnlJZFtyZXF1ZXN0SWRdOwor
ICAgICAgICBpZiAoIW5ldHdvcmtSZXF1ZXN0KQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB0aGlzLl9maW5pc2hSZXNvdXJjZShyZXNvdXJjZSwgdGltZSk7CisgICAgICAgIHRoaXMuX2Zp
bmlzaE5ldHdvcmtSZXF1ZXN0KG5ldHdvcmtSZXF1ZXN0LCB0aW1lKTsKICAgICB9LAogCiAgICAg
LyoqCiAgICAgICogQHBhcmFtIHtOZXR3b3JrQWdlbnQuUmVxdWVzdElkfSByZXF1ZXN0SWQKICAg
ICAgKiBAcGFyYW0ge05ldHdvcmtBZ2VudC5UaW1lc3RhbXB9IHRpbWUKICAgICAgKiBAcGFyYW0g
e3N0cmluZ30gcmVkaXJlY3RVUkwKKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuTmV0d29y
a1JlcXVlc3R9CiAgICAgICovCiAgICAgX2FwcGVuZFJlZGlyZWN0OiBmdW5jdGlvbihyZXF1ZXN0
SWQsIHRpbWUsIHJlZGlyZWN0VVJMKQogICAgIHsKLSAgICAgICAgdmFyIG9yaWdpbmFsUmVzb3Vy
Y2UgPSB0aGlzLl9pbmZsaWdodFJlc291cmNlc0J5SWRbcmVxdWVzdElkXTsKLSAgICAgICAgdmFy
IHByZXZpb3VzUmVkaXJlY3RzID0gb3JpZ2luYWxSZXNvdXJjZS5yZWRpcmVjdHMgfHwgW107Ci0g
ICAgICAgIG9yaWdpbmFsUmVzb3VyY2UucmVxdWVzdElkID0gInJlZGlyZWN0ZWQ6IiArIHJlcXVl
c3RJZCArICIuIiArIHByZXZpb3VzUmVkaXJlY3RzLmxlbmd0aDsKLSAgICAgICAgZGVsZXRlIG9y
aWdpbmFsUmVzb3VyY2UucmVkaXJlY3RzOworICAgICAgICB2YXIgb3JpZ2luYWxOZXR3b3JrUmVx
dWVzdCA9IHRoaXMuX2luZmxpZ2h0UmVxdWVzdHNCeUlkW3JlcXVlc3RJZF07CisgICAgICAgIHZh
ciBwcmV2aW91c1JlZGlyZWN0cyA9IG9yaWdpbmFsTmV0d29ya1JlcXVlc3QucmVkaXJlY3RzIHx8
IFtdOworICAgICAgICBvcmlnaW5hbE5ldHdvcmtSZXF1ZXN0LnJlcXVlc3RJZCA9ICJyZWRpcmVj
dGVkOiIgKyByZXF1ZXN0SWQgKyAiLiIgKyBwcmV2aW91c1JlZGlyZWN0cy5sZW5ndGg7CisgICAg
ICAgIGRlbGV0ZSBvcmlnaW5hbE5ldHdvcmtSZXF1ZXN0LnJlZGlyZWN0czsKICAgICAgICAgaWYg
KHByZXZpb3VzUmVkaXJlY3RzLmxlbmd0aCA+IDApCi0gICAgICAgICAgICBvcmlnaW5hbFJlc291
cmNlLnJlZGlyZWN0U291cmNlID0gcHJldmlvdXNSZWRpcmVjdHNbcHJldmlvdXNSZWRpcmVjdHMu
bGVuZ3RoIC0gMV07Ci0gICAgICAgIHRoaXMuX2ZpbmlzaFJlc291cmNlKG9yaWdpbmFsUmVzb3Vy
Y2UsIHRpbWUpOwotICAgICAgICB2YXIgbmV3UmVzb3VyY2UgPSB0aGlzLl9jcmVhdGVSZXNvdXJj
ZShyZXF1ZXN0SWQsIG9yaWdpbmFsUmVzb3VyY2UuZnJhbWVJZCwgb3JpZ2luYWxSZXNvdXJjZS5s
b2FkZXJJZCwKLSAgICAgICAgICAgICByZWRpcmVjdFVSTCwgb3JpZ2luYWxSZXNvdXJjZS5kb2N1
bWVudFVSTCwgb3JpZ2luYWxSZXNvdXJjZS5pbml0aWF0b3IsIG9yaWdpbmFsUmVzb3VyY2Uuc3Rh
Y2tUcmFjZSk7Ci0gICAgICAgIG5ld1Jlc291cmNlLnJlZGlyZWN0cyA9IHByZXZpb3VzUmVkaXJl
Y3RzLmNvbmNhdChvcmlnaW5hbFJlc291cmNlKTsKLSAgICAgICAgcmV0dXJuIG5ld1Jlc291cmNl
OworICAgICAgICAgICAgb3JpZ2luYWxOZXR3b3JrUmVxdWVzdC5yZWRpcmVjdFNvdXJjZSA9IHBy
ZXZpb3VzUmVkaXJlY3RzW3ByZXZpb3VzUmVkaXJlY3RzLmxlbmd0aCAtIDFdOworICAgICAgICB0
aGlzLl9maW5pc2hOZXR3b3JrUmVxdWVzdChvcmlnaW5hbE5ldHdvcmtSZXF1ZXN0LCB0aW1lKTsK
KyAgICAgICAgdmFyIG5ld05ldHdvcmtSZXF1ZXN0ID0gdGhpcy5fY3JlYXRlTmV0d29ya1JlcXVl
c3QocmVxdWVzdElkLCBvcmlnaW5hbE5ldHdvcmtSZXF1ZXN0LmZyYW1lSWQsIG9yaWdpbmFsTmV0
d29ya1JlcXVlc3QubG9hZGVySWQsCisgICAgICAgICAgICAgcmVkaXJlY3RVUkwsIG9yaWdpbmFs
TmV0d29ya1JlcXVlc3QuZG9jdW1lbnRVUkwsIG9yaWdpbmFsTmV0d29ya1JlcXVlc3QuaW5pdGlh
dG9yLCBvcmlnaW5hbE5ldHdvcmtSZXF1ZXN0LnN0YWNrVHJhY2UpOworICAgICAgICBuZXdOZXR3
b3JrUmVxdWVzdC5yZWRpcmVjdHMgPSBwcmV2aW91c1JlZGlyZWN0cy5jb25jYXQob3JpZ2luYWxO
ZXR3b3JrUmVxdWVzdCk7CisgICAgICAgIHJldHVybiBuZXdOZXR3b3JrUmVxdWVzdDsKICAgICB9
LAogCiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2V9IHJlc291
cmNlCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVlc3R9IG5ldHdvcmtS
ZXF1ZXN0CiAgICAgICovCi0gICAgX3N0YXJ0UmVzb3VyY2U6IGZ1bmN0aW9uKHJlc291cmNlKQor
ICAgIF9zdGFydE5ldHdvcmtSZXF1ZXN0OiBmdW5jdGlvbihuZXR3b3JrUmVxdWVzdCkKICAgICB7
Ci0gICAgICAgIHRoaXMuX2luZmxpZ2h0UmVzb3VyY2VzQnlJZFtyZXNvdXJjZS5yZXF1ZXN0SWRd
ID0gcmVzb3VyY2U7Ci0gICAgICAgIHRoaXMuX2luZmxpZ2h0UmVzb3VyY2VzQnlVUkxbcmVzb3Vy
Y2UudXJsXSA9IHJlc291cmNlOwotICAgICAgICB0aGlzLl9kaXNwYXRjaEV2ZW50VG9MaXN0ZW5l
cnMoV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLkV2ZW50VHlwZXMuUmVzb3VyY2VTdGFydGVk
LCByZXNvdXJjZSk7CisgICAgICAgIHRoaXMuX2luZmxpZ2h0UmVxdWVzdHNCeUlkW25ldHdvcmtS
ZXF1ZXN0LnJlcXVlc3RJZF0gPSBuZXR3b3JrUmVxdWVzdDsKKyAgICAgICAgdGhpcy5faW5mbGln
aHRSZXF1ZXN0c0J5VVJMW25ldHdvcmtSZXF1ZXN0LnVybF0gPSBuZXR3b3JrUmVxdWVzdDsKKyAg
ICAgICAgdGhpcy5fZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5OZXR3b3Jr
TWFuYWdlci5FdmVudFR5cGVzLlJlcXVlc3RTdGFydGVkLCBuZXR3b3JrUmVxdWVzdCk7CiAgICAg
fSwKIAogICAgIC8qKgotICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlJlc291cmNlfSByZXNv
dXJjZQorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLk5ldHdvcmtSZXF1ZXN0fSBuZXR3b3Jr
UmVxdWVzdAogICAgICAqLwotICAgIF91cGRhdGVSZXNvdXJjZTogZnVuY3Rpb24ocmVzb3VyY2Up
CisgICAgX3VwZGF0ZU5ldHdvcmtSZXF1ZXN0OiBmdW5jdGlvbihuZXR3b3JrUmVxdWVzdCkKICAg
ICB7Ci0gICAgICAgIHRoaXMuX2Rpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3Iu
TmV0d29ya01hbmFnZXIuRXZlbnRUeXBlcy5SZXNvdXJjZVVwZGF0ZWQsIHJlc291cmNlKTsKKyAg
ICAgICAgdGhpcy5fZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5OZXR3b3Jr
TWFuYWdlci5FdmVudFR5cGVzLlJlcXVlc3RVcGRhdGVkLCBuZXR3b3JrUmVxdWVzdCk7CiAgICAg
fSwKIAogICAgIC8qKgotICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlJlc291cmNlfSByZXNv
dXJjZQorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLk5ldHdvcmtSZXF1ZXN0fSBuZXR3b3Jr
UmVxdWVzdAogICAgICAqIEBwYXJhbSB7TmV0d29ya0FnZW50LlRpbWVzdGFtcH0gZmluaXNoVGlt
ZQogICAgICAqLwotICAgIF9maW5pc2hSZXNvdXJjZTogZnVuY3Rpb24ocmVzb3VyY2UsIGZpbmlz
aFRpbWUpCisgICAgX2ZpbmlzaE5ldHdvcmtSZXF1ZXN0OiBmdW5jdGlvbihuZXR3b3JrUmVxdWVz
dCwgZmluaXNoVGltZSkKICAgICB7Ci0gICAgICAgIHJlc291cmNlLmVuZFRpbWUgPSBmaW5pc2hU
aW1lOwotICAgICAgICByZXNvdXJjZS5maW5pc2hlZCA9IHRydWU7Ci0gICAgICAgIHRoaXMuX2Rp
c3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIuRXZlbnRU
eXBlcy5SZXNvdXJjZUZpbmlzaGVkLCByZXNvdXJjZSk7Ci0gICAgICAgIGRlbGV0ZSB0aGlzLl9p
bmZsaWdodFJlc291cmNlc0J5SWRbcmVzb3VyY2UucmVxdWVzdElkXTsKLSAgICAgICAgZGVsZXRl
IHRoaXMuX2luZmxpZ2h0UmVzb3VyY2VzQnlVUkxbcmVzb3VyY2UudXJsXTsKKyAgICAgICAgbmV0
d29ya1JlcXVlc3QuZW5kVGltZSA9IGZpbmlzaFRpbWU7CisgICAgICAgIG5ldHdvcmtSZXF1ZXN0
LmZpbmlzaGVkID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5fZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJz
KFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5FdmVudFR5cGVzLlJlcXVlc3RGaW5pc2hlZCwg
bmV0d29ya1JlcXVlc3QpOworICAgICAgICBkZWxldGUgdGhpcy5faW5mbGlnaHRSZXF1ZXN0c0J5
SWRbbmV0d29ya1JlcXVlc3QucmVxdWVzdElkXTsKKyAgICAgICAgZGVsZXRlIHRoaXMuX2luZmxp
Z2h0UmVxdWVzdHNCeVVSTFtuZXR3b3JrUmVxdWVzdC51cmxdOwogICAgIH0sCiAKICAgICAvKioK
ICAgICAgKiBAcGFyYW0ge3N0cmluZ30gZXZlbnRUeXBlCi0gICAgICogQHBhcmFtIHtXZWJJbnNw
ZWN0b3IuUmVzb3VyY2V9IHJlc291cmNlCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuTmV0
d29ya1JlcXVlc3R9IG5ldHdvcmtSZXF1ZXN0CiAgICAgICovCi0gICAgX2Rpc3BhdGNoRXZlbnRU
b0xpc3RlbmVyczogZnVuY3Rpb24oZXZlbnRUeXBlLCByZXNvdXJjZSkKKyAgICBfZGlzcGF0Y2hF
dmVudFRvTGlzdGVuZXJzOiBmdW5jdGlvbihldmVudFR5cGUsIG5ldHdvcmtSZXF1ZXN0KQogICAg
IHsKLSAgICAgICAgdGhpcy5fbWFuYWdlci5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoZXZlbnRU
eXBlLCByZXNvdXJjZSk7CisgICAgICAgIHRoaXMuX21hbmFnZXIuZGlzcGF0Y2hFdmVudFRvTGlz
dGVuZXJzKGV2ZW50VHlwZSwgbmV0d29ya1JlcXVlc3QpOwogICAgIH0sCiAKICAgICAvKioKQEAg
LTU1NiwxMyArNTU3LDEzIEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrRGlzcGF0Y2hlci5wcm90b3R5
cGUgPSB7CiAgICAgICogQHBhcmFtIHtOZXR3b3JrQWdlbnQuSW5pdGlhdG9yfSBpbml0aWF0b3IK
ICAgICAgKiBAcGFyYW0ge0NvbnNvbGVBZ2VudC5TdGFja1RyYWNlPX0gc3RhY2tUcmFjZQogICAg
ICAqLwotICAgIF9jcmVhdGVSZXNvdXJjZTogZnVuY3Rpb24ocmVxdWVzdElkLCBmcmFtZUlkLCBs
b2FkZXJJZCwgdXJsLCBkb2N1bWVudFVSTCwgaW5pdGlhdG9yLCBzdGFja1RyYWNlKQorICAgIF9j
cmVhdGVOZXR3b3JrUmVxdWVzdDogZnVuY3Rpb24ocmVxdWVzdElkLCBmcmFtZUlkLCBsb2FkZXJJ
ZCwgdXJsLCBkb2N1bWVudFVSTCwgaW5pdGlhdG9yLCBzdGFja1RyYWNlKQogICAgIHsKLSAgICAg
ICAgdmFyIHJlc291cmNlID0gbmV3IFdlYkluc3BlY3Rvci5SZXNvdXJjZShyZXF1ZXN0SWQsIHVy
bCwgZnJhbWVJZCwgbG9hZGVySWQpOwotICAgICAgICByZXNvdXJjZS5kb2N1bWVudFVSTCA9IGRv
Y3VtZW50VVJMOwotICAgICAgICByZXNvdXJjZS5pbml0aWF0b3IgPSBpbml0aWF0b3I7Ci0gICAg
ICAgIHJlc291cmNlLnN0YWNrVHJhY2UgPSBzdGFja1RyYWNlOwotICAgICAgICByZXR1cm4gcmVz
b3VyY2U7CisgICAgICAgIHZhciBuZXR3b3JrUmVxdWVzdCA9IG5ldyBXZWJJbnNwZWN0b3IuTmV0
d29ya1JlcXVlc3QocmVxdWVzdElkLCB1cmwsIGZyYW1lSWQsIGxvYWRlcklkKTsKKyAgICAgICAg
bmV0d29ya1JlcXVlc3QuZG9jdW1lbnRVUkwgPSBkb2N1bWVudFVSTDsKKyAgICAgICAgbmV0d29y
a1JlcXVlc3QuaW5pdGlhdG9yID0gaW5pdGlhdG9yOworICAgICAgICBuZXR3b3JrUmVxdWVzdC5z
dGFja1RyYWNlID0gc3RhY2tUcmFjZTsKKyAgICAgICAgcmV0dXJuIG5ldHdvcmtSZXF1ZXN0Owog
ICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9OZXR3b3JrUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05l
dHdvcmtQYW5lbC5qcwppbmRleCA1Y2Q0NTc2M2FiYTgxOGI3ZWJmZmQ2MjdhZmVkZmEwMjFiZjc3
NGIzLi5jMmRkMGFhZDhhZGE4MzUzZDZjMGE2NDk4NmI5NjUzMGM4YmM1YWE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qcwpAQCAt
MzcsMjcgKzM3LDI3IEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrTG9nVmlldyA9IGZ1bmN0aW9uKCkK
ICAgICBXZWJJbnNwZWN0b3IuVmlldy5jYWxsKHRoaXMpOwogICAgIHRoaXMucmVnaXN0ZXJSZXF1
aXJlZENTUygibmV0d29ya0xvZ1ZpZXcuY3NzIik7CiAKLSAgICB0aGlzLl9hbGxvd1Jlc291cmNl
U2VsZWN0aW9uID0gZmFsc2U7Ci0gICAgdGhpcy5fcmVzb3VyY2VzID0gW107Ci0gICAgdGhpcy5f
cmVzb3VyY2VzQnlJZCA9IHt9OwotICAgIHRoaXMuX3Jlc291cmNlc0J5VVJMID0ge307Ci0gICAg
dGhpcy5fc3RhbGVSZXNvdXJjZXMgPSB7fTsKLSAgICB0aGlzLl9yZXNvdXJjZUdyaWROb2RlcyA9
IHt9OwotICAgIHRoaXMuX2xhc3RSZXNvdXJjZUdyaWROb2RlSWQgPSAwOwotICAgIHRoaXMuX21h
aW5SZXNvdXJjZUxvYWRUaW1lID0gLTE7Ci0gICAgdGhpcy5fbWFpblJlc291cmNlRE9NQ29udGVu
dFRpbWUgPSAtMTsKKyAgICB0aGlzLl9hbGxvd1JlcXVlc3RTZWxlY3Rpb24gPSBmYWxzZTsKKyAg
ICB0aGlzLl9yZXF1ZXN0cyA9IFtdOworICAgIHRoaXMuX3JlcXVlc3RzQnlJZCA9IHt9OworICAg
IHRoaXMuX3JlcXVlc3RzQnlVUkwgPSB7fTsKKyAgICB0aGlzLl9zdGFsZVJlcXVlc3RzID0ge307
CisgICAgdGhpcy5fcmVxdWVzdEdyaWROb2RlcyA9IHt9OworICAgIHRoaXMuX2xhc3RSZXF1ZXN0
R3JpZE5vZGVJZCA9IDA7CisgICAgdGhpcy5fbWFpblJlcXVlc3RMb2FkVGltZSA9IC0xOworICAg
IHRoaXMuX21haW5SZXF1ZXN0RE9NQ29udGVudFRpbWUgPSAtMTsKICAgICB0aGlzLl9oaWRkZW5D
YXRlZ29yaWVzID0ge307Ci0gICAgdGhpcy5fbWF0Y2hlZFJlc291cmNlcyA9IFtdOwotICAgIHRo
aXMuX21hdGNoZWRSZXNvdXJjZXNNYXAgPSB7fTsKLSAgICB0aGlzLl9jdXJyZW50TWF0Y2hlZFJl
c291cmNlSW5kZXggPSAtMTsKKyAgICB0aGlzLl9tYXRjaGVkUmVxdWVzdHMgPSBbXTsKKyAgICB0
aGlzLl9tYXRjaGVkUmVxdWVzdHNNYXAgPSB7fTsKKyAgICB0aGlzLl9jdXJyZW50TWF0Y2hlZFJl
cXVlc3RJbmRleCA9IC0xOwogCiAgICAgdGhpcy5fY3JlYXRlU3RhdHVzYmFyQnV0dG9ucygpOwog
ICAgIHRoaXMuX2NyZWF0ZUZpbHRlclN0YXR1c0Jhckl0ZW1zKCk7CiAgICAgdGhpcy5fbGlua2lm
aWVyID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuY3JlYXRlTGlua2lm
aWVyKCk7CiAKLSAgICBXZWJJbnNwZWN0b3IubmV0d29ya01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIuRXZlbnRUeXBlcy5SZXNvdXJjZVN0YXJ0ZWQs
IHRoaXMuX29uUmVzb3VyY2VTdGFydGVkLCB0aGlzKTsKLSAgICBXZWJJbnNwZWN0b3IubmV0d29y
a01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIuRXZl
bnRUeXBlcy5SZXNvdXJjZVVwZGF0ZWQsIHRoaXMuX29uUmVzb3VyY2VVcGRhdGVkLCB0aGlzKTsK
LSAgICBXZWJJbnNwZWN0b3IubmV0d29ya01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuTmV0d29ya01hbmFnZXIuRXZlbnRUeXBlcy5SZXNvdXJjZUZpbmlzaGVkLCB0aGlzLl9v
blJlc291cmNlVXBkYXRlZCwgdGhpcyk7CisgICAgV2ViSW5zcGVjdG9yLm5ldHdvcmtNYW5hZ2Vy
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLkV2ZW50VHlwZXMu
UmVxdWVzdFN0YXJ0ZWQsIHRoaXMuX29uUmVxdWVzdFN0YXJ0ZWQsIHRoaXMpOworICAgIFdlYklu
c3BlY3Rvci5uZXR3b3JrTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5OZXR3
b3JrTWFuYWdlci5FdmVudFR5cGVzLlJlcXVlc3RVcGRhdGVkLCB0aGlzLl9vblJlcXVlc3RVcGRh
dGVkLCB0aGlzKTsKKyAgICBXZWJJbnNwZWN0b3IubmV0d29ya01hbmFnZXIuYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIuRXZlbnRUeXBlcy5SZXF1ZXN0RmluaXNo
ZWQsIHRoaXMuX29uUmVxdWVzdFVwZGF0ZWQsIHRoaXMpOwogCiAgICAgV2ViSW5zcGVjdG9yLnJl
c291cmNlVHJlZU1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJl
ZU1vZGVsLkV2ZW50VHlwZXMuTWFpbkZyYW1lTmF2aWdhdGVkLCB0aGlzLl9tYWluRnJhbWVOYXZp
Z2F0ZWQsIHRoaXMpOwogICAgIFdlYkluc3BlY3Rvci5yZXNvdXJjZVRyZWVNb2RlbC5hZGRFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5FdmVudFR5cGVzLk9uTG9h
ZCwgdGhpcy5fb25Mb2FkRXZlbnRGaXJlZCwgdGhpcyk7CkBAIC04OCw3ICs4OCw3IEBAIFdlYklu
c3BlY3Rvci5OZXR3b3JrTG9nVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2NyZWF0
ZVN1bW1hcnlCYXIoKTsKIAogICAgICAgICBpZiAoIXRoaXMudXNlTGFyZ2VSb3dzKQotICAgICAg
ICAgICAgdGhpcy5fc2V0TGFyZ2VyUmVzb3VyY2VzKHRoaXMudXNlTGFyZ2VSb3dzKTsKKyAgICAg
ICAgICAgIHRoaXMuX3NldExhcmdlclJlcXVlc3RzKHRoaXMudXNlTGFyZ2VSb3dzKTsKIAogICAg
ICAgICB0aGlzLl9hbGxvd1BvcG92ZXIgPSB0cnVlOwogICAgICAgICB0aGlzLl9wb3BvdmVySGVs
cGVyID0gbmV3IFdlYkluc3BlY3Rvci5Qb3BvdmVySGVscGVyKHRoaXMuZWxlbWVudCwgdGhpcy5f
Z2V0UG9wb3ZlckFuY2hvci5iaW5kKHRoaXMpLCB0aGlzLl9zaG93UG9wb3Zlci5iaW5kKHRoaXMp
KTsKQEAgLTEwMyw3ICsxMDMsNyBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya0xvZ1ZpZXcucHJvdG90
eXBlID0gewogCiAgICAgZ2V0IHN0YXR1c0Jhckl0ZW1zKCkKICAgICB7Ci0gICAgICAgIHJldHVy
biBbdGhpcy5fbGFyZ2VyUmVzb3VyY2VzQnV0dG9uLmVsZW1lbnQsIHRoaXMuX3ByZXNlcnZlTG9n
VG9nZ2xlLmVsZW1lbnQsIHRoaXMuX2NsZWFyQnV0dG9uLmVsZW1lbnQsIHRoaXMuX2ZpbHRlckJh
ckVsZW1lbnRdOworICAgICAgICByZXR1cm4gW3RoaXMuX2xhcmdlclJlcXVlc3RzQnV0dG9uLmVs
ZW1lbnQsIHRoaXMuX3ByZXNlcnZlTG9nVG9nZ2xlLmVsZW1lbnQsIHRoaXMuX2NsZWFyQnV0dG9u
LmVsZW1lbnQsIHRoaXMuX2ZpbHRlckJhckVsZW1lbnRdOwogICAgIH0sCiAKICAgICBnZXQgdXNl
TGFyZ2VSb3dzKCkKQEAgLTExNiwxNiArMTE2LDYgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dW
aWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fYWxsb3dQb3BvdmVyID0gZmxhZzsKICAg
ICB9LAogCi0gICAgZ2V0IGFsbG93UmVzb3VyY2VTZWxlY3Rpb24oKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIHRoaXMuX2FsbG93UmVzb3VyY2VTZWxlY3Rpb247Ci0gICAgfSwKLQotICAgIHNldCBh
bGxvd1Jlc291cmNlU2VsZWN0aW9uKGZsYWcpCi0gICAgewotICAgICAgICB0aGlzLl9hbGxvd1Jl
c291cmNlU2VsZWN0aW9uID0gISFmbGFnOwotICAgIH0sCi0KICAgICBlbGVtZW50c1RvUmVzdG9y
ZVNjcm9sbFBvc2l0aW9uc0ZvcjogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlz
Ll9kYXRhR3JpZCkgLy8gTm90IGluaXRpYWxpemVkIHlldC4KQEAgLTI2NCwxOCArMjU0LDE4IEBA
IFdlYkluc3BlY3Rvci5OZXR3b3JrTG9nVmlldy5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAg
ICB0aGlzLl9zb3J0aW5nRnVuY3Rpb25zID0ge307CiAgICAgICAgIHRoaXMuX3NvcnRpbmdGdW5j
dGlvbnMubmFtZSA9IFdlYkluc3BlY3Rvci5OZXR3b3JrRGF0YUdyaWROb2RlLk5hbWVDb21wYXJh
dG9yOwotICAgICAgICB0aGlzLl9zb3J0aW5nRnVuY3Rpb25zLm1ldGhvZCA9IFdlYkluc3BlY3Rv
ci5OZXR3b3JrRGF0YUdyaWROb2RlLlJlc291cmNlUHJvcGVydHlDb21wYXJhdG9yLmJpbmQobnVs
bCwgIm1ldGhvZCIsIGZhbHNlKTsKLSAgICAgICAgdGhpcy5fc29ydGluZ0Z1bmN0aW9ucy5zdGF0
dXMgPSBXZWJJbnNwZWN0b3IuTmV0d29ya0RhdGFHcmlkTm9kZS5SZXNvdXJjZVByb3BlcnR5Q29t
cGFyYXRvci5iaW5kKG51bGwsICJzdGF0dXNDb2RlIiwgZmFsc2UpOwotICAgICAgICB0aGlzLl9z
b3J0aW5nRnVuY3Rpb25zLnR5cGUgPSBXZWJJbnNwZWN0b3IuTmV0d29ya0RhdGFHcmlkTm9kZS5S
ZXNvdXJjZVByb3BlcnR5Q29tcGFyYXRvci5iaW5kKG51bGwsICJtaW1lVHlwZSIsIGZhbHNlKTsK
KyAgICAgICAgdGhpcy5fc29ydGluZ0Z1bmN0aW9ucy5tZXRob2QgPSBXZWJJbnNwZWN0b3IuTmV0
d29ya0RhdGFHcmlkTm9kZS5SZXF1ZXN0UHJvcGVydHlDb21wYXJhdG9yLmJpbmQobnVsbCwgIm1l
dGhvZCIsIGZhbHNlKTsKKyAgICAgICAgdGhpcy5fc29ydGluZ0Z1bmN0aW9ucy5zdGF0dXMgPSBX
ZWJJbnNwZWN0b3IuTmV0d29ya0RhdGFHcmlkTm9kZS5SZXF1ZXN0UHJvcGVydHlDb21wYXJhdG9y
LmJpbmQobnVsbCwgInN0YXR1c0NvZGUiLCBmYWxzZSk7CisgICAgICAgIHRoaXMuX3NvcnRpbmdG
dW5jdGlvbnMudHlwZSA9IFdlYkluc3BlY3Rvci5OZXR3b3JrRGF0YUdyaWROb2RlLlJlcXVlc3RQ
cm9wZXJ0eUNvbXBhcmF0b3IuYmluZChudWxsLCAibWltZVR5cGUiLCBmYWxzZSk7CiAgICAgICAg
IHRoaXMuX3NvcnRpbmdGdW5jdGlvbnMuaW5pdGlhdG9yID0gV2ViSW5zcGVjdG9yLk5ldHdvcmtE
YXRhR3JpZE5vZGUuSW5pdGlhdG9yQ29tcGFyYXRvcjsKICAgICAgICAgdGhpcy5fc29ydGluZ0Z1
bmN0aW9ucy5zaXplID0gV2ViSW5zcGVjdG9yLk5ldHdvcmtEYXRhR3JpZE5vZGUuU2l6ZUNvbXBh
cmF0b3I7Ci0gICAgICAgIHRoaXMuX3NvcnRpbmdGdW5jdGlvbnMudGltZSA9IFdlYkluc3BlY3Rv
ci5OZXR3b3JrRGF0YUdyaWROb2RlLlJlc291cmNlUHJvcGVydHlDb21wYXJhdG9yLmJpbmQobnVs
bCwgImR1cmF0aW9uIiwgZmFsc2UpOwotICAgICAgICB0aGlzLl9zb3J0aW5nRnVuY3Rpb25zLnRp
bWVsaW5lID0gV2ViSW5zcGVjdG9yLk5ldHdvcmtEYXRhR3JpZE5vZGUuUmVzb3VyY2VQcm9wZXJ0
eUNvbXBhcmF0b3IuYmluZChudWxsLCAic3RhcnRUaW1lIiwgZmFsc2UpOwotICAgICAgICB0aGlz
Ll9zb3J0aW5nRnVuY3Rpb25zLnN0YXJ0VGltZSA9IFdlYkluc3BlY3Rvci5OZXR3b3JrRGF0YUdy
aWROb2RlLlJlc291cmNlUHJvcGVydHlDb21wYXJhdG9yLmJpbmQobnVsbCwgInN0YXJ0VGltZSIs
IGZhbHNlKTsKLSAgICAgICAgdGhpcy5fc29ydGluZ0Z1bmN0aW9ucy5lbmRUaW1lID0gV2ViSW5z
cGVjdG9yLk5ldHdvcmtEYXRhR3JpZE5vZGUuUmVzb3VyY2VQcm9wZXJ0eUNvbXBhcmF0b3IuYmlu
ZChudWxsLCAiZW5kVGltZSIsIGZhbHNlKTsKLSAgICAgICAgdGhpcy5fc29ydGluZ0Z1bmN0aW9u
cy5yZXNwb25zZVRpbWUgPSBXZWJJbnNwZWN0b3IuTmV0d29ya0RhdGFHcmlkTm9kZS5SZXNvdXJj
ZVByb3BlcnR5Q29tcGFyYXRvci5iaW5kKG51bGwsICJyZXNwb25zZVJlY2VpdmVkVGltZSIsIGZh
bHNlKTsKLSAgICAgICAgdGhpcy5fc29ydGluZ0Z1bmN0aW9ucy5kdXJhdGlvbiA9IFdlYkluc3Bl
Y3Rvci5OZXR3b3JrRGF0YUdyaWROb2RlLlJlc291cmNlUHJvcGVydHlDb21wYXJhdG9yLmJpbmQo
bnVsbCwgImR1cmF0aW9uIiwgdHJ1ZSk7Ci0gICAgICAgIHRoaXMuX3NvcnRpbmdGdW5jdGlvbnMu
bGF0ZW5jeSA9IFdlYkluc3BlY3Rvci5OZXR3b3JrRGF0YUdyaWROb2RlLlJlc291cmNlUHJvcGVy
dHlDb21wYXJhdG9yLmJpbmQobnVsbCwgImxhdGVuY3kiLCB0cnVlKTsKKyAgICAgICAgdGhpcy5f
c29ydGluZ0Z1bmN0aW9ucy50aW1lID0gV2ViSW5zcGVjdG9yLk5ldHdvcmtEYXRhR3JpZE5vZGUu
UmVxdWVzdFByb3BlcnR5Q29tcGFyYXRvci5iaW5kKG51bGwsICJkdXJhdGlvbiIsIGZhbHNlKTsK
KyAgICAgICAgdGhpcy5fc29ydGluZ0Z1bmN0aW9ucy50aW1lbGluZSA9IFdlYkluc3BlY3Rvci5O
ZXR3b3JrRGF0YUdyaWROb2RlLlJlcXVlc3RQcm9wZXJ0eUNvbXBhcmF0b3IuYmluZChudWxsLCAi
c3RhcnRUaW1lIiwgZmFsc2UpOworICAgICAgICB0aGlzLl9zb3J0aW5nRnVuY3Rpb25zLnN0YXJ0
VGltZSA9IFdlYkluc3BlY3Rvci5OZXR3b3JrRGF0YUdyaWROb2RlLlJlcXVlc3RQcm9wZXJ0eUNv
bXBhcmF0b3IuYmluZChudWxsLCAic3RhcnRUaW1lIiwgZmFsc2UpOworICAgICAgICB0aGlzLl9z
b3J0aW5nRnVuY3Rpb25zLmVuZFRpbWUgPSBXZWJJbnNwZWN0b3IuTmV0d29ya0RhdGFHcmlkTm9k
ZS5SZXF1ZXN0UHJvcGVydHlDb21wYXJhdG9yLmJpbmQobnVsbCwgImVuZFRpbWUiLCBmYWxzZSk7
CisgICAgICAgIHRoaXMuX3NvcnRpbmdGdW5jdGlvbnMucmVzcG9uc2VUaW1lID0gV2ViSW5zcGVj
dG9yLk5ldHdvcmtEYXRhR3JpZE5vZGUuUmVxdWVzdFByb3BlcnR5Q29tcGFyYXRvci5iaW5kKG51
bGwsICJyZXNwb25zZVJlY2VpdmVkVGltZSIsIGZhbHNlKTsKKyAgICAgICAgdGhpcy5fc29ydGlu
Z0Z1bmN0aW9ucy5kdXJhdGlvbiA9IFdlYkluc3BlY3Rvci5OZXR3b3JrRGF0YUdyaWROb2RlLlJl
cXVlc3RQcm9wZXJ0eUNvbXBhcmF0b3IuYmluZChudWxsLCAiZHVyYXRpb24iLCB0cnVlKTsKKyAg
ICAgICAgdGhpcy5fc29ydGluZ0Z1bmN0aW9ucy5sYXRlbmN5ID0gV2ViSW5zcGVjdG9yLk5ldHdv
cmtEYXRhR3JpZE5vZGUuUmVxdWVzdFByb3BlcnR5Q29tcGFyYXRvci5iaW5kKG51bGwsICJsYXRl
bmN5IiwgdHJ1ZSk7CiAKICAgICAgICAgdmFyIHRpbWVDYWxjdWxhdG9yID0gbmV3IFdlYkluc3Bl
Y3Rvci5OZXR3b3JrVHJhbnNmZXJUaW1lQ2FsY3VsYXRvcigpOwogICAgICAgICB2YXIgZHVyYXRp
b25DYWxjdWxhdG9yID0gbmV3IFdlYkluc3BlY3Rvci5OZXR3b3JrVHJhbnNmZXJEdXJhdGlvbkNh
bGN1bGF0b3IoKTsKQEAgLTM3Nyw3ICszNjcsNyBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya0xvZ1Zp
ZXcucHJvdG90eXBlID0gewogCiAgICAgX3VwZGF0ZVN1bW1hcnlCYXI6IGZ1bmN0aW9uKCkKICAg
ICB7Ci0gICAgICAgIHZhciByZXF1ZXN0c051bWJlciA9IHRoaXMuX3Jlc291cmNlcy5sZW5ndGg7
CisgICAgICAgIHZhciByZXF1ZXN0c051bWJlciA9IHRoaXMuX3JlcXVlc3RzLmxlbmd0aDsKIAog
ICAgICAgICBpZiAoIXJlcXVlc3RzTnVtYmVyKSB7CiAgICAgICAgICAgICBpZiAodGhpcy5fc3Vt
bWFyeUJhckVsZW1lbnQuX2lzRGlzcGxheWluZ1dhcm5pbmcpCkBAIC0zOTksMTggKzM4OSwxOCBA
QCBXZWJJbnNwZWN0b3IuTmV0d29ya0xvZ1ZpZXcucHJvdG90eXBlID0gewogICAgICAgICB2YXIg
c2VsZWN0ZWRUcmFuc2ZlclNpemUgPSAwOwogICAgICAgICB2YXIgYmFzZVRpbWUgPSAtMTsKICAg
ICAgICAgdmFyIG1heFRpbWUgPSAtMTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlz
Ll9yZXNvdXJjZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIHZhciByZXNvdXJjZSA9IHRo
aXMuX3Jlc291cmNlc1tpXTsKLSAgICAgICAgICAgIHZhciByZXNvdXJjZVRyYW5zZmVyU2l6ZSA9
IChyZXNvdXJjZS5jYWNoZWQgfHwgIXJlc291cmNlLnRyYW5zZmVyU2l6ZSkgPyAwIDogcmVzb3Vy
Y2UudHJhbnNmZXJTaXplOwotICAgICAgICAgICAgdHJhbnNmZXJTaXplICs9IHJlc291cmNlVHJh
bnNmZXJTaXplOwotICAgICAgICAgICAgaWYgKCF0aGlzLl9oaWRkZW5DYXRlZ29yaWVzLmFsbCB8
fCAhdGhpcy5faGlkZGVuQ2F0ZWdvcmllc1tyZXNvdXJjZS50eXBlLm5hbWUoKV0pIHsKKyAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9yZXF1ZXN0cy5sZW5ndGg7ICsraSkgeworICAg
ICAgICAgICAgdmFyIHJlcXVlc3QgPSB0aGlzLl9yZXF1ZXN0c1tpXTsKKyAgICAgICAgICAgIHZh
ciByZXF1ZXN0VHJhbnNmZXJTaXplID0gKHJlcXVlc3QuY2FjaGVkIHx8ICFyZXF1ZXN0LnRyYW5z
ZmVyU2l6ZSkgPyAwIDogcmVxdWVzdC50cmFuc2ZlclNpemU7CisgICAgICAgICAgICB0cmFuc2Zl
clNpemUgKz0gcmVxdWVzdFRyYW5zZmVyU2l6ZTsKKyAgICAgICAgICAgIGlmICghdGhpcy5faGlk
ZGVuQ2F0ZWdvcmllcy5hbGwgfHwgIXRoaXMuX2hpZGRlbkNhdGVnb3JpZXNbcmVxdWVzdC50eXBl
Lm5hbWUoKV0pIHsKICAgICAgICAgICAgICAgICBzZWxlY3RlZFJlcXVlc3RzTnVtYmVyKys7Ci0g
ICAgICAgICAgICAgICAgc2VsZWN0ZWRUcmFuc2ZlclNpemUgKz0gcmVzb3VyY2VUcmFuc2ZlclNp
emU7CisgICAgICAgICAgICAgICAgc2VsZWN0ZWRUcmFuc2ZlclNpemUgKz0gcmVxdWVzdFRyYW5z
ZmVyU2l6ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChyZXNvdXJjZS51cmwgPT09
IFdlYkluc3BlY3Rvci5pbnNwZWN0ZWRQYWdlVVJMKQotICAgICAgICAgICAgICAgIGJhc2VUaW1l
ID0gcmVzb3VyY2Uuc3RhcnRUaW1lOwotICAgICAgICAgICAgaWYgKHJlc291cmNlLmVuZFRpbWUg
PiBtYXhUaW1lKQotICAgICAgICAgICAgICAgIG1heFRpbWUgPSByZXNvdXJjZS5lbmRUaW1lOwor
ICAgICAgICAgICAgaWYgKHJlcXVlc3QudXJsID09PSBXZWJJbnNwZWN0b3IuaW5zcGVjdGVkUGFn
ZVVSTCkKKyAgICAgICAgICAgICAgICBiYXNlVGltZSA9IHJlcXVlc3Quc3RhcnRUaW1lOworICAg
ICAgICAgICAgaWYgKHJlcXVlc3QuZW5kVGltZSA+IG1heFRpbWUpCisgICAgICAgICAgICAgICAg
bWF4VGltZSA9IHJlcXVlc3QuZW5kVGltZTsKICAgICAgICAgfQogICAgICAgICB2YXIgdGV4dCA9
ICIiOwogICAgICAgICBpZiAodGhpcy5faGlkZGVuQ2F0ZWdvcmllcy5hbGwpIHsKQEAgLTQyMCwx
MSArNDEwLDExIEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrTG9nVmlldy5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICB0ZXh0ICs9IFN0cmluZy5zcHJpbnRmKFdlYkluc3BlY3Rvci5VSVN0cmluZygi
JWQgcmVxdWVzdHMiKSwgcmVxdWVzdHNOdW1iZXIpOwogICAgICAgICAgICAgdGV4dCArPSAiICBc
dTI3NTggICIgKyBTdHJpbmcuc3ByaW50ZihXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIiVzIHRyYW5z
ZmVycmVkIiksIE51bWJlci5ieXRlc1RvU3RyaW5nKHRyYW5zZmVyU2l6ZSkpOwogICAgICAgICB9
Ci0gICAgICAgIGlmIChiYXNlVGltZSAhPT0gLTEgJiYgdGhpcy5fbWFpblJlc291cmNlTG9hZFRp
bWUgIT09IC0xICYmIHRoaXMuX21haW5SZXNvdXJjZURPTUNvbnRlbnRUaW1lICE9PSAtMSAmJiB0
aGlzLl9tYWluUmVzb3VyY2VET01Db250ZW50VGltZSA+IGJhc2VUaW1lKSB7CisgICAgICAgIGlm
IChiYXNlVGltZSAhPT0gLTEgJiYgdGhpcy5fbWFpblJlcXVlc3RMb2FkVGltZSAhPT0gLTEgJiYg
dGhpcy5fbWFpblJlcXVlc3RET01Db250ZW50VGltZSAhPT0gLTEgJiYgdGhpcy5fbWFpblJlcXVl
c3RET01Db250ZW50VGltZSA+IGJhc2VUaW1lKSB7CiAgICAgICAgICAgICB0ZXh0ICs9ICIgIFx1
Mjc1OCAgIiArIFN0cmluZy5zcHJpbnRmKFdlYkluc3BlY3Rvci5VSVN0cmluZygiJXMgKG9ubG9h
ZDogJXMsIERPTUNvbnRlbnRMb2FkZWQ6ICVzKSIpLAogICAgICAgICAgICAgICAgICAgICAgICAg
TnVtYmVyLnNlY29uZHNUb1N0cmluZyhtYXhUaW1lIC0gYmFzZVRpbWUpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgTnVtYmVyLnNlY29uZHNUb1N0cmluZyh0aGlzLl9tYWluUmVzb3VyY2VMb2Fk
VGltZSAtIGJhc2VUaW1lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIE51bWJlci5zZWNvbmRz
VG9TdHJpbmcodGhpcy5fbWFpblJlc291cmNlRE9NQ29udGVudFRpbWUgLSBiYXNlVGltZSkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgTnVtYmVyLnNlY29uZHNUb1N0cmluZyh0aGlzLl9tYWlu
UmVxdWVzdExvYWRUaW1lIC0gYmFzZVRpbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgTnVt
YmVyLnNlY29uZHNUb1N0cmluZyh0aGlzLl9tYWluUmVxdWVzdERPTUNvbnRlbnRUaW1lIC0gYmFz
ZVRpbWUpKTsKICAgICAgICAgfQogICAgICAgICB0aGlzLl9zdW1tYXJ5QmFyRWxlbWVudC50ZXh0
Q29udGVudCA9IHRleHQ7CiAgICAgfSwKQEAgLTU1MCw3ICs1NDAsNyBAQCBXZWJJbnNwZWN0b3Iu
TmV0d29ya0xvZ1ZpZXcucHJvdG90eXBlID0gewogCiAgICAgICAgIGlmICh0aGlzLmNhbGN1bGF0
b3Iuc3RhcnRBdFplcm8gfHwgIXRoaXMuY2FsY3VsYXRvci5jb21wdXRlUGVyY2VudGFnZUZyb21F
dmVudFRpbWUpIHsKICAgICAgICAgICAgIC8vIElmIG91ciBjdXJyZW50IHNvcnRpbmcgbWV0aG9k
IHN0YXJ0cyBhdCB6ZXJvLCB0aGF0IG1lYW5zIGl0IHNob3dzIGFsbAotICAgICAgICAgICAgLy8g
cmVzb3VyY2VzIHN0YXJ0aW5nIGF0IHRoZSBzYW1lIHBvaW50LCBhbmQgc28gb25Mb2FkIGV2ZW50
IGFuZCBET01Db250ZW50CisgICAgICAgICAgICAvLyByZXF1ZXN0cyBzdGFydGluZyBhdCB0aGUg
c2FtZSBwb2ludCwgYW5kIHNvIG9uTG9hZCBldmVudCBhbmQgRE9NQ29udGVudAogICAgICAgICAg
ICAgLy8gZXZlbnQgbGluZXMgcmVhbGx5IHdvdWxkbid0IG1ha2UgbXVjaCBzZW5zZSBoZXJlLCBz
byBkb24ndCByZW5kZXIgdGhlbS4KICAgICAgICAgICAgIC8vIEFkZGl0aW9uYWxseSwgaWYgdGhl
IGNhbGN1bGF0b3IgZG9lc24ndCBoYXZlIHRoZSBjb21wdXRlUGVyY2VudGFnZUZyb21FdmVudFRp
bWUKICAgICAgICAgICAgIC8vIGZ1bmN0aW9uIGRlZmluZWQsIHdlIGFyZSBwcm9iYWJseSBzb3J0
aW5nIGJ5IHNpemUsIGFuZCBldmVudCB0aW1lcyBhcmVuJ3QgcmVsZXZhbnQKQEAgLTU1OSw4ICs1
NDksOCBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya0xvZ1ZpZXcucHJvdG90eXBlID0gewogICAgICAg
ICB9CiAKICAgICAgICAgdGhpcy5fdGltZWxpbmVHcmlkLnJlbW92ZUV2ZW50RGl2aWRlcnMoKTsK
LSAgICAgICAgaWYgKHRoaXMuX21haW5SZXNvdXJjZUxvYWRUaW1lICE9PSAtMSkgewotICAgICAg
ICAgICAgdmFyIHBlcmNlbnQgPSB0aGlzLmNhbGN1bGF0b3IuY29tcHV0ZVBlcmNlbnRhZ2VGcm9t
RXZlbnRUaW1lKHRoaXMuX21haW5SZXNvdXJjZUxvYWRUaW1lKTsKKyAgICAgICAgaWYgKHRoaXMu
X21haW5SZXF1ZXN0TG9hZFRpbWUgIT09IC0xKSB7CisgICAgICAgICAgICB2YXIgcGVyY2VudCA9
IHRoaXMuY2FsY3VsYXRvci5jb21wdXRlUGVyY2VudGFnZUZyb21FdmVudFRpbWUodGhpcy5fbWFp
blJlcXVlc3RMb2FkVGltZSk7CiAKICAgICAgICAgICAgIHZhciBsb2FkRGl2aWRlciA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICAgICAgbG9hZERpdmlkZXIuY2xhc3NO
YW1lID0gIm5ldHdvcmstZXZlbnQtZGl2aWRlciBuZXR3b3JrLXJlZC1kaXZpZGVyIjsKQEAgLTU3
Myw4ICs1NjMsOCBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya0xvZ1ZpZXcucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgdGhpcy5fdGltZWxpbmVHcmlkLmFkZEV2ZW50RGl2aWRlcihsb2FkRGl2aWRl
clBhZGRpbmcpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHRoaXMuX21haW5SZXNvdXJjZURP
TUNvbnRlbnRUaW1lICE9PSAtMSkgewotICAgICAgICAgICAgdmFyIHBlcmNlbnQgPSB0aGlzLmNh
bGN1bGF0b3IuY29tcHV0ZVBlcmNlbnRhZ2VGcm9tRXZlbnRUaW1lKHRoaXMuX21haW5SZXNvdXJj
ZURPTUNvbnRlbnRUaW1lKTsKKyAgICAgICAgaWYgKHRoaXMuX21haW5SZXF1ZXN0RE9NQ29udGVu
dFRpbWUgIT09IC0xKSB7CisgICAgICAgICAgICB2YXIgcGVyY2VudCA9IHRoaXMuY2FsY3VsYXRv
ci5jb21wdXRlUGVyY2VudGFnZUZyb21FdmVudFRpbWUodGhpcy5fbWFpblJlcXVlc3RET01Db250
ZW50VGltZSk7CiAKICAgICAgICAgICAgIHZhciBkb21Db250ZW50RGl2aWRlciA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICAgICAgZG9tQ29udGVudERpdmlkZXIuY2xh
c3NOYW1lID0gIm5ldHdvcmstZXZlbnQtZGl2aWRlciBuZXR3b3JrLWJsdWUtZGl2aWRlciI7CkBA
IC01OTYsOSArNTg2LDkgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dWaWV3LnByb3RvdHlwZSA9
IHsKIAogICAgIF9pbnZhbGlkYXRlQWxsSXRlbXM6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fcmVzb3VyY2VzLmxlbmd0aDsgKytpKSB7Ci0gICAg
ICAgICAgICB2YXIgcmVzb3VyY2UgPSB0aGlzLl9yZXNvdXJjZXNbaV07Ci0gICAgICAgICAgICB0
aGlzLl9zdGFsZVJlc291cmNlc1tyZXNvdXJjZS5yZXF1ZXN0SWRdID0gcmVzb3VyY2U7CisgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fcmVxdWVzdHMubGVuZ3RoOyArK2kpIHsKKyAg
ICAgICAgICAgIHZhciByZXF1ZXN0ID0gdGhpcy5fcmVxdWVzdHNbaV07CisgICAgICAgICAgICB0
aGlzLl9zdGFsZVJlcXVlc3RzW3JlcXVlc3QucmVxdWVzdElkXSA9IHJlcXVlc3Q7CiAgICAgICAg
IH0KICAgICB9LAogCkBAIC02MTksMTYgKzYwOSwxNiBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya0xv
Z1ZpZXcucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLnJlZnJlc2goKTsKICAgICB9LAogCi0g
ICAgX3Jlc291cmNlR3JpZE5vZGU6IGZ1bmN0aW9uKHJlc291cmNlKQorICAgIF9yZXF1ZXN0R3Jp
ZE5vZGU6IGZ1bmN0aW9uKHJlcXVlc3QpCiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5fcmVz
b3VyY2VHcmlkTm9kZXNbcmVzb3VyY2UuX19ncmlkTm9kZUlkXTsKKyAgICAgICAgcmV0dXJuIHRo
aXMuX3JlcXVlc3RHcmlkTm9kZXNbcmVxdWVzdC5fX2dyaWROb2RlSWRdOwogICAgIH0sCiAKLSAg
ICBfY3JlYXRlUmVzb3VyY2VHcmlkTm9kZTogZnVuY3Rpb24ocmVzb3VyY2UpCisgICAgX2NyZWF0
ZVJlcXVlc3RHcmlkTm9kZTogZnVuY3Rpb24ocmVxdWVzdCkKICAgICB7Ci0gICAgICAgIHZhciBu
b2RlID0gbmV3IFdlYkluc3BlY3Rvci5OZXR3b3JrRGF0YUdyaWROb2RlKHRoaXMsIHJlc291cmNl
KTsKLSAgICAgICAgcmVzb3VyY2UuX19ncmlkTm9kZUlkID0gdGhpcy5fbGFzdFJlc291cmNlR3Jp
ZE5vZGVJZCsrOwotICAgICAgICB0aGlzLl9yZXNvdXJjZUdyaWROb2Rlc1tyZXNvdXJjZS5fX2dy
aWROb2RlSWRdID0gbm9kZTsKKyAgICAgICAgdmFyIG5vZGUgPSBuZXcgV2ViSW5zcGVjdG9yLk5l
dHdvcmtEYXRhR3JpZE5vZGUodGhpcywgcmVxdWVzdCk7CisgICAgICAgIHJlcXVlc3QuX19ncmlk
Tm9kZUlkID0gdGhpcy5fbGFzdFJlcXVlc3RHcmlkTm9kZUlkKys7CisgICAgICAgIHRoaXMuX3Jl
cXVlc3RHcmlkTm9kZXNbcmVxdWVzdC5fX2dyaWROb2RlSWRdID0gbm9kZTsKICAgICAgICAgcmV0
dXJuIG5vZGU7CiAgICAgfSwKIApAQCAtNjQwLDIxICs2MzAsMjEgQEAgV2ViSW5zcGVjdG9yLk5l
dHdvcmtMb2dWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fY2xlYXJCdXR0b24gPSBu
ZXcgV2ViSW5zcGVjdG9yLlN0YXR1c0JhckJ1dHRvbihXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNs
ZWFyIiksICJjbGVhci1zdGF0dXMtYmFyLWl0ZW0iKTsKICAgICAgICAgdGhpcy5fY2xlYXJCdXR0
b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9yZXNldCwgdGhpcyk7CiAKLSAgICAg
ICAgdGhpcy5fbGFyZ2VyUmVzb3VyY2VzQnV0dG9uID0gbmV3IFdlYkluc3BlY3Rvci5TdGF0dXNC
YXJCdXR0b24oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJVc2Ugc21hbGwgcmVzb3VyY2Ugcm93cy4i
KSwgIm5ldHdvcmstbGFyZ2VyLXJlc291cmNlcy1zdGF0dXMtYmFyLWl0ZW0iKTsKLSAgICAgICAg
dGhpcy5fbGFyZ2VyUmVzb3VyY2VzQnV0dG9uLnRvZ2dsZWQgPSBXZWJJbnNwZWN0b3Iuc2V0dGlu
Z3MucmVzb3VyY2VzTGFyZ2VSb3dzLmdldCgpOwotICAgICAgICB0aGlzLl9sYXJnZXJSZXNvdXJj
ZXNCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl90b2dnbGVMYXJnZXJSZXNv
dXJjZXMsIHRoaXMpOworICAgICAgICB0aGlzLl9sYXJnZXJSZXF1ZXN0c0J1dHRvbiA9IG5ldyBX
ZWJJbnNwZWN0b3IuU3RhdHVzQmFyQnV0dG9uKFdlYkluc3BlY3Rvci5VSVN0cmluZygiVXNlIHNt
YWxsIHJlc291cmNlIHJvd3MuIiksICJuZXR3b3JrLWxhcmdlci1yZXNvdXJjZXMtc3RhdHVzLWJh
ci1pdGVtIik7CisgICAgICAgIHRoaXMuX2xhcmdlclJlcXVlc3RzQnV0dG9uLnRvZ2dsZWQgPSBX
ZWJJbnNwZWN0b3Iuc2V0dGluZ3MucmVzb3VyY2VzTGFyZ2VSb3dzLmdldCgpOworICAgICAgICB0
aGlzLl9sYXJnZXJSZXF1ZXN0c0J1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMu
X3RvZ2dsZUxhcmdlclJlcXVlc3RzLCB0aGlzKTsKICAgICB9LAogCiAgICAgX29uTG9hZEV2ZW50
RmlyZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdGhpcy5fbWFpblJlc291cmNl
TG9hZFRpbWUgPSBldmVudC5kYXRhIHx8IC0xOworICAgICAgICB0aGlzLl9tYWluUmVxdWVzdExv
YWRUaW1lID0gZXZlbnQuZGF0YSB8fCAtMTsKICAgICAgICAgLy8gU2NoZWR1bGUgcmVmcmVzaCB0
byB1cGRhdGUgYm91bmRhcmllcyBhbmQgZHJhdyB0aGUgbmV3IGxpbmUuCiAgICAgICAgIHRoaXMu
X3NjaGVkdWxlUmVmcmVzaCgpOwogICAgIH0sCiAKICAgICBfZG9tQ29udGVudExvYWRlZEV2ZW50
RmlyZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdGhpcy5fbWFpblJlc291cmNl
RE9NQ29udGVudFRpbWUgPSBldmVudC5kYXRhIHx8IC0xOworICAgICAgICB0aGlzLl9tYWluUmVx
dWVzdERPTUNvbnRlbnRUaW1lID0gZXZlbnQuZGF0YSB8fCAtMTsKICAgICAgICAgLy8gU2NoZWR1
bGUgcmVmcmVzaCB0byB1cGRhdGUgYm91bmRhcmllcyBhbmQgZHJhdyB0aGUgbmV3IGxpbmUuCiAg
ICAgICAgIHRoaXMuX3NjaGVkdWxlUmVmcmVzaCgpOwogICAgIH0sCkBAIC02ODEsMjUgKzY3MSwy
NSBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya0xvZ1ZpZXcucHJvdG90eXBlID0gewogICAgICAgICB2
YXIgd2FzU2Nyb2xsZWRUb0xhc3RSb3cgPSB0aGlzLl9kYXRhR3JpZC5pc1Njcm9sbGVkVG9MYXN0
Um93KCk7CiAgICAgICAgIHZhciBib3VuZGFyaWVzQ2hhbmdlZCA9IGZhbHNlOwogICAgICAgICBp
ZiAodGhpcy5jYWxjdWxhdG9yLnVwZGF0ZUJvdW5kYXJpZXNGb3JFdmVudFRpbWUpIHsKLSAgICAg
ICAgICAgIGJvdW5kYXJpZXNDaGFuZ2VkID0gdGhpcy5jYWxjdWxhdG9yLnVwZGF0ZUJvdW5kYXJp
ZXNGb3JFdmVudFRpbWUodGhpcy5fbWFpblJlc291cmNlTG9hZFRpbWUpIHx8IGJvdW5kYXJpZXND
aGFuZ2VkOwotICAgICAgICAgICAgYm91bmRhcmllc0NoYW5nZWQgPSB0aGlzLmNhbGN1bGF0b3Iu
dXBkYXRlQm91bmRhcmllc0ZvckV2ZW50VGltZSh0aGlzLl9tYWluUmVzb3VyY2VET01Db250ZW50
VGltZSkgfHwgYm91bmRhcmllc0NoYW5nZWQ7CisgICAgICAgICAgICBib3VuZGFyaWVzQ2hhbmdl
ZCA9IHRoaXMuY2FsY3VsYXRvci51cGRhdGVCb3VuZGFyaWVzRm9yRXZlbnRUaW1lKHRoaXMuX21h
aW5SZXF1ZXN0TG9hZFRpbWUpIHx8IGJvdW5kYXJpZXNDaGFuZ2VkOworICAgICAgICAgICAgYm91
bmRhcmllc0NoYW5nZWQgPSB0aGlzLmNhbGN1bGF0b3IudXBkYXRlQm91bmRhcmllc0ZvckV2ZW50
VGltZSh0aGlzLl9tYWluUmVxdWVzdERPTUNvbnRlbnRUaW1lKSB8fCBib3VuZGFyaWVzQ2hhbmdl
ZDsKICAgICAgICAgfQogCi0gICAgICAgIGZvciAodmFyIHJlc291cmNlSWQgaW4gdGhpcy5fc3Rh
bGVSZXNvdXJjZXMpIHsKLSAgICAgICAgICAgIHZhciByZXNvdXJjZSA9IHRoaXMuX3N0YWxlUmVz
b3VyY2VzW3Jlc291cmNlSWRdOwotICAgICAgICAgICAgdmFyIG5vZGUgPSB0aGlzLl9yZXNvdXJj
ZUdyaWROb2RlKHJlc291cmNlKTsKKyAgICAgICAgZm9yICh2YXIgcmVxdWVzdElkIGluIHRoaXMu
X3N0YWxlUmVxdWVzdHMpIHsKKyAgICAgICAgICAgIHZhciByZXF1ZXN0ID0gdGhpcy5fc3RhbGVS
ZXF1ZXN0c1tyZXF1ZXN0SWRdOworICAgICAgICAgICAgdmFyIG5vZGUgPSB0aGlzLl9yZXF1ZXN0
R3JpZE5vZGUocmVxdWVzdCk7CiAgICAgICAgICAgICBpZiAoIW5vZGUpIHsKICAgICAgICAgICAg
ICAgICAvLyBDcmVhdGUgdGhlIHRpbWVsaW5lIHRyZWUgZWxlbWVudCBhbmQgZ3JhcGguCi0gICAg
ICAgICAgICAgICAgbm9kZSA9IHRoaXMuX2NyZWF0ZVJlc291cmNlR3JpZE5vZGUocmVzb3VyY2Up
OworICAgICAgICAgICAgICAgIG5vZGUgPSB0aGlzLl9jcmVhdGVSZXF1ZXN0R3JpZE5vZGUocmVx
dWVzdCk7CiAgICAgICAgICAgICAgICAgdGhpcy5fZGF0YUdyaWQuYXBwZW5kQ2hpbGQobm9kZSk7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBub2RlLnJlZnJlc2hSZXNvdXJjZSgpOworICAg
ICAgICAgICAgbm9kZS5yZWZyZXNoUmVxdWVzdCgpOwogCi0gICAgICAgICAgICBpZiAodGhpcy5j
YWxjdWxhdG9yLnVwZGF0ZUJvdW5kYXJpZXMocmVzb3VyY2UpKQorICAgICAgICAgICAgaWYgKHRo
aXMuY2FsY3VsYXRvci51cGRhdGVCb3VuZGFyaWVzKHJlcXVlc3QpKQogICAgICAgICAgICAgICAg
IGJvdW5kYXJpZXNDaGFuZ2VkID0gdHJ1ZTsKIAogICAgICAgICAgICAgaWYgKCFub2RlLmlzRmls
dGVyZWRPdXQoKSkKLSAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVIaWdobGlnaHRJZk1hdGNo
ZWQocmVzb3VyY2UpOworICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUhpZ2hsaWdodElmTWF0
Y2hlZChyZXF1ZXN0KTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChib3VuZGFyaWVzQ2hhbmdl
ZCkgewpAQCAtNzA3LDEwICs2OTcsMTAgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dWaWV3LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2ludmFsaWRhdGVBbGxJdGVtcygpOwogICAg
ICAgICB9CiAKLSAgICAgICAgZm9yICh2YXIgcmVzb3VyY2VJZCBpbiB0aGlzLl9zdGFsZVJlc291
cmNlcykKLSAgICAgICAgICAgIHRoaXMuX3Jlc291cmNlR3JpZE5vZGUodGhpcy5fc3RhbGVSZXNv
dXJjZXNbcmVzb3VyY2VJZF0pLnJlZnJlc2hHcmFwaCh0aGlzLmNhbGN1bGF0b3IpOworICAgICAg
ICBmb3IgKHZhciByZXF1ZXN0SWQgaW4gdGhpcy5fc3RhbGVSZXF1ZXN0cykKKyAgICAgICAgICAg
IHRoaXMuX3JlcXVlc3RHcmlkTm9kZSh0aGlzLl9zdGFsZVJlcXVlc3RzW3JlcXVlc3RJZF0pLnJl
ZnJlc2hHcmFwaCh0aGlzLmNhbGN1bGF0b3IpOwogCi0gICAgICAgIHRoaXMuX3N0YWxlUmVzb3Vy
Y2VzID0ge307CisgICAgICAgIHRoaXMuX3N0YWxlUmVxdWVzdHMgPSB7fTsKICAgICAgICAgdGhp
cy5fc29ydEl0ZW1zKCk7CiAgICAgICAgIHRoaXMuX3VwZGF0ZVN1bW1hcnlCYXIoKTsKICAgICAg
ICAgdGhpcy5fZGF0YUdyaWQudXBkYXRlV2lkdGhzKCk7CkBAIC03MzUsMTEgKzcyNSwxMSBAQCBX
ZWJJbnNwZWN0b3IuTmV0d29ya0xvZ1ZpZXcucHJvdG90eXBlID0gewogICAgICAgICBpZiAodGhp
cy5fY2FsY3VsYXRvcikKICAgICAgICAgICAgIHRoaXMuX2NhbGN1bGF0b3IucmVzZXQoKTsKIAot
ICAgICAgICB0aGlzLl9yZXNvdXJjZXMgPSBbXTsKLSAgICAgICAgdGhpcy5fcmVzb3VyY2VzQnlJ
ZCA9IHt9OwotICAgICAgICB0aGlzLl9yZXNvdXJjZXNCeVVSTCA9IHt9OwotICAgICAgICB0aGlz
Ll9zdGFsZVJlc291cmNlcyA9IHt9OwotICAgICAgICB0aGlzLl9yZXNvdXJjZUdyaWROb2RlcyA9
IHt9OworICAgICAgICB0aGlzLl9yZXF1ZXN0cyA9IFtdOworICAgICAgICB0aGlzLl9yZXF1ZXN0
c0J5SWQgPSB7fTsKKyAgICAgICAgdGhpcy5fcmVxdWVzdHNCeVVSTCA9IHt9OworICAgICAgICB0
aGlzLl9zdGFsZVJlcXVlc3RzID0ge307CisgICAgICAgIHRoaXMuX3JlcXVlc3RHcmlkTm9kZXMg
PSB7fTsKIAogICAgICAgICBpZiAodGhpcy5fZGF0YUdyaWQpIHsKICAgICAgICAgICAgIHRoaXMu
X2RhdGFHcmlkLnJlbW92ZUNoaWxkcmVuKCk7CkBAIC03NDcsNTkgKzczNyw2NiBAQCBXZWJJbnNw
ZWN0b3IuTmV0d29ya0xvZ1ZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fdXBk
YXRlU3VtbWFyeUJhcigpOwogICAgICAgICB9CiAKLSAgICAgICAgdGhpcy5fbWFpblJlc291cmNl
TG9hZFRpbWUgPSAtMTsKLSAgICAgICAgdGhpcy5fbWFpblJlc291cmNlRE9NQ29udGVudFRpbWUg
PSAtMTsKKyAgICAgICAgdGhpcy5fbWFpblJlcXVlc3RMb2FkVGltZSA9IC0xOworICAgICAgICB0
aGlzLl9tYWluUmVxdWVzdERPTUNvbnRlbnRUaW1lID0gLTE7CiAgICAgICAgIHRoaXMuX2xpbmtp
Zmllci5yZXNldCgpOwogICAgIH0sCiAKLSAgICBnZXQgcmVzb3VyY2VzKCkKKyAgICBnZXQgcmVx
dWVzdHMoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlczsKKyAgICAgICAg
cmV0dXJuIHRoaXMuX3JlcXVlc3RzOwogICAgIH0sCiAKLSAgICByZXNvdXJjZUJ5SWQ6IGZ1bmN0
aW9uKGlkKQorICAgIHJlcXVlc3RCeUlkOiBmdW5jdGlvbihpZCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLl9yZXNvdXJjZXNCeUlkW2lkXTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3JlcXVl
c3RzQnlJZFtpZF07CiAgICAgfSwKIAotICAgIF9vblJlc291cmNlU3RhcnRlZDogZnVuY3Rpb24o
ZXZlbnQpCisgICAgX29uUmVxdWVzdFN0YXJ0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAg
ICAgICAgdGhpcy5fYXBwZW5kUmVzb3VyY2UoZXZlbnQuZGF0YSk7CisgICAgICAgIHRoaXMuX2Fw
cGVuZFJlcXVlc3QoZXZlbnQuZGF0YSk7CiAgICAgfSwKIAotICAgIF9hcHBlbmRSZXNvdXJjZTog
ZnVuY3Rpb24ocmVzb3VyY2UpCisgICAgX2FwcGVuZFJlcXVlc3Q6IGZ1bmN0aW9uKHJlcXVlc3Qp
CiAgICAgewotICAgICAgICB0aGlzLl9yZXNvdXJjZXMucHVzaChyZXNvdXJjZSk7CisgICAgICAg
IHRoaXMuX3JlcXVlc3RzLnB1c2gocmVxdWVzdCk7CiAKICAgICAgICAgLy8gSW4gY2FzZSBvZiBy
ZWRpcmVjdCByZXF1ZXN0IGlkIGlzIHJlYXNzaWduZWQgdG8gYSByZWRpcmVjdGVkCi0gICAgICAg
IC8vIHJlc291cmNlIGFuZCB3ZSBuZWVkIHRvIHVwZGF0ZSBfcmVzb3VyY2VzQnlJZCBhbnMgc2Vh
cmNoIHJlc3VsdHMuCi0gICAgICAgIGlmICh0aGlzLl9yZXNvdXJjZXNCeUlkW3Jlc291cmNlLnJl
cXVlc3RJZF0pIHsKLSAgICAgICAgICAgIHZhciBvbGRSZXNvdXJjZSA9IHJlc291cmNlLnJlZGly
ZWN0c1tyZXNvdXJjZS5yZWRpcmVjdHMubGVuZ3RoIC0gMV07Ci0gICAgICAgICAgICB0aGlzLl9y
ZXNvdXJjZXNCeUlkW29sZFJlc291cmNlLnJlcXVlc3RJZF0gPSBvbGRSZXNvdXJjZTsKKyAgICAg
ICAgLy8gcmVxdWVzdCBhbmQgd2UgbmVlZCB0byB1cGRhdGUgX3JlcXVlc3RzQnlJZCBhbnMgc2Vh
cmNoIHJlc3VsdHMuCisgICAgICAgIGlmICh0aGlzLl9yZXF1ZXN0c0J5SWRbcmVxdWVzdC5yZXF1
ZXN0SWRdKSB7CisgICAgICAgICAgICB2YXIgb2xkUmVxdWVzdCA9IHJlcXVlc3QucmVkaXJlY3Rz
W3JlcXVlc3QucmVkaXJlY3RzLmxlbmd0aCAtIDFdOworICAgICAgICAgICAgdGhpcy5fcmVxdWVz
dHNCeUlkW29sZFJlcXVlc3QucmVxdWVzdElkXSA9IG9sZFJlcXVlc3Q7CiAKLSAgICAgICAgICAg
IHRoaXMuX3VwZGF0ZVNlYXJjaE1hdGNoZWRMaXN0QWZ0ZXJSZXF1ZXN0SWRDaGFuZ2VkKHJlc291
cmNlLnJlcXVlc3RJZCwgb2xkUmVzb3VyY2UucmVxdWVzdElkKTsKKyAgICAgICAgICAgIHRoaXMu
X3VwZGF0ZVNlYXJjaE1hdGNoZWRMaXN0QWZ0ZXJSZXF1ZXN0SWRDaGFuZ2VkKHJlcXVlc3QucmVx
dWVzdElkLCBvbGRSZXF1ZXN0LnJlcXVlc3RJZCk7CiAgICAgICAgIH0KLSAgICAgICAgdGhpcy5f
cmVzb3VyY2VzQnlJZFtyZXNvdXJjZS5yZXF1ZXN0SWRdID0gcmVzb3VyY2U7CisgICAgICAgIHRo
aXMuX3JlcXVlc3RzQnlJZFtyZXF1ZXN0LnJlcXVlc3RJZF0gPSByZXF1ZXN0OwogCi0gICAgICAg
IHRoaXMuX3Jlc291cmNlc0J5VVJMW3Jlc291cmNlLnVybF0gPSByZXNvdXJjZTsKKyAgICAgICAg
dGhpcy5fcmVxdWVzdHNCeVVSTFtyZXF1ZXN0LnVybF0gPSByZXF1ZXN0OwogCi0gICAgICAgIC8v
IFB1bGwgYWxsIHRoZSByZWRpcmVjdHMgb2YgdGhlIG1haW4gcmVzb3VyY2UgdXBvbiBjb21taXQg
bG9hZC4KLSAgICAgICAgaWYgKHJlc291cmNlLnJlZGlyZWN0cykgewotICAgICAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCByZXNvdXJjZS5yZWRpcmVjdHMubGVuZ3RoOyArK2kpCi0gICAgICAg
ICAgICAgICAgdGhpcy5fcmVmcmVzaFJlc291cmNlKHJlc291cmNlLnJlZGlyZWN0c1tpXSk7Cisg
ICAgICAgIC8vIFB1bGwgYWxsIHRoZSByZWRpcmVjdHMgb2YgdGhlIG1haW4gcmVxdWVzdCB1cG9u
IGNvbW1pdCBsb2FkLgorICAgICAgICBpZiAocmVxdWVzdC5yZWRpcmVjdHMpIHsKKyAgICAgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVxdWVzdC5yZWRpcmVjdHMubGVuZ3RoOyArK2kpCisg
ICAgICAgICAgICAgICAgdGhpcy5fcmVmcmVzaFJlcXVlc3QocmVxdWVzdC5yZWRpcmVjdHNbaV0p
OwogICAgICAgICB9CiAKLSAgICAgICAgdGhpcy5fcmVmcmVzaFJlc291cmNlKHJlc291cmNlKTsK
KyAgICAgICAgdGhpcy5fcmVmcmVzaFJlcXVlc3QocmVxdWVzdCk7CiAgICAgfSwKIAotICAgIF9v
blJlc291cmNlVXBkYXRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgLyoqCisgICAgICogQHBhcmFt
IHtXZWJJbnNwZWN0b3IuRXZlbnR9IGV2ZW50CisgICAgICovCisgICAgX29uUmVxdWVzdFVwZGF0
ZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdGhpcy5fcmVmcmVzaFJlc291cmNl
KGV2ZW50LmRhdGEpOworICAgICAgICB2YXIgcmVxdWVzdCA9IC8qKiBAdHlwZSB7V2ViSW5zcGVj
dG9yLk5ldHdvcmtSZXF1ZXN0fSAqLyBldmVudC5kYXRhOworICAgICAgICB0aGlzLl9yZWZyZXNo
UmVxdWVzdChyZXF1ZXN0KTsKICAgICB9LAogCi0gICAgX3JlZnJlc2hSZXNvdXJjZTogZnVuY3Rp
b24ocmVzb3VyY2UpCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuTmV0d29y
a1JlcXVlc3R9IHJlcXVlc3QKKyAgICAgKi8KKyAgICBfcmVmcmVzaFJlcXVlc3Q6IGZ1bmN0aW9u
KHJlcXVlc3QpCiAgICAgewotICAgICAgICB0aGlzLl9zdGFsZVJlc291cmNlc1tyZXNvdXJjZS5y
ZXF1ZXN0SWRdID0gcmVzb3VyY2U7CisgICAgICAgIHRoaXMuX3N0YWxlUmVxdWVzdHNbcmVxdWVz
dC5yZXF1ZXN0SWRdID0gcmVxdWVzdDsKICAgICAgICAgdGhpcy5fc2NoZWR1bGVSZWZyZXNoKCk7
CiAgICAgfSwKIApAQCAtODE4LDE5ICs4MTUsMTkgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dW
aWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGZyYW1lID0gLyoqIEB0eXBlIHtXZWJJbnNw
ZWN0b3IuUmVzb3VyY2VUcmVlRnJhbWV9ICovIGV2ZW50LmRhdGE7CiAgICAgICAgIHZhciBsb2Fk
ZXJJZCA9IGZyYW1lLmxvYWRlcklkOwogCi0gICAgICAgIC8vIFByZXNlcnZlIHByb3Zpc2lvbmFs
IGxvYWQgcmVzb3VyY2VzLgotICAgICAgICB2YXIgcmVzb3VyY2VzVG9QcmVzZXJ2ZSA9IFtdOwot
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX3Jlc291cmNlcy5sZW5ndGg7ICsraSkg
ewotICAgICAgICAgICAgdmFyIHJlc291cmNlID0gdGhpcy5fcmVzb3VyY2VzW2ldOwotICAgICAg
ICAgICAgaWYgKHJlc291cmNlLmxvYWRlcklkID09PSBsb2FkZXJJZCkKLSAgICAgICAgICAgICAg
ICByZXNvdXJjZXNUb1ByZXNlcnZlLnB1c2gocmVzb3VyY2UpOworICAgICAgICAvLyBQcmVzZXJ2
ZSBwcm92aXNpb25hbCBsb2FkIHJlcXVlc3RzLgorICAgICAgICB2YXIgcmVxdWVzdHNUb1ByZXNl
cnZlID0gW107CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fcmVxdWVzdHMubGVu
Z3RoOyArK2kpIHsKKyAgICAgICAgICAgIHZhciByZXF1ZXN0ID0gdGhpcy5fcmVxdWVzdHNbaV07
CisgICAgICAgICAgICBpZiAocmVxdWVzdC5sb2FkZXJJZCA9PT0gbG9hZGVySWQpCisgICAgICAg
ICAgICAgICAgcmVxdWVzdHNUb1ByZXNlcnZlLnB1c2gocmVxdWVzdCk7CiAgICAgICAgIH0KIAog
ICAgICAgICB0aGlzLl9yZXNldCgpOwogCiAgICAgICAgIC8vIFJlc3RvcmUgcHJlc2VydmVkIGl0
ZW1zLgotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc291cmNlc1RvUHJlc2VydmUubGVu
Z3RoOyArK2kpCi0gICAgICAgICAgICB0aGlzLl9hcHBlbmRSZXNvdXJjZShyZXNvdXJjZXNUb1By
ZXNlcnZlW2ldKTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXF1ZXN0c1RvUHJlc2Vy
dmUubGVuZ3RoOyArK2kpCisgICAgICAgICAgICB0aGlzLl9hcHBlbmRSZXF1ZXN0KHJlcXVlc3Rz
VG9QcmVzZXJ2ZVtpXSk7CiAgICAgfSwKIAogICAgIHN3aXRjaFRvRGV0YWlsZWRWaWV3OiBmdW5j
dGlvbigpCkBAIC04ODksMjEgKzg4NiwyMSBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya0xvZ1ZpZXcu
cHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9wb3BvdmVySGVscGVyLmhpZGVQb3BvdmVyKCk7
CiAgICAgfSwKIAotICAgIF90b2dnbGVMYXJnZXJSZXNvdXJjZXM6IGZ1bmN0aW9uKCkKKyAgICBf
dG9nZ2xlTGFyZ2VyUmVxdWVzdHM6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIFdlYkluc3Bl
Y3Rvci5zZXR0aW5ncy5yZXNvdXJjZXNMYXJnZVJvd3Muc2V0KCFXZWJJbnNwZWN0b3Iuc2V0dGlu
Z3MucmVzb3VyY2VzTGFyZ2VSb3dzLmdldCgpKTsKLSAgICAgICAgdGhpcy5fc2V0TGFyZ2VyUmVz
b3VyY2VzKFdlYkluc3BlY3Rvci5zZXR0aW5ncy5yZXNvdXJjZXNMYXJnZVJvd3MuZ2V0KCkpOwor
ICAgICAgICB0aGlzLl9zZXRMYXJnZXJSZXF1ZXN0cyhXZWJJbnNwZWN0b3Iuc2V0dGluZ3MucmVz
b3VyY2VzTGFyZ2VSb3dzLmdldCgpKTsKICAgICB9LAogCi0gICAgX3NldExhcmdlclJlc291cmNl
czogZnVuY3Rpb24oZW5hYmxlZCkKKyAgICBfc2V0TGFyZ2VyUmVxdWVzdHM6IGZ1bmN0aW9uKGVu
YWJsZWQpCiAgICAgewotICAgICAgICB0aGlzLl9sYXJnZXJSZXNvdXJjZXNCdXR0b24udG9nZ2xl
ZCA9IGVuYWJsZWQ7CisgICAgICAgIHRoaXMuX2xhcmdlclJlcXVlc3RzQnV0dG9uLnRvZ2dsZWQg
PSBlbmFibGVkOwogICAgICAgICBpZiAoIWVuYWJsZWQpIHsKLSAgICAgICAgICAgIHRoaXMuX2xh
cmdlclJlc291cmNlc0J1dHRvbi50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiVXNlIGxh
cmdlIHJlc291cmNlIHJvd3MuIik7CisgICAgICAgICAgICB0aGlzLl9sYXJnZXJSZXF1ZXN0c0J1
dHRvbi50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiVXNlIGxhcmdlIHJlc291cmNlIHJv
d3MuIik7CiAgICAgICAgICAgICB0aGlzLl9kYXRhR3JpZC5lbGVtZW50LmFkZFN0eWxlQ2xhc3Mo
InNtYWxsIik7CiAgICAgICAgICAgICB0aGlzLl90aW1lbGluZUdyaWQuZWxlbWVudC5hZGRTdHls
ZUNsYXNzKCJzbWFsbCIpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdGhpcy5fbGFy
Z2VyUmVzb3VyY2VzQnV0dG9uLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJVc2Ugc21h
bGwgcmVzb3VyY2Ugcm93cy4iKTsKKyAgICAgICAgICAgIHRoaXMuX2xhcmdlclJlcXVlc3RzQnV0
dG9uLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJVc2Ugc21hbGwgcmVzb3VyY2Ugcm93
cy4iKTsKICAgICAgICAgICAgIHRoaXMuX2RhdGFHcmlkLmVsZW1lbnQucmVtb3ZlU3R5bGVDbGFz
cygic21hbGwiKTsKICAgICAgICAgICAgIHRoaXMuX3RpbWVsaW5lR3JpZC5lbGVtZW50LnJlbW92
ZVN0eWxlQ2xhc3MoInNtYWxsIik7CiAgICAgICAgIH0KQEAgLTkxOCw4ICs5MTUsOCBAQCBXZWJJ
bnNwZWN0b3IuTmV0d29ya0xvZ1ZpZXcucHJvdG90eXBlID0gewogICAgICAgICB2YXIgYW5jaG9y
ID0gZWxlbWVudC5lbmNsb3NpbmdOb2RlT3JTZWxmV2l0aENsYXNzKCJuZXR3b3JrLWdyYXBoLWJh
ciIpIHx8IGVsZW1lbnQuZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhDbGFzcygibmV0d29yay1ncmFw
aC1sYWJlbCIpOwogICAgICAgICBpZiAoIWFuY2hvcikKICAgICAgICAgICAgIHJldHVybiBudWxs
OwotICAgICAgICB2YXIgcmVzb3VyY2UgPSBhbmNob3IucGFyZW50RWxlbWVudC5yZXNvdXJjZTsK
LSAgICAgICAgcmV0dXJuIHJlc291cmNlICYmIHJlc291cmNlLnRpbWluZyA/IGFuY2hvciA6IG51
bGw7CisgICAgICAgIHZhciByZXF1ZXN0ID0gYW5jaG9yLnBhcmVudEVsZW1lbnQucmVxdWVzdDsK
KyAgICAgICAgcmV0dXJuIHJlcXVlc3QgJiYgcmVxdWVzdC50aW1pbmcgPyBhbmNob3IgOiBudWxs
OwogICAgIH0sCiAKICAgICAvKioKQEAgLTkyOCw4ICs5MjUsOCBAQCBXZWJJbnNwZWN0b3IuTmV0
d29ya0xvZ1ZpZXcucHJvdG90eXBlID0gewogICAgICAqLwogICAgIF9zaG93UG9wb3ZlcjogZnVu
Y3Rpb24oYW5jaG9yLCBwb3BvdmVyKQogICAgIHsKLSAgICAgICAgdmFyIHJlc291cmNlID0gYW5j
aG9yLnBhcmVudEVsZW1lbnQucmVzb3VyY2U7Ci0gICAgICAgIHZhciB0YWJsZUVsZW1lbnQgPSBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VUaW1pbmdWaWV3LmNyZWF0ZVRpbWluZ1RhYmxlKHJlc291cmNl
KTsKKyAgICAgICAgdmFyIHJlcXVlc3QgPSBhbmNob3IucGFyZW50RWxlbWVudC5yZXF1ZXN0Owor
ICAgICAgICB2YXIgdGFibGVFbGVtZW50ID0gV2ViSW5zcGVjdG9yLlJlc291cmNlVGltaW5nVmll
dy5jcmVhdGVUaW1pbmdUYWJsZShyZXF1ZXN0KTsKICAgICAgICAgcG9wb3Zlci5zaG93KHRhYmxl
RWxlbWVudCwgYW5jaG9yKTsKICAgICB9LAogCkBAIC05MzcsMjQgKzkzNCwyNCBAQCBXZWJJbnNw
ZWN0b3IuTmV0d29ya0xvZ1ZpZXcucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgdmFyIGNv
bnRleHRNZW51ID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZXh0TWVudSgpOwogICAgICAgICB2YXIg
Z3JpZE5vZGUgPSB0aGlzLl9kYXRhR3JpZC5kYXRhR3JpZE5vZGVGcm9tTm9kZShldmVudC50YXJn
ZXQpOwotICAgICAgICB2YXIgcmVzb3VyY2UgPSBncmlkTm9kZSAmJiBncmlkTm9kZS5fcmVzb3Vy
Y2U7CisgICAgICAgIHZhciByZXF1ZXN0ID0gZ3JpZE5vZGUgJiYgZ3JpZE5vZGUuX3JlcXVlc3Q7
CiAKLSAgICAgICAgaWYgKHJlc291cmNlKSB7Ci0gICAgICAgICAgICBjb250ZXh0TWVudS5hcHBl
bmRJdGVtKFdlYkluc3BlY3Rvci5vcGVuTGlua0V4dGVybmFsbHlMYWJlbCgpLCBXZWJJbnNwZWN0
b3Iub3BlblJlc291cmNlLmJpbmQoV2ViSW5zcGVjdG9yLCByZXNvdXJjZS51cmwsIGZhbHNlKSk7
CisgICAgICAgIGlmIChyZXF1ZXN0KSB7CisgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJ
dGVtKFdlYkluc3BlY3Rvci5vcGVuTGlua0V4dGVybmFsbHlMYWJlbCgpLCBXZWJJbnNwZWN0b3Iu
b3BlblJlc291cmNlLmJpbmQoV2ViSW5zcGVjdG9yLCByZXF1ZXN0LnVybCwgZmFsc2UpKTsKICAg
ICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZFNlcGFyYXRvcigpOwotICAgICAgICAgICAgY29u
dGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuY29weUxpbmtBZGRyZXNzTGFiZWwoKSwg
dGhpcy5fY29weUxvY2F0aW9uLmJpbmQodGhpcywgcmVzb3VyY2UpKTsKLSAgICAgICAgICAgIGlm
IChyZXNvdXJjZS5yZXF1ZXN0SGVhZGVyc1RleHQpCi0gICAgICAgICAgICAgICAgY29udGV4dE1l
bnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoV2ViSW5zcGVjdG9yLnVzZUxvd2Vy
Q2FzZU1lbnVUaXRsZXMoKSA/ICJDb3B5IHJlcXVlc3QgaGVhZGVycyIgOiAiQ29weSBSZXF1ZXN0
IEhlYWRlcnMiKSwgdGhpcy5fY29weVJlcXVlc3RIZWFkZXJzLmJpbmQodGhpcywgcmVzb3VyY2Up
KTsKLSAgICAgICAgICAgIGlmIChyZXNvdXJjZS5yZXNwb25zZUhlYWRlcnNUZXh0KQotICAgICAg
ICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKFdl
Ykluc3BlY3Rvci51c2VMb3dlckNhc2VNZW51VGl0bGVzKCkgPyAiQ29weSByZXNwb25zZSBoZWFk
ZXJzIiA6ICJDb3B5IFJlc3BvbnNlIEhlYWRlcnMiKSwgdGhpcy5fY29weVJlc3BvbnNlSGVhZGVy
cy5iaW5kKHRoaXMsIHJlc291cmNlKSk7Ci0gICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJ
dGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZyhXZWJJbnNwZWN0b3IudXNlTG93ZXJDYXNlTWVudVRp
dGxlcygpID8gIkNvcHkgZW50cnkgYXMgSEFSIiA6ICJDb3B5IEVudHJ5IGFzIEhBUiIpLCB0aGlz
Ll9jb3B5UmVzb3VyY2UuYmluZCh0aGlzLCByZXNvdXJjZSkpOworICAgICAgICAgICAgY29udGV4
dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuY29weUxpbmtBZGRyZXNzTGFiZWwoKSwgdGhp
cy5fY29weUxvY2F0aW9uLmJpbmQodGhpcywgcmVxdWVzdCkpOworICAgICAgICAgICAgaWYgKHJl
cXVlc3QucmVxdWVzdEhlYWRlcnNUZXh0KQorICAgICAgICAgICAgICAgIGNvbnRleHRNZW51LmFw
cGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKFdlYkluc3BlY3Rvci51c2VMb3dlckNhc2VN
ZW51VGl0bGVzKCkgPyAiQ29weSByZXF1ZXN0IGhlYWRlcnMiIDogIkNvcHkgUmVxdWVzdCBIZWFk
ZXJzIiksIHRoaXMuX2NvcHlSZXF1ZXN0SGVhZGVycy5iaW5kKHRoaXMsIHJlcXVlc3QpKTsKKyAg
ICAgICAgICAgIGlmIChyZXF1ZXN0LnJlc3BvbnNlSGVhZGVyc1RleHQpCisgICAgICAgICAgICAg
ICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoV2ViSW5zcGVj
dG9yLnVzZUxvd2VyQ2FzZU1lbnVUaXRsZXMoKSA/ICJDb3B5IHJlc3BvbnNlIGhlYWRlcnMiIDog
IkNvcHkgUmVzcG9uc2UgSGVhZGVycyIpLCB0aGlzLl9jb3B5UmVzcG9uc2VIZWFkZXJzLmJpbmQo
dGhpcywgcmVxdWVzdCkpOworICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoV2ViSW5zcGVjdG9yLnVzZUxvd2VyQ2FzZU1lbnVUaXRsZXMoKSA/
ICJDb3B5IGVudHJ5IGFzIEhBUiIgOiAiQ29weSBFbnRyeSBhcyBIQVIiKSwgdGhpcy5fY29weVJl
cXVlc3QuYmluZCh0aGlzLCByZXF1ZXN0KSk7CiAgICAgICAgIH0KICAgICAgICAgY29udGV4dE1l
bnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoV2ViSW5zcGVjdG9yLnVzZUxvd2Vy
Q2FzZU1lbnVUaXRsZXMoKSA/ICJDb3B5IGFsbCBhcyBIQVIiIDogIkNvcHkgQWxsIGFzIEhBUiIp
LCB0aGlzLl9jb3B5QWxsLmJpbmQodGhpcykpOwogCiAgICAgICAgIGlmIChJbnNwZWN0b3JGcm9u
dGVuZEhvc3QuY2FuU2F2ZSgpKSB7CiAgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRTZXBh
cmF0b3IoKTsKLSAgICAgICAgICAgIGlmIChyZXNvdXJjZSkKLSAgICAgICAgICAgICAgICBjb250
ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZyhXZWJJbnNwZWN0b3IudXNl
TG93ZXJDYXNlTWVudVRpdGxlcygpID8gIlNhdmUgZW50cnkgYXMgSEFSIiA6ICJTYXZlIEVudHJ5
IGFzIEhBUiIpLCB0aGlzLl9leHBvcnRSZXNvdXJjZS5iaW5kKHRoaXMsIHJlc291cmNlKSk7Cisg
ICAgICAgICAgICBpZiAocmVxdWVzdCkKKyAgICAgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBl
bmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZyhXZWJJbnNwZWN0b3IudXNlTG93ZXJDYXNlTWVu
dVRpdGxlcygpID8gIlNhdmUgZW50cnkgYXMgSEFSIiA6ICJTYXZlIEVudHJ5IGFzIEhBUiIpLCB0
aGlzLl9leHBvcnRSZXF1ZXN0LmJpbmQodGhpcywgcmVxdWVzdCkpOwogICAgICAgICAgICAgY29u
dGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoV2ViSW5zcGVjdG9yLnVz
ZUxvd2VyQ2FzZU1lbnVUaXRsZXMoKSA/ICJTYXZlIGFsbCBhcyBIQVIiIDogIlNhdmUgQWxsIGFz
IEhBUiIpLCB0aGlzLl9leHBvcnRBbGwuYmluZCh0aGlzKSk7CiAgICAgICAgIH0KIApAQCAtOTcx
LDQ1ICs5NjgsNDUgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dWaWV3LnByb3RvdHlwZSA9IHsK
ICAgICBfY29weUFsbDogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdmFyIGhhckFyY2hpdmUg
PSB7Ci0gICAgICAgICAgICBsb2c6IChuZXcgV2ViSW5zcGVjdG9yLkhBUkxvZyh0aGlzLl9yZXNv
dXJjZXMpKS5idWlsZCgpCisgICAgICAgICAgICBsb2c6IChuZXcgV2ViSW5zcGVjdG9yLkhBUkxv
Zyh0aGlzLl9yZXF1ZXN0cykpLmJ1aWxkKCkKICAgICAgICAgfTsKICAgICAgICAgSW5zcGVjdG9y
RnJvbnRlbmRIb3N0LmNvcHlUZXh0KEpTT04uc3RyaW5naWZ5KGhhckFyY2hpdmUsIG51bGwsIDIp
KTsKICAgICB9LAogCi0gICAgX2NvcHlSZXNvdXJjZTogZnVuY3Rpb24ocmVzb3VyY2UpCisgICAg
X2NvcHlSZXF1ZXN0OiBmdW5jdGlvbihyZXF1ZXN0KQogICAgIHsKLSAgICAgICAgdmFyIGhhciA9
IChuZXcgV2ViSW5zcGVjdG9yLkhBUkVudHJ5KHJlc291cmNlKSkuYnVpbGQoKTsKKyAgICAgICAg
dmFyIGhhciA9IChuZXcgV2ViSW5zcGVjdG9yLkhBUkVudHJ5KHJlcXVlc3QpKS5idWlsZCgpOwog
ICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QuY29weVRleHQoSlNPTi5zdHJpbmdpZnkoaGFy
LCBudWxsLCAyKSk7CiAgICAgfSwKIAotICAgIF9jb3B5TG9jYXRpb246IGZ1bmN0aW9uKHJlc291
cmNlKQorICAgIF9jb3B5TG9jYXRpb246IGZ1bmN0aW9uKHJlcXVlc3QpCiAgICAgewotICAgICAg
ICBJbnNwZWN0b3JGcm9udGVuZEhvc3QuY29weVRleHQocmVzb3VyY2UudXJsKTsKKyAgICAgICAg
SW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNvcHlUZXh0KHJlcXVlc3QudXJsKTsKICAgICB9LAogCi0g
ICAgX2NvcHlSZXF1ZXN0SGVhZGVyczogZnVuY3Rpb24ocmVzb3VyY2UpCisgICAgX2NvcHlSZXF1
ZXN0SGVhZGVyczogZnVuY3Rpb24ocmVxdWVzdCkKICAgICB7Ci0gICAgICAgIEluc3BlY3RvckZy
b250ZW5kSG9zdC5jb3B5VGV4dChyZXNvdXJjZS5yZXF1ZXN0SGVhZGVyc1RleHQpOworICAgICAg
ICBJbnNwZWN0b3JGcm9udGVuZEhvc3QuY29weVRleHQocmVxdWVzdC5yZXF1ZXN0SGVhZGVyc1Rl
eHQpOwogICAgIH0sCiAKLSAgICBfY29weVJlc3BvbnNlSGVhZGVyczogZnVuY3Rpb24ocmVzb3Vy
Y2UpCisgICAgX2NvcHlSZXNwb25zZUhlYWRlcnM6IGZ1bmN0aW9uKHJlcXVlc3QpCiAgICAgewot
ICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QuY29weVRleHQocmVzb3VyY2UucmVzcG9uc2VI
ZWFkZXJzVGV4dCk7CisgICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5jb3B5VGV4dChyZXF1
ZXN0LnJlc3BvbnNlSGVhZGVyc1RleHQpOwogICAgIH0sCiAKICAgICBfZXhwb3J0QWxsOiBmdW5j
dGlvbigpCiAgICAgewogICAgICAgICB2YXIgaGFyQXJjaGl2ZSA9IHsKLSAgICAgICAgICAgIGxv
ZzogKG5ldyBXZWJJbnNwZWN0b3IuSEFSTG9nKHRoaXMuX3Jlc291cmNlcykpLmJ1aWxkKCkKKyAg
ICAgICAgICAgIGxvZzogKG5ldyBXZWJJbnNwZWN0b3IuSEFSTG9nKHRoaXMuX3JlcXVlc3RzKSku
YnVpbGQoKQogICAgICAgICB9OwogICAgICAgICAKICAgICAgICAgV2ViSW5zcGVjdG9yLnNhdmUo
V2ViSW5zcGVjdG9yLmluc3BlY3RlZFBhZ2VEb21haW4gKyAiLmhhciIsIEpTT04uc3RyaW5naWZ5
KGhhckFyY2hpdmUsIG51bGwsIDIpLCB0cnVlKTsKICAgICB9LAogCi0gICAgX2V4cG9ydFJlc291
cmNlOiBmdW5jdGlvbihyZXNvdXJjZSkKKyAgICBfZXhwb3J0UmVxdWVzdDogZnVuY3Rpb24ocmVx
dWVzdCkKICAgICB7Ci0gICAgICAgIHZhciBoYXIgPSAobmV3IFdlYkluc3BlY3Rvci5IQVJFbnRy
eShyZXNvdXJjZSkpLmJ1aWxkKCk7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5zYXZlKHJlc291cmNl
LmRpc3BsYXlOYW1lICsgIi5oYXIiLCBKU09OLnN0cmluZ2lmeShoYXIsIG51bGwsIDIpLCB0cnVl
KTsKKyAgICAgICAgdmFyIGhhciA9IChuZXcgV2ViSW5zcGVjdG9yLkhBUkVudHJ5KHJlcXVlc3Qp
KS5idWlsZCgpOworICAgICAgICBXZWJJbnNwZWN0b3Iuc2F2ZShyZXF1ZXN0LmRpc3BsYXlOYW1l
ICsgIi5oYXIiLCBKU09OLnN0cmluZ2lmeShoYXIsIG51bGwsIDIpLCB0cnVlKTsKICAgICB9LAog
CiAgICAgX2NsZWFyQnJvd3NlckNhY2hlOiBmdW5jdGlvbihldmVudCkKQEAgLTEwNjMsOTIgKzEw
NjAsOTIgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dWaWV3LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgfQogICAgIH0sCiAKLSAgICBfbWF0Y2hSZXNvdXJjZTogZnVuY3Rpb24ocmVzb3VyY2UpCisg
ICAgX21hdGNoUmVxdWVzdDogZnVuY3Rpb24ocmVxdWVzdCkKICAgICB7CiAgICAgICAgIGlmICgh
dGhpcy5fc2VhcmNoUmVnRXhwKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgICAgIGlm
ICgoIXJlc291cmNlLmRpc3BsYXlOYW1lIHx8ICFyZXNvdXJjZS5kaXNwbGF5TmFtZS5tYXRjaCh0
aGlzLl9zZWFyY2hSZWdFeHApKSAmJiAhcmVzb3VyY2UuZm9sZGVyLm1hdGNoKHRoaXMuX3NlYXJj
aFJlZ0V4cCkpCisgICAgICAgIGlmICgoIXJlcXVlc3QuZGlzcGxheU5hbWUgfHwgIXJlcXVlc3Qu
ZGlzcGxheU5hbWUubWF0Y2godGhpcy5fc2VhcmNoUmVnRXhwKSkgJiYgIXJlcXVlc3QuZm9sZGVy
Lm1hdGNoKHRoaXMuX3NlYXJjaFJlZ0V4cCkpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAKLSAg
ICAgICAgaWYgKHJlc291cmNlLnJlcXVlc3RJZCBpbiB0aGlzLl9tYXRjaGVkUmVzb3VyY2VzTWFw
KQotICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21hdGNoZWRSZXNvdXJjZXNNYXBbcmVzb3VyY2Uu
cmVxdWVzdElkXTsKKyAgICAgICAgaWYgKHJlcXVlc3QucmVxdWVzdElkIGluIHRoaXMuX21hdGNo
ZWRSZXF1ZXN0c01hcCkKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9tYXRjaGVkUmVxdWVzdHNN
YXBbcmVxdWVzdC5yZXF1ZXN0SWRdOwogCi0gICAgICAgIHZhciBtYXRjaGVkUmVzb3VyY2VJbmRl
eCA9IHRoaXMuX21hdGNoZWRSZXNvdXJjZXMubGVuZ3RoOwotICAgICAgICB0aGlzLl9tYXRjaGVk
UmVzb3VyY2VzTWFwW3Jlc291cmNlLnJlcXVlc3RJZF0gPSBtYXRjaGVkUmVzb3VyY2VJbmRleDsK
LSAgICAgICAgdGhpcy5fbWF0Y2hlZFJlc291cmNlcy5wdXNoKHJlc291cmNlLnJlcXVlc3RJZCk7
CisgICAgICAgIHZhciBtYXRjaGVkUmVxdWVzdEluZGV4ID0gdGhpcy5fbWF0Y2hlZFJlcXVlc3Rz
Lmxlbmd0aDsKKyAgICAgICAgdGhpcy5fbWF0Y2hlZFJlcXVlc3RzTWFwW3JlcXVlc3QucmVxdWVz
dElkXSA9IG1hdGNoZWRSZXF1ZXN0SW5kZXg7CisgICAgICAgIHRoaXMuX21hdGNoZWRSZXF1ZXN0
cy5wdXNoKHJlcXVlc3QucmVxdWVzdElkKTsKIAotICAgICAgICByZXR1cm4gbWF0Y2hlZFJlc291
cmNlSW5kZXg7CisgICAgICAgIHJldHVybiBtYXRjaGVkUmVxdWVzdEluZGV4OwogICAgIH0sCiAK
ICAgICBfY2xlYXJTZWFyY2hNYXRjaGVkTGlzdDogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAg
dGhpcy5fbWF0Y2hlZFJlc291cmNlcyA9IFtdOwotICAgICAgICB0aGlzLl9tYXRjaGVkUmVzb3Vy
Y2VzTWFwID0ge307Ci0gICAgICAgIHRoaXMuX2hpZ2hsaWdodE50aE1hdGNoZWRSZXNvdXJjZSgt
MSwgZmFsc2UpOworICAgICAgICB0aGlzLl9tYXRjaGVkUmVxdWVzdHMgPSBbXTsKKyAgICAgICAg
dGhpcy5fbWF0Y2hlZFJlcXVlc3RzTWFwID0ge307CisgICAgICAgIHRoaXMuX2hpZ2hsaWdodE50
aE1hdGNoZWRSZXF1ZXN0KC0xLCBmYWxzZSk7CiAgICAgfSwKIAogICAgIF91cGRhdGVTZWFyY2hN
YXRjaGVkTGlzdEFmdGVyUmVxdWVzdElkQ2hhbmdlZDogZnVuY3Rpb24ob2xkUmVxdWVzdElkLCBu
ZXdSZXF1ZXN0SWQpCiAgICAgewotICAgICAgICB2YXIgcmVzb3VyY2VJbmRleCA9IHRoaXMuX21h
dGNoZWRSZXNvdXJjZXNNYXBbb2xkUmVxdWVzdElkXTsKLSAgICAgICAgaWYgKHJlc291cmNlSW5k
ZXgpIHsKLSAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9tYXRjaGVkUmVzb3VyY2VzTWFwW29sZFJl
cXVlc3RJZF07Ci0gICAgICAgICAgICB0aGlzLl9tYXRjaGVkUmVzb3VyY2VzTWFwW25ld1JlcXVl
c3RJZF0gPSByZXNvdXJjZUluZGV4OwotICAgICAgICAgICAgdGhpcy5fbWF0Y2hlZFJlc291cmNl
c1tyZXNvdXJjZUluZGV4XSA9IG5ld1JlcXVlc3RJZDsKKyAgICAgICAgdmFyIHJlcXVlc3RJbmRl
eCA9IHRoaXMuX21hdGNoZWRSZXF1ZXN0c01hcFtvbGRSZXF1ZXN0SWRdOworICAgICAgICBpZiAo
cmVxdWVzdEluZGV4KSB7CisgICAgICAgICAgICBkZWxldGUgdGhpcy5fbWF0Y2hlZFJlcXVlc3Rz
TWFwW29sZFJlcXVlc3RJZF07CisgICAgICAgICAgICB0aGlzLl9tYXRjaGVkUmVxdWVzdHNNYXBb
bmV3UmVxdWVzdElkXSA9IHJlcXVlc3RJbmRleDsKKyAgICAgICAgICAgIHRoaXMuX21hdGNoZWRS
ZXF1ZXN0c1tyZXF1ZXN0SW5kZXhdID0gbmV3UmVxdWVzdElkOwogICAgICAgICB9CiAgICAgfSwK
IAotICAgIF91cGRhdGVIaWdobGlnaHRJZk1hdGNoZWQ6IGZ1bmN0aW9uKHJlc291cmNlKQorICAg
IF91cGRhdGVIaWdobGlnaHRJZk1hdGNoZWQ6IGZ1bmN0aW9uKHJlcXVlc3QpCiAgICAgewotICAg
ICAgICB2YXIgbWF0Y2hlZFJlc291cmNlSW5kZXggPSB0aGlzLl9tYXRjaFJlc291cmNlKHJlc291
cmNlKTsKLSAgICAgICAgaWYgKG1hdGNoZWRSZXNvdXJjZUluZGV4ID09PSAtMSkKKyAgICAgICAg
dmFyIG1hdGNoZWRSZXF1ZXN0SW5kZXggPSB0aGlzLl9tYXRjaFJlcXVlc3QocmVxdWVzdCk7Cisg
ICAgICAgIGlmIChtYXRjaGVkUmVxdWVzdEluZGV4ID09PSAtMSkKICAgICAgICAgICAgIHJldHVy
bjsKIAotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3Iu
TmV0d29ya0xvZ1ZpZXcuRXZlbnRUeXBlcy5TZWFyY2hDb3VudFVwZGF0ZWQsIHRoaXMuX21hdGNo
ZWRSZXNvdXJjZXMubGVuZ3RoKTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5l
cnMoV2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dWaWV3LkV2ZW50VHlwZXMuU2VhcmNoQ291bnRVcGRh
dGVkLCB0aGlzLl9tYXRjaGVkUmVxdWVzdHMubGVuZ3RoKTsKIAotICAgICAgICBpZiAodGhpcy5f
Y3VycmVudE1hdGNoZWRSZXNvdXJjZUluZGV4ICE9PSAtMSAmJiB0aGlzLl9jdXJyZW50TWF0Y2hl
ZFJlc291cmNlSW5kZXggIT09IG1hdGNoZWRSZXNvdXJjZUluZGV4KQorICAgICAgICBpZiAodGhp
cy5fY3VycmVudE1hdGNoZWRSZXF1ZXN0SW5kZXggIT09IC0xICYmIHRoaXMuX2N1cnJlbnRNYXRj
aGVkUmVxdWVzdEluZGV4ICE9PSBtYXRjaGVkUmVxdWVzdEluZGV4KQogICAgICAgICAgICAgcmV0
dXJuOwogCi0gICAgICAgIHRoaXMuX2hpZ2hsaWdodE50aE1hdGNoZWRSZXNvdXJjZShtYXRjaGVk
UmVzb3VyY2VJbmRleCwgZmFsc2UpOworICAgICAgICB0aGlzLl9oaWdobGlnaHROdGhNYXRjaGVk
UmVxdWVzdChtYXRjaGVkUmVxdWVzdEluZGV4LCBmYWxzZSk7CiAgICAgfSwKIAotICAgIF9oaWdo
bGlnaHROdGhNYXRjaGVkUmVzb3VyY2U6IGZ1bmN0aW9uKG1hdGNoZWRSZXNvdXJjZUluZGV4LCBy
ZXZlYWwpCisgICAgX2hpZ2hsaWdodE50aE1hdGNoZWRSZXF1ZXN0OiBmdW5jdGlvbihtYXRjaGVk
UmVxdWVzdEluZGV4LCByZXZlYWwpCiAgICAgewogICAgICAgICBpZiAodGhpcy5faGlnaGxpZ2h0
ZWRTdWJzdHJpbmdDaGFuZ2VzKSB7CiAgICAgICAgICAgICByZXZlcnREb21DaGFuZ2VzKHRoaXMu
X2hpZ2hsaWdodGVkU3Vic3RyaW5nQ2hhbmdlcyk7CiAgICAgICAgICAgICB0aGlzLl9oaWdobGln
aHRlZFN1YnN0cmluZ0NoYW5nZXMgPSBudWxsOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKG1h
dGNoZWRSZXNvdXJjZUluZGV4ID09PSAtMSkgewotICAgICAgICAgICAgdGhpcy5fY3VycmVudE1h
dGNoZWRSZXNvdXJjZUluZGV4ID0gbWF0Y2hlZFJlc291cmNlSW5kZXg7CisgICAgICAgIGlmICht
YXRjaGVkUmVxdWVzdEluZGV4ID09PSAtMSkgeworICAgICAgICAgICAgdGhpcy5fY3VycmVudE1h
dGNoZWRSZXF1ZXN0SW5kZXggPSBtYXRjaGVkUmVxdWVzdEluZGV4OwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgdmFyIHJlc291cmNlID0gdGhpcy5fcmVzb3VyY2Vz
QnlJZFt0aGlzLl9tYXRjaGVkUmVzb3VyY2VzW21hdGNoZWRSZXNvdXJjZUluZGV4XV07Ci0gICAg
ICAgIGlmICghcmVzb3VyY2UpCisgICAgICAgIHZhciByZXF1ZXN0ID0gdGhpcy5fcmVxdWVzdHNC
eUlkW3RoaXMuX21hdGNoZWRSZXF1ZXN0c1ttYXRjaGVkUmVxdWVzdEluZGV4XV07CisgICAgICAg
IGlmICghcmVxdWVzdCkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB2YXIgbmFtZU1h
dGNoZWQgPSByZXNvdXJjZS5kaXNwbGF5TmFtZSAmJiByZXNvdXJjZS5kaXNwbGF5TmFtZS5tYXRj
aCh0aGlzLl9zZWFyY2hSZWdFeHApOwotICAgICAgICB2YXIgcGF0aE1hdGNoZWQgPSByZXNvdXJj
ZS5wYXRoICYmIHJlc291cmNlLmZvbGRlci5tYXRjaCh0aGlzLl9zZWFyY2hSZWdFeHApOwotICAg
ICAgICBpZiAoIW5hbWVNYXRjaGVkICYmIHBhdGhNYXRjaGVkICYmICF0aGlzLl9sYXJnZXJSZXNv
dXJjZXNCdXR0b24udG9nZ2xlZCkKLSAgICAgICAgICAgIHRoaXMuX3RvZ2dsZUxhcmdlclJlc291
cmNlcygpOworICAgICAgICB2YXIgbmFtZU1hdGNoZWQgPSByZXF1ZXN0LmRpc3BsYXlOYW1lICYm
IHJlcXVlc3QuZGlzcGxheU5hbWUubWF0Y2godGhpcy5fc2VhcmNoUmVnRXhwKTsKKyAgICAgICAg
dmFyIHBhdGhNYXRjaGVkID0gcmVxdWVzdC5wYXRoICYmIHJlcXVlc3QuZm9sZGVyLm1hdGNoKHRo
aXMuX3NlYXJjaFJlZ0V4cCk7CisgICAgICAgIGlmICghbmFtZU1hdGNoZWQgJiYgcGF0aE1hdGNo
ZWQgJiYgIXRoaXMuX2xhcmdlclJlcXVlc3RzQnV0dG9uLnRvZ2dsZWQpCisgICAgICAgICAgICB0
aGlzLl90b2dnbGVMYXJnZXJSZXF1ZXN0cygpOwogCi0gICAgICAgIHZhciBub2RlID0gdGhpcy5f
cmVzb3VyY2VHcmlkTm9kZShyZXNvdXJjZSk7CisgICAgICAgIHZhciBub2RlID0gdGhpcy5fcmVx
dWVzdEdyaWROb2RlKHJlcXVlc3QpOwogICAgICAgICBpZiAobm9kZSkgewogICAgICAgICAgICAg
dGhpcy5faGlnaGxpZ2h0ZWRTdWJzdHJpbmdDaGFuZ2VzID0gbm9kZS5faGlnaGxpZ2h0TWF0Y2hl
ZFN1YnN0cmluZyh0aGlzLl9zZWFyY2hSZWdFeHApOwogICAgICAgICAgICAgaWYgKHJldmVhbCkK
ICAgICAgICAgICAgICAgICBub2RlLnJldmVhbCgpOwotICAgICAgICAgICAgdGhpcy5fY3VycmVu
dE1hdGNoZWRSZXNvdXJjZUluZGV4ID0gbWF0Y2hlZFJlc291cmNlSW5kZXg7CisgICAgICAgICAg
ICB0aGlzLl9jdXJyZW50TWF0Y1JlcXVlc3RyY2VJbmRleCA9IG1hdGNoZWRSZXF1ZXN0SW5kZXg7
CiAgICAgICAgIH0KLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5z
cGVjdG9yLk5ldHdvcmtMb2dWaWV3LkV2ZW50VHlwZXMuU2VhcmNoSW5kZXhVcGRhdGVkLCB0aGlz
Ll9jdXJyZW50TWF0Y2hlZFJlc291cmNlSW5kZXgpOworICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuTmV0d29ya0xvZ1ZpZXcuRXZlbnRUeXBlcy5TZWFy
Y2hJbmRleFVwZGF0ZWQsIHRoaXMuX2N1cnJlbnRNYXRjaGVkUmVxdWVzdEluZGV4KTsKICAgICB9
LAogCiAgICAgcGVyZm9ybVNlYXJjaDogZnVuY3Rpb24oc2VhcmNoUXVlcnksIHNvcnRPckZpbHRl
ckFwcGxpZWQpCiAgICAgewotICAgICAgICB2YXIgbmV3TWF0Y2hlZFJlc291cmNlSW5kZXggPSAw
OworICAgICAgICB2YXIgbmV3TWF0Y2hlZFJlcXVlc3RJbmRleCA9IDA7CiAgICAgICAgIHZhciBj
dXJyZW50TWF0Y2hlZFJlcXVlc3RJZDsKLSAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRNYXRjaGVk
UmVzb3VyY2VJbmRleCAhPT0gLTEpCi0gICAgICAgICAgICBjdXJyZW50TWF0Y2hlZFJlcXVlc3RJ
ZCA9IHRoaXMuX21hdGNoZWRSZXNvdXJjZXNbdGhpcy5fY3VycmVudE1hdGNoZWRSZXNvdXJjZUlu
ZGV4XTsKKyAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRNYXRjaGVkUmVxdWVzdEluZGV4ICE9PSAt
MSkKKyAgICAgICAgICAgIGN1cnJlbnRNYXRjaGVkUmVxdWVzdElkID0gdGhpcy5fbWF0Y2hlZFJl
cXVlc3RzW3RoaXMuX2N1cnJlbnRNYXRjaGVkUmVxdWVzdEluZGV4XTsKIAogICAgICAgICBpZiAo
IXNvcnRPckZpbHRlckFwcGxpZWQpCiAgICAgICAgICAgICB0aGlzLl9zZWFyY2hSZWdFeHAgPSBj
cmVhdGVQbGFpblRleHRTZWFyY2hSZWdleChzZWFyY2hRdWVyeSwgImkiKTsKQEAgLTExNTYsMzMg
KzExNTMsMzMgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dWaWV3LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgdGhpcy5fY2xlYXJTZWFyY2hNYXRjaGVkTGlzdCgpOwogCiAgICAgICAgIHZhciBjaGls
ZE5vZGVzID0gdGhpcy5fZGF0YUdyaWQuZGF0YVRhYmxlQm9keS5jaGlsZE5vZGVzOwotICAgICAg
ICB2YXIgcmVzb3VyY2VOb2RlcyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGNoaWxkTm9k
ZXMsIDAsIGNoaWxkTm9kZXMubGVuZ3RoIC0gMSk7IC8vIGRyb3AgdGhlIGZpbGxlciByb3cuCisg
ICAgICAgIHZhciByZXF1ZXN0Tm9kZXMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChjaGls
ZE5vZGVzLCAwLCBjaGlsZE5vZGVzLmxlbmd0aCAtIDEpOyAvLyBkcm9wIHRoZSBmaWxsZXIgcm93
LgogCi0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzb3VyY2VOb2Rlcy5sZW5ndGg7ICsr
aSkgewotICAgICAgICAgICAgdmFyIGRhdGFHcmlkTm9kZSA9IHRoaXMuX2RhdGFHcmlkLmRhdGFH
cmlkTm9kZUZyb21Ob2RlKHJlc291cmNlTm9kZXNbaV0pOworICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHJlcXVlc3ROb2Rlcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdmFyIGRhdGFH
cmlkTm9kZSA9IHRoaXMuX2RhdGFHcmlkLmRhdGFHcmlkTm9kZUZyb21Ob2RlKHJlcXVlc3ROb2Rl
c1tpXSk7CiAgICAgICAgICAgICBpZiAoZGF0YUdyaWROb2RlLmlzRmlsdGVyZWRPdXQoKSkKICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgaWYgKHRoaXMuX21hdGNoUmVz
b3VyY2UoZGF0YUdyaWROb2RlLl9yZXNvdXJjZSkgIT09IC0xICYmIGRhdGFHcmlkTm9kZS5fcmVz
b3VyY2UucmVxdWVzdElkID09PSBjdXJyZW50TWF0Y2hlZFJlcXVlc3RJZCkKLSAgICAgICAgICAg
ICAgICBuZXdNYXRjaGVkUmVzb3VyY2VJbmRleCA9IHRoaXMuX21hdGNoZWRSZXNvdXJjZXMubGVu
Z3RoIC0gMTsKKyAgICAgICAgICAgIGlmICh0aGlzLl9tYXRjaFJlcXVlc3QoZGF0YUdyaWROb2Rl
Ll9yZXF1ZXN0KSAhPT0gLTEgJiYgZGF0YUdyaWROb2RlLl9yZXF1ZXN0LnJlcXVlc3RJZCA9PT0g
Y3VycmVudE1hdGNoZWRSZXF1ZXN0SWQpCisgICAgICAgICAgICAgICAgbmV3TWF0Y2hlZFJlcXVl
c3RJbmRleCA9IHRoaXMuX21hdGNoZWRSZXF1ZXN0cy5sZW5ndGggLSAxOwogICAgICAgICB9CiAK
LSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLk5ldHdv
cmtMb2dWaWV3LkV2ZW50VHlwZXMuU2VhcmNoQ291bnRVcGRhdGVkLCB0aGlzLl9tYXRjaGVkUmVz
b3VyY2VzLmxlbmd0aCk7Ci0gICAgICAgIHRoaXMuX2hpZ2hsaWdodE50aE1hdGNoZWRSZXNvdXJj
ZShuZXdNYXRjaGVkUmVzb3VyY2VJbmRleCwgIXNvcnRPckZpbHRlckFwcGxpZWQpOworICAgICAg
ICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuTmV0d29ya0xvZ1Zp
ZXcuRXZlbnRUeXBlcy5TZWFyY2hDb3VudFVwZGF0ZWQsIHRoaXMuX21hdGNoZWRSZXF1ZXN0cy5s
ZW5ndGgpOworICAgICAgICB0aGlzLl9oaWdobGlnaHROdGhNYXRjaGVkUmVxdWVzdChuZXdNYXRj
aGVkUmVxdWVzdEluZGV4LCAhc29ydE9yRmlsdGVyQXBwbGllZCk7CiAgICAgfSwKIAogICAgIGp1
bXBUb1ByZXZpb3VzU2VhcmNoUmVzdWx0OiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBpZiAo
IXRoaXMuX21hdGNoZWRSZXNvdXJjZXMubGVuZ3RoKQorICAgICAgICBpZiAoIXRoaXMuX21hdGNo
ZWRSZXF1ZXN0cy5sZW5ndGgpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHRoaXMuX2hp
Z2hsaWdodE50aE1hdGNoZWRSZXNvdXJjZSgodGhpcy5fY3VycmVudE1hdGNoZWRSZXNvdXJjZUlu
ZGV4ICsgdGhpcy5fbWF0Y2hlZFJlc291cmNlcy5sZW5ndGggLSAxKSAlIHRoaXMuX21hdGNoZWRS
ZXNvdXJjZXMubGVuZ3RoLCB0cnVlKTsKKyAgICAgICAgdGhpcy5faGlnaGxpZ2h0TnRoTWF0Y2hl
ZFJlcXVlc3QoKHRoaXMuX2N1cnJlbnRNYXRjaGVkUmVxdWVzdEluZGV4ICsgdGhpcy5fbWF0Y2hl
ZFJlcXVlc3RzLmxlbmd0aCAtIDEpICUgdGhpcy5fbWF0Y2hlZFJlcXVlc3RzLmxlbmd0aCwgdHJ1
ZSk7CiAgICAgfSwKIAogICAgIGp1bXBUb05leHRTZWFyY2hSZXN1bHQ6IGZ1bmN0aW9uKCkKICAg
ICB7Ci0gICAgICAgIGlmICghdGhpcy5fbWF0Y2hlZFJlc291cmNlcy5sZW5ndGgpCisgICAgICAg
IGlmICghdGhpcy5fbWF0Y2hlZFJlcXVlc3RzLmxlbmd0aCkKICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgdGhpcy5faGlnaGxpZ2h0TnRoTWF0Y2hlZFJlc291cmNlKCh0aGlzLl9jdXJyZW50
TWF0Y2hlZFJlc291cmNlSW5kZXggKyAxKSAlIHRoaXMuX21hdGNoZWRSZXNvdXJjZXMubGVuZ3Ro
LCB0cnVlKTsKKyAgICAgICAgdGhpcy5faGlnaGxpZ2h0TnRoTWF0Y2hlZFJlcXVlc3QoKHRoaXMu
X2N1cnJlbnRNYXRjaGVkUmVxdWVzdEluZGV4ICsgMSkgJSB0aGlzLl9tYXRjaGVkUmVxdWVzdHMu
bGVuZ3RoLCB0cnVlKTsKICAgICB9LAogCiAgICAgc2VhcmNoQ2FuY2VsZWQ6IGZ1bmN0aW9uKCkK
QEAgLTExOTEsMTEgKzExODgsMTEgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dWaWV3LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVj
dG9yLk5ldHdvcmtMb2dWaWV3LkV2ZW50VHlwZXMuU2VhcmNoQ291bnRVcGRhdGVkLCAwKTsKICAg
ICB9LAogCi0gICAgcmV2ZWFsQW5kSGlnaGxpZ2h0UmVzb3VyY2U6IGZ1bmN0aW9uKHJlc291cmNl
KQorICAgIHJldmVhbEFuZEhpZ2hsaWdodFJlcXVlc3Q6IGZ1bmN0aW9uKHJlcXVlc3QpCiAgICAg
ewogICAgICAgICB0aGlzLl9yZW1vdmVBbGxOb2RlSGlnaGxpZ2h0cygpOwogCi0gICAgICAgIHZh
ciBub2RlID0gdGhpcy5fcmVzb3VyY2VHcmlkTm9kZShyZXNvdXJjZSk7CisgICAgICAgIHZhciBu
b2RlID0gdGhpcy5fcmVxdWVzdEdyaWROb2RlKHJlcXVlc3QpOwogICAgICAgICBpZiAobm9kZSkg
ewogICAgICAgICAgICAgdGhpcy5fZGF0YUdyaWQuZWxlbWVudC5mb2N1cygpOwogICAgICAgICAg
ICAgbm9kZS5yZXZlYWwoKTsKQEAgLTEyMjMsNyArMTIyMCw3IEBAIFdlYkluc3BlY3Rvci5OZXR3
b3JrTG9nVmlldy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90
eXBlOwogV2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dWaWV3LkV2ZW50VHlwZXMgPSB7CiAgICAgVmll
d0NsZWFyZWQ6ICJWaWV3Q2xlYXJlZCIsCiAgICAgUm93U2l6ZUNoYW5nZWQ6ICJSb3dTaXplQ2hh
bmdlZCIsCi0gICAgUmVzb3VyY2VTZWxlY3RlZDogIlJlc291cmNlU2VsZWN0ZWQiLAorICAgIFJl
cXVlc3RTZWxlY3RlZDogIlJlcXVlc3RTZWxlY3RlZCIsCiAgICAgU2VhcmNoQ291bnRVcGRhdGVk
OiAiU2VhcmNoQ291bnRVcGRhdGVkIiwKICAgICBTZWFyY2hJbmRleFVwZGF0ZWQ6ICJTZWFyY2hJ
bmRleFVwZGF0ZWQiCiB9OwpAQCAtMTI1MSw3ICsxMjQ4LDcgQEAgV2ViSW5zcGVjdG9yLk5ldHdv
cmtQYW5lbCA9IGZ1bmN0aW9uKCkKIAogICAgIHRoaXMuX25ldHdvcmtMb2dWaWV3LmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dWaWV3LkV2ZW50VHlwZXMuVmlld0NsZWFy
ZWQsIHRoaXMuX29uVmlld0NsZWFyZWQsIHRoaXMpOwogICAgIHRoaXMuX25ldHdvcmtMb2dWaWV3
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dWaWV3LkV2ZW50VHlwZXMu
Um93U2l6ZUNoYW5nZWQsIHRoaXMuX29uUm93U2l6ZUNoYW5nZWQsIHRoaXMpOwotICAgIHRoaXMu
X25ldHdvcmtMb2dWaWV3LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dW
aWV3LkV2ZW50VHlwZXMuUmVzb3VyY2VTZWxlY3RlZCwgdGhpcy5fb25SZXNvdXJjZVNlbGVjdGVk
LCB0aGlzKTsKKyAgICB0aGlzLl9uZXR3b3JrTG9nVmlldy5hZGRFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5OZXR3b3JrTG9nVmlldy5FdmVudFR5cGVzLlJlcXVlc3RTZWxlY3RlZCwgdGhpcy5f
b25SZXF1ZXN0U2VsZWN0ZWQsIHRoaXMpOwogICAgIHRoaXMuX25ldHdvcmtMb2dWaWV3LmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dWaWV3LkV2ZW50VHlwZXMuU2VhcmNo
Q291bnRVcGRhdGVkLCB0aGlzLl9vblNlYXJjaENvdW50VXBkYXRlZCwgdGhpcyk7CiAgICAgdGhp
cy5fbmV0d29ya0xvZ1ZpZXcuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuTmV0d29ya0xv
Z1ZpZXcuRXZlbnRUeXBlcy5TZWFyY2hJbmRleFVwZGF0ZWQsIHRoaXMuX29uU2VhcmNoSW5kZXhV
cGRhdGVkLCB0aGlzKTsKIApAQCAtMTI5MSw3ICsxMjg4LDcgQEAgV2ViSW5zcGVjdG9yLk5ldHdv
cmtQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICBoYW5kbGVTaG9ydGN1dDogZnVuY3Rpb24oZXZl
bnQpCiAgICAgewotICAgICAgICBpZiAodGhpcy5fdmlld2luZ1Jlc291cmNlTW9kZSAmJiBldmVu
dC5rZXlDb2RlID09PSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5LZXlzLkVzYy5jb2Rl
KSB7CisgICAgICAgIGlmICh0aGlzLl92aWV3aW5nUmVxdWVzdE1vZGUgJiYgZXZlbnQua2V5Q29k
ZSA9PT0gV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5cy5Fc2MuY29kZSkgewogICAg
ICAgICAgICAgdGhpcy5fdG9nZ2xlR3JpZE1vZGUoKTsKICAgICAgICAgICAgIGV2ZW50LmhhbmRs
ZWQgPSB0cnVlOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTMwNSw0MiArMTMwMiw0MiBAQCBX
ZWJJbnNwZWN0b3IuTmV0d29ya1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgV2ViSW5zcGVj
dG9yLlBhbmVsLnByb3RvdHlwZS53YXNTaG93bi5jYWxsKHRoaXMpOwogICAgIH0sCiAKLSAgICBn
ZXQgcmVzb3VyY2VzKCkKKyAgICBnZXQgcmVxdWVzdHMoKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IHRoaXMuX25ldHdvcmtMb2dWaWV3LnJlc291cmNlczsKKyAgICAgICAgcmV0dXJuIHRoaXMuX25l
dHdvcmtMb2dWaWV3LnJlcXVlc3RzOwogICAgIH0sCiAKLSAgICByZXNvdXJjZUJ5SWQ6IGZ1bmN0
aW9uKGlkKQorICAgIHJlcXVlc3RCeUlkOiBmdW5jdGlvbihpZCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLl9uZXR3b3JrTG9nVmlldy5yZXNvdXJjZUJ5SWQoaWQpOworICAgICAgICByZXR1
cm4gdGhpcy5fbmV0d29ya0xvZ1ZpZXcucmVxdWVzdEJ5SWQoaWQpOwogICAgIH0sCiAKLSAgICBf
cmVzb3VyY2VCeUFuY2hvcjogZnVuY3Rpb24oYW5jaG9yKQorICAgIF9yZXF1ZXN0QnlBbmNob3I6
IGZ1bmN0aW9uKGFuY2hvcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhbmNob3IucmVxdWVzdElk
ID8gdGhpcy5yZXNvdXJjZUJ5SWQoYW5jaG9yLnJlcXVlc3RJZCkgOiB0aGlzLl9uZXR3b3JrTG9n
Vmlldy5fcmVzb3VyY2VzQnlVUkxbYW5jaG9yLmhyZWZdOworICAgICAgICByZXR1cm4gYW5jaG9y
LnJlcXVlc3RJZCA/IHRoaXMucmVxdWVzdEJ5SWQoYW5jaG9yLnJlcXVlc3RJZCkgOiB0aGlzLl9u
ZXR3b3JrTG9nVmlldy5fcmVxdWVzdHNCeVVSTFthbmNob3IuaHJlZl07CiAgICAgfSwKIAogICAg
IGNhblNob3dBbmNob3JMb2NhdGlvbjogZnVuY3Rpb24oYW5jaG9yKQogICAgIHsKLSAgICAgICAg
cmV0dXJuICEhdGhpcy5fcmVzb3VyY2VCeUFuY2hvcihhbmNob3IpOworICAgICAgICByZXR1cm4g
ISF0aGlzLl9yZXF1ZXN0QnlBbmNob3IoYW5jaG9yKTsKICAgICB9LAogCiAgICAgc2hvd0FuY2hv
ckxvY2F0aW9uOiBmdW5jdGlvbihhbmNob3IpCiAgICAgewotICAgICAgICB2YXIgcmVzb3VyY2Ug
PSB0aGlzLl9yZXNvdXJjZUJ5QW5jaG9yKGFuY2hvcik7Ci0gICAgICAgIHRoaXMucmV2ZWFsQW5k
SGlnaGxpZ2h0UmVzb3VyY2UocmVzb3VyY2UpCisgICAgICAgIHZhciByZXF1ZXN0ID0gdGhpcy5f
cmVxdWVzdEJ5QW5jaG9yKGFuY2hvcik7CisgICAgICAgIHRoaXMucmV2ZWFsQW5kSGlnaGxpZ2h0
UmVxdWVzdChyZXF1ZXN0KQogICAgIH0sCiAKLSAgICByZXZlYWxBbmRIaWdobGlnaHRSZXNvdXJj
ZTogZnVuY3Rpb24ocmVzb3VyY2UpCisgICAgcmV2ZWFsQW5kSGlnaGxpZ2h0UmVxdWVzdDogZnVu
Y3Rpb24ocmVxdWVzdCkKICAgICB7CiAgICAgICAgIHRoaXMuX3RvZ2dsZUdyaWRNb2RlKCk7Ci0g
ICAgICAgIGlmIChyZXNvdXJjZSkKLSAgICAgICAgICAgIHRoaXMuX25ldHdvcmtMb2dWaWV3LnJl
dmVhbEFuZEhpZ2hsaWdodFJlc291cmNlKHJlc291cmNlKTsKKyAgICAgICAgaWYgKHJlcXVlc3Qp
CisgICAgICAgICAgICB0aGlzLl9uZXR3b3JrTG9nVmlldy5yZXZlYWxBbmRIaWdobGlnaHRSZXF1
ZXN0KHJlcXVlc3QpOwogICAgIH0sCiAKICAgICBfb25WaWV3Q2xlYXJlZDogZnVuY3Rpb24oZXZl
bnQpCiAgICAgewotICAgICAgICB0aGlzLl9jbG9zZVZpc2libGVSZXNvdXJjZSgpOworICAgICAg
ICB0aGlzLl9jbG9zZVZpc2libGVSZXF1ZXN0KCk7CiAgICAgICAgIHRoaXMuX3RvZ2dsZUdyaWRN
b2RlKCk7CiAgICAgICAgIHRoaXMuX3ZpZXdzQ29udGFpbmVyRWxlbWVudC5yZW1vdmVDaGlsZHJl
bigpOwogICAgICAgICB0aGlzLl92aWV3c0NvbnRhaW5lckVsZW1lbnQuYXBwZW5kQ2hpbGQodGhp
cy5fY2xvc2VCdXR0b25FbGVtZW50KTsKQEAgLTEzNjQsMjkgKzEzNjEsMjkgQEAgV2ViSW5zcGVj
dG9yLk5ldHdvcmtQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5zZWFy
Y2hDb250cm9sbGVyLnVwZGF0ZUN1cnJlbnRNYXRjaEluZGV4KGV2ZW50LmRhdGEsIHRoaXMpOwog
ICAgIH0sCiAKLSAgICBfb25SZXNvdXJjZVNlbGVjdGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBf
b25SZXF1ZXN0U2VsZWN0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdGhpcy5f
c2hvd1Jlc291cmNlKGV2ZW50LmRhdGEpOworICAgICAgICB0aGlzLl9zaG93UmVxdWVzdChldmVu
dC5kYXRhKTsKICAgICB9LAogCi0gICAgX3Nob3dSZXNvdXJjZTogZnVuY3Rpb24ocmVzb3VyY2Up
CisgICAgX3Nob3dSZXF1ZXN0OiBmdW5jdGlvbihyZXF1ZXN0KQogICAgIHsKLSAgICAgICAgaWYg
KCFyZXNvdXJjZSkKKyAgICAgICAgaWYgKCFyZXF1ZXN0KQogICAgICAgICAgICAgcmV0dXJuOwog
Ci0gICAgICAgIHRoaXMuX3RvZ2dsZVZpZXdpbmdSZXNvdXJjZU1vZGUoKTsKKyAgICAgICAgdGhp
cy5fdG9nZ2xlVmlld2luZ1JlcXVlc3RNb2RlKCk7CiAKICAgICAgICAgaWYgKHRoaXMudmlzaWJs
ZVZpZXcpIHsKICAgICAgICAgICAgIHRoaXMudmlzaWJsZVZpZXcuZGV0YWNoKCk7CiAgICAgICAg
ICAgICBkZWxldGUgdGhpcy52aXNpYmxlVmlldzsKICAgICAgICAgfQogCi0gICAgICAgIHZhciB2
aWV3ID0gbmV3IFdlYkluc3BlY3Rvci5OZXR3b3JrSXRlbVZpZXcocmVzb3VyY2UpOworICAgICAg
ICB2YXIgdmlldyA9IG5ldyBXZWJJbnNwZWN0b3IuTmV0d29ya0l0ZW1WaWV3KHJlcXVlc3QpOwog
ICAgICAgICB2aWV3LnNob3codGhpcy5fdmlld3NDb250YWluZXJFbGVtZW50KTsKICAgICAgICAg
dGhpcy52aXNpYmxlVmlldyA9IHZpZXc7CiAgICAgfSwKIAotICAgIF9jbG9zZVZpc2libGVSZXNv
dXJjZTogZnVuY3Rpb24oKQorICAgIF9jbG9zZVZpc2libGVSZXF1ZXN0OiBmdW5jdGlvbigpCiAg
ICAgewogICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlU3R5bGVDbGFzcygidmlld2luZy1yZXNv
dXJjZSIpOwogCkBAIC0xMzk4LDI3ICsxMzk1LDI3IEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrUGFu
ZWwucHJvdG90eXBlID0gewogCiAgICAgX3RvZ2dsZUdyaWRNb2RlOiBmdW5jdGlvbigpCiAgICAg
ewotICAgICAgICBpZiAodGhpcy5fdmlld2luZ1Jlc291cmNlTW9kZSkgewotICAgICAgICAgICAg
dGhpcy5fdmlld2luZ1Jlc291cmNlTW9kZSA9IGZhbHNlOworICAgICAgICBpZiAodGhpcy5fdmll
d2luZ1JlcXVlc3RNb2RlKSB7CisgICAgICAgICAgICB0aGlzLl92aWV3aW5nUmVxdWVzdE1vZGUg
PSBmYWxzZTsKICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVTdHlsZUNsYXNzKCJ2aWV3
aW5nLXJlc291cmNlIik7CiAgICAgICAgICAgICB0aGlzLnNwbGl0Vmlldy5oaWRlTWFpbkVsZW1l
bnQoKTsKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuX25ldHdvcmtMb2dWaWV3LnN3aXRjaFRv
RGV0YWlsZWRWaWV3KCk7CiAgICAgICAgIHRoaXMuX25ldHdvcmtMb2dWaWV3LmFsbG93UG9wb3Zl
ciA9IHRydWU7Ci0gICAgICAgIHRoaXMuX25ldHdvcmtMb2dWaWV3LmFsbG93UmVzb3VyY2VTZWxl
Y3Rpb24gPSBmYWxzZTsKKyAgICAgICAgdGhpcy5fbmV0d29ya0xvZ1ZpZXcuX2FsbG93UmVxdWVz
dFNlbGVjdGlvbiA9IGZhbHNlOwogICAgIH0sCiAKLSAgICBfdG9nZ2xlVmlld2luZ1Jlc291cmNl
TW9kZTogZnVuY3Rpb24oKQorICAgIF90b2dnbGVWaWV3aW5nUmVxdWVzdE1vZGU6IGZ1bmN0aW9u
KCkKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLl92aWV3aW5nUmVzb3VyY2VNb2RlKQorICAgICAg
ICBpZiAodGhpcy5fdmlld2luZ1JlcXVlc3RNb2RlKQogICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB0aGlzLl92aWV3aW5nUmVzb3VyY2VNb2RlID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5fdmll
d2luZ1JlcXVlc3RNb2RlID0gdHJ1ZTsKIAogICAgICAgICB0aGlzLmVsZW1lbnQuYWRkU3R5bGVD
bGFzcygidmlld2luZy1yZXNvdXJjZSIpOwogICAgICAgICB0aGlzLnNwbGl0Vmlldy5zaG93TWFp
bkVsZW1lbnQoKTsKICAgICAgICAgdGhpcy5fbmV0d29ya0xvZ1ZpZXcuYWxsb3dQb3BvdmVyID0g
ZmFsc2U7Ci0gICAgICAgIHRoaXMuX25ldHdvcmtMb2dWaWV3LmFsbG93UmVzb3VyY2VTZWxlY3Rp
b24gPSB0cnVlOworICAgICAgICB0aGlzLl9uZXR3b3JrTG9nVmlldy5fYWxsb3dSZXF1ZXN0U2Vs
ZWN0aW9uID0gdHJ1ZTsKICAgICAgICAgdGhpcy5fbmV0d29ya0xvZ1ZpZXcuc3dpdGNoVG9Ccmll
ZlZpZXcoKTsKICAgICB9LAogCkBAIC0xNTIwLDIwICsxNTE3LDIwIEBAIFdlYkluc3BlY3Rvci5O
ZXR3b3JrVGltZUNhbGN1bGF0b3IgPSBmdW5jdGlvbihzdGFydEF0WmVybykKIH0KIAogV2ViSW5z
cGVjdG9yLk5ldHdvcmtUaW1lQ2FsY3VsYXRvci5wcm90b3R5cGUgPSB7Ci0gICAgY29tcHV0ZUJh
ckdyYXBoUGVyY2VudGFnZXM6IGZ1bmN0aW9uKHJlc291cmNlKQorICAgIGNvbXB1dGVCYXJHcmFw
aFBlcmNlbnRhZ2VzOiBmdW5jdGlvbihyZXF1ZXN0KQogICAgIHsKLSAgICAgICAgaWYgKHJlc291
cmNlLnN0YXJ0VGltZSAhPT0gLTEpCi0gICAgICAgICAgICB2YXIgc3RhcnQgPSAoKHJlc291cmNl
LnN0YXJ0VGltZSAtIHRoaXMubWluaW11bUJvdW5kYXJ5KSAvIHRoaXMuYm91bmRhcnlTcGFuKSAq
IDEwMDsKKyAgICAgICAgaWYgKHJlcXVlc3Quc3RhcnRUaW1lICE9PSAtMSkKKyAgICAgICAgICAg
IHZhciBzdGFydCA9ICgocmVxdWVzdC5zdGFydFRpbWUgLSB0aGlzLm1pbmltdW1Cb3VuZGFyeSkg
LyB0aGlzLmJvdW5kYXJ5U3BhbikgKiAxMDA7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHZh
ciBzdGFydCA9IDA7CiAKLSAgICAgICAgaWYgKHJlc291cmNlLnJlc3BvbnNlUmVjZWl2ZWRUaW1l
ICE9PSAtMSkKLSAgICAgICAgICAgIHZhciBtaWRkbGUgPSAoKHJlc291cmNlLnJlc3BvbnNlUmVj
ZWl2ZWRUaW1lIC0gdGhpcy5taW5pbXVtQm91bmRhcnkpIC8gdGhpcy5ib3VuZGFyeVNwYW4pICog
MTAwOworICAgICAgICBpZiAocmVxdWVzdC5yZXNwb25zZVJlY2VpdmVkVGltZSAhPT0gLTEpCisg
ICAgICAgICAgICB2YXIgbWlkZGxlID0gKChyZXF1ZXN0LnJlc3BvbnNlUmVjZWl2ZWRUaW1lIC0g
dGhpcy5taW5pbXVtQm91bmRhcnkpIC8gdGhpcy5ib3VuZGFyeVNwYW4pICogMTAwOwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICB2YXIgbWlkZGxlID0gKHRoaXMuc3RhcnRBdFplcm8gPyBzdGFy
dCA6IDEwMCk7CiAKLSAgICAgICAgaWYgKHJlc291cmNlLmVuZFRpbWUgIT09IC0xKQotICAgICAg
ICAgICAgdmFyIGVuZCA9ICgocmVzb3VyY2UuZW5kVGltZSAtIHRoaXMubWluaW11bUJvdW5kYXJ5
KSAvIHRoaXMuYm91bmRhcnlTcGFuKSAqIDEwMDsKKyAgICAgICAgaWYgKHJlcXVlc3QuZW5kVGlt
ZSAhPT0gLTEpCisgICAgICAgICAgICB2YXIgZW5kID0gKChyZXF1ZXN0LmVuZFRpbWUgLSB0aGlz
Lm1pbmltdW1Cb3VuZGFyeSkgLyB0aGlzLmJvdW5kYXJ5U3BhbikgKiAxMDA7CiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIHZhciBlbmQgPSAodGhpcy5zdGFydEF0WmVybyA/IG1pZGRsZSA6IDEw
MCk7CiAKQEAgLTE1NjksMzUgKzE1NjYsMzUgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtUaW1lQ2Fs
Y3VsYXRvci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9LAogCi0g
ICAgY29tcHV0ZUJhckdyYXBoTGFiZWxzOiBmdW5jdGlvbihyZXNvdXJjZSkKKyAgICBjb21wdXRl
QmFyR3JhcGhMYWJlbHM6IGZ1bmN0aW9uKHJlcXVlc3QpCiAgICAgewogICAgICAgICB2YXIgcmln
aHRMYWJlbCA9ICIiOwotICAgICAgICBpZiAocmVzb3VyY2UucmVzcG9uc2VSZWNlaXZlZFRpbWUg
IT09IC0xICYmIHJlc291cmNlLmVuZFRpbWUgIT09IC0xKQotICAgICAgICAgICAgcmlnaHRMYWJl
bCA9IHRoaXMuZm9ybWF0VGltZShyZXNvdXJjZS5lbmRUaW1lIC0gcmVzb3VyY2UucmVzcG9uc2VS
ZWNlaXZlZFRpbWUpOworICAgICAgICBpZiAocmVxdWVzdC5yZXNwb25zZVJlY2VpdmVkVGltZSAh
PT0gLTEgJiYgcmVxdWVzdC5lbmRUaW1lICE9PSAtMSkKKyAgICAgICAgICAgIHJpZ2h0TGFiZWwg
PSB0aGlzLmZvcm1hdFRpbWUocmVxdWVzdC5lbmRUaW1lIC0gcmVxdWVzdC5yZXNwb25zZVJlY2Vp
dmVkVGltZSk7CiAKLSAgICAgICAgdmFyIGhhc0xhdGVuY3kgPSByZXNvdXJjZS5sYXRlbmN5ID4g
MDsKKyAgICAgICAgdmFyIGhhc0xhdGVuY3kgPSByZXF1ZXN0LmxhdGVuY3kgPiAwOwogICAgICAg
ICBpZiAoaGFzTGF0ZW5jeSkKLSAgICAgICAgICAgIHZhciBsZWZ0TGFiZWwgPSB0aGlzLmZvcm1h
dFRpbWUocmVzb3VyY2UubGF0ZW5jeSk7CisgICAgICAgICAgICB2YXIgbGVmdExhYmVsID0gdGhp
cy5mb3JtYXRUaW1lKHJlcXVlc3QubGF0ZW5jeSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IHZhciBsZWZ0TGFiZWwgPSByaWdodExhYmVsOwogCi0gICAgICAgIGlmIChyZXNvdXJjZS50aW1p
bmcpCisgICAgICAgIGlmIChyZXF1ZXN0LnRpbWluZykKICAgICAgICAgICAgIHJldHVybiB7bGVm
dDogbGVmdExhYmVsLCByaWdodDogcmlnaHRMYWJlbH07CiAKICAgICAgICAgaWYgKGhhc0xhdGVu
Y3kgJiYgcmlnaHRMYWJlbCkgewotICAgICAgICAgICAgdmFyIHRvdGFsID0gdGhpcy5mb3JtYXRU
aW1lKHJlc291cmNlLmR1cmF0aW9uKTsKKyAgICAgICAgICAgIHZhciB0b3RhbCA9IHRoaXMuZm9y
bWF0VGltZShyZXF1ZXN0LmR1cmF0aW9uKTsKICAgICAgICAgICAgIHZhciB0b29sdGlwID0gV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCIlcyBsYXRlbmN5LCAlcyBkb3dubG9hZCAoJXMgdG90YWwpIiwg
bGVmdExhYmVsLCByaWdodExhYmVsLCB0b3RhbCk7CiAgICAgICAgIH0gZWxzZSBpZiAoaGFzTGF0
ZW5jeSkKICAgICAgICAgICAgIHZhciB0b29sdGlwID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIl
cyBsYXRlbmN5IiwgbGVmdExhYmVsKTsKICAgICAgICAgZWxzZSBpZiAocmlnaHRMYWJlbCkKICAg
ICAgICAgICAgIHZhciB0b29sdGlwID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIlcyBkb3dubG9h
ZCIsIHJpZ2h0TGFiZWwpOwogCi0gICAgICAgIGlmIChyZXNvdXJjZS5jYWNoZWQpCisgICAgICAg
IGlmIChyZXF1ZXN0LmNhY2hlZCkKICAgICAgICAgICAgIHRvb2x0aXAgPSBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIiVzIChmcm9tIGNhY2hlKSIsIHRvb2x0aXApOwogICAgICAgICByZXR1cm4ge2xl
ZnQ6IGxlZnRMYWJlbCwgcmlnaHQ6IHJpZ2h0TGFiZWwsIHRvb2x0aXA6IHRvb2x0aXB9OwogICAg
IH0sCiAKLSAgICB1cGRhdGVCb3VuZGFyaWVzOiBmdW5jdGlvbihyZXNvdXJjZSkKKyAgICB1cGRh
dGVCb3VuZGFyaWVzOiBmdW5jdGlvbihyZXF1ZXN0KQogICAgIHsKICAgICAgICAgdmFyIGRpZENo
YW5nZSA9IGZhbHNlOwogCkBAIC0xNjA1LDE0ICsxNjAyLDE0IEBAIFdlYkluc3BlY3Rvci5OZXR3
b3JrVGltZUNhbGN1bGF0b3IucHJvdG90eXBlID0gewogICAgICAgICBpZiAodGhpcy5zdGFydEF0
WmVybykKICAgICAgICAgICAgIGxvd2VyQm91bmQgPSAwOwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBsb3dlckJvdW5kID0gdGhpcy5fbG93ZXJCb3VuZChyZXNvdXJjZSk7CisgICAgICAgICAg
ICBsb3dlckJvdW5kID0gdGhpcy5fbG93ZXJCb3VuZChyZXF1ZXN0KTsKIAogICAgICAgICBpZiAo
bG93ZXJCb3VuZCAhPT0gLTEgJiYgKHR5cGVvZiB0aGlzLm1pbmltdW1Cb3VuZGFyeSA9PT0gInVu
ZGVmaW5lZCIgfHwgbG93ZXJCb3VuZCA8IHRoaXMubWluaW11bUJvdW5kYXJ5KSkgewogICAgICAg
ICAgICAgdGhpcy5taW5pbXVtQm91bmRhcnkgPSBsb3dlckJvdW5kOwogICAgICAgICAgICAgZGlk
Q2hhbmdlID0gdHJ1ZTsKICAgICAgICAgfQogCi0gICAgICAgIHZhciB1cHBlckJvdW5kID0gdGhp
cy5fdXBwZXJCb3VuZChyZXNvdXJjZSk7CisgICAgICAgIHZhciB1cHBlckJvdW5kID0gdGhpcy5f
dXBwZXJCb3VuZChyZXF1ZXN0KTsKICAgICAgICAgaWYgKHVwcGVyQm91bmQgIT09IC0xICYmICh0
eXBlb2YgdGhpcy5tYXhpbXVtQm91bmRhcnkgPT09ICJ1bmRlZmluZWQiIHx8IHVwcGVyQm91bmQg
PiB0aGlzLm1heGltdW1Cb3VuZGFyeSkpIHsKICAgICAgICAgICAgIHRoaXMubWF4aW11bUJvdW5k
YXJ5ID0gdXBwZXJCb3VuZDsKICAgICAgICAgICAgIGRpZENoYW5nZSA9IHRydWU7CkBAIC0xNjI2
LDEyICsxNjIzLDEyIEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrVGltZUNhbGN1bGF0b3IucHJvdG90
eXBlID0gewogICAgICAgICByZXR1cm4gTnVtYmVyLnNlY29uZHNUb1N0cmluZyh2YWx1ZSk7CiAg
ICAgfSwKIAotICAgIF9sb3dlckJvdW5kOiBmdW5jdGlvbihyZXNvdXJjZSkKKyAgICBfbG93ZXJC
b3VuZDogZnVuY3Rpb24ocmVxdWVzdCkKICAgICB7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0s
CiAKLSAgICBfdXBwZXJCb3VuZDogZnVuY3Rpb24ocmVzb3VyY2UpCisgICAgX3VwcGVyQm91bmQ6
IGZ1bmN0aW9uKHJlcXVlc3QpCiAgICAgewogICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC0x
NjU0LDE0ICsxNjUxLDE0IEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrVHJhbnNmZXJUaW1lQ2FsY3Vs
YXRvci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBOdW1iZXIuc2Vjb25kc1RvU3RyaW5n
KHZhbHVlKTsKICAgICB9LAogCi0gICAgX2xvd2VyQm91bmQ6IGZ1bmN0aW9uKHJlc291cmNlKQor
ICAgIF9sb3dlckJvdW5kOiBmdW5jdGlvbihyZXF1ZXN0KQogICAgIHsKLSAgICAgICAgcmV0dXJu
IHJlc291cmNlLnN0YXJ0VGltZTsKKyAgICAgICAgcmV0dXJuIHJlcXVlc3Quc3RhcnRUaW1lOwog
ICAgIH0sCiAKLSAgICBfdXBwZXJCb3VuZDogZnVuY3Rpb24ocmVzb3VyY2UpCisgICAgX3VwcGVy
Qm91bmQ6IGZ1bmN0aW9uKHJlcXVlc3QpCiAgICAgewotICAgICAgICByZXR1cm4gcmVzb3VyY2Uu
ZW5kVGltZTsKKyAgICAgICAgcmV0dXJuIHJlcXVlc3QuZW5kVGltZTsKICAgICB9CiB9CiAKQEAg
LTE2ODIsOSArMTY3OSw5IEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrVHJhbnNmZXJEdXJhdGlvbkNh
bGN1bGF0b3IucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gTnVtYmVyLnNlY29uZHNUb1N0
cmluZyh2YWx1ZSk7CiAgICAgfSwKIAotICAgIF91cHBlckJvdW5kOiBmdW5jdGlvbihyZXNvdXJj
ZSkKKyAgICBfdXBwZXJCb3VuZDogZnVuY3Rpb24ocmVxdWVzdCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiByZXNvdXJjZS5kdXJhdGlvbjsKKyAgICAgICAgcmV0dXJuIHJlcXVlc3QuZHVyYXRpb247
CiAgICAgfQogfQogCkBAIC0xNjk0LDExICsxNjkxLDExIEBAIFdlYkluc3BlY3Rvci5OZXR3b3Jr
VHJhbnNmZXJEdXJhdGlvbkNhbGN1bGF0b3IucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3Bl
Y3RvCiAgKiBAY29uc3RydWN0b3IKICAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuRGF0YUdyaWRO
b2RlfQogICovCi1XZWJJbnNwZWN0b3IuTmV0d29ya0RhdGFHcmlkTm9kZSA9IGZ1bmN0aW9uKHBh
cmVudFZpZXcsIHJlc291cmNlKQorV2ViSW5zcGVjdG9yLk5ldHdvcmtEYXRhR3JpZE5vZGUgPSBm
dW5jdGlvbihwYXJlbnRWaWV3LCByZXF1ZXN0KQogewogICAgIFdlYkluc3BlY3Rvci5EYXRhR3Jp
ZE5vZGUuY2FsbCh0aGlzLCB7fSk7CiAgICAgdGhpcy5fcGFyZW50VmlldyA9IHBhcmVudFZpZXc7
Ci0gICAgdGhpcy5fcmVzb3VyY2UgPSByZXNvdXJjZTsKKyAgICB0aGlzLl9yZXF1ZXN0ID0gcmVx
dWVzdDsKIH0KIAogV2ViSW5zcGVjdG9yLk5ldHdvcmtEYXRhR3JpZE5vZGUucHJvdG90eXBlID0g
ewpAQCAtMTcyMywxMiArMTcyMCwxMiBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya0RhdGFHcmlkTm9k
ZS5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX3BhcmVudFZpZXcuX2hp
ZGRlbkNhdGVnb3JpZXMuYWxsKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBy
ZXR1cm4gdGhpcy5fcmVzb3VyY2UudHlwZS5uYW1lKCkgaW4gdGhpcy5fcGFyZW50Vmlldy5faGlk
ZGVuQ2F0ZWdvcmllczsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3JlcXVlc3QudHlwZS5uYW1lKCkg
aW4gdGhpcy5fcGFyZW50Vmlldy5faGlkZGVuQ2F0ZWdvcmllczsKICAgICB9LAogCiAgICAgc2Vs
ZWN0OiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB0aGlzLl9wYXJlbnRWaWV3LmRpc3BhdGNo
RXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuTmV0d29ya0xvZ1ZpZXcuRXZlbnRUeXBlcy5S
ZXNvdXJjZVNlbGVjdGVkLCB0aGlzLl9yZXNvdXJjZSk7CisgICAgICAgIHRoaXMuX3BhcmVudFZp
ZXcuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5OZXR3b3JrTG9nVmlldy5F
dmVudFR5cGVzLlJlcXVlc3RTZWxlY3RlZCwgdGhpcy5fcmVxdWVzdCk7CiAgICAgICAgIFdlYklu
c3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlLnNlbGVjdC5hcHBseSh0aGlzLCBhcmd1bWVu
dHMpOwogICAgIH0sCiAKQEAgLTE3NDIsMTIgKzE3MzksMTIgQEAgV2ViSW5zcGVjdG9yLk5ldHdv
cmtEYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogCiAgICAgX29wZW5Jbk5ld1RhYjogZnVuY3Rp
b24oKQogICAgIHsKLSAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0Lm9wZW5Jbk5ld1RhYih0
aGlzLl9yZXNvdXJjZS51cmwpOworICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3Qub3Blbklu
TmV3VGFiKHRoaXMuX3JlcXVlc3QudXJsKTsKICAgICB9LAogCiAgICAgZ2V0IHNlbGVjdGFibGUo
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3BhcmVudFZpZXcuYWxsb3dSZXNvdXJjZVNl
bGVjdGlvbiAmJiAhdGhpcy5pc0ZpbHRlcmVkT3V0KCk7CisgICAgICAgIHJldHVybiB0aGlzLl9w
YXJlbnRWaWV3Ll9hbGxvd1JlcXVlc3RTZWxlY3Rpb24gJiYgIXRoaXMuaXNGaWx0ZXJlZE91dCgp
OwogICAgIH0sCiAKICAgICBfY3JlYXRlRGl2SW5URDogZnVuY3Rpb24oY29sdW1uSWRlbnRpZmll
cikKQEAgLTE3NjgsNyArMTc2NSw3IEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrRGF0YUdyaWROb2Rl
LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fYmFyQXJlYUVsZW1lbnQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgLy8gICAgdGhpcy5fYmFyQXJlYUVsZW1lbnQu
Y2xhc3NOYW1lID0gIm5ldHdvcmstZ3JhcGgtYmFyLWFyZWEgaGlkZGVuIjsKICAgICAgICAgdGhp
cy5fYmFyQXJlYUVsZW1lbnQuY2xhc3NOYW1lID0gIm5ldHdvcmstZ3JhcGgtYmFyLWFyZWEiOwot
ICAgICAgICB0aGlzLl9iYXJBcmVhRWxlbWVudC5yZXNvdXJjZSA9IHRoaXMuX3Jlc291cmNlOwor
ICAgICAgICB0aGlzLl9iYXJBcmVhRWxlbWVudC5yZXF1ZXN0ID0gdGhpcy5fcmVxdWVzdDsKICAg
ICAgICAgdGhpcy5fZ3JhcGhFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2JhckFyZWFFbGVtZW50
KTsKIAogICAgICAgICB0aGlzLl9iYXJMZWZ0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImRpdiIpOwpAQCAtMTc5NiwxMSArMTc5MywxMSBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya0Rh
dGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3RpbWVsaW5lQ2VsbC5hcHBl
bmRDaGlsZCh0aGlzLl9ncmFwaEVsZW1lbnQpOwogICAgIH0sCiAKLSAgICByZWZyZXNoUmVzb3Vy
Y2U6IGZ1bmN0aW9uKCkKKyAgICByZWZyZXNoUmVxdWVzdDogZnVuY3Rpb24oKQogICAgIHsKICAg
ICAgICAgdGhpcy5fcmVmcmVzaE5hbWVDZWxsKCk7CiAKLSAgICAgICAgdGhpcy5fbWV0aG9kQ2Vs
bC5zZXRUZXh0QW5kVGl0bGUodGhpcy5fcmVzb3VyY2UucmVxdWVzdE1ldGhvZCk7CisgICAgICAg
IHRoaXMuX21ldGhvZENlbGwuc2V0VGV4dEFuZFRpdGxlKHRoaXMuX3JlcXVlc3QucmVxdWVzdE1l
dGhvZCk7CiAKICAgICAgICAgdGhpcy5fcmVmcmVzaFN0YXR1c0NlbGwoKTsKICAgICAgICAgdGhp
cy5fcmVmcmVzaFR5cGVDZWxsKCk7CkBAIC0xODA5LDEzICsxODA2LDEzIEBAIFdlYkluc3BlY3Rv
ci5OZXR3b3JrRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fcmVmcmVz
aFNpemVDZWxsKCk7CiAgICAgICAgIHRoaXMuX3JlZnJlc2hUaW1lQ2VsbCgpOwogCi0gICAgICAg
IGlmICh0aGlzLl9yZXNvdXJjZS5jYWNoZWQpCisgICAgICAgIGlmICh0aGlzLl9yZXF1ZXN0LmNh
Y2hlZCkKICAgICAgICAgICAgIHRoaXMuX2dyYXBoRWxlbWVudC5hZGRTdHlsZUNsYXNzKCJyZXNv
dXJjZS1jYWNoZWQiKTsKIAogICAgICAgICB0aGlzLl9lbGVtZW50LmFkZFN0eWxlQ2xhc3MoIm5l
dHdvcmstaXRlbSIpOwotICAgICAgICBpZiAoIXRoaXMuX2VsZW1lbnQuaGFzU3R5bGVDbGFzcygi
bmV0d29yay10eXBlLSIgKyB0aGlzLl9yZXNvdXJjZS50eXBlLm5hbWUoKSkpIHsKKyAgICAgICAg
aWYgKCF0aGlzLl9lbGVtZW50Lmhhc1N0eWxlQ2xhc3MoIm5ldHdvcmstdHlwZS0iICsgdGhpcy5f
cmVxdWVzdC50eXBlLm5hbWUoKSkpIHsKICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQucmVtb3Zl
TWF0Y2hpbmdTdHlsZUNsYXNzZXMoIm5ldHdvcmstdHlwZS1cXHcrIik7Ci0gICAgICAgICAgICB0
aGlzLl9lbGVtZW50LmFkZFN0eWxlQ2xhc3MoIm5ldHdvcmstdHlwZS0iICsgdGhpcy5fcmVzb3Vy
Y2UudHlwZS5uYW1lKCkpOworICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5hZGRTdHlsZUNsYXNz
KCJuZXR3b3JrLXR5cGUtIiArIHRoaXMuX3JlcXVlc3QudHlwZS5uYW1lKCkpOwogICAgICAgICB9
CiAgICAgfSwKIApAQCAtMTgyMywxMCArMTgyMCwxMCBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya0Rh
dGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICB0aGlzLl9uYW1lQ2VsbC5y
ZW1vdmVDaGlsZHJlbigpOwogCi0gICAgICAgIGlmICh0aGlzLl9yZXNvdXJjZS50eXBlID09PSBX
ZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5JbWFnZSkgeworICAgICAgICBpZiAodGhpcy5fcmVx
dWVzdC50eXBlID09PSBXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5JbWFnZSkgewogICAgICAg
ICAgICAgdmFyIHByZXZpZXdJbWFnZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpOwog
ICAgICAgICAgICAgcHJldmlld0ltYWdlLmNsYXNzTmFtZSA9ICJpbWFnZS1uZXR3b3JrLWljb24t
cHJldmlldyI7Ci0gICAgICAgICAgICB0aGlzLl9yZXNvdXJjZS5wb3B1bGF0ZUltYWdlU291cmNl
KHByZXZpZXdJbWFnZSk7CisgICAgICAgICAgICB0aGlzLl9yZXF1ZXN0LnBvcHVsYXRlSW1hZ2VT
b3VyY2UocHJldmlld0ltYWdlKTsKIAogICAgICAgICAgICAgdmFyIGljb25FbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgICAgICBpY29uRWxlbWVudC5jbGFz
c05hbWUgPSAiaWNvbiI7CkBAIC0xODM5LDIwICsxODM2LDIwIEBAIFdlYkluc3BlY3Rvci5OZXR3
b3JrRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fbmFtZUNlbGwuYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGhpcy5fZmlsZU5hbWUoKSkpOwogCiAK
LSAgICAgICAgdmFyIHN1YnRpdGxlID0gdGhpcy5fcmVzb3VyY2UuZGlzcGxheURvbWFpbjsKKyAg
ICAgICAgdmFyIHN1YnRpdGxlID0gdGhpcy5fcmVxdWVzdC5kaXNwbGF5RG9tYWluOwogCi0gICAg
ICAgIGlmICh0aGlzLl9yZXNvdXJjZS5wYXRoKQotICAgICAgICAgICAgc3VidGl0bGUgKz0gdGhp
cy5fcmVzb3VyY2UuZm9sZGVyOworICAgICAgICBpZiAodGhpcy5fcmVxdWVzdC5wYXRoKQorICAg
ICAgICAgICAgc3VidGl0bGUgKz0gdGhpcy5fcmVxdWVzdC5mb2xkZXI7CiAKICAgICAgICAgdGhp
cy5fYXBwZW5kU3VidGl0bGUodGhpcy5fbmFtZUNlbGwsIHN1YnRpdGxlKTsKLSAgICAgICAgdGhp
cy5fbmFtZUNlbGwudGl0bGUgPSB0aGlzLl9yZXNvdXJjZS51cmw7CisgICAgICAgIHRoaXMuX25h
bWVDZWxsLnRpdGxlID0gdGhpcy5fcmVxdWVzdC51cmw7CiAgICAgfSwKIAogICAgIF9maWxlTmFt
ZTogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdmFyIGZpbGVOYW1lID0gdGhpcy5fcmVzb3Vy
Y2UuZGlzcGxheU5hbWU7Ci0gICAgICAgIGlmICh0aGlzLl9yZXNvdXJjZS5xdWVyeVN0cmluZykK
LSAgICAgICAgICAgIGZpbGVOYW1lICs9ICI/IiArIHRoaXMuX3Jlc291cmNlLnF1ZXJ5U3RyaW5n
OworICAgICAgICB2YXIgZmlsZU5hbWUgPSB0aGlzLl9yZXF1ZXN0LmRpc3BsYXlOYW1lOworICAg
ICAgICBpZiAodGhpcy5fcmVxdWVzdC5xdWVyeVN0cmluZykKKyAgICAgICAgICAgIGZpbGVOYW1l
ICs9ICI/IiArIHRoaXMuX3JlcXVlc3QucXVlcnlTdHJpbmc7CiAgICAgICAgIHJldHVybiBmaWxl
TmFtZTsKICAgICB9LAogCkBAIC0xODYwLDggKzE4NTcsOCBAQCBXZWJJbnNwZWN0b3IuTmV0d29y
a0RhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICB0aGlzLl9zdGF0dXND
ZWxsLnJlbW92ZUNoaWxkcmVuKCk7CiAKLSAgICAgICAgaWYgKHRoaXMuX3Jlc291cmNlLmZhaWxl
ZCkgewotICAgICAgICAgICAgaWYgKHRoaXMuX3Jlc291cmNlLmNhbmNlbGVkKQorICAgICAgICBp
ZiAodGhpcy5fcmVxdWVzdC5mYWlsZWQpIHsKKyAgICAgICAgICAgIGlmICh0aGlzLl9yZXF1ZXN0
LmNhbmNlbGVkKQogICAgICAgICAgICAgICAgIHRoaXMuX3N0YXR1c0NlbGwuc2V0VGV4dEFuZFRp
dGxlKFdlYkluc3BlY3Rvci5VSVN0cmluZygiKGNhbmNlbGVkKSIpKTsKICAgICAgICAgICAgIGVs
c2UKICAgICAgICAgICAgICAgICB0aGlzLl9zdGF0dXNDZWxsLnNldFRleHRBbmRUaXRsZShXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIihmYWlsZWQpIikpOwpAQCAtMTg3MywxOCArMTg3MCwxOCBAQCBX
ZWJJbnNwZWN0b3IuTmV0d29ya0RhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRo
aXMuX3N0YXR1c0NlbGwucmVtb3ZlU3R5bGVDbGFzcygibmV0d29yay1kaW0tY2VsbCIpOwogICAg
ICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlU3R5bGVDbGFzcygibmV0d29yay1lcnJvci1yb3ciKTsK
IAotICAgICAgICBpZiAodGhpcy5fcmVzb3VyY2Uuc3RhdHVzQ29kZSkgewotICAgICAgICAgICAg
dGhpcy5fc3RhdHVzQ2VsbC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0aGlz
Ll9yZXNvdXJjZS5zdGF0dXNDb2RlKSk7Ci0gICAgICAgICAgICB0aGlzLl9hcHBlbmRTdWJ0aXRs
ZSh0aGlzLl9zdGF0dXNDZWxsLCB0aGlzLl9yZXNvdXJjZS5zdGF0dXNUZXh0KTsKLSAgICAgICAg
ICAgIHRoaXMuX3N0YXR1c0NlbGwudGl0bGUgPSB0aGlzLl9yZXNvdXJjZS5zdGF0dXNDb2RlICsg
IiAiICsgdGhpcy5fcmVzb3VyY2Uuc3RhdHVzVGV4dDsKLSAgICAgICAgICAgIGlmICh0aGlzLl9y
ZXNvdXJjZS5zdGF0dXNDb2RlID49IDQwMCkKKyAgICAgICAgaWYgKHRoaXMuX3JlcXVlc3Quc3Rh
dHVzQ29kZSkgeworICAgICAgICAgICAgdGhpcy5fc3RhdHVzQ2VsbC5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZSh0aGlzLl9yZXF1ZXN0LnN0YXR1c0NvZGUpKTsKKyAgICAgICAg
ICAgIHRoaXMuX2FwcGVuZFN1YnRpdGxlKHRoaXMuX3N0YXR1c0NlbGwsIHRoaXMuX3JlcXVlc3Qu
c3RhdHVzVGV4dCk7CisgICAgICAgICAgICB0aGlzLl9zdGF0dXNDZWxsLnRpdGxlID0gdGhpcy5f
cmVxdWVzdC5zdGF0dXNDb2RlICsgIiAiICsgdGhpcy5fcmVxdWVzdC5zdGF0dXNUZXh0OworICAg
ICAgICAgICAgaWYgKHRoaXMuX3JlcXVlc3Quc3RhdHVzQ29kZSA+PSA0MDApCiAgICAgICAgICAg
ICAgICAgdGhpcy5lbGVtZW50LmFkZFN0eWxlQ2xhc3MoIm5ldHdvcmstZXJyb3Itcm93Iik7Ci0g
ICAgICAgICAgICBpZiAodGhpcy5fcmVzb3VyY2UuY2FjaGVkKQorICAgICAgICAgICAgaWYgKHRo
aXMuX3JlcXVlc3QuY2FjaGVkKQogICAgICAgICAgICAgICAgIHRoaXMuX3N0YXR1c0NlbGwuYWRk
U3R5bGVDbGFzcygibmV0d29yay1kaW0tY2VsbCIpOwogICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgaWYgKCF0aGlzLl9yZXNvdXJjZS5pc0h0dHBGYW1pbHkoKSAmJiB0aGlzLl9yZXNvdXJj
ZS5maW5pc2hlZCkKKyAgICAgICAgICAgIGlmICghdGhpcy5fcmVxdWVzdC5pc0h0dHBGYW1pbHko
KSAmJiB0aGlzLl9yZXF1ZXN0LmZpbmlzaGVkKQogICAgICAgICAgICAgICAgIHRoaXMuX3N0YXR1
c0NlbGwuc2V0VGV4dEFuZFRpdGxlKFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3VjY2VzcyIpKTsK
LSAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuX3Jlc291cmNlLmlzUGluZ1JlcXVlc3QoKSkKKyAg
ICAgICAgICAgIGVsc2UgaWYgKHRoaXMuX3JlcXVlc3QuaXNQaW5nUmVxdWVzdCgpKQogICAgICAg
ICAgICAgICAgIHRoaXMuX3N0YXR1c0NlbGwuc2V0VGV4dEFuZFRpdGxlKFdlYkluc3BlY3Rvci5V
SVN0cmluZygiKHBpbmcpIikpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHRo
aXMuX3N0YXR1c0NlbGwuc2V0VGV4dEFuZFRpdGxlKFdlYkluc3BlY3Rvci5VSVN0cmluZygiKHBl
bmRpbmcpIikpOwpAQCAtMTg5NCwxMiArMTg5MSwxMiBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya0Rh
dGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAKICAgICBfcmVmcmVzaFR5cGVDZWxsOiBmdW5jdGlv
bigpCiAgICAgewotICAgICAgICBpZiAodGhpcy5fcmVzb3VyY2UubWltZVR5cGUpIHsKKyAgICAg
ICAgaWYgKHRoaXMuX3JlcXVlc3QubWltZVR5cGUpIHsKICAgICAgICAgICAgIHRoaXMuX3R5cGVD
ZWxsLnJlbW92ZVN0eWxlQ2xhc3MoIm5ldHdvcmstZGltLWNlbGwiKTsKLSAgICAgICAgICAgIHRo
aXMuX3R5cGVDZWxsLnNldFRleHRBbmRUaXRsZSh0aGlzLl9yZXNvdXJjZS5taW1lVHlwZSk7Ci0g
ICAgICAgIH0gZWxzZSBpZiAodGhpcy5fcmVzb3VyY2UuaXNQaW5nUmVxdWVzdCgpKSB7CisgICAg
ICAgICAgICB0aGlzLl90eXBlQ2VsbC5zZXRUZXh0QW5kVGl0bGUodGhpcy5fcmVxdWVzdC5taW1l
VHlwZSk7CisgICAgICAgIH0gZWxzZSBpZiAodGhpcy5fcmVxdWVzdC5pc1BpbmdSZXF1ZXN0KCkp
IHsKICAgICAgICAgICAgIHRoaXMuX3R5cGVDZWxsLnJlbW92ZVN0eWxlQ2xhc3MoIm5ldHdvcmst
ZGltLWNlbGwiKTsKLSAgICAgICAgICAgIHRoaXMuX3R5cGVDZWxsLnNldFRleHRBbmRUaXRsZSh0
aGlzLl9yZXNvdXJjZS5yZXF1ZXN0Q29udGVudFR5cGUoKSk7CisgICAgICAgICAgICB0aGlzLl90
eXBlQ2VsbC5zZXRUZXh0QW5kVGl0bGUodGhpcy5fcmVxdWVzdC5yZXF1ZXN0Q29udGVudFR5cGUo
KSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICB0aGlzLl90eXBlQ2VsbC5hZGRTdHls
ZUNsYXNzKCJuZXR3b3JrLWRpbS1jZWxsIik7CiAgICAgICAgICAgICB0aGlzLl90eXBlQ2VsbC5z
ZXRUZXh0QW5kVGl0bGUoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQZW5kaW5nIikpOwpAQCAtMTkw
OCwxOCArMTkwNSwxOCBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya0RhdGFHcmlkTm9kZS5wcm90b3R5
cGUgPSB7CiAKICAgICBfcmVmcmVzaEluaXRpYXRvckNlbGw6IGZ1bmN0aW9uKCkKICAgICB7Ci0g
ICAgICAgIHZhciBpbml0aWF0b3IgPSB0aGlzLl9yZXNvdXJjZS5pbml0aWF0b3I7Ci0gICAgICAg
IGlmICgoaW5pdGlhdG9yICYmIGluaXRpYXRvci50eXBlICE9PSAib3RoZXIiKSB8fCB0aGlzLl9y
ZXNvdXJjZS5yZWRpcmVjdFNvdXJjZSkgeworICAgICAgICB2YXIgaW5pdGlhdG9yID0gdGhpcy5f
cmVxdWVzdC5pbml0aWF0b3I7CisgICAgICAgIGlmICgoaW5pdGlhdG9yICYmIGluaXRpYXRvci50
eXBlICE9PSAib3RoZXIiKSB8fCB0aGlzLl9yZXF1ZXN0LnJlZGlyZWN0U291cmNlKSB7CiAgICAg
ICAgICAgICB0aGlzLl9pbml0aWF0b3JDZWxsLnJlbW92ZVN0eWxlQ2xhc3MoIm5ldHdvcmstZGlt
LWNlbGwiKTsKICAgICAgICAgICAgIHRoaXMuX2luaXRpYXRvckNlbGwucmVtb3ZlQ2hpbGRyZW4o
KTsKLSAgICAgICAgICAgIGlmICh0aGlzLl9yZXNvdXJjZS5yZWRpcmVjdFNvdXJjZSkgewotICAg
ICAgICAgICAgICAgIHZhciByZWRpcmVjdFNvdXJjZSA9IHRoaXMuX3Jlc291cmNlLnJlZGlyZWN0
U291cmNlOworICAgICAgICAgICAgaWYgKHRoaXMuX3JlcXVlc3QucmVkaXJlY3RTb3VyY2UpIHsK
KyAgICAgICAgICAgICAgICB2YXIgcmVkaXJlY3RTb3VyY2UgPSB0aGlzLl9yZXF1ZXN0LnJlZGly
ZWN0U291cmNlOwogICAgICAgICAgICAgICAgIHRoaXMuX2luaXRpYXRvckNlbGwudGl0bGUgPSBy
ZWRpcmVjdFNvdXJjZS51cmw7CiAgICAgICAgICAgICAgICAgdGhpcy5faW5pdGlhdG9yQ2VsbC5h
cHBlbmRDaGlsZChXZWJJbnNwZWN0b3IubGlua2lmeVJlcXVlc3RBc05vZGUocmVkaXJlY3RTb3Vy
Y2UpKTsKICAgICAgICAgICAgICAgICB0aGlzLl9hcHBlbmRTdWJ0aXRsZSh0aGlzLl9pbml0aWF0
b3JDZWxsLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlZGlyZWN0IikpOwogICAgICAgICAgICAg
fSBlbHNlIGlmIChpbml0aWF0b3IudHlwZSA9PT0gInNjcmlwdCIpIHsKICAgICAgICAgICAgICAg
ICB2YXIgdG9wRnJhbWUgPSBpbml0aWF0b3Iuc3RhY2tUcmFjZVswXTsKLSAgICAgICAgICAgICAg
ICAvLyBUaGlzIGNvdWxkIGhhcHBlbiB3aGVuIHJlc291cmNlIGxvYWRpbmcgd2FzIHRyaWdnZXJl
ZCBieSBjb25zb2xlLgorICAgICAgICAgICAgICAgIC8vIFRoaXMgY291bGQgaGFwcGVuIHdoZW4g
cmVxdWVzdCBsb2FkaW5nIHdhcyB0cmlnZ2VyZWQgYnkgY29uc29sZS4KICAgICAgICAgICAgICAg
ICBpZiAoIXRvcEZyYW1lLnVybCkgewogICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbml0aWF0
b3JDZWxsLmFkZFN0eWxlQ2xhc3MoIm5ldHdvcmstZGltLWNlbGwiKTsKICAgICAgICAgICAgICAg
ICAgICAgdGhpcy5faW5pdGlhdG9yQ2VsbC5zZXRUZXh0QW5kVGl0bGUoV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJPdGhlciIpKTsKQEAgLTE5NDIsMTIgKzE5MzksMTIgQEAgV2ViSW5zcGVjdG9yLk5l
dHdvcmtEYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogCiAgICAgX3JlZnJlc2hTaXplQ2VsbDog
ZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX3Jlc291cmNlLmNhY2hlZCkgewor
ICAgICAgICBpZiAodGhpcy5fcmVxdWVzdC5jYWNoZWQpIHsKICAgICAgICAgICAgIHRoaXMuX3Np
emVDZWxsLnNldFRleHRBbmRUaXRsZShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIihmcm9tIGNhY2hl
KSIpKTsKICAgICAgICAgICAgIHRoaXMuX3NpemVDZWxsLmFkZFN0eWxlQ2xhc3MoIm5ldHdvcmst
ZGltLWNlbGwiKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHZhciByZXNvdXJjZVNp
emUgPSB0eXBlb2YgdGhpcy5fcmVzb3VyY2UucmVzb3VyY2VTaXplID09PSAibnVtYmVyIiA/IE51
bWJlci5ieXRlc1RvU3RyaW5nKHRoaXMuX3Jlc291cmNlLnJlc291cmNlU2l6ZSkgOiAiPyI7Ci0g
ICAgICAgICAgICB2YXIgdHJhbnNmZXJTaXplID0gdHlwZW9mIHRoaXMuX3Jlc291cmNlLnRyYW5z
ZmVyU2l6ZSA9PT0gIm51bWJlciIgPyBOdW1iZXIuYnl0ZXNUb1N0cmluZyh0aGlzLl9yZXNvdXJj
ZS50cmFuc2ZlclNpemUpIDogIj8iOworICAgICAgICAgICAgdmFyIHJlc291cmNlU2l6ZSA9IHR5
cGVvZiB0aGlzLl9yZXF1ZXN0LnJlc291cmNlU2l6ZSA9PT0gIm51bWJlciIgPyBOdW1iZXIuYnl0
ZXNUb1N0cmluZyh0aGlzLl9yZXF1ZXN0LnJlc291cmNlU2l6ZSkgOiAiPyI7CisgICAgICAgICAg
ICB2YXIgdHJhbnNmZXJTaXplID0gdHlwZW9mIHRoaXMuX3JlcXVlc3QudHJhbnNmZXJTaXplID09
PSAibnVtYmVyIiA/IE51bWJlci5ieXRlc1RvU3RyaW5nKHRoaXMuX3JlcXVlc3QudHJhbnNmZXJT
aXplKSA6ICI/IjsKICAgICAgICAgICAgIHRoaXMuX3NpemVDZWxsLnNldFRleHRBbmRUaXRsZSh0
cmFuc2ZlclNpemUpOwogICAgICAgICAgICAgdGhpcy5fc2l6ZUNlbGwucmVtb3ZlU3R5bGVDbGFz
cygibmV0d29yay1kaW0tY2VsbCIpOwogICAgICAgICAgICAgdGhpcy5fYXBwZW5kU3VidGl0bGUo
dGhpcy5fc2l6ZUNlbGwsIHJlc291cmNlU2l6ZSk7CkBAIC0xOTU2LDEwICsxOTUzLDEwIEBAIFdl
Ykluc3BlY3Rvci5OZXR3b3JrRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKIAogICAgIF9yZWZy
ZXNoVGltZUNlbGw6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9yZXNvdXJj
ZS5kdXJhdGlvbiA+IDApIHsKKyAgICAgICAgaWYgKHRoaXMuX3JlcXVlc3QuZHVyYXRpb24gPiAw
KSB7CiAgICAgICAgICAgICB0aGlzLl90aW1lQ2VsbC5yZW1vdmVTdHlsZUNsYXNzKCJuZXR3b3Jr
LWRpbS1jZWxsIik7Ci0gICAgICAgICAgICB0aGlzLl90aW1lQ2VsbC5zZXRUZXh0QW5kVGl0bGUo
TnVtYmVyLnNlY29uZHNUb1N0cmluZyh0aGlzLl9yZXNvdXJjZS5kdXJhdGlvbikpOwotICAgICAg
ICAgICAgdGhpcy5fYXBwZW5kU3VidGl0bGUodGhpcy5fdGltZUNlbGwsIE51bWJlci5zZWNvbmRz
VG9TdHJpbmcodGhpcy5fcmVzb3VyY2UubGF0ZW5jeSkpOworICAgICAgICAgICAgdGhpcy5fdGlt
ZUNlbGwuc2V0VGV4dEFuZFRpdGxlKE51bWJlci5zZWNvbmRzVG9TdHJpbmcodGhpcy5fcmVxdWVz
dC5kdXJhdGlvbikpOworICAgICAgICAgICAgdGhpcy5fYXBwZW5kU3VidGl0bGUodGhpcy5fdGlt
ZUNlbGwsIE51bWJlci5zZWNvbmRzVG9TdHJpbmcodGhpcy5fcmVxdWVzdC5sYXRlbmN5KSk7CiAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICB0aGlzLl90aW1lQ2VsbC5hZGRTdHlsZUNsYXNz
KCJuZXR3b3JrLWRpbS1jZWxsIik7CiAgICAgICAgICAgICB0aGlzLl90aW1lQ2VsbC5zZXRUZXh0
QW5kVGl0bGUoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQZW5kaW5nIikpOwpAQCAtMTk3NiwxNCAr
MTk3MywxNCBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya0RhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7
CiAKICAgICByZWZyZXNoR3JhcGg6IGZ1bmN0aW9uKGNhbGN1bGF0b3IpCiAgICAgewotICAgICAg
ICB2YXIgcGVyY2VudGFnZXMgPSBjYWxjdWxhdG9yLmNvbXB1dGVCYXJHcmFwaFBlcmNlbnRhZ2Vz
KHRoaXMuX3Jlc291cmNlKTsKKyAgICAgICAgdmFyIHBlcmNlbnRhZ2VzID0gY2FsY3VsYXRvci5j
b21wdXRlQmFyR3JhcGhQZXJjZW50YWdlcyh0aGlzLl9yZXF1ZXN0KTsKICAgICAgICAgdGhpcy5f
cGVyY2VudGFnZXMgPSBwZXJjZW50YWdlczsKIAogICAgICAgICB0aGlzLl9iYXJBcmVhRWxlbWVu
dC5yZW1vdmVTdHlsZUNsYXNzKCJoaWRkZW4iKTsKIAotICAgICAgICBpZiAoIXRoaXMuX2dyYXBo
RWxlbWVudC5oYXNTdHlsZUNsYXNzKCJuZXR3b3JrLXR5cGUtIiArIHRoaXMuX3Jlc291cmNlLnR5
cGUubmFtZSgpKSkgeworICAgICAgICBpZiAoIXRoaXMuX2dyYXBoRWxlbWVudC5oYXNTdHlsZUNs
YXNzKCJuZXR3b3JrLXR5cGUtIiArIHRoaXMuX3JlcXVlc3QudHlwZS5uYW1lKCkpKSB7CiAgICAg
ICAgICAgICB0aGlzLl9ncmFwaEVsZW1lbnQucmVtb3ZlTWF0Y2hpbmdTdHlsZUNsYXNzZXMoIm5l
dHdvcmstdHlwZS1cXHcrIik7Ci0gICAgICAgICAgICB0aGlzLl9ncmFwaEVsZW1lbnQuYWRkU3R5
bGVDbGFzcygibmV0d29yay10eXBlLSIgKyB0aGlzLl9yZXNvdXJjZS50eXBlLm5hbWUoKSk7Cisg
ICAgICAgICAgICB0aGlzLl9ncmFwaEVsZW1lbnQuYWRkU3R5bGVDbGFzcygibmV0d29yay10eXBl
LSIgKyB0aGlzLl9yZXF1ZXN0LnR5cGUubmFtZSgpKTsKICAgICAgICAgfQogCiAgICAgICAgIHRo
aXMuX2JhckxlZnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCJsZWZ0IiwgcGVyY2VudGFnZXMu
c3RhcnQgKyAiJSIpOwpAQCAtMTk5Miw3ICsxOTg5LDcgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtE
YXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9iYXJMZWZ0RWxlbWVudC5z
dHlsZS5zZXRQcm9wZXJ0eSgicmlnaHQiLCAoMTAwIC0gcGVyY2VudGFnZXMuZW5kKSArICIlIik7
CiAgICAgICAgIHRoaXMuX2JhclJpZ2h0RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgibGVmdCIs
IHBlcmNlbnRhZ2VzLm1pZGRsZSArICIlIik7CiAKLSAgICAgICAgdmFyIGxhYmVscyA9IGNhbGN1
bGF0b3IuY29tcHV0ZUJhckdyYXBoTGFiZWxzKHRoaXMuX3Jlc291cmNlKTsKKyAgICAgICAgdmFy
IGxhYmVscyA9IGNhbGN1bGF0b3IuY29tcHV0ZUJhckdyYXBoTGFiZWxzKHRoaXMuX3JlcXVlc3Qp
OwogICAgICAgICB0aGlzLl9sYWJlbExlZnRFbGVtZW50LnRleHRDb250ZW50ID0gbGFiZWxzLmxl
ZnQ7CiAgICAgICAgIHRoaXMuX2xhYmVsUmlnaHRFbGVtZW50LnRleHRDb250ZW50ID0gbGFiZWxz
LnJpZ2h0OwogCkBAIC0yMDc0LDggKzIwNzEsOCBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya0RhdGFH
cmlkTm9kZS5wcm90b3R5cGUgPSB7CiAKIFdlYkluc3BlY3Rvci5OZXR3b3JrRGF0YUdyaWROb2Rl
Lk5hbWVDb21wYXJhdG9yID0gZnVuY3Rpb24oYSwgYikKIHsKLSAgICB2YXIgYUZpbGVOYW1lID0g
YS5fcmVzb3VyY2UuZGlzcGxheU5hbWUgKyAoYS5fcmVzb3VyY2UucXVlcnlTdHJpbmcgPyBhLl9y
ZXNvdXJjZS5xdWVyeVN0cmluZyA6ICIiKTsKLSAgICB2YXIgYkZpbGVOYW1lID0gYi5fcmVzb3Vy
Y2UuZGlzcGxheU5hbWUgKyAoYi5fcmVzb3VyY2UucXVlcnlTdHJpbmcgPyBiLl9yZXNvdXJjZS5x
dWVyeVN0cmluZyA6ICIiKTsKKyAgICB2YXIgYUZpbGVOYW1lID0gYS5fcmVxdWVzdC5kaXNwbGF5
TmFtZSArIChhLl9yZXF1ZXN0LnF1ZXJ5U3RyaW5nID8gYS5fcmVxdWVzdC5xdWVyeVN0cmluZyA6
ICIiKTsKKyAgICB2YXIgYkZpbGVOYW1lID0gYi5fcmVxdWVzdC5kaXNwbGF5TmFtZSArIChiLl9y
ZXF1ZXN0LnF1ZXJ5U3RyaW5nID8gYi5fcmVxdWVzdC5xdWVyeVN0cmluZyA6ICIiKTsKICAgICBp
ZiAoYUZpbGVOYW1lID4gYkZpbGVOYW1lKQogICAgICAgICByZXR1cm4gMTsKICAgICBpZiAoYkZp
bGVOYW1lID4gYUZpbGVOYW1lKQpAQCAtMjA4NSwzNiArMjA4MiwzNiBAQCBXZWJJbnNwZWN0b3Iu
TmV0d29ya0RhdGFHcmlkTm9kZS5OYW1lQ29tcGFyYXRvciA9IGZ1bmN0aW9uKGEsIGIpCiAKIFdl
Ykluc3BlY3Rvci5OZXR3b3JrRGF0YUdyaWROb2RlLlNpemVDb21wYXJhdG9yID0gZnVuY3Rpb24o
YSwgYikKIHsKLSAgICBpZiAoYi5fcmVzb3VyY2UuY2FjaGVkICYmICFhLl9yZXNvdXJjZS5jYWNo
ZWQpCisgICAgaWYgKGIuX3JlcXVlc3QuY2FjaGVkICYmICFhLl9yZXF1ZXN0LmNhY2hlZCkKICAg
ICAgICAgcmV0dXJuIDE7Ci0gICAgaWYgKGEuX3Jlc291cmNlLmNhY2hlZCAmJiAhYi5fcmVzb3Vy
Y2UuY2FjaGVkKQorICAgIGlmIChhLl9yZXF1ZXN0LmNhY2hlZCAmJiAhYi5fcmVxdWVzdC5jYWNo
ZWQpCiAgICAgICAgIHJldHVybiAtMTsKIAotICAgIGlmIChhLl9yZXNvdXJjZS5yZXNvdXJjZVNp
emUgPT09IGIuX3Jlc291cmNlLnJlc291cmNlU2l6ZSkKKyAgICBpZiAoYS5fcmVxdWVzdC5yZXNv
dXJjZVNpemUgPT09IGIuX3JlcXVlc3QucmVzb3VyY2VTaXplKQogICAgICAgICByZXR1cm4gMDsK
IAotICAgIHJldHVybiBhLl9yZXNvdXJjZS5yZXNvdXJjZVNpemUgLSBiLl9yZXNvdXJjZS5yZXNv
dXJjZVNpemU7CisgICAgcmV0dXJuIGEuX3JlcXVlc3QucmVzb3VyY2VTaXplIC0gYi5fcmVxdWVz
dC5yZXNvdXJjZVNpemU7CiB9CiAKIFdlYkluc3BlY3Rvci5OZXR3b3JrRGF0YUdyaWROb2RlLklu
aXRpYXRvckNvbXBhcmF0b3IgPSBmdW5jdGlvbihhLCBiKQogewotICAgIGlmICghYS5fcmVzb3Vy
Y2UuaW5pdGlhdG9yIHx8IGEuX3Jlc291cmNlLmluaXRpYXRvci50eXBlID09PSAiT3RoZXIiKQor
ICAgIGlmICghYS5fcmVxdWVzdC5pbml0aWF0b3IgfHwgYS5fcmVxdWVzdC5pbml0aWF0b3IudHlw
ZSA9PT0gIk90aGVyIikKICAgICAgICAgcmV0dXJuIC0xOwotICAgIGlmICghYi5fcmVzb3VyY2Uu
aW5pdGlhdG9yIHx8IGIuX3Jlc291cmNlLmluaXRpYXRvci50eXBlID09PSAiT3RoZXIiKQorICAg
IGlmICghYi5fcmVxdWVzdC5pbml0aWF0b3IgfHwgYi5fcmVxdWVzdC5pbml0aWF0b3IudHlwZSA9
PT0gIk90aGVyIikKICAgICAgICAgcmV0dXJuIDE7CiAKLSAgICBpZiAoYS5fcmVzb3VyY2UuaW5p
dGlhdG9yLnVybCA8IGIuX3Jlc291cmNlLmluaXRpYXRvci51cmwpCisgICAgaWYgKGEuX3JlcXVl
c3QuaW5pdGlhdG9yLnVybCA8IGIuX3JlcXVlc3QuaW5pdGlhdG9yLnVybCkKICAgICAgICAgcmV0
dXJuIC0xOwotICAgIGlmIChhLl9yZXNvdXJjZS5pbml0aWF0b3IudXJsID4gYi5fcmVzb3VyY2Uu
aW5pdGlhdG9yLnVybCkKKyAgICBpZiAoYS5fcmVxdWVzdC5pbml0aWF0b3IudXJsID4gYi5fcmVx
dWVzdC5pbml0aWF0b3IudXJsKQogICAgICAgICByZXR1cm4gMTsKIAotICAgIHJldHVybiBhLl9y
ZXNvdXJjZS5pbml0aWF0b3IubGluZU51bWJlciAtIGIuX3Jlc291cmNlLmluaXRpYXRvci5saW5l
TnVtYmVyOworICAgIHJldHVybiBhLl9yZXF1ZXN0LmluaXRpYXRvci5saW5lTnVtYmVyIC0gYi5f
cmVxdWVzdC5pbml0aWF0b3IubGluZU51bWJlcjsKIH0KIAotV2ViSW5zcGVjdG9yLk5ldHdvcmtE
YXRhR3JpZE5vZGUuUmVzb3VyY2VQcm9wZXJ0eUNvbXBhcmF0b3IgPSBmdW5jdGlvbihwcm9wZXJ0
eU5hbWUsIHJldmVydCwgYSwgYikKK1dlYkluc3BlY3Rvci5OZXR3b3JrRGF0YUdyaWROb2RlLlJl
cXVlc3RQcm9wZXJ0eUNvbXBhcmF0b3IgPSBmdW5jdGlvbihwcm9wZXJ0eU5hbWUsIHJldmVydCwg
YSwgYikKIHsKLSAgICB2YXIgYVZhbHVlID0gYS5fcmVzb3VyY2VbcHJvcGVydHlOYW1lXTsKLSAg
ICB2YXIgYlZhbHVlID0gYi5fcmVzb3VyY2VbcHJvcGVydHlOYW1lXTsKKyAgICB2YXIgYVZhbHVl
ID0gYS5fcmVxdWVzdFtwcm9wZXJ0eU5hbWVdOworICAgIHZhciBiVmFsdWUgPSBiLl9yZXF1ZXN0
W3Byb3BlcnR5TmFtZV07CiAgICAgaWYgKGFWYWx1ZSA+IGJWYWx1ZSkKICAgICAgICAgcmV0dXJu
IHJldmVydCA/IC0xIDogMTsKICAgICBpZiAoYlZhbHVlID4gYVZhbHVlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUmVxdWVzdC5qcyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1JlcXVlc3QuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNjBhZmJjMzlhZmU1YzZjMWExYWRkZmNmMDk4NDBhNjZiOGZjZmU0YQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1JlcXVl
c3QuanMKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7
V2ViSW5zcGVjdG9yLlJlc291cmNlfQorICoKKyAqIEBwYXJhbSB7TmV0d29ya0FnZW50LlJlcXVl
c3RJZH0gcmVxdWVzdElkCisgKiBAcGFyYW0ge3N0cmluZ30gdXJsCisgKiBAcGFyYW0ge05ldHdv
cmtBZ2VudC5GcmFtZUlkfSBmcmFtZUlkCisgKiBAcGFyYW0ge05ldHdvcmtBZ2VudC5Mb2FkZXJJ
ZH0gbG9hZGVySWQKKyAqLworV2ViSW5zcGVjdG9yLk5ldHdvcmtSZXF1ZXN0ID0gZnVuY3Rpb24o
cmVxdWVzdElkLCB1cmwsIGZyYW1lSWQsIGxvYWRlcklkKQoreworICAgIC8vIEZJWE1FOiBleHRy
YWN0IHJlcXVlc3QtcmVsYXRlZCBwYXJ0IGZyb20gdGhlIHJlc291cmNlIGFuZCBhZ2dyZWdhdGUK
KyAgICAvLyBuZXR3b3JrIHJlcXVlc3QgaW4gdGhlIHJlc291cmNlLgorICAgIFdlYkluc3BlY3Rv
ci5SZXNvdXJjZS5jYWxsKHRoaXMsIG51bGwsIHVybCwgZnJhbWVJZCwgbG9hZGVySWQpOworICAg
IHRoaXMucmVxdWVzdElkID0gcmVxdWVzdElkOworfQorCitXZWJJbnNwZWN0b3IuTmV0d29ya1Jl
cXVlc3QuRXZlbnRzID0geworICAgIEZpbmlzaGVkTG9hZGluZzogIkZpbmlzaGVkTG9hZGluZyIs
CisgICAgVGltaW5nQ2hhbmdlZDogIlRpbWluZ0NoYW5nZWQiLAorICAgIFJlcXVlc3RIZWFkZXJz
Q2hhbmdlZDogIlJlcXVlc3RIZWFkZXJzQ2hhbmdlZCIsCisgICAgUmVzcG9uc2VIZWFkZXJzQ2hh
bmdlZDogIlJlc3BvbnNlSGVhZGVyc0NoYW5nZWQiLAorfQorCitXZWJJbnNwZWN0b3IuTmV0d29y
a1JlcXVlc3QucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90
b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jh
d1NvdXJjZUNvZGUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jhd1Nv
dXJjZUNvZGUuanMKaW5kZXggNTM4ZjYwODc2YTU1ODdhMTk0NTViNmY4ZWY0OThmZDA1YjA4OTUy
ZC4uN2Y0YjcxOTBmZTlmNDdjNTZkZmNjMzE0YjlkY2I0YmJlYTI5MmViMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SYXdTb3VyY2VDb2RlLmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmF3U291cmNlQ29kZS5qcwpAQCAt
MzYsMTEgKzM2LDExIEBACiAgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLk9iamVjdH0KICAqIEBw
YXJhbSB7c3RyaW5nfSBpZAogICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU2NyaXB0fSBzY3JpcHQK
LSAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlJlc291cmNlfSByZXNvdXJjZQorICogQHBhcmFtIHtX
ZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVlc3R9IHJlcXVlc3QKICAqIEBwYXJhbSB7V2ViSW5zcGVj
dG9yLlNjcmlwdEZvcm1hdHRlcn0gZm9ybWF0dGVyCiAgKiBAcGFyYW0ge2Jvb2xlYW59IGZvcm1h
dHRlZAogICovCi1XZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZSA9IGZ1bmN0aW9uKGlkLCBzY3Jp
cHQsIHJlc291cmNlLCBmb3JtYXR0ZXIsIGZvcm1hdHRlZCkKK1dlYkluc3BlY3Rvci5SYXdTb3Vy
Y2VDb2RlID0gZnVuY3Rpb24oaWQsIHNjcmlwdCwgcmVxdWVzdCwgZm9ybWF0dGVyLCBmb3JtYXR0
ZWQpCiB7CiAgICAgdGhpcy5pZCA9IGlkOwogICAgIHRoaXMudXJsID0gc2NyaXB0LnNvdXJjZVVS
TDsKQEAgLTQ4LDE0ICs0OCwxNCBAQCBXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZSA9IGZ1bmN0
aW9uKGlkLCBzY3JpcHQsIHJlc291cmNlLCBmb3JtYXR0ZXIsIGZvcm1hdHRlZAogICAgIHRoaXMu
X3NjcmlwdHMgPSBbc2NyaXB0XTsKICAgICB0aGlzLl9mb3JtYXR0ZXIgPSBmb3JtYXR0ZXI7CiAg
ICAgdGhpcy5fZm9ybWF0dGVkID0gZm9ybWF0dGVkOwotICAgIHRoaXMuX3Jlc291cmNlID0gcmVz
b3VyY2U7CisgICAgdGhpcy5fcmVxdWVzdCA9IHJlcXVlc3Q7CiAKLSAgICB0aGlzLl91c2VUZW1w
b3JhcnlDb250ZW50ID0gdGhpcy5fcmVzb3VyY2UgJiYgIXRoaXMuX3Jlc291cmNlLmZpbmlzaGVk
OworICAgIHRoaXMuX3VzZVRlbXBvcmFyeUNvbnRlbnQgPSB0aGlzLl9yZXF1ZXN0ICYmICF0aGlz
Ll9yZXF1ZXN0LmZpbmlzaGVkOwogICAgIHRoaXMuX2hhc05ld1NjcmlwdHMgPSB0cnVlOwogICAg
IGlmICghdGhpcy5fdXNlVGVtcG9yYXJ5Q29udGVudCkKICAgICAgICAgdGhpcy5fdXBkYXRlU291
cmNlTWFwcGluZygpOwotICAgIGVsc2UgaWYgKHRoaXMuX3Jlc291cmNlKQotICAgICAgICB0aGlz
Ll9yZXNvdXJjZS5hZGRFdmVudExpc3RlbmVyKCJmaW5pc2hlZCIsIHRoaXMuX3Jlc291cmNlRmlu
aXNoZWQuYmluZCh0aGlzKSk7CisgICAgZWxzZSBpZiAodGhpcy5fcmVxdWVzdCkKKyAgICAgICAg
dGhpcy5fcmVxdWVzdC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5OZXR3b3JrUmVxdWVz
dC5FdmVudHMuRmluaXNoZWRMb2FkaW5nLCB0aGlzLl9yZXF1ZXN0RmluaXNoZWQuYmluZCh0aGlz
KSk7CiB9CiAKIFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLkV2ZW50cyA9IHsKQEAgLTExNyw3
ICsxMTcsNyBAQCBXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHRoaXMuX3VwZGF0ZVNvdXJjZU1hcHBpbmcoKTsKICAgICB9LAogCi0gICAgX3Jlc291cmNl
RmluaXNoZWQ6IGZ1bmN0aW9uKCkKKyAgICBfcmVxdWVzdEZpbmlzaGVkOiBmdW5jdGlvbigpCiAg
ICAgewogICAgICAgICB0aGlzLl91c2VUZW1wb3JhcnlDb250ZW50ID0gZmFsc2U7CiAgICAgICAg
IHRoaXMuX3VwZGF0ZVNvdXJjZU1hcHBpbmcoKTsKQEAgLTE2MSw4ICsxNjEsOSBAQCBXZWJJbnNw
ZWN0b3IuUmF3U291cmNlQ29kZS5wcm90b3R5cGUgPSB7CiAKICAgICBfY3JlYXRlQ29udGVudFBy
b3ZpZGVyOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBpZiAodGhpcy5fcmVzb3VyY2UgJiYg
dGhpcy5fcmVzb3VyY2UuZmluaXNoZWQpCi0gICAgICAgICAgICByZXR1cm4gbmV3IFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZUNvbnRlbnRQcm92aWRlcih0aGlzLl9yZXNvdXJjZSk7CisgICAgICAgIGlm
ICh0aGlzLl9yZXF1ZXN0ICYmIHRoaXMuX3JlcXVlc3QuZmluaXNoZWQpIHsKKyAgICAgICAgICAg
IHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlJlc291cmNlQ29udGVudFByb3ZpZGVyKHRoaXMuX3Jl
cXVlc3QpOworICAgICAgICB9CiAgICAgICAgIGlmICh0aGlzLl9zY3JpcHRzLmxlbmd0aCA9PT0g
MSAmJiAhdGhpcy5fc2NyaXB0c1swXS5saW5lT2Zmc2V0ICYmICF0aGlzLl9zY3JpcHRzWzBdLmNv
bHVtbk9mZnNldCkKICAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlNjcmlwdENv
bnRlbnRQcm92aWRlcih0aGlzLl9zY3JpcHRzWzBdKTsKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJ
bnNwZWN0b3IuQ29uY2F0ZW5hdGVkU2NyaXB0c0NvbnRlbnRQcm92aWRlcih0aGlzLl9zY3JpcHRz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3Vy
Y2UuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpzCmlu
ZGV4IGIwMDZmNzdmYmJlNTg4ZTk3ZjI2YzNhNjkxZjhhY2ZlYjUxNzI1MDAuLjhlNWY0NTgxZGRk
NmQ3OGRiM2Q5YzcxZDQ1MjFjZjczMGUyM2YwNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2UuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZS5qcwpAQCAtMzAsMTQgKzMwLDE2IEBACiAgKiBAY29u
c3RydWN0b3IKICAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuT2JqZWN0fQogICoKLSAqIEBwYXJh
bSB7TmV0d29ya0FnZW50LlJlcXVlc3RJZH0gcmVxdWVzdElkCisgKiBAcGFyYW0gez9XZWJJbnNw
ZWN0b3IuTmV0d29ya1JlcXVlc3R9IHJlcXVlc3QKICAqIEBwYXJhbSB7c3RyaW5nfSB1cmwKLSAq
IEBwYXJhbSB7c3RyaW5nfSBmcmFtZUlkCi0gKiBAcGFyYW0gez9OZXR3b3JrQWdlbnQuTG9hZGVy
SWR9IGxvYWRlcklkCisgKiBAcGFyYW0ge05ldHdvcmtBZ2VudC5GcmFtZUlkfSBmcmFtZUlkCisg
KiBAcGFyYW0ge05ldHdvcmtBZ2VudC5Mb2FkZXJJZH0gbG9hZGVySWQKICAqLwotV2ViSW5zcGVj
dG9yLlJlc291cmNlID0gZnVuY3Rpb24ocmVxdWVzdElkLCB1cmwsIGZyYW1lSWQsIGxvYWRlcklk
KQorV2ViSW5zcGVjdG9yLlJlc291cmNlID0gZnVuY3Rpb24ocmVxdWVzdCwgdXJsLCBmcmFtZUlk
LCBsb2FkZXJJZCkKIHsKLSAgICB0aGlzLnJlcXVlc3RJZCA9IHJlcXVlc3RJZDsKKyAgICBpZiAo
cmVxdWVzdCkKKyAgICAgICAgcmV0dXJuIHJlcXVlc3Q7CisKICAgICB0aGlzLnVybCA9IHVybDsK
ICAgICB0aGlzLmZyYW1lSWQgPSBmcmFtZUlkOwogICAgIHRoaXMubG9hZGVySWQgPSBsb2FkZXJJ
ZDsKQEAgLTYwLDcgKzYyLDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlID0gZnVuY3Rpb24ocmVx
dWVzdElkLCB1cmwsIGZyYW1lSWQsIGxvYWRlcklkKQogICovCiBXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2UuZGlzcGxheU5hbWUgPSBmdW5jdGlvbih1cmwpCiB7Ci0gICAgcmV0dXJuIG5ldyBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2UoImZha2UtdHJhbnNpZW50LXJlc291cmNlIiwgdXJsLCAiIiwgbnVsbCku
ZGlzcGxheU5hbWU7CisgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuUmVzb3VyY2UobnVsbCwg
dXJsLCAiIiwgIiIpLmRpc3BsYXlOYW1lOwogfQogCiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuX2Rv
bWFpbk1vZGVsQmluZGluZ3MgPSBbXTsKQEAgLTE2MSw2ICsxNjMsMTQgQEAgV2ViSW5zcGVjdG9y
LlJlc291cmNlLkV2ZW50cyA9IHsKIAogV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZSA9
IHsKICAgICAvKioKKyAgICAgKiBAdHlwZSB7V2ViSW5zcGVjdG9yLk5ldHdvcmtSZXF1ZXN0fQor
ICAgICAqLworICAgIGdldCByZXF1ZXN0KCkKKyAgICB7CisgICAgICAgIHJldHVybiAvKiogQHR5
cGUge1dlYkluc3BlY3Rvci5OZXR3b3JrUmVxdWVzdH0gKi8gdGhpczsKKyAgICB9LAorCisgICAg
LyoqCiAgICAgICogQHR5cGUge3N0cmluZ30KICAgICAgKi8KICAgICBnZXQgdXJsKCkKQEAgLTM3
Nyw3ICszODcsNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlID0gewogICAgICAg
ICB0aGlzLl9maW5pc2hlZCA9IHg7CiAKICAgICAgICAgaWYgKHgpIHsKLSAgICAgICAgICAgIHRo
aXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKCJmaW5pc2hlZCIpOworICAgICAgICAgICAgdGhp
cy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLk5ldHdvcmtSZXF1ZXN0LkV2
ZW50cy5GaW5pc2hlZExvYWRpbmcpOwogICAgICAgICAgICAgaWYgKHRoaXMuX3BlbmRpbmdDb250
ZW50Q2FsbGJhY2tzLmxlbmd0aCkKICAgICAgICAgICAgICAgICB0aGlzLl9pbm5lclJlcXVlc3RD
b250ZW50KCk7CiAgICAgICAgIH0KQEAgLTQ0MSw3ICs0NTEsNyBAQCBXZWJJbnNwZWN0b3IuUmVz
b3VyY2UucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fcmVzcG9uc2VSZWNlaXZlZFRp
bWUgPSB4LnJlcXVlc3RUaW1lICsgeC5yZWNlaXZlSGVhZGVyc0VuZCAvIDEwMDAuMDsKIAogICAg
ICAgICAgICAgdGhpcy5fdGltaW5nID0geDsKLSAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVu
dFRvTGlzdGVuZXJzKCJ0aW1pbmcgY2hhbmdlZCIpOworICAgICAgICAgICAgdGhpcy5kaXNwYXRj
aEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLk5ldHdvcmtSZXF1ZXN0LkV2ZW50cy5UaW1p
bmdDaGFuZ2VkKTsKICAgICAgICAgfQogICAgIH0sCiAKQEAgLTUwMCw3ICs1MTAsNyBAQCBXZWJJ
bnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlID0gewogICAgICAgICBkZWxldGUgdGhpcy5fc29y
dGVkUmVxdWVzdEhlYWRlcnM7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9yZXF1ZXN0Q29va2llczsK
IAotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycygicmVxdWVzdEhlYWRlcnMg
Y2hhbmdlZCIpOworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNw
ZWN0b3IuTmV0d29ya1JlcXVlc3QuRXZlbnRzLlJlcXVlc3RIZWFkZXJzQ2hhbmdlZCk7CiAgICAg
fSwKIAogICAgIC8qKgpAQCAtNTIwLDcgKzUzMCw3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5w
cm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICB0aGlzLl9yZXF1ZXN0SGVhZGVyc1RleHQgPSB4
OwogCi0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKCJyZXF1ZXN0SGVhZGVy
cyBjaGFuZ2VkIik7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYklu
c3BlY3Rvci5OZXR3b3JrUmVxdWVzdC5FdmVudHMuUmVxdWVzdEhlYWRlcnNDaGFuZ2VkKTsKICAg
ICB9LAogCiAgICAgLyoqCkBAIC02MDQsNyArNjE0LDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNl
LnByb3RvdHlwZSA9IHsKICAgICAgICAgZGVsZXRlIHRoaXMuX3NvcnRlZFJlc3BvbnNlSGVhZGVy
czsKICAgICAgICAgZGVsZXRlIHRoaXMuX3Jlc3BvbnNlQ29va2llczsKIAotICAgICAgICB0aGlz
LmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycygicmVzcG9uc2VIZWFkZXJzIGNoYW5nZWQiKTsKKyAg
ICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLk5ldHdvcmtS
ZXF1ZXN0LkV2ZW50cy5SZXNwb25zZUhlYWRlcnNDaGFuZ2VkKTsKICAgICB9LAogCiAgICAgLyoq
CkBAIC02MjQsNyArNjM0LDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZSA9IHsK
ICAgICB7CiAgICAgICAgIHRoaXMuX3Jlc3BvbnNlSGVhZGVyc1RleHQgPSB4OwogCi0gICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKCJyZXNwb25zZUhlYWRlcnMgY2hhbmdlZCIp
OworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuTmV0
d29ya1JlcXVlc3QuRXZlbnRzLlJlc3BvbnNlSGVhZGVyc0NoYW5nZWQpOwogICAgIH0sCiAKICAg
ICAvKioKQEAgLTg3Nyw3ICs4ODcsNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBl
ID0gewogICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKD9zdHJpbmcs
ID9zdHJpbmcpfSBjYWxsYmFjaworICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oP3N0cmluZywgYm9v
bGVhbil9IGNhbGxiYWNrCiAgICAgICovCiAgICAgcmVxdWVzdENvbnRlbnQ6IGZ1bmN0aW9uKGNh
bGxiYWNrKQogICAgIHsKQEAgLTg4NSw3ICs4OTUsNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2Uu
cHJvdG90eXBlID0gewogICAgICAgICAvLyBTaW5jZSBXZWJTb2NrZXRzIGFyZSBwb3RlbnRpYWxs
eSBsb25nLWxpdmluZywgZmFpbCByZXF1ZXN0cyBpbW1lZGlhdGVseQogICAgICAgICAvLyB0byBw
cmV2ZW50IGNhbGxlciBibG9ja2luZyB1bnRpbCByZXNvdXJjZSBpcyBtYXJrZWQgYXMgZmluaXNo
ZWQuCiAgICAgICAgIGlmICh0aGlzLnR5cGUgPT09IFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5cGVz
LldlYlNvY2tldCkgewotICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgbnVsbCk7CisgICAgICAg
ICAgICBjYWxsYmFjayhudWxsLCBmYWxzZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLl9jb250ZW50ICE9PSAidW5kZWZpbmVkIikgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZUNv
b2tpZXNWaWV3LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJj
ZUNvb2tpZXNWaWV3LmpzCmluZGV4IGNiZmY0N2QyN2M3MWY3ZGYyNWFkZDA3ZGI1MjQ5NzdlOTFi
YjdhMWUuLjRlNTE4MThjODk3NzE5NjQ1YWM3MGJhYTIwNjEyNjVmNmQxNjM4YWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VDb29raWVzVmll
dy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlQ29v
a2llc1ZpZXcuanMKQEAgLTI5LDE4ICsyOSwxOSBAQAogICovCiAKIC8qKgotICogQGV4dGVuZHMg
e1dlYkluc3BlY3Rvci5WaWV3fQogICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7V2ViSW5z
cGVjdG9yLlZpZXd9CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5OZXR3b3JrUmVxdWVzdH0gcmVx
dWVzdAogICovCi1XZWJJbnNwZWN0b3IuUmVzb3VyY2VDb29raWVzVmlldyA9IGZ1bmN0aW9uKHJl
c291cmNlKQorV2ViSW5zcGVjdG9yLlJlc291cmNlQ29va2llc1ZpZXcgPSBmdW5jdGlvbihyZXF1
ZXN0KQogewogICAgIFdlYkluc3BlY3Rvci5WaWV3LmNhbGwodGhpcyk7CiAgICAgdGhpcy5lbGVt
ZW50LmFkZFN0eWxlQ2xhc3MoInJlc291cmNlLWNvb2tpZXMtdmlldyIpOwogCi0gICAgdGhpcy5f
cmVzb3VyY2UgPSByZXNvdXJjZTsKKyAgICB0aGlzLl9yZXF1ZXN0ID0gcmVxdWVzdDsKIAotICAg
IHJlc291cmNlLmFkZEV2ZW50TGlzdGVuZXIoInJlcXVlc3RIZWFkZXJzIGNoYW5nZWQiLCB0aGlz
Ll9yZWZyZXNoQ29va2llcywgdGhpcyk7Ci0gICAgcmVzb3VyY2UuYWRkRXZlbnRMaXN0ZW5lcigi
cmVzcG9uc2VIZWFkZXJzIGNoYW5nZWQiLCB0aGlzLl9yZWZyZXNoQ29va2llcywgdGhpcyk7Cisg
ICAgcmVxdWVzdC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5OZXR3b3JrUmVxdWVzdC5F
dmVudHMuUmVxdWVzdEhlYWRlcnNDaGFuZ2VkLCB0aGlzLl9yZWZyZXNoQ29va2llcywgdGhpcyk7
CisgICAgcmVxdWVzdC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5OZXR3b3JrUmVxdWVz
dC5FdmVudHMuUmVzcG9uc2VIZWFkZXJzQ2hhbmdlZCwgdGhpcy5fcmVmcmVzaENvb2tpZXMsIHRo
aXMpOwogfQogCiBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDb29raWVzVmlldy5wcm90b3R5cGUgPSB7
CkBAIC02MCw3ICs2MSw3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZUNvb2tpZXNWaWV3LnByb3Rv
dHlwZSA9IHsKIAogICAgIGdldCBfZ290Q29va2llcygpCiAgICAgewotICAgICAgICByZXR1cm4g
ISEodGhpcy5fcmVzb3VyY2UucmVxdWVzdENvb2tpZXMgfHwgdGhpcy5fcmVzb3VyY2UucmVzcG9u
c2VDb29raWVzKTsKKyAgICAgICAgcmV0dXJuICEhKHRoaXMuX3JlcXVlc3QucmVxdWVzdENvb2tp
ZXMgfHwgdGhpcy5fcmVxdWVzdC5yZXNwb25zZUNvb2tpZXMpOwogICAgIH0sCiAKICAgICBfYnVp
bGRDb29raWVzVGFibGU6IGZ1bmN0aW9uKCkKQEAgLTY4LDggKzY5LDggQEAgV2ViSW5zcGVjdG9y
LlJlc291cmNlQ29va2llc1ZpZXcucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLmRldGFjaENo
aWxkVmlld3MoKTsKIAogICAgICAgICB0aGlzLl9jb29raWVzVGFibGUgPSBuZXcgV2ViSW5zcGVj
dG9yLkNvb2tpZXNUYWJsZShudWxsLCB0cnVlKTsKLSAgICAgICAgdGhpcy5fY29va2llc1RhYmxl
LmFkZENvb2tpZXNGb2xkZXIoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXF1ZXN0IENvb2tpZXMi
KSwgdGhpcy5fcmVzb3VyY2UucmVxdWVzdENvb2tpZXMpOwotICAgICAgICB0aGlzLl9jb29raWVz
VGFibGUuYWRkQ29va2llc0ZvbGRlcihXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlc3BvbnNlIENv
b2tpZXMiKSwgdGhpcy5fcmVzb3VyY2UucmVzcG9uc2VDb29raWVzKTsKKyAgICAgICAgdGhpcy5f
Y29va2llc1RhYmxlLmFkZENvb2tpZXNGb2xkZXIoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXF1
ZXN0IENvb2tpZXMiKSwgdGhpcy5fcmVxdWVzdC5yZXF1ZXN0Q29va2llcyk7CisgICAgICAgIHRo
aXMuX2Nvb2tpZXNUYWJsZS5hZGRDb29raWVzRm9sZGVyKFdlYkluc3BlY3Rvci5VSVN0cmluZygi
UmVzcG9uc2UgQ29va2llcyIpLCB0aGlzLl9yZXF1ZXN0LnJlc3BvbnNlQ29va2llcyk7CiAgICAg
ICAgIHRoaXMuX2Nvb2tpZXNUYWJsZS5zaG93KHRoaXMuZWxlbWVudCk7CiAgICAgfSwKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZUhlYWRl
cnNWaWV3LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZUhl
YWRlcnNWaWV3LmpzCmluZGV4IGRiZTMyYzEwODdmNDU1OTRmNmZhMmZhYmVlYTU1OGUzYjRiM2Uy
NzIuLjE2NTBlNjg5Nzk3MzBkZTc0ZDU4Mzg3ZTZhMWM5NWQzYjg1ZWM4ZjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VIZWFkZXJzVmlldy5q
cworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlSGVhZGVy
c1ZpZXcuanMKQEAgLTI5LDE2ICsyOSwxNyBAQAogICovCiAKIC8qKgotICogQGV4dGVuZHMge1dl
Ykluc3BlY3Rvci5WaWV3fQogICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7V2ViSW5zcGVj
dG9yLlZpZXd9CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5OZXR3b3JrUmVxdWVzdH0gcmVxdWVz
dAogICovCi1XZWJJbnNwZWN0b3IuUmVzb3VyY2VIZWFkZXJzVmlldyA9IGZ1bmN0aW9uKHJlc291
cmNlKQorV2ViSW5zcGVjdG9yLlJlc291cmNlSGVhZGVyc1ZpZXcgPSBmdW5jdGlvbihyZXF1ZXN0
KQogewogICAgIFdlYkluc3BlY3Rvci5WaWV3LmNhbGwodGhpcyk7CiAgICAgdGhpcy5yZWdpc3Rl
clJlcXVpcmVkQ1NTKCJyZXNvdXJjZVZpZXcuY3NzIik7CiAgICAgdGhpcy5lbGVtZW50LmFkZFN0
eWxlQ2xhc3MoInJlc291cmNlLWhlYWRlcnMtdmlldyIpOwogCi0gICAgdGhpcy5fcmVzb3VyY2Ug
PSByZXNvdXJjZTsKKyAgICB0aGlzLl9yZXF1ZXN0ID0gcmVxdWVzdDsKIAogICAgIHRoaXMuX2hl
YWRlcnNMaXN0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9sIik7CiAgICAgdGhp
cy5faGVhZGVyc0xpc3RFbGVtZW50LmNsYXNzTmFtZSA9ICJvdXRsaW5lLWRpc2Nsb3N1cmUiOwpA
QCAtOTgsOSArOTksOSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VIZWFkZXJzVmlldyA9IGZ1bmN0
aW9uKHJlc291cmNlKQogICAgIHRoaXMuX3Jlc3BvbnNlSGVhZGVyc1RyZWVFbGVtZW50LnNlbGVj
dGFibGUgPSBmYWxzZTsKICAgICB0aGlzLl9oZWFkZXJzVHJlZU91dGxpbmUuYXBwZW5kQ2hpbGQo
dGhpcy5fcmVzcG9uc2VIZWFkZXJzVHJlZUVsZW1lbnQpOwogCi0gICAgcmVzb3VyY2UuYWRkRXZl
bnRMaXN0ZW5lcigicmVxdWVzdEhlYWRlcnMgY2hhbmdlZCIsIHRoaXMuX3JlZnJlc2hSZXF1ZXN0
SGVhZGVycywgdGhpcyk7Ci0gICAgcmVzb3VyY2UuYWRkRXZlbnRMaXN0ZW5lcigicmVzcG9uc2VI
ZWFkZXJzIGNoYW5nZWQiLCB0aGlzLl9yZWZyZXNoUmVzcG9uc2VIZWFkZXJzLCB0aGlzKTsKLSAg
ICByZXNvdXJjZS5hZGRFdmVudExpc3RlbmVyKCJmaW5pc2hlZCIsIHRoaXMuX3JlZnJlc2hIVFRQ
SW5mb3JtYXRpb24sIHRoaXMpOworICAgIHJlcXVlc3QuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuTmV0d29ya1JlcXVlc3QuRXZlbnRzLlJlcXVlc3RIZWFkZXJzQ2hhbmdlZCwgdGhpcy5f
cmVmcmVzaFJlcXVlc3RIZWFkZXJzLCB0aGlzKTsKKyAgICByZXF1ZXN0LmFkZEV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLk5ldHdvcmtSZXF1ZXN0LkV2ZW50cy5SZXNwb25zZUhlYWRlcnNDaGFu
Z2VkLCB0aGlzLl9yZWZyZXNoUmVzcG9uc2VIZWFkZXJzLCB0aGlzKTsKKyAgICByZXF1ZXN0LmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLk5ldHdvcmtSZXF1ZXN0LkV2ZW50cy5GaW5pc2hl
ZExvYWRpbmcsIHRoaXMuX3JlZnJlc2hIVFRQSW5mb3JtYXRpb24sIHRoaXMpOwogCiAgICAgdGhp
cy5fcmVmcmVzaFVSTCgpOwogICAgIHRoaXMuX3JlZnJlc2hRdWVyeVN0cmluZygpOwpAQCAtMTU0
LDEyICsxNTUsMTIgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlSGVhZGVyc1ZpZXcucHJvdG90eXBl
ID0gewogCiAgICAgX3JlZnJlc2hVUkw6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHRoaXMu
X3VybFRyZWVFbGVtZW50LnRpdGxlID0gdGhpcy5fZm9ybWF0SGVhZGVyKFdlYkluc3BlY3Rvci5V
SVN0cmluZygiUmVxdWVzdCBVUkwiKSwgdGhpcy5fcmVzb3VyY2UudXJsKTsKKyAgICAgICAgdGhp
cy5fdXJsVHJlZUVsZW1lbnQudGl0bGUgPSB0aGlzLl9mb3JtYXRIZWFkZXIoV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJSZXF1ZXN0IFVSTCIpLCB0aGlzLl9yZXF1ZXN0LnVybCk7CiAgICAgfSwKIAog
ICAgIF9yZWZyZXNoUXVlcnlTdHJpbmc6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHZhciBx
dWVyeVBhcmFtZXRlcnMgPSB0aGlzLl9yZXNvdXJjZS5xdWVyeVBhcmFtZXRlcnM7CisgICAgICAg
IHZhciBxdWVyeVBhcmFtZXRlcnMgPSB0aGlzLl9yZXF1ZXN0LnF1ZXJ5UGFyYW1ldGVyczsKICAg
ICAgICAgdGhpcy5fcXVlcnlTdHJpbmdUcmVlRWxlbWVudC5oaWRkZW4gPSAhcXVlcnlQYXJhbWV0
ZXJzOwogICAgICAgICBpZiAocXVlcnlQYXJhbWV0ZXJzKQogICAgICAgICAgICAgdGhpcy5fcmVm
cmVzaFBhcm1zKFdlYkluc3BlY3Rvci5VSVN0cmluZygiUXVlcnkgU3RyaW5nIFBhcmFtZXRlcnMi
KSwgcXVlcnlQYXJhbWV0ZXJzLCB0aGlzLl9xdWVyeVN0cmluZ1RyZWVFbGVtZW50KTsKQEAgLTE2
Nyw3ICsxNjgsNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VIZWFkZXJzVmlldy5wcm90b3R5cGUg
PSB7CiAKICAgICBfcmVmcmVzaFVybEZyYWdtZW50OiBmdW5jdGlvbigpCiAgICAgewotICAgICAg
ICB2YXIgdXJsRnJhZ21lbnQgPSB0aGlzLl9yZXNvdXJjZS51cmxGcmFnbWVudDsKKyAgICAgICAg
dmFyIHVybEZyYWdtZW50ID0gdGhpcy5fcmVxdWVzdC51cmxGcmFnbWVudDsKICAgICAgICAgdGhp
cy5fdXJsRnJhZ21lbnRUcmVlRWxlbWVudC5oaWRkZW4gPSAhdXJsRnJhZ21lbnQ7CiAKICAgICAg
ICAgaWYgKCF1cmxGcmFnbWVudCkKQEAgLTE5MCwxMSArMTkxLDExIEBAIFdlYkluc3BlY3Rvci5S
ZXNvdXJjZUhlYWRlcnNWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fZm9ybURhdGFU
cmVlRWxlbWVudC5oaWRkZW4gPSB0cnVlOwogICAgICAgICB0aGlzLl9yZXF1ZXN0UGF5bG9hZFRy
ZWVFbGVtZW50LmhpZGRlbiA9IHRydWU7CiAKLSAgICAgICAgdmFyIGZvcm1EYXRhID0gdGhpcy5f
cmVzb3VyY2UucmVxdWVzdEZvcm1EYXRhOworICAgICAgICB2YXIgZm9ybURhdGEgPSB0aGlzLl9y
ZXF1ZXN0LnJlcXVlc3RGb3JtRGF0YTsKICAgICAgICAgaWYgKCFmb3JtRGF0YSkKICAgICAgICAg
ICAgIHJldHVybjsKIAotICAgICAgICB2YXIgZm9ybVBhcmFtZXRlcnMgPSB0aGlzLl9yZXNvdXJj
ZS5mb3JtUGFyYW1ldGVyczsKKyAgICAgICAgdmFyIGZvcm1QYXJhbWV0ZXJzID0gdGhpcy5fcmVx
dWVzdC5mb3JtUGFyYW1ldGVyczsKICAgICAgICAgaWYgKGZvcm1QYXJhbWV0ZXJzKSB7CiAgICAg
ICAgICAgICB0aGlzLl9mb3JtRGF0YVRyZWVFbGVtZW50LmhpZGRlbiA9IGZhbHNlOwogICAgICAg
ICAgICAgdGhpcy5fcmVmcmVzaFBhcm1zKFdlYkluc3BlY3Rvci5VSVN0cmluZygiRm9ybSBEYXRh
IiksIGZvcm1QYXJhbWV0ZXJzLCB0aGlzLl9mb3JtRGF0YVRyZWVFbGVtZW50KTsKQEAgLTI2Nywx
NCArMjY4LDE0IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZUhlYWRlcnNWaWV3LnByb3RvdHlwZSA9
IHsKICAgICBfcmVmcmVzaFJlcXVlc3RIZWFkZXJzOiBmdW5jdGlvbigpCiAgICAgewogICAgICAg
ICB2YXIgYWRkaXRpb25hbFJvdyA9IG51bGw7Ci0gICAgICAgIGlmICh0eXBlb2YgdGhpcy5fcmVz
b3VyY2Uud2ViU29ja2V0UmVxdWVzdEtleTMgIT09ICJ1bmRlZmluZWQiKQotICAgICAgICAgICAg
YWRkaXRpb25hbFJvdyA9IHtoZWFkZXI6ICIoS2V5MykiLCB2YWx1ZTogdGhpcy5fcmVzb3VyY2Uu
d2ViU29ja2V0UmVxdWVzdEtleTN9OworICAgICAgICBpZiAodHlwZW9mIHRoaXMuX3JlcXVlc3Qu
d2ViU29ja2V0UmVxdWVzdEtleTMgIT09ICJ1bmRlZmluZWQiKQorICAgICAgICAgICAgYWRkaXRp
b25hbFJvdyA9IHtoZWFkZXI6ICIoS2V5MykiLCB2YWx1ZTogdGhpcy5fcmVxdWVzdC53ZWJTb2Nr
ZXRSZXF1ZXN0S2V5M307CiAgICAgICAgIGlmICh0aGlzLl9zaG93UmVxdWVzdEhlYWRlcnNUZXh0
KQotICAgICAgICAgICAgdGhpcy5fcmVmcmVzaEhlYWRlcnNUZXh0KFdlYkluc3BlY3Rvci5VSVN0
cmluZygiUmVxdWVzdCBIZWFkZXJzIiksIHRoaXMuX3Jlc291cmNlLnNvcnRlZFJlcXVlc3RIZWFk
ZXJzLCB0aGlzLl9yZXNvdXJjZS5yZXF1ZXN0SGVhZGVyc1RleHQsIHRoaXMuX3JlcXVlc3RIZWFk
ZXJzVHJlZUVsZW1lbnQpOworICAgICAgICAgICAgdGhpcy5fcmVmcmVzaEhlYWRlcnNUZXh0KFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiUmVxdWVzdCBIZWFkZXJzIiksIHRoaXMuX3JlcXVlc3Quc29y
dGVkUmVxdWVzdEhlYWRlcnMsIHRoaXMuX3JlcXVlc3QucmVxdWVzdEhlYWRlcnNUZXh0LCB0aGlz
Ll9yZXF1ZXN0SGVhZGVyc1RyZWVFbGVtZW50KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAg
dGhpcy5fcmVmcmVzaEhlYWRlcnMoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXF1ZXN0IEhlYWRl
cnMiKSwgdGhpcy5fcmVzb3VyY2Uuc29ydGVkUmVxdWVzdEhlYWRlcnMsIGFkZGl0aW9uYWxSb3cs
IHRoaXMuX3JlcXVlc3RIZWFkZXJzVHJlZUVsZW1lbnQpOworICAgICAgICAgICAgdGhpcy5fcmVm
cmVzaEhlYWRlcnMoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXF1ZXN0IEhlYWRlcnMiKSwgdGhp
cy5fcmVxdWVzdC5zb3J0ZWRSZXF1ZXN0SGVhZGVycywgYWRkaXRpb25hbFJvdywgdGhpcy5fcmVx
dWVzdEhlYWRlcnNUcmVlRWxlbWVudCk7CiAKLSAgICAgICAgaWYgKHRoaXMuX3Jlc291cmNlLnJl
cXVlc3RIZWFkZXJzVGV4dCkgeworICAgICAgICBpZiAodGhpcy5fcmVxdWVzdC5yZXF1ZXN0SGVh
ZGVyc1RleHQpIHsKICAgICAgICAgICAgIHZhciB0b2dnbGVCdXR0b24gPSB0aGlzLl9jcmVhdGVI
ZWFkZXJzVG9nZ2xlQnV0dG9uKHRoaXMuX3Nob3dSZXF1ZXN0SGVhZGVyc1RleHQpOwogICAgICAg
ICAgICAgdG9nZ2xlQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fdG9nZ2xl
UmVxdWVzdEhlYWRlcnNUZXh0LmJpbmQodGhpcykpOwogICAgICAgICAgICAgdGhpcy5fcmVxdWVz
dEhlYWRlcnNUcmVlRWxlbWVudC5saXN0SXRlbUVsZW1lbnQuYXBwZW5kQ2hpbGQodG9nZ2xlQnV0
dG9uKTsKQEAgLTI4NiwxNCArMjg3LDE0IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZUhlYWRlcnNW
aWV3LnByb3RvdHlwZSA9IHsKICAgICBfcmVmcmVzaFJlc3BvbnNlSGVhZGVyczogZnVuY3Rpb24o
KQogICAgIHsKICAgICAgICAgdmFyIGFkZGl0aW9uYWxSb3cgPSBudWxsOwotICAgICAgICBpZiAo
dHlwZW9mIHRoaXMuX3Jlc291cmNlLndlYlNvY2tldENoYWxsZW5nZVJlc3BvbnNlICE9PSAidW5k
ZWZpbmVkIikKLSAgICAgICAgICAgIGFkZGl0aW9uYWxSb3cgPSB7aGVhZGVyOiAiKENoYWxsZW5n
ZSBSZXNwb25zZSkiLCB2YWx1ZTogdGhpcy5fcmVzb3VyY2Uud2ViU29ja2V0Q2hhbGxlbmdlUmVz
cG9uc2V9OworICAgICAgICBpZiAodHlwZW9mIHRoaXMuX3JlcXVlc3Qud2ViU29ja2V0Q2hhbGxl
bmdlUmVzcG9uc2UgIT09ICJ1bmRlZmluZWQiKQorICAgICAgICAgICAgYWRkaXRpb25hbFJvdyA9
IHtoZWFkZXI6ICIoQ2hhbGxlbmdlIFJlc3BvbnNlKSIsIHZhbHVlOiB0aGlzLl9yZXF1ZXN0Lndl
YlNvY2tldENoYWxsZW5nZVJlc3BvbnNlfTsKICAgICAgICAgaWYgKHRoaXMuX3Nob3dSZXNwb25z
ZUhlYWRlcnNUZXh0KQotICAgICAgICAgICAgdGhpcy5fcmVmcmVzaEhlYWRlcnNUZXh0KFdlYklu
c3BlY3Rvci5VSVN0cmluZygiUmVzcG9uc2UgSGVhZGVycyIpLCB0aGlzLl9yZXNvdXJjZS5zb3J0
ZWRSZXNwb25zZUhlYWRlcnMsIHRoaXMuX3Jlc291cmNlLnJlc3BvbnNlSGVhZGVyc1RleHQsIHRo
aXMuX3Jlc3BvbnNlSGVhZGVyc1RyZWVFbGVtZW50KTsKKyAgICAgICAgICAgIHRoaXMuX3JlZnJl
c2hIZWFkZXJzVGV4dChXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlc3BvbnNlIEhlYWRlcnMiKSwg
dGhpcy5fcmVxdWVzdC5zb3J0ZWRSZXNwb25zZUhlYWRlcnMsIHRoaXMuX3JlcXVlc3QucmVzcG9u
c2VIZWFkZXJzVGV4dCwgdGhpcy5fcmVzcG9uc2VIZWFkZXJzVHJlZUVsZW1lbnQpOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICB0aGlzLl9yZWZyZXNoSGVhZGVycyhXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIlJlc3BvbnNlIEhlYWRlcnMiKSwgdGhpcy5fcmVzb3VyY2Uuc29ydGVkUmVzcG9uc2VI
ZWFkZXJzLCBhZGRpdGlvbmFsUm93LCB0aGlzLl9yZXNwb25zZUhlYWRlcnNUcmVlRWxlbWVudCk7
CisgICAgICAgICAgICB0aGlzLl9yZWZyZXNoSGVhZGVycyhXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IlJlc3BvbnNlIEhlYWRlcnMiKSwgdGhpcy5fcmVxdWVzdC5zb3J0ZWRSZXNwb25zZUhlYWRlcnMs
IGFkZGl0aW9uYWxSb3csIHRoaXMuX3Jlc3BvbnNlSGVhZGVyc1RyZWVFbGVtZW50KTsKIAotICAg
ICAgICBpZiAodGhpcy5fcmVzb3VyY2UucmVzcG9uc2VIZWFkZXJzVGV4dCkgeworICAgICAgICBp
ZiAodGhpcy5fcmVxdWVzdC5yZXNwb25zZUhlYWRlcnNUZXh0KSB7CiAgICAgICAgICAgICB2YXIg
dG9nZ2xlQnV0dG9uID0gdGhpcy5fY3JlYXRlSGVhZGVyc1RvZ2dsZUJ1dHRvbih0aGlzLl9zaG93
UmVzcG9uc2VIZWFkZXJzVGV4dCk7CiAgICAgICAgICAgICB0b2dnbGVCdXR0b24uYWRkRXZlbnRM
aXN0ZW5lcigiY2xpY2siLCB0aGlzLl90b2dnbGVSZXNwb25zZUhlYWRlcnNUZXh0LmJpbmQodGhp
cykpOwogICAgICAgICAgICAgdGhpcy5fcmVzcG9uc2VIZWFkZXJzVHJlZUVsZW1lbnQubGlzdEl0
ZW1FbGVtZW50LmFwcGVuZENoaWxkKHRvZ2dsZUJ1dHRvbik7CkBAIC0zMDMsMzAgKzMwNCwzMCBA
QCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VIZWFkZXJzVmlldy5wcm90b3R5cGUgPSB7CiAgICAgX3Jl
ZnJlc2hIVFRQSW5mb3JtYXRpb246IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHZhciByZXF1
ZXN0TWV0aG9kRWxlbWVudCA9IHRoaXMuX3JlcXVlc3RNZXRob2RUcmVlRWxlbWVudDsKLSAgICAg
ICAgcmVxdWVzdE1ldGhvZEVsZW1lbnQuaGlkZGVuID0gIXRoaXMuX3Jlc291cmNlLnN0YXR1c0Nv
ZGU7CisgICAgICAgIHJlcXVlc3RNZXRob2RFbGVtZW50LmhpZGRlbiA9ICF0aGlzLl9yZXF1ZXN0
LnN0YXR1c0NvZGU7CiAgICAgICAgIHZhciBzdGF0dXNDb2RlRWxlbWVudCA9IHRoaXMuX3N0YXR1
c0NvZGVUcmVlRWxlbWVudDsKLSAgICAgICAgc3RhdHVzQ29kZUVsZW1lbnQuaGlkZGVuID0gIXRo
aXMuX3Jlc291cmNlLnN0YXR1c0NvZGU7CisgICAgICAgIHN0YXR1c0NvZGVFbGVtZW50LmhpZGRl
biA9ICF0aGlzLl9yZXF1ZXN0LnN0YXR1c0NvZGU7CiAKLSAgICAgICAgaWYgKHRoaXMuX3Jlc291
cmNlLnN0YXR1c0NvZGUpIHsKKyAgICAgICAgaWYgKHRoaXMuX3JlcXVlc3Quc3RhdHVzQ29kZSkg
ewogICAgICAgICAgICAgdmFyIHN0YXR1c0ltYWdlU291cmNlID0gIiI7Ci0gICAgICAgICAgICBp
ZiAodGhpcy5fcmVzb3VyY2Uuc3RhdHVzQ29kZSA8IDMwMCB8fCB0aGlzLl9yZXNvdXJjZS5zdGF0
dXNDb2RlID09PSAzMDQpCisgICAgICAgICAgICBpZiAodGhpcy5fcmVxdWVzdC5zdGF0dXNDb2Rl
IDwgMzAwIHx8IHRoaXMuX3JlcXVlc3Quc3RhdHVzQ29kZSA9PT0gMzA0KQogICAgICAgICAgICAg
ICAgIHN0YXR1c0ltYWdlU291cmNlID0gIkltYWdlcy9zdWNjZXNzR3JlZW5Eb3QucG5nIjsKLSAg
ICAgICAgICAgIGVsc2UgaWYgKHRoaXMuX3Jlc291cmNlLnN0YXR1c0NvZGUgPCA0MDApCisgICAg
ICAgICAgICBlbHNlIGlmICh0aGlzLl9yZXF1ZXN0LnN0YXR1c0NvZGUgPCA0MDApCiAgICAgICAg
ICAgICAgICAgc3RhdHVzSW1hZ2VTb3VyY2UgPSAiSW1hZ2VzL3dhcm5pbmdPcmFuZ2VEb3QucG5n
IjsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBzdGF0dXNJbWFnZVNvdXJjZSA9
ICJJbWFnZXMvZXJyb3JSZWREb3QucG5nIjsKIAotICAgICAgICAgICAgcmVxdWVzdE1ldGhvZEVs
ZW1lbnQudGl0bGUgPSB0aGlzLl9mb3JtYXRIZWFkZXIoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJS
ZXF1ZXN0IE1ldGhvZCIpLCB0aGlzLl9yZXNvdXJjZS5yZXF1ZXN0TWV0aG9kKTsKKyAgICAgICAg
ICAgIHJlcXVlc3RNZXRob2RFbGVtZW50LnRpdGxlID0gdGhpcy5fZm9ybWF0SGVhZGVyKFdlYklu
c3BlY3Rvci5VSVN0cmluZygiUmVxdWVzdCBNZXRob2QiKSwgdGhpcy5fcmVxdWVzdC5yZXF1ZXN0
TWV0aG9kKTsKIAogICAgICAgICAgICAgdmFyIHN0YXR1c0NvZGVGcmFnbWVudCA9IGRvY3VtZW50
LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKICAgICAgICAgICAgIHN0YXR1c0NvZGVGcmFnbWVu
dC5jcmVhdGVDaGlsZCgiZGl2IiwgImhlYWRlci1uYW1lIikudGV4dENvbnRlbnQgPSBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIlN0YXR1cyBDb2RlIikgKyAiOiI7CiAKICAgICAgICAgICAgIHZhciBz
dGF0dXNDb2RlSW1hZ2UgPSBzdGF0dXNDb2RlRnJhZ21lbnQuY3JlYXRlQ2hpbGQoImltZyIsICJy
ZXNvdXJjZS1zdGF0dXMtaW1hZ2UiKTsKICAgICAgICAgICAgIHN0YXR1c0NvZGVJbWFnZS5zcmMg
PSBzdGF0dXNJbWFnZVNvdXJjZTsKLSAgICAgICAgICAgIHN0YXR1c0NvZGVJbWFnZS50aXRsZSA9
IHRoaXMuX3Jlc291cmNlLnN0YXR1c0NvZGUgKyAiICIgKyB0aGlzLl9yZXNvdXJjZS5zdGF0dXNU
ZXh0OworICAgICAgICAgICAgc3RhdHVzQ29kZUltYWdlLnRpdGxlID0gdGhpcy5fcmVxdWVzdC5z
dGF0dXNDb2RlICsgIiAiICsgdGhpcy5fcmVxdWVzdC5zdGF0dXNUZXh0OwogICAgICAgICAgICAg
dmFyIHZhbHVlID0gc3RhdHVzQ29kZUZyYWdtZW50LmNyZWF0ZUNoaWxkKCJkaXYiLCAiaGVhZGVy
LXZhbHVlIHNvdXJjZS1jb2RlIik7Ci0gICAgICAgICAgICB2YWx1ZS50ZXh0Q29udGVudCA9IHRo
aXMuX3Jlc291cmNlLnN0YXR1c0NvZGUgKyAiICIgKyB0aGlzLl9yZXNvdXJjZS5zdGF0dXNUZXh0
OwotICAgICAgICAgICAgaWYgKHRoaXMuX3Jlc291cmNlLmNhY2hlZCkKKyAgICAgICAgICAgIHZh
bHVlLnRleHRDb250ZW50ID0gdGhpcy5fcmVxdWVzdC5zdGF0dXNDb2RlICsgIiAiICsgdGhpcy5f
cmVxdWVzdC5zdGF0dXNUZXh0OworICAgICAgICAgICAgaWYgKHRoaXMuX3JlcXVlc3QuY2FjaGVk
KQogICAgICAgICAgICAgICAgIHZhbHVlLmNyZWF0ZUNoaWxkKCJzcGFuIiwgInN0YXR1cy1mcm9t
LWNhY2hlIikudGV4dENvbnRlbnQgPSAiICIgKyBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIihmcm9t
IGNhY2hlKSIpOwogCiAgICAgICAgICAgICBzdGF0dXNDb2RlRWxlbWVudC50aXRsZSA9IHN0YXR1
c0NvZGVGcmFnbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvUmVzb3VyY2VTY3JpcHRNYXBwaW5nLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9SZXNvdXJjZVNjcmlwdE1hcHBpbmcuanMKaW5kZXggNzM3OTM2NjIzNzI4MDZl
MDRkMzJiMzE5N2MxOTdlN2QxMjE1N2ZlMy4uYzU2NzIxMjYzMDA3NDE0Mjc4YmI2YjE2MjliNGQ4
MjJlOGM3ZjU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9SZXNvdXJjZVNjcmlwdE1hcHBpbmcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9SZXNvdXJjZVNjcmlwdE1hcHBpbmcuanMKQEAgLTg1LDExICs4NSwxNSBAQCBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VTY3JpcHRNYXBwaW5nLnByb3RvdHlwZSA9IHsKICAgICAgKi8K
ICAgICBhZGRTY3JpcHQ6IGZ1bmN0aW9uKHNjcmlwdCkKICAgICB7Ci0gICAgICAgIHZhciByZXNv
dXJjZSA9IG51bGw7CisgICAgICAgIHZhciByZXF1ZXN0ID0gbnVsbDsKICAgICAgICAgdmFyIGlz
SW5saW5lU2NyaXB0ID0gZmFsc2U7CiAgICAgICAgIGlmIChzY3JpcHQuaXNJbmxpbmVTY3JpcHQo
KSkgewotICAgICAgICAgICAgcmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IubmV0d29ya01hbmFnZXIu
aW5mbGlnaHRSZXNvdXJjZUZvclVSTChzY3JpcHQuc291cmNlVVJMKSB8fCBXZWJJbnNwZWN0b3Iu
cmVzb3VyY2VGb3JVUkwoc2NyaXB0LnNvdXJjZVVSTCk7Ci0gICAgICAgICAgICBpZiAocmVzb3Vy
Y2UgJiYgcmVzb3VyY2UudHlwZSA9PT0gV2ViSW5zcGVjdG9yLnJlc291cmNlVHlwZXMuRG9jdW1l
bnQpIHsKKyAgICAgICAgICAgIHJlcXVlc3QgPSBXZWJJbnNwZWN0b3IubmV0d29ya01hbmFnZXIu
aW5mbGlnaHRSZXF1ZXN0Rm9yVVJMKHNjcmlwdC5zb3VyY2VVUkwpOworICAgICAgICAgICAgaWYg
KCFyZXF1ZXN0KSB7CisgICAgICAgICAgICAgICAgdmFyIHJlc291cmNlID0gV2ViSW5zcGVjdG9y
LnJlc291cmNlRm9yVVJMKHNjcmlwdC5zb3VyY2VVUkwpOworICAgICAgICAgICAgICAgIHJlcXVl
c3QgPSByZXNvdXJjZSA/IHJlc291cmNlLnJlcXVlc3QgOiBudWxsOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgaWYgKHJlcXVlc3QgJiYgcmVxdWVzdC50eXBlID09PSBXZWJJbnNwZWN0b3Iu
cmVzb3VyY2VUeXBlcy5Eb2N1bWVudCkgewogICAgICAgICAgICAgICAgIGlzSW5saW5lU2NyaXB0
ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICB2YXIgcmF3U291cmNlQ29kZSA9IHRoaXMuX3Jhd1Nv
dXJjZUNvZGVGb3JEb2N1bWVudFVSTFtzY3JpcHQuc291cmNlVVJMXTsKICAgICAgICAgICAgICAg
ICBpZiAocmF3U291cmNlQ29kZSkgewpAQCAtMTAwLDcgKzEwNCw3IEBAIFdlYkluc3BlY3Rvci5S
ZXNvdXJjZVNjcmlwdE1hcHBpbmcucHJvdG90eXBlID0gewogICAgICAgICAgICAgfQogICAgICAg
ICB9CiAKLSAgICAgICAgdmFyIHJhd1NvdXJjZUNvZGUgPSBuZXcgV2ViSW5zcGVjdG9yLlJhd1Nv
dXJjZUNvZGUoc2NyaXB0LnNjcmlwdElkLCBzY3JpcHQsIHJlc291cmNlLCB0aGlzLl9mb3JtYXR0
ZXIsIHRoaXMuX2Zvcm1hdFNvdXJjZSk7CisgICAgICAgIHZhciByYXdTb3VyY2VDb2RlID0gbmV3
IFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlKHNjcmlwdC5zY3JpcHRJZCwgc2NyaXB0LCByZXF1
ZXN0LCB0aGlzLl9mb3JtYXR0ZXIsIHRoaXMuX2Zvcm1hdFNvdXJjZSk7CiAgICAgICAgIHRoaXMu
X3Jhd1NvdXJjZUNvZGVzLnB1c2gocmF3U291cmNlQ29kZSk7CiAgICAgICAgIHRoaXMuX2JpbmRT
Y3JpcHRUb1Jhd1NvdXJjZUNvZGUoc2NyaXB0LCByYXdTb3VyY2VDb2RlKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVRpbWluZ1ZpZXcu
anMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVGltaW5nVmll
dy5qcwppbmRleCBmMWM4NmQxODM1NTBkNWJhNjhkZWVkYmRlMDg4YzcxMzg3ZjFlNzRjLi4wMGNh
YTk2ZTllODI3OWU1YTE0Yjg0Y2M1YzU3N2IwNWNiMjZjOTc4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVGltaW5nVmlldy5qcworKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVGltaW5nVmlldy5qcwpA
QCAtMjksMjMgKzI5LDI0IEBACiAgKi8KIAogLyoqCi0gKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9y
LlZpZXd9CiAgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuVmlld30K
KyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLk5ldHdvcmtSZXF1ZXN0fSByZXF1ZXN0CiAgKi8KLVdl
Ykluc3BlY3Rvci5SZXNvdXJjZVRpbWluZ1ZpZXcgPSBmdW5jdGlvbihyZXNvdXJjZSkKK1dlYklu
c3BlY3Rvci5SZXNvdXJjZVRpbWluZ1ZpZXcgPSBmdW5jdGlvbihyZXF1ZXN0KQogewogICAgIFdl
Ykluc3BlY3Rvci5WaWV3LmNhbGwodGhpcyk7CiAgICAgdGhpcy5lbGVtZW50LmFkZFN0eWxlQ2xh
c3MoInJlc291cmNlLXRpbWluZy12aWV3Iik7CiAKLSAgICB0aGlzLl9yZXNvdXJjZSA9IHJlc291
cmNlOworICAgIHRoaXMuX3JlcXVlc3QgPSByZXF1ZXN0OwogCi0gICAgcmVzb3VyY2UuYWRkRXZl
bnRMaXN0ZW5lcigidGltaW5nIGNoYW5nZWQiLCB0aGlzLl9yZWZyZXNoLCB0aGlzKTsKKyAgICBy
ZXF1ZXN0LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLk5ldHdvcmtSZXF1ZXN0LkV2ZW50
cy5UaW1pbmdDaGFuZ2VkLCB0aGlzLl9yZWZyZXNoLCB0aGlzKTsKIH0KIAogV2ViSW5zcGVjdG9y
LlJlc291cmNlVGltaW5nVmlldy5wcm90b3R5cGUgPSB7CiAgICAgd2FzU2hvd246IGZ1bmN0aW9u
KCkKICAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fcmVzb3VyY2UudGltaW5nKSB7CisgICAgICAg
IGlmICghdGhpcy5fcmVxdWVzdC50aW1pbmcpIHsKICAgICAgICAgICAgIGlmICghdGhpcy5fZW1w
dHlWaWV3KSB7CiAgICAgICAgICAgICAgICAgdGhpcy5fZW1wdHlWaWV3ID0gbmV3IFdlYkluc3Bl
Y3Rvci5FbXB0eVZpZXcoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUaGlzIHJlcXVlc3QgaGFzIG5v
IGRldGFpbGVkIHRpbWluZyBpbmZvLiIpKTsKICAgICAgICAgICAgICAgICB0aGlzLl9lbXB0eVZp
ZXcuc2hvdyh0aGlzLmVsZW1lbnQpOwpAQCAtNjcsMTIgKzY4LDEyIEBAIFdlYkluc3BlY3Rvci5S
ZXNvdXJjZVRpbWluZ1ZpZXcucHJvdG90eXBlID0gewogICAgICAgICBpZiAodGhpcy5fdGFibGVF
bGVtZW50KQogICAgICAgICAgICAgdGhpcy5fdGFibGVFbGVtZW50LnBhcmVudEVsZW1lbnQucmVt
b3ZlQ2hpbGQodGhpcy5fdGFibGVFbGVtZW50KTsKIAotICAgICAgICB0aGlzLl90YWJsZUVsZW1l
bnQgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUaW1pbmdWaWV3LmNyZWF0ZVRpbWluZ1RhYmxlKHRo
aXMuX3Jlc291cmNlKTsKKyAgICAgICAgdGhpcy5fdGFibGVFbGVtZW50ID0gV2ViSW5zcGVjdG9y
LlJlc291cmNlVGltaW5nVmlldy5jcmVhdGVUaW1pbmdUYWJsZSh0aGlzLl9yZXF1ZXN0KTsKICAg
ICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3RhYmxlRWxlbWVudCk7CiAgICAg
fQogfQogCi1XZWJJbnNwZWN0b3IuUmVzb3VyY2VUaW1pbmdWaWV3LmNyZWF0ZVRpbWluZ1RhYmxl
ID0gZnVuY3Rpb24ocmVzb3VyY2UpCitXZWJJbnNwZWN0b3IuUmVzb3VyY2VUaW1pbmdWaWV3LmNy
ZWF0ZVRpbWluZ1RhYmxlID0gZnVuY3Rpb24ocmVxdWVzdCkKIHsKICAgICB2YXIgdGFibGVFbGVt
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGFibGUiKTsKICAgICB2YXIgcm93cyA9IFtd
OwpAQCAtODcsMzcgKzg4LDM3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRpbWluZ1ZpZXcuY3Jl
YXRlVGltaW5nVGFibGUgPSBmdW5jdGlvbihyZXNvdXJjZSkKICAgICAgICAgcm93cy5wdXNoKHJv
dyk7CiAgICAgfQogCi0gICAgaWYgKHJlc291cmNlLnRpbWluZy5wcm94eVN0YXJ0ICE9PSAtMSkK
LSAgICAgICAgYWRkUm93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiUHJveHkiKSwgInByb3h5Iiwg
cmVzb3VyY2UudGltaW5nLnByb3h5U3RhcnQsIHJlc291cmNlLnRpbWluZy5wcm94eUVuZCk7Cisg
ICAgaWYgKHJlcXVlc3QudGltaW5nLnByb3h5U3RhcnQgIT09IC0xKQorICAgICAgICBhZGRSb3co
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQcm94eSIpLCAicHJveHkiLCByZXF1ZXN0LnRpbWluZy5w
cm94eVN0YXJ0LCByZXF1ZXN0LnRpbWluZy5wcm94eUVuZCk7CiAKLSAgICBpZiAocmVzb3VyY2Uu
dGltaW5nLmRuc1N0YXJ0ICE9PSAtMSkKLSAgICAgICAgYWRkUm93KFdlYkluc3BlY3Rvci5VSVN0
cmluZygiRE5TIExvb2t1cCIpLCAiZG5zIiwgcmVzb3VyY2UudGltaW5nLmRuc1N0YXJ0LCByZXNv
dXJjZS50aW1pbmcuZG5zRW5kKTsKKyAgICBpZiAocmVxdWVzdC50aW1pbmcuZG5zU3RhcnQgIT09
IC0xKQorICAgICAgICBhZGRSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJETlMgTG9va3VwIiks
ICJkbnMiLCByZXF1ZXN0LnRpbWluZy5kbnNTdGFydCwgcmVxdWVzdC50aW1pbmcuZG5zRW5kKTsK
IAotICAgIGlmIChyZXNvdXJjZS50aW1pbmcuY29ubmVjdFN0YXJ0ICE9PSAtMSkgewotICAgICAg
ICBpZiAocmVzb3VyY2UuY29ubmVjdGlvblJldXNlZCkKLSAgICAgICAgICAgIGFkZFJvdyhXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIkJsb2NraW5nIiksICJjb25uZWN0aW5nIiwgcmVzb3VyY2UudGlt
aW5nLmNvbm5lY3RTdGFydCwgcmVzb3VyY2UudGltaW5nLmNvbm5lY3RFbmQpOworICAgIGlmIChy
ZXF1ZXN0LnRpbWluZy5jb25uZWN0U3RhcnQgIT09IC0xKSB7CisgICAgICAgIGlmIChyZXF1ZXN0
LmNvbm5lY3Rpb25SZXVzZWQpCisgICAgICAgICAgICBhZGRSb3coV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJCbG9ja2luZyIpLCAiY29ubmVjdGluZyIsIHJlcXVlc3QudGltaW5nLmNvbm5lY3RTdGFy
dCwgcmVxdWVzdC50aW1pbmcuY29ubmVjdEVuZCk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgdmFyIGNvbm5lY3RTdGFydCA9IHJlc291cmNlLnRpbWluZy5jb25uZWN0U3RhcnQ7CisgICAg
ICAgICAgICB2YXIgY29ubmVjdFN0YXJ0ID0gcmVxdWVzdC50aW1pbmcuY29ubmVjdFN0YXJ0Owog
ICAgICAgICAgICAgLy8gQ29ubmVjdGlvbiBpbmNsdWRlcyBETlMsIHN1YnRyYWN0IGl0IGhlcmUu
Ci0gICAgICAgICAgICBpZiAocmVzb3VyY2UudGltaW5nLmRuc1N0YXJ0ICE9PSAtMSkKLSAgICAg
ICAgICAgICAgICBjb25uZWN0U3RhcnQgKz0gcmVzb3VyY2UudGltaW5nLmRuc0VuZCAtIHJlc291
cmNlLnRpbWluZy5kbnNTdGFydDsKLSAgICAgICAgICAgIGFkZFJvdyhXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIkNvbm5lY3RpbmciKSwgImNvbm5lY3RpbmciLCBjb25uZWN0U3RhcnQsIHJlc291cmNl
LnRpbWluZy5jb25uZWN0RW5kKTsKKyAgICAgICAgICAgIGlmIChyZXF1ZXN0LnRpbWluZy5kbnNT
dGFydCAhPT0gLTEpCisgICAgICAgICAgICAgICAgY29ubmVjdFN0YXJ0ICs9IHJlcXVlc3QudGlt
aW5nLmRuc0VuZCAtIHJlcXVlc3QudGltaW5nLmRuc1N0YXJ0OworICAgICAgICAgICAgYWRkUm93
KFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29ubmVjdGluZyIpLCAiY29ubmVjdGluZyIsIGNvbm5l
Y3RTdGFydCwgcmVxdWVzdC50aW1pbmcuY29ubmVjdEVuZCk7CiAgICAgICAgIH0KICAgICB9CiAK
LSAgICBpZiAocmVzb3VyY2UudGltaW5nLnNzbFN0YXJ0ICE9PSAtMSkKLSAgICAgICAgYWRkUm93
KFdlYkluc3BlY3Rvci5VSVN0cmluZygiU1NMIiksICJzc2wiLCByZXNvdXJjZS50aW1pbmcuc3Ns
U3RhcnQsIHJlc291cmNlLnRpbWluZy5zc2xFbmQpOworICAgIGlmIChyZXF1ZXN0LnRpbWluZy5z
c2xTdGFydCAhPT0gLTEpCisgICAgICAgIGFkZFJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNT
TCIpLCAic3NsIiwgcmVxdWVzdC50aW1pbmcuc3NsU3RhcnQsIHJlcXVlc3QudGltaW5nLnNzbEVu
ZCk7CiAKLSAgICB2YXIgc2VuZFN0YXJ0ID0gcmVzb3VyY2UudGltaW5nLnNlbmRTdGFydDsKLSAg
ICBpZiAocmVzb3VyY2UudGltaW5nLnNzbFN0YXJ0ICE9PSAtMSkKLSAgICAgICAgc2VuZFN0YXJ0
ICs9IHJlc291cmNlLnRpbWluZy5zc2xFbmQgLSByZXNvdXJjZS50aW1pbmcuc3NsU3RhcnQ7Cisg
ICAgdmFyIHNlbmRTdGFydCA9IHJlcXVlc3QudGltaW5nLnNlbmRTdGFydDsKKyAgICBpZiAocmVx
dWVzdC50aW1pbmcuc3NsU3RhcnQgIT09IC0xKQorICAgICAgICBzZW5kU3RhcnQgKz0gcmVxdWVz
dC50aW1pbmcuc3NsRW5kIC0gcmVxdWVzdC50aW1pbmcuc3NsU3RhcnQ7CiAKLSAgICBhZGRSb3co
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTZW5kaW5nIiksICJzZW5kaW5nIiwgcmVzb3VyY2UudGlt
aW5nLnNlbmRTdGFydCwgcmVzb3VyY2UudGltaW5nLnNlbmRFbmQpOwotICAgIGFkZFJvdyhXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIldhaXRpbmciKSwgIndhaXRpbmciLCByZXNvdXJjZS50aW1pbmcu
c2VuZEVuZCwgcmVzb3VyY2UudGltaW5nLnJlY2VpdmVIZWFkZXJzRW5kKTsKLSAgICBhZGRSb3co
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZWNlaXZpbmciKSwgInJlY2VpdmluZyIsIChyZXNvdXJj
ZS5yZXNwb25zZVJlY2VpdmVkVGltZSAtIHJlc291cmNlLnRpbWluZy5yZXF1ZXN0VGltZSkgKiAx
MDAwLCAocmVzb3VyY2UuZW5kVGltZSAtIHJlc291cmNlLnRpbWluZy5yZXF1ZXN0VGltZSkgKiAx
MDAwKTsKKyAgICBhZGRSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTZW5kaW5nIiksICJzZW5k
aW5nIiwgcmVxdWVzdC50aW1pbmcuc2VuZFN0YXJ0LCByZXF1ZXN0LnRpbWluZy5zZW5kRW5kKTsK
KyAgICBhZGRSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJXYWl0aW5nIiksICJ3YWl0aW5nIiwg
cmVxdWVzdC50aW1pbmcuc2VuZEVuZCwgcmVxdWVzdC50aW1pbmcucmVjZWl2ZUhlYWRlcnNFbmQp
OworICAgIGFkZFJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlY2VpdmluZyIpLCAicmVjZWl2
aW5nIiwgKHJlcXVlc3QucmVzcG9uc2VSZWNlaXZlZFRpbWUgLSByZXF1ZXN0LnRpbWluZy5yZXF1
ZXN0VGltZSkgKiAxMDAwLCAocmVxdWVzdC5lbmRUaW1lIC0gcmVxdWVzdC50aW1pbmcucmVxdWVz
dFRpbWUpICogMTAwMCk7CiAKICAgICBjb25zdCBjaGFydFdpZHRoID0gMjAwOwotICAgIHZhciB0
b3RhbCA9IChyZXNvdXJjZS5lbmRUaW1lIC0gcmVzb3VyY2UudGltaW5nLnJlcXVlc3RUaW1lKSAq
IDEwMDA7CisgICAgdmFyIHRvdGFsID0gKHJlcXVlc3QuZW5kVGltZSAtIHJlcXVlc3QudGltaW5n
LnJlcXVlc3RUaW1lKSAqIDEwMDA7CiAgICAgdmFyIHNjYWxlID0gY2hhcnRXaWR0aCAvIHRvdGFs
OwogCiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByb3dzLmxlbmd0aDsgKytpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVHJlZU1vZGVs
LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVRyZWVNb2Rl
bC5qcwppbmRleCA2ZGU2ZTIzN2MwOTkxNzk4NDI5ZjRjNGM2ZWZlMTY5MGQ2N2IyNWVjLi43ZDQ4
NDIxMjliMDIyMjA1ZWUwMTQzZDNkNjA1NGU1MTdiMjk4Y2NlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVHJlZU1vZGVsLmpzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VUcmVlTW9kZWwuanMKQEAg
LTM2LDkgKzM2LDkgQEAKIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbCA9IGZ1bmN0aW9u
KG5ldHdvcmtNYW5hZ2VyKQogewogICAgIG5ldHdvcmtNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLkV2ZW50VHlwZXMuUmVzb3VyY2VUcmFja2luZ0Vu
YWJsZWQsIHRoaXMuX29uUmVzb3VyY2VUcmFja2luZ0VuYWJsZWQsIHRoaXMpOwotICAgIG5ldHdv
cmtNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLkV2
ZW50VHlwZXMuUmVzb3VyY2VVcGRhdGVkLCB0aGlzLl9vblJlc291cmNlVXBkYXRlZCwgdGhpcyk7
Ci0gICAgbmV0d29ya01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuTmV0d29y
a01hbmFnZXIuRXZlbnRUeXBlcy5SZXNvdXJjZUZpbmlzaGVkLCB0aGlzLl9vblJlc291cmNlVXBk
YXRlZCwgdGhpcyk7Ci0gICAgbmV0d29ya01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuTmV0d29ya01hbmFnZXIuRXZlbnRUeXBlcy5SZXNvdXJjZVVwZGF0ZURyb3BwZWQsIHRo
aXMuX29uUmVzb3VyY2VVcGRhdGVEcm9wcGVkLCB0aGlzKTsKKyAgICBuZXR3b3JrTWFuYWdlci5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5FdmVudFR5cGVzLlJl
cXVlc3RVcGRhdGVkLCB0aGlzLl9vblJlcXVlc3RVcGRhdGVkLCB0aGlzKTsKKyAgICBuZXR3b3Jr
TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5FdmVu
dFR5cGVzLlJlcXVlc3RGaW5pc2hlZCwgdGhpcy5fb25SZXF1ZXN0VXBkYXRlZCwgdGhpcyk7Cisg
ICAgbmV0d29ya01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuTmV0d29ya01h
bmFnZXIuRXZlbnRUeXBlcy5SZXF1ZXN0VXBkYXRlRHJvcHBlZCwgdGhpcy5fb25SZXF1ZXN0VXBk
YXRlRHJvcHBlZCwgdGhpcyk7CiAKICAgICBXZWJJbnNwZWN0b3IuY29uc29sZS5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5Db25zb2xlTW9kZWwuRXZlbnRzLk1lc3NhZ2VBZGRlZCwgdGhp
cy5fY29uc29sZU1lc3NhZ2VBZGRlZCwgdGhpcyk7CiAgICAgV2ViSW5zcGVjdG9yLmNvbnNvbGUu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQ29uc29sZU1vZGVsLkV2ZW50cy5SZXBlYXRD
b3VudFVwZGF0ZWQsIHRoaXMuX2NvbnNvbGVNZXNzYWdlQWRkZWQsIHRoaXMpOwpAQCAtMTYzLDcg
KzE2Myw3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5wcm90b3R5cGUgPSB7CiAg
ICAgICovCiAgICAgX2Zyb250ZW5kUmV1c2VkOiBmdW5jdGlvbihmcmFtZVBheWxvYWQpCiAgICAg
ewotICAgICAgICBpZiAoIWZyYW1lUGF5bG9hZC5wYXJlbnRJZCAmJiAhV2ViSW5zcGVjdG9yLm5l
dHdvcmtMb2cucmVzb3VyY2VzLmxlbmd0aCkgeworICAgICAgICBpZiAoIWZyYW1lUGF5bG9hZC5w
YXJlbnRJZCAmJiAhV2ViSW5zcGVjdG9yLm5ldHdvcmtMb2cucmVxdWVzdHMubGVuZ3RoKSB7CiAg
ICAgICAgICAgICAvLyBXZSBhcmUgbmF2aWdhdGluZyBtYWluIGZyYW1lIHRvIHRoZSBleGlzdGlu
ZyBsb2FkZWQgYmFja2VuZCAobm8gcHJvdmlzaW91YWwgbG9hZGVkIHJlc291cmNlcyBhcmUgdGhl
cmUpLiAKICAgICAgICAgICAgIHRoaXMuX2ZldGNoUmVzb3VyY2VUcmVlKCk7CiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKQEAgLTE5MywyNiArMTkzLDI2IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJj
ZVRyZWVNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgLyoqCiAgICAgICogQHBhcmFtIHtXZWJJbnNw
ZWN0b3IuRXZlbnR9IGV2ZW50CiAgICAgICovCi0gICAgX29uUmVzb3VyY2VVcGRhdGVkOiBmdW5j
dGlvbihldmVudCkKKyAgICBfb25SZXF1ZXN0VXBkYXRlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAg
ewogICAgICAgICBpZiAoIXRoaXMuX2NhY2hlZFJlc291cmNlc1Byb2Nlc3NlZCkKICAgICAgICAg
ICAgIHJldHVybjsKIAotICAgICAgICB2YXIgcmVzb3VyY2UgPSAvKiogQHR5cGUge1dlYkluc3Bl
Y3Rvci5SZXNvdXJjZX0gKi8gZXZlbnQuZGF0YTsKLSAgICAgICAgdGhpcy5fYWRkUGVuZGluZ0Nv
bnNvbGVNZXNzYWdlc1RvUmVzb3VyY2UocmVzb3VyY2UpOwotCi0gICAgICAgIGlmIChyZXNvdXJj
ZS5mYWlsZWQgfHwgcmVzb3VyY2UudHlwZSA9PT0gV2ViSW5zcGVjdG9yLnJlc291cmNlVHlwZXMu
WEhSKQorICAgICAgICB2YXIgcmVxdWVzdCA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLk5ldHdv
cmtSZXF1ZXN0fSAqLyBldmVudC5kYXRhOworICAgICAgICBpZiAocmVxdWVzdC5mYWlsZWQgfHwg
cmVxdWVzdC50eXBlID09PSBXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5YSFIpCiAgICAgICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgdmFyIGZyYW1lID0gdGhpcy5fZnJhbWVzW3Jlc291cmNl
LmZyYW1lSWRdOwotICAgICAgICBpZiAoZnJhbWUpCi0gICAgICAgICAgICBmcmFtZS5fYWRkUmVz
b3VyY2UocmVzb3VyY2UpOworICAgICAgICB2YXIgZnJhbWUgPSB0aGlzLl9mcmFtZXNbcmVxdWVz
dC5mcmFtZUlkXTsKKyAgICAgICAgaWYgKGZyYW1lKSB7CisgICAgICAgICAgICB2YXIgcmVzb3Vy
Y2UgPSBmcmFtZS5fYWRkUmVxdWVzdChyZXF1ZXN0KTsKKyAgICAgICAgICAgIHRoaXMuX2FkZFBl
bmRpbmdDb25zb2xlTWVzc2FnZXNUb1Jlc291cmNlKHJlc291cmNlKTsKKyAgICAgICAgfQogICAg
IH0sCiAKICAgICAvKioKICAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5FdmVudH0gZXZlbnQK
ICAgICAgKi8KLSAgICBfb25SZXNvdXJjZVVwZGF0ZURyb3BwZWQ6IGZ1bmN0aW9uKGV2ZW50KQor
ICAgIF9vblJlcXVlc3RVcGRhdGVEcm9wcGVkOiBmdW5jdGlvbihldmVudCkKICAgICB7CiAgICAg
ICAgIGlmICghdGhpcy5fY2FjaGVkUmVzb3VyY2VzUHJvY2Vzc2VkKQogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtMzg1LDcgKzM4NSw3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5w
cm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX2NyZWF0ZVJlc291cmNlOiBmdW5jdGlvbih1cmws
IGRvY3VtZW50VVJMLCBmcmFtZUlkLCBsb2FkZXJJZCkKICAgICB7Ci0gICAgICAgIHZhciByZXNv
dXJjZSA9IG5ldyBXZWJJbnNwZWN0b3IuUmVzb3VyY2UoIiIsIHVybCwgZnJhbWVJZCwgbG9hZGVy
SWQpOworICAgICAgICB2YXIgcmVzb3VyY2UgPSBuZXcgV2ViSW5zcGVjdG9yLlJlc291cmNlKG51
bGwsIHVybCwgZnJhbWVJZCwgbG9hZGVySWQpOwogICAgICAgICByZXNvdXJjZS5kb2N1bWVudFVS
TCA9IGRvY3VtZW50VVJMOwogICAgICAgICByZXR1cm4gcmVzb3VyY2U7CiAgICAgfQpAQCAtNDAy
LDcgKzQwMiw3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5wcm90b3R5cGUuX19w
cm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5CiBXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2VUcmVlRnJhbWUgPSBmdW5jdGlvbihtb2RlbCwgcGFyZW50RnJhbWUsIHBheWxvYWQpCiB7CiAg
ICAgdGhpcy5fbW9kZWwgPSBtb2RlbDsKLSAgICB0aGlzLl9wYXJlbnRGcmFtZSA9IHBhcmVudEZy
YW1lOyAKKyAgICB0aGlzLl9wYXJlbnRGcmFtZSA9IHBhcmVudEZyYW1lOwogCiAgICAgdGhpcy5f
aWQgPSBwYXlsb2FkLmlkOwogICAgIHRoaXMuX2xvYWRlcklkID0gcGF5bG9hZC5sb2FkZXJJZDsK
QEAgLTU1Myw2ICs1NTMsMjMgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUZyYW1lLnByb3Rv
dHlwZSA9IHsKICAgICB9LAogCiAgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3Iu
TmV0d29ya1JlcXVlc3R9IHJlcXVlc3QKKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuUmVz
b3VyY2V9CisgICAgICovCisgICAgX2FkZFJlcXVlc3Q6IGZ1bmN0aW9uKHJlcXVlc3QpCisgICAg
eworICAgICAgICB2YXIgcmVzb3VyY2UgPSB0aGlzLl9yZXNvdXJjZXNNYXBbcmVxdWVzdC51cmxd
OworICAgICAgICBpZiAocmVzb3VyY2UgJiYgcmVzb3VyY2UucmVxdWVzdCA9PT0gcmVxdWVzdCkg
eworICAgICAgICAgICAgLy8gQWxyZWFkeSBpbiB0aGUgdHJlZSwgd2UganVzdCBnb3QgYW4gZXh0
cmEgdXBkYXRlLgorICAgICAgICAgICAgcmV0dXJuIHJlc291cmNlOworICAgICAgICB9CisgICAg
ICAgIHJlc291cmNlID0gbmV3IFdlYkluc3BlY3Rvci5SZXNvdXJjZShyZXF1ZXN0LCByZXF1ZXN0
LnVybCwgcmVxdWVzdC5mcmFtZUlkLCByZXF1ZXN0LmxvYWRlcklkKTsKKyAgICAgICAgdGhpcy5f
cmVzb3VyY2VzTWFwW3Jlc291cmNlLnVybF0gPSByZXNvdXJjZTsKKyAgICAgICAgdGhpcy5fbW9k
ZWwuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2Rl
bC5FdmVudFR5cGVzLlJlc291cmNlQWRkZWQsIHJlc291cmNlKTsKKyAgICAgICAgcmV0dXJuIHJl
c291cmNlOworICAgIH0sCisKKyAgICAvKioKICAgICAgKiBAcmV0dXJuIHtBcnJheS48V2ViSW5z
cGVjdG9yLlJlc291cmNlPn0KICAgICAgKi8KICAgICByZXNvdXJjZXM6IGZ1bmN0aW9uKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VVdGls
cy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VVdGlscy5q
cwppbmRleCAzMzY0MjQ0OWM3ZDgzMDQwYmZiOTBkZWE3MmM3OWU5MTNiYTMwNDljLi5mODIwYjBj
YWY4YjZkZjU0NjQ2NDFhMGQzODFkMzA4OGZhZDRhZDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVXRpbHMuanMKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVV0aWxzLmpzCkBAIC0yMTEsNyArMjEx
LDcgQEAgV2ViSW5zcGVjdG9yLmxpbmtpZnlSZXNvdXJjZUFzTm9kZSA9IGZ1bmN0aW9uKHVybCwg
bGluZU51bWJlciwgY2xhc3NlcywgdG9vbHRpcFQKIH0KIAogLyoqCi0gKiBAcGFyYW0ge1dlYklu
c3BlY3Rvci5SZXNvdXJjZX0gcmVxdWVzdAorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuTmV0d29y
a1JlcXVlc3R9IHJlcXVlc3QKICAqIEBwYXJhbSB7c3RyaW5nPX0gY2xhc3NlcwogICogQHJldHVy
biB7RWxlbWVudH0KICAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKaW5kZXggZmZmNzc4NWVmZjQ3Y2RiOTBkNTkzNWM4ODFk
YTRiNmEyYjczMjE1MS4uYjEzZjQzZDcwOTM1NzkzY2VmZjg1M2I2Y2RmYjIwYWU5NGYwZjMzYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQ
YW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNl
c1BhbmVsLmpzCkBAIC0xMjYwLDEwICsxMjYwLDEwIEBAIFdlYkluc3BlY3Rvci5GcmFtZVJlc291
cmNlVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogCiAgICAgX2FwcGVuZE9wZW5Jbk5ldHdvcmtQ
YW5lbEFjdGlvbjogZnVuY3Rpb24oY29udGV4dE1lbnUsIGV2ZW50KQogICAgIHsKLSAgICAgICAg
aWYgKCF0aGlzLl9yZXNvdXJjZS5yZXF1ZXN0SWQpCisgICAgICAgIGlmICghdGhpcy5fcmVzb3Vy
Y2UucmVxdWVzdCkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBjb250ZXh0TWVudS5h
cHBlbmRJdGVtKFdlYkluc3BlY3Rvci5vcGVuSW5OZXR3b3JrUGFuZWxMYWJlbCgpLCBXZWJJbnNw
ZWN0b3Iub3BlblJlcXVlc3RJbk5ldHdvcmtQYW5lbC5iaW5kKFdlYkluc3BlY3RvciwgdGhpcy5f
cmVzb3VyY2UpKTsKKyAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3Iu
b3BlbkluTmV0d29ya1BhbmVsTGFiZWwoKSwgV2ViSW5zcGVjdG9yLm9wZW5SZXF1ZXN0SW5OZXR3
b3JrUGFuZWwuYmluZChXZWJJbnNwZWN0b3IsIHRoaXMuX3Jlc291cmNlLnJlcXVlc3QpKTsKICAg
ICB9LAogCiAgICAgX2FwcGVuZFNhdmVBc0FjdGlvbjogZnVuY3Rpb24oY29udGV4dE1lbnUsIGV2
ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJL
aXQucXJjIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCmlu
ZGV4IGFhMmFiMTNhMDdjMjdmMGM0YzU5MjlhOTVjNzUzMTljMWI5OTczNTAuLjM2NGIwYjIyZjVj
YWMzOWQ5MDY0MWVhNGExNWYyZGJlY2E3NDFlYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKQEAgLTg1LDYgKzg1LDcgQEAKICAgICA8ZmlsZT5O
ZXR3b3JrTG9nLmpzPC9maWxlPgogICAgIDxmaWxlPk5ldHdvcmtNYW5hZ2VyLmpzPC9maWxlPgog
ICAgIDxmaWxlPk5ldHdvcmtQYW5lbC5qczwvZmlsZT4KKyAgICA8ZmlsZT5OZXR3b3JrUmVxdWVz
dC5qczwvZmlsZT4KICAgICA8ZmlsZT5PYmplY3QuanM8L2ZpbGU+CiAgICAgPGZpbGU+T2JqZWN0
UG9wb3ZlckhlbHBlci5qczwvZmlsZT4KICAgICA8ZmlsZT5PYmplY3RQcm9wZXJ0aWVzU2VjdGlv
bi5qczwvZmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvZXh0ZXJucy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvZXh0ZXJu
cy5qcwppbmRleCA5MjcwYzFlNmJiMTQxN2NmMTllNDllY2Y5NjJmNmZhMGYzOWU0YzY0Li40NWYz
MjVkMjMwYTg3OWNhMWNiYzFmODRiNDFiMWUzODg0ODE2ZGUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2V4dGVybnMuanMKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9leHRlcm5zLmpzCkBAIC04NiwxMiArODYsMTIgQEAgdmFy
IFdlYkluc3BlY3RvciA9IHt9CiAKIC8qKgogICogQHBhcmFtIHtOZXR3b3JrQWdlbnQuUmVxdWVz
dElkfSByZXF1ZXN0SWQKLSAqIEByZXR1cm4gez9XZWJJbnNwZWN0b3IuUmVzb3VyY2V9CisgKiBA
cmV0dXJuIHs/V2ViSW5zcGVjdG9yLk5ldHdvcmtSZXF1ZXN0fQogICovCi1XZWJJbnNwZWN0b3Iu
bmV0d29ya1Jlc291cmNlQnlJZCA9IGZ1bmN0aW9uKHJlcXVlc3RJZCkKK1dlYkluc3BlY3Rvci5u
ZXR3b3JrUmVxdWVzdEJ5SWQgPSBmdW5jdGlvbihyZXF1ZXN0SWQpCiB7CiB9Ci0KKyAgCiBXZWJJ
bnNwZWN0b3IucGFuZWxzID0ge307CiAKIC8qKgpAQCAtMTE2LDYgKzExNiw3IEBAIFdlYkluc3Bl
Y3Rvci5hZGRNYWluRXZlbnRMaXN0ZW5lcnMgPSBmdW5jdGlvbihkb2MpIHt9CiAKIFdlYkluc3Bl
Y3Rvci5vcGVuUmVzb3VyY2UgPSBmdW5jdGlvbih1cmwsIGV4dGVybmFsKSB7fQogCisvKiogQHBh
cmFtIHtXZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVlc3R9IHJlcXVlc3QgKi8KIFdlYkluc3BlY3Rv
ci5vcGVuUmVxdWVzdEluTmV0d29ya1BhbmVsID0gZnVuY3Rpb24ocmVxdWVzdCkge30KIAogV2Vi
SW5zcGVjdG9yLnBvcHVsYXRlUmVzb3VyY2VDb250ZXh0TWVudSA9IGZ1bmN0aW9uKGNvbnRleHRN
ZW51LCB1cmwsIHByZWZlcnJlZExpbmVOdW1iZXIpIHt9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAppbmRleCAxZjk2NjcxM2MxMmRiMDIw
YWIxYjkwNTMxNjhkZmY3MmExM2UxYzZhLi4yYmYyOWViZWE4NThhMDFiMTM2MzUzZjk2N2ViZWYz
NzMzMTI0YTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L2luc3BlY3Rvci5odG1sCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
aW5zcGVjdG9yLmh0bWwKQEAgLTY1LDYgKzY1LDcgQEAgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAgICA8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJBZHZhbmNlZFNlYXJjaENvbnRyb2xsZXIuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlRpbWVsaW5l
R3JpZC5qcyI+PC9zY3JpcHQ+ICAgIAogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
IiBzcmM9IlJlc291cmNlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCIgc3JjPSJOZXR3b3JrUmVxdWVzdC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iQ1NTU3R5bGVNb2RlbC5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iTmV0d29ya01hbmFnZXIuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ik5ldHdv
cmtMb2cuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9pbnNwZWN0b3IuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5qcwppbmRleCA0MjliODU5ZGE3NzY2OTQ3NDQ3MDdlOWNmMzlhOGI0MTVm
MjQ3Y2EyLi40MjMxZTRjMjE4MjFiYTEzZTVlMjBmN2MwNmU1NGJlNjM3NWUyMWU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwpAQCAtMjgz
LDkgKzI4MywxMyBAQCB2YXIgV2ViSW5zcGVjdG9yID0gewogICAgICAgICAgICAgZXJyb3JXYXJu
aW5nRWxlbWVudC50aXRsZSA9IG51bGw7CiAgICAgfSwKIAotICAgIG5ldHdvcmtSZXNvdXJjZUJ5
SWQ6IGZ1bmN0aW9uKGlkKQorICAgIC8qKgorICAgICAqIEBwYXJhbSB7TmV0d29ya0FnZW50LlJl
cXVlc3RJZH0gcmVxdWVzdElkCisgICAgICogQHJldHVybiB7P1dlYkluc3BlY3Rvci5OZXR3b3Jr
UmVxdWVzdH0KKyAgICAgKi8KKyAgICBuZXR3b3JrUmVxdWVzdEJ5SWQ6IGZ1bmN0aW9uKHJlcXVl
c3RJZCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLnBhbmVscy5uZXR3b3JrLnJlc291cmNl
QnlJZChpZCk7CisgICAgICAgIHJldHVybiB0aGlzLnBhbmVscy5uZXR3b3JrLnJlcXVlc3RCeUlk
KHJlcXVlc3RJZCk7CiAgICAgfSwKIAogICAgIGdldCBpbnNwZWN0ZWRQYWdlRG9tYWluKCkKQEAg
LTY0OCwxMCArNjUyLDEwIEBAIFdlYkluc3BlY3Rvci5vcGVuUmVzb3VyY2UgPSBmdW5jdGlvbihy
ZXNvdXJjZVVSTCwgaW5SZXNvdXJjZXNQYW5lbCkKICAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRI
b3N0Lm9wZW5Jbk5ld1RhYihyZXNvdXJjZVVSTCk7CiB9CiAKLVdlYkluc3BlY3Rvci5vcGVuUmVx
dWVzdEluTmV0d29ya1BhbmVsID0gZnVuY3Rpb24ocmVzb3VyY2UpCitXZWJJbnNwZWN0b3Iub3Bl
blJlcXVlc3RJbk5ldHdvcmtQYW5lbCA9IGZ1bmN0aW9uKHJlcXVlc3QpCiB7CiAgICAgV2ViSW5z
cGVjdG9yLnNob3dQYW5lbCgibmV0d29yayIpOwotICAgIFdlYkluc3BlY3Rvci5wYW5lbHMubmV0
d29yay5yZXZlYWxBbmRIaWdobGlnaHRSZXNvdXJjZShyZXNvdXJjZSk7CisgICAgV2ViSW5zcGVj
dG9yLnBhbmVscy5uZXR3b3JrLnJldmVhbEFuZEhpZ2hsaWdodFJlcXVlc3QocmVxdWVzdCk7CiB9
CiAKIFdlYkluc3BlY3Rvci5fcmVnaXN0ZXJTaG9ydGN1dHMgPSBmdW5jdGlvbigpCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
OTEzMzFjYjNjYzJmNGY4MjdkZjAwZTE4MWVjMjdlOGY3OTUxOWJiNS4uMGYxNWM0MWEzYzBiNTI3
NTY5ZGEwNDhhNjU1NDVjNzJjMjRlMTBiNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTA0
LTExICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdl
YiBJbnNwZWN0b3I6IGV4dHJhY3RpbmcgTmV0d29ya1JlcXVlc3QgZnJvbSBSZXNvdXJjZSAoc3Rl
cCAxKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODM2
ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0
dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmstcHJlZmxpZ2h0LW9wdGlvbnMuaHRtbDoKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrLXRlc3QuanM6CisgICAgICAgICogaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9hc3luYy14aHItanNvbi1taW1lLXR5cGUuaHRtbDoK
KyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2Rvd25sb2FkLmh0bWw6Cisg
ICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWNhY2hlZHJlc291
cmNlcy13aXRoLXNhbWUtdXJscy5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9y
L25ldHdvcmsvbmV0d29yay1jb250ZW50LXJlcGxhY2VtZW50LWVtYmVkLmh0bWw6CisgICAgICAg
ICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWNvbnRlbnQtcmVwbGFjZW1l
bnQteGhyLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3
b3JrLWN5cmlsbGljLXhoci5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvbmV0d29yay1kaXNhYmxlLWNhY2hlLW1lbW9yeS5odG1sOgorICAgICAgICAqIGh0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1kaXNhYmxlLWNhY2hlLXhocnMuaHRtbDoK
KyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstZGlzYWJsaW5n
LWNoZWNrLW5vLW1lbW9yeS1sZWFrLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0
b3IvbmV0d29yay9uZXR3b3JrLWVtYmVkLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvbmV0d29yay9uZXR3b3JrLWVtcHR5LXhoci5odG1sOgorICAgICAgICAqIGh0dHAvdGVz
dHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1pZnJhbWUtbG9hZC1hbmQtZGVsZXRlLmh0bWw6
CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWluaXRpYXRv
ci1mcm9tLWNvbnNvbGUuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3
b3JrL25ldHdvcmstaW5pdGlhdG9yLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0
b3IvbmV0d29yay9uZXR3b3JrLXJlcXVlc3QtcmV2aXNpb24tY29udGVudC5odG1sOgorICAgICAg
ICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1zaGFyZWQtd29ya2VyLmh0
bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXNpZGVi
YXItd2lkdGguaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25l
dHdvcmstc2l6ZS1jaHVua2VkLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9uZXR3b3JrLXNpemUtc3luYy5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5z
cGVjdG9yL25ldHdvcmsvbmV0d29yay1zaXplLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9p
bnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXRpbWluZy5odG1sOgorICAgICAgICAqIGh0dHAvdGVz
dHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay13b3JrZXIuaHRtbDoKKyAgICAgICAgKiBodHRw
L3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmsteGhyLWFzeW5jLmh0bWw6CisgICAgICAg
ICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXhoci1zYW1lLXVybC1hcy1t
YWluLXJlc291cmNlLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9uZXR3b3JrLXhoci1zeW5jLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9waW5nLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay94LWZyYW1lLW9wdGlvbnMtZGVueS5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVj
dG9yL3Jlc291cmNlLWhhci1jb252ZXJzaW9uLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9p
bnNwZWN0b3IvcmVzb3VyY2UtaGFyLWhlYWRlcnMuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3Rz
L2luc3BlY3Rvci9yZXNvdXJjZS1oYXItcGFnZXMuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3Rz
L2luc3BlY3Rvci9yZXNvdXJjZS1wYXJhbWV0ZXJzLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0
cy9pbnNwZWN0b3IvcmVzb3VyY2VzLXRlc3QuanM6CisgICAgICAgIChpbml0aWFsaXplX1Jlc291
cmNlVGVzdC5JbnNwZWN0b3JUZXN0LnJlcXVlc3RVUkxDb21wYXJlcik6CisgICAgICAgICogaW5z
cGVjdG9yL2RlYnVnZ2VyL3Jhdy1zb3VyY2UtY29kZS5odG1sOgorICAgICAgICAqIGluc3BlY3Rv
ci9kZWJ1Z2dlci9zb3VyY2UtZnJhbWUuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvbmV0d29y
ay1zdGF0dXMtbm9uLWh0dHAuaHRtbDoKKwogMjAxMi0wNC0xMSAgUGhpbGlwcGUgTm9ybWFuZCAg
PHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgR1RLIHJlYmFzZWxp
bmUgYW5kIGJhc2VsaW5lcyBmb3IgbmV3IHRlc3RzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay1wcmVmbGlnaHQtb3B0aW9ucy5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay1wcmVmbGlnaHQtb3B0aW9ucy5o
dG1sCmluZGV4IGRkYTQyMTJmMDRmYzY5ZGQwNGQyYzZjNjJiZDFmMzUxN2FlZGUzZDcuLjNhZmYw
ZDk0YmYxNDZkMTBmYjY5ZDI0NDcyNTdjNjEwYWZlNjU3YjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmstcHJlZmxpZ2h0LW9wdGlvbnMuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrLXByZWZsaWdodC1v
cHRpb25zLmh0bWwKQEAgLTYzLDIxICs2MywyMSBAQCB2YXIgdGVzdCA9IGZ1bmN0aW9uKCkKIHsK
ICAgICB2YXIgcmVxdWVzdE1lc3NhZ2VzID0gW107CiAgICAgdmFyIHBvc3RSZXF1ZXN0c0NvdW50
ID0gMDsKLSAgICBmdW5jdGlvbiBvblJlc291cmNlKGV2ZW50KQorICAgIGZ1bmN0aW9uIG9uUmVx
dWVzdChldmVudCkKICAgICB7Ci0gICAgICAgIHZhciByZXNvdXJjZSA9IGV2ZW50LmRhdGE7Ci0g
ICAgICAgIHZhciBpZE1hdGNoID0gL1w/aWQ9KFswLTldKikmLy5leGVjKHJlc291cmNlLnVybCk7
CisgICAgICAgIHZhciByZXF1ZXN0ID0gZXZlbnQuZGF0YTsKKyAgICAgICAgdmFyIGlkTWF0Y2gg
PSAvXD9pZD0oWzAtOV0qKSYvLmV4ZWMocmVxdWVzdC51cmwpOwogICAgICAgICB2YXIgcmVxdWVz
dElkID0gaWRNYXRjaFsxXTsKLSAgICAgICAgdmFyIHJlcXVlc3RNZXNzYWdlID0gcmVxdWVzdElk
ICsgIjoiICsgcmVzb3VyY2UucmVxdWVzdE1ldGhvZCArICIgIiArIHJlc291cmNlLnVybC5yZXBs
YWNlKC9bJj9dZGF0ZT1cZCsvLCAiIik7CisgICAgICAgIHZhciByZXF1ZXN0TWVzc2FnZSA9IHJl
cXVlc3RJZCArICI6IiArIHJlcXVlc3QucmVxdWVzdE1ldGhvZCArICIgIiArIHJlcXVlc3QudXJs
LnJlcGxhY2UoL1smP11kYXRlPVxkKy8sICIiKTsKICAgICAgICAgcmVxdWVzdE1lc3NhZ2VzLnB1
c2gocmVxdWVzdE1lc3NhZ2UpOwotICAgICAgICBpZiAocmVzb3VyY2UucmVxdWVzdE1ldGhvZCA9
PT0gIlBPU1QiICYmICsrcG9zdFJlcXVlc3RzQ291bnQgPT09IDQpIHsKKyAgICAgICAgaWYgKHJl
cXVlc3QucmVxdWVzdE1ldGhvZCA9PT0gIlBPU1QiICYmICsrcG9zdFJlcXVlc3RzQ291bnQgPT09
IDQpIHsKICAgICAgICAgICAgIHJlcXVlc3RNZXNzYWdlcy5zb3J0KCk7CiAgICAgICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IHJlcXVlc3RNZXNzYWdlcy5sZW5ndGg7IGkrKykKICAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChyZXF1ZXN0TWVzc2FnZXNbaV0pOwogICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKICAgICAgICAgfQogICAgIH0K
LSAgICBXZWJJbnNwZWN0b3IubmV0d29ya01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuTmV0d29ya01hbmFnZXIuRXZlbnRUeXBlcy5SZXNvdXJjZUZpbmlzaGVkLCBvblJlc291
cmNlKTsKKyAgICBXZWJJbnNwZWN0b3IubmV0d29ya01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIuRXZlbnRUeXBlcy5SZXF1ZXN0RmluaXNoZWQsIG9u
UmVxdWVzdCk7CiAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiZG9Dcm9zc09yaWdp
blhIUigpOyIpOwogfQogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrLXRlc3QuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrLXRlc3QuanMKaW5kZXggMzM4MmZlZjI0Mjc1YjRjYTdhYzUyNWI4NWMz
YWQ2YTZmM2E4OWY0NC4uMGE3YTY2YTc3YWZhZTM0ZjJjN2ZmNDQ1OTA0ODA4NzQzNjc1Njg4YSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay10ZXN0
LmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmstdGVzdC5q
cwpAQCAtMSwxMiArMSwxMiBAQAogdmFyIGluaXRpYWxpemVfTmV0d29ya1Rlc3QgPSBmdW5jdGlv
bigpIHsKIAotSW5zcGVjdG9yVGVzdC5kdW1wTmV0d29ya1Jlc291cmNlcyA9IGZ1bmN0aW9uKCkK
K0luc3BlY3RvclRlc3QuZHVtcE5ldHdvcmtSZXF1ZXN0cyA9IGZ1bmN0aW9uKCkKIHsKLSAgICB2
YXIgcmVzb3VyY2VzID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlcy5zbGlj
ZSgpOwotICAgIHJlc291cmNlcy5zb3J0KGZ1bmN0aW9uKGEsIGIpIHtyZXR1cm4gYS51cmwubG9j
YWxlQ29tcGFyZShiLnVybCk7fSk7Ci0gICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoInJlc291
cmNlcyBjb3VudCA9ICIgKyByZXNvdXJjZXMubGVuZ3RoKTsKLSAgICBmb3IgKGkgPSAwOyBpIDwg
cmVzb3VyY2VzLmxlbmd0aDsgaSsrKQotICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChy
ZXNvdXJjZXNbaV0udXJsKTsKKyAgICB2YXIgcmVxdWVzdHMgPSBXZWJJbnNwZWN0b3IucGFuZWxz
Lm5ldHdvcmsucmVxdWVzdHMuc2xpY2UoKTsKKyAgICByZXF1ZXN0cy5zb3J0KGZ1bmN0aW9uKGEs
IGIpIHtyZXR1cm4gYS51cmwubG9jYWxlQ29tcGFyZShiLnVybCk7fSk7CisgICAgSW5zcGVjdG9y
VGVzdC5hZGRSZXN1bHQoInJlc291cmNlcyBjb3VudCA9ICIgKyByZXF1ZXN0cy5sZW5ndGgpOwor
ICAgIGZvciAoaSA9IDA7IGkgPCByZXF1ZXN0cy5sZW5ndGg7IGkrKykKKyAgICAgICAgSW5zcGVj
dG9yVGVzdC5hZGRSZXN1bHQocmVxdWVzdHNbaV0udXJsKTsKIH0KIAogSW5zcGVjdG9yVGVzdC5y
ZXNldEluc3BlY3RvclJlc291cmNlc0RhdGEgPSBmdW5jdGlvbihjYWxsYmFjaykKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvYXN5bmMteGhyLWpz
b24tbWltZS10eXBlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3
b3JrL2FzeW5jLXhoci1qc29uLW1pbWUtdHlwZS5odG1sCmluZGV4IGY0NGE4ZjFmZGE5ODRkZDFi
MmViNzdhNjc2MGU1MWJlOWMwNGUxMWEuLmNhMGY3NjkwNmE0N2I0NmM0NmM4NDIxNjcyOGJlZDM2
ZTE3Njk5MTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvYXN5bmMteGhyLWpzb24tbWltZS10eXBlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9hc3luYy14aHItanNvbi1taW1lLXR5cGUuaHRtbApA
QCAtMjAsMTggKzIwLDE4IEBAIGZ1bmN0aW9uIHRlc3QoKQogCiAgICAgZnVuY3Rpb24gc3RlcDIo
KQogICAgIHsKLSAgICAgICAgdmFyIHJlc291cmNlMSA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0
d29yay5yZXNvdXJjZXNbV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlcy5sZW5n
dGggLSAxXTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQocmVzb3VyY2UxLnVybCk7
Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJyZXNvdXJjZS50eXBlOiAiICsgcmVz
b3VyY2UxLnR5cGUpOwotICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgicmVzb3VyY2Uu
Y29udGVudCBiZWZvcmUgcmVxdWVzdGluZyBjb250ZW50OiAiICsgcmVzb3VyY2UxLmNvbnRlbnQp
OwotICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydFRydWUoIXJlc291cmNlMS5mYWlsZWQsICJS
ZXNvdXJjZSBsb2FkaW5nIGZhaWxlZC4iKTsKLSAgICAgICAgcmVzb3VyY2UxLnJlcXVlc3RDb250
ZW50KHN0ZXAzKTsKKyAgICAgICAgdmFyIHJlcXVlc3QxID0gV2ViSW5zcGVjdG9yLnBhbmVscy5u
ZXR3b3JrLnJlcXVlc3RzW1dlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXF1ZXN0cy5sZW5n
dGggLSAxXTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQocmVxdWVzdDEudXJsKTsK
KyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoInJlc291cmNlLnR5cGU6ICIgKyByZXF1
ZXN0MS50eXBlKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoInJlc291cmNlLmNv
bnRlbnQgYmVmb3JlIHJlcXVlc3RpbmcgY29udGVudDogIiArIHJlcXVlc3QxLmNvbnRlbnQpOwor
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydFRydWUoIXJlcXVlc3QxLmZhaWxlZCwgIlJlc291
cmNlIGxvYWRpbmcgZmFpbGVkLiIpOworICAgICAgICByZXF1ZXN0MS5yZXF1ZXN0Q29udGVudChz
dGVwMyk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gc3RlcDMoKQogICAgIHsKLSAgICAgICAgdmFy
IHJlc291cmNlMSA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXNbV2ViSW5z
cGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlcy5sZW5ndGggLSAxXTsKLSAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQoInJlc291cmNlLmNvbnRlbnQgYWZ0ZXIgcmVxdWVzdGluZyBj
b250ZW50OiAiICsgcmVzb3VyY2UxLmNvbnRlbnQpOworICAgICAgICB2YXIgcmVxdWVzdDEgPSBX
ZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVxdWVzdHNbV2ViSW5zcGVjdG9yLnBhbmVscy5u
ZXR3b3JrLnJlcXVlc3RzLmxlbmd0aCAtIDFdOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJl
c3VsdCgicmVzb3VyY2UuY29udGVudCBhZnRlciByZXF1ZXN0aW5nIGNvbnRlbnQ6ICIgKyByZXF1
ZXN0MS5jb250ZW50KTsKIAogICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvZG93bmxvYWQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvZG93bmxvYWQuaHRtbAppbmRleCA4YjZlN2UzNjEwMTg0OGU1OWFkMzIzYWQ0NmM2ODU0YmRh
ZjljNjljLi43MmEwZGRlYzI3MmU0OTIyZGNlYTAzMWQ0NjQ0YWM5ZTZkMzExN2M0IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2Rvd25sb2FkLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9kb3dubG9h
ZC5odG1sCkBAIC0xOCw4ICsxOCw4IEBAIGZ1bmN0aW9uIHRlc3QoKQogCiAgICAgZnVuY3Rpb24g
cmVzcG9uc2VSZWNlaXZlZChyZXF1ZXN0SWQsIHRpbWUsIHJlc291cmNlVHlwZSwgcmVzcG9uc2Up
CiAgICAgewotICAgICAgICB2YXIgcmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IubmV0d29ya1Jlc291
cmNlQnlJZChyZXF1ZXN0SWQpOwotICAgICAgICBpZiAoL2Rvd25sb2FkXC56enovLmV4ZWMocmVz
b3VyY2UudXJsKSkgeworICAgICAgICB2YXIgcmVxdWVzdCA9IFdlYkluc3BlY3Rvci5uZXR3b3Jr
UmVxdWVzdEJ5SWQocmVxdWVzdElkKTsKKyAgICAgICAgaWYgKC9kb3dubG9hZFwuenp6Ly5leGVj
KHJlcXVlc3QudXJsKSkgewogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlJl
Y2VpdmVkIHJlc3BvbnNlIGZvciBkb3dubG9hZC56enoiKTsKICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuYWRkUmVzdWx0KCJTVUNDRVNTIik7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNv
bXBsZXRlVGVzdCgpOwpAQCAtMjgsMTUgKzI4LDE1IEBAIGZ1bmN0aW9uIHRlc3QoKQogCiAgICAg
ZnVuY3Rpb24gbG9hZGluZ0ZpbmlzaGVkKHJlcXVlc3RJZCwgZmluaXNoVGltZSkKICAgICB7Ci0g
ICAgICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5uZXR3b3JrUmVzb3VyY2VCeUlkKHJl
cXVlc3RJZCk7Ci0gICAgICAgIGlmICgvZG93bmxvYWRcLnp6ei8uZXhlYyhyZXNvdXJjZS51cmwp
KQorICAgICAgICB2YXIgcmVxdWVzdCA9IFdlYkluc3BlY3Rvci5uZXR3b3JrUmVxdWVzdEJ5SWQo
cmVxdWVzdElkKTsKKyAgICAgICAgaWYgKC9kb3dubG9hZFwuenp6Ly5leGVjKHJlcXVlc3QudXJs
KSkKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CiAgICAgfQogCiAg
ICAgZnVuY3Rpb24gbG9hZGluZ0ZhaWxlZChyZXF1ZXN0SWQsIHRpbWUsIGxvY2FsaXplZERlc2Ny
aXB0aW9uLCBjYW5jZWxlZCkKICAgICB7Ci0gICAgICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3Bl
Y3Rvci5uZXR3b3JrUmVzb3VyY2VCeUlkKHJlcXVlc3RJZCk7Ci0gICAgICAgIGlmICgvZG93bmxv
YWRcLnp6ei8uZXhlYyhyZXNvdXJjZS51cmwpKQorICAgICAgICB2YXIgcmVxdWVzdCA9IFdlYklu
c3BlY3Rvci5uZXR3b3JrUmVxdWVzdEJ5SWQocmVxdWVzdElkKTsKKyAgICAgICAgaWYgKC9kb3du
bG9hZFwuenp6Ly5leGVjKHJlcXVlc3QudXJsKSkKICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
Y29tcGxldGVUZXN0KCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWNhY2hlZHJlc291cmNlcy13aXRoLXNhbWUt
dXJscy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3
b3JrLWNhY2hlZHJlc291cmNlcy13aXRoLXNhbWUtdXJscy5odG1sCmluZGV4IGVjMWMyNTk5YmUx
MTE4ZTFlOTFlMDNlNGRiMWJlMDI4M2JhMjg2ODQuLjI1OTM5MmVlZDYyN2QxN2U5M2RiOTk1Y2Fj
NGFkZmYzYjg4MGUzM2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvbmV0d29yay1jYWNoZWRyZXNvdXJjZXMtd2l0aC1zYW1lLXVybHMuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstY2Fj
aGVkcmVzb3VyY2VzLXdpdGgtc2FtZS11cmxzLmh0bWwKQEAgLTMxLDEyICszMSwxMiBAQCBmdW5j
dGlvbiB0ZXN0KCkKICAgICBmdW5jdGlvbiBzdGVwMihtc2cpCiAgICAgewogICAgICAgICAvLyBp
bnNwZWN0b3ItdGVzdC5qcyBhcHBlYXJzIGluIG5ldHdvcmsgcGFuZWwgb2NjYXNpb25hbGx5IGlu
IFNhZmFyaSBvbgotICAgICAgICAvLyBNYWMsIHNvIGNoZWNraW5nIHR3byBsYXN0IHJlc291cmNl
cy4KLSAgICAgICAgdmFyIHJlc291cmNlc0NvdW50ID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3
b3JrLnJlc291cmNlcy5sZW5ndGg7Ci0gICAgICAgIHZhciByZXNvdXJjZTEgPSBXZWJJbnNwZWN0
b3IucGFuZWxzLm5ldHdvcmsucmVzb3VyY2VzW3Jlc291cmNlc0NvdW50IC0gMl07Ci0gICAgICAg
IHZhciByZXNvdXJjZTIgPSBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVzb3VyY2VzW3Jl
c291cmNlc0NvdW50IC0gMV07Ci0gICAgICAgIHJlc291cmNlMS5yZXF1ZXN0Q29udGVudChjb250
ZW50TG9hZGVkKTsKLSAgICAgICAgcmVzb3VyY2UyLnJlcXVlc3RDb250ZW50KGNvbnRlbnRMb2Fk
ZWQpOworICAgICAgICAvLyBNYWMsIHNvIGNoZWNraW5nIHR3byBsYXN0IHJlcXVlc3RzLgorICAg
ICAgICB2YXIgcmVxdWVzdHNDb3VudCA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXF1
ZXN0cy5sZW5ndGg7CisgICAgICAgIHZhciByZXF1ZXN0MSA9IFdlYkluc3BlY3Rvci5wYW5lbHMu
bmV0d29yay5yZXF1ZXN0c1tyZXF1ZXN0c0NvdW50IC0gMl07CisgICAgICAgIHZhciByZXF1ZXN0
MiA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXF1ZXN0c1tyZXF1ZXN0c0NvdW50IC0g
MV07CisgICAgICAgIHJlcXVlc3QxLnJlcXVlc3RDb250ZW50KGNvbnRlbnRMb2FkZWQpOworICAg
ICAgICByZXF1ZXN0Mi5yZXF1ZXN0Q29udGVudChjb250ZW50TG9hZGVkKTsKICAgICB9CiAKICAg
ICB2YXIgY29udGVudExvYWRlZENvdW50ID0gMDsKQEAgLTQ1LDEzICs0NSwxMyBAQCBmdW5jdGlv
biB0ZXN0KCkKICAgICAgICAgaWYgKCsrY29udGVudExvYWRlZENvdW50ICE9PSAyKQogICAgICAg
ICAgICAgcmV0dXJuOwogCi0gICAgICAgIHZhciByZXNvdXJjZXNDb3VudCA9IFdlYkluc3BlY3Rv
ci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXMubGVuZ3RoOwotICAgICAgICB2YXIgcmVzb3VyY2Ux
ID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlc1tyZXNvdXJjZXNDb3VudCAt
IDJdOwotICAgICAgICB2YXIgcmVzb3VyY2UyID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3Jr
LnJlc291cmNlc1tyZXNvdXJjZXNDb3VudCAtIDFdOworICAgICAgICB2YXIgcmVxdWVzdHNDb3Vu
dCA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXF1ZXN0cy5sZW5ndGg7CisgICAgICAg
IHZhciByZXF1ZXN0MSA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXF1ZXN0c1tyZXF1
ZXN0c0NvdW50IC0gMl07CisgICAgICAgIHZhciByZXF1ZXN0MiA9IFdlYkluc3BlY3Rvci5wYW5l
bHMubmV0d29yay5yZXF1ZXN0c1tyZXF1ZXN0c0NvdW50IC0gMV07CiAKLSAgICAgICAgSW5zcGVj
dG9yVGVzdC5hZGRSZXN1bHQocmVzb3VyY2UxLnVybCk7Ci0gICAgICAgIEluc3BlY3RvclRlc3Qu
YWRkUmVzdWx0KHJlc291cmNlMi51cmwpOwotICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydFRy
dWUocmVzb3VyY2UxLmNvbnRlbnQgIT09IHJlc291cmNlMi5jb250ZW50KTsKKyAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQocmVxdWVzdDEudXJsKTsKKyAgICAgICAgSW5zcGVjdG9yVGVz
dC5hZGRSZXN1bHQocmVxdWVzdDIudXJsKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRU
cnVlKHJlcXVlc3QxLmNvbnRlbnQgIT09IHJlcXVlc3QyLmNvbnRlbnQpOwogICAgICAgICBJbnNw
ZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWNvbnRlbnQtcmVwbGFjZW1l
bnQtZW1iZWQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsv
bmV0d29yay1jb250ZW50LXJlcGxhY2VtZW50LWVtYmVkLmh0bWwKaW5kZXggZTFkNTY5ODBhYjVl
MzE3ZWYxNDg2OTMzNTkxYzdkOGU3NTFmZmEzZS4uOGEwOTk2ZWViNmIxMWYwNmQ0ZDc5NmQ5Njgx
ZDBkZjU5YThjY2Y2YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvbmV0d29yay9uZXR3b3JrLWNvbnRlbnQtcmVwbGFjZW1lbnQtZW1iZWQuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstY29udGVudC1y
ZXBsYWNlbWVudC1lbWJlZC5odG1sCkBAIC02NSw0MyArNjUsNDMgQEAgZnVuY3Rpb24gdGVzdCgp
CiAgICAgSW5zcGVjdG9yVGVzdC5hZGRDb25zb2xlU25pZmZlcihzdGVwMSk7CiAgICAgSW5zcGVj
dG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgib25TbmlmZmVySW5zdGFsbGVkKCkiKTsKIAotICAgIGZ1
bmN0aW9uIGR1bXBSZXNvdXJjZShyZXNvdXJjZSwgY2FsbGJhY2spCisgICAgZnVuY3Rpb24gZHVt
cFJlcXVlc3QocmVxdWVzdCwgY2FsbGJhY2spCiAgICAgewotICAgICAgICBpZiAoIXJlc291cmNl
KQorICAgICAgICBpZiAoIXJlcXVlc3QpCiAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soKTsK
LSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQocmVzb3VyY2UudXJsKTsKKyAgICAgICAg
SW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQocmVxdWVzdC51cmwpOwogCiAgICAgICAgIGZ1bmN0aW9u
IGNvbnRlbnRMb2FkZWQoKQogICAgICAgICB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFk
ZFJlc3VsdCgicmVzb3VyY2UuY29udGVudCBhZnRlciByZXF1ZXN0aW5nIGNvbnRlbnQ6ICIgKyBy
ZXNvdXJjZS5jb250ZW50KTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJy
ZXNvdXJjZS5jb250ZW50IGFmdGVyIHJlcXVlc3RpbmcgY29udGVudDogIiArIHJlcXVlc3QuY29u
dGVudCk7CiAgICAgICAgICAgICBjYWxsYmFjaygpOwogICAgICAgICB9CiAKLSAgICAgICAgcmVz
b3VyY2UucmVxdWVzdENvbnRlbnQoY29udGVudExvYWRlZCk7CisgICAgICAgIHJlcXVlc3QucmVx
dWVzdENvbnRlbnQoY29udGVudExvYWRlZCk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gc3RlcDEo
KQogICAgIHsKLSAgICAgICAgdmFyIHJlc291cmNlID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3
b3JrLnJlc291cmNlc1tXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVzb3VyY2VzLmxlbmd0
aCAtIDRdOwotICAgICAgICBkdW1wUmVzb3VyY2UocmVzb3VyY2UsIHN0ZXAyKTsKKyAgICAgICAg
dmFyIHJlcXVlc3QgPSBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVxdWVzdHNbV2ViSW5z
cGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlcXVlc3RzLmxlbmd0aCAtIDRdOworICAgICAgICBkdW1w
UmVxdWVzdChyZXF1ZXN0LCBzdGVwMik7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gc3RlcDIoKQog
ICAgIHsKLSAgICAgICAgdmFyIHJlc291cmNlID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3Jr
LnJlc291cmNlc1tXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVzb3VyY2VzLmxlbmd0aCAt
IDNdOwotICAgICAgICBkdW1wUmVzb3VyY2UocmVzb3VyY2UsIHN0ZXAzKTsKKyAgICAgICAgdmFy
IHJlcXVlc3QgPSBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVxdWVzdHNbV2ViSW5zcGVj
dG9yLnBhbmVscy5uZXR3b3JrLnJlcXVlc3RzLmxlbmd0aCAtIDNdOworICAgICAgICBkdW1wUmVx
dWVzdChyZXF1ZXN0LCBzdGVwMyk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gc3RlcDMoKQogICAg
IHsKLSAgICAgICAgdmFyIHJlc291cmNlID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJl
c291cmNlc1tXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVzb3VyY2VzLmxlbmd0aCAtIDJd
OwotICAgICAgICBkdW1wUmVzb3VyY2UocmVzb3VyY2UsIHN0ZXA0KTsKKyAgICAgICAgdmFyIHJl
cXVlc3QgPSBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVxdWVzdHNbV2ViSW5zcGVjdG9y
LnBhbmVscy5uZXR3b3JrLnJlcXVlc3RzLmxlbmd0aCAtIDJdOworICAgICAgICBkdW1wUmVxdWVz
dChyZXF1ZXN0LCBzdGVwNCk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gc3RlcDQoKQogICAgIHsK
LSAgICAgICAgdmFyIHJlc291cmNlID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291
cmNlc1tXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVzb3VyY2VzLmxlbmd0aCAtIDFdOwot
ICAgICAgICBkdW1wUmVzb3VyY2UocmVzb3VyY2UsIHN0ZXA1KTsKKyAgICAgICAgdmFyIHJlcXVl
c3QgPSBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVxdWVzdHNbV2ViSW5zcGVjdG9yLnBh
bmVscy5uZXR3b3JrLnJlcXVlc3RzLmxlbmd0aCAtIDFdOworICAgICAgICBkdW1wUmVxdWVzdChy
ZXF1ZXN0LCBzdGVwNSk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gc3RlcDUoKQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWNvbnRl
bnQtcmVwbGFjZW1lbnQteGhyLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9uZXR3b3JrL25ldHdvcmstY29udGVudC1yZXBsYWNlbWVudC14aHIuaHRtbAppbmRleCAwYzc2
ZjhiMzdmZDM2NDk2YjMzODkyOWI4OWQ5MWUzZDcwY2I3ZjIzLi4yZWIyOTNkMTQyOGEzNjQ0MTY4
NzQ5YWEyZDdkZjE3Y2NmOWE0NzZjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstY29udGVudC1yZXBsYWNlbWVudC14aHIuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstY29u
dGVudC1yZXBsYWNlbWVudC14aHIuaHRtbApAQCAtNDQsNDMgKzQ0LDQzIEBAIGZ1bmN0aW9uIHRl
c3QoKQogICAgIEluc3BlY3RvclRlc3QuYWRkQ29uc29sZVNuaWZmZXIoc3RlcDEpOwogICAgIElu
c3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoImxvYWREYXRhKCkiKTsKIAotICAgIGZ1bmN0aW9u
IGR1bXBSZXNvdXJjZShyZXNvdXJjZSwgY2FsbGJhY2spCisgICAgZnVuY3Rpb24gZHVtcFJlcXVl
c3QocmVxdWVzdCwgY2FsbGJhY2spCiAgICAgewotICAgICAgICBpZiAoIXJlc291cmNlKQorICAg
ICAgICBpZiAoIXJlcXVlc3QpCiAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soKTsKLSAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQocmVzb3VyY2UudXJsKTsKKyAgICAgICAgSW5zcGVj
dG9yVGVzdC5hZGRSZXN1bHQocmVxdWVzdC51cmwpOwogCiAgICAgICAgIGZ1bmN0aW9uIGNvbnRl
bnRMb2FkZWQoKQogICAgICAgICB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3Vs
dCgicmVzb3VyY2UuY29udGVudDogIiArIHJlc291cmNlLmNvbnRlbnQpOworICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoInJlc291cmNlLmNvbnRlbnQ6ICIgKyByZXF1ZXN0LmNv
bnRlbnQpOwogICAgICAgICAgICAgY2FsbGJhY2soKTsKICAgICAgICAgfQogCi0gICAgICAgIHJl
c291cmNlLnJlcXVlc3RDb250ZW50KGNvbnRlbnRMb2FkZWQpOworICAgICAgICByZXF1ZXN0LnJl
cXVlc3RDb250ZW50KGNvbnRlbnRMb2FkZWQpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHN0ZXAx
KCkKICAgICB7Ci0gICAgICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0
d29yay5yZXNvdXJjZXNbV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlcy5sZW5n
dGggLSA0XTsKLSAgICAgICAgZHVtcFJlc291cmNlKHJlc291cmNlLCBzdGVwMik7CisgICAgICAg
IHZhciByZXF1ZXN0ID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlcXVlc3RzW1dlYklu
c3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXF1ZXN0cy5sZW5ndGggLSA0XTsKKyAgICAgICAgZHVt
cFJlcXVlc3QocmVxdWVzdCwgc3RlcDIpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHN0ZXAyKCkK
ICAgICB7Ci0gICAgICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29y
ay5yZXNvdXJjZXNbV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlcy5sZW5ndGgg
LSAzXTsKLSAgICAgICAgZHVtcFJlc291cmNlKHJlc291cmNlLCBzdGVwMyk7CisgICAgICAgIHZh
ciByZXF1ZXN0ID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlcXVlc3RzW1dlYkluc3Bl
Y3Rvci5wYW5lbHMubmV0d29yay5yZXF1ZXN0cy5sZW5ndGggLSAzXTsKKyAgICAgICAgZHVtcFJl
cXVlc3QocmVxdWVzdCwgc3RlcDMpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHN0ZXAzKCkKICAg
ICB7Ci0gICAgICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5y
ZXNvdXJjZXNbV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlcy5sZW5ndGggLSAy
XTsKLSAgICAgICAgZHVtcFJlc291cmNlKHJlc291cmNlLCBzdGVwNCk7CisgICAgICAgIHZhciBy
ZXF1ZXN0ID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlcXVlc3RzW1dlYkluc3BlY3Rv
ci5wYW5lbHMubmV0d29yay5yZXF1ZXN0cy5sZW5ndGggLSAyXTsKKyAgICAgICAgZHVtcFJlcXVl
c3QocmVxdWVzdCwgc3RlcDQpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHN0ZXA0KCkKICAgICB7
Ci0gICAgICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNv
dXJjZXNbV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlcy5sZW5ndGggLSAxXTsK
LSAgICAgICAgZHVtcFJlc291cmNlKHJlc291cmNlLCBzdGVwNSk7CisgICAgICAgIHZhciByZXF1
ZXN0ID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlcXVlc3RzW1dlYkluc3BlY3Rvci5w
YW5lbHMubmV0d29yay5yZXF1ZXN0cy5sZW5ndGggLSAxXTsKKyAgICAgICAgZHVtcFJlcXVlc3Qo
cmVxdWVzdCwgc3RlcDUpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHN0ZXA1KCkKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1jeXJp
bGxpYy14aHIuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsv
bmV0d29yay1jeXJpbGxpYy14aHIuaHRtbAppbmRleCBiZGE1Zjg0MDE4NTUyYjFlMDdjNzA3ZWU3
MTVjZTZjOGQ1NWFlZDdiLi44ZmVjYmQzODU4MGU3ZTQwOTk0Mjk1MzlkNTA2ZGQ4NDUyYjMwNjU4
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25l
dHdvcmstY3lyaWxsaWMteGhyLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvbmV0d29yay9uZXR3b3JrLWN5cmlsbGljLXhoci5odG1sCkBAIC0yNCwxOSArMjQsMTkg
QEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgLy8gdGVzdHMsIHdlIG5lZWQgdG8gcmVzZXQgc2l6ZSBs
aW1pdHMgdG8gZGVmYXVsdCBvbmVzLgogICAgIEluc3BlY3RvclRlc3QucmVzZXRJbnNwZWN0b3JS
ZXNvdXJjZXNEYXRhKHN0ZXAxKTsKIAotICAgIGZ1bmN0aW9uIGR1bXBSZXNvdXJjZShyZXNvdXJj
ZSwgY2FsbGJhY2spCisgICAgZnVuY3Rpb24gZHVtcFJlcXVlc3QocmVxdWVzdCwgY2FsbGJhY2sp
CiAgICAgewotICAgICAgICBpZiAoIXJlc291cmNlKQorICAgICAgICBpZiAoIXJlcXVlc3QpCiAg
ICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soKTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRS
ZXN1bHQocmVzb3VyY2UudXJsKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQocmVx
dWVzdC51cmwpOwogCiAgICAgICAgIGZ1bmN0aW9uIGNvbnRlbnRMb2FkZWQoKQogICAgICAgICB7
Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgicmVzb3VyY2UuY29udGVudDog
IiArIHJlc291cmNlLmNvbnRlbnQpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1
bHQoInJlc291cmNlLmNvbnRlbnQ6ICIgKyByZXF1ZXN0LmNvbnRlbnQpOwogICAgICAgICAgICAg
Y2FsbGJhY2soKTsKICAgICAgICAgfQogCi0gICAgICAgIHJlc291cmNlLnJlcXVlc3RDb250ZW50
KGNvbnRlbnRMb2FkZWQpOworICAgICAgICByZXF1ZXN0LnJlcXVlc3RDb250ZW50KGNvbnRlbnRM
b2FkZWQpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHN0ZXAxKCkKQEAgLTQ3LDE0ICs0NywxNCBA
QCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgIGZ1bmN0aW9uIHN0ZXAyKCkKICAgICB7Ci0gICAgICAg
IHZhciByZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXNbV2Vi
SW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlcy5sZW5ndGggLSAyXTsKLSAgICAgICAg
ZHVtcFJlc291cmNlKHJlc291cmNlLCBzdGVwMyk7CisgICAgICAgIHZhciByZXF1ZXN0ID0gV2Vi
SW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlcXVlc3RzW1dlYkluc3BlY3Rvci5wYW5lbHMubmV0
d29yay5yZXF1ZXN0cy5sZW5ndGggLSAyXTsKKyAgICAgICAgZHVtcFJlcXVlc3QocmVxdWVzdCwg
c3RlcDMpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHN0ZXAzKCkKICAgICB7Ci0gICAgICAgIHZh
ciByZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXNbV2ViSW5z
cGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlcy5sZW5ndGggLSAxXTsKLSAgICAgICAgZHVt
cFJlc291cmNlKHJlc291cmNlLCBzdGVwNCk7CisgICAgICAgIHZhciByZXF1ZXN0ID0gV2ViSW5z
cGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlcXVlc3RzW1dlYkluc3BlY3Rvci5wYW5lbHMubmV0d29y
ay5yZXF1ZXN0cy5sZW5ndGggLSAxXTsKKyAgICAgICAgZHVtcFJlcXVlc3QocmVxdWVzdCwgc3Rl
cDQpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHN0ZXA0KCkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1kaXNhYmxlLWNhY2hlLW1l
bW9yeS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3
b3JrLWRpc2FibGUtY2FjaGUtbWVtb3J5Lmh0bWwKaW5kZXggOTgwZDcyMGU5N2QwNTExMzRkNTE3
NjdlNjgwNGE4ZjU4N2ZlZTk4Ni4uNTg1MGQ2YmZkODI2ZmM5ZGE1OTI0OWRlODM4MzM2YzhiNzU0
OWE1ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9uZXR3b3JrLWRpc2FibGUtY2FjaGUtbWVtb3J5Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWRpc2FibGUtY2FjaGUtbWVtb3J5Lmh0
bWwKQEAgLTI3LDE2ICsyNywxNiBAQCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgICAgICBmdW5jdGlv
biBzY3JpcHRMb2FkZWQoKQogICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgcmVzb3VyY2VzQ291
bnQgPSBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVzb3VyY2VzLmxlbmd0aDsKLSAgICAg
ICAgICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJj
ZXNbcmVzb3VyY2VzQ291bnQgLSAxXTsKLSAgICAgICAgICAgIHJlc291cmNlLnJlcXVlc3RDb250
ZW50KGNvbnRlbnRMb2FkZWQpOworICAgICAgICAgICAgdmFyIHJlcXVlc3RzQ291bnQgPSBXZWJJ
bnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVxdWVzdHMubGVuZ3RoOworICAgICAgICAgICAgdmFy
IHJlcXVlc3QgPSBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVxdWVzdHNbcmVxdWVzdHND
b3VudCAtIDFdOworICAgICAgICAgICAgcmVxdWVzdC5yZXF1ZXN0Q29udGVudChjb250ZW50TG9h
ZGVkKTsKICAgICAgICAgfQogCiAgICAgICAgIGZ1bmN0aW9uIGNvbnRlbnRMb2FkZWQoKQogICAg
ICAgICB7Ci0gICAgICAgICAgICB2YXIgcmVzb3VyY2VzQ291bnQgPSBXZWJJbnNwZWN0b3IucGFu
ZWxzLm5ldHdvcmsucmVzb3VyY2VzLmxlbmd0aDsKLSAgICAgICAgICAgIHZhciByZXNvdXJjZSA9
IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXNbcmVzb3VyY2VzQ291bnQgLSAx
XTsKLSAgICAgICAgICAgIGNhbGxiYWNrKHJlc291cmNlLmNvbnRlbnQpOworICAgICAgICAgICAg
dmFyIHJlcXVlc3RzQ291bnQgPSBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVxdWVzdHMu
bGVuZ3RoOworICAgICAgICAgICAgdmFyIHJlcXVlc3QgPSBXZWJJbnNwZWN0b3IucGFuZWxzLm5l
dHdvcmsucmVxdWVzdHNbcmVxdWVzdHNDb3VudCAtIDFdOworICAgICAgICAgICAgY2FsbGJhY2so
cmVxdWVzdC5jb250ZW50KTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWRpc2FibGUtY2FjaGUt
eGhycy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3
b3JrLWRpc2FibGUtY2FjaGUteGhycy5odG1sCmluZGV4IGQ1MGE0YmVmMWQwM2Y5Y2IxZWY1YzEx
MTVlZTc1ZTAyZTM1OWY0MDIuLjlkOWMzNjNiZmQwMmZiN2E1MWQyYjUwZGI0MjQzMjg0YmUwNmJm
NGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsv
bmV0d29yay1kaXNhYmxlLWNhY2hlLXhocnMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstZGlzYWJsZS1jYWNoZS14aHJzLmh0bWwKQEAg
LTYwLDEzICs2MCwxMyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICB7CiAgICAgICAgIC8vIGluc3Bl
Y3Rvci10ZXN0LmpzIGFwcGVhcnMgaW4gbmV0d29yayBwYW5lbCBvY2Nhc2lvbmFsbHkgaW4gU2Fm
YXJpIG9uCiAgICAgICAgIC8vIE1hYywgc28gY2hlY2tpbmcgdHdvIGxhc3QgcmVzb3VyY2VzLgot
ICAgICAgICB2YXIgcmVzb3VyY2VzQ291bnQgPSBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsu
cmVzb3VyY2VzLmxlbmd0aDsKLSAgICAgICAgdmFyIHJlc291cmNlMSA9IFdlYkluc3BlY3Rvci5w
YW5lbHMubmV0d29yay5yZXNvdXJjZXNbcmVzb3VyY2VzQ291bnQgLSAzXTsKLSAgICAgICAgdmFy
IHJlc291cmNlMiA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXNbcmVzb3Vy
Y2VzQ291bnQgLSAyXTsKLSAgICAgICAgdmFyIHJlc291cmNlMyA9IFdlYkluc3BlY3Rvci5wYW5l
bHMubmV0d29yay5yZXNvdXJjZXNbcmVzb3VyY2VzQ291bnQgLSAxXTsKLSAgICAgICAgcmVzb3Vy
Y2UxLnJlcXVlc3RDb250ZW50KGNvbnRlbnRMb2FkZWQpOwotICAgICAgICByZXNvdXJjZTIucmVx
dWVzdENvbnRlbnQoY29udGVudExvYWRlZCk7Ci0gICAgICAgIHJlc291cmNlMy5yZXF1ZXN0Q29u
dGVudChjb250ZW50TG9hZGVkKTsKKyAgICAgICAgdmFyIHJlcXVlc3RzQ291bnQgPSBXZWJJbnNw
ZWN0b3IucGFuZWxzLm5ldHdvcmsucmVxdWVzdHMubGVuZ3RoOworICAgICAgICB2YXIgcmVxdWVz
dDEgPSBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVxdWVzdHNbcmVxdWVzdHNDb3VudCAt
IDNdOworICAgICAgICB2YXIgcmVxdWVzdDIgPSBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsu
cmVxdWVzdHNbcmVxdWVzdHNDb3VudCAtIDJdOworICAgICAgICB2YXIgcmVxdWVzdDMgPSBXZWJJ
bnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVxdWVzdHNbcmVxdWVzdHNDb3VudCAtIDFdOworICAg
ICAgICByZXF1ZXN0MS5yZXF1ZXN0Q29udGVudChjb250ZW50TG9hZGVkKTsKKyAgICAgICAgcmVx
dWVzdDIucmVxdWVzdENvbnRlbnQoY29udGVudExvYWRlZCk7CisgICAgICAgIHJlcXVlc3QzLnJl
cXVlc3RDb250ZW50KGNvbnRlbnRMb2FkZWQpOwogICAgIH0KIAogICAgIHZhciBjb250ZW50TG9h
ZGVkQ291bnQgPSAwOwpAQCAtNzUsMTYgKzc1LDE2IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAg
ICBpZiAoKytjb250ZW50TG9hZGVkQ291bnQgIT09IDMpCiAgICAgICAgICAgICByZXR1cm47CiAK
LSAgICAgICAgdmFyIHJlc291cmNlc0NvdW50ID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3Jr
LnJlc291cmNlcy5sZW5ndGg7Ci0gICAgICAgIHZhciByZXNvdXJjZTEgPSBXZWJJbnNwZWN0b3Iu
cGFuZWxzLm5ldHdvcmsucmVzb3VyY2VzW3Jlc291cmNlc0NvdW50IC0gM107Ci0gICAgICAgIHZh
ciByZXNvdXJjZTIgPSBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVzb3VyY2VzW3Jlc291
cmNlc0NvdW50IC0gMl07Ci0gICAgICAgIHZhciByZXNvdXJjZTMgPSBXZWJJbnNwZWN0b3IucGFu
ZWxzLm5ldHdvcmsucmVzb3VyY2VzW3Jlc291cmNlc0NvdW50IC0gMV07CisgICAgICAgIHZhciBy
ZXF1ZXN0c0NvdW50ID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlcXVlc3RzLmxlbmd0
aDsKKyAgICAgICAgdmFyIHJlcXVlc3QxID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJl
cXVlc3RzW3JlcXVlc3RzQ291bnQgLSAzXTsKKyAgICAgICAgdmFyIHJlcXVlc3QyID0gV2ViSW5z
cGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlcXVlc3RzW3JlcXVlc3RzQ291bnQgLSAyXTsKKyAgICAg
ICAgdmFyIHJlcXVlc3QzID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlcXVlc3RzW3Jl
cXVlc3RzQ291bnQgLSAxXTsKIAotICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChyZXNv
dXJjZTEudXJsKTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQocmVzb3VyY2UyLnVy
bCk7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KHJlc291cmNlMy51cmwpOwotICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydFRydWUocmVzb3VyY2UxLmNvbnRlbnQgPT09IHJlc291
cmNlMi5jb250ZW50LCAiRmlyc3QgYW5kIHNlY29uZCByZXNvdXJjZXMgYXJlIGVxdWFsIik7Ci0g
ICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0VHJ1ZShyZXNvdXJjZTIuY29udGVudCAhPT0gcmVz
b3VyY2UzLmNvbnRlbnQsICJTZWNvbmQgYW5kIHRoaXJkIHJlc291cmNlcyBkaWZmZXIiKTsKKyAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQocmVxdWVzdDEudXJsKTsKKyAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQocmVxdWVzdDIudXJsKTsKKyAgICAgICAgSW5zcGVjdG9yVGVz
dC5hZGRSZXN1bHQocmVxdWVzdDMudXJsKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRU
cnVlKHJlcXVlc3QxLmNvbnRlbnQgPT09IHJlcXVlc3QyLmNvbnRlbnQsICJGaXJzdCBhbmQgc2Vj
b25kIHJlc291cmNlcyBhcmUgZXF1YWwiKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRU
cnVlKHJlcXVlc3QyLmNvbnRlbnQgIT09IHJlcXVlc3QzLmNvbnRlbnQsICJTZWNvbmQgYW5kIHRo
aXJkIHJlc291cmNlcyBkaWZmZXIiKTsKICAgICAgICAgTmV0d29ya0FnZW50LnNldENhY2hlRGlz
YWJsZWQoZmFsc2UsIHN0ZXA1KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1kaXNhYmxpbmctY2hlY2stbm8tbWVt
b3J5LWxlYWsuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsv
bmV0d29yay1kaXNhYmxpbmctY2hlY2stbm8tbWVtb3J5LWxlYWsuaHRtbAppbmRleCA3ODgxZWZj
NjViOGRlZDUxYjkxMDUxNTg2ZGE4MmU1YjgzMzNhYjFiLi41ZGMwZGIzOGU0MGViNmM2M2QyZjAx
MzIyZTA1OGQzMzMxZjRjNDhiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL25ldHdvcmstZGlzYWJsaW5nLWNoZWNrLW5vLW1lbW9yeS1sZWFrLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3Jr
LWRpc2FibGluZy1jaGVjay1uby1tZW1vcnktbGVhay5odG1sCkBAIC0zMiwxNCArMzIsMTQgQEAg
ZnVuY3Rpb24gdGVzdCgpCiAKICAgICBmdW5jdGlvbiBzdGVwMygpCiAgICAgewotICAgICAgICB2
YXIgcmVzb3VyY2UxID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlc1tXZWJJ
bnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVzb3VyY2VzLmxlbmd0aCAtIDFdOwotICAgICAgICBy
ZXNvdXJjZTEucmVxdWVzdENvbnRlbnQoc3RlcDQpOworICAgICAgICB2YXIgcmVxdWVzdDEgPSBX
ZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVxdWVzdHNbV2ViSW5zcGVjdG9yLnBhbmVscy5u
ZXR3b3JrLnJlcXVlc3RzLmxlbmd0aCAtIDFdOworICAgICAgICByZXF1ZXN0MS5yZXF1ZXN0Q29u
dGVudChzdGVwNCk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gc3RlcDQoKQogICAgIHsKLSAgICAg
ICAgdmFyIHJlc291cmNlMSA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXNb
V2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlcy5sZW5ndGggLSAxXTsKLSAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoInJlc291cmNlLmNvbnRlbnQgYWZ0ZXIgZGlzYWJs
aW5nIG5ldHdvcmsgZG9tYWluOiAiICsgcmVzb3VyY2UxLmNvbnRlbnQpOworICAgICAgICB2YXIg
cmVxdWVzdDEgPSBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVxdWVzdHNbV2ViSW5zcGVj
dG9yLnBhbmVscy5uZXR3b3JrLnJlcXVlc3RzLmxlbmd0aCAtIDFdOworICAgICAgICBJbnNwZWN0
b3JUZXN0LmFkZFJlc3VsdCgicmVzb3VyY2UuY29udGVudCBhZnRlciBkaXNhYmxpbmcgbmV0d29y
ayBkb21haW46ICIgKyByZXF1ZXN0MS5jb250ZW50KTsKICAgICAgICAgTmV0d29ya0FnZW50LmVu
YWJsZShzdGVwNSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstZW1iZWQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1lbWJlZC5odG1sCmluZGV4IGFkZDE4OWIw
MmY2NDg0OTQzNTU3M2UyNmYwNzEzZDMxYTk5ZmMzODEuLmYyMWEyYTU1Yjc4NTkyZmI5MjkyYzU5
MDM2NzJjMjIwZDVjN2YyMjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL25ldHdvcmsvbmV0d29yay1lbWJlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1lbWJlZC5odG1sCkBAIC03MCw1MSArNzAs
NTEgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBh
Z2UoIm9uU25pZmZlckluc3RhbGxlZCgpIik7CiAgICAgfQogCi0gICAgZnVuY3Rpb24gZHVtcFJl
c291cmNlKHJlc291cmNlLCBjYWxsYmFjaykKKyAgICBmdW5jdGlvbiBkdW1wUmVxdWVzdChyZXF1
ZXN0LCBjYWxsYmFjaykKICAgICB7Ci0gICAgICAgIGlmICghcmVzb3VyY2UpCisgICAgICAgIGlm
ICghcmVxdWVzdCkKICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjaygpOwotICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFkZFJlc3VsdChyZXNvdXJjZS51cmwpOwotICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZFJlc3VsdCgicmVzb3VyY2UudHlwZTogIiArIHJlc291cmNlLnR5cGUpOwotICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgicmVzb3VyY2UuY29udGVudCBiZWZvcmUgcmVxdWVzdGlu
ZyBjb250ZW50OiAiICsgcmVzb3VyY2UuY29udGVudCk7CisgICAgICAgIEluc3BlY3RvclRlc3Qu
YWRkUmVzdWx0KHJlcXVlc3QudXJsKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQo
InJlc291cmNlLnR5cGU6ICIgKyByZXF1ZXN0LnR5cGUpOworICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZFJlc3VsdCgicmVzb3VyY2UuY29udGVudCBiZWZvcmUgcmVxdWVzdGluZyBjb250ZW50OiAi
ICsgcmVxdWVzdC5jb250ZW50KTsKIAogICAgICAgICBmdW5jdGlvbiBjb250ZW50TG9hZGVkKCkK
ICAgICAgICAgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoInJlc291cmNl
LmNvbnRlbnQgYWZ0ZXIgcmVxdWVzdGluZyBjb250ZW50OiAiICsgcmVzb3VyY2UuY29udGVudCk7
CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgicmVzb3VyY2UuY29udGVudCBh
ZnRlciByZXF1ZXN0aW5nIGNvbnRlbnQ6ICIgKyByZXF1ZXN0LmNvbnRlbnQpOwogICAgICAgICAg
ICAgY2FsbGJhY2soKTsKICAgICAgICAgfQogCi0gICAgICAgIHJlc291cmNlLnJlcXVlc3RDb250
ZW50KGNvbnRlbnRMb2FkZWQpOworICAgICAgICByZXF1ZXN0LnJlcXVlc3RDb250ZW50KGNvbnRl
bnRMb2FkZWQpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHN0ZXAyKCkKICAgICB7Ci0gICAgICAg
IHZhciByZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXNbV2Vi
SW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlcy5sZW5ndGggLSA1XTsKLSAgICAgICAg
ZHVtcFJlc291cmNlKHJlc291cmNlLCBzdGVwMyk7CisgICAgICAgIHZhciByZXF1ZXN0ID0gV2Vi
SW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlcXVlc3RzW1dlYkluc3BlY3Rvci5wYW5lbHMubmV0
d29yay5yZXF1ZXN0cy5sZW5ndGggLSA1XTsKKyAgICAgICAgZHVtcFJlcXVlc3QocmVxdWVzdCwg
c3RlcDMpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHN0ZXAzKCkKICAgICB7Ci0gICAgICAgIHZh
ciByZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXNbV2ViSW5z
cGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlcy5sZW5ndGggLSA0XTsKLSAgICAgICAgZHVt
cFJlc291cmNlKHJlc291cmNlLCBzdGVwNCk7CisgICAgICAgIHZhciByZXF1ZXN0ID0gV2ViSW5z
cGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlcXVlc3RzW1dlYkluc3BlY3Rvci5wYW5lbHMubmV0d29y
ay5yZXF1ZXN0cy5sZW5ndGggLSA0XTsKKyAgICAgICAgZHVtcFJlcXVlc3QocmVxdWVzdCwgc3Rl
cDQpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHN0ZXA0KCkKICAgICB7Ci0gICAgICAgIHZhciBy
ZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXNbV2ViSW5zcGVj
dG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlcy5sZW5ndGggLSAzXTsKLSAgICAgICAgZHVtcFJl
c291cmNlKHJlc291cmNlLCBzdGVwNSk7CisgICAgICAgIHZhciByZXF1ZXN0ID0gV2ViSW5zcGVj
dG9yLnBhbmVscy5uZXR3b3JrLnJlcXVlc3RzW1dlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5y
ZXF1ZXN0cy5sZW5ndGggLSAzXTsKKyAgICAgICAgZHVtcFJlcXVlc3QocmVxdWVzdCwgc3RlcDUp
OwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHN0ZXA1KCkKICAgICB7Ci0gICAgICAgIHZhciByZXNv
dXJjZSA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXNbV2ViSW5zcGVjdG9y
LnBhbmVscy5uZXR3b3JrLnJlc291cmNlcy5sZW5ndGggLSAyXTsKLSAgICAgICAgZHVtcFJlc291
cmNlKHJlc291cmNlLCBzdGVwNik7CisgICAgICAgIHZhciByZXF1ZXN0ID0gV2ViSW5zcGVjdG9y
LnBhbmVscy5uZXR3b3JrLnJlcXVlc3RzW1dlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXF1
ZXN0cy5sZW5ndGggLSAyXTsKKyAgICAgICAgZHVtcFJlcXVlc3QocmVxdWVzdCwgc3RlcDYpOwog
ICAgIH0KIAogICAgIGZ1bmN0aW9uIHN0ZXA2KCkKICAgICB7Ci0gICAgICAgIHZhciByZXNvdXJj
ZSA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXNbV2ViSW5zcGVjdG9yLnBh
bmVscy5uZXR3b3JrLnJlc291cmNlcy5sZW5ndGggLSAxXTsKLSAgICAgICAgZHVtcFJlc291cmNl
KHJlc291cmNlLCBzdGVwNyk7CisgICAgICAgIHZhciByZXF1ZXN0ID0gV2ViSW5zcGVjdG9yLnBh
bmVscy5uZXR3b3JrLnJlcXVlc3RzW1dlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXF1ZXN0
cy5sZW5ndGggLSAxXTsKKyAgICAgICAgZHVtcFJlcXVlc3QocmVxdWVzdCwgc3RlcDcpOwogICAg
IH0KIAogICAgIGZ1bmN0aW9uIHN0ZXA3KCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1lbXB0eS14aHIuaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1lbXB0eS14aHIuaHRtbApp
bmRleCAxYzdhYmFiOTQyYjQxMzA1NTZmOGVhYjhkMTVkMWFjOGUyMTMxZDgxLi41OTg1NjAzZWVh
OGViM2ZmOWU4MjEzYTRkMTM1ZWUxZjE2MjlhY2FmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstZW1wdHkteGhyLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWVtcHR5LXho
ci5odG1sCkBAIC0yNCwxOSArMjQsMTkgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgLy8gdGVzdHMs
IHdlIG5lZWQgdG8gcmVzZXQgc2l6ZSBsaW1pdHMgdG8gZGVmYXVsdCBvbmVzLgogICAgIEluc3Bl
Y3RvclRlc3QucmVzZXRJbnNwZWN0b3JSZXNvdXJjZXNEYXRhKHN0ZXAxKTsKIAotICAgIGZ1bmN0
aW9uIGR1bXBSZXNvdXJjZShyZXNvdXJjZSwgY2FsbGJhY2spCisgICAgZnVuY3Rpb24gZHVtcFJl
cXVlc3QocmVxdWVzdCwgY2FsbGJhY2spCiAgICAgewotICAgICAgICBpZiAoIXJlc291cmNlKQor
ICAgICAgICBpZiAoIXJlcXVlc3QpCiAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soKTsKLSAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQocmVzb3VyY2UudXJsKTsKKyAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQocmVxdWVzdC51cmwpOwogCiAgICAgICAgIGZ1bmN0aW9uIGNv
bnRlbnRMb2FkZWQoKQogICAgICAgICB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJl
c3VsdCgicmVzb3VyY2UuY29udGVudDogIiArIHJlc291cmNlLmNvbnRlbnQpOworICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoInJlc291cmNlLmNvbnRlbnQ6ICIgKyByZXF1ZXN0
LmNvbnRlbnQpOwogICAgICAgICAgICAgY2FsbGJhY2soKTsKICAgICAgICAgfQogCi0gICAgICAg
IHJlc291cmNlLnJlcXVlc3RDb250ZW50KGNvbnRlbnRMb2FkZWQpOworICAgICAgICByZXF1ZXN0
LnJlcXVlc3RDb250ZW50KGNvbnRlbnRMb2FkZWQpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHN0
ZXAxKCkKQEAgLTQ3LDE0ICs0NywxNCBAQCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgIGZ1bmN0aW9u
IHN0ZXAyKCkKICAgICB7Ci0gICAgICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5wYW5l
bHMubmV0d29yay5yZXNvdXJjZXNbV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNl
cy5sZW5ndGggLSAyXTsKLSAgICAgICAgZHVtcFJlc291cmNlKHJlc291cmNlLCBzdGVwMyk7Cisg
ICAgICAgIHZhciByZXF1ZXN0ID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlcXVlc3Rz
W1dlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXF1ZXN0cy5sZW5ndGggLSAyXTsKKyAgICAg
ICAgZHVtcFJlcXVlc3QocmVxdWVzdCwgc3RlcDMpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHN0
ZXAzKCkKICAgICB7Ci0gICAgICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5wYW5lbHMu
bmV0d29yay5yZXNvdXJjZXNbV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlcy5s
ZW5ndGggLSAxXTsKLSAgICAgICAgZHVtcFJlc291cmNlKHJlc291cmNlLCBzdGVwNCk7CisgICAg
ICAgIHZhciByZXF1ZXN0ID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlcXVlc3RzW1dl
Ykluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXF1ZXN0cy5sZW5ndGggLSAxXTsKKyAgICAgICAg
ZHVtcFJlcXVlc3QocmVxdWVzdCwgc3RlcDQpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHN0ZXA0
KCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsv
bmV0d29yay1pZnJhbWUtbG9hZC1hbmQtZGVsZXRlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstaWZyYW1lLWxvYWQtYW5kLWRlbGV0ZS5odG1s
CmluZGV4IGZlNjc3YjUyM2NiMDllMjEwOGNlMzI0OTkxZDg1ZjE1NTliNDJmNmYuLjNlYTJjZWM4
NzA3OWVjYjJhZTQ4YmRmMmViYWQ0YzA4ZTBiYTE1NTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1pZnJhbWUtbG9hZC1hbmQtZGVs
ZXRlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9u
ZXR3b3JrLWlmcmFtZS1sb2FkLWFuZC1kZWxldGUuaHRtbApAQCAtNDMsMjkgKzQzLDI5IEBAIGZ1
bmN0aW9uIHRlc3QoKQogCiAgICAgZnVuY3Rpb24gc3RlcDIoKQogICAgIHsKLSAgICAgICAgdmFy
IHJlc291cmNlMSA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXNbV2ViSW5z
cGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlcy5sZW5ndGggLSAzXTsKLSAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQocmVzb3VyY2UxLnVybCk7Ci0gICAgICAgIEluc3BlY3RvclRl
c3QuYWRkUmVzdWx0KCJyZXNvdXJjZS50eXBlOiAiICsgcmVzb3VyY2UxLnR5cGUpOwotICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgicmVzb3VyY2UuY29udGVudCBiZWZvcmUgcmVxdWVz
dGluZyBjb250ZW50OiAiICsgcmVzb3VyY2UxLmNvbnRlbnQpOwotICAgICAgICByZXNvdXJjZTEu
cmVxdWVzdENvbnRlbnQoc3RlcDMpOworICAgICAgICB2YXIgcmVxdWVzdDEgPSBXZWJJbnNwZWN0
b3IucGFuZWxzLm5ldHdvcmsucmVxdWVzdHNbV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJl
cXVlc3RzLmxlbmd0aCAtIDNdOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChyZXF1
ZXN0MS51cmwpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgicmVzb3VyY2UudHlw
ZTogIiArIHJlcXVlc3QxLnR5cGUpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgi
cmVzb3VyY2UuY29udGVudCBiZWZvcmUgcmVxdWVzdGluZyBjb250ZW50OiAiICsgcmVxdWVzdDEu
Y29udGVudCk7CisgICAgICAgIHJlcXVlc3QxLnJlcXVlc3RDb250ZW50KHN0ZXAzKTsKICAgICB9
CiAKICAgICBmdW5jdGlvbiBzdGVwMygpCiAgICAgewotICAgICAgICB2YXIgcmVzb3VyY2UxID0g
V2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlc1tXZWJJbnNwZWN0b3IucGFuZWxz
Lm5ldHdvcmsucmVzb3VyY2VzLmxlbmd0aCAtIDNdOwotICAgICAgICBJbnNwZWN0b3JUZXN0LmFk
ZFJlc3VsdCgicmVzb3VyY2UuY29udGVudCBhZnRlciByZXF1ZXN0aW5nIGNvbnRlbnQ6ICIgKyBy
ZXNvdXJjZTEuY29udGVudCk7CisgICAgICAgIHZhciByZXF1ZXN0MSA9IFdlYkluc3BlY3Rvci5w
YW5lbHMubmV0d29yay5yZXF1ZXN0c1tXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVxdWVz
dHMubGVuZ3RoIC0gM107CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJyZXNvdXJj
ZS5jb250ZW50IGFmdGVyIHJlcXVlc3RpbmcgY29udGVudDogIiArIHJlcXVlc3QxLmNvbnRlbnQp
OwogCi0gICAgICAgIHZhciByZXNvdXJjZTIgPSBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsu
cmVzb3VyY2VzW1dlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXMubGVuZ3RoIC0g
MV07Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KHJlc291cmNlMi51cmwpOwotICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgicmVzb3VyY2UudHlwZTogIiArIHJlc291cmNl
Mi50eXBlKTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoInJlc291cmNlLmNvbnRl
bnQgYmVmb3JlIHJlcXVlc3RpbmcgY29udGVudDogIiArIHJlc291cmNlMi5jb250ZW50KTsKLSAg
ICAgICAgcmVzb3VyY2UyLnJlcXVlc3RDb250ZW50KHN0ZXA0KTsKKyAgICAgICAgdmFyIHJlcXVl
c3QyID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlcXVlc3RzW1dlYkluc3BlY3Rvci5w
YW5lbHMubmV0d29yay5yZXF1ZXN0cy5sZW5ndGggLSAxXTsKKyAgICAgICAgSW5zcGVjdG9yVGVz
dC5hZGRSZXN1bHQocmVxdWVzdDIudXJsKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1
bHQoInJlc291cmNlLnR5cGU6ICIgKyByZXF1ZXN0Mi50eXBlKTsKKyAgICAgICAgSW5zcGVjdG9y
VGVzdC5hZGRSZXN1bHQoInJlc291cmNlLmNvbnRlbnQgYmVmb3JlIHJlcXVlc3RpbmcgY29udGVu
dDogIiArIHJlcXVlc3QyLmNvbnRlbnQpOworICAgICAgICByZXF1ZXN0Mi5yZXF1ZXN0Q29udGVu
dChzdGVwNCk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gc3RlcDQoKQogICAgIHsKLSAgICAgICAg
dmFyIHJlc291cmNlMiA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXNbV2Vi
SW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlcy5sZW5ndGggLSAxXTsKLSAgICAgICAg
SW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoInJlc291cmNlLmNvbnRlbnQgYWZ0ZXIgcmVxdWVzdGlu
ZyBjb250ZW50OiAiICsgcmVzb3VyY2UyLmNvbnRlbnQpOworICAgICAgICB2YXIgcmVxdWVzdDIg
PSBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVxdWVzdHNbV2ViSW5zcGVjdG9yLnBhbmVs
cy5uZXR3b3JrLnJlcXVlc3RzLmxlbmd0aCAtIDFdOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFk
ZFJlc3VsdCgicmVzb3VyY2UuY29udGVudCBhZnRlciByZXF1ZXN0aW5nIGNvbnRlbnQ6ICIgKyBy
ZXF1ZXN0Mi5jb250ZW50KTsKIAogICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgp
OwogICAgIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvbmV0d29yay1pbml0aWF0b3ItZnJvbS1jb25zb2xlLmh0bWwgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstaW5pdGlhdG9yLWZyb20tY29uc29s
ZS5odG1sCmluZGV4IGY2ZDFmMDFjOWRkZDYxOTY4YTViMzM4ODA1ZWY3ZjcwMGQyMjg1NmYuLmQx
MDgwMjNmZGM4ZjBlNGI4ZDdiZTE4ZjhhZDQwY2E3ODkxMzMzNGQgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1pbml0aWF0b3ItZnJv
bS1jb25zb2xlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9uZXR3b3JrLWluaXRpYXRvci1mcm9tLWNvbnNvbGUuaHRtbApAQCAtNywxOSArNywxOSBA
QCB2YXIgdGVzdCA9IGZ1bmN0aW9uKCkKIHsKICAgICBJbnNwZWN0b3JUZXN0LnJlbG9hZFBhZ2Uo
c3RlcDEpOwogCi0gICAgZnVuY3Rpb24gZmluZFJlc291cmNlQnlVUkwodXJsKQorICAgIGZ1bmN0
aW9uIGZpbmRSZXF1ZXN0QnlVUkwodXJsKQogICAgIHsKLSAgICAgICAgdmFyIHJlc291cmNlcyA9
IFdlYkluc3BlY3Rvci5uZXR3b3JrTG9nLnJlc291cmNlczsKLSAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCByZXNvdXJjZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIGlmICh1cmwudGVz
dChyZXNvdXJjZXNbaV0udXJsKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVzb3VyY2VzW2ld
OworICAgICAgICB2YXIgcmVxdWVzdHMgPSBXZWJJbnNwZWN0b3IubmV0d29ya0xvZy5yZXF1ZXN0
czsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXF1ZXN0cy5sZW5ndGg7ICsraSkgewor
ICAgICAgICAgICAgaWYgKHVybC50ZXN0KHJlcXVlc3RzW2ldLnVybCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIHJlcXVlc3RzW2ldOwogICAgICAgICB9CiAgICAgfQogCiAgICAgZnVuY3Rpb24g
c3RlcDEoKQogICAgIHsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRDb25zb2xlU25pZmZlcihz
dGVwMik7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5uZXR3b3JrTWFuYWdlci5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5FdmVudFR5cGVzLlJlc291cmNlU3RhcnRl
ZCwgb25SZXNvdXJjZSk7CisgICAgICAgIFdlYkluc3BlY3Rvci5uZXR3b3JrTWFuYWdlci5hZGRF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5FdmVudFR5cGVzLlJlcXVl
c3RTdGFydGVkLCBvblJlcXVlc3QpOwogICAgICAgICB2YXIgc3RyID0gIiI7CiAgICAgICAgIHN0
ciArPSAidmFyIHMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpOyI7CiAgICAg
ICAgIHN0ciArPSAicy5zcmMgPSBcInJlc291cmNlcy9zY3JpcHQuanNcIjsiOwpAQCAtMjcsMTYg
KzI3LDE2IEBAIHZhciB0ZXN0ID0gZnVuY3Rpb24oKQogICAgICAgICBXZWJJbnNwZWN0b3IuY29u
c29sZVZpZXcuZXZhbEluSW5zcGVjdGVkV2luZG93KHN0ciwgImNvbnNvbGUiLCB0cnVlLCB1bmRl
ZmluZWQsIHVuZGVmaW5lZCwgZnVuY3Rpb24oKXt9KQogICAgIH0KIAotICAgIGZ1bmN0aW9uIG9u
UmVzb3VyY2UoZXZlbnQpCisgICAgZnVuY3Rpb24gb25SZXF1ZXN0KGV2ZW50KQogICAgIHsKLSAg
ICAgICAgdmFyIHJlc291cmNlID0gZXZlbnQuZGF0YTsKLSAgICAgICAgaWYgKC9zY3JpcHQuanMv
LnRlc3QocmVzb3VyY2UudXJsKSkKKyAgICAgICAgdmFyIHJlcXVlc3QgPSBldmVudC5kYXRhOwor
ICAgICAgICBpZiAoL3NjcmlwdC5qcy8udGVzdChyZXF1ZXN0LnVybCkpCiAgICAgICAgICAgICBz
dGVwMigpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHN0ZXAyKCkKICAgICB7Ci0gICAgICAgIGlm
ICghZmluZFJlc291cmNlQnlVUkwoL3NjcmlwdC5qcy8pKQorICAgICAgICBpZiAoIWZpbmRSZXF1
ZXN0QnlVUkwoL3NjcmlwdC5qcy8pKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIFdl
Ykluc3BlY3Rvci5wYW5lbHMubmV0d29yay5zaG93KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstaW5pdGlhdG9yLmh0bWwgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstaW5pdGlhdG9y
Lmh0bWwKaW5kZXggZmQ0OGNjZWFlNzlkMDEyYjg5MTc4YTJlY2NhYzRmMTIxNGZjNDJmNy4uZDFk
YTZhYzUzY2VhMjQzMTQzNDMzZWNkYjlkZTc4MmYwYjJiOTA0ZSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWluaXRpYXRvci5odG1s
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1p
bml0aWF0b3IuaHRtbApAQCAtMzgsMzEgKzM4LDMxIEBAIHZhciB0ZXN0ID0gZnVuY3Rpb24oKQog
ewogICAgIEluc3BlY3RvclRlc3QucmVsb2FkUGFnZShzdGVwMSk7CiAKLSAgICBmdW5jdGlvbiBm
aW5kUmVzb3VyY2VCeVVSTCh1cmwpCisgICAgZnVuY3Rpb24gZmluZFJlcXVlc3RCeVVSTCh1cmwp
CiAgICAgewotICAgICAgICB2YXIgcmVzb3VyY2VzID0gV2ViSW5zcGVjdG9yLm5ldHdvcmtMb2cu
cmVzb3VyY2VzOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc291cmNlcy5sZW5ndGg7
ICsraSkgewotICAgICAgICAgICAgaWYgKHVybC50ZXN0KHJlc291cmNlc1tpXS51cmwpKQotICAg
ICAgICAgICAgICAgIHJldHVybiByZXNvdXJjZXNbaV07CisgICAgICAgIHZhciByZXF1ZXN0cyA9
IFdlYkluc3BlY3Rvci5uZXR3b3JrTG9nLnJlcXVlc3RzOworICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHJlcXVlc3RzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBpZiAodXJsLnRlc3Qo
cmVxdWVzdHNbaV0udXJsKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVxdWVzdHNbaV07CiAg
ICAgICAgIH0KICAgICB9CiAKICAgICBmdW5jdGlvbiBzdGVwMSgpCiAgICAgewotICAgICAgICBX
ZWJJbnNwZWN0b3IubmV0d29ya01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
TmV0d29ya01hbmFnZXIuRXZlbnRUeXBlcy5SZXNvdXJjZUZpbmlzaGVkLCBvblJlc291cmNlKTsK
KyAgICAgICAgV2ViSW5zcGVjdG9yLm5ldHdvcmtNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLkV2ZW50VHlwZXMuUmVxdWVzdEZpbmlzaGVkLCBvblJl
cXVlc3QpOwogICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJhZGRDbGFzc1Rv
RGl2KCkiLCBzdGVwMik7CiAgICAgfQogCi0gICAgZnVuY3Rpb24gb25SZXNvdXJjZShldmVudCkK
KyAgICBmdW5jdGlvbiBvblJlcXVlc3QoZXZlbnQpCiAgICAgewotICAgICAgICB2YXIgcmVzb3Vy
Y2UgPSBldmVudC5kYXRhOwotICAgICAgICBpZiAoL3NpemU9MzAwLy50ZXN0KHJlc291cmNlLnVy
bCkpCisgICAgICAgIHZhciByZXF1ZXN0ID0gZXZlbnQuZGF0YTsKKyAgICAgICAgaWYgKC9zaXpl
PTMwMC8udGVzdChyZXF1ZXN0LnVybCkpCiAgICAgICAgICAgICBzdGVwMigpOwogICAgIH0KIAog
ICAgIGZ1bmN0aW9uIHN0ZXAyKCkKICAgICB7Ci0gICAgICAgIGlmICghZmluZFJlc291cmNlQnlV
UkwoL3NpemU9MzAwLykpCisgICAgICAgIGlmICghZmluZFJlcXVlc3RCeVVSTCgvc2l6ZT0zMDAv
KSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZENvbnNv
bGVTbmlmZmVyKHN0ZXAzKTsKQEAgLTcxLDIxICs3MSwyMSBAQCB2YXIgdGVzdCA9IGZ1bmN0aW9u
KCkKIAogICAgIGZ1bmN0aW9uIHN0ZXAzKCkKICAgICB7Ci0gICAgICAgIGZ1bmN0aW9uIGR1bXBJ
bml0aWF0b3IocmVzb3VyY2UpCisgICAgICAgIGZ1bmN0aW9uIGR1bXBJbml0aWF0b3IocmVxdWVz
dCkKICAgICAgICAgewotICAgICAgICAgICAgdmFyIGluaXRpYXRvciA9IHJlc291cmNlLmluaXRp
YXRvcjsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KHJlc291cmNlLnVybCAr
ICI6ICIgKyBpbml0aWF0b3IudHlwZSk7CisgICAgICAgICAgICB2YXIgaW5pdGlhdG9yID0gcmVx
dWVzdC5pbml0aWF0b3I7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChyZXF1
ZXN0LnVybCArICI6ICIgKyBpbml0aWF0b3IudHlwZSk7CiAgICAgICAgICAgICBpZiAoaW5pdGlh
dG9yLnVybCkKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiICAgICIg
KyBpbml0aWF0b3IudXJsICsgIiAiICsgaW5pdGlhdG9yLmxpbmVOdW1iZXIpOwogICAgICAgICAg
ICAgaWYgKGluaXRpYXRvci5zdGFja1RyYWNlKQogICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuYWRkUmVzdWx0KCIgICAgIiArIGluaXRpYXRvci5zdGFja1RyYWNlWzBdLnVybCArICIgIiAr
IGluaXRpYXRvci5zdGFja1RyYWNlWzBdLmxpbmVOdW1iZXIpOwogICAgICAgICB9CiAKLSAgICAg
ICAgZHVtcEluaXRpYXRvcihmaW5kUmVzb3VyY2VCeVVSTCgvaW5pdGlhdG9yXC5jc3MvKSk7Ci0g
ICAgICAgIGR1bXBJbml0aWF0b3IoZmluZFJlc291cmNlQnlVUkwoL3NpemU9MTAwLykpOwotICAg
ICAgICBkdW1wSW5pdGlhdG9yKGZpbmRSZXNvdXJjZUJ5VVJMKC9zaXplPTIwMC8pKTsKLSAgICAg
ICAgZHVtcEluaXRpYXRvcihmaW5kUmVzb3VyY2VCeVVSTCgvc2l6ZT0zMDAvKSk7Ci0gICAgICAg
IGR1bXBJbml0aWF0b3IoZmluZFJlc291cmNlQnlVUkwoL3NpemU9NDAwLykpOworICAgICAgICBk
dW1wSW5pdGlhdG9yKGZpbmRSZXF1ZXN0QnlVUkwoL2luaXRpYXRvclwuY3NzLykpOworICAgICAg
ICBkdW1wSW5pdGlhdG9yKGZpbmRSZXF1ZXN0QnlVUkwoL3NpemU9MTAwLykpOworICAgICAgICBk
dW1wSW5pdGlhdG9yKGZpbmRSZXF1ZXN0QnlVUkwoL3NpemU9MjAwLykpOworICAgICAgICBkdW1w
SW5pdGlhdG9yKGZpbmRSZXF1ZXN0QnlVUkwoL3NpemU9MzAwLykpOworICAgICAgICBkdW1wSW5p
dGlhdG9yKGZpbmRSZXF1ZXN0QnlVUkwoL3NpemU9NDAwLykpOwogCiAgICAgICAgIEluc3BlY3Rv
clRlc3QuY29tcGxldGVUZXN0KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXJlcXVlc3QtcmV2aXNpb24tY29udGVu
dC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3Jr
LXJlcXVlc3QtcmV2aXNpb24tY29udGVudC5odG1sCmluZGV4IGM0ZGU5NGZlZjk4N2QyNmQxNTNj
ZTRiMWU4MDJjZGNjYmNhOWIzM2MuLjNjYzA4NjM5MTY3OTU2NzhmYjY1Mjg2MjA5MzI1NjIzMWJi
ZjU3NjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvbmV0d29yay1yZXF1ZXN0LXJldmlzaW9uLWNvbnRlbnQuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstcmVxdWVzdC1yZXZpc2lvbi1j
b250ZW50Lmh0bWwKQEAgLTE2LDE2ICsxNiwxNiBAQCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgIGZ1
bmN0aW9uIHN0ZXAyKG1zZykKICAgICB7Ci0gICAgICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3Bl
Y3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXNbV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3Jr
LnJlc291cmNlcy5sZW5ndGggLSAxXTsKLSAgICAgICAgcmVzb3VyY2UuYWRkUmV2aXNpb24oIiIp
OwotICAgICAgICByZXNvdXJjZS5oaXN0b3J5WzBdLnJlcXVlc3RDb250ZW50KHN0ZXAzKTsKKyAg
ICAgICAgdmFyIHJlcXVlc3QgPSBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVxdWVzdHNb
V2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlcXVlc3RzLmxlbmd0aCAtIDFdOworICAgICAg
ICByZXF1ZXN0LmFkZFJldmlzaW9uKCIiKTsKKyAgICAgICAgcmVxdWVzdC5oaXN0b3J5WzBdLnJl
cXVlc3RDb250ZW50KHN0ZXAzKTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBzdGVwMygpCiAgICAg
ewotICAgICAgICB2YXIgcmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVz
b3VyY2VzW1dlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXMubGVuZ3RoIC0gMV07
Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KHJlc291cmNlLnVybCk7Ci0gICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KHJlc291cmNlLmNvbnRlbnQpOworICAgICAgICB2YXIg
cmVxdWVzdCA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXF1ZXN0c1tXZWJJbnNwZWN0
b3IucGFuZWxzLm5ldHdvcmsucmVxdWVzdHMubGVuZ3RoIC0gMV07CisgICAgICAgIEluc3BlY3Rv
clRlc3QuYWRkUmVzdWx0KHJlcXVlc3QudXJsKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRS
ZXN1bHQocmVxdWVzdC5jb250ZW50KTsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRl
c3QoKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL25ldHdvcmstc2hhcmVkLXdvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXNoYXJlZC13b3JrZXIuaHRtbAppbmRl
eCBmZDliNTk1NzhjZjZjY2QwZGI3Mzg0OTk0MTRhMWExNWRjNGYzZjIwLi40OTVmYTBkZGZjZDky
MjVhNWZiODNkNDQ2NzA1ZTQ2ZThhNjIyOGMyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstc2hhcmVkLXdvcmtlci5odG1sCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1zaGFyZWQt
d29ya2VyLmh0bWwKQEAgLTI4LDE3ICsyOCwxNyBAQCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgIGZ1
bmN0aW9uIHN0ZXAyKCkKICAgICB7Ci0gICAgICAgIHZhciByZXNvdXJjZTEgPSBXZWJJbnNwZWN0
b3IucGFuZWxzLm5ldHdvcmsucmVzb3VyY2VzW1dlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5y
ZXNvdXJjZXMubGVuZ3RoIC0gMV07Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KHJl
c291cmNlMS51cmwpOwotICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgicmVzb3VyY2Uu
dHlwZTogIiArIHJlc291cmNlMS50eXBlKTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1
bHQoInJlc291cmNlLmNvbnRlbnQgYmVmb3JlIHJlcXVlc3RpbmcgY29udGVudDogIiArIHJlc291
cmNlMS5jb250ZW50KTsKLSAgICAgICAgcmVzb3VyY2UxLnJlcXVlc3RDb250ZW50KHN0ZXAzKTsK
KyAgICAgICAgdmFyIHJlcXVlc3QxID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlcXVl
c3RzW1dlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXF1ZXN0cy5sZW5ndGggLSAxXTsKKyAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQocmVxdWVzdDEudXJsKTsKKyAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQoInJlc291cmNlLnR5cGU6ICIgKyByZXF1ZXN0MS50eXBlKTsK
KyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoInJlc291cmNlLmNvbnRlbnQgYmVmb3Jl
IHJlcXVlc3RpbmcgY29udGVudDogIiArIHJlcXVlc3QxLmNvbnRlbnQpOworICAgICAgICByZXF1
ZXN0MS5yZXF1ZXN0Q29udGVudChzdGVwMyk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gc3RlcDMo
KQogICAgIHsKLSAgICAgICAgdmFyIHJlc291cmNlMSA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0
d29yay5yZXNvdXJjZXNbV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlcy5sZW5n
dGggLSAxXTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoInJlc291cmNlLmNvbnRl
bnQgYWZ0ZXIgcmVxdWVzdGluZyBjb250ZW50OiAiICsgcmVzb3VyY2UxLmNvbnRlbnQpOworICAg
ICAgICB2YXIgcmVxdWVzdDEgPSBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVxdWVzdHNb
V2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlcXVlc3RzLmxlbmd0aCAtIDFdOworICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgicmVzb3VyY2UuY29udGVudCBhZnRlciByZXF1ZXN0
aW5nIGNvbnRlbnQ6ICIgKyByZXF1ZXN0MS5jb250ZW50KTsKIAogICAgICAgICBJbnNwZWN0b3JU
ZXN0LmNvbXBsZXRlVGVzdCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1zaWRlYmFyLXdpZHRoLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstc2lkZWJhci13aWR0
aC5odG1sCmluZGV4IDE0ZWM4NTkwZTBkNzA5MGVlYzljMDUxYTc1YjRhMWNlN2Q5ODhjNGMuLjll
NWI0N2NkMzIwODg5Y2FhOTA2MjNjYTI4NjM1ZTE1ZjhjOTJlYmQgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1zaWRlYmFyLXdpZHRo
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3
b3JrLXNpZGViYXItd2lkdGguaHRtbApAQCAtMjMsMjAgKzIzLDIwIEBAIGZ1bmN0aW9uIHRlc3Qo
KQogICAgIHsKICAgICAgICAgdmFyIHBhbmVsID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3Jr
OwogICAgICAgICB2YXIgc2V0dGluZyA9IFdlYkluc3BlY3Rvci5zZXR0aW5nc1twYW5lbC5fc2lk
ZWJhcldpZHRoU2V0dGluZ05hbWUoKV07Ci0gICAgICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3Bl
Y3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXNbV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3Jr
LnJlc291cmNlcy5sZW5ndGggLSAxXTsKKyAgICAgICAgdmFyIHJlcXVlc3QgPSBXZWJJbnNwZWN0
b3IucGFuZWxzLm5ldHdvcmsucmVxdWVzdHNbV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJl
cXVlc3RzLmxlbmd0aCAtIDFdOwogCiAgICAgICAgIG9sZFNldHRpbmcgPSBzZXR0aW5nLmdldCgp
OwogICAgICAgICBwYW5lbC5zaG93KCk7CiAKICAgICAgICAgc2V0dGluZy5zZXQodW5kZWZpbmVk
KTsKLSAgICAgICAgcGFuZWwuX3Nob3dSZXNvdXJjZShyZXNvdXJjZSk7CisgICAgICAgIHBhbmVs
Ll9zaG93UmVxdWVzdChyZXF1ZXN0KTsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQo
IlNpZGViYXIgd2lkdGg6ICIgKyBwYW5lbC5zaWRlYmFyRWxlbWVudC5vZmZzZXRXaWR0aCk7CiAg
ICAgICAgIHBhbmVsLl90b2dnbGVHcmlkTW9kZSgpOwogCiAgICAgICAgIHNldHRpbmcuc2V0KDI0
Mik7Ci0gICAgICAgIHBhbmVsLl9zaG93UmVzb3VyY2UocmVzb3VyY2UpOworICAgICAgICBwYW5l
bC5fc2hvd1JlcXVlc3QocmVxdWVzdCk7CiAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0
KCJTaWRlYmFyIHdpZHRoOiAiICsgcGFuZWwuc2lkZWJhckVsZW1lbnQub2Zmc2V0V2lkdGgpOwot
ICAgICAgICBwYW5lbC5fY2xvc2VWaXNpYmxlUmVzb3VyY2UocmVzb3VyY2UpOworICAgICAgICBw
YW5lbC5fY2xvc2VWaXNpYmxlUmVxdWVzdChyZXF1ZXN0KTsKIAogICAgICAgICBzZXR0aW5nLnNl
dChvbGRTZXR0aW5nKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvbmV0d29yay9uZXR3b3JrLXNpemUtY2h1bmtlZC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXNpemUtY2h1bmtlZC5odG1sCmluZGV4
IDU1N2M0ZjQzNWQ3NGM3NDNlY2ExN2JmYWY0NmIzYmQzYWQ4MzZhODYuLmMwN2Y2YjRmOTU5Yzc1
ODRmODM3MGY2NDU4MTA0N2JiYjRmZjIxMTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1zaXplLWNodW5rZWQuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstc2l6ZS1jaHVu
a2VkLmh0bWwKQEAgLTIyLDEwICsyMiwxMCBAQCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgIGZ1bmN0
aW9uIHN0ZXAyKCkKICAgICB7Ci0gICAgICAgIHZhciByZXNvdXJjZTEgPSBXZWJJbnNwZWN0b3Iu
cGFuZWxzLm5ldHdvcmsucmVzb3VyY2VzW1dlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNv
dXJjZXMubGVuZ3RoIC0gMV07Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KHJlc291
cmNlMS51cmwpOwotICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgicmVzb3VyY2VTaXpl
OiAiICsgcmVzb3VyY2UxLnJlc291cmNlU2l6ZSk7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KCJ0cmFuc2ZlclNpemU6ICIgKyByZXNvdXJjZTEudHJhbnNmZXJTaXplKTsKKyAgICAg
ICAgdmFyIHJlcXVlc3QxID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlcXVlc3RzW1dl
Ykluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXF1ZXN0cy5sZW5ndGggLSAxXTsKKyAgICAgICAg
SW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQocmVxdWVzdDEudXJsKTsKKyAgICAgICAgSW5zcGVjdG9y
VGVzdC5hZGRSZXN1bHQoInJlc291cmNlU2l6ZTogIiArIHJlcXVlc3QxLnJlc291cmNlU2l6ZSk7
CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJ0cmFuc2ZlclNpemU6ICIgKyByZXF1
ZXN0MS50cmFuc2ZlclNpemUpOwogCiAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0
KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9uZXR3b3JrLXNpemUtc3luYy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXNpemUtc3luYy5odG1sCmluZGV4IDJkYzdhZDMyZmEx
NzYzMzU0MzQ4NDkzMWRjNTY5NTQ1YzEwM2U2YmEuLjUxYjNiMDlhOTdkNzdkODViZjc2YjdmYTlk
ZGVhNTBhNGQ4YzJmZDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvbmV0d29yay1zaXplLXN5bmMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstc2l6ZS1zeW5jLmh0bWwKQEAgLTIwLDEw
ICsyMCwxMCBAQCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgIGZ1bmN0aW9uIHN0ZXAyKCkKICAgICB7
Ci0gICAgICAgIHZhciByZXNvdXJjZTEgPSBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVz
b3VyY2VzW1dlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXMubGVuZ3RoIC0gMV07
Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KHJlc291cmNlMS51cmwpOwotICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgicmVzb3VyY2VTaXplOiAiICsgcmVzb3VyY2UxLnJl
c291cmNlU2l6ZSk7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJ0cmFuc2ZlclNp
emU6ICIgKyByZXNvdXJjZTEudHJhbnNmZXJTaXplKTsKKyAgICAgICAgdmFyIHJlcXVlc3QxID0g
V2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlcXVlc3RzW1dlYkluc3BlY3Rvci5wYW5lbHMu
bmV0d29yay5yZXF1ZXN0cy5sZW5ndGggLSAxXTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRS
ZXN1bHQocmVxdWVzdDEudXJsKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoInJl
c291cmNlU2l6ZTogIiArIHJlcXVlc3QxLnJlc291cmNlU2l6ZSk7CisgICAgICAgIEluc3BlY3Rv
clRlc3QuYWRkUmVzdWx0KCJ0cmFuc2ZlclNpemU6ICIgKyByZXF1ZXN0MS50cmFuc2ZlclNpemUp
OwogCiAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXNp
emUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29y
ay1zaXplLmh0bWwKaW5kZXggYjU4MmMwMDdmNDliM2M0MTY4OTYwZGU1N2E0YmZiZmI1YzlmMGZm
Yy4uNzA5MGVhOTIzNGQyOWFmNDI5NjRiYTIzZmM0MjRjYTM0NjcwMjE3MSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXNpemUuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmst
c2l6ZS5odG1sCkBAIC0zMiwxNiArMzIsMTYgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgewogICAg
ICAgICAvLyBpbnNwZWN0b3ItdGVzdC5qcyBhcHBlYXJzIGluIG5ldHdvcmsgcGFuZWwgb2NjYXNp
b25hbGx5IGluIFNhZmFyaSBvbgogICAgICAgICAvLyBNYWMsIHNvIGNoZWNraW5nIHR3byBsYXN0
IHJlc291cmNlcy4KLSAgICAgICAgdmFyIHJlc291cmNlc0NvdW50ID0gV2ViSW5zcGVjdG9yLnBh
bmVscy5uZXR3b3JrLnJlc291cmNlcy5sZW5ndGg7Ci0gICAgICAgIHZhciByZXNvdXJjZTEgPSBX
ZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVzb3VyY2VzW3Jlc291cmNlc0NvdW50IC0gMl07
Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KHJlc291cmNlMS51cmwpOwotICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgicmVzb3VyY2VTaXplOiAiICsgcmVzb3VyY2UxLnJl
c291cmNlU2l6ZSk7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJ0cmFuc2ZlclNp
emU6ICIgKyAocmVzb3VyY2UxLnRyYW5zZmVyU2l6ZSAtIHJlc291cmNlMS5yZXNwb25zZUhlYWRl
cnNTaXplKSk7CisgICAgICAgIHZhciByZXF1ZXN0c0NvdW50ID0gV2ViSW5zcGVjdG9yLnBhbmVs
cy5uZXR3b3JrLnJlcXVlc3RzLmxlbmd0aDsKKyAgICAgICAgdmFyIHJlcXVlc3QxID0gV2ViSW5z
cGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlcXVlc3RzW3JlcXVlc3RzQ291bnQgLSAyXTsKKyAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQocmVxdWVzdDEudXJsKTsKKyAgICAgICAgSW5zcGVj
dG9yVGVzdC5hZGRSZXN1bHQoInJlc291cmNlU2l6ZTogIiArIHJlcXVlc3QxLnJlc291cmNlU2l6
ZSk7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJ0cmFuc2ZlclNpemU6ICIgKyAo
cmVxdWVzdDEudHJhbnNmZXJTaXplIC0gcmVxdWVzdDEucmVzcG9uc2VIZWFkZXJzU2l6ZSkpOwog
Ci0gICAgICAgIHZhciByZXNvdXJjZTIgPSBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVz
b3VyY2VzW3Jlc291cmNlc0NvdW50IC0gMV07Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVz
dWx0KHJlc291cmNlMi51cmwpOwotICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgicmVz
b3VyY2VTaXplOiAiICsgcmVzb3VyY2UyLnJlc291cmNlU2l6ZSk7Ci0gICAgICAgIEluc3BlY3Rv
clRlc3QuYWRkUmVzdWx0KCJ0cmFuc2ZlclNpemU6ICIgKyAocmVzb3VyY2UyLnRyYW5zZmVyU2l6
ZSAtIHJlc291cmNlMi5yZXNwb25zZUhlYWRlcnNTaXplKSk7CisgICAgICAgIHZhciByZXF1ZXN0
MiA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXF1ZXN0c1tyZXF1ZXN0c0NvdW50IC0g
MV07CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KHJlcXVlc3QyLnVybCk7CisgICAg
ICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJyZXNvdXJjZVNpemU6ICIgKyByZXF1ZXN0Mi5y
ZXNvdXJjZVNpemUpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgidHJhbnNmZXJT
aXplOiAiICsgKHJlcXVlc3QyLnRyYW5zZmVyU2l6ZSAtIHJlcXVlc3QyLnJlc3BvbnNlSGVhZGVy
c1NpemUpKTsKIAogICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwogICAgIH0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0
d29yay10aW1pbmcuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvbmV0d29yay10aW1pbmcuaHRtbAppbmRleCA2ZTUzZTc4YTIxN2FkOGYzYzIxYWI1ZDE2MjNl
YWJhZmU2MmMzM2FiLi42NWViMmMyZDgyOGZlNmJmMWMyNmNiMjgxMDMzNTI4MmVlOWVkNTU3IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdv
cmstdGltaW5nLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9uZXR3b3JrLXRpbWluZy5odG1sCkBAIC0zMCwxOCArMzAsMTggQEAgZnVuY3Rpb24gdGVz
dCgpCiAgICAgZnVuY3Rpb24gc3RlcDIoKQogICAgIHsKICAgICAgICAgLy8gaW5zcGVjdG9yLXRl
c3QuanMgYXBwZWFycyBpbiBuZXR3b3JrIHBhbmVsIG9jY2FzaW9uYWxseSBpbiBTYWZhcmkgb24K
LSAgICAgICAgLy8gTWFjLCBzbyBjaGVja2luZyB0d28gbGFzdCByZXNvdXJjZXMuCi0gICAgICAg
IHZhciByZXNvdXJjZXMgPSBXZWJJbnNwZWN0b3IubmV0d29ya0xvZy5yZXNvdXJjZXM7Ci0gICAg
ICAgIHZhciByZXNvdXJjZXNDb3VudCA9IHJlc291cmNlcy5sZW5ndGg7Ci0gICAgICAgIHZhciBy
ZXNvdXJjZTEgPSByZXNvdXJjZXNbcmVzb3VyY2VzQ291bnQgLSAyXTsKLSAgICAgICAgSW5zcGVj
dG9yVGVzdC5hZGRSZXN1bHQocmVzb3VyY2UxLnVybCk7Ci0gICAgICAgIEluc3BlY3RvclRlc3Qu
YXNzZXJ0R3JlYXRlck9yRXF1YWwocmVzb3VyY2UxLmxhdGVuY3kgKiAxMDAwLCAxMDAsICJMYXRl
bmN5IG9mIHRoZSBmaXJzdCByZXNvdXJjZSIpOwotICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2Vy
dEdyZWF0ZXJPckVxdWFsKHJlc291cmNlMS5kdXJhdGlvbiAqIDEwMDAsIDMwMCwgIkR1cmF0aW9u
IG9mIHRoZSBmaXJzdCByZXNvdXJjZSIpOworICAgICAgICAvLyBNYWMsIHNvIGNoZWNraW5nIHR3
byBsYXN0IHJlcXVlc3RzLgorICAgICAgICB2YXIgcmVxdWVzdHMgPSBXZWJJbnNwZWN0b3IubmV0
d29ya0xvZy5yZXF1ZXN0czsKKyAgICAgICAgdmFyIHJlcXVlc3RzQ291bnQgPSByZXF1ZXN0cy5s
ZW5ndGg7CisgICAgICAgIHZhciByZXF1ZXN0MSA9IHJlcXVlc3RzW3JlcXVlc3RzQ291bnQgLSAy
XTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQocmVxdWVzdDEudXJsKTsKKyAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRHcmVhdGVyT3JFcXVhbChyZXF1ZXN0MS5sYXRlbmN5ICog
MTAwMCwgMTAwLCAiTGF0ZW5jeSBvZiB0aGUgZmlyc3QgcmVzb3VyY2UiKTsKKyAgICAgICAgSW5z
cGVjdG9yVGVzdC5hc3NlcnRHcmVhdGVyT3JFcXVhbChyZXF1ZXN0MS5kdXJhdGlvbiAqIDEwMDAs
IDMwMCwgIkR1cmF0aW9uIG9mIHRoZSBmaXJzdCByZXNvdXJjZSIpOwogCi0gICAgICAgIHZhciBy
ZXNvdXJjZTIgPSByZXNvdXJjZXNbcmVzb3VyY2VzQ291bnQgLSAxXTsKLSAgICAgICAgSW5zcGVj
dG9yVGVzdC5hZGRSZXN1bHQocmVzb3VyY2UyLnVybCk7Ci0gICAgICAgIEluc3BlY3RvclRlc3Qu
YXNzZXJ0R3JlYXRlck9yRXF1YWwocmVzb3VyY2UyLmxhdGVuY3kgKiAxMDAwLCAxMDAsICJMYXRl
bmN5IG9mIHRoZSBzZWNvbmQgcmVzb3VyY2UiKTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3Nl
cnRHcmVhdGVyT3JFcXVhbChyZXNvdXJjZTIuZHVyYXRpb24gKiAxMDAwLCAxMDAsICJEdXJhdGlv
biBvZiB0aGUgc2Vjb25kIHJlc291cmNlIik7CisgICAgICAgIHZhciByZXF1ZXN0MiA9IHJlcXVl
c3RzW3JlcXVlc3RzQ291bnQgLSAxXTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQo
cmVxdWVzdDIudXJsKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRHcmVhdGVyT3JFcXVh
bChyZXF1ZXN0Mi5sYXRlbmN5ICogMTAwMCwgMTAwLCAiTGF0ZW5jeSBvZiB0aGUgc2Vjb25kIHJl
c291cmNlIik7CisgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0R3JlYXRlck9yRXF1YWwocmVx
dWVzdDIuZHVyYXRpb24gKiAxMDAwLCAxMDAsICJEdXJhdGlvbiBvZiB0aGUgc2Vjb25kIHJlc291
cmNlIik7CiAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CiAgICAgfQogfQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3
b3JrLXdvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9uZXR3b3JrLXdvcmtlci5odG1sCmluZGV4IGYzMGFkMWRiNTI3OWM2NDY0N2YwNjhlNTY2Mzdk
NGUwYmQ0OTBmYjguLmZlMTZiODU5MmM4OTlhYmFlNTEzYTRjNDc2NTZjZjhiMmI4YTA5MDUgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29y
ay13b3JrZXIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3
b3JrL25ldHdvcmstd29ya2VyLmh0bWwKQEAgLTI4LDE3ICsyOCwxNyBAQCBmdW5jdGlvbiB0ZXN0
KCkKIAogICAgIGZ1bmN0aW9uIHN0ZXAyKCkKICAgICB7Ci0gICAgICAgIHZhciByZXNvdXJjZTEg
PSBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVzb3VyY2VzW1dlYkluc3BlY3Rvci5wYW5l
bHMubmV0d29yay5yZXNvdXJjZXMubGVuZ3RoIC0gMV07Ci0gICAgICAgIEluc3BlY3RvclRlc3Qu
YWRkUmVzdWx0KHJlc291cmNlMS51cmwpOwotICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3Vs
dCgicmVzb3VyY2UudHlwZTogIiArIHJlc291cmNlMS50eXBlKTsKLSAgICAgICAgSW5zcGVjdG9y
VGVzdC5hZGRSZXN1bHQoInJlc291cmNlLmNvbnRlbnQgYmVmb3JlIHJlcXVlc3RpbmcgY29udGVu
dDogIiArIHJlc291cmNlMS5jb250ZW50KTsKLSAgICAgICAgcmVzb3VyY2UxLnJlcXVlc3RDb250
ZW50KHN0ZXAzKTsKKyAgICAgICAgdmFyIHJlcXVlc3QxID0gV2ViSW5zcGVjdG9yLnBhbmVscy5u
ZXR3b3JrLnJlcXVlc3RzW1dlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXF1ZXN0cy5sZW5n
dGggLSAxXTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQocmVxdWVzdDEudXJsKTsK
KyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoInJlc291cmNlLnR5cGU6ICIgKyByZXF1
ZXN0MS50eXBlKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoInJlc291cmNlLmNv
bnRlbnQgYmVmb3JlIHJlcXVlc3RpbmcgY29udGVudDogIiArIHJlcXVlc3QxLmNvbnRlbnQpOwor
ICAgICAgICByZXF1ZXN0MS5yZXF1ZXN0Q29udGVudChzdGVwMyk7CiAgICAgfQogCiAgICAgZnVu
Y3Rpb24gc3RlcDMoKQogICAgIHsKLSAgICAgICAgdmFyIHJlc291cmNlMSA9IFdlYkluc3BlY3Rv
ci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXNbV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJl
c291cmNlcy5sZW5ndGggLSAxXTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoInJl
c291cmNlLmNvbnRlbnQgYWZ0ZXIgcmVxdWVzdGluZyBjb250ZW50OiAiICsgcmVzb3VyY2UxLmNv
bnRlbnQpOworICAgICAgICB2YXIgcmVxdWVzdDEgPSBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdv
cmsucmVxdWVzdHNbV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlcXVlc3RzLmxlbmd0aCAt
IDFdOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgicmVzb3VyY2UuY29udGVudCBh
ZnRlciByZXF1ZXN0aW5nIGNvbnRlbnQ6ICIgKyByZXF1ZXN0MS5jb250ZW50KTsKIAogICAgICAg
ICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay14aHItYXN5bmMuaHRt
bCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay14aHIt
YXN5bmMuaHRtbAppbmRleCAyMDc4NDYzY2YxZjBjODMxZTlmNDk5ZTZkOGZkZjE0Y2E3YmU0Nzc5
Li4xYzA5OTViZWQwMzlkYjgwM2NkYjU4YjQyNTFiNjliOWU3NTg5NTE4IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmsteGhyLWFzeW5j
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3
b3JrLXhoci1hc3luYy5odG1sCkBAIC0yNywxOCArMjcsMTggQEAgZnVuY3Rpb24gdGVzdCgpCiAK
ICAgICBmdW5jdGlvbiBzdGVwMigpCiAgICAgewotICAgICAgICB2YXIgcmVzb3VyY2UxID0gV2Vi
SW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlc1tXZWJJbnNwZWN0b3IucGFuZWxzLm5l
dHdvcmsucmVzb3VyY2VzLmxlbmd0aCAtIDFdOwotICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJl
c3VsdChyZXNvdXJjZTEudXJsKTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoInJl
c291cmNlLnR5cGU6ICIgKyByZXNvdXJjZTEudHlwZSk7Ci0gICAgICAgIEluc3BlY3RvclRlc3Qu
YWRkUmVzdWx0KCJyZXNvdXJjZS5jb250ZW50IGJlZm9yZSByZXF1ZXN0aW5nIGNvbnRlbnQ6ICIg
KyByZXNvdXJjZTEuY29udGVudCk7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0VHJ1ZSgh
cmVzb3VyY2UxLmZhaWxlZCwgIlJlc291cmNlIGxvYWRpbmcgZmFpbGVkLiIpOwotICAgICAgICBy
ZXNvdXJjZTEucmVxdWVzdENvbnRlbnQoc3RlcDMpOworICAgICAgICB2YXIgcmVxdWVzdDEgPSBX
ZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVxdWVzdHNbV2ViSW5zcGVjdG9yLnBhbmVscy5u
ZXR3b3JrLnJlcXVlc3RzLmxlbmd0aCAtIDFdOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJl
c3VsdChyZXF1ZXN0MS51cmwpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgicmVz
b3VyY2UudHlwZTogIiArIHJlcXVlc3QxLnR5cGUpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFk
ZFJlc3VsdCgicmVzb3VyY2UuY29udGVudCBiZWZvcmUgcmVxdWVzdGluZyBjb250ZW50OiAiICsg
cmVxdWVzdDEuY29udGVudCk7CisgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0VHJ1ZSghcmVx
dWVzdDEuZmFpbGVkLCAiUmVzb3VyY2UgbG9hZGluZyBmYWlsZWQuIik7CisgICAgICAgIHJlcXVl
c3QxLnJlcXVlc3RDb250ZW50KHN0ZXAzKTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBzdGVwMygp
CiAgICAgewotICAgICAgICB2YXIgcmVzb3VyY2UxID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3
b3JrLnJlc291cmNlc1tXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVzb3VyY2VzLmxlbmd0
aCAtIDFdOwotICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgicmVzb3VyY2UuY29udGVu
dCBhZnRlciByZXF1ZXN0aW5nIGNvbnRlbnQ6ICIgKyByZXNvdXJjZTEuY29udGVudCk7CisgICAg
ICAgIHZhciByZXF1ZXN0MSA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXF1ZXN0c1tX
ZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVxdWVzdHMubGVuZ3RoIC0gMV07CisgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJyZXNvdXJjZS5jb250ZW50IGFmdGVyIHJlcXVlc3Rp
bmcgY29udGVudDogIiArIHJlcXVlc3QxLmNvbnRlbnQpOwogCiAgICAgICAgIEluc3BlY3RvclRl
c3QuY29tcGxldGVUZXN0KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXhoci1zYW1lLXVybC1hcy1tYWluLXJlc291
cmNlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdv
cmsteGhyLXNhbWUtdXJsLWFzLW1haW4tcmVzb3VyY2UuaHRtbAppbmRleCBiM2E3MmRlMmE5NjEz
ZDE1MWZmNDc3ODJmMmIzOGFkNTYzYzNlZDdiLi5kZmZmNGEzODNkY2ZlOTM4MWJhYmY2NTUzZGVk
MDdiYmY4ZDRlMmMyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9uZXR3b3JrL25ldHdvcmsteGhyLXNhbWUtdXJsLWFzLW1haW4tcmVzb3VyY2UuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmsteGhyLXNh
bWUtdXJsLWFzLW1haW4tcmVzb3VyY2UuaHRtbApAQCAtMjAsOCArMjAsOCBAQCBmdW5jdGlvbiB0
ZXN0KCkKIAogICAgIGZ1bmN0aW9uIHN0ZXAyKCkKICAgICB7Ci0gICAgICAgIHZhciByZXNvdXJj
ZTEgPSBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVzb3VyY2VzW1dlYkluc3BlY3Rvci5w
YW5lbHMubmV0d29yay5yZXNvdXJjZXMubGVuZ3RoIC0gMV07Ci0gICAgICAgIEluc3BlY3RvclRl
c3QuYWRkUmVzdWx0KHJlc291cmNlMS50eXBlLm5hbWUoKSk7CisgICAgICAgIHZhciByZXF1ZXN0
MSA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXF1ZXN0c1tXZWJJbnNwZWN0b3IucGFu
ZWxzLm5ldHdvcmsucmVxdWVzdHMubGVuZ3RoIC0gMV07CisgICAgICAgIEluc3BlY3RvclRlc3Qu
YWRkUmVzdWx0KHJlcXVlc3QxLnR5cGUubmFtZSgpKTsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5j
b21wbGV0ZVRlc3QoKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmsteGhyLXN5bmMuaHRtbCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay14aHItc3luYy5odG1sCmluZGV4
IGYyODc1NjZmNzBlYzczOGViN2E0ODRhMGY4NTYxYjQ3OTNmZTFlOGUuLjQ4ODUwZDc2ZmRmNGY3
MDYwYTE4NzIxODE2NGU4Mzc2NGI2YzkwZmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay14aHItc3luYy5odG1sCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay14aHItc3luYy5odG1s
CkBAIC0yNywxOCArMjcsMTggQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICBmdW5jdGlvbiBzdGVw
MigpCiAgICAgewotICAgICAgICB2YXIgcmVzb3VyY2UxID0gV2ViSW5zcGVjdG9yLnBhbmVscy5u
ZXR3b3JrLnJlc291cmNlc1tXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVzb3VyY2VzLmxl
bmd0aCAtIDFdOwotICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChyZXNvdXJjZTEudXJs
KTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoInJlc291cmNlLnR5cGU6ICIgKyBy
ZXNvdXJjZTEudHlwZSk7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJyZXNvdXJj
ZS5jb250ZW50IGJlZm9yZSByZXF1ZXN0aW5nIGNvbnRlbnQ6ICIgKyByZXNvdXJjZTEuY29udGVu
dCk7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0VHJ1ZSghcmVzb3VyY2UxLmZhaWxlZCwg
IlJlc291cmNlIGxvYWRpbmcgZmFpbGVkLiIpOwotICAgICAgICByZXNvdXJjZTEucmVxdWVzdENv
bnRlbnQoc3RlcDMpOworICAgICAgICB2YXIgcmVxdWVzdDEgPSBXZWJJbnNwZWN0b3IucGFuZWxz
Lm5ldHdvcmsucmVxdWVzdHNbV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlcXVlc3RzLmxl
bmd0aCAtIDFdOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChyZXF1ZXN0MS51cmwp
OworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgicmVzb3VyY2UudHlwZTogIiArIHJl
cXVlc3QxLnR5cGUpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgicmVzb3VyY2Uu
Y29udGVudCBiZWZvcmUgcmVxdWVzdGluZyBjb250ZW50OiAiICsgcmVxdWVzdDEuY29udGVudCk7
CisgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0VHJ1ZSghcmVxdWVzdDEuZmFpbGVkLCAiUmVz
b3VyY2UgbG9hZGluZyBmYWlsZWQuIik7CisgICAgICAgIHJlcXVlc3QxLnJlcXVlc3RDb250ZW50
KHN0ZXAzKTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBzdGVwMygpCiAgICAgewotICAgICAgICB2
YXIgcmVzb3VyY2UxID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlc1tXZWJJ
bnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVzb3VyY2VzLmxlbmd0aCAtIDFdOwotICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgicmVzb3VyY2UuY29udGVudCBhZnRlciByZXF1ZXN0aW5n
IGNvbnRlbnQ6ICIgKyByZXNvdXJjZTEuY29udGVudCk7CisgICAgICAgIHZhciByZXF1ZXN0MSA9
IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXF1ZXN0c1tXZWJJbnNwZWN0b3IucGFuZWxz
Lm5ldHdvcmsucmVxdWVzdHMubGVuZ3RoIC0gMV07CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KCJyZXNvdXJjZS5jb250ZW50IGFmdGVyIHJlcXVlc3RpbmcgY29udGVudDogIiArIHJl
cXVlc3QxLmNvbnRlbnQpOwogCiAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9waW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L3BpbmcuaHRtbAppbmRleCBlMjliODEwNjAyNWRiYzQwMTI1ZmJkMGQ2YWYxZWVjNTVhODhjYTM5
Li40ODY4MDFjNzFiYWZhMjQwMTgzZDg5ZDdiZjQ0YTRlMzJlYTFkMjk1IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3BpbmcuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3BpbmcuaHRtbApAQCAtMjUs
MTQgKzI1LDE0IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgIGZ1bmN0aW9uIHN0ZXAyKCkKICAgICB7
CiAgICAgICAgIC8vIGluc3BlY3Rvci10ZXN0LmpzIGFwcGVhcnMgaW4gbmV0d29yayBwYW5lbCBv
Y2Nhc2lvbmFsbHkgaW4gU2FmYXJpIG9uCi0gICAgICAgIC8vIE1hYywgc28gY2hlY2tpbmcgbGFz
dCByZXNvdXJjZS4KLSAgICAgICAgdmFyIHJlc291cmNlcyA9IFdlYkluc3BlY3Rvci5uZXR3b3Jr
TG9nLnJlc291cmNlczsKLSAgICAgICAgdmFyIHJlc291cmNlc0NvdW50ID0gcmVzb3VyY2VzLmxl
bmd0aDsKLSAgICAgICAgdmFyIHJlc291cmNlID0gcmVzb3VyY2VzW3Jlc291cmNlc0NvdW50IC0g
MV07CisgICAgICAgIC8vIE1hYywgc28gY2hlY2tpbmcgbGFzdCByZXF1ZXN0LgorICAgICAgICB2
YXIgcmVxdWVzdHMgPSBXZWJJbnNwZWN0b3IubmV0d29ya0xvZy5yZXF1ZXN0czsKKyAgICAgICAg
dmFyIHJlcXVlc3RzQ291bnQgPSByZXF1ZXN0cy5sZW5ndGg7CisgICAgICAgIHZhciByZXF1ZXN0
ID0gcmVxdWVzdHNbcmVxdWVzdHNDb3VudCAtIDFdOwogCi0gICAgICAgIEluc3BlY3RvclRlc3Qu
YWRkUmVzdWx0KHJlc291cmNlLnVybCk7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0
KCJyZXNvdXJjZS5pc1BpbmdSZXF1ZXN0KCk6ICIgKyByZXNvdXJjZS5pc1BpbmdSZXF1ZXN0KCkp
OwotICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgicmVzb3VyY2UucmVxdWVzdENvbnRl
bnRUeXBlOiAiICsgcmVzb3VyY2UucmVxdWVzdENvbnRlbnRUeXBlKCkpOworICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFkZFJlc3VsdChyZXF1ZXN0LnVybCk7CisgICAgICAgIEluc3BlY3RvclRlc3Qu
YWRkUmVzdWx0KCJyZXNvdXJjZS5pc1BpbmdSZXF1ZXN0KCk6ICIgKyByZXF1ZXN0LmlzUGluZ1Jl
cXVlc3QoKSk7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJyZXNvdXJjZS5yZXF1
ZXN0Q29udGVudFR5cGU6ICIgKyByZXF1ZXN0LnJlcXVlc3RDb250ZW50VHlwZSgpKTsKIAogICAg
ICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsveC1mcmFtZS1vcHRpb25zLWRl
bnkuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsveC1mcmFt
ZS1vcHRpb25zLWRlbnkuaHRtbAppbmRleCA4Nzc5ODlmYmM3NWY1NDRiNzQwMTA5NDM1YjJlZDM4
Y2U2NWU4ZTcyLi5iOTMzOWM1NjMxZDFmYWRhNzMwNDE2Njc3OTdkYWQwNDk0ZjI2MzE5IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3gtZnJhbWUt
b3B0aW9ucy1kZW55Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay94LWZyYW1lLW9wdGlvbnMtZGVueS5odG1sCkBAIC0xOCw4ICsxOCw4IEBAIGZ1bmN0
aW9uIHRlc3QoKQogCiAgICAgZnVuY3Rpb24gcmVzcG9uc2VSZWNlaXZlZChyZXF1ZXN0SWQsIHRp
bWUsIHJlc291cmNlVHlwZSwgcmVzcG9uc2UpCiAgICAgewotICAgICAgICB2YXIgcmVzb3VyY2Ug
PSBXZWJJbnNwZWN0b3IubmV0d29ya1Jlc291cmNlQnlJZChyZXF1ZXN0SWQpOwotICAgICAgICBp
ZiAoL3gtZnJhbWUtb3B0aW9ucy1kZW55XC5jZ2kvLmV4ZWMocmVzb3VyY2UudXJsKSkgeworICAg
ICAgICB2YXIgcmVxdWVzdCA9IFdlYkluc3BlY3Rvci5uZXR3b3JrUmVxdWVzdEJ5SWQocmVxdWVz
dElkKTsKKyAgICAgICAgaWYgKC94LWZyYW1lLW9wdGlvbnMtZGVueVwuY2dpLy5leGVjKHJlcXVl
c3QudXJsKSkgewogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlJlY2VpdmVk
IHJlc3BvbnNlIGZvciB4LWZyYW1lLW9wdGlvbnMtZGVueS5jZ2kiKTsKICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYWRkUmVzdWx0KCJTVUNDRVNTIik7CiAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmNvbXBsZXRlVGVzdCgpOwpAQCAtMjgsMTUgKzI4LDE1IEBAIGZ1bmN0aW9uIHRlc3QoKQog
CiAgICAgZnVuY3Rpb24gbG9hZGluZ0ZpbmlzaGVkKHJlcXVlc3RJZCwgZmluaXNoVGltZSkKICAg
ICB7Ci0gICAgICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5uZXR3b3JrUmVzb3VyY2VC
eUlkKHJlcXVlc3RJZCk7Ci0gICAgICAgIGlmICgveC1mcmFtZS1vcHRpb25zLWRlbnlcLmNnaS8u
ZXhlYyhyZXNvdXJjZS51cmwpKQorICAgICAgICB2YXIgcmVxdWVzdCA9IFdlYkluc3BlY3Rvci5u
ZXR3b3JrUmVxdWVzdEJ5SWQocmVxdWVzdElkKTsKKyAgICAgICAgaWYgKC94LWZyYW1lLW9wdGlv
bnMtZGVueVwuY2dpLy5leGVjKHJlcXVlc3QudXJsKSkKICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuY29tcGxldGVUZXN0KCk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gbG9hZGluZ0ZhaWxlZChy
ZXF1ZXN0SWQsIHRpbWUsIGxvY2FsaXplZERlc2NyaXB0aW9uLCBjYW5jZWxlZCkKICAgICB7Ci0g
ICAgICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5uZXR3b3JrUmVzb3VyY2VCeUlkKHJl
cXVlc3RJZCk7Ci0gICAgICAgIGlmICgveC1mcmFtZS1vcHRpb25zLWRlbnlcLmNnaS8uZXhlYyhy
ZXNvdXJjZS51cmwpKQorICAgICAgICB2YXIgcmVxdWVzdCA9IFdlYkluc3BlY3Rvci5uZXR3b3Jr
UmVxdWVzdEJ5SWQocmVxdWVzdElkKTsKKyAgICAgICAgaWYgKC94LWZyYW1lLW9wdGlvbnMtZGVu
eVwuY2dpLy5leGVjKHJlcXVlc3QudXJsKSkKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29t
cGxldGVUZXN0KCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvcmVzb3VyY2UtaGFyLWNvbnZlcnNpb24uaHRtbCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlLWhhci1jb252ZXJzaW9uLmh0bWwKaW5kZXggMTYz
ZmZkZDdhODQ3NDI4NDRjYWI4N2ViMzk2OTM2MTUwOWEyOTNjYy4uNzUzNTNiODlkMGMxNDVhZmE5
MmVmMTdmNjQ2ZjIwNTAxYTUyYmVkYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvcmVzb3VyY2UtaGFyLWNvbnZlcnNpb24uaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS1oYXItY29udmVyc2lvbi5odG1sCkBAIC0y
NSwzMyArMjUsMzMgQEAgdmFyIHRlc3QgPSBmdW5jdGlvbigpCiAKICAgICBmdW5jdGlvbiBzdGVw
MigpCiAgICAgewotICAgICAgICBmdW5jdGlvbiBmaW5kUmVzb3VyY2VCeVVSTCh1cmwpCisgICAg
ICAgIGZ1bmN0aW9uIGZpbmRSZXF1ZXN0QnlVUkwodXJsKQogICAgICAgICB7Ci0gICAgICAgICAg
ICB2YXIgcmVzb3VyY2VzID0gV2ViSW5zcGVjdG9yLm5ldHdvcmtMb2cucmVzb3VyY2VzOwotICAg
ICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXNvdXJjZXMubGVuZ3RoOyArK2kpIHsKLSAg
ICAgICAgICAgICAgICBpZiAodXJsLnRlc3QocmVzb3VyY2VzW2ldLnVybCkpCi0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiByZXNvdXJjZXNbaV07CisgICAgICAgICAgICB2YXIgcmVxdWVzdHMg
PSBXZWJJbnNwZWN0b3IubmV0d29ya0xvZy5yZXF1ZXN0czsKKyAgICAgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgcmVxdWVzdHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAo
dXJsLnRlc3QocmVxdWVzdHNbaV0udXJsKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJl
cXVlc3RzW2ldOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgZnVuY3Rpb24g
YWRkQ29va2llSGVhZGVyc1RvUmVzb3VyY2UocmVzb3VyY2UpCisgICAgICAgIGZ1bmN0aW9uIGFk
ZENvb2tpZUhlYWRlcnNUb1JlcXVlc3QocmVxdWVzdCkKICAgICAgICAgewotICAgICAgICAgICAg
cmVzb3VyY2UucmVxdWVzdEhlYWRlcnMgPSB7CisgICAgICAgICAgICByZXF1ZXN0LnJlcXVlc3RI
ZWFkZXJzID0gewogICAgICAgICAgICAgICAgICJDb29raWUiOiAiYT1iOyAkUGF0aD0vcGF0aDsg
JERvbWFpbj1leGFtcGxlLmNvbTsgYTE9YjFcbmMxPWQxIgogICAgICAgICAgICAgfTsKIAotICAg
ICAgICAgICAgcmVzb3VyY2UucmVzcG9uc2VIZWFkZXJzID0geworICAgICAgICAgICAgcmVxdWVz
dC5yZXNwb25zZUhlYWRlcnMgPSB7CiAgICAgICAgICAgICAgICAgIlNldC1Db29raWUiOiAieD15
OyBQYXRoPS9wYXRoOyBEb21haW49ZXhhbXBsZS5jb207IERpc2NhcmQ7IGh0dHBPbmx5OyBTZWN1
cmU7IFZlcnNpb249MVxueDE9eTFcbnoyPXkyIgogICAgICAgICAgICAgfTsKICAgICAgICAgfQog
Ci0gICAgICAgIGFkZENvb2tpZUhlYWRlcnNUb1Jlc291cmNlKGZpbmRSZXNvdXJjZUJ5VVJMKC9p
bnNwZWN0b3ItdGVzdFwuanMkLykpOwotICAgICAgICB2YXIgbG9nID0gKG5ldyBXZWJJbnNwZWN0
b3IuSEFSTG9nKFdlYkluc3BlY3Rvci5uZXR3b3JrTG9nLnJlc291cmNlcykpLmJ1aWxkKCk7Cisg
ICAgICAgIGFkZENvb2tpZUhlYWRlcnNUb1JlcXVlc3QoZmluZFJlcXVlc3RCeVVSTCgvaW5zcGVj
dG9yLXRlc3RcLmpzJC8pKTsKKyAgICAgICAgdmFyIGxvZyA9IChuZXcgV2ViSW5zcGVjdG9yLkhB
UkxvZyhXZWJJbnNwZWN0b3IubmV0d29ya0xvZy5yZXF1ZXN0cykpLmJ1aWxkKCk7CiAgICAgICAg
IC8vIEZpbHRlciBvdXQgZmF2aWNvbi5pY28gcmVxdWVzdHMgdGhhdCBvbmx5IGFwcGVhciBvbiBj
ZXJ0YWluIHBsYXRmb3Jtcy4KICAgICAgICAgbG9nLmVudHJpZXMgPSBsb2cuZW50cmllcy5maWx0
ZXIoZnVuY3Rpb24oZW50cnkpIHsKICAgICAgICAgICAgIHJldHVybiAhL2Zhdmljb25cLmljbyQv
LnRlc3QoZW50cnkucmVxdWVzdC51cmwpOwogICAgICAgICB9KTsKLSAgICAgICAgbG9nLmVudHJp
ZXMuc29ydChJbnNwZWN0b3JUZXN0LnJlc291cmNlVVJMQ29tcGFyZXIpOworICAgICAgICBsb2cu
ZW50cmllcy5zb3J0KEluc3BlY3RvclRlc3QucmVxdWVzdFVSTENvbXBhcmVyKTsKICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hZGRPYmplY3QobG9nLCBJbnNwZWN0b3JUZXN0LkhBUlByb3BlcnR5Rm9y
bWF0dGVyc1dpdGhTaXplKTsKICAgICAgICAgdmFyIHBhZ2VUaW1pbmdzID0gbG9nLnBhZ2VzWzBd
LnBhZ2VUaW1pbmdzOwogICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2UtaGFyLWhl
YWRlcnMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlLWhh
ci1oZWFkZXJzLmh0bWwKaW5kZXggN2NlNmQwMGVkM2FiNzM3ZTdiYmVlNmI4M2I1ZjY5YTgwNDA0
ZjY0ZC4uNmRiZGExNTc1YzhhM2NlNzhkNWZlYmM5NGQzNzg1MDgwNTQ1ODczZCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2UtaGFyLWhlYWRlcnMu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS1oYXIt
aGVhZGVycy5odG1sCkBAIC0xMiw1MSArMTIsNTEgQEAgdmFyIHRlc3QgPSBmdW5jdGlvbigpCiAg
ICAgICAgIHJldHVybiBzLnJlcGxhY2UoL1xyLywgIlxcciIpLnJlcGxhY2UoL1xuLywgIlxcbiIp
OwogICAgIH0KIAotICAgIGZ1bmN0aW9uIHNldFJlc291cmNlVmFsdWVzKHJlc291cmNlKQorICAg
IGZ1bmN0aW9uIHNldFJlcXVlc3RWYWx1ZXMocmVxdWVzdCkKICAgICB7Ci0gICAgICAgIHJlc291
cmNlLnJlcXVlc3RIZWFkZXJzID0geworICAgICAgICByZXF1ZXN0LnJlcXVlc3RIZWFkZXJzID0g
ewogICAgICAgICAgICAgIlJlcXVlc3QiOiAicmVxdWVzdC12YWx1ZSIKICAgICAgICAgfTsKLSAg
ICAgICAgcmVzb3VyY2UucmVxdWVzdEhlYWRlcnNUZXh0ID0gIkdFVCBodHRwOi8vZXhhbXBsZS5j
b20vaW5zcGVjdG9yLXRlc3QuanMgSFRUUC8xLjFcclxuUmVxdWVzdDogaGVhZGVycy10ZXh0IjsK
KyAgICAgICAgcmVxdWVzdC5yZXF1ZXN0SGVhZGVyc1RleHQgPSAiR0VUIGh0dHA6Ly9leGFtcGxl
LmNvbS9pbnNwZWN0b3ItdGVzdC5qcyBIVFRQLzEuMVxyXG5SZXF1ZXN0OiBoZWFkZXJzLXRleHQi
OwogCi0gICAgICAgIHJlc291cmNlLnJlc3BvbnNlSGVhZGVycyA9IHsKKyAgICAgICAgcmVxdWVz
dC5yZXNwb25zZUhlYWRlcnMgPSB7CiAgICAgICAgICAgICAiUmVzcG9uc2UiOiAicmVzcG9uc2Ut
dmFsdWUiCiAgICAgICAgIH07Ci0gICAgICAgIHJlc291cmNlLnJlc3BvbnNlSGVhZGVyc1RleHQg
PSAiSFRUUC8xLjEgMjAwIE9LXHJcblJlc3BvbnNlOiBoZWFkZXJzLXRleHQiOworICAgICAgICBy
ZXF1ZXN0LnJlc3BvbnNlSGVhZGVyc1RleHQgPSAiSFRUUC8xLjEgMjAwIE9LXHJcblJlc3BvbnNl
OiBoZWFkZXJzLXRleHQiOwogCi0gICAgICAgIHJlc291cmNlLmRvY3VtZW50VVJMID0gImh0dHA6
Ly9leGFtcGxlLmNvbS9pbnNwZWN0b3ItdGVzdC5qcyI7Ci0gICAgICAgIHJlc291cmNlLnJlcXVl
c3RNZXRob2QgPSAiR0VUIjsKLSAgICAgICAgcmVzb3VyY2UubWltZVR5cGUgPSAidGV4dC9odG1s
IjsKLSAgICAgICAgcmVzb3VyY2Uuc3RhdHVzQ29kZSA9IDIwMDsKLSAgICAgICAgcmVzb3VyY2Uu
c3RhdHVzVGV4dCA9ICJPSyI7Ci0gICAgICAgIHJlc291cmNlLnJlc291cmNlU2l6ZSA9IDEwMDA7
Ci0gICAgICAgIHJlc291cmNlLl90cmFuc2ZlclNpemUgPSA1Mzk7IC8vIDM5ID0gaGVhZGVyIHNp
emUgYXQgdGhlIGVuZCBvZiB0aGUgZGF5CisgICAgICAgIHJlcXVlc3QuZG9jdW1lbnRVUkwgPSAi
aHR0cDovL2V4YW1wbGUuY29tL2luc3BlY3Rvci10ZXN0LmpzIjsKKyAgICAgICAgcmVxdWVzdC5y
ZXF1ZXN0TWV0aG9kID0gIkdFVCI7CisgICAgICAgIHJlcXVlc3QubWltZVR5cGUgPSAidGV4dC9o
dG1sIjsKKyAgICAgICAgcmVxdWVzdC5zdGF0dXNDb2RlID0gMjAwOworICAgICAgICByZXF1ZXN0
LnN0YXR1c1RleHQgPSAiT0siOworICAgICAgICByZXF1ZXN0LnJlc291cmNlU2l6ZSA9IDEwMDA7
CisgICAgICAgIHJlcXVlc3QuX3RyYW5zZmVyU2l6ZSA9IDUzOTsgLy8gMzkgPSBoZWFkZXIgc2l6
ZSBhdCB0aGUgZW5kIG9mIHRoZSBkYXkKICAgICB9CiAKLSAgICB2YXIgdGVzdFJlc291cmNlID0g
bmV3IFdlYkluc3BlY3Rvci5SZXNvdXJjZSgidGVzdFJlc291cmNlIiwgImh0dHA6Ly9leGFtcGxl
LmNvbS9pbnNwZWN0b3ItdGVzdC5qcyIsIDEpOyAKLSAgICBzZXRSZXNvdXJjZVZhbHVlcyh0ZXN0
UmVzb3VyY2UpOwotICAgIHZhciByZXNvdXJjZVJlc3VsdHMgPSB7CisgICAgdmFyIHRlc3RSZXF1
ZXN0ID0gbmV3IFdlYkluc3BlY3Rvci5OZXR3b3JrUmVxdWVzdCgidGVzdFJlcXVlc3QiLCAiaHR0
cDovL2V4YW1wbGUuY29tL2luc3BlY3Rvci10ZXN0LmpzIiwgMSk7IAorICAgIHNldFJlcXVlc3RW
YWx1ZXModGVzdFJlcXVlc3QpOworICAgIHZhciByZXF1ZXN0UmVzdWx0cyA9IHsKICAgICAgICAg
InJlcXVlc3QiOiB7Ci0gICAgICAgICAgICAiaGVhZGVycyI6IHRlc3RSZXNvdXJjZS5yZXF1ZXN0
SGVhZGVycywKLSAgICAgICAgICAgICJoZWFkZXJzVGV4dCI6IHZpc2libGVOZXdsaW5lcyh0ZXN0
UmVzb3VyY2UucmVxdWVzdEhlYWRlcnNUZXh0KSwKLSAgICAgICAgICAgICJoZWFkZXJzU2l6ZSI6
IHRlc3RSZXNvdXJjZS5yZXF1ZXN0SGVhZGVyc1NpemUsCisgICAgICAgICAgICAiaGVhZGVycyI6
IHRlc3RSZXF1ZXN0LnJlcXVlc3RIZWFkZXJzLAorICAgICAgICAgICAgImhlYWRlcnNUZXh0Ijog
dmlzaWJsZU5ld2xpbmVzKHRlc3RSZXF1ZXN0LnJlcXVlc3RIZWFkZXJzVGV4dCksCisgICAgICAg
ICAgICAiaGVhZGVyc1NpemUiOiB0ZXN0UmVxdWVzdC5yZXF1ZXN0SGVhZGVyc1NpemUsCiAgICAg
ICAgIH0sCiAgICAgICAgICJyZXNwb25zZSI6IHsKLSAgICAgICAgICAgICJoZWFkZXJzIjogdGVz
dFJlc291cmNlLnJlc3BvbnNlSGVhZGVycywKLSAgICAgICAgICAgICJoZWFkZXJzVGV4dCI6IHZp
c2libGVOZXdsaW5lcyh0ZXN0UmVzb3VyY2UucmVzcG9uc2VIZWFkZXJzVGV4dCksCi0gICAgICAg
ICAgICAiaGVhZGVyc1NpemUiOiB0ZXN0UmVzb3VyY2UucmVzcG9uc2VIZWFkZXJzU2l6ZSwKLSAg
ICAgICAgICAgICJyZXNvdXJjZVNpemUiOiB0ZXN0UmVzb3VyY2UucmVzb3VyY2VTaXplLAotICAg
ICAgICAgICAgInRyYW5zZmVyU2l6ZSI6IHRlc3RSZXNvdXJjZS50cmFuc2ZlclNpemUKKyAgICAg
ICAgICAgICJoZWFkZXJzIjogdGVzdFJlcXVlc3QucmVzcG9uc2VIZWFkZXJzLAorICAgICAgICAg
ICAgImhlYWRlcnNUZXh0IjogdmlzaWJsZU5ld2xpbmVzKHRlc3RSZXF1ZXN0LnJlc3BvbnNlSGVh
ZGVyc1RleHQpLAorICAgICAgICAgICAgImhlYWRlcnNTaXplIjogdGVzdFJlcXVlc3QucmVzcG9u
c2VIZWFkZXJzU2l6ZSwKKyAgICAgICAgICAgICJyZXNvdXJjZVNpemUiOiB0ZXN0UmVxdWVzdC5y
ZXNvdXJjZVNpemUsCisgICAgICAgICAgICAidHJhbnNmZXJTaXplIjogdGVzdFJlcXVlc3QudHJh
bnNmZXJTaXplCiAgICAgICAgIH0KICAgICB9OwotICAgIEluc3BlY3RvclRlc3QuYWRkT2JqZWN0
KHJlc291cmNlUmVzdWx0cywge30sICIiLCAiUmVzb3VyY2U6Iik7CisgICAgSW5zcGVjdG9yVGVz
dC5hZGRPYmplY3QocmVxdWVzdFJlc3VsdHMsIHt9LCAiIiwgIlJlc291cmNlOiIpOwogCiAgICAg
dmFyIHN0aWxsTm9uZGV0ZXJtaW5pc3RpYyA9IHsKICAgICAgICAgInN0YXJ0ZWREYXRlVGltZSI6
ICJmb3JtYXRBc1R5cGVOYW1lIiwKICAgICAgICAgInRpbWUiOiAiZm9ybWF0QXNUeXBlTmFtZSIs
CiAgICAgICAgICJ0aW1pbmdzIjogImZvcm1hdEFzVHlwZU5hbWUiCiAgICAgfTsKLSAgICBJbnNw
ZWN0b3JUZXN0LmFkZE9iamVjdChuZXcgV2ViSW5zcGVjdG9yLkhBUkVudHJ5KHRlc3RSZXNvdXJj
ZSkuYnVpbGQoKSwgc3RpbGxOb25kZXRlcm1pbmlzdGljLCAiIiwgIkhBUjoiKTsKKyAgICBJbnNw
ZWN0b3JUZXN0LmFkZE9iamVjdChuZXcgV2ViSW5zcGVjdG9yLkhBUkVudHJ5KHRlc3RSZXF1ZXN0
KS5idWlsZCgpLCBzdGlsbE5vbmRldGVybWluaXN0aWMsICIiLCAiSEFSOiIpOwogICAgIEluc3Bl
Y3RvclRlc3QuY29tcGxldGVUZXN0KCk7CiB9CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlLWhhci1wYWdlcy5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2UtaGFyLXBhZ2VzLmh0bWwKaW5k
ZXggNDhlMDc3OTYwMTMzMjNlNWFhZjhjZTQyOTFhMDY2NTYzMGQyYmUwZi4uYzU3ZDE0ZTNlZTVl
NWZjNzM2ZWIwZjRmYjRlNmJlOGExZWQ4ZDQ1ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2UtaGFyLXBhZ2VzLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2UtaGFyLXBhZ2VzLmh0bWwKQEAgLTEyLDEz
ICsxMiwxMyBAQCB2YXIgdGVzdCA9IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHZhciBoYWRO
YXZpZ2F0aW9uID0gZmFsc2U7CiAKLSAgICAgICAgZnVuY3Rpb24gb25SZXNvdXJjZUZpbmlzaGVk
KGV2ZW50KQorICAgICAgICBmdW5jdGlvbiBvblJlcXVlc3RGaW5pc2hlZChldmVudCkKICAgICAg
ICAgewotICAgICAgICAgICAgdmFyIHJlc291cmNlID0gZXZlbnQuZGF0YTsKLSAgICAgICAgICAg
IGlmICgvXC9oYXItcGFnZXMtbmF2aWdhdGlvbi10YXJnZXRcLmh0bWwkLy50ZXN0KHJlc291cmNl
LnVybCkpCisgICAgICAgICAgICB2YXIgcmVxdWVzdCA9IGV2ZW50LmRhdGE7CisgICAgICAgICAg
ICBpZiAoL1wvaGFyLXBhZ2VzLW5hdmlnYXRpb24tdGFyZ2V0XC5odG1sJC8udGVzdChyZXF1ZXN0
LnVybCkpCiAgICAgICAgICAgICAgICAgaGFkTmF2aWdhdGlvbiA9IHRydWU7Ci0gICAgICAgICAg
ICBpZiAoaGFkTmF2aWdhdGlvbiAmJiAvXC9yZXNvdXJjZS1oYXItcGFnZXNcLmh0bWwkLy50ZXN0
KHJlc291cmNlLnVybCkpIHsKLSAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IubmV0d29ya01h
bmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIuRXZl
bnRUeXBlcy5SZXNvdXJjZUZpbmlzaGVkLCBvblJlc291cmNlRmluaXNoZWQpCisgICAgICAgICAg
ICBpZiAoaGFkTmF2aWdhdGlvbiAmJiAvXC9yZXNvdXJjZS1oYXItcGFnZXNcLmh0bWwkLy50ZXN0
KHJlcXVlc3QudXJsKSkgeworICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5uZXR3b3JrTWFu
YWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5FdmVu
dFR5cGVzLlJlcXVlc3RGaW5pc2hlZCwgb25SZXF1ZXN0RmluaXNoZWQpCiAgICAgICAgICAgICAg
ICAgc3RlcDIoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMjYsMjAgKzI2LDIwIEBA
IHZhciB0ZXN0ID0gZnVuY3Rpb24oKQogICAgICAgICB2YXIgbmV0d29ya0xvZ1ZpZXcgPSBXZWJJ
bnNwZWN0b3IucGFuZWxzLm5ldHdvcmsuX25ldHdvcmtMb2dWaWV3OwogICAgICAgICAvLyBuZXR3
b3JrTG9nVmlldy5jbGVhcigpOwogICAgICAgICBuZXR3b3JrTG9nVmlldy5fcHJlc2VydmVMb2dU
b2dnbGUudG9nZ2xlZCA9IHRydWU7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5uZXR3b3JrTWFuYWdl
ci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5FdmVudFR5cGVz
LlJlc291cmNlRmluaXNoZWQsIG9uUmVzb3VyY2VGaW5pc2hlZCk7CisgICAgICAgIFdlYkluc3Bl
Y3Rvci5uZXR3b3JrTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5OZXR3b3Jr
TWFuYWdlci5FdmVudFR5cGVzLlJlcXVlc3RGaW5pc2hlZCwgb25SZXF1ZXN0RmluaXNoZWQpOwog
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJsb2NhdGlvbi5ocmVmID0gJy9y
ZXNvdXJjZXMvcmVkaXJlY3QucGhwP3VybD0vaW5zcGVjdG9yL3Jlc291cmNlcy9oYXItcGFnZXMt
bmF2aWdhdGlvbi10YXJnZXQuaHRtbCc7Iik7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gc3RlcDIo
KQogICAgIHsKLSAgICAgICAgdmFyIGxvZyA9IChuZXcgV2ViSW5zcGVjdG9yLkhBUkxvZyhXZWJJ
bnNwZWN0b3IucGFuZWxzLm5ldHdvcmsuX25ldHdvcmtMb2dWaWV3Ll9yZXNvdXJjZXMpKS5idWls
ZCgpOworICAgICAgICB2YXIgbG9nID0gKG5ldyBXZWJJbnNwZWN0b3IuSEFSTG9nKFdlYkluc3Bl
Y3Rvci5wYW5lbHMubmV0d29yay5fbmV0d29ya0xvZ1ZpZXcuX3JlcXVlc3RzKSkuYnVpbGQoKTsK
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRPYmplY3QobG9nLnBhZ2VzLCBJbnNwZWN0b3JUZXN0
LkhBUlByb3BlcnR5Rm9ybWF0dGVyc1dpdGhTaXplKTsKIAogICAgICAgICAvLyBGaWx0ZXIgb3V0
IGZhdmljb24uaWNvIHJlcXVlc3RzIHRoYXQgb25seSBhcHBlYXIgb24gY2VydGFpbiBwbGF0Zm9y
bXMuCiAgICAgICAgIGxvZy5lbnRyaWVzID0gbG9nLmVudHJpZXMuZmlsdGVyKGZ1bmN0aW9uKGVu
dHJ5KSB7CiAgICAgICAgICAgICByZXR1cm4gIS9mYXZpY29uXC5pY28kLy50ZXN0KGVudHJ5LnJl
cXVlc3QudXJsKTsKICAgICAgICAgfSk7Ci0gICAgICAgIGxvZy5lbnRyaWVzLnNvcnQoSW5zcGVj
dG9yVGVzdC5yZXNvdXJjZVVSTENvbXBhcmVyKTsKKyAgICAgICAgbG9nLmVudHJpZXMuc29ydChJ
bnNwZWN0b3JUZXN0LnJlcXVlc3RVUkxDb21wYXJlcik7CiAgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgbG9nLmVudHJpZXMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIHZhciBlbnRyeSA9
IGxvZy5lbnRyaWVzW2ldOwogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoInBh
Z2U6ICIgKyBlbnRyeS5wYWdlcmVmICsgIiB1cmw6ICIgKyBlbnRyeS5yZXF1ZXN0LnVybCk7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS1wYXJh
bWV0ZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS1w
YXJhbWV0ZXJzLmh0bWwKaW5kZXggYTk0YmM0YWI1MjA2ZDkzMTE3Mjc3MWY3NjQyMmI1NTk3NTY1
MDAxZS4uNTNkODdhMjU0MzI3M2FhYzFiNDA5NzliZjc0NzY5NzRmNzA4MWFmOSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2UtcGFyYW1ldGVycy5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlLXBhcmFt
ZXRlcnMuaHRtbApAQCAtMTIsMTQgKzEyLDE0IEBAIGZ1bmN0aW9uIHN1Ym1pdCgpCiBmdW5jdGlv
biB0ZXN0KCkKIHsKICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJzdWJtaXQoKSIp
OwotICAgIFdlYkluc3BlY3Rvci5uZXR3b3JrTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5OZXR3b3JrTWFuYWdlci5FdmVudFR5cGVzLlJlc291cmNlRmluaXNoZWQsIG9uUmVz
b3VyY2VGaW5pc2hlZCk7CisgICAgV2ViSW5zcGVjdG9yLm5ldHdvcmtNYW5hZ2VyLmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLkV2ZW50VHlwZXMuUmVxdWVzdEZp
bmlzaGVkLCBvblJlcXVlc3RGaW5pc2hlZCk7CiAKLSAgICBmdW5jdGlvbiBvblJlc291cmNlRmlu
aXNoZWQoZXZlbnQpCisgICAgZnVuY3Rpb24gb25SZXF1ZXN0RmluaXNoZWQoZXZlbnQpCiAgICAg
ewotICAgICAgICB2YXIgcmVzb3VyY2UgPSBldmVudC5kYXRhOwotICAgICAgICBpZiAocmVzb3Vy
Y2UudXJsICE9PSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL2luc3BlY3Rvci9yZXNvdXJjZXMvcG9z
dC10YXJnZXQuY2dpP3F1ZXJ5UGFyYW0xPXF1ZXJ5VmFsdWUxJnF1ZXJ5UGFyYW0yPSNmcmFnbWVu
dFBhcmFtMT1mcmFnbWVudFZhbHVlMSZmcmFnbWVudFBhcmFtMj0iKQorICAgICAgICB2YXIgcmVx
dWVzdCA9IGV2ZW50LmRhdGE7CisgICAgICAgIGlmIChyZXF1ZXN0LnVybCAhPT0gImh0dHA6Ly9s
b2NhbGhvc3Q6ODAwMC9pbnNwZWN0b3IvcmVzb3VyY2VzL3Bvc3QtdGFyZ2V0LmNnaT9xdWVyeVBh
cmFtMT1xdWVyeVZhbHVlMSZxdWVyeVBhcmFtMj0jZnJhZ21lbnRQYXJhbTE9ZnJhZ21lbnRWYWx1
ZTEmZnJhZ21lbnRQYXJhbTI9IikKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgSW5zcGVj
dG9yVGVzdC5hZGRPYmplY3QobmV3IFdlYkluc3BlY3Rvci5IQVJFbnRyeShyZXNvdXJjZSkuYnVp
bGQoKSwgSW5zcGVjdG9yVGVzdC5IQVJQcm9wZXJ0eUZvcm1hdHRlcnMpOworICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFkZE9iamVjdChuZXcgV2ViSW5zcGVjdG9yLkhBUkVudHJ5KHJlcXVlc3QpLmJ1
aWxkKCksIEluc3BlY3RvclRlc3QuSEFSUHJvcGVydHlGb3JtYXR0ZXJzKTsKICAgICAgICAgSW5z
cGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMtdGVzdC5qcyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy10ZXN0LmpzCmluZGV4IDdhNzYxMWE2Zjcx
OWI2YTkyZmJkYTI5NzZjYWFhMTliNTE3MGMyMzEuLmU2MjNlMzA0YmFhNGM3ZGM0ZWU1ZGFjZTY2
NDAyMDVkYzIyNTNmYTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL3Jlc291cmNlcy10ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL3Jlc291cmNlcy10ZXN0LmpzCkBAIC0yMiw3ICsyMiw3IEBAIEluc3BlY3RvclRlc3QuSEFS
UHJvcGVydHlGb3JtYXR0ZXJzV2l0aFNpemUgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KElu
c3BlY3RvCiBJbnNwZWN0b3JUZXN0LkhBUlByb3BlcnR5Rm9ybWF0dGVyc1dpdGhTaXplLnNpemUg
PSAiZm9ybWF0QXNUeXBlTmFtZSI7CiAKIAotSW5zcGVjdG9yVGVzdC5yZXNvdXJjZVVSTENvbXBh
cmVyID0gZnVuY3Rpb24ocjEsIHIyKQorSW5zcGVjdG9yVGVzdC5yZXF1ZXN0VVJMQ29tcGFyZXIg
PSBmdW5jdGlvbihyMSwgcjIpCiB7CiAgICAgcmV0dXJuIHIxLnJlcXVlc3QudXJsLmxvY2FsZUNv
bXBhcmUocjIucmVxdWVzdC51cmwpOwogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyL3Jhdy1zb3VyY2UtY29kZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RlYnVnZ2VyL3Jhdy1zb3VyY2UtY29kZS5odG1sCmluZGV4IGZkYTg4MDBlNDc5NjNiNzFjYTFl
NzNjMTEzOTdmYzFkYzFkMzY4NTMuLmI4ZWEwMWNkYmZmZGY3MWExZTA1YzI0NTc4OTMyOWZjY2I1
NDkwZmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9yYXctc291
cmNlLWNvZGUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcmF3LXNv
dXJjZS1jb2RlLmh0bWwKQEAgLTcsMTkgKzcsMjYgQEAKIAogZnVuY3Rpb24gdGVzdCgpCiB7Ci0g
ICAgZnVuY3Rpb24gY3JlYXRlUmVzb3VyY2VNb2NrKHR5cGUsIGZpbmlzaGVkLCBjb250ZW50KQor
ICAgIHZhciBtb2NrQ29udGVudHNNYXAgPSB7fTsKKyAgICB2YXIgbGFzdFJlcXVlc3RJZCA9IDE7
CisKKyAgICBOZXR3b3JrQWdlbnQuZ2V0UmVzcG9uc2VCb2R5ID0gZnVuY3Rpb24ocmVxdWVzdElk
LCBjYWxsYmFjaykKICAgICB7Ci0gICAgICAgIHZhciByZXNvdXJjZSA9IHt9OwotICAgICAgICBy
ZXNvdXJjZS50eXBlID0gdHlwZSA9PT0gImRvY3VtZW50IiA/IFdlYkluc3BlY3Rvci5yZXNvdXJj
ZVR5cGVzLkRvY3VtZW50IDogV2ViSW5zcGVjdG9yLnJlc291cmNlVHlwZXMuU2NyaXB0OwotICAg
ICAgICByZXNvdXJjZS5maW5pc2hlZCA9IGZpbmlzaGVkOwotICAgICAgICByZXNvdXJjZS5jb250
ZW50ID0gY29udGVudDsKLSAgICAgICAgcmVzb3VyY2UucmVxdWVzdENvbnRlbnQgPSBmdW5jdGlv
bihjYWxsYmFjaykgeyBjYWxsYmFjayhyZXNvdXJjZS5jb250ZW50KTsgfTsKLSAgICAgICAgcmVz
b3VyY2UuZmluaXNoID0gZnVuY3Rpb24oKSB7IHJlc291cmNlLmZpbmlzaGVkID0gdHJ1ZTsgcmVz
b3VyY2UuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKCJmaW5pc2hlZCIpOyB9OwotICAgICAgICBy
ZXNvdXJjZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKLSAgICAg
ICAgcmV0dXJuIHJlc291cmNlOworICAgICAgICBjYWxsYmFjayh1bmRlZmluZWQsIG1vY2tDb250
ZW50c01hcFtyZXF1ZXN0SWRdLCBmYWxzZSk7CiAgICAgfQotICAgIGZ1bmN0aW9uIGNyZWF0ZVBl
bmRpbmdSZXNvdXJjZU1vY2sodHlwZSwgY29udGVudCkgeyByZXR1cm4gY3JlYXRlUmVzb3VyY2VN
b2NrKHR5cGUsIGZhbHNlLCBjb250ZW50KTsgfQotICAgIGZ1bmN0aW9uIGNyZWF0ZUZpbmlzaGVk
UmVzb3VyY2VNb2NrKHR5cGUsIGNvbnRlbnQpIHsgcmV0dXJuIGNyZWF0ZVJlc291cmNlTW9jayh0
eXBlLCB0cnVlLCBjb250ZW50KTsgfQorCisgICAgZnVuY3Rpb24gY3JlYXRlUmVxdWVzdE1vY2so
dHlwZSwgZmluaXNoZWQsIGNvbnRlbnQpCisgICAgeworICAgICAgICB2YXIgcmVxdWVzdElkID0g
KytsYXN0UmVxdWVzdElkICsgIiI7CisgICAgICAgIHZhciByZXF1ZXN0ID0gbmV3IFdlYkluc3Bl
Y3Rvci5OZXR3b3JrUmVxdWVzdChyZXF1ZXN0SWQsICJodHRwOi8vZmFrZS51cmwiLCAiIiwgIiIp
OworICAgICAgICByZXF1ZXN0LnR5cGUgPSB0eXBlID09PSAiZG9jdW1lbnQiID8gV2ViSW5zcGVj
dG9yLnJlc291cmNlVHlwZXMuRG9jdW1lbnQgOiBXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5T
Y3JpcHQ7CisgICAgICAgIHJlcXVlc3QuZmluaXNoZWQgPSBmaW5pc2hlZDsKKyAgICAgICAgbW9j
a0NvbnRlbnRzTWFwW3JlcXVlc3RJZF0gPSBjb250ZW50OworICAgICAgICByZXR1cm4gcmVxdWVz
dDsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjcmVhdGVQZW5kaW5nUmVxdWVzdE1vY2sodHlwZSwg
Y29udGVudCkgeyByZXR1cm4gY3JlYXRlUmVxdWVzdE1vY2sodHlwZSwgZmFsc2UsIGNvbnRlbnQp
OyB9CisgICAgZnVuY3Rpb24gY3JlYXRlRmluaXNoZWRSZXF1ZXN0TW9jayh0eXBlLCBjb250ZW50
KSB7IHJldHVybiBjcmVhdGVSZXF1ZXN0TW9jayh0eXBlLCB0cnVlLCBjb250ZW50KTsgfQogCiAg
ICAgZnVuY3Rpb24gY3JlYXRlU2NyaXB0Rm9ybWF0dGVyTW9jaygpCiAgICAgewpAQCAtMzQsOSAr
NDEsOSBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgcmV0dXJuIGZvcm1hdHRlcjsKICAgICAg
IH07CiAKLSAgICBmdW5jdGlvbiBjcmVhdGVSYXdTb3VyY2VDb2RlKHNjcmlwdCwgcmVzb3VyY2Us
IGZvcm1hdHRlZCwgY29tcGlsZXJTb3VyY2VNYXBwaW5nKQorICAgIGZ1bmN0aW9uIGNyZWF0ZVJh
d1NvdXJjZUNvZGUoc2NyaXB0LCByZXF1ZXN0LCBmb3JtYXR0ZWQsIGNvbXBpbGVyU291cmNlTWFw
cGluZykKICAgICB7Ci0gICAgICAgIHZhciByYXdTb3VyY2VDb2RlID0gbmV3IFdlYkluc3BlY3Rv
ci5SYXdTb3VyY2VDb2RlKCJpZCIsIHNjcmlwdCwgcmVzb3VyY2UsIGNyZWF0ZVNjcmlwdEZvcm1h
dHRlck1vY2soKSwgISFmb3JtYXR0ZWQsIGNvbXBpbGVyU291cmNlTWFwcGluZyk7CisgICAgICAg
IHZhciByYXdTb3VyY2VDb2RlID0gbmV3IFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlKCJpZCIs
IHNjcmlwdCwgcmVxdWVzdCwgY3JlYXRlU2NyaXB0Rm9ybWF0dGVyTW9jaygpLCAhIWZvcm1hdHRl
ZCwgY29tcGlsZXJTb3VyY2VNYXBwaW5nKTsKICAgICAgICAgcmF3U291cmNlQ29kZS5hZGRFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLkV2ZW50cy5VSVNvdXJjZUNvZGVD
aGFuZ2VkLCBkZWZhdWx0VUlTb3VyY2VDb2RlQ2hhbmdlZEhhbmRsZXIpOwogICAgICAgICByZXR1
cm4gcmF3U291cmNlQ29kZTsKICAgICB9CkBAIC05MSwxMiArOTgsMTIgQEAgZnVuY3Rpb24gdGVz
dCgpCiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5fc2NyaXB0cyA9IFtd
OwogICAgICAgICAgICAgdmFyIHNjcmlwdDEgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZVNjcmlwdE1v
Y2soImluZGV4Lmh0bWwiLCAwLCAxMCwgZmFsc2UsICI8c2NyaXB0IHNvdXJjZSAxPiIpOwogICAg
ICAgICAgICAgdmFyIHNjcmlwdDIgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZVNjcmlwdE1vY2soImlu
ZGV4Lmh0bWwiLCAwLCA0NSwgZmFsc2UsICI8c2NyaXB0IHNvdXJjZSAyPiIpOwotICAgICAgICAg
ICAgdmFyIHJlc291cmNlID0gY3JlYXRlUGVuZGluZ1Jlc291cmNlTW9jaygiZG9jdW1lbnQiLCAi
PHJlc291cmNlIGNvbnRlbnQ+Iik7Ci0gICAgICAgICAgICB2YXIgcmF3U291cmNlQ29kZSA9IGNy
ZWF0ZVJhd1NvdXJjZUNvZGUoc2NyaXB0MSwgcmVzb3VyY2UpOworICAgICAgICAgICAgdmFyIHJl
cXVlc3QgPSBjcmVhdGVQZW5kaW5nUmVxdWVzdE1vY2soImRvY3VtZW50IiwgIjxyZXNvdXJjZSBj
b250ZW50PiIpOworICAgICAgICAgICAgdmFyIHJhd1NvdXJjZUNvZGUgPSBjcmVhdGVSYXdTb3Vy
Y2VDb2RlKHNjcmlwdDEsIHJlcXVlc3QpOwogCiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFz
c2VydFRydWUoIXJhd1NvdXJjZUNvZGUudWlTb3VyY2VDb2RlKCkpOwogICAgICAgICAgICAgd2Fp
dEZvclVJU291cmNlQ29kZUNoYW5nZWRFdmVudChyYXdTb3VyY2VDb2RlLCB1aVNvdXJjZUNvZGVD
aGFuZ2VkKTsKLSAgICAgICAgICAgIHJlc291cmNlLmZpbmlzaCgpOworICAgICAgICAgICAgcmVx
dWVzdC5maW5pc2hlZCA9IHRydWU7CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIHVpU291cmNlQ29k
ZUNoYW5nZWQoZXZlbnQpCiAgICAgICAgICAgICB7CkBAIC0xMjQsOCArMTMxLDggQEAgZnVuY3Rp
b24gdGVzdCgpCiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5fc2NyaXB0
cyA9IFtdOwogICAgICAgICAgICAgdmFyIHNjcmlwdDEgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZVNj
cmlwdE1vY2soImluZGV4Lmh0bWwiLCAxLCAxMCwgZmFsc2UsICI8c2NyaXB0IHNvdXJjZSAxPiIp
OwogICAgICAgICAgICAgdmFyIHNjcmlwdDIgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZVNjcmlwdE1v
Y2soImluZGV4Lmh0bWwiLCA1LCA0NSwgZmFsc2UsICI8c2NyaXB0XG5zb3VyY2VcbjI+Iik7Ci0g
ICAgICAgICAgICB2YXIgcmVzb3VyY2UgPSBjcmVhdGVGaW5pc2hlZFJlc291cmNlTW9jaygiZG9j
dW1lbnQiLCAiPHJlc291cmNlIGNvbnRlbnQ+Iik7Ci0gICAgICAgICAgICB2YXIgcmF3U291cmNl
Q29kZSA9IGNyZWF0ZVJhd1NvdXJjZUNvZGUoc2NyaXB0MSwgcmVzb3VyY2UpOworICAgICAgICAg
ICAgdmFyIHJlcXVlc3QgPSBjcmVhdGVGaW5pc2hlZFJlcXVlc3RNb2NrKCJkb2N1bWVudCIsICI8
cmVzb3VyY2UgY29udGVudD4iKTsKKyAgICAgICAgICAgIHZhciByYXdTb3VyY2VDb2RlID0gY3Jl
YXRlUmF3U291cmNlQ29kZShzY3JpcHQxLCByZXF1ZXN0KTsKIAogICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5hc3NlcnRUcnVlKCEhcmF3U291cmNlQ29kZS51aVNvdXJjZUNvZGUoKSk7CiAgICAg
ICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gcmF3U291cmNlQ29kZS51aVNvdXJjZUNvZGUoKTsK
QEAgLTE1NCw4ICsxNjEsOCBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIHZhciBzY3Jp
cHQxID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVTY3JpcHRNb2NrKCJpbmRleC5odG1sIiwgMCwgMTAs
IGZhbHNlLCAiPHNjcmlwdCBzb3VyY2UgMT4iKTsKICAgICAgICAgICAgIHZhciBzY3JpcHQyID0g
SW5zcGVjdG9yVGVzdC5jcmVhdGVTY3JpcHRNb2NrKCJpbmRleC5odG1sIiwgMCwgNDUsIGZhbHNl
LCAiPHNjcmlwdCBzb3VyY2UgMj4iKTsKICAgICAgICAgICAgIHZhciBzY3JpcHQzID0gSW5zcGVj
dG9yVGVzdC5jcmVhdGVTY3JpcHRNb2NrKCJpbmRleC5odG1sIiwgMSwgMTAsIGZhbHNlLCAiPHNj
cmlwdCBzb3VyY2UgMz4iKTsKLSAgICAgICAgICAgIHZhciByZXNvdXJjZSA9IGNyZWF0ZVBlbmRp
bmdSZXNvdXJjZU1vY2soImRvY3VtZW50IiwgIjxyZXNvdXJjZSBjb250ZW50PiIpOwotICAgICAg
ICAgICAgdmFyIHJhd1NvdXJjZUNvZGUgPSBjcmVhdGVSYXdTb3VyY2VDb2RlKHNjcmlwdDEsIHJl
c291cmNlKTsKKyAgICAgICAgICAgIHZhciByZXF1ZXN0ID0gY3JlYXRlUGVuZGluZ1JlcXVlc3RN
b2NrKCJkb2N1bWVudCIsICI8cmVzb3VyY2UgY29udGVudD4iKTsKKyAgICAgICAgICAgIHZhciBy
YXdTb3VyY2VDb2RlID0gY3JlYXRlUmF3U291cmNlQ29kZShzY3JpcHQxLCByZXF1ZXN0KTsKIAog
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRUcnVlKCFyYXdTb3VyY2VDb2RlLnVpU291
cmNlQ29kZSgpKTsKICAgICAgICAgICAgIHdhaXRGb3JVSVNvdXJjZUNvZGVDaGFuZ2VkRXZlbnQo
cmF3U291cmNlQ29kZSwgcmVxdWVzdENvbnRlbnQpOwpAQCAtMTkyLDE4ICsxOTksMTggQEAgZnVu
Y3Rpb24gdGVzdCgpCiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMo
IiAgPHNjcmlwdD48c2NyaXB0IHNvdXJjZSAxPjwvIiArICJzY3JpcHQ+IDxzY3JpcHQ+PHNjcmlw
dCBzb3VyY2UgMj48LyIgKyAic2NyaXB0PiIsIGNvbnRlbnQpOwogCiAgICAgICAgICAgICAgICAg
cmF3U291cmNlQ29kZS5mb3JjZVVwZGF0ZVNvdXJjZU1hcHBpbmcoKTsKLSAgICAgICAgICAgICAg
ICB3YWl0Rm9yVUlTb3VyY2VDb2RlQ2hhbmdlZEV2ZW50KHJhd1NvdXJjZUNvZGUsIHJlcXVlc3RD
b250ZW50UmVzb3VyY2UpOwotICAgICAgICAgICAgICAgIHJlc291cmNlLmZpbmlzaCgpOworICAg
ICAgICAgICAgICAgIHdhaXRGb3JVSVNvdXJjZUNvZGVDaGFuZ2VkRXZlbnQocmF3U291cmNlQ29k
ZSwgcmVxdWVzdENvbnRlbnRSZXF1ZXN0KTsKKyAgICAgICAgICAgICAgICByZXF1ZXN0LmZpbmlz
aGVkID0gdHJ1ZTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgZnVuY3Rpb24gcmVxdWVz
dENvbnRlbnRSZXNvdXJjZSgpCisgICAgICAgICAgICBmdW5jdGlvbiByZXF1ZXN0Q29udGVudFJl
cXVlc3QoKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNz
ZXJ0VHJ1ZSghIXJhd1NvdXJjZUNvZGUudWlTb3VyY2VDb2RlKCkpOwogICAgICAgICAgICAgICAg
IHZhciB1aVNvdXJjZUNvZGUgPSByYXdTb3VyY2VDb2RlLnVpU291cmNlQ29kZSgpOwotICAgICAg
ICAgICAgICAgIHVpU291cmNlQ29kZS5yZXF1ZXN0Q29udGVudChkaWRSZXF1ZXN0Q29udGVudFJl
c291cmNlKTsKKyAgICAgICAgICAgICAgICB1aVNvdXJjZUNvZGUucmVxdWVzdENvbnRlbnQoZGlk
UmVxdWVzdENvbnRlbnRSZXF1ZXN0KTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgZnVu
Y3Rpb24gZGlkUmVxdWVzdENvbnRlbnRSZXNvdXJjZShtaW1lVHlwZSwgY29udGVudCkKKyAgICAg
ICAgICAgIGZ1bmN0aW9uIGRpZFJlcXVlc3RDb250ZW50UmVxdWVzdChtaW1lVHlwZSwgY29udGVu
dCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVx
dWFscyhtaW1lVHlwZSwgInRleHQvaHRtbCIpOwogICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuYXNzZXJ0RXF1YWxzKCI8cmVzb3VyY2UgY29udGVudD4iLCBjb250ZW50KTsKQEAgLTIxOSw4
ICsyMjYsOCBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgewogICAgICAgICAgICAgV2ViSW5z
cGVjdG9yLmRlYnVnZ2VyTW9kZWwuX3NjcmlwdHMgPSBbXTsKICAgICAgICAgICAgIHZhciBzY3Jp
cHQgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZVNjcmlwdE1vY2soImZvby5qcyIsIDAsIDAsIHRydWUs
ICI8c2NyaXB0IHNvdXJjZT4iKTsKLSAgICAgICAgICAgIHZhciByZXNvdXJjZSA9IGNyZWF0ZUZp
bmlzaGVkUmVzb3VyY2VNb2NrKCJzY3JpcHQiLCAiPHJlc291cmNlIGNvbnRlbnQ+Iik7Ci0gICAg
ICAgICAgICB2YXIgcmF3U291cmNlQ29kZSA9IGNyZWF0ZVJhd1NvdXJjZUNvZGUoc2NyaXB0LCBy
ZXNvdXJjZSwgZmFsc2UpOworICAgICAgICAgICAgdmFyIHJlcXVlc3QgPSBjcmVhdGVGaW5pc2hl
ZFJlcXVlc3RNb2NrKCJzY3JpcHQiLCAiPHJlc291cmNlIGNvbnRlbnQ+Iik7CisgICAgICAgICAg
ICB2YXIgcmF3U291cmNlQ29kZSA9IGNyZWF0ZVJhd1NvdXJjZUNvZGUoc2NyaXB0LCByZXF1ZXN0
LCBmYWxzZSk7CiAKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0VHJ1ZSghIXJhd1Nv
dXJjZUNvZGUudWlTb3VyY2VDb2RlKCkpOwogICAgICAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9
IHJhd1NvdXJjZUNvZGUudWlTb3VyY2VDb2RlKCk7CkBAIC0yNzgsMTEgKzI4NSwxMSBAQCBmdW5j
dGlvbiB0ZXN0KCkKICAgICAgICAgewogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2Vy
TW9kZWwuX3NjcmlwdHMgPSBbXTsKICAgICAgICAgICAgIHZhciBzY3JpcHQgPSBJbnNwZWN0b3JU
ZXN0LmNyZWF0ZVNjcmlwdE1vY2soImZvby5qcyIsIDAsIDAsIHRydWUsICI8c2NyaXB0IHNvdXJj
ZT4iKTsKLSAgICAgICAgICAgIHZhciByZXNvdXJjZSA9IGNyZWF0ZVBlbmRpbmdSZXNvdXJjZU1v
Y2soInNjcmlwdCIsICI8cmVzb3VyY2UgY29udGVudD4iKTsKLSAgICAgICAgICAgIHZhciByYXdT
b3VyY2VDb2RlID0gY3JlYXRlUmF3U291cmNlQ29kZShzY3JpcHQsIHJlc291cmNlLCB0cnVlKTsK
KyAgICAgICAgICAgIHZhciByZXF1ZXN0ID0gY3JlYXRlUGVuZGluZ1JlcXVlc3RNb2NrKCJzY3Jp
cHQiLCAiPHJlc291cmNlIGNvbnRlbnQ+Iik7CisgICAgICAgICAgICB2YXIgcmF3U291cmNlQ29k
ZSA9IGNyZWF0ZVJhd1NvdXJjZUNvZGUoc2NyaXB0LCByZXF1ZXN0LCB0cnVlKTsKIAogICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRUcnVlKCFyYXdTb3VyY2VDb2RlLnVpU291cmNlQ29k
ZSgpKTsKLSAgICAgICAgICAgIHJlc291cmNlLmZpbmlzaCgpOworICAgICAgICAgICAgcmVxdWVz
dC5maW5pc2hlZCA9IHRydWU7CiAgICAgICAgICAgICB3YWl0Rm9yVUlTb3VyY2VDb2RlQ2hhbmdl
ZEV2ZW50KHJhd1NvdXJjZUNvZGUsIGNoZWNrTWFwcGluZyk7CiAgICAgICAgICAgICByYXdTb3Vy
Y2VDb2RlLl9mb3JtYXR0ZXIuZmluaXNoKCk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9kZWJ1Z2dlci9zb3VyY2UtZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci9zb3VyY2UtZnJhbWUuaHRtbAppbmRleCBiZDIzYmJlMmUwNWFhOWE5Nzc4NmM0
MDE5ZDEzYmUyYWExYjE1YTBlLi4yMDI5OWJlYzRlOTU4ZWRkZDM0N2RlZTIzNzMzODBlZDc3M2Vk
ZGEzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc291cmNlLWZy
YW1lLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NvdXJjZS1mcmFt
ZS5odG1sCkBAIC03Miw3ICs3Miw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgZnVu
Y3Rpb24gdmlzaXQocmVzb3VyY2UpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgaWYg
KHJlc291cmNlLnVybC5pbmRleE9mKCJkZWJ1Z2dlci10ZXN0LmpzIikgIT09IC0xKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5fc2hvd1Jlc291cmNl
KHJlc291cmNlLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5u
ZXR3b3JrLl9zaG93UmVxdWVzdChyZXNvdXJjZS5yZXF1ZXN0LCAxKTsKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL25ldHdvcmstc3RhdHVzLW5vbi1odHRwLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbmV0d29yay1zdGF0dXMtbm9uLWh0dHAuaHRtbApp
bmRleCA4MTkyOTNkNWQ2NGE5Mjk3NWVhNWRlNWMwOWUzMzMyOWViYjRjN2ZjLi5kNWU2ZGI5ZmI0
MWZmOGZjYzZjYmM3ZWVhYmE5NmY2ZjY5MTgwMjEyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvbmV0d29yay1zdGF0dXMtbm9uLWh0dHAuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvbmV0d29yay1zdGF0dXMtbm9uLWh0dHAuaHRtbApAQCAtMywxMCArMywxMCBAQAog
PHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48
L3NjcmlwdD4KIDxzY3JpcHQ+CiBmdW5jdGlvbiB0ZXN0KCkgewotICAgIHZhciByZXNvdXJjZXNU
b1dhdGNoID0gL1wvbmV0d29yay10ZXN0XC5qcyR8XC9ub24tZXhpc3RlbnQtZmlsZS5qcyR8XmRh
dGE6YXBwbGljYXRpb25cL2phdmFzY3JpcHQsfC87Ci0gICAgdmFyIHNlZW5SZXNvdXJjZXMgPSAw
OworICAgIHZhciByZXF1ZXN0c1RvV2F0Y2ggPSAvXC9uZXR3b3JrLXRlc3RcLmpzJHxcL25vbi1l
eGlzdGVudC1maWxlLmpzJHxeZGF0YTphcHBsaWNhdGlvblwvamF2YXNjcmlwdCx8LzsKKyAgICB2
YXIgc2VlblJlcXVlc3RzID0gMDsKIAotICAgIGZ1bmN0aW9uIGR1bXBSZXNvdXJjZXMoKQorICAg
IGZ1bmN0aW9uIGR1bXBSZXF1ZXN0cygpCiAgICAgewogICAgICAgICB2YXIgbG9nVmlldyA9IFdl
Ykluc3BlY3Rvci5wYW5lbHMubmV0d29yay5fbmV0d29ya0xvZ1ZpZXc7CiAgICAgICAgIGxvZ1Zp
ZXcucmVmcmVzaCgpOwpAQCAtMTYsNyArMTYsNyBAQCBmdW5jdGlvbiB0ZXN0KCkgewogCiAgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdXJscy5zbmFwc2hvdExlbmd0aDsgKytpKSB7CiAgICAg
ICAgICAgICB2YXIgdXJsID0gdXJscy5zbmFwc2hvdEl0ZW0oaSkudmFsdWU7Ci0gICAgICAgICAg
ICBpZiAocmVzb3VyY2VzVG9XYXRjaC50ZXN0KHVybCkpIHsKKyAgICAgICAgICAgIGlmIChyZXF1
ZXN0c1RvV2F0Y2gudGVzdCh1cmwpKSB7CiAgICAgICAgICAgICAgICAgdmFyIHVybEZyYWdtZW50
ID0gL15kYXRhOi8udGVzdCh1cmwpID8gdXJsLnJlcGxhY2UoLywuKiQvLCAiIikgOiB1cmwucmVw
bGFjZSgvLipcLy8sICIiKTsKICAgICAgICAgICAgICAgICB2YXIgc3RhdHVzID0gZG9jdW1lbnQu
ZXZhbHVhdGUoImFuY2VzdG9yOjp0ci90ZFtwb3NpdGlvbigpPTNdIiwgdXJscy5zbmFwc2hvdEl0
ZW0oaSksIG51bGwsIFhQYXRoUmVzdWx0LlNUUklOR19UWVBFLCBudWxsKTsKICAgICAgICAgICAg
ICAgICBvdXRwdXRTdHJpbmdzLnB1c2godXJsRnJhZ21lbnQgKyAiOiAiICsgc3RhdHVzLnN0cmlu
Z1ZhbHVlKTsKQEAgLTI3LDE1ICsyNywxNSBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgICAgICBJ
bnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwogICAgIH0KIAotICAgIGZ1bmN0aW9uIG9uUmVz
b3VyY2VGaW5pc2hlZChyZXNvdXJjZSkKKyAgICBmdW5jdGlvbiBvblJlcXVlc3RGaW5pc2hlZChy
ZXF1ZXN0KQogICAgIHsKLSAgICAgICAgaWYgKCFyZXNvdXJjZXNUb1dhdGNoLnRlc3QocmVzb3Vy
Y2UudXJsKSkKKyAgICAgICAgaWYgKCFyZXF1ZXN0c1RvV2F0Y2gudGVzdChyZXF1ZXN0LnVybCkp
CiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmICgrK3NlZW5SZXNvdXJjZXMgPT09IDMp
Ci0gICAgICAgICAgICBkdW1wUmVzb3VyY2VzKCk7CisgICAgICAgIGlmICgrK3NlZW5SZXF1ZXN0
cyA9PT0gMykKKyAgICAgICAgICAgIGR1bXBSZXF1ZXN0cygpOwogICAgIH0KIAotICAgIFdlYklu
c3BlY3Rvci5uZXR3b3JrTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5OZXR3
b3JrTWFuYWdlci5FdmVudFR5cGVzLlJlc291cmNlRmluaXNoZWQsIG9uUmVzb3VyY2VGaW5pc2hl
ZCk7CisgICAgV2ViSW5zcGVjdG9yLm5ldHdvcmtNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLkV2ZW50VHlwZXMuUmVxdWVzdEZpbmlzaGVkLCBvblJl
cXVlc3RGaW5pc2hlZCk7CiAgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgibmV0d29yayIpOwog
ICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoImxvYWRSZXNvdXJjZXMoKSIpOwogfQo=
</data>
<flag name="review"
          id="141525"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>