<?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>48406</bug_id>
          
          <creation_ts>2010-10-27 02:57:59 -0700</creation_ts>
          <short_desc>Web Inspector: Bring backend-frontend message format to follow the protocol specification</short_desc>
          <delta_ts>2010-10-28 06:28:07 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexander Pavlov (apavlov)">apavlov</reporter>
          <assigned_to name="Alexander Pavlov (apavlov)">apavlov</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>300086</commentid>
    <comment_count>0</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-10-27 02:57:59 -0700</bug_when>
    <thetext>In order to switch to InspectorCSSAgent, we need to make the existing code handle the target message format.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301010</commentid>
    <comment_count>1</comment_count>
      <attachid>72176</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-10-28 05:52:38 -0700</bug_when>
    <thetext>Created attachment 72176
[PATCH] Suggested solution</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301030</commentid>
    <comment_count>2</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-10-28 06:28:07 -0700</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
        M       LayoutTests/ChangeLog
        M       LayoutTests/http/tests/inspector/inspect-iframe-from-different-domain.html
        M       LayoutTests/inspector/styles-source-offsets.html
        M       WebCore/ChangeLog
        M       WebCore/inspector/InspectorDOMAgent.cpp
        M       WebCore/inspector/InspectorDOMAgent.h
        M       WebCore/inspector/front-end/AuditRules.js
        M       WebCore/inspector/front-end/CSSStyleModel.js
        M       WebCore/inspector/front-end/DOMAgent.js
        M       WebCore/inspector/front-end/MetricsSidebarPane.js
        M       WebCore/inspector/front-end/StylesSidebarPane.js
Committed r70772</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72176</attachid>
            <date>2010-10-28 05:52:38 -0700</date>
            <delta_ts>2010-10-28 06:04:13 -0700</delta_ts>
            <desc>[PATCH] Suggested solution</desc>
            <filename>messageformat.patch</filename>
            <type>text/plain</type>
            <size>75050</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">Y29tbWl0IDhlZmYxMTUzOThlZjRhMjU2ZmY0OWIwZGVhN2U5ZTQ1OTM4YjcwM2EKQXV0aG9yOiBB
bGV4YW5kZXIgUGF2bG92IDxhcGF2bG92QGNocm9taXVtLm9yZz4KRGF0ZTogICBXZWQgT2N0IDI3
IDE3OjU3OjU5IDIwMTAgKzA0MDAKCiAgICBBbHRlciBtZXNzYWdlIGZvcm1hdCBhbmQgbWFrZSB1
c2Ugb2YgdGhlIG5ldyBKUyBzdHJ1Y3R1cmVzCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGI3YTI0MGQuLjZjMWFlNDAgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0xMC0yOCAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZs
b3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEJyaW5nIGJhY2tlbmQtZnJvbnRlbmQgbWVzc2FnZSBm
b3JtYXQgdG8gZm9sbG93IHRoZSBwcm90b2NvbCBzcGVjaWZpY2F0aW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODQwNgorCisgICAgICAgICogaHR0
cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdC1pZnJhbWUtZnJvbS1kaWZmZXJlbnQtZG9tYWluLmh0
bWw6CisgICAgICAgICogaW5zcGVjdG9yL3N0eWxlcy1zb3VyY2Utb2Zmc2V0cy5odG1sOgorCiAy
MDEwLTEwLTI4ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3QtaWZyYW1lLWZyb20tZGlmZmVyZW50LWRvbWFpbi5o
dG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdC1pZnJhbWUtZnJv
bS1kaWZmZXJlbnQtZG9tYWluLmh0bWwKaW5kZXggMTI4YjQ4Zi4uNDZkNWUwZSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdC1pZnJhbWUtZnJvbS1k
aWZmZXJlbnQtZG9tYWluLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvaW5zcGVjdC1pZnJhbWUtZnJvbS1kaWZmZXJlbnQtZG9tYWluLmh0bWwKQEAgLTc3LDcgKzc3
LDcgQEAgZnVuY3Rpb24gZnJvbnRlbmRfZHVtcElGcmFtZUJhY2tncm91bmQodGVzdENvbnRyb2xs
ZXIpCiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IHN0
eWxlcy5tYXRjaGVkQ1NTUnVsZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgdmFyIHJ1bGUgPSBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvbi5w
YXJzZVJ1bGUoc3R5bGVzLm1hdGNoZWRDU1NSdWxlc1tpXSk7CisgICAgICAgICAgICAgICAgICAg
IHZhciBydWxlID0gV2ViSW5zcGVjdG9yLkNTU1J1bGUucGFyc2VQYXlsb2FkKHN0eWxlcy5tYXRj
aGVkQ1NTUnVsZXNbaV0pOwogICAgICAgICAgICAgICAgICAgICBpZiAocnVsZS5pc1VzZXIgfHwg
cnVsZS5pc1VzZXJBZ2VudCkKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICAgICAgICAgICAgICB2YXIgYmcgPSBydWxlLnN0eWxlLmdldFNob3J0aGFuZFZhbHVlKCJi
YWNrZ3JvdW5kIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzLXNv
dXJjZS1vZmZzZXRzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzLXNvdXJjZS1v
ZmZzZXRzLmh0bWwKaW5kZXggMDJjNzkyOS4uNzQ2ZTdlOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3N0eWxlcy1zb3VyY2Utb2Zmc2V0cy5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9zdHlsZXMtc291cmNlLW9mZnNldHMuaHRtbApAQCAtMzcsOSArMzcsOSBAQCBm
dW5jdGlvbiBmcm9udGVuZF9ydW5UZXN0KHRlc3RDb250cm9sbGVyKQogICAgICAgICAgICAgdmFy
IG1hdGNoZWRDU1NSdWxlcyA9IHN0eWxlcy5tYXRjaGVkQ1NTUnVsZXM7CiAgICAgICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IG1hdGNoZWRDU1NSdWxlcy5sZW5ndGg7ICsraSkgewogICAgICAg
ICAgICAgICAgIHZhciBydWxlID0gbWF0Y2hlZENTU1J1bGVzW2ldOwotICAgICAgICAgICAgICAg
IEluc3BlY3RvckJhY2tlbmQuZ2V0U3R5bGVTb3VyY2VEYXRhKHJ1bGUuc3R5bGUuaWQsIGZyb250
ZW5kX3N0eWxlRGF0YVJlY2VpdmVkLmJpbmQobnVsbCwgdGVzdENvbnRyb2xsZXIsIHJ1bGUsIGZh
bHNlKSk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5nZXRTdHlsZVNvdXJjZURh
dGEocnVsZS5zdHlsZS5zdHlsZUlkLCBmcm9udGVuZF9zdHlsZURhdGFSZWNlaXZlZC5iaW5kKG51
bGwsIHRlc3RDb250cm9sbGVyLCBydWxlLCBmYWxzZSkpOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgSW5zcGVjdG9yQmFja2VuZC5nZXRTdHlsZVNvdXJjZURhdGEoc3R5bGVzLmlubGluZVN0
eWxlLmlkLCBmcm9udGVuZF9zdHlsZURhdGFSZWNlaXZlZC5iaW5kKG51bGwsIHRlc3RDb250cm9s
bGVyLCBzdHlsZXMuaW5saW5lU3R5bGUsIHRydWUpKTsKKyAgICAgICAgICAgIEluc3BlY3RvckJh
Y2tlbmQuZ2V0U3R5bGVTb3VyY2VEYXRhKHN0eWxlcy5pbmxpbmVTdHlsZS5zdHlsZUlkLCBmcm9u
dGVuZF9zdHlsZURhdGFSZWNlaXZlZC5iaW5kKG51bGwsIHRlc3RDb250cm9sbGVyLCBzdHlsZXMu
aW5saW5lU3R5bGUsIHRydWUpKTsKICAgICAgICAgfQogICAgICAgICBJbnNwZWN0b3JCYWNrZW5k
LmdldFN0eWxlcyhXZWJJbnNwZWN0b3IuZG9tQWdlbnQuZG9jdW1lbnQuYm9keS5pZCwgdHJ1ZSwg
c3R5bGVzQ2FsbGJhY2suYmluZChudWxsLCB0ZXN0Q29udHJvbGxlcikpOwogICAgIH0pOwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4Y2Rh
MmExLi4zYzE5OGU4IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDkyIEBACisyMDEwLTEwLTI4ICBBbGV4YW5kZXIgUGF2bG92
ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQnJpbmcgYmFja2VuZC1mcm9udGVuZCBt
ZXNzYWdlIGZvcm1hdCB0byBmb2xsb3cgdGhlIHByb3RvY29sIHNwZWNpZmljYXRpb24KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4NDA2CisKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRE9NQWdlbnQ6OmdldFN0eWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JET01BZ2VudDo6YXBwbHlTdHlsZVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yRE9NQWdlbnQ6OnBvcHVsYXRlT2JqZWN0V2l0aFN0eWxlUHJvcGVydGllcyk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JTdHlsZVNoZWV0KToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvclJ1bGUp
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvQXVkaXRSdWxlcy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5B
dWRpdFJ1bGVzLlVudXNlZENzc1J1bGUucHJvdG90eXBlLmRvUnVuLmV2YWxDYWxsYmFjay5zZWxl
Y3RvcnNDYWxsYmFjayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5JbWFnZURp
bWVuc2lvbnNSdWxlLnByb3RvdHlwZS5kb1J1bik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250
LWVuZC9DU1NTdHlsZU1vZGVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9k
ZWwucGFyc2VSdWxlQXJyYXlQYXlsb2FkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHls
ZU1vZGVsLnByb3RvdHlwZS5nZXRTdHlsZXNBc3luYyk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Q1NTU3R5bGVNb2RlbC5wcm90b3R5cGUuZ2V0Q29tcHV0ZWRTdHlsZUFzeW5jKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZS5nZXRJbmxpbmVTdHlsZUFzeW5j
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZS5zZXRDU1NU
ZXh0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb24pOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkNTU1N0eWxlRGVjbGFyYXRpb24ucGFyc2VQYXlsb2FkKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uLnByb3RvdHlwZS5nZXQgYWxsUHJvcGVydGllcyk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvbi5wcm90b3R5cGUuZ2V0TGl2
ZVByb3BlcnR5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uLnBy
b3RvdHlwZS5nZXRQcm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHls
ZURlY2xhcmF0aW9uLnByb3RvdHlwZS5nZXRQcm9wZXJ0eVByaW9yaXR5KToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uLnByb3RvdHlwZS5nZXRQcm9wZXJ0eVNob3J0
aGFuZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvbi5wcm90b3R5
cGUuaXNQcm9wZXJ0eUltcGxpY2l0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZURl
Y2xhcmF0aW9uLnByb3RvdHlwZS5nZXRTaG9ydGhhbmRWYWx1ZSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvbi5wcm90b3R5cGUuZ2V0U2hvcnRoYW5kUHJpb3JpdHkp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb24ucHJvdG90eXBlLmFw
cGVuZFByb3BlcnR5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9u
LnByb3RvdHlwZS5wcm9wZXJ0eUF0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NSdWxlKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NSdWxlLnBhcnNlUGF5bG9hZCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuQ1NTUnVsZS5wcm90b3R5cGUuZ2V0IGlzVXNlckFnZW50KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5DU1NSdWxlLnByb3RvdHlwZS5nZXQgaXNVc2VyKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5DU1NSdWxlLnByb3RvdHlwZS5nZXQgaXNWaWFJbnNwZWN0b3IpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkNTU1J1bGUucHJvdG90eXBlLmdldCBpc1JlZ3VsYXIpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkNTU1Byb3BlcnR5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NQ
cm9wZXJ0eS5wYXJzZVBheWxvYWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1Byb3BlcnR5
LnByb3RvdHlwZS5nZXQgcHJvcGVydHlUZXh0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NQ
cm9wZXJ0eS5wcm90b3R5cGUuZ2V0IGlzTGl2ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NT
UHJvcGVydHkucHJvdG90eXBlLmdldCBhY3RpdmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNT
U1Byb3BlcnR5LnByb3RvdHlwZS5nZXQgc3R5bGVCYXNlZCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQ1NTUHJvcGVydHkucHJvdG90eXBlLmdldCBpbmFjdGl2ZSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ1NTUHJvcGVydHkucHJvdG90eXBlLmdldCBkaXNhYmxlZCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQ1NTUHJvcGVydHkucHJvdG90eXBlLnNldFRleHQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkNTU1Byb3BlcnR5LnByb3RvdHlwZS5zZXRWYWx1ZSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ1NTUHJvcGVydHkucHJvdG90eXBlLnNldERpc2FibGVkLmNhbGxiYWNrKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5DU1NQcm9wZXJ0eS5wcm90b3R5cGUuc2V0RGlzYWJsZWQpOgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvTWV0cmljc1NpZGViYXJQYW5lLmpzOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLk1ldHJpY3NTaWRlYmFyUGFuZS5wcm90b3R5cGUudXBkYXRlLmNhbGxi
YWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5NZXRyaWNzU2lkZWJhclBhbmUucHJvdG90eXBl
LnVwZGF0ZS5pbmxpbmVTdHlsZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5NZXRy
aWNzU2lkZWJhclBhbmUucHJvdG90eXBlLnVwZGF0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
TWV0cmljc1NpZGViYXJQYW5lLnByb3RvdHlwZS5fdXBkYXRlKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5NZXRyaWNzU2lkZWJhclBhbmUucHJvdG90eXBlLmVkaXRpbmdDb21taXR0ZWQuY2FsbGJh
Y2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk1ldHJpY3NTaWRlYmFyUGFuZS5wcm90b3R5cGUu
ZWRpdGluZ0NvbW1pdHRlZC5zZXRFbmFibGVkVmFsdWVDYWxsYmFjayk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuTWV0cmljc1NpZGViYXJQYW5lLnByb3RvdHlwZS5lZGl0aW5nQ29tbWl0dGVkKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZS51cGRhdGUpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZS5fcmVidWls
ZFVwZGF0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUucHJvdG90
eXBlLl9yZWZyZXNoU3R5bGVSdWxlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVzU2lk
ZWJhclBhbmUucHJvdG90eXBlLl9yZWJ1aWxkU3R5bGVSdWxlcyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUucHJvdG90eXBlLl9tYXJrVXNlZFByb3BlcnRpZXMpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZS5fY29udGFp
bnNJbmhlcml0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydGllc1NlY3Rp
b24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydGllc1NlY3Rpb24ucHJvdG90
eXBlLmlzUHJvcGVydHlJbmhlcml0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlUHJv
cGVydGllc1NlY3Rpb24ucHJvdG90eXBlLmlzUHJvcGVydHlPdmVybG9hZGVkKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZS5vbnBvcHVsYXRl
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlw
ZS5hZGROZXdCbGFua1Byb3BlcnR5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZVByb3Bl
cnRpZXNTZWN0aW9uLnByb3RvdHlwZS5lZGl0aW5nU2VsZWN0b3JDb21taXR0ZWQuc3VjY2Vzc0Nh
bGxiYWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnRpZXNTZWN0aW9uLnBy
b3RvdHlwZS5lZGl0aW5nU2VsZWN0b3JDb21taXR0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNvbXB1dGVkU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUuX2lzUHJvcGVydHlJbmhl
cml0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbXB1dGVkU3R5bGVQcm9wZXJ0aWVzU2Vj
dGlvbi5wcm90b3R5cGUub25wb3B1bGF0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29tcHV0
ZWRTdHlsZVByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZS5yZWJ1aWxkQ29tcHV0ZWRUcmFjZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlLmdldCBk
aXNhYmxlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50
LnByb3RvdHlwZS5nZXQgbmFtZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0
eVRyZWVFbGVtZW50LnByb3RvdHlwZS5nZXQgcHJpb3JpdHkpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUuZ2V0IHZhbHVlKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlLmdldCBw
YXJzZWRPayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50
LnByb3RvdHlwZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVt
ZW50LnByb3RvdHlwZS4pOgorCiAyMDEwLTEwLTI4ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxl
LmNvbT4KIAogICAgICAgICBPbmUgbW9yZSBRdCBmaXggZHVlIHRvIHI3MDc1NC4KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCBmNWM1ZjhiLi5jZmI1NWZjIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0xMjE5LDExICsxMjE5LDEx
IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldFN0eWxlcyhsb25nIG5vZGVJZCwgYm9vbCBh
dXRob3JPbmx5LCBSZWZQdHI8SW5zcGVjdG9yCiAgICAgcmVzdWx0LT5zZXRPYmplY3QoInN0eWxl
QXR0cmlidXRlcyIsIGJ1aWxkT2JqZWN0Rm9yQXR0cmlidXRlU3R5bGVzKGVsZW1lbnQpKTsKICAg
ICByZXN1bHQtPnNldEFycmF5KCJwc2V1ZG9FbGVtZW50cyIsIGJ1aWxkQXJyYXlGb3JQc2V1ZG9F
bGVtZW50cyhlbGVtZW50LCBhdXRob3JPbmx5KSk7CiAKLSAgICBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiBjdXJyZW50U3R5bGUgPSByZXN1bHQ7CisgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBp
bmhlcml0ZWRTdHlsZXMgPSBJbnNwZWN0b3JBcnJheTo6Y3JlYXRlKCk7CiAgICAgRWxlbWVudCog
cGFyZW50RWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKTsKICAgICB3aGlsZSAocGFy
ZW50RWxlbWVudCkgewogICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBwYXJlbnRTdHls
ZSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgICAgIGN1cnJlbnRTdHlsZS0+c2V0
T2JqZWN0KCJwYXJlbnQiLCBwYXJlbnRTdHlsZSk7CisgICAgICAgIGluaGVyaXRlZFN0eWxlcy0+
cHVzaE9iamVjdChwYXJlbnRTdHlsZSk7CiAgICAgICAgIGlmIChwYXJlbnRFbGVtZW50LT5zdHls
ZSgpICYmIHBhcmVudEVsZW1lbnQtPnN0eWxlKCktPmxlbmd0aCgpKQogICAgICAgICAgICAgcGFy
ZW50U3R5bGUtPnNldE9iamVjdCgiaW5saW5lU3R5bGUiLCBidWlsZE9iamVjdEZvclN0eWxlKHBh
cmVudEVsZW1lbnQtPnN0eWxlKCksIHRydWUpKTsKIApAQCAtMTIzMiw4ICsxMjMyLDggQEAgdm9p
ZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0U3R5bGVzKGxvbmcgbm9kZUlkLCBib29sIGF1dGhvck9u
bHksIFJlZlB0cjxJbnNwZWN0b3IKICAgICAgICAgcGFyZW50U3R5bGUtPnNldEFycmF5KCJtYXRj
aGVkQ1NTUnVsZXMiLCBidWlsZEFycmF5Rm9yQ1NTUnVsZXMocGFyZW50RWxlbWVudC0+b3duZXJE
b2N1bWVudCgpLCBwYXJlbnRNYXRjaGVkUnVsZXMuZ2V0KCkpKTsKIAogICAgICAgICBwYXJlbnRF
bGVtZW50ID0gcGFyZW50RWxlbWVudC0+cGFyZW50RWxlbWVudCgpOwotICAgICAgICBjdXJyZW50
U3R5bGUgPSBwYXJlbnRTdHlsZTsKICAgICB9CisgICAgcmVzdWx0LT5zZXRBcnJheSgiaW5oZXJp
dGVkIiwgaW5oZXJpdGVkU3R5bGVzKTsKICAgICAqc3R5bGVzID0gcmVzdWx0LnJlbGVhc2UoKTsK
IH0KIApAQCAtMTM5Niw2ICsxMzk2LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6YXBwbHlT
dHlsZVRleHQobG9uZyBzdHlsZUlkLCBjb25zdCBTdHJpbmcmIHN0eWxlVGV4dCwgY28KICAgICAv
LyBOb3RpZnkgY2FsbGVyIHRoYXQgdGhlIHByb3BlcnR5IHdhcyBzdWNjZXNzZnVsbHkgZGVsZXRl
ZC4KICAgICBpZiAoIXN0eWxlVGV4dExlbmd0aCkgewogICAgICAgICAqc3VjY2VzcyA9IHRydWU7
CisgICAgICAgICpzdHlsZU9iamVjdCA9IGJ1aWxkT2JqZWN0Rm9yU3R5bGUoc3R5bGUsIHRydWUp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xNTQ0LDE4ICsxNTQ1LDE1IEBAIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JT
dHlsZShDU1NTdHlsZURlY2xhCiB7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0
ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICBpZiAoYmluZCkgewotICAgICAgICBs
b25nIHN0eWxlSWQgPSBjc3NTdG9yZSgpLT5iaW5kU3R5bGUoc3R5bGUpOwotICAgICAgICByZXN1
bHQtPnNldE51bWJlcigiaWQiLCBzdHlsZUlkKTsKLSAgICAgICAgQ1NTU3R5bGVTaGVldCogcGFy
ZW50U3R5bGVTaGVldCA9IEluc3BlY3RvckNTU1N0b3JlOjpnZXRQYXJlbnRTdHlsZVNoZWV0KHN0
eWxlKTsKLSAgICAgICAgaWYgKHBhcmVudFN0eWxlU2hlZXQpCi0gICAgICAgICAgICByZXN1bHQt
PnNldE51bWJlcigicGFyZW50U3R5bGVTaGVldElkIiwgY3NzU3RvcmUoKS0+YmluZFN0eWxlU2hl
ZXQocGFyZW50U3R5bGVTaGVldCkpOwotCi0gICAgICAgIERpc2FibGVkU3R5bGVEZWNsYXJhdGlv
biogZGlzYWJsZWRTdHlsZSA9IGNzc1N0b3JlKCktPmRpc2FibGVkU3R5bGVGb3JJZChzdHlsZUlk
LCBmYWxzZSk7Ci0gICAgICAgIGlmIChkaXNhYmxlZFN0eWxlKQotICAgICAgICAgICAgcmVzdWx0
LT5zZXRBcnJheSgiZGlzYWJsZWQiLCBidWlsZEFycmF5Rm9yRGlzYWJsZWRTdHlsZVByb3BlcnRp
ZXMoZGlzYWJsZWRTdHlsZSkpOworICAgICAgICByZXN1bHQtPnNldE51bWJlcigic3R5bGVJZCIs
IGNzc1N0b3JlKCktPmJpbmRTdHlsZShzdHlsZSkpOworICAgICAgICBDU1NTdHlsZVNoZWV0KiBz
dHlsZVNoZWV0ID0gSW5zcGVjdG9yQ1NTU3RvcmU6OmdldFBhcmVudFN0eWxlU2hlZXQoc3R5bGUp
OworICAgICAgICBpZiAoc3R5bGVTaGVldCkKKyAgICAgICAgICAgIHJlc3VsdC0+c2V0TnVtYmVy
KCJzdHlsZVNoZWV0SWQiLCBjc3NTdG9yZSgpLT5iaW5kU3R5bGVTaGVldChzdHlsZVNoZWV0KSk7
CiAgICAgfQotICAgIHJlc3VsdC0+c2V0U3RyaW5nKCJ3aWR0aCIsIHN0eWxlLT5nZXRQcm9wZXJ0
eVZhbHVlKCJ3aWR0aCIpKTsKLSAgICByZXN1bHQtPnNldFN0cmluZygiaGVpZ2h0Iiwgc3R5bGUt
PmdldFByb3BlcnR5VmFsdWUoImhlaWdodCIpKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiBwcm9wZXJ0aWVzID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKKyAgICBwcm9wZXJ0aWVz
LT5zZXRTdHJpbmcoIndpZHRoIiwgc3R5bGUtPmdldFByb3BlcnR5VmFsdWUoIndpZHRoIikpOwor
ICAgIHByb3BlcnRpZXMtPnNldFN0cmluZygiaGVpZ2h0Iiwgc3R5bGUtPmdldFByb3BlcnR5VmFs
dWUoImhlaWdodCIpKTsKKyAgICByZXN1bHQtPnNldE9iamVjdCgicHJvcGVydGllcyIsIHByb3Bl
cnRpZXMpOwogICAgIHBvcHVsYXRlT2JqZWN0V2l0aFN0eWxlUHJvcGVydGllcyhzdHlsZSwgcmVz
dWx0LmdldCgpKTsKICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0KQEAgLTE1NjksNDQg
KzE1NjcsNTUgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cG9wdWxhdGVPYmplY3RXaXRoU3R5
bGVQcm9wZXJ0aWVzKENTU1N0eWxlRGVjbGFyYXRpb24qIHMKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgc3R5bGUtPmxlbmd0aCgpOyArK2kpIHsKICAgICAgICAgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4gcHJvcGVydHkgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAgICBT
dHJpbmcgbmFtZSA9IHN0eWxlLT5pdGVtKGkpOworICAgICAgICBTdHJpbmcgdmFsdWUgPSBzdHls
ZS0+Z2V0UHJvcGVydHlWYWx1ZShuYW1lKTsKKyAgICAgICAgU3RyaW5nIHByaW9yaXR5ID0gc3R5
bGUtPmdldFByb3BlcnR5UHJpb3JpdHkobmFtZSk7CiAgICAgICAgIHByb3BlcnR5LT5zZXRTdHJp
bmcoIm5hbWUiLCBuYW1lKTsKLSAgICAgICAgcHJvcGVydHktPnNldFN0cmluZygicHJpb3JpdHki
LCBzdHlsZS0+Z2V0UHJvcGVydHlQcmlvcml0eShuYW1lKSk7CisgICAgICAgIHByb3BlcnR5LT5z
ZXRTdHJpbmcoInZhbHVlIiwgdmFsdWUpOworICAgICAgICBwcm9wZXJ0eS0+c2V0U3RyaW5nKCJw
cmlvcml0eSIsIHByaW9yaXR5KTsKKyAgICAgICAgcHJvcGVydHktPnNldFN0cmluZygidGV4dCIs
IG5hbWUgKyAiOiAiICsgdmFsdWUgKyAocHJpb3JpdHkubGVuZ3RoKCkgPyAiICEiICsgcHJpb3Jp
dHkgOiAiIikgKyAiOyIpOwogICAgICAgICBwcm9wZXJ0eS0+c2V0Qm9vbGVhbigiaW1wbGljaXQi
LCBzdHlsZS0+aXNQcm9wZXJ0eUltcGxpY2l0KG5hbWUpKTsKKyAgICAgICAgcHJvcGVydHktPnNl
dEJvb2xlYW4oInBhcnNlZE9rIiwgdHJ1ZSk7CisgICAgICAgIHByb3BlcnR5LT5zZXRTdHJpbmco
InN0YXR1cyIsICJzdHlsZSIpOwogICAgICAgICBTdHJpbmcgc2hvcnRoYW5kID0gc3R5bGUtPmdl
dFByb3BlcnR5U2hvcnRoYW5kKG5hbWUpOwotICAgICAgICBwcm9wZXJ0eS0+c2V0U3RyaW5nKCJz
aG9ydGhhbmQiLCBzaG9ydGhhbmQpOworICAgICAgICBwcm9wZXJ0eS0+c2V0U3RyaW5nKCJzaG9y
dGhhbmROYW1lIiwgc2hvcnRoYW5kKTsKICAgICAgICAgaWYgKCFzaG9ydGhhbmQuaXNFbXB0eSgp
ICYmICFmb3VuZFNob3J0aGFuZHMuY29udGFpbnMoc2hvcnRoYW5kKSkgewogICAgICAgICAgICAg
Zm91bmRTaG9ydGhhbmRzLmFkZChzaG9ydGhhbmQpOwogICAgICAgICAgICAgc2hvcnRoYW5kVmFs
dWVzLT5zZXRTdHJpbmcoc2hvcnRoYW5kLCBzaG9ydGhhbmRWYWx1ZShzdHlsZSwgc2hvcnRoYW5k
KSk7CiAgICAgICAgIH0KLSAgICAgICAgcHJvcGVydHktPnNldFN0cmluZygidmFsdWUiLCBzdHls
ZS0+Z2V0UHJvcGVydHlWYWx1ZShuYW1lKSk7CiAgICAgICAgIHByb3BlcnRpZXMtPnB1c2hPYmpl
Y3QocHJvcGVydHkucmVsZWFzZSgpKTsKICAgICB9Ci0gICAgcmVzdWx0LT5zZXRBcnJheSgicHJv
cGVydGllcyIsIHByb3BlcnRpZXMpOworICAgIHJlc3VsdC0+c2V0QXJyYXkoImNzc1Byb3BlcnRp
ZXMiLCBwcm9wZXJ0aWVzKTsKKyAgICByZXN1bHQtPnNldFN0cmluZygiY3NzVGV4dCIsIHN0eWxl
LT5jc3NUZXh0KCkpOwogICAgIHJlc3VsdC0+c2V0T2JqZWN0KCJzaG9ydGhhbmRWYWx1ZXMiLCBz
aG9ydGhhbmRWYWx1ZXMpOwotfQogCi1QYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBJbnNwZWN0
b3JET01BZ2VudDo6YnVpbGRBcnJheUZvckRpc2FibGVkU3R5bGVQcm9wZXJ0aWVzKERpc2FibGVk
U3R5bGVEZWNsYXJhdGlvbiogZGVjbGFyYXRpb24pCi17Ci0gICAgUmVmUHRyPEluc3BlY3RvckFy
cmF5PiBwcm9wZXJ0aWVzID0gSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOwotICAgIGZvciAoRGlz
YWJsZWRTdHlsZURlY2xhcmF0aW9uOjppdGVyYXRvciBpdCA9IGRlY2xhcmF0aW9uLT5iZWdpbigp
OyBpdCAhPSBkZWNsYXJhdGlvbi0+ZW5kKCk7ICsraXQpIHsKKyAgICBEaXNhYmxlZFN0eWxlRGVj
bGFyYXRpb24qIGRpc2FibGVkU3R5bGUgPSBjc3NTdG9yZSgpLT5kaXNhYmxlZFN0eWxlRm9ySWQo
Y3NzU3RvcmUoKS0+YmluZFN0eWxlKHN0eWxlKSwgZmFsc2UpOworICAgIGlmICghZGlzYWJsZWRT
dHlsZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChEaXNhYmxlZFN0eWxlRGVjbGFyYXRp
b246Oml0ZXJhdG9yIGl0ID0gZGlzYWJsZWRTdHlsZS0+YmVnaW4oKTsgaXQgIT0gZGlzYWJsZWRT
dHlsZS0+ZW5kKCk7ICsraXQpIHsKICAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcHJv
cGVydHkgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgICAgICBwcm9wZXJ0eS0+c2V0
U3RyaW5nKCJuYW1lIiwgaXQtPmZpcnN0KTsKLSAgICAgICAgcHJvcGVydHktPnNldFN0cmluZygi
dmFsdWUiLCBpdC0+c2Vjb25kLmZpcnN0KTsKLSAgICAgICAgcHJvcGVydHktPnNldFN0cmluZygi
cHJpb3JpdHkiLCBpdC0+c2Vjb25kLnNlY29uZCk7CisgICAgICAgIFN0cmluZyBuYW1lID0gaXQt
PmZpcnN0OworICAgICAgICBTdHJpbmcgdmFsdWUgPSBpdC0+c2Vjb25kLmZpcnN0OworICAgICAg
ICBTdHJpbmcgcHJpb3JpdHkgPSBpdC0+c2Vjb25kLnNlY29uZDsKKyAgICAgICAgcHJvcGVydHkt
PnNldFN0cmluZygibmFtZSIsIG5hbWUpOworICAgICAgICBwcm9wZXJ0eS0+c2V0U3RyaW5nKCJ2
YWx1ZSIsIHZhbHVlKTsKKyAgICAgICAgcHJvcGVydHktPnNldFN0cmluZygicHJpb3JpdHkiLCBw
cmlvcml0eSk7CisgICAgICAgIHByb3BlcnR5LT5zZXRTdHJpbmcoInRleHQiLCBuYW1lICsgIjog
IiArIHZhbHVlICsgKHByaW9yaXR5Lmxlbmd0aCgpID8gIiAhIiArIHByaW9yaXR5IDogIiIpICsg
IjsiKTsKKyAgICAgICAgcHJvcGVydHktPnNldEJvb2xlYW4oImltcGxpY2l0IiwgZmFsc2UpOwor
ICAgICAgICBwcm9wZXJ0eS0+c2V0Qm9vbGVhbigicGFyc2VkT2siLCB0cnVlKTsKKyAgICAgICAg
cHJvcGVydHktPnNldFN0cmluZygic3RhdHVzIiwgImRpc2FibGVkIik7CiAgICAgICAgIHByb3Bl
cnRpZXMtPnB1c2hPYmplY3QocHJvcGVydHkucmVsZWFzZSgpKTsKICAgICB9Ci0gICAgcmV0dXJu
IHByb3BlcnRpZXMucmVsZWFzZSgpOwogfQogCiBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yU3R5bGVTaGVldChEb2N1bWVudCogb3du
ZXJEb2N1bWVudCwgQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCkKIHsKICAgICBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiByZXN1bHQgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGxv
bmcgaWQgPSBjc3NTdG9yZSgpLT5iaW5kU3R5bGVTaGVldChzdHlsZVNoZWV0KTsKLSAgICByZXN1
bHQtPnNldE51bWJlcigiaWQiLCBpZCk7Ci0gICAgcmVzdWx0LT5zZXRCb29sZWFuKCJkaXNhYmxl
ZCIsIHN0eWxlU2hlZXQtPmRpc2FibGVkKCkpOwotICAgIHJlc3VsdC0+c2V0U3RyaW5nKCJocmVm
Iiwgc3R5bGVTaGVldC0+aHJlZigpKTsKKyAgICByZXN1bHQtPnNldE51bWJlcigic3R5bGVTaGVl
dElkIiwgaWQpOworICAgIHJlc3VsdC0+c2V0U3RyaW5nKCJzb3VyY2VVUkwiLCBzdHlsZVNoZWV0
LT5ocmVmKCkpOwogICAgIHJlc3VsdC0+c2V0U3RyaW5nKCJ0aXRsZSIsIHN0eWxlU2hlZXQtPnRp
dGxlKCkpOwotICAgIHJlc3VsdC0+c2V0TnVtYmVyKCJkb2N1bWVudEVsZW1lbnRJZCIsIG1fZG9j
dW1lbnROb2RlVG9JZE1hcC5nZXQoc3R5bGVTaGVldC0+ZG9jdW1lbnQoKSkpOworICAgIHJlc3Vs
dC0+c2V0Qm9vbGVhbigiZGlzYWJsZWQiLCBzdHlsZVNoZWV0LT5kaXNhYmxlZCgpKTsKICAgICBS
ZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGNzc1J1bGVzID0gSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgp
OwogICAgIFBhc3NSZWZQdHI8Q1NTUnVsZUxpc3Q+IGNzc1J1bGVMaXN0ID0gQ1NTUnVsZUxpc3Q6
OmNyZWF0ZShzdHlsZVNoZWV0LCB0cnVlKTsKICAgICBpZiAoY3NzUnVsZUxpc3QpIHsKQEAgLTE2
MTYsNyArMTYyNSw3IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBJbnNwZWN0b3JET01B
Z2VudDo6YnVpbGRPYmplY3RGb3JTdHlsZVNoZWV0KERvY3VtZW50CiAgICAgICAgICAgICAgICAg
Y3NzUnVsZXMtPnB1c2hPYmplY3QoYnVpbGRPYmplY3RGb3JSdWxlKG93bmVyRG9jdW1lbnQsIHN0
YXRpY19jYXN0PENTU1N0eWxlUnVsZSo+KHJ1bGUpKSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAg
cmVzdWx0LT5zZXRBcnJheSgiY3NzUnVsZXMiLCBjc3NSdWxlcy5yZWxlYXNlKCkpOworICAgIHJl
c3VsdC0+c2V0QXJyYXkoInJ1bGVzIiwgY3NzUnVsZXMucmVsZWFzZSgpKTsKICAgICByZXR1cm4g
cmVzdWx0LnJlbGVhc2UoKTsKIH0KIApAQCAtMTYyNiwyNyArMTYzNSwyOCBAQCBQYXNzUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yUnVsZShE
b2N1bWVudCogb3duZQogCiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gSW5z
cGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICByZXN1bHQtPnNldFN0cmluZygic2VsZWN0b3JU
ZXh0IiwgcnVsZS0+c2VsZWN0b3JUZXh0KCkpOwotICAgIHJlc3VsdC0+c2V0U3RyaW5nKCJjc3NU
ZXh0IiwgcnVsZS0+Y3NzVGV4dCgpKTsKICAgICByZXN1bHQtPnNldE51bWJlcigic291cmNlTGlu
ZSIsIHJ1bGUtPnNvdXJjZUxpbmUoKSk7Ci0gICAgcmVzdWx0LT5zZXRTdHJpbmcoImRvY3VtZW50
VVJMIiwgZG9jdW1lbnRVUkxTdHJpbmcob3duZXJEb2N1bWVudCkpOwotICAgIGlmIChwYXJlbnRT
dHlsZVNoZWV0KSB7Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHBhcmVudFN0eWxl
U2hlZXRWYWx1ZSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgICAgIHBhcmVudFN0
eWxlU2hlZXRWYWx1ZS0+c2V0U3RyaW5nKCJocmVmIiwgcGFyZW50U3R5bGVTaGVldC0+aHJlZigp
KTsKLSAgICAgICAgcGFyZW50U3R5bGVTaGVldFZhbHVlLT5zZXROdW1iZXIoImlkIiwgY3NzU3Rv
cmUoKS0+YmluZFN0eWxlU2hlZXQocGFyZW50U3R5bGVTaGVldCkpOwotICAgICAgICByZXN1bHQt
PnNldE9iamVjdCgicGFyZW50U3R5bGVTaGVldCIsIHBhcmVudFN0eWxlU2hlZXRWYWx1ZS5yZWxl
YXNlKCkpOwotICAgIH0KLSAgICBib29sIGlzVXNlckFnZW50ID0gcGFyZW50U3R5bGVTaGVldCAm
JiAhcGFyZW50U3R5bGVTaGVldC0+b3duZXJOb2RlKCkgJiYgcGFyZW50U3R5bGVTaGVldC0+aHJl
ZigpLmlzRW1wdHkoKTsKLSAgICBib29sIGlzVXNlciA9IHBhcmVudFN0eWxlU2hlZXQgJiYgcGFy
ZW50U3R5bGVTaGVldC0+b3duZXJOb2RlKCkgJiYgcGFyZW50U3R5bGVTaGVldC0+b3duZXJOb2Rl
KCktPm5vZGVOYW1lKCkgPT0gIiNkb2N1bWVudCI7Ci0gICAgcmVzdWx0LT5zZXRCb29sZWFuKCJp
c1VzZXJBZ2VudCIsIGlzVXNlckFnZW50KTsKLSAgICByZXN1bHQtPnNldEJvb2xlYW4oImlzVXNl
ciIsIGlzVXNlcik7Ci0gICAgcmVzdWx0LT5zZXRCb29sZWFuKCJpc1ZpYUluc3BlY3RvciIsIHJ1
bGUtPnBhcmVudFN0eWxlU2hlZXQoKSA9PSBjc3NTdG9yZSgpLT5pbnNwZWN0b3JTdHlsZVNoZWV0
KG93bmVyRG9jdW1lbnQsIGZhbHNlKSk7CisKKyAgICBTdHJpbmcgb3JpZ2luOworICAgIGJvb2wg
Y2FuQmluZCA9IHRydWU7CisgICAgaWYgKHBhcmVudFN0eWxlU2hlZXQgJiYgIXBhcmVudFN0eWxl
U2hlZXQtPm93bmVyTm9kZSgpICYmIHBhcmVudFN0eWxlU2hlZXQtPmhyZWYoKS5pc0VtcHR5KCkp
IHsKKyAgICAgICAgb3JpZ2luID0gInVzZXItYWdlbnQiOworICAgICAgICBjYW5CaW5kID0gZmFs
c2U7CisgICAgfSBlbHNlIGlmIChwYXJlbnRTdHlsZVNoZWV0ICYmIHBhcmVudFN0eWxlU2hlZXQt
Pm93bmVyTm9kZSgpICYmIHBhcmVudFN0eWxlU2hlZXQtPm93bmVyTm9kZSgpLT5ub2RlTmFtZSgp
ID09ICIjZG9jdW1lbnQiKSB7CisgICAgICAgIG9yaWdpbiA9ICJ1c2VyIjsKKyAgICAgICAgY2Fu
QmluZCA9IGZhbHNlOworICAgIH0gZWxzZSBpZiAocnVsZS0+cGFyZW50U3R5bGVTaGVldCgpID09
IGNzc1N0b3JlKCktPmluc3BlY3RvclN0eWxlU2hlZXQob3duZXJEb2N1bWVudCwgZmFsc2UpKQor
ICAgICAgICBvcmlnaW4gPSAiaW5zcGVjdG9yIjsKKyAgICByZXN1bHQtPnNldFN0cmluZygib3Jp
Z2luIiwgb3JpZ2luKTsKKworICAgIGlmIChvcmlnaW4uaXNFbXB0eSgpKQorICAgICAgICByZXN1
bHQtPnNldFN0cmluZygic291cmNlVVJMIiwgcGFyZW50U3R5bGVTaGVldCAmJiAhcGFyZW50U3R5
bGVTaGVldC0+aHJlZigpLmlzRW1wdHkoKSA/IHBhcmVudFN0eWxlU2hlZXQtPmhyZWYoKSA6IChv
d25lckRvY3VtZW50ID8gb3duZXJEb2N1bWVudC0+dXJsKCkuc3RyaW5nKCkgOiAiIikpOwogCiAg
ICAgLy8gQmluZCBlZGl0YWJsZSBzY3JpcHRzIG9ubHkuCi0gICAgYm9vbCBiaW5kID0gIWlzVXNl
ckFnZW50ICYmICFpc1VzZXI7Ci0gICAgcmVzdWx0LT5zZXRPYmplY3QoInN0eWxlIiwgYnVpbGRP
YmplY3RGb3JTdHlsZShydWxlLT5zdHlsZSgpLCBiaW5kKSk7CisgICAgcmVzdWx0LT5zZXRPYmpl
Y3QoInN0eWxlIiwgYnVpbGRPYmplY3RGb3JTdHlsZShydWxlLT5zdHlsZSgpLCBjYW5CaW5kKSk7
CiAKLSAgICBpZiAoYmluZCkKLSAgICAgICAgcmVzdWx0LT5zZXROdW1iZXIoImlkIiwgY3NzU3Rv
cmUoKS0+YmluZFJ1bGUocnVsZSkpOworICAgIGlmIChjYW5CaW5kKQorICAgICAgICByZXN1bHQt
PnNldE51bWJlcigicnVsZUlkIiwgY3NzU3RvcmUoKS0+YmluZFJ1bGUocnVsZSkpOwogICAgIHJl
dHVybiByZXN1bHQucmVsZWFzZSgpOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01BZ2VudC5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdl
bnQuaAppbmRleCAwM2U0ZDhkLi42YzVmZDRiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01BZ2VudC5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRP
TUFnZW50LmgKQEAgLTIwNyw3ICsyMDcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAg
ICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yU3R5bGUoQ1NTU3R5
bGVEZWNsYXJhdGlvbiosIGJvb2wgYmluZCk7CiAgICAgICAgIHZvaWQgcG9wdWxhdGVPYmplY3RX
aXRoU3R5bGVQcm9wZXJ0aWVzKENTU1N0eWxlRGVjbGFyYXRpb24qLCBJbnNwZWN0b3JPYmplY3Qq
IHJlc3VsdCk7Ci0gICAgICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGJ1aWxkQXJyYXlG
b3JEaXNhYmxlZFN0eWxlUHJvcGVydGllcyhEaXNhYmxlZFN0eWxlRGVjbGFyYXRpb24qKTsKICAg
ICAgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yUnVsZShEb2N1
bWVudCogb3duZXJEb2N1bWVudCwgQ1NTU3R5bGVSdWxlKik7CiAgICAgICAgIFBhc3NSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9iamVjdEZvclN0eWxlU2hlZXQoRG9jdW1lbnQqIG93bmVy
RG9jdW1lbnQsIENTU1N0eWxlU2hlZXQqKTsKICAgICAgICAgVmVjdG9yPFN0cmluZz4gbG9uZ2hh
bmRQcm9wZXJ0aWVzKENTU1N0eWxlRGVjbGFyYXRpb24qLCBjb25zdCBTdHJpbmcmIHNob3J0aGFu
ZFByb3BlcnR5KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRp
dFJ1bGVzLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0UnVsZXMuanMKaW5k
ZXggY2Q5ZjEzZS4uNTE1Y2U4ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0F1ZGl0UnVsZXMuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0
UnVsZXMuanMKQEAgLTI4Niw4ICsyODYsOCBAQCBXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5VbnVz
ZWRDc3NSdWxlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHZhciB0ZXN0ZWRTZWxlY3RvcnMg
PSB7fTsKICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3R5bGVTaGVldHMubGVuZ3Ro
OyArK2kpIHsKICAgICAgICAgICAgICAgICB2YXIgc3R5bGVTaGVldCA9IHN0eWxlU2hlZXRzW2ld
OwotICAgICAgICAgICAgICAgIGZvciAodmFyIGN1clJ1bGUgPSAwOyBjdXJSdWxlIDwgc3R5bGVT
aGVldC5jc3NSdWxlcy5sZW5ndGg7ICsrY3VyUnVsZSkgewotICAgICAgICAgICAgICAgICAgICB2
YXIgcnVsZSA9IHN0eWxlU2hlZXQuY3NzUnVsZXNbY3VyUnVsZV07CisgICAgICAgICAgICAgICAg
Zm9yICh2YXIgY3VyUnVsZSA9IDA7IGN1clJ1bGUgPCBzdHlsZVNoZWV0LnJ1bGVzLmxlbmd0aDsg
KytjdXJSdWxlKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBydWxlID0gc3R5bGVTaGVldC5y
dWxlc1tjdXJSdWxlXTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHJ1bGUuc2VsZWN0b3JUZXh0
Lm1hdGNoKHBzZXVkb1NlbGVjdG9yUmVnZXhwKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICAgICAgICAgICBzZWxlY3RvcnMucHVzaChydWxlLnNlbGVjdG9y
VGV4dCk7CkBAIC0zMDcsOSArMzA3LDEwIEBAIFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLlVudXNl
ZENzc1J1bGUucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgICAgICB2YXIgc3R5bGVzaGVl
dFNpemUgPSAwOwogICAgICAgICAgICAgICAgICAgICB2YXIgdW51c2VkU3R5bGVzaGVldFNpemUg
PSAwOwogICAgICAgICAgICAgICAgICAgICB2YXIgdW51c2VkUnVsZXMgPSBbXTsKLSAgICAgICAg
ICAgICAgICAgICAgZm9yICh2YXIgY3VyUnVsZSA9IDA7IGN1clJ1bGUgPCBzdHlsZVNoZWV0LmNz
c1J1bGVzLmxlbmd0aDsgKytjdXJSdWxlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXIg
cnVsZSA9IHN0eWxlU2hlZXQuY3NzUnVsZXNbY3VyUnVsZV07Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB2YXIgdGV4dExlbmd0aCA9IHJ1bGUuY3NzVGV4dCA/IHJ1bGUuY3NzVGV4dC5sZW5ndGgg
OiAwOworICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBjdXJSdWxlID0gMDsgY3VyUnVsZSA8
IHN0eWxlU2hlZXQucnVsZXMubGVuZ3RoOyArK2N1clJ1bGUpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHZhciBydWxlID0gc3R5bGVTaGVldC5ydWxlc1tjdXJSdWxlXTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIEZJWE1FOiByZXBsYWNlIHRoaXMgYnkgYW4gZXhhY3QgY29tcHV0YXRp
b24gb25jZSBzb3VyY2UgcmFuZ2VzIGFyZSBhdmFpbGFibGUKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHZhciB0ZXh0TGVuZ3RoID0gcnVsZS5zdHlsZS5jc3NUZXh0ID8gcnVsZS5zdHlsZS5jc3NU
ZXh0Lmxlbmd0aCArIHJ1bGUuc2VsZWN0b3JUZXh0Lmxlbmd0aCA6IDA7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBzdHlsZXNoZWV0U2l6ZSArPSB0ZXh0TGVuZ3RoOwogICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCF0ZXN0ZWRTZWxlY3RvcnNbcnVsZS5zZWxlY3RvclRleHRdIHx8IGZvdW5k
U2VsZWN0b3JzW3J1bGUuc2VsZWN0b3JUZXh0XSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKQEAgLTMyMiw3ICszMjMsNyBAQCBXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5V
bnVzZWRDc3NSdWxlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCF1bnVz
ZWRSdWxlcy5sZW5ndGgpCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAg
ICAgICAgICAgICAgICAgICB2YXIgdXJsID0gc3R5bGVTaGVldC5ocmVmID8gV2ViSW5zcGVjdG9y
LkF1ZGl0UnVsZVJlc3VsdC5saW5raWZ5RGlzcGxheU5hbWUoc3R5bGVTaGVldC5ocmVmKSA6IFN0
cmluZy5zcHJpbnRmKCJJbmxpbmUgYmxvY2sgIyVkIiwgKytpbmxpbmVCbG9ja09yZGluYWwpOwor
ICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gc3R5bGVTaGVldC5zb3VyY2VVUkwgPyBXZWJJ
bnNwZWN0b3IuQXVkaXRSdWxlUmVzdWx0LmxpbmtpZnlEaXNwbGF5TmFtZShzdHlsZVNoZWV0LnNv
dXJjZVVSTCkgOiBTdHJpbmcuc3ByaW50ZigiSW5saW5lIGJsb2NrICMlZCIsICsraW5saW5lQmxv
Y2tPcmRpbmFsKTsKICAgICAgICAgICAgICAgICAgICAgdmFyIHBjdFVudXNlZCA9IE1hdGgucm91
bmQoMTAwICogdW51c2VkU3R5bGVzaGVldFNpemUgLyBzdHlsZXNoZWV0U2l6ZSk7CiAgICAgICAg
ICAgICAgICAgICAgIGlmICghc3VtbWFyeSkKICAgICAgICAgICAgICAgICAgICAgICAgIHN1bW1h
cnkgPSByZXN1bHQuYWRkQ2hpbGQoIiIsIHRydWUpOwpAQCAtNjU3LDcgKzY1OCw3IEBAIFdlYklu
c3BlY3Rvci5BdWRpdFJ1bGVzLkltYWdlRGltZW5zaW9uc1J1bGUucHJvdG90eXBlID0gewogICAg
ICAgICAgICAgaWYgKGNvbXBsZXRlU3JjKQogICAgICAgICAgICAgICAgIHNyYyA9IGNvbXBsZXRl
U3JjOwogCi0gICAgICAgICAgICBjb25zdCBjb21wdXRlZFN0eWxlID0gbmV3IFdlYkluc3BlY3Rv
ci5DU1NTdHlsZURlY2xhcmF0aW9uKHN0eWxlcy5jb21wdXRlZFN0eWxlKTsKKyAgICAgICAgICAg
IGNvbnN0IGNvbXB1dGVkU3R5bGUgPSBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvbi5w
YXJzZVBheWxvYWQoc3R5bGVzLmNvbXB1dGVkU3R5bGUpOwogICAgICAgICAgICAgaWYgKGNvbXB1
dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgicG9zaXRpb24iKSA9PT0gImFic29sdXRlIikgewog
ICAgICAgICAgICAgICAgIGlmICghY29udGV4dC5pbWFnZXNMZWZ0KQogICAgICAgICAgICAgICAg
ICAgICBkb25lQ2FsbGJhY2soY29udGV4dCk7CkBAIC02NjgsNyArNjY5LDcgQEAgV2ViSW5zcGVj
dG9yLkF1ZGl0UnVsZXMuSW1hZ2VEaW1lbnNpb25zUnVsZS5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICB2YXIgaGVpZ2h0Rm91bmQgPSAiaGVpZ2h0IiBpbiBzdHlsZXMuc3R5bGVBdHRyaWJ1dGVz
OwogCiAgICAgICAgICAgICBmb3IgKHZhciBpID0gc3R5bGVzLm1hdGNoZWRDU1NSdWxlcy5sZW5n
dGggLSAxOyBpID49IDAgJiYgISh3aWR0aEZvdW5kICYmIGhlaWdodEZvdW5kKTsgLS1pKSB7Ci0g
ICAgICAgICAgICAgICAgdmFyIHN0eWxlID0gV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRp
b24ucGFyc2VSdWxlKHN0eWxlcy5tYXRjaGVkQ1NTUnVsZXNbaV0pLnN0eWxlOworICAgICAgICAg
ICAgICAgIHZhciBzdHlsZSA9IFdlYkluc3BlY3Rvci5DU1NSdWxlLnBhcnNlUGF5bG9hZChzdHls
ZXMubWF0Y2hlZENTU1J1bGVzW2ldKS5zdHlsZTsKICAgICAgICAgICAgICAgICBpZiAoc3R5bGUu
Z2V0UHJvcGVydHlWYWx1ZSgid2lkdGgiKSAhPT0gIiIpCiAgICAgICAgICAgICAgICAgICAgIHdp
ZHRoRm91bmQgPSB0cnVlOwogICAgICAgICAgICAgICAgIGlmIChzdHlsZS5nZXRQcm9wZXJ0eVZh
bHVlKCJoZWlnaHQiKSAhPT0gIiIpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvQ1NTU3R5bGVNb2RlbC5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NT
dHlsZU1vZGVsLmpzCmluZGV4IGUzZTliNGYuLjcwMmM5MjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzCkBAIC0zMiwxNSArMzIsODQgQEAgV2ViSW5z
cGVjdG9yLkNTU1N0eWxlTW9kZWwgPSBmdW5jdGlvbigpCiB7CiB9CiAKK1dlYkluc3BlY3Rvci5D
U1NTdHlsZU1vZGVsLnBhcnNlUnVsZUFycmF5UGF5bG9hZCA9IGZ1bmN0aW9uKHJ1bGVBcnJheSkK
K3sKKyAgICB2YXIgcmVzdWx0ID0gW107CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBydWxlQXJy
YXkubGVuZ3RoOyArK2kpCisgICAgICAgIHJlc3VsdC5wdXNoKFdlYkluc3BlY3Rvci5DU1NSdWxl
LnBhcnNlUGF5bG9hZChydWxlQXJyYXlbaV0pKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBX
ZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5cGUgPSB7Ci0gICAgZ2V0U3R5bGVzQXN5
bmM6IGZ1bmN0aW9uKG5vZGVJZCwgYXV0aE9ubHksIHVzZXJDYWxsYmFjaykKKyAgICBnZXRTdHls
ZXNBc3luYzogZnVuY3Rpb24obm9kZUlkLCB1c2VyQ2FsbGJhY2spCiAgICAgewotICAgICAgICBJ
bnNwZWN0b3JCYWNrZW5kLmdldFN0eWxlcyhub2RlSWQsIGF1dGhPbmx5LCB1c2VyQ2FsbGJhY2sp
OworICAgICAgICBmdW5jdGlvbiBjYWxsYmFjayh1c2VyQ2FsbGJhY2ssIHBheWxvYWQpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmICghcGF5bG9hZCkgeworICAgICAgICAgICAgICAgIGlmICh1
c2VyQ2FsbGJhY2spCisgICAgICAgICAgICAgICAgICAgIHVzZXJDYWxsYmFjayhudWxsKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciBy
ZXN1bHQgPSB7fTsKKyAgICAgICAgICAgIGlmICgiaW5saW5lU3R5bGUiIGluIHBheWxvYWQpCisg
ICAgICAgICAgICAgICAgcmVzdWx0LmlubGluZVN0eWxlID0gV2ViSW5zcGVjdG9yLkNTU1N0eWxl
RGVjbGFyYXRpb24ucGFyc2VQYXlsb2FkKHBheWxvYWQuaW5saW5lU3R5bGUpOworCisgICAgICAg
ICAgICByZXN1bHQuY29tcHV0ZWRTdHlsZSA9IFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0
aW9uLnBhcnNlUGF5bG9hZChwYXlsb2FkLmNvbXB1dGVkU3R5bGUpOworICAgICAgICAgICAgcmVz
dWx0Lm1hdGNoZWRDU1NSdWxlcyA9IFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnBhcnNlUnVs
ZUFycmF5UGF5bG9hZChwYXlsb2FkLm1hdGNoZWRDU1NSdWxlcyk7CisKKyAgICAgICAgICAgIHJl
c3VsdC5zdHlsZUF0dHJpYnV0ZXMgPSB7fTsKKyAgICAgICAgICAgIGZvciAodmFyIG5hbWUgaW4g
cGF5bG9hZC5zdHlsZUF0dHJpYnV0ZXMpCisgICAgICAgICAgICAgICAgcmVzdWx0LnN0eWxlQXR0
cmlidXRlc1tuYW1lXSA9IFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uLnBhcnNlUGF5
bG9hZChwYXlsb2FkLnN0eWxlQXR0cmlidXRlc1tuYW1lXSk7CisKKyAgICAgICAgICAgIHJlc3Vs
dC5wc2V1ZG9FbGVtZW50cyA9IFtdOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBw
YXlsb2FkLnBzZXVkb0VsZW1lbnRzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgdmFy
IGVudHJ5UGF5bG9hZCA9IHBheWxvYWQucHNldWRvRWxlbWVudHNbaV07CisgICAgICAgICAgICAg
ICAgcmVzdWx0LnBzZXVkb0VsZW1lbnRzLnB1c2goeyBwc2V1ZG9JZDogZW50cnlQYXlsb2FkLnBz
ZXVkb0lkLCBydWxlczogV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucGFyc2VSdWxlQXJyYXlQ
YXlsb2FkKGVudHJ5UGF5bG9hZC5ydWxlcykgfSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHJlc3VsdC5pbmhlcml0ZWQgPSBbXTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgcGF5bG9hZC5pbmhlcml0ZWQubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICB2YXIg
ZW50cnlQYXlsb2FkID0gcGF5bG9hZC5pbmhlcml0ZWRbaV07CisgICAgICAgICAgICAgICAgdmFy
IGVudHJ5ID0ge307CisgICAgICAgICAgICAgICAgaWYgKCJpbmxpbmVTdHlsZSIgaW4gZW50cnlQ
YXlsb2FkKQorICAgICAgICAgICAgICAgICAgICBlbnRyeS5pbmxpbmVTdHlsZSA9IFdlYkluc3Bl
Y3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uLnBhcnNlUGF5bG9hZChlbnRyeVBheWxvYWQuaW5saW5l
U3R5bGUpOworICAgICAgICAgICAgICAgIGlmICgibWF0Y2hlZENTU1J1bGVzIiBpbiBlbnRyeVBh
eWxvYWQpCisgICAgICAgICAgICAgICAgICAgIGVudHJ5Lm1hdGNoZWRDU1NSdWxlcyA9IFdlYklu
c3BlY3Rvci5DU1NTdHlsZU1vZGVsLnBhcnNlUnVsZUFycmF5UGF5bG9hZChlbnRyeVBheWxvYWQu
bWF0Y2hlZENTU1J1bGVzKTsKKyAgICAgICAgICAgICAgICByZXN1bHQuaW5oZXJpdGVkLnB1c2go
ZW50cnkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAodXNlckNhbGxiYWNrKQor
ICAgICAgICAgICAgICAgIHVzZXJDYWxsYmFjayhyZXN1bHQpOworICAgICAgICB9CisKKyAgICAg
ICAgSW5zcGVjdG9yQmFja2VuZC5nZXRTdHlsZXMobm9kZUlkLCBmYWxzZSwgY2FsbGJhY2suYmlu
ZChudWxsLCB1c2VyQ2FsbGJhY2spKTsKICAgICB9LAogCiAgICAgZ2V0Q29tcHV0ZWRTdHlsZUFz
eW5jOiBmdW5jdGlvbihub2RlSWQsIHVzZXJDYWxsYmFjaykKICAgICB7Ci0gICAgICAgIEluc3Bl
Y3RvckJhY2tlbmQuZ2V0Q29tcHV0ZWRTdHlsZShub2RlSWQsIHVzZXJDYWxsYmFjayk7CisgICAg
ICAgIGZ1bmN0aW9uIGNhbGxiYWNrKHVzZXJDYWxsYmFjaywgc3R5bGVQYXlsb2FkKQorICAgICAg
ICB7CisgICAgICAgICAgICBpZiAoIXN0eWxlUGF5bG9hZCkKKyAgICAgICAgICAgICAgICB1c2Vy
Q2FsbGJhY2sobnVsbCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdXNlckNh
bGxiYWNrKFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uLnBhcnNlUGF5bG9hZChzdHls
ZVBheWxvYWQpKTsKKyAgICAgICAgfQorCisgICAgICAgIEluc3BlY3RvckJhY2tlbmQuZ2V0Q29t
cHV0ZWRTdHlsZShub2RlSWQsIGNhbGxiYWNrLmJpbmQobnVsbCwgdXNlckNhbGxiYWNrKSk7Cisg
ICAgfSwKKworICAgIGdldElubGluZVN0eWxlQXN5bmM6IGZ1bmN0aW9uKG5vZGVJZCwgdXNlckNh
bGxiYWNrKQorICAgIHsKKyAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2sodXNlckNhbGxiYWNrLCBz
dHlsZVBheWxvYWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghc3R5bGVQYXlsb2FkKQor
ICAgICAgICAgICAgICAgIHVzZXJDYWxsYmFjayhudWxsKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICB1c2VyQ2FsbGJhY2soV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRp
b24ucGFyc2VQYXlsb2FkKHN0eWxlUGF5bG9hZCkpOworICAgICAgICB9CisKKyAgICAgICAgSW5z
cGVjdG9yQmFja2VuZC5nZXRJbmxpbmVTdHlsZShub2RlSWQsIGNhbGxiYWNrLmJpbmQobnVsbCwg
dXNlckNhbGxiYWNrKSk7CiAgICAgfSwKIAogICAgIHNldFJ1bGVTZWxlY3RvcjogZnVuY3Rpb24o
cnVsZUlkLCBuZXdDb250ZW50LCBub2RlSWQsIHN1Y2Nlc3NDYWxsYmFjaywgZmFpbHVyZUNhbGxi
YWNrKQpAQCAtNzMsMzkgKzE0Miw4IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5hZGRSdWxlKG5ld0NvbnRlbnQsIG5v
ZGVJZCwgY2FsbGJhY2spOwogICAgIH0sCiAKLSAgICB0b2dnbGVTdHlsZUVuYWJsZWQ6IGZ1bmN0
aW9uKHN0eWxlSWQsIHByb3BlcnR5TmFtZSwgZGlzYWJsZWQsIHVzZXJDYWxsYmFjaykKLSAgICB7
Ci0gICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKG5ld1BheWxvYWQpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGlmICghbmV3UGF5bG9hZCkgewotICAgICAgICAgICAgICAgIHVzZXJDYWxsYmFjayhu
dWxsKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgIHZhciBuZXdTdHlsZSA9IFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uLnBhcnNl
U3R5bGUobmV3UGF5bG9hZCk7Ci0gICAgICAgICAgICB1c2VyQ2FsbGJhY2sobmV3U3R5bGUpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgSW5zcGVjdG9yQmFja2VuZC50b2dnbGVTdHlsZUVuYWJsZWQo
c3R5bGVJZCwgcHJvcGVydHlOYW1lLCBkaXNhYmxlZCwgY2FsbGJhY2spOwotICAgIH0sCi0KICAg
ICBzZXRDU1NUZXh0OiBmdW5jdGlvbihzdHlsZUlkLCBjc3NUZXh0KQogICAgIHsKICAgICAgICAg
SW5zcGVjdG9yQmFja2VuZC5zZXRTdHlsZVRleHQoc3R5bGVJZCwgY3NzVGV4dCk7Ci0gICAgfSwK
LQotICAgIGFwcGx5U3R5bGVUZXh0OiBmdW5jdGlvbihzdHlsZUlkLCBzdHlsZVRleHQsIHByb3Bl
cnR5TmFtZSwgc3VjY2Vzc0NhbGxiYWNrLCBmYWlsdXJlQ2FsbGJhY2spCi0gICAgewotICAgICAg
ICBmdW5jdGlvbiBjYWxsYmFjayhzdWNjZXNzLCBuZXdQYXlsb2FkKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBpZiAoIXN1Y2Nlc3MpCi0gICAgICAgICAgICAgICAgZmFpbHVyZUNhbGxiYWNrKCk7
Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICB2YXIgbmV3U3R5bGUgPSBuZXdQ
YXlsb2FkID8gV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb24ucGFyc2VTdHlsZShuZXdQ
YXlsb2FkKSA6IG51bGw7Ci0gICAgICAgICAgICAgICAgc3VjY2Vzc0NhbGxiYWNrKG5ld1N0eWxl
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIEluc3BlY3RvckJhY2tlbmQu
YXBwbHlTdHlsZVRleHQoc3R5bGVJZCwgc3R5bGVUZXh0LCBwcm9wZXJ0eU5hbWUsIGNhbGxiYWNr
KTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9N
QWdlbnQuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanMKaW5kZXgg
NTE1M2ZiMS4uNDcwZTc3NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0RPTUFnZW50LmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2VudC5q
cwpAQCAtNTI2LDkwICs1MjYsNzggQEAgV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJzLmdldEV2
ZW50TGlzdGVuZXJzRm9yTm9kZUFzeW5jID0gZnVuY3Rpb24obm9kZSwgY2FsbGIKIAogV2ViSW5z
cGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb24gPSBmdW5jdGlvbihwYXlsb2FkKQogewotICAgIHRo
aXMuaWQgPSBwYXlsb2FkLmlkOwotICAgIHRoaXMucGFyZW50U3R5bGVTaGVldElkID0gcGF5bG9h
ZC5wYXJlbnRTdHlsZVNoZWV0SWQ7Ci0gICAgdGhpcy53aWR0aCA9IHBheWxvYWQud2lkdGg7Ci0g
ICAgdGhpcy5oZWlnaHQgPSBwYXlsb2FkLmhlaWdodDsKLSAgICB0aGlzLl9fZGlzYWJsZWRQcm9w
ZXJ0aWVzID0ge307Ci0gICAgdGhpcy5fX2Rpc2FibGVkUHJvcGVydHlWYWx1ZXMgPSB7fTsKLSAg
ICB0aGlzLl9fZGlzYWJsZWRQcm9wZXJ0eVByaW9yaXRpZXMgPSB7fTsKLSAgICBpZiAocGF5bG9h
ZC5kaXNhYmxlZCkgewotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBheWxvYWQuZGlzYWJs
ZWQubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIHZhciBwcm9wZXJ0eSA9IHBheWxvYWQuZGlz
YWJsZWRbaV07Ci0gICAgICAgICAgICB0aGlzLl9fZGlzYWJsZWRQcm9wZXJ0aWVzW3Byb3BlcnR5
Lm5hbWVdID0gdHJ1ZTsKLSAgICAgICAgICAgIHRoaXMuX19kaXNhYmxlZFByb3BlcnR5VmFsdWVz
W3Byb3BlcnR5Lm5hbWVdID0gcHJvcGVydHkudmFsdWU7Ci0gICAgICAgICAgICB0aGlzLl9fZGlz
YWJsZWRQcm9wZXJ0eVByaW9yaXRpZXNbcHJvcGVydHkubmFtZV0gPSBwcm9wZXJ0eS5wcmlvcml0
eTsKLSAgICAgICAgfQotICAgIH0KLQorICAgIHRoaXMuaWQgPSBwYXlsb2FkLnN0eWxlSWQ7Cisg
ICAgdGhpcy5wcm9wZXJ0aWVzID0gcGF5bG9hZC5wcm9wZXJ0aWVzOwogICAgIHRoaXMuX3Nob3J0
aGFuZFZhbHVlcyA9IHBheWxvYWQuc2hvcnRoYW5kVmFsdWVzOwotICAgIHRoaXMuX3Byb3BlcnR5
TWFwID0ge307Ci0gICAgdGhpcy5fbG9uZ2hhbmRQcm9wZXJ0aWVzID0ge307Ci0gICAgdGhpcy5s
ZW5ndGggPSBwYXlsb2FkLnByb3BlcnRpZXMubGVuZ3RoOwotCi0gICAgZm9yICh2YXIgaSA9IDA7
IGkgPCB0aGlzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgIHZhciBwcm9wZXJ0eSA9IHBheWxvYWQu
cHJvcGVydGllc1tpXTsKKyAgICB0aGlzLl9saXZlUHJvcGVydHlNYXAgPSB7fTsgLy8gTElWRSBw
cm9wZXJ0aWVzIChzb3VyY2UtYmFzZWQgb3Igc3R5bGUtYmFzZWQpIDogeyBuYW1lIC0+IENTU1By
b3BlcnR5IH0KKyAgICB0aGlzLl9hbGxQcm9wZXJ0aWVzID0gW107IC8vIEFMTCBwcm9wZXJ0aWVz
OiBbIENTU1Byb3BlcnR5IF0KKyAgICB0aGlzLl9sb25naGFuZFByb3BlcnRpZXMgPSB7fTsgLy8g
c2hvcnRoYW5kTmFtZSAtPiBbIENTU1Byb3BlcnR5IF0KKyAgICB0aGlzLl9fZGlzYWJsZWRQcm9w
ZXJ0aWVzID0ge307IC8vIERJU0FCTEVEIHByb3BlcnRpZXM6IHsgaW5kZXggLT4gQ1NTUHJvcGVy
dHkgfQorICAgIHZhciBwYXlsb2FkUHJvcGVydHlDb3VudCA9IHBheWxvYWQuY3NzUHJvcGVydGll
cy5sZW5ndGg7CisKKyAgICB2YXIgcHJvcGVydHlJbmRleCA9IDA7CisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBwYXlsb2FkUHJvcGVydHlDb3VudDsgKytpKSB7CisgICAgICAgIHZhciBwcm9wZXJ0
eSA9IG5ldyBXZWJJbnNwZWN0b3IuQ1NTUHJvcGVydHkucGFyc2VQYXlsb2FkKHRoaXMsIGksIHBh
eWxvYWQuY3NzUHJvcGVydGllc1tpXSk7CisgICAgICAgIHRoaXMuX2FsbFByb3BlcnRpZXMucHVz
aChwcm9wZXJ0eSk7CisgICAgICAgIGlmIChwcm9wZXJ0eS5kaXNhYmxlZCkKKyAgICAgICAgICAg
IHRoaXMuX19kaXNhYmxlZFByb3BlcnRpZXNbaV0gPSBwcm9wZXJ0eTsKKyAgICAgICAgaWYgKCFw
cm9wZXJ0eS5hY3RpdmUgJiYgIXByb3BlcnR5LnN0eWxlQmFzZWQpCisgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgdmFyIG5hbWUgPSBwcm9wZXJ0eS5uYW1lOwotICAgICAgICB0aGlzW2ld
ID0gbmFtZTsKLSAgICAgICAgdGhpcy5fcHJvcGVydHlNYXBbbmFtZV0gPSBwcm9wZXJ0eTsKKyAg
ICAgICAgdGhpc1twcm9wZXJ0eUluZGV4XSA9IG5hbWU7CisgICAgICAgIHRoaXMuX2xpdmVQcm9w
ZXJ0eU1hcFtuYW1lXSA9IHByb3BlcnR5OwogCiAgICAgICAgIC8vIEluZGV4IGxvbmdoYW5kIHBy
b3BlcnRpZXMuCi0gICAgICAgIGlmIChwcm9wZXJ0eS5zaG9ydGhhbmQpIHsKKyAgICAgICAgaWYg
KHByb3BlcnR5LnNob3J0aGFuZCkgeyAvLyBvbmx5IGZvciBwYXJzZWQKICAgICAgICAgICAgIHZh
ciBsb25naGFuZHMgPSB0aGlzLl9sb25naGFuZFByb3BlcnRpZXNbcHJvcGVydHkuc2hvcnRoYW5k
XTsKICAgICAgICAgICAgIGlmICghbG9uZ2hhbmRzKSB7CiAgICAgICAgICAgICAgICAgbG9uZ2hh
bmRzID0gW107CiAgICAgICAgICAgICAgICAgdGhpcy5fbG9uZ2hhbmRQcm9wZXJ0aWVzW3Byb3Bl
cnR5LnNob3J0aGFuZF0gPSBsb25naGFuZHM7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBs
b25naGFuZHMucHVzaChuYW1lKTsKKyAgICAgICAgICAgIGxvbmdoYW5kcy5wdXNoKHByb3BlcnR5
KTsKICAgICAgICAgfQorICAgICAgICArK3Byb3BlcnR5SW5kZXg7CiAgICAgfQorICAgIHRoaXMu
bGVuZ3RoID0gcHJvcGVydHlJbmRleDsKIH0KIAotV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFy
YXRpb24ucGFyc2VTdHlsZSA9IGZ1bmN0aW9uKHBheWxvYWQpCitXZWJJbnNwZWN0b3IuQ1NTU3R5
bGVEZWNsYXJhdGlvbi5wYXJzZVBheWxvYWQgPSBmdW5jdGlvbihwYXlsb2FkKQogewogICAgIHJl
dHVybiBuZXcgV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb24ocGF5bG9hZCk7CiB9CiAK
LVdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uLnBhcnNlUnVsZSA9IGZ1bmN0aW9uKHBh
eWxvYWQpCi17Ci0gICAgdmFyIHJ1bGUgPSB7fTsKLSAgICBydWxlLmlkID0gcGF5bG9hZC5pZDsK
LSAgICBydWxlLnNlbGVjdG9yVGV4dCA9IHBheWxvYWQuc2VsZWN0b3JUZXh0OwotICAgIHJ1bGUu
c3R5bGUgPSBuZXcgV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb24ocGF5bG9hZC5zdHls
ZSk7Ci0gICAgcnVsZS5zdHlsZS5wYXJlbnRSdWxlID0gcnVsZTsKLSAgICBydWxlLmlzVXNlckFn
ZW50ID0gcGF5bG9hZC5pc1VzZXJBZ2VudDsKLSAgICBydWxlLmlzVXNlciA9IHBheWxvYWQuaXNV
c2VyOwotICAgIHJ1bGUuaXNWaWFJbnNwZWN0b3IgPSBwYXlsb2FkLmlzVmlhSW5zcGVjdG9yOwot
ICAgIHJ1bGUuc291cmNlTGluZSA9IHBheWxvYWQuc291cmNlTGluZTsKLSAgICBydWxlLmRvY3Vt
ZW50VVJMID0gcGF5bG9hZC5kb2N1bWVudFVSTDsKLSAgICBpZiAocGF5bG9hZC5wYXJlbnRTdHls
ZVNoZWV0KQotICAgICAgICBydWxlLnBhcmVudFN0eWxlU2hlZXQgPSB7IGhyZWY6IHBheWxvYWQu
cGFyZW50U3R5bGVTaGVldC5ocmVmIH07Ci0KLSAgICByZXR1cm4gcnVsZTsKLX0KLQogV2ViSW5z
cGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb24ucHJvdG90eXBlID0geworICAgIGdldCBhbGxQcm9w
ZXJ0aWVzKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9hbGxQcm9wZXJ0aWVzOworICAg
IH0sCisKKyAgICBnZXRMaXZlUHJvcGVydHk6IGZ1bmN0aW9uKG5hbWUpCisgICAgeworICAgICAg
ICByZXR1cm4gdGhpcy5fbGl2ZVByb3BlcnR5TWFwW25hbWVdOworICAgIH0sCisKICAgICBnZXRQ
cm9wZXJ0eVZhbHVlOiBmdW5jdGlvbihuYW1lKQogICAgIHsKLSAgICAgICAgdmFyIHByb3BlcnR5
ID0gdGhpcy5fcHJvcGVydHlNYXBbbmFtZV07CisgICAgICAgIHZhciBwcm9wZXJ0eSA9IHRoaXMu
X2xpdmVQcm9wZXJ0eU1hcFtuYW1lXTsKICAgICAgICAgcmV0dXJuIHByb3BlcnR5ID8gcHJvcGVy
dHkudmFsdWUgOiAiIjsKICAgICB9LAogCiAgICAgZ2V0UHJvcGVydHlQcmlvcml0eTogZnVuY3Rp
b24obmFtZSkKICAgICB7Ci0gICAgICAgIHZhciBwcm9wZXJ0eSA9IHRoaXMuX3Byb3BlcnR5TWFw
W25hbWVdOworICAgICAgICB2YXIgcHJvcGVydHkgPSB0aGlzLl9saXZlUHJvcGVydHlNYXBbbmFt
ZV07CiAgICAgICAgIHJldHVybiBwcm9wZXJ0eSA/IHByb3BlcnR5LnByaW9yaXR5IDogIiI7CiAg
ICAgfSwKIAogICAgIGdldFByb3BlcnR5U2hvcnRoYW5kOiBmdW5jdGlvbihuYW1lKQogICAgIHsK
LSAgICAgICAgdmFyIHByb3BlcnR5ID0gdGhpcy5fcHJvcGVydHlNYXBbbmFtZV07CisgICAgICAg
IHZhciBwcm9wZXJ0eSA9IHRoaXMuX2xpdmVQcm9wZXJ0eU1hcFtuYW1lXTsKICAgICAgICAgcmV0
dXJuIHByb3BlcnR5ID8gcHJvcGVydHkuc2hvcnRoYW5kIDogIiI7CiAgICAgfSwKIAogICAgIGlz
UHJvcGVydHlJbXBsaWNpdDogZnVuY3Rpb24obmFtZSkKICAgICB7Ci0gICAgICAgIHZhciBwcm9w
ZXJ0eSA9IHRoaXMuX3Byb3BlcnR5TWFwW25hbWVdOworICAgICAgICB2YXIgcHJvcGVydHkgPSB0
aGlzLl9saXZlUHJvcGVydHlNYXBbbmFtZV07CiAgICAgICAgIHJldHVybiBwcm9wZXJ0eSA/IHBy
b3BlcnR5LmltcGxpY2l0IDogIiI7CiAgICAgfSwKIApAQCAtNjUxLDcgKzYzOSw4IEBAIFdlYklu
c3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uLnByb3RvdHlwZSA9IHsKIAogICAgIGdldFNob3J0
aGFuZFZhbHVlOiBmdW5jdGlvbihzaG9ydGhhbmRQcm9wZXJ0eSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLl9zaG9ydGhhbmRWYWx1ZXNbc2hvcnRoYW5kUHJvcGVydHldOworICAgICAgICB2
YXIgcHJvcGVydHkgPSB0aGlzLmdldExpdmVQcm9wZXJ0eShzaG9ydGhhbmRQcm9wZXJ0eSk7Cisg
ICAgICAgIHJldHVybiBwcm9wZXJ0eSA/IHByb3BlcnR5LnZhbHVlIDogdGhpcy5fc2hvcnRoYW5k
VmFsdWVzW3Nob3J0aGFuZFByb3BlcnR5XTsKICAgICB9LAogCiAgICAgZ2V0U2hvcnRoYW5kUHJp
b3JpdHk6IGZ1bmN0aW9uKHNob3J0aGFuZFByb3BlcnR5KQpAQCAtNjYyLDYgKzY1MSwxNjYgQEAg
V2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb24ucHJvdG90eXBlID0gewogCiAgICAgICAg
IHZhciBsb25naGFuZHMgPSB0aGlzLl9sb25naGFuZFByb3BlcnRpZXNbc2hvcnRoYW5kUHJvcGVy
dHldOwogICAgICAgICByZXR1cm4gbG9uZ2hhbmRzID8gdGhpcy5nZXRQcm9wZXJ0eVByaW9yaXR5
KGxvbmdoYW5kc1swXSkgOiBudWxsOworICAgIH0sCisKKyAgICBhcHBlbmRQcm9wZXJ0eTogZnVu
Y3Rpb24ocHJvcGVydHlOYW1lLCBwcm9wZXJ0eVZhbHVlLCB1c2VyQ2FsbGJhY2spCisgICAgewor
ICAgICAgICBmdW5jdGlvbiBzZXRQcm9wZXJ0eUNhbGxiYWNrKHVzZXJDYWxsYmFjaywgc3VjY2Vz
cywgc3R5bGVQYXlsb2FkKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIXN1Y2Nlc3MpCisg
ICAgICAgICAgICAgICAgdXNlckNhbGxiYWNrKG51bGwpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHVzZXJDYWxsYmFjayhXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlv
bi5wYXJzZVBheWxvYWQoc3R5bGVQYXlsb2FkKSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBG
SVhNRShhcGF2bG92KTogdGhpcyBzaG91bGQgYmUgbWlncmF0ZWQgdG8gdGhlIG5ldyBJbnNwZWN0
b3JDU1NBZ2VudCBBUEkgb25jZSBpdCBpcyBlbmFibGVkLgorICAgICAgICBJbnNwZWN0b3JCYWNr
ZW5kLmFwcGx5U3R5bGVUZXh0KHRoaXMuaWQsIHByb3BlcnR5TmFtZSArICI6ICIgKyBwcm9wZXJ0
eVZhbHVlICsgIjsiLCBwcm9wZXJ0eU5hbWUsIHNldFByb3BlcnR5Q2FsbGJhY2suYmluZCh0aGlz
LCB1c2VyQ2FsbGJhY2spKTsKKyAgICB9LAorCisgICAgcHJvcGVydHlBdDogZnVuY3Rpb24oaW5k
ZXgpCisgICAgeworICAgICAgICByZXR1cm4gKGluZGV4IDwgdGhpcy5hbGxQcm9wZXJ0aWVzLmxl
bmd0aCkgPyB0aGlzLmFsbFByb3BlcnRpZXNbaW5kZXhdIDogbnVsbDsKKyAgICB9Cit9CisKK1dl
Ykluc3BlY3Rvci5DU1NSdWxlID0gZnVuY3Rpb24ocGF5bG9hZCkKK3sKKyAgICB0aGlzLmlkID0g
cGF5bG9hZC5ydWxlSWQ7CisgICAgdGhpcy5zZWxlY3RvclRleHQgPSBwYXlsb2FkLnNlbGVjdG9y
VGV4dDsKKyAgICB0aGlzLnNvdXJjZUxpbmUgPSBwYXlsb2FkLnNvdXJjZUxpbmU7CisgICAgdGhp
cy5zb3VyY2VVUkwgPSBwYXlsb2FkLnNvdXJjZVVSTDsKKyAgICB0aGlzLm9yaWdpbiA9IHBheWxv
YWQub3JpZ2luOworICAgIHRoaXMuc3R5bGUgPSBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJh
dGlvbi5wYXJzZVBheWxvYWQocGF5bG9hZC5zdHlsZSk7CisgICAgdGhpcy5zdHlsZS5wYXJlbnRS
dWxlID0gdGhpczsKK30KKworV2ViSW5zcGVjdG9yLkNTU1J1bGUucGFyc2VQYXlsb2FkID0gZnVu
Y3Rpb24ocGF5bG9hZCkKK3sKKyAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5DU1NSdWxlKHBh
eWxvYWQpOworfQorCitXZWJJbnNwZWN0b3IuQ1NTUnVsZS5wcm90b3R5cGUgPSB7CisgICAgZ2V0
IGlzVXNlckFnZW50KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLm9yaWdpbiA9PT0gInVz
ZXItYWdlbnQiOworICAgIH0sCisKKyAgICBnZXQgaXNVc2VyKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiB0aGlzLm9yaWdpbiA9PT0gInVzZXIiOworICAgIH0sCisKKyAgICBnZXQgaXNWaWFJbnNw
ZWN0b3IoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMub3JpZ2luID09PSAiaW5zcGVjdG9y
IjsKKyAgICB9LAorCisgICAgZ2V0IGlzUmVndWxhcigpCisgICAgeworICAgICAgICByZXR1cm4g
dGhpcy5vcmlnaW4gPT09ICIiOworICAgIH0KK30KKworV2ViSW5zcGVjdG9yLkNTU1Byb3BlcnR5
ID0gZnVuY3Rpb24ob3duZXJTdHlsZSwgaW5kZXgsIG5hbWUsIHZhbHVlLCBwcmlvcml0eSwgc3Rh
dHVzLCBwYXJzZWRPaywgaW1wbGljaXQsIHNob3J0aGFuZCwgdGV4dCkKK3sKKyAgICB0aGlzLm93
bmVyU3R5bGUgPSBvd25lclN0eWxlOworICAgIHRoaXMuaW5kZXggPSBpbmRleDsKKyAgICB0aGlz
Lm5hbWUgPSBuYW1lOworICAgIHRoaXMudmFsdWUgPSB2YWx1ZTsKKyAgICB0aGlzLnByaW9yaXR5
ID0gcHJpb3JpdHk7CisgICAgdGhpcy5zdGF0dXMgPSBzdGF0dXM7CisgICAgdGhpcy5wYXJzZWRP
ayA9IHBhcnNlZE9rOworICAgIHRoaXMuaW1wbGljaXQgPSBpbXBsaWNpdDsKKyAgICB0aGlzLnNo
b3J0aGFuZCA9IHNob3J0aGFuZDsKKyAgICB0aGlzLnRleHQgPSB0ZXh0OworfQorCitXZWJJbnNw
ZWN0b3IuQ1NTUHJvcGVydHkucGFyc2VQYXlsb2FkID0gZnVuY3Rpb24ob3duZXJTdHlsZSwgaW5k
ZXgsIHBheWxvYWQpCit7CisgICAgdmFyIHJlc3VsdCA9IG5ldyBXZWJJbnNwZWN0b3IuQ1NTUHJv
cGVydHkoCisgICAgICAgIG93bmVyU3R5bGUsIGluZGV4LCBwYXlsb2FkLm5hbWUsIHBheWxvYWQu
dmFsdWUsIHBheWxvYWQucHJpb3JpdHksIHBheWxvYWQuc3RhdHVzLCBwYXlsb2FkLnBhcnNlZE9r
LCBwYXlsb2FkLmltcGxpY2l0LCBwYXlsb2FkLnNob3J0aGFuZE5hbWUsIHBheWxvYWQudGV4dCk7
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworV2ViSW5zcGVjdG9yLkNTU1Byb3BlcnR5LnByb3Rv
dHlwZSA9IHsKKyAgICBnZXQgcHJvcGVydHlUZXh0KCkKKyAgICB7CisgICAgICAgIGlmICh0aGlz
LnRleHQgIT09IHVuZGVmaW5lZCkKKyAgICAgICAgICAgIHJldHVybiB0aGlzLnRleHQ7CisKKyAg
ICAgICAgcmV0dXJuIHRoaXMubmFtZSArICI6ICIgKyB0aGlzLnZhbHVlICsgKHRoaXMucHJpb3Jp
dHkgPyAiICEiICsgdGhpcy5wcmlvcml0eSA6ICIiKSArICI7IjsKKyAgICB9LAorCisgICAgZ2V0
IGlzTGl2ZSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmUgfHwgdGhpcy5zdHls
ZUJhc2VkOworICAgIH0sCisKKyAgICBnZXQgYWN0aXZlKCkKKyAgICB7CisgICAgICAgIHJldHVy
biB0aGlzLnN0YXR1cyA9PT0gImFjdGl2ZSI7CisgICAgfSwKKworICAgIGdldCBzdHlsZUJhc2Vk
KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLnN0YXR1cyA9PT0gInN0eWxlIjsKKyAgICB9
LAorCisgICAgZ2V0IGluYWN0aXZlKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLnN0YXR1
cyA9PT0gImluYWN0aXZlIjsKKyAgICB9LAorCisgICAgZ2V0IGRpc2FibGVkKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiB0aGlzLnN0YXR1cyA9PT0gImRpc2FibGVkIjsKKyAgICB9LAorCisgICAg
Ly8gUmVwbGFjZXMgInByb3BlcnR5TmFtZTogcHJvcGVydHlWYWx1ZSBbIWltcG9ydGFudF07IiBp
biB0aGUgc3R5bGVzaGVldCBieSBhbiBhcmJpdHJhcnkgcHJvcGVydHlUZXh0LgorICAgIHNldFRl
eHQ6IGZ1bmN0aW9uKHByb3BlcnR5VGV4dCwgdXNlckNhbGxiYWNrKQorICAgIHsKKyAgICAgICAg
ZnVuY3Rpb24gY2FsbGJhY2sodXNlckNhbGxiYWNrLCBzdWNjZXNzLCBzdHlsZVBheWxvYWQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGlmICghdXNlckNhbGxiYWNrKQorICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIGlmICghc3VjY2VzcykKKyAgICAgICAgICAgICAgICB1c2Vy
Q2FsbGJhY2sobnVsbCk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICB2YXIg
c3R5bGUgPSBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvbi5wYXJzZVBheWxvYWQoc3R5
bGVQYXlsb2FkKTsKKyAgICAgICAgICAgICAgICB1c2VyQ2FsbGJhY2soc3R5bGUpOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0aGlzLm93bmVyU3R5bGUpCisgICAg
ICAgICAgICB0aHJvdyAiTm8gb3duZXJTdHlsZSBmb3IgcHJvcGVydHkiOworICAgICAgICBJbnNw
ZWN0b3JCYWNrZW5kLmFwcGx5U3R5bGVUZXh0KHRoaXMub3duZXJTdHlsZS5pZCwgcHJvcGVydHlU
ZXh0LCB0aGlzLm5hbWUsIGNhbGxiYWNrLmJpbmQodGhpcywgdXNlckNhbGxiYWNrKSk7CisgICAg
fSwKKworICAgIHNldFZhbHVlOiBmdW5jdGlvbihuZXdWYWx1ZSwgdXNlckNhbGxiYWNrKQorICAg
IHsKKyAgICAgICAgdmFyIHRleHQgPSB0aGlzLm5hbWUgKyAiOiAiICsgbmV3VmFsdWUgKyAodGhp
cy5wcmlvcml0eSA/ICIgISIgKyB0aGlzLnByaW9yaXR5IDogIiIpICsgIjsiCisgICAgICAgIHRo
aXMuc2V0VGV4dCh0ZXh0LCB1c2VyQ2FsbGJhY2spOworICAgIH0sCisKKyAgICBzZXREaXNhYmxl
ZDogZnVuY3Rpb24oZGlzYWJsZWQsIHVzZXJDYWxsYmFjaykKKyAgICB7CisgICAgICAgIGlmICgh
dGhpcy5vd25lclN0eWxlICYmIHVzZXJDYWxsYmFjaykKKyAgICAgICAgICAgIHVzZXJDYWxsYmFj
ayhudWxsKTsKKyAgICAgICAgaWYgKGRpc2FibGVkID09PSB0aGlzLmRpc2FibGVkICYmIHVzZXJD
YWxsYmFjaykKKyAgICAgICAgICAgIHVzZXJDYWxsYmFjayh0aGlzLm93bmVyU3R5bGUpOworCisg
ICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKHVzZXJDYWxsYmFjaywgc3R5bGVQYXlsb2FkKQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAoIXVzZXJDYWxsYmFjaykKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICBpZiAoIXN0eWxlUGF5bG9hZCkKKyAgICAgICAgICAgICAgICB1
c2VyQ2FsbGJhY2sobnVsbCk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICB2
YXIgc3R5bGUgPSBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvbi5wYXJzZVBheWxvYWQo
c3R5bGVQYXlsb2FkKTsKKyAgICAgICAgICAgICAgICB1c2VyQ2FsbGJhY2soc3R5bGUpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIEluc3BlY3RvckJhY2tlbmQudG9nZ2xlU3R5
bGVFbmFibGVkKHRoaXMub3duZXJTdHlsZS5pZCwgdGhpcy5uYW1lLCBkaXNhYmxlZCwgY2FsbGJh
Y2suYmluZCh0aGlzLCB1c2VyQ2FsbGJhY2spKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9NZXRyaWNzU2lkZWJhclBhbmUuanMgYi9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvTWV0cmljc1NpZGViYXJQYW5lLmpzCmluZGV4IDE4YmMyNDAu
LjM3ODRjZTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9NZXRyaWNz
U2lkZWJhclBhbmUuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL01ldHJpY3NT
aWRlYmFyUGFuZS5qcwpAQCAtNDYsMjQgKzQ2LDI0IEBAIFdlYkluc3BlY3Rvci5NZXRyaWNzU2lk
ZWJhclBhbmUucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgdmFyIHNlbGYgPSB0
aGlzOwotICAgICAgICB2YXIgY2FsbGJhY2sgPSBmdW5jdGlvbihzdHlsZVBheWxvYWQpIHsKLSAg
ICAgICAgICAgIGlmICghc3R5bGVQYXlsb2FkKQorICAgICAgICB2YXIgY2FsbGJhY2sgPSBmdW5j
dGlvbihzdHlsZSkgeworICAgICAgICAgICAgaWYgKCFzdHlsZSkKICAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICB2YXIgc3R5bGUgPSBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNs
YXJhdGlvbi5wYXJzZVN0eWxlKHN0eWxlUGF5bG9hZCk7CiAgICAgICAgICAgICBzZWxmLl91cGRh
dGUoc3R5bGUpOwogICAgICAgICB9OwotICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmdldENvbXB1
dGVkU3R5bGUobm9kZS5pZCwgY2FsbGJhY2spOworICAgICAgICBXZWJJbnNwZWN0b3IuY3NzTW9k
ZWwuZ2V0Q29tcHV0ZWRTdHlsZUFzeW5jKG5vZGUuaWQsIGNhbGxiYWNrKTsKIAotICAgICAgICB2
YXIgaW5saW5lU3R5bGVDYWxsYmFjayA9IGZ1bmN0aW9uKHN0eWxlUGF5bG9hZCkgewotICAgICAg
ICAgICAgaWYgKCFzdHlsZVBheWxvYWQpCisgICAgICAgIHZhciBpbmxpbmVTdHlsZUNhbGxiYWNr
ID0gZnVuY3Rpb24oc3R5bGUpIHsKKyAgICAgICAgICAgIGlmICghc3R5bGUpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgc2VsZi5faW5saW5lU3R5bGVJZCA9IHN0eWxlUGF5
bG9hZC5pZDsKKyAgICAgICAgICAgIHNlbGYuaW5saW5lU3R5bGUgPSBzdHlsZTsKICAgICAgICAg
fTsKLSAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5nZXRJbmxpbmVTdHlsZShub2RlLmlkLCBpbmxp
bmVTdHlsZUNhbGxiYWNrKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLmdldElubGlu
ZVN0eWxlQXN5bmMobm9kZS5pZCwgaW5saW5lU3R5bGVDYWxsYmFjayk7CiAgICAgfSwKIAogICAg
IF91cGRhdGU6IGZ1bmN0aW9uKHN0eWxlKQogICAgIHsKKyAgICAgICAgLy8gVXBkYXRpbmcgd2l0
aCBjb21wdXRlZCBzdHlsZS4KICAgICAgICAgdmFyIG1ldHJpY3NFbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgIG1ldHJpY3NFbGVtZW50LmNsYXNzTmFtZSA9
ICJtZXRyaWNzIjsKIApAQCAtMTE2LDIzICsxMTYsMjMgQEAgV2ViSW5zcGVjdG9yLk1ldHJpY3NT
aWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYm94
ZXMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIHZhciBuYW1lID0gYm94ZXNbaV07CiAKLSAg
ICAgICAgICAgIGlmIChuYW1lID09PSAibWFyZ2luIiAmJiBub01hcmdpbkRpc3BsYXlUeXBlW3N0
eWxlLmRpc3BsYXldKQorICAgICAgICAgICAgaWYgKG5hbWUgPT09ICJtYXJnaW4iICYmIG5vTWFy
Z2luRGlzcGxheVR5cGVbc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgiZGlzcGxheSIpXSkKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmIChuYW1lID09PSAicGFkZGluZyIg
JiYgbm9QYWRkaW5nRGlzcGxheVR5cGVbc3R5bGUuZGlzcGxheV0pCisgICAgICAgICAgICBpZiAo
bmFtZSA9PT0gInBhZGRpbmciICYmIG5vUGFkZGluZ0Rpc3BsYXlUeXBlW3N0eWxlLmdldFByb3Bl
cnR5VmFsdWUoImRpc3BsYXkiKV0pCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
ICAgICBpZiAobmFtZSA9PT0gInBvc2l0aW9uIiAmJiBub1Bvc2l0aW9uVHlwZVtzdHlsZS5wb3Np
dGlvbl0pCisgICAgICAgICAgICBpZiAobmFtZSA9PT0gInBvc2l0aW9uIiAmJiBub1Bvc2l0aW9u
VHlwZVtzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCJwb3NpdGlvbiIpXSkKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKIAogICAgICAgICAgICAgdmFyIGJveEVsZW1lbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgICAgIGJveEVsZW1lbnQuY2xhc3NOYW1lID0gbmFt
ZTsKIAogICAgICAgICAgICAgaWYgKG5hbWUgPT09ICJjb250ZW50IikgewotICAgICAgICAgICAg
ICAgIHZhciB3aWR0aCA9IHN0eWxlLndpZHRoLnJlcGxhY2UoL3B4JC8sICIiKTsKKyAgICAgICAg
ICAgICAgICB2YXIgd2lkdGggPSBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCJ3aWR0aCIpLnJlcGxh
Y2UoL3B4JC8sICIiKTsKICAgICAgICAgICAgICAgICB2YXIgd2lkdGhFbGVtZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAgICAgICAgICAgICAgIHdpZHRoRWxlbWVudC50
ZXh0Q29udGVudCA9IHdpZHRoOwogICAgICAgICAgICAgICAgIHdpZHRoRWxlbWVudC5hZGRFdmVu
dExpc3RlbmVyKCJkYmxjbGljayIsIHRoaXMuc3RhcnRFZGl0aW5nLmJpbmQodGhpcywgd2lkdGhF
bGVtZW50LCAid2lkdGgiLCAid2lkdGgiKSwgZmFsc2UpOwogCi0gICAgICAgICAgICAgICAgdmFy
IGhlaWdodCA9IHN0eWxlLmhlaWdodC5yZXBsYWNlKC9weCQvLCAiIik7CisgICAgICAgICAgICAg
ICAgdmFyIGhlaWdodCA9IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoImhlaWdodCIpLnJlcGxhY2Uo
L3B4JC8sICIiKTsKICAgICAgICAgICAgICAgICB2YXIgaGVpZ2h0RWxlbWVudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKICAgICAgICAgICAgICAgICBoZWlnaHRFbGVtZW50LnRl
eHRDb250ZW50ID0gaGVpZ2h0OwogICAgICAgICAgICAgICAgIGhlaWdodEVsZW1lbnQuYWRkRXZl
bnRMaXN0ZW5lcigiZGJsY2xpY2siLCB0aGlzLnN0YXJ0RWRpdGluZy5iaW5kKHRoaXMsIGhlaWdo
dEVsZW1lbnQsICJoZWlnaHQiLCAiaGVpZ2h0IiksIGZhbHNlKTsKQEAgLTE4NSw3ICsxODUsNyBA
QCBXZWJJbnNwZWN0b3IuTWV0cmljc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKIAogICAgIGVk
aXRpbmdDb21taXR0ZWQ6IGZ1bmN0aW9uKGVsZW1lbnQsIHVzZXJJbnB1dCwgcHJldmlvdXNDb250
ZW50LCBjb250ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9pbmxpbmVTdHlsZUlkKSB7
CisgICAgICAgIGlmICghdGhpcy5pbmxpbmVTdHlsZSkgewogICAgICAgICAgICAgLy8gRWxlbWVu
dCBoYXMgbm8gcmVuZGVyZXIuCiAgICAgICAgICAgICByZXR1cm4gdGhpcy5lZGl0aW5nQ2FuY2Vs
bGVkKGVsZW1lbnQsIGNvbnRleHQpOyAvLyBub3RoaW5nIGNoYW5nZWQsIHNvIGNhbmNlbAogICAg
ICAgICB9CkBAIC0yMDMsMTQgKzIwMywzNiBAQCBXZWJJbnNwZWN0b3IuTWV0cmljc1NpZGViYXJQ
YW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHVzZXJJbnB1dCArPSAicHgiOwogCiAgICAg
ICAgIHZhciBzZWxmID0gdGhpczsKLSAgICAgICAgdmFyIGNhbGxiYWNrID0gZnVuY3Rpb24oc3Vj
Y2VzcykgewotICAgICAgICAgICAgaWYgKCFzdWNjZXNzKQorICAgICAgICB2YXIgY2FsbGJhY2sg
PSBmdW5jdGlvbihzdHlsZSkgeworICAgICAgICAgICAgaWYgKCFzdHlsZSkKICAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICBzZWxmLmlubGluZVN0eWxlID0gc3R5bGU7CiAgICAg
ICAgICAgICBzZWxmLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycygibWV0cmljcyBlZGl0ZWQiKTsK
ICAgICAgICAgICAgIHNlbGYudXBkYXRlKCk7CiAgICAgICAgIH07CiAKLSAgICAgICAgSW5zcGVj
dG9yQmFja2VuZC5zZXRTdHlsZVByb3BlcnR5KHRoaXMuX2lubGluZVN0eWxlSWQsIGNvbnRleHQu
c3R5bGVQcm9wZXJ0eSwgdXNlcklucHV0LCBjYWxsYmFjayk7CisgICAgICAgIGZ1bmN0aW9uIHNl
dEVuYWJsZWRWYWx1ZUNhbGxiYWNrKGNvbnRleHQsIHN0eWxlKQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgcHJvcGVydHkgPSBzdHlsZS5nZXRMaXZlUHJvcGVydHkoY29udGV4dC5zdHlsZVBy
b3BlcnR5KTsKKyAgICAgICAgICAgIGlmICghcHJvcGVydHkpCisgICAgICAgICAgICAgICAgc3R5
bGUuYXBwZW5kUHJvcGVydHkoY29udGV4dC5zdHlsZVByb3BlcnR5LCB1c2VySW5wdXQsIGNhbGxi
YWNrKTsKKyAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcHJvcGVydHkuc2V0VmFs
dWUodXNlcklucHV0LCBjYWxsYmFjayk7CisgICAgICAgIH0KKworICAgICAgICB2YXIgYWxsUHJv
cGVydGllcyA9IHRoaXMuaW5saW5lU3R5bGUuYWxsUHJvcGVydGllczsKKyAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBhbGxQcm9wZXJ0aWVzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB2
YXIgcHJvcGVydHkgPSBhbGxQcm9wZXJ0aWVzW2ldOworICAgICAgICAgICAgaWYgKHByb3BlcnR5
Lm5hbWUgIT09IGNvbnRleHQuc3R5bGVQcm9wZXJ0eSB8fCBwcm9wZXJ0eS5pbmFjdGl2ZSkKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmIChwcm9wZXJ0eS5kaXNhYmxl
ZCkKKyAgICAgICAgICAgICAgICBwcm9wZXJ0eS5zZXREaXNhYmxlZChmYWxzZSwgc2V0RW5hYmxl
ZFZhbHVlQ2FsbGJhY2suYmluZChudWxsLCBjb250ZXh0KSk7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgcHJvcGVydHkuc2V0VmFsdWUodXNlcklucHV0LCBjYWxsYmFjayk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB0aGlzLmlubGluZVN0eWxl
LmFwcGVuZFByb3BlcnR5KGNvbnRleHQuc3R5bGVQcm9wZXJ0eSwgdXNlcklucHV0LCBjYWxsYmFj
ayk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
U3R5bGVzU2lkZWJhclBhbmUuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVz
U2lkZWJhclBhbmUuanMKaW5kZXggZDU1NmU2OC4uNzVjNjY4OCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzCisrKyBiL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcwpAQCAtMTU1LDcgKzE1NSw3
IEBAIFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CiAgICAgICAg
IGlmIChyZWZyZXNoKQogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLmdldENvbXB1
dGVkU3R5bGVBc3luYyhub2RlLmlkLCBjb21wdXRlZFN0eWxlQ2FsbGJhY2suYmluZCh0aGlzKSk7
CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5jc3NNb2RlbC5nZXRTdHls
ZXNBc3luYyhub2RlLmlkLCAhV2ViSW5zcGVjdG9yLmFwcGxpY2F0aW9uU2V0dGluZ3Muc2hvd1Vz
ZXJBZ2VudFN0eWxlcywgc3R5bGVzQ2FsbGJhY2suYmluZCh0aGlzKSk7CisgICAgICAgICAgICBX
ZWJJbnNwZWN0b3IuY3NzTW9kZWwuZ2V0U3R5bGVzQXN5bmMobm9kZS5pZCwgc3R5bGVzQ2FsbGJh
Y2suYmluZCh0aGlzKSk7CiAgICAgfSwKIAogICAgIF9yZWZyZXNoVXBkYXRlOiBmdW5jdGlvbihu
b2RlLCBjb21wdXRlZFN0eWxlLCBlZGl0ZWRTZWN0aW9uKQpAQCAtMTk2LDggKzE5Niw4IEBAIFdl
Ykluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgICAg
IC8vIEFkZCBydWxlcyBpbiByZXZlcnNlIG9yZGVyIHRvIG1hdGNoIHRoZSBjYXNjYWRlIG9yZGVy
LgogICAgICAgICAgICAgZm9yICh2YXIgaiA9IHBzZXVkb0VsZW1lbnRDU1NSdWxlcy5ydWxlcy5s
ZW5ndGggLSAxOyBqID49IDA7IC0taikgewotICAgICAgICAgICAgICAgIHZhciBydWxlID0gV2Vi
SW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb24ucGFyc2VSdWxlKHBzZXVkb0VsZW1lbnRDU1NS
dWxlcy5ydWxlc1tqXSk7Ci0gICAgICAgICAgICAgICAgc3R5bGVSdWxlcy5wdXNoKHsgc3R5bGU6
IHJ1bGUuc3R5bGUsIHNlbGVjdG9yVGV4dDogcnVsZS5zZWxlY3RvclRleHQsIHBhcmVudFN0eWxl
U2hlZXQ6IHJ1bGUucGFyZW50U3R5bGVTaGVldCwgcnVsZTogcnVsZSB9KTsKKyAgICAgICAgICAg
ICAgICB2YXIgcnVsZSA9IHBzZXVkb0VsZW1lbnRDU1NSdWxlcy5ydWxlc1tqXTsKKyAgICAgICAg
ICAgICAgICBzdHlsZVJ1bGVzLnB1c2goeyBzdHlsZTogcnVsZS5zdHlsZSwgc2VsZWN0b3JUZXh0
OiBydWxlLnNlbGVjdG9yVGV4dCwgc291cmNlVVJMOiBydWxlLnNvdXJjZVVSTCwgcnVsZTogcnVs
ZSB9KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHVzZWRQcm9wZXJ0aWVzID0ge307CiAg
ICAgICAgICAgICBkaXNhYmxlZENvbXB1dGVkUHJvcGVydGllcyA9IHt9OwpAQCAtMjA4LDcgKzIw
OCw3IEBAIFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CiAKICAg
ICBfcmVmcmVzaFN0eWxlUnVsZXM6IGZ1bmN0aW9uKHNlY3Rpb25zLCBjb21wdXRlZFN0eWxlKQog
ICAgIHsKLSAgICAgICAgdmFyIG5vZGVDb21wdXRlZFN0eWxlID0gbmV3IFdlYkluc3BlY3Rvci5D
U1NTdHlsZURlY2xhcmF0aW9uKGNvbXB1dGVkU3R5bGUpOworICAgICAgICB2YXIgbm9kZUNvbXB1
dGVkU3R5bGUgPSBjb21wdXRlZFN0eWxlOwogICAgICAgICB2YXIgc3R5bGVSdWxlcyA9IFtdOwog
ICAgICAgICBmb3IgKHZhciBpID0gMDsgc2VjdGlvbnMgJiYgaSA8IHNlY3Rpb25zLmxlbmd0aDsg
KytpKSB7CiAgICAgICAgICAgICB2YXIgc2VjdGlvbiA9IHNlY3Rpb25zW2ldOwpAQCAtMjI0LDcg
KzIyNCw3IEBAIFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CiAK
ICAgICBfcmVidWlsZFN0eWxlUnVsZXM6IGZ1bmN0aW9uKG5vZGUsIHN0eWxlcykKICAgICB7Ci0g
ICAgICAgIHZhciBub2RlQ29tcHV0ZWRTdHlsZSA9IG5ldyBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVE
ZWNsYXJhdGlvbihzdHlsZXMuY29tcHV0ZWRTdHlsZSk7CisgICAgICAgIHZhciBub2RlQ29tcHV0
ZWRTdHlsZSA9IHN0eWxlcy5jb21wdXRlZFN0eWxlOwogICAgICAgICB0aGlzLnNlY3Rpb25zID0g
e307CiAKICAgICAgICAgdmFyIHN0eWxlUnVsZXMgPSBbXTsKQEAgLTIzMyw3ICsyMzMsNyBAQCBX
ZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUucHJvdG90eXBlID0gewogCiAgICAgICAgIHZh
ciBzdHlsZUF0dHJpYnV0ZXMgPSB7fTsKICAgICAgICAgZm9yICh2YXIgbmFtZSBpbiBzdHlsZXMu
c3R5bGVBdHRyaWJ1dGVzKSB7Ci0gICAgICAgICAgICB2YXIgYXR0clN0eWxlID0geyBzdHlsZTog
bmV3IFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uKHN0eWxlcy5zdHlsZUF0dHJpYnV0
ZXNbbmFtZV0pLCBlZGl0YWJsZTogZmFsc2UgfTsKKyAgICAgICAgICAgIHZhciBhdHRyU3R5bGUg
PSB7IHN0eWxlOiBzdHlsZXMuc3R5bGVBdHRyaWJ1dGVzW25hbWVdLCBlZGl0YWJsZTogZmFsc2Ug
fTsKICAgICAgICAgICAgIGF0dHJTdHlsZS5zZWxlY3RvclRleHQgPSBXZWJJbnNwZWN0b3IucGFu
ZWxzLmVsZW1lbnRzLnRyZWVPdXRsaW5lLm5vZGVOYW1lVG9Db3JyZWN0Q2FzZShub2RlLm5vZGVO
YW1lKSArICJbIiArIG5hbWU7CiAgICAgICAgICAgICBpZiAobm9kZS5nZXRBdHRyaWJ1dGUobmFt
ZSkpCiAgICAgICAgICAgICAgICAgYXR0clN0eWxlLnNlbGVjdG9yVGV4dCArPSAiPSIgKyBub2Rl
LmdldEF0dHJpYnV0ZShuYW1lKTsKQEAgLTI0Myw3ICsyNDMsNyBAQCBXZWJJbnNwZWN0b3IuU3R5
bGVzU2lkZWJhclBhbmUucHJvdG90eXBlID0gewogCiAgICAgICAgIC8vIFNob3cgZWxlbWVudCdz
IFN0eWxlIEF0dHJpYnV0ZXMKICAgICAgICAgaWYgKHN0eWxlcy5pbmxpbmVTdHlsZSAmJiBub2Rl
Lm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSkgewotICAgICAgICAgICAgdmFyIGlubGlu
ZVN0eWxlID0geyBzZWxlY3RvclRleHQ6ICJlbGVtZW50LnN0eWxlIiwgc3R5bGU6IG5ldyBXZWJJ
bnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvbihzdHlsZXMuaW5saW5lU3R5bGUpLCBpc0F0dHJp
YnV0ZTogdHJ1ZSB9OworICAgICAgICAgICAgdmFyIGlubGluZVN0eWxlID0geyBzZWxlY3RvclRl
eHQ6ICJlbGVtZW50LnN0eWxlIiwgc3R5bGU6IHN0eWxlcy5pbmxpbmVTdHlsZSwgaXNBdHRyaWJ1
dGU6IHRydWUgfTsKICAgICAgICAgICAgIHN0eWxlUnVsZXMucHVzaChpbmxpbmVTdHlsZSk7CiAg
ICAgICAgIH0KIApAQCAtMjUxLDEyICsyNTEsMTEgQEAgV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGVi
YXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKHN0eWxlcy5tYXRjaGVkQ1NTUnVsZXMu
bGVuZ3RoKQogICAgICAgICAgICAgc3R5bGVSdWxlcy5wdXNoKHsgaXNTdHlsZVNlcGFyYXRvcjog
dHJ1ZSwgdGV4dDogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJNYXRjaGVkIENTUyBSdWxlcyIpIH0p
OwogICAgICAgICBmb3IgKHZhciBpID0gc3R5bGVzLm1hdGNoZWRDU1NSdWxlcy5sZW5ndGggLSAx
OyBpID49IDA7IC0taSkgewotICAgICAgICAgICAgdmFyIHJ1bGUgPSBXZWJJbnNwZWN0b3IuQ1NT
U3R5bGVEZWNsYXJhdGlvbi5wYXJzZVJ1bGUoc3R5bGVzLm1hdGNoZWRDU1NSdWxlc1tpXSk7Ci0g
ICAgICAgICAgICBzdHlsZVJ1bGVzLnB1c2goeyBzdHlsZTogcnVsZS5zdHlsZSwgc2VsZWN0b3JU
ZXh0OiBydWxlLnNlbGVjdG9yVGV4dCwgcGFyZW50U3R5bGVTaGVldDogcnVsZS5wYXJlbnRTdHls
ZVNoZWV0LCBydWxlOiBydWxlIH0pOworICAgICAgICAgICAgdmFyIHJ1bGUgPSBzdHlsZXMubWF0
Y2hlZENTU1J1bGVzW2ldOworICAgICAgICAgICAgc3R5bGVSdWxlcy5wdXNoKHsgc3R5bGU6IHJ1
bGUuc3R5bGUsIHNlbGVjdG9yVGV4dDogcnVsZS5zZWxlY3RvclRleHQsIHNvdXJjZVVSTDogcnVs
ZS5zb3VyY2VVUkwsIHJ1bGU6IHJ1bGUgfSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBXYWxr
IHRoZSBub2RlIHN0cnVjdHVyZSBhbmQgaWRlbnRpZnkgc3R5bGVzIHdpdGggaW5oZXJpdGVkIHBy
b3BlcnRpZXMuCi0gICAgICAgIHZhciBwYXJlbnRTdHlsZXMgPSBzdHlsZXMucGFyZW50OwogICAg
ICAgICB2YXIgcGFyZW50Tm9kZSA9IG5vZGUucGFyZW50Tm9kZTsKICAgICAgICAgZnVuY3Rpb24g
aW5zZXJ0SW5oZXJpdGVkTm9kZVNlcGFyYXRvcihub2RlKQogICAgICAgICB7CkBAIC0yNjYsMTEg
KzI2NSwxMiBAQCBXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgc3R5bGVSdWxlcy5wdXNoKGVudHJ5KTsKICAgICAgICAgfQogCi0gICAgICAg
IHdoaWxlIChwYXJlbnRTdHlsZXMpIHsKKyAgICAgICAgZm9yICh2YXIgcGFyZW50T3JkaW5hbCA9
IDA7IHBhcmVudE9yZGluYWwgPCBzdHlsZXMuaW5oZXJpdGVkLmxlbmd0aDsgKytwYXJlbnRPcmRp
bmFsKSB7CisgICAgICAgICAgICB2YXIgcGFyZW50U3R5bGVzID0gc3R5bGVzLmluaGVyaXRlZFtw
YXJlbnRPcmRpbmFsXTsKICAgICAgICAgICAgIHZhciBzZXBhcmF0b3JJbnNlcnRlZCA9IGZhbHNl
OwogICAgICAgICAgICAgaWYgKHBhcmVudFN0eWxlcy5pbmxpbmVTdHlsZSkgewogICAgICAgICAg
ICAgICAgIGlmICh0aGlzLl9jb250YWluc0luaGVyaXRlZChwYXJlbnRTdHlsZXMuaW5saW5lU3R5
bGUpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBpbmxpbmVTdHlsZSA9IHsgc2VsZWN0b3JU
ZXh0OiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0eWxlIEF0dHJpYnV0ZSIpLCBzdHlsZTogbmV3
IFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uKHBhcmVudFN0eWxlcy5pbmxpbmVTdHls
ZSksIGlzQXR0cmlidXRlOiB0cnVlLCBpc0luaGVyaXRlZDogdHJ1ZSB9OworICAgICAgICAgICAg
ICAgICAgICB2YXIgaW5saW5lU3R5bGUgPSB7IHNlbGVjdG9yVGV4dDogV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJTdHlsZSBBdHRyaWJ1dGUiKSwgc3R5bGU6IHBhcmVudFN0eWxlcy5pbmxpbmVTdHls
ZSwgaXNBdHRyaWJ1dGU6IHRydWUsIGlzSW5oZXJpdGVkOiB0cnVlIH07CiAgICAgICAgICAgICAg
ICAgICAgIGlmICghc2VwYXJhdG9ySW5zZXJ0ZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
IGluc2VydEluaGVyaXRlZE5vZGVTZXBhcmF0b3IocGFyZW50Tm9kZSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXBhcmF0b3JJbnNlcnRlZCA9IHRydWU7CkBAIC0yODMsMTQgKzI4MywxMyBA
QCBXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgICAgIHZhciBydWxlUGF5bG9hZCA9IHBhcmVudFN0eWxlcy5tYXRjaGVkQ1NTUnVsZXNbaV07
CiAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9jb250YWluc0luaGVyaXRlZChydWxlUGF5bG9h
ZC5zdHlsZSkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAg
IHZhciBydWxlID0gV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb24ucGFyc2VSdWxlKHJ1
bGVQYXlsb2FkKTsKKyAgICAgICAgICAgICAgICB2YXIgcnVsZSA9IHJ1bGVQYXlsb2FkOwogICAg
ICAgICAgICAgICAgIGlmICghc2VwYXJhdG9ySW5zZXJ0ZWQpIHsKICAgICAgICAgICAgICAgICAg
ICAgaW5zZXJ0SW5oZXJpdGVkTm9kZVNlcGFyYXRvcihwYXJlbnROb2RlKTsKICAgICAgICAgICAg
ICAgICAgICAgc2VwYXJhdG9ySW5zZXJ0ZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICBzdHlsZVJ1bGVzLnB1c2goeyBzdHlsZTogcnVsZS5zdHlsZSwgc2VsZWN0
b3JUZXh0OiBydWxlLnNlbGVjdG9yVGV4dCwgcGFyZW50U3R5bGVTaGVldDogcnVsZS5wYXJlbnRT
dHlsZVNoZWV0LCBydWxlOiBydWxlLCBpc0luaGVyaXRlZDogdHJ1ZSB9KTsKKyAgICAgICAgICAg
ICAgICBzdHlsZVJ1bGVzLnB1c2goeyBzdHlsZTogcnVsZS5zdHlsZSwgc2VsZWN0b3JUZXh0OiBy
dWxlLnNlbGVjdG9yVGV4dCwgc291cmNlVVJMOiBydWxlLnNvdXJjZVVSTCwgcnVsZTogcnVsZSwg
aXNJbmhlcml0ZWQ6IHRydWUgfSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBwYXJlbnRT
dHlsZXMgPSBwYXJlbnRTdHlsZXMucGFyZW50OwogICAgICAgICAgICAgcGFyZW50Tm9kZSA9IHBh
cmVudE5vZGUucGFyZW50Tm9kZTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gc3R5bGVSdWxl
czsKQEAgLTI5OCwxOCArMjk3LDYgQEAgV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLnBy
b3RvdHlwZSA9IHsKIAogICAgIF9tYXJrVXNlZFByb3BlcnRpZXM6IGZ1bmN0aW9uKHN0eWxlUnVs
ZXMsIHVzZWRQcm9wZXJ0aWVzLCBkaXNhYmxlZENvbXB1dGVkUHJvcGVydGllcykKICAgICB7Ci0g
ICAgICAgIGZ1bmN0aW9uIGRlbGV0ZURpc2FibGVkUHJvcGVydHkoc3R5bGUsIG5hbWUpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGlmICghc3R5bGUgfHwgIW5hbWUpCi0gICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgaWYgKHN0eWxlLl9fZGlzYWJsZWRQcm9wZXJ0eVZhbHVlcykK
LSAgICAgICAgICAgICAgICBkZWxldGUgc3R5bGUuX19kaXNhYmxlZFByb3BlcnR5VmFsdWVzW25h
bWVdOwotICAgICAgICAgICAgaWYgKHN0eWxlLl9fZGlzYWJsZWRQcm9wZXJ0eVByaW9yaXRpZXMp
Ci0gICAgICAgICAgICAgICAgZGVsZXRlIHN0eWxlLl9fZGlzYWJsZWRQcm9wZXJ0eVByaW9yaXRp
ZXNbbmFtZV07Ci0gICAgICAgICAgICBpZiAoc3R5bGUuX19kaXNhYmxlZFByb3BlcnRpZXMpCi0g
ICAgICAgICAgICAgICAgZGVsZXRlIHN0eWxlLl9fZGlzYWJsZWRQcm9wZXJ0aWVzW25hbWVdOwot
ICAgICAgICB9Ci0KICAgICAgICAgdmFyIHByaW9yaXR5VXNlZCA9IGZhbHNlOwogCiAgICAgICAg
IC8vIFdhbGsgdGhlIHN0eWxlIHJ1bGVzIGFuZCBtYWtlIGEgbGlzdCBvZiBhbGwgdXNlZCBhbmQg
b3ZlcmxvYWRlZCBwcm9wZXJ0aWVzLgpAQCAtMzIzLDEwICszMTAsMTQgQEAgV2ViSW5zcGVjdG9y
LlN0eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHN0eWxlUnVsZS51
c2VkUHJvcGVydGllcyA9IHt9OwogCiAgICAgICAgICAgICB2YXIgc3R5bGUgPSBzdHlsZVJ1bGUu
c3R5bGU7Ci0gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHN0eWxlLmxlbmd0aDsgKytq
KSB7Ci0gICAgICAgICAgICAgICAgdmFyIG5hbWUgPSBzdHlsZVtqXTsKKyAgICAgICAgICAgIHZh
ciBhbGxQcm9wZXJ0aWVzID0gc3R5bGUuYWxsUHJvcGVydGllczsKKyAgICAgICAgICAgIGZvciAo
dmFyIGogPSAwOyBqIDwgYWxsUHJvcGVydGllcy5sZW5ndGg7ICsraikgeworICAgICAgICAgICAg
ICAgIHZhciBwcm9wZXJ0eSA9IGFsbFByb3BlcnRpZXNbal07CisgICAgICAgICAgICAgICAgaWYg
KCFwcm9wZXJ0eS5pc0xpdmUpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgICAgIHZhciBuYW1lID0gcHJvcGVydHkubmFtZTsKIAotICAgICAgICAgICAgICAgIGlm
ICghcHJpb3JpdHlVc2VkICYmIHN0eWxlLmdldFByb3BlcnR5UHJpb3JpdHkobmFtZSkubGVuZ3Ro
KQorICAgICAgICAgICAgICAgIGlmICghcHJpb3JpdHlVc2VkICYmIHByb3BlcnR5LnByaW9yaXR5
Lmxlbmd0aCkKICAgICAgICAgICAgICAgICAgICAgcHJpb3JpdHlVc2VkID0gdHJ1ZTsKIAogICAg
ICAgICAgICAgICAgIC8vIElmIHRoZSBwcm9wZXJ0eSBuYW1lIGlzIGFscmVhZHkgdXNlZCBieSBh
bm90aGVyIHJ1bGUgdGhlbiB0aGlzIHJ1bGUncwpAQCAtMzQ1LDIyICszMzYsMTIgQEAgV2ViSW5z
cGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICAg
ICAgc3R5bGVSdWxlLnVzZWRQcm9wZXJ0aWVzWyJmb250LXdlaWdodCJdID0gdHJ1ZTsKICAgICAg
ICAgICAgICAgICAgICAgc3R5bGVSdWxlLnVzZWRQcm9wZXJ0aWVzWyJsaW5lLWhlaWdodCJdID0g
dHJ1ZTsKICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBEZWxldGUgYW55
IGRpc2FibGVkIHByb3BlcnRpZXMsIHNpbmNlIHRoZSBwcm9wZXJ0eSBkb2VzIGV4aXN0LgotICAg
ICAgICAgICAgICAgIC8vIFRoaXMgcHJldmVudHMgaXQgZnJvbSBzaG93aW5nIHR3aWNlLgotICAg
ICAgICAgICAgICAgIGRlbGV0ZURpc2FibGVkUHJvcGVydHkoc3R5bGUsIG5hbWUpOwotICAgICAg
ICAgICAgICAgIGRlbGV0ZURpc2FibGVkUHJvcGVydHkoc3R5bGUsIHN0eWxlLmdldFByb3BlcnR5
U2hvcnRoYW5kKG5hbWUpKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLy8gQWRkIGFs
bCB0aGUgcHJvcGVydGllcyBmb3VuZCBpbiB0aGlzIHN0eWxlIHRvIHRoZSB1c2VkIHByb3BlcnRp
ZXMgbGlzdC4KICAgICAgICAgICAgIC8vIERvIHRoaXMgaGVyZSBzbyBvbmx5IGZ1dHVyZSBydWxl
cyBhcmUgYWZmZWN0IGJ5IHByb3BlcnRpZXMgdXNlZCBpbiB0aGlzIHJ1bGUuCiAgICAgICAgICAg
ICBmb3IgKHZhciBuYW1lIGluIHN0eWxlUnVsZXNbaV0udXNlZFByb3BlcnRpZXMpCiAgICAgICAg
ICAgICAgICAgdXNlZFByb3BlcnRpZXNbbmFtZV0gPSB0cnVlOwotCi0gICAgICAgICAgICAvLyBS
ZW1lbWJlciBhbGwgZGlzYWJsZWQgcHJvcGVydGllcyBzbyB0aGV5IHNob3cgdXAgaW4gY29tcHV0
ZWQgc3R5bGUuCi0gICAgICAgICAgICBpZiAoc3R5bGUuX19kaXNhYmxlZFByb3BlcnRpZXMpCi0g
ICAgICAgICAgICAgICAgZm9yICh2YXIgbmFtZSBpbiBzdHlsZS5fX2Rpc2FibGVkUHJvcGVydGll
cykKLSAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWRDb21wdXRlZFByb3BlcnRpZXNbbmFtZV0g
PSB0cnVlOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHByaW9yaXR5VXNlZCkgewpAQCAtMzcz
LDkgKzM1NCwxMyBAQCBXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgICAgIHZhciBz
dHlsZSA9IHN0eWxlUnVsZXNbaV0uc3R5bGU7Ci0gICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9
IDA7IGogPCBzdHlsZS5sZW5ndGg7ICsraikgewotICAgICAgICAgICAgICAgICAgICB2YXIgbmFt
ZSA9IHN0eWxlW2pdOwotICAgICAgICAgICAgICAgICAgICBpZiAoc3R5bGUuZ2V0UHJvcGVydHlQ
cmlvcml0eShuYW1lKS5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICB2YXIgYWxsUHJvcGVydGll
cyA9IHN0eWxlLmFsbFByb3BlcnRpZXM7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7
IGogPCBhbGxQcm9wZXJ0aWVzLmxlbmd0aDsgKytqKSB7CisgICAgICAgICAgICAgICAgICAgIHZh
ciBwcm9wZXJ0eSA9IGFsbFByb3BlcnRpZXNbal07CisgICAgICAgICAgICAgICAgICAgIGlmICgh
cHJvcGVydHkuaXNMaXZlKQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICAgICAgICAgIHZhciBuYW1lID0gcHJvcGVydHkubmFtZTsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKHByb3BlcnR5LnByaW9yaXR5Lmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCEobmFtZSBpbiBmb3VuZFByaW9yaXR5UHJvcGVydGllcykpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3R5bGVSdWxlc1tpXS51c2VkUHJvcGVydGllc1tuYW1lXSA9IHRy
dWU7CiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCkBAIC00NTksMjEgKzQ0NCwxMyBAQCBX
ZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUucHJvdG90eXBlID0gewogICAgICAgICByZXR1
cm4gc2VjdGlvbnM7CiAgICAgfSwKIAotICAgIF9jb250YWluc0luaGVyaXRlZDogZnVuY3Rpb24o
cGF5bG9hZCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9hcnJheUNvbnRhaW5zSW5oZXJpdGVk
UHJvcGVydHkocGF5bG9hZC5wcm9wZXJ0aWVzKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICBpZiAocGF5bG9hZC5kaXNhYmxlZCAmJiB0aGlzLl9hcnJheUNvbnRhaW5zSW5oZXJp
dGVkUHJvcGVydHkocGF5bG9hZC5kaXNhYmxlZCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0sCi0KLSAgICBfYXJyYXlDb250YWluc0luaGVy
aXRlZFByb3BlcnR5OiBmdW5jdGlvbihwcm9wZXJ0aWVzKQorICAgIF9jb250YWluc0luaGVyaXRl
ZDogZnVuY3Rpb24oc3R5bGUpCiAgICAgeworICAgICAgICB2YXIgcHJvcGVydGllcyA9IHN0eWxl
LmFsbFByb3BlcnRpZXM7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcGVydGllcy5s
ZW5ndGg7ICsraSkgewogICAgICAgICAgICAgdmFyIHByb3BlcnR5ID0gcHJvcGVydGllc1tpXTsK
ICAgICAgICAgICAgIC8vIERvZXMgdGhpcyBzdHlsZSBjb250YWluIG5vbi1vdmVycmlkZGVuIGlu
aGVyaXRlZCBwcm9wZXJ0eT8KLSAgICAgICAgICAgIGlmIChwcm9wZXJ0eS5uYW1lIGluIFdlYklu
c3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5Jbmhlcml0ZWRQcm9wZXJ0aWVzKQorICAgICAgICAg
ICAgaWYgKHByb3BlcnR5LmlzTGl2ZSAmJiBwcm9wZXJ0eS5uYW1lIGluIFdlYkluc3BlY3Rvci5T
dHlsZXNTaWRlYmFyUGFuZS5Jbmhlcml0ZWRQcm9wZXJ0aWVzKQogICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY1MSwxNiAr
NjI4LDE2IEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnRpZXNTZWN0aW9uID0gZnVuY3Rpb24o
c3R5bGVSdWxlLCBlZGl0YWJsZSwgaXNJbmhlcml0ZWQsCiAgICAgfQogCiAgICAgdmFyIHN1YnRp
dGxlID0gIiI7Ci0gICAgaWYgKHRoaXMuc3R5bGVSdWxlLnBhcmVudFN0eWxlU2hlZXQgJiYgdGhp
cy5zdHlsZVJ1bGUucGFyZW50U3R5bGVTaGVldC5ocmVmKQotICAgICAgICB0aGlzLnN1YnRpdGxl
RWxlbWVudC5hcHBlbmRDaGlsZChsaW5raWZ5VW5jb3B5YWJsZSh0aGlzLnN0eWxlUnVsZS5wYXJl
bnRTdHlsZVNoZWV0LmhyZWYsIHRoaXMucnVsZS5zb3VyY2VMaW5lKSk7CisgICAgaWYgKHRoaXMu
c3R5bGVSdWxlLnNvdXJjZVVSTCkKKyAgICAgICAgdGhpcy5zdWJ0aXRsZUVsZW1lbnQuYXBwZW5k
Q2hpbGQobGlua2lmeVVuY29weWFibGUodGhpcy5zdHlsZVJ1bGUuc291cmNlVVJMLCB0aGlzLnJ1
bGUuc291cmNlTGluZSkpOwogICAgIGVsc2UgaWYgKGlzVXNlckFnZW50KQogICAgICAgICBzdWJ0
aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygidXNlciBhZ2VudCBzdHlsZXNoZWV0Iik7CiAg
ICAgZWxzZSBpZiAoaXNVc2VyKQogICAgICAgICBzdWJ0aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0
cmluZygidXNlciBzdHlsZXNoZWV0Iik7CiAgICAgZWxzZSBpZiAoaXNWaWFJbnNwZWN0b3IpCiAg
ICAgICAgIHN1YnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJ2aWEgaW5zcGVjdG9yIik7
Ci0gICAgZWxzZSBpZiAodGhpcy5ydWxlICYmIHRoaXMucnVsZS5kb2N1bWVudFVSTCkKLSAgICAg
ICAgdGhpcy5zdWJ0aXRsZUVsZW1lbnQuYXBwZW5kQ2hpbGQobGlua2lmeVVuY29weWFibGUodGhp
cy5ydWxlLmRvY3VtZW50VVJMLCB0aGlzLnJ1bGUuc291cmNlTGluZSkpOworICAgIGVsc2UgaWYg
KHRoaXMucnVsZSAmJiB0aGlzLnJ1bGUuc291cmNlVVJMKQorICAgICAgICB0aGlzLnN1YnRpdGxl
RWxlbWVudC5hcHBlbmRDaGlsZChsaW5raWZ5VW5jb3B5YWJsZSh0aGlzLnJ1bGUuc291cmNlVVJM
LCB0aGlzLnJ1bGUuc291cmNlTGluZSkpOwogCiAgICAgaWYgKGlzSW5oZXJpdGVkKQogICAgICAg
ICB0aGlzLmVsZW1lbnQuYWRkU3R5bGVDbGFzcygic2hvdy1pbmhlcml0ZWQiKTsgLy8gVGhpcyBv
bmUgaXMgcmVsYXRlZCB0byBpbmhlcml0ZWQgcnVsZXMsIG5vdCBjb21wdGVkIHN0eWxlLgpAQCAt
NjgxLDQ5ICs2NTgsNDIgQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydGllc1NlY3Rpb24ucHJv
dG90eXBlID0gewogICAgICAgICAvLyBPdmVycmlkaW5nIHdpdGggZW1wdHkgYm9keS4KICAgICB9
LAogCi0gICAgaXNQcm9wZXJ0eUluaGVyaXRlZDogZnVuY3Rpb24ocHJvcGVydHkpCisgICAgaXNQ
cm9wZXJ0eUluaGVyaXRlZDogZnVuY3Rpb24ocHJvcGVydHlOYW1lKQogICAgIHsKICAgICAgICAg
aWYgKHRoaXMuaXNJbmhlcml0ZWQpIHsKICAgICAgICAgICAgIC8vIFdoaWxlIHJlbmRlcmluZyBp
bmhlcml0ZWQgc3R5bGVzaGVldCwgcmV2ZXJzZSBtZWFuaW5nIG9mIHRoaXMgcHJvcGVydHkuCiAg
ICAgICAgICAgICAvLyBSZW5kZXIgdHJ1bHkgaW5oZXJpdGVkIHByb3BlcnRpZXMgd2l0aCBibGFj
aywgaS5lLiByZXR1cm4gdGhlbSBhcyBub24taW5oZXJpdGVkLgotICAgICAgICAgICAgcmV0dXJu
ICEocHJvcGVydHkgaW4gV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLkluaGVyaXRlZFBy
b3BlcnRpZXMpOworICAgICAgICAgICAgcmV0dXJuICEocHJvcGVydHlOYW1lIGluIFdlYkluc3Bl
Y3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5Jbmhlcml0ZWRQcm9wZXJ0aWVzKTsKICAgICAgICAgfQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfSwKIAotICAgIGlzUHJvcGVydHlPdmVybG9hZGVk
OiBmdW5jdGlvbihwcm9wZXJ0eSwgc2hvcnRoYW5kKQorICAgIGlzUHJvcGVydHlPdmVybG9hZGVk
OiBmdW5jdGlvbihwcm9wZXJ0eU5hbWUsIHNob3J0aGFuZCkKICAgICB7CiAgICAgICAgIGlmICgh
dGhpcy5fdXNlZFByb3BlcnRpZXMgfHwgdGhpcy5ub0FmZmVjdCkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgICAgICBpZiAodGhpcy5pc0luaGVyaXRlZCAmJiAhKHByb3BlcnR5IGlu
IFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5Jbmhlcml0ZWRQcm9wZXJ0aWVzKSkgewor
ICAgICAgICBpZiAodGhpcy5pc0luaGVyaXRlZCAmJiAhKHByb3BlcnR5TmFtZSBpbiBXZWJJbnNw
ZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUuSW5oZXJpdGVkUHJvcGVydGllcykpIHsKICAgICAgICAg
ICAgIC8vIEluIHRoZSBpbmhlcml0ZWQgc2VjdGlvbnMsIG9ubHkgc2hvdyBvdmVycmlkZXMgZm9y
IHRoZSBwb3RlbnRpYWxseSBpbmhlcml0ZWQgcHJvcGVydGllcy4KICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgfQogCi0gICAgICAgIHZhciB1c2VkID0gKHByb3BlcnR5IGluIHRo
aXMuX3VzZWRQcm9wZXJ0aWVzKTsKKyAgICAgICAgdmFyIHVzZWQgPSAocHJvcGVydHlOYW1lIGlu
IHRoaXMuX3VzZWRQcm9wZXJ0aWVzKTsKICAgICAgICAgaWYgKHVzZWQgfHwgIXNob3J0aGFuZCkK
ICAgICAgICAgICAgIHJldHVybiAhdXNlZDsKIAogICAgICAgICAvLyBGaW5kIG91dCBpZiBhbnkg
b2YgdGhlIGluZGl2aWR1YWwgbG9uZ2hhbmQgcHJvcGVydGllcyBvZiB0aGUgc2hvcnRoYW5kCiAg
ICAgICAgIC8vIGFyZSB1c2VkLCBpZiBub25lIGFyZSB0aGVuIHRoZSBzaG9ydGhhbmQgaXMgb3Zl
cmxvYWRlZCB0b28uCi0gICAgICAgIHZhciBsb25naGFuZFByb3BlcnRpZXMgPSB0aGlzLnN0eWxl
UnVsZS5zdHlsZS5nZXRMb25naGFuZFByb3BlcnRpZXMocHJvcGVydHkpOworICAgICAgICB2YXIg
bG9uZ2hhbmRQcm9wZXJ0aWVzID0gdGhpcy5zdHlsZVJ1bGUuc3R5bGUuZ2V0TG9uZ2hhbmRQcm9w
ZXJ0aWVzKHByb3BlcnR5TmFtZSk7CiAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbG9uZ2hh
bmRQcm9wZXJ0aWVzLmxlbmd0aDsgKytqKSB7CiAgICAgICAgICAgICB2YXIgaW5kaXZpZHVhbFBy
b3BlcnR5ID0gbG9uZ2hhbmRQcm9wZXJ0aWVzW2pdOwotICAgICAgICAgICAgaWYgKGluZGl2aWR1
YWxQcm9wZXJ0eSBpbiB0aGlzLl91c2VkUHJvcGVydGllcykKKyAgICAgICAgICAgIGlmIChpbmRp
dmlkdWFsUHJvcGVydHkubmFtZSBpbiB0aGlzLl91c2VkUHJvcGVydGllcykKICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9LAogCi0gICAgaXNQcm9wZXJ0eURpc2FibGVkOiBmdW5jdGlvbihwcm9wZXJ0eSkKLSAgICB7
Ci0gICAgICAgIGlmICghdGhpcy5zdHlsZVJ1bGUuc3R5bGUuX19kaXNhYmxlZFByb3BlcnR5VmFs
dWVzKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXR1cm4gcHJvcGVydHkg
aW4gdGhpcy5zdHlsZVJ1bGUuc3R5bGUuX19kaXNhYmxlZFByb3BlcnR5VmFsdWVzOwotICAgIH0s
Ci0KICAgICB1cGRhdGU6IGZ1bmN0aW9uKGZ1bGwpCiAgICAgewogICAgICAgICBpZiAoZnVsbCkg
ewpAQCAtNzQ5LDM5ICs3MTksNTYgQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydGllc1NlY3Rp
b24ucHJvdG90eXBlID0gewogCiAgICAgb25wb3B1bGF0ZTogZnVuY3Rpb24oKQogICAgIHsKKyAg
ICAgICAgZnVuY3Rpb24gc29ydGVyKGEsIGIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBhLm5hbWUubG9jYWxlQ29tcGFyZShiLm5hbWUpOworICAgICAgICB9CisKICAgICAgICAgdmFy
IHN0eWxlID0gdGhpcy5zdHlsZVJ1bGUuc3R5bGU7CiAKLSAgICAgICAgdmFyIGZvdW5kU2hvcnRo
YW5kcyA9IHt9OwotICAgICAgICB2YXIgZGlzYWJsZWRQcm9wZXJ0aWVzID0gc3R5bGUuX19kaXNh
YmxlZFByb3BlcnR5VmFsdWVzIHx8IHt9OworICAgICAgICB2YXIgaGFuZGxlZFByb3BlcnRpZXMg
PSB7fTsKKyAgICAgICAgdmFyIHNob3J0aGFuZE5hbWVzID0ge307CiAKICAgICAgICAgdGhpcy51
bmlxdWVQcm9wZXJ0aWVzID0gW107Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3R5bGUu
bGVuZ3RoOyArK2kpCi0gICAgICAgICAgICB0aGlzLnVuaXF1ZVByb3BlcnRpZXMucHVzaChzdHls
ZVtpXSk7CisgICAgICAgIHZhciBhbGxQcm9wZXJ0aWVzID0gc3R5bGUuYWxsUHJvcGVydGllczsK
KyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhbGxQcm9wZXJ0aWVzLmxlbmd0aDsgKytpKQor
ICAgICAgICAgICAgdGhpcy51bmlxdWVQcm9wZXJ0aWVzLnB1c2goYWxsUHJvcGVydGllc1tpXSk7
CiAKLSAgICAgICAgZm9yICh2YXIgbmFtZSBpbiBkaXNhYmxlZFByb3BlcnRpZXMpCi0gICAgICAg
ICAgICB0aGlzLnVuaXF1ZVByb3BlcnRpZXMucHVzaChuYW1lKTsKKyAgICAgICAgdGhpcy51bmlx
dWVQcm9wZXJ0aWVzLnNvcnQoc29ydGVyKTsKIAotICAgICAgICB0aGlzLnVuaXF1ZVByb3BlcnRp
ZXMuc29ydCgpOworICAgICAgICAvLyBDb2xsZWN0IGFsbCBzaG9ydGhhbmQgbmFtZXMuCisgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy51bmlxdWVQcm9wZXJ0aWVzLmxlbmd0aDsgKytp
KSB7CisgICAgICAgICAgICB2YXIgcHJvcGVydHkgPSB0aGlzLnVuaXF1ZVByb3BlcnRpZXNbaV07
CisgICAgICAgICAgICBpZiAocHJvcGVydHkuZGlzYWJsZWQpCisgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICBpZiAocHJvcGVydHkuc2hvcnRoYW5kKQorICAgICAgICAgICAg
ICAgIHNob3J0aGFuZE5hbWVzW3Byb3BlcnR5LnNob3J0aGFuZF0gPSB0cnVlOworICAgICAgICB9
CiAKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnVuaXF1ZVByb3BlcnRpZXMubGVu
Z3RoOyArK2kpIHsKLSAgICAgICAgICAgIHZhciBuYW1lID0gdGhpcy51bmlxdWVQcm9wZXJ0aWVz
W2ldOwotICAgICAgICAgICAgdmFyIGRpc2FibGVkID0gbmFtZSBpbiBkaXNhYmxlZFByb3BlcnRp
ZXM7Ci0gICAgICAgICAgICB2YXIgc2hvcnRoYW5kID0gIWRpc2FibGVkID8gc3R5bGUuZ2V0UHJv
cGVydHlTaG9ydGhhbmQobmFtZSkgOiBudWxsOworICAgICAgICAgICAgdmFyIHByb3BlcnR5ID0g
dGhpcy51bmlxdWVQcm9wZXJ0aWVzW2ldOworICAgICAgICAgICAgdmFyIGRpc2FibGVkID0gcHJv
cGVydHkuZGlzYWJsZWQ7CisgICAgICAgICAgICBpZiAoIWRpc2FibGVkICYmIHRoaXMuZGlzYWJs
ZWRDb21wdXRlZFByb3BlcnRpZXMgJiYgIShwcm9wZXJ0eS5uYW1lIGluIHRoaXMudXNlZFByb3Bl
cnRpZXMpICYmIHByb3BlcnR5Lm5hbWUgaW4gdGhpcy5kaXNhYmxlZENvbXB1dGVkUHJvcGVydGll
cykKKyAgICAgICAgICAgICAgICBkaXNhYmxlZCA9IHRydWU7CiAKLSAgICAgICAgICAgIGlmIChz
aG9ydGhhbmQgJiYgc2hvcnRoYW5kIGluIGZvdW5kU2hvcnRoYW5kcykKKyAgICAgICAgICAgIHZh
ciBzaG9ydGhhbmQgPSAhZGlzYWJsZWQgPyBwcm9wZXJ0eS5zaG9ydGhhbmQgOiBudWxsOworCisg
ICAgICAgICAgICBpZiAoc2hvcnRoYW5kICYmIHNob3J0aGFuZCBpbiBoYW5kbGVkUHJvcGVydGll
cykKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgaWYgKHNob3J0aGFu
ZCkgewotICAgICAgICAgICAgICAgIGZvdW5kU2hvcnRoYW5kc1tzaG9ydGhhbmRdID0gdHJ1ZTsK
LSAgICAgICAgICAgICAgICBuYW1lID0gc2hvcnRoYW5kOworICAgICAgICAgICAgICAgIHByb3Bl
cnR5ID0gc3R5bGUuZ2V0TGl2ZVByb3BlcnR5KHNob3J0aGFuZCk7CisgICAgICAgICAgICAgICAg
aWYgKCFwcm9wZXJ0eSkKKyAgICAgICAgICAgICAgICAgICAgcHJvcGVydHkgPSBuZXcgV2ViSW5z
cGVjdG9yLkNTU1Byb3BlcnR5KHN0eWxlLCBzdHlsZS5hbGxQcm9wZXJ0aWVzLmxlbmd0aCwgc2hv
cnRoYW5kLCBzdHlsZS5nZXRTaG9ydGhhbmRWYWx1ZShzaG9ydGhhbmQpLCBzdHlsZS5nZXRTaG9y
dGhhbmRQcmlvcml0eShzaG9ydGhhbmQpLCAic3R5bGUiLCB0cnVlLCB0cnVlLCAiIik7CiAgICAg
ICAgICAgICB9CiAKLSAgICAgICAgICAgIHZhciBpc1Nob3J0aGFuZCA9IChzaG9ydGhhbmQgPyB0
cnVlIDogZmFsc2UpOwotICAgICAgICAgICAgdmFyIGluaGVyaXRlZCA9IHRoaXMuaXNQcm9wZXJ0
eUluaGVyaXRlZChuYW1lKTsKLSAgICAgICAgICAgIHZhciBvdmVybG9hZGVkID0gdGhpcy5pc1By
b3BlcnR5T3ZlcmxvYWRlZChuYW1lLCBpc1Nob3J0aGFuZCk7CisgICAgICAgICAgICB2YXIgaXNT
aG9ydGhhbmQgPSAhIShwcm9wZXJ0eS5pc0xpdmUgJiYgKHNob3J0aGFuZCB8fCBzaG9ydGhhbmRO
YW1lc1twcm9wZXJ0eS5uYW1lXSkpOworICAgICAgICAgICAgdmFyIGluaGVyaXRlZCA9IHRoaXMu
aXNQcm9wZXJ0eUluaGVyaXRlZChwcm9wZXJ0eS5uYW1lKTsKKyAgICAgICAgICAgIHZhciBvdmVy
bG9hZGVkID0gdGhpcy5pc1Byb3BlcnR5T3ZlcmxvYWRlZChwcm9wZXJ0eS5uYW1lLCBpc1Nob3J0
aGFuZCk7CiAKLSAgICAgICAgICAgIHZhciBpdGVtID0gbmV3IFdlYkluc3BlY3Rvci5TdHlsZVBy
b3BlcnR5VHJlZUVsZW1lbnQodGhpcy5zdHlsZVJ1bGUsIHN0eWxlLCBuYW1lLCBpc1Nob3J0aGFu
ZCwgaW5oZXJpdGVkLCBvdmVybG9hZGVkLCBkaXNhYmxlZCk7CisgICAgICAgICAgICB2YXIgaXRl
bSA9IG5ldyBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50KHRoaXMuc3R5bGVS
dWxlLCBzdHlsZSwgcHJvcGVydHksIGlzU2hvcnRoYW5kLCBpbmhlcml0ZWQsIG92ZXJsb2FkZWQp
OwogICAgICAgICAgICAgdGhpcy5wcm9wZXJ0aWVzVHJlZU91dGxpbmUuYXBwZW5kQ2hpbGQoaXRl
bSk7CisgICAgICAgICAgICBoYW5kbGVkUHJvcGVydGllc1twcm9wZXJ0eS5uYW1lXSA9IHByb3Bl
cnR5OwogICAgICAgICB9CiAgICAgfSwKIApAQCAtNzk4LDcgKzc4NSw5IEBAIFdlYkluc3BlY3Rv
ci5TdHlsZVByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZSA9IHsKIAogICAgIGFkZE5ld0JsYW5r
UHJvcGVydHk6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHZhciBpdGVtID0gbmV3IFdlYklu
c3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQodGhpcy5zdHlsZVJ1bGUsIHRoaXMuc3R5
bGVSdWxlLnN0eWxlLCAiIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOworICAgICAgICB2
YXIgc3R5bGUgPSB0aGlzLnN0eWxlUnVsZS5zdHlsZTsKKyAgICAgICAgdmFyIHByb3BlcnR5ID0g
bmV3IFdlYkluc3BlY3Rvci5DU1NQcm9wZXJ0eShzdHlsZSwgc3R5bGUuYWxsUHJvcGVydGllcy5s
ZW5ndGgsICIiLCAiIiwgIiIsICJzdHlsZSIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdW5kZWZpbmVk
KTsKKyAgICAgICAgdmFyIGl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVl
RWxlbWVudCh0aGlzLnN0eWxlUnVsZSwgc3R5bGUsICIiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSk7CiAgICAgICAgIHRoaXMucHJvcGVydGllc1RyZWVPdXRsaW5lLmFwcGVuZENoaWxkKGl0
ZW0pOwogICAgICAgICBpdGVtLmxpc3RJdGVtRWxlbWVudC50ZXh0Q29udGVudCA9ICIiOwogICAg
ICAgICBpdGVtLl9uZXdQcm9wZXJ0eSA9IHRydWU7CkBAIC04ODQsNyArODczLDcgQEAgV2ViSW5z
cGVjdG9yLlN0eWxlUHJvcGVydGllc1NlY3Rpb24ucHJvdG90eXBlID0gewogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBzZWxmLnJ1bGUgPSBuZXdSdWxlOwotICAgICAgICAgICAgc2VsZi5z
dHlsZVJ1bGUgPSB7IHNlY3Rpb246IHNlbGYsIHN0eWxlOiBuZXdSdWxlLnN0eWxlLCBzZWxlY3Rv
clRleHQ6IG5ld1J1bGUuc2VsZWN0b3JUZXh0LCBwYXJlbnRTdHlsZVNoZWV0OiBuZXdSdWxlLnBh
cmVudFN0eWxlU2hlZXQsIHJ1bGU6IG5ld1J1bGUgfTsKKyAgICAgICAgICAgIHNlbGYuc3R5bGVS
dWxlID0geyBzZWN0aW9uOiBzZWxmLCBzdHlsZTogbmV3UnVsZS5zdHlsZSwgc2VsZWN0b3JUZXh0
OiBuZXdSdWxlLnNlbGVjdG9yVGV4dCwgc291cmNlVVJMOiBuZXdSdWxlLnNvdXJjZVVSTCwgcnVs
ZTogbmV3UnVsZSB9OwogCiAgICAgICAgICAgICB2YXIgb2xkSWRlbnRpZmllciA9IHRoaXMuaWRl
bnRpZmllcjsKICAgICAgICAgICAgIHNlbGYuaWRlbnRpZmllciA9IG5ld1J1bGUuc2VsZWN0b3JU
ZXh0ICsgIjoiICsgc2VsZi5zdWJ0aXRsZUVsZW1lbnQudGV4dENvbnRlbnQ7CkBAIC05MjcsOSAr
OTE2LDkgQEAgV2ViSW5zcGVjdG9yLkNvbXB1dGVkU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90
b3R5cGUgPSB7CiAgICAgICAgIC8vIE92ZXJyaWRpbmcgd2l0aCBlbXB0eSBib2R5LgogICAgIH0s
CiAKLSAgICBfaXNQcm9wZXJ0eUluaGVyaXRlZDogZnVuY3Rpb24ocHJvcGVydHkpCisgICAgX2lz
UHJvcGVydHlJbmhlcml0ZWQ6IGZ1bmN0aW9uKHByb3BlcnR5TmFtZSkKICAgICB7Ci0gICAgICAg
IHJldHVybiAhKHByb3BlcnR5IGluIHRoaXMuX3VzZWRQcm9wZXJ0aWVzKSAmJiAhKHByb3BlcnR5
IGluIHRoaXMuX2Fsd2F5c1Nob3dDb21wdXRlZFByb3BlcnRpZXMpICYmICEocHJvcGVydHkgaW4g
dGhpcy5fZGlzYWJsZWRDb21wdXRlZFByb3BlcnRpZXMpOworICAgICAgICByZXR1cm4gIShwcm9w
ZXJ0eU5hbWUgaW4gdGhpcy5fdXNlZFByb3BlcnRpZXMpICYmICEocHJvcGVydHlOYW1lIGluIHRo
aXMuX2Fsd2F5c1Nob3dDb21wdXRlZFByb3BlcnRpZXMpICYmICEocHJvcGVydHlOYW1lIGluIHRo
aXMuX2Rpc2FibGVkQ29tcHV0ZWRQcm9wZXJ0aWVzKTsKICAgICB9LAogCiAgICAgdXBkYXRlOiBm
dW5jdGlvbigpCkBAIC05NDYsMTkgKzkzNSwyNSBAQCBXZWJJbnNwZWN0b3IuQ29tcHV0ZWRTdHls
ZVByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZSA9IHsKIAogICAgIG9ucG9wdWxhdGU6IGZ1bmN0
aW9uKCkKICAgICB7CisgICAgICAgIGZ1bmN0aW9uIHNvcnRlcihhLCBiKQorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKTsKKyAgICAgICAg
fQorCiAgICAgICAgIHZhciBzdHlsZSA9IHRoaXMuc3R5bGVSdWxlLnN0eWxlOwogICAgICAgICB2
YXIgdW5pcXVlUHJvcGVydGllcyA9IFtdOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0
eWxlLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgdW5pcXVlUHJvcGVydGllcy5wdXNoKHN0eWxl
W2ldKTsKLSAgICAgICAgdW5pcXVlUHJvcGVydGllcy5zb3J0KCk7CisgICAgICAgIHZhciBhbGxQ
cm9wZXJ0aWVzID0gc3R5bGUuYWxsUHJvcGVydGllczsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBhbGxQcm9wZXJ0aWVzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgdW5pcXVlUHJvcGVy
dGllcy5wdXNoKGFsbFByb3BlcnRpZXNbaV0pOworICAgICAgICB1bmlxdWVQcm9wZXJ0aWVzLnNv
cnQoc29ydGVyKTsKIAogICAgICAgICB0aGlzLl9wcm9wZXJ0eVRyZWVFbGVtZW50cyA9IHt9Owog
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHVuaXF1ZVByb3BlcnRpZXMubGVuZ3RoOyArK2kp
IHsKLSAgICAgICAgICAgIHZhciBuYW1lID0gdW5pcXVlUHJvcGVydGllc1tpXTsKLSAgICAgICAg
ICAgIHZhciBpbmhlcml0ZWQgPSB0aGlzLl9pc1Byb3BlcnR5SW5oZXJpdGVkKG5hbWUpOwotICAg
ICAgICAgICAgdmFyIGl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxl
bWVudCh0aGlzLnN0eWxlUnVsZSwgc3R5bGUsIG5hbWUsIGZhbHNlLCBpbmhlcml0ZWQsIGZhbHNl
LCBmYWxzZSk7CisgICAgICAgICAgICB2YXIgcHJvcGVydHkgPSB1bmlxdWVQcm9wZXJ0aWVzW2ld
OworICAgICAgICAgICAgdmFyIGluaGVyaXRlZCA9IHRoaXMuX2lzUHJvcGVydHlJbmhlcml0ZWQo
cHJvcGVydHkubmFtZSk7CisgICAgICAgICAgICB2YXIgaXRlbSA9IG5ldyBXZWJJbnNwZWN0b3Iu
U3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50KHRoaXMuc3R5bGVSdWxlLCBzdHlsZSwgcHJvcGVydHks
IGZhbHNlLCBpbmhlcml0ZWQsIGZhbHNlLCBmYWxzZSk7CiAgICAgICAgICAgICB0aGlzLnByb3Bl
cnRpZXNUcmVlT3V0bGluZS5hcHBlbmRDaGlsZChpdGVtKTsKLSAgICAgICAgICAgIHRoaXMuX3By
b3BlcnR5VHJlZUVsZW1lbnRzW25hbWVdID0gaXRlbTsKKyAgICAgICAgICAgIHRoaXMuX3Byb3Bl
cnR5VHJlZUVsZW1lbnRzW3Byb3BlcnR5Lm5hbWVdID0gaXRlbTsKICAgICAgICAgfQogICAgIH0s
CiAKQEAgLTk3MCwyMSArOTY1LDIxIEBAIFdlYkluc3BlY3Rvci5Db21wdXRlZFN0eWxlUHJvcGVy
dGllc1NlY3Rpb24ucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAg
ICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHNlY3Rpb24udW5pcXVlUHJvcGVydGllcy5s
ZW5ndGg7ICsraikgewotICAgICAgICAgICAgICAgIHZhciBuYW1lID0gc2VjdGlvbi51bmlxdWVQ
cm9wZXJ0aWVzW2pdOwotICAgICAgICAgICAgICAgIGlmIChzZWN0aW9uLmlzUHJvcGVydHlEaXNh
YmxlZChuYW1lKSkKKyAgICAgICAgICAgICAgICB2YXIgcHJvcGVydHkgPSBzZWN0aW9uLnVuaXF1
ZVByb3BlcnRpZXNbal07CisgICAgICAgICAgICAgICAgaWYgKHByb3BlcnR5LmRpc2FibGVkKQog
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBpZiAoc2VjdGlv
bi5pc0luaGVyaXRlZCAmJiAhKG5hbWUgaW4gV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5l
LkluaGVyaXRlZFByb3BlcnRpZXMpKQorICAgICAgICAgICAgICAgIGlmIChzZWN0aW9uLmlzSW5o
ZXJpdGVkICYmICEocHJvcGVydHkubmFtZSBpbiBXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBh
bmUuSW5oZXJpdGVkUHJvcGVydGllcykpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
Ci0gICAgICAgICAgICAgICAgdmFyIHRyZWVFbGVtZW50ID0gdGhpcy5fcHJvcGVydHlUcmVlRWxl
bWVudHNbbmFtZV07CisgICAgICAgICAgICAgICAgdmFyIHRyZWVFbGVtZW50ID0gdGhpcy5fcHJv
cGVydHlUcmVlRWxlbWVudHNbcHJvcGVydHkubmFtZV07CiAgICAgICAgICAgICAgICAgaWYgKHRy
ZWVFbGVtZW50KSB7CiAgICAgICAgICAgICAgICAgICAgIHZhciBzZWxlY3RvclRleHQgPSBzZWN0
aW9uLnN0eWxlUnVsZS5zZWxlY3RvclRleHQ7Ci0gICAgICAgICAgICAgICAgICAgIHZhciB2YWx1
ZSA9IHNlY3Rpb24uc3R5bGVSdWxlLnN0eWxlLmdldFByb3BlcnR5VmFsdWUobmFtZSk7CisgICAg
ICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IHByb3BlcnR5LnZhbHVlOwogICAgICAgICAgICAg
ICAgICAgICB2YXIgdGl0bGUgPSAiPHNwYW4gc3R5bGU9J2NvbG9yOiBncmF5Jz4iICsgc2VsZWN0
b3JUZXh0ICsgIjwvc3Bhbj4gLSAiICsgdmFsdWU7CiAgICAgICAgICAgICAgICAgICAgIHZhciBz
dWJ0aXRsZSA9ICIgPHNwYW4gc3R5bGU9J2Zsb2F0OnJpZ2h0Jz4iICsgc2VjdGlvbi5zdWJ0aXRs
ZUVsZW1lbnQuaW5uZXJIVE1MICsgIjwvc3Bhbj4iOwogICAgICAgICAgICAgICAgICAgICB2YXIg
Y2hpbGRFbGVtZW50ID0gbmV3IFRyZWVFbGVtZW50KHRpdGxlICsgc3VidGl0bGUsIG51bGwsIGZh
bHNlKTsKICAgICAgICAgICAgICAgICAgICAgdHJlZUVsZW1lbnQuYXBwZW5kQ2hpbGQoY2hpbGRF
bGVtZW50KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHNlY3Rpb24uaXNQcm9wZXJ0eU92ZXJs
b2FkZWQobmFtZSkpCisgICAgICAgICAgICAgICAgICAgIGlmIChzZWN0aW9uLmlzUHJvcGVydHlP
dmVybG9hZGVkKHByb3BlcnR5Lm5hbWUpKQogICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRF
bGVtZW50Lmxpc3RJdGVtRWxlbWVudC5hZGRTdHlsZUNsYXNzKCJvdmVybG9hZGVkIik7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMTA1MCwxNSArMTA0NSwxNCBAQCBXZWJJ
bnNwZWN0b3IuQmxhbmtTdHlsZVByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZSA9IHsKIAogV2Vi
SW5zcGVjdG9yLkJsYW5rU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUuX19wcm90b19f
ID0gV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydGllc1NlY3Rpb24ucHJvdG90eXBlOwogCi1XZWJJ
bnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50ID0gZnVuY3Rpb24oc3R5bGVSdWxlLCBz
dHlsZSwgbmFtZSwgc2hvcnRoYW5kLCBpbmhlcml0ZWQsIG92ZXJsb2FkZWQsIGRpc2FibGVkKQor
V2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHN0eWxlUnVs
ZSwgc3R5bGUsIHByb3BlcnR5LCBzaG9ydGhhbmQsIGluaGVyaXRlZCwgb3ZlcmxvYWRlZCkKIHsK
ICAgICB0aGlzLl9zdHlsZVJ1bGUgPSBzdHlsZVJ1bGU7CiAgICAgdGhpcy5zdHlsZSA9IHN0eWxl
OwotICAgIHRoaXMubmFtZSA9IG5hbWU7CisgICAgdGhpcy5wcm9wZXJ0eSA9IHByb3BlcnR5Owog
ICAgIHRoaXMuc2hvcnRoYW5kID0gc2hvcnRoYW5kOwogICAgIHRoaXMuX2luaGVyaXRlZCA9IGlu
aGVyaXRlZDsKICAgICB0aGlzLl9vdmVybG9hZGVkID0gb3ZlcmxvYWRlZDsKLSAgICB0aGlzLl9k
aXNhYmxlZCA9IGRpc2FibGVkOwogCiAgICAgLy8gUGFzcyBhbiBlbXB0eSB0aXRsZSwgdGhlIHRp
dGxlIGdldHMgbWFkZSBsYXRlciBpbiBvbmF0dGFjaC4KICAgICBUcmVlRWxlbWVudC5jYWxsKHRo
aXMsICIiLCBudWxsLCBzaG9ydGhhbmQpOwpAQCAtMTA5MywyOSArMTA4NywzMSBAQCBXZWJJbnNw
ZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKIAogICAgIGdldCBk
aXNhYmxlZCgpCiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7CisgICAgICAg
IHJldHVybiB0aGlzLnByb3BlcnR5LmRpc2FibGVkOwogICAgIH0sCiAKLSAgICBzZXQgZGlzYWJs
ZWQoeCkKKyAgICBnZXQgbmFtZSgpCiAgICAgewotICAgICAgICBpZiAoeCA9PT0gdGhpcy5fZGlz
YWJsZWQpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHRoaXMuX2Rpc2FibGVkID0geDsK
LSAgICAgICAgdGhpcy51cGRhdGVTdGF0ZSgpOworICAgICAgICByZXR1cm4gdGhpcy5wcm9wZXJ0
eS5uYW1lOwogICAgIH0sCiAKICAgICBnZXQgcHJpb3JpdHkoKQogICAgIHsKLSAgICAgICAgaWYg
KHRoaXMuZGlzYWJsZWQgJiYgdGhpcy5zdHlsZS5fX2Rpc2FibGVkUHJvcGVydHlQcmlvcml0aWVz
ICYmIHRoaXMubmFtZSBpbiB0aGlzLnN0eWxlLl9fZGlzYWJsZWRQcm9wZXJ0eVByaW9yaXRpZXMp
Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5zdHlsZS5fX2Rpc2FibGVkUHJvcGVydHlQcmlvcml0
aWVzW3RoaXMubmFtZV07Ci0gICAgICAgIHJldHVybiAodGhpcy5zaG9ydGhhbmQgPyB0aGlzLnN0
eWxlLmdldFNob3J0aGFuZFByaW9yaXR5KHRoaXMubmFtZSkgOiB0aGlzLnN0eWxlLmdldFByb3Bl
cnR5UHJpb3JpdHkodGhpcy5uYW1lKSk7CisgICAgICAgIGlmICh0aGlzLmRpc2FibGVkKQorICAg
ICAgICAgICAgcmV0dXJuIHRoaXMucHJvcGVydHkucHJpb3JpdHk7CisgICAgICAgIHJldHVybiAo
dGhpcy5zaG9ydGhhbmQgPyB0aGlzLnN0eWxlLmdldFNob3J0aGFuZFByaW9yaXR5KHRoaXMubmFt
ZSkgOiB0aGlzLnByb3BlcnR5LnByaW9yaXR5KTsKICAgICB9LAogCiAgICAgZ2V0IHZhbHVlKCkK
ICAgICB7Ci0gICAgICAgIGlmICh0aGlzLmRpc2FibGVkICYmIHRoaXMuc3R5bGUuX19kaXNhYmxl
ZFByb3BlcnR5VmFsdWVzICYmIHRoaXMubmFtZSBpbiB0aGlzLnN0eWxlLl9fZGlzYWJsZWRQcm9w
ZXJ0eVZhbHVlcykKLSAgICAgICAgICAgIHJldHVybiB0aGlzLnN0eWxlLl9fZGlzYWJsZWRQcm9w
ZXJ0eVZhbHVlc1t0aGlzLm5hbWVdOwotICAgICAgICByZXR1cm4gKHRoaXMuc2hvcnRoYW5kID8g
dGhpcy5zdHlsZS5nZXRTaG9ydGhhbmRWYWx1ZSh0aGlzLm5hbWUpIDogdGhpcy5zdHlsZS5nZXRQ
cm9wZXJ0eVZhbHVlKHRoaXMubmFtZSkpOworICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkKKyAg
ICAgICAgICAgIHJldHVybiB0aGlzLnByb3BlcnR5LnZhbHVlOworICAgICAgICByZXR1cm4gKHRo
aXMuc2hvcnRoYW5kID8gdGhpcy5zdHlsZS5nZXRTaG9ydGhhbmRWYWx1ZSh0aGlzLm5hbWUpIDog
dGhpcy5wcm9wZXJ0eS52YWx1ZSk7CisgICAgfSwKKworICAgIGdldCBwYXJzZWRPaygpCisgICAg
eworICAgICAgICByZXR1cm4gdGhpcy5wcm9wZXJ0eS5wYXJzZWRPazsKICAgICB9LAogCiAgICAg
b25hdHRhY2g6IGZ1bmN0aW9uKCkKQEAgLTExMzUsMTEgKzExMzEsMTQgQEAgV2ViSW5zcGVjdG9y
LlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy51
cGRhdGVTdGF0ZSgpOwogCi0gICAgICAgIHZhciBlbmFibGVkQ2hlY2tib3hFbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKLSAgICAgICAgZW5hYmxlZENoZWNrYm94RWxl
bWVudC5jbGFzc05hbWUgPSAiZW5hYmxlZC1idXR0b24iOwotICAgICAgICBlbmFibGVkQ2hlY2ti
b3hFbGVtZW50LnR5cGUgPSAiY2hlY2tib3giOwotICAgICAgICBlbmFibGVkQ2hlY2tib3hFbGVt
ZW50LmNoZWNrZWQgPSAhdGhpcy5kaXNhYmxlZDsKLSAgICAgICAgZW5hYmxlZENoZWNrYm94RWxl
bWVudC5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLCB0aGlzLnRvZ2dsZUVuYWJsZWQuYmluZCh0
aGlzKSwgZmFsc2UpOworICAgICAgICB2YXIgZW5hYmxlZENoZWNrYm94RWxlbWVudDsKKyAgICAg
ICAgaWYgKHRoaXMucGFyc2VkT2spIHsKKyAgICAgICAgICAgIGVuYWJsZWRDaGVja2JveEVsZW1l
bnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOworICAgICAgICAgICAgZW5hYmxl
ZENoZWNrYm94RWxlbWVudC5jbGFzc05hbWUgPSAiZW5hYmxlZC1idXR0b24iOworICAgICAgICAg
ICAgZW5hYmxlZENoZWNrYm94RWxlbWVudC50eXBlID0gImNoZWNrYm94IjsKKyAgICAgICAgICAg
IGVuYWJsZWRDaGVja2JveEVsZW1lbnQuY2hlY2tlZCA9ICF0aGlzLmRpc2FibGVkOworICAgICAg
ICAgICAgZW5hYmxlZENoZWNrYm94RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLCB0
aGlzLnRvZ2dsZUVuYWJsZWQuYmluZCh0aGlzKSwgZmFsc2UpOworICAgICAgICB9CiAKICAgICAg
ICAgdmFyIG5hbWVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAg
ICAgICBuYW1lRWxlbWVudC5jbGFzc05hbWUgPSAid2Via2l0LWNzcy1wcm9wZXJ0eSI7CkBAIC0x
Mjg4LDcgKzEyODcsNyBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAvLyBBcHBlbmQgdGhl
IGNoZWNrYm94IGZvciByb290IGVsZW1lbnRzIG9mIGFuIGVkaXRhYmxlIHNlY3Rpb24uCi0gICAg
ICAgIGlmICh0aGlzLnRyZWVPdXRsaW5lLnNlY3Rpb24gJiYgdGhpcy50cmVlT3V0bGluZS5zZWN0
aW9uLmVkaXRhYmxlICYmIHRoaXMucGFyZW50LnJvb3QpCisgICAgICAgIGlmIChlbmFibGVkQ2hl
Y2tib3hFbGVtZW50ICYmIHRoaXMudHJlZU91dGxpbmUuc2VjdGlvbiAmJiB0aGlzLnRyZWVPdXRs
aW5lLnNlY3Rpb24uZWRpdGFibGUgJiYgdGhpcy5wYXJlbnQucm9vdCkKICAgICAgICAgICAgIHRo
aXMubGlzdEl0ZW1FbGVtZW50LmFwcGVuZENoaWxkKGVuYWJsZWRDaGVja2JveEVsZW1lbnQpOwog
ICAgICAgICB0aGlzLmxpc3RJdGVtRWxlbWVudC5hcHBlbmRDaGlsZChuYW1lRWxlbWVudCk7CiAg
ICAgICAgIHRoaXMubGlzdEl0ZW1FbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKCI6ICIpKTsKQEAgLTEzMDEsNyArMTMwMCw3IEBAIFdlYkluc3BlY3Rvci5TdHlsZVBy
b3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMubGlzdEl0ZW1F
bGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCI7IikpOwogCi0gICAg
ICAgIHRoaXMudG9vbHRpcCA9IHRoaXMubmFtZSArICI6ICIgKyB2YWx1ZUVsZW1lbnQudGV4dENv
bnRlbnQgKyAocHJpb3JpdHkgPyAiICIgKyBwcmlvcml0eSA6ICIiKTsKKyAgICAgICAgdGhpcy50
b29sdGlwID0gdGhpcy5wcm9wZXJ0eS5wcm9wZXJ0eVRleHQ7CiAgICAgfSwKIAogICAgIHVwZGF0
ZUFsbDogZnVuY3Rpb24odXBkYXRlQWxsUnVsZXMpCkBAIC0xMzEzLDMzICsxMzEyLDI4IEBAIFdl
Ykluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAg
ICBlbHNlIGlmICh0aGlzLnRyZWVPdXRsaW5lLnNlY3Rpb24pCiAgICAgICAgICAgICB0aGlzLnRy
ZWVPdXRsaW5lLnNlY3Rpb24udXBkYXRlKHRydWUpOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICB0aGlzLnVwZGF0ZVRpdGxlKCk7IC8vIEZJWE1FOiB0aGlzIHdpbGwgbm90IHNob3cgbmV3IHBy
b3BlcnRpZXMuIEJ1dCB3ZSBkb24ndCBoaXQgaGlzIGNhc2UgeWV0LgorICAgICAgICAgICAgdGhp
cy51cGRhdGVUaXRsZSgpOyAvLyBGSVhNRTogdGhpcyB3aWxsIG5vdCBzaG93IG5ldyBwcm9wZXJ0
aWVzLiBCdXQgd2UgZG9uJ3QgaGl0IHRoaXMgY2FzZSB5ZXQuCiAgICAgfSwKIAogICAgIHRvZ2ds
ZUVuYWJsZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIGRpc2FibGVkID0g
IWV2ZW50LnRhcmdldC5jaGVja2VkOwogCi0gICAgICAgIHZhciBzZWxmID0gdGhpczsKICAgICAg
ICAgZnVuY3Rpb24gY2FsbGJhY2sobmV3U3R5bGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlm
ICghbmV3U3R5bGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBzZWxm
LnN0eWxlID0gbmV3U3R5bGU7Ci0gICAgICAgICAgICBzZWxmLl9zdHlsZVJ1bGUuc3R5bGUgPSBz
ZWxmLnN0eWxlOwotCi0gICAgICAgICAgICAvLyBTZXQgdGhlIGRpc2FibGVkIHByb3BlcnR5IGhl
cmUsIHNpbmNlIHRoZSBjb2RlIGFib3ZlIHJlcGxpZXMgb24gaXQgbm90IGNoYW5naW5nCi0gICAg
ICAgICAgICAvLyB1bnRpbCBhZnRlciB0aGUgdmFsdWUgYW5kIHByaW9yaXR5IGFyZSByZXRyaWV2
ZWQuCi0gICAgICAgICAgICBzZWxmLmRpc2FibGVkID0gZGlzYWJsZWQ7CisgICAgICAgICAgICB0
aGlzLnN0eWxlID0gbmV3U3R5bGU7CisgICAgICAgICAgICB0aGlzLl9zdHlsZVJ1bGUuc3R5bGUg
PSBuZXdTdHlsZTsKIAotICAgICAgICAgICAgaWYgKHNlbGYudHJlZU91dGxpbmUuc2VjdGlvbiAm
JiBzZWxmLnRyZWVPdXRsaW5lLnNlY3Rpb24ucGFuZSkKLSAgICAgICAgICAgICAgICBzZWxmLnRy
ZWVPdXRsaW5lLnNlY3Rpb24ucGFuZS5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoInN0eWxlIHBy
b3BlcnR5IHRvZ2dsZWQiKTsKKyAgICAgICAgICAgIGlmICh0aGlzLnRyZWVPdXRsaW5lLnNlY3Rp
b24gJiYgdGhpcy50cmVlT3V0bGluZS5zZWN0aW9uLnBhbmUpCisgICAgICAgICAgICAgICAgdGhp
cy50cmVlT3V0bGluZS5zZWN0aW9uLnBhbmUuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKCJzdHls
ZSBwcm9wZXJ0eSB0b2dnbGVkIik7CiAKLSAgICAgICAgICAgIHNlbGYudXBkYXRlQWxsKHRydWUp
OworICAgICAgICAgICAgdGhpcy51cGRhdGVBbGwodHJ1ZSk7CiAgICAgICAgIH0KIAotICAgICAg
ICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwudG9nZ2xlU3R5bGVFbmFibGVkKHRoaXMuc3R5bGUuaWQs
IHRoaXMubmFtZSwgZGlzYWJsZWQsIGNhbGxiYWNrKTsKKyAgICAgICAgdGhpcy5wcm9wZXJ0eS5z
ZXREaXNhYmxlZChkaXNhYmxlZCwgY2FsbGJhY2suYmluZCh0aGlzKSk7CiAgICAgfSwKIAogICAg
IHVwZGF0ZVN0YXRlOiBmdW5jdGlvbigpCkBAIC0xMzc2LDE0ICsxMzcwLDE2IEBAIFdlYkluc3Bl
Y3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogCiAgICAgICAgIHZh
ciBsb25naGFuZFByb3BlcnRpZXMgPSB0aGlzLnN0eWxlLmdldExvbmdoYW5kUHJvcGVydGllcyh0
aGlzLm5hbWUpOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxvbmdoYW5kUHJvcGVydGll
cy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgdmFyIG5hbWUgPSBsb25naGFuZFByb3BlcnRp
ZXNbaV07CisgICAgICAgICAgICB2YXIgbmFtZSA9IGxvbmdoYW5kUHJvcGVydGllc1tpXS5uYW1l
OworCiAKICAgICAgICAgICAgIGlmICh0aGlzLnRyZWVPdXRsaW5lLnNlY3Rpb24pIHsKICAgICAg
ICAgICAgICAgICB2YXIgaW5oZXJpdGVkID0gdGhpcy50cmVlT3V0bGluZS5zZWN0aW9uLmlzUHJv
cGVydHlJbmhlcml0ZWQobmFtZSk7CiAgICAgICAgICAgICAgICAgdmFyIG92ZXJsb2FkZWQgPSB0
aGlzLnRyZWVPdXRsaW5lLnNlY3Rpb24uaXNQcm9wZXJ0eU92ZXJsb2FkZWQobmFtZSk7CiAgICAg
ICAgICAgICB9CiAKLSAgICAgICAgICAgIHZhciBpdGVtID0gbmV3IFdlYkluc3BlY3Rvci5TdHls
ZVByb3BlcnR5VHJlZUVsZW1lbnQodGhpcy5fc3R5bGVSdWxlLCB0aGlzLnN0eWxlLCBuYW1lLCBm
YWxzZSwgaW5oZXJpdGVkLCBvdmVybG9hZGVkKTsKKyAgICAgICAgICAgIHZhciBsaXZlUHJvcGVy
dHkgPSB0aGlzLnN0eWxlLmdldExpdmVQcm9wZXJ0eShuYW1lKTsKKyAgICAgICAgICAgIHZhciBp
dGVtID0gbmV3IFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQodGhpcy5fc3R5
bGVSdWxlLCB0aGlzLnN0eWxlLCBsaXZlUHJvcGVydHksIGZhbHNlLCBpbmhlcml0ZWQsIG92ZXJs
b2FkZWQpOwogICAgICAgICAgICAgdGhpcy5hcHBlbmRDaGlsZChpdGVtKTsKICAgICAgICAgfQog
ICAgIH0sCkBAIC0xNjcxLDM5ICsxNjY3LDM3IEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5
VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAg
ICAgICAgdmFyIHNlbGYgPSB0aGlzOwotCi0gICAgICAgIGZ1bmN0aW9uIGZhaWx1cmVDYWxsYmFj
aygpCisgICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKG5ld1N0eWxlKQogICAgICAgICB7Ci0gICAg
ICAgICAgICAvLyBUaGUgdXNlciB0eXBlZCBzb21ldGhpbmcsIGJ1dCBpdCBkaWRuJ3QgcGFyc2Uu
IEp1c3QgYWJvcnQgYW5kIHJlc3RvcmUKLSAgICAgICAgICAgIC8vIHRoZSBvcmlnaW5hbCB0aXRs
ZSBmb3IgdGhpcyBwcm9wZXJ0eS4gIElmIHRoaXMgd2FzIGEgbmV3IGF0dHJpYnV0ZSBhbmQKLSAg
ICAgICAgICAgIC8vIHdlIGNvdWxkbid0IHBhcnNlLCB0aGVuIGp1c3QgcmVtb3ZlIGl0LgotICAg
ICAgICAgICAgaWYgKHNlbGYuX25ld1Byb3BlcnR5KSB7Ci0gICAgICAgICAgICAgICAgc2VsZi5w
YXJlbnQucmVtb3ZlQ2hpbGQoc2VsZik7CisgICAgICAgICAgICBpZiAoIW5ld1N0eWxlKSB7Cisg
ICAgICAgICAgICAgICAgLy8gVGhlIHVzZXIgdHlwZWQgc29tZXRoaW5nLCBidXQgaXQgZGlkbid0
IHBhcnNlLiBKdXN0IGFib3J0IGFuZCByZXN0b3JlCisgICAgICAgICAgICAgICAgLy8gdGhlIG9y
aWdpbmFsIHRpdGxlIGZvciB0aGlzIHByb3BlcnR5LiAgSWYgdGhpcyB3YXMgYSBuZXcgYXR0cmli
dXRlIGFuZAorICAgICAgICAgICAgICAgIC8vIHdlIGNvdWxkbid0IHBhcnNlLCB0aGVuIGp1c3Qg
cmVtb3ZlIGl0LgorICAgICAgICAgICAgICAgIGlmICh0aGlzLl9uZXdQcm9wZXJ0eSkgeworICAg
ICAgICAgICAgICAgICAgICB0aGlzLnBhcmVudC5yZW1vdmVDaGlsZCh0aGlzKTsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBp
ZiAodXBkYXRlSW50ZXJmYWNlKQorICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVRpdGxl
KCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQotICAgICAgICAgICAg
aWYgKHVwZGF0ZUludGVyZmFjZSkKLSAgICAgICAgICAgICAgICBzZWxmLnVwZGF0ZVRpdGxlKCk7
Ci0gICAgICAgIH0KIAotICAgICAgICBmdW5jdGlvbiBzdWNjZXNzQ2FsbGJhY2sobmV3U3R5bGUp
Ci0gICAgICAgIHsKICAgICAgICAgICAgIGlmICghc3R5bGVUZXh0TGVuZ3RoKSB7CiAgICAgICAg
ICAgICAgICAgLy8gRG8gcmVtb3ZlIG91cnNlbHZlcyBmcm9tIFVJIHdoZW4gdGhlIHByb3BlcnR5
IHJlbW92YWwgaXMgY29uZmlybWVkLgotICAgICAgICAgICAgICAgIHNlbGYucGFyZW50LnJlbW92
ZUNoaWxkKHNlbGYpOworICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LnJlbW92ZUNoaWxkKHRo
aXMpOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBzZWxmLnN0eWxlID0g
bmV3U3R5bGU7Ci0gICAgICAgICAgICAgICAgc2VsZi5fc3R5bGVSdWxlLnN0eWxlID0gc2VsZi5z
dHlsZTsKKyAgICAgICAgICAgICAgICB0aGlzLnN0eWxlID0gbmV3U3R5bGU7CisgICAgICAgICAg
ICAgICAgdGhpcy5fc3R5bGVSdWxlLnN0eWxlID0gdGhpcy5zdHlsZTsKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgaWYgKHNlY3Rpb24gJiYgc2VjdGlvbi5wYW5lKQogICAgICAgICAgICAg
ICAgIHNlY3Rpb24ucGFuZS5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoInN0eWxlIGVkaXRlZCIp
OwogCiAgICAgICAgICAgICBpZiAodXBkYXRlSW50ZXJmYWNlKQotICAgICAgICAgICAgICAgIHNl
bGYudXBkYXRlQWxsKHRydWUpOworICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQWxsKHRydWUp
OwogICAgICAgICB9CiAKLSAgICAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLmFwcGx5U3R5bGVU
ZXh0KHRoaXMuc3R5bGUuaWQsIHN0eWxlVGV4dCwgdGhpcy5uYW1lLCBzdWNjZXNzQ2FsbGJhY2ss
IGZhaWx1cmVDYWxsYmFjayk7CisgICAgICAgIHRoaXMucHJvcGVydHkuc2V0VGV4dChzdHlsZVRl
eHQsIGNhbGxiYWNrLmJpbmQodGhpcykpOwogICAgIH0KIH0KIAo=
</data>
<flag name="review"
          id="62381"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>