<?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>66853</bug_id>
          
          <creation_ts>2011-08-24 05:37:30 -0700</creation_ts>
          <short_desc>Web Inspector: extract ConsoleMessage into a separate file.</short_desc>
          <delta_ts>2011-08-24 05:52:57 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>456062</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-08-24 05:37:30 -0700</bug_when>
    <thetext>Patch to follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456063</commentid>
    <comment_count>1</comment_count>
      <attachid>104986</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-08-24 05:40:33 -0700</bug_when>
    <thetext>Created attachment 104986
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456065</commentid>
    <comment_count>2</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-08-24 05:52:57 -0700</bug_when>
    <thetext>Committed r93705: &lt;http://trac.webkit.org/changeset/93705&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104986</attachid>
            <date>2011-08-24 05:40:33 -0700</date>
            <delta_ts>2011-08-24 05:41:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66853-20110824164031.patch</filename>
            <type>text/plain</type>
            <size>43255</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM2MDIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlODNiMTIyYWVkOWQzNTNm
NjAyZDMwZWQyNmViMjJhZjNkNWIxZmU4Li5iMWJlNjdjODQ0ZGIyOTg0NzViZWU3MDJlZWVhNGI2
NDJkNjQ0NzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTEtMDgtMjQgIFBhdmVs
IEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IGV4dHJhY3QgQ29uc29sZU1lc3NhZ2UgaW50byBhIHNlcGFyYXRlIGZpbGUuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Njg1MworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAg
ICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvQ29uc29sZU1lc3NhZ2UuanM6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkNvbnNvbGVNZXNzYWdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2Fn
ZS5jcmVhdGVUZXh0TWVzc2FnZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3Nh
Z2UucHJvdG90eXBlLl9mb3JtYXRNZXNzYWdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25z
b2xlTWVzc2FnZS5wcm90b3R5cGUuX2xpbmtpZnlMb2NhdGlvbik6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ29uc29sZU1lc3NhZ2UucHJvdG90eXBlLl9saW5raWZ5Q2FsbEZyYW1lKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5wcm90b3R5cGUuaXNFcnJvck9yV2Fybmlu
Zyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UucHJvdG90eXBlLl9mb3Jt
YXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLnByb3RvdHlwZS5fZm9y
bWF0V2l0aFN1YnN0aXR1dGlvblN0cmluZy52YWx1ZUZvcm1hdHRlcik6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UucHJvdG90eXBlLl9mb3JtYXRXaXRoU3Vic3RpdHV0aW9u
U3RyaW5nLmFwcGVuZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UucHJv
dG90eXBlLmNsZWFySGlnaGxpZ2h0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xlTWVz
c2FnZS5wcm90b3R5cGUuaGlnaGxpZ2h0U2VhcmNoUmVzdWx0cyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ29uc29sZU1lc3NhZ2UucHJvdG90eXBlLm1hdGNoZXNSZWdleCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UucHJvdG90eXBlLnRvTWVzc2FnZUVsZW1lbnQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLnByb3RvdHlwZS5fcG9wdWxhdGVT
dGFja1RyYWNlVHJlZUVsZW1lbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNz
YWdlLnByb3RvdHlwZS5fdXBkYXRlUmVwZWF0Q291bnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNvbnNvbGVNZXNzYWdlLnByb3RvdHlwZS50b1N0cmluZyk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQ29uc29sZU1lc3NhZ2UucHJvdG90eXBlLmlzRXF1YWwpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkNvbnNvbGVNZXNzYWdlLnByb3RvdHlwZS5nZXQgc3RhY2tUcmFjZSk6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qczoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL1dlYktpdC5xcmM6CisKIDIwMTEtMDgtMjMgIFNoZXJpZmYgQm90ICA8d2Via2l0
LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0
IHI5MzU3OS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA1YWJmZGJiNGJhOWFmYTA1MzRkOTFjZjdkNjk1
YmVmMDNhOGJkN2I1Li42ZjIwYzE0ZmQxZjk5ZjlhOGFlOWQ0ZTJiMGVhZDI2YTU5YzcyMzgyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCkBAIC02MjkxLDYgKzYyOTEsNyBAQAogICAgICAgICAgICAgJ2luc3Bl
Y3Rvci9mcm9udC1lbmQvQ2FsbFN0YWNrU2lkZWJhclBhbmUuanMnLAogICAgICAgICAgICAgJ2lu
c3BlY3Rvci9mcm9udC1lbmQvQ2hlY2tib3guanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9m
cm9udC1lbmQvQ29sb3IuanMnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvQ29u
c29sZU1lc3NhZ2UuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29s
ZVBhbmVsLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3
LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0phdmFTY3JpcHRDb250ZXh0
TWFuYWdlci5qcycsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCmluZGV4IDcyYmZlMzhhMmViNDVmZjAyY2Q4MjM0ZmFkZTBiMzQ3ZTk0NjgyZjQuLjQ0ZjJm
MTUwMjcyM2M3MjYxMTVmNWY1OTI1ZTE3NmNlOGZmMmZjZmQgMTAwNzU1Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC02ODc2MSw2ICs2ODc2MSwxMCBAQAog
CQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5z
cGVjdG9yXGZyb250LWVuZFxDb25zb2xlTWVzc2FnZS5qcyIKKwkJCQkJPgorCQkJCTwvRmlsZT4K
KwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcQ29u
c29sZVZpZXcuanMiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVNZXNzYWdlLmpzIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlTWVzc2FnZS5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNDE2
ODJiOGExODBiNDY5YWVmMmNmZGY5ZWE5NzAyMjAyNTNkOWJkCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlTWVzc2FnZS5qcwpAQCAt
MCwwICsxLDQ4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEpvc2VwaCBQZWNv
cmFybworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUg
Q29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisg
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKK1dlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZSA9IGZ1bmN0aW9uKHNvdXJjZSwgdHlwZSwg
bGV2ZWwsIGxpbmUsIHVybCwgcmVwZWF0Q291bnQsIG1lc3NhZ2UsIHBhcmFtZXRlcnMsIHN0YWNr
VHJhY2UsIHJlcXVlc3RJZCkKK3sKKyAgICB0aGlzLnNvdXJjZSA9IHNvdXJjZTsKKyAgICB0aGlz
LnR5cGUgPSB0eXBlOworICAgIHRoaXMubGV2ZWwgPSBsZXZlbDsKKyAgICB0aGlzLmxpbmUgPSBs
aW5lOworICAgIHRoaXMudXJsID0gdXJsOworICAgIHRoaXMucmVwZWF0Q291bnQgPSByZXBlYXRD
b3VudDsKKyAgICB0aGlzLnJlcGVhdERlbHRhID0gcmVwZWF0Q291bnQ7CisgICAgdGhpcy50b3Rh
bFJlcGVhdENvdW50ID0gcmVwZWF0Q291bnQ7CisgICAgdGhpcy5fbWVzc2FnZVRleHQgPSBtZXNz
YWdlOworICAgIHRoaXMuX3BhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzOworICAgIHRoaXMuX3N0YWNr
VHJhY2UgPSBzdGFja1RyYWNlOworICAgIHRoaXMuX3JlcXVlc3RJZCA9IHJlcXVlc3RJZDsKKwor
ICAgIGlmIChzdGFja1RyYWNlICYmIHN0YWNrVHJhY2UubGVuZ3RoKSB7CisgICAgICAgIHZhciB0
b3BDYWxsRnJhbWUgPSBzdGFja1RyYWNlWzBdOworICAgICAgICBpZiAoIXRoaXMudXJsKQorICAg
ICAgICAgICAgdGhpcy51cmwgPSB0b3BDYWxsRnJhbWUudXJsOworICAgICAgICBpZiAoIXRoaXMu
bGluZSkKKyAgICAgICAgICAgIHRoaXMubGluZSA9IHRvcENhbGxGcmFtZS5saW5lTnVtYmVyOwor
ICAgIH0KKworICAgIHRoaXMuX2Zvcm1hdE1lc3NhZ2UoKTsKK30KKworV2ViSW5zcGVjdG9yLkNv
bnNvbGVNZXNzYWdlLmNyZWF0ZVRleHRNZXNzYWdlID0gZnVuY3Rpb24odGV4dCwgbGV2ZWwpCit7
CisgICAgbGV2ZWwgPSBsZXZlbCB8fCBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2Fn
ZUxldmVsLkxvZzsKKyAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZShX
ZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVNvdXJjZS5KUywgV2ViSW5zcGVjdG9y
LkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLkxvZywgbGV2ZWwsIDAsIG51bGwsIDEsIG51bGws
IFt0ZXh0XSwgbnVsbCk7Cit9CisKK1dlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5wcm90b3R5
cGUgPSB7CisgICAgX2Zvcm1hdE1lc3NhZ2U6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZh
ciBzdGFja1RyYWNlID0gdGhpcy5fc3RhY2tUcmFjZTsKKyAgICAgICAgdmFyIG1lc3NhZ2VUZXh0
OworICAgICAgICBzd2l0Y2ggKHRoaXMudHlwZSkgeworICAgICAgICAgICAgY2FzZSBXZWJJbnNw
ZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuVHJhY2U6CisgICAgICAgICAgICAgICAg
bWVzc2FnZVRleHQgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiY29uc29sZS50cmFjZSgpIik7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5D
b25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5VbmNhdWdodEV4Y2VwdGlvbjoKKyAgICAgICAgICAg
ICAgICBtZXNzYWdlVGV4dCA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRoaXMuX21lc3NhZ2VU
ZXh0KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVj
dG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLk5ldHdvcmtFcnJvcjoKKyAgICAgICAgICAg
ICAgICB2YXIgcmVzb3VyY2UgPSB0aGlzLl9yZXF1ZXN0SWQgJiYgV2ViSW5zcGVjdG9yLm5ldHdv
cmtSZXNvdXJjZUJ5SWQodGhpcy5fcmVxdWVzdElkKTsKKyAgICAgICAgICAgICAgICBpZiAocmVz
b3VyY2UpIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhY2tUcmFjZSA9IHJlc291cmNlLnN0YWNr
VHJhY2U7CisKKyAgICAgICAgICAgICAgICAgICAgbWVzc2FnZVRleHQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJzcGFuIik7CisgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VUZXh0LmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHJlc291cmNlLnJlcXVlc3RNZXRob2QgKyAi
ICIpKTsKKyAgICAgICAgICAgICAgICAgICAgbWVzc2FnZVRleHQuYXBwZW5kQ2hpbGQoV2ViSW5z
cGVjdG9yLmxpbmtpZnlVUkxBc05vZGUocmVzb3VyY2UudXJsKSk7CisgICAgICAgICAgICAgICAg
ICAgIGlmIChyZXNvdXJjZS5mYWlsZWQpCisgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdl
VGV4dC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiICIgKyByZXNvdXJjZS5s
b2NhbGl6ZWRGYWlsRGVzY3JpcHRpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZVRleHQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlVGV4dE5vZGUoIiAiICsgcmVzb3VyY2Uuc3RhdHVzQ29kZSArICIgKCIgKyByZXNvdXJjZS5z
dGF0dXNUZXh0ICsgIikiKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAg
ICAgICAgIG1lc3NhZ2VUZXh0ID0gdGhpcy5fZm9ybWF0KFt0aGlzLl9tZXNzYWdlVGV4dF0pOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuQ29u
c29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuQXNzZXJ0OgorICAgICAgICAgICAgICAgIHZhciBhcmdz
ID0gW1dlYkluc3BlY3Rvci5VSVN0cmluZygiQXNzZXJ0aW9uIGZhaWxlZDoiKV07CisgICAgICAg
ICAgICAgICAgaWYgKHRoaXMuX3BhcmFtZXRlcnMpCisgICAgICAgICAgICAgICAgICAgIGFyZ3Mg
PSBhcmdzLmNvbmNhdCh0aGlzLl9wYXJhbWV0ZXJzKTsKKyAgICAgICAgICAgICAgICBtZXNzYWdl
VGV4dCA9IHRoaXMuX2Zvcm1hdChhcmdzKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLk9iamVj
dDoKKyAgICAgICAgICAgICAgICB2YXIgb2JqID0gdGhpcy5fcGFyYW1ldGVycyA/IHRoaXMuX3Bh
cmFtZXRlcnNbMF0gOiB1bmRlZmluZWQ7CisgICAgICAgICAgICAgICAgdmFyIGFyZ3MgPSBbIiVP
Iiwgb2JqXTsKKyAgICAgICAgICAgICAgICBtZXNzYWdlVGV4dCA9IHRoaXMuX2Zvcm1hdChhcmdz
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICAgICAgdmFyIGFyZ3MgPSB0aGlzLl9wYXJhbWV0ZXJzIHx8IFt0aGlzLl9tZXNzYWdlVGV4
dF07CisgICAgICAgICAgICAgICAgbWVzc2FnZVRleHQgPSB0aGlzLl9mb3JtYXQoYXJncyk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl9mb3JtYXR0
ZWRNZXNzYWdlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgICAgICB0aGlz
Ll9mb3JtYXR0ZWRNZXNzYWdlLmNsYXNzTmFtZSA9ICJjb25zb2xlLW1lc3NhZ2UtdGV4dCBzb3Vy
Y2UtY29kZSI7CisKKyAgICAgICAgaWYgKHRoaXMuX3N0YWNrVHJhY2UgJiYgdGhpcy5fc3RhY2tU
cmFjZS5sZW5ndGggJiYgdGhpcy5fc3RhY2tUcmFjZVswXS51cmwpIHsKKyAgICAgICAgICAgIHZh
ciB1cmxFbGVtZW50ID0gdGhpcy5fbGlua2lmeUNhbGxGcmFtZSh0aGlzLl9zdGFja1RyYWNlWzBd
KTsKKyAgICAgICAgICAgIHRoaXMuX2Zvcm1hdHRlZE1lc3NhZ2UuYXBwZW5kQ2hpbGQodXJsRWxl
bWVudCk7CisgICAgICAgIH0gZWxzZSBpZiAodGhpcy51cmwgJiYgdGhpcy51cmwgIT09ICJ1bmRl
ZmluZWQiKSB7CisgICAgICAgICAgICB2YXIgdXJsRWxlbWVudCA9IHRoaXMuX2xpbmtpZnlMb2Nh
dGlvbih0aGlzLnVybCwgdGhpcy5saW5lLCAwKTsKKyAgICAgICAgICAgIHRoaXMuX2Zvcm1hdHRl
ZE1lc3NhZ2UuYXBwZW5kQ2hpbGQodXJsRWxlbWVudCk7CisgICAgICAgIH0KKworICAgICAgICB0
aGlzLl9mb3JtYXR0ZWRNZXNzYWdlLmFwcGVuZENoaWxkKG1lc3NhZ2VUZXh0KTsKKworICAgICAg
ICBpZiAodGhpcy5fc3RhY2tUcmFjZSkgeworICAgICAgICAgICAgc3dpdGNoICh0aGlzLnR5cGUp
IHsKKyAgICAgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNz
YWdlVHlwZS5UcmFjZToKKyAgICAgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5Db25zb2xl
TWVzc2FnZS5NZXNzYWdlVHlwZS5VbmNhdWdodEV4Y2VwdGlvbjoKKyAgICAgICAgICAgICAgICBj
YXNlIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5OZXR3b3JrRXJyb3I6
CisgICAgICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2Fn
ZVR5cGUuQXNzZXJ0OiB7CisgICAgICAgICAgICAgICAgICAgIHZhciBvbCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoIm9sIik7CisgICAgICAgICAgICAgICAgICAgIG9sLmNsYXNzTmFtZSA9ICJv
dXRsaW5lLWRpc2Nsb3N1cmUiOworICAgICAgICAgICAgICAgICAgICB2YXIgdHJlZU91dGxpbmUg
PSBuZXcgVHJlZU91dGxpbmUob2wpOworCisgICAgICAgICAgICAgICAgICAgIHZhciBjb250ZW50
ID0gdGhpcy5fZm9ybWF0dGVkTWVzc2FnZTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHJvb3Qg
PSBuZXcgVHJlZUVsZW1lbnQoY29udGVudCwgbnVsbCwgdHJ1ZSk7CisgICAgICAgICAgICAgICAg
ICAgIGNvbnRlbnQudHJlZUVsZW1lbnRGb3JUZXN0ID0gcm9vdDsKKyAgICAgICAgICAgICAgICAg
ICAgdHJlZU91dGxpbmUuYXBwZW5kQ2hpbGQocm9vdCk7CisgICAgICAgICAgICAgICAgICAgIGlm
ICh0aGlzLnR5cGUgPT09IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5U
cmFjZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJvb3QuZXhwYW5kKCk7CisKKyAgICAgICAg
ICAgICAgICAgICAgdGhpcy5fcG9wdWxhdGVTdGFja1RyYWNlVHJlZUVsZW1lbnQocm9vdCk7Cisg
ICAgICAgICAgICAgICAgICAgIHRoaXMuX2Zvcm1hdHRlZE1lc3NhZ2UgPSBvbDsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBUaGlzIGlz
IHVzZWQgZm9yIGlubGluZSBtZXNzYWdlIGJ1YmJsZXMgaW4gU291cmNlRnJhbWVzLCBvciBvdGhl
ciBwbGFpbi10ZXh0IHJlcHJlc2VudGF0aW9ucy4KKyAgICAgICAgdGhpcy5tZXNzYWdlID0gKHVy
bEVsZW1lbnQgPyB1cmxFbGVtZW50LnRleHRDb250ZW50ICsgIiAiIDogIiIpICsgbWVzc2FnZVRl
eHQudGV4dENvbnRlbnQ7CisgICAgfSwKKworICAgIF9saW5raWZ5TG9jYXRpb246IGZ1bmN0aW9u
KHVybCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKQorICAgIHsKKyAgICAgICAgLy8gRklYTUUo
NjI3MjUpOiBzdGFjayB0cmFjZSBsaW5lL2NvbHVtbiBudW1iZXJzIGFyZSBvbmUtYmFzZWQuCisg
ICAgICAgIGxpbmVOdW1iZXIgPSBsaW5lTnVtYmVyID8gbGluZU51bWJlciAtIDEgOiB1bmRlZmlu
ZWQ7CisgICAgICAgIGNvbHVtbk51bWJlciA9IGNvbHVtbk51bWJlciA/IGNvbHVtbk51bWJlciAt
IDEgOiAwOworICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyUHJlc2VudGF0aW9u
TW9kZWwubGlua2lmeUxvY2F0aW9uKHVybCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCAiY29u
c29sZS1tZXNzYWdlLXVybCIpOworICAgIH0sCisKKyAgICBfbGlua2lmeUNhbGxGcmFtZTogZnVu
Y3Rpb24oY2FsbEZyYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2xpbmtpZnlMb2Nh
dGlvbihjYWxsRnJhbWUudXJsLCBjYWxsRnJhbWUubGluZU51bWJlciwgY2FsbEZyYW1lLmNvbHVt
bk51bWJlcik7CisgICAgfSwKKworICAgIGlzRXJyb3JPcldhcm5pbmc6IGZ1bmN0aW9uKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiAodGhpcy5sZXZlbCA9PT0gV2ViSW5zcGVjdG9yLkNvbnNvbGVN
ZXNzYWdlLk1lc3NhZ2VMZXZlbC5XYXJuaW5nIHx8IHRoaXMubGV2ZWwgPT09IFdlYkluc3BlY3Rv
ci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuRXJyb3IpOworICAgIH0sCisKKyAgICBfZm9y
bWF0OiBmdW5jdGlvbihwYXJhbWV0ZXJzKQorICAgIHsKKyAgICAgICAgLy8gVGhpcyBub2RlIGlz
IHVzZWQgbGlrZSBhIEJ1aWxkZXIuIFZhbHVlcyBhcmUgY29udGludWFsbHkgYXBwZW5kZWQgb250
byBpdC4KKyAgICAgICAgdmFyIGZvcm1hdHRlZFJlc3VsdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoInNwYW4iKTsKKyAgICAgICAgaWYgKCFwYXJhbWV0ZXJzLmxlbmd0aCkKKyAgICAgICAgICAg
IHJldHVybiBmb3JtYXR0ZWRSZXN1bHQ7CisKKyAgICAgICAgLy8gRm9ybWF0dGluZyBjb2RlIGJl
bG93IGFzc3VtZXMgdGhhdCBwYXJhbWV0ZXJzIGFyZSBhbGwgd3JhcHBlcnMgd2hlcmVhcyBmcm9u
dGVuZCBjb25zb2xlCisgICAgICAgIC8vIEFQSSBhbGxvd3MgcGFzc2luZyBhcmJpdHJhcnkgdmFs
dWVzIGFzIG1lc3NhZ2VzIChzdHJpbmdzLCBudW1iZXJzLCBldGMuKS4gV3JhcCB0aGVtIGhlcmUu
CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGFyYW1ldGVycy5sZW5ndGg7ICsraSkgewor
ICAgICAgICAgICAgLy8gRklYTUU6IE9ubHkgcGFzcyBydW50aW1lIHdyYXBwZXJzIGhlcmUuCisg
ICAgICAgICAgICBpZiAocGFyYW1ldGVyc1tpXSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZW1v
dGVPYmplY3QpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGlmICh0
eXBlb2YgcGFyYW1ldGVyc1tpXSA9PT0gIm9iamVjdCIpCisgICAgICAgICAgICAgICAgcGFyYW1l
dGVyc1tpXSA9IFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVBheWxvYWQocGFyYW1ldGVy
c1tpXSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcGFyYW1ldGVyc1tpXSA9
IFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVByaW1pdGl2ZVZhbHVlKHBhcmFtZXRlcnNb
aV0pOworICAgICAgICB9CisKKyAgICAgICAgLy8gVGhlcmUgY2FuIGJlIHN0cmluZyBsb2cgYW5k
IHN0cmluZyBldmFsIHJlc3VsdC4gV2UgZGlzdGluZ3Vpc2ggYmV0d2VlbiB0aGVtIGJhc2VkIG9u
IG1lc3NhZ2UgdHlwZS4KKyAgICAgICAgdmFyIHNob3VsZEZvcm1hdE1lc3NhZ2UgPSBXZWJJbnNw
ZWN0b3IuUmVtb3RlT2JqZWN0LnR5cGUocGFyYW1ldGVyc1swXSkgPT09ICJzdHJpbmciICYmIHRo
aXMudHlwZSAhPT0gV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLlJlc3Vs
dDsKKworICAgICAgICAvLyBNdWx0aXBsZSBwYXJhbWV0ZXJzIHdpdGggdGhlIGZpcnN0IGJlaW5n
IGEgZm9ybWF0IHN0cmluZy4gU2F2ZSB1bnVzZWQgc3Vic3RpdHV0aW9ucy4KKyAgICAgICAgaWYg
KHNob3VsZEZvcm1hdE1lc3NhZ2UpIHsKKyAgICAgICAgICAgIC8vIE11bHRpcGxlIHBhcmFtZXRl
cnMgd2l0aCB0aGUgZmlyc3QgYmVpbmcgYSBmb3JtYXQgc3RyaW5nLiBTYXZlIHVudXNlZCBzdWJz
dGl0dXRpb25zLgorICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuX2Zvcm1hdFdpdGhTdWJz
dGl0dXRpb25TdHJpbmcocGFyYW1ldGVycywgZm9ybWF0dGVkUmVzdWx0KTsKKyAgICAgICAgICAg
IHBhcmFtZXRlcnMgPSByZXN1bHQudW51c2VkU3Vic3RpdHV0aW9uczsKKyAgICAgICAgICAgIGlm
IChwYXJhbWV0ZXJzLmxlbmd0aCkKKyAgICAgICAgICAgICAgICBmb3JtYXR0ZWRSZXN1bHQuYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiAiKSk7CisgICAgICAgIH0KKworICAg
ICAgICAvLyBTaW5nbGUgcGFyYW1ldGVyLCBvciB1bnVzZWQgc3Vic3RpdHV0aW9ucyBmcm9tIGFi
b3ZlLgorICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhcmFtZXRlcnMubGVuZ3RoOyArK2kp
IHsKKyAgICAgICAgICAgIC8vIElubGluZSBzdHJpbmdzIHdoZW4gZm9ybWF0dGluZy4KKyAgICAg
ICAgICAgIGlmIChzaG91bGRGb3JtYXRNZXNzYWdlICYmIHBhcmFtZXRlcnNbaV0udHlwZSA9PT0g
InN0cmluZyIpCisgICAgICAgICAgICAgICAgZm9ybWF0dGVkUmVzdWx0LmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKHBhcmFtZXRlcnNbaV0uZGVzY3JpcHRpb24pKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBmb3JtYXR0ZWRSZXN1bHQuYXBwZW5kQ2hpbGQo
V2ViSW5zcGVjdG9yLmNvbnNvbGUuX2Zvcm1hdChwYXJhbWV0ZXJzW2ldKSk7CisgICAgICAgICAg
ICBpZiAoaSA8IHBhcmFtZXRlcnMubGVuZ3RoIC0gMSkKKyAgICAgICAgICAgICAgICBmb3JtYXR0
ZWRSZXN1bHQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiAiKSk7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIGZvcm1hdHRlZFJlc3VsdDsKKyAgICB9LAorCisgICAgX2Zv
cm1hdFdpdGhTdWJzdGl0dXRpb25TdHJpbmc6IGZ1bmN0aW9uKHBhcmFtZXRlcnMsIGZvcm1hdHRl
ZFJlc3VsdCkKKyAgICB7CisgICAgICAgIHZhciBmb3JtYXR0ZXJzID0ge30KKworICAgICAgICBm
dW5jdGlvbiBjb25zb2xlRm9ybWF0V3JhcHBlcihmb3JjZSkKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIGZ1bmN0aW9uKG9iaikgeworICAgICAgICAgICAgICAgIHJldHVybiBXZWJJbnNw
ZWN0b3IuY29uc29sZS5fZm9ybWF0KG9iaiwgZm9yY2UpOworICAgICAgICAgICAgfTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHZhbHVlRm9ybWF0dGVyKG9iaikKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIG9iai5kZXNjcmlwdGlvbjsKKyAgICAgICAgfQorCisgICAgICAg
IC8vIEZpcmVidWcgdXNlcyAlbyBmb3IgZm9ybWF0dGluZyBvYmplY3RzLgorICAgICAgICBmb3Jt
YXR0ZXJzLm8gPSBjb25zb2xlRm9ybWF0V3JhcHBlcigpOworICAgICAgICBmb3JtYXR0ZXJzLnMg
PSB2YWx1ZUZvcm1hdHRlcjsKKyAgICAgICAgZm9ybWF0dGVycy5mID0gdmFsdWVGb3JtYXR0ZXI7
CisgICAgICAgIC8vIEZpcmVidWcgYWxsb3dzIGJvdGggJWkgYW5kICVkIGZvciBmb3JtYXR0aW5n
IGludGVnZXJzLgorICAgICAgICBmb3JtYXR0ZXJzLmkgPSB2YWx1ZUZvcm1hdHRlcjsKKyAgICAg
ICAgZm9ybWF0dGVycy5kID0gdmFsdWVGb3JtYXR0ZXI7CisKKyAgICAgICAgLy8gU3VwcG9ydCAl
TyB0byBmb3JjZSBvYmplY3QgZm9ybWF0dGluZywgaW5zdGVhZCBvZiB0aGUgdHlwZS1iYXNlZCAl
byBmb3JtYXR0aW5nLgorICAgICAgICBmb3JtYXR0ZXJzLk8gPSBjb25zb2xlRm9ybWF0V3JhcHBl
cih0cnVlKTsKKworICAgICAgICBmdW5jdGlvbiBhcHBlbmQoYSwgYikKKyAgICAgICAgeworICAg
ICAgICAgICAgaWYgKCEoYiBpbnN0YW5jZW9mIE5vZGUpKQorICAgICAgICAgICAgICAgIGEuYXBw
ZW5kQ2hpbGQoV2ViSW5zcGVjdG9yLmxpbmtpZnlTdHJpbmdBc0ZyYWdtZW50KGIudG9TdHJpbmco
KSkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGEuYXBwZW5kQ2hpbGQoYik7
CisgICAgICAgICAgICByZXR1cm4gYTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFN0cmluZy5m
b3JtYXQgZG9lcyB0cmVhdCBmb3JtYXR0ZWRSZXN1bHQgbGlrZSBhIEJ1aWxkZXIsIHJlc3VsdCBp
cyBhbiBvYmplY3QuCisgICAgICAgIHJldHVybiBTdHJpbmcuZm9ybWF0KHBhcmFtZXRlcnNbMF0u
ZGVzY3JpcHRpb24sIHBhcmFtZXRlcnMuc2xpY2UoMSksIGZvcm1hdHRlcnMsIGZvcm1hdHRlZFJl
c3VsdCwgYXBwZW5kKTsKKyAgICB9LAorCisgICAgY2xlYXJIaWdobGlnaHQ6IGZ1bmN0aW9uKCkK
KyAgICB7CisgICAgICAgIHZhciBoaWdobGlnaHRlZE1lc3NhZ2UgPSB0aGlzLl9mb3JtYXR0ZWRN
ZXNzYWdlOworICAgICAgICBkZWxldGUgdGhpcy5fZm9ybWF0dGVkTWVzc2FnZTsKKyAgICAgICAg
dGhpcy5fZm9ybWF0TWVzc2FnZSgpOworICAgICAgICB0aGlzLl9lbGVtZW50LnJlcGxhY2VDaGls
ZCh0aGlzLl9mb3JtYXR0ZWRNZXNzYWdlLCBoaWdobGlnaHRlZE1lc3NhZ2UpOworICAgIH0sCisK
KyAgICBoaWdobGlnaHRTZWFyY2hSZXN1bHRzOiBmdW5jdGlvbihyZWdleE9iamVjdCkKKyAgICB7
CisgICAgICAgIHJlZ2V4T2JqZWN0Lmxhc3RJbmRleCA9IDA7CisgICAgICAgIHZhciB0ZXh0ID0g
dGhpcy5tZXNzYWdlOworICAgICAgICB2YXIgbWF0Y2ggPSByZWdleE9iamVjdC5leGVjKHRleHQp
OworICAgICAgICB2YXIgb2Zmc2V0ID0gMDsKKyAgICAgICAgdmFyIG1hdGNoUmFuZ2VzID0gW107
CisgICAgICAgIHdoaWxlIChtYXRjaCkgeworICAgICAgICAgICAgbWF0Y2hSYW5nZXMucHVzaCh7
IG9mZnNldDogbWF0Y2guaW5kZXgsIGxlbmd0aDogbWF0Y2hbMF0ubGVuZ3RoIH0pOworICAgICAg
ICAgICAgbWF0Y2ggPSByZWdleE9iamVjdC5leGVjKHRleHQpOworICAgICAgICB9CisgICAgICAg
IGhpZ2hsaWdodFNlYXJjaFJlc3VsdHModGhpcy5fZm9ybWF0dGVkTWVzc2FnZSwgbWF0Y2hSYW5n
ZXMpOworICAgICAgICB0aGlzLl9lbGVtZW50LnNjcm9sbEludG9WaWV3SWZOZWVkZWQoKTsKKyAg
ICB9LAorCisgICAgbWF0Y2hlc1JlZ2V4OiBmdW5jdGlvbihyZWdleE9iamVjdCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiByZWdleE9iamVjdC50ZXN0KHRoaXMubWVzc2FnZSk7CisgICAgfSwKKwor
ICAgIHRvTWVzc2FnZUVsZW1lbnQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlz
Ll9lbGVtZW50KQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7CisKKyAgICAgICAg
dmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgZWxl
bWVudC5tZXNzYWdlID0gdGhpczsKKyAgICAgICAgZWxlbWVudC5jbGFzc05hbWUgPSAiY29uc29s
ZS1tZXNzYWdlIjsKKworICAgICAgICB0aGlzLl9lbGVtZW50ID0gZWxlbWVudDsKKworICAgICAg
ICBzd2l0Y2ggKHRoaXMubGV2ZWwpIHsKKyAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkNv
bnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZlbC5UaXA6CisgICAgICAgICAgICAgICAgZWxlbWVudC5h
ZGRTdHlsZUNsYXNzKCJjb25zb2xlLXRpcC1sZXZlbCIpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZUxl
dmVsLkxvZzoKKyAgICAgICAgICAgICAgICBlbGVtZW50LmFkZFN0eWxlQ2xhc3MoImNvbnNvbGUt
bG9nLWxldmVsIik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFdl
Ykluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuRGVidWc6CisgICAgICAgICAg
ICAgICAgZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJjb25zb2xlLWRlYnVnLWxldmVsIik7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5Db25zb2xl
TWVzc2FnZS5NZXNzYWdlTGV2ZWwuV2FybmluZzoKKyAgICAgICAgICAgICAgICBlbGVtZW50LmFk
ZFN0eWxlQ2xhc3MoImNvbnNvbGUtd2FybmluZy1sZXZlbCIpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2Fn
ZUxldmVsLkVycm9yOgorICAgICAgICAgICAgICAgIGVsZW1lbnQuYWRkU3R5bGVDbGFzcygiY29u
c29sZS1lcnJvci1sZXZlbCIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1l
c3NhZ2VUeXBlLlN0YXJ0R3JvdXAgfHwgdGhpcy50eXBlID09PSBXZWJJbnNwZWN0b3IuQ29uc29s
ZU1lc3NhZ2UuTWVzc2FnZVR5cGUuU3RhcnRHcm91cENvbGxhcHNlZCkKKyAgICAgICAgICAgIGVs
ZW1lbnQuYWRkU3R5bGVDbGFzcygiY29uc29sZS1ncm91cC10aXRsZSIpOworCisgICAgICAgIGVs
ZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZm9ybWF0dGVkTWVzc2FnZSk7CisKKyAgICAgICAgaWYg
KHRoaXMucmVwZWF0Q291bnQgPiAxKQorICAgICAgICAgICAgdGhpcy5fdXBkYXRlUmVwZWF0Q291
bnQoKTsKKworICAgICAgICByZXR1cm4gZWxlbWVudDsKKyAgICB9LAorCisgICAgX3BvcHVsYXRl
U3RhY2tUcmFjZVRyZWVFbGVtZW50OiBmdW5jdGlvbihwYXJlbnRUcmVlRWxlbWVudCkKKyAgICB7
CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc3RhY2tUcmFjZS5sZW5ndGg7IGkr
KykgeworICAgICAgICAgICAgdmFyIGZyYW1lID0gdGhpcy5fc3RhY2tUcmFjZVtpXTsKKworICAg
ICAgICAgICAgdmFyIGNvbnRlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAg
ICAgICAgICAgIHZhciBtZXNzYWdlVGV4dEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJzcGFuIik7CisgICAgICAgICAgICBtZXNzYWdlVGV4dEVsZW1lbnQuY2xhc3NOYW1lID0gImNv
bnNvbGUtbWVzc2FnZS10ZXh0IHNvdXJjZS1jb2RlIjsKKyAgICAgICAgICAgIHZhciBmdW5jdGlv
bk5hbWUgPSBmcmFtZS5mdW5jdGlvbk5hbWUgfHwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIoYW5v
bnltb3VzIGZ1bmN0aW9uKSIpOworICAgICAgICAgICAgbWVzc2FnZVRleHRFbGVtZW50LmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGZ1bmN0aW9uTmFtZSkpOworICAgICAgICAg
ICAgY29udGVudC5hcHBlbmRDaGlsZChtZXNzYWdlVGV4dEVsZW1lbnQpOworCisgICAgICAgICAg
ICBpZiAoZnJhbWUudXJsKSB7CisgICAgICAgICAgICAgICAgdmFyIHVybEVsZW1lbnQgPSB0aGlz
Ll9saW5raWZ5Q2FsbEZyYW1lKGZyYW1lKTsKKyAgICAgICAgICAgICAgICBjb250ZW50LmFwcGVu
ZENoaWxkKHVybEVsZW1lbnQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgdHJl
ZUVsZW1lbnQgPSBuZXcgVHJlZUVsZW1lbnQoY29udGVudCk7CisgICAgICAgICAgICBwYXJlbnRU
cmVlRWxlbWVudC5hcHBlbmRDaGlsZCh0cmVlRWxlbWVudCk7CisgICAgICAgIH0KKyAgICB9LAor
CisgICAgX3VwZGF0ZVJlcGVhdENvdW50OiBmdW5jdGlvbigpIHsKKyAgICAgICAgaWYgKCF0aGlz
LnJlcGVhdENvdW50RWxlbWVudCkgeworICAgICAgICAgICAgdGhpcy5yZXBlYXRDb3VudEVsZW1l
bnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgICAgICAgICB0aGlzLnJl
cGVhdENvdW50RWxlbWVudC5jbGFzc05hbWUgPSAiYnViYmxlIjsKKworICAgICAgICAgICAgdGhp
cy5fZWxlbWVudC5pbnNlcnRCZWZvcmUodGhpcy5yZXBlYXRDb3VudEVsZW1lbnQsIHRoaXMuX2Vs
ZW1lbnQuZmlyc3RDaGlsZCk7CisgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmFkZFN0eWxlQ2xh
c3MoInJlcGVhdGVkLW1lc3NhZ2UiKTsKKyAgICAgICAgfQorICAgICAgICB0aGlzLnJlcGVhdENv
dW50RWxlbWVudC50ZXh0Q29udGVudCA9IHRoaXMucmVwZWF0Q291bnQ7CisgICAgfSwKKworICAg
IHRvU3RyaW5nOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgc291cmNlU3RyaW5nOwor
ICAgICAgICBzd2l0Y2ggKHRoaXMuc291cmNlKSB7CisgICAgICAgICAgICBjYXNlIFdlYkluc3Bl
Y3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlU291cmNlLkhUTUw6CisgICAgICAgICAgICAgICAg
c291cmNlU3RyaW5nID0gIkhUTUwiOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgY2FzZSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVNvdXJjZS5YTUw6Cisg
ICAgICAgICAgICAgICAgc291cmNlU3RyaW5nID0gIlhNTCI7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdl
U291cmNlLkpTOgorICAgICAgICAgICAgICAgIHNvdXJjZVN0cmluZyA9ICJKUyI7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5Db25zb2xlTWVz
c2FnZS5NZXNzYWdlU291cmNlLkNTUzoKKyAgICAgICAgICAgICAgICBzb3VyY2VTdHJpbmcgPSAi
Q1NTIjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVj
dG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VTb3VyY2UuT3RoZXI6CisgICAgICAgICAgICAgICAg
c291cmNlU3RyaW5nID0gIk90aGVyIjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorCisgICAgICAgIHZhciB0eXBlU3RyaW5nOworICAgICAgICBzd2l0Y2ggKHRoaXMudHlwZSkg
eworICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5
cGUuTG9nOgorICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVz
c2FnZVR5cGUuVW5jYXVnaHRFeGNlcHRpb246CisgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rv
ci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5OZXR3b3JrRXJyb3I6CisgICAgICAgICAgICAg
ICAgdHlwZVN0cmluZyA9ICJMb2ciOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgY2FzZSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuT2JqZWN0Ogor
ICAgICAgICAgICAgICAgIHR5cGVTdHJpbmcgPSAiT2JqZWN0IjsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3Nh
Z2VUeXBlLlRyYWNlOgorICAgICAgICAgICAgICAgIHR5cGVTdHJpbmcgPSAiVHJhY2UiOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuQ29uc29s
ZU1lc3NhZ2UuTWVzc2FnZVR5cGUuU3RhcnRHcm91cENvbGxhcHNlZDoKKyAgICAgICAgICAgIGNh
c2UgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLlN0YXJ0R3JvdXA6Cisg
ICAgICAgICAgICAgICAgdHlwZVN0cmluZyA9ICJTdGFydCBHcm91cCI7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5N
ZXNzYWdlVHlwZS5FbmRHcm91cDoKKyAgICAgICAgICAgICAgICB0eXBlU3RyaW5nID0gIkVuZCBH
cm91cCI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFdlYkluc3Bl
Y3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5Bc3NlcnQ6CisgICAgICAgICAgICAgICAg
dHlwZVN0cmluZyA9ICJBc3NlcnQiOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgY2FzZSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuUmVzdWx0Ogor
ICAgICAgICAgICAgICAgIHR5cGVTdHJpbmcgPSAiUmVzdWx0IjsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBsZXZlbFN0cmluZzsKKyAgICAgICAgc3dp
dGNoICh0aGlzLmxldmVsKSB7CisgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5Db25zb2xl
TWVzc2FnZS5NZXNzYWdlTGV2ZWwuVGlwOgorICAgICAgICAgICAgICAgIGxldmVsU3RyaW5nID0g
IlRpcCI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFdlYkluc3Bl
Y3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuTG9nOgorICAgICAgICAgICAgICAgIGxl
dmVsU3RyaW5nID0gIkxvZyI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuV2FybmluZzoKKyAg
ICAgICAgICAgICAgICBsZXZlbFN0cmluZyA9ICJXYXJuaW5nIjsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3Nh
Z2VMZXZlbC5EZWJ1ZzoKKyAgICAgICAgICAgICAgICBsZXZlbFN0cmluZyA9ICJEZWJ1ZyI7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5Db25z
b2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuRXJyb3I6CisgICAgICAgICAgICAgICAgbGV2ZWxTdHJp
bmcgPSAiRXJyb3IiOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAg
ICAgcmV0dXJuIHNvdXJjZVN0cmluZyArICIgIiArIHR5cGVTdHJpbmcgKyAiICIgKyBsZXZlbFN0
cmluZyArICI6ICIgKyB0aGlzLl9mb3JtYXR0ZWRNZXNzYWdlLnRleHRDb250ZW50ICsgIlxuIiAr
IHRoaXMudXJsICsgIiBsaW5lICIgKyB0aGlzLmxpbmU7CisgICAgfSwKKworICAgIGlzRXF1YWw6
IGZ1bmN0aW9uKG1zZykKKyAgICB7CisgICAgICAgIGlmICghbXNnKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgICAgIGlmICh0aGlzLl9zdGFja1RyYWNlKSB7CisgICAgICAgICAg
ICBpZiAoIW1zZy5fc3RhY2tUcmFjZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICB2YXIgbCA9IHRoaXMuX3N0YWNrVHJhY2U7CisgICAgICAgICAgICB2YXIgciA9
IG1zZy5fc3RhY2tUcmFjZTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbC5sZW5n
dGg7IGkrKykgeworICAgICAgICAgICAgICAgIGlmIChsW2ldLnVybCAhPT0gcltpXS51cmwgfHwK
KyAgICAgICAgICAgICAgICAgICAgbFtpXS5mdW5jdGlvbk5hbWUgIT09IHJbaV0uZnVuY3Rpb25O
YW1lIHx8CisgICAgICAgICAgICAgICAgICAgIGxbaV0ubGluZU51bWJlciAhPT0gcltpXS5saW5l
TnVtYmVyIHx8CisgICAgICAgICAgICAgICAgICAgIGxbaV0uY29sdW1uTnVtYmVyICE9PSByW2ld
LmNvbHVtbk51bWJlcikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuICh0aGlzLnNvdXJjZSA9PT0gbXNn
LnNvdXJjZSkKKyAgICAgICAgICAgICYmICh0aGlzLnR5cGUgPT09IG1zZy50eXBlKQorICAgICAg
ICAgICAgJiYgKHRoaXMubGV2ZWwgPT09IG1zZy5sZXZlbCkKKyAgICAgICAgICAgICYmICh0aGlz
LmxpbmUgPT09IG1zZy5saW5lKQorICAgICAgICAgICAgJiYgKHRoaXMudXJsID09PSBtc2cudXJs
KQorICAgICAgICAgICAgJiYgKHRoaXMubWVzc2FnZSA9PT0gbXNnLm1lc3NhZ2UpCisgICAgICAg
ICAgICAmJiAodGhpcy5fcmVxdWVzdElkID09PSBtc2cuX3JlcXVlc3RJZCk7CisgICAgfSwKKwor
ICAgIGdldCBzdGFja1RyYWNlKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9zdGFja1Ry
YWNlOworICAgIH0KK30KKworLy8gTm90ZTogS2VlcCB0aGVzZSBjb25zdGFudHMgaW4gc3luYyB3
aXRoIHRoZSBvbmVzIGluIENvbnNvbGUuaAorV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1l
c3NhZ2VTb3VyY2UgPSB7CisgICAgSFRNTDogImh0bWwiLAorICAgIFhNTDogInhtbCIsCisgICAg
SlM6ICJqYXZhc2NyaXB0IiwKKyAgICBDU1M6ICJjc3MiLAorICAgIE90aGVyOiAib3RoZXIiCit9
CisKK1dlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZSA9IHsKKyAgICBMb2c6
ICJsb2ciLAorICAgIE9iamVjdDogIm90aGVyIiwKKyAgICBUcmFjZTogInRyYWNlIiwKKyAgICBT
dGFydEdyb3VwOiAic3RhcnRHcm91cCIsCisgICAgU3RhcnRHcm91cENvbGxhcHNlZDogInN0YXJ0
R3JvdXBDb2xsYXBzZWQiLAorICAgIEVuZEdyb3VwOiAiZW5kR3JvdXAiLAorICAgIEFzc2VydDog
ImFzc2VydCIsCisgICAgVW5jYXVnaHRFeGNlcHRpb246ICJ1bmNhdWdodEV4Y2VwdGlvbiIsCisg
ICAgTmV0d29ya0Vycm9yOiAibmV0d29ya0Vycm9yIiwKKyAgICBSZXN1bHQ6ICJyZXN1bHQiCit9
CisKK1dlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwgPSB7CisgICAgVGlw
OiAidGlwIiwKKyAgICBMb2c6ICJsb2ciLAorICAgIFdhcm5pbmc6ICJ3YXJuaW5nIiwKKyAgICBF
cnJvcjogImVycm9yIiwKKyAgICBEZWJ1ZzogImRlYnVnIgorfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanMKaW5kZXggYmZmY2FhNjBjZDVm
MTg2N2QxZGUxMDYzY2M2YmE3YmJlMGIxYmU4Yi4uMDk2MjM3NzhmZjk5Njg1YmM1NzY5ZGZlMmRj
NzVkZGNlMDMzYWRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9Db25zb2xlVmlldy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0NvbnNvbGVWaWV3LmpzCkBAIC03OTgsNDYxICs3OTgsNiBAQCBXZWJJbnNwZWN0b3IuQ29u
c29sZVZpZXcucHJvdG90eXBlID0gewogCiBXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90
eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlwZTsKIAotV2ViSW5zcGVj
dG9yLkNvbnNvbGVNZXNzYWdlID0gZnVuY3Rpb24oc291cmNlLCB0eXBlLCBsZXZlbCwgbGluZSwg
dXJsLCByZXBlYXRDb3VudCwgbWVzc2FnZSwgcGFyYW1ldGVycywgc3RhY2tUcmFjZSwgcmVxdWVz
dElkKQotewotICAgIHRoaXMuc291cmNlID0gc291cmNlOwotICAgIHRoaXMudHlwZSA9IHR5cGU7
Ci0gICAgdGhpcy5sZXZlbCA9IGxldmVsOwotICAgIHRoaXMubGluZSA9IGxpbmU7Ci0gICAgdGhp
cy51cmwgPSB1cmw7Ci0gICAgdGhpcy5yZXBlYXRDb3VudCA9IHJlcGVhdENvdW50OwotICAgIHRo
aXMucmVwZWF0RGVsdGEgPSByZXBlYXRDb3VudDsKLSAgICB0aGlzLnRvdGFsUmVwZWF0Q291bnQg
PSByZXBlYXRDb3VudDsKLSAgICB0aGlzLl9tZXNzYWdlVGV4dCA9IG1lc3NhZ2U7Ci0gICAgdGhp
cy5fcGFyYW1ldGVycyA9IHBhcmFtZXRlcnM7Ci0gICAgdGhpcy5fc3RhY2tUcmFjZSA9IHN0YWNr
VHJhY2U7Ci0gICAgdGhpcy5fcmVxdWVzdElkID0gcmVxdWVzdElkOwotCi0gICAgaWYgKHN0YWNr
VHJhY2UgJiYgc3RhY2tUcmFjZS5sZW5ndGgpIHsKLSAgICAgICAgdmFyIHRvcENhbGxGcmFtZSA9
IHN0YWNrVHJhY2VbMF07Ci0gICAgICAgIGlmICghdGhpcy51cmwpCi0gICAgICAgICAgICB0aGlz
LnVybCA9IHRvcENhbGxGcmFtZS51cmw7Ci0gICAgICAgIGlmICghdGhpcy5saW5lKQotICAgICAg
ICAgICAgdGhpcy5saW5lID0gdG9wQ2FsbEZyYW1lLmxpbmVOdW1iZXI7Ci0gICAgfQotCi0gICAg
dGhpcy5fZm9ybWF0TWVzc2FnZSgpOwotfQotCi1XZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2Uu
Y3JlYXRlVGV4dE1lc3NhZ2UgPSBmdW5jdGlvbih0ZXh0LCBsZXZlbCkKLXsKLSAgICBsZXZlbCA9
IGxldmVsIHx8IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuTG9nOwot
ICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlKFdlYkluc3BlY3Rvci5D
b25zb2xlTWVzc2FnZS5NZXNzYWdlU291cmNlLkpTLCBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3Nh
Z2UuTWVzc2FnZVR5cGUuTG9nLCBsZXZlbCwgMCwgbnVsbCwgMSwgbnVsbCwgW3RleHRdLCBudWxs
KTsKLX0KLQotV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLnByb3RvdHlwZSA9IHsKLSAgICBf
Zm9ybWF0TWVzc2FnZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdmFyIHN0YWNrVHJhY2Ug
PSB0aGlzLl9zdGFja1RyYWNlOwotICAgICAgICB2YXIgbWVzc2FnZVRleHQ7Ci0gICAgICAgIHN3
aXRjaCAodGhpcy50eXBlKSB7Ci0gICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5Db25zb2xl
TWVzc2FnZS5NZXNzYWdlVHlwZS5UcmFjZToKLSAgICAgICAgICAgICAgICBtZXNzYWdlVGV4dCA9
IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJjb25zb2xlLnRyYWNlKCkiKTsKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdl
Lk1lc3NhZ2VUeXBlLlVuY2F1Z2h0RXhjZXB0aW9uOgotICAgICAgICAgICAgICAgIG1lc3NhZ2VU
ZXh0ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGhpcy5fbWVzc2FnZVRleHQpOwotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuQ29uc29sZU1l
c3NhZ2UuTWVzc2FnZVR5cGUuTmV0d29ya0Vycm9yOgotICAgICAgICAgICAgICAgIHZhciByZXNv
dXJjZSA9IHRoaXMuX3JlcXVlc3RJZCAmJiBXZWJJbnNwZWN0b3IubmV0d29ya1Jlc291cmNlQnlJ
ZCh0aGlzLl9yZXF1ZXN0SWQpOwotICAgICAgICAgICAgICAgIGlmIChyZXNvdXJjZSkgewotICAg
ICAgICAgICAgICAgICAgICBzdGFja1RyYWNlID0gcmVzb3VyY2Uuc3RhY2tUcmFjZTsKLQotICAg
ICAgICAgICAgICAgICAgICBtZXNzYWdlVGV4dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNw
YW4iKTsKLSAgICAgICAgICAgICAgICAgICAgbWVzc2FnZVRleHQuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUocmVzb3VyY2UucmVxdWVzdE1ldGhvZCArICIgIikpOwotICAgICAg
ICAgICAgICAgICAgICBtZXNzYWdlVGV4dC5hcHBlbmRDaGlsZChXZWJJbnNwZWN0b3IubGlua2lm
eVVSTEFzTm9kZShyZXNvdXJjZS51cmwpKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHJlc291
cmNlLmZhaWxlZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VUZXh0LmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIgIiArIHJlc291cmNlLmxvY2FsaXplZEZhaWxE
ZXNjcmlwdGlvbikpOwotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
ICAgICAgICBtZXNzYWdlVGV4dC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgi
ICIgKyByZXNvdXJjZS5zdGF0dXNDb2RlICsgIiAoIiArIHJlc291cmNlLnN0YXR1c1RleHQgKyAi
KSIpKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgbWVzc2Fn
ZVRleHQgPSB0aGlzLl9mb3JtYXQoW3RoaXMuX21lc3NhZ2VUZXh0XSk7Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5N
ZXNzYWdlVHlwZS5Bc3NlcnQ6Ci0gICAgICAgICAgICAgICAgdmFyIGFyZ3MgPSBbV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJBc3NlcnRpb24gZmFpbGVkOiIpXTsKLSAgICAgICAgICAgICAgICBpZiAo
dGhpcy5fcGFyYW1ldGVycykKLSAgICAgICAgICAgICAgICAgICAgYXJncyA9IGFyZ3MuY29uY2F0
KHRoaXMuX3BhcmFtZXRlcnMpOwotICAgICAgICAgICAgICAgIG1lc3NhZ2VUZXh0ID0gdGhpcy5f
Zm9ybWF0KGFyZ3MpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBX
ZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuT2JqZWN0OgotICAgICAgICAg
ICAgICAgIHZhciBvYmogPSB0aGlzLl9wYXJhbWV0ZXJzID8gdGhpcy5fcGFyYW1ldGVyc1swXSA6
IHVuZGVmaW5lZDsKLSAgICAgICAgICAgICAgICB2YXIgYXJncyA9IFsiJU8iLCBvYmpdOwotICAg
ICAgICAgICAgICAgIG1lc3NhZ2VUZXh0ID0gdGhpcy5fZm9ybWF0KGFyZ3MpOwotICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICB2YXIg
YXJncyA9IHRoaXMuX3BhcmFtZXRlcnMgfHwgW3RoaXMuX21lc3NhZ2VUZXh0XTsKLSAgICAgICAg
ICAgICAgICBtZXNzYWdlVGV4dCA9IHRoaXMuX2Zvcm1hdChhcmdzKTsKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMuX2Zvcm1hdHRlZE1lc3NhZ2UgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7Ci0gICAgICAgIHRoaXMuX2Zvcm1hdHRlZE1l
c3NhZ2UuY2xhc3NOYW1lID0gImNvbnNvbGUtbWVzc2FnZS10ZXh0IHNvdXJjZS1jb2RlIjsKLQot
ICAgICAgICBpZiAodGhpcy5fc3RhY2tUcmFjZSAmJiB0aGlzLl9zdGFja1RyYWNlLmxlbmd0aCAm
JiB0aGlzLl9zdGFja1RyYWNlWzBdLnVybCkgewotICAgICAgICAgICAgdmFyIHVybEVsZW1lbnQg
PSB0aGlzLl9saW5raWZ5Q2FsbEZyYW1lKHRoaXMuX3N0YWNrVHJhY2VbMF0pOwotICAgICAgICAg
ICAgdGhpcy5fZm9ybWF0dGVkTWVzc2FnZS5hcHBlbmRDaGlsZCh1cmxFbGVtZW50KTsKLSAgICAg
ICAgfSBlbHNlIGlmICh0aGlzLnVybCAmJiB0aGlzLnVybCAhPT0gInVuZGVmaW5lZCIpIHsKLSAg
ICAgICAgICAgIHZhciB1cmxFbGVtZW50ID0gdGhpcy5fbGlua2lmeUxvY2F0aW9uKHRoaXMudXJs
LCB0aGlzLmxpbmUsIDApOwotICAgICAgICAgICAgdGhpcy5fZm9ybWF0dGVkTWVzc2FnZS5hcHBl
bmRDaGlsZCh1cmxFbGVtZW50KTsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMuX2Zvcm1hdHRl
ZE1lc3NhZ2UuYXBwZW5kQ2hpbGQobWVzc2FnZVRleHQpOwotCi0gICAgICAgIGlmICh0aGlzLl9z
dGFja1RyYWNlKSB7Ci0gICAgICAgICAgICBzd2l0Y2ggKHRoaXMudHlwZSkgewotICAgICAgICAg
ICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLlRyYWNl
OgotICAgICAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3Nh
Z2VUeXBlLlVuY2F1Z2h0RXhjZXB0aW9uOgotICAgICAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVj
dG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLk5ldHdvcmtFcnJvcjoKLSAgICAgICAgICAg
ICAgICBjYXNlIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5Bc3NlcnQ6
IHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIG9sID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
b2wiKTsKLSAgICAgICAgICAgICAgICAgICAgb2wuY2xhc3NOYW1lID0gIm91dGxpbmUtZGlzY2xv
c3VyZSI7Ci0gICAgICAgICAgICAgICAgICAgIHZhciB0cmVlT3V0bGluZSA9IG5ldyBUcmVlT3V0
bGluZShvbCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgdmFyIGNvbnRlbnQgPSB0aGlzLl9mb3Jt
YXR0ZWRNZXNzYWdlOwotICAgICAgICAgICAgICAgICAgICB2YXIgcm9vdCA9IG5ldyBUcmVlRWxl
bWVudChjb250ZW50LCBudWxsLCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgY29udGVudC50
cmVlRWxlbWVudEZvclRlc3QgPSByb290OwotICAgICAgICAgICAgICAgICAgICB0cmVlT3V0bGlu
ZS5hcHBlbmRDaGlsZChyb290KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudHlwZSA9
PT0gV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLlRyYWNlKQotICAgICAg
ICAgICAgICAgICAgICAgICAgcm9vdC5leHBhbmQoKTsKLQotICAgICAgICAgICAgICAgICAgICB0
aGlzLl9wb3B1bGF0ZVN0YWNrVHJhY2VUcmVlRWxlbWVudChyb290KTsKLSAgICAgICAgICAgICAg
ICAgICAgdGhpcy5fZm9ybWF0dGVkTWVzc2FnZSA9IG9sOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vIFRoaXMgaXMgdXNlZCBmb3IgaW5s
aW5lIG1lc3NhZ2UgYnViYmxlcyBpbiBTb3VyY2VGcmFtZXMsIG9yIG90aGVyIHBsYWluLXRleHQg
cmVwcmVzZW50YXRpb25zLgotICAgICAgICB0aGlzLm1lc3NhZ2UgPSAodXJsRWxlbWVudCA/IHVy
bEVsZW1lbnQudGV4dENvbnRlbnQgKyAiICIgOiAiIikgKyBtZXNzYWdlVGV4dC50ZXh0Q29udGVu
dDsKLSAgICB9LAotCi0gICAgX2xpbmtpZnlMb2NhdGlvbjogZnVuY3Rpb24odXJsLCBsaW5lTnVt
YmVyLCBjb2x1bW5OdW1iZXIpCi0gICAgewotICAgICAgICAvLyBGSVhNRSg2MjcyNSk6IHN0YWNr
IHRyYWNlIGxpbmUvY29sdW1uIG51bWJlcnMgYXJlIG9uZS1iYXNlZC4KLSAgICAgICAgbGluZU51
bWJlciA9IGxpbmVOdW1iZXIgPyBsaW5lTnVtYmVyIC0gMSA6IHVuZGVmaW5lZDsKLSAgICAgICAg
Y29sdW1uTnVtYmVyID0gY29sdW1uTnVtYmVyID8gY29sdW1uTnVtYmVyIC0gMSA6IDA7Ci0gICAg
ICAgIHJldHVybiBXZWJJbnNwZWN0b3IuZGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5saW5raWZ5
TG9jYXRpb24odXJsLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsICJjb25zb2xlLW1lc3NhZ2Ut
dXJsIik7Ci0gICAgfSwKLQotICAgIF9saW5raWZ5Q2FsbEZyYW1lOiBmdW5jdGlvbihjYWxsRnJh
bWUpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fbGlua2lmeUxvY2F0aW9uKGNhbGxGcmFt
ZS51cmwsIGNhbGxGcmFtZS5saW5lTnVtYmVyLCBjYWxsRnJhbWUuY29sdW1uTnVtYmVyKTsKLSAg
ICB9LAotCi0gICAgaXNFcnJvck9yV2FybmluZzogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAg
cmV0dXJuICh0aGlzLmxldmVsID09PSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2Fn
ZUxldmVsLldhcm5pbmcgfHwgdGhpcy5sZXZlbCA9PT0gV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNz
YWdlLk1lc3NhZ2VMZXZlbC5FcnJvcik7Ci0gICAgfSwKLQotICAgIF9mb3JtYXQ6IGZ1bmN0aW9u
KHBhcmFtZXRlcnMpCi0gICAgewotICAgICAgICAvLyBUaGlzIG5vZGUgaXMgdXNlZCBsaWtlIGEg
QnVpbGRlci4gVmFsdWVzIGFyZSBjb250aW51YWxseSBhcHBlbmRlZCBvbnRvIGl0LgotICAgICAg
ICB2YXIgZm9ybWF0dGVkUmVzdWx0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwot
ICAgICAgICBpZiAoIXBhcmFtZXRlcnMubGVuZ3RoKQotICAgICAgICAgICAgcmV0dXJuIGZvcm1h
dHRlZFJlc3VsdDsKLQotICAgICAgICAvLyBGb3JtYXR0aW5nIGNvZGUgYmVsb3cgYXNzdW1lcyB0
aGF0IHBhcmFtZXRlcnMgYXJlIGFsbCB3cmFwcGVycyB3aGVyZWFzIGZyb250ZW5kIGNvbnNvbGUK
LSAgICAgICAgLy8gQVBJIGFsbG93cyBwYXNzaW5nIGFyYml0cmFyeSB2YWx1ZXMgYXMgbWVzc2Fn
ZXMgKHN0cmluZ3MsIG51bWJlcnMsIGV0Yy4pLiBXcmFwIHRoZW0gaGVyZS4KLSAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAv
LyBGSVhNRTogT25seSBwYXNzIHJ1bnRpbWUgd3JhcHBlcnMgaGVyZS4KLSAgICAgICAgICAgIGlm
IChwYXJhbWV0ZXJzW2ldIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdCkKLSAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgaWYgKHR5cGVvZiBwYXJhbWV0
ZXJzW2ldID09PSAib2JqZWN0IikKLSAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzW2ldID0gV2Vi
SW5zcGVjdG9yLlJlbW90ZU9iamVjdC5mcm9tUGF5bG9hZChwYXJhbWV0ZXJzW2ldKTsKLSAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzW2ldID0gV2ViSW5zcGVjdG9y
LlJlbW90ZU9iamVjdC5mcm9tUHJpbWl0aXZlVmFsdWUocGFyYW1ldGVyc1tpXSk7Ci0gICAgICAg
IH0KLQotICAgICAgICAvLyBUaGVyZSBjYW4gYmUgc3RyaW5nIGxvZyBhbmQgc3RyaW5nIGV2YWwg
cmVzdWx0LiBXZSBkaXN0aW5ndWlzaCBiZXR3ZWVuIHRoZW0gYmFzZWQgb24gbWVzc2FnZSB0eXBl
LgotICAgICAgICB2YXIgc2hvdWxkRm9ybWF0TWVzc2FnZSA9IFdlYkluc3BlY3Rvci5SZW1vdGVP
YmplY3QudHlwZShwYXJhbWV0ZXJzWzBdKSA9PT0gInN0cmluZyIgJiYgdGhpcy50eXBlICE9PSBX
ZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuUmVzdWx0OwotCi0gICAgICAg
IC8vIE11bHRpcGxlIHBhcmFtZXRlcnMgd2l0aCB0aGUgZmlyc3QgYmVpbmcgYSBmb3JtYXQgc3Ry
aW5nLiBTYXZlIHVudXNlZCBzdWJzdGl0dXRpb25zLgotICAgICAgICBpZiAoc2hvdWxkRm9ybWF0
TWVzc2FnZSkgewotICAgICAgICAgICAgLy8gTXVsdGlwbGUgcGFyYW1ldGVycyB3aXRoIHRoZSBm
aXJzdCBiZWluZyBhIGZvcm1hdCBzdHJpbmcuIFNhdmUgdW51c2VkIHN1YnN0aXR1dGlvbnMuCi0g
ICAgICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5fZm9ybWF0V2l0aFN1YnN0aXR1dGlvblN0cmlu
ZyhwYXJhbWV0ZXJzLCBmb3JtYXR0ZWRSZXN1bHQpOwotICAgICAgICAgICAgcGFyYW1ldGVycyA9
IHJlc3VsdC51bnVzZWRTdWJzdGl0dXRpb25zOwotICAgICAgICAgICAgaWYgKHBhcmFtZXRlcnMu
bGVuZ3RoKQotICAgICAgICAgICAgICAgIGZvcm1hdHRlZFJlc3VsdC5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZSgiICIpKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFNpbmds
ZSBwYXJhbWV0ZXIsIG9yIHVudXNlZCBzdWJzdGl0dXRpb25zIGZyb20gYWJvdmUuCi0gICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgcGFyYW1ldGVycy5sZW5ndGg7ICsraSkgewotICAgICAgICAg
ICAgLy8gSW5saW5lIHN0cmluZ3Mgd2hlbiBmb3JtYXR0aW5nLgotICAgICAgICAgICAgaWYgKHNo
b3VsZEZvcm1hdE1lc3NhZ2UgJiYgcGFyYW1ldGVyc1tpXS50eXBlID09PSAic3RyaW5nIikKLSAg
ICAgICAgICAgICAgICBmb3JtYXR0ZWRSZXN1bHQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
VGV4dE5vZGUocGFyYW1ldGVyc1tpXS5kZXNjcmlwdGlvbikpOwotICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIGZvcm1hdHRlZFJlc3VsdC5hcHBlbmRDaGlsZChXZWJJbnNwZWN0b3Iu
Y29uc29sZS5fZm9ybWF0KHBhcmFtZXRlcnNbaV0pKTsKLSAgICAgICAgICAgIGlmIChpIDwgcGFy
YW1ldGVycy5sZW5ndGggLSAxKQotICAgICAgICAgICAgICAgIGZvcm1hdHRlZFJlc3VsdC5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiICIpKTsKLSAgICAgICAgfQotICAgICAg
ICByZXR1cm4gZm9ybWF0dGVkUmVzdWx0OwotICAgIH0sCi0KLSAgICBfZm9ybWF0V2l0aFN1YnN0
aXR1dGlvblN0cmluZzogZnVuY3Rpb24ocGFyYW1ldGVycywgZm9ybWF0dGVkUmVzdWx0KQotICAg
IHsKLSAgICAgICAgdmFyIGZvcm1hdHRlcnMgPSB7fQotCi0gICAgICAgIGZ1bmN0aW9uIGNvbnNv
bGVGb3JtYXRXcmFwcGVyKGZvcmNlKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZnVu
Y3Rpb24ob2JqKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5jb25zb2xl
Ll9mb3JtYXQob2JqLCBmb3JjZSk7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9Ci0KLSAgICAg
ICAgZnVuY3Rpb24gdmFsdWVGb3JtYXR0ZXIob2JqKQotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gb2JqLmRlc2NyaXB0aW9uOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gRmlyZWJ1ZyB1
c2VzICVvIGZvciBmb3JtYXR0aW5nIG9iamVjdHMuCi0gICAgICAgIGZvcm1hdHRlcnMubyA9IGNv
bnNvbGVGb3JtYXRXcmFwcGVyKCk7Ci0gICAgICAgIGZvcm1hdHRlcnMucyA9IHZhbHVlRm9ybWF0
dGVyOwotICAgICAgICBmb3JtYXR0ZXJzLmYgPSB2YWx1ZUZvcm1hdHRlcjsKLSAgICAgICAgLy8g
RmlyZWJ1ZyBhbGxvd3MgYm90aCAlaSBhbmQgJWQgZm9yIGZvcm1hdHRpbmcgaW50ZWdlcnMuCi0g
ICAgICAgIGZvcm1hdHRlcnMuaSA9IHZhbHVlRm9ybWF0dGVyOwotICAgICAgICBmb3JtYXR0ZXJz
LmQgPSB2YWx1ZUZvcm1hdHRlcjsKLQotICAgICAgICAvLyBTdXBwb3J0ICVPIHRvIGZvcmNlIG9i
amVjdCBmb3JtYXR0aW5nLCBpbnN0ZWFkIG9mIHRoZSB0eXBlLWJhc2VkICVvIGZvcm1hdHRpbmcu
Ci0gICAgICAgIGZvcm1hdHRlcnMuTyA9IGNvbnNvbGVGb3JtYXRXcmFwcGVyKHRydWUpOwotCi0g
ICAgICAgIGZ1bmN0aW9uIGFwcGVuZChhLCBiKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAo
IShiIGluc3RhbmNlb2YgTm9kZSkpCi0gICAgICAgICAgICAgICAgYS5hcHBlbmRDaGlsZChXZWJJ
bnNwZWN0b3IubGlua2lmeVN0cmluZ0FzRnJhZ21lbnQoYi50b1N0cmluZygpKSk7Ci0gICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYS5hcHBlbmRDaGlsZChiKTsKLSAgICAgICAgICAg
IHJldHVybiBhOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gU3RyaW5nLmZvcm1hdCBkb2VzIHRy
ZWF0IGZvcm1hdHRlZFJlc3VsdCBsaWtlIGEgQnVpbGRlciwgcmVzdWx0IGlzIGFuIG9iamVjdC4K
LSAgICAgICAgcmV0dXJuIFN0cmluZy5mb3JtYXQocGFyYW1ldGVyc1swXS5kZXNjcmlwdGlvbiwg
cGFyYW1ldGVycy5zbGljZSgxKSwgZm9ybWF0dGVycywgZm9ybWF0dGVkUmVzdWx0LCBhcHBlbmQp
OwotICAgIH0sCi0KLSAgICBjbGVhckhpZ2hsaWdodDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAg
ICAgdmFyIGhpZ2hsaWdodGVkTWVzc2FnZSA9IHRoaXMuX2Zvcm1hdHRlZE1lc3NhZ2U7Ci0gICAg
ICAgIGRlbGV0ZSB0aGlzLl9mb3JtYXR0ZWRNZXNzYWdlOwotICAgICAgICB0aGlzLl9mb3JtYXRN
ZXNzYWdlKCk7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQucmVwbGFjZUNoaWxkKHRoaXMuX2Zvcm1h
dHRlZE1lc3NhZ2UsIGhpZ2hsaWdodGVkTWVzc2FnZSk7Ci0gICAgfSwKLQotICAgIGhpZ2hsaWdo
dFNlYXJjaFJlc3VsdHM6IGZ1bmN0aW9uKHJlZ2V4T2JqZWN0KQotICAgIHsKLSAgICAgICAgcmVn
ZXhPYmplY3QubGFzdEluZGV4ID0gMDsKLSAgICAgICAgdmFyIHRleHQgPSB0aGlzLm1lc3NhZ2U7
Ci0gICAgICAgIHZhciBtYXRjaCA9IHJlZ2V4T2JqZWN0LmV4ZWModGV4dCk7Ci0gICAgICAgIHZh
ciBvZmZzZXQgPSAwOwotICAgICAgICB2YXIgbWF0Y2hSYW5nZXMgPSBbXTsKLSAgICAgICAgd2hp
bGUgKG1hdGNoKSB7Ci0gICAgICAgICAgICBtYXRjaFJhbmdlcy5wdXNoKHsgb2Zmc2V0OiBtYXRj
aC5pbmRleCwgbGVuZ3RoOiBtYXRjaFswXS5sZW5ndGggfSk7Ci0gICAgICAgICAgICBtYXRjaCA9
IHJlZ2V4T2JqZWN0LmV4ZWModGV4dCk7Ci0gICAgICAgIH0KLSAgICAgICAgaGlnaGxpZ2h0U2Vh
cmNoUmVzdWx0cyh0aGlzLl9mb3JtYXR0ZWRNZXNzYWdlLCBtYXRjaFJhbmdlcyk7Ci0gICAgICAg
IHRoaXMuX2VsZW1lbnQuc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCgpOwotICAgIH0sCi0KLSAgICBt
YXRjaGVzUmVnZXg6IGZ1bmN0aW9uKHJlZ2V4T2JqZWN0KQotICAgIHsKLSAgICAgICAgcmV0dXJu
IHJlZ2V4T2JqZWN0LnRlc3QodGhpcy5tZXNzYWdlKTsKLSAgICB9LAotCi0gICAgdG9NZXNzYWdl
RWxlbWVudDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX2VsZW1lbnQpCi0g
ICAgICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudDsKLQotICAgICAgICB2YXIgZWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICBlbGVtZW50Lm1lc3NhZ2Ug
PSB0aGlzOwotICAgICAgICBlbGVtZW50LmNsYXNzTmFtZSA9ICJjb25zb2xlLW1lc3NhZ2UiOwot
Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQgPSBlbGVtZW50OwotCi0gICAgICAgIHN3aXRjaCAodGhp
cy5sZXZlbCkgewotICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2Uu
TWVzc2FnZUxldmVsLlRpcDoKLSAgICAgICAgICAgICAgICBlbGVtZW50LmFkZFN0eWxlQ2xhc3Mo
ImNvbnNvbGUtdGlwLWxldmVsIik7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICBjYXNlIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuTG9nOgotICAg
ICAgICAgICAgICAgIGVsZW1lbnQuYWRkU3R5bGVDbGFzcygiY29uc29sZS1sb2ctbGV2ZWwiKTsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkNv
bnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZlbC5EZWJ1ZzoKLSAgICAgICAgICAgICAgICBlbGVtZW50
LmFkZFN0eWxlQ2xhc3MoImNvbnNvbGUtZGVidWctbGV2ZWwiKTsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3Nh
Z2VMZXZlbC5XYXJuaW5nOgotICAgICAgICAgICAgICAgIGVsZW1lbnQuYWRkU3R5bGVDbGFzcygi
Y29uc29sZS13YXJuaW5nLWxldmVsIik7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICBjYXNlIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuRXJyb3I6
Ci0gICAgICAgICAgICAgICAgZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJjb25zb2xlLWVycm9yLWxl
dmVsIik7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAo
dGhpcy50eXBlID09PSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuU3Rh
cnRHcm91cCB8fCB0aGlzLnR5cGUgPT09IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNz
YWdlVHlwZS5TdGFydEdyb3VwQ29sbGFwc2VkKQotICAgICAgICAgICAgZWxlbWVudC5hZGRTdHls
ZUNsYXNzKCJjb25zb2xlLWdyb3VwLXRpdGxlIik7Ci0KLSAgICAgICAgZWxlbWVudC5hcHBlbmRD
aGlsZCh0aGlzLl9mb3JtYXR0ZWRNZXNzYWdlKTsKLQotICAgICAgICBpZiAodGhpcy5yZXBlYXRD
b3VudCA+IDEpCi0gICAgICAgICAgICB0aGlzLl91cGRhdGVSZXBlYXRDb3VudCgpOwotCi0gICAg
ICAgIHJldHVybiBlbGVtZW50OwotICAgIH0sCi0KLSAgICBfcG9wdWxhdGVTdGFja1RyYWNlVHJl
ZUVsZW1lbnQ6IGZ1bmN0aW9uKHBhcmVudFRyZWVFbGVtZW50KQotICAgIHsKLSAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9zdGFja1RyYWNlLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAg
ICAgICB2YXIgZnJhbWUgPSB0aGlzLl9zdGFja1RyYWNlW2ldOwotCi0gICAgICAgICAgICB2YXIg
Y29udGVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICAgICAgdmFy
IG1lc3NhZ2VUZXh0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKLSAg
ICAgICAgICAgIG1lc3NhZ2VUZXh0RWxlbWVudC5jbGFzc05hbWUgPSAiY29uc29sZS1tZXNzYWdl
LXRleHQgc291cmNlLWNvZGUiOwotICAgICAgICAgICAgdmFyIGZ1bmN0aW9uTmFtZSA9IGZyYW1l
LmZ1bmN0aW9uTmFtZSB8fCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIihhbm9ueW1vdXMgZnVuY3Rp
b24pIik7Ci0gICAgICAgICAgICBtZXNzYWdlVGV4dEVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoZnVuY3Rpb25OYW1lKSk7Ci0gICAgICAgICAgICBjb250ZW50LmFw
cGVuZENoaWxkKG1lc3NhZ2VUZXh0RWxlbWVudCk7Ci0KLSAgICAgICAgICAgIGlmIChmcmFtZS51
cmwpIHsKLSAgICAgICAgICAgICAgICB2YXIgdXJsRWxlbWVudCA9IHRoaXMuX2xpbmtpZnlDYWxs
RnJhbWUoZnJhbWUpOwotICAgICAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kQ2hpbGQodXJsRWxl
bWVudCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHZhciB0cmVlRWxlbWVudCA9IG5l
dyBUcmVlRWxlbWVudChjb250ZW50KTsKLSAgICAgICAgICAgIHBhcmVudFRyZWVFbGVtZW50LmFw
cGVuZENoaWxkKHRyZWVFbGVtZW50KTsKLSAgICAgICAgfQotICAgIH0sCi0KLSAgICBfdXBkYXRl
UmVwZWF0Q291bnQ6IGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAoIXRoaXMucmVwZWF0Q291bnRF
bGVtZW50KSB7Ci0gICAgICAgICAgICB0aGlzLnJlcGVhdENvdW50RWxlbWVudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKLSAgICAgICAgICAgIHRoaXMucmVwZWF0Q291bnRFbGVt
ZW50LmNsYXNzTmFtZSA9ICJidWJibGUiOwotCi0gICAgICAgICAgICB0aGlzLl9lbGVtZW50Lmlu
c2VydEJlZm9yZSh0aGlzLnJlcGVhdENvdW50RWxlbWVudCwgdGhpcy5fZWxlbWVudC5maXJzdENo
aWxkKTsKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuYWRkU3R5bGVDbGFzcygicmVwZWF0ZWQt
bWVzc2FnZSIpOwotICAgICAgICB9Ci0gICAgICAgIHRoaXMucmVwZWF0Q291bnRFbGVtZW50LnRl
eHRDb250ZW50ID0gdGhpcy5yZXBlYXRDb3VudDsKLSAgICB9LAotCi0gICAgdG9TdHJpbmc6IGZ1
bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZhciBzb3VyY2VTdHJpbmc7Ci0gICAgICAgIHN3aXRj
aCAodGhpcy5zb3VyY2UpIHsKLSAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkNvbnNvbGVN
ZXNzYWdlLk1lc3NhZ2VTb3VyY2UuSFRNTDoKLSAgICAgICAgICAgICAgICBzb3VyY2VTdHJpbmcg
PSAiSFRNTCI7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFdlYklu
c3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlU291cmNlLlhNTDoKLSAgICAgICAgICAgICAg
ICBzb3VyY2VTdHJpbmcgPSAiWE1MIjsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIGNhc2UgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VTb3VyY2UuSlM6Ci0g
ICAgICAgICAgICAgICAgc291cmNlU3RyaW5nID0gIkpTIjsKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VT
b3VyY2UuQ1NTOgotICAgICAgICAgICAgICAgIHNvdXJjZVN0cmluZyA9ICJDU1MiOwotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuQ29uc29sZU1l
c3NhZ2UuTWVzc2FnZVNvdXJjZS5PdGhlcjoKLSAgICAgICAgICAgICAgICBzb3VyY2VTdHJpbmcg
PSAiT3RoZXIiOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAg
dmFyIHR5cGVTdHJpbmc7Ci0gICAgICAgIHN3aXRjaCAodGhpcy50eXBlKSB7Ci0gICAgICAgICAg
ICBjYXNlIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5Mb2c6Ci0gICAg
ICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5VbmNh
dWdodEV4Y2VwdGlvbjoKLSAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNz
YWdlLk1lc3NhZ2VUeXBlLk5ldHdvcmtFcnJvcjoKLSAgICAgICAgICAgICAgICB0eXBlU3RyaW5n
ID0gIkxvZyI7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFdlYklu
c3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5PYmplY3Q6Ci0gICAgICAgICAgICAg
ICAgdHlwZVN0cmluZyA9ICJPYmplY3QiOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuVHJhY2U6
Ci0gICAgICAgICAgICAgICAgdHlwZVN0cmluZyA9ICJUcmFjZSI7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNz
YWdlVHlwZS5TdGFydEdyb3VwQ29sbGFwc2VkOgotICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0
b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuU3RhcnRHcm91cDoKLSAgICAgICAgICAgICAg
ICB0eXBlU3RyaW5nID0gIlN0YXJ0IEdyb3VwIjsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLkVu
ZEdyb3VwOgotICAgICAgICAgICAgICAgIHR5cGVTdHJpbmcgPSAiRW5kIEdyb3VwIjsKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkNvbnNvbGVN
ZXNzYWdlLk1lc3NhZ2VUeXBlLkFzc2VydDoKLSAgICAgICAgICAgICAgICB0eXBlU3RyaW5nID0g
IkFzc2VydCI7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFdlYklu
c3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5SZXN1bHQ6Ci0gICAgICAgICAgICAg
ICAgdHlwZVN0cmluZyA9ICJSZXN1bHQiOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICB9Ci0KLSAgICAgICAgdmFyIGxldmVsU3RyaW5nOwotICAgICAgICBzd2l0Y2ggKHRoaXMubGV2
ZWwpIHsKLSAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3Nh
Z2VMZXZlbC5UaXA6Ci0gICAgICAgICAgICAgICAgbGV2ZWxTdHJpbmcgPSAiVGlwIjsKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkNvbnNvbGVN
ZXNzYWdlLk1lc3NhZ2VMZXZlbC5Mb2c6Ci0gICAgICAgICAgICAgICAgbGV2ZWxTdHJpbmcgPSAi
TG9nIjsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVj
dG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZlbC5XYXJuaW5nOgotICAgICAgICAgICAgICAg
IGxldmVsU3RyaW5nID0gIldhcm5pbmciOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLkRlYnVn
OgotICAgICAgICAgICAgICAgIGxldmVsU3RyaW5nID0gIkRlYnVnIjsKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1l
c3NhZ2VMZXZlbC5FcnJvcjoKLSAgICAgICAgICAgICAgICBsZXZlbFN0cmluZyA9ICJFcnJvciI7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gc291
cmNlU3RyaW5nICsgIiAiICsgdHlwZVN0cmluZyArICIgIiArIGxldmVsU3RyaW5nICsgIjogIiAr
IHRoaXMuX2Zvcm1hdHRlZE1lc3NhZ2UudGV4dENvbnRlbnQgKyAiXG4iICsgdGhpcy51cmwgKyAi
IGxpbmUgIiArIHRoaXMubGluZTsKLSAgICB9LAotCi0gICAgaXNFcXVhbDogZnVuY3Rpb24obXNn
KQotICAgIHsKLSAgICAgICAgaWYgKCFtc2cpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICAgICAgaWYgKHRoaXMuX3N0YWNrVHJhY2UpIHsKLSAgICAgICAgICAgIGlmICghbXNnLl9z
dGFja1RyYWNlKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIHZh
ciBsID0gdGhpcy5fc3RhY2tUcmFjZTsKLSAgICAgICAgICAgIHZhciByID0gbXNnLl9zdGFja1Ry
YWNlOwotICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsLmxlbmd0aDsgaSsrKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKGxbaV0udXJsICE9PSByW2ldLnVybCB8fAotICAgICAgICAgICAg
ICAgICAgICBsW2ldLmZ1bmN0aW9uTmFtZSAhPT0gcltpXS5mdW5jdGlvbk5hbWUgfHwKLSAgICAg
ICAgICAgICAgICAgICAgbFtpXS5saW5lTnVtYmVyICE9PSByW2ldLmxpbmVOdW1iZXIgfHwKLSAg
ICAgICAgICAgICAgICAgICAgbFtpXS5jb2x1bW5OdW1iZXIgIT09IHJbaV0uY29sdW1uTnVtYmVy
KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLQotICAgICAgICByZXR1cm4gKHRoaXMuc291cmNlID09PSBtc2cuc291cmNlKQotICAg
ICAgICAgICAgJiYgKHRoaXMudHlwZSA9PT0gbXNnLnR5cGUpCi0gICAgICAgICAgICAmJiAodGhp
cy5sZXZlbCA9PT0gbXNnLmxldmVsKQotICAgICAgICAgICAgJiYgKHRoaXMubGluZSA9PT0gbXNn
LmxpbmUpCi0gICAgICAgICAgICAmJiAodGhpcy51cmwgPT09IG1zZy51cmwpCi0gICAgICAgICAg
ICAmJiAodGhpcy5tZXNzYWdlID09PSBtc2cubWVzc2FnZSkKLSAgICAgICAgICAgICYmICh0aGlz
Ll9yZXF1ZXN0SWQgPT09IG1zZy5fcmVxdWVzdElkKTsKLSAgICB9LAotCi0gICAgZ2V0IHN0YWNr
VHJhY2UoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3N0YWNrVHJhY2U7Ci0gICAgfQot
fQotCi0vLyBOb3RlOiBLZWVwIHRoZXNlIGNvbnN0YW50cyBpbiBzeW5jIHdpdGggdGhlIG9uZXMg
aW4gQ29uc29sZS5oCi1XZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVNvdXJjZSA9
IHsKLSAgICBIVE1MOiAiaHRtbCIsCi0gICAgWE1MOiAieG1sIiwKLSAgICBKUzogImphdmFzY3Jp
cHQiLAotICAgIENTUzogImNzcyIsCi0gICAgT3RoZXI6ICJvdGhlciIKLX0KLQotV2ViSW5zcGVj
dG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlID0gewotICAgIExvZzogImxvZyIsCi0gICAg
T2JqZWN0OiAib3RoZXIiLAotICAgIFRyYWNlOiAidHJhY2UiLAotICAgIFN0YXJ0R3JvdXA6ICJz
dGFydEdyb3VwIiwKLSAgICBTdGFydEdyb3VwQ29sbGFwc2VkOiAic3RhcnRHcm91cENvbGxhcHNl
ZCIsCi0gICAgRW5kR3JvdXA6ICJlbmRHcm91cCIsCi0gICAgQXNzZXJ0OiAiYXNzZXJ0IiwKLSAg
ICBVbmNhdWdodEV4Y2VwdGlvbjogInVuY2F1Z2h0RXhjZXB0aW9uIiwKLSAgICBOZXR3b3JrRXJy
b3I6ICJuZXR3b3JrRXJyb3IiLAotICAgIFJlc3VsdDogInJlc3VsdCIKLX0KLQotV2ViSW5zcGVj
dG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZlbCA9IHsKLSAgICBUaXA6ICJ0aXAiLAotICAg
IExvZzogImxvZyIsCi0gICAgV2FybmluZzogIndhcm5pbmciLAotICAgIEVycm9yOiAiZXJyb3Ii
LAotICAgIERlYnVnOiAiZGVidWciCi19Ci0KIFdlYkluc3BlY3Rvci5Db25zb2xlQ29tbWFuZCA9
IGZ1bmN0aW9uKGNvbW1hbmQpCiB7CiAgICAgdGhpcy5jb21tYW5kID0gY29tbWFuZDsKQEAgLTEz
ODIsNCArOTI3LDMgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVHcm91cC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgfQogfQotCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKaW5kZXggNTFjMGI3ZjhiOTQyMThk
MGE0OTZjZDU1NDdlZTMxNzk1YzYwY2ZmZC4uMDU3NDE3Y2JjOWIwZTVjZTcyOTEwNzg3MmY4ZDQ1
ZTczMDVlZWFiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9XZWJLaXQucXJjCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2Vi
S2l0LnFyYwpAQCAtMTUsNiArMTUsNyBAQAogICAgIDxmaWxlPkNhbGxTdGFja1NpZGViYXJQYW5l
LmpzPC9maWxlPgogICAgIDxmaWxlPkNoZWNrYm94LmpzPC9maWxlPgogICAgIDxmaWxlPkNvbG9y
LmpzPC9maWxlPgorICAgIDxmaWxlPkNvbnNvbGVNZXNzYWdlLmpzPC9maWxlPgogICAgIDxmaWxl
PkNvbnNvbGVQYW5lbC5qczwvZmlsZT4KICAgICA8ZmlsZT5Db25zb2xlVmlldy5qczwvZmlsZT4K
ICAgICA8ZmlsZT5Db250ZXh0TWVudS5qczwvZmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCmluZGV4IDk2MTgwMzEzNWU1NzI2M2Yz
NTA4YWEyOTAyNzg1OWUwNDA4ZjM2NGEuLjgyODJmMjBhZTU1YmUxYzkwZDUzY2UyYTE2ZWRkYWRj
MjZjYTY5YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
aW5zcGVjdG9yLmh0bWwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9p
bnNwZWN0b3IuaHRtbApAQCAtNjAsNiArNjAsNyBAQCBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICAgIDxzY3JpcHQgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlRhYmJlZFBhbmUuanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IklGcmFtZVZpZXcuanMiPjwvc2NyaXB0
PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkRyYXdlci5qcyI+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iQ29uc29sZU1l
c3NhZ2UuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBz
cmM9IkNvbnNvbGVWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCIgc3JjPSJQYW5lbC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiIHNyYz0iVGltZWxpbmVHcmlkLmpzIj48L3NjcmlwdD4gICAgCg==
</data>
<flag name="review"
          id="101005"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>