<?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>109433</bug_id>
          
          <creation_ts>2013-02-11 07:15:38 -0800</creation_ts>
          <short_desc>Web Inspector: WebInspector.Project refactorings.</short_desc>
          <delta_ts>2013-02-11 07:52:25 -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>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="Vsevolod Vlasov">vsevik</reporter>
          <assigned_to name="Vsevolod Vlasov">vsevik</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>829659</commentid>
    <comment_count>0</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2013-02-11 07:15:38 -0800</bug_when>
    <thetext>This change prepares Workspace and Project to migration to project-per-domain mode for network based projects.
Renamed WebInspector.WorkspaceProvider to WebInspector.ProjectDelegate.
Renamed Project.name() to Project.id() and delegated it to project delegate.
Added Project.displayName() method that is delegated to project delegate..
SimpleWorkspaceProvider is now responsible for creation of SimpleWorkspaceDelegates and isolates various mappings from Project/ProjectDelegate concept.
UISourceCode is now created based on path in the project.
UISourceCode uri is now calculated based on project and path (right now uri is equal to path).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829661</commentid>
    <comment_count>1</comment_count>
      <attachid>187568</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2013-02-11 07:19:21 -0800</bug_when>
    <thetext>Created attachment 187568
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829671</commentid>
    <comment_count>2</comment_count>
      <attachid>187568</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2013-02-11 07:35:13 -0800</bug_when>
    <thetext>Comment on attachment 187568
Patch

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        Added Project.displayName() method that is delegated to project delegate..

Duplicate trailing .

&gt; Source/WebCore/inspector/front-end/UISourceCode.js:106
&gt; +        return this._path; 

Trailing whitespace

&gt; Source/WebCore/inspector/front-end/Workspace.js:166
&gt; +    type: function() 

Trailing whitespace

&gt; Source/WebCore/inspector/front-end/Workspace.js:223
&gt; +        return this._uiSourceCodes[path];

return ... || null; for the @return type conformance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829691</commentid>
    <comment_count>3</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2013-02-11 07:52:25 -0800</bug_when>
    <thetext>Committed r142474: &lt;http://trac.webkit.org/changeset/142474&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187568</attachid>
            <date>2013-02-11 07:19:21 -0800</date>
            <delta_ts>2013-02-11 07:35:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109433-20130211191551.patch</filename>
            <type>text/plain</type>
            <size>66366</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyNDU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2UxMzA2N2IxY2VmNjE1
MzY1Y2I0ZjcyMDdhMjY4NmJhOWI3ZWRiNi4uNTYwMjQwNzc2ZDYwMjU3MjhmMzNhODBkZjg0ZTZk
ZjRiMDk1N2RkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNCBAQAorMjAxMy0wMi0xMSAgVnNl
dm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBXZWJJbnNwZWN0b3IuUHJvamVjdCByZWZhY3RvcmluZ3MuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk0MzMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNoYW5nZSBwcmVwYXJlcyBXb3Jr
c3BhY2UgYW5kIFByb2plY3QgdG8gbWlncmF0aW9uIHRvIHByb2plY3QtcGVyLWRvbWFpbiBtb2Rl
IGZvciBuZXR3b3JrIGJhc2VkIHByb2plY3RzLgorICAgICAgICBSZW5hbWVkIFdlYkluc3BlY3Rv
ci5Xb3Jrc3BhY2VQcm92aWRlciB0byBXZWJJbnNwZWN0b3IuUHJvamVjdERlbGVnYXRlLgorICAg
ICAgICBSZW5hbWVkIFByb2plY3QubmFtZSgpIHRvIFByb2plY3QuaWQoKSBhbmQgZGVsZWdhdGVk
IGl0IHRvIHByb2plY3QgZGVsZWdhdGUuCisgICAgICAgIEFkZGVkIFByb2plY3QuZGlzcGxheU5h
bWUoKSBtZXRob2QgdGhhdCBpcyBkZWxlZ2F0ZWQgdG8gcHJvamVjdCBkZWxlZ2F0ZS4uCisgICAg
ICAgIFNpbXBsZVdvcmtzcGFjZVByb3ZpZGVyIGlzIG5vdyByZXNwb25zaWJsZSBmb3IgY3JlYXRp
b24gb2YgU2ltcGxlV29ya3NwYWNlRGVsZWdhdGVzIGFuZAorICAgICAgICBpc29sYXRlcyB2YXJp
b3VzIG1hcHBpbmdzIGZyb20gUHJvamVjdC9Qcm9qZWN0RGVsZWdhdGUgY29uY2VwdC4KKyAgICAg
ICAgVUlTb3VyY2VDb2RlIGlzIG5vdyBjcmVhdGVkIGJhc2VkIG9uIHBhdGggaW4gdGhlIHByb2pl
Y3QuCisgICAgICAgIFVJU291cmNlQ29kZSB1cmkgaXMgbm93IGNhbGN1bGF0ZWQgYmFzZWQgb24g
cHJvamVjdCBhbmQgcGF0aCAocmlnaHQgbm93IHVyaSBpcyBlcXVhbCB0byBwYXRoKS4KKworICAg
ICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvajoKKyAgICAgICAgKiBpbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQucHk6CisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtUHJvamVjdERlbGVnYXRlLmpzOiBSZW5h
bWVkIGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtV29y
a3NwYWNlUHJvdmlkZXIuanMuCisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVByb2pl
Y3REZWxlZ2F0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVByb2plY3REZWxl
Z2F0ZS5wcm90b3R5cGUuaWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Qcm9q
ZWN0RGVsZWdhdGUucHJvdG90eXBlLnR5cGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVT
eXN0ZW1Qcm9qZWN0RGVsZWdhdGUucHJvdG90eXBlLmRpc3BsYXlOYW1lKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5GaWxlU3lzdGVtUHJvamVjdERlbGVnYXRlLnByb3RvdHlwZS5pbm5lckNhbGxi
YWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtUHJvamVjdERlbGVnYXRlLnBy
b3RvdHlwZS5yZXF1ZXN0RmlsZUNvbnRlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVT
eXN0ZW1Qcm9qZWN0RGVsZWdhdGUucHJvdG90eXBlLnNldEZpbGVDb250ZW50KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtUHJvamVjdERlbGVnYXRlLnByb3RvdHlwZS5jb250ZW50
Q2FsbGJhY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Qcm9qZWN0RGVsZWdh
dGUucHJvdG90eXBlLnNlYXJjaEluRmlsZUNvbnRlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkZpbGVTeXN0ZW1Qcm9qZWN0RGVsZWdhdGUucHJvdG90eXBlLl9jb250ZW50VHlwZUZvclBhdGgp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Qcm9qZWN0RGVsZWdhdGUucHJvdG90
eXBlLl9wb3B1bGF0ZS5maWxlc0xvYWRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5
c3RlbVByb2plY3REZWxlZ2F0ZS5wcm90b3R5cGUuX3BvcHVsYXRlKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5GaWxlU3lzdGVtUHJvamVjdERlbGVnYXRlLnByb3RvdHlwZS5fYWRkRmlsZSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVByb2plY3REZWxlZ2F0ZS5wcm90b3R5cGUu
X3JlbW92ZUZpbGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Qcm9qZWN0RGVs
ZWdhdGUucHJvdG90eXBlLnJlc2V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVt
VXRpbHMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1VdGlscy5lcnJvckhhbmRs
ZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1VdGlscy5yZXF1ZXN0RmlsZVN5
c3RlbSk6CisgICAgICAgICguZmlsZVN5c3RlbUxvYWRlZCk6CisgICAgICAgICguaW5uZXJDYWxs
YmFjayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVV0aWxzLnJlcXVlc3RGaWxl
c1JlY3Vyc2l2ZSk6CisgICAgICAgICguZmlsZUVudHJ5TG9hZGVkKToKKyAgICAgICAgKC5maWxl
TG9hZGVkKToKKyAgICAgICAgKC5yZWFkZXJMb2FkRW5kKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5GaWxlU3lzdGVtVXRpbHMucmVxdWVzdEZpbGVDb250ZW50KToKKyAgICAgICAgKC5maWxlV3Jp
dGVyQ3JlYXRlZC5maWxlVHJ1bmNhdGVkKToKKyAgICAgICAgKC5maWxlV3JpdGVyQ3JlYXRlZCk6
CisgICAgICAgICgud3JpdGVyRW5kKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVt
VXRpbHMuc2V0RmlsZUNvbnRlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1V
dGlscy5fZ2V0RGlyZWN0b3J5KToKKyAgICAgICAgKC50b0FycmF5KToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5GaWxlU3lzdGVtVXRpbHMuX3JlYWREaXJlY3RvcnkpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkZpbGVTeXN0ZW1VdGlscy5fcmVxdWVzdEVudHJpZXMpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvSXNvbGF0ZWRGaWxlU3lzdGVtTW9kZWwuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuSXNvbGF0ZWRGaWxlU3lzdGVtTW9kZWwucHJvdG90eXBlLl9pbm5lckFkZEZpbGVT
eXN0ZW0pOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2ltcGxlV29ya3NwYWNlUHJv
dmlkZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2ltcGxlUHJvamVjdERlbGVnYXRlKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5TaW1wbGVQcm9qZWN0RGVsZWdhdGUucHJvdG90eXBlLmlk
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TaW1wbGVQcm9qZWN0RGVsZWdhdGUucHJvdG90eXBl
LmRpc3BsYXlOYW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TaW1wbGVQcm9qZWN0RGVsZWdh
dGUucHJvdG90eXBlLnJlcXVlc3RGaWxlQ29udGVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
U2ltcGxlUHJvamVjdERlbGVnYXRlLnByb3RvdHlwZS5zZXRGaWxlQ29udGVudCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuU2ltcGxlUHJvamVjdERlbGVnYXRlLnByb3RvdHlwZS5zZWFyY2hJbkZp
bGVDb250ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TaW1wbGVQcm9qZWN0RGVsZWdhdGUu
cHJvdG90eXBlLmFkZEZpbGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNpbXBsZVByb2plY3RE
ZWxlZ2F0ZS5wcm90b3R5cGUuX3VuaXF1ZVBhdGgpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNp
bXBsZVByb2plY3REZWxlZ2F0ZS5wcm90b3R5cGUucmVtb3ZlRmlsZSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU2ltcGxlUHJvamVjdERlbGVnYXRlLnByb3RvdHlwZS5yZXNldCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuU2ltcGxlV29ya3NwYWNlUHJvdmlkZXIpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlNpbXBsZVdvcmtzcGFjZVByb3ZpZGVyLnVyaUZvclVSTCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU2ltcGxlV29ya3NwYWNlUHJvdmlkZXIucHJvdG90eXBlLmFkZEZpbGVGb3JVUkwp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNpbXBsZVdvcmtzcGFjZVByb3ZpZGVyLnByb3RvdHlw
ZS5hZGRVbmlxdWVGaWxlRm9yVVJMKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TaW1wbGVXb3Jr
c3BhY2VQcm92aWRlci5wcm90b3R5cGUuX2lubmVyQWRkRmlsZUZvclVSTCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuU2ltcGxlV29ya3NwYWNlUHJvdmlkZXIucHJvdG90eXBlLnJlbW92ZUZpbGUp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNpbXBsZVdvcmtzcGFjZVByb3ZpZGVyLnByb3RvdHlw
ZS5yZXNldCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9VSVNvdXJjZUNvZGUuanM6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5VSVNvdXJjZUNvZGUucHJvdG90eXBlLnBhdGgpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlVJU291cmNlQ29kZS5wcm90b3R5cGUudXJpKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL1dlYktpdC5xcmM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Xb3Jrc3BhY2Uu
anM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZURlc2NyaXB0b3IpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlByb2plY3REZWxlZ2F0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvamVj
dERlbGVnYXRlLnByb3RvdHlwZS5pZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvamVjdERl
bGVnYXRlLnByb3RvdHlwZS5kaXNwbGF5TmFtZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJv
amVjdERlbGVnYXRlLnByb3RvdHlwZS5yZXF1ZXN0RmlsZUNvbnRlbnQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlByb2plY3REZWxlZ2F0ZS5wcm90b3R5cGUuc2V0RmlsZUNvbnRlbnQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlByb2plY3REZWxlZ2F0ZS5wcm90b3R5cGUuc2VhcmNoSW5GaWxl
Q29udGVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvamVjdCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuUHJvamVjdC5wcm90b3R5cGUuaWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlBy
b2plY3QucHJvdG90eXBlLnR5cGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2plY3QucHJv
dG90eXBlLmRpc3BsYXlOYW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9qZWN0LnByb3Rv
dHlwZS5pc1NlcnZpY2VQcm9qZWN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9qZWN0LnBy
b3RvdHlwZS5fZmlsZUFkZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9qZWN0LnByb3Rv
dHlwZS5fZmlsZVJlbW92ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2plY3QucHJvdG90
eXBlLl9yZXNldCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvamVjdC5wcm90b3R5cGUudWlT
b3VyY2VDb2RlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9qZWN0LnByb3RvdHlwZS51aVNv
dXJjZUNvZGVGb3JPcmlnaW5VUkwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2plY3QucHJv
dG90eXBlLnVpU291cmNlQ29kZUZvclVSSSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvamVj
dC5wcm90b3R5cGUudWlTb3VyY2VDb2Rlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvamVj
dC5wcm90b3R5cGUucmVxdWVzdEZpbGVDb250ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Q
cm9qZWN0LnByb3RvdHlwZS5zZXRGaWxlQ29udGVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
UHJvamVjdC5wcm90b3R5cGUuc2VhcmNoSW5GaWxlQ29udGVudCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuUHJvamVjdC5wcm90b3R5cGUuZGlzcG9zZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
V29ya3NwYWNlLnByb3RvdHlwZS51aVNvdXJjZUNvZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LldvcmtzcGFjZS5wcm90b3R5cGUudWlTb3VyY2VDb2RlRm9yVVJJKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Xb3Jrc3BhY2UucHJvdG90eXBlLmFkZFByb2plY3QpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLldvcmtzcGFjZS5wcm90b3R5cGUucmVtb3ZlUHJvamVjdCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuV29ya3NwYWNlLnByb3RvdHlwZS5wcm9qZWN0KToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5Xb3Jrc3BhY2UucHJvdG90eXBlLnVpU291cmNlQ29kZXMpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLldvcmtzcGFjZS5wcm90b3R5cGUucHJvamVjdEZvclVJU291cmNlQ29kZSk6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbDoKKwogMjAxMy0wMi0xMSAg
Wm9sdGFuIEFydmFpICA8emFydmFpQGluZi51LXN6ZWdlZC5odT4KIAogICAgICAgICBbUXRdIFVu
cmV2aWV3ZWQuIEZpeCBtaW5pbWFsIGJ1aWxkIGFmdGVyIHIxNDI0NDQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
aW5kZXggMjg4NWYwNzJjNGU2ZTkzM2FlNDNiOGQxMmNmYTVjYWQ3MzI1Zjg2Mi4uNzhkN2MzMWM0
MjE0NzU1MTdlOGQ4MjIwNTBkYWVkYjczZTBlMjE2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNTIx
Niw3ICs1MjE2LDcgQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVNYXBw
aW5nLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1NYXBw
aW5nLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Nb2Rl
bC5qcycsCi0gICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtV29ya3Nw
YWNlUHJvdmlkZXIuanMnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5
c3RlbVByb2plY3REZWxlZ2F0ZS5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVu
ZC9GaWxlVXRpbHMuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRm9udFZp
ZXcuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvR29Ub0xpbmVEaWFsb2cu
anMnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRl
eCAzZWM2N2ViMjg2MjRlNWM4N2NjNjY2NDYxZWMzNzk0OGZmZWI3OGQ0Li4xNTFkOGUyODNkNDEx
OWUzMDE5NTZmZWM0NTljNzg2ZTViMDc1NzcyIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNzcxMzgsNyArNzcxMzgsNyBAQAogCQkJCQk+CiAJ
CQkJPC9GaWxlPgogCQkJCTxGaWxlCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZy
b250LWVuZFxGaWxlU3lzdGVtV29ya3NwYWNlUHJvdmlkZXIuanMiCisJCQkJCVJlbGF0aXZlUGF0
aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxGaWxlU3lzdGVtUHJvamVjdERlbGVnYXRlLmpzIgog
CQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQucHkgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvY29tcGlsZS1mcm9udC1lbmQucHkKaW5kZXggYzM2MDMwOTUzZTgyYWQ1N2ViNGIzMmFiNzZi
ZjkxNDA3ZTE0ODI2OS4uYmNhZGY0N2RhZTM0Yjg1NjJjOGE3OWEyNzNkMGYyMDRhNjc3YjM1NiAx
MDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5weQpAQCAt
NzksNyArNzksNyBAQCBtb2R1bGVzID0gWwogICAgICAgICAgICAgIkZpbGVNYXBwaW5nLmpzIiwK
ICAgICAgICAgICAgICJGaWxlU3lzdGVtTWFwcGluZy5qcyIsCiAgICAgICAgICAgICAiRmlsZVN5
c3RlbU1vZGVsLmpzIiwKLSAgICAgICAgICAgICJGaWxlU3lzdGVtV29ya3NwYWNlUHJvdmlkZXIu
anMiLAorICAgICAgICAgICAgIkZpbGVTeXN0ZW1Qcm9qZWN0RGVsZWdhdGUuanMiLAogICAgICAg
ICAgICAgIkZpbGVVdGlscy5qcyIsCiAgICAgICAgICAgICAiSEFSRW50cnkuanMiLAogICAgICAg
ICAgICAgIkluZGV4ZWREQk1vZGVsLmpzIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbVByb2plY3REZWxlZ2F0ZS5qcyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbVByb2plY3REZWxlZ2F0ZS5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mNDgyZjQ5NGI5YzQ4MWU1NTY3OTczNzhlOTBlNDc0YjNlNDZkNzM3Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lz
dGVtUHJvamVjdERlbGVnYXRlLmpzCkBAIC0wLDAgKzEsNDYwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyoqCisgKiBAY29uc3RydWN0
b3IKKyAqIEBpbXBsZW1lbnRzIHtXZWJJbnNwZWN0b3IuUHJvamVjdERlbGVnYXRlfQorICogQGV4
dGVuZHMge1dlYkluc3BlY3Rvci5PYmplY3R9CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5Jc29s
YXRlZEZpbGVTeXN0ZW1Nb2RlbH0gaXNvbGF0ZWRGaWxlU3lzdGVtTW9kZWwKKyAqIEBwYXJhbSB7
c3RyaW5nfSBmaWxlU3lzdGVtSWQKKyAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlU3lzdGVtUGF0aAor
ICovCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVByb2plY3REZWxlZ2F0ZSA9IGZ1bmN0aW9uKGlz
b2xhdGVkRmlsZVN5c3RlbU1vZGVsLCBmaWxlU3lzdGVtSWQsIGZpbGVTeXN0ZW1QYXRoKQorewor
ICAgIHRoaXMuX2lzb2xhdGVkRmlsZVN5c3RlbU1vZGVsID0gaXNvbGF0ZWRGaWxlU3lzdGVtTW9k
ZWw7CisgICAgdGhpcy5fZmlsZVN5c3RlbUlkID0gZmlsZVN5c3RlbUlkOworICAgIHRoaXMuX2Zp
bGVTeXN0ZW1QYXRoID0gZmlsZVN5c3RlbVBhdGg7CisgICAgdGhpcy5fZmlsZXMgPSB7fTsKKyAg
ICB0aGlzLl9wb3B1bGF0ZSgpOworfQorCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVByb2plY3RE
ZWxlZ2F0ZS5fc2NyaXB0RXh0ZW5zaW9ucyA9IFsianMiLCAiamF2YSIsICJjYyIsICJjcHAiLCAi
aCIsICJjcyIsICJweSIsICJwaHAiXS5rZXlTZXQoKTsKKworV2ViSW5zcGVjdG9yLkZpbGVTeXN0
ZW1Qcm9qZWN0RGVsZWdhdGUucHJvdG90eXBlID0geworICAgIC8qKgorICAgICAqIEByZXR1cm4g
e3N0cmluZ30KKyAgICAgKi8KKyAgICBpZDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMuX2ZpbGVTeXN0ZW1JZDsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHJldHVy
biB7c3RyaW5nfQorICAgICAqLworICAgIHR5cGU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAg
IHJldHVybiBXZWJJbnNwZWN0b3IucHJvamVjdFR5cGVzLkZpbGVTeXN0ZW07CisgICAgfSwKKwor
ICAgIC8qKgorICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAgKi8KKyAgICBkaXNwbGF5TmFt
ZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbGVTeXN0ZW1QYXRo
LnN1YnN0cih0aGlzLl9maWxlU3lzdGVtUGF0aC5sYXN0SW5kZXhPZigiLyIpICsgMSk7CisgICAg
fSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1cmkKKyAgICAgKiBAcGFyYW0g
e2Z1bmN0aW9uKD9zdHJpbmcsYm9vbGVhbixzdHJpbmcpfSBjYWxsYmFjaworICAgICAqLworICAg
IHJlcXVlc3RGaWxlQ29udGVudDogZnVuY3Rpb24odXJpLCBjYWxsYmFjaykKKyAgICB7CisgICAg
ICAgIHZhciBmaWxlUGF0aCA9IHRoaXMuX2lzb2xhdGVkRmlsZVN5c3RlbU1vZGVsLm1hcHBpbmco
KS5maWxlRm9yVVJJKHRoaXMuX2ZpbGVTeXN0ZW1QYXRoLCB1cmkpOworICAgICAgICBpZiAoIWZp
bGVQYXRoKSB7CisgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJObyBtYXRjaGluZyBmaWxlIGZv
ciB1cmk6ICIgKyB1cmkpOworICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgZmFsc2UsIFdlYklu
c3BlY3Rvci5yZXNvdXJjZVR5cGVzLk90aGVyLmNhbm9uaWNhbE1pbWVUeXBlKCkpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVt
VXRpbHMucmVxdWVzdEZpbGVDb250ZW50KHRoaXMuX2lzb2xhdGVkRmlsZVN5c3RlbU1vZGVsLCB0
aGlzLl9maWxlU3lzdGVtUGF0aCwgZmlsZVBhdGgsIGlubmVyQ2FsbGJhY2suYmluZCh0aGlzKSk7
CisgICAgICAgIAorICAgICAgICBmdW5jdGlvbiBpbm5lckNhbGxiYWNrKGNvbnRlbnQpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHZhciBjb250ZW50VHlwZSA9IHRoaXMuX2NvbnRlbnRUeXBlRm9y
UGF0aChmaWxlUGF0aCk7CisgICAgICAgICAgICBjYWxsYmFjayhjb250ZW50LCBmYWxzZSwgY29u
dGVudFR5cGUuY2Fub25pY2FsTWltZVR5cGUoKSk7CisgICAgICAgIH0KKyAgICB9LAorCisgICAg
LyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IHVyaQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBu
ZXdDb250ZW50CisgICAgICogQHBhcmFtIHtmdW5jdGlvbig/c3RyaW5nKX0gY2FsbGJhY2sKKyAg
ICAgKi8KKyAgICBzZXRGaWxlQ29udGVudDogZnVuY3Rpb24odXJpLCBuZXdDb250ZW50LCBjYWxs
YmFjaykKKyAgICB7CisgICAgICAgIHZhciBmaWxlUGF0aCA9IHRoaXMuX2lzb2xhdGVkRmlsZVN5
c3RlbU1vZGVsLm1hcHBpbmcoKS5maWxlRm9yVVJJKHRoaXMuX2ZpbGVTeXN0ZW1QYXRoLCB1cmkp
OworICAgICAgICBpZiAoIWZpbGVQYXRoKSB7CisgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJO
byBtYXRjaGluZyBmaWxlIGZvciB1cmk6ICIgKyB1cmkpOworICAgICAgICAgICAgY2FsbGJhY2so
IiIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIFdlYkluc3BlY3Rv
ci5GaWxlU3lzdGVtVXRpbHMuc2V0RmlsZUNvbnRlbnQodGhpcy5faXNvbGF0ZWRGaWxlU3lzdGVt
TW9kZWwsIHRoaXMuX2ZpbGVTeXN0ZW1QYXRoLCBmaWxlUGF0aCwgbmV3Q29udGVudCwgY2FsbGJh
Y2suYmluZCh0aGlzLCAiIikpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0
cmluZ30gdXJpCisgICAgICogQHBhcmFtIHtzdHJpbmd9IHF1ZXJ5CisgICAgICogQHBhcmFtIHti
b29sZWFufSBjYXNlU2Vuc2l0aXZlCisgICAgICogQHBhcmFtIHtib29sZWFufSBpc1JlZ2V4Cisg
ICAgICogQHBhcmFtIHtmdW5jdGlvbihBcnJheS48V2ViSW5zcGVjdG9yLkNvbnRlbnRQcm92aWRl
ci5TZWFyY2hNYXRjaD4pfSBjYWxsYmFjaworICAgICAqLworICAgIHNlYXJjaEluRmlsZUNvbnRl
bnQ6IGZ1bmN0aW9uKHVyaSwgcXVlcnksIGNhc2VTZW5zaXRpdmUsIGlzUmVnZXgsIGNhbGxiYWNr
KQorICAgIHsKKyAgICAgICAgdGhpcy5yZXF1ZXN0RmlsZUNvbnRlbnQodXJpLCBjb250ZW50Q2Fs
bGJhY2suYmluZCh0aGlzKSk7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBwYXJhbSB7P3N0
cmluZ30gY29udGVudAorICAgICAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGJhc2U2NEVuY29kZWQK
KyAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IG1pbWVUeXBlCisgICAgICAgICAqLworICAgICAg
ICBmdW5jdGlvbiBjb250ZW50Q2FsbGJhY2soY29udGVudCwgYmFzZTY0RW5jb2RlZCwgbWltZVR5
cGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciByZXN1bHQgPSBbXTsKKyAgICAgICAgICAg
IGlmIChjb250ZW50KQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IFdlYkluc3BlY3Rvci5Db250
ZW50UHJvdmlkZXIucGVyZm9ybVNlYXJjaEluQ29udGVudChjb250ZW50LCBxdWVyeSwgY2FzZVNl
bnNpdGl2ZSwgaXNSZWdleCk7CisgICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOworICAgICAg
ICB9CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoCisgICAg
ICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlJlc291cmNlVHlwZX0KKyAgICAgKi8KKyAgICBfY29u
dGVudFR5cGVGb3JQYXRoOiBmdW5jdGlvbihwYXRoKQorICAgIHsKKyAgICAgICAgdmFyIHNwbGl0
dGVkUGF0aCA9IHBhdGguc3BsaXQoIi8iKTsKKyAgICAgICAgdmFyIGZpbGVOYW1lID0gc3BsaXR0
ZWRQYXRoW3NwbGl0dGVkUGF0aC5sZW5ndGggLSAxXTsKKyAgICAgICAgdmFyIGV4dGVuc2lvbklu
ZGV4ID0gZmlsZU5hbWUubGFzdEluZGV4T2YoIi4iKTsKKyAgICAgICAgdmFyIGV4dGVuc2lvbiA9
ICIiOworICAgICAgICBpZiAoZXh0ZW5zaW9uSW5kZXggIT09IC0xKQorICAgICAgICAgICAgZXh0
ZW5zaW9uID0gZmlsZU5hbWUuc3Vic3RyaW5nKGV4dGVuc2lvbkluZGV4ICsgMSk7CisgICAgICAg
IHZhciBjb250ZW50VHlwZSA9IFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5cGVzLk90aGVyOworICAg
ICAgICBpZiAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Qcm9qZWN0RGVsZWdhdGUuX3NjcmlwdEV4
dGVuc2lvbnNbZXh0ZW5zaW9uXSkKKyAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IucmVz
b3VyY2VUeXBlcy5TY3JpcHQ7CisgICAgICAgIGlmIChleHRlbnNpb24gPT09ICJjc3MiKQorICAg
ICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5cGVzLlN0eWxlc2hlZXQ7Cisg
ICAgICAgIGlmIChleHRlbnNpb24gPT09ICJodG1sIikKKyAgICAgICAgICAgIHJldHVybiBXZWJJ
bnNwZWN0b3IucmVzb3VyY2VUeXBlcy5Eb2N1bWVudDsKKyAgICAgICAgcmV0dXJuIFdlYkluc3Bl
Y3Rvci5yZXNvdXJjZVR5cGVzLk90aGVyOworICAgIH0sCisKKyAgICBfcG9wdWxhdGU6IGZ1bmN0
aW9uKCkKKyAgICB7CisgICAgICAgIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVXRpbHMucmVxdWVz
dEZpbGVzUmVjdXJzaXZlKHRoaXMuX2lzb2xhdGVkRmlsZVN5c3RlbU1vZGVsLCB0aGlzLl9maWxl
U3lzdGVtUGF0aCwgIiIsIGZpbGVzTG9hZGVkLmJpbmQodGhpcykpOworCisgICAgICAgIGZ1bmN0
aW9uIGZpbGVzTG9hZGVkKGZpbGVzKQorICAgICAgICB7CisgICAgICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGZpbGVzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgdmFyIHVyaSA9
IHRoaXMuX2lzb2xhdGVkRmlsZVN5c3RlbU1vZGVsLm1hcHBpbmcoKS51cmlGb3JGaWxlKHRoaXMu
X2ZpbGVTeXN0ZW1QYXRoLCBmaWxlc1tpXSk7CisgICAgICAgICAgICAgICAgdmFyIGNvbnRlbnRU
eXBlID0gdGhpcy5fY29udGVudFR5cGVGb3JQYXRoKGZpbGVzW2ldKTsKKyAgICAgICAgICAgICAg
ICB2YXIgdXJsID0gV2ViSW5zcGVjdG9yLmZpbGVNYXBwaW5nLnVybEZvclVSSSh1cmkpOworICAg
ICAgICAgICAgICAgIHZhciBmaWxlRGVzY3JpcHRvciA9IG5ldyBXZWJJbnNwZWN0b3IuRmlsZURl
c2NyaXB0b3IodXJpLCAiZmlsZTovLyIgKyB0aGlzLl9maWxlU3lzdGVtUGF0aCArIGZpbGVzW2ld
LCB1cmwsIGNvbnRlbnRUeXBlLCB0cnVlKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9hZGRGaWxl
KGZpbGVEZXNjcmlwdG9yKTsKKyAgICAgICAgICAgIH0gCisgICAgICAgIH0KKyAgICB9LAorCisg
ICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRmlsZURlc2NyaXB0b3J9IGZpbGVE
ZXNjcmlwdG9yCisgICAgICovCisgICAgX2FkZEZpbGU6IGZ1bmN0aW9uKGZpbGVEZXNjcmlwdG9y
KQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9maWxlc1t0aGlzLl9maWxlU3lzdGVtUGF0aF0p
CisgICAgICAgICAgICB0aGlzLl9maWxlc1t0aGlzLl9maWxlU3lzdGVtUGF0aF0gPSB7fTsKKyAg
ICAgICAgdGhpcy5fZmlsZXNbdGhpcy5fZmlsZVN5c3RlbVBhdGhdW2ZpbGVEZXNjcmlwdG9yLnBh
dGhdID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5z
cGVjdG9yLlByb2plY3REZWxlZ2F0ZS5FdmVudHMuRmlsZUFkZGVkLCBmaWxlRGVzY3JpcHRvcik7
CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1cmkKKyAgICAgKi8K
KyAgICBfcmVtb3ZlRmlsZTogZnVuY3Rpb24odXJpKQorICAgIHsKKyAgICAgICAgZGVsZXRlIHRo
aXMuX2ZpbGVzW3RoaXMuX2ZpbGVTeXN0ZW1QYXRoXVt1cmldOworICAgICAgICBpZiAoT2JqZWN0
LmtleXModGhpcy5fZmlsZXNbdGhpcy5fZmlsZVN5c3RlbVBhdGhdKS5sZW5ndGggPT09IDApCisg
ICAgICAgICAgICBkZWxldGUgdGhpcy5fZmlsZXNbdGhpcy5fZmlsZVN5c3RlbVBhdGhdOworICAg
ICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuUHJvamVjdERl
bGVnYXRlLkV2ZW50cy5GaWxlUmVtb3ZlZCwgdXJpKTsKKyAgICB9LAorCisgICAgcmVzZXQ6IGZ1
bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdl
Ykluc3BlY3Rvci5Qcm9qZWN0RGVsZWdhdGUuRXZlbnRzLlJlc2V0LCBudWxsKTsKKyAgICB9LAor
ICAgIAorICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGUKK30KKwor
LyoqCisgKiBAdHlwZSB7P1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtUHJvamVjdERlbGVnYXRlfQor
ICovCitXZWJJbnNwZWN0b3IuZmlsZVN5c3RlbVByb2plY3REZWxlZ2F0ZSA9IG51bGw7CisKKy8q
KgorICogQGNvbnN0cnVjdG9yCisgKi8KK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtVXRpbHMgPSBm
dW5jdGlvbigpCit7Cit9CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtVXRpbHMuZXJyb3JIYW5k
bGVyID0gZnVuY3Rpb24oZXJyb3IpCit7CisgICAgdmFyIG1zZzsKKyAgICBzd2l0Y2ggKGVycm9y
LmNvZGUpIHsKKyAgICBjYXNlIEZpbGVFcnJvci5RVU9UQV9FWENFRURFRF9FUlI6CisgICAgICAg
IG1zZyA9ICJRVU9UQV9FWENFRURFRF9FUlIiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZp
bGVFcnJvci5OT1RfRk9VTkRfRVJSOgorICAgICAgICBtc2cgPSAiTk9UX0ZPVU5EX0VSUiI7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgRmlsZUVycm9yLlNFQ1VSSVRZX0VSUjoKKyAgICAgICAg
bXNnID0gIlNFQ1VSSVRZX0VSUiI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmlsZUVycm9y
LklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUjoKKyAgICAgICAgbXNnID0gIklOVkFMSURfTU9ESUZJ
Q0FUSU9OX0VSUiI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmlsZUVycm9yLklOVkFMSURf
U1RBVEVfRVJSOgorICAgICAgICBtc2cgPSAiSU5WQUxJRF9TVEFURV9FUlIiOworICAgICAgICBi
cmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBtc2cgPSAiVW5rbm93biBFcnJvciI7CisgICAg
ICAgIGJyZWFrOworICAgIH07CisKKyAgICBjb25zb2xlLmVycm9yKCJGaWxlIHN5c3RlbSBlcnJv
cjogIiArIG1zZyk7Cit9CisKKy8qKgorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuSXNvbGF0ZWRG
aWxlU3lzdGVtTW9kZWx9IGlzb2xhdGVkRmlsZVN5c3RlbU1vZGVsCisgKiBAcGFyYW0ge3N0cmlu
Z30gZmlsZVN5c3RlbVBhdGgKKyAqIEBwYXJhbSB7ZnVuY3Rpb24oRE9NRmlsZVN5c3RlbSl9IGNh
bGxiYWNrCisgKi8KK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtVXRpbHMucmVxdWVzdEZpbGVTeXN0
ZW0gPSBmdW5jdGlvbihpc29sYXRlZEZpbGVTeXN0ZW1Nb2RlbCwgZmlsZVN5c3RlbVBhdGgsIGNh
bGxiYWNrKQoreworICAgIGlzb2xhdGVkRmlsZVN5c3RlbU1vZGVsLnJlcXVlc3RET01GaWxlU3lz
dGVtKGZpbGVTeXN0ZW1QYXRoLCBjYWxsYmFjayk7Cit9CisKKy8qKgorICogQHBhcmFtIHtXZWJJ
bnNwZWN0b3IuSXNvbGF0ZWRGaWxlU3lzdGVtTW9kZWx9IGlzb2xhdGVkRmlsZVN5c3RlbU1vZGVs
CisgKiBAcGFyYW0ge3N0cmluZ30gZmlsZVN5c3RlbVBhdGgKKyAqIEBwYXJhbSB7c3RyaW5nfSBw
YXRoCisgKiBAcGFyYW0ge2Z1bmN0aW9uKEFycmF5LjxzdHJpbmc+KX0gY2FsbGJhY2sKKyAqLwor
V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1VdGlscy5yZXF1ZXN0RmlsZXNSZWN1cnNpdmUgPSBmdW5j
dGlvbihpc29sYXRlZEZpbGVTeXN0ZW1Nb2RlbCwgZmlsZVN5c3RlbVBhdGgsIHBhdGgsIGNhbGxi
YWNrKQoreworICAgIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVXRpbHMucmVxdWVzdEZpbGVTeXN0
ZW0oaXNvbGF0ZWRGaWxlU3lzdGVtTW9kZWwsIGZpbGVTeXN0ZW1QYXRoLCBmaWxlU3lzdGVtTG9h
ZGVkKTsKKworICAgIHZhciBmaWxlU3lzdGVtOworICAgIC8qKgorICAgICAqIEBwYXJhbSB7RE9N
RmlsZVN5c3RlbX0gZnMKKyAgICAgKi8KKyAgICBmdW5jdGlvbiBmaWxlU3lzdGVtTG9hZGVkKGZz
KQorICAgIHsKKyAgICAgICAgZmlsZVN5c3RlbSA9IGZzOworICAgICAgICBXZWJJbnNwZWN0b3Iu
RmlsZVN5c3RlbVV0aWxzLl9yZXF1ZXN0RW50cmllcyhmaWxlU3lzdGVtLCBwYXRoLCBpbm5lckNh
bGxiYWNrKTsKKyAgICB9CisKKyAgICB2YXIgcmVzdWx0ID0gW107CisgICAgdmFyIGNhbGxiYWNr
c0xlZnQgPSAxOworICAgIC8qKgorICAgICAqIEBwYXJhbSB7QXJyYXkuPEZpbGVFbnRyeT59IGVu
dHJpZXMKKyAgICAgKi8KKyAgICBmdW5jdGlvbiBpbm5lckNhbGxiYWNrKGVudHJpZXMpCisgICAg
eworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVudHJpZXMubGVuZ3RoOyArK2kpIHsKKyAg
ICAgICAgICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaV07CisgICAgICAgICAgICBpZiAoIWVudHJ5
LmlzRGlyZWN0b3J5KQorICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGVudHJ5LmZ1bGxQYXRo
KTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGNhbGxiYWNrc0xlZnQrKzsK
KyAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVV0aWxzLl9yZXF1ZXN0RW50
cmllcyhmaWxlU3lzdGVtLCBlbnRyeS5mdWxsUGF0aCwgaW5uZXJDYWxsYmFjayk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKCEtLWNhbGxiYWNrc0xlZnQpCisgICAgICAg
ICAgICBjYWxsYmFjayhyZXN1bHQpOworICAgIH0KK30KKworLyoqCisgKiBAcGFyYW0ge1dlYklu
c3BlY3Rvci5Jc29sYXRlZEZpbGVTeXN0ZW1Nb2RlbH0gaXNvbGF0ZWRGaWxlU3lzdGVtTW9kZWwK
KyAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlU3lzdGVtUGF0aAorICogQHBhcmFtIHtzdHJpbmd9IHBh
dGgKKyAqIEBwYXJhbSB7ZnVuY3Rpb24oc3RyaW5nKX0gY2FsbGJhY2sKKyAqLworV2ViSW5zcGVj
dG9yLkZpbGVTeXN0ZW1VdGlscy5yZXF1ZXN0RmlsZUNvbnRlbnQgPSBmdW5jdGlvbihpc29sYXRl
ZEZpbGVTeXN0ZW1Nb2RlbCwgZmlsZVN5c3RlbVBhdGgsIHBhdGgsIGNhbGxiYWNrKQoreworICAg
IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVXRpbHMucmVxdWVzdEZpbGVTeXN0ZW0oaXNvbGF0ZWRG
aWxlU3lzdGVtTW9kZWwsIGZpbGVTeXN0ZW1QYXRoLCBmaWxlU3lzdGVtTG9hZGVkKTsKKworICAg
IHZhciBmaWxlU3lzdGVtOworICAgIC8qKgorICAgICAqIEBwYXJhbSB7RE9NRmlsZVN5c3RlbX0g
ZnMKKyAgICAgKi8KKyAgICBmdW5jdGlvbiBmaWxlU3lzdGVtTG9hZGVkKGZzKQorICAgIHsKKyAg
ICAgICAgZnMucm9vdC5nZXRGaWxlKHBhdGgsIG51bGwsIGZpbGVFbnRyeUxvYWRlZCwgV2ViSW5z
cGVjdG9yLkZpbGVTeXN0ZW1VdGlscy5lcnJvckhhbmRsZXIpOworICAgIH0KKworICAgIC8qKgor
ICAgICAqIEBwYXJhbSB7RmlsZUVudHJ5fSBlbnRyeQorICAgICAqLworICAgIGZ1bmN0aW9uIGZp
bGVFbnRyeUxvYWRlZChlbnRyeSkKKyAgICB7CisgICAgICAgIGVudHJ5LmZpbGUoZmlsZUxvYWRl
ZCwgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1VdGlscy5lcnJvckhhbmRsZXIpOworICAgIH0KKwor
ICAgIC8qKgorICAgICAqIEBwYXJhbSB7IUJsb2J9IGZpbGUKKyAgICAgKi8KKyAgICBmdW5jdGlv
biBmaWxlTG9hZGVkKGZpbGUpCisgICAgeworICAgICAgICB2YXIgcmVhZGVyID0gbmV3IEZpbGVS
ZWFkZXIoKTsKKyAgICAgICAgcmVhZGVyLm9ubG9hZGVuZCA9IHJlYWRlckxvYWRFbmQ7CisgICAg
ICAgIHJlYWRlci5yZWFkQXNUZXh0KGZpbGUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEB0
aGlzIHtGaWxlUmVhZGVyfQorICAgICAqLworICAgIGZ1bmN0aW9uIHJlYWRlckxvYWRFbmQoKQor
ICAgIHsKKyAgICAgICAgY2FsbGJhY2soLyoqIEB0eXBlIHtzdHJpbmd9ICovICh0aGlzLnJlc3Vs
dCkpOworICAgIH0KK30KKworLyoqCisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5Jc29sYXRlZEZp
bGVTeXN0ZW1Nb2RlbH0gaXNvbGF0ZWRGaWxlU3lzdGVtTW9kZWwKKyAqIEBwYXJhbSB7c3RyaW5n
fSBmaWxlU3lzdGVtUGF0aAorICogQHBhcmFtIHtzdHJpbmd9IHBhdGgKKyAqIEBwYXJhbSB7c3Ry
aW5nfSBjb250ZW50CisgKiBAcGFyYW0ge2Z1bmN0aW9uKCl9IGNhbGxiYWNrCisgKi8KK1dlYklu
c3BlY3Rvci5GaWxlU3lzdGVtVXRpbHMuc2V0RmlsZUNvbnRlbnQgPSBmdW5jdGlvbihpc29sYXRl
ZEZpbGVTeXN0ZW1Nb2RlbCwgZmlsZVN5c3RlbVBhdGgsIHBhdGgsIGNvbnRlbnQsIGNhbGxiYWNr
KQoreworICAgIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVXRpbHMucmVxdWVzdEZpbGVTeXN0ZW0o
aXNvbGF0ZWRGaWxlU3lzdGVtTW9kZWwsIGZpbGVTeXN0ZW1QYXRoLCBmaWxlU3lzdGVtTG9hZGVk
KTsKKworICAgIHZhciBmaWxlU3lzdGVtOworICAgIC8qKgorICAgICAqIEBwYXJhbSB7RE9NRmls
ZVN5c3RlbX0gZnMKKyAgICAgKi8KKyAgICBmdW5jdGlvbiBmaWxlU3lzdGVtTG9hZGVkKGZzKQor
ICAgIHsKKyAgICAgICAgZnMucm9vdC5nZXRGaWxlKHBhdGgsIG51bGwsIGZpbGVFbnRyeUxvYWRl
ZCwgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1VdGlscy5lcnJvckhhbmRsZXIpOworICAgIH0KKwor
ICAgIC8qKgorICAgICAqIEBwYXJhbSB7RmlsZUVudHJ5fSBlbnRyeQorICAgICAqLworICAgIGZ1
bmN0aW9uIGZpbGVFbnRyeUxvYWRlZChlbnRyeSkKKyAgICB7CisgICAgICAgIGVudHJ5LmNyZWF0
ZVdyaXRlcihmaWxlV3JpdGVyQ3JlYXRlZCwgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1VdGlscy5l
cnJvckhhbmRsZXIpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7RmlsZVdyaXRl
cn0gZmlsZVdyaXRlcgorICAgICAqLworICAgIGZ1bmN0aW9uIGZpbGVXcml0ZXJDcmVhdGVkKGZp
bGVXcml0ZXIpCisgICAgeworICAgICAgICBmaWxlV3JpdGVyLm9uZXJyb3IgPSBXZWJJbnNwZWN0
b3IuRmlsZVN5c3RlbVV0aWxzLmVycm9ySGFuZGxlcjsKKyAgICAgICAgZmlsZVdyaXRlci5vbndy
aXRlZW5kID0gZmlsZVRydW5jYXRlZDsKKyAgICAgICAgZmlsZVdyaXRlci50cnVuY2F0ZSgwKTsK
KworICAgICAgICBmdW5jdGlvbiBmaWxlVHJ1bmNhdGVkKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgZmlsZVdyaXRlci5vbndyaXRlZW5kID0gd3JpdGVyRW5kOworICAgICAgICAgICAgdmFyIGJs
b2IgPSBuZXcgQmxvYihbY29udGVudF0sIHsgdHlwZTogInRleHQvcGxhaW4iIH0pOworICAgICAg
ICAgICAgZmlsZVdyaXRlci53cml0ZShibG9iKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZ1
bmN0aW9uIHdyaXRlckVuZCgpCisgICAgeworICAgICAgICBjYWxsYmFjaygpOworICAgIH0KK30K
KworLyoqCisgKiBAcGFyYW0ge0RpcmVjdG9yeUVudHJ5fSByb290CisgKiBAcGFyYW0ge0FycmF5
LjxzdHJpbmc+fSBmb2xkZXJzCisgKiBAcGFyYW0ge09iamVjdH0gZmxhZ3MKKyAqIEBwYXJhbSB7
ZnVuY3Rpb24oRGlyZWN0b3J5RW50cnkpfSBjYWxsYmFjaworICovCitXZWJJbnNwZWN0b3IuRmls
ZVN5c3RlbVV0aWxzLl9nZXREaXJlY3RvcnkgPSBmdW5jdGlvbihyb290LCBmb2xkZXJzLCBmbGFn
cywgY2FsbGJhY2spCit7CisgICAgd2hpbGUgKGZvbGRlcnNbMF0gPT0gIi4iIHx8IGZvbGRlcnNb
MF0gPT0gIiIpCisgICAgICAgIGZvbGRlcnMgPSBmb2xkZXJzLnNsaWNlKDEpOworICAgIGlmICgh
Zm9sZGVycy5sZW5ndGgpCisgICAgICAgIGNhbGxiYWNrKHJvb3QpOworICAgIGVsc2UKKyAgICAg
ICAgcm9vdC5nZXREaXJlY3RvcnkoZm9sZGVyc1swXSwgZmxhZ3MsIGlubmVyQ2FsbGJhY2ssIFdl
Ykluc3BlY3Rvci5GaWxlU3lzdGVtVXRpbHMuZXJyb3JIYW5kbGVyKTsKKworICAgIC8qKgorICAg
ICAqIEBwYXJhbSB7RGlyZWN0b3J5RW50cnl9IGRpckVudHJ5CisgICAgICovCisgICAgZnVuY3Rp
b24gaW5uZXJDYWxsYmFjayhkaXJFbnRyeSkKKyAgICB7CisgICAgICAgIFdlYkluc3BlY3Rvci5G
aWxlU3lzdGVtVXRpbHMuX2dldERpcmVjdG9yeShkaXJFbnRyeSwgZm9sZGVycy5zbGljZSgxKSwg
ZmxhZ3MsIGNhbGxiYWNrKTsKKyAgICB9Cit9CisKKy8qKgorICogQHBhcmFtIHtEaXJlY3RvcnlF
bnRyeX0gZGlyRW50cnkKKyAqIEBwYXJhbSB7ZnVuY3Rpb24oQXJyYXkuPEZpbGVFbnRyeT4pfSBj
YWxsYmFjaworICovCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVV0aWxzLl9yZWFkRGlyZWN0b3J5
ID0gZnVuY3Rpb24oZGlyRW50cnksIGNhbGxiYWNrKQoreworICAgIHZhciBkaXJSZWFkZXIgPSBk
aXJFbnRyeS5jcmVhdGVSZWFkZXIoKTsKKyAgICB2YXIgZW50cmllcyA9IFtdOworCisgICAgZnVu
Y3Rpb24gaW5uZXJDYWxsYmFjayhyZXN1bHRzKQorICAgIHsKKyAgICAgICAgaWYgKCFyZXN1bHRz
Lmxlbmd0aCkKKyAgICAgICAgICAgIGNhbGxiYWNrKGVudHJpZXMuc29ydCgpKTsKKyAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICBlbnRyaWVzID0gZW50cmllcy5jb25jYXQodG9BcnJheShyZXN1
bHRzKSk7CisgICAgICAgICAgICBkaXJSZWFkZXIucmVhZEVudHJpZXMoaW5uZXJDYWxsYmFjaywg
V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1VdGlscy5lcnJvckhhbmRsZXIpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gdG9BcnJheShsaXN0KQorICAgIHsKKyAgICAgICAgcmV0dXJu
IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGxpc3QgfHwgW10sIDApOworICAgIH0gICAgCisK
KyAgICBkaXJSZWFkZXIucmVhZEVudHJpZXMoaW5uZXJDYWxsYmFjaywgV2ViSW5zcGVjdG9yLkZp
bGVTeXN0ZW1VdGlscy5lcnJvckhhbmRsZXIpOworfQorCisvKioKKyAqIEBwYXJhbSB7RE9NRmls
ZVN5c3RlbX0gZmlsZVN5c3RlbQorICogQHBhcmFtIHtzdHJpbmd9IHBhdGgKKyAqIEBwYXJhbSB7
ZnVuY3Rpb24oQXJyYXkuPEZpbGVFbnRyeT4pfSBjYWxsYmFjaworICovCitXZWJJbnNwZWN0b3Iu
RmlsZVN5c3RlbVV0aWxzLl9yZXF1ZXN0RW50cmllcyA9IGZ1bmN0aW9uKGZpbGVTeXN0ZW0sIHBh
dGgsIGNhbGxiYWNrKQoreworICAgIHZhciBmb2xkZXJzID0gcGF0aC5zcGxpdCgiLyIpOworICAg
IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVXRpbHMuX2dldERpcmVjdG9yeShmaWxlU3lzdGVtLnJv
b3QsIGZvbGRlcnMsIG51bGwsIGlubmVyQ2FsbGJhY2spOworCisgICAgZnVuY3Rpb24gaW5uZXJD
YWxsYmFjayhkaXJFbnRyeSkKKyAgICB7CisgICAgICAgIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVt
VXRpbHMuX3JlYWREaXJlY3RvcnkoZGlyRW50cnksIGNhbGxiYWNrKQorICAgIH0KK30KKworV2Vi
SW5zcGVjdG9yLkZpbGVTeXN0ZW1VdGlscy5wcm90b3R5cGUgPSB7Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Xb3Jrc3BhY2VQcm92
aWRlci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbVdv
cmtzcGFjZVByb3ZpZGVyLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OGVmYjBi
NTkyNWNhNWE0NWFlYmUzMzZhYTI3MzdhNGQ1ZDZkNTllLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRmlsZVN5c3RlbVdvcmtzcGFjZVByb3ZpZGVyLmpzCisrKyAvZGV2L251bGwKQEAgLTEsNDQy
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoK
LSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgot
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0vKioKLSAqIEBjb25zdHJ1Y3RvcgotICogQGltcGxlbWVudHMge1dlYkluc3BlY3Rv
ci5Xb3Jrc3BhY2VQcm92aWRlcn0KLSAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuT2JqZWN0fQot
ICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuSXNvbGF0ZWRGaWxlU3lzdGVtTW9kZWx9IGlzb2xhdGVk
RmlsZVN5c3RlbU1vZGVsCi0gKiBAcGFyYW0ge3N0cmluZ30gZmlsZVN5c3RlbVBhdGgKLSAqLwot
V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Xb3Jrc3BhY2VQcm92aWRlciA9IGZ1bmN0aW9uKGlzb2xh
dGVkRmlsZVN5c3RlbU1vZGVsLCBmaWxlU3lzdGVtUGF0aCkKLXsKLSAgICB0aGlzLl9pc29sYXRl
ZEZpbGVTeXN0ZW1Nb2RlbCA9IGlzb2xhdGVkRmlsZVN5c3RlbU1vZGVsOwotICAgIHRoaXMuX2Zp
bGVTeXN0ZW1QYXRoID0gZmlsZVN5c3RlbVBhdGg7Ci0gICAgdGhpcy5fZmlsZXMgPSB7fTsKLSAg
ICB0aGlzLl9wb3B1bGF0ZSgpOwotfQotCi1XZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVdvcmtzcGFj
ZVByb3ZpZGVyLl9zY3JpcHRFeHRlbnNpb25zID0gWyJqcyIsICJqYXZhIiwgImNjIiwgImNwcCIs
ICJoIiwgImNzIiwgInB5IiwgInBocCJdLmtleVNldCgpOwotCi1XZWJJbnNwZWN0b3IuRmlsZVN5
c3RlbVdvcmtzcGFjZVByb3ZpZGVyLnByb3RvdHlwZSA9IHsKLSAgICAvKioKLSAgICAgKiBAcmV0
dXJuIHtzdHJpbmd9Ci0gICAgICovCi0gICAgdHlwZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIFdlYkluc3BlY3Rvci5wcm9qZWN0VHlwZXMuRmlsZVN5c3RlbTsKLSAgICB9LAot
Ci0gICAgLyoqCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IHVyaQotICAgICAqIEBwYXJhbSB7ZnVu
Y3Rpb24oP3N0cmluZyxib29sZWFuLHN0cmluZyl9IGNhbGxiYWNrCi0gICAgICovCi0gICAgcmVx
dWVzdEZpbGVDb250ZW50OiBmdW5jdGlvbih1cmksIGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAg
dmFyIGZpbGVQYXRoID0gdGhpcy5faXNvbGF0ZWRGaWxlU3lzdGVtTW9kZWwubWFwcGluZygpLmZp
bGVGb3JVUkkodGhpcy5fZmlsZVN5c3RlbVBhdGgsIHVyaSk7Ci0gICAgICAgIGlmICghZmlsZVBh
dGgpIHsKLSAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIk5vIG1hdGNoaW5nIGZpbGUgZm9yIHVy
aTogIiArIHVyaSk7Ci0gICAgICAgICAgICBjYWxsYmFjayhudWxsLCBmYWxzZSwgV2ViSW5zcGVj
dG9yLnJlc291cmNlVHlwZXMuT3RoZXIuY2Fub25pY2FsTWltZVR5cGUoKSk7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1VdGls
cy5yZXF1ZXN0RmlsZUNvbnRlbnQodGhpcy5faXNvbGF0ZWRGaWxlU3lzdGVtTW9kZWwsIHRoaXMu
X2ZpbGVTeXN0ZW1QYXRoLCBmaWxlUGF0aCwgaW5uZXJDYWxsYmFjay5iaW5kKHRoaXMpKTsKLSAg
ICAgICAgCi0gICAgICAgIGZ1bmN0aW9uIGlubmVyQ2FsbGJhY2soY29udGVudCkKLSAgICAgICAg
ewotICAgICAgICAgICAgdmFyIGNvbnRlbnRUeXBlID0gdGhpcy5fY29udGVudFR5cGVGb3JQYXRo
KGZpbGVQYXRoKTsKLSAgICAgICAgICAgIGNhbGxiYWNrKGNvbnRlbnQsIGZhbHNlLCBjb250ZW50
VHlwZS5jYW5vbmljYWxNaW1lVHlwZSgpKTsKLSAgICAgICAgfQotICAgIH0sCi0KLSAgICAvKioK
LSAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXJpCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IG5ld0Nv
bnRlbnQKLSAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKD9zdHJpbmcpfSBjYWxsYmFjawotICAgICAq
LwotICAgIHNldEZpbGVDb250ZW50OiBmdW5jdGlvbih1cmksIG5ld0NvbnRlbnQsIGNhbGxiYWNr
KQotICAgIHsKLSAgICAgICAgdmFyIGZpbGVQYXRoID0gdGhpcy5faXNvbGF0ZWRGaWxlU3lzdGVt
TW9kZWwubWFwcGluZygpLmZpbGVGb3JVUkkodGhpcy5fZmlsZVN5c3RlbVBhdGgsIHVyaSk7Ci0g
ICAgICAgIGlmICghZmlsZVBhdGgpIHsKLSAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIk5vIG1h
dGNoaW5nIGZpbGUgZm9yIHVyaTogIiArIHVyaSk7Ci0gICAgICAgICAgICBjYWxsYmFjaygiIik7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgV2ViSW5zcGVjdG9yLkZp
bGVTeXN0ZW1VdGlscy5zZXRGaWxlQ29udGVudCh0aGlzLl9pc29sYXRlZEZpbGVTeXN0ZW1Nb2Rl
bCwgdGhpcy5fZmlsZVN5c3RlbVBhdGgsIGZpbGVQYXRoLCBuZXdDb250ZW50LCBjYWxsYmFjay5i
aW5kKHRoaXMsICIiKSk7Ci0gICAgfSwKLQotICAgIC8qKgotICAgICAqIEBwYXJhbSB7c3RyaW5n
fSB1cmkKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30gcXVlcnkKLSAgICAgKiBAcGFyYW0ge2Jvb2xl
YW59IGNhc2VTZW5zaXRpdmUKLSAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlzUmVnZXgKLSAgICAg
KiBAcGFyYW0ge2Z1bmN0aW9uKEFycmF5LjxXZWJJbnNwZWN0b3IuQ29udGVudFByb3ZpZGVyLlNl
YXJjaE1hdGNoPil9IGNhbGxiYWNrCi0gICAgICovCi0gICAgc2VhcmNoSW5GaWxlQ29udGVudDog
ZnVuY3Rpb24odXJpLCBxdWVyeSwgY2FzZVNlbnNpdGl2ZSwgaXNSZWdleCwgY2FsbGJhY2spCi0g
ICAgewotICAgICAgICB0aGlzLnJlcXVlc3RGaWxlQ29udGVudCh1cmksIGNvbnRlbnRDYWxsYmFj
ay5iaW5kKHRoaXMpKTsKLQotICAgICAgICAvKioKLSAgICAgICAgICogQHBhcmFtIHs/c3RyaW5n
fSBjb250ZW50Ci0gICAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gYmFzZTY0RW5jb2RlZAotICAg
ICAgICAgKiBAcGFyYW0ge3N0cmluZ30gbWltZVR5cGUKLSAgICAgICAgICovCi0gICAgICAgIGZ1
bmN0aW9uIGNvbnRlbnRDYWxsYmFjayhjb250ZW50LCBiYXNlNjRFbmNvZGVkLCBtaW1lVHlwZSkK
LSAgICAgICAgewotICAgICAgICAgICAgdmFyIHJlc3VsdCA9IFtdOwotICAgICAgICAgICAgaWYg
KGNvbnRlbnQpCi0gICAgICAgICAgICAgICAgcmVzdWx0ID0gV2ViSW5zcGVjdG9yLkNvbnRlbnRQ
cm92aWRlci5wZXJmb3JtU2VhcmNoSW5Db250ZW50KGNvbnRlbnQsIHF1ZXJ5LCBjYXNlU2Vuc2l0
aXZlLCBpc1JlZ2V4KTsKLSAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7Ci0gICAgICAgIH0K
LSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGgKLSAgICAgKiBA
cmV0dXJuIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2VUeXBlfQotICAgICAqLwotICAgIF9jb250ZW50
VHlwZUZvclBhdGg6IGZ1bmN0aW9uKHBhdGgpCi0gICAgewotICAgICAgICB2YXIgc3BsaXR0ZWRQ
YXRoID0gcGF0aC5zcGxpdCgiLyIpOwotICAgICAgICB2YXIgZmlsZU5hbWUgPSBzcGxpdHRlZFBh
dGhbc3BsaXR0ZWRQYXRoLmxlbmd0aCAtIDFdOwotICAgICAgICB2YXIgZXh0ZW5zaW9uSW5kZXgg
PSBmaWxlTmFtZS5sYXN0SW5kZXhPZigiLiIpOwotICAgICAgICB2YXIgZXh0ZW5zaW9uID0gIiI7
Ci0gICAgICAgIGlmIChleHRlbnNpb25JbmRleCAhPT0gLTEpCi0gICAgICAgICAgICBleHRlbnNp
b24gPSBmaWxlTmFtZS5zdWJzdHJpbmcoZXh0ZW5zaW9uSW5kZXggKyAxKTsKLSAgICAgICAgdmFy
IGNvbnRlbnRUeXBlID0gV2ViSW5zcGVjdG9yLnJlc291cmNlVHlwZXMuT3RoZXI7Ci0gICAgICAg
IGlmIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVdvcmtzcGFjZVByb3ZpZGVyLl9zY3JpcHRFeHRl
bnNpb25zW2V4dGVuc2lvbl0pCi0gICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLnJlc291
cmNlVHlwZXMuU2NyaXB0OwotICAgICAgICBpZiAoZXh0ZW5zaW9uID09PSAiY3NzIikKLSAgICAg
ICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5TdHlsZXNoZWV0OwotICAg
ICAgICBpZiAoZXh0ZW5zaW9uID09PSAiaHRtbCIpCi0gICAgICAgICAgICByZXR1cm4gV2ViSW5z
cGVjdG9yLnJlc291cmNlVHlwZXMuRG9jdW1lbnQ7Ci0gICAgICAgIHJldHVybiBXZWJJbnNwZWN0
b3IucmVzb3VyY2VUeXBlcy5PdGhlcjsKLSAgICB9LAotCi0gICAgX3BvcHVsYXRlOiBmdW5jdGlv
bigpCi0gICAgewotICAgICAgICBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVV0aWxzLnJlcXVlc3RG
aWxlc1JlY3Vyc2l2ZSh0aGlzLl9pc29sYXRlZEZpbGVTeXN0ZW1Nb2RlbCwgdGhpcy5fZmlsZVN5
c3RlbVBhdGgsICIiLCBmaWxlc0xvYWRlZC5iaW5kKHRoaXMpKTsKLQotICAgICAgICBmdW5jdGlv
biBmaWxlc0xvYWRlZChmaWxlcykKLSAgICAgICAgewotICAgICAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBmaWxlcy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgIHZhciB1cmkgPSB0
aGlzLl9pc29sYXRlZEZpbGVTeXN0ZW1Nb2RlbC5tYXBwaW5nKCkudXJpRm9yRmlsZSh0aGlzLl9m
aWxlU3lzdGVtUGF0aCwgZmlsZXNbaV0pOwotICAgICAgICAgICAgICAgIHZhciBjb250ZW50VHlw
ZSA9IHRoaXMuX2NvbnRlbnRUeXBlRm9yUGF0aChmaWxlc1tpXSk7Ci0gICAgICAgICAgICAgICAg
dmFyIHVybCA9IFdlYkluc3BlY3Rvci5maWxlTWFwcGluZy51cmxGb3JVUkkodXJpKTsKLSAgICAg
ICAgICAgICAgICB2YXIgZmlsZURlc2NyaXB0b3IgPSBuZXcgV2ViSW5zcGVjdG9yLkZpbGVEZXNj
cmlwdG9yKHVyaSwgImZpbGU6Ly8iICsgdGhpcy5fZmlsZVN5c3RlbVBhdGggKyBmaWxlc1tpXSwg
dXJsLCBjb250ZW50VHlwZSwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgdGhpcy5fYWRkRmlsZShm
aWxlRGVzY3JpcHRvcik7Ci0gICAgICAgICAgICB9IAotICAgICAgICB9Ci0gICAgfSwKLQotICAg
IC8qKgotICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkZpbGVEZXNjcmlwdG9yfSBmaWxlRGVz
Y3JpcHRvcgotICAgICAqLwotICAgIF9hZGRGaWxlOiBmdW5jdGlvbihmaWxlRGVzY3JpcHRvcikK
LSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fZmlsZXNbdGhpcy5fZmlsZVN5c3RlbVBhdGhdKQot
ICAgICAgICAgICAgdGhpcy5fZmlsZXNbdGhpcy5fZmlsZVN5c3RlbVBhdGhdID0ge307Ci0gICAg
ICAgIHRoaXMuX2ZpbGVzW3RoaXMuX2ZpbGVTeXN0ZW1QYXRoXVtmaWxlRGVzY3JpcHRvci51cmld
ID0gdHJ1ZTsKLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVj
dG9yLldvcmtzcGFjZVByb3ZpZGVyLkV2ZW50cy5GaWxlQWRkZWQsIGZpbGVEZXNjcmlwdG9yKTsK
LSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IHVyaQotICAgICAqLwot
ICAgIF9yZW1vdmVGaWxlOiBmdW5jdGlvbih1cmkpCi0gICAgewotICAgICAgICBkZWxldGUgdGhp
cy5fZmlsZXNbdGhpcy5fZmlsZVN5c3RlbVBhdGhdW3VyaV07Ci0gICAgICAgIGlmIChPYmplY3Qu
a2V5cyh0aGlzLl9maWxlc1t0aGlzLl9maWxlU3lzdGVtUGF0aF0pLmxlbmd0aCA9PT0gMCkKLSAg
ICAgICAgICAgIGRlbGV0ZSB0aGlzLl9maWxlc1t0aGlzLl9maWxlU3lzdGVtUGF0aF07Ci0gICAg
ICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Xb3Jrc3BhY2VQ
cm92aWRlci5FdmVudHMuRmlsZVJlbW92ZWQsIHVyaSk7Ci0gICAgfSwKLQotICAgIHJlc2V0OiBm
dW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhX
ZWJJbnNwZWN0b3IuV29ya3NwYWNlUHJvdmlkZXIuRXZlbnRzLlJlc2V0LCBudWxsKTsKLSAgICB9
LAotICAgIAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGUKLX0K
LQotLyoqCi0gKiBAdHlwZSB7P1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtV29ya3NwYWNlUHJvdmlk
ZXJ9Ci0gKi8KLVdlYkluc3BlY3Rvci5maWxlU3lzdGVtV29ya3NwYWNlUHJvdmlkZXIgPSBudWxs
OwotCi0vKioKLSAqIEBjb25zdHJ1Y3RvcgotICovCi1XZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVV0
aWxzID0gZnVuY3Rpb24oKQotewotfQotCi1XZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVV0aWxzLmVy
cm9ySGFuZGxlciA9IGZ1bmN0aW9uKGVycm9yKQotewotICAgIHZhciBtc2c7Ci0gICAgc3dpdGNo
IChlcnJvci5jb2RlKSB7Ci0gICAgY2FzZSBGaWxlRXJyb3IuUVVPVEFfRVhDRUVERURfRVJSOgot
ICAgICAgICBtc2cgPSAiUVVPVEFfRVhDRUVERURfRVJSIjsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBGaWxlRXJyb3IuTk9UX0ZPVU5EX0VSUjoKLSAgICAgICAgbXNnID0gIk5PVF9GT1VORF9F
UlIiOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZpbGVFcnJvci5TRUNVUklUWV9FUlI6Ci0g
ICAgICAgIG1zZyA9ICJTRUNVUklUWV9FUlIiOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZp
bGVFcnJvci5JTlZBTElEX01PRElGSUNBVElPTl9FUlI6Ci0gICAgICAgIG1zZyA9ICJJTlZBTElE
X01PRElGSUNBVElPTl9FUlIiOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZpbGVFcnJvci5J
TlZBTElEX1NUQVRFX0VSUjoKLSAgICAgICAgbXNnID0gIklOVkFMSURfU1RBVEVfRVJSIjsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgbXNnID0gIlVua25vd24gRXJyb3Ii
OwotICAgICAgICBicmVhazsKLSAgICB9OwotCi0gICAgY29uc29sZS5lcnJvcigiRmlsZSBzeXN0
ZW0gZXJyb3I6ICIgKyBtc2cpOwotfQotCi0vKioKLSAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLklz
b2xhdGVkRmlsZVN5c3RlbU1vZGVsfSBpc29sYXRlZEZpbGVTeXN0ZW1Nb2RlbAotICogQHBhcmFt
IHtzdHJpbmd9IGZpbGVTeXN0ZW1QYXRoCi0gKiBAcGFyYW0ge2Z1bmN0aW9uKERPTUZpbGVTeXN0
ZW0pfSBjYWxsYmFjawotICovCi1XZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVV0aWxzLnJlcXVlc3RG
aWxlU3lzdGVtID0gZnVuY3Rpb24oaXNvbGF0ZWRGaWxlU3lzdGVtTW9kZWwsIGZpbGVTeXN0ZW1Q
YXRoLCBjYWxsYmFjaykKLXsKLSAgICBpc29sYXRlZEZpbGVTeXN0ZW1Nb2RlbC5yZXF1ZXN0RE9N
RmlsZVN5c3RlbShmaWxlU3lzdGVtUGF0aCwgY2FsbGJhY2spOwotfQotCi0vKioKLSAqIEBwYXJh
bSB7V2ViSW5zcGVjdG9yLklzb2xhdGVkRmlsZVN5c3RlbU1vZGVsfSBpc29sYXRlZEZpbGVTeXN0
ZW1Nb2RlbAotICogQHBhcmFtIHtzdHJpbmd9IGZpbGVTeXN0ZW1QYXRoCi0gKiBAcGFyYW0ge3N0
cmluZ30gcGF0aAotICogQHBhcmFtIHtmdW5jdGlvbihBcnJheS48c3RyaW5nPil9IGNhbGxiYWNr
Ci0gKi8KLVdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVXRpbHMucmVxdWVzdEZpbGVzUmVjdXJzaXZl
ID0gZnVuY3Rpb24oaXNvbGF0ZWRGaWxlU3lzdGVtTW9kZWwsIGZpbGVTeXN0ZW1QYXRoLCBwYXRo
LCBjYWxsYmFjaykKLXsKLSAgICBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVV0aWxzLnJlcXVlc3RG
aWxlU3lzdGVtKGlzb2xhdGVkRmlsZVN5c3RlbU1vZGVsLCBmaWxlU3lzdGVtUGF0aCwgZmlsZVN5
c3RlbUxvYWRlZCk7Ci0KLSAgICB2YXIgZmlsZVN5c3RlbTsKLSAgICAvKioKLSAgICAgKiBAcGFy
YW0ge0RPTUZpbGVTeXN0ZW19IGZzCi0gICAgICovCi0gICAgZnVuY3Rpb24gZmlsZVN5c3RlbUxv
YWRlZChmcykKLSAgICB7Ci0gICAgICAgIGZpbGVTeXN0ZW0gPSBmczsKLSAgICAgICAgV2ViSW5z
cGVjdG9yLkZpbGVTeXN0ZW1VdGlscy5fcmVxdWVzdEVudHJpZXMoZmlsZVN5c3RlbSwgcGF0aCwg
aW5uZXJDYWxsYmFjayk7Ci0gICAgfQotCi0gICAgdmFyIHJlc3VsdCA9IFtdOwotICAgIHZhciBj
YWxsYmFja3NMZWZ0ID0gMTsKLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge0FycmF5LjxGaWxlRW50
cnk+fSBlbnRyaWVzCi0gICAgICovCi0gICAgZnVuY3Rpb24gaW5uZXJDYWxsYmFjayhlbnRyaWVz
KQotICAgIHsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbnRyaWVzLmxlbmd0aDsgKytp
KSB7Ci0gICAgICAgICAgICB2YXIgZW50cnkgPSBlbnRyaWVzW2ldOwotICAgICAgICAgICAgaWYg
KCFlbnRyeS5pc0RpcmVjdG9yeSkKLSAgICAgICAgICAgICAgICByZXN1bHQucHVzaChlbnRyeS5m
dWxsUGF0aCk7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBjYWxsYmFja3NM
ZWZ0Kys7Ci0gICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1VdGlscy5fcmVx
dWVzdEVudHJpZXMoZmlsZVN5c3RlbSwgZW50cnkuZnVsbFBhdGgsIGlubmVyQ2FsbGJhY2spOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGlmICghLS1jYWxsYmFja3NMZWZ0KQot
ICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0KTsKLSAgICB9Ci19Ci0KLS8qKgotICogQHBhcmFt
IHtXZWJJbnNwZWN0b3IuSXNvbGF0ZWRGaWxlU3lzdGVtTW9kZWx9IGlzb2xhdGVkRmlsZVN5c3Rl
bU1vZGVsCi0gKiBAcGFyYW0ge3N0cmluZ30gZmlsZVN5c3RlbVBhdGgKLSAqIEBwYXJhbSB7c3Ry
aW5nfSBwYXRoCi0gKiBAcGFyYW0ge2Z1bmN0aW9uKHN0cmluZyl9IGNhbGxiYWNrCi0gKi8KLVdl
Ykluc3BlY3Rvci5GaWxlU3lzdGVtVXRpbHMucmVxdWVzdEZpbGVDb250ZW50ID0gZnVuY3Rpb24o
aXNvbGF0ZWRGaWxlU3lzdGVtTW9kZWwsIGZpbGVTeXN0ZW1QYXRoLCBwYXRoLCBjYWxsYmFjaykK
LXsKLSAgICBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVV0aWxzLnJlcXVlc3RGaWxlU3lzdGVtKGlz
b2xhdGVkRmlsZVN5c3RlbU1vZGVsLCBmaWxlU3lzdGVtUGF0aCwgZmlsZVN5c3RlbUxvYWRlZCk7
Ci0KLSAgICB2YXIgZmlsZVN5c3RlbTsKLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge0RPTUZpbGVT
eXN0ZW19IGZzCi0gICAgICovCi0gICAgZnVuY3Rpb24gZmlsZVN5c3RlbUxvYWRlZChmcykKLSAg
ICB7Ci0gICAgICAgIGZzLnJvb3QuZ2V0RmlsZShwYXRoLCBudWxsLCBmaWxlRW50cnlMb2FkZWQs
IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVXRpbHMuZXJyb3JIYW5kbGVyKTsKLSAgICB9Ci0KLSAg
ICAvKioKLSAgICAgKiBAcGFyYW0ge0ZpbGVFbnRyeX0gZW50cnkKLSAgICAgKi8KLSAgICBmdW5j
dGlvbiBmaWxlRW50cnlMb2FkZWQoZW50cnkpCi0gICAgewotICAgICAgICBlbnRyeS5maWxlKGZp
bGVMb2FkZWQsIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVXRpbHMuZXJyb3JIYW5kbGVyKTsKLSAg
ICB9Ci0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0geyFCbG9ifSBmaWxlCi0gICAgICovCi0gICAg
ZnVuY3Rpb24gZmlsZUxvYWRlZChmaWxlKQotICAgIHsKLSAgICAgICAgdmFyIHJlYWRlciA9IG5l
dyBGaWxlUmVhZGVyKCk7Ci0gICAgICAgIHJlYWRlci5vbmxvYWRlbmQgPSByZWFkZXJMb2FkRW5k
OwotICAgICAgICByZWFkZXIucmVhZEFzVGV4dChmaWxlKTsKLSAgICB9Ci0KLSAgICAvKioKLSAg
ICAgKiBAdGhpcyB7RmlsZVJlYWRlcn0KLSAgICAgKi8KLSAgICBmdW5jdGlvbiByZWFkZXJMb2Fk
RW5kKCkKLSAgICB7Ci0gICAgICAgIGNhbGxiYWNrKC8qKiBAdHlwZSB7c3RyaW5nfSAqLyAodGhp
cy5yZXN1bHQpKTsKLSAgICB9Ci19Ci0KLS8qKgotICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuSXNv
bGF0ZWRGaWxlU3lzdGVtTW9kZWx9IGlzb2xhdGVkRmlsZVN5c3RlbU1vZGVsCi0gKiBAcGFyYW0g
e3N0cmluZ30gZmlsZVN5c3RlbVBhdGgKLSAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoCi0gKiBAcGFy
YW0ge3N0cmluZ30gY29udGVudAotICogQHBhcmFtIHtmdW5jdGlvbigpfSBjYWxsYmFjawotICov
Ci1XZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVV0aWxzLnNldEZpbGVDb250ZW50ID0gZnVuY3Rpb24o
aXNvbGF0ZWRGaWxlU3lzdGVtTW9kZWwsIGZpbGVTeXN0ZW1QYXRoLCBwYXRoLCBjb250ZW50LCBj
YWxsYmFjaykKLXsKLSAgICBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVV0aWxzLnJlcXVlc3RGaWxl
U3lzdGVtKGlzb2xhdGVkRmlsZVN5c3RlbU1vZGVsLCBmaWxlU3lzdGVtUGF0aCwgZmlsZVN5c3Rl
bUxvYWRlZCk7Ci0KLSAgICB2YXIgZmlsZVN5c3RlbTsKLSAgICAvKioKLSAgICAgKiBAcGFyYW0g
e0RPTUZpbGVTeXN0ZW19IGZzCi0gICAgICovCi0gICAgZnVuY3Rpb24gZmlsZVN5c3RlbUxvYWRl
ZChmcykKLSAgICB7Ci0gICAgICAgIGZzLnJvb3QuZ2V0RmlsZShwYXRoLCBudWxsLCBmaWxlRW50
cnlMb2FkZWQsIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVXRpbHMuZXJyb3JIYW5kbGVyKTsKLSAg
ICB9Ci0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge0ZpbGVFbnRyeX0gZW50cnkKLSAgICAgKi8K
LSAgICBmdW5jdGlvbiBmaWxlRW50cnlMb2FkZWQoZW50cnkpCi0gICAgewotICAgICAgICBlbnRy
eS5jcmVhdGVXcml0ZXIoZmlsZVdyaXRlckNyZWF0ZWQsIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVt
VXRpbHMuZXJyb3JIYW5kbGVyKTsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge0Zp
bGVXcml0ZXJ9IGZpbGVXcml0ZXIKLSAgICAgKi8KLSAgICBmdW5jdGlvbiBmaWxlV3JpdGVyQ3Jl
YXRlZChmaWxlV3JpdGVyKQotICAgIHsKLSAgICAgICAgZmlsZVdyaXRlci5vbmVycm9yID0gV2Vi
SW5zcGVjdG9yLkZpbGVTeXN0ZW1VdGlscy5lcnJvckhhbmRsZXI7Ci0gICAgICAgIGZpbGVXcml0
ZXIub253cml0ZWVuZCA9IGZpbGVUcnVuY2F0ZWQ7Ci0gICAgICAgIGZpbGVXcml0ZXIudHJ1bmNh
dGUoMCk7Ci0KLSAgICAgICAgZnVuY3Rpb24gZmlsZVRydW5jYXRlZCgpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGZpbGVXcml0ZXIub253cml0ZWVuZCA9IHdyaXRlckVuZDsKLSAgICAgICAgICAg
IHZhciBibG9iID0gbmV3IEJsb2IoW2NvbnRlbnRdLCB7IHR5cGU6ICJ0ZXh0L3BsYWluIiB9KTsK
LSAgICAgICAgICAgIGZpbGVXcml0ZXIud3JpdGUoYmxvYik7Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICBmdW5jdGlvbiB3cml0ZXJFbmQoKQotICAgIHsKLSAgICAgICAgY2FsbGJhY2soKTsKLSAg
ICB9Ci19Ci0KLS8qKgotICogQHBhcmFtIHtEaXJlY3RvcnlFbnRyeX0gcm9vdAotICogQHBhcmFt
IHtBcnJheS48c3RyaW5nPn0gZm9sZGVycwotICogQHBhcmFtIHtPYmplY3R9IGZsYWdzCi0gKiBA
cGFyYW0ge2Z1bmN0aW9uKERpcmVjdG9yeUVudHJ5KX0gY2FsbGJhY2sKLSAqLwotV2ViSW5zcGVj
dG9yLkZpbGVTeXN0ZW1VdGlscy5fZ2V0RGlyZWN0b3J5ID0gZnVuY3Rpb24ocm9vdCwgZm9sZGVy
cywgZmxhZ3MsIGNhbGxiYWNrKQotewotICAgIHdoaWxlIChmb2xkZXJzWzBdID09ICIuIiB8fCBm
b2xkZXJzWzBdID09ICIiKQotICAgICAgICBmb2xkZXJzID0gZm9sZGVycy5zbGljZSgxKTsKLSAg
ICBpZiAoIWZvbGRlcnMubGVuZ3RoKQotICAgICAgICBjYWxsYmFjayhyb290KTsKLSAgICBlbHNl
Ci0gICAgICAgIHJvb3QuZ2V0RGlyZWN0b3J5KGZvbGRlcnNbMF0sIGZsYWdzLCBpbm5lckNhbGxi
YWNrLCBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVV0aWxzLmVycm9ySGFuZGxlcik7Ci0KLSAgICAv
KioKLSAgICAgKiBAcGFyYW0ge0RpcmVjdG9yeUVudHJ5fSBkaXJFbnRyeQotICAgICAqLwotICAg
IGZ1bmN0aW9uIGlubmVyQ2FsbGJhY2soZGlyRW50cnkpCi0gICAgewotICAgICAgICBXZWJJbnNw
ZWN0b3IuRmlsZVN5c3RlbVV0aWxzLl9nZXREaXJlY3RvcnkoZGlyRW50cnksIGZvbGRlcnMuc2xp
Y2UoMSksIGZsYWdzLCBjYWxsYmFjayk7Ci0gICAgfQotfQotCi0vKioKLSAqIEBwYXJhbSB7RGly
ZWN0b3J5RW50cnl9IGRpckVudHJ5Ci0gKiBAcGFyYW0ge2Z1bmN0aW9uKEFycmF5LjxGaWxlRW50
cnk+KX0gY2FsbGJhY2sKLSAqLwotV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1VdGlscy5fcmVhZERp
cmVjdG9yeSA9IGZ1bmN0aW9uKGRpckVudHJ5LCBjYWxsYmFjaykKLXsKLSAgICB2YXIgZGlyUmVh
ZGVyID0gZGlyRW50cnkuY3JlYXRlUmVhZGVyKCk7Ci0gICAgdmFyIGVudHJpZXMgPSBbXTsKLQot
ICAgIGZ1bmN0aW9uIGlubmVyQ2FsbGJhY2socmVzdWx0cykKLSAgICB7Ci0gICAgICAgIGlmICgh
cmVzdWx0cy5sZW5ndGgpCi0gICAgICAgICAgICBjYWxsYmFjayhlbnRyaWVzLnNvcnQoKSk7Ci0g
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgZW50cmllcyA9IGVudHJpZXMuY29uY2F0KHRvQXJy
YXkocmVzdWx0cykpOwotICAgICAgICAgICAgZGlyUmVhZGVyLnJlYWRFbnRyaWVzKGlubmVyQ2Fs
bGJhY2ssIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVXRpbHMuZXJyb3JIYW5kbGVyKTsKLSAgICAg
ICAgfQotICAgIH0KLQotICAgIGZ1bmN0aW9uIHRvQXJyYXkobGlzdCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChsaXN0IHx8IFtdLCAwKTsKLSAgICB9
ICAgIAotCi0gICAgZGlyUmVhZGVyLnJlYWRFbnRyaWVzKGlubmVyQ2FsbGJhY2ssIFdlYkluc3Bl
Y3Rvci5GaWxlU3lzdGVtVXRpbHMuZXJyb3JIYW5kbGVyKTsKLX0KLQotLyoqCi0gKiBAcGFyYW0g
e0RPTUZpbGVTeXN0ZW19IGZpbGVTeXN0ZW0KLSAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoCi0gKiBA
cGFyYW0ge2Z1bmN0aW9uKEFycmF5LjxGaWxlRW50cnk+KX0gY2FsbGJhY2sKLSAqLwotV2ViSW5z
cGVjdG9yLkZpbGVTeXN0ZW1VdGlscy5fcmVxdWVzdEVudHJpZXMgPSBmdW5jdGlvbihmaWxlU3lz
dGVtLCBwYXRoLCBjYWxsYmFjaykKLXsKLSAgICB2YXIgZm9sZGVycyA9IHBhdGguc3BsaXQoIi8i
KTsKLSAgICBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVV0aWxzLl9nZXREaXJlY3RvcnkoZmlsZVN5
c3RlbS5yb290LCBmb2xkZXJzLCBudWxsLCBpbm5lckNhbGxiYWNrKTsKLQotICAgIGZ1bmN0aW9u
IGlubmVyQ2FsbGJhY2soZGlyRW50cnkpCi0gICAgewotICAgICAgICBXZWJJbnNwZWN0b3IuRmls
ZVN5c3RlbVV0aWxzLl9yZWFkRGlyZWN0b3J5KGRpckVudHJ5LCBjYWxsYmFjaykKLSAgICB9Ci19
Ci0KLVdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVXRpbHMucHJvdG90eXBlID0gewotfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Jc29sYXRlZEZpbGVTeXN0
ZW1Nb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSXNvbGF0ZWRG
aWxlU3lzdGVtTW9kZWwuanMKaW5kZXggOTc3ODQ2M2ZlNzY3OWNmMTU3ZmRkM2E5M2UzYTA4M2My
NGI2NzllMy4uOTk1ZGRmMjdhZWQyYTE2N2RjMzlkZDhhNjA1ODI2OTg5Yjc2ZTc2NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Jc29sYXRlZEZpbGVTeXN0
ZW1Nb2RlbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0lzb2xh
dGVkRmlsZVN5c3RlbU1vZGVsLmpzCkBAIC0xMDksNyArMTA5LDcgQEAgV2ViSW5zcGVjdG9yLklz
b2xhdGVkRmlsZVN5c3RlbU1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fZmlsZVN5
c3RlbXNbZmlsZVN5c3RlbVBhdGhdID0gZmlsZVN5c3RlbTsKICAgICAgICAgdmFyIGZpbGVTeXN0
ZW1JZCA9IHRoaXMuX2ZpbGVTeXN0ZW1NYXBwaW5nLmFkZEZpbGVTeXN0ZW1NYXBwaW5nKGZpbGVT
eXN0ZW1QYXRoKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX3dvcmtzcGFjZS5wcm9q
ZWN0KGZpbGVTeXN0ZW1JZCkpOwotICAgICAgICB0aGlzLl93b3Jrc3BhY2UuYWRkUHJvamVjdChm
aWxlU3lzdGVtSWQsIG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVdvcmtzcGFjZVByb3ZpZGVy
KHRoaXMsIGZpbGVTeXN0ZW1QYXRoKSk7CisgICAgICAgIHRoaXMuX3dvcmtzcGFjZS5hZGRQcm9q
ZWN0KG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVByb2plY3REZWxlZ2F0ZSh0aGlzLCBmaWxl
U3lzdGVtSWQsIGZpbGVTeXN0ZW1QYXRoKSk7CiAgICAgfSwKIAogICAgIC8qKgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TaW1wbGVXb3Jrc3BhY2VQcm92
aWRlci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2ltcGxlV29ya3Nw
YWNlUHJvdmlkZXIuanMKaW5kZXggZTQ5OGFiNzA0NzFjODUwMjQ5YmJmOGVlMDllZWRkYjBhNzdh
YmUyYi4uYWM1ODFjODE0M2Q2MDllYTU2MjdlNzRmZmU0ZWJmMzE3NGM5YmEyYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TaW1wbGVXb3Jrc3BhY2VQcm92
aWRlci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NpbXBsZVdv
cmtzcGFjZVByb3ZpZGVyLmpzCkBAIC0zMCwzNCArMzAsMjYgQEAKIAogLyoqCiAgKiBAY29uc3Ry
dWN0b3IKLSAqIEBpbXBsZW1lbnRzIHtXZWJJbnNwZWN0b3IuV29ya3NwYWNlUHJvdmlkZXJ9Cisg
KiBAaW1wbGVtZW50cyB7V2ViSW5zcGVjdG9yLlByb2plY3REZWxlZ2F0ZX0KICAqIEBleHRlbmRz
IHtXZWJJbnNwZWN0b3IuT2JqZWN0fQotICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuV29ya3NwYWNl
fSB3b3Jrc3BhY2UKLSAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlCiAgKi8KLVdlYkluc3BlY3Rvci5T
aW1wbGVXb3Jrc3BhY2VQcm92aWRlciA9IGZ1bmN0aW9uKHdvcmtzcGFjZSwgdHlwZSkKK1dlYklu
c3BlY3Rvci5TaW1wbGVQcm9qZWN0RGVsZWdhdGUgPSBmdW5jdGlvbih0eXBlKQogewotICAgIHRo
aXMuX3dvcmtzcGFjZSA9IHdvcmtzcGFjZTsKICAgICB0aGlzLl90eXBlID0gdHlwZTsKICAgICAv
KiogQHR5cGUge09iamVjdC48c3RyaW5nLCBXZWJJbnNwZWN0b3IuQ29udGVudFByb3ZpZGVyPn0g
Ki8KICAgICB0aGlzLl9jb250ZW50UHJvdmlkZXJzID0ge307CiAgICAgdGhpcy5fbGFzdFVuaXF1
ZVN1ZmZpeCA9IDA7Ci0gICAgdGhpcy5fd29ya3NwYWNlLmFkZFByb2plY3QodGhpcy5fdHlwZSwg
dGhpcyk7CiB9CiAKLS8qKgotICogQHBhcmFtIHtzdHJpbmd9IHVybAotICogQHBhcmFtIHtzdHJp
bmd9IHR5cGUKLSAqIEByZXR1cm4ge3N0cmluZ30KLSAqLwotV2ViSW5zcGVjdG9yLlNpbXBsZVdv
cmtzcGFjZVByb3ZpZGVyLnVyaUZvclVSTCA9IGZ1bmN0aW9uKHVybCwgdHlwZSkKLXsKLSAgICB2
YXIgdXJpVHlwZVByZWZpeCA9IHR5cGUgIT09IFdlYkluc3BlY3Rvci5wcm9qZWN0VHlwZXMuTmV0
d29yayA/ICh0eXBlICsgIjoiKSA6ICIiOwotICAgIHZhciB1cmkgPSB1cmlUeXBlUHJlZml4ICsg
dXJsOwotICAgIHJldHVybiB1cmk7Ci19LAorV2ViSW5zcGVjdG9yLlNpbXBsZVByb2plY3REZWxl
Z2F0ZS5wcm90b3R5cGUgPSB7CisgICAgLyoqCisgICAgICogQHJldHVybiB7c3RyaW5nfQorICAg
ICAqLworICAgIGlkOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fdHlw
ZTsKKyAgICB9LAogCi1XZWJJbnNwZWN0b3IuU2ltcGxlV29ya3NwYWNlUHJvdmlkZXIucHJvdG90
eXBlID0gewogICAgIC8qKgogICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAgKi8KQEAgLTY3
LDIxICs1OSwyOSBAQCBXZWJJbnNwZWN0b3IuU2ltcGxlV29ya3NwYWNlUHJvdmlkZXIucHJvdG90
eXBlID0gewogICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXJpCisg
ICAgICogQHJldHVybiB7c3RyaW5nfQorICAgICAqLworICAgIGRpc3BsYXlOYW1lOiBmdW5jdGlv
bigpCisgICAgeworICAgICAgICByZXR1cm4gIiI7CisgICAgfSwKKworICAgIC8qKgorICAgICAq
IEBwYXJhbSB7c3RyaW5nfSBwYXRoCiAgICAgICogQHBhcmFtIHtmdW5jdGlvbig/c3RyaW5nLGJv
b2xlYW4sc3RyaW5nKX0gY2FsbGJhY2sKICAgICAgKi8KLSAgICByZXF1ZXN0RmlsZUNvbnRlbnQ6
IGZ1bmN0aW9uKHVyaSwgY2FsbGJhY2spCisgICAgcmVxdWVzdEZpbGVDb250ZW50OiBmdW5jdGlv
bihwYXRoLCBjYWxsYmFjaykKICAgICB7Ci0gICAgICAgIHZhciBjb250ZW50UHJvdmlkZXIgPSB0
aGlzLl9jb250ZW50UHJvdmlkZXJzW3VyaV07CisgICAgICAgIHZhciBjb250ZW50UHJvdmlkZXIg
PSB0aGlzLl9jb250ZW50UHJvdmlkZXJzW3BhdGhdOwogICAgICAgICBjb250ZW50UHJvdmlkZXIu
cmVxdWVzdENvbnRlbnQoY2FsbGJhY2spOwogICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBAcGFy
YW0ge3N0cmluZ30gdXJpCisgICAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGgKICAgICAgKiBAcGFy
YW0ge3N0cmluZ30gbmV3Q29udGVudAogICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oP3N0cmluZyl9
IGNhbGxiYWNrCiAgICAgICovCi0gICAgc2V0RmlsZUNvbnRlbnQ6IGZ1bmN0aW9uKHVyaSwgbmV3
Q29udGVudCwgY2FsbGJhY2spCisgICAgc2V0RmlsZUNvbnRlbnQ6IGZ1bmN0aW9uKHBhdGgsIG5l
d0NvbnRlbnQsIGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgY2FsbGJhY2sobnVsbCk7CiAgICAg
fSwKQEAgLTkyLDMyICs5Miw5NSBAQCBXZWJJbnNwZWN0b3IuU2ltcGxlV29ya3NwYWNlUHJvdmlk
ZXIucHJvdG90eXBlID0gewogICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNSZWdleAogICAgICAq
IEBwYXJhbSB7ZnVuY3Rpb24oQXJyYXkuPFdlYkluc3BlY3Rvci5Db250ZW50UHJvdmlkZXIuU2Vh
cmNoTWF0Y2g+KX0gY2FsbGJhY2sKICAgICAgKi8KLSAgICBzZWFyY2hJbkZpbGVDb250ZW50OiBm
dW5jdGlvbih1cmksIHF1ZXJ5LCBjYXNlU2Vuc2l0aXZlLCBpc1JlZ2V4LCBjYWxsYmFjaykKKyAg
ICBzZWFyY2hJbkZpbGVDb250ZW50OiBmdW5jdGlvbihwYXRoLCBxdWVyeSwgY2FzZVNlbnNpdGl2
ZSwgaXNSZWdleCwgY2FsbGJhY2spCiAgICAgewotICAgICAgICB2YXIgY29udGVudFByb3ZpZGVy
ID0gdGhpcy5fY29udGVudFByb3ZpZGVyc1t1cmldOworICAgICAgICB2YXIgY29udGVudFByb3Zp
ZGVyID0gdGhpcy5fY29udGVudFByb3ZpZGVyc1twYXRoXTsKICAgICAgICAgY29udGVudFByb3Zp
ZGVyLnNlYXJjaEluQ29udGVudChxdWVyeSwgY2FzZVNlbnNpdGl2ZSwgaXNSZWdleCwgY2FsbGJh
Y2spOwogICAgIH0sCiAKLSAgIC8qKgorICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBw
YXRoCiAgICAgICogQHBhcmFtIHtzdHJpbmd9IHVybAogICAgICAqIEBwYXJhbSB7V2ViSW5zcGVj
dG9yLkNvbnRlbnRQcm92aWRlcn0gY29udGVudFByb3ZpZGVyCiAgICAgICogQHBhcmFtIHtib29s
ZWFufSBpc0VkaXRhYmxlCiAgICAgICogQHBhcmFtIHtib29sZWFuPX0gaXNDb250ZW50U2NyaXB0
CiAgICAgICovCi0gICAgYWRkRmlsZUZvclVSTDogZnVuY3Rpb24odXJsLCBjb250ZW50UHJvdmlk
ZXIsIGlzRWRpdGFibGUsIGlzQ29udGVudFNjcmlwdCkKKyAgICBhZGRGaWxlOiBmdW5jdGlvbihw
YXRoLCBmb3JjZVVuaXF1ZVBhdGgsIHVybCwgY29udGVudFByb3ZpZGVyLCBpc0VkaXRhYmxlLCBp
c0NvbnRlbnRTY3JpcHQpCiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5faW5uZXJBZGRGaWxl
Rm9yVVJMKHVybCwgY29udGVudFByb3ZpZGVyLCBpc0VkaXRhYmxlLCBmYWxzZSwgaXNDb250ZW50
U2NyaXB0KTsKKyAgICAgICAgaWYgKGZvcmNlVW5pcXVlUGF0aCkKKyAgICAgICAgICAgIHBhdGgg
PSB0aGlzLl91bmlxdWVQYXRoKHBhdGgpOyAKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMu
X2NvbnRlbnRQcm92aWRlcnNbcGF0aF0pOworICAgICAgICB2YXIgZmlsZURlc2NyaXB0b3IgPSBu
ZXcgV2ViSW5zcGVjdG9yLkZpbGVEZXNjcmlwdG9yKHBhdGgsIHVybCwgdXJsLCBjb250ZW50UHJv
dmlkZXIuY29udGVudFR5cGUoKSwgaXNFZGl0YWJsZSwgaXNDb250ZW50U2NyaXB0KTsKKyAgICAg
ICAgdGhpcy5fY29udGVudFByb3ZpZGVyc1twYXRoXSA9IGNvbnRlbnRQcm92aWRlcjsKKyAgICAg
ICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlByb2plY3REZWxl
Z2F0ZS5FdmVudHMuRmlsZUFkZGVkLCBmaWxlRGVzY3JpcHRvcik7CisgICAgICAgIHJldHVybiBw
YXRoOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gcGF0aAorICAg
ICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAgKi8KKyAgICBfdW5pcXVlUGF0aDogZnVuY3Rpb24o
cGF0aCkKKyAgICB7CisgICAgICAgIHZhciB1bmlxdWVQYXRoID0gcGF0aDsKKyAgICAgICAgd2hp
bGUgKHRoaXMuX2NvbnRlbnRQcm92aWRlcnNbdW5pcXVlUGF0aF0pCisgICAgICAgICAgICB1bmlx
dWVQYXRoID0gcGF0aCArICIgKCIgKyAoKyt0aGlzLl9sYXN0VW5pcXVlU3VmZml4KSArICIpIjsK
KyAgICAgICAgcmV0dXJuIHVuaXF1ZVBhdGg7CiAgICAgfSwKIAogICAgIC8qKgorICAgICAqIEBw
YXJhbSB7c3RyaW5nfSBwYXRoCisgICAgICovCisgICAgcmVtb3ZlRmlsZTogZnVuY3Rpb24ocGF0
aCkKKyAgICB7CisgICAgICAgIGRlbGV0ZSB0aGlzLl9jb250ZW50UHJvdmlkZXJzW3BhdGhdOwor
ICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuUHJvamVj
dERlbGVnYXRlLkV2ZW50cy5GaWxlUmVtb3ZlZCwgcGF0aCk7CisgICAgfSwKKworICAgIHJlc2V0
OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9jb250ZW50UHJvdmlkZXJzID0ge307
CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Qcm9q
ZWN0RGVsZWdhdGUuRXZlbnRzLlJlc2V0LCBudWxsKTsKKyAgICB9LAorICAgIAorICAgIF9fcHJv
dG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGUKK30KKworLyoqCisgKiBAY29uc3Ry
dWN0b3IKKyAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuT2JqZWN0fQorICogQHBhcmFtIHtXZWJJ
bnNwZWN0b3IuV29ya3NwYWNlfSB3b3Jrc3BhY2UKKyAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlCisg
Ki8KK1dlYkluc3BlY3Rvci5TaW1wbGVXb3Jrc3BhY2VQcm92aWRlciA9IGZ1bmN0aW9uKHdvcmtz
cGFjZSwgdHlwZSkKK3sKKyAgICB0aGlzLl93b3Jrc3BhY2UgPSB3b3Jrc3BhY2U7CisgICAgdGhp
cy5fdHlwZSA9IHR5cGU7CisgICAgdGhpcy5fc2ltcGxlUHJvamVjdERlbGVnYXRlID0gbmV3IFdl
Ykluc3BlY3Rvci5TaW1wbGVQcm9qZWN0RGVsZWdhdGUodGhpcy5fdHlwZSk7CisgICAgdGhpcy5f
d29ya3NwYWNlLmFkZFByb2plY3QodGhpcy5fc2ltcGxlUHJvamVjdERlbGVnYXRlKTsKK30KKwor
LyoqCisgKiBAcGFyYW0ge3N0cmluZ30gdXJsCisgKiBAcmV0dXJuIHtzdHJpbmd9CisgKi8KK1dl
Ykluc3BlY3Rvci5TaW1wbGVXb3Jrc3BhY2VQcm92aWRlci51cmlGb3JVUkwgPSBmdW5jdGlvbih1
cmwsIHR5cGUpCit7ICAgCisgICAgdmFyIHVyaVR5cGVQcmVmaXggPSB0eXBlICE9PSBXZWJJbnNw
ZWN0b3IucHJvamVjdFR5cGVzLk5ldHdvcmsgPyAodHlwZSArICI6IikgOiAiIjsKKyAgICB2YXIg
dXJpID0gdXJpVHlwZVByZWZpeCArIHVybDsKKyAgICByZXR1cm4gdXJpOworfQorCitXZWJJbnNw
ZWN0b3IuU2ltcGxlV29ya3NwYWNlUHJvdmlkZXIucHJvdG90eXBlID0geworICAgIC8qKgogICAg
ICAqIEBwYXJhbSB7c3RyaW5nfSB1cmwKICAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5Db250
ZW50UHJvdmlkZXJ9IGNvbnRlbnRQcm92aWRlcgogICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNF
ZGl0YWJsZQogICAgICAqIEBwYXJhbSB7Ym9vbGVhbj19IGlzQ29udGVudFNjcmlwdAogICAgICAq
LwotICAgIGFkZFVuaXF1ZUZpbGVGb3JVUkw6IGZ1bmN0aW9uKHVybCwgY29udGVudFByb3ZpZGVy
LCBpc0VkaXRhYmxlLCBpc0NvbnRlbnRTY3JpcHQpCisgICAgYWRkRmlsZUZvclVSTDogZnVuY3Rp
b24odXJsLCBjb250ZW50UHJvdmlkZXIsIGlzRWRpdGFibGUsIGlzQ29udGVudFNjcmlwdCkKICAg
ICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9pbm5lckFkZEZpbGVGb3JVUkwodXJsLCBjb250ZW50
UHJvdmlkZXIsIGlzRWRpdGFibGUsIHRydWUsIGlzQ29udGVudFNjcmlwdCk7CisgICAgICAgIHJl
dHVybiB0aGlzLl9pbm5lckFkZEZpbGVGb3JVUkwodXJsLCBjb250ZW50UHJvdmlkZXIsIGlzRWRp
dGFibGUsIGZhbHNlLCBpc0NvbnRlbnRTY3JpcHQpOwogICAgIH0sCiAKICAgICAvKioKQEAgLTEy
Niw0MyArMTg5LDM2IEBAIFdlYkluc3BlY3Rvci5TaW1wbGVXb3Jrc3BhY2VQcm92aWRlci5wcm90
b3R5cGUgPSB7CiAgICAgICogQHBhcmFtIHtib29sZWFufSBpc0VkaXRhYmxlCiAgICAgICogQHBh
cmFtIHtib29sZWFuPX0gaXNDb250ZW50U2NyaXB0CiAgICAgICovCi0gICAgX2lubmVyQWRkRmls
ZUZvclVSTDogZnVuY3Rpb24odXJsLCBjb250ZW50UHJvdmlkZXIsIGlzRWRpdGFibGUsIGZvcmNl
VW5pcXVlLCBpc0NvbnRlbnRTY3JpcHQpCisgICAgYWRkVW5pcXVlRmlsZUZvclVSTDogZnVuY3Rp
b24odXJsLCBjb250ZW50UHJvdmlkZXIsIGlzRWRpdGFibGUsIGlzQ29udGVudFNjcmlwdCkKICAg
ICB7Ci0gICAgICAgIHZhciB1cmkgPSBXZWJJbnNwZWN0b3IuU2ltcGxlV29ya3NwYWNlUHJvdmlk
ZXIudXJpRm9yVVJMKHVybCwgdGhpcy5fdHlwZSk7Ci0gICAgICAgIGlmIChmb3JjZVVuaXF1ZSkK
LSAgICAgICAgICAgIHVyaSA9IHRoaXMuX3VuaXF1ZVVSSSh1cmkpOwotICAgICAgICBjb25zb2xl
LmFzc2VydCghdGhpcy5fY29udGVudFByb3ZpZGVyc1t1cmldKTsKLSAgICAgICAgdmFyIGZpbGVE
ZXNjcmlwdG9yID0gbmV3IFdlYkluc3BlY3Rvci5GaWxlRGVzY3JpcHRvcih1cmksIHVybCwgdXJs
LCBjb250ZW50UHJvdmlkZXIuY29udGVudFR5cGUoKSwgaXNFZGl0YWJsZSwgaXNDb250ZW50U2Ny
aXB0KTsKLSAgICAgICAgdGhpcy5fY29udGVudFByb3ZpZGVyc1t1cmldID0gY29udGVudFByb3Zp
ZGVyOwotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3Iu
V29ya3NwYWNlUHJvdmlkZXIuRXZlbnRzLkZpbGVBZGRlZCwgZmlsZURlc2NyaXB0b3IpOwotICAg
ICAgICByZXR1cm4gdGhpcy5fd29ya3NwYWNlLnVpU291cmNlQ29kZUZvclVSSSh1cmkpOworICAg
ICAgICByZXR1cm4gdGhpcy5faW5uZXJBZGRGaWxlRm9yVVJMKHVybCwgY29udGVudFByb3ZpZGVy
LCBpc0VkaXRhYmxlLCB0cnVlLCBpc0NvbnRlbnRTY3JpcHQpOwogICAgIH0sCiAKICAgICAvKioK
LSAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXJpCisgICAgICogQHBhcmFtIHtzdHJpbmd9IHVybAor
ICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkNvbnRlbnRQcm92aWRlcn0gY29udGVudFByb3Zp
ZGVyCisgICAgICogQHBhcmFtIHtib29sZWFufSBpc0VkaXRhYmxlCisgICAgICogQHBhcmFtIHti
b29sZWFuPX0gaXNDb250ZW50U2NyaXB0CiAgICAgICovCi0gICAgcmVtb3ZlRmlsZTogZnVuY3Rp
b24odXJpKQorICAgIF9pbm5lckFkZEZpbGVGb3JVUkw6IGZ1bmN0aW9uKHVybCwgY29udGVudFBy
b3ZpZGVyLCBpc0VkaXRhYmxlLCBmb3JjZVVuaXF1ZSwgaXNDb250ZW50U2NyaXB0KQogICAgIHsK
LSAgICAgICAgZGVsZXRlIHRoaXMuX2NvbnRlbnRQcm92aWRlcnNbdXJpXTsKLSAgICAgICAgdGhp
cy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLldvcmtzcGFjZVByb3ZpZGVy
LkV2ZW50cy5GaWxlUmVtb3ZlZCwgdXJpKTsKKyAgICAgICAgdmFyIHBhdGggPSBXZWJJbnNwZWN0
b3IuU2ltcGxlV29ya3NwYWNlUHJvdmlkZXIudXJpRm9yVVJMKHVybCwgdGhpcy5fdHlwZSk7Cisg
ICAgICAgIHBhdGggPSB0aGlzLl9zaW1wbGVQcm9qZWN0RGVsZWdhdGUuYWRkRmlsZShwYXRoLCBm
b3JjZVVuaXF1ZSwgdXJsLCBjb250ZW50UHJvdmlkZXIsIGlzRWRpdGFibGUsIGlzQ29udGVudFNj
cmlwdCk7CisgICAgICAgIHJldHVybiB0aGlzLl93b3Jrc3BhY2UudWlTb3VyY2VDb2RlKHRoaXMu
X3NpbXBsZVByb2plY3REZWxlZ2F0ZS5pZCgpLCBwYXRoKTsKICAgICB9LAogCiAgICAgLyoqCi0g
ICAgICogQHBhcmFtIHtzdHJpbmd9IHVyaQotICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAg
KiBAcGFyYW0ge3N0cmluZ30gdXJsCiAgICAgICovCi0gICAgX3VuaXF1ZVVSSTogZnVuY3Rpb24o
dXJpKQorICAgIHJlbW92ZUZpbGU6IGZ1bmN0aW9uKHVybCkKICAgICB7Ci0gICAgICAgIHZhciB1
bmlxdWVVUkkgPSB1cmk7Ci0gICAgICAgIHdoaWxlICh0aGlzLl9jb250ZW50UHJvdmlkZXJzW3Vu
aXF1ZVVSSV0pCi0gICAgICAgICAgICB1bmlxdWVVUkkgPSB1cmkgKyAiICgiICsgKCsrdGhpcy5f
bGFzdFVuaXF1ZVN1ZmZpeCkgKyAiKSI7Ci0gICAgICAgIHJldHVybiB1bmlxdWVVUkk7CisgICAg
ICAgIHZhciBwYXRoID0gV2ViSW5zcGVjdG9yLlNpbXBsZVdvcmtzcGFjZVByb3ZpZGVyLnVyaUZv
clVSTCh1cmwsIHRoaXMuX3R5cGUpOworICAgICAgICB0aGlzLl9zaW1wbGVQcm9qZWN0RGVsZWdh
dGUucmVtb3ZlRmlsZShwYXRoKTsKICAgICB9LAogCiAgICAgcmVzZXQ6IGZ1bmN0aW9uKCkKICAg
ICB7Ci0gICAgICAgIHRoaXMuX2NvbnRlbnRQcm92aWRlcnMgPSB7fTsKLSAgICAgICAgdGhpcy5k
aXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLldvcmtzcGFjZVByb3ZpZGVyLkV2
ZW50cy5SZXNldCwgbnVsbCk7CisgICAgICAgIHRoaXMuX3NpbXBsZVByb2plY3REZWxlZ2F0ZS5y
ZXNldCgpOwogICAgIH0sCiAgICAgCiAgICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0
LnByb3RvdHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9VSVNvdXJjZUNvZGUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1VJ
U291cmNlQ29kZS5qcwppbmRleCA0YWI5OTc1NmNhNDRjNWRlMWYyYzE1ZjRjMGQ4NjM2MmE5Njhm
N2RiLi4xNDc1OTYxYTVhMTY5YTA4MDQzOGEyZTZmNGQ3ODhiYTUzMzFmNGQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1VJU291cmNlQ29kZS5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1VJU291cmNlQ29kZS5qcwpAQCAt
MzQsMTUgKzM0LDE1IEBACiAgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLk9iamVjdH0KICAqIEBp
bXBsZW1lbnRzIHtXZWJJbnNwZWN0b3IuQ29udGVudFByb3ZpZGVyfQogICogQHBhcmFtIHtXZWJJ
bnNwZWN0b3IuUHJvamVjdH0gcHJvamVjdAotICogQHBhcmFtIHtzdHJpbmd9IHVyaQorICogQHBh
cmFtIHtzdHJpbmd9IHBhdGgKICAqIEBwYXJhbSB7c3RyaW5nfSB1cmwKICAqIEBwYXJhbSB7V2Vi
SW5zcGVjdG9yLlJlc291cmNlVHlwZX0gY29udGVudFR5cGUKICAqIEBwYXJhbSB7Ym9vbGVhbn0g
aXNFZGl0YWJsZQogICovCi1XZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlID0gZnVuY3Rpb24ocHJv
amVjdCwgdXJpLCBvcmlnaW5VUkwsIHVybCwgY29udGVudFR5cGUsIGlzRWRpdGFibGUpCitXZWJJ
bnNwZWN0b3IuVUlTb3VyY2VDb2RlID0gZnVuY3Rpb24ocHJvamVjdCwgcGF0aCwgb3JpZ2luVVJM
LCB1cmwsIGNvbnRlbnRUeXBlLCBpc0VkaXRhYmxlKQogewogICAgIHRoaXMuX3Byb2plY3QgPSBw
cm9qZWN0OwotICAgIHRoaXMuX3VyaSA9IHVyaTsKKyAgICB0aGlzLl9wYXRoID0gcGF0aDsKICAg
ICB0aGlzLl9vcmlnaW5VUkwgPSBvcmlnaW5VUkw7CiAgICAgdGhpcy5fdXJsID0gdXJsOwogICAg
IHRoaXMuX3BhcnNlZFVSTCA9IG5ldyBXZWJJbnNwZWN0b3IuUGFyc2VkVVJMKG9yaWdpblVSTCk7
CkBAIC05Myw5ICs5MywxNyBAQCBXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlLnByb3RvdHlwZSA9
IHsKICAgICAvKioKICAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgICovCisgICAgcGF0aDog
ZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3BhdGg7CisgICAgfSwKKwor
ICAgIC8qKgorICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAgKi8KICAgICB1cmk6IGZ1bmN0
aW9uKCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl91cmk7CisgICAgICAgIHJldHVybiB0
aGlzLl9wYXRoOyAKICAgICB9LAogCiAgICAgLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKaW5kZXggY2E4MmFmYWQwZDQwOWIyYjNkZGFkODQzZjNj
YTdiM2I4MDliN2Q0Yy4uMDEzMmUyOWQyNGE5NjkxZDI2ZGY2OTI1ZGNkODBlN2ZhMGQ0YmZjMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJj
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwpAQCAt
NzgsNyArNzgsNyBAQAogICAgIDxmaWxlPkZpbGVTeXN0ZW1NYXBwaW5nLmpzPC9maWxlPgogICAg
IDxmaWxlPkZpbGVTeXN0ZW1Nb2RlbC5qczwvZmlsZT4KICAgICA8ZmlsZT5GaWxlU3lzdGVtVmll
dy5qczwvZmlsZT4KLSAgICA8ZmlsZT5GaWxlU3lzdGVtV29ya3NwYWNlUHJvdmlkZXIuanM8L2Zp
bGU+CisgICAgPGZpbGU+RmlsZVN5c3RlbVByb2plY3REZWxlZ2F0ZS5qczwvZmlsZT4KICAgICA8
ZmlsZT5GaWxlVXRpbHMuanM8L2ZpbGU+CiAgICAgPGZpbGU+RmlsdGVyZWRJdGVtU2VsZWN0aW9u
RGlhbG9nLmpzPC9maWxlPgogICAgIDxmaWxlPkZvbnRWaWV3LmpzPC9maWxlPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Xb3Jrc3BhY2UuanMgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dvcmtzcGFjZS5qcwppbmRleCAxOWU5ZTA4
ZDY0YzhkZmNjYWU2NjFiN2RjMjY3NDNiM2VhYjc4MzEyLi5kZDViMWYzNDNkN2E5YjI3NWM2YzUw
MmNkZjhkZjlmNmE0NGM3YTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1dvcmtzcGFjZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1dvcmtzcGFjZS5qcwpAQCAtNDksMTYgKzQ5LDE2IEBAIFdlYkluc3BlY3Rvci5Xb3Jr
c3BhY2VDb250cm9sbGVyLnByb3RvdHlwZSA9IHsKIAogLyoqCiAgKiBAY29uc3RydWN0b3IKLSAq
IEBwYXJhbSB7c3RyaW5nfSB1cmkKKyAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoCiAgKiBAcGFyYW0g
e3N0cmluZ30gb3JpZ2luVVJMCiAgKiBAcGFyYW0ge3N0cmluZ30gdXJsCiAgKiBAcGFyYW0ge1dl
Ykluc3BlY3Rvci5SZXNvdXJjZVR5cGV9IGNvbnRlbnRUeXBlCiAgKiBAcGFyYW0ge2Jvb2xlYW59
IGlzRWRpdGFibGUKICAqIEBwYXJhbSB7Ym9vbGVhbj19IGlzQ29udGVudFNjcmlwdAogICovCi1X
ZWJJbnNwZWN0b3IuRmlsZURlc2NyaXB0b3IgPSBmdW5jdGlvbih1cmksIG9yaWdpblVSTCwgdXJs
LCBjb250ZW50VHlwZSwgaXNFZGl0YWJsZSwgaXNDb250ZW50U2NyaXB0KQorV2ViSW5zcGVjdG9y
LkZpbGVEZXNjcmlwdG9yID0gZnVuY3Rpb24ocGF0aCwgb3JpZ2luVVJMLCB1cmwsIGNvbnRlbnRU
eXBlLCBpc0VkaXRhYmxlLCBpc0NvbnRlbnRTY3JpcHQpCiB7Ci0gICAgdGhpcy51cmkgPSB1cmk7
CisgICAgdGhpcy5wYXRoID0gcGF0aDsKICAgICB0aGlzLm9yaWdpblVSTCA9IG9yaWdpblVSTDsK
ICAgICB0aGlzLnVybCA9IHVybDsKICAgICB0aGlzLmNvbnRlbnRUeXBlID0gY29udGVudFR5cGU7
CkBAIC02OSw0MSArNjksNTEgQEAgV2ViSW5zcGVjdG9yLkZpbGVEZXNjcmlwdG9yID0gZnVuY3Rp
b24odXJpLCBvcmlnaW5VUkwsIHVybCwgY29udGVudFR5cGUsIGlzRWRpdGEKIC8qKgogICogQGlu
dGVyZmFjZQogICovCi1XZWJJbnNwZWN0b3IuV29ya3NwYWNlUHJvdmlkZXIgPSBmdW5jdGlvbigp
IHsgfQorV2ViSW5zcGVjdG9yLlByb2plY3REZWxlZ2F0ZSA9IGZ1bmN0aW9uKCkgeyB9CiAKLVdl
Ykluc3BlY3Rvci5Xb3Jrc3BhY2VQcm92aWRlci5FdmVudHMgPSB7CitXZWJJbnNwZWN0b3IuUHJv
amVjdERlbGVnYXRlLkV2ZW50cyA9IHsKICAgICBGaWxlQWRkZWQ6ICJGaWxlQWRkZWQiLAogICAg
IEZpbGVSZW1vdmVkOiAiRmlsZVJlbW92ZWQiLAogICAgIFJlc2V0OiAiUmVzZXQiLAogfQogCi1X
ZWJJbnNwZWN0b3IuV29ya3NwYWNlUHJvdmlkZXIucHJvdG90eXBlID0geworV2ViSW5zcGVjdG9y
LlByb2plY3REZWxlZ2F0ZS5wcm90b3R5cGUgPSB7CisgICAgLyoqCisgICAgICogQHJldHVybiB7
c3RyaW5nfQorICAgICAqLworICAgIGlkOiBmdW5jdGlvbigpIHsgfSwKKwogICAgIC8qKgogICAg
ICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAgKi8KICAgICB0eXBlOiBmdW5jdGlvbigpIHsgfSwK
IAogICAgIC8qKgotICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1cmkKKyAgICAgKiBAcmV0dXJuIHtz
dHJpbmd9CisgICAgICovCisgICAgZGlzcGxheU5hbWU6IGZ1bmN0aW9uKCkgeyB9LCAKKworICAg
IC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoCiAgICAgICogQHBhcmFtIHtmdW5jdGlv
big/c3RyaW5nLGJvb2xlYW4sc3RyaW5nKX0gY2FsbGJhY2sKICAgICAgKi8KLSAgICByZXF1ZXN0
RmlsZUNvbnRlbnQ6IGZ1bmN0aW9uKHVyaSwgY2FsbGJhY2spIHsgfSwKKyAgICByZXF1ZXN0Rmls
ZUNvbnRlbnQ6IGZ1bmN0aW9uKHBhdGgsIGNhbGxiYWNrKSB7IH0sCiAKICAgICAvKioKLSAgICAg
KiBAcGFyYW0ge3N0cmluZ30gdXJpCisgICAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGgKICAgICAg
KiBAcGFyYW0ge3N0cmluZ30gbmV3Q29udGVudAogICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oP3N0
cmluZyl9IGNhbGxiYWNrCiAgICAgICovCi0gICAgc2V0RmlsZUNvbnRlbnQ6IGZ1bmN0aW9uKHVy
aSwgbmV3Q29udGVudCwgY2FsbGJhY2spIHsgfSwKKyAgICBzZXRGaWxlQ29udGVudDogZnVuY3Rp
b24ocGF0aCwgbmV3Q29udGVudCwgY2FsbGJhY2spIHsgfSwKIAogICAgIC8qKgotICAgICAqIEBw
YXJhbSB7c3RyaW5nfSB1cmkKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gcGF0aAogICAgICAqIEBw
YXJhbSB7c3RyaW5nfSBxdWVyeQogICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gY2FzZVNlbnNpdGl2
ZQogICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNSZWdleAogICAgICAqIEBwYXJhbSB7ZnVuY3Rp
b24oQXJyYXkuPFdlYkluc3BlY3Rvci5Db250ZW50UHJvdmlkZXIuU2VhcmNoTWF0Y2g+KX0gY2Fs
bGJhY2sKICAgICAgKi8KLSAgICBzZWFyY2hJbkZpbGVDb250ZW50OiBmdW5jdGlvbih1cmksIHF1
ZXJ5LCBjYXNlU2Vuc2l0aXZlLCBpc1JlZ2V4LCBjYWxsYmFjaykgeyB9LAorICAgIHNlYXJjaElu
RmlsZUNvbnRlbnQ6IGZ1bmN0aW9uKHBhdGgsIHF1ZXJ5LCBjYXNlU2Vuc2l0aXZlLCBpc1JlZ2V4
LCBjYWxsYmFjaykgeyB9LAogCiAgICAgLyoqCiAgICAgICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50
VHlwZQpAQCAtMTI3LDM3ICsxMzcsNDMgQEAgV2ViSW5zcGVjdG9yLndvcmtzcGFjZUNvbnRyb2xs
ZXIgPSBudWxsOwogCiAvKioKICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLldvcmtzcGFjZX0gd29y
a3NwYWNlCi0gKiBAcGFyYW0ge3N0cmluZ30gbmFtZQotICogQHBhcmFtIHtXZWJJbnNwZWN0b3Iu
V29ya3NwYWNlUHJvdmlkZXJ9IHdvcmtzcGFjZVByb3ZpZGVyCisgKiBAcGFyYW0ge1dlYkluc3Bl
Y3Rvci5Qcm9qZWN0RGVsZWdhdGV9IHByb2plY3REZWxlZ2F0ZQogICogQGNvbnN0cnVjdG9yCiAg
Ki8KLVdlYkluc3BlY3Rvci5Qcm9qZWN0ID0gZnVuY3Rpb24od29ya3NwYWNlLCBuYW1lLCB3b3Jr
c3BhY2VQcm92aWRlcikKK1dlYkluc3BlY3Rvci5Qcm9qZWN0ID0gZnVuY3Rpb24od29ya3NwYWNl
LCBwcm9qZWN0RGVsZWdhdGUpCiB7Ci0gICAgdGhpcy5fbmFtZSA9IG5hbWU7CiAgICAgLyoqIEB0
eXBlIHtPYmplY3QuPHN0cmluZywgV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZT59ICovCi0gICAg
dGhpcy5fdWlTb3VyY2VDb2Rlc0ZvclVSSSA9IHt9OworICAgIHRoaXMuX3VpU291cmNlQ29kZXMg
PSB7fTsKICAgICB0aGlzLl93b3Jrc3BhY2UgPSB3b3Jrc3BhY2U7Ci0gICAgdGhpcy5fd29ya3Nw
YWNlUHJvdmlkZXIgPSB3b3Jrc3BhY2VQcm92aWRlcjsKLSAgICB0aGlzLl93b3Jrc3BhY2VQcm92
aWRlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Xb3Jrc3BhY2VQcm92aWRlci5FdmVu
dHMuRmlsZUFkZGVkLCB0aGlzLl9maWxlQWRkZWQsIHRoaXMpOwotICAgIHRoaXMuX3dvcmtzcGFj
ZVByb3ZpZGVyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLldvcmtzcGFjZVByb3ZpZGVy
LkV2ZW50cy5GaWxlUmVtb3ZlZCwgdGhpcy5fZmlsZVJlbW92ZWQsIHRoaXMpOwotICAgIHRoaXMu
X3dvcmtzcGFjZVByb3ZpZGVyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLldvcmtzcGFj
ZVByb3ZpZGVyLkV2ZW50cy5SZXNldCwgdGhpcy5fcmVzZXQsIHRoaXMpOworICAgIHRoaXMuX3By
b2plY3REZWxlZ2F0ZSA9IHByb2plY3REZWxlZ2F0ZTsKKyAgICB0aGlzLl9wcm9qZWN0RGVsZWdh
dGUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUHJvamVjdERlbGVnYXRlLkV2ZW50cy5G
aWxlQWRkZWQsIHRoaXMuX2ZpbGVBZGRlZCwgdGhpcyk7CisgICAgdGhpcy5fcHJvamVjdERlbGVn
YXRlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlByb2plY3REZWxlZ2F0ZS5FdmVudHMu
RmlsZVJlbW92ZWQsIHRoaXMuX2ZpbGVSZW1vdmVkLCB0aGlzKTsKKyAgICB0aGlzLl9wcm9qZWN0
RGVsZWdhdGUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUHJvamVjdERlbGVnYXRlLkV2
ZW50cy5SZXNldCwgdGhpcy5fcmVzZXQsIHRoaXMpOwogfQogCiBXZWJJbnNwZWN0b3IuUHJvamVj
dC5wcm90b3R5cGUgPSB7CiAgICAgLyoqCiAgICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICAq
LwotICAgIG5hbWU6IGZ1bmN0aW9uKCkKKyAgICBpZDogZnVuY3Rpb24oKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIHRoaXMuX25hbWU7CisgICAgICAgIHJldHVybiB0aGlzLl9wcm9qZWN0RGVsZWdh
dGUuaWQoKTsKICAgICB9LAogCiAgICAgLyoqCiAgICAgICogQHJldHVybiB7c3RyaW5nfQogICAg
ICAqLwotICAgIHR5cGU6IGZ1bmN0aW9uKCkKKyAgICB0eXBlOiBmdW5jdGlvbigpIAogICAgIHsK
LSAgICAgICAgcmV0dXJuIHRoaXMuX3dvcmtzcGFjZVByb3ZpZGVyLnR5cGUoKTsKKyAgICAgICAg
cmV0dXJuIHRoaXMuX3Byb2plY3REZWxlZ2F0ZS50eXBlKCk7IAorICAgIH0sCisKKyAgICAvKioK
KyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCisgICAgZGlzcGxheU5hbWU6IGZ1bmN0
aW9uKCkgCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fcHJvamVjdERlbGVnYXRlLmRpc3Bs
YXlOYW1lKCk7IAogICAgIH0sCiAKICAgICAvKioKQEAgLTE2NSwzNyArMTgxLDQ2IEBAIFdlYklu
c3BlY3Rvci5Qcm9qZWN0LnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBpc1NlcnZpY2VQcm9q
ZWN0OiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5fd29ya3NwYWNlUHJv
dmlkZXIudHlwZSgpID09PSBXZWJJbnNwZWN0b3IucHJvamVjdFR5cGVzLkRlYnVnZ2VyIHx8IHRo
aXMuX3dvcmtzcGFjZVByb3ZpZGVyLnR5cGUoKSA9PT0gV2ViSW5zcGVjdG9yLnByb2plY3RUeXBl
cy5MaXZlRWRpdDsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Byb2plY3REZWxlZ2F0ZS50eXBlKCkg
PT09IFdlYkluc3BlY3Rvci5wcm9qZWN0VHlwZXMuRGVidWdnZXIgfHwgdGhpcy5fcHJvamVjdERl
bGVnYXRlLnR5cGUoKSA9PT0gV2ViSW5zcGVjdG9yLnByb2plY3RUeXBlcy5MaXZlRWRpdDsKICAg
ICB9LAogCiAgICAgX2ZpbGVBZGRlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewogICAgICAgICB2
YXIgZmlsZURlc2NyaXB0b3IgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5GaWxlRGVzY3JpcHRv
cn0gKi8gKGV2ZW50LmRhdGEpOwotICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gdGhpcy51aVNv
dXJjZUNvZGVGb3JVUkkoZmlsZURlc2NyaXB0b3IudXJpKTsKKyAgICAgICAgdmFyIHVpU291cmNl
Q29kZSA9IHRoaXMudWlTb3VyY2VDb2RlRm9yVVJJKGZpbGVEZXNjcmlwdG9yLnBhdGgpOwogICAg
ICAgICBpZiAodWlTb3VyY2VDb2RlKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgdWlTb3VyY2VDb2RlID0g
bmV3IFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGUodGhpcywgZmlsZURlc2NyaXB0b3IudXJpLCBm
aWxlRGVzY3JpcHRvci5vcmlnaW5VUkwsIGZpbGVEZXNjcmlwdG9yLnVybCwgZmlsZURlc2NyaXB0
b3IuY29udGVudFR5cGUsIGZpbGVEZXNjcmlwdG9yLmlzRWRpdGFibGUpOworICAgICAgICB1aVNv
dXJjZUNvZGUgPSBuZXcgV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZSh0aGlzLCBmaWxlRGVzY3Jp
cHRvci5wYXRoLCBmaWxlRGVzY3JpcHRvci5vcmlnaW5VUkwsIGZpbGVEZXNjcmlwdG9yLnVybCwg
ZmlsZURlc2NyaXB0b3IuY29udGVudFR5cGUsIGZpbGVEZXNjcmlwdG9yLmlzRWRpdGFibGUpOyAK
ICAgICAgICAgdWlTb3VyY2VDb2RlLmlzQ29udGVudFNjcmlwdCA9IGZpbGVEZXNjcmlwdG9yLmlz
Q29udGVudFNjcmlwdDsKLSAgICAgICAgdGhpcy5fdWlTb3VyY2VDb2Rlc0ZvclVSSVt1aVNvdXJj
ZUNvZGUudXJpKCldID0gdWlTb3VyY2VDb2RlOworICAgICAgICB0aGlzLl91aVNvdXJjZUNvZGVz
W3VpU291cmNlQ29kZS5wYXRoKCldID0gdWlTb3VyY2VDb2RlOwogICAgICAgICB0aGlzLl93b3Jr
c3BhY2UuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGVQ
cm92aWRlci5FdmVudHMuVUlTb3VyY2VDb2RlQWRkZWQsIHVpU291cmNlQ29kZSk7CiAgICAgfSwK
IAogICAgIF9maWxlUmVtb3ZlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICB2YXIg
dXJpID0gLyoqIEB0eXBlIHtzdHJpbmd9ICovIChldmVudC5kYXRhKTsKLSAgICAgICAgdmFyIHVp
U291cmNlQ29kZSA9IHRoaXMudWlTb3VyY2VDb2RlRm9yVVJJKHVyaSk7CisgICAgICAgIHZhciBw
YXRoID0gLyoqIEB0eXBlIHtzdHJpbmd9ICovIChldmVudC5kYXRhKTsKKyAgICAgICAgdmFyIHVp
U291cmNlQ29kZSA9IHRoaXMudWlTb3VyY2VDb2RlRm9yVVJJKHBhdGgpOwogICAgICAgICBpZiAo
IXVpU291cmNlQ29kZSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZGVsZXRlIHRoaXMu
X3VpU291cmNlQ29kZXNGb3JVUklbdWlTb3VyY2VDb2RlLnVyaSgpXTsKKyAgICAgICAgZGVsZXRl
IHRoaXMuX3VpU291cmNlQ29kZXNbdWlTb3VyY2VDb2RlLnBhdGgoKV07CiAgICAgICAgIHRoaXMu
X3dvcmtzcGFjZS5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlVJU291cmNl
Q29kZVByb3ZpZGVyLkV2ZW50cy5VSVNvdXJjZUNvZGVSZW1vdmVkLCB1aVNvdXJjZUNvZGUpOwog
ICAgIH0sCiAKICAgICBfcmVzZXQ6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHRoaXMuX3dv
cmtzcGFjZS5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLldvcmtzcGFjZS5F
dmVudHMuUHJvamVjdFdpbGxSZXNldCwgdGhpcyk7Ci0gICAgICAgIHRoaXMuX3VpU291cmNlQ29k
ZXNGb3JVUkkgPSB7fTsKKyAgICAgICAgdGhpcy5fdWlTb3VyY2VDb2RlcyA9IHt9OworICAgIH0s
CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gcGF0aAorICAgICAqIEByZXR1cm4g
ez9XZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfQorICAgICAqLworICAgIHVpU291cmNlQ29kZTog
ZnVuY3Rpb24ocGF0aCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl91aVNvdXJjZUNvZGVz
W3BhdGhdOwogICAgIH0sCiAKICAgICAvKioKQEAgLTIwNCw4ICsyMjksOCBAQCBXZWJJbnNwZWN0
b3IuUHJvamVjdC5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgdWlTb3VyY2VDb2RlRm9yT3Jp
Z2luVVJMOiBmdW5jdGlvbihvcmlnaW5VUkwpCiAgICAgewotICAgICAgICBmb3IgKHZhciB1cmkg
aW4gdGhpcy5fdWlTb3VyY2VDb2Rlc0ZvclVSSSkgewotICAgICAgICAgICAgdmFyIHVpU291cmNl
Q29kZSA9IHRoaXMuX3VpU291cmNlQ29kZXNGb3JVUklbdXJpXTsKKyAgICAgICAgZm9yICh2YXIg
cGF0aCBpbiB0aGlzLl91aVNvdXJjZUNvZGVzKSB7CisgICAgICAgICAgICB2YXIgdWlTb3VyY2VD
b2RlID0gdGhpcy5fdWlTb3VyY2VDb2Rlc1twYXRoXTsKICAgICAgICAgICAgIGlmICh1aVNvdXJj
ZUNvZGUub3JpZ2luVVJMKCkgPT09IG9yaWdpblVSTCkKICAgICAgICAgICAgICAgICByZXR1cm4g
dWlTb3VyY2VDb2RlOwogICAgICAgICB9CkBAIC0yMTgsNyArMjQzLDcgQEAgV2ViSW5zcGVjdG9y
LlByb2plY3QucHJvdG90eXBlID0gewogICAgICAqLwogICAgIHVpU291cmNlQ29kZUZvclVSSTog
ZnVuY3Rpb24odXJpKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3VpU291cmNlQ29kZXNG
b3JVUklbdXJpXTsKKyAgICAgICAgcmV0dXJuIHRoaXMudWlTb3VyY2VDb2RlKHVyaSk7CiAgICAg
fSwKIAogICAgIC8qKgpAQCAtMjI2LDcgKzI1MSw3IEBAIFdlYkluc3BlY3Rvci5Qcm9qZWN0LnBy
b3RvdHlwZSA9IHsKICAgICAgKi8KICAgICB1aVNvdXJjZUNvZGVzOiBmdW5jdGlvbigpCiAgICAg
ewotICAgICAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLl91aVNvdXJjZUNvZGVzRm9yVVJJ
KTsKKyAgICAgICAgcmV0dXJuIE9iamVjdC52YWx1ZXModGhpcy5fdWlTb3VyY2VDb2Rlcyk7CiAg
ICAgfSwKIAogICAgIC8qKgpAQCAtMjM1LDcgKzI2MCw3IEBAIFdlYkluc3BlY3Rvci5Qcm9qZWN0
LnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICByZXF1ZXN0RmlsZUNvbnRlbnQ6IGZ1bmN0aW9u
KHVpU291cmNlQ29kZSwgY2FsbGJhY2spCiAgICAgewotICAgICAgICB0aGlzLl93b3Jrc3BhY2VQ
cm92aWRlci5yZXF1ZXN0RmlsZUNvbnRlbnQodWlTb3VyY2VDb2RlLnVyaSgpLCBjYWxsYmFjayk7
CisgICAgICAgIHRoaXMuX3Byb2plY3REZWxlZ2F0ZS5yZXF1ZXN0RmlsZUNvbnRlbnQodWlTb3Vy
Y2VDb2RlLnBhdGgoKSwgY2FsbGJhY2spOwogICAgIH0sCiAKICAgICAvKioKQEAgLTI0NSw3ICsy
NzAsNyBAQCBXZWJJbnNwZWN0b3IuUHJvamVjdC5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAg
c2V0RmlsZUNvbnRlbnQ6IGZ1bmN0aW9uKHVpU291cmNlQ29kZSwgbmV3Q29udGVudCwgY2FsbGJh
Y2spCiAgICAgewotICAgICAgICB0aGlzLl93b3Jrc3BhY2VQcm92aWRlci5zZXRGaWxlQ29udGVu
dCh1aVNvdXJjZUNvZGUudXJpKCksIG5ld0NvbnRlbnQsIGNhbGxiYWNrKTsKKyAgICAgICAgdGhp
cy5fcHJvamVjdERlbGVnYXRlLnNldEZpbGVDb250ZW50KHVpU291cmNlQ29kZS5wYXRoKCksIG5l
d0NvbnRlbnQsIGNhbGxiYWNrKTsKICAgICAgICAgdGhpcy5fd29ya3NwYWNlLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuV29ya3NwYWNlLkV2ZW50cy5VSVNvdXJjZUNvZGVD
b250ZW50Q29tbWl0dGVkLCB7IHVpU291cmNlQ29kZTogdWlTb3VyY2VDb2RlLCBjb250ZW50OiBu
ZXdDb250ZW50IH0pOwogICAgIH0sCiAKQEAgLTI1OCwxMiArMjgzLDEyIEBAIFdlYkluc3BlY3Rv
ci5Qcm9qZWN0LnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBzZWFyY2hJbkZpbGVDb250ZW50
OiBmdW5jdGlvbih1aVNvdXJjZUNvZGUsIHF1ZXJ5LCBjYXNlU2Vuc2l0aXZlLCBpc1JlZ2V4LCBj
YWxsYmFjaykKICAgICB7Ci0gICAgICAgIHRoaXMuX3dvcmtzcGFjZVByb3ZpZGVyLnNlYXJjaElu
RmlsZUNvbnRlbnQodWlTb3VyY2VDb2RlLnVyaSgpLCBxdWVyeSwgY2FzZVNlbnNpdGl2ZSwgaXNS
ZWdleCwgY2FsbGJhY2spOworICAgICAgICB0aGlzLl9wcm9qZWN0RGVsZWdhdGUuc2VhcmNoSW5G
aWxlQ29udGVudCh1aVNvdXJjZUNvZGUucGF0aCgpLCBxdWVyeSwgY2FzZVNlbnNpdGl2ZSwgaXNS
ZWdleCwgY2FsbGJhY2spOwogICAgIH0sCiAKICAgICBkaXNwb3NlOiBmdW5jdGlvbigpCiAgICAg
ewotICAgICAgICB0aGlzLl93b3Jrc3BhY2VQcm92aWRlci5yZXNldCgpOworICAgICAgICB0aGlz
Ll9wcm9qZWN0RGVsZWdhdGUucmVzZXQoKTsKICAgICB9CiB9CiAKQEAgLTI5NCw2ICszMTksMTcg
QEAgV2ViSW5zcGVjdG9yLldvcmtzcGFjZS5FdmVudHMgPSB7CiAKIFdlYkluc3BlY3Rvci5Xb3Jr
c3BhY2UucHJvdG90eXBlID0gewogICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwcm9q
ZWN0SWQKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gcGF0aAorICAgICAqIEByZXR1cm4gez9XZWJJ
bnNwZWN0b3IuVUlTb3VyY2VDb2RlfQorICAgICAqLworICAgIHVpU291cmNlQ29kZTogZnVuY3Rp
b24ocHJvamVjdElkLCBwYXRoKQorICAgIHsKKyAgICAgICAgdmFyIHByb2plY3QgPSB0aGlzLl9w
cm9qZWN0c1twcm9qZWN0SWRdOworICAgICAgICByZXR1cm4gcHJvamVjdCA/IHByb2plY3QudWlT
b3VyY2VDb2RlKHBhdGgpIDogbnVsbDsKKyAgICB9LAorCisgICAgLyoqCiAgICAgICogQHBhcmFt
IHtzdHJpbmd9IG9yaWdpblVSTAogICAgICAqIEByZXR1cm4gez9XZWJJbnNwZWN0b3IuVUlTb3Vy
Y2VDb2RlfQogICAgICAqLwpAQCAtMzE1LDggKzM1MSw4IEBAIFdlYkluc3BlY3Rvci5Xb3Jrc3Bh
Y2UucHJvdG90eXBlID0gewogICAgICAqLwogICAgIHVpU291cmNlQ29kZUZvclVSSTogZnVuY3Rp
b24odXJpKQogICAgIHsKLSAgICAgICAgZm9yICh2YXIgcHJvamVjdE5hbWUgaW4gdGhpcy5fcHJv
amVjdHMpIHsKLSAgICAgICAgICAgIHZhciBwcm9qZWN0ID0gdGhpcy5fcHJvamVjdHNbcHJvamVj
dE5hbWVdOworICAgICAgICBmb3IgKHZhciBwcm9qZWN0SWQgaW4gdGhpcy5fcHJvamVjdHMpIHsK
KyAgICAgICAgICAgIHZhciBwcm9qZWN0ID0gdGhpcy5fcHJvamVjdHNbcHJvamVjdElkXTsKICAg
ICAgICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSBwcm9qZWN0LnVpU291cmNlQ29kZUZvclVSSSh1
cmkpOwogICAgICAgICAgICAgaWYgKHVpU291cmNlQ29kZSkKICAgICAgICAgICAgICAgICByZXR1
cm4gdWlTb3VyY2VDb2RlOwpAQCAtMzQwLDM1ICszNzYsMzUgQEAgV2ViSW5zcGVjdG9yLldvcmtz
cGFjZS5wcm90b3R5cGUgPSB7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEBwYXJhbSB7c3Ry
aW5nfSBwcm9qZWN0TmFtZQotICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLldvcmtzcGFjZVBy
b3ZpZGVyfSB3b3Jrc3BhY2VQcm92aWRlcgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlBy
b2plY3REZWxlZ2F0ZX0gcHJvamVjdERlbGVnYXRlCiAgICAgICogQHJldHVybiB7V2ViSW5zcGVj
dG9yLlByb2plY3R9CiAgICAgICovCi0gICAgYWRkUHJvamVjdDogZnVuY3Rpb24ocHJvamVjdE5h
bWUsIHdvcmtzcGFjZVByb3ZpZGVyKQorICAgIGFkZFByb2plY3Q6IGZ1bmN0aW9uKHByb2plY3RE
ZWxlZ2F0ZSkKICAgICB7Ci0gICAgICAgIHRoaXMuX3Byb2plY3RzW3Byb2plY3ROYW1lXSA9IG5l
dyBXZWJJbnNwZWN0b3IuUHJvamVjdCh0aGlzLCBwcm9qZWN0TmFtZSwgd29ya3NwYWNlUHJvdmlk
ZXIpOwotICAgICAgICByZXR1cm4gdGhpcy5fcHJvamVjdHNbcHJvamVjdE5hbWVdOworICAgICAg
ICB2YXIgcHJvamVjdElkID0gcHJvamVjdERlbGVnYXRlLmlkKCk7CisgICAgICAgIHRoaXMuX3By
b2plY3RzW3Byb2plY3RJZF0gPSBuZXcgV2ViSW5zcGVjdG9yLlByb2plY3QodGhpcywgcHJvamVj
dERlbGVnYXRlKTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Byb2plY3RzW3Byb2plY3RJZF07CiAg
ICAgfSwKIAogICAgIC8qKgotICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwcm9qZWN0TmFtZQorICAg
ICAqIEBwYXJhbSB7c3RyaW5nfSBwcm9qZWN0SWQKICAgICAgKi8KLSAgICByZW1vdmVQcm9qZWN0
OiBmdW5jdGlvbihwcm9qZWN0TmFtZSkKKyAgICByZW1vdmVQcm9qZWN0OiBmdW5jdGlvbihwcm9q
ZWN0SWQpCiAgICAgewotICAgICAgICB2YXIgcHJvamVjdCA9IHRoaXMuX3Byb2plY3RzW3Byb2pl
Y3ROYW1lXTsKKyAgICAgICAgdmFyIHByb2plY3QgPSB0aGlzLl9wcm9qZWN0c1twcm9qZWN0SWRd
OwogICAgICAgICBpZiAoIXByb2plY3QpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHBy
b2plY3QuZGlzcG9zZSgpOwotICAgICAgICBkZWxldGUgdGhpcy5fcHJvamVjdHNbcHJvamVjdE5h
bWVdOworICAgICAgICBkZWxldGUgdGhpcy5fcHJvamVjdHNbcHJvamVjdElkXTsKICAgICB9LAog
CiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IHByb2plY3ROYW1lCisgICAgICogQHBh
cmFtIHtzdHJpbmd9IHByb2plY3RJZAogICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rvci5Qcm9q
ZWN0fQogICAgICAqLwotICAgIHByb2plY3Q6IGZ1bmN0aW9uKHByb2plY3ROYW1lKQorICAgIHBy
b2plY3Q6IGZ1bmN0aW9uKHByb2plY3RJZCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9w
cm9qZWN0c1twcm9qZWN0TmFtZV07CisgICAgICAgIHJldHVybiB0aGlzLl9wcm9qZWN0c1twcm9q
ZWN0SWRdOwogICAgIH0sCiAKICAgICAvKioKQEAgLTM5OCw4ICs0MzQsOCBAQCBXZWJJbnNwZWN0
b3IuV29ya3NwYWNlLnByb3RvdHlwZSA9IHsKICAgICB1aVNvdXJjZUNvZGVzOiBmdW5jdGlvbigp
CiAgICAgewogICAgICAgICB2YXIgcmVzdWx0ID0gW107Ci0gICAgICAgIGZvciAodmFyIHByb2pl
Y3ROYW1lIGluIHRoaXMuX3Byb2plY3RzKSB7Ci0gICAgICAgICAgICB2YXIgcHJvamVjdCA9IHRo
aXMuX3Byb2plY3RzW3Byb2plY3ROYW1lXTsKKyAgICAgICAgZm9yICh2YXIgcHJvamVjdElkIGlu
IHRoaXMuX3Byb2plY3RzKSB7CisgICAgICAgICAgICB2YXIgcHJvamVjdCA9IHRoaXMuX3Byb2pl
Y3RzW3Byb2plY3RJZF07CiAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQuY29uY2F0KHByb2pl
Y3QudWlTb3VyY2VDb2RlcygpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gcmVzdWx0OwpA
QCAtNDEwLDggKzQ0Niw4IEBAIFdlYkluc3BlY3Rvci5Xb3Jrc3BhY2UucHJvdG90eXBlID0gewog
ICAgICAqLwogICAgIHByb2plY3RGb3JVSVNvdXJjZUNvZGU6IGZ1bmN0aW9uKHVpU291cmNlQ29k
ZSkKICAgICB7Ci0gICAgICAgIGZvciAodmFyIHByb2plY3ROYW1lIGluIHRoaXMuX3Byb2plY3Rz
KSB7Ci0gICAgICAgICAgICB2YXIgcHJvamVjdCA9IHRoaXMuX3Byb2plY3RzW3Byb2plY3ROYW1l
XTsKKyAgICAgICAgZm9yICh2YXIgcHJvamVjdElkIGluIHRoaXMuX3Byb2plY3RzKSB7CisgICAg
ICAgICAgICB2YXIgcHJvamVjdCA9IHRoaXMuX3Byb2plY3RzW3Byb2plY3RJZF07CiAgICAgICAg
ICAgICBpZiAocHJvamVjdC51aVNvdXJjZUNvZGVGb3JVUkkodWlTb3VyY2VDb2RlLnVyaSgpKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gcHJvamVjdDsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKaW5kZXggNDE0YmNk
ZTQ1MTZhMWVhM2JhMmYyMWUyY2U1MDFmODk5YmFkMmIzYi4uMDllMDY1YWVhOTQ5ZjA4ODU3MjJm
MWM1ZGVlYmJmNjEzMjRiZTE2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCkBAIC0xMzgsNyArMTM4LDcgQEAgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAg
ICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJMaW5raWZpZXIuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkRlYnVnZ2VyU2Ny
aXB0TWFwcGluZy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiIHNyYz0iUHJlc2VudGF0aW9uQ29uc29sZU1lc3NhZ2VIZWxwZXIuanMiPjwvc2NyaXB0Pgot
ICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkZpbGVTeXN0ZW1Xb3Jrc3Bh
Y2VQcm92aWRlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiIHNyYz0iRmlsZVN5c3RlbVByb2plY3REZWxlZ2F0ZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iRmlsZVN5c3RlbU1hcHBpbmcuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Iklzb2xhdGVk
RmlsZVN5c3RlbU1vZGVsLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCIgc3JjPSJGaWxlTWFwcGluZy5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNGFmMDVhYTY3
Y2E5MDc4Nzg3NTcyM2M5ZjJkYjNiODg4OTQxZTcwZS4uNDhkY2QyMGJjY2U0OTk0Y2QyNDk0Y2My
ZDI1ZGQ3NjNlMmZjMWFkZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE1IEBACiAyMDEzLTAyLTExICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFdlYkluc3BlY3Rvci5Qcm9qZWN0IHJlZmFjdG9yaW5ncy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTQzMworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL2xpdmUt
ZWRpdC1icmVha3BvaW50cy5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci91aXNvdXJjZWNvZGUt
cmV2aXNpb25zLmh0bWw6CisKKzIwMTMtMDItMTEgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0Bj
aHJvbWl1bS5vcmc+CisKICAgICAgICAgVW5yZXZpZXdlZCByMTQyNDM5IGZvbGxvdy11cDogdGVz
dCBmaXguCiAKICAgICAgICAgKiBpbnNwZWN0b3IvZWRpdG9yL3RleHQtZWRpdG9yLWhvbWUtYnV0
dG9uLmh0bWw6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvbGl2
ZS1lZGl0LWJyZWFrcG9pbnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIv
bGl2ZS1lZGl0LWJyZWFrcG9pbnRzLmh0bWwKaW5kZXggYjUyMTI4NDJjZDcyMmFiYmJhNGU2NDFl
MGI3MmFiNTM3MzRmMmIxZS4uYTBlYmMwYzMzNWM5ZjQ0ZGIzNDBmM2JmNjM5ZWVmMTJmOGE2N2Y3
NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2xpdmUtZWRpdC1i
cmVha3BvaW50cy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9saXZl
LWVkaXQtYnJlYWtwb2ludHMuaHRtbApAQCAtNDAsNyArNDAsNyBAQCBmdW5jdGlvbiB0ZXN0KCkK
ICAgICAgICAgICAgIHZhciB1aUxvY2F0aW9uID0gbG9jYXRpb25zW2ldLnVpTG9jYXRpb247CiAg
ICAgICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gdWlMb2NhdGlvbi51aVNvdXJjZUNvZGU7CiAg
ICAgICAgICAgICB2YXIgcHJvamVjdCA9IFdlYkluc3BlY3Rvci53b3Jrc3BhY2UucHJvamVjdEZv
clVJU291cmNlQ29kZSh1aVNvdXJjZUNvZGUpOwotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQoIiAgICAgICAgdXJsOiAiICsgcGF0aFRvRmlsZU5hbWUodWlTb3VyY2VDb2RlLm9y
aWdpblVSTCgpKSArICIsIGxpbmVOdW1iZXI6ICIgKyB1aUxvY2F0aW9uLmxpbmVOdW1iZXIgKyAi
LCBwcm9qZWN0IG5hbWU6ICIgKyBwcm9qZWN0Lm5hbWUoKSk7CisgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmFkZFJlc3VsdCgiICAgICAgICB1cmw6ICIgKyBwYXRoVG9GaWxlTmFtZSh1aVNvdXJj
ZUNvZGUub3JpZ2luVVJMKCkpICsgIiwgbGluZU51bWJlcjogIiArIHVpTG9jYXRpb24ubGluZU51
bWJlciArICIsIHByb2plY3QgbmFtZTogIiArIHByb2plY3QuaWQoKSk7CiAgICAgICAgIH0KICAg
ICB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci91aXNvdXJjZWNvZGUtcmV2
aXNpb25zLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdWlzb3VyY2Vjb2RlLXJldmlzaW9u
cy5odG1sCmluZGV4IDUzMDcyYmNkNTkyOWU3OTExZTNmZDhmOGRmYjIxNzRmNmIxYzNmZjMuLjVh
NmJhYzdiOTQ1YjRmMGUxMjE0ODRmNTg0MTQ3NjVkMzkwZjZjM2UgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci91aXNvdXJjZWNvZGUtcmV2aXNpb25zLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL3Vpc291cmNlY29kZS1yZXZpc2lvbnMuaHRtbApAQCAtOSw4ICs5LDgg
QEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgZnVuY3Rpb24gY3JlYXRlTW9ja1Byb2plY3QoKQogICAg
IHsKICAgICAgICAgdmFyIHdvcmtzcGFjZSA9IG5ldyBXZWJJbnNwZWN0b3IuV29ya3NwYWNlKCk7
Ci0gICAgICAgIHZhciB3b3Jrc3BhY2VQcm92aWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuU2ltcGxl
V29ya3NwYWNlUHJvdmlkZXIod29ya3NwYWNlLCBXZWJJbnNwZWN0b3IucHJvamVjdFR5cGVzLk5l
dHdvcmspOwotICAgICAgICB2YXIgcHJvamVjdCA9IHdvcmtzcGFjZS5hZGRQcm9qZWN0KFdlYklu
c3BlY3Rvci5wcm9qZWN0VHlwZXMuTmV0d29yaywgd29ya3NwYWNlUHJvdmlkZXIpOworICAgICAg
ICB2YXIgcHJvamVjdERlbGVnYXRlID0gbmV3IFdlYkluc3BlY3Rvci5TaW1wbGVQcm9qZWN0RGVs
ZWdhdGUoV2ViSW5zcGVjdG9yLnByb2plY3RUeXBlcy5OZXR3b3JrKTsKKyAgICAgICAgdmFyIHBy
b2plY3QgPSB3b3Jrc3BhY2UuYWRkUHJvamVjdChwcm9qZWN0RGVsZWdhdGUpOwogICAgICAgICBw
cm9qZWN0LnJlcXVlc3RGaWxlQ29udGVudCA9IGZ1bmN0aW9uKHVyaSwgY2FsbGJhY2spCiAgICAg
ICAgIHsKICAgICAgICAgICAgIGNhbGxiYWNrKCI8c2NyaXB0IGNvbnRlbnQ+IiwgZmFsc2UsICJ0
ZXh0L2phdmFzY3JpcHQiKTsK
</data>
<flag name="review"
          id="207428"
          type_id="1"
          status="+"
          setter="apavlov"
    />
    <flag name="commit-queue"
          id="207429"
          type_id="3"
          status="-"
          setter="apavlov"
    />
          </attachment>
      

    </bug>

</bugzilla>