<?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>111165</bug_id>
          
          <creation_ts>2013-03-01 04:48:39 -0800</creation_ts>
          <short_desc>Web Inspector: Introduce opaque SecurityOrigin string identifiers in the frontend</short_desc>
          <delta_ts>2013-03-03 23:45:43 -0800</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>WONTFIX</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>
          
          <blocked>110960</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexander Pavlov (apavlov)">apavlov</reporter>
          <assigned_to name="Alexander Pavlov (apavlov)">apavlov</assigned_to>
          <cc>apavlov</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>vsevik</cc>
    
    <cc>web-inspector-bugs</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>845070</commentid>
    <comment_count>0</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2013-03-01 04:48:39 -0800</bug_when>
    <thetext>This task has been split out of bug 110960.

Patch to follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845144</commentid>
    <comment_count>1</comment_count>
      <attachid>190963</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2013-03-01 07:07:53 -0800</bug_when>
    <thetext>Created attachment 190963
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845156</commentid>
    <comment_count>2</comment_count>
      <attachid>190963</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2013-03-01 07:30:29 -0800</bug_when>
    <thetext>Comment on attachment 190963
Patch

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

&gt; Source/WebCore/inspector/front-end/ExtensionServer.js:800
&gt; +            var originObject = new WebInspector.SecurityOrigin(securityOrigin, securityOrigin);

Let&apos;s revert this change.

&gt; Source/WebCore/inspector/front-end/ResourceTreeModel.js:771
&gt; +    equal: function(other)

equals

&gt; Source/WebCore/inspector/front-end/RuntimeModel.js:77
&gt; +     * @param {WebInspector.SecurityOrigin} securityOrigin

RuntimeModel.js changes should be reverted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845162</commentid>
    <comment_count>3</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2013-03-01 07:39:12 -0800</bug_when>
    <thetext>Committed r144455: &lt;http://trac.webkit.org/changeset/144455&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845206</commentid>
    <comment_count>4</comment_count>
      <attachid>190963</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2013-03-01 08:43:03 -0800</bug_when>
    <thetext>Comment on attachment 190963
Patch

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

&gt; Source/WebCore/inspector/front-end/ExtensionAuditCategory.js:34
&gt; + * @param {WebInspector.SecurityOrigin} extensionOrigin

This got landed. Please revert.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846170</commentid>
    <comment_count>5</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2013-03-03 23:30:57 -0800</bug_when>
    <thetext>Reverted r144455 for reason:

A simpler solution to the SecurityOrigin -&gt; localStorage lookup exists

Committed r144600: &lt;http://trac.webkit.org/changeset/144600&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846176</commentid>
    <comment_count>6</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2013-03-03 23:45:43 -0800</bug_when>
    <thetext>Closing, since bug 110960 is WONTFIX.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190963</attachid>
            <date>2013-03-01 07:07:53 -0800</date>
            <delta_ts>2013-03-01 08:43:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111165-20130301190404.patch</filename>
            <type>text/plain</type>
            <size>53880</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0NDUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2RiNTY5MmFiNzgyN2Qy
NzIwMTU2YjVmMjRhNTk4MjI3YWIyOGQxYS4uNWIxYTZiZTAwZDZkNTZmNTI1NjQyZGE3ODg0NTgw
ZDFkNjQwNmYyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDkwIEBACiAyMDEzLTAzLTAxICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogSW50cm9kdWNlIG9wYXF1ZSBTZWN1cml0eU9yaWdpbiBzdHJpbmcgaWRlbnRpZmllcnMg
aW4gdGhlIGZyb250ZW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMTExNjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBIHBsYWluIHN0cmluZyBzZWN1cml0eSBvcmlnaW4gdmFsdWUgaGFzIGJlZW4gcmVw
bGFjZWQgYnkgV2ViSW5zcGVjdG9yLlNlY3VyaXR5T3JpZ2luIGFsbCBvdmVyIHRoZSBjb2RlLAor
ICAgICAgICBjb250YWluaW5nIGEgVVJMICh3aGljaCBob2xkcyBhIHN0cmluZ2lmaWVkIHNlY3Vy
aXR5IG9yaWdpbikgYW5kIGFuIGlkZW50aWZpZXIgKHdoaWNoIGlzIG5vdyB1c2VkCisgICAgICAg
IGFzIGEga2V5IGluIHBsYWNlIG9mIHRoZSBzdHJpbmdpZmllZCBzZWN1cml0eSBvcmlnaW4gaW4g
dmFyaW91cyBtYXBzKS4gVG8gYXZvaWQgdGhlIFJlc291cmNlVHJlZU1vZGVsCisgICAgICAgIGNv
ZGUgY2x1dHRlciwgdGhlIHNlY3VyaXR5IG9yaWdpbiB0cmFja2luZyBjb2RlIGhhcyBiZWVuIGV4
dHJhY3RlZCBpbnRvIGEgc2VwYXJhdGUgdHlwZSwKKyAgICAgICAgV2ViSW5zcGVjdG9yLlNlY3Vy
aXR5T3JpZ2luVHJhY2tlciwgd2hpY2ggd29ya3MgYXMgYSBoZWxwZXIgb24gdGhlIFJlc291cmNl
VHJlZU1vZGVsLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgYXMgaXQgaXMgYSByZWZhY3Rvcmlu
Zy4KKworICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRE9NU3RvcmFnZS5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5ET01TdG9yYWdlLnN0b3JhZ2VJZCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRE9NU3RvcmFnZS5wcm90b3R5cGUuaWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRP
TVN0b3JhZ2UucHJvdG90eXBlLmdldEl0ZW1zKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01T
dG9yYWdlLnByb3RvdHlwZS5zZXRJdGVtKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01TdG9y
YWdlLnByb3RvdHlwZS5yZW1vdmVJdGVtKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01TdG9y
YWdlTW9kZWwucHJvdG90eXBlLl9zZWN1cml0eU9yaWdpbkFkZGVkKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5ET01TdG9yYWdlTW9kZWwucHJvdG90eXBlLl9zZWN1cml0eU9yaWdpblJlbW92ZWQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VNb2RlbC5wcm90b3R5cGUuX3N0b3Jh
Z2VLZXkpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uQXVkaXRDYXRl
Z29yeS5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblNlcnZlci5q
czoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlLl9vbm1l
c3NhZ2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUu
ZXZhbHVhdGUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1vZGVs
LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5wcm90b3R5cGUuX3Jl
c2V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwucHJvdG90eXBlLl9z
ZWN1cml0eU9yaWdpbkFkZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9k
ZWwucHJvdG90eXBlLl9zZWN1cml0eU9yaWdpblJlbW92ZWQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkZpbGVTeXN0ZW1Nb2RlbC5wcm90b3R5cGUuX2FkZE9yaWdpbik6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLnByb3RvdHlwZS5fcmVtb3ZlT3JpZ2luKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwucHJvdG90eXBlLl9yZXF1ZXN0RmlsZVN5
c3RlbVJvb3QpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5wcm90b3R5
cGUuX2ZpbGVTeXN0ZW1Sb290UmVjZWl2ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVT
eXN0ZW1Nb2RlbC5wcm90b3R5cGUuX3JlbW92ZUZpbGVTeXN0ZW0pOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5GaWxlU3lzdGVtLnByb3RvdHlwZS5nZXQgbmFtZSk6Cisg
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9JbmRleGVkREJNb2RlbC5qczoKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5wcm90b3R5cGUuX3Jlc2V0KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5wcm90b3R5cGUucmVmcmVzaERhdGFiYXNlTmFt
ZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLnByb3RvdHlwZS5fc2Vj
dXJpdHlPcmlnaW5BZGRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwu
cHJvdG90eXBlLl9zZWN1cml0eU9yaWdpblJlbW92ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkluZGV4ZWREQk1vZGVsLnByb3RvdHlwZS5fYWRkT3JpZ2luKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5JbmRleGVkREJNb2RlbC5wcm90b3R5cGUuX3JlbW92ZU9yaWdpbik6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwucHJvdG90eXBlLl91cGRhdGVPcmlnaW5EYXRhYmFz
ZU5hbWVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5wcm90b3R5cGUu
X2xvYWREYXRhYmFzZU5hbWVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2Rl
bC5wcm90b3R5cGUuX2xvYWREYXRhYmFzZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5kZXhl
ZERCTW9kZWwucHJvdG90eXBlLik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9k
ZWwucHJvdG90eXBlLl9yZXF1ZXN0RGF0YSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5kZXhl
ZERCTW9kZWwuRGF0YWJhc2VJZC5wcm90b3R5cGUuZXF1YWxzKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL0luZGV4ZWREQlZpZXdzLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLklE
QkRhdGFiYXNlVmlldy5wcm90b3R5cGUuX3JlZnJlc2hEYXRhYmFzZSk6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVRyZWVNb2RlbC5qczoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5wcm90b3R5cGUuX2FkZEZyYW1lKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5wcm90b3R5cGUuc2VjdXJpdHlPcmlnaW5Gb3JJ
ZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwucHJvdG90eXBlLnNl
Y3VyaXR5T3JpZ2lucyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwu
cHJvdG90eXBlLl9oYW5kbGVNYWluRnJhbWVEZXRhY2hlZCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuUmVzb3VyY2VUcmVlTW9kZWwucHJvdG90eXBlLl9mcmFtZU5hdmlnYXRlZCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwucHJvdG90eXBlLl9mcmFtZURldGFjaGVk
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5TZWN1cml0eU9yaWdp
blRyYWNrZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLlNlY3Vy
aXR5T3JpZ2luVHJhY2tlci5wcm90b3R5cGUuX2FkZFNlY3VyaXR5T3JpZ2luKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5TZWN1cml0eU9yaWdpblRyYWNrZXIucHJv
dG90eXBlLl9yZW1vdmVTZWN1cml0eU9yaWdpbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVz
b3VyY2VUcmVlTW9kZWwuU2VjdXJpdHlPcmlnaW5UcmFja2VyLnByb3RvdHlwZS5fYmluZFNlY3Vy
aXR5T3JpZ2luKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5TZWN1
cml0eU9yaWdpblRyYWNrZXIucHJvdG90eXBlLl91bmJpbmRTZWN1cml0eU9yaWdpbik6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwuU2VjdXJpdHlPcmlnaW5UcmFja2Vy
LnByb3RvdHlwZS5fZGV0YWNoTWFpbkZyYW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNv
dXJjZVRyZWVNb2RlbC5TZWN1cml0eU9yaWdpblRyYWNrZXIucHJvdG90eXBlLl9zZWN1cml0eU9y
aWdpbkZvcklkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5TZWN1
cml0eU9yaWdpblRyYWNrZXIucHJvdG90eXBlLl9zZWN1cml0eU9yaWdpbnMpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUZyYW1lLnByb3RvdHlwZS5fbmF2aWdhdGUpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlNlY3VyaXR5T3JpZ2luLnByb3RvdHlwZS5pZCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW4ucHJvdG90eXBlLnVybCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW4ucHJvdG90eXBlLmVxdWFsKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5TZWN1cml0eU9yaWdpbi5wcm90b3R5cGUudWlUaXRsZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW4ucHJvdG90eXBlLnRvUHJvdG9jb2wpOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuSURCRGF0YWJhc2VUcmVlRWxlbWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
SURCRGF0YWJhc2VUcmVlRWxlbWVudC5wcm90b3R5cGUuZ2V0IGl0ZW1VUkwpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLklEQk9iamVjdFN0b3JlVHJlZUVsZW1lbnQucHJvdG90eXBlLmdldCBpdGVt
VVJMKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JREJJbmRleFRyZWVFbGVtZW50LnByb3RvdHlw
ZS5nZXQgaXRlbVVSTCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZVRyZWVFbGVt
ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01TdG9yYWdlVHJlZUVsZW1lbnQucHJvdG90
eXBlLmdldCBpdGVtVVJMKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVHJlZUVs
ZW1lbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUnVudGltZU1vZGVsLmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkZyYW1lRXhlY3V0aW9uQ29udGV4dExpc3QucHJvdG90eXBl
LmNvbnRleHRCeVNlY3VyaXR5T3JpZ2luKToKKworMjAxMy0wMy0wMSAgQWxleGFuZGVyIFBhdmxv
diAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtTdHls
ZXNdIEltcGxlbWVudCBuYXZpZ2F0aW9uIHRvIFVJIGxvY2F0aW9ucyBvZiBwcm9wZXJ0eSBuYW1l
cy92YWx1ZXMgaW4gdGhlIHNvdXJjZSBjb2RlCiAgICAgICAgIFJlbGFuZGluZyBmaXhlZCByMTQ0
NDQ5LgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1
Mjg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTVN0
b3JhZ2UuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTVN0b3JhZ2Uu
anMKaW5kZXggYjIwOWY3MjZjMDkzNGRkYzQ2YmUyNjljMmZlYjgxMDYxYTQxYWUzNi4uOWU5Y2Ux
OWZiN2MxNzNmZDAyMWU0YzUyODlmOGNhNzM4ZTUyNTczYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01TdG9yYWdlLmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NU3RvcmFnZS5qcwpAQCAtMjksNyArMjksNyBAQAog
CiAvKioKICAqIEBjb25zdHJ1Y3RvcgotICogQHBhcmFtIHtzdHJpbmd9IHNlY3VyaXR5T3JpZ2lu
CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5TZWN1cml0eU9yaWdpbn0gc2VjdXJpdHlPcmlnaW4K
ICAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNMb2NhbFN0b3JhZ2UKICAqLwogV2ViSW5zcGVjdG9yLkRP
TVN0b3JhZ2UgPSBmdW5jdGlvbihzZWN1cml0eU9yaWdpbiwgaXNMb2NhbFN0b3JhZ2UpCkBAIC0z
OSwyNCArMzksMjQgQEAgV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2UgPSBmdW5jdGlvbihzZWN1cml0
eU9yaWdpbiwgaXNMb2NhbFN0b3JhZ2UpCiB9CiAKIC8qKgotICogQHBhcmFtIHtzdHJpbmd9IHNl
Y3VyaXR5T3JpZ2luCisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5TZWN1cml0eU9yaWdpbn0gc2Vj
dXJpdHlPcmlnaW4KICAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNMb2NhbFN0b3JhZ2UKICAqIEByZXR1
cm4ge0RPTVN0b3JhZ2VBZ2VudC5TdG9yYWdlSWR9CiAgKi8KIFdlYkluc3BlY3Rvci5ET01TdG9y
YWdlLnN0b3JhZ2VJZCA9IGZ1bmN0aW9uKHNlY3VyaXR5T3JpZ2luLCBpc0xvY2FsU3RvcmFnZSkK
IHsKLSAgICByZXR1cm4geyBzZWN1cml0eU9yaWdpbjogc2VjdXJpdHlPcmlnaW4sIGlzTG9jYWxT
dG9yYWdlOiBpc0xvY2FsU3RvcmFnZSB9OworICAgIHJldHVybiB7IHNlY3VyaXR5T3JpZ2luOiBz
ZWN1cml0eU9yaWdpbi50b1Byb3RvY29sKCksIGlzTG9jYWxTdG9yYWdlOiBpc0xvY2FsU3RvcmFn
ZSB9OwogfQogCiBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZS5wcm90b3R5cGUgPSB7CiAKICAgICAv
KiogQHJldHVybiB7RE9NU3RvcmFnZUFnZW50LlN0b3JhZ2VJZH0gKi8KLSAgICBnZXQgaWQoKQor
ICAgIGlkOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLkRP
TVN0b3JhZ2Uuc3RvcmFnZUlkKHRoaXMuX3NlY3VyaXR5T3JpZ2luLCB0aGlzLl9pc0xvY2FsU3Rv
cmFnZSk7CiAgICAgfSwKIAotICAgIC8qKiBAcmV0dXJuIHtzdHJpbmd9ICovCisgICAgLyoqIEBy
ZXR1cm4ge1dlYkluc3BlY3Rvci5TZWN1cml0eU9yaWdpbn0gKi8KICAgICBnZXQgc2VjdXJpdHlP
cmlnaW4oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3NlY3VyaXR5T3JpZ2luOwpAQCAt
NzMsNyArNzMsNyBAQCBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZS5wcm90b3R5cGUgPSB7CiAgICAg
ICovCiAgICAgZ2V0SXRlbXM6IGZ1bmN0aW9uKGNhbGxiYWNrKQogICAgIHsKLSAgICAgICAgRE9N
U3RvcmFnZUFnZW50LmdldERPTVN0b3JhZ2VJdGVtcyh0aGlzLmlkLCBjYWxsYmFjayk7CisgICAg
ICAgIERPTVN0b3JhZ2VBZ2VudC5nZXRET01TdG9yYWdlSXRlbXModGhpcy5pZCgpLCBjYWxsYmFj
ayk7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtODMsNyArODMsNyBAQCBXZWJJbnNwZWN0b3IuRE9N
U3RvcmFnZS5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgc2V0SXRlbTogZnVuY3Rpb24oa2V5
LCB2YWx1ZSwgY2FsbGJhY2spCiAgICAgewotICAgICAgICBET01TdG9yYWdlQWdlbnQuc2V0RE9N
U3RvcmFnZUl0ZW0odGhpcy5pZCwga2V5LCB2YWx1ZSwgY2FsbGJhY2spOworICAgICAgICBET01T
dG9yYWdlQWdlbnQuc2V0RE9NU3RvcmFnZUl0ZW0odGhpcy5pZCgpLCBrZXksIHZhbHVlLCBjYWxs
YmFjayk7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtOTIsNyArOTIsNyBAQCBXZWJJbnNwZWN0b3Iu
RE9NU3RvcmFnZS5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgcmVtb3ZlSXRlbTogZnVuY3Rp
b24oa2V5LCBjYWxsYmFjaykKICAgICB7Ci0gICAgICAgIERPTVN0b3JhZ2VBZ2VudC5yZW1vdmVE
T01TdG9yYWdlSXRlbSh0aGlzLmlkLCBrZXksIGNhbGxiYWNrKTsKKyAgICAgICAgRE9NU3RvcmFn
ZUFnZW50LnJlbW92ZURPTVN0b3JhZ2VJdGVtKHRoaXMuaWQoKSwga2V5LCBjYWxsYmFjayk7CiAg
ICAgfQogfQogCkBAIC0xMjUsNyArMTI1LDcgQEAgV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VNb2Rl
bC5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX3NlY3VyaXR5T3JpZ2luQWRkZWQ6IGZ1bmN0
aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIHNlY3VyaXR5T3JpZ2luID0gLyoqIEB0eXBl
IHtzdHJpbmd9ICovIChldmVudC5kYXRhKTsKKyAgICAgICAgdmFyIHNlY3VyaXR5T3JpZ2luID0g
LyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW59ICovIChldmVudC5kYXRhKTsK
ICAgICAgICAgdmFyIGxvY2FsU3RvcmFnZUtleSA9IHRoaXMuX3N0b3JhZ2VLZXkoc2VjdXJpdHlP
cmlnaW4sIHRydWUpOwogICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fc3RvcmFnZXNbbG9j
YWxTdG9yYWdlS2V5XSk7CiAgICAgICAgIHZhciBsb2NhbFN0b3JhZ2UgPSBuZXcgV2ViSW5zcGVj
dG9yLkRPTVN0b3JhZ2Uoc2VjdXJpdHlPcmlnaW4sIHRydWUpOwpAQCAtMTQ0LDcgKzE0NCw3IEBA
IFdlYkluc3BlY3Rvci5ET01TdG9yYWdlTW9kZWwucHJvdG90eXBlID0gewogICAgICAqLwogICAg
IF9zZWN1cml0eU9yaWdpblJlbW92ZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAg
dmFyIHNlY3VyaXR5T3JpZ2luID0gLyoqIEB0eXBlIHtzdHJpbmd9ICovIChldmVudC5kYXRhKTsK
KyAgICAgICAgdmFyIHNlY3VyaXR5T3JpZ2luID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuU2Vj
dXJpdHlPcmlnaW59ICovIChldmVudC5kYXRhKTsKICAgICAgICAgdmFyIGxvY2FsU3RvcmFnZUtl
eSA9IHRoaXMuX3N0b3JhZ2VLZXkoc2VjdXJpdHlPcmlnaW4sIHRydWUpOwogICAgICAgICB2YXIg
bG9jYWxTdG9yYWdlID0gdGhpcy5fc3RvcmFnZXNbbG9jYWxTdG9yYWdlS2V5XTsKICAgICAgICAg
Y29uc29sZS5hc3NlcnQobG9jYWxTdG9yYWdlKTsKQEAgLTE1OSwxMyArMTU5LDEzIEBAIFdlYklu
c3BlY3Rvci5ET01TdG9yYWdlTW9kZWwucHJvdG90eXBlID0gewogICAgIH0sCiAKICAgICAvKioK
LSAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2VjdXJpdHlPcmlnaW4KKyAgICAgKiBAcGFyYW0ge1dl
Ykluc3BlY3Rvci5TZWN1cml0eU9yaWdpbn0gc2VjdXJpdHlPcmlnaW4KICAgICAgKiBAcGFyYW0g
e2Jvb2xlYW59IGlzTG9jYWxTdG9yYWdlCiAgICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICAq
LwogICAgIF9zdG9yYWdlS2V5OiBmdW5jdGlvbihzZWN1cml0eU9yaWdpbiwgaXNMb2NhbFN0b3Jh
Z2UpCiAgICAgewotICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoV2ViSW5zcGVjdG9yLkRP
TVN0b3JhZ2Uuc3RvcmFnZUlkKHNlY3VyaXR5T3JpZ2luLCBpc0xvY2FsU3RvcmFnZSkpOworICAg
ICAgICByZXR1cm4gc2VjdXJpdHlPcmlnaW4uaWQoKSArICJ8IiArIGlzTG9jYWxTdG9yYWdlOwog
ICAgIH0sCiAKICAgICAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvRXh0ZW5zaW9uQXVkaXRDYXRlZ29yeS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uQXVkaXRDYXRlZ29yeS5qcwppbmRleCA0YzY5MmM3NzM0
NWFlZjU1NzkxMzExODZmNTg2NjlkODI0N2M4ZTM0Li5iMTIxOTA2MDkxM2Y0MTVhY2VjODcwODQ4
Y2IwOGMyYmQxM2QwMmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0V4dGVuc2lvbkF1ZGl0Q2F0ZWdvcnkuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25BdWRpdENhdGVnb3J5LmpzCkBAIC0zMSw3ICszMSw3
IEBACiAvKioKICAqIEBjb25zdHJ1Y3RvcgogICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5BdWRp
dENhdGVnb3J5fQotICogQHBhcmFtIHtzdHJpbmd9IGV4dGVuc2lvbk9yaWdpbgorICogQHBhcmFt
IHtXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW59IGV4dGVuc2lvbk9yaWdpbgogICogQHBhcmFt
IHtzdHJpbmd9IGlkCiAgKiBAcGFyYW0ge3N0cmluZ30gZGlzcGxheU5hbWUKICAqIEBwYXJhbSB7
bnVtYmVyPX0gcnVsZUNvdW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0V4dGVuc2lvblNlcnZlci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvRXh0ZW5zaW9uU2VydmVyLmpzCmluZGV4IGZkMzA3ZmE5NWZjOWNmYzM0NWNlNzRh
MzFjMGM5YjczYWE5ZmY0M2IuLmEzYjY1N2JmMGVlMmM0ZTNhOGQ0ZjM1MGJkYTIyMDNmZmRlMjcw
ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5z
aW9uU2VydmVyLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0
ZW5zaW9uU2VydmVyLmpzCkBAIC02OTMsMTIgKzY5MywxOSBAQCBXZWJJbnNwZWN0b3IuRXh0ZW5z
aW9uU2VydmVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfSwKIAor
ICAgIC8qKgorICAgICAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50CisgICAgICovCiAgICAgX29uV2lu
ZG93TWVzc2FnZTogZnVuY3Rpb24oZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoZXZlbnQuZGF0
YSA9PT0gInJlZ2lzdGVyRXh0ZW5zaW9uIikKICAgICAgICAgICAgIHRoaXMuX3JlZ2lzdGVyRXh0
ZW5zaW9uKGV2ZW50Lm9yaWdpbiwgZXZlbnQucG9ydHNbMF0pOwogICAgIH0sCiAKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3JpZ2luCisgICAgICogQHBhcmFtIHtNZXNzYWdlUG9y
dH0gcG9ydAorICAgICAqLwogICAgIF9yZWdpc3RlckV4dGVuc2lvbjogZnVuY3Rpb24ob3JpZ2lu
LCBwb3J0KQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9yZWdpc3RlcmVkRXh0ZW5zaW9ucy5o
YXNPd25Qcm9wZXJ0eShvcmlnaW4pKSB7CkBAIC03MTEsOSArNzE4LDEyIEBAIFdlYkluc3BlY3Rv
ci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlID0gewogICAgICAgICBwb3J0LnN0YXJ0KCk7CiAg
ICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50CisgICAgICovCiAg
ICAgX29ubWVzc2FnZTogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICB2YXIgbWVzc2Fn
ZSA9IGV2ZW50LmRhdGE7CisgICAgICAgIHZhciBtZXNzYWdlID0gLyoqQHR5cGUge09iamVjdH0q
LyAoZXZlbnQuZGF0YSk7CiAgICAgICAgIHZhciByZXN1bHQ7CiAKICAgICAgICAgaWYgKG1lc3Nh
Z2UuY29tbWFuZCBpbiB0aGlzLl9oYW5kbGVycykKQEAgLTcyNSw2ICs3MzUsOSBAQCBXZWJJbnNw
ZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2Rp
c3BhdGNoQ2FsbGJhY2sobWVzc2FnZS5yZXF1ZXN0SWQsIGV2ZW50LnRhcmdldCwgcmVzdWx0KTsK
ICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGNvbW1hbmQKKyAgICAg
Ki8KICAgICBfcmVnaXN0ZXJIYW5kbGVyOiBmdW5jdGlvbihjb21tYW5kLCBjYWxsYmFjaykKICAg
ICB7CiAgICAgICAgIHRoaXMuX2hhbmRsZXJzW2NvbW1hbmRdID0gY2FsbGJhY2s7CkBAIC03ODQs
NyArNzk3LDggQEAgV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICB2YXIgbWFpbkZyYW1lID0gV2ViSW5zcGVjdG9yLnJlc291cmNlVHJlZU1vZGVs
Lm1haW5GcmFtZTsKICAgICAgICAgICAgIGlmICghbWFpbkZyYW1lKQogICAgICAgICAgICAgICAg
IHJldHVybiB0aGlzLl9zdGF0dXMuRV9GQUlMRUQoIm1haW4gZnJhbWUgbm90IGF2YWlsYWJsZSB5
ZXQiKTsKLSAgICAgICAgICAgIHZhciBjb250ZXh0ID0gV2ViSW5zcGVjdG9yLnJ1bnRpbWVNb2Rl
bC5jb250ZXh0QnlGcmFtZUFuZFNlY3VyaXR5T3JpZ2luKG1haW5GcmFtZSwgc2VjdXJpdHlPcmln
aW4pOworICAgICAgICAgICAgdmFyIG9yaWdpbk9iamVjdCA9IG5ldyBXZWJJbnNwZWN0b3IuU2Vj
dXJpdHlPcmlnaW4oc2VjdXJpdHlPcmlnaW4sIHNlY3VyaXR5T3JpZ2luKTsKKyAgICAgICAgICAg
IHZhciBjb250ZXh0ID0gV2ViSW5zcGVjdG9yLnJ1bnRpbWVNb2RlbC5jb250ZXh0QnlGcmFtZUFu
ZFNlY3VyaXR5T3JpZ2luKG1haW5GcmFtZSwgb3JpZ2luT2JqZWN0KTsKICAgICAgICAgICAgIGlm
ICghY29udGV4dCkKICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fc3RhdHVzLkVfTk9URk9V
TkQoc2VjdXJpdHlPcmlnaW4pOwogICAgICAgICAgICAgY29udGV4dElkID0gY29udGV4dC5pZDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3Rl
bU1vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVt
TW9kZWwuanMKaW5kZXggMTRjMTM3MmNkNDJiN2M1NThhZWFiMmEzMWUxNTNhODU0N2IyNjliOC4u
ZjAyYjQ1NWM3NmQ5ZDE1YTlhMzcxNzI0YjI3N2QxMTljY2E1OTAxMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtTW9kZWwuanMKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtTW9kZWwuanMKQEAg
LTQ5LDggKzQ5LDggQEAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbCA9IGZ1bmN0aW9uKCkK
IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwucHJvdG90eXBlID0gewogICAgIF9yZXNldDog
ZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgZm9yICh2YXIgc2VjdXJpdHlPcmlnaW4gaW4gdGhp
cy5fZmlsZVN5c3RlbXNGb3JPcmlnaW4pCi0gICAgICAgICAgICB0aGlzLl9yZW1vdmVPcmlnaW4o
c2VjdXJpdHlPcmlnaW4pOworICAgICAgICBmb3IgKHZhciBzZWN1cml0eU9yaWdpbklkIGluIHRo
aXMuX2ZpbGVTeXN0ZW1zRm9yT3JpZ2luKQorICAgICAgICAgICAgdGhpcy5fcmVtb3ZlT3JpZ2lu
KFdlYkluc3BlY3Rvci5yZXNvdXJjZVRyZWVNb2RlbC5zZWN1cml0eU9yaWdpbkZvcklkKHNlY3Vy
aXR5T3JpZ2luSWQpKTsKICAgICAgICAgdmFyIHNlY3VyaXR5T3JpZ2lucyA9IFdlYkluc3BlY3Rv
ci5yZXNvdXJjZVRyZWVNb2RlbC5zZWN1cml0eU9yaWdpbnMoKTsKICAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBzZWN1cml0eU9yaWdpbnMubGVuZ3RoOyArK2kpCiAgICAgICAgICAgICB0aGlz
Ll9hZGRPcmlnaW4oc2VjdXJpdHlPcmlnaW5zW2ldKTsKQEAgLTYxLDcgKzYxLDcgQEAgV2ViSW5z
cGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX3NlY3Vy
aXR5T3JpZ2luQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIHNlY3Vy
aXR5T3JpZ2luID0gLyoqIEB0eXBlIHtzdHJpbmd9ICovIChldmVudC5kYXRhKTsKKyAgICAgICAg
dmFyIHNlY3VyaXR5T3JpZ2luID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmln
aW59ICovIChldmVudC5kYXRhKTsKICAgICAgICAgdGhpcy5fYWRkT3JpZ2luKHNlY3VyaXR5T3Jp
Z2luKTsKICAgICB9LAogCkBAIC03MCwzNyArNzAsMzkgQEAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0
ZW1Nb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX3NlY3VyaXR5T3JpZ2luUmVtb3Zl
ZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICB2YXIgc2VjdXJpdHlPcmlnaW4gPSAv
KiogQHR5cGUge3N0cmluZ30gKi8gKGV2ZW50LmRhdGEpOworICAgICAgICB2YXIgc2VjdXJpdHlP
cmlnaW4gPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5TZWN1cml0eU9yaWdpbn0gKi8gKGV2ZW50
LmRhdGEpOwogICAgICAgICB0aGlzLl9yZW1vdmVPcmlnaW4oc2VjdXJpdHlPcmlnaW4pOwogICAg
IH0sCiAKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2VjdXJpdHlPcmlnaW4KKyAg
ICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5TZWN1cml0eU9yaWdpbn0gc2VjdXJpdHlPcmlnaW4K
ICAgICAgKi8KICAgICBfYWRkT3JpZ2luOiBmdW5jdGlvbihzZWN1cml0eU9yaWdpbikKICAgICB7
Ci0gICAgICAgIHRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3JpZ2luW3NlY3VyaXR5T3JpZ2luXSA9IHt9
OworICAgICAgICB2YXIgc2VjdXJpdHlPcmlnaW5JZCA9IHNlY3VyaXR5T3JpZ2luLmlkKCk7Cisg
ICAgICAgIHRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3JpZ2luW3NlY3VyaXR5T3JpZ2luSWRdID0ge307
CiAKICAgICAgICAgdmFyIHR5cGVzID0gWyJwZXJzaXN0ZW50IiwgInRlbXBvcmFyeSJdOwogICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHR5cGVzLmxlbmd0aDsgKytpKQotICAgICAgICAgICAg
dGhpcy5fcmVxdWVzdEZpbGVTeXN0ZW1Sb290KHNlY3VyaXR5T3JpZ2luLCB0eXBlc1tpXSwgdGhp
cy5fZmlsZVN5c3RlbVJvb3RSZWNlaXZlZC5iaW5kKHRoaXMsIHNlY3VyaXR5T3JpZ2luLCB0eXBl
c1tpXSwgdGhpcy5fZmlsZVN5c3RlbXNGb3JPcmlnaW5bc2VjdXJpdHlPcmlnaW5dKSk7CisgICAg
ICAgICAgICB0aGlzLl9yZXF1ZXN0RmlsZVN5c3RlbVJvb3Qoc2VjdXJpdHlPcmlnaW4sIHR5cGVz
W2ldLCB0aGlzLl9maWxlU3lzdGVtUm9vdFJlY2VpdmVkLmJpbmQodGhpcywgc2VjdXJpdHlPcmln
aW4sIHR5cGVzW2ldLCB0aGlzLl9maWxlU3lzdGVtc0Zvck9yaWdpbltzZWN1cml0eU9yaWdpbklk
XSkpOwogICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2VjdXJpdHlP
cmlnaW4KKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5TZWN1cml0eU9yaWdpbn0gc2VjdXJp
dHlPcmlnaW4KICAgICAgKi8KICAgICBfcmVtb3ZlT3JpZ2luOiBmdW5jdGlvbihzZWN1cml0eU9y
aWdpbikKICAgICB7Ci0gICAgICAgIGZvciAodmFyIHR5cGUgaW4gdGhpcy5fZmlsZVN5c3RlbXNG
b3JPcmlnaW5bc2VjdXJpdHlPcmlnaW5dKSB7Ci0gICAgICAgICAgICB2YXIgZmlsZVN5c3RlbSA9
IHRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3JpZ2luW3NlY3VyaXR5T3JpZ2luXVt0eXBlXTsKLSAgICAg
ICAgICAgIGRlbGV0ZSB0aGlzLl9maWxlU3lzdGVtc0Zvck9yaWdpbltzZWN1cml0eU9yaWdpbl1b
dHlwZV07CisgICAgICAgIHZhciBzZWN1cml0eU9yaWdpbklkID0gc2VjdXJpdHlPcmlnaW4uaWQo
KTsKKyAgICAgICAgZm9yICh2YXIgdHlwZSBpbiB0aGlzLl9maWxlU3lzdGVtc0Zvck9yaWdpbltz
ZWN1cml0eU9yaWdpbklkXSkgeworICAgICAgICAgICAgdmFyIGZpbGVTeXN0ZW0gPSB0aGlzLl9m
aWxlU3lzdGVtc0Zvck9yaWdpbltzZWN1cml0eU9yaWdpbklkXVt0eXBlXTsKKyAgICAgICAgICAg
IGRlbGV0ZSB0aGlzLl9maWxlU3lzdGVtc0Zvck9yaWdpbltzZWN1cml0eU9yaWdpbklkXVt0eXBl
XTsKICAgICAgICAgICAgIHRoaXMuX2ZpbGVTeXN0ZW1SZW1vdmVkKGZpbGVTeXN0ZW0pOwogICAg
ICAgICB9Ci0gICAgICAgIGRlbGV0ZSB0aGlzLl9maWxlU3lzdGVtc0Zvck9yaWdpbltzZWN1cml0
eU9yaWdpbl07CisgICAgICAgIGRlbGV0ZSB0aGlzLl9maWxlU3lzdGVtc0Zvck9yaWdpbltzZWN1
cml0eU9yaWdpbklkXTsKICAgICB9LAogCiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtzdHJpbmd9
IG9yaWdpbgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlNlY3VyaXR5T3JpZ2lufSBvcmln
aW4KICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdHlwZQogICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24o
bnVtYmVyLCBGaWxlU3lzdGVtQWdlbnQuRW50cnk9KX0gY2FsbGJhY2sKICAgICAgKi8KQEAgLTEy
MSw3ICsxMjMsNyBAQCBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgICAgIGNhbGxiYWNrKGVycm9yQ29kZSwgYmFja2VuZFJvb3RFbnRyeSk7CiAgICAg
ICAgIH0KIAotICAgICAgICBGaWxlU3lzdGVtQWdlbnQucmVxdWVzdEZpbGVTeXN0ZW1Sb290KG9y
aWdpbiwgdHlwZSwgaW5uZXJDYWxsYmFjay5iaW5kKHRoaXMpKTsKKyAgICAgICAgRmlsZVN5c3Rl
bUFnZW50LnJlcXVlc3RGaWxlU3lzdGVtUm9vdChvcmlnaW4udG9Qcm90b2NvbCgpLCB0eXBlLCBp
bm5lckNhbGxiYWNrLmJpbmQodGhpcykpOwogICAgIH0sCiAKICAgICAvKioKQEAgLTE0Niw3ICsx
NDgsNyBAQCBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLnByb3RvdHlwZSA9IHsKICAgICB9
LAogCiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IG9yaWdpbgorICAgICAqIEBwYXJh
bSB7V2ViSW5zcGVjdG9yLlNlY3VyaXR5T3JpZ2lufSBvcmlnaW4KICAgICAgKiBAcGFyYW0ge3N0
cmluZ30gdHlwZQogICAgICAqIEBwYXJhbSB7T2JqZWN0LjxXZWJJbnNwZWN0b3IuRmlsZVN5c3Rl
bU1vZGVsLkZpbGVTeXN0ZW0+fSBzdG9yZQogICAgICAqIEBwYXJhbSB7bnVtYmVyfSBlcnJvckNv
ZGUKQEAgLTE1NCw3ICsxNTYsNyBAQCBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLnByb3Rv
dHlwZSA9IHsKICAgICAgKi8KICAgICBfZmlsZVN5c3RlbVJvb3RSZWNlaXZlZDogZnVuY3Rpb24o
b3JpZ2luLCB0eXBlLCBzdG9yZSwgZXJyb3JDb2RlLCBiYWNrZW5kUm9vdEVudHJ5KQogICAgIHsK
LSAgICAgICAgaWYgKCFlcnJvckNvZGUgJiYgYmFja2VuZFJvb3RFbnRyeSAmJiB0aGlzLl9maWxl
U3lzdGVtc0Zvck9yaWdpbltvcmlnaW5dID09PSBzdG9yZSkgeworICAgICAgICBpZiAoIWVycm9y
Q29kZSAmJiBiYWNrZW5kUm9vdEVudHJ5ICYmIHRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3JpZ2luW29y
aWdpbi5pZCgpXSA9PT0gc3RvcmUpIHsKICAgICAgICAgICAgIHZhciBmaWxlU3lzdGVtID0gbmV3
IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRmlsZVN5c3RlbSh0aGlzLCBvcmlnaW4sIHR5
cGUsIGJhY2tlbmRSb290RW50cnkpOwogICAgICAgICAgICAgc3RvcmVbdHlwZV0gPSBmaWxlU3lz
dGVtOwogICAgICAgICAgICAgdGhpcy5fZmlsZVN5c3RlbUFkZGVkKGZpbGVTeXN0ZW0pOwpAQCAt
MzM1LDE0ICszMzcsMTQgQEAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5wcm90b3R5cGUg
PSB7CiAgICAgICovCiAgICAgX3JlbW92ZUZpbGVTeXN0ZW06IGZ1bmN0aW9uKGZpbGVTeXN0ZW0p
CiAgICAgewotICAgICAgICB2YXIgb3JpZ2luID0gZmlsZVN5c3RlbS5vcmlnaW47CisgICAgICAg
IHZhciBvcmlnaW5JZCA9IGZpbGVTeXN0ZW0ub3JpZ2luLmlkKCk7CiAgICAgICAgIHZhciB0eXBl
ID0gZmlsZVN5c3RlbS50eXBlOwotICAgICAgICBpZiAodGhpcy5fZmlsZVN5c3RlbXNGb3JPcmln
aW5bb3JpZ2luXSAmJiB0aGlzLl9maWxlU3lzdGVtc0Zvck9yaWdpbltvcmlnaW5dW3R5cGVdKSB7
Ci0gICAgICAgICAgICBkZWxldGUgdGhpcy5fZmlsZVN5c3RlbXNGb3JPcmlnaW5bb3JpZ2luXVt0
eXBlXTsKKyAgICAgICAgaWYgKHRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3JpZ2luW29yaWdpbklkXSAm
JiB0aGlzLl9maWxlU3lzdGVtc0Zvck9yaWdpbltvcmlnaW5JZF1bdHlwZV0pIHsKKyAgICAgICAg
ICAgIGRlbGV0ZSB0aGlzLl9maWxlU3lzdGVtc0Zvck9yaWdpbltvcmlnaW5JZF1bdHlwZV07CiAg
ICAgICAgICAgICB0aGlzLl9maWxlU3lzdGVtUmVtb3ZlZChmaWxlU3lzdGVtKTsKIAotICAgICAg
ICAgICAgaWYgKE9iamVjdC5pc0VtcHR5KHRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3JpZ2luW29yaWdp
bl0pKQotICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9maWxlU3lzdGVtc0Zvck9yaWdpbltv
cmlnaW5dOworICAgICAgICAgICAgaWYgKE9iamVjdC5pc0VtcHR5KHRoaXMuX2ZpbGVTeXN0ZW1z
Rm9yT3JpZ2luW29yaWdpbklkXSkpCisgICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2ZpbGVT
eXN0ZW1zRm9yT3JpZ2luW29yaWdpbklkXTsKICAgICAgICAgfQogICAgIH0sCiAKQEAgLTM1OCw3
ICszNjAsNyBAQCBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkV2ZW50VHlwZXMgPSB7CiAv
KioKICAqIEBjb25zdHJ1Y3RvcgogICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1v
ZGVsfSBmaWxlU3lzdGVtTW9kZWwKLSAqIEBwYXJhbSB7c3RyaW5nfSBvcmlnaW4KKyAqIEBwYXJh
bSB7V2ViSW5zcGVjdG9yLlNlY3VyaXR5T3JpZ2lufSBvcmlnaW4KICAqIEBwYXJhbSB7c3RyaW5n
fSB0eXBlCiAgKiBAcGFyYW0ge0ZpbGVTeXN0ZW1BZ2VudC5FbnRyeX0gYmFja2VuZFJvb3RFbnRy
eQogICovCkBAIC0zNzYsNyArMzc4LDcgQEAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5G
aWxlU3lzdGVtLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBnZXQgbmFtZSgpCiAgICAgewot
ICAgICAgICByZXR1cm4gImZpbGVzeXN0ZW06IiArIHRoaXMub3JpZ2luICsgIi8iICsgdGhpcy50
eXBlOworICAgICAgICByZXR1cm4gImZpbGVzeXN0ZW06IiArIHRoaXMub3JpZ2luLnVybCgpICsg
Ii8iICsgdGhpcy50eXBlOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9JbmRleGVkREJNb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvSW5kZXhlZERCTW9kZWwuanMKaW5kZXggYTUyNTdhMjRiY2JjMzhk
YjQ4ZjQ3MjYyOWJmMzBiMTNiMTA5NmFjNC4uNzg4ZGM2MTg2ZTY1YTk3ZWZmOTVjYTk0MWFlMDIy
MDNhYmZhMWNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9JbmRleGVkREJNb2RlbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0luZGV4ZWREQk1vZGVsLmpzCkBAIC0xNDEsOCArMTQxLDggQEAgV2ViSW5zcGVjdG9yLklu
ZGV4ZWREQk1vZGVsLkV2ZW50VHlwZXMgPSB7CiBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwu
cHJvdG90eXBlID0gewogICAgIF9yZXNldDogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgZm9y
ICh2YXIgc2VjdXJpdHlPcmlnaW4gaW4gdGhpcy5fZGF0YWJhc2VOYW1lc0J5U2VjdXJpdHlPcmln
aW4pCi0gICAgICAgICAgICB0aGlzLl9yZW1vdmVPcmlnaW4oc2VjdXJpdHlPcmlnaW4pOworICAg
ICAgICBmb3IgKHZhciBzZWN1cml0eU9yaWdpbklkIGluIHRoaXMuX2RhdGFiYXNlTmFtZXNCeVNl
Y3VyaXR5T3JpZ2luKQorICAgICAgICAgICAgdGhpcy5fcmVtb3ZlT3JpZ2luKFdlYkluc3BlY3Rv
ci5yZXNvdXJjZVRyZWVNb2RlbC5zZWN1cml0eU9yaWdpbkZvcklkKHNlY3VyaXR5T3JpZ2luSWQp
KTsKICAgICAgICAgdmFyIHNlY3VyaXR5T3JpZ2lucyA9IFdlYkluc3BlY3Rvci5yZXNvdXJjZVRy
ZWVNb2RlbC5zZWN1cml0eU9yaWdpbnMoKTsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBz
ZWN1cml0eU9yaWdpbnMubGVuZ3RoOyArK2kpCiAgICAgICAgICAgICB0aGlzLl9hZGRPcmlnaW4o
c2VjdXJpdHlPcmlnaW5zW2ldKTsKQEAgLTE1MCw4ICsxNTAsOCBAQCBXZWJJbnNwZWN0b3IuSW5k
ZXhlZERCTW9kZWwucHJvdG90eXBlID0gewogCiAgICAgcmVmcmVzaERhdGFiYXNlTmFtZXM6IGZ1
bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIGZvciAodmFyIHNlY3VyaXR5T3JpZ2luIGluIHRoaXMu
X2RhdGFiYXNlTmFtZXNCeVNlY3VyaXR5T3JpZ2luKQotICAgICAgICAgICAgdGhpcy5fbG9hZERh
dGFiYXNlTmFtZXMoc2VjdXJpdHlPcmlnaW4pOworICAgICAgICBmb3IgKHZhciBzZWN1cml0eU9y
aWdpbklkIGluIHRoaXMuX2RhdGFiYXNlTmFtZXNCeVNlY3VyaXR5T3JpZ2luKQorICAgICAgICAg
ICAgdGhpcy5fbG9hZERhdGFiYXNlTmFtZXMoV2ViSW5zcGVjdG9yLnJlc291cmNlVHJlZU1vZGVs
LnNlY3VyaXR5T3JpZ2luRm9ySWQoc2VjdXJpdHlPcmlnaW5JZCkpOwogICAgIH0sCiAKICAgICAv
KioKQEAgLTE2Nyw3ICsxNjcsNyBAQCBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwucHJvdG90
eXBlID0gewogICAgICAqLwogICAgIF9zZWN1cml0eU9yaWdpbkFkZGVkOiBmdW5jdGlvbihldmVu
dCkKICAgICB7Ci0gICAgICAgIHZhciBzZWN1cml0eU9yaWdpbiA9IC8qKiBAdHlwZSB7c3RyaW5n
fSAqLyAoZXZlbnQuZGF0YSk7CisgICAgICAgIHZhciBzZWN1cml0eU9yaWdpbiA9IC8qKiBAdHlw
ZSB7V2ViSW5zcGVjdG9yLlNlY3VyaXR5T3JpZ2lufSAqLyAoZXZlbnQuZGF0YSk7CiAgICAgICAg
IHRoaXMuX2FkZE9yaWdpbihzZWN1cml0eU9yaWdpbik7CiAgICAgfSwKIApAQCAtMTc2LDMzICsx
NzYsMzUgQEAgV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAg
Ki8KICAgICBfc2VjdXJpdHlPcmlnaW5SZW1vdmVkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0g
ICAgICAgIHZhciBzZWN1cml0eU9yaWdpbiA9IC8qKiBAdHlwZSB7c3RyaW5nfSAqLyAoZXZlbnQu
ZGF0YSk7CisgICAgICAgIHZhciBzZWN1cml0eU9yaWdpbiA9IC8qKiBAdHlwZSB7V2ViSW5zcGVj
dG9yLlNlY3VyaXR5T3JpZ2lufSAqLyAoZXZlbnQuZGF0YSk7CiAgICAgICAgIHRoaXMuX3JlbW92
ZU9yaWdpbihzZWN1cml0eU9yaWdpbik7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEBwYXJh
bSB7c3RyaW5nfSBzZWN1cml0eU9yaWdpbgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlNl
Y3VyaXR5T3JpZ2lufSBzZWN1cml0eU9yaWdpbgogICAgICAqLwogICAgIF9hZGRPcmlnaW46IGZ1
bmN0aW9uKHNlY3VyaXR5T3JpZ2luKQogICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoIXRo
aXMuX2RhdGFiYXNlTmFtZXNCeVNlY3VyaXR5T3JpZ2luW3NlY3VyaXR5T3JpZ2luXSk7Ci0gICAg
ICAgIHRoaXMuX2RhdGFiYXNlTmFtZXNCeVNlY3VyaXR5T3JpZ2luW3NlY3VyaXR5T3JpZ2luXSA9
IFtdOworICAgICAgICB2YXIgc2VjdXJpdHlPcmlnaW5JZCA9IHNlY3VyaXR5T3JpZ2luLmlkKCk7
CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9kYXRhYmFzZU5hbWVzQnlTZWN1cml0eU9y
aWdpbltzZWN1cml0eU9yaWdpbklkXSk7CisgICAgICAgIHRoaXMuX2RhdGFiYXNlTmFtZXNCeVNl
Y3VyaXR5T3JpZ2luW3NlY3VyaXR5T3JpZ2luSWRdID0gW107CiAgICAgICAgIHRoaXMuX2xvYWRE
YXRhYmFzZU5hbWVzKHNlY3VyaXR5T3JpZ2luKTsKICAgICB9LAogCiAgICAgLyoqCi0gICAgICog
QHBhcmFtIHtzdHJpbmd9IHNlY3VyaXR5T3JpZ2luCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0
b3IuU2VjdXJpdHlPcmlnaW59IHNlY3VyaXR5T3JpZ2luCiAgICAgICovCiAgICAgX3JlbW92ZU9y
aWdpbjogZnVuY3Rpb24oc2VjdXJpdHlPcmlnaW4pCiAgICAgewotICAgICAgICBjb25zb2xlLmFz
c2VydCh0aGlzLl9kYXRhYmFzZU5hbWVzQnlTZWN1cml0eU9yaWdpbltzZWN1cml0eU9yaWdpbl0p
OwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2RhdGFiYXNlTmFtZXNCeVNlY3Vy
aXR5T3JpZ2luW3NlY3VyaXR5T3JpZ2luXS5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgIHRoaXMu
X2RhdGFiYXNlUmVtb3ZlZChzZWN1cml0eU9yaWdpbiwgdGhpcy5fZGF0YWJhc2VOYW1lc0J5U2Vj
dXJpdHlPcmlnaW5bc2VjdXJpdHlPcmlnaW5dW2ldKTsKLSAgICAgICAgZGVsZXRlIHRoaXMuX2Rh
dGFiYXNlTmFtZXNCeVNlY3VyaXR5T3JpZ2luW3NlY3VyaXR5T3JpZ2luXTsKKyAgICAgICAgdmFy
IHNlY3VyaXR5T3JpZ2luSWQgPSBzZWN1cml0eU9yaWdpbi5pZCgpOworICAgICAgICBjb25zb2xl
LmFzc2VydCh0aGlzLl9kYXRhYmFzZU5hbWVzQnlTZWN1cml0eU9yaWdpbltzZWN1cml0eU9yaWdp
bklkXSk7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fZGF0YWJhc2VOYW1lc0J5
U2VjdXJpdHlPcmlnaW5bc2VjdXJpdHlPcmlnaW5JZF0ubGVuZ3RoOyArK2kpCisgICAgICAgICAg
ICB0aGlzLl9kYXRhYmFzZVJlbW92ZWQoc2VjdXJpdHlPcmlnaW4sIHRoaXMuX2RhdGFiYXNlTmFt
ZXNCeVNlY3VyaXR5T3JpZ2luW3NlY3VyaXR5T3JpZ2luSWRdW2ldKTsKKyAgICAgICAgZGVsZXRl
IHRoaXMuX2RhdGFiYXNlTmFtZXNCeVNlY3VyaXR5T3JpZ2luW3NlY3VyaXR5T3JpZ2luSWRdOwog
ICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2VjdXJpdHlPcmlnaW4K
KyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5TZWN1cml0eU9yaWdpbn0gc2VjdXJpdHlPcmln
aW4KICAgICAgKiBAcGFyYW0ge0FycmF5LjxzdHJpbmc+fSBkYXRhYmFzZU5hbWVzCiAgICAgICov
CiAgICAgX3VwZGF0ZU9yaWdpbkRhdGFiYXNlTmFtZXM6IGZ1bmN0aW9uKHNlY3VyaXR5T3JpZ2lu
LCBkYXRhYmFzZU5hbWVzKQpAQCAtMjExLDEwICsyMTMsMTEgQEAgV2ViSW5zcGVjdG9yLkluZGV4
ZWREQk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRh
YmFzZU5hbWVzLmxlbmd0aDsgKytpKQogICAgICAgICAgICAgbmV3RGF0YWJhc2VOYW1lc1tkYXRh
YmFzZU5hbWVzW2ldXSA9IHRydWU7CiAgICAgICAgIHZhciBvbGREYXRhYmFzZU5hbWVzID0ge307
Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fZGF0YWJhc2VOYW1lc0J5U2VjdXJp
dHlPcmlnaW5bc2VjdXJpdHlPcmlnaW5dLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgb2xkRGF0
YWJhc2VOYW1lc1t0aGlzLl9kYXRhYmFzZU5hbWVzQnlTZWN1cml0eU9yaWdpbltzZWN1cml0eU9y
aWdpbl1baV1dID0gdHJ1ZTsKKyAgICAgICAgdmFyIHNlY3VyaXR5T3JpZ2luSWQgPSBzZWN1cml0
eU9yaWdpbi5pZCgpOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2RhdGFiYXNl
TmFtZXNCeVNlY3VyaXR5T3JpZ2luW3NlY3VyaXR5T3JpZ2luSWRdLmxlbmd0aDsgKytpKQorICAg
ICAgICAgICAgb2xkRGF0YWJhc2VOYW1lc1t0aGlzLl9kYXRhYmFzZU5hbWVzQnlTZWN1cml0eU9y
aWdpbltzZWN1cml0eU9yaWdpbklkXVtpXV0gPSB0cnVlOwogCi0gICAgICAgIHRoaXMuX2RhdGFi
YXNlTmFtZXNCeVNlY3VyaXR5T3JpZ2luW3NlY3VyaXR5T3JpZ2luXSA9IGRhdGFiYXNlTmFtZXM7
CisgICAgICAgIHRoaXMuX2RhdGFiYXNlTmFtZXNCeVNlY3VyaXR5T3JpZ2luW3NlY3VyaXR5T3Jp
Z2luSWRdID0gZGF0YWJhc2VOYW1lczsKIAogICAgICAgICBmb3IgKHZhciBkYXRhYmFzZU5hbWUg
aW4gb2xkRGF0YWJhc2VOYW1lcykgewogICAgICAgICAgICAgaWYgKCFuZXdEYXRhYmFzZU5hbWVz
W2RhdGFiYXNlTmFtZV0pCkBAIC0yMjcsNyArMjMwLDcgQEAgV2ViSW5zcGVjdG9yLkluZGV4ZWRE
Qk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICB9LAogCiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtz
dHJpbmd9IHNlY3VyaXR5T3JpZ2luCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU2VjdXJp
dHlPcmlnaW59IHNlY3VyaXR5T3JpZ2luCiAgICAgICogQHBhcmFtIHtzdHJpbmd9IGRhdGFiYXNl
TmFtZQogICAgICAqLwogICAgIF9kYXRhYmFzZUFkZGVkOiBmdW5jdGlvbihzZWN1cml0eU9yaWdp
biwgZGF0YWJhc2VOYW1lKQpAQCAtMjM3LDcgKzI0MCw3IEBAIFdlYkluc3BlY3Rvci5JbmRleGVk
REJNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEBwYXJhbSB7
c3RyaW5nfSBzZWN1cml0eU9yaWdpbgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlNlY3Vy
aXR5T3JpZ2lufSBzZWN1cml0eU9yaWdpbgogICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhYmFz
ZU5hbWUKICAgICAgKi8KICAgICBfZGF0YWJhc2VSZW1vdmVkOiBmdW5jdGlvbihzZWN1cml0eU9y
aWdpbiwgZGF0YWJhc2VOYW1lKQpAQCAtMjQ3LDcgKzI1MCw3IEBAIFdlYkluc3BlY3Rvci5JbmRl
eGVkREJNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEBwYXJh
bSB7c3RyaW5nfSBzZWN1cml0eU9yaWdpbgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlNl
Y3VyaXR5T3JpZ2lufSBzZWN1cml0eU9yaWdpbgogICAgICAqLwogICAgIF9sb2FkRGF0YWJhc2VO
YW1lczogZnVuY3Rpb24oc2VjdXJpdHlPcmlnaW4pCiAgICAgewpAQCAtMjYyLDEyICsyNjUsMTIg
QEAgV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmICghdGhpcy5fZGF0
YWJhc2VOYW1lc0J5U2VjdXJpdHlPcmlnaW5bc2VjdXJpdHlPcmlnaW5dKQorICAgICAgICAgICAg
aWYgKCF0aGlzLl9kYXRhYmFzZU5hbWVzQnlTZWN1cml0eU9yaWdpbltzZWN1cml0eU9yaWdpbi5p
ZCgpXSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB0aGlzLl91cGRhdGVP
cmlnaW5EYXRhYmFzZU5hbWVzKHNlY3VyaXR5T3JpZ2luLCBkYXRhYmFzZU5hbWVzKTsKICAgICAg
ICAgfQogCi0gICAgICAgIEluZGV4ZWREQkFnZW50LnJlcXVlc3REYXRhYmFzZU5hbWVzKHNlY3Vy
aXR5T3JpZ2luLCBjYWxsYmFjay5iaW5kKHRoaXMpKTsKKyAgICAgICAgSW5kZXhlZERCQWdlbnQu
cmVxdWVzdERhdGFiYXNlTmFtZXMoc2VjdXJpdHlPcmlnaW4udG9Qcm90b2NvbCgpLCBjYWxsYmFj
ay5iaW5kKHRoaXMpKTsKICAgICB9LAogCiAgICAgLyoqCkBAIC0yODYsNyArMjg5LDcgQEAgV2Vi
SW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmICghdGhpcy5fZGF0YWJhc2VO
YW1lc0J5U2VjdXJpdHlPcmlnaW5bZGF0YWJhc2VJZC5zZWN1cml0eU9yaWdpbl0pCisgICAgICAg
ICAgICBpZiAoIXRoaXMuX2RhdGFiYXNlTmFtZXNCeVNlY3VyaXR5T3JpZ2luW2RhdGFiYXNlSWQu
c2VjdXJpdHlPcmlnaW4uaWQoKV0pCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgdmFyIGRhdGFiYXNlTW9kZWwgPSBuZXcgV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLkRh
dGFiYXNlKGRhdGFiYXNlSWQsIGRhdGFiYXNlV2l0aE9iamVjdFN0b3Jlcy52ZXJzaW9uLCBkYXRh
YmFzZVdpdGhPYmplY3RTdG9yZXMuaW50VmVyc2lvbik7CiAgICAgICAgICAgICB0aGlzLl9kYXRh
YmFzZXMucHV0KGRhdGFiYXNlSWQsIGRhdGFiYXNlTW9kZWwpOyAKQEAgLTMwNiw3ICszMDksNyBA
QCBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAg
dGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVs
LkV2ZW50VHlwZXMuRGF0YWJhc2VMb2FkZWQsIGRhdGFiYXNlTW9kZWwpOwogICAgICAgICB9CiAK
LSAgICAgICAgSW5kZXhlZERCQWdlbnQucmVxdWVzdERhdGFiYXNlKGRhdGFiYXNlSWQuc2VjdXJp
dHlPcmlnaW4sIGRhdGFiYXNlSWQubmFtZSwgY2FsbGJhY2suYmluZCh0aGlzKSk7CisgICAgICAg
IEluZGV4ZWREQkFnZW50LnJlcXVlc3REYXRhYmFzZShkYXRhYmFzZUlkLnNlY3VyaXR5T3JpZ2lu
LnRvUHJvdG9jb2woKSwgZGF0YWJhc2VJZC5uYW1lLCBjYWxsYmFjay5iaW5kKHRoaXMpKTsKICAg
ICB9LAogCiAgICAgLyoqCkBAIC0zNjAsNyArMzYzLDcgQEAgV2ViSW5zcGVjdG9yLkluZGV4ZWRE
Qk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICghdGhpcy5fZGF0YWJhc2VOYW1lc0J5
U2VjdXJpdHlPcmlnaW5bZGF0YWJhc2VJZC5zZWN1cml0eU9yaWdpbl0pCisgICAgICAgICAgICBp
ZiAoIXRoaXMuX2RhdGFiYXNlTmFtZXNCeVNlY3VyaXR5T3JpZ2luW2RhdGFiYXNlSWQuc2VjdXJp
dHlPcmlnaW4uaWQoKV0pCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgdmFy
IGVudHJpZXMgPSBbXTsKICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGF0YUVudHJp
ZXMubGVuZ3RoOyArK2kpIHsKQEAgLTM3Myw3ICszNzYsNyBAQCBXZWJJbnNwZWN0b3IuSW5kZXhl
ZERCTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgdmFyIGtleVJhbmdl
ID0gV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLmtleVJhbmdlRnJvbUlEQktleVJhbmdlKGlk
YktleVJhbmdlKTsKLSAgICAgICAgSW5kZXhlZERCQWdlbnQucmVxdWVzdERhdGEoZGF0YWJhc2VJ
ZC5zZWN1cml0eU9yaWdpbiwgZGF0YWJhc2VOYW1lLCBvYmplY3RTdG9yZU5hbWUsIGluZGV4TmFt
ZSwgc2tpcENvdW50LCBwYWdlU2l6ZSwga2V5UmFuZ2UgPyBrZXlSYW5nZSA6IHVuZGVmaW5lZCwg
aW5uZXJDYWxsYmFjay5iaW5kKHRoaXMpKTsKKyAgICAgICAgSW5kZXhlZERCQWdlbnQucmVxdWVz
dERhdGEoZGF0YWJhc2VJZC5zZWN1cml0eU9yaWdpbi50b1Byb3RvY29sKCksIGRhdGFiYXNlTmFt
ZSwgb2JqZWN0U3RvcmVOYW1lLCBpbmRleE5hbWUsIHNraXBDb3VudCwgcGFnZVNpemUsIGtleVJh
bmdlID8ga2V5UmFuZ2UgOiB1bmRlZmluZWQsIGlubmVyQ2FsbGJhY2suYmluZCh0aGlzKSk7CiAg
ICAgfSwKIAogICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGUKQEAg
LTM5NCw3ICszOTcsNyBAQCBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwuRW50cnkgPSBmdW5j
dGlvbihrZXksIHByaW1hcnlLZXksIHZhbHVlKQogCiAvKioKICAqIEBjb25zdHJ1Y3RvcgotICog
QHBhcmFtIHtzdHJpbmd9IHNlY3VyaXR5T3JpZ2luCisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5T
ZWN1cml0eU9yaWdpbn0gc2VjdXJpdHlPcmlnaW4KICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCiAg
Ki8KIFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5EYXRhYmFzZUlkID0gZnVuY3Rpb24oc2Vj
dXJpdHlPcmlnaW4sIG5hbWUpCkBAIC00MDksNyArNDEyLDcgQEAgV2ViSW5zcGVjdG9yLkluZGV4
ZWREQk1vZGVsLkRhdGFiYXNlSWQucHJvdG90eXBlID0gewogICAgICAqLwogICAgIGVxdWFsczog
ZnVuY3Rpb24oZGF0YWJhc2VJZCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLm5hbWUgPT09
IGRhdGFiYXNlSWQubmFtZSAmJiB0aGlzLnNlY3VyaXR5T3JpZ2luID09PSBkYXRhYmFzZUlkLnNl
Y3VyaXR5T3JpZ2luOworICAgICAgICByZXR1cm4gdGhpcy5uYW1lID09PSBkYXRhYmFzZUlkLm5h
bWUgJiYgdGhpcy5zZWN1cml0eU9yaWdpbi5pZCgpID09PSBkYXRhYmFzZUlkLnNlY3VyaXR5T3Jp
Z2luLmlkKCk7CiAgICAgfSwKIH0KIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9JbmRleGVkREJWaWV3cy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvSW5kZXhlZERCVmlld3MuanMKaW5kZXggMDdhYzkxOTU2MzBjNzZmNDYw
ZTQyNjA5ZjIwYTI0MGQ3YTBmYjIyNy4uZWU2MGUyZmM0MDA3MTdkMDBiYTViNDk4OGQ2YmJjMTkx
NTdkNmFkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9J
bmRleGVkREJWaWV3cy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0luZGV4ZWREQlZpZXdzLmpzCkBAIC04MCw3ICs4MCw3IEBAIFdlYkluc3BlY3Rvci5JREJEYXRh
YmFzZVZpZXcucHJvdG90eXBlID0gewogCiAgICAgX3JlZnJlc2hEYXRhYmFzZTogZnVuY3Rpb24o
KQogICAgIHsKLSAgICAgICAgdGhpcy5fc2VjdXJpdHlPcmlnaW5UcmVlRWxlbWVudC50aXRsZSA9
IHRoaXMuX2Zvcm1hdEhlYWRlcihXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNlY3VyaXR5IG9yaWdp
biIpLCB0aGlzLl9kYXRhYmFzZS5kYXRhYmFzZUlkLnNlY3VyaXR5T3JpZ2luKTsKKyAgICAgICAg
dGhpcy5fc2VjdXJpdHlPcmlnaW5UcmVlRWxlbWVudC50aXRsZSA9IHRoaXMuX2Zvcm1hdEhlYWRl
cihXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNlY3VyaXR5IG9yaWdpbiIpLCB0aGlzLl9kYXRhYmFz
ZS5kYXRhYmFzZUlkLnNlY3VyaXR5T3JpZ2luLnVpVGl0bGUoKSk7CiAgICAgICAgIHRoaXMuX25h
bWVUcmVlRWxlbWVudC50aXRsZSA9IHRoaXMuX2Zvcm1hdEhlYWRlcihXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIk5hbWUiKSwgdGhpcy5fZGF0YWJhc2UuZGF0YWJhc2VJZC5uYW1lKTsKICAgICAgICAg
dGhpcy5fc3RyaW5nVmVyc2lvblRyZWVFbGVtZW50LnRpdGxlID0gdGhpcy5fZm9ybWF0SGVhZGVy
KFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3RyaW5nIFZlcnNpb24iKSwgdGhpcy5fZGF0YWJhc2Uu
dmVyc2lvbik7CiAgICAgICAgIHRoaXMuX2ludFZlcnNpb25UcmVlRWxlbWVudC50aXRsZSA9IHRo
aXMuX2Zvcm1hdEhlYWRlcihXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkludGVnZXIgVmVyc2lvbiIp
LCB0aGlzLl9kYXRhYmFzZS5pbnRWZXJzaW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VUcmVlTW9kZWwuanMgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVHJlZU1vZGVsLmpzCmluZGV4IGYyNmM3OTE4
ZjY1N2RlYWU1NDE0ZDY5ODkyZGRjODZiZmQxMWZkMGMuLjY1MWEzYTk5YmFmODY3ZDg3N2I0NmRi
MjVlYmQ1OGEyMTA2MDdiNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvUmVzb3VyY2VUcmVlTW9kZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9SZXNvdXJjZVRyZWVNb2RlbC5qcwpAQCAtNDksOCArNDksOCBAQCBXZWJJ
bnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwgPSBmdW5jdGlvbihuZXR3b3JrTWFuYWdlcikKIAog
ICAgIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJQYWdlRGlzcGF0Y2hlcihuZXcgV2ViSW5zcGVj
dG9yLlBhZ2VEaXNwYXRjaGVyKHRoaXMpKTsKIAorICAgIHRoaXMuX3NlY3VyaXR5T3JpZ2luVHJh
Y2tlciA9IG5ldyBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwuU2VjdXJpdHlPcmlnaW5U
cmFja2VyKHRoaXMpOwogICAgIHRoaXMuX3BlbmRpbmdDb25zb2xlTWVzc2FnZXMgPSB7fTsKLSAg
ICB0aGlzLl9zZWN1cml0eU9yaWdpbkZyYW1lQ291bnQgPSB7fTsKIH0KIAogV2ViSW5zcGVjdG9y
LlJlc291cmNlVHJlZU1vZGVsLkV2ZW50VHlwZXMgPSB7CkBAIC0xMTQsNjIgKzExNCwzMSBAQCBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAg
dGhpcy5tYWluRnJhbWUgPSBmcmFtZTsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLkV2ZW50VHlwZXMuRnJhbWVBZGRl
ZCwgZnJhbWUpOwogICAgICAgICBpZiAoIWFib3V0VG9OYXZpZ2F0ZSkKLSAgICAgICAgICAgIHRo
aXMuX2FkZFNlY3VyaXR5T3JpZ2luKGZyYW1lLnNlY3VyaXR5T3JpZ2luKTsKKyAgICAgICAgICAg
IHRoaXMuX3NlY3VyaXR5T3JpZ2luVHJhY2tlci5fYWRkU2VjdXJpdHlPcmlnaW4oZnJhbWUuc2Vj
dXJpdHlPcmlnaW4pOwogICAgICAgICBpZiAoZnJhbWUuaXNNYWluRnJhbWUoKSkKICAgICAgICAg
ICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRy
ZWVNb2RlbC5FdmVudFR5cGVzLk1haW5GcmFtZUNyZWF0ZWRPck5hdmlnYXRlZCwgZnJhbWUpOwog
ICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2VjdXJpdHlPcmlnaW4K
KyAgICAgKiBAcGFyYW0ge3N0cmluZ30gaWQKKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3Iu
U2VjdXJpdHlPcmlnaW59CiAgICAgICovCi0gICAgX2FkZFNlY3VyaXR5T3JpZ2luOiBmdW5jdGlv
bihzZWN1cml0eU9yaWdpbikKKyAgICBzZWN1cml0eU9yaWdpbkZvcklkOiBmdW5jdGlvbihpZCkK
ICAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fc2VjdXJpdHlPcmlnaW5GcmFtZUNvdW50W3NlY3Vy
aXR5T3JpZ2luXSkgewotICAgICAgICAgICAgdGhpcy5fc2VjdXJpdHlPcmlnaW5GcmFtZUNvdW50
W3NlY3VyaXR5T3JpZ2luXSA9IDE7Ci0gICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xp
c3RlbmVycyhXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwuRXZlbnRUeXBlcy5TZWN1cml0
eU9yaWdpbkFkZGVkLCBzZWN1cml0eU9yaWdpbik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLSAgICAgICAgdGhpcy5fc2VjdXJpdHlPcmlnaW5GcmFtZUNvdW50W3NlY3VyaXR5T3Jp
Z2luXSArPSAxOworICAgICAgICByZXR1cm4gdGhpcy5fc2VjdXJpdHlPcmlnaW5UcmFja2VyLl9z
ZWN1cml0eU9yaWdpbkZvcklkKGlkKTsKICAgICB9LAogCiAgICAgLyoqCi0gICAgICogQHBhcmFt
IHtzdHJpbmd9IHNlY3VyaXR5T3JpZ2luCi0gICAgICovCi0gICAgX3JlbW92ZVNlY3VyaXR5T3Jp
Z2luOiBmdW5jdGlvbihzZWN1cml0eU9yaWdpbikKLSAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KHRoaXMuX3NlY3VyaXR5T3JpZ2luRnJhbWVDb3VudFtzZWN1cml0eU9yaWdpbl0pOwotICAg
ICAgICBpZiAodGhpcy5fc2VjdXJpdHlPcmlnaW5GcmFtZUNvdW50W3NlY3VyaXR5T3JpZ2luXSA9
PT0gMSkgewotICAgICAgICAgICAgZGVsZXRlIHRoaXMuX3NlY3VyaXR5T3JpZ2luRnJhbWVDb3Vu
dFtzZWN1cml0eU9yaWdpbl07Ci0gICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3Rl
bmVycyhXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwuRXZlbnRUeXBlcy5TZWN1cml0eU9y
aWdpblJlbW92ZWQsIHNlY3VyaXR5T3JpZ2luKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQotICAgICAgICB0aGlzLl9zZWN1cml0eU9yaWdpbkZyYW1lQ291bnRbc2VjdXJpdHlPcmln
aW5dIC09IDE7Ci0gICAgfSwKLQotICAgIC8qKgotICAgICAqIEByZXR1cm4ge0FycmF5LjxzdHJp
bmc+fQorICAgICAqIEByZXR1cm4ge0FycmF5LjxXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW4+
fQogICAgICAqLwogICAgIHNlY3VyaXR5T3JpZ2luczogZnVuY3Rpb24oKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuX3NlY3VyaXR5T3JpZ2luRnJhbWVDb3VudCk7Cisg
ICAgICAgIHJldHVybiB0aGlzLl9zZWN1cml0eU9yaWdpblRyYWNrZXIuX3NlY3VyaXR5T3JpZ2lu
cygpOwogICAgIH0sCiAKLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5SZXNv
dXJjZVRyZWVGcmFtZX0gbWFpbkZyYW1lCi0gICAgICovCi0gICAgX2hhbmRsZU1haW5GcmFtZURl
dGFjaGVkOiBmdW5jdGlvbihtYWluRnJhbWUpCisgICAgX2hhbmRsZU1haW5GcmFtZURldGFjaGVk
OiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICAvKioKLSAgICAgICAgICogQHBhcmFtIHtXZWJJ
bnNwZWN0b3IuUmVzb3VyY2VUcmVlRnJhbWV9IGZyYW1lCi0gICAgICAgICAqLwotICAgICAgICBm
dW5jdGlvbiByZW1vdmVPcmlnaW5Gb3JGcmFtZShmcmFtZSkKLSAgICAgICAgewotICAgICAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmcmFtZS5jaGlsZEZyYW1lcy5sZW5ndGg7ICsraSkKLSAg
ICAgICAgICAgICAgICByZW1vdmVPcmlnaW5Gb3JGcmFtZS5jYWxsKHRoaXMsIGZyYW1lLmNoaWxk
RnJhbWVzW2ldKTsKLSAgICAgICAgICAgIGlmICghZnJhbWUuaXNNYWluRnJhbWUoKSkKLSAgICAg
ICAgICAgICAgICB0aGlzLl9yZW1vdmVTZWN1cml0eU9yaWdpbihmcmFtZS5zZWN1cml0eU9yaWdp
bik7Ci0gICAgICAgIH0KLSAgICAgICAgcmVtb3ZlT3JpZ2luRm9yRnJhbWUuY2FsbCh0aGlzLCBX
ZWJJbnNwZWN0b3IucmVzb3VyY2VUcmVlTW9kZWwubWFpbkZyYW1lKTsKKyAgICAgICAgdGhpcy5f
c2VjdXJpdHlPcmlnaW5UcmFja2VyLl9kZXRhY2hNYWluRnJhbWUodGhpcy5tYWluRnJhbWUpOwog
ICAgIH0sCiAKICAgICAvKioKQEAgLTE4NCw3ICsxNTMsNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2VUcmVlTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICB2YXIgYWRkZWRPcmlnaW47CiAgICAg
ICAgIGlmIChmcmFtZSkgewogICAgICAgICAgICAgLy8gTmF2aWdhdGlvbiB3aXRoaW4gZXhpc3Rp
bmcgZnJhbWUuCi0gICAgICAgICAgICB0aGlzLl9yZW1vdmVTZWN1cml0eU9yaWdpbihmcmFtZS5z
ZWN1cml0eU9yaWdpbik7CisgICAgICAgICAgICB0aGlzLl9zZWN1cml0eU9yaWdpblRyYWNrZXIu
X3JlbW92ZVNlY3VyaXR5T3JpZ2luKGZyYW1lLnNlY3VyaXR5T3JpZ2luKTsKICAgICAgICAgICAg
IGZyYW1lLl9uYXZpZ2F0ZShmcmFtZVBheWxvYWQpOwogICAgICAgICAgICAgYWRkZWRPcmlnaW4g
PSBmcmFtZS5zZWN1cml0eU9yaWdpbjsKICAgICAgICAgfSBlbHNlIHsKQEAgLTE5Miw3ICsxNjEs
NyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgdmFyIHBhcmVudEZyYW1lID0gdGhpcy5fZnJhbWVzW2ZyYW1lUGF5bG9hZC5wYXJlbnRJ
ZF07CiAgICAgICAgICAgICBmcmFtZSA9IG5ldyBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRnJh
bWUodGhpcywgcGFyZW50RnJhbWUsIGZyYW1lUGF5bG9hZCk7CiAgICAgICAgICAgICBpZiAoZnJh
bWUuaXNNYWluRnJhbWUoKSAmJiB0aGlzLm1haW5GcmFtZSkgewotICAgICAgICAgICAgICAgIHRo
aXMuX2hhbmRsZU1haW5GcmFtZURldGFjaGVkKHRoaXMubWFpbkZyYW1lKTsKKyAgICAgICAgICAg
ICAgICB0aGlzLl9oYW5kbGVNYWluRnJhbWVEZXRhY2hlZCgpOwogICAgICAgICAgICAgICAgIC8v
IERlZmluaXRlbHkgYSBuYXZpZ2F0aW9uIHRvIHRoZSBuZXcgYmFja2VuZCBwcm9jZXNzLgogICAg
ICAgICAgICAgICAgIHRoaXMuX2ZyYW1lRGV0YWNoZWQodGhpcy5tYWluRnJhbWUuaWQpOwogICAg
ICAgICAgICAgfQpAQCAtMjA5LDcgKzE3OCw3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVN
b2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3Rl
bmVycyhXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwuRXZlbnRUeXBlcy5NYWluRnJhbWVD
cmVhdGVkT3JOYXZpZ2F0ZWQsIGZyYW1lKTsKICAgICAgICAgfQogICAgICAgICBpZiAoYWRkZWRP
cmlnaW4pCi0gICAgICAgICAgICB0aGlzLl9hZGRTZWN1cml0eU9yaWdpbihhZGRlZE9yaWdpbik7
CisgICAgICAgICAgICB0aGlzLl9zZWN1cml0eU9yaWdpblRyYWNrZXIuX2FkZFNlY3VyaXR5T3Jp
Z2luKGFkZGVkT3JpZ2luKTsKIAogICAgICAgICAvLyBGaWxsIGZyYW1lIHdpdGggcmV0YWluZWQg
cmVzb3VyY2VzICh0aGUgb25lcyBsb2FkZWQgdXNpbmcgbmV3IGxvYWRlcikuCiAgICAgICAgIHZh
ciByZXNvdXJjZXMgPSBmcmFtZS5yZXNvdXJjZXMoKTsKQEAgLTIzMyw3ICsyMDIsNyBAQCBXZWJJ
bnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICBpZiAoIWZy
YW1lKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHRoaXMuX3JlbW92ZVNlY3VyaXR5
T3JpZ2luKGZyYW1lLnNlY3VyaXR5T3JpZ2luKTsKKyAgICAgICAgdGhpcy5fc2VjdXJpdHlPcmln
aW5UcmFja2VyLl9yZW1vdmVTZWN1cml0eU9yaWdpbihmcmFtZS5zZWN1cml0eU9yaWdpbik7CiAg
ICAgICAgIGlmIChmcmFtZS5wYXJlbnRGcmFtZSkKICAgICAgICAgICAgIGZyYW1lLnBhcmVudEZy
YW1lLl9yZW1vdmVDaGlsZEZyYW1lKGZyYW1lKTsKICAgICAgICAgZWxzZQpAQCAtNDE5LDYgKzM4
OCwxMzMgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLnByb3RvdHlwZSA9IHsKIC8q
KgogICogQGNvbnN0cnVjdG9yCiAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVN
b2RlbH0gbW9kZWwKKyAqLworV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLlNlY3VyaXR5
T3JpZ2luVHJhY2tlciA9IGZ1bmN0aW9uKG1vZGVsKQoreworICAgIHRoaXMuX21vZGVsID0gbW9k
ZWw7CisgICAgdGhpcy5fc2VjdXJpdHlPcmlnaW5GcmFtZUNvdW50ID0ge307CisgICAgdGhpcy5f
c2VjdXJpdHlPcmlnaW5zQnlJZCA9IHt9OworICAgIHRoaXMuX3VybFRvRE9NRG9tYWlucyA9IHt9
OworICAgIHRoaXMuX2xhc3RPcmlnaW5JZCA9IDA7Cit9CisKK1dlYkluc3BlY3Rvci5SZXNvdXJj
ZVRyZWVNb2RlbC5TZWN1cml0eU9yaWdpblRyYWNrZXIucHJvdG90eXBlID0geworICAgIC8qKgor
ICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlNlY3VyaXR5T3JpZ2lufSBzZWN1cml0eU9yaWdp
bgorICAgICAqLworICAgIF9hZGRTZWN1cml0eU9yaWdpbjogZnVuY3Rpb24oc2VjdXJpdHlPcmln
aW4pCisgICAgeworICAgICAgICB2YXIgc2VjdXJpdHlPcmlnaW5JZCA9IHNlY3VyaXR5T3JpZ2lu
LmlkKCk7CisgICAgICAgIGlmICghdGhpcy5fc2VjdXJpdHlPcmlnaW5GcmFtZUNvdW50W3NlY3Vy
aXR5T3JpZ2luSWRdKSB7CisgICAgICAgICAgICB0aGlzLl9zZWN1cml0eU9yaWdpbkZyYW1lQ291
bnRbc2VjdXJpdHlPcmlnaW5JZF0gPSAxOworICAgICAgICAgICAgdGhpcy5fbW9kZWwuZGlzcGF0
Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5FdmVudFR5
cGVzLlNlY3VyaXR5T3JpZ2luQWRkZWQsIHNlY3VyaXR5T3JpZ2luKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorICAgICAgICB0aGlzLl9zZWN1cml0eU9yaWdpbkZyYW1lQ291bnRb
c2VjdXJpdHlPcmlnaW5JZF0gKz0gMTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFt
IHtXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW59IHNlY3VyaXR5T3JpZ2luCisgICAgICovCisg
ICAgX3JlbW92ZVNlY3VyaXR5T3JpZ2luOiBmdW5jdGlvbihzZWN1cml0eU9yaWdpbikKKyAgICB7
CisgICAgICAgIHZhciBzZWN1cml0eU9yaWdpbklkID0gc2VjdXJpdHlPcmlnaW4uaWQoKTsKKyAg
ICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fc2VjdXJpdHlPcmlnaW5GcmFtZUNvdW50W3NlY3Vy
aXR5T3JpZ2luSWRdKTsKKyAgICAgICAgaWYgKHRoaXMuX3NlY3VyaXR5T3JpZ2luRnJhbWVDb3Vu
dFtzZWN1cml0eU9yaWdpbklkXSA9PT0gMSkgeworICAgICAgICAgICAgdGhpcy5fdW5iaW5kU2Vj
dXJpdHlPcmlnaW4oc2VjdXJpdHlPcmlnaW4pOworICAgICAgICAgICAgdGhpcy5fbW9kZWwuZGlz
cGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5FdmVu
dFR5cGVzLlNlY3VyaXR5T3JpZ2luUmVtb3ZlZCwgc2VjdXJpdHlPcmlnaW4pOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHRoaXMuX3NlY3VyaXR5T3JpZ2luRnJhbWVD
b3VudFtzZWN1cml0eU9yaWdpbklkXSAtPSAxOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBA
cGFyYW0ge3N0cmluZ30gcGF5bG9hZAorICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rvci5TZWN1
cml0eU9yaWdpbn0KKyAgICAgKi8KKyAgICBfYmluZFNlY3VyaXR5T3JpZ2luOiBmdW5jdGlvbihw
YXlsb2FkKQorICAgIHsKKyAgICAgICAgdmFyIHVybCA9IHBheWxvYWQ7CisgICAgICAgIC8vIEZJ
WE1FOiBVc2UgdGhlIGFjdHVhbCBkb21haW5TZXRJbkRPTSBvbmNlIGl0IGdldHMgaW50cm9kdWNl
ZCBpbnRvIHRoZSBwcm90b2NvbC4KKyAgICAgICAgdmFyIGRvbWFpbiA9ICIiOworICAgICAgICB2
YXIgZG9tYWluTWFwID0gdGhpcy5fdXJsVG9ET01Eb21haW5zW3VybF07CisgICAgICAgIGlmICgh
ZG9tYWluTWFwKSB7CisgICAgICAgICAgICBkb21haW5NYXAgPSB7fTsKKyAgICAgICAgICAgIHRo
aXMuX3VybFRvRE9NRG9tYWluc1t1cmxdID0gZG9tYWluTWFwOworICAgICAgICB9CisgICAgICAg
IHZhciBvcmlnaW4gPSBkb21haW5NYXBbZG9tYWluXTsKKyAgICAgICAgaWYgKCFvcmlnaW4pIHsK
KyAgICAgICAgICAgIG9yaWdpbiA9IG5ldyBXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW4oU3Ry
aW5nKCsrdGhpcy5fbGFzdE9yaWdpbklkKSwgdXJsKTsKKyAgICAgICAgICAgIGRvbWFpbk1hcFtk
b21haW5dID0gb3JpZ2luOworICAgICAgICAgICAgdGhpcy5fc2VjdXJpdHlPcmlnaW5zQnlJZFtv
cmlnaW4uaWQoKV0gPSBvcmlnaW47CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG9yaWdpbiB8
fCBudWxsOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5T
ZWN1cml0eU9yaWdpbn0gc2VjdXJpdHlPcmlnaW4KKyAgICAgKi8KKyAgICBfdW5iaW5kU2VjdXJp
dHlPcmlnaW46IGZ1bmN0aW9uKHNlY3VyaXR5T3JpZ2luKQorICAgIHsKKyAgICAgICAgdmFyIHNl
Y3VyaXR5T3JpZ2luSWQgPSBzZWN1cml0eU9yaWdpbi5pZCgpOworICAgICAgICBkZWxldGUgdGhp
cy5fc2VjdXJpdHlPcmlnaW5GcmFtZUNvdW50W3NlY3VyaXR5T3JpZ2luSWRdOworICAgICAgICBk
ZWxldGUgdGhpcy5fc2VjdXJpdHlPcmlnaW5zQnlJZFtzZWN1cml0eU9yaWdpbklkXTsKKworICAg
ICAgICB2YXIgdXJsID0gc2VjdXJpdHlPcmlnaW4udXJsKCk7CisgICAgICAgIHZhciBkb21haW5N
YXAgPSB0aGlzLl91cmxUb0RPTURvbWFpbnNbdXJsXTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQo
ZG9tYWluTWFwKTsKKyAgICAgICAgLy8gRklYTUU6IFVzZSB0aGUgYWN0dWFsIGRvbWFpblNldElu
RE9NIG9uY2UgaXQgZ2V0cyBpbnRyb2R1Y2VkIGludG8gdGhlIHByb3RvY29sLgorICAgICAgICB2
YXIgZG9tYWluID0gIiI7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRvbWFpbk1hcFtkb21haW5d
KTsKKyAgICAgICAgZGVsZXRlIGRvbWFpbk1hcFtkb21haW5dOworICAgICAgICBpZiAoIU9iamVj
dC5rZXlzKGRvbWFpbk1hcCkubGVuZ3RoKQorICAgICAgICAgICAgZGVsZXRlIHRoaXMuX3VybFRv
RE9NRG9tYWluc1t1cmxdOworICAgIH0sCisKKyAgICBfZGV0YWNoTWFpbkZyYW1lOiBmdW5jdGlv
bihtYWluRnJhbWUpCisgICAgeworICAgICAgICAvKioKKyAgICAgICAgICogQHBhcmFtIHtXZWJJ
bnNwZWN0b3IuUmVzb3VyY2VUcmVlRnJhbWV9IGZyYW1lCisgICAgICAgICAqLworICAgICAgICBm
dW5jdGlvbiByZW1vdmVPcmlnaW5Gb3JGcmFtZShmcmFtZSkKKyAgICAgICAgeworICAgICAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmcmFtZS5jaGlsZEZyYW1lcy5sZW5ndGg7ICsraSkKKyAg
ICAgICAgICAgICAgICByZW1vdmVPcmlnaW5Gb3JGcmFtZS5jYWxsKHRoaXMsIGZyYW1lLmNoaWxk
RnJhbWVzW2ldKTsKKyAgICAgICAgICAgIGlmICghZnJhbWUuaXNNYWluRnJhbWUoKSkKKyAgICAg
ICAgICAgICAgICB0aGlzLl9yZW1vdmVTZWN1cml0eU9yaWdpbihmcmFtZS5zZWN1cml0eU9yaWdp
bik7CisgICAgICAgIH0KKyAgICAgICAgcmVtb3ZlT3JpZ2luRm9yRnJhbWUuY2FsbCh0aGlzLCBt
YWluRnJhbWUpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gaWQK
KyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW59CisgICAgICovCisg
ICAgX3NlY3VyaXR5T3JpZ2luRm9ySWQ6IGZ1bmN0aW9uKGlkKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMuX3NlY3VyaXR5T3JpZ2luc0J5SWRbaWRdIHx8IG51bGw7CisgICAgfSwKKworICAg
IC8qKgorICAgICAqIEByZXR1cm4ge0FycmF5LjxXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW4+
fQorICAgICAqLworICAgIF9zZWN1cml0eU9yaWdpbnM6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAg
ICAgIC8qKgorICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gaWQKKyAgICAgICAgICogQHJldHVy
biB7V2ViSW5zcGVjdG9yLlNlY3VyaXR5T3JpZ2lufQorICAgICAgICAgKi8KKyAgICAgICAgZnVu
Y3Rpb24gY29udmVydGVyKGlkKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy5f
c2VjdXJpdHlPcmlnaW5zQnlJZFtpZF07CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIE9iamVj
dC5rZXlzKHRoaXMuX3NlY3VyaXR5T3JpZ2luRnJhbWVDb3VudCkubWFwKGNvbnZlcnRlci5iaW5k
KHRoaXMpKTsKKyAgICB9Cit9CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAcGFyYW0ge1dl
Ykluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbH0gbW9kZWwKICAqIEBwYXJhbSB7P1dlYkluc3Bl
Y3Rvci5SZXNvdXJjZVRyZWVGcmFtZX0gcGFyZW50RnJhbWUKICAqIEBwYXJhbSB7UGFnZUFnZW50
LkZyYW1lfSBwYXlsb2FkCiAgKi8KQEAgLTQzMSw3ICs1MjcsNyBAQCBXZWJJbnNwZWN0b3IuUmVz
b3VyY2VUcmVlRnJhbWUgPSBmdW5jdGlvbihtb2RlbCwgcGFyZW50RnJhbWUsIHBheWxvYWQpCiAg
ICAgdGhpcy5fbG9hZGVySWQgPSBwYXlsb2FkLmxvYWRlcklkOwogICAgIHRoaXMuX25hbWUgPSBw
YXlsb2FkLm5hbWU7CiAgICAgdGhpcy5fdXJsID0gcGF5bG9hZC51cmw7Ci0gICAgdGhpcy5fc2Vj
dXJpdHlPcmlnaW4gPSBwYXlsb2FkLnNlY3VyaXR5T3JpZ2luOworICAgIHRoaXMuX3NlY3VyaXR5
T3JpZ2luID0gbW9kZWwuX3NlY3VyaXR5T3JpZ2luVHJhY2tlci5fYmluZFNlY3VyaXR5T3JpZ2lu
KHBheWxvYWQuc2VjdXJpdHlPcmlnaW4pOwogICAgIHRoaXMuX21pbWVUeXBlID0gcGF5bG9hZC5t
aW1lVHlwZTsKIAogICAgIC8qKgpAQCAtNDc0LDcgKzU3MCw3IEBAIFdlYkluc3BlY3Rvci5SZXNv
dXJjZVRyZWVGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEBy
ZXR1cm4ge3N0cmluZ30KKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmln
aW59CiAgICAgICovCiAgICAgZ2V0IHNlY3VyaXR5T3JpZ2luKCkKICAgICB7CkBAIC01MjEsNyAr
NjE3LDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUZyYW1lLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgdGhpcy5fbG9hZGVySWQgPSBmcmFtZVBheWxvYWQubG9hZGVySWQ7CiAgICAgICAgIHRo
aXMuX25hbWUgPSBmcmFtZVBheWxvYWQubmFtZTsKICAgICAgICAgdGhpcy5fdXJsID0gZnJhbWVQ
YXlsb2FkLnVybDsKLSAgICAgICAgdGhpcy5fc2VjdXJpdHlPcmlnaW4gPSBmcmFtZVBheWxvYWQu
c2VjdXJpdHlPcmlnaW47CisgICAgICAgIHRoaXMuX3NlY3VyaXR5T3JpZ2luID0gdGhpcy5fbW9k
ZWwuX3NlY3VyaXR5T3JpZ2luVHJhY2tlci5fYmluZFNlY3VyaXR5T3JpZ2luKGZyYW1lUGF5bG9h
ZC5zZWN1cml0eU9yaWdpbik7CiAgICAgICAgIHRoaXMuX21pbWVUeXBlID0gZnJhbWVQYXlsb2Fk
Lm1pbWVUeXBlOwogCiAgICAgICAgIHZhciBtYWluUmVzb3VyY2UgPSB0aGlzLl9yZXNvdXJjZXNN
YXBbdGhpcy5fdXJsXTsKQEAgLTY0Miw2ICs3MzgsNjYgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNl
VHJlZUZyYW1lLnByb3RvdHlwZSA9IHsKIAogLyoqCiAgKiBAY29uc3RydWN0b3IKKyAqIEBwYXJh
bSB7c3RyaW5nfSBpZAorICogQHBhcmFtIHtzdHJpbmd9IHVybAorICovCitXZWJJbnNwZWN0b3Iu
U2VjdXJpdHlPcmlnaW4gPSBmdW5jdGlvbihpZCwgdXJsKQoreworICAgIHRoaXMuX2lkID0gaWQ7
CisgICAgdGhpcy5fdXJsID0gdXJsOworfQorCitXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW4u
cHJvdG90eXBlID0geworICAgIC8qKgorICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAgKi8K
KyAgICBpZDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2lkOworICAg
IH0sCisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCisgICAgdXJs
OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fdXJsOworICAgIH0sCisK
KyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5TZWN1cml0eU9yaWdpbn0gb3Ro
ZXIKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLworICAgIGVxdWFsOiBmdW5jdGlv
bihvdGhlcikKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl91cmwgPT09IG90aGVyLl91cmw7
CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAgKi8KKyAg
ICB1aVRpdGxlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgaWYgKHRoaXMuX3VybCA9PT0gImZp
bGU6Ly8iKQorICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxvY2FsIEZp
bGVzIik7CisKKyAgICAgIC8vIEZJWE1FOiBVc2UgdGhlIGFjdHVhbCBkb21haW5TZXRJbkRPTSBv
bmNlIGl0IGdldHMgaW50cm9kdWNlZCBpbnRvIHRoZSBwcm90b2NvbC4KKyAgICAgIHZhciBkb21h
aW4gPSAiIjsKKyAgICAgIHZhciBzdWZmaXggPSBkb21haW4gPyBTdHJpbmcuc3ByaW50ZigiICgl
cykiLCBkb21haW4pIDogIiI7CisgICAgICByZXR1cm4gdGhpcy5fdXJsICsgc3VmZml4OworICAg
IH0sCisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCisgICAgdG9Q
cm90b2NvbDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3VybDsKKyAg
ICB9Cit9CisKKy8qKgorICogQGNvbnN0cnVjdG9yCiAgKiBAaW1wbGVtZW50cyB7UGFnZUFnZW50
LkRpc3BhdGNoZXJ9CiAgKi8KIFdlYkluc3BlY3Rvci5QYWdlRGlzcGF0Y2hlciA9IGZ1bmN0aW9u
KHJlc291cmNlVHJlZU1vZGVsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKaW5kZXggODgwNjI2OWNjODlkMmMxNTViYWYzYWNl
NmFhMDQ0MmJmODA0OGM2OC4uZjgxZTY3ZTRkZTIxOTQ3MmVkOGU3NTFjOTQ2MjA3MGMxOWMzYmM0
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJj
ZXNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291
cmNlc1BhbmVsLmpzCkBAIC0xNjEwLDcgKzE2MTAsNyBAQCBXZWJJbnNwZWN0b3IuRmlsZVN5c3Rl
bUxpc3RUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgKi8KIFdlYkluc3BlY3Rvci5JREJEYXRh
YmFzZVRyZWVFbGVtZW50ID0gZnVuY3Rpb24oc3RvcmFnZVBhbmVsLCBtb2RlbCwgZGF0YWJhc2VJ
ZCkKIHsKLSAgICBXZWJJbnNwZWN0b3IuQmFzZVN0b3JhZ2VUcmVlRWxlbWVudC5jYWxsKHRoaXMs
IHN0b3JhZ2VQYW5lbCwgbnVsbCwgZGF0YWJhc2VJZC5uYW1lICsgIiAtICIgKyBkYXRhYmFzZUlk
LnNlY3VyaXR5T3JpZ2luLCBbImluZGV4ZWQtZGItc3RvcmFnZS10cmVlLWl0ZW0iXSk7CisgICAg
V2ViSW5zcGVjdG9yLkJhc2VTdG9yYWdlVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCBzdG9yYWdlUGFu
ZWwsIG51bGwsIGRhdGFiYXNlSWQubmFtZSArICIgLSAiICsgZGF0YWJhc2VJZC5zZWN1cml0eU9y
aWdpbi51aVRpdGxlKCksIFsiaW5kZXhlZC1kYi1zdG9yYWdlLXRyZWUtaXRlbSJdKTsKICAgICB0
aGlzLl9tb2RlbCA9IG1vZGVsOwogICAgIHRoaXMuX2RhdGFiYXNlSWQgPSBkYXRhYmFzZUlkOwog
ICAgIHRoaXMuX2lkYk9iamVjdFN0b3JlVHJlZUVsZW1lbnRzID0ge307CkBAIC0xNjE5LDcgKzE2
MTksOCBAQCBXZWJJbnNwZWN0b3IuSURCRGF0YWJhc2VUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHN0
b3JhZ2VQYW5lbCwgbW9kZWwsIGRhdGFiYXNlSWQpCiBXZWJJbnNwZWN0b3IuSURCRGF0YWJhc2VU
cmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgZ2V0IGl0ZW1VUkwoKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuICJpbmRleGVkREI6Ly8iICsgdGhpcy5fZGF0YWJhc2VJZC5zZWN1cml0eU9yaWdp
biArICIvIiArIHRoaXMuX2RhdGFiYXNlSWQubmFtZTsKKyAgICAgICAgdmFyIG9yaWdpbiA9IHRo
aXMuX2RhdGFiYXNlSWQuc2VjdXJpdHlPcmlnaW47CisgICAgICAgIHJldHVybiAiaW5kZXhlZERC
Oi8vIiArIG9yaWdpbi51cmwoKSArICIvIiArIHRoaXMuX2RhdGFiYXNlSWQubmFtZTsKICAgICB9
LAogCiAgICAgb25hdHRhY2g6IGZ1bmN0aW9uKCkKQEAgLTE3MjYsNyArMTcyNyw3IEBAIFdlYklu
c3BlY3Rvci5JREJPYmplY3RTdG9yZVRyZWVFbGVtZW50ID0gZnVuY3Rpb24oc3RvcmFnZVBhbmVs
LCBtb2RlbCwgZGF0YWJhc2VJCiBXZWJJbnNwZWN0b3IuSURCT2JqZWN0U3RvcmVUcmVlRWxlbWVu
dC5wcm90b3R5cGUgPSB7CiAgICAgZ2V0IGl0ZW1VUkwoKQogICAgIHsKLSAgICAgICAgcmV0dXJu
ICJpbmRleGVkREI6Ly8iICsgdGhpcy5fZGF0YWJhc2VJZC5zZWN1cml0eU9yaWdpbiArICIvIiAr
IHRoaXMuX2RhdGFiYXNlSWQubmFtZSArICIvIiArIHRoaXMuX29iamVjdFN0b3JlLm5hbWU7Cisg
ICAgICAgIHJldHVybiAiaW5kZXhlZERCOi8vIiArIHRoaXMuX2RhdGFiYXNlSWQuc2VjdXJpdHlP
cmlnaW4udXJsKCkgKyAiLyIgKyB0aGlzLl9kYXRhYmFzZUlkLm5hbWUgKyAiLyIgKyB0aGlzLl9v
YmplY3RTdG9yZS5uYW1lOwogICAgIH0sCiAKICAgIC8qKgpAQCAtMTgzMSw3ICsxODMyLDcgQEAg
V2ViSW5zcGVjdG9yLklEQkluZGV4VHJlZUVsZW1lbnQgPSBmdW5jdGlvbihzdG9yYWdlUGFuZWws
IG1vZGVsLCBkYXRhYmFzZUlkLCBvYmoKIFdlYkluc3BlY3Rvci5JREJJbmRleFRyZWVFbGVtZW50
LnByb3RvdHlwZSA9IHsKICAgICBnZXQgaXRlbVVSTCgpCiAgICAgewotICAgICAgICByZXR1cm4g
ImluZGV4ZWREQjovLyIgKyB0aGlzLl9kYXRhYmFzZUlkLnNlY3VyaXR5T3JpZ2luICsgIi8iICsg
dGhpcy5fZGF0YWJhc2VJZC5uYW1lICsgIi8iICsgdGhpcy5fb2JqZWN0U3RvcmUubmFtZSArICIv
IiArIHRoaXMuX2luZGV4Lm5hbWU7CisgICAgICAgIHJldHVybiAiaW5kZXhlZERCOi8vIiArIHRo
aXMuX2RhdGFiYXNlSWQuc2VjdXJpdHlPcmlnaW4udXJsKCkgKyAiLyIgKyB0aGlzLl9kYXRhYmFz
ZUlkLm5hbWUgKyAiLyIgKyB0aGlzLl9vYmplY3RTdG9yZS5uYW1lICsgIi8iICsgdGhpcy5faW5k
ZXgubmFtZTsKICAgICB9LAogCiAgICAgLyoqCkBAIC0xODgzLDE0ICsxODg0LDE1IEBAIFdlYklu
c3BlY3Rvci5JREJJbmRleFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAqLwogV2ViSW5zcGVj
dG9yLkRPTVN0b3JhZ2VUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHN0b3JhZ2VQYW5lbCwgZG9tU3Rv
cmFnZSwgY2xhc3NOYW1lKQogewotICAgIFdlYkluc3BlY3Rvci5CYXNlU3RvcmFnZVRyZWVFbGVt
ZW50LmNhbGwodGhpcywgc3RvcmFnZVBhbmVsLCBudWxsLCBkb21TdG9yYWdlLnNlY3VyaXR5T3Jp
Z2luID8gZG9tU3RvcmFnZS5zZWN1cml0eU9yaWdpbiA6IFdlYkluc3BlY3Rvci5VSVN0cmluZygi
TG9jYWwgRmlsZXMiKSwgWyJkb21zdG9yYWdlLXN0b3JhZ2UtdHJlZS1pdGVtIiwgY2xhc3NOYW1l
XSk7CisgICAgV2ViSW5zcGVjdG9yLkJhc2VTdG9yYWdlVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCBz
dG9yYWdlUGFuZWwsIG51bGwsIGRvbVN0b3JhZ2Uuc2VjdXJpdHlPcmlnaW4udWlUaXRsZSgpLCBb
ImRvbXN0b3JhZ2Utc3RvcmFnZS10cmVlLWl0ZW0iLCBjbGFzc05hbWVdKTsKICAgICB0aGlzLl9k
b21TdG9yYWdlID0gZG9tU3RvcmFnZTsKIH0KIAogV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VUcmVl
RWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgZ2V0IGl0ZW1VUkwoKQogICAgIHsKLSAgICAgICAg
cmV0dXJuICJzdG9yYWdlOi8vIiArIHRoaXMuX2RvbVN0b3JhZ2Uuc2VjdXJpdHlPcmlnaW4gKyAi
LyIgKyAodGhpcy5fZG9tU3RvcmFnZS5pc0xvY2FsU3RvcmFnZSA/ICJsb2NhbCIgOiAic2Vzc2lv
biIpOworICAgICAgICB2YXIgb3JpZ2luID0gdGhpcy5fZG9tU3RvcmFnZS5zZWN1cml0eU9yaWdp
bjsKKyAgICAgICAgcmV0dXJuICJzdG9yYWdlOi8vIiArIG9yaWdpbi51cmwoKSArICIvIiArICh0
aGlzLl9kb21TdG9yYWdlLmlzTG9jYWxTdG9yYWdlID8gImxvY2FsIiA6ICJzZXNzaW9uIik7CiAg
ICAgfSwKIAogICAgIG9uc2VsZWN0OiBmdW5jdGlvbihzZWxlY3RlZEJ5VXNlcikKQEAgLTIwMjAs
NyArMjAyMiw3IEBAIFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWVUcmVlRWxlbWVu
dC5wcm90b3R5cGUgPSB7CiAgKi8KIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVHJlZUVsZW1lbnQg
PSBmdW5jdGlvbihzdG9yYWdlUGFuZWwsIGZpbGVTeXN0ZW0pCiB7Ci0gICAgdmFyIGRpc3BsYXlO
YW1lID0gZmlsZVN5c3RlbS50eXBlICsgIiAtICIgKyBmaWxlU3lzdGVtLm9yaWdpbjsKKyAgICB2
YXIgZGlzcGxheU5hbWUgPSBmaWxlU3lzdGVtLnR5cGUgKyAiIC0gIiArIGZpbGVTeXN0ZW0ub3Jp
Z2luLnVpVGl0bGUoKTsKICAgICBXZWJJbnNwZWN0b3IuQmFzZVN0b3JhZ2VUcmVlRWxlbWVudC5j
YWxsKHRoaXMsIHN0b3JhZ2VQYW5lbCwgbnVsbCwgZGlzcGxheU5hbWUsIFsiZmlsZS1zeXN0ZW0t
c3RvcmFnZS10cmVlLWl0ZW0iXSk7CiAgICAgdGhpcy5fZmlsZVN5c3RlbSA9IGZpbGVTeXN0ZW07
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1J1bnRp
bWVNb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUnVudGltZU1v
ZGVsLmpzCmluZGV4IGJlZjkxNzc0OGQ5OTIxODc0MDllZTNhNTJlMTFkMmQ1NDNkNDY1ZGQuLmIw
NDk5MjNiOTMwOTFjNzc1OTViNDM2MjZmZjFmMmU3ZGExMDhjNjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUnVudGltZU1vZGVsLmpzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUnVudGltZU1vZGVsLmpzCkBAIC03NCw3ICs3
NCw3IEBAIFdlYkluc3BlY3Rvci5SdW50aW1lTW9kZWwucHJvdG90eXBlID0gewogCiAgICAgLyoq
CiAgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRnJhbWV9IGZyYW1lCi0g
ICAgICogQHBhcmFtIHtzdHJpbmd9IHNlY3VyaXR5T3JpZ2luCisgICAgICogQHBhcmFtIHtXZWJJ
bnNwZWN0b3IuU2VjdXJpdHlPcmlnaW59IHNlY3VyaXR5T3JpZ2luCiAgICAgICovCiAgICAgY29u
dGV4dEJ5RnJhbWVBbmRTZWN1cml0eU9yaWdpbjogZnVuY3Rpb24oZnJhbWUsIHNlY3VyaXR5T3Jp
Z2luKQogICAgIHsKQEAgLTQxNCwxMyArNDE0LDEzIEBAIFdlYkluc3BlY3Rvci5GcmFtZUV4ZWN1
dGlvbkNvbnRleHRMaXN0LnByb3RvdHlwZSA9CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEBw
YXJhbSB7c3RyaW5nfSBzZWN1cml0eU9yaWdpbgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9y
LlNlY3VyaXR5T3JpZ2lufSBzZWN1cml0eU9yaWdpbgogICAgICAqLwogICAgIGNvbnRleHRCeVNl
Y3VyaXR5T3JpZ2luOiBmdW5jdGlvbihzZWN1cml0eU9yaWdpbikKICAgICB7CiAgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fZXhlY3V0aW9uQ29udGV4dHMubGVuZ3RoOyArK2kpIHsK
ICAgICAgICAgICAgIHZhciBjb250ZXh0ID0gdGhpcy5fZXhlY3V0aW9uQ29udGV4dHNbaV07Ci0g
ICAgICAgICAgICBpZiAoIWNvbnRleHQuaXNNYWluV29ybGRDb250ZXh0ICYmIGNvbnRleHQubmFt
ZSA9PT0gc2VjdXJpdHlPcmlnaW4pCisgICAgICAgICAgICBpZiAoIWNvbnRleHQuaXNNYWluV29y
bGRDb250ZXh0ICYmIGNvbnRleHQubmFtZSA9PT0gc2VjdXJpdHlPcmlnaW4udXJsKCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQ7IAogICAgICAgICB9CiAgICAgfSwKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4
NDg4NjgwZTQzN2QzZWVlMmQ2NmU5NDRiNzk4MDE1OWM2NjA1YjNlLi5jNGFjN2QxMGNhMGI5ZGEw
NDg2ZmQ3ZTVlNzFiM2I4YzBkOWYyYThmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTMtMDMt
MDEgIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KKworICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBJbnRyb2R1Y2Ugb3BhcXVlIFNlY3VyaXR5T3JpZ2luIHN0cmluZyBpZGVu
dGlmaWVycyBpbiB0aGUgZnJvbnRlbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExMTE2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEZvbGxvdyB0aGUgc3RyaW5nIC0+IG9iamVjdCBjb252ZXJzaW9uIG9m
IHRoZSBzZWN1cml0eSBvcmlnaW4uCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci1l
bmFibGVkL2RvbS1zdG9yYWdlLW9wZW4uaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3Bl
Y3Rvci9maWxlc3lzdGVtL2RlbGV0ZS1lbnRyeS5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMv
aW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1maWxlc3lzdGVtLXJvb3QuaHRtbDoKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvZGF0YWJhc2UtZGF0YS5odG1sOgor
ICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9kYXRhYmFzZS1uYW1lcy5o
dG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9kYXRhYmFzZS1z
dHJ1Y3R1cmUuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS10
cmVlL3Jlc291cmNlLXRyZWUtZXZlbnRzLmh0bWw6CisKIDIwMTMtMDMtMDEgIFRha2FzaGkgVG95
b3NoaW1hICA8dG95b3NoaW1AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgY2hy
b21pdW0gZ2FyZGVuaW5nLCB1cGRhdGUgaW1hZ2UgZXhwZWN0YXRpb24gYWdhaW4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yLWVuYWJsZWQvZG9tLXN0b3JhZ2Ut
b3Blbi5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3ItZW5hYmxlZC9kb20t
c3RvcmFnZS1vcGVuLmh0bWwKaW5kZXggMTMwMjAwNzI0ZTVhYWFlNDRmYTI2Mjc2MjcwMTc4YWQy
NGY2YjZkMC4uMzVhYzY4M2U5YjBlM2I3MTI3ZTVjNWJkNWQxZTMxMTAxZDQyNDE5YyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3ItZW5hYmxlZC9kb20tc3RvcmFn
ZS1vcGVuLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3ItZW5hYmxl
ZC9kb20tc3RvcmFnZS1vcGVuLmh0bWwKQEAgLTIyLDcgKzIyLDcgQEAgZnVuY3Rpb24gdGVzdCgp
CiAgICAgewogICAgICAgICB2YXIgc3RvcmFnZXMgPSBXZWJJbnNwZWN0b3IuZG9tU3RvcmFnZU1v
ZGVsLnN0b3JhZ2VzKCk7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RvcmFnZXMubGVu
Z3RoOyArK2kpIHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJTZWN1cml0
eU9yaWdpbjogIiArIHN0b3JhZ2VzW2ldLnNlY3VyaXR5T3JpZ2luKTsKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYWRkUmVzdWx0KCJTZWN1cml0eU9yaWdpbjogIiArIHN0b3JhZ2VzW2ldLnNl
Y3VyaXR5T3JpZ2luLnVpVGl0bGUoKSk7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJl
c3VsdCgiSXNMb2NhbFN0b3JhZ2U6ICIgKyBzdG9yYWdlc1tpXS5pc0xvY2FsU3RvcmFnZSk7CiAg
ICAgICAgIH0KICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZGVsZXRlLWVu
dHJ5Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2Rl
bGV0ZS1lbnRyeS5odG1sCmluZGV4IGFkOGI0MzYwODVmYzU0MjYyMWI2ODgzNWVlMWUyNjZmYzVi
MTljMTguLjE1YzA4YjBhNTc2Mjc4MmJjYjc5YTMyYmJjYzZmY2ZmOGM1MDY0M2QgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZGVsZXRlLWVu
dHJ5Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3Rl
bS9kZWxldGUtZW50cnkuaHRtbApAQCAtNjMsNyArNjMsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAg
ICAgICAgZnVuY3Rpb24oZXJyb3JDb2RlKQogICAgICAgICB7CiAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmFkZFJlc3VsdCgiZXJyb3JDb2RlOiAiICsgZXJyb3JDb2RlKTsKLSAgICAgICAgICAg
IGZpbGVTeXN0ZW1Nb2RlbC5fcmVxdWVzdEZpbGVTeXN0ZW1Sb290KCJodHRwOi8vMTI3LjAuMC4x
OjgwMDAiLCAidGVtcG9yYXJ5IiwgdGVzdFN0ZXAuc2hpZnQoKSk7CisgICAgICAgICAgICBmaWxl
U3lzdGVtTW9kZWwuX3JlcXVlc3RGaWxlU3lzdGVtUm9vdChuZXcgV2ViSW5zcGVjdG9yLlNlY3Vy
aXR5T3JpZ2luKCIxIiwgImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIpLCAidGVtcG9yYXJ5IiwgdGVz
dFN0ZXAuc2hpZnQoKSk7CiAgICAgICAgIH0sCiAKICAgICAgICAgZnVuY3Rpb24oZXJyb3JDb2Rl
LCBiYWNrZW5kUm9vdEVudHJ5KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LWZpbGVzeXN0ZW0tcm9vdC5odG1sIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LWZpbGVzeXN0ZW0t
cm9vdC5odG1sCmluZGV4IDhmNWNlZmE5MWRkODE1MWM3NzM3NzAwM2ZkOWU0NzliNDM2ZWI5NzMu
LmEzYWU2NjY5NWM1ZDAxMTQ4ZWQxOGZiNzg3ZDg2MzFjZWRlNWJiNGUgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1maWxlc3lz
dGVtLXJvb3QuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxl
c3lzdGVtL3JlcXVlc3QtZmlsZXN5c3RlbS1yb290Lmh0bWwKQEAgLTksNiArOSwxMiBAQCBkb2N1
bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgcnVuVGVzdCk7CiBmdW5j
dGlvbiB0ZXN0KCkKIHsKICAgICB2YXIgZmlsZVN5c3RlbU1vZGVsID0gbmV3IFdlYkluc3BlY3Rv
ci5GaWxlU3lzdGVtTW9kZWw7CisgICAgdmFyIGxhc3RPcmlnaW5JZCA9IDA7CisKKyAgICBmdW5j
dGlvbiBjcmVhdGVTZWN1cml0eU9yaWdpbih1cmwpCisgICAgeworICAgICAgICByZXR1cm4gbmV3
IFdlYkluc3BlY3Rvci5TZWN1cml0eU9yaWdpbihTdHJpbmcoKytsYXN0T3JpZ2luSWQpLCB1cmwp
OworICAgIH0KIAogICAgIHZhciB0ZXN0U3RlcCA9IFsKICAgICAgICAgZnVuY3Rpb24oKQpAQCAt
MjAsMTkgKzI2LDE5IEBAIGZ1bmN0aW9uIHRlc3QoKQogCiAgICAgICAgIGZ1bmN0aW9uKCkKICAg
ICAgICAgewotICAgICAgICAgICAgZmlsZVN5c3RlbU1vZGVsLl9yZXF1ZXN0RmlsZVN5c3RlbVJv
b3QoImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIsICJ0ZW1wb3JhcnkiLCB0ZXN0U3RlcC5zaGlmdCgp
KTsKKyAgICAgICAgICAgIGZpbGVTeXN0ZW1Nb2RlbC5fcmVxdWVzdEZpbGVTeXN0ZW1Sb290KGNy
ZWF0ZVNlY3VyaXR5T3JpZ2luKCJodHRwOi8vMTI3LjAuMC4xOjgwMDAiKSwgInRlbXBvcmFyeSIs
IHRlc3RTdGVwLnNoaWZ0KCkpOwogICAgICAgICB9LAogCiAgICAgICAgIGZ1bmN0aW9uKGVycm9y
Q29kZSwgYmFja2VuZFJvb3RFbnRyeSkKICAgICAgICAgewogICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5kdW1wRmlsZVN5c3RlbVJvb3RSZXF1ZXN0UmVzdWx0KGVycm9yQ29kZSwgYmFja2VuZFJv
b3RFbnRyeSk7Ci0gICAgICAgICAgICBmaWxlU3lzdGVtTW9kZWwuX3JlcXVlc3RGaWxlU3lzdGVt
Um9vdCgiaHR0cDovLzEyNy4wLjAuMTo4MDAwIiwgImZpenpidXp6IiwgdGVzdFN0ZXAuc2hpZnQo
KSk7CisgICAgICAgICAgICBmaWxlU3lzdGVtTW9kZWwuX3JlcXVlc3RGaWxlU3lzdGVtUm9vdChj
cmVhdGVTZWN1cml0eU9yaWdpbigiaHR0cDovLzEyNy4wLjAuMTo4MDAwIiksICJmaXp6YnV6eiIs
IHRlc3RTdGVwLnNoaWZ0KCkpOwogICAgICAgICB9LAogCiAgICAgICAgIGZ1bmN0aW9uKGVycm9y
Q29kZSwgYmFja2VuZFJvb3RFbnRyeSkKICAgICAgICAgewogICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5kdW1wRmlsZVN5c3RlbVJvb3RSZXF1ZXN0UmVzdWx0KGVycm9yQ29kZSwgYmFja2VuZFJv
b3RFbnRyeSk7Ci0gICAgICAgICAgICBmaWxlU3lzdGVtTW9kZWwuX3JlcXVlc3RGaWxlU3lzdGVt
Um9vdCgiaHR0cDovL2V4YW1wbGUuY29tIiwgInRlbXBvcmFyeSIsIHRlc3RTdGVwLnNoaWZ0KCkp
OworICAgICAgICAgICAgZmlsZVN5c3RlbU1vZGVsLl9yZXF1ZXN0RmlsZVN5c3RlbVJvb3QoY3Jl
YXRlU2VjdXJpdHlPcmlnaW4oImh0dHA6Ly9leGFtcGxlLmNvbSIpLCAidGVtcG9yYXJ5IiwgdGVz
dFN0ZXAuc2hpZnQoKSk7CiAgICAgICAgIH0sCiAKICAgICAgICAgZnVuY3Rpb24oZXJyb3JDb2Rl
LCBiYWNrZW5kUm9vdEVudHJ5KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvaW5kZXhlZGRiL2RhdGFiYXNlLWRhdGEuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9kYXRhYmFzZS1kYXRhLmh0bWwKaW5kZXggMTM2M2Yy
ZTk0M2ExZTM0NmEwOWZmYTUyNzczYzZkZGY0YTM2NWQzZC4uNTAzMDdhMmFhNjE0MTg0ZDc5NmFh
MmJlYTg1Y2IxNGFjZTVmODIxYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvaW5kZXhlZGRiL2RhdGFiYXNlLWRhdGEuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvZGF0YWJhc2UtZGF0YS5odG1sCkBAIC04LDcg
KzgsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICB2YXIgSURCS2V5UmFuZ2UgPSB3aW5kb3cuSURC
S2V5UmFuZ2UgfHwgd2luZG93LndlYmtpdElEQktleVJhbmdlOwogICAgIHZhciBpbmRleGVkREJN
b2RlbCA9IG5ldyBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwoKTsKICAgICB2YXIgbWFpbkZy
YW1lSWQgPSBXZWJJbnNwZWN0b3IucmVzb3VyY2VUcmVlTW9kZWwubWFpbkZyYW1lLmlkOwotICAg
IHZhciBzZWN1cml0eU9yaWdpbiA9ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiOworICAgIHZhciBz
ZWN1cml0eU9yaWdpbiA9IG5ldyBXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW4oIjEiLCAiaHR0
cDovLzEyNy4wLjAuMTo4MDAwIik7CiAgICAgdmFyIGRhdGFiYXNlTmFtZSA9ICJ0ZXN0RGF0YWJh
c2UiOwogICAgIHZhciBvYmplY3RTdG9yZU5hbWUgPSAidGVzdE9iamVjdFN0b3JlIjsKICAgICB2
YXIgaW5kZXhOYW1lID0gInRlc3RJbmRleE5hbWUiOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2RhdGFiYXNlLW5hbWVzLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvZGF0YWJhc2UtbmFtZXMuaHRt
bAppbmRleCAwMTQzZjczODQyZWJlYWU5ODFkZDBjMjc5ODBiMTFjZTNhNDdlYWRkLi5kODI1OWU5
MjRhMmUwZGVjYWZmZGExZjI1M2M0YzM4NzFhZWE2YTYzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvZGF0YWJhc2UtbmFtZXMuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvZGF0YWJhc2UtbmFt
ZXMuaHRtbApAQCAtMTMsNyArMTMsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgSW5zcGVj
dG9yVGVzdC5hZGRSZXN1bHQoIkR1bXBpbmcgZGF0YWJhc2UgbmFtZXM6Iik7CiAgICAgICAgIHZh
ciBzZWN1cml0eU9yaWdpbnMgPSBXZWJJbnNwZWN0b3IucmVzb3VyY2VUcmVlTW9kZWwuc2VjdXJp
dHlPcmlnaW5zKCk7CiAgICAgICAgIHZhciBzZWN1cml0eU9yaWdpbiA9IHNlY3VyaXR5T3JpZ2lu
c1swXTsKLSAgICAgICAgdmFyIG5hbWVzID0gaW5kZXhlZERCTW9kZWwuX2RhdGFiYXNlTmFtZXNC
eVNlY3VyaXR5T3JpZ2luW3NlY3VyaXR5T3JpZ2luXTsKKyAgICAgICAgdmFyIG5hbWVzID0gaW5k
ZXhlZERCTW9kZWwuX2RhdGFiYXNlTmFtZXNCeVNlY3VyaXR5T3JpZ2luW3NlY3VyaXR5T3JpZ2lu
LmlkKCldOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgKytpKQog
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiAgICAiICsgbmFtZXNbaV0pOwog
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiIik7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvZGF0YWJhc2Utc3RydWN0dXJlLmh0
bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvZGF0YWJhc2Ut
c3RydWN0dXJlLmh0bWwKaW5kZXggZDgyM2JlZmY0ZDY2YjIzNjZhMjY5YWZkOGQ1NzJlMzY1NjRj
Y2MyZS4uZjExN2UwZmRmM2M4MTJmMDgwMjNkMTFhY2NjOTFlYzNjOTQ5NmQxOSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2RhdGFiYXNlLXN0
cnVjdHVyZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4
ZWRkYi9kYXRhYmFzZS1zdHJ1Y3R1cmUuaHRtbApAQCAtOCw3ICs4LDcgQEAgZnVuY3Rpb24gdGVz
dCgpCiAgICAgdmFyIGluZGV4ZWREQk1vZGVsID0gbmV3IFdlYkluc3BlY3Rvci5JbmRleGVkREJN
b2RlbCgpOwogICAgIHZhciBtYWluRnJhbWVJZCA9IFdlYkluc3BlY3Rvci5yZXNvdXJjZVRyZWVN
b2RlbC5tYWluRnJhbWUuaWQ7CiAgICAgdmFyIGRhdGFiYXNlTmFtZSA9ICJ0ZXN0RGF0YWJhc2Ux
IjsKLSAgICB2YXIgc2VjdXJpdHlPcmlnaW4gPSAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIjsKKyAg
ICB2YXIgc2VjdXJpdHlPcmlnaW4gPSBuZXcgV2ViSW5zcGVjdG9yLlNlY3VyaXR5T3JpZ2luKCIx
IiwgImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIpOwogICAgIHZhciBkYXRhYmFzZUlkID0gbmV3IFdl
Ykluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5EYXRhYmFzZUlkKHNlY3VyaXR5T3JpZ2luLCBkYXRh
YmFzZU5hbWUpOwogCiAgICAgZnVuY3Rpb24gZHVtcERhdGFiYXNlKCkKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlLXRyZWUvcmVzb3VyY2UtdHJl
ZS1ldmVudHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNl
LXRyZWUvcmVzb3VyY2UtdHJlZS1ldmVudHMuaHRtbAppbmRleCBlZTFlYzlkNzViNWRkNzVmY2M2
MDczZmYxNDM5OGQ3ZjA4OTc4ZGJmLi41NDFjM2JhZDE4N2JkYmU3MWZjMzMwMTVkMGQyN2JjYzNk
OTNiMzJlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNv
dXJjZS10cmVlL3Jlc291cmNlLXRyZWUtZXZlbnRzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2UtdHJlZS9yZXNvdXJjZS10cmVlLWV2ZW50cy5odG1s
CkBAIC0zMCw3ICszMCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgY2FzZSAiU2Vj
dXJpdHlPcmlnaW5BZGRlZCI6CiAgICAgICAgICAgICBjYXNlICJTZWN1cml0eU9yaWdpblJlbW92
ZWQiOgogICAgICAgICAgICAgICAgIHZhciBzZWN1cml0eU9yaWdpbiA9IGV2ZW50LmRhdGE7Ci0g
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiAgICAiICsgZXZlbnROYW1l
ICsgIiA6ICIgKyBzZWN1cml0eU9yaWdpbik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5hZGRSZXN1bHQoIiAgICAiICsgZXZlbnROYW1lICsgIiA6ICIgKyBzZWN1cml0eU9yaWdpbi51
aVRpdGxlKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgIH0K
</data>
<flag name="review"
          id="211798"
          type_id="1"
          status="+"
          setter="vsevik"
    />
          </attachment>
      

    </bug>

</bugzilla>