<?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>87241</bug_id>
          
          <creation_ts>2012-05-23 03:08:01 -0700</creation_ts>
          <short_desc>Web Inspector: eliminate getters from HeapSnapshot.js</short_desc>
          <delta_ts>2012-05-23 05:07:52 -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="Ilya Tikhonovsky">loislo</reporter>
          <assigned_to name="Ilya Tikhonovsky">loislo</assigned_to>
          <cc>alph</cc>
    
    <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>631446</commentid>
    <comment_count>0</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-05-23 03:08:01 -0700</bug_when>
    <thetext>getters can&apos;t be inlined by engine at the moment.
I found that convertation getters into functions gives us about 600 ms

RESULT heap-snapshot: switch-to-containment-view= 1920 ms

svs

RESULT heap-snapshot: switch-to-containment-view= 1367 ms</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631448</commentid>
    <comment_count>1</comment_count>
      <attachid>143517</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-05-23 03:12:04 -0700</bug_when>
    <thetext>Created attachment 143517
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631510</commentid>
    <comment_count>2</comment_count>
      <attachid>143517</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-05-23 04:50:32 -0700</bug_when>
    <thetext>Comment on attachment 143517
Patch

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

&gt; Source/WebCore/ChangeLog:7
&gt; +        I found that convertation getters into functions gives us about 600 ms

typo: conversion</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631515</commentid>
    <comment_count>3</comment_count>
      <attachid>143517</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-05-23 04:56:10 -0700</bug_when>
    <thetext>Comment on attachment 143517
Patch

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

&gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:1957
&gt; +            var valueA = typeof valueOrFunctionA !== &quot;function&quot; ? valueOrFunctionA : valueOrFunctionA.call(nodeA);

I guess the properties used for sorting are always functions after this change. If so please remove the typeof condition.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631527</commentid>
    <comment_count>4</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-05-23 05:07:52 -0700</bug_when>
    <thetext>Committed r118162: &lt;http://trac.webkit.org/changeset/118162&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143517</attachid>
            <date>2012-05-23 03:12:04 -0700</date>
            <delta_ts>2012-05-23 04:56:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87241-20120523141202.patch</filename>
            <type>text/plain</type>
            <size>56803</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4MTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDUwZjkzM2E2NTI4ZWU1
YjI5MmFjZmVjZmZhNGI0ZDQ3NDI0OTEwZC4uYzE3NDc4ZWE1ODA2YmE1ZjJkNGY2MDNmYzQyYTc0
MzM3NTczN2Q5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNSBAQAorMjAxMi0wNS0yMyAgSWx5
YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogZWxpbWluYXRlIGdldHRlcnMgZnJvbSBIZWFwU25hcHNob3QuanMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3MjQxCisKKyAgICAgICAgZ2V0
dGVycyBjYW4ndCBiZSBpbmxpbmVkIGJ5IGVuZ2luZSBhdCB0aGUgbW9tZW50LgorICAgICAgICBJ
IGZvdW5kIHRoYXQgY29udmVydGF0aW9uIGdldHRlcnMgaW50byBmdW5jdGlvbnMgZ2l2ZXMgdXMg
YWJvdXQgNjAwIG1zCisKKyAgICAgICAgUkVTVUxUIGhlYXAtc25hcHNob3Q6IHN3aXRjaC10by1j
b250YWlubWVudC12aWV3PSAxOTIwIG1zCisgICAgICAgIHZzCisgICAgICAgIFJFU1VMVCBoZWFw
LXNuYXBzaG90OiBzd2l0Y2gtdG8tY29udGFpbm1lbnQtdmlldz0gMTM2NyBtcworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250
LWVuZC9IZWFwU25hcHNob3QuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
RWRnZS5wcm90b3R5cGUuaGFzU3RyaW5nTmFtZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVh
cFNuYXBzaG90RWRnZS5wcm90b3R5cGUuaXNFbGVtZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5IZWFwU25hcHNob3RFZGdlLnByb3RvdHlwZS5pc0hpZGRlbik6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90RWRnZS5wcm90b3R5cGUuaXNXZWFrKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5IZWFwU25hcHNob3RFZGdlLnByb3RvdHlwZS5pc0ludGVybmFsKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RFZGdlLnByb3RvdHlwZS5pc0ludmlzaWJsZSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RWRnZS5wcm90b3R5cGUuaXNTaG9ydGN1
dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RWRnZS5wcm90b3R5cGUubmFt
ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RWRnZS5wcm90b3R5cGUubm9k
ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RWRnZS5wcm90b3R5cGUubm9k
ZUluZGV4KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RFZGdlLnByb3RvdHlw
ZS5yYXdFZGdlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RWRnZS5wcm90
b3R5cGUudG9TdHJpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEVkZ2Uu
cHJvdG90eXBlLnR5cGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEVkZ2Uu
cHJvdG90eXBlLl9oYXNTdHJpbmdOYW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3RFZGdlLnByb3RvdHlwZS5fbmFtZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90RWRnZS5wcm90b3R5cGUuX25hbWVPckluZGV4KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5IZWFwU25hcHNob3RFZGdlSXRlcmF0b3IucHJvdG90eXBlLmluZGV4KToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3RFZGdlSXRlcmF0b3IucHJvdG90eXBlLnNldEluZGV4KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RFZGdlSXRlcmF0b3IucHJvdG90eXBl
Lml0ZW0pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFJldGFpbmVyRWRnZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UmV0YWluZXJFZGdlLnByb3RvdHlw
ZS5jbG9uZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UmV0YWluZXJFZGdl
LnByb3RvdHlwZS5oYXNTdHJpbmdOYW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3RSZXRhaW5lckVkZ2UucHJvdG90eXBlLmlzRWxlbWVudCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90UmV0YWluZXJFZGdlLnByb3RvdHlwZS5pc0hpZGRlbik6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UmV0YWluZXJFZGdlLnByb3RvdHlwZS5pc0lu
dGVybmFsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RSZXRhaW5lckVkZ2Uu
cHJvdG90eXBlLmlzSW52aXNpYmxlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3RSZXRhaW5lckVkZ2UucHJvdG90eXBlLmlzU2hvcnRjdXQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdFJldGFpbmVyRWRnZS5wcm90b3R5cGUuaXNXZWFrKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RSZXRhaW5lckVkZ2UucHJvdG90eXBlLm5hbWUpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFJldGFpbmVyRWRnZS5wcm90b3R5cGUu
bm9kZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UmV0YWluZXJFZGdlLnBy
b3RvdHlwZS5ub2RlSW5kZXgpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFJl
dGFpbmVyRWRnZS5wcm90b3R5cGUucmV0YWluZXJJbmRleCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90UmV0YWluZXJFZGdlLnByb3RvdHlwZS5zZXRSZXRhaW5lckluZGV4KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RSZXRhaW5lckVkZ2UucHJvdG90eXBl
Ll9ub2RlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RSZXRhaW5lckVkZ2Uu
cHJvdG90eXBlLl9lZGdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RSZXRh
aW5lckVkZ2UucHJvdG90eXBlLnRvU3RyaW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3RSZXRhaW5lckVkZ2UucHJvdG90eXBlLnR5cGUpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdFJldGFpbmVyRWRnZUl0ZXJhdG9yLnByb3RvdHlwZS5maXJzdCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UmV0YWluZXJFZGdlSXRlcmF0b3IucHJv
dG90eXBlLmhhc05leHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFJldGFp
bmVyRWRnZUl0ZXJhdG9yLnByb3RvdHlwZS5pbmRleCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90UmV0YWluZXJFZGdlSXRlcmF0b3IucHJvdG90eXBlLnNldEluZGV4KToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RSZXRhaW5lckVkZ2VJdGVyYXRvci5wcm90
b3R5cGUuaXRlbSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UmV0YWluZXJF
ZGdlSXRlcmF0b3IucHJvdG90eXBlLm5leHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdE5vZGUucHJvdG90eXBlLmNhbkJlUXVlcmllZCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90Tm9kZS5wcm90b3R5cGUuZGlzdGFuY2VUb1dpbmRvdyk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZS5wcm90b3R5cGUuY2xhc3NOYW1lKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlLnByb3RvdHlwZS5kb21pbmF0b3JJ
bmRleCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZS5wcm90b3R5cGUu
ZWRnZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGUucHJvdG90eXBl
LmVkZ2VzQ291bnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGUucHJv
dG90eXBlLmZsYWdzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlLnBy
b3RvdHlwZS5pZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZS5wcm90
b3R5cGUuaXNIaWRkZW4pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGUu
cHJvdG90eXBlLmlzTmF0aXZlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RO
b2RlLnByb3RvdHlwZS5pc1N5bnRoZXRpYyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90Tm9kZS5wcm90b3R5cGUuaXNXaW5kb3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdE5vZGUucHJvdG90eXBlLmlzRGV0YWNoZWRET01UcmVlc1Jvb3QpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGUucHJvdG90eXBlLmlzRGV0YWNoZWRET01U
cmVlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlLnByb3RvdHlwZS5p
c1Jvb3QpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGUucHJvdG90eXBl
Lm5hbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGUucHJvdG90eXBl
LnJhd0VkZ2VzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlLnByb3Rv
dHlwZS5yZXRhaW5lZFNpemUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5v
ZGUucHJvdG90eXBlLnJldGFpbmVycyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBz
aG90Tm9kZS5wcm90b3R5cGUuc2VsZlNpemUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdE5vZGUucHJvdG90eXBlLnR5cGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdE5vZGUucHJvdG90eXBlLl9uYW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3ROb2RlLnByb3RvdHlwZS5fZWRnZUluZGV4ZXNFbmQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdE5vZGUucHJvdG90eXBlLl9uZXh0Tm9kZUluZGV4KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlLnByb3RvdHlwZS5fdHlwZSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZUl0ZXJhdG9yKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlSXRlcmF0b3IucHJvdG90eXBlLmhhc05leHQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGVJdGVyYXRvci5wcm90b3R5cGUu
aW5kZXgpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGVJdGVyYXRvci5w
cm90b3R5cGUuc2V0SW5kZXgpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5v
ZGVJdGVyYXRvci5wcm90b3R5cGUuaXRlbSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90Tm9kZUl0ZXJhdG9yLnByb3RvdHlwZS5uZXh0KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5IZWFwU25hcHNob3QucHJvdG90eXBlLl9hbGxOb2Rlcyk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZS5yb290Tm9kZSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZS5nZXQgdG90YWxTaXplKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLl9kb21pbmF0ZWROb2Rlc09mTm9kZSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZS5hZ2dyZWdhdGVzRm9y
RGlmZik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZS5fY2Fs
Y3VsYXRlT2JqZWN0VG9XaW5kb3dEaXN0YW5jZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVh
cFNuYXBzaG90LnByb3RvdHlwZS5fYnVpbGRBZ2dyZWdhdGVzKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLl9jYWxjdWxhdGVDbGFzc2VzUmV0YWluZWRTaXpl
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLl9zb3J0QWdn
cmVnYXRlSW5kZXhlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3Rv
dHlwZS5fbWFya0ludmlzaWJsZUVkZ2VzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3QucHJvdG90eXBlLl9tYXJrRGV0YWNoZWRET01UcmVlTm9kZXMpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUuX21hcmtRdWVyaWFibGVIZWFwT2JqZWN0
cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZS5fY2FsY3Vs
YXRlRGlmZkZvckNsYXNzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJv
dG90eXBlLl9ub2RlRm9yU25hcHNob3RPYmplY3RJZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90LnByb3RvdHlwZS5ub2RlQ2xhc3NOYW1lKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLmRvbWluYXRvcklkc0Zvck5vZGUpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUuY3JlYXRlRWRnZXNQcm92aWRl
cik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZS5jcmVhdGVS
ZXRhaW5pbmdFZGdlc1Byb3ZpZGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3RGaWx0ZXJlZE9yZGVyZWRJdGVyYXRvci5wcm90b3R5cGUuX2NyZWF0ZUl0ZXJhdGlvbk9yZGVy
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RGaWx0ZXJlZE9yZGVyZWRJdGVy
YXRvci5wcm90b3R5cGUuaXNFbXB0eSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBz
aG90RmlsdGVyZWRPcmRlcmVkSXRlcmF0b3IucHJvdG90eXBlLml0ZW0pOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkhlYXBTbmFwc2hvdEZpbHRlcmVkT3JkZXJlZEl0ZXJhdG9yLnByb3RvdHlwZS5z
ZXJpYWxpemVJdGVtc1JhbmdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RF
ZGdlc1Byb3ZpZGVyLnByb3RvdHlwZS5zZXJpYWxpemVJdGVtKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3RFZGdlc1Byb3ZpZGVyLnByb3RvdHlwZS5zb3J0LmNvbXBhcmVFZGdl
RmllbGROYW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RFZGdlc1Byb3Zp
ZGVyLnByb3RvdHlwZS5zb3J0LmNvbXBhcmVOb2RlRmllbGQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdE5vZGVzUHJvdmlkZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdE5vZGVzUHJvdmlkZXIucHJvdG90eXBlLm5vZGVQb3NpdGlvbik6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZXNQcm92aWRlci5wcm90b3R5cGUuc2VyaWFs
aXplSXRlbSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZXNQcm92aWRl
ci5wcm90b3R5cGUuc29ydC5zb3J0QnlOb2RlRmllbGQpOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvSGVhcFNuYXBzaG90R3JpZE5vZGVzLmpzOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvSGVhcFNuYXBzaG90UHJveHkuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVh
cFNuYXBzaG90UHJvdmlkZXJQcm94eS5wcm90b3R5cGUuaXNFbXB0eSk6CisKIDIwMTItMDUtMjIg
IEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbW92ZSBhbiBh
c3NlcnRpb24gc2luY2UgYW4gZXZlbnQncyB0YXJnZXQgbWlnaHQgYmUgYSBzaGFkb3cgcm9vdCBp
ZiBhIHRleHQgbm9kZSBpcyBjbGlja2VkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3QuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdC5qcwppbmRleCA0NTYxZTJkYjFiYTQxMGUwMzBhZDRi
NTZlNzJiMzU5Yzg0ZjZmN2RlLi42NjI0OTE4YzM0NzZiYmRmMWU4Yzg0ZGNkYjIyZTU1N2YzMzgw
MzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBT
bmFwc2hvdC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBT
bmFwc2hvdC5qcwpAQCAtOTgsMTA0ICs5OCwxMDQgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dEVkZ2UucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3RFZGdlKHRoaXMuX3NuYXBzaG90LCB0aGlzLl9lZGdlcywgdGhpcy5lZGdlSW5kZXgp
OwogICAgIH0sCiAKLSAgICBnZXQgaGFzU3RyaW5nTmFtZSgpCisgICAgaGFzU3RyaW5nTmFtZTog
ZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLmlzU2hvcnRjdXQpCi0gICAgICAg
ICAgICByZXR1cm4gdGhpcy5faGFzU3RyaW5nTmFtZTsKLSAgICAgICAgcmV0dXJuIGlzTmFOKHBh
cnNlSW50KHRoaXMuX25hbWUsIDEwKSk7CisgICAgICAgIGlmICghdGhpcy5pc1Nob3J0Y3V0KCkp
CisgICAgICAgICAgICByZXR1cm4gdGhpcy5faGFzU3RyaW5nTmFtZSgpOworICAgICAgICByZXR1
cm4gaXNOYU4ocGFyc2VJbnQodGhpcy5fbmFtZSgpLCAxMCkpOwogICAgIH0sCiAKLSAgICBnZXQg
aXNFbGVtZW50KCkKKyAgICBpc0VsZW1lbnQ6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHJl
dHVybiB0aGlzLl90eXBlKCkgPT09IHRoaXMuX3NuYXBzaG90Ll9lZGdlRWxlbWVudFR5cGU7CiAg
ICAgfSwKIAotICAgIGdldCBpc0hpZGRlbigpCisgICAgaXNIaWRkZW46IGZ1bmN0aW9uKCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl90eXBlKCkgPT09IHRoaXMuX3NuYXBzaG90Ll9lZGdl
SGlkZGVuVHlwZTsKICAgICB9LAogCi0gICAgZ2V0IGlzV2VhaygpCisgICAgaXNXZWFrOiBmdW5j
dGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fdHlwZSgpID09PSB0aGlzLl9zbmFw
c2hvdC5fZWRnZVdlYWtUeXBlOwogICAgIH0sCiAKLSAgICBnZXQgaXNJbnRlcm5hbCgpCisgICAg
aXNJbnRlcm5hbDogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3R5cGUo
KSA9PT0gdGhpcy5fc25hcHNob3QuX2VkZ2VJbnRlcm5hbFR5cGU7CiAgICAgfSwKIAotICAgIGdl
dCBpc0ludmlzaWJsZSgpCisgICAgaXNJbnZpc2libGU6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB0aGlzLl90eXBlKCkgPT09IHRoaXMuX3NuYXBzaG90Ll9lZGdlSW52aXNpYmxl
VHlwZTsKICAgICB9LAogCi0gICAgZ2V0IGlzU2hvcnRjdXQoKQorICAgIGlzU2hvcnRjdXQ6IGZ1
bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl90eXBlKCkgPT09IHRoaXMuX3Nu
YXBzaG90Ll9lZGdlU2hvcnRjdXRUeXBlOwogICAgIH0sCiAKLSAgICBnZXQgbmFtZSgpCisgICAg
bmFtZTogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLmlzU2hvcnRjdXQpCi0g
ICAgICAgICAgICByZXR1cm4gdGhpcy5fbmFtZTsKLSAgICAgICAgdmFyIG51bU5hbWUgPSBwYXJz
ZUludCh0aGlzLl9uYW1lLCAxMCk7Ci0gICAgICAgIHJldHVybiBpc05hTihudW1OYW1lKSA/IHRo
aXMuX25hbWUgOiBudW1OYW1lOworICAgICAgICBpZiAoIXRoaXMuaXNTaG9ydGN1dCgpKQorICAg
ICAgICAgICAgcmV0dXJuIHRoaXMuX25hbWUoKTsKKyAgICAgICAgdmFyIG51bU5hbWUgPSBwYXJz
ZUludCh0aGlzLl9uYW1lKCksIDEwKTsKKyAgICAgICAgcmV0dXJuIGlzTmFOKG51bU5hbWUpID8g
dGhpcy5fbmFtZSgpIDogbnVtTmFtZTsKICAgICB9LAogCi0gICAgZ2V0IG5vZGUoKQorICAgIG5v
ZGU6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdE5vZGUodGhpcy5fc25hcHNob3QsIHRoaXMubm9kZUluZGV4KTsKKyAgICAgICAg
cmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZSh0aGlzLl9zbmFwc2hvdCwg
dGhpcy5ub2RlSW5kZXgoKSk7CiAgICAgfSwKIAotICAgIGdldCBub2RlSW5kZXgoKQorICAgIG5v
ZGVJbmRleDogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2VkZ2VzLml0
ZW0odGhpcy5lZGdlSW5kZXggKyB0aGlzLl9zbmFwc2hvdC5fZWRnZVRvTm9kZU9mZnNldCk7CiAg
ICAgfSwKIAotICAgIGdldCByYXdFZGdlcygpCisgICAgcmF3RWRnZXM6IGZ1bmN0aW9uKCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9lZGdlczsKICAgICB9LAogCiAgICAgdG9TdHJpbmc6
IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHN3aXRjaCAodGhpcy50eXBlKSB7Ci0gICAgICAg
IGNhc2UgImNvbnRleHQiOiByZXR1cm4gIi0+IiArIHRoaXMubmFtZTsKLSAgICAgICAgY2FzZSAi
ZWxlbWVudCI6IHJldHVybiAiWyIgKyB0aGlzLm5hbWUgKyAiXSI7Ci0gICAgICAgIGNhc2UgIndl
YWsiOiByZXR1cm4gIltbIiArIHRoaXMubmFtZSArICJdXSI7CisgICAgICAgIHZhciBuYW1lID0g
dGhpcy5uYW1lKCk7CisgICAgICAgIHN3aXRjaCAodGhpcy50eXBlKCkpIHsKKyAgICAgICAgY2Fz
ZSAiY29udGV4dCI6IHJldHVybiAiLT4iICsgbmFtZTsKKyAgICAgICAgY2FzZSAiZWxlbWVudCI6
IHJldHVybiAiWyIgKyBuYW1lICsgIl0iOworICAgICAgICBjYXNlICJ3ZWFrIjogcmV0dXJuICJb
WyIgKyBuYW1lICsgIl1dIjsKICAgICAgICAgY2FzZSAicHJvcGVydHkiOgotICAgICAgICAgICAg
cmV0dXJuIHRoaXMubmFtZS5pbmRleE9mKCIgIikgPT09IC0xID8gIi4iICsgdGhpcy5uYW1lIDog
IltcIiIgKyB0aGlzLm5hbWUgKyAiXCJdIjsKKyAgICAgICAgICAgIHJldHVybiBuYW1lLmluZGV4
T2YoIiAiKSA9PT0gLTEgPyAiLiIgKyBuYW1lIDogIltcIiIgKyBuYW1lICsgIlwiXSI7CiAgICAg
ICAgIGNhc2UgInNob3J0Y3V0IjoKLSAgICAgICAgICAgIHZhciBuYW1lID0gdGhpcy5uYW1lOwog
ICAgICAgICAgICAgaWYgKHR5cGVvZiBuYW1lID09PSAic3RyaW5nIikKLSAgICAgICAgICAgICAg
ICByZXR1cm4gdGhpcy5uYW1lLmluZGV4T2YoIiAiKSA9PT0gLTEgPyAiLiIgKyB0aGlzLm5hbWUg
OiAiW1wiIiArIHRoaXMubmFtZSArICJcIl0iOworICAgICAgICAgICAgICAgIHJldHVybiBuYW1l
LmluZGV4T2YoIiAiKSA9PT0gLTEgPyAiLiIgKyBuYW1lIDogIltcIiIgKyBuYW1lICsgIlwiXSI7
CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuICJbIiArIHRoaXMubmFt
ZSArICJdIjsKKyAgICAgICAgICAgICAgICByZXR1cm4gIlsiICsgbmFtZSArICJdIjsKICAgICAg
ICAgY2FzZSAiaW50ZXJuYWwiOgogICAgICAgICBjYXNlICJoaWRkZW4iOgogICAgICAgICBjYXNl
ICJpbnZpc2libGUiOgotICAgICAgICAgICAgcmV0dXJuICJ7IiArIHRoaXMubmFtZSArICJ9IjsK
KyAgICAgICAgICAgIHJldHVybiAieyIgKyBuYW1lICsgIn0iOwogICAgICAgICB9OwotICAgICAg
ICByZXR1cm4gIj8iICsgdGhpcy5uYW1lICsgIj8iOworICAgICAgICByZXR1cm4gIj8iICsgbmFt
ZSArICI/IjsKICAgICB9LAogCi0gICAgZ2V0IHR5cGUoKQorICAgIHR5cGU6IGZ1bmN0aW9uKCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zbmFwc2hvdC5fZWRnZVR5cGVzW3RoaXMuX3R5
cGUoKV07CiAgICAgfSwKIAotICAgIGdldCBfaGFzU3RyaW5nTmFtZSgpCisgICAgX2hhc1N0cmlu
Z05hbWU6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHJldHVybiAhdGhpcy5pc0VsZW1lbnQg
JiYgIXRoaXMuaXNIaWRkZW4gJiYgIXRoaXMuaXNXZWFrOworICAgICAgICByZXR1cm4gIXRoaXMu
aXNFbGVtZW50KCkgJiYgIXRoaXMuaXNIaWRkZW4oKSAmJiAhdGhpcy5pc1dlYWsoKTsKICAgICB9
LAogCi0gICAgZ2V0IF9uYW1lKCkKKyAgICBfbmFtZTogZnVuY3Rpb24oKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIHRoaXMuX2hhc1N0cmluZ05hbWUgPyB0aGlzLl9zbmFwc2hvdC5fc3RyaW5nc1t0
aGlzLl9uYW1lT3JJbmRleF0gOiB0aGlzLl9uYW1lT3JJbmRleDsKKyAgICAgICAgcmV0dXJuIHRo
aXMuX2hhc1N0cmluZ05hbWUoKSA/IHRoaXMuX3NuYXBzaG90Ll9zdHJpbmdzW3RoaXMuX25hbWVP
ckluZGV4KCldIDogdGhpcy5fbmFtZU9ySW5kZXgoKTsKICAgICB9LAogCi0gICAgZ2V0IF9uYW1l
T3JJbmRleCgpCisgICAgX25hbWVPckluZGV4OiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdGhpcy5fZWRnZXMuaXRlbSh0aGlzLmVkZ2VJbmRleCArIHRoaXMuX3NuYXBzaG90Ll9l
ZGdlTmFtZU9mZnNldCk7CiAgICAgfSwKQEAgLTIyNSwxNyArMjI1LDE3IEBAIFdlYkluc3BlY3Rv
ci5IZWFwU25hcHNob3RFZGdlSXRlcmF0b3IucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4g
dGhpcy5lZGdlLmVkZ2VJbmRleCA8IHRoaXMuZWRnZS5fZWRnZXMubGVuZ3RoOwogICAgIH0sCiAK
LSAgICBnZXQgaW5kZXgoKQorICAgIGluZGV4OiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdGhpcy5lZGdlLmVkZ2VJbmRleDsKICAgICB9LAogCi0gICAgc2V0IGluZGV4KG5ld0lu
ZGV4KQorICAgIHNldEluZGV4OiBmdW5jdGlvbihuZXdJbmRleCkKICAgICB7CiAgICAgICAgIHRo
aXMuZWRnZS5lZGdlSW5kZXggPSBuZXdJbmRleDsKICAgICB9LAogCi0gICAgZ2V0IGl0ZW0oKQor
ICAgIGl0ZW06IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLmVkZ2U7CiAg
ICAgfSwKQEAgLTI1OCw3MSArMjU4LDcxIEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RSZXRh
aW5lckVkZ2UgPSBmdW5jdGlvbihzbmFwc2hvdCwgcmV0YWluZWROb2RlSW5kZXgsIHJlCiAgICAg
dGhpcy5fZmlyc3RSZXRhaW5lciA9IHNuYXBzaG90Ll9maXJzdFJldGFpbmVySW5kZXhbcmV0YWlu
ZWROb2RlT3JkaW5hbF07CiAgICAgdGhpcy5fcmV0YWluZXJzQ291bnQgPSBzbmFwc2hvdC5fZmly
c3RSZXRhaW5lckluZGV4W3JldGFpbmVkTm9kZU9yZGluYWwgKyAxXSAtIHRoaXMuX2ZpcnN0UmV0
YWluZXI7CiAKLSAgICB0aGlzLnJldGFpbmVySW5kZXggPSByZXRhaW5lckluZGV4OworICAgIHRo
aXMuc2V0UmV0YWluZXJJbmRleChyZXRhaW5lckluZGV4KTsKIH0KIAogV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdFJldGFpbmVyRWRnZS5wcm90b3R5cGUgPSB7CiAgICAgY2xvbmU6IGZ1bmN0aW9u
KCkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFJl
dGFpbmVyRWRnZSh0aGlzLl9zbmFwc2hvdCwgdGhpcy5fcmV0YWluZWROb2RlSW5kZXgsIHRoaXMu
cmV0YWluZXJJbmRleCk7CisgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdFJldGFpbmVyRWRnZSh0aGlzLl9zbmFwc2hvdCwgdGhpcy5fcmV0YWluZWROb2RlSW5kZXgs
IHRoaXMucmV0YWluZXJJbmRleCgpKTsKICAgICB9LAogCi0gICAgZ2V0IGhhc1N0cmluZ05hbWUo
KQorICAgIGhhc1N0cmluZ05hbWU6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0
aGlzLl9lZGdlLmhhc1N0cmluZ05hbWU7CisgICAgICAgIHJldHVybiB0aGlzLl9lZGdlKCkuaGFz
U3RyaW5nTmFtZSgpOwogICAgIH0sCiAKLSAgICBnZXQgaXNFbGVtZW50KCkKKyAgICBpc0VsZW1l
bnQ6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9lZGdlLmlzRWxlbWVu
dDsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2VkZ2UoKS5pc0VsZW1lbnQoKTsKICAgICB9LAogCi0g
ICAgZ2V0IGlzSGlkZGVuKCkKKyAgICBpc0hpZGRlbjogZnVuY3Rpb24oKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIHRoaXMuX2VkZ2UuaXNIaWRkZW47CisgICAgICAgIHJldHVybiB0aGlzLl9lZGdl
KCkuaXNIaWRkZW4oKTsKICAgICB9LAogCi0gICAgZ2V0IGlzSW50ZXJuYWwoKQorICAgIGlzSW50
ZXJuYWw6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9lZGdlLmlzSW50
ZXJuYWw7CisgICAgICAgIHJldHVybiB0aGlzLl9lZGdlKCkuaXNJbnRlcm5hbCgpOwogICAgIH0s
CiAKLSAgICBnZXQgaXNJbnZpc2libGUoKQorICAgIGlzSW52aXNpYmxlOiBmdW5jdGlvbigpCiAg
ICAgewotICAgICAgICByZXR1cm4gdGhpcy5fZWRnZS5pc0ludmlzaWJsZTsKKyAgICAgICAgcmV0
dXJuIHRoaXMuX2VkZ2UoKS5pc0ludmlzaWJsZSgpOwogICAgIH0sCiAKLSAgICBnZXQgaXNTaG9y
dGN1dCgpCisgICAgaXNTaG9ydGN1dDogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IHRoaXMuX2VkZ2UuaXNTaG9ydGN1dDsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2VkZ2UoKS5pc1No
b3J0Y3V0KCk7CiAgICAgfSwKIAotICAgIGdldCBpc1dlYWsoKQorICAgIGlzV2VhazogZnVuY3Rp
b24oKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2VkZ2UuaXNXZWFrOworICAgICAgICBy
ZXR1cm4gdGhpcy5fZWRnZSgpLmlzV2VhaygpOwogICAgIH0sCiAKLSAgICBnZXQgbmFtZSgpCisg
ICAgbmFtZTogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2VkZ2UubmFt
ZTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2VkZ2UoKS5uYW1lKCk7CiAgICAgfSwKIAotICAgIGdl
dCBub2RlKCkKKyAgICBub2RlOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICByZXR1cm4gdGhp
cy5fbm9kZTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX25vZGUoKTsKICAgICB9LAogCi0gICAgZ2V0
IG5vZGVJbmRleCgpCisgICAgbm9kZUluZGV4OiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdGhpcy5fbm9kZUluZGV4OwogICAgIH0sCiAKLSAgICBnZXQgcmV0YWluZXJJbmRleCgp
CisgICAgcmV0YWluZXJJbmRleDogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRo
aXMuX3JldGFpbmVySW5kZXg7CiAgICAgfSwKIAotICAgIHNldCByZXRhaW5lckluZGV4KG5ld0lu
ZGV4KQorICAgIHNldFJldGFpbmVySW5kZXg6IGZ1bmN0aW9uKG5ld0luZGV4KQogICAgIHsKICAg
ICAgICAgaWYgKG5ld0luZGV4ICE9PSB0aGlzLl9yZXRhaW5lckluZGV4KSB7CiAgICAgICAgICAg
ICB0aGlzLl9yZXRhaW5lckluZGV4ID0gbmV3SW5kZXg7CkBAIC0zMzksMzAgKzMzOSwzMCBAQCBX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UmV0YWluZXJFZGdlLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgZGVsZXRlIHRoaXMuX25vZGVJbnN0YW5jZTsKICAgICB9LAogCi0gICAgZ2V0IF9ub2RlKCkK
KyAgICBfbm9kZTogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9ub2RlSW5z
dGFuY2UpCiAgICAgICAgICAgICB0aGlzLl9ub2RlSW5zdGFuY2UgPSBuZXcgV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdE5vZGUodGhpcy5fc25hcHNob3QsIHRoaXMuX25vZGVJbmRleCk7CiAgICAg
ICAgIHJldHVybiB0aGlzLl9ub2RlSW5zdGFuY2U7CiAgICAgfSwKIAotICAgIGdldCBfZWRnZSgp
CisgICAgX2VkZ2U6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fZWRnZUlu
c3RhbmNlKSB7Ci0gICAgICAgICAgICB2YXIgZWRnZUluZGV4ID0gdGhpcy5fZ2xvYmFsRWRnZUlu
ZGV4IC0gdGhpcy5fbm9kZS5fZWRnZUluZGV4ZXNTdGFydCgpOwotICAgICAgICAgICAgdGhpcy5f
ZWRnZUluc3RhbmNlID0gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RFZGdlKHRoaXMuX3Nu
YXBzaG90LCB0aGlzLl9ub2RlLnJhd0VkZ2VzLCBlZGdlSW5kZXgpOworICAgICAgICAgICAgdmFy
IGVkZ2VJbmRleCA9IHRoaXMuX2dsb2JhbEVkZ2VJbmRleCAtIHRoaXMuX25vZGUoKS5fZWRnZUlu
ZGV4ZXNTdGFydCgpOworICAgICAgICAgICAgdGhpcy5fZWRnZUluc3RhbmNlID0gbmV3IFdlYklu
c3BlY3Rvci5IZWFwU25hcHNob3RFZGdlKHRoaXMuX3NuYXBzaG90LCB0aGlzLl9ub2RlKCkucmF3
RWRnZXMoKSwgZWRnZUluZGV4KTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gdGhpcy5fZWRn
ZUluc3RhbmNlOwogICAgIH0sCiAKICAgICB0b1N0cmluZzogZnVuY3Rpb24oKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIHRoaXMuX2VkZ2UudG9TdHJpbmcoKTsKKyAgICAgICAgcmV0dXJuIHRoaXMu
X2VkZ2UoKS50b1N0cmluZygpOwogICAgIH0sCiAKLSAgICBnZXQgdHlwZSgpCisgICAgdHlwZTog
ZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2VkZ2UudHlwZTsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuX2VkZ2UoKS50eXBlKCk7CiAgICAgfQogfQogCkBAIC0zNzcsMzIgKzM3
NywzMiBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UmV0YWluZXJFZGdlSXRlcmF0b3IgPSBm
dW5jdGlvbihyZXRhaW5lcikKIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RSZXRhaW5lckVkZ2VJ
dGVyYXRvci5wcm90b3R5cGUgPSB7CiAgICAgZmlyc3Q6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAg
ICAgIHRoaXMucmV0YWluZXIucmV0YWluZXJJbmRleCA9IDA7CisgICAgICAgIHRoaXMucmV0YWlu
ZXIuc2V0UmV0YWluZXJJbmRleCgwKTsKICAgICB9LAogCiAgICAgaGFzTmV4dDogZnVuY3Rpb24o
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucmV0YWluZXIucmV0YWluZXJJbmRleCA8IHRo
aXMucmV0YWluZXIuX3JldGFpbmVyc0NvdW50OworICAgICAgICByZXR1cm4gdGhpcy5yZXRhaW5l
ci5yZXRhaW5lckluZGV4KCkgPCB0aGlzLnJldGFpbmVyLl9yZXRhaW5lcnNDb3VudDsKICAgICB9
LAogCi0gICAgZ2V0IGluZGV4KCkKKyAgICBpbmRleDogZnVuY3Rpb24oKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIHRoaXMucmV0YWluZXIucmV0YWluZXJJbmRleDsKKyAgICAgICAgcmV0dXJuIHRo
aXMucmV0YWluZXIucmV0YWluZXJJbmRleCgpOwogICAgIH0sCiAKLSAgICBzZXQgaW5kZXgobmV3
SW5kZXgpCisgICAgc2V0SW5kZXg6IGZ1bmN0aW9uKG5ld0luZGV4KQogICAgIHsKLSAgICAgICAg
dGhpcy5yZXRhaW5lci5yZXRhaW5lckluZGV4ID0gbmV3SW5kZXg7CisgICAgICAgIHRoaXMucmV0
YWluZXIuc2V0UmV0YWluZXJJbmRleChuZXdJbmRleCk7CiAgICAgfSwKIAotICAgIGdldCBpdGVt
KCkKKyAgICBpdGVtOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5yZXRh
aW5lcjsKICAgICB9LAogCiAgICAgbmV4dDogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgKyt0
aGlzLnJldGFpbmVyLnJldGFpbmVySW5kZXg7CisgICAgICAgIHRoaXMucmV0YWluZXIuc2V0UmV0
YWluZXJJbmRleCh0aGlzLnJldGFpbmVyLnJldGFpbmVySW5kZXgoKSArIDEpOwogICAgIH0KIH07
CiAKQEAgLTQxOCwyOSArNDE4LDMwIEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlID0g
ZnVuY3Rpb24oc25hcHNob3QsIG5vZGVJbmRleCkKIH0KIAogV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdE5vZGUucHJvdG90eXBlID0gewotICAgIGdldCBjYW5CZVF1ZXJpZWQoKQorICAgIGNhbkJl
UXVlcmllZDogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdmFyIGZsYWdzID0gdGhpcy5fc25h
cHNob3QuX2ZsYWdzT2ZOb2RlKHRoaXMpOwogICAgICAgICByZXR1cm4gISEoZmxhZ3MgJiB0aGlz
Ll9zbmFwc2hvdC5fbm9kZUZsYWdzLmNhbkJlUXVlcmllZCk7CiAgICAgfSwKIAotICAgIGdldCBk
aXN0YW5jZVRvV2luZG93KCkKKyAgICBkaXN0YW5jZVRvV2luZG93OiBmdW5jdGlvbigpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fc25hcHNob3QuX2Rpc3RhbmNlc1RvV2luZG93W3RoaXMu
bm9kZUluZGV4IC8gdGhpcy5fc25hcHNob3QuX25vZGVGaWVsZENvdW50XTsKICAgICB9LAogCi0g
ICAgZ2V0IGNsYXNzTmFtZSgpCisgICAgY2xhc3NOYW1lOiBmdW5jdGlvbigpCiAgICAgewotICAg
ICAgICBzd2l0Y2ggKHRoaXMudHlwZSkgeworICAgICAgICB2YXIgdHlwZSA9IHRoaXMudHlwZSgp
OworICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICAgY2FzZSAiaGlkZGVuIjoKICAgICAg
ICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIihzeXN0ZW0pIik7CiAgICAgICAg
IGNhc2UgIm9iamVjdCI6CiAgICAgICAgIGNhc2UgIm5hdGl2ZSI6Ci0gICAgICAgICAgICByZXR1
cm4gdGhpcy5uYW1lOworICAgICAgICAgICAgcmV0dXJuIHRoaXMubmFtZSgpOwogICAgICAgICBj
YXNlICJjb2RlIjoKICAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIihj
b21waWxlZCBjb2RlKSIpOwogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuICIo
IiArIHRoaXMudHlwZSArICIpIjsKKyAgICAgICAgICAgIHJldHVybiAiKCIgKyB0eXBlICsgIiki
OwogICAgICAgICB9CiAgICAgfSwKIApAQCAtNDU4LDEwNyArNDU5LDEwNSBAQCBXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90Tm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KICAgICB9LAogCi0g
ICAgZ2V0IGRvbWluYXRvckluZGV4KCkKKyAgICBkb21pbmF0b3JJbmRleDogZnVuY3Rpb24oKQog
ICAgIHsKICAgICAgICAgdmFyIG5vZGVGaWVsZENvdW50ID0gdGhpcy5fc25hcHNob3QuX25vZGVG
aWVsZENvdW50OwogICAgICAgICByZXR1cm4gdGhpcy5fc25hcHNob3QuX2RvbWluYXRvcnNUcmVl
W3RoaXMubm9kZUluZGV4IC8gdGhpcy5fc25hcHNob3QuX25vZGVGaWVsZENvdW50XSAqIG5vZGVG
aWVsZENvdW50OwogICAgIH0sCiAKLSAgICBnZXQgZWRnZXMoKQorICAgIGVkZ2VzOiBmdW5jdGlv
bigpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RF
ZGdlSXRlcmF0b3IobmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RFZGdlKHRoaXMuX3NuYXBz
aG90LCB0aGlzLnJhd0VkZ2VzKSk7CisgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdEVkZ2VJdGVyYXRvcihuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEVkZ2Uo
dGhpcy5fc25hcHNob3QsIHRoaXMucmF3RWRnZXMoKSkpOwogICAgIH0sCiAKLSAgICBnZXQgZWRn
ZXNDb3VudCgpCisgICAgZWRnZXNDb3VudDogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgcmV0
dXJuICh0aGlzLl9lZGdlSW5kZXhlc0VuZCgpIC0gdGhpcy5fZWRnZUluZGV4ZXNTdGFydCgpKSAv
IHRoaXMuX3NuYXBzaG90Ll9lZGdlRmllbGRzQ291bnQ7CiAgICAgfSwKIAotICAgIGdldCBmbGFn
cygpCisgICAgZmxhZ3M6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9z
bmFwc2hvdC5fZmxhZ3NPZk5vZGUodGhpcyk7CiAgICAgfSwKIAotICAgIGdldCBpZCgpCisgICAg
aWQ6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9ub2Rlc1t0aGlzLm5v
ZGVJbmRleCArIHRoaXMuX3NuYXBzaG90Ll9ub2RlSWRPZmZzZXRdOworICAgICAgICB2YXIgc25h
cHNob3QgPSB0aGlzLl9zbmFwc2hvdDsKKyAgICAgICAgcmV0dXJuIHNuYXBzaG90Ll9ub2Rlc1t0
aGlzLm5vZGVJbmRleCArIHNuYXBzaG90Ll9ub2RlSWRPZmZzZXRdOwogICAgIH0sCiAKLSAgICBn
ZXQgaXNIaWRkZW4oKQorICAgIGlzSGlkZGVuOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdGhpcy5fdHlwZSgpID09PSB0aGlzLl9zbmFwc2hvdC5fbm9kZUhpZGRlblR5cGU7CiAg
ICAgfSwKIAotICAgIGdldCBpc05hdGl2ZSgpCisgICAgaXNOYXRpdmU6IGZ1bmN0aW9uKCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl90eXBlKCkgPT09IHRoaXMuX3NuYXBzaG90Ll9ub2Rl
TmF0aXZlVHlwZTsKICAgICB9LAogCi0gICAgZ2V0IGlzU3ludGhldGljKCkKKyAgICBpc1N5bnRo
ZXRpYzogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3R5cGUoKSA9PT0g
dGhpcy5fc25hcHNob3QuX25vZGVTeW50aGV0aWNUeXBlOwogICAgIH0sCiAKLSAgICBnZXQgaXNX
aW5kb3coKQorICAgIGlzV2luZG93OiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICBjb25zdCB3
aW5kb3dSRSA9IC9eV2luZG93LzsKLSAgICAgICAgcmV0dXJuIHdpbmRvd1JFLnRlc3QodGhpcy5u
YW1lKTsKKyAgICAgICAgcmV0dXJuIHdpbmRvd1JFLnRlc3QodGhpcy5uYW1lKCkpOwogICAgIH0s
CiAKLSAgICBnZXQgaXNEZXRhY2hlZERPTVRyZWVzUm9vdCgpCisgICAgaXNEZXRhY2hlZERPTVRy
ZWVzUm9vdDogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMubmFtZSA9PT0g
IihEZXRhY2hlZCBET00gdHJlZXMpIjsKKyAgICAgICAgcmV0dXJuIHRoaXMubmFtZSgpID09PSAi
KERldGFjaGVkIERPTSB0cmVlcykiOwogICAgIH0sCiAKLSAgICBnZXQgaXNEZXRhY2hlZERPTVRy
ZWUoKQorICAgIGlzRGV0YWNoZWRET01UcmVlOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICBj
b25zdCBkZXRhY2hlZERPTVRyZWVSRSA9IC9eRGV0YWNoZWQgRE9NIHRyZWUvOwotICAgICAgICBy
ZXR1cm4gZGV0YWNoZWRET01UcmVlUkUudGVzdCh0aGlzLmNsYXNzTmFtZSk7CisgICAgICAgIHJl
dHVybiBkZXRhY2hlZERPTVRyZWVSRS50ZXN0KHRoaXMuY2xhc3NOYW1lKCkpOwogICAgIH0sCiAK
LSAgICBnZXQgaXNSb290KCkKKyAgICBpc1Jvb3Q6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAg
IHJldHVybiB0aGlzLm5vZGVJbmRleCA9PT0gdGhpcy5fc25hcHNob3QuX3Jvb3ROb2RlSW5kZXg7
CiAgICAgfSwKIAotICAgIGdldCBuYW1lKCkKKyAgICBuYW1lOiBmdW5jdGlvbigpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5fc25hcHNob3QuX3N0cmluZ3NbdGhpcy5fbmFtZSgpXTsKICAg
ICB9LAogCi0gICAgZ2V0IHJhd0VkZ2VzKCkKKyAgICByYXdFZGdlczogZnVuY3Rpb24oKQogICAg
IHsKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90QXJyYXlTbGlj
ZSh0aGlzLl9zbmFwc2hvdC5fY29udGFpbm1lbnRFZGdlcywgdGhpcy5fZWRnZUluZGV4ZXNTdGFy
dCgpLCB0aGlzLl9lZGdlSW5kZXhlc0VuZCgpKTsKICAgICB9LAogCi0gICAgZ2V0IHJldGFpbmVk
U2l6ZSgpCisgICAgcmV0YWluZWRTaXplOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICByZXR1
cm4gdGhpcy5fc25hcHNob3QuX3JldGFpbmVkU2l6ZXNbdGhpcy5ub2RlSW5kZXggLyB0aGlzLl9z
bmFwc2hvdC5fbm9kZUZpZWxkQ291bnRdOwogICAgIH0sCiAKLSAgICBnZXQgcmV0YWluZXJzKCkK
KyAgICByZXRhaW5lcnM6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiBuZXcgV2Vi
SW5zcGVjdG9yLkhlYXBTbmFwc2hvdFJldGFpbmVyRWRnZUl0ZXJhdG9yKG5ldyBXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90UmV0YWluZXJFZGdlKHRoaXMuX3NuYXBzaG90LCB0aGlzLm5vZGVJbmRl
eCwgMCkpOwogICAgIH0sCiAKLSAgICBnZXQgc2VsZlNpemUoKQorICAgIHNlbGZTaXplOiBmdW5j
dGlvbigpCiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5fbm9kZXNbdGhpcy5ub2RlSW5kZXgg
KyB0aGlzLl9zbmFwc2hvdC5fbm9kZVNlbGZTaXplT2Zmc2V0XTsKKyAgICAgICAgdmFyIHNuYXBz
aG90ID0gdGhpcy5fc25hcHNob3Q7CisgICAgICAgIHJldHVybiBzbmFwc2hvdC5fbm9kZXNbdGhp
cy5ub2RlSW5kZXggKyBzbmFwc2hvdC5fbm9kZVNlbGZTaXplT2Zmc2V0XTsKICAgICB9LAogCi0g
ICAgZ2V0IHR5cGUoKQorICAgIHR5cGU6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVy
biB0aGlzLl9zbmFwc2hvdC5fbm9kZVR5cGVzW3RoaXMuX3R5cGUoKV07CiAgICAgfSwKIAogICAg
IF9uYW1lOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5fbm9kZXNbdGhp
cy5ub2RlSW5kZXggKyB0aGlzLl9zbmFwc2hvdC5fbm9kZU5hbWVPZmZzZXRdOwotICAgIH0sCi0K
LSAgICBnZXQgX25vZGVzKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9zbmFwc2hvdC5f
bm9kZXM7CisgICAgICAgIHZhciBzbmFwc2hvdCA9IHRoaXMuX3NuYXBzaG90OworICAgICAgICBy
ZXR1cm4gc25hcHNob3QuX25vZGVzW3RoaXMubm9kZUluZGV4ICsgc25hcHNob3QuX25vZGVOYW1l
T2Zmc2V0XTsKICAgICB9LAogCiAgICAgX2VkZ2VJbmRleGVzU3RhcnQ6IGZ1bmN0aW9uKCkKQEAg
LTU2OCwyMCArNTY3LDIyIEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlLnByb3RvdHlw
ZSA9IHsKIAogICAgIF9lZGdlSW5kZXhlc0VuZDogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAg
dmFyIG5leHROb2RlSW5kZXggPSB0aGlzLl9uZXh0Tm9kZUluZGV4OwotICAgICAgICBpZiAobmV4
dE5vZGVJbmRleCA8IHRoaXMuX3NuYXBzaG90Ll9ub2Rlcy5sZW5ndGgpCi0gICAgICAgICAgICBy
ZXR1cm4gdGhpcy5fc25hcHNob3QuX25vZGVzW25leHROb2RlSW5kZXggKyB0aGlzLl9zbmFwc2hv
dC5fZmlyc3RFZGdlSW5kZXhPZmZzZXRdCi0gICAgICAgIHJldHVybiB0aGlzLl9zbmFwc2hvdC5f
Y29udGFpbm1lbnRFZGdlcy5sZW5ndGg7CisgICAgICAgIHZhciBuZXh0Tm9kZUluZGV4ID0gdGhp
cy5fbmV4dE5vZGVJbmRleCgpOworICAgICAgICB2YXIgc25hcHNob3QgPSB0aGlzLl9zbmFwc2hv
dDsKKyAgICAgICAgaWYgKG5leHROb2RlSW5kZXggPCBzbmFwc2hvdC5fbm9kZXMubGVuZ3RoKQor
ICAgICAgICAgICAgcmV0dXJuIHNuYXBzaG90Ll9ub2Rlc1tuZXh0Tm9kZUluZGV4ICsgc25hcHNo
b3QuX2ZpcnN0RWRnZUluZGV4T2Zmc2V0XQorICAgICAgICByZXR1cm4gc25hcHNob3QuX2NvbnRh
aW5tZW50RWRnZXMubGVuZ3RoOwogICAgIH0sCiAKLSAgICBnZXQgX25leHROb2RlSW5kZXgoKQor
ICAgIF9uZXh0Tm9kZUluZGV4OiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5ub2RlSW5kZXggKyB0aGlzLl9zbmFwc2hvdC5fbm9kZUZpZWxkQ291bnQ7CiAgICAgfSwKIAog
ICAgIF90eXBlOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5fbm9kZXNb
dGhpcy5ub2RlSW5kZXggKyB0aGlzLl9zbmFwc2hvdC5fbm9kZVR5cGVPZmZzZXRdOworICAgICAg
ICB2YXIgc25hcHNob3QgPSB0aGlzLl9zbmFwc2hvdDsKKyAgICAgICAgcmV0dXJuIHNuYXBzaG90
Ll9ub2Rlc1t0aGlzLm5vZGVJbmRleCArIHNuYXBzaG90Ll9ub2RlVHlwZU9mZnNldF07CiAgICAg
fQogfTsKIApAQCAtNTkxLDYgKzU5Miw3IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2Rl
LnByb3RvdHlwZSA9IHsKIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlSXRlcmF0b3IgPSBm
dW5jdGlvbihub2RlKQogewogICAgIHRoaXMubm9kZSA9IG5vZGU7CisgICAgdGhpcy5fbm9kZXNM
ZW5ndGggPSBub2RlLl9zbmFwc2hvdC5fbm9kZXMubGVuZ3RoOwogfQogCiBXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90Tm9kZUl0ZXJhdG9yLnByb3RvdHlwZSA9IHsKQEAgLTYwMSwyNyArNjAzLDI3
IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlSXRlcmF0b3IucHJvdG90eXBlID0gewog
CiAgICAgaGFzTmV4dDogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMubm9k
ZS5ub2RlSW5kZXggPCB0aGlzLm5vZGUuX25vZGVzLmxlbmd0aDsKKyAgICAgICAgcmV0dXJuIHRo
aXMubm9kZS5ub2RlSW5kZXggPCB0aGlzLl9ub2Rlc0xlbmd0aDsKICAgICB9LAogCi0gICAgZ2V0
IGluZGV4KCkKKyAgICBpbmRleDogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRo
aXMubm9kZS5ub2RlSW5kZXg7CiAgICAgfSwKIAotICAgIHNldCBpbmRleChuZXdJbmRleCkKKyAg
ICBzZXRJbmRleDogZnVuY3Rpb24obmV3SW5kZXgpCiAgICAgewogICAgICAgICB0aGlzLm5vZGUu
bm9kZUluZGV4ID0gbmV3SW5kZXg7CiAgICAgfSwKIAotICAgIGdldCBpdGVtKCkKKyAgICBpdGVt
OiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5ub2RlOwogICAgIH0sCiAK
ICAgICBuZXh0OiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB0aGlzLm5vZGUubm9kZUluZGV4
ID0gdGhpcy5ub2RlLl9uZXh0Tm9kZUluZGV4OworICAgICAgICB0aGlzLm5vZGUubm9kZUluZGV4
ID0gdGhpcy5ub2RlLl9uZXh0Tm9kZUluZGV4KCk7CiAgICAgfQogfQogCkBAIC03OTgsMTIgKzgw
MCwxMiBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSA9IHsKICAgICAgICAg
ZGVsZXRlIHRoaXMuX2RvbWluYXRvcnNUcmVlOwogICAgIH0sCiAKLSAgICBnZXQgX2FsbE5vZGVz
KCkKKyAgICBfYWxsTm9kZXM6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcg
V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGVJdGVyYXRvcih0aGlzLnJvb3ROb2RlKTsKKyAg
ICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZUl0ZXJhdG9yKHRo
aXMucm9vdE5vZGUoKSk7CiAgICAgfSwKIAotICAgIGdldCByb290Tm9kZSgpCisgICAgcm9vdE5v
ZGU6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdE5vZGUodGhpcywgdGhpcy5fcm9vdE5vZGVJbmRleCk7CiAgICAgfSwKQEAgLTgx
NSw3ICs4MTcsNyBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSA9IHsKIAog
ICAgIGdldCB0b3RhbFNpemUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucm9vdE5vZGUu
cmV0YWluZWRTaXplOworICAgICAgICByZXR1cm4gdGhpcy5yb290Tm9kZSgpLnJldGFpbmVkU2l6
ZSgpOwogICAgIH0sCiAKICAgICBfZ2V0RG9taW5hdGVkSW5kZXg6IGZ1bmN0aW9uKG5vZGVJbmRl
eCkKQEAgLTgyOCw3ICs4MzAsNyBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlw
ZSA9IHsKICAgICBfZG9taW5hdGVkTm9kZXNPZk5vZGU6IGZ1bmN0aW9uKG5vZGUpCiAgICAgewog
ICAgICAgICB2YXIgZG9taW5hdGVkSW5kZXhGcm9tID0gdGhpcy5fZ2V0RG9taW5hdGVkSW5kZXgo
bm9kZS5ub2RlSW5kZXgpOwotICAgICAgICB2YXIgZG9taW5hdGVkSW5kZXhUbyA9IHRoaXMuX2dl
dERvbWluYXRlZEluZGV4KG5vZGUuX25leHROb2RlSW5kZXgpOworICAgICAgICB2YXIgZG9taW5h
dGVkSW5kZXhUbyA9IHRoaXMuX2dldERvbWluYXRlZEluZGV4KG5vZGUuX25leHROb2RlSW5kZXgo
KSk7CiAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEFycmF5U2xp
Y2UodGhpcy5fZG9taW5hdGVkTm9kZXMsIGRvbWluYXRlZEluZGV4RnJvbSwgZG9taW5hdGVkSW5k
ZXhUbyk7CiAgICAgfSwKIApAQCAtODg5LDggKzg5MSw4IEBAIFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3QucHJvdG90eXBlID0gewogICAgICAgICAgICAgdmFyIHNlbGZTaXplcyA9IG5ldyBBcnJh
eShpbmRleGVzLmxlbmd0aCk7CiAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGluZGV4
ZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICBub2RlLm5vZGVJbmRleCA9IGluZGV4
ZXNbaV07Ci0gICAgICAgICAgICAgICAgaWRzW2ldID0gbm9kZS5pZDsKLSAgICAgICAgICAgICAg
ICBzZWxmU2l6ZXNbaV0gPSBub2RlLnNlbGZTaXplOworICAgICAgICAgICAgICAgIGlkc1tpXSA9
IG5vZGUuaWQoKTsKKyAgICAgICAgICAgICAgICBzZWxmU2l6ZXNbaV0gPSBub2RlLnNlbGZTaXpl
KCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHRoaXMuX2FnZ3JlZ2F0ZXNGb3JEaWZm
W2NsYXNzTmFtZV0gPSB7CkBAIC05MDksOSArOTExLDkgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgLy8gYmZzIGZvciBXaW5kb3cgcm9vdHMKICAg
ICAgICAgdmFyIGxpc3QgPSBbXTsKLSAgICAgICAgZm9yICh2YXIgaXRlciA9IHRoaXMucm9vdE5v
ZGUuZWRnZXM7IGl0ZXIuaGFzTmV4dCgpOyBpdGVyLm5leHQoKSkgewotICAgICAgICAgICAgdmFy
IG5vZGUgPSBpdGVyLmVkZ2Uubm9kZTsKLSAgICAgICAgICAgIGlmIChub2RlLmlzV2luZG93KSB7
CisgICAgICAgIGZvciAodmFyIGl0ZXIgPSB0aGlzLnJvb3ROb2RlKCkuZWRnZXMoKTsgaXRlci5o
YXNOZXh0KCk7IGl0ZXIubmV4dCgpKSB7CisgICAgICAgICAgICB2YXIgbm9kZSA9IGl0ZXIuZWRn
ZS5ub2RlKCk7CisgICAgICAgICAgICBpZiAobm9kZS5pc1dpbmRvdygpKSB7CiAgICAgICAgICAg
ICAgICAgbGlzdC5wdXNoKG5vZGUubm9kZUluZGV4KTsKICAgICAgICAgICAgICAgICBkaXN0YW5j
ZXNbbm9kZS5ub2RlSW5kZXggLyBub2RlRmllbGRDb3VudF0gPSAwOwogICAgICAgICAgICAgfQpA
QCAtOTg1LDcgKzk4Nyw3IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgdmFyIGNsYXNzSW5kZXgg
PSBub2RlLmNsYXNzSW5kZXgoKTsKICAgICAgICAgICAgIGlmICghKGNsYXNzSW5kZXggaW4gYWdn
cmVnYXRlcykpIHsKLSAgICAgICAgICAgICAgICB2YXIgbm9kZVR5cGUgPSBub2RlLnR5cGU7Cisg
ICAgICAgICAgICAgICAgdmFyIG5vZGVUeXBlID0gbm9kZS50eXBlKCk7CiAgICAgICAgICAgICAg
ICAgdmFyIG5hbWVNYXR0ZXJzID0gbm9kZVR5cGUgPT09ICJvYmplY3QiIHx8IG5vZGVUeXBlID09
PSAibmF0aXZlIjsKICAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSB7CiAgICAgICAgICAgICAg
ICAgICAgIGNvdW50OiAxLApAQCAtOTkzLDEyICs5OTUsMTIgQEAgV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgICAgIHNlbGY6IHNlbGZTaXpl
LAogICAgICAgICAgICAgICAgICAgICBtYXhSZXQ6IDAsCiAgICAgICAgICAgICAgICAgICAgIHR5
cGU6IG5vZGVUeXBlLAotICAgICAgICAgICAgICAgICAgICBuYW1lOiBuYW1lTWF0dGVycyA/IG5v
ZGUubmFtZSA6IG51bGwsCisgICAgICAgICAgICAgICAgICAgIG5hbWU6IG5hbWVNYXR0ZXJzID8g
bm9kZS5uYW1lKCkgOiBudWxsLAogICAgICAgICAgICAgICAgICAgICBpZHhzOiBbbm9kZUluZGV4
XQogICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgYWdncmVnYXRlc1tjbGFzc0lu
ZGV4XSA9IHZhbHVlOwogICAgICAgICAgICAgICAgIGNsYXNzSW5kZXhlcy5wdXNoKGNsYXNzSW5k
ZXgpOwotICAgICAgICAgICAgICAgIGFnZ3JlZ2F0ZXNCeUNsYXNzTmFtZVtub2RlLmNsYXNzTmFt
ZV0gPSB2YWx1ZTsKKyAgICAgICAgICAgICAgICBhZ2dyZWdhdGVzQnlDbGFzc05hbWVbbm9kZS5j
bGFzc05hbWUoKV0gPSB2YWx1ZTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAg
ICAgdmFyIGNsc3MgPSBhZ2dyZWdhdGVzW2NsYXNzSW5kZXhdOwogICAgICAgICAgICAgICAgIGNs
c3MuZGlzdGFuY2VUb1dpbmRvdyA9IE1hdGgubWluKGNsc3MuZGlzdGFuY2VUb1dpbmRvdywgZGlz
dGFuY2VzVG9XaW5kb3dbbm9kZU9yZGluYWxdKTsKQEAgLTEwNDIsOSArMTA0NCw5IEBAIFdlYklu
c3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlID0gewogCiAgICAgICAgICAgICBpZiAoIXNl
ZW4gJiYKICAgICAgICAgICAgICAgICAoIWZpbHRlciB8fCBmaWx0ZXIobm9kZSkpICYmCi0gICAg
ICAgICAgICAgICAgKG5vZGUuc2VsZlNpemUgfHwgbm9kZXNbbm9kZUluZGV4ICsgbm9kZVR5cGVP
ZmZzZXRdID09PSBub2RlTmF0aXZlVHlwZSkKKyAgICAgICAgICAgICAgICAobm9kZS5zZWxmU2l6
ZSgpIHx8IG5vZGVzW25vZGVJbmRleCArIG5vZGVUeXBlT2Zmc2V0XSA9PT0gbm9kZU5hdGl2ZVR5
cGUpCiAgICAgICAgICAgICAgICApIHsKLSAgICAgICAgICAgICAgICBhZ2dyZWdhdGVzW2NsYXNz
SW5kZXhdLm1heFJldCArPSBub2RlLnJldGFpbmVkU2l6ZTsKKyAgICAgICAgICAgICAgICBhZ2dy
ZWdhdGVzW2NsYXNzSW5kZXhdLm1heFJldCArPSBub2RlLnJldGFpbmVkU2l6ZSgpOwogICAgICAg
ICAgICAgICAgIGlmIChkb21pbmF0ZWRJbmRleEZyb20gIT09IGRvbWluYXRlZEluZGV4VG8pIHsK
ICAgICAgICAgICAgICAgICAgICAgc2VlbkNsYXNzTmFtZUluZGV4ZXNbY2xhc3NJbmRleF0gPSB0
cnVlOwogICAgICAgICAgICAgICAgICAgICBzaXplcy5wdXNoKGxpc3QubGVuZ3RoKTsKQEAgLTEw
NzIsNyArMTA3NCw3IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGlkeEEsIGlkeEIpIHsKICAgICAgICAgICAgICAgICAg
ICAgbm9kZUEubm9kZUluZGV4ID0gaWR4QTsKICAgICAgICAgICAgICAgICAgICAgbm9kZUIubm9k
ZUluZGV4ID0gaWR4QjsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGVBLmlkIDwgbm9k
ZUIuaWQgPyAtMSA6IDE7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBub2RlQS5pZCgpIDwg
bm9kZUIuaWQoKSA/IC0xIDogMTsKICAgICAgICAgICAgICAgICB9KTsKICAgICB9LAogCkBAIC0x
MzMwLDIzICsxMzMyLDIzIEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlID0g
ewogICAgICAgICAvLyBNYXJrIGhpZGRlbiBlZGdlcyBvZiBnbG9iYWwgb2JqZWN0cyBhcyBpbnZp
c2libGUuCiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgdGVtcG9yYXJ5IG1lYXN1cmUuIE5v
cm1hbGx5LCB3ZSBzaG91bGQKICAgICAgICAgLy8gcmVhbGx5IGhpZGUgYWxsIGhpZGRlbiBub2Rl
cy4KLSAgICAgICAgZm9yICh2YXIgaXRlciA9IHRoaXMucm9vdE5vZGUuZWRnZXM7IGl0ZXIuaGFz
TmV4dCgpOyBpdGVyLm5leHQoKSkgeworICAgICAgICBmb3IgKHZhciBpdGVyID0gdGhpcy5yb290
Tm9kZSgpLmVkZ2VzKCk7IGl0ZXIuaGFzTmV4dCgpOyBpdGVyLm5leHQoKSkgewogICAgICAgICAg
ICAgdmFyIGVkZ2UgPSBpdGVyLmVkZ2U7Ci0gICAgICAgICAgICBpZiAoIWVkZ2UuaXNTaG9ydGN1
dCkKKyAgICAgICAgICAgIGlmICghZWRnZS5pc1Nob3J0Y3V0KCkpCiAgICAgICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgICAgICB2YXIgbm9kZSA9IGVkZ2Uubm9kZTsKKyAgICAgICAgICAg
IHZhciBub2RlID0gZWRnZS5ub2RlKCk7CiAgICAgICAgICAgICB2YXIgcHJvcE5hbWVzID0ge307
Ci0gICAgICAgICAgICBmb3IgKHZhciBpbm5lckl0ZXIgPSBub2RlLmVkZ2VzOyBpbm5lckl0ZXIu
aGFzTmV4dCgpOyBpbm5lckl0ZXIubmV4dCgpKSB7CisgICAgICAgICAgICBmb3IgKHZhciBpbm5l
ckl0ZXIgPSBub2RlLmVkZ2VzKCk7IGlubmVySXRlci5oYXNOZXh0KCk7IGlubmVySXRlci5uZXh0
KCkpIHsKICAgICAgICAgICAgICAgICB2YXIgZ2xvYmFsT2JqRWRnZSA9IGlubmVySXRlci5lZGdl
OwotICAgICAgICAgICAgICAgIGlmIChnbG9iYWxPYmpFZGdlLmlzU2hvcnRjdXQpCi0gICAgICAg
ICAgICAgICAgICAgIHByb3BOYW1lc1tnbG9iYWxPYmpFZGdlLl9uYW1lT3JJbmRleF0gPSB0cnVl
OworICAgICAgICAgICAgICAgIGlmIChnbG9iYWxPYmpFZGdlLmlzU2hvcnRjdXQoKSkKKyAgICAg
ICAgICAgICAgICAgICAgcHJvcE5hbWVzW2dsb2JhbE9iakVkZ2UuX25hbWVPckluZGV4KCldID0g
dHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZvciAoaW5uZXJJdGVyLmZpcnN0KCk7
IGlubmVySXRlci5oYXNOZXh0KCk7IGlubmVySXRlci5uZXh0KCkpIHsKICAgICAgICAgICAgICAg
ICB2YXIgZ2xvYmFsT2JqRWRnZSA9IGlubmVySXRlci5lZGdlOwotICAgICAgICAgICAgICAgIGlm
ICghZ2xvYmFsT2JqRWRnZS5pc1Nob3J0Y3V0Ci0gICAgICAgICAgICAgICAgICAgICYmIGdsb2Jh
bE9iakVkZ2Uubm9kZS5pc0hpZGRlbgotICAgICAgICAgICAgICAgICAgICAmJiBnbG9iYWxPYmpF
ZGdlLl9oYXNTdHJpbmdOYW1lCi0gICAgICAgICAgICAgICAgICAgICYmIChnbG9iYWxPYmpFZGdl
Ll9uYW1lT3JJbmRleCBpbiBwcm9wTmFtZXMpKQorICAgICAgICAgICAgICAgIGlmICghZ2xvYmFs
T2JqRWRnZS5pc1Nob3J0Y3V0KCkKKyAgICAgICAgICAgICAgICAgICAgJiYgZ2xvYmFsT2JqRWRn
ZS5ub2RlKCkuaXNIaWRkZW4oKQorICAgICAgICAgICAgICAgICAgICAmJiBnbG9iYWxPYmpFZGdl
Ll9oYXNTdHJpbmdOYW1lKCkKKyAgICAgICAgICAgICAgICAgICAgJiYgKGdsb2JhbE9iakVkZ2Uu
X25hbWVPckluZGV4KCkgaW4gcHJvcE5hbWVzKSkKICAgICAgICAgICAgICAgICAgICAgdGhpcy5f
Y29udGFpbm1lbnRFZGdlc1tnbG9iYWxPYmpFZGdlLl9lZGdlcy5fc3RhcnQgKyBnbG9iYWxPYmpF
ZGdlLmVkZ2VJbmRleCArIHRoaXMuX2VkZ2VUeXBlT2Zmc2V0XSA9IHRoaXMuX2VkZ2VJbnZpc2li
bGVUeXBlOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xMzYxLDkgKzEzNjMsOSBAQCBX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIHZh
ciBmbGFnID0gdGhpcy5fbm9kZUZsYWdzLmRldGFjaGVkRE9NVHJlZU5vZGU7CiAgICAgICAgIHZh
ciBkZXRhY2hlZERPTVRyZWVzUm9vdDsKLSAgICAgICAgZm9yICh2YXIgaXRlciA9IHRoaXMucm9v
dE5vZGUuZWRnZXM7IGl0ZXIuaGFzTmV4dCgpOyBpdGVyLm5leHQoKSkgewotICAgICAgICAgICAg
dmFyIG5vZGUgPSBpdGVyLmVkZ2Uubm9kZTsKLSAgICAgICAgICAgIGlmIChub2RlLmlzRGV0YWNo
ZWRET01UcmVlc1Jvb3QpIHsKKyAgICAgICAgZm9yICh2YXIgaXRlciA9IHRoaXMucm9vdE5vZGUo
KS5lZGdlcygpOyBpdGVyLmhhc05leHQoKTsgaXRlci5uZXh0KCkpIHsKKyAgICAgICAgICAgIHZh
ciBub2RlID0gaXRlci5lZGdlLm5vZGUoKTsKKyAgICAgICAgICAgIGlmIChub2RlLmlzRGV0YWNo
ZWRET01UcmVlc1Jvb3QoKSkgewogICAgICAgICAgICAgICAgIGRldGFjaGVkRE9NVHJlZXNSb290
ID0gbm9kZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTEzNzIs
MTEgKzEzNzQsMTEgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIGlmICghZGV0YWNoZWRET01UcmVlc1Jvb3QpCiAgICAgICAgICAgICByZXR1cm47CiAK
LSAgICAgICAgZm9yICh2YXIgaXRlciA9IGRldGFjaGVkRE9NVHJlZXNSb290LmVkZ2VzOyBpdGVy
Lmhhc05leHQoKTsgaXRlci5uZXh0KCkpIHsKLSAgICAgICAgICAgIHZhciBub2RlID0gaXRlci5l
ZGdlLm5vZGU7Ci0gICAgICAgICAgICBpZiAobm9kZS5pc0RldGFjaGVkRE9NVHJlZSkgewotICAg
ICAgICAgICAgICAgIGZvciAodmFyIGVkZ2VzSXRlciA9IG5vZGUuZWRnZXM7IGVkZ2VzSXRlci5o
YXNOZXh0KCk7IGVkZ2VzSXRlci5uZXh0KCkpCi0gICAgICAgICAgICAgICAgICAgIHRoaXMuX2Zs
YWdzW2VkZ2VzSXRlci5lZGdlLm5vZGUubm9kZUluZGV4IC8gdGhpcy5fbm9kZUZpZWxkQ291bnRd
IHw9IGZsYWc7CisgICAgICAgIGZvciAodmFyIGl0ZXIgPSBkZXRhY2hlZERPTVRyZWVzUm9vdC5l
ZGdlcygpOyBpdGVyLmhhc05leHQoKTsgaXRlci5uZXh0KCkpIHsKKyAgICAgICAgICAgIHZhciBu
b2RlID0gaXRlci5lZGdlLm5vZGUoKTsKKyAgICAgICAgICAgIGlmIChub2RlLmlzRGV0YWNoZWRE
T01UcmVlKCkpIHsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBlZGdlc0l0ZXIgPSBub2RlLmVk
Z2VzKCk7IGVkZ2VzSXRlci5oYXNOZXh0KCk7IGVkZ2VzSXRlci5uZXh0KCkpCisgICAgICAgICAg
ICAgICAgICAgIHRoaXMuX2ZsYWdzW2VkZ2VzSXRlci5lZGdlLm5vZGUoKS5ub2RlSW5kZXggLyB0
aGlzLl9ub2RlRmllbGRDb3VudF0gfD0gZmxhZzsKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgIH0sCkBAIC0xNDU4LDkgKzE0NjAsOSBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGZsYWdzID0gdGhpcy5fZmxhZ3M7CiAgICAgICAgIHZh
ciBsaXN0ID0gW107CiAKLSAgICAgICAgZm9yICh2YXIgaXRlciA9IHRoaXMucm9vdE5vZGUuZWRn
ZXM7IGl0ZXIuaGFzTmV4dCgpOyBpdGVyLm5leHQoKSkgewotICAgICAgICAgICAgaWYgKGl0ZXIu
ZWRnZS5ub2RlLmlzV2luZG93KQotICAgICAgICAgICAgICAgIGxpc3QucHVzaChpdGVyLmVkZ2Uu
bm9kZS5ub2RlSW5kZXgpOworICAgICAgICBmb3IgKHZhciBpdGVyID0gdGhpcy5yb290Tm9kZSgp
LmVkZ2VzKCk7IGl0ZXIuaGFzTmV4dCgpOyBpdGVyLm5leHQoKSkgeworICAgICAgICAgICAgaWYg
KGl0ZXIuZWRnZS5ub2RlKCkuaXNXaW5kb3coKSkKKyAgICAgICAgICAgICAgICBsaXN0LnB1c2go
aXRlci5lZGdlLm5vZGUoKS5ub2RlSW5kZXgpOwogICAgICAgICB9CiAKICAgICAgICAgd2hpbGUg
KGxpc3QubGVuZ3RoKSB7CkBAIC0xNTM4LDE3ICsxNTQwLDE3IEBAIFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3QucHJvdG90eXBlID0gewogICAgICAgICB2YXIgbm9kZUIgPSBuZXcgV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdE5vZGUodGhpcywgaW5kZXhlc1tqXSk7CiAgICAgICAgIHdoaWxlIChp
IDwgbCAmJiBqIDwgbSkgewogICAgICAgICAgICAgdmFyIG5vZGVBSWQgPSBiYXNlSWRzW2ldOwot
ICAgICAgICAgICAgaWYgKG5vZGVBSWQgPCBub2RlQi5pZCkgeworICAgICAgICAgICAgaWYgKG5v
ZGVBSWQgPCBub2RlQi5pZCgpKSB7CiAgICAgICAgICAgICAgICAgZGlmZi5kZWxldGVkSW5kZXhl
cy5wdXNoKGJhc2VJbmRleGVzW2ldKTsKICAgICAgICAgICAgICAgICBkaWZmLnJlbW92ZWRDb3Vu
dCsrOwogICAgICAgICAgICAgICAgIGRpZmYucmVtb3ZlZFNpemUgKz0gYmFzZVNlbGZTaXplc1tp
XTsKICAgICAgICAgICAgICAgICArK2k7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKG5vZGVBSWQg
PiBub2RlQi5pZCkgeyAvLyBOYXRpdmUgbm9kZXMoZS5nLiBkb20gZ3JvdXBzKSBtYXkgaGF2ZSBp
ZHMgbGVzcyB0aGFuIG1heCBKUyBvYmplY3QgaWQgaW4gdGhlIGJhc2Ugc25hcHNob3QKKyAgICAg
ICAgICAgIH0gZWxzZSBpZiAobm9kZUFJZCA+IG5vZGVCLmlkKCkpIHsgLy8gTmF0aXZlIG5vZGVz
KGUuZy4gZG9tIGdyb3VwcykgbWF5IGhhdmUgaWRzIGxlc3MgdGhhbiBtYXggSlMgb2JqZWN0IGlk
IGluIHRoZSBiYXNlIHNuYXBzaG90CiAgICAgICAgICAgICAgICAgZGlmZi5hZGRlZEluZGV4ZXMu
cHVzaChpbmRleGVzW2pdKTsKICAgICAgICAgICAgICAgICBkaWZmLmFkZGVkQ291bnQrKzsKLSAg
ICAgICAgICAgICAgICBkaWZmLmFkZGVkU2l6ZSArPSBub2RlQi5zZWxmU2l6ZTsKKyAgICAgICAg
ICAgICAgICBkaWZmLmFkZGVkU2l6ZSArPSBub2RlQi5zZWxmU2l6ZSgpOwogICAgICAgICAgICAg
ICAgIG5vZGVCLm5vZGVJbmRleCA9IGluZGV4ZXNbKytqXTsKLSAgICAgICAgICAgIH0gZWxzZSB7
IC8vIG5vZGVBSWQgPT09IG5vZGVCLmlkCisgICAgICAgICAgICB9IGVsc2UgeyAvLyBub2RlQUlk
ID09PSBub2RlQi5pZCgpCiAgICAgICAgICAgICAgICAgKytpOwogICAgICAgICAgICAgICAgIG5v
ZGVCLm5vZGVJbmRleCA9IGluZGV4ZXNbKytqXTsKICAgICAgICAgICAgIH0KQEAgLTE1NjIsNyAr
MTU2NCw3IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlID0gewogICAgICAg
ICB3aGlsZSAoaiA8IG0pIHsKICAgICAgICAgICAgIGRpZmYuYWRkZWRJbmRleGVzLnB1c2goaW5k
ZXhlc1tqXSk7CiAgICAgICAgICAgICBkaWZmLmFkZGVkQ291bnQrKzsKLSAgICAgICAgICAgIGRp
ZmYuYWRkZWRTaXplICs9IG5vZGVCLnNlbGZTaXplOworICAgICAgICAgICAgZGlmZi5hZGRlZFNp
emUgKz0gbm9kZUIuc2VsZlNpemUoKTsKICAgICAgICAgICAgIG5vZGVCLm5vZGVJbmRleCA9IGlu
ZGV4ZXNbKytqXTsKICAgICAgICAgfQogICAgICAgICBkaWZmLmNvdW50RGVsdGEgPSBkaWZmLmFk
ZGVkQ291bnQgLSBkaWZmLnJlbW92ZWRDb3VudDsKQEAgLTE1NzQsOCArMTU3Niw4IEBAIFdlYklu
c3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlID0gewogCiAgICAgX25vZGVGb3JTbmFwc2hv
dE9iamVjdElkOiBmdW5jdGlvbihzbmFwc2hvdE9iamVjdElkKQogICAgIHsKLSAgICAgICAgZm9y
ICh2YXIgaXQgPSB0aGlzLl9hbGxOb2RlczsgaXQuaGFzTmV4dCgpOyBpdC5uZXh0KCkpIHsKLSAg
ICAgICAgICAgIGlmIChpdC5ub2RlLmlkID09PSBzbmFwc2hvdE9iamVjdElkKQorICAgICAgICBm
b3IgKHZhciBpdCA9IHRoaXMuX2FsbE5vZGVzKCk7IGl0Lmhhc05leHQoKTsgaXQubmV4dCgpKSB7
CisgICAgICAgICAgICBpZiAoaXQubm9kZS5pZCgpID09PSBzbmFwc2hvdE9iamVjdElkKQogICAg
ICAgICAgICAgICAgIHJldHVybiBpdC5ub2RlOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBu
dWxsOwpAQCAtMTU4NSw3ICsxNTg3LDcgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90
b3R5cGUgPSB7CiAgICAgewogICAgICAgICB2YXIgbm9kZSA9IHRoaXMuX25vZGVGb3JTbmFwc2hv
dE9iamVjdElkKHNuYXBzaG90T2JqZWN0SWQpOwogICAgICAgICBpZiAobm9kZSkKLSAgICAgICAg
ICAgIHJldHVybiBub2RlLmNsYXNzTmFtZTsKKyAgICAgICAgICAgIHJldHVybiBub2RlLmNsYXNz
TmFtZSgpOwogICAgICAgICByZXR1cm4gbnVsbDsKICAgICB9LAogCkBAIC0xNTk1LDkgKzE1OTcs
OSBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYg
KCFub2RlKQogICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgIHZhciByZXN1bHQgPSBb
XTsKLSAgICAgICAgd2hpbGUgKCFub2RlLmlzUm9vdCkgewotICAgICAgICAgICAgcmVzdWx0LnB1
c2gobm9kZS5pZCk7Ci0gICAgICAgICAgICBub2RlLm5vZGVJbmRleCA9IG5vZGUuZG9taW5hdG9y
SW5kZXg7CisgICAgICAgIHdoaWxlICghbm9kZS5pc1Jvb3QoKSkgeworICAgICAgICAgICAgcmVz
dWx0LnB1c2gobm9kZS5pZCgpKTsKKyAgICAgICAgICAgIG5vZGUubm9kZUluZGV4ID0gbm9kZS5k
b21pbmF0b3JJbmRleCgpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
fSwKQEAgLTE2MTMsMTMgKzE2MTUsMTMgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90
b3R5cGUgPSB7CiAgICAgY3JlYXRlRWRnZXNQcm92aWRlcjogZnVuY3Rpb24obm9kZUluZGV4LCBm
aWx0ZXIpCiAgICAgewogICAgICAgICB2YXIgbm9kZSA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90Tm9kZSh0aGlzLCBub2RlSW5kZXgpOwotICAgICAgICByZXR1cm4gbmV3IFdlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3RFZGdlc1Byb3ZpZGVyKHRoaXMsIHRoaXMuX3BhcnNlRmlsdGVyKGZp
bHRlciksIG5vZGUuZWRnZXMpOworICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3RFZGdlc1Byb3ZpZGVyKHRoaXMsIHRoaXMuX3BhcnNlRmlsdGVyKGZpbHRlciksIG5v
ZGUuZWRnZXMoKSk7CiAgICAgfSwKIAogICAgIGNyZWF0ZVJldGFpbmluZ0VkZ2VzUHJvdmlkZXI6
IGZ1bmN0aW9uKG5vZGVJbmRleCwgZmlsdGVyKQogICAgIHsKICAgICAgICAgdmFyIG5vZGUgPSBu
ZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGUodGhpcywgbm9kZUluZGV4KTsKLSAgICAg
ICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RWRnZXNQcm92aWRlcih0aGlz
LCB0aGlzLl9wYXJzZUZpbHRlcihmaWx0ZXIpLCBub2RlLnJldGFpbmVycyk7CisgICAgICAgIHJl
dHVybiBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEVkZ2VzUHJvdmlkZXIodGhpcywgdGhp
cy5fcGFyc2VGaWx0ZXIoZmlsdGVyKSwgbm9kZS5yZXRhaW5lcnMoKSk7CiAgICAgfSwKIAogICAg
IGNyZWF0ZUFkZGVkTm9kZXNQcm92aWRlcjogZnVuY3Rpb24oYmFzZVNuYXBzaG90SWQsIGNsYXNz
TmFtZSkKQEAgLTE2ODAsMTkgKzE2ODIsMTkgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEZp
bHRlcmVkT3JkZXJlZEl0ZXJhdG9yLnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGl0ZXJhdG9y
ID0gdGhpcy5faXRlcmF0b3I7CiAgICAgICAgIGlmICghdGhpcy5fdW5maWx0ZXJlZEl0ZXJhdGlv
bk9yZGVyICYmICF0aGlzLl9maWx0ZXIpIHsKICAgICAgICAgICAgIGZvciAoaXRlcmF0b3IuZmly
c3QoKTsgaXRlcmF0b3IuaGFzTmV4dCgpOyBpdGVyYXRvci5uZXh0KCkpCi0gICAgICAgICAgICAg
ICAgdGhpcy5faXRlcmF0aW9uT3JkZXIucHVzaChpdGVyYXRvci5pbmRleCk7CisgICAgICAgICAg
ICAgICAgdGhpcy5faXRlcmF0aW9uT3JkZXIucHVzaChpdGVyYXRvci5pbmRleCgpKTsKICAgICAg
ICAgfSBlbHNlIGlmICghdGhpcy5fdW5maWx0ZXJlZEl0ZXJhdGlvbk9yZGVyKSB7CiAgICAgICAg
ICAgICBmb3IgKGl0ZXJhdG9yLmZpcnN0KCk7IGl0ZXJhdG9yLmhhc05leHQoKTsgaXRlcmF0b3Iu
bmV4dCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHRoaXMuX2ZpbHRlcihpdGVyYXRvci5pdGVt
KSkKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5faXRlcmF0aW9uT3JkZXIucHVzaChpdGVyYXRv
ci5pbmRleCk7CisgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2ZpbHRlcihpdGVyYXRvci5pdGVt
KCkpKQorICAgICAgICAgICAgICAgICAgICB0aGlzLl9pdGVyYXRpb25PcmRlci5wdXNoKGl0ZXJh
dG9yLmluZGV4KCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgdmFyIG9yZGVyID0gdGhpcy5fdW5maWx0ZXJlZEl0ZXJhdGlvbk9yZGVyLmNvbnN0cnVjdG9y
ID09PSBBcnJheSA/CiAgICAgICAgICAgICAgICAgdGhpcy5fdW5maWx0ZXJlZEl0ZXJhdGlvbk9y
ZGVyIDogdGhpcy5fdW5maWx0ZXJlZEl0ZXJhdGlvbk9yZGVyLnNsaWNlKDApOwogICAgICAgICAg
ICAgZm9yICh2YXIgaSA9IDAsIGwgPSBvcmRlci5sZW5ndGg7IGkgPCBsOyArK2kpIHsKLSAgICAg
ICAgICAgICAgICBpdGVyYXRvci5pbmRleCA9IG9yZGVyW2ldOwotICAgICAgICAgICAgICAgIGlm
ICh0aGlzLl9maWx0ZXIoaXRlcmF0b3IuaXRlbSkpCi0gICAgICAgICAgICAgICAgICAgIHRoaXMu
X2l0ZXJhdGlvbk9yZGVyLnB1c2goaXRlcmF0b3IuaW5kZXgpOworICAgICAgICAgICAgICAgIGl0
ZXJhdG9yLnNldEluZGV4KG9yZGVyW2ldKTsKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5fZmls
dGVyKGl0ZXJhdG9yLml0ZW0oKSkpCisgICAgICAgICAgICAgICAgICAgIHRoaXMuX2l0ZXJhdGlv
bk9yZGVyLnB1c2goaXRlcmF0b3IuaW5kZXgoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICB0aGlzLl91bmZpbHRlcmVkSXRlcmF0aW9uT3JkZXIgPSBudWxsOwogICAgICAgICB9CkBAIC0x
NzA4LDcgKzE3MTAsNyBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RmlsdGVyZWRPcmRlcmVk
SXRlcmF0b3IucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhpcy5fcG9zaXRpb24gPCB0
aGlzLl9pdGVyYXRpb25PcmRlci5sZW5ndGg7CiAgICAgfSwKIAotICAgIGdldCBpc0VtcHR5KCkK
KyAgICBpc0VtcHR5OiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICBpZiAodGhpcy5faXRlcmF0
aW9uT3JkZXIpCiAgICAgICAgICAgICByZXR1cm4gIXRoaXMuX2l0ZXJhdGlvbk9yZGVyLmxlbmd0
aDsKQEAgLTE3MjAsMjQgKzE3MjIsMjQgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEZpbHRl
cmVkT3JkZXJlZEl0ZXJhdG9yLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiAhaXRl
cmF0b3IuaGFzTmV4dCgpOwogICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLl91bmZpbHRlcmVkSXRl
cmF0aW9uT3JkZXIpIHsKICAgICAgICAgICAgIGZvciAoaXRlcmF0b3IuZmlyc3QoKTsgaXRlcmF0
b3IuaGFzTmV4dCgpOyBpdGVyYXRvci5uZXh0KCkpCi0gICAgICAgICAgICAgICAgaWYgKHRoaXMu
X2ZpbHRlcihpdGVyYXRvci5pdGVtKSkKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5fZmlsdGVy
KGl0ZXJhdG9yLml0ZW0oKSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHZhciBvcmRlciA9IHRoaXMuX3VuZmlsdGVyZWRJ
dGVyYXRpb25PcmRlci5jb25zdHJ1Y3RvciA9PT0gQXJyYXkgPwogICAgICAgICAgICAgICAgIHRo
aXMuX3VuZmlsdGVyZWRJdGVyYXRpb25PcmRlciA6IHRoaXMuX3VuZmlsdGVyZWRJdGVyYXRpb25P
cmRlci5zbGljZSgwKTsKICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gb3JkZXIubGVu
Z3RoOyBpIDwgbDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgaXRlcmF0b3IuaW5kZXggPSBvcmRl
cltpXTsKLSAgICAgICAgICAgICAgICBpZiAodGhpcy5fZmlsdGVyKGl0ZXJhdG9yLml0ZW0pKQor
ICAgICAgICAgICAgICAgIGl0ZXJhdG9yLnNldEluZGV4KG9yZGVyW2ldKTsKKyAgICAgICAgICAg
ICAgICBpZiAodGhpcy5fZmlsdGVyKGl0ZXJhdG9yLml0ZW0oKSkpCiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9LAogCi0gICAgZ2V0IGl0ZW0oKQorICAgIGl0ZW06IGZ1bmN0aW9uKCkK
ICAgICB7Ci0gICAgICAgIHRoaXMuX2l0ZXJhdG9yLmluZGV4ID0gdGhpcy5faXRlcmF0aW9uT3Jk
ZXJbdGhpcy5fcG9zaXRpb25dOwotICAgICAgICByZXR1cm4gdGhpcy5faXRlcmF0b3IuaXRlbTsK
KyAgICAgICAgdGhpcy5faXRlcmF0b3Iuc2V0SW5kZXgodGhpcy5faXRlcmF0aW9uT3JkZXJbdGhp
cy5fcG9zaXRpb25dKTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2l0ZXJhdG9yLml0ZW0oKTsKICAg
ICB9LAogCiAgICAgZ2V0IGxlbmd0aCgpCkBAIC0xNzcyLDcgKzE3NzQsNyBAQCBXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90RmlsdGVyZWRPcmRlcmVkSXRlcmF0b3IucHJvdG90eXBlID0gewogICAg
ICAgICB2YXIgY291bnQgPSBlbmQgLSBiZWdpbjsKICAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBB
cnJheShjb3VudCk7CiAgICAgICAgIGZvciAodmFyIGkgPSAwIDsgaSA8IGNvdW50ICYmIHRoaXMu
aGFzTmV4dCgpOyArK2ksIHRoaXMubmV4dCgpKQotICAgICAgICAgICAgcmVzdWx0W2ldID0gdGhp
cy5zZXJpYWxpemVJdGVtKHRoaXMuaXRlbSk7CisgICAgICAgICAgICByZXN1bHRbaV0gPSB0aGlz
LnNlcmlhbGl6ZUl0ZW0odGhpcy5pdGVtKCkpOwogICAgICAgICByZXN1bHQubGVuZ3RoID0gaTsK
ICAgICAgICAgcmVzdWx0LnRvdGFsTGVuZ3RoID0gdGhpcy5faXRlcmF0aW9uT3JkZXIubGVuZ3Ro
OwogCkBAIC0xODE3LDEyICsxODE5LDEyIEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RFZGdl
c1Byb3ZpZGVyLnByb3RvdHlwZSA9IHsKICAgICBzZXJpYWxpemVJdGVtOiBmdW5jdGlvbihlZGdl
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgIG5hbWU6IGVkZ2UubmFtZSwK
KyAgICAgICAgICAgIG5hbWU6IGVkZ2UubmFtZSgpLAogICAgICAgICAgICAgcHJvcGVydHlBY2Nl
c3NvcjogZWRnZS50b1N0cmluZygpLAotICAgICAgICAgICAgbm9kZTogV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdE5vZGVzUHJvdmlkZXIucHJvdG90eXBlLnNlcmlhbGl6ZUl0ZW0oZWRnZS5ub2Rl
KSwKLSAgICAgICAgICAgIG5vZGVJbmRleDogZWRnZS5ub2RlSW5kZXgsCi0gICAgICAgICAgICB0
eXBlOiBlZGdlLnR5cGUsCi0gICAgICAgICAgICBkaXN0YW5jZVRvV2luZG93OiBlZGdlLm5vZGUu
ZGlzdGFuY2VUb1dpbmRvdworICAgICAgICAgICAgbm9kZTogV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdE5vZGVzUHJvdmlkZXIucHJvdG90eXBlLnNlcmlhbGl6ZUl0ZW0oZWRnZS5ub2RlKCkpLAor
ICAgICAgICAgICAgbm9kZUluZGV4OiBlZGdlLm5vZGVJbmRleCgpLAorICAgICAgICAgICAgdHlw
ZTogZWRnZS50eXBlKCksCisgICAgICAgICAgICBkaXN0YW5jZVRvV2luZG93OiBlZGdlLm5vZGUo
KS5kaXN0YW5jZVRvV2luZG93KCkKICAgICAgICAgfTsKICAgICB9LAogCkBAIC0xODMzLDcgKzE4
MzUsNyBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RWRnZXNQcm92aWRlci5wcm90b3R5cGUg
PSB7CiAgICAgICAgIHZhciBhc2NlbmRpbmcxID0gY29tcGFyYXRvci5hc2NlbmRpbmcxOwogICAg
ICAgICB2YXIgYXNjZW5kaW5nMiA9IGNvbXBhcmF0b3IuYXNjZW5kaW5nMjsKIAotICAgICAgICB2
YXIgZWRnZUEgPSB0aGlzLl9pdGVyYXRvci5pdGVtLmNsb25lKCk7CisgICAgICAgIHZhciBlZGdl
QSA9IHRoaXMuX2l0ZXJhdG9yLml0ZW0oKS5jbG9uZSgpOwogICAgICAgICB2YXIgZWRnZUIgPSBl
ZGdlQS5jbG9uZSgpOwogICAgICAgICB2YXIgbm9kZUEgPSBuZXcgV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdE5vZGUodGhpcy5zbmFwc2hvdCk7CiAgICAgICAgIHZhciBub2RlQiA9IG5ldyBXZWJJ
bnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZSh0aGlzLnNuYXBzaG90KTsKQEAgLTE4NDIsMjMgKzE4
NDQsMjMgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEVkZ2VzUHJvdmlkZXIucHJvdG90eXBl
ID0gewogICAgICAgICB7CiAgICAgICAgICAgICBlZGdlQS5lZGdlSW5kZXggPSBpbmRleEE7CiAg
ICAgICAgICAgICBlZGdlQi5lZGdlSW5kZXggPSBpbmRleEI7Ci0gICAgICAgICAgICBpZiAoZWRn
ZUIubmFtZSA9PT0gIl9fcHJvdG9fXyIpIHJldHVybiAtMTsKLSAgICAgICAgICAgIGlmIChlZGdl
QS5uYW1lID09PSAiX19wcm90b19fIikgcmV0dXJuIDE7CisgICAgICAgICAgICBpZiAoZWRnZUIu
bmFtZSgpID09PSAiX19wcm90b19fIikgcmV0dXJuIC0xOworICAgICAgICAgICAgaWYgKGVkZ2VB
Lm5hbWUoKSA9PT0gIl9fcHJvdG9fXyIpIHJldHVybiAxOwogICAgICAgICAgICAgdmFyIHJlc3Vs
dCA9Ci0gICAgICAgICAgICAgICAgZWRnZUEuaGFzU3RyaW5nTmFtZSA9PT0gZWRnZUIuaGFzU3Ry
aW5nTmFtZSA/Ci0gICAgICAgICAgICAgICAgKGVkZ2VBLm5hbWUgPCBlZGdlQi5uYW1lID8gLTEg
OiAoZWRnZUEubmFtZSA+IGVkZ2VCLm5hbWUgPyAxIDogMCkpIDoKLSAgICAgICAgICAgICAgICAo
ZWRnZUEuaGFzU3RyaW5nTmFtZSA/IC0xIDogMSk7CisgICAgICAgICAgICAgICAgZWRnZUEuaGFz
U3RyaW5nTmFtZSgpID09PSBlZGdlQi5oYXNTdHJpbmdOYW1lKCkgPworICAgICAgICAgICAgICAg
IChlZGdlQS5uYW1lKCkgPCBlZGdlQi5uYW1lKCkgPyAtMSA6IChlZGdlQS5uYW1lKCkgPiBlZGdl
Qi5uYW1lKCkgPyAxIDogMCkpIDoKKyAgICAgICAgICAgICAgICAoZWRnZUEuaGFzU3RyaW5nTmFt
ZSgpID8gLTEgOiAxKTsKICAgICAgICAgICAgIHJldHVybiBhc2NlbmRpbmcgPyByZXN1bHQgOiAt
cmVzdWx0OwogICAgICAgICB9CiAKICAgICAgICAgZnVuY3Rpb24gY29tcGFyZU5vZGVGaWVsZChm
aWVsZE5hbWUsIGFzY2VuZGluZywgaW5kZXhBLCBpbmRleEIpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIGVkZ2VBLmVkZ2VJbmRleCA9IGluZGV4QTsKLSAgICAgICAgICAgIG5vZGVBLm5vZGVJbmRl
eCA9IGVkZ2VBLm5vZGVJbmRleDsKKyAgICAgICAgICAgIG5vZGVBLm5vZGVJbmRleCA9IGVkZ2VB
Lm5vZGVJbmRleCgpOwogICAgICAgICAgICAgdmFyIHZhbHVlQSA9IG5vZGVBW2ZpZWxkTmFtZV07
CiAKICAgICAgICAgICAgIGVkZ2VCLmVkZ2VJbmRleCA9IGluZGV4QjsKLSAgICAgICAgICAgIG5v
ZGVCLm5vZGVJbmRleCA9IGVkZ2VCLm5vZGVJbmRleDsKKyAgICAgICAgICAgIG5vZGVCLm5vZGVJ
bmRleCA9IGVkZ2VCLm5vZGVJbmRleCgpOwogICAgICAgICAgICAgdmFyIHZhbHVlQiA9IG5vZGVC
W2ZpZWxkTmFtZV07CiAKICAgICAgICAgICAgIHZhciByZXN1bHQgPSB2YWx1ZUEgPCB2YWx1ZUIg
PyAtMSA6ICh2YWx1ZUEgPiB2YWx1ZUIgPyAxIDogMCk7CkBAIC0xOTA1LDIxICsxOTA3LDIxIEBA
IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RFZGdlc1Byb3ZpZGVyLnByb3RvdHlwZS5fX3Byb3Rv
X18gPSBXZWJJbnNwZWN0b3IuSGVhcFNuCiBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZXNQ
cm92aWRlciA9IGZ1bmN0aW9uKHNuYXBzaG90LCBmaWx0ZXIsIG5vZGVJbmRleGVzKQogewogICAg
IHRoaXMuc25hcHNob3QgPSBzbmFwc2hvdDsKLSAgICBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
RmlsdGVyZWRPcmRlcmVkSXRlcmF0b3IuY2FsbCh0aGlzLCBzbmFwc2hvdC5fYWxsTm9kZXMsIGZp
bHRlciwgbm9kZUluZGV4ZXMpOworICAgIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RGaWx0ZXJl
ZE9yZGVyZWRJdGVyYXRvci5jYWxsKHRoaXMsIHNuYXBzaG90Ll9hbGxOb2RlcygpLCBmaWx0ZXIs
IG5vZGVJbmRleGVzKTsKIH0KIAogV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGVzUHJvdmlk
ZXIucHJvdG90eXBlID0gewogICAgIG5vZGVQb3NpdGlvbjogZnVuY3Rpb24oc25hcHNob3RPYmpl
Y3RJZCkKICAgICB7CiAgICAgICAgIHRoaXMuX2NyZWF0ZUl0ZXJhdGlvbk9yZGVyKCk7Ci0gICAg
ICAgIGlmICh0aGlzLmlzRW1wdHkpCisgICAgICAgIGlmICh0aGlzLmlzRW1wdHkoKSkKICAgICAg
ICAgICAgIHJldHVybiAtMTsKICAgICAgICAgdGhpcy5zb3J0QWxsKCk7CiAKICAgICAgICAgdmFy
IG5vZGUgPSBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGUodGhpcy5zbmFwc2hvdCk7
CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5faXRlcmF0aW9uT3JkZXIubGVuZ3Ro
OyBpKyspIHsKICAgICAgICAgICAgIG5vZGUubm9kZUluZGV4ID0gdGhpcy5faXRlcmF0aW9uT3Jk
ZXJbaV07Ci0gICAgICAgICAgICBpZiAobm9kZS5pZCA9PT0gc25hcHNob3RPYmplY3RJZCkKKyAg
ICAgICAgICAgIGlmIChub2RlLmlkKCkgPT09IHNuYXBzaG90T2JqZWN0SWQpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMTkyOCwx
NCArMTkzMCwxNCBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZXNQcm92aWRlci5wcm90
b3R5cGUgPSB7CiAgICAgc2VyaWFsaXplSXRlbTogZnVuY3Rpb24obm9kZSkKICAgICB7CiAgICAg
ICAgIHJldHVybiB7Ci0gICAgICAgICAgICBpZDogbm9kZS5pZCwKLSAgICAgICAgICAgIG5hbWU6
IG5vZGUubmFtZSwKLSAgICAgICAgICAgIGRpc3RhbmNlVG9XaW5kb3c6IG5vZGUuZGlzdGFuY2VU
b1dpbmRvdywKKyAgICAgICAgICAgIGlkOiBub2RlLmlkKCksCisgICAgICAgICAgICBuYW1lOiBu
b2RlLm5hbWUoKSwKKyAgICAgICAgICAgIGRpc3RhbmNlVG9XaW5kb3c6IG5vZGUuZGlzdGFuY2VU
b1dpbmRvdygpLAogICAgICAgICAgICAgbm9kZUluZGV4OiBub2RlLm5vZGVJbmRleCwKLSAgICAg
ICAgICAgIHJldGFpbmVkU2l6ZTogbm9kZS5yZXRhaW5lZFNpemUsCi0gICAgICAgICAgICBzZWxm
U2l6ZTogbm9kZS5zZWxmU2l6ZSwKLSAgICAgICAgICAgIHR5cGU6IG5vZGUudHlwZSwKLSAgICAg
ICAgICAgIGZsYWdzOiBub2RlLmZsYWdzCisgICAgICAgICAgICByZXRhaW5lZFNpemU6IG5vZGUu
cmV0YWluZWRTaXplKCksCisgICAgICAgICAgICBzZWxmU2l6ZTogbm9kZS5zZWxmU2l6ZSgpLAor
ICAgICAgICAgICAgdHlwZTogbm9kZS50eXBlKCksCisgICAgICAgICAgICBmbGFnczogbm9kZS5m
bGFncygpCiAgICAgICAgIH07CiAgICAgfSwKIApAQCAtMTk1MSw4ICsxOTUzLDEwIEBAIFdlYklu
c3BlY3Rvci5IZWFwU25hcHNob3ROb2Rlc1Byb3ZpZGVyLnByb3RvdHlwZSA9IHsKIAogICAgICAg
ICBmdW5jdGlvbiBzb3J0QnlOb2RlRmllbGQoZmllbGROYW1lLCBhc2NlbmRpbmcpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIHZhciB2YWx1ZUEgPSBub2RlQVtmaWVsZE5hbWVdOwotICAgICAgICAg
ICAgdmFyIHZhbHVlQiA9IG5vZGVCW2ZpZWxkTmFtZV07CisgICAgICAgICAgICB2YXIgdmFsdWVP
ckZ1bmN0aW9uQSA9IG5vZGVBW2ZpZWxkTmFtZV07CisgICAgICAgICAgICB2YXIgdmFsdWVBID0g
dHlwZW9mIHZhbHVlT3JGdW5jdGlvbkEgIT09ICJmdW5jdGlvbiIgPyB2YWx1ZU9yRnVuY3Rpb25B
IDogdmFsdWVPckZ1bmN0aW9uQS5jYWxsKG5vZGVBKTsKKyAgICAgICAgICAgIHZhciB2YWx1ZU9y
RnVuY3Rpb25CID0gbm9kZUJbZmllbGROYW1lXTsKKyAgICAgICAgICAgIHZhciB2YWx1ZUIgPSB0
eXBlb2YgdmFsdWVPckZ1bmN0aW9uQiAhPT0gImZ1bmN0aW9uIiA/IHZhbHVlT3JGdW5jdGlvbkIg
OiB2YWx1ZU9yRnVuY3Rpb25CLmNhbGwobm9kZUIpOwogICAgICAgICAgICAgdmFyIHJlc3VsdCA9
IHZhbHVlQSA8IHZhbHVlQiA/IC0xIDogKHZhbHVlQSA+IHZhbHVlQiA/IDEgOiAwKTsKICAgICAg
ICAgICAgIHJldHVybiBhc2NlbmRpbmcgPyByZXN1bHQgOiAtcmVzdWx0OwogICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hv
dEdyaWROb2Rlcy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNu
YXBzaG90R3JpZE5vZGVzLmpzCmluZGV4IGJhOTNhOGEyY2Q3ZTZjZjRhMmI5OGE3YjQ0YThlMjQz
NjY3YTkxZTcuLjQzOTJmMjVmN2UxNjFmMzY2NDJkYzYxYjg3ZTBmNjQ5OGExN2VlNDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90R3Jp
ZE5vZGVzLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNu
YXBzaG90R3JpZE5vZGVzLmpzCkBAIC01MjMsOSArNTIzLDkgQEAgV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdE9iamVjdE5vZGUuX2NyZWF0ZVByb3ZpZGVyID0gZnVuY3Rpb24oaXNGcm9tQmFzZVNu
YXBzaG8KIHsKICAgICB2YXIgc2hvd0hpZGRlbkRhdGEgPSBXZWJJbnNwZWN0b3Iuc2V0dGluZ3Mu
c2hvd0hlYXBTbmFwc2hvdE9iamVjdHNIaWRkZW5Qcm9wZXJ0aWVzLmdldCgpOwogICAgIHZhciBm
aWx0ZXIgPSAiZnVuY3Rpb24oZWRnZSkge1xuIiArCi0gICAgICAgICIgICAgcmV0dXJuICFlZGdl
LmlzSW52aXNpYmxlXG4iICsKLSAgICAgICAgIiAgICAgICAgJiYgKCIgKyAhdHJlZS5zaG93UmV0
YWluaW5nRWRnZXMgKyAiIHx8IChlZGdlLm5vZGUuaWQgIT09IDEgJiYgIWVkZ2Uubm9kZS5pc1N5
bnRoZXRpYykpXG4iICsKLSAgICAgICAgIiAgICAgICAgJiYgKCIgKyBzaG93SGlkZGVuRGF0YSAr
ICIgfHwgKCFlZGdlLmlzSGlkZGVuICYmICFlZGdlLm5vZGUuaXNIaWRkZW4pKTtcbiIgKworICAg
ICAgICAiICAgIHJldHVybiAhZWRnZS5pc0ludmlzaWJsZSgpXG4iICsKKyAgICAgICAgIiAgICAg
ICAgJiYgKCIgKyAhdHJlZS5zaG93UmV0YWluaW5nRWRnZXMgKyAiIHx8IChlZGdlLm5vZGUoKS5p
ZCgpICE9PSAxICYmICFlZGdlLm5vZGUoKS5pc1N5bnRoZXRpYygpKSlcbiIgKworICAgICAgICAi
ICAgICAgICAmJiAoIiArIHNob3dIaWRkZW5EYXRhICsgIiB8fCAoIWVkZ2UuaXNIaWRkZW4oKSAm
JiAhZWRnZS5ub2RlKCkuaXNIaWRkZW4oKSkpO1xuIiArCiAgICAgICAgICJ9XG4iOwogICAgIHZh
ciBzbmFwc2hvdCA9IGlzRnJvbUJhc2VTbmFwc2hvdCA/IHRyZWUuYmFzZVNuYXBzaG90IDogdHJl
ZS5zbmFwc2hvdDsKICAgICBpZiAodHJlZS5zaG93UmV0YWluaW5nRWRnZXMpCkBAIC02NDIsOCAr
NjQyLDggQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEluc3RhbmNlTm9kZS5fY3JlYXRlUHJv
dmlkZXIgPSBmdW5jdGlvbihzbmFwc2hvdCwgbm9kZUkKICAgICByZXR1cm4gc25hcHNob3QuY3Jl
YXRlRWRnZXNQcm92aWRlcigKICAgICAgICAgbm9kZUluZGV4LAogICAgICAgICAiZnVuY3Rpb24o
ZWRnZSkgeyIgKwotICAgICAgICAiICAgIHJldHVybiAhZWRnZS5pc0ludmlzaWJsZSIgKwotICAg
ICAgICAiICAgICAgICAmJiAoIiArIHNob3dIaWRkZW5EYXRhICsgIiB8fCAoIWVkZ2UuaXNIaWRk
ZW4gJiYgIWVkZ2Uubm9kZS5pc0hpZGRlbikpOyIgKworICAgICAgICAiICAgIHJldHVybiAhZWRn
ZS5pc0ludmlzaWJsZSgpIiArCisgICAgICAgICIgICAgICAgICYmICgiICsgc2hvd0hpZGRlbkRh
dGEgKyAiIHx8ICghZWRnZS5pc0hpZGRlbigpICYmICFlZGdlLm5vZGUoKS5pc0hpZGRlbigpKSk7
IiArCiAgICAgICAgICJ9Iik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90UHJveHkuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFByb3h5LmpzCmluZGV4IGVhOTg3ZDcwNjBiZjgw
Yzc4N2FkMWJjNWE4YmZmZDhiMmUwMDBkMTEuLmQ5ZjhmM2Q0ZjBkY2QyOTBiZjg5ZWY0NGYzNjhm
YzFkMTlkNDZmZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvSGVhcFNuYXBzaG90UHJveHkuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9IZWFwU25hcHNob3RQcm94eS5qcwpAQCAtNTE4LDcgKzUxOCw3IEBAIFdlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3RQcm92aWRlclByb3h5LnByb3RvdHlwZSA9IHsKIAogICAgIGlzRW1w
dHk6IGZ1bmN0aW9uKGNhbGxiYWNrKQogICAgIHsKLSAgICAgICAgdGhpcy5jYWxsR2V0dGVyKGNh
bGxiYWNrLCAiaXNFbXB0eSIpOworICAgICAgICB0aGlzLmNhbGxNZXRob2QoY2FsbGJhY2ssICJp
c0VtcHR5Iik7CiAgICAgfSwKIAogICAgIHNlcmlhbGl6ZUl0ZW1zUmFuZ2U6IGZ1bmN0aW9uKHN0
YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uLCBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhOWU1OTQ0NTBmMDEz
YzlmNDRlY2I2NjFlNGM3OGIxMjk1OWI1NTIwLi5jMTc1NjI0ZjVmYmRkODk4M2ZmZjQ3NjkxN2M0
MGNhODZjZmVkNTk3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDUtMjMgIElseWEgVGlr
aG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IGVsaW1pbmF0ZSBnZXR0ZXJzIGZyb20gSGVhcFNuYXBzaG90LmpzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NzI0MQorCisgICAgICAgIGdldHRlcnMg
Y2FuJ3QgYmUgaW5saW5lZCBieSBlbmdpbmUgYXQgdGhlIG1vbWVudC4KKyAgICAgICAgSSBmb3Vu
ZCB0aGF0IGNvbnZlcnRhdGlvbiBnZXR0ZXJzIGludG8gZnVuY3Rpb25zIGdpdmVzIHVzIGFib3V0
IDYwMCBtcworCisgICAgICAgIFJFU1VMVCBoZWFwLXNuYXBzaG90OiBzd2l0Y2gtdG8tY29udGFp
bm1lbnQtdmlldz0gMTkyMCBtcworICAgICAgICB2cworICAgICAgICBSRVNVTFQgaGVhcC1zbmFw
c2hvdDogc3dpdGNoLXRvLWNvbnRhaW5tZW50LXZpZXc9IDEzNjcgbXMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9wcm9maWxlci9o
ZWFwLXNuYXBzaG90Lmh0bWw6CisKIDIwMTItMDUtMjIgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFJlbW92ZSBhbiBhc3NlcnRpb24gc2luY2UgYW4gZXZlbnQn
cyB0YXJnZXQgbWlnaHQgYmUgYSBzaGFkb3cgcm9vdCBpZiBhIHRleHQgbm9kZSBpcyBjbGlja2Vk
LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNo
b3QuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90Lmh0
bWwKaW5kZXggZWM2YzJmZmJjODM5OTEyYTA2YTk5MmUxYjRiMzhmZDI2ODg2NTkwMi4uN2Y1ZDU1
YmJiYWQ1MGZjMDE1YTgwNGU2MDQwMTExZGJjNTI4YzIzMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC5odG1sCkBAIC0xMSwxMyArMTEsMTMg
QEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIHsKICAgICAgICAgICAgIHZhciBzbmFwc2hvdCA9
IEluc3BlY3RvclRlc3QuY3JlYXRlSGVhcFNuYXBzaG90TW9ja09iamVjdCgpOwogICAgICAgICAg
ICAgdmFyIG5vZGVSb290ID0gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlKHNuYXBz
aG90LCBzbmFwc2hvdC5fcm9vdE5vZGVJbmRleCk7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmFzc2VydEVxdWFscygiIiwgbm9kZVJvb3QubmFtZSwgInJvb3QgbmFtZSIpOwotICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoImhpZGRlbiIsIG5vZGVSb290LnR5cGUsICJy
b290IHR5cGUiKTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKDIsIG5v
ZGVSb290LmVkZ2VzQ291bnQsICJyb290IGVkZ2VzIik7CisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFzc2VydEVxdWFscygiIiwgbm9kZVJvb3QubmFtZSgpLCAicm9vdCBuYW1lIik7CisgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscygiaGlkZGVuIiwgbm9kZVJvb3QudHlw
ZSgpLCAicm9vdCB0eXBlIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFs
cygyLCBub2RlUm9vdC5lZGdlc0NvdW50KCksICJyb290IGVkZ2VzIik7CiAgICAgICAgICAgICB2
YXIgbm9kZUUgPSBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGUoc25hcHNob3QsIDE1
KTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKCJFIiwgbm9kZUUubmFt
ZSwgIkUgbmFtZSIpOwotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoIm9i
amVjdCIsIG5vZGVFLnR5cGUsICJFIHR5cGUiKTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
YXNzZXJ0RXF1YWxzKDAsIG5vZGVFLmVkZ2VzQ291bnQsICJFIGVkZ2VzIik7CisgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscygiRSIsIG5vZGVFLm5hbWUoKSwgIkUgbmFtZSIp
OworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoIm9iamVjdCIsIG5vZGVF
LnR5cGUoKSwgIkUgdHlwZSIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVh
bHMoMCwgbm9kZUUuZWRnZXNDb3VudCgpLCAiRSBlZGdlcyIpOwogICAgICAgICAgICAgbmV4dCgp
OwogICAgICAgICB9LAogCkBAIC0yOCw3ICsyOCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAg
ICAgICAgdmFyIGl0ZXJhdG9yID0gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlSXRl
cmF0b3Iobm9kZVJvb3QpOwogICAgICAgICAgICAgdmFyIG5hbWVzID0gW107CiAgICAgICAgICAg
ICBmb3IgKGl0ZXJhdG9yLmZpcnN0KCk7IGl0ZXJhdG9yLmhhc05leHQoKTsgaXRlcmF0b3IubmV4
dCgpKQotICAgICAgICAgICAgICAgIG5hbWVzLnB1c2goaXRlcmF0b3IuaXRlbS5uYW1lKTsKKyAg
ICAgICAgICAgICAgICBuYW1lcy5wdXNoKGl0ZXJhdG9yLml0ZW0oKS5uYW1lKCkpOwogICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoIixBLEIsQyxELEUiLCBuYW1lcy5qb2lu
KCIsIiksICJub2RlIGl0ZXJhdG9yIik7CiAgICAgICAgICAgICBuZXh0KCk7CiAgICAgICAgIH0s
CkBAIC0zNywxMiArMzcsMTIgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIHZhciBzbmFwc2hvdCA9IEluc3BlY3RvclRlc3QuY3JlYXRlSGVhcFNuYXBzaG90TW9ja09i
amVjdCgpOwogICAgICAgICAgICAgdmFyIG5vZGVSb290ID0gbmV3IFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3ROb2RlKHNuYXBzaG90LCBzbmFwc2hvdC5fcm9vdE5vZGVJbmRleCk7Ci0gICAgICAg
ICAgICB2YXIgZWRnZXNSb290ID0gbm9kZVJvb3QucmF3RWRnZXM7Ci0gICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFzc2VydEVxdWFscyhub2RlUm9vdC5lZGdlc0NvdW50ICogc25hcHNob3QuX2Vk
Z2VGaWVsZHNDb3VudCwgZWRnZXNSb290Lmxlbmd0aCwgInJhd0VkZ2VzIGxlbmd0aCIpOworICAg
ICAgICAgICAgdmFyIGVkZ2VzUm9vdCA9IG5vZGVSb290LnJhd0VkZ2VzKCk7CisgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhub2RlUm9vdC5lZGdlc0NvdW50KCkgKiBzbmFw
c2hvdC5fZWRnZUZpZWxkc0NvdW50LCBlZGdlc1Jvb3QubGVuZ3RoLCAicmF3RWRnZXMgbGVuZ3Ro
Iik7CiAgICAgICAgICAgICB2YXIgZWRnZSA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
RWRnZShzbmFwc2hvdCwgZWRnZXNSb290KTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNz
ZXJ0RXF1YWxzKCJwcm9wZXJ0eSIsIGVkZ2UudHlwZSwgImVkZ2UgdHlwZSIpOwotICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoImEiLCBlZGdlLm5hbWUsICJlZGdlIG5hbWUi
KTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKCJBIiwgZWRnZS5ub2Rl
Lm5hbWUsICJlZGdlIG5vZGUgbmFtZSIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3Nl
cnRFcXVhbHMoInByb3BlcnR5IiwgZWRnZS50eXBlKCksICJlZGdlIHR5cGUiKTsKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKCJhIiwgZWRnZS5uYW1lKCksICJlZGdlIG5h
bWUiKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKCJBIiwgZWRnZS5u
b2RlKCkubmFtZSgpLCAiZWRnZSBub2RlIG5hbWUiKTsKICAgICAgICAgICAgIG5leHQoKTsKICAg
ICAgICAgfSwKIApAQCAtNTEsMTIgKzUxLDEyIEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAg
ICAgdmFyIHNuYXBzaG90ID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVIZWFwU25hcHNob3RNb2NrT2Jq
ZWN0KCk7CiAgICAgICAgICAgICB2YXIgbm9kZVJvb3QgPSBuZXcgV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdE5vZGUoc25hcHNob3QsIHNuYXBzaG90Ll9yb290Tm9kZUluZGV4KTsKICAgICAgICAg
ICAgIHZhciBuYW1lcyA9IFtdOwotICAgICAgICAgICAgdmFyIGl0ZXJhdG9yID0gbm9kZVJvb3Qu
ZWRnZXM7CisgICAgICAgICAgICB2YXIgaXRlcmF0b3IgPSBub2RlUm9vdC5lZGdlcygpOwogICAg
ICAgICAgICAgZm9yIChpdGVyYXRvci5maXJzdCgpOyBpdGVyYXRvci5oYXNOZXh0KCk7IGl0ZXJh
dG9yLm5leHQoKSkKLSAgICAgICAgICAgICAgICBuYW1lcy5wdXNoKGl0ZXJhdG9yLml0ZW0ubmFt
ZSk7CisgICAgICAgICAgICAgICAgbmFtZXMucHVzaChpdGVyYXRvci5pdGVtKCkubmFtZSgpKTsK
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKCJhLGIiLCBuYW1lcy5qb2lu
KCIsIiksICJlZGdlIGl0ZXJhdG9yIik7CiAgICAgICAgICAgICB2YXIgbm9kZUUgPSBuZXcgV2Vi
SW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGUoc25hcHNob3QsIDE1KTsKLSAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKGZhbHNlLCBub2RlRS5lZGdlcy5oYXNOZXh0KCksICJl
bXB0eSBlZGdlIGl0ZXJhdG9yIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVx
dWFscyhmYWxzZSwgbm9kZUUuZWRnZXMoKS5oYXNOZXh0KCksICJlbXB0eSBlZGdlIGl0ZXJhdG9y
Iik7CiAgICAgICAgICAgICBuZXh0KCk7CiAgICAgICAgIH0sCiAKQEAgLTY4LDEwICs2OCwxMCBA
QCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIAogICAgICAgICAgICAgZnVuY3Rpb24gZGVw
dGhGaXJzdFRyYXZlcnNhbChub2RlKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG5h
bWVzLnB1c2gobm9kZS5uYW1lKTsKLSAgICAgICAgICAgICAgICBmb3IgKHZhciBlZGdlcyA9IG5v
ZGUuZWRnZXM7IGVkZ2VzLmhhc05leHQoKTsgZWRnZXMubmV4dCgpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIG5hbWVzLnB1c2goZWRnZXMuaXRlbS5uYW1lKTsKLSAgICAgICAgICAgICAgICAgICAg
ZGVwdGhGaXJzdFRyYXZlcnNhbChlZGdlcy5pdGVtLm5vZGUpOworICAgICAgICAgICAgICAgIG5h
bWVzLnB1c2gobm9kZS5uYW1lKCkpOworICAgICAgICAgICAgICAgIGZvciAodmFyIGVkZ2VzID0g
bm9kZS5lZGdlcygpOyBlZGdlcy5oYXNOZXh0KCk7IGVkZ2VzLm5leHQoKSkgeworICAgICAgICAg
ICAgICAgICAgICBuYW1lcy5wdXNoKGVkZ2VzLml0ZW0oKS5uYW1lKCkpOworICAgICAgICAgICAg
ICAgICAgICBkZXB0aEZpcnN0VHJhdmVyc2FsKGVkZ2VzLml0ZW0oKS5ub2RlKCkpOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgIApAQCAtODIsNyArODIsNyBAQCBm
dW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIC8vIE5vdyBjaGVjayBhZ2FpbnN0IGEgcmVhbCBI
ZWFwU25hcHNob3QgaW5zdGFuY2UuCiAgICAgICAgICAgICBuYW1lcyA9IFtdOwogICAgICAgICAg
ICAgdmFyIHNuYXBzaG90ID0gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QoSW5zcGVjdG9y
VGVzdC5jcmVhdGVIZWFwU25hcHNob3RNb2NrKCkpOwotICAgICAgICAgICAgZGVwdGhGaXJzdFRy
YXZlcnNhbChzbmFwc2hvdC5yb290Tm9kZSk7CisgICAgICAgICAgICBkZXB0aEZpcnN0VHJhdmVy
c2FsKHNuYXBzaG90LnJvb3ROb2RlKCkpOwogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3Nl
cnRFcXVhbHMocmVmZXJlbmNlLCBuYW1lcy5qb2luKCIsIiksICJzbmFwc2hvdCB0cmF2ZXJzYWwi
KTsKICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAgfSwKQEAgLTE4OCwxMiArMTg4LDEyIEBA
IGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgICAgICJDIjogWyJBIiwgIkIiXSwKICAgICAg
ICAgICAgICAgICAiRCI6IFsiQiJdLAogICAgICAgICAgICAgICAgICJFIjogWyJDIl19OwotICAg
ICAgICAgICAgZm9yICh2YXIgbm9kZXMgPSBzbmFwc2hvdC5fYWxsTm9kZXM7IG5vZGVzLmhhc05l
eHQoKTsgbm9kZXMubmV4dCgpKSB7CisgICAgICAgICAgICBmb3IgKHZhciBub2RlcyA9IHNuYXBz
aG90Ll9hbGxOb2RlcygpOyBub2Rlcy5oYXNOZXh0KCk7IG5vZGVzLm5leHQoKSkgewogICAgICAg
ICAgICAgICAgIHZhciBuYW1lcyA9IFtdOwotICAgICAgICAgICAgICAgIGZvciAodmFyIHJldGFp
bmVycyA9IG5vZGVzLml0ZW0ucmV0YWluZXJzOyByZXRhaW5lcnMuaGFzTmV4dCgpOyByZXRhaW5l
cnMubmV4dCgpKQotICAgICAgICAgICAgICAgICAgICBuYW1lcy5wdXNoKHJldGFpbmVycy5pdGVt
Lm5vZGUubmFtZSk7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgcmV0YWluZXJzID0gbm9kZXMu
aXRlbSgpLnJldGFpbmVycygpOyByZXRhaW5lcnMuaGFzTmV4dCgpOyByZXRhaW5lcnMubmV4dCgp
KQorICAgICAgICAgICAgICAgICAgICBuYW1lcy5wdXNoKHJldGFpbmVycy5pdGVtKCkubm9kZSgp
Lm5hbWUoKSk7CiAgICAgICAgICAgICAgICAgbmFtZXMuc29ydCgpOwotICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKGV4cGVjdGVkUmV0YWluZXJzW25vZGVzLml0ZW0u
bmFtZV0uam9pbigiLCIpLCBuYW1lcy5qb2luKCIsIiksICJyZXRhaW5lcnMgb2YgXCIiICsgbm9k
ZXMuaXRlbS5uYW1lICsgIlwiIik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3Nl
cnRFcXVhbHMoZXhwZWN0ZWRSZXRhaW5lcnNbbm9kZXMuaXRlbSgpLm5hbWUoKV0uam9pbigiLCIp
LCBuYW1lcy5qb2luKCIsIiksICJyZXRhaW5lcnMgb2YgXCIiICsgbm9kZXMuaXRlbSgpLm5hbWUo
KSArICJcIiIpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbmV4dCgpOwogICAgICAgICB9
LApAQCAtMjQ5LDkgKzI0OSw5IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgICAgIk4i
OiBmYWxzZSwKICAgICAgICAgICAgICAgICJXaW5kb3ciOiB0cnVlCiAgICAgICAgICAgICB9Owot
ICAgICAgICAgICAgZm9yICh2YXIgbm9kZXMgPSBzbmFwc2hvdC5fYWxsTm9kZXM7IG5vZGVzLmhh
c05leHQoKTsgbm9kZXMubmV4dCgpKSB7Ci0gICAgICAgICAgICAgICAgdmFyIG5vZGUgPSBub2Rl
cy5pdGVtOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKGV4cGVj
dGVkQ2FuQmVRdWVyaWVkW25vZGUubmFtZV0sIG5vZGUuY2FuQmVRdWVyaWVkLCAiY2FuQmVRdWVy
aWVkIG9mIFwiIiArIG5vZGUubmFtZSArICJcIiIpOworICAgICAgICAgICAgZm9yICh2YXIgbm9k
ZXMgPSBzbmFwc2hvdC5fYWxsTm9kZXMoKTsgbm9kZXMuaGFzTmV4dCgpOyBub2Rlcy5uZXh0KCkp
IHsKKyAgICAgICAgICAgICAgICB2YXIgbm9kZSA9IG5vZGVzLml0ZW0oKTsKKyAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhleHBlY3RlZENhbkJlUXVlcmllZFtub2Rl
Lm5hbWUoKV0sIG5vZGUuY2FuQmVRdWVyaWVkKCksICJjYW5CZVF1ZXJpZWQgb2YgXCIiICsgbm9k
ZS5uYW1lKCkgKyAiXCIiKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG5leHQoKTsKICAg
ICAgICAgfSwKQEAgLTI1OSw4ICsyNTksOCBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgZnVu
Y3Rpb24gaGVhcFNuYXBzaG90QXJyYXlTbGljZVRlc3QobmV4dCkKICAgICAgICAgewogICAgICAg
ICAgICAgdmFyIHNuYXBzaG90ID0gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QoSW5zcGVj
dG9yVGVzdC5jcmVhdGVIZWFwU25hcHNob3RNb2NrKCkpOwotICAgICAgICAgICAgdmFyIHJvb3Qg
PSBzbmFwc2hvdC5yb290Tm9kZTsKLSAgICAgICAgICAgIHZhciByYXdFZGdlcyA9IHJvb3QucmF3
RWRnZXM7CisgICAgICAgICAgICB2YXIgcm9vdCA9IHNuYXBzaG90LnJvb3ROb2RlKCk7CisgICAg
ICAgICAgICB2YXIgcmF3RWRnZXMgPSByb290LnJhd0VkZ2VzKCk7CiAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFzc2VydEVxdWFscyg2LCByYXdFZGdlcy5sZW5ndGgpOwogICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoNiwgcmF3RWRnZXMuc2xpY2UoMCkubGVuZ3RoKTsK
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKDMsIHJhd0VkZ2VzLnNsaWNl
KDMpLmxlbmd0aCk7CkBAIC0yNzYsNyArMjc2LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIGZ1bmN0aW9uIG5vZGVGaWx0ZXIobm9kZSkKICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gbm9kZS50eXBlID09PSAib2JqZWN0IiAmJiBub2Rl
Lm5hbWUgIT09ICJCIiAmJiBub2RlLm5hbWUgIT09ICJEIjsKKyAgICAgICAgICAgICAgICByZXR1
cm4gbm9kZS50eXBlKCkgPT09ICJvYmplY3QiICYmIG5vZGUubmFtZSgpICE9PSAiQiIgJiYgbm9k
ZS5uYW1lKCkgIT09ICJEIjsKICAgICAgICAgICAgIH0KICAgICAgICAgIAogICAgICAgICAgICAg
dmFyIHByb3ZpZGVyID0gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2Rlc1Byb3ZpZGVy
KHNuYXBzaG90LCBub2RlRmlsdGVyKTsKQEAgLTI4Niw3ICsyODYsNyBAQCBmdW5jdGlvbiB0ZXN0
KCkKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKDMsIHByb3ZpZGVyLmxl
bmd0aCwgIm5vZGVzIHByb3ZpZGVyIGxlbmd0aCIpOwogICAgICAgICAgICAgdmFyIG5hbWVzID0g
W107CiAgICAgICAgICAgICBmb3IgKHByb3ZpZGVyLmZpcnN0KCk7IHByb3ZpZGVyLmhhc05leHQo
KTsgcHJvdmlkZXIubmV4dCgpKQotICAgICAgICAgICAgICAgIG5hbWVzLnB1c2gocHJvdmlkZXIu
aXRlbS5uYW1lKTsKKyAgICAgICAgICAgICAgICBuYW1lcy5wdXNoKHByb3ZpZGVyLml0ZW0oKS5u
YW1lKCkpOwogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoIkUsQyxBIiwg
bmFtZXMuam9pbigiLCIpLCAibm9kZXMgcHJvdmlkZXIgbmFtZXMiKTsKICAgICAgICAgICAgIG5l
eHQoKTsKICAgICAgICAgfSwKQEAgLTI5Nyw3ICsyOTcsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAg
ICAgICAgIAogICAgICAgICAgICAgZnVuY3Rpb24gZWRnZUZpbHRlcihlZGdlKQogICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIHJldHVybiBlZGdlLm5hbWUgPT09ICJiIjsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZWRnZS5uYW1lKCkgPT09ICJiIjsKICAgICAgICAgICAgIH0KICAgICAg
ICAgIAogICAgICAgICAgICAgdmFyIHByb3ZpZGVyID0gc25hcHNob3QuY3JlYXRlRWRnZXNQcm92
aWRlcihzbmFwc2hvdC5yb290Tm9kZUluZGV4LCBlZGdlRmlsdGVyKTsKQEAgLTMwNiw3ICszMDYs
NyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1
YWxzKDEsIHByb3ZpZGVyLmxlbmd0aCwgImVkZ2VzIHByb3ZpZGVyIGxlbmd0aCIpOwogICAgICAg
ICAgICAgdmFyIG5hbWVzID0gW107CiAgICAgICAgICAgICBmb3IgKHByb3ZpZGVyLmZpcnN0KCk7
IHByb3ZpZGVyLmhhc05leHQoKTsgcHJvdmlkZXIubmV4dCgpKQotICAgICAgICAgICAgICAgIG5h
bWVzLnB1c2gocHJvdmlkZXIuaXRlbS5uYW1lKTsKKyAgICAgICAgICAgICAgICBuYW1lcy5wdXNo
KHByb3ZpZGVyLml0ZW0oKS5uYW1lKCkpOwogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3Nl
cnRFcXVhbHMoImIiLCBuYW1lcy5qb2luKCIsIiksICJlZGdlcyBwcm92aWRlciBuYW1lcyIpOwog
ICAgICAgICAgICAgbmV4dCgpOwogICAgICAgICB9Cg==
</data>
<flag name="review"
          id="150100"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>