<?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>56015</bug_id>
          
          <creation_ts>2011-03-09 07:21:55 -0800</creation_ts>
          <short_desc>Web Inspector: Highlighter refactoring</short_desc>
          <delta_ts>2011-03-10 04:11: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>0</everconfirmed>
          <reporter name="Andrey Adaikin">aandrey</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>podivilov</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>364491</commentid>
    <comment_count>0</comment_count>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2011-03-09 07:21:55 -0800</bug_when>
    <thetext>Highlighter refactoring to get rid of the current highlighter state (this._lastHighlightedLine &amp; this._lastHighlightedColumn).

Also I found a bug in the old highlighter in the updateHighlight() method, added a test that fails the old implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364493</commentid>
    <comment_count>1</comment_count>
      <attachid>85173</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2011-03-09 07:27:11 -0800</bug_when>
    <thetext>Created attachment 85173
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364534</commentid>
    <comment_count>2</comment_count>
      <attachid>85183</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2011-03-09 09:20:46 -0800</bug_when>
    <thetext>Created attachment 85183
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365091</commentid>
    <comment_count>3</comment_count>
      <attachid>85183</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-03-10 04:11:12 -0800</bug_when>
    <thetext>Comment on attachment 85183
Patch

Clearing flags on attachment: 85183

Committed r80704: &lt;http://trac.webkit.org/changeset/80704&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365092</commentid>
    <comment_count>4</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-03-10 04:11:25 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85173</attachid>
            <date>2011-03-09 07:27:11 -0800</date>
            <delta_ts>2011-03-09 09:20:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56015-20110309182709.patch</filename>
            <type>text/plain</type>
            <size>24524</size>
            <attacher name="Andrey Adaikin">aandrey</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODA2NDEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxYzM3NmMzYTAwNjgwMWIxZjM1NDY4
NTUxN2FiYzEyNWVhMDZkZGRmLi5lNDdlNWU5YWU0Nzk0Y2MyZmQ4ZGFkNzNiMmQ1NDlkMjliNDY0
YzM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDMtMDkgIEFuZHJleSBBZGFpa2luICA8
YWFuZHJleUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEhpZ2hsaWdodGVyIHJlZmFjdG9yaW5nCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjAxNQorCisgICAg
ICAgICogaW5zcGVjdG9yL2VkaXRvci9oaWdobGlnaHRlci1iYXNpY3MtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIGluc3BlY3Rvci9lZGl0b3IvaGlnaGxpZ2h0ZXItYmFzaWNzLmh0bWw6CisgICAg
ICAgICogaW5zcGVjdG9yL2VkaXRvci9oaWdobGlnaHRlci1sb25nLWxpbmUuaHRtbDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZWRpdG9yL2hpZ2hsaWdodGVyLXBhc3RlLWluLWNvbW1lbnQtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9lZGl0b3IvaGlnaGxpZ2h0ZXItcGFzdGUtaW4t
Y29tbWVudC5odG1sOgorCiAyMDExLTAzLTA5ICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWRpdG9yL2hpZ2hsaWdodGVyLWJhc2ljcy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWRpdG9yL2hpZ2hsaWdodGVyLWJhc2lj
cy1leHBlY3RlZC50eHQKaW5kZXggOWZkNjU2NzJmZDRiYjcyZWJkNWYwN2U4NGFjMjc1YTgwNGNj
MTcwMC4uMzkzYjcxZGFiODU4ZWNkMDMzZTgyOGMwYjk3NjYwNGJkZjZmYTU5ZSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VkaXRvci9oaWdobGlnaHRlci1iYXNpY3MtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lZGl0b3IvaGlnaGxpZ2h0ZXItYmFz
aWNzLWV4cGVjdGVkLnR4dApAQCAtNjYsNyArNjYsNyBAQCBBZnRlciB1cGRhdGluZyBoaWdobGln
aHRzCiAxMiA6ICAqIGxpbmUgIzggOiBqYXZhc2NyaXB0LWNvbW1lbnRbMC0xMF0KIDEzIDogICog
dmFyIGEgPSBuZXcgQSgpOyAvLyovIDogamF2YXNjcmlwdC1jb21tZW50WzAtMjRdCiAxNCA6IHNv
bWUgdGV4dCA6IGphdmFzY3JpcHQtaWRlbnRbMC00XSBqYXZhc2NyaXB0LWlkZW50WzUtOV0KLTE1
IDogICogbGluZSAjNiA6IG51bGwKKzE1IDogICogbGluZSAjNiA6IGphdmFzY3JpcHQtaWRlbnRb
My03XSBqYXZhc2NyaXB0LW51bWJlcls5LTEwXQogMTYgOiAgKiBsaW5lICM3IDogbnVsbAogMTcg
OiAgKiBsaW5lICM4IDogbnVsbAogMTggOiAgKiB2YXIgYSA9IG5ldyBBKCk7IC8vKi8gOiBudWxs
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWRpdG9yL2hpZ2hsaWdodGVyLWJh
c2ljcy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VkaXRvci9oaWdobGlnaHRlci1iYXNp
Y3MuaHRtbAppbmRleCBhNDFhZjhmNDEwMGUzYjg3MzQ0NDFhNTdhMmRmNDQ5ZjBkYjUyYTgwLi4y
YmRhZDUwZjBiM2Y4NzBiZDRiOGNlNDY5OTkxZmJhNWY4MGYxNDY4IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZWRpdG9yL2hpZ2hsaWdodGVyLWJhc2ljcy5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9lZGl0b3IvaGlnaGxpZ2h0ZXItYmFzaWNzLmh0bWwKQEAgLTM1
LDcgKzM1LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgdmFyIG5ld1JhbmdlID0gdGV4dE1vZGVs
LnNldFRleHQocmFuZ2UsIHNyYyk7CiAgICAgZHVtcFRleHRNb2RlbCgiQWZ0ZXIgY2hhbmdpbmcg
dGV4dCBtb2RlbCwgYnV0IGJlZm9yZSB1cGRhdGluZyBoaWdobGlnaHRzIik7CiAKLSAgICBoaWdo
bGlnaHRlci51cGRhdGVIaWdobGlnaHQobmV3UmFuZ2Uuc3RhcnRMaW5lLCBuZXdSYW5nZS5lbmRM
aW5lKTsKKyAgICBoaWdobGlnaHRlci51cGRhdGVIaWdobGlnaHQobmV3UmFuZ2Uuc3RhcnRMaW5l
LCBuZXdSYW5nZS5lbmRMaW5lICsgMSk7CiAgICAgZHVtcFRleHRNb2RlbCgiQWZ0ZXIgdXBkYXRp
bmcgaGlnaGxpZ2h0cyIpOwogCiAgICAgaGlnaGxpZ2h0ZXIuaGlnaGxpZ2h0KHRleHRNb2RlbC5s
aW5lc0NvdW50LCB0cnVlKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9lZGl0
b3IvaGlnaGxpZ2h0ZXItbG9uZy1saW5lLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWRp
dG9yL2hpZ2hsaWdodGVyLWxvbmctbGluZS5odG1sCmluZGV4IDM1OTBkNWY2ODc0Njc1MzFlZGI4
YWNkY2RjZWEzYjIxMTE5MDI3MGUuLmI3MDM2MzRhYzRhODM1YTRkZTY4NjkyNjAzODhjMmRlMzg5
NGUyMzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9lZGl0b3IvaGlnaGxpZ2h0
ZXItbG9uZy1saW5lLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VkaXRvci9oaWdo
bGlnaHRlci1sb25nLWxpbmUuaHRtbApAQCAtMTksMjQgKzE5LDM3IEBAIGZ1bmN0aW9uIHRlc3Qo
KQogICAgICAgICBjb21tZW50cyAqPSAyOwogICAgIH0KICAgICB0ZXh0TW9kZWwuc2V0VGV4dChu
dWxsLCBzcmMpOwotICAgIGhpZ2hsaWdodGVyLnJlc2V0KCk7CisKKyAgICBmdW5jdGlvbiBjaGVj
a0hpZ2hsaWdodHMoKQorICAgIHsKKyAgICAgICAgdmFyIGNvbW1lbnRzRm91bmQgPSAwOworICAg
ICAgICBmb3IgKHZhciBsaW5lTnVtYmVyID0gMDsgbGluZU51bWJlciA8IHRleHRNb2RlbC5saW5l
c0NvdW50OyArK2xpbmVOdW1iZXIpIHsKKyAgICAgICAgICAgIHZhciBoaWdobGlnaHQgPSB0ZXh0
TW9kZWwuZ2V0QXR0cmlidXRlKGxpbmVOdW1iZXIsICJoaWdobGlnaHQiKTsKKyAgICAgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgdGV4dE1vZGVsLmxpbmVMZW5ndGgobGluZU51bWJlcik7ICsr
aSkgeworICAgICAgICAgICAgICAgIGlmIChoaWdobGlnaHRbaV0pIHsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKGhpZ2hsaWdodFtpXS5sZW5ndGggIT09IDEwIHx8IChpICUgMTEpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRVJST1I6IHVuZXhw
ZWN0ZWQgaGlnaGxpZ2h0IHJlc3VsdDogaT0iICsgaSArICIsIGxlbmd0aD0iICsgaGlnaGxpZ2h0
W2ldLmxlbmd0aCk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICArK2NvbW1lbnRzRm91bmQ7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChjb21tZW50
cyAhPT0gY29tbWVudHNGb3VuZCkKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0
KCJFUlJPUjogc29tZSBvZiB0aGUgY29tbWVudHMgd2VyZSBub3QgaGlnaGxpZ2h0ZWQsIGZvdW5k
OiAiICsgY29tbWVudHNGb3VuZCk7CisgICAgfQogCiAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1
bHQoIkxpbmUgbGVuZ3RoOiAiICsgc3JjLmxlbmd0aCArICIsIG51bWJlciBvZiBjb21tZW50czog
IiArIGNvbW1lbnRzKTsKIAogICAgIGhpZ2hsaWdodGVyLmhpZ2hsaWdodCh0ZXh0TW9kZWwubGlu
ZXNDb3VudCk7CisgICAgY2hlY2tIaWdobGlnaHRzKCk7CiAKLSAgICB2YXIgaGlnaGxpZ2h0ID0g
dGV4dE1vZGVsLmdldEF0dHJpYnV0ZSgwLCAiaGlnaGxpZ2h0Iik7Ci0gICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBzcmMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgaWYgKGhpZ2hsaWdodFtpXSkgewot
ICAgICAgICAgICAgaWYgKGhpZ2hsaWdodFtpXS5sZW5ndGggIT09IDEwIHx8IChpICUgMTEpKSB7
Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkVSUk9SOiB1bmV4cGVj
dGVkIGhpZ2hsaWdodCByZXN1bHQ6IGk9IiArIGkgKyAiLCBsZW5ndGg9IiArIGhpZ2hsaWdodFtp
XS5sZW5ndGgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgLS1jb21tZW50czsKLSAgICAgICAgfQotICAgIH0KLSAgICBpZiAoY29tbWVudHMpCi0g
ICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJFUlJPUjogc29tZSBvZiB0aGUgY29tbWVu
dHMgd2VyZSBub3QgaGlnaGxpZ2h0ZWQ6ICIgKyBjb21tZW50cyk7CisgICAgLy8gSW5zZXJ0IGEg
Y2FyZXQgcmV0dXJuIGluIHRoZSBtaWRkbGUgb2YgdGhlIGxvbmcgbGluZS4KKyAgICB2YXIgaGFs
Zkxlbmd0aCA9IE1hdGguZmxvb3Ioc3JjLmxlbmd0aCAvIDIpOworICAgIHZhciByYW5nZSA9IG5l
dyBXZWJJbnNwZWN0b3IuVGV4dFJhbmdlKDAsIGhhbGZMZW5ndGgsIDAsIGhhbGZMZW5ndGgpOwor
ICAgIHZhciBuZXdSYW5nZSA9IHRleHRNb2RlbC5zZXRUZXh0KHJhbmdlLCAiXG4iKTsKKyAgICBo
aWdobGlnaHRlci51cGRhdGVIaWdobGlnaHQobmV3UmFuZ2Uuc3RhcnRMaW5lLCBuZXdSYW5nZS5l
bmRMaW5lICsgMSk7CisgICAgY2hlY2tIaWdobGlnaHRzKCk7CiAKICAgICBJbnNwZWN0b3JUZXN0
LmFkZFJlc3VsdCgiQWxsIGNoZWNrcyBjb21wbGV0ZWQuIik7CiAgICAgSW5zcGVjdG9yVGVzdC5j
b21wbGV0ZVRlc3QoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9lZGl0b3Iv
aGlnaGxpZ2h0ZXItcGFzdGUtaW4tY29tbWVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZWRpdG9yL2hpZ2hsaWdodGVyLXBhc3RlLWluLWNvbW1lbnQtZXhwZWN0ZWQudHh0
CmluZGV4IDA1ODFmNTc3MzM2ZDRlMjQ4YWMxYjI2MWI0ZDZlZjg1MzRhYzQzYTIuLjI1YzIxZDI4
MTRiYmY0NzY2MGZlZWRhNjBkY2E3NDI1YTBmZjQ4M2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9lZGl0b3IvaGlnaGxpZ2h0ZXItcGFzdGUtaW4tY29tbWVudC1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VkaXRvci9oaWdobGlnaHRlci1wYXN0ZS1p
bi1jb21tZW50LWV4cGVjdGVkLnR4dApAQCAtNDQsMyArNDQsMjAgQEAgQWZ0ZXIgaGlnaGxpZ2h0
aW5nIHVwIHRvIHRoZSBlbmQKIDEzIDogIDoKIDE0IDogKi8gOiBqYXZhc2NyaXB0LWNvbW1lbnRb
MC0yXQogCitBZnRlciBpbnNlcnRpbmcgYSBuZXcgbGluZQorMSA6IC8qIDogamF2YXNjcmlwdC1j
b21tZW50WzAtM10KKzIgOiAgOgorMyA6IDEgOiBqYXZhc2NyaXB0LWNvbW1lbnRbMC0xXQorNCA6
IDIgOiBqYXZhc2NyaXB0LWNvbW1lbnRbMC0xXQorNSA6IDMgOiBqYXZhc2NyaXB0LWNvbW1lbnRb
MC0xXQorNiA6IDQgOiBqYXZhc2NyaXB0LWNvbW1lbnRbMC0xXQorNyA6IDUgOiBqYXZhc2NyaXB0
LWNvbW1lbnRbMC0xXQorOCA6IDEgOiBqYXZhc2NyaXB0LWNvbW1lbnRbMC0xXQorOSA6IDIgOiBq
YXZhc2NyaXB0LWNvbW1lbnRbMC0xXQorMTAgOiAzIDogamF2YXNjcmlwdC1jb21tZW50WzAtMV0K
KzExIDogNCA6IGphdmFzY3JpcHQtY29tbWVudFswLTFdCisxMiA6IDUgOiBqYXZhc2NyaXB0LWNv
bW1lbnRbMC0xXQorMTMgOiAgOgorMTQgOiAgOgorMTUgOiAqLyA6IGphdmFzY3JpcHQtY29tbWVu
dFswLTJdCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9lZGl0b3IvaGlnaGxp
Z2h0ZXItcGFzdGUtaW4tY29tbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VkaXRv
ci9oaWdobGlnaHRlci1wYXN0ZS1pbi1jb21tZW50Lmh0bWwKaW5kZXggMTQzOWY4NmQ1MDM4NDFm
MzEyMmI0OWZlMDZjNmI4ZGQ0MTAxODIzZC4uMmFhNzhlMGRlYTI5ZWYxMWYyYWU1MTgwYWZhMjQz
NGM1ZTBhNzMwNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VkaXRvci9oaWdo
bGlnaHRlci1wYXN0ZS1pbi1jb21tZW50Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2VkaXRvci9oaWdobGlnaHRlci1wYXN0ZS1pbi1jb21tZW50Lmh0bWwKQEAgLTE5LDcgKzE5LDYg
QEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICB2YXIgc3JjID0gIi8qXG5cbjFcbjJcbjNcbjRcbjVc
blxuKi8iOwogICAgIHRleHRNb2RlbC5zZXRUZXh0KG51bGwsIHNyYyk7Ci0gICAgaGlnaGxpZ2h0
ZXIucmVzZXQoKTsKIAogICAgIGhpZ2hsaWdodGVyLmhpZ2hsaWdodCh0ZXh0TW9kZWwubGluZXND
b3VudCk7CiAgICAgZHVtcFRleHRNb2RlbCgiQWZ0ZXIgaGlnaGxpZ2h0aW5nIGFsbCBsaW5lcyIp
OwpAQCAtMzIsNiArMzEsMTMgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgaGlnaGxpZ2h0ZXIuaGln
aGxpZ2h0KHRleHRNb2RlbC5saW5lc0NvdW50KTsKICAgICBkdW1wVGV4dE1vZGVsKCJBZnRlciBo
aWdobGlnaHRpbmcgdXAgdG8gdGhlIGVuZCIpOwogCisgICAgLy8gVGhlcmUgd2FzIGFuIGFjdHVh
bCBidWcgd2l0aCB3cm9uZ2x5IHJlc3RvcmVkIHBvc2l0aW9uIGFmdGVyIHVwZGF0aW5nIHRoZSBo
aWdobGlnaHRzLgorICAgIHZhciByYW5nZSA9IG5ldyBXZWJJbnNwZWN0b3IuVGV4dFJhbmdlKDEy
LCAwLCAxMiwgMCk7CisgICAgdmFyIG5ld1JhbmdlID0gdGV4dE1vZGVsLnNldFRleHQocmFuZ2Us
ICJcbiIpOworICAgIGhpZ2hsaWdodGVyLnVwZGF0ZUhpZ2hsaWdodCgxMiwgdGV4dE1vZGVsLmxp
bmVzQ291bnQpOworICAgIGhpZ2hsaWdodGVyLmhpZ2hsaWdodCh0ZXh0TW9kZWwubGluZXNDb3Vu
dCk7CisgICAgZHVtcFRleHRNb2RlbCgiQWZ0ZXIgaW5zZXJ0aW5nIGEgbmV3IGxpbmUiKTsKKwog
ICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0NDM4
MDdlYTRkNzU2M2RhNWRhOGFhZjdiNTIxZmVhNThkNjEwMTdkLi5hMWNlZDU5OWI2YTE3N2Y3MzIz
NzFhYzExZTVmNWE1NjRmZGY2MzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTEt
MDMtMDkgIEFuZHJleSBBZGFpa2luICA8YWFuZHJleUBnb29nbGUuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEhpZ2hs
aWdodGVyIHJlZmFjdG9yaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01NjAxNQorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0RWRp
dG9ySGlnaGxpZ2h0ZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvckhpZ2hs
aWdodGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9ySGlnaGxpZ2h0ZXIucHJv
dG90eXBlLnNldCBtaW1lVHlwZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvckhp
Z2hsaWdodGVyLnByb3RvdHlwZS5oaWdobGlnaHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRl
eHRFZGl0b3JIaWdobGlnaHRlci5wcm90b3R5cGUudXBkYXRlSGlnaGxpZ2h0KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5UZXh0RWRpdG9ySGlnaGxpZ2h0ZXIucHJvdG90eXBlLl9oaWdobGlnaHRJ
bkNodW5rcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvckhpZ2hsaWdodGVyLnBy
b3RvdHlwZS5faGlnaGxpZ2h0TGluZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0
b3JIaWdobGlnaHRlci5wcm90b3R5cGUuX3NlbGVjdEhpZ2hsaWdodFN0YXRlKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5UZXh0RWRpdG9ySGlnaGxpZ2h0ZXIucHJvdG90eXBlLl9jbGVhckhpZ2hs
aWdodFN0YXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRWaWV3ZXIuanM6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUuX2J1
aWxkQ2h1bmtzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnBy
b3RvdHlwZS5fdXBkYXRlSGlnaGxpZ2h0c0ZvclJhbmdlKToKKwogMjAxMS0wMy0wOSAgQW5kcmV5
IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEZp
eGVkIGEgY3Jhc2ggaW4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzcG9u
c2UoKSB3aGVuIGxvYWRlciBpcyBudWxsIChicm9rZW4gaW4gcjgwNjM5KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0RWRpdG9ySGlnaGxpZ2h0ZXIu
anMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRFZGl0b3JIaWdobGln
aHRlci5qcwppbmRleCA5YmRjYzgyNTY0NDExNDQ1MzZmN2QwNDMyNGQ0MDFkZDFlYjM1ZjdmLi5m
MTE5ZDQyY2E4ZGU1ZGVlOTQ0NDcwMGUwNTQwZTY4MmEyZDZlYjY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRFZGl0b3JIaWdobGlnaHRlci5qcwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRFZGl0b3JIaWdobGln
aHRlci5qcwpAQCAtMzUsMTcgKzM1LDE0IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9ySGlnaGxp
Z2h0ZXIgPSBmdW5jdGlvbih0ZXh0TW9kZWwsIGRhbWFnZUNhbGxiYWNrKQogICAgIHRoaXMuX3Rv
a2VuaXplciA9IFdlYkluc3BlY3Rvci5Tb3VyY2VUb2tlbml6ZXIuUmVnaXN0cnkuZ2V0SW5zdGFu
Y2UoKS5nZXRUb2tlbml6ZXIoInRleHQvaHRtbCIpOwogICAgIHRoaXMuX2RhbWFnZUNhbGxiYWNr
ID0gZGFtYWdlQ2FsbGJhY2s7CiAgICAgdGhpcy5faGlnaGxpZ2h0Q2h1bmtMaW1pdCA9IDEwMDA7
Ci0gICAgdGhpcy5yZXNldCgpOwogfQogCiBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvckhpZ2hsaWdo
dGVyLnByb3RvdHlwZSA9IHsKICAgICBzZXQgbWltZVR5cGUobWltZVR5cGUpCiAgICAgewogICAg
ICAgICB2YXIgdG9rZW5pemVyID0gV2ViSW5zcGVjdG9yLlNvdXJjZVRva2VuaXplci5SZWdpc3Ry
eS5nZXRJbnN0YW5jZSgpLmdldFRva2VuaXplcihtaW1lVHlwZSk7Ci0gICAgICAgIGlmICh0b2tl
bml6ZXIpIHsKKyAgICAgICAgaWYgKHRva2VuaXplcikKICAgICAgICAgICAgIHRoaXMuX3Rva2Vu
aXplciA9IHRva2VuaXplcjsKLSAgICAgICAgICAgIHRoaXMuX3Rva2VuaXplckNvbmRpdGlvblN0
cmluZ2lmaWVkID0gSlNPTi5zdHJpbmdpZnkodGhpcy5fdG9rZW5pemVyLmluaXRpYWxDb25kaXRp
b24pOwotICAgICAgICB9CiAgICAgfSwKIAogICAgIHNldCBoaWdobGlnaHRDaHVua0xpbWl0KGhp
Z2hsaWdodENodW5rTGltaXQpCkBAIC01MywxOCArNTAsMTQgQEAgV2ViSW5zcGVjdG9yLlRleHRF
ZGl0b3JIaWdobGlnaHRlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2hpZ2hsaWdodENo
dW5rTGltaXQgPSBoaWdobGlnaHRDaHVua0xpbWl0OwogICAgIH0sCiAKLSAgICByZXNldDogZnVu
Y3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5fbGFzdEhpZ2hsaWdodGVkTGluZSA9IDA7Ci0g
ICAgICAgIHRoaXMuX2xhc3RIaWdobGlnaHRlZENvbHVtbiA9IDA7Ci0gICAgICAgIHRoaXMuX3Rv
a2VuaXplckNvbmRpdGlvblN0cmluZ2lmaWVkID0gSlNPTi5zdHJpbmdpZnkodGhpcy5fdG9rZW5p
emVyLmluaXRpYWxDb25kaXRpb24pOwotICAgIH0sCi0KICAgICBoaWdobGlnaHQ6IGZ1bmN0aW9u
KGVuZExpbmUsIG9wdF9mb3JjZVJ1bikKICAgICB7CiAgICAgICAgIC8vIEZpcnN0IGNoZWNrIGlm
IHdlIGhhdmUgd29yayB0byBkby4KLSAgICAgICAgaWYgKGVuZExpbmUgPD0gdGhpcy5fbGFzdEhp
Z2hsaWdodGVkTGluZSkKKyAgICAgICAgdmFyIHN0YXRlID0gdGhpcy5fdGV4dE1vZGVsLmdldEF0
dHJpYnV0ZShlbmRMaW5lIC0gMSwgImhpZ2hsaWdodCIpOworICAgICAgICBpZiAoc3RhdGUgJiYg
c3RhdGUucG9zdENvbmRpdGlvblN0cmluZ2lmaWVkKSB7CisgICAgICAgICAgICAvLyBMYXN0IGxp
bmUgaXMgaGlnaGxpZ2h0ZWQsIGp1c3QgZXhpdC4KICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQogCiAgICAgICAgIHRoaXMuX3JlcXVlc3RlZEVuZExpbmUgPSBlbmRMaW5lOwogCkBAIC03
Myw3NyArNjYsNTcgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JIaWdobGlnaHRlci5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICAvLyBEbyBz
bWFsbCBoaWdobGlnaHQgc3luY2hyb25vdXNseS4gVGhpcyB3aWxsIHByb3ZpZGUgaW5zdGFudCBo
aWdobGlnaHQgb24gUGFnZVVwIC8gUGFnZURvd24sIGdlbnRsZSBzY3JvbGxpbmcuCi0gICAgICAg
IHRoaXMuX2hpZ2hsaWdodEluQ2h1bmtzKGVuZExpbmUpOworICAgICAgICAvLyBXZSB3aWxsIGJl
IGhpZ2hsaWdodGluZy4gRmlyc3QgcmV3aW5kIHRvIHRoZSBsYXN0IGhpZ2hsaWdodGVkIGxpbmUg
dG8gZ2FpbiBwcm9wZXIgaGlnaGxpZ2h0ZXIgY29udGV4dC4KKyAgICAgICAgdmFyIHN0YXJ0TGlu
ZSA9IGVuZExpbmU7CisgICAgICAgIHdoaWxlIChzdGFydExpbmUgPiAwKSB7CisgICAgICAgICAg
ICB2YXIgc3RhdGUgPSB0aGlzLl90ZXh0TW9kZWwuZ2V0QXR0cmlidXRlKHN0YXJ0TGluZSAtIDEs
ICJoaWdobGlnaHQiKTsKKyAgICAgICAgICAgIGlmIChzdGF0ZSAmJiBzdGF0ZS5wb3N0Q29uZGl0
aW9uU3RyaW5naWZpZWQpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBzdGFy
dExpbmUtLTsKKyAgICAgICAgfQogCi0gICAgICAgIC8vIFNjaGVkdWxlIHRhaWwgaGlnaGxpZ2h0
IGlmIG5lY2Vzc2FyeS4KLSAgICAgICAgaWYgKHRoaXMuX2xhc3RIaWdobGlnaHRlZExpbmUgPCBl
bmRMaW5lKQotICAgICAgICAgICAgdGhpcy5faGlnaGxpZ2h0VGltZXIgPSBzZXRUaW1lb3V0KHRo
aXMuX2hpZ2hsaWdodEluQ2h1bmtzLmJpbmQodGhpcywgZW5kTGluZSksIDEwMCk7CisgICAgICAg
IC8vIERvIHNtYWxsIGhpZ2hsaWdodCBzeW5jaHJvbm91c2x5LiBUaGlzIHdpbGwgcHJvdmlkZSBp
bnN0YW50IGhpZ2hsaWdodCBvbiBQYWdlVXAgLyBQYWdlRG93biwgZ2VudGxlIHNjcm9sbGluZy4K
KyAgICAgICAgdGhpcy5faGlnaGxpZ2h0SW5DaHVua3Moc3RhcnRMaW5lLCBlbmRMaW5lKTsKICAg
ICB9LAogCiAgICAgdXBkYXRlSGlnaGxpZ2h0OiBmdW5jdGlvbihzdGFydExpbmUsIGVuZExpbmUp
CiAgICAgewotICAgICAgICBpZiAodGhpcy5fbGFzdEhpZ2hsaWdodGVkTGluZSA8IHN0YXJ0TGlu
ZSkgewotICAgICAgICAgICAgLy8gSGlnaGxpZ2h0ZXIgZGlkIG5vdCByZWFjaCB0aGlzIHBvaW50
IHlldCwgbm90aGluZyB0byB1cGRhdGUuIEl0IHdpbGwgcmVhY2ggaXQgb24gc3Vic2VxdWVudCB0
aW1lciB0aWNrIGFuZCBkbyB0aGUgam9iLgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICB9Ci0KLSAgICAgICAgdmFyIHNhdmVkTGFzdEhpZ2hsaWdodGVkTGluZSA9IHRoaXMuX2xh
c3RIaWdobGlnaHRlZExpbmU7Ci0gICAgICAgIHZhciBzYXZlZExhc3RIaWdobGlnaHRlZENvbHVt
biA9IHRoaXMuX2xhc3RIaWdobGlnaHRlZENvbHVtbjsKLSAgICAgICAgdmFyIHNhdmVkVG9rZW5p
emVyQ29uZGl0aW9uID0gdGhpcy5fdG9rZW5pemVyQ29uZGl0aW9uU3RyaW5naWZpZWQ7Ci0KLSAg
ICAgICAgdGhpcy5fbGFzdEhpZ2hsaWdodGVkTGluZSA9IHN0YXJ0TGluZTsKLSAgICAgICAgdGhp
cy5fbGFzdEhpZ2hsaWdodGVkQ29sdW1uID0gMDsKLQotICAgICAgICAvLyBSZXN0b3JlIGhpZ2hs
aWdodGVyIGNvbnRleHQgdGFrZW4gZnJvbSB0aGUgcHJldmlvdXMgbGluZS4KLSAgICAgICAgdmFy
IGF0dHJpYnV0ZXMgPSB0aGlzLl90ZXh0TW9kZWwuZ2V0QXR0cmlidXRlKHN0YXJ0TGluZSAtIDEs
ICJoaWdobGlnaHQiKSB8fCB7fTsKLSAgICAgICAgdGhpcy5fdG9rZW5pemVyQ29uZGl0aW9uU3Ry
aW5naWZpZWQgPSBhdHRyaWJ1dGVzLnBvc3RDb25kaXRpb25TdHJpbmdpZmllZCB8fCBKU09OLnN0
cmluZ2lmeSh0aGlzLl90b2tlbml6ZXIuaW5pdGlhbENvbmRpdGlvbik7Ci0KLSAgICAgICAgLy8g
VHJ5IHRvIHVwZGF0ZSBoaWdobGlnaHQgc3luY2hyb25vdXNseS4KLSAgICAgICAgdGhpcy5faGln
aGxpZ2h0TGluZXMoZW5kTGluZSk7Ci0KLSAgICAgICAgaWYgKHRoaXMuX2xhc3RIaWdobGlnaHRl
ZExpbmUgPj0gdGhpcy5fdGV4dE1vZGVsLmxpbmVzQ291bnQpIHsKLSAgICAgICAgICAgIC8vIEFs
bCBpcyBkb25lIHVwIHRvIHRoZSBlbmQuCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgLy8gU3RhcnQgbGluZSB3YXMgZWRpdGVkLCB3ZSBzaG91bGQgaGlnaGxpZ2h0IGV2ZXJ5dGhp
bmcgdW50aWwgZW5kTGluZS4KKyAgICAgICAgdGhpcy5fY2xlYXJIaWdobGlnaHRTdGF0ZShzdGFy
dExpbmUpOworCisgICAgICAgIGlmIChzdGFydExpbmUpIHsKKyAgICAgICAgICAgIHZhciBzdGF0
ZSA9IHRoaXMuX3RleHRNb2RlbC5nZXRBdHRyaWJ1dGUoc3RhcnRMaW5lIC0gMSwgImhpZ2hsaWdo
dCIpOworICAgICAgICAgICAgaWYgKCFzdGF0ZSkgeworICAgICAgICAgICAgICAgIC8vIEhpZ2hs
aWdodGVyIGRpZCBub3QgcmVhY2ggdGhpcyBwb2ludCB5ZXQsIG5vdGhpbmcgdG8gdXBkYXRlLiBJ
dCB3aWxsIHJlYWNoIGl0IG9uIHN1YnNlcXVlbnQgdGltZXIgdGljayBhbmQgZG8gdGhlIGpvYi4K
KyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CiAgICAgICAgIH0K
IAotICAgICAgICB2YXIgYXR0cmlidXRlczEgPSB0aGlzLl90ZXh0TW9kZWwuZ2V0QXR0cmlidXRl
KHRoaXMuX2xhc3RIaWdobGlnaHRlZExpbmUgLSAxLCAiaGlnaGxpZ2h0IikgfHwge307Ci0gICAg
ICAgIHZhciBhdHRyaWJ1dGVzMiA9IHRoaXMuX3RleHRNb2RlbC5nZXRBdHRyaWJ1dGUodGhpcy5f
bGFzdEhpZ2hsaWdodGVkTGluZSwgImhpZ2hsaWdodCIpIHx8IHt9OwotICAgICAgICBpZiAodGhp
cy5fbGFzdEhpZ2hsaWdodGVkQ29sdW1uID09PSAwICYmIGF0dHJpYnV0ZXMyLnByZUNvbmRpdGlv
blN0cmluZ2lmaWVkICYmIGF0dHJpYnV0ZXMxLnBvc3RDb25kaXRpb25TdHJpbmdpZmllZCA9PT0g
YXR0cmlidXRlczIucHJlQ29uZGl0aW9uU3RyaW5naWZpZWQpIHsKLSAgICAgICAgICAgIC8vIEhp
Z2hsaWdodGluZyBlbmRlZCBhaGVhZCBvZiB0aW1lLiBSZXN0b3JlIHByZXZpb3VzbHkgc2F2ZWQg
c3RhdGUsIHVubGVzcyB3ZSBoYXZlIGRvbmUgbW9yZSB0aGFuIGl0IHdhcyBiZWZvcmUuCi0gICAg
ICAgICAgICBpZiAoc2F2ZWRMYXN0SGlnaGxpZ2h0ZWRMaW5lID49IHRoaXMuX2xhc3RIaWdobGln
aHRlZExpbmUpIHsKLSAgICAgICAgICAgICAgICB0aGlzLl9sYXN0SGlnaGxpZ2h0ZWRMaW5lID0g
c2F2ZWRMYXN0SGlnaGxpZ2h0ZWRMaW5lOwotICAgICAgICAgICAgICAgIHRoaXMuX2xhc3RIaWdo
bGlnaHRlZENvbHVtbiA9IHNhdmVkTGFzdEhpZ2hsaWdodGVkQ29sdW1uOwotICAgICAgICAgICAg
ICAgIHRoaXMuX3Rva2VuaXplckNvbmRpdGlvblN0cmluZ2lmaWVkID0gc2F2ZWRUb2tlbml6ZXJD
b25kaXRpb247Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIElmIGZhaWxlZCB0byB1cGRhdGUgaGlnaGxpZ2h0
IHN5bmNocm9ub3VzbHksIGludmFsaWRhdGUgaGlnaGxpZ2h0IGRhdGEgZm9yIHRoZSBzdWJzZXF1
ZW50IGxpbmVzLgotICAgICAgICAgICAgaWYgKHRoaXMuX2xhc3RIaWdobGlnaHRlZENvbHVtbiA9
PT0gMCkKLSAgICAgICAgICAgICAgICB0aGlzLl90ZXh0TW9kZWwucmVtb3ZlQXR0cmlidXRlKHRo
aXMuX2xhc3RIaWdobGlnaHRlZExpbmUsICJoaWdobGlnaHQiKTsKLSAgICAgICAgICAgIGZvciAo
dmFyIGkgPSB0aGlzLl9sYXN0SGlnaGxpZ2h0ZWRMaW5lICsgMTsgaSA8IHRoaXMuX3RleHRNb2Rl
bC5saW5lc0NvdW50OyArK2kpCisgICAgICAgIHZhciByZXN0b3JlZCA9IHRoaXMuX2hpZ2hsaWdo
dExpbmVzKHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgICAgIGlmICghcmVzdG9yZWQpIHsKKyAg
ICAgICAgICAgIGZvciAodmFyIGkgPSB0aGlzLl9sYXN0SGlnaGxpZ2h0ZWRMaW5lOyBpIDwgdGhp
cy5fdGV4dE1vZGVsLmxpbmVzQ291bnQ7ICsraSkgeworICAgICAgICAgICAgICAgIHZhciBzdGF0
ZSA9IHRoaXMuX3RleHRNb2RlbC5nZXRBdHRyaWJ1dGUoaSwgImhpZ2hsaWdodCIpOworICAgICAg
ICAgICAgICAgIGlmICghc3RhdGUgJiYgaSA+IGVuZExpbmUpCisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIHRoaXMuX3RleHRNb2RlbC5zZXRBdHRyaWJ1dGUoaSwg
ImhpZ2hsaWdodC1vdXRkYXRlZCIsIHN0YXRlKTsKICAgICAgICAgICAgICAgICB0aGlzLl90ZXh0
TW9kZWwucmVtb3ZlQXR0cmlidXRlKGksICJoaWdobGlnaHQiKTsKLQotICAgICAgICAgICAgLy8g
Q29udGludWUgaGlnaGxpZ2h0aW5nIG9uIHN1YnNlcXVlbnQgdGltZXIgdGlja3MuCi0gICAgICAg
ICAgICB0aGlzLl9yZXF1ZXN0ZWRFbmRMaW5lID0gZW5kTGluZTsKLSAgICAgICAgICAgIGlmICgh
dGhpcy5faGlnaGxpZ2h0VGltZXIpCi0gICAgICAgICAgICAgICAgdGhpcy5faGlnaGxpZ2h0VGlt
ZXIgPSBzZXRUaW1lb3V0KHRoaXMuX2hpZ2hsaWdodEluQ2h1bmtzLmJpbmQodGhpcywgZW5kTGlu
ZSksIDEwMCk7Ci0KLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KICAg
ICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdG9yZWQ7CiAgICAgfSwKIAotICAgIF9oaWdobGln
aHRJbkNodW5rczogZnVuY3Rpb24oZW5kTGluZSkKKyAgICBfaGlnaGxpZ2h0SW5DaHVua3M6IGZ1
bmN0aW9uKHN0YXJ0TGluZSwgZW5kTGluZSkKICAgICB7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9o
aWdobGlnaHRUaW1lcjsKIAogICAgICAgICAvLyBGaXJzdCB3ZSBhbHdheXMgY2hlY2sgaWYgd2Ug
aGF2ZSB3b3JrIHRvIGRvLiBDb3VsZCBiZSB0aGF0IHVzZXIgc2Nyb2xsZWQgYmFjayBhbmQgd2Ug
Y2FuIHF1aXQuCi0gICAgICAgIGlmICh0aGlzLl9yZXF1ZXN0ZWRFbmRMaW5lIDw9IHRoaXMuX2xh
c3RIaWdobGlnaHRlZExpbmUpCisgICAgICAgIHZhciBzdGF0ZSA9IHRoaXMuX3RleHRNb2RlbC5n
ZXRBdHRyaWJ1dGUodGhpcy5fcmVxdWVzdGVkRW5kTGluZSAtIDEsICJoaWdobGlnaHQiKTsKKyAg
ICAgICAgaWYgKHN0YXRlKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmICh0aGlz
Ll9yZXF1ZXN0ZWRFbmRMaW5lICE9PSBlbmRMaW5lKSB7CiAgICAgICAgICAgICAvLyBVc2VyIGtl
ZXBzIHVwZGF0aW5nIHRoZSBqb2IgaW4gYmV0d2VlbiBvZiBvdXIgdGltZXIgdGlja3MuIEp1c3Qg
cmVzY2hlZHVsZSBzZWxmLCBkb24ndCBlYXQgQ1BVICh0aGV5IG11c3QgYmUgc2Nyb2xsaW5nKS4K
LSAgICAgICAgICAgIHRoaXMuX2hpZ2hsaWdodFRpbWVyID0gc2V0VGltZW91dCh0aGlzLl9oaWdo
bGlnaHRJbkNodW5rcy5iaW5kKHRoaXMsIHRoaXMuX3JlcXVlc3RlZEVuZExpbmUpLCAxMDApOwor
ICAgICAgICAgICAgdGhpcy5faGlnaGxpZ2h0VGltZXIgPSBzZXRUaW1lb3V0KHRoaXMuX2hpZ2hs
aWdodEluQ2h1bmtzLmJpbmQodGhpcywgc3RhcnRMaW5lLCB0aGlzLl9yZXF1ZXN0ZWRFbmRMaW5l
KSwgMTAwKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xNTEsNTggKzEy
NCwxMDkgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JIaWdobGlnaHRlci5wcm90b3R5cGUgPSB7
CiAgICAgICAgIGlmICh0aGlzLl9yZXF1ZXN0ZWRFbmRMaW5lID4gdGhpcy5fdGV4dE1vZGVsLmxp
bmVzQ291bnQpCiAgICAgICAgICAgICB0aGlzLl9yZXF1ZXN0ZWRFbmRMaW5lID0gdGhpcy5fdGV4
dE1vZGVsLmxpbmVzQ291bnQ7CiAKLSAgICAgICAgdGhpcy5faGlnaGxpZ2h0TGluZXModGhpcy5f
cmVxdWVzdGVkRW5kTGluZSk7CisgICAgICAgIHRoaXMuX2hpZ2hsaWdodExpbmVzKHN0YXJ0TGlu
ZSwgdGhpcy5fcmVxdWVzdGVkRW5kTGluZSk7CiAKICAgICAgICAgLy8gU2NoZWR1bGUgdGFpbCBo
aWdobGlnaHQgaWYgbmVjZXNzYXJ5LgogICAgICAgICBpZiAodGhpcy5fbGFzdEhpZ2hsaWdodGVk
TGluZSA8IHRoaXMuX3JlcXVlc3RlZEVuZExpbmUpCi0gICAgICAgICAgICB0aGlzLl9oaWdobGln
aHRUaW1lciA9IHNldFRpbWVvdXQodGhpcy5faGlnaGxpZ2h0SW5DaHVua3MuYmluZCh0aGlzLCB0
aGlzLl9yZXF1ZXN0ZWRFbmRMaW5lKSwgMTApOworICAgICAgICAgICAgdGhpcy5faGlnaGxpZ2h0
VGltZXIgPSBzZXRUaW1lb3V0KHRoaXMuX2hpZ2hsaWdodEluQ2h1bmtzLmJpbmQodGhpcywgdGhp
cy5fbGFzdEhpZ2hsaWdodGVkTGluZSwgdGhpcy5fcmVxdWVzdGVkRW5kTGluZSksIDEwKTsKICAg
ICB9LAogCi0gICAgX2hpZ2hsaWdodExpbmVzOiBmdW5jdGlvbihlbmRMaW5lKQorICAgIF9oaWdo
bGlnaHRMaW5lczogZnVuY3Rpb24oc3RhcnRMaW5lLCBlbmRMaW5lKQogICAgIHsKLSAgICAgICAg
Ly8gVG9rZW5pemVyIGlzIHN0YXRlbGVzcyBhbmQgcmV1c2VkIGFjcm9zcyB2aWV3ZXJzLCByZXN0
b3JlIGl0cyBjb25kaXRpb24gYmVmb3JlIGhpZ2hsaWdodCBhbmQgc2F2ZSBpdCBhZnRlci4KLSAg
ICAgICAgdGhpcy5fdG9rZW5pemVyLmNvbmRpdGlvbiA9IEpTT04ucGFyc2UodGhpcy5fdG9rZW5p
emVyQ29uZGl0aW9uU3RyaW5naWZpZWQpOwotICAgICAgICB2YXIgdG9rZW5zQ291bnQgPSAwOwot
ICAgICAgICBmb3IgKHZhciBsaW5lTnVtYmVyID0gdGhpcy5fbGFzdEhpZ2hsaWdodGVkTGluZTsg
bGluZU51bWJlciA8IGVuZExpbmU7ICsrbGluZU51bWJlcikgewotICAgICAgICAgICAgdmFyIGxp
bmUgPSB0aGlzLl90ZXh0TW9kZWwubGluZShsaW5lTnVtYmVyKTsKLSAgICAgICAgICAgIHRoaXMu
X3Rva2VuaXplci5saW5lID0gbGluZTsKLQotICAgICAgICAgICAgaWYgKHRoaXMuX2xhc3RIaWdo
bGlnaHRlZENvbHVtbiA9PT0gMCkgewotICAgICAgICAgICAgICAgIHZhciBhdHRyaWJ1dGVzID0g
e307Ci0gICAgICAgICAgICAgICAgYXR0cmlidXRlcy5wcmVDb25kaXRpb25TdHJpbmdpZmllZCA9
IEpTT04uc3RyaW5naWZ5KHRoaXMuX3Rva2VuaXplci5jb25kaXRpb24pOwotICAgICAgICAgICAg
ICAgIHRoaXMuX3RleHRNb2RlbC5zZXRBdHRyaWJ1dGUobGluZU51bWJlciwgImhpZ2hsaWdodCIs
IGF0dHJpYnV0ZXMpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgdmFyIGF0
dHJpYnV0ZXMgPSB0aGlzLl90ZXh0TW9kZWwuZ2V0QXR0cmlidXRlKGxpbmVOdW1iZXIsICJoaWdo
bGlnaHQiKTsKLQotICAgICAgICAgICAgLy8gSGlnaGxpZ2h0IGxpbmUuCi0gICAgICAgICAgICBk
byB7Ci0gICAgICAgICAgICAgICAgdmFyIG5ld0NvbHVtbiA9IHRoaXMuX3Rva2VuaXplci5uZXh0
VG9rZW4odGhpcy5fbGFzdEhpZ2hsaWdodGVkQ29sdW1uKTsKLSAgICAgICAgICAgICAgICB2YXIg
dG9rZW5UeXBlID0gdGhpcy5fdG9rZW5pemVyLnRva2VuVHlwZTsKLSAgICAgICAgICAgICAgICBp
ZiAodG9rZW5UeXBlKQotICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzW3RoaXMuX2xhc3RI
aWdobGlnaHRlZENvbHVtbl0gPSB7IGxlbmd0aDogbmV3Q29sdW1uIC0gdGhpcy5fbGFzdEhpZ2hs
aWdodGVkQ29sdW1uLCB0b2tlblR5cGU6IHRva2VuVHlwZSB9OwotICAgICAgICAgICAgICAgIHRo
aXMuX2xhc3RIaWdobGlnaHRlZENvbHVtbiA9IG5ld0NvbHVtbjsKLSAgICAgICAgICAgICAgICBp
ZiAoKyt0b2tlbnNDb3VudCA+IHRoaXMuX2hpZ2hsaWdodENodW5rTGltaXQpCi0gICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfSB3aGlsZSAodGhpcy5fbGFzdEhpZ2hsaWdo
dGVkQ29sdW1uIDwgbGluZS5sZW5ndGgpOworICAgICAgICAvLyBSZXN0b3JlIGhpZ2hsaWdodGVy
IGNvbnRleHQgdGFrZW4gZnJvbSBwcmV2aW91cyBsaW5lLgorICAgICAgICB2YXIgc3RhdGUgPSB0
aGlzLl90ZXh0TW9kZWwuZ2V0QXR0cmlidXRlKHN0YXJ0TGluZSAtIDEsICJoaWdobGlnaHQiKTsK
KyAgICAgICAgdmFyIHBvc3RDb25kaXRpb25TdHJpbmdpZmllZCA9IHN0YXRlID8gc3RhdGUucG9z
dENvbmRpdGlvblN0cmluZ2lmaWVkIDogSlNPTi5zdHJpbmdpZnkodGhpcy5fdG9rZW5pemVyLmlu
aXRpYWxDb25kaXRpb24pOwogCi0gICAgICAgICAgICBpZiAodGhpcy5fbGFzdEhpZ2hsaWdodGVk
Q29sdW1uIDwgbGluZS5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgICAvLyBUb28gbXVjaCB3b3Jr
IGZvciBzaW5nbGUgY2h1bmsgLSBleGl0LgotICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB2YXIgdG9rZW5zQ291bnQgPSAwOworICAgICAgICBmb3IgKHZhciBsaW5lTnVtYmVyID0gc3Rh
cnRMaW5lOyBsaW5lTnVtYmVyIDwgZW5kTGluZTsgKytsaW5lTnVtYmVyKSB7CisgICAgICAgICAg
ICB2YXIgc3RhdGUgPSB0aGlzLl9zZWxlY3RIaWdobGlnaHRTdGF0ZShsaW5lTnVtYmVyLCBwb3N0
Q29uZGl0aW9uU3RyaW5naWZpZWQpOworICAgICAgICAgICAgaWYgKHN0YXRlLnBvc3RDb25kaXRp
b25TdHJpbmdpZmllZCkgeworICAgICAgICAgICAgICAgIC8vIFRoaXMgbGluZSBpcyBhbHJlYWR5
IGhpZ2hsaWdodGVkLgorICAgICAgICAgICAgICAgIHBvc3RDb25kaXRpb25TdHJpbmdpZmllZCA9
IHN0YXRlLnBvc3RDb25kaXRpb25TdHJpbmdpZmllZDsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgdGhpcy5fbGFzdEhpZ2hsaWdodGVkQ29sdW1uID0gMDsKLSAgICAgICAg
ICAgICAgICBhdHRyaWJ1dGVzLnBvc3RDb25kaXRpb25TdHJpbmdpZmllZCA9IEpTT04uc3RyaW5n
aWZ5KHRoaXMuX3Rva2VuaXplci5jb25kaXRpb24pOworICAgICAgICAgICAgICAgIHZhciBsYXN0
SGlnaGxpZ2h0ZWRDb2x1bW4gPSAwOworICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5taWRDb25k
aXRpb25TdHJpbmdpZmllZCkgeworICAgICAgICAgICAgICAgICAgICBsYXN0SGlnaGxpZ2h0ZWRD
b2x1bW4gPSBzdGF0ZS5sYXN0SGlnaGxpZ2h0ZWRDb2x1bW47CisgICAgICAgICAgICAgICAgICAg
IHBvc3RDb25kaXRpb25TdHJpbmdpZmllZCA9IHN0YXRlLm1pZENvbmRpdGlvblN0cmluZ2lmaWVk
OworICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIHZhciBuZXh0QXR0cmlidXRl
cyA9IHRoaXMuX3RleHRNb2RlbC5nZXRBdHRyaWJ1dGUobGluZU51bWJlciArIDEsICJoaWdobGln
aHQiKSB8fCB7fTsKLSAgICAgICAgICAgICAgICBpZiAobmV4dEF0dHJpYnV0ZXMucHJlQ29uZGl0
aW9uU3RyaW5naWZpZWQgPT09IGF0dHJpYnV0ZXMucG9zdENvbmRpdGlvblN0cmluZ2lmaWVkKSB7
Ci0gICAgICAgICAgICAgICAgICAgIC8vIEZvbGxvd2luZyBsaW5lcyBhcmUgdXAgdG8gZGF0ZSwg
bm8gbmVlZCB0byByZS1oaWdobGlnaHQuCi0gICAgICAgICAgICAgICAgICAgICsrbGluZU51bWJl
cjsKKyAgICAgICAgICAgICAgICB2YXIgbGluZSA9IHRoaXMuX3RleHRNb2RlbC5saW5lKGxpbmVO
dW1iZXIpOworICAgICAgICAgICAgICAgIHRoaXMuX3Rva2VuaXplci5saW5lID0gbGluZTsKKyAg
ICAgICAgICAgICAgICB0aGlzLl90b2tlbml6ZXIuY29uZGl0aW9uID0gSlNPTi5wYXJzZShwb3N0
Q29uZGl0aW9uU3RyaW5naWZpZWQpOworCisgICAgICAgICAgICAgICAgLy8gSGlnaGxpZ2h0IGxp
bmUuCisgICAgICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgICAgICB2YXIgbmV3Q29s
dW1uID0gdGhpcy5fdG9rZW5pemVyLm5leHRUb2tlbihsYXN0SGlnaGxpZ2h0ZWRDb2x1bW4pOwor
ICAgICAgICAgICAgICAgICAgICB2YXIgdG9rZW5UeXBlID0gdGhpcy5fdG9rZW5pemVyLnRva2Vu
VHlwZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRva2VuVHlwZSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXRlW2xhc3RIaWdobGlnaHRlZENvbHVtbl0gPSB7IGxlbmd0aDogbmV3Q29s
dW1uIC0gbGFzdEhpZ2hsaWdodGVkQ29sdW1uLCB0b2tlblR5cGU6IHRva2VuVHlwZSB9OworICAg
ICAgICAgICAgICAgICAgICBsYXN0SGlnaGxpZ2h0ZWRDb2x1bW4gPSBuZXdDb2x1bW47CisgICAg
ICAgICAgICAgICAgICAgIGlmICgrK3Rva2Vuc0NvdW50ID4gdGhpcy5faGlnaGxpZ2h0Q2h1bmtM
aW1pdCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0g
d2hpbGUgKGxhc3RIaWdobGlnaHRlZENvbHVtbiA8IGxpbmUubGVuZ3RoKTsKKworICAgICAgICAg
ICAgICAgIHBvc3RDb25kaXRpb25TdHJpbmdpZmllZCA9IEpTT04uc3RyaW5naWZ5KHRoaXMuX3Rv
a2VuaXplci5jb25kaXRpb24pOworCisgICAgICAgICAgICAgICAgaWYgKGxhc3RIaWdobGlnaHRl
ZENvbHVtbiA8IGxpbmUubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFRvbyBtdWNo
IHdvcmsgZm9yIHNpbmdsZSBjaHVuayAtIGV4aXQuCisgICAgICAgICAgICAgICAgICAgIHN0YXRl
Lmxhc3RIaWdobGlnaHRlZENvbHVtbiA9IGxhc3RIaWdobGlnaHRlZENvbHVtbjsKKyAgICAgICAg
ICAgICAgICAgICAgc3RhdGUubWlkQ29uZGl0aW9uU3RyaW5naWZpZWQgPSBwb3N0Q29uZGl0aW9u
U3RyaW5naWZpZWQ7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBzdGF0ZS5sYXN0SGlnaGxpZ2h0
ZWRDb2x1bW47CisgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBzdGF0ZS5taWRDb25kaXRpb25T
dHJpbmdpZmllZDsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUucG9zdENvbmRpdGlvblN0cmlu
Z2lmaWVkID0gcG9zdENvbmRpdGlvblN0cmluZ2lmaWVkOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIG5leHRMaW5lU3RhdGUgPSB0aGlzLl90ZXh0
TW9kZWwuZ2V0QXR0cmlidXRlKGxpbmVOdW1iZXIgKyAxLCAiaGlnaGxpZ2h0Iik7CisgICAgICAg
ICAgICBpZiAobmV4dExpbmVTdGF0ZSAmJiBuZXh0TGluZVN0YXRlLnByZUNvbmRpdGlvblN0cmlu
Z2lmaWVkID09PSBzdGF0ZS5wb3N0Q29uZGl0aW9uU3RyaW5naWZpZWQpIHsKKyAgICAgICAgICAg
ICAgICAvLyBGb2xsb3dpbmcgbGluZXMgYXJlIHVwIHRvIGRhdGUsIG5vIG5lZWQgcmUtaGlnaGxp
Z2h0LgorICAgICAgICAgICAgICAgICsrbGluZU51bWJlcjsKKyAgICAgICAgICAgICAgICB0aGlz
Ll9kYW1hZ2VDYWxsYmFjayhzdGFydExpbmUsIGxpbmVOdW1iZXIpOworCisgICAgICAgICAgICAg
ICAgLy8gQWR2YW5jZSB0aGUgInBvaW50ZXIiIHRvIHRoZSBsYXN0IGhpZ2hsaWdodGVkIGxpbmUg
d2l0aGluIHRoZSBnaXZlbiBjaHVuay4KKyAgICAgICAgICAgICAgICBmb3IgKDsgbGluZU51bWJl
ciA8IGVuZExpbmU7ICsrbGluZU51bWJlcikgeworICAgICAgICAgICAgICAgICAgICB2YXIgc3Rh
dGUgPSB0aGlzLl90ZXh0TW9kZWwuZ2V0QXR0cmlidXRlKGxpbmVOdW1iZXIsICJoaWdobGlnaHQi
KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFzdGF0ZSB8fCAhc3RhdGUucG9zdENvbmRpdGlv
blN0cmluZ2lmaWVkKQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIHRoaXMuX2xhc3RIaWdobGlnaHRlZExpbmUgPSBsaW5l
TnVtYmVyOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAKLSAgICAgICAgdGhpcy5fZGFtYWdlQ2FsbGJhY2sodGhpcy5fbGFzdEhpZ2hsaWdo
dGVkTGluZSwgbGluZU51bWJlcik7Ci0gICAgICAgIHRoaXMuX3Rva2VuaXplckNvbmRpdGlvblN0
cmluZ2lmaWVkID0gSlNPTi5zdHJpbmdpZnkodGhpcy5fdG9rZW5pemVyLmNvbmRpdGlvbik7Cisg
ICAgICAgIHRoaXMuX2RhbWFnZUNhbGxiYWNrKHN0YXJ0TGluZSwgbGluZU51bWJlcik7CiAgICAg
ICAgIHRoaXMuX2xhc3RIaWdobGlnaHRlZExpbmUgPSBsaW5lTnVtYmVyOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfSwKKworICAgIF9zZWxlY3RIaWdobGlnaHRTdGF0ZTogZnVuY3Rpb24o
bGluZU51bWJlciwgcHJlQ29uZGl0aW9uU3RyaW5naWZpZWQpCisgICAgeworICAgICAgICB2YXIg
c3RhdGUgPSB0aGlzLl90ZXh0TW9kZWwuZ2V0QXR0cmlidXRlKGxpbmVOdW1iZXIsICJoaWdobGln
aHQiKTsKKyAgICAgICAgaWYgKHN0YXRlICYmIHN0YXRlLnByZUNvbmRpdGlvblN0cmluZ2lmaWVk
ID09PSBwcmVDb25kaXRpb25TdHJpbmdpZmllZCkKKyAgICAgICAgICAgIHJldHVybiBzdGF0ZTsK
KworICAgICAgICB2YXIgb3V0ZGF0ZWRTdGF0ZSA9IHRoaXMuX3RleHRNb2RlbC5nZXRBdHRyaWJ1
dGUobGluZU51bWJlciwgImhpZ2hsaWdodC1vdXRkYXRlZCIpOworICAgICAgICBpZiAob3V0ZGF0
ZWRTdGF0ZSAmJiBvdXRkYXRlZFN0YXRlLnByZUNvbmRpdGlvblN0cmluZ2lmaWVkID09PSBwcmVD
b25kaXRpb25TdHJpbmdpZmllZCkgeworICAgICAgICAgICAgLy8gU3dhcCBzdGF0ZXMuCisgICAg
ICAgICAgICB0aGlzLl90ZXh0TW9kZWwuc2V0QXR0cmlidXRlKGxpbmVOdW1iZXIsICJoaWdobGln
aHQiLCBvdXRkYXRlZFN0YXRlKTsKKyAgICAgICAgICAgIHRoaXMuX3RleHRNb2RlbC5zZXRBdHRy
aWJ1dGUobGluZU51bWJlciwgImhpZ2hsaWdodC1vdXRkYXRlZCIsIHN0YXRlKTsKKyAgICAgICAg
ICAgIHJldHVybiBvdXRkYXRlZFN0YXRlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHN0YXRl
KQorICAgICAgICAgICAgdGhpcy5fdGV4dE1vZGVsLnNldEF0dHJpYnV0ZShsaW5lTnVtYmVyLCAi
aGlnaGxpZ2h0LW91dGRhdGVkIiwgc3RhdGUpOworCisgICAgICAgIHN0YXRlID0ge307CisgICAg
ICAgIHN0YXRlLnByZUNvbmRpdGlvblN0cmluZ2lmaWVkID0gcHJlQ29uZGl0aW9uU3RyaW5naWZp
ZWQ7CisgICAgICAgIHRoaXMuX3RleHRNb2RlbC5zZXRBdHRyaWJ1dGUobGluZU51bWJlciwgImhp
Z2hsaWdodCIsIHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHN0YXRlOworICAgIH0sCisKKyAgICBf
Y2xlYXJIaWdobGlnaHRTdGF0ZTogZnVuY3Rpb24obGluZU51bWJlcikKKyAgICB7CisgICAgICAg
IHRoaXMuX3RleHRNb2RlbC5yZW1vdmVBdHRyaWJ1dGUobGluZU51bWJlciwgImhpZ2hsaWdodCIp
OworICAgICAgICB0aGlzLl90ZXh0TW9kZWwucmVtb3ZlQXR0cmlidXRlKGxpbmVOdW1iZXIsICJo
aWdobGlnaHQtb3V0ZGF0ZWQiKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRWaWV3ZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1RleHRWaWV3ZXIuanMKaW5kZXggNGNlYmFlMzllNzdlMzI2ODlmMmVj
MTBiYThjYzk2OGJkODdiZjQzNy4uZDliM2RhN2ZkYWYwZmNhMWQ5MjZiODU1MWY0MTcxYmM5MDk5
NTFkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0
Vmlld2VyLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGV4dFZp
ZXdlci5qcwpAQCAtODE5LDcgKzgxOSw2IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBh
bmVsLnByb3RvdHlwZSA9IHsKIAogICAgIF9idWlsZENodW5rczogZnVuY3Rpb24oKQogICAgIHsK
LSAgICAgICAgdGhpcy5faGlnaGxpZ2h0ZXIucmVzZXQoKTsKICAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCB0aGlzLl90ZXh0TW9kZWwubGluZXNDb3VudDsgKytpKQogICAgICAgICAgICAgdGhp
cy5fdGV4dE1vZGVsLnJlbW92ZUF0dHJpYnV0ZShpLCAiaGlnaGxpZ2h0Iik7CiAKQEAgLTEzNzMs
NyArMTM3Miw4IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZSA9
IHsKICAgICAgICAgdmFyIGNodW5rID0gdGhpcy5fdGV4dENodW5rc1tyZXN1bHQuZW5kIC0gMV07
CiAgICAgICAgIHZhciBsYXN0VmlzaWJsZUxpbmUgPSBjaHVuay5zdGFydExpbmUgKyBjaHVuay5s
aW5lc0NvdW50OwogCi0gICAgICAgIGxhc3RWaXNpYmxlTGluZSA9IE1hdGgubWF4KGxhc3RWaXNp
YmxlTGluZSwgcmFuZ2UuZW5kTGluZSk7CisgICAgICAgIGxhc3RWaXNpYmxlTGluZSA9IE1hdGgu
bWF4KGxhc3RWaXNpYmxlTGluZSwgcmFuZ2UuZW5kTGluZSArIDEpOworICAgICAgICBsYXN0Vmlz
aWJsZUxpbmUgPSBNYXRoLm1pbihsYXN0VmlzaWJsZUxpbmUsIHRoaXMuX3RleHRNb2RlbC5saW5l
c0NvdW50KTsKIAogICAgICAgICB2YXIgdXBkYXRlZCA9IHRoaXMuX2hpZ2hsaWdodGVyLnVwZGF0
ZUhpZ2hsaWdodChyYW5nZS5zdGFydExpbmUsIGxhc3RWaXNpYmxlTGluZSk7CiAgICAgICAgIGlm
ICghdXBkYXRlZCkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85183</attachid>
            <date>2011-03-09 09:20:46 -0800</date>
            <delta_ts>2011-03-10 04:11:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56015-20110309202044.patch</filename>
            <type>text/plain</type>
            <size>24896</size>
            <attacher name="Andrey Adaikin">aandrey</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODA2NDEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxYzM3NmMzYTAwNjgwMWIxZjM1NDY4
NTUxN2FiYzEyNWVhMDZkZGRmLi5lNDdlNWU5YWU0Nzk0Y2MyZmQ4ZGFkNzNiMmQ1NDlkMjliNDY0
YzM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDMtMDkgIEFuZHJleSBBZGFpa2luICA8
YWFuZHJleUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEhpZ2hsaWdodGVyIHJlZmFjdG9yaW5nCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjAxNQorCisgICAg
ICAgICogaW5zcGVjdG9yL2VkaXRvci9oaWdobGlnaHRlci1iYXNpY3MtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIGluc3BlY3Rvci9lZGl0b3IvaGlnaGxpZ2h0ZXItYmFzaWNzLmh0bWw6CisgICAg
ICAgICogaW5zcGVjdG9yL2VkaXRvci9oaWdobGlnaHRlci1sb25nLWxpbmUuaHRtbDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZWRpdG9yL2hpZ2hsaWdodGVyLXBhc3RlLWluLWNvbW1lbnQtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9lZGl0b3IvaGlnaGxpZ2h0ZXItcGFzdGUtaW4t
Y29tbWVudC5odG1sOgorCiAyMDExLTAzLTA5ICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWRpdG9yL2hpZ2hsaWdodGVyLWJhc2ljcy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWRpdG9yL2hpZ2hsaWdodGVyLWJhc2lj
cy1leHBlY3RlZC50eHQKaW5kZXggOWZkNjU2NzJmZDRiYjcyZWJkNWYwN2U4NGFjMjc1YTgwNGNj
MTcwMC4uMzkzYjcxZGFiODU4ZWNkMDMzZTgyOGMwYjk3NjYwNGJkZjZmYTU5ZSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VkaXRvci9oaWdobGlnaHRlci1iYXNpY3MtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lZGl0b3IvaGlnaGxpZ2h0ZXItYmFz
aWNzLWV4cGVjdGVkLnR4dApAQCAtNjYsNyArNjYsNyBAQCBBZnRlciB1cGRhdGluZyBoaWdobGln
aHRzCiAxMiA6ICAqIGxpbmUgIzggOiBqYXZhc2NyaXB0LWNvbW1lbnRbMC0xMF0KIDEzIDogICog
dmFyIGEgPSBuZXcgQSgpOyAvLyovIDogamF2YXNjcmlwdC1jb21tZW50WzAtMjRdCiAxNCA6IHNv
bWUgdGV4dCA6IGphdmFzY3JpcHQtaWRlbnRbMC00XSBqYXZhc2NyaXB0LWlkZW50WzUtOV0KLTE1
IDogICogbGluZSAjNiA6IG51bGwKKzE1IDogICogbGluZSAjNiA6IGphdmFzY3JpcHQtaWRlbnRb
My03XSBqYXZhc2NyaXB0LW51bWJlcls5LTEwXQogMTYgOiAgKiBsaW5lICM3IDogbnVsbAogMTcg
OiAgKiBsaW5lICM4IDogbnVsbAogMTggOiAgKiB2YXIgYSA9IG5ldyBBKCk7IC8vKi8gOiBudWxs
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWRpdG9yL2hpZ2hsaWdodGVyLWJh
c2ljcy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VkaXRvci9oaWdobGlnaHRlci1iYXNp
Y3MuaHRtbAppbmRleCBhNDFhZjhmNDEwMGUzYjg3MzQ0NDFhNTdhMmRmNDQ5ZjBkYjUyYTgwLi4y
YmRhZDUwZjBiM2Y4NzBiZDRiOGNlNDY5OTkxZmJhNWY4MGYxNDY4IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZWRpdG9yL2hpZ2hsaWdodGVyLWJhc2ljcy5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9lZGl0b3IvaGlnaGxpZ2h0ZXItYmFzaWNzLmh0bWwKQEAgLTM1
LDcgKzM1LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgdmFyIG5ld1JhbmdlID0gdGV4dE1vZGVs
LnNldFRleHQocmFuZ2UsIHNyYyk7CiAgICAgZHVtcFRleHRNb2RlbCgiQWZ0ZXIgY2hhbmdpbmcg
dGV4dCBtb2RlbCwgYnV0IGJlZm9yZSB1cGRhdGluZyBoaWdobGlnaHRzIik7CiAKLSAgICBoaWdo
bGlnaHRlci51cGRhdGVIaWdobGlnaHQobmV3UmFuZ2Uuc3RhcnRMaW5lLCBuZXdSYW5nZS5lbmRM
aW5lKTsKKyAgICBoaWdobGlnaHRlci51cGRhdGVIaWdobGlnaHQobmV3UmFuZ2Uuc3RhcnRMaW5l
LCBuZXdSYW5nZS5lbmRMaW5lICsgMSk7CiAgICAgZHVtcFRleHRNb2RlbCgiQWZ0ZXIgdXBkYXRp
bmcgaGlnaGxpZ2h0cyIpOwogCiAgICAgaGlnaGxpZ2h0ZXIuaGlnaGxpZ2h0KHRleHRNb2RlbC5s
aW5lc0NvdW50LCB0cnVlKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9lZGl0
b3IvaGlnaGxpZ2h0ZXItbG9uZy1saW5lLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWRp
dG9yL2hpZ2hsaWdodGVyLWxvbmctbGluZS5odG1sCmluZGV4IDM1OTBkNWY2ODc0Njc1MzFlZGI4
YWNkY2RjZWEzYjIxMTE5MDI3MGUuLmI3MDM2MzRhYzRhODM1YTRkZTY4NjkyNjAzODhjMmRlMzg5
NGUyMzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9lZGl0b3IvaGlnaGxpZ2h0
ZXItbG9uZy1saW5lLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VkaXRvci9oaWdo
bGlnaHRlci1sb25nLWxpbmUuaHRtbApAQCAtMTksMjQgKzE5LDM3IEBAIGZ1bmN0aW9uIHRlc3Qo
KQogICAgICAgICBjb21tZW50cyAqPSAyOwogICAgIH0KICAgICB0ZXh0TW9kZWwuc2V0VGV4dChu
dWxsLCBzcmMpOwotICAgIGhpZ2hsaWdodGVyLnJlc2V0KCk7CisKKyAgICBmdW5jdGlvbiBjaGVj
a0hpZ2hsaWdodHMoKQorICAgIHsKKyAgICAgICAgdmFyIGNvbW1lbnRzRm91bmQgPSAwOworICAg
ICAgICBmb3IgKHZhciBsaW5lTnVtYmVyID0gMDsgbGluZU51bWJlciA8IHRleHRNb2RlbC5saW5l
c0NvdW50OyArK2xpbmVOdW1iZXIpIHsKKyAgICAgICAgICAgIHZhciBoaWdobGlnaHQgPSB0ZXh0
TW9kZWwuZ2V0QXR0cmlidXRlKGxpbmVOdW1iZXIsICJoaWdobGlnaHQiKTsKKyAgICAgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgdGV4dE1vZGVsLmxpbmVMZW5ndGgobGluZU51bWJlcik7ICsr
aSkgeworICAgICAgICAgICAgICAgIGlmIChoaWdobGlnaHRbaV0pIHsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKGhpZ2hsaWdodFtpXS5sZW5ndGggIT09IDEwIHx8IChpICUgMTEpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRVJST1I6IHVuZXhw
ZWN0ZWQgaGlnaGxpZ2h0IHJlc3VsdDogaT0iICsgaSArICIsIGxlbmd0aD0iICsgaGlnaGxpZ2h0
W2ldLmxlbmd0aCk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICArK2NvbW1lbnRzRm91bmQ7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChjb21tZW50
cyAhPT0gY29tbWVudHNGb3VuZCkKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0
KCJFUlJPUjogc29tZSBvZiB0aGUgY29tbWVudHMgd2VyZSBub3QgaGlnaGxpZ2h0ZWQsIGZvdW5k
OiAiICsgY29tbWVudHNGb3VuZCk7CisgICAgfQogCiAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1
bHQoIkxpbmUgbGVuZ3RoOiAiICsgc3JjLmxlbmd0aCArICIsIG51bWJlciBvZiBjb21tZW50czog
IiArIGNvbW1lbnRzKTsKIAogICAgIGhpZ2hsaWdodGVyLmhpZ2hsaWdodCh0ZXh0TW9kZWwubGlu
ZXNDb3VudCk7CisgICAgY2hlY2tIaWdobGlnaHRzKCk7CiAKLSAgICB2YXIgaGlnaGxpZ2h0ID0g
dGV4dE1vZGVsLmdldEF0dHJpYnV0ZSgwLCAiaGlnaGxpZ2h0Iik7Ci0gICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBzcmMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgaWYgKGhpZ2hsaWdodFtpXSkgewot
ICAgICAgICAgICAgaWYgKGhpZ2hsaWdodFtpXS5sZW5ndGggIT09IDEwIHx8IChpICUgMTEpKSB7
Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkVSUk9SOiB1bmV4cGVj
dGVkIGhpZ2hsaWdodCByZXN1bHQ6IGk9IiArIGkgKyAiLCBsZW5ndGg9IiArIGhpZ2hsaWdodFtp
XS5sZW5ndGgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgLS1jb21tZW50czsKLSAgICAgICAgfQotICAgIH0KLSAgICBpZiAoY29tbWVudHMpCi0g
ICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJFUlJPUjogc29tZSBvZiB0aGUgY29tbWVu
dHMgd2VyZSBub3QgaGlnaGxpZ2h0ZWQ6ICIgKyBjb21tZW50cyk7CisgICAgLy8gSW5zZXJ0IGEg
Y2FyZXQgcmV0dXJuIGluIHRoZSBtaWRkbGUgb2YgdGhlIGxvbmcgbGluZS4KKyAgICB2YXIgaGFs
Zkxlbmd0aCA9IE1hdGguZmxvb3Ioc3JjLmxlbmd0aCAvIDIpOworICAgIHZhciByYW5nZSA9IG5l
dyBXZWJJbnNwZWN0b3IuVGV4dFJhbmdlKDAsIGhhbGZMZW5ndGgsIDAsIGhhbGZMZW5ndGgpOwor
ICAgIHZhciBuZXdSYW5nZSA9IHRleHRNb2RlbC5zZXRUZXh0KHJhbmdlLCAiXG4iKTsKKyAgICBo
aWdobGlnaHRlci51cGRhdGVIaWdobGlnaHQobmV3UmFuZ2Uuc3RhcnRMaW5lLCBuZXdSYW5nZS5l
bmRMaW5lICsgMSk7CisgICAgY2hlY2tIaWdobGlnaHRzKCk7CiAKICAgICBJbnNwZWN0b3JUZXN0
LmFkZFJlc3VsdCgiQWxsIGNoZWNrcyBjb21wbGV0ZWQuIik7CiAgICAgSW5zcGVjdG9yVGVzdC5j
b21wbGV0ZVRlc3QoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9lZGl0b3Iv
aGlnaGxpZ2h0ZXItcGFzdGUtaW4tY29tbWVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZWRpdG9yL2hpZ2hsaWdodGVyLXBhc3RlLWluLWNvbW1lbnQtZXhwZWN0ZWQudHh0
CmluZGV4IDA1ODFmNTc3MzM2ZDRlMjQ4YWMxYjI2MWI0ZDZlZjg1MzRhYzQzYTIuLjI1YzIxZDI4
MTRiYmY0NzY2MGZlZWRhNjBkY2E3NDI1YTBmZjQ4M2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9lZGl0b3IvaGlnaGxpZ2h0ZXItcGFzdGUtaW4tY29tbWVudC1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VkaXRvci9oaWdobGlnaHRlci1wYXN0ZS1p
bi1jb21tZW50LWV4cGVjdGVkLnR4dApAQCAtNDQsMyArNDQsMjAgQEAgQWZ0ZXIgaGlnaGxpZ2h0
aW5nIHVwIHRvIHRoZSBlbmQKIDEzIDogIDoKIDE0IDogKi8gOiBqYXZhc2NyaXB0LWNvbW1lbnRb
MC0yXQogCitBZnRlciBpbnNlcnRpbmcgYSBuZXcgbGluZQorMSA6IC8qIDogamF2YXNjcmlwdC1j
b21tZW50WzAtM10KKzIgOiAgOgorMyA6IDEgOiBqYXZhc2NyaXB0LWNvbW1lbnRbMC0xXQorNCA6
IDIgOiBqYXZhc2NyaXB0LWNvbW1lbnRbMC0xXQorNSA6IDMgOiBqYXZhc2NyaXB0LWNvbW1lbnRb
MC0xXQorNiA6IDQgOiBqYXZhc2NyaXB0LWNvbW1lbnRbMC0xXQorNyA6IDUgOiBqYXZhc2NyaXB0
LWNvbW1lbnRbMC0xXQorOCA6IDEgOiBqYXZhc2NyaXB0LWNvbW1lbnRbMC0xXQorOSA6IDIgOiBq
YXZhc2NyaXB0LWNvbW1lbnRbMC0xXQorMTAgOiAzIDogamF2YXNjcmlwdC1jb21tZW50WzAtMV0K
KzExIDogNCA6IGphdmFzY3JpcHQtY29tbWVudFswLTFdCisxMiA6IDUgOiBqYXZhc2NyaXB0LWNv
bW1lbnRbMC0xXQorMTMgOiAgOgorMTQgOiAgOgorMTUgOiAqLyA6IGphdmFzY3JpcHQtY29tbWVu
dFswLTJdCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9lZGl0b3IvaGlnaGxp
Z2h0ZXItcGFzdGUtaW4tY29tbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VkaXRv
ci9oaWdobGlnaHRlci1wYXN0ZS1pbi1jb21tZW50Lmh0bWwKaW5kZXggMTQzOWY4NmQ1MDM4NDFm
MzEyMmI0OWZlMDZjNmI4ZGQ0MTAxODIzZC4uMmFhNzhlMGRlYTI5ZWYxMWYyYWU1MTgwYWZhMjQz
NGM1ZTBhNzMwNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VkaXRvci9oaWdo
bGlnaHRlci1wYXN0ZS1pbi1jb21tZW50Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2VkaXRvci9oaWdobGlnaHRlci1wYXN0ZS1pbi1jb21tZW50Lmh0bWwKQEAgLTE5LDcgKzE5LDYg
QEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICB2YXIgc3JjID0gIi8qXG5cbjFcbjJcbjNcbjRcbjVc
blxuKi8iOwogICAgIHRleHRNb2RlbC5zZXRUZXh0KG51bGwsIHNyYyk7Ci0gICAgaGlnaGxpZ2h0
ZXIucmVzZXQoKTsKIAogICAgIGhpZ2hsaWdodGVyLmhpZ2hsaWdodCh0ZXh0TW9kZWwubGluZXND
b3VudCk7CiAgICAgZHVtcFRleHRNb2RlbCgiQWZ0ZXIgaGlnaGxpZ2h0aW5nIGFsbCBsaW5lcyIp
OwpAQCAtMzIsNiArMzEsMTMgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgaGlnaGxpZ2h0ZXIuaGln
aGxpZ2h0KHRleHRNb2RlbC5saW5lc0NvdW50KTsKICAgICBkdW1wVGV4dE1vZGVsKCJBZnRlciBo
aWdobGlnaHRpbmcgdXAgdG8gdGhlIGVuZCIpOwogCisgICAgLy8gVGhlcmUgd2FzIGFuIGFjdHVh
bCBidWcgd2l0aCB3cm9uZ2x5IHJlc3RvcmVkIHBvc2l0aW9uIGFmdGVyIHVwZGF0aW5nIHRoZSBo
aWdobGlnaHRzLgorICAgIHZhciByYW5nZSA9IG5ldyBXZWJJbnNwZWN0b3IuVGV4dFJhbmdlKDEy
LCAwLCAxMiwgMCk7CisgICAgdmFyIG5ld1JhbmdlID0gdGV4dE1vZGVsLnNldFRleHQocmFuZ2Us
ICJcbiIpOworICAgIGhpZ2hsaWdodGVyLnVwZGF0ZUhpZ2hsaWdodCgxMiwgdGV4dE1vZGVsLmxp
bmVzQ291bnQpOworICAgIGhpZ2hsaWdodGVyLmhpZ2hsaWdodCh0ZXh0TW9kZWwubGluZXNDb3Vu
dCk7CisgICAgZHVtcFRleHRNb2RlbCgiQWZ0ZXIgaW5zZXJ0aW5nIGEgbmV3IGxpbmUiKTsKKwog
ICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0NDM4
MDdlYTRkNzU2M2RhNWRhOGFhZjdiNTIxZmVhNThkNjEwMTdkLi5hMWNlZDU5OWI2YTE3N2Y3MzIz
NzFhYzExZTVmNWE1NjRmZGY2MzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTEt
MDMtMDkgIEFuZHJleSBBZGFpa2luICA8YWFuZHJleUBnb29nbGUuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEhpZ2hs
aWdodGVyIHJlZmFjdG9yaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01NjAxNQorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0RWRp
dG9ySGlnaGxpZ2h0ZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvckhpZ2hs
aWdodGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9ySGlnaGxpZ2h0ZXIucHJv
dG90eXBlLnNldCBtaW1lVHlwZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvckhp
Z2hsaWdodGVyLnByb3RvdHlwZS5oaWdobGlnaHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRl
eHRFZGl0b3JIaWdobGlnaHRlci5wcm90b3R5cGUudXBkYXRlSGlnaGxpZ2h0KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5UZXh0RWRpdG9ySGlnaGxpZ2h0ZXIucHJvdG90eXBlLl9oaWdobGlnaHRJ
bkNodW5rcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvckhpZ2hsaWdodGVyLnBy
b3RvdHlwZS5faGlnaGxpZ2h0TGluZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0
b3JIaWdobGlnaHRlci5wcm90b3R5cGUuX3NlbGVjdEhpZ2hsaWdodFN0YXRlKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5UZXh0RWRpdG9ySGlnaGxpZ2h0ZXIucHJvdG90eXBlLl9jbGVhckhpZ2hs
aWdodFN0YXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRWaWV3ZXIuanM6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUuX2J1
aWxkQ2h1bmtzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnBy
b3RvdHlwZS5fdXBkYXRlSGlnaGxpZ2h0c0ZvclJhbmdlKToKKwogMjAxMS0wMy0wOSAgQW5kcmV5
IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEZp
eGVkIGEgY3Jhc2ggaW4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzcG9u
c2UoKSB3aGVuIGxvYWRlciBpcyBudWxsIChicm9rZW4gaW4gcjgwNjM5KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0RWRpdG9ySGlnaGxpZ2h0ZXIu
anMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRFZGl0b3JIaWdobGln
aHRlci5qcwppbmRleCA5YmRjYzgyNTY0NDExNDQ1MzZmN2QwNDMyNGQ0MDFkZDFlYjM1ZjdmLi43
NTQ1M2ZhZGI1ZDFkZjg1YTFjZmVhNzIwNjQ0ZTJlOGY1NzdlYTQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRFZGl0b3JIaWdobGlnaHRlci5qcwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRFZGl0b3JIaWdobGln
aHRlci5qcwpAQCAtMzUsMTcgKzM1LDE0IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9ySGlnaGxp
Z2h0ZXIgPSBmdW5jdGlvbih0ZXh0TW9kZWwsIGRhbWFnZUNhbGxiYWNrKQogICAgIHRoaXMuX3Rv
a2VuaXplciA9IFdlYkluc3BlY3Rvci5Tb3VyY2VUb2tlbml6ZXIuUmVnaXN0cnkuZ2V0SW5zdGFu
Y2UoKS5nZXRUb2tlbml6ZXIoInRleHQvaHRtbCIpOwogICAgIHRoaXMuX2RhbWFnZUNhbGxiYWNr
ID0gZGFtYWdlQ2FsbGJhY2s7CiAgICAgdGhpcy5faGlnaGxpZ2h0Q2h1bmtMaW1pdCA9IDEwMDA7
Ci0gICAgdGhpcy5yZXNldCgpOwogfQogCiBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvckhpZ2hsaWdo
dGVyLnByb3RvdHlwZSA9IHsKICAgICBzZXQgbWltZVR5cGUobWltZVR5cGUpCiAgICAgewogICAg
ICAgICB2YXIgdG9rZW5pemVyID0gV2ViSW5zcGVjdG9yLlNvdXJjZVRva2VuaXplci5SZWdpc3Ry
eS5nZXRJbnN0YW5jZSgpLmdldFRva2VuaXplcihtaW1lVHlwZSk7Ci0gICAgICAgIGlmICh0b2tl
bml6ZXIpIHsKKyAgICAgICAgaWYgKHRva2VuaXplcikKICAgICAgICAgICAgIHRoaXMuX3Rva2Vu
aXplciA9IHRva2VuaXplcjsKLSAgICAgICAgICAgIHRoaXMuX3Rva2VuaXplckNvbmRpdGlvblN0
cmluZ2lmaWVkID0gSlNPTi5zdHJpbmdpZnkodGhpcy5fdG9rZW5pemVyLmluaXRpYWxDb25kaXRp
b24pOwotICAgICAgICB9CiAgICAgfSwKIAogICAgIHNldCBoaWdobGlnaHRDaHVua0xpbWl0KGhp
Z2hsaWdodENodW5rTGltaXQpCkBAIC01MywxOCArNTAsMTQgQEAgV2ViSW5zcGVjdG9yLlRleHRF
ZGl0b3JIaWdobGlnaHRlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2hpZ2hsaWdodENo
dW5rTGltaXQgPSBoaWdobGlnaHRDaHVua0xpbWl0OwogICAgIH0sCiAKLSAgICByZXNldDogZnVu
Y3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5fbGFzdEhpZ2hsaWdodGVkTGluZSA9IDA7Ci0g
ICAgICAgIHRoaXMuX2xhc3RIaWdobGlnaHRlZENvbHVtbiA9IDA7Ci0gICAgICAgIHRoaXMuX3Rv
a2VuaXplckNvbmRpdGlvblN0cmluZ2lmaWVkID0gSlNPTi5zdHJpbmdpZnkodGhpcy5fdG9rZW5p
emVyLmluaXRpYWxDb25kaXRpb24pOwotICAgIH0sCi0KICAgICBoaWdobGlnaHQ6IGZ1bmN0aW9u
KGVuZExpbmUsIG9wdF9mb3JjZVJ1bikKICAgICB7CiAgICAgICAgIC8vIEZpcnN0IGNoZWNrIGlm
IHdlIGhhdmUgd29yayB0byBkby4KLSAgICAgICAgaWYgKGVuZExpbmUgPD0gdGhpcy5fbGFzdEhp
Z2hsaWdodGVkTGluZSkKKyAgICAgICAgdmFyIHN0YXRlID0gdGhpcy5fdGV4dE1vZGVsLmdldEF0
dHJpYnV0ZShlbmRMaW5lIC0gMSwgImhpZ2hsaWdodCIpOworICAgICAgICBpZiAoc3RhdGUgJiYg
c3RhdGUucG9zdENvbmRpdGlvblN0cmluZ2lmaWVkKSB7CisgICAgICAgICAgICAvLyBMYXN0IGxp
bmUgaXMgaGlnaGxpZ2h0ZWQsIGp1c3QgZXhpdC4KICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQogCiAgICAgICAgIHRoaXMuX3JlcXVlc3RlZEVuZExpbmUgPSBlbmRMaW5lOwogCkBAIC03
Myw3NyArNjYsNjMgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JIaWdobGlnaHRlci5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICAvLyBEbyBz
bWFsbCBoaWdobGlnaHQgc3luY2hyb25vdXNseS4gVGhpcyB3aWxsIHByb3ZpZGUgaW5zdGFudCBo
aWdobGlnaHQgb24gUGFnZVVwIC8gUGFnZURvd24sIGdlbnRsZSBzY3JvbGxpbmcuCi0gICAgICAg
IHRoaXMuX2hpZ2hsaWdodEluQ2h1bmtzKGVuZExpbmUpOworICAgICAgICAvLyBXZSB3aWxsIGJl
IGhpZ2hsaWdodGluZy4gRmlyc3QgcmV3aW5kIHRvIHRoZSBsYXN0IGhpZ2hsaWdodGVkIGxpbmUg
dG8gZ2FpbiBwcm9wZXIgaGlnaGxpZ2h0ZXIgY29udGV4dC4KKyAgICAgICAgdmFyIHN0YXJ0TGlu
ZSA9IGVuZExpbmU7CisgICAgICAgIHdoaWxlIChzdGFydExpbmUgPiAwKSB7CisgICAgICAgICAg
ICB2YXIgc3RhdGUgPSB0aGlzLl90ZXh0TW9kZWwuZ2V0QXR0cmlidXRlKHN0YXJ0TGluZSAtIDEs
ICJoaWdobGlnaHQiKTsKKyAgICAgICAgICAgIGlmIChzdGF0ZSAmJiBzdGF0ZS5wb3N0Q29uZGl0
aW9uU3RyaW5naWZpZWQpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBzdGFy
dExpbmUtLTsKKyAgICAgICAgfQogCi0gICAgICAgIC8vIFNjaGVkdWxlIHRhaWwgaGlnaGxpZ2h0
IGlmIG5lY2Vzc2FyeS4KLSAgICAgICAgaWYgKHRoaXMuX2xhc3RIaWdobGlnaHRlZExpbmUgPCBl
bmRMaW5lKQotICAgICAgICAgICAgdGhpcy5faGlnaGxpZ2h0VGltZXIgPSBzZXRUaW1lb3V0KHRo
aXMuX2hpZ2hsaWdodEluQ2h1bmtzLmJpbmQodGhpcywgZW5kTGluZSksIDEwMCk7CisgICAgICAg
IC8vIERvIHNtYWxsIGhpZ2hsaWdodCBzeW5jaHJvbm91c2x5LiBUaGlzIHdpbGwgcHJvdmlkZSBp
bnN0YW50IGhpZ2hsaWdodCBvbiBQYWdlVXAgLyBQYWdlRG93biwgZ2VudGxlIHNjcm9sbGluZy4K
KyAgICAgICAgdGhpcy5faGlnaGxpZ2h0SW5DaHVua3Moc3RhcnRMaW5lLCBlbmRMaW5lKTsKICAg
ICB9LAogCiAgICAgdXBkYXRlSGlnaGxpZ2h0OiBmdW5jdGlvbihzdGFydExpbmUsIGVuZExpbmUp
CiAgICAgewotICAgICAgICBpZiAodGhpcy5fbGFzdEhpZ2hsaWdodGVkTGluZSA8IHN0YXJ0TGlu
ZSkgewotICAgICAgICAgICAgLy8gSGlnaGxpZ2h0ZXIgZGlkIG5vdCByZWFjaCB0aGlzIHBvaW50
IHlldCwgbm90aGluZyB0byB1cGRhdGUuIEl0IHdpbGwgcmVhY2ggaXQgb24gc3Vic2VxdWVudCB0
aW1lciB0aWNrIGFuZCBkbyB0aGUgam9iLgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICB9Ci0KLSAgICAgICAgdmFyIHNhdmVkTGFzdEhpZ2hsaWdodGVkTGluZSA9IHRoaXMuX2xh
c3RIaWdobGlnaHRlZExpbmU7Ci0gICAgICAgIHZhciBzYXZlZExhc3RIaWdobGlnaHRlZENvbHVt
biA9IHRoaXMuX2xhc3RIaWdobGlnaHRlZENvbHVtbjsKLSAgICAgICAgdmFyIHNhdmVkVG9rZW5p
emVyQ29uZGl0aW9uID0gdGhpcy5fdG9rZW5pemVyQ29uZGl0aW9uU3RyaW5naWZpZWQ7Ci0KLSAg
ICAgICAgdGhpcy5fbGFzdEhpZ2hsaWdodGVkTGluZSA9IHN0YXJ0TGluZTsKLSAgICAgICAgdGhp
cy5fbGFzdEhpZ2hsaWdodGVkQ29sdW1uID0gMDsKLQotICAgICAgICAvLyBSZXN0b3JlIGhpZ2hs
aWdodGVyIGNvbnRleHQgdGFrZW4gZnJvbSB0aGUgcHJldmlvdXMgbGluZS4KLSAgICAgICAgdmFy
IGF0dHJpYnV0ZXMgPSB0aGlzLl90ZXh0TW9kZWwuZ2V0QXR0cmlidXRlKHN0YXJ0TGluZSAtIDEs
ICJoaWdobGlnaHQiKSB8fCB7fTsKLSAgICAgICAgdGhpcy5fdG9rZW5pemVyQ29uZGl0aW9uU3Ry
aW5naWZpZWQgPSBhdHRyaWJ1dGVzLnBvc3RDb25kaXRpb25TdHJpbmdpZmllZCB8fCBKU09OLnN0
cmluZ2lmeSh0aGlzLl90b2tlbml6ZXIuaW5pdGlhbENvbmRpdGlvbik7Ci0KLSAgICAgICAgLy8g
VHJ5IHRvIHVwZGF0ZSBoaWdobGlnaHQgc3luY2hyb25vdXNseS4KLSAgICAgICAgdGhpcy5faGln
aGxpZ2h0TGluZXMoZW5kTGluZSk7Ci0KLSAgICAgICAgaWYgKHRoaXMuX2xhc3RIaWdobGlnaHRl
ZExpbmUgPj0gdGhpcy5fdGV4dE1vZGVsLmxpbmVzQ291bnQpIHsKLSAgICAgICAgICAgIC8vIEFs
bCBpcyBkb25lIHVwIHRvIHRoZSBlbmQuCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgLy8gU3RhcnQgbGluZSB3YXMgZWRpdGVkLCB3ZSBzaG91bGQgaGlnaGxpZ2h0IGV2ZXJ5dGhp
bmcgdW50aWwgZW5kTGluZS4KKyAgICAgICAgdGhpcy5fY2xlYXJIaWdobGlnaHRTdGF0ZShzdGFy
dExpbmUpOworCisgICAgICAgIGlmIChzdGFydExpbmUpIHsKKyAgICAgICAgICAgIHZhciBzdGF0
ZSA9IHRoaXMuX3RleHRNb2RlbC5nZXRBdHRyaWJ1dGUoc3RhcnRMaW5lIC0gMSwgImhpZ2hsaWdo
dCIpOworICAgICAgICAgICAgaWYgKCFzdGF0ZSB8fCAhc3RhdGUucG9zdENvbmRpdGlvblN0cmlu
Z2lmaWVkKSB7CisgICAgICAgICAgICAgICAgLy8gSGlnaGxpZ2h0ZXIgZGlkIG5vdCByZWFjaCB0
aGlzIHBvaW50IHlldCwgbm90aGluZyB0byB1cGRhdGUuIEl0IHdpbGwgcmVhY2ggaXQgb24gc3Vi
c2VxdWVudCB0aW1lciB0aWNrIGFuZCBkbyB0aGUgam9iLgorICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIHZhciBhdHRyaWJ1
dGVzMSA9IHRoaXMuX3RleHRNb2RlbC5nZXRBdHRyaWJ1dGUodGhpcy5fbGFzdEhpZ2hsaWdodGVk
TGluZSAtIDEsICJoaWdobGlnaHQiKSB8fCB7fTsKLSAgICAgICAgdmFyIGF0dHJpYnV0ZXMyID0g
dGhpcy5fdGV4dE1vZGVsLmdldEF0dHJpYnV0ZSh0aGlzLl9sYXN0SGlnaGxpZ2h0ZWRMaW5lLCAi
aGlnaGxpZ2h0IikgfHwge307Ci0gICAgICAgIGlmICh0aGlzLl9sYXN0SGlnaGxpZ2h0ZWRDb2x1
bW4gPT09IDAgJiYgYXR0cmlidXRlczIucHJlQ29uZGl0aW9uU3RyaW5naWZpZWQgJiYgYXR0cmli
dXRlczEucG9zdENvbmRpdGlvblN0cmluZ2lmaWVkID09PSBhdHRyaWJ1dGVzMi5wcmVDb25kaXRp
b25TdHJpbmdpZmllZCkgewotICAgICAgICAgICAgLy8gSGlnaGxpZ2h0aW5nIGVuZGVkIGFoZWFk
IG9mIHRpbWUuIFJlc3RvcmUgcHJldmlvdXNseSBzYXZlZCBzdGF0ZSwgdW5sZXNzIHdlIGhhdmUg
ZG9uZSBtb3JlIHRoYW4gaXQgd2FzIGJlZm9yZS4KLSAgICAgICAgICAgIGlmIChzYXZlZExhc3RI
aWdobGlnaHRlZExpbmUgPj0gdGhpcy5fbGFzdEhpZ2hsaWdodGVkTGluZSkgewotICAgICAgICAg
ICAgICAgIHRoaXMuX2xhc3RIaWdobGlnaHRlZExpbmUgPSBzYXZlZExhc3RIaWdobGlnaHRlZExp
bmU7Ci0gICAgICAgICAgICAgICAgdGhpcy5fbGFzdEhpZ2hsaWdodGVkQ29sdW1uID0gc2F2ZWRM
YXN0SGlnaGxpZ2h0ZWRDb2x1bW47Ci0gICAgICAgICAgICAgICAgdGhpcy5fdG9rZW5pemVyQ29u
ZGl0aW9uU3RyaW5naWZpZWQgPSBzYXZlZFRva2VuaXplckNvbmRpdGlvbjsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgLy8gSWYgZmFpbGVkIHRvIHVwZGF0ZSBoaWdobGlnaHQgc3luY2hyb25vdXNseSwgaW52YWxp
ZGF0ZSBoaWdobGlnaHQgZGF0YSBmb3IgdGhlIHN1YnNlcXVlbnQgbGluZXMuCi0gICAgICAgICAg
ICBpZiAodGhpcy5fbGFzdEhpZ2hsaWdodGVkQ29sdW1uID09PSAwKQotICAgICAgICAgICAgICAg
IHRoaXMuX3RleHRNb2RlbC5yZW1vdmVBdHRyaWJ1dGUodGhpcy5fbGFzdEhpZ2hsaWdodGVkTGlu
ZSwgImhpZ2hsaWdodCIpOwotICAgICAgICAgICAgZm9yICh2YXIgaSA9IHRoaXMuX2xhc3RIaWdo
bGlnaHRlZExpbmUgKyAxOyBpIDwgdGhpcy5fdGV4dE1vZGVsLmxpbmVzQ291bnQ7ICsraSkKKyAg
ICAgICAgdmFyIHJlc3RvcmVkID0gdGhpcy5faGlnaGxpZ2h0TGluZXMoc3RhcnRMaW5lLCBlbmRM
aW5lKTsKKyAgICAgICAgaWYgKCFyZXN0b3JlZCkgeworICAgICAgICAgICAgZm9yICh2YXIgaSA9
IHRoaXMuX2xhc3RIaWdobGlnaHRlZExpbmU7IGkgPCB0aGlzLl90ZXh0TW9kZWwubGluZXNDb3Vu
dDsgKytpKSB7CisgICAgICAgICAgICAgICAgdmFyIHN0YXRlID0gdGhpcy5fdGV4dE1vZGVsLmdl
dEF0dHJpYnV0ZShpLCAiaGlnaGxpZ2h0Iik7CisgICAgICAgICAgICAgICAgaWYgKCFzdGF0ZSAm
JiBpID4gZW5kTGluZSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgdGhpcy5fdGV4dE1vZGVsLnNldEF0dHJpYnV0ZShpLCAiaGlnaGxpZ2h0LW91dGRhdGVkIiwg
c3RhdGUpOwogICAgICAgICAgICAgICAgIHRoaXMuX3RleHRNb2RlbC5yZW1vdmVBdHRyaWJ1dGUo
aSwgImhpZ2hsaWdodCIpOworICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAvLyBDb250aW51
ZSBoaWdobGlnaHRpbmcgb24gc3Vic2VxdWVudCB0aW1lciB0aWNrcy4KLSAgICAgICAgICAgIHRo
aXMuX3JlcXVlc3RlZEVuZExpbmUgPSBlbmRMaW5lOwotICAgICAgICAgICAgaWYgKCF0aGlzLl9o
aWdobGlnaHRUaW1lcikKLSAgICAgICAgICAgICAgICB0aGlzLl9oaWdobGlnaHRUaW1lciA9IHNl
dFRpbWVvdXQodGhpcy5faGlnaGxpZ2h0SW5DaHVua3MuYmluZCh0aGlzLCBlbmRMaW5lKSwgMTAw
KTsKLQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKHRoaXMuX2hp
Z2hsaWdodFRpbWVyKSB7CisgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX2hpZ2hs
aWdodFRpbWVyKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9yZXF1ZXN0ZWRFbmRMaW5lID0gZW5k
TGluZTsKKyAgICAgICAgICAgICAgICB0aGlzLl9oaWdobGlnaHRUaW1lciA9IHNldFRpbWVvdXQo
dGhpcy5faGlnaGxpZ2h0SW5DaHVua3MuYmluZCh0aGlzLCB0aGlzLl9sYXN0SGlnaGxpZ2h0ZWRM
aW5lLCB0aGlzLl9yZXF1ZXN0ZWRFbmRMaW5lKSwgMTApOworICAgICAgICAgICAgfQogICAgICAg
ICB9CisgICAgICAgIHJldHVybiByZXN0b3JlZDsKICAgICB9LAogCi0gICAgX2hpZ2hsaWdodElu
Q2h1bmtzOiBmdW5jdGlvbihlbmRMaW5lKQorICAgIF9oaWdobGlnaHRJbkNodW5rczogZnVuY3Rp
b24oc3RhcnRMaW5lLCBlbmRMaW5lKQogICAgIHsKICAgICAgICAgZGVsZXRlIHRoaXMuX2hpZ2hs
aWdodFRpbWVyOwogCiAgICAgICAgIC8vIEZpcnN0IHdlIGFsd2F5cyBjaGVjayBpZiB3ZSBoYXZl
IHdvcmsgdG8gZG8uIENvdWxkIGJlIHRoYXQgdXNlciBzY3JvbGxlZCBiYWNrIGFuZCB3ZSBjYW4g
cXVpdC4KLSAgICAgICAgaWYgKHRoaXMuX3JlcXVlc3RlZEVuZExpbmUgPD0gdGhpcy5fbGFzdEhp
Z2hsaWdodGVkTGluZSkKKyAgICAgICAgdmFyIHN0YXRlID0gdGhpcy5fdGV4dE1vZGVsLmdldEF0
dHJpYnV0ZSh0aGlzLl9yZXF1ZXN0ZWRFbmRMaW5lIC0gMSwgImhpZ2hsaWdodCIpOworICAgICAg
ICBpZiAoc3RhdGUgJiYgc3RhdGUucG9zdENvbmRpdGlvblN0cmluZ2lmaWVkKQogICAgICAgICAg
ICAgcmV0dXJuOwogCiAgICAgICAgIGlmICh0aGlzLl9yZXF1ZXN0ZWRFbmRMaW5lICE9PSBlbmRM
aW5lKSB7CiAgICAgICAgICAgICAvLyBVc2VyIGtlZXBzIHVwZGF0aW5nIHRoZSBqb2IgaW4gYmV0
d2VlbiBvZiBvdXIgdGltZXIgdGlja3MuIEp1c3QgcmVzY2hlZHVsZSBzZWxmLCBkb24ndCBlYXQg
Q1BVICh0aGV5IG11c3QgYmUgc2Nyb2xsaW5nKS4KLSAgICAgICAgICAgIHRoaXMuX2hpZ2hsaWdo
dFRpbWVyID0gc2V0VGltZW91dCh0aGlzLl9oaWdobGlnaHRJbkNodW5rcy5iaW5kKHRoaXMsIHRo
aXMuX3JlcXVlc3RlZEVuZExpbmUpLCAxMDApOworICAgICAgICAgICAgdGhpcy5faGlnaGxpZ2h0
VGltZXIgPSBzZXRUaW1lb3V0KHRoaXMuX2hpZ2hsaWdodEluQ2h1bmtzLmJpbmQodGhpcywgc3Rh
cnRMaW5lLCB0aGlzLl9yZXF1ZXN0ZWRFbmRMaW5lKSwgMTAwKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCkBAIC0xNTEsNTggKzEzMCwxMDkgQEAgV2ViSW5zcGVjdG9yLlRleHRF
ZGl0b3JIaWdobGlnaHRlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICh0aGlzLl9yZXF1ZXN0
ZWRFbmRMaW5lID4gdGhpcy5fdGV4dE1vZGVsLmxpbmVzQ291bnQpCiAgICAgICAgICAgICB0aGlz
Ll9yZXF1ZXN0ZWRFbmRMaW5lID0gdGhpcy5fdGV4dE1vZGVsLmxpbmVzQ291bnQ7CiAKLSAgICAg
ICAgdGhpcy5faGlnaGxpZ2h0TGluZXModGhpcy5fcmVxdWVzdGVkRW5kTGluZSk7CisgICAgICAg
IHRoaXMuX2hpZ2hsaWdodExpbmVzKHN0YXJ0TGluZSwgdGhpcy5fcmVxdWVzdGVkRW5kTGluZSk7
CiAKICAgICAgICAgLy8gU2NoZWR1bGUgdGFpbCBoaWdobGlnaHQgaWYgbmVjZXNzYXJ5LgogICAg
ICAgICBpZiAodGhpcy5fbGFzdEhpZ2hsaWdodGVkTGluZSA8IHRoaXMuX3JlcXVlc3RlZEVuZExp
bmUpCi0gICAgICAgICAgICB0aGlzLl9oaWdobGlnaHRUaW1lciA9IHNldFRpbWVvdXQodGhpcy5f
aGlnaGxpZ2h0SW5DaHVua3MuYmluZCh0aGlzLCB0aGlzLl9yZXF1ZXN0ZWRFbmRMaW5lKSwgMTAp
OworICAgICAgICAgICAgdGhpcy5faGlnaGxpZ2h0VGltZXIgPSBzZXRUaW1lb3V0KHRoaXMuX2hp
Z2hsaWdodEluQ2h1bmtzLmJpbmQodGhpcywgdGhpcy5fbGFzdEhpZ2hsaWdodGVkTGluZSwgdGhp
cy5fcmVxdWVzdGVkRW5kTGluZSksIDEwKTsKICAgICB9LAogCi0gICAgX2hpZ2hsaWdodExpbmVz
OiBmdW5jdGlvbihlbmRMaW5lKQorICAgIF9oaWdobGlnaHRMaW5lczogZnVuY3Rpb24oc3RhcnRM
aW5lLCBlbmRMaW5lKQogICAgIHsKLSAgICAgICAgLy8gVG9rZW5pemVyIGlzIHN0YXRlbGVzcyBh
bmQgcmV1c2VkIGFjcm9zcyB2aWV3ZXJzLCByZXN0b3JlIGl0cyBjb25kaXRpb24gYmVmb3JlIGhp
Z2hsaWdodCBhbmQgc2F2ZSBpdCBhZnRlci4KLSAgICAgICAgdGhpcy5fdG9rZW5pemVyLmNvbmRp
dGlvbiA9IEpTT04ucGFyc2UodGhpcy5fdG9rZW5pemVyQ29uZGl0aW9uU3RyaW5naWZpZWQpOwot
ICAgICAgICB2YXIgdG9rZW5zQ291bnQgPSAwOwotICAgICAgICBmb3IgKHZhciBsaW5lTnVtYmVy
ID0gdGhpcy5fbGFzdEhpZ2hsaWdodGVkTGluZTsgbGluZU51bWJlciA8IGVuZExpbmU7ICsrbGlu
ZU51bWJlcikgewotICAgICAgICAgICAgdmFyIGxpbmUgPSB0aGlzLl90ZXh0TW9kZWwubGluZShs
aW5lTnVtYmVyKTsKLSAgICAgICAgICAgIHRoaXMuX3Rva2VuaXplci5saW5lID0gbGluZTsKLQot
ICAgICAgICAgICAgaWYgKHRoaXMuX2xhc3RIaWdobGlnaHRlZENvbHVtbiA9PT0gMCkgewotICAg
ICAgICAgICAgICAgIHZhciBhdHRyaWJ1dGVzID0ge307Ci0gICAgICAgICAgICAgICAgYXR0cmli
dXRlcy5wcmVDb25kaXRpb25TdHJpbmdpZmllZCA9IEpTT04uc3RyaW5naWZ5KHRoaXMuX3Rva2Vu
aXplci5jb25kaXRpb24pOwotICAgICAgICAgICAgICAgIHRoaXMuX3RleHRNb2RlbC5zZXRBdHRy
aWJ1dGUobGluZU51bWJlciwgImhpZ2hsaWdodCIsIGF0dHJpYnV0ZXMpOwotICAgICAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICAgICAgdmFyIGF0dHJpYnV0ZXMgPSB0aGlzLl90ZXh0TW9kZWwu
Z2V0QXR0cmlidXRlKGxpbmVOdW1iZXIsICJoaWdobGlnaHQiKTsKLQotICAgICAgICAgICAgLy8g
SGlnaGxpZ2h0IGxpbmUuCi0gICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgdmFyIG5l
d0NvbHVtbiA9IHRoaXMuX3Rva2VuaXplci5uZXh0VG9rZW4odGhpcy5fbGFzdEhpZ2hsaWdodGVk
Q29sdW1uKTsKLSAgICAgICAgICAgICAgICB2YXIgdG9rZW5UeXBlID0gdGhpcy5fdG9rZW5pemVy
LnRva2VuVHlwZTsKLSAgICAgICAgICAgICAgICBpZiAodG9rZW5UeXBlKQotICAgICAgICAgICAg
ICAgICAgICBhdHRyaWJ1dGVzW3RoaXMuX2xhc3RIaWdobGlnaHRlZENvbHVtbl0gPSB7IGxlbmd0
aDogbmV3Q29sdW1uIC0gdGhpcy5fbGFzdEhpZ2hsaWdodGVkQ29sdW1uLCB0b2tlblR5cGU6IHRv
a2VuVHlwZSB9OwotICAgICAgICAgICAgICAgIHRoaXMuX2xhc3RIaWdobGlnaHRlZENvbHVtbiA9
IG5ld0NvbHVtbjsKLSAgICAgICAgICAgICAgICBpZiAoKyt0b2tlbnNDb3VudCA+IHRoaXMuX2hp
Z2hsaWdodENodW5rTGltaXQpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgfSB3aGlsZSAodGhpcy5fbGFzdEhpZ2hsaWdodGVkQ29sdW1uIDwgbGluZS5sZW5ndGgpOwor
ICAgICAgICAvLyBSZXN0b3JlIGhpZ2hsaWdodGVyIGNvbnRleHQgdGFrZW4gZnJvbSBwcmV2aW91
cyBsaW5lLgorICAgICAgICB2YXIgc3RhdGUgPSB0aGlzLl90ZXh0TW9kZWwuZ2V0QXR0cmlidXRl
KHN0YXJ0TGluZSAtIDEsICJoaWdobGlnaHQiKTsKKyAgICAgICAgdmFyIHBvc3RDb25kaXRpb25T
dHJpbmdpZmllZCA9IHN0YXRlID8gc3RhdGUucG9zdENvbmRpdGlvblN0cmluZ2lmaWVkIDogSlNP
Ti5zdHJpbmdpZnkodGhpcy5fdG9rZW5pemVyLmluaXRpYWxDb25kaXRpb24pOwogCi0gICAgICAg
ICAgICBpZiAodGhpcy5fbGFzdEhpZ2hsaWdodGVkQ29sdW1uIDwgbGluZS5sZW5ndGgpIHsKLSAg
ICAgICAgICAgICAgICAvLyBUb28gbXVjaCB3b3JrIGZvciBzaW5nbGUgY2h1bmsgLSBleGl0Lgot
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB2YXIgdG9rZW5zQ291bnQgPSAwOworICAg
ICAgICBmb3IgKHZhciBsaW5lTnVtYmVyID0gc3RhcnRMaW5lOyBsaW5lTnVtYmVyIDwgZW5kTGlu
ZTsgKytsaW5lTnVtYmVyKSB7CisgICAgICAgICAgICB2YXIgc3RhdGUgPSB0aGlzLl9zZWxlY3RI
aWdobGlnaHRTdGF0ZShsaW5lTnVtYmVyLCBwb3N0Q29uZGl0aW9uU3RyaW5naWZpZWQpOworICAg
ICAgICAgICAgaWYgKHN0YXRlLnBvc3RDb25kaXRpb25TdHJpbmdpZmllZCkgeworICAgICAgICAg
ICAgICAgIC8vIFRoaXMgbGluZSBpcyBhbHJlYWR5IGhpZ2hsaWdodGVkLgorICAgICAgICAgICAg
ICAgIHBvc3RDb25kaXRpb25TdHJpbmdpZmllZCA9IHN0YXRlLnBvc3RDb25kaXRpb25TdHJpbmdp
ZmllZDsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5fbGFzdEhp
Z2hsaWdodGVkQ29sdW1uID0gMDsKLSAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzLnBvc3RDb25k
aXRpb25TdHJpbmdpZmllZCA9IEpTT04uc3RyaW5naWZ5KHRoaXMuX3Rva2VuaXplci5jb25kaXRp
b24pOworICAgICAgICAgICAgICAgIHZhciBsYXN0SGlnaGxpZ2h0ZWRDb2x1bW4gPSAwOworICAg
ICAgICAgICAgICAgIGlmIChzdGF0ZS5taWRDb25kaXRpb25TdHJpbmdpZmllZCkgeworICAgICAg
ICAgICAgICAgICAgICBsYXN0SGlnaGxpZ2h0ZWRDb2x1bW4gPSBzdGF0ZS5sYXN0SGlnaGxpZ2h0
ZWRDb2x1bW47CisgICAgICAgICAgICAgICAgICAgIHBvc3RDb25kaXRpb25TdHJpbmdpZmllZCA9
IHN0YXRlLm1pZENvbmRpdGlvblN0cmluZ2lmaWVkOworICAgICAgICAgICAgICAgIH0KIAotICAg
ICAgICAgICAgICAgIHZhciBuZXh0QXR0cmlidXRlcyA9IHRoaXMuX3RleHRNb2RlbC5nZXRBdHRy
aWJ1dGUobGluZU51bWJlciArIDEsICJoaWdobGlnaHQiKSB8fCB7fTsKLSAgICAgICAgICAgICAg
ICBpZiAobmV4dEF0dHJpYnV0ZXMucHJlQ29uZGl0aW9uU3RyaW5naWZpZWQgPT09IGF0dHJpYnV0
ZXMucG9zdENvbmRpdGlvblN0cmluZ2lmaWVkKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIEZv
bGxvd2luZyBsaW5lcyBhcmUgdXAgdG8gZGF0ZSwgbm8gbmVlZCB0byByZS1oaWdobGlnaHQuCi0g
ICAgICAgICAgICAgICAgICAgICsrbGluZU51bWJlcjsKKyAgICAgICAgICAgICAgICB2YXIgbGlu
ZSA9IHRoaXMuX3RleHRNb2RlbC5saW5lKGxpbmVOdW1iZXIpOworICAgICAgICAgICAgICAgIHRo
aXMuX3Rva2VuaXplci5saW5lID0gbGluZTsKKyAgICAgICAgICAgICAgICB0aGlzLl90b2tlbml6
ZXIuY29uZGl0aW9uID0gSlNPTi5wYXJzZShwb3N0Q29uZGl0aW9uU3RyaW5naWZpZWQpOworCisg
ICAgICAgICAgICAgICAgLy8gSGlnaGxpZ2h0IGxpbmUuCisgICAgICAgICAgICAgICAgZG8gewor
ICAgICAgICAgICAgICAgICAgICB2YXIgbmV3Q29sdW1uID0gdGhpcy5fdG9rZW5pemVyLm5leHRU
b2tlbihsYXN0SGlnaGxpZ2h0ZWRDb2x1bW4pOworICAgICAgICAgICAgICAgICAgICB2YXIgdG9r
ZW5UeXBlID0gdGhpcy5fdG9rZW5pemVyLnRva2VuVHlwZTsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKHRva2VuVHlwZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlW2xhc3RIaWdobGln
aHRlZENvbHVtbl0gPSB7IGxlbmd0aDogbmV3Q29sdW1uIC0gbGFzdEhpZ2hsaWdodGVkQ29sdW1u
LCB0b2tlblR5cGU6IHRva2VuVHlwZSB9OworICAgICAgICAgICAgICAgICAgICBsYXN0SGlnaGxp
Z2h0ZWRDb2x1bW4gPSBuZXdDb2x1bW47CisgICAgICAgICAgICAgICAgICAgIGlmICgrK3Rva2Vu
c0NvdW50ID4gdGhpcy5faGlnaGxpZ2h0Q2h1bmtMaW1pdCkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0gd2hpbGUgKGxhc3RIaWdobGlnaHRlZENvbHVt
biA8IGxpbmUubGVuZ3RoKTsKKworICAgICAgICAgICAgICAgIHBvc3RDb25kaXRpb25TdHJpbmdp
ZmllZCA9IEpTT04uc3RyaW5naWZ5KHRoaXMuX3Rva2VuaXplci5jb25kaXRpb24pOworCisgICAg
ICAgICAgICAgICAgaWYgKGxhc3RIaWdobGlnaHRlZENvbHVtbiA8IGxpbmUubGVuZ3RoKSB7Cisg
ICAgICAgICAgICAgICAgICAgIC8vIFRvbyBtdWNoIHdvcmsgZm9yIHNpbmdsZSBjaHVuayAtIGV4
aXQuCisgICAgICAgICAgICAgICAgICAgIHN0YXRlLmxhc3RIaWdobGlnaHRlZENvbHVtbiA9IGxh
c3RIaWdobGlnaHRlZENvbHVtbjsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUubWlkQ29uZGl0
aW9uU3RyaW5naWZpZWQgPSBwb3N0Q29uZGl0aW9uU3RyaW5naWZpZWQ7CiAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
ICAgIGRlbGV0ZSBzdGF0ZS5sYXN0SGlnaGxpZ2h0ZWRDb2x1bW47CisgICAgICAgICAgICAgICAg
ICAgIGRlbGV0ZSBzdGF0ZS5taWRDb25kaXRpb25TdHJpbmdpZmllZDsKKyAgICAgICAgICAgICAg
ICAgICAgc3RhdGUucG9zdENvbmRpdGlvblN0cmluZ2lmaWVkID0gcG9zdENvbmRpdGlvblN0cmlu
Z2lmaWVkOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
dmFyIG5leHRMaW5lU3RhdGUgPSB0aGlzLl90ZXh0TW9kZWwuZ2V0QXR0cmlidXRlKGxpbmVOdW1i
ZXIgKyAxLCAiaGlnaGxpZ2h0Iik7CisgICAgICAgICAgICBpZiAobmV4dExpbmVTdGF0ZSAmJiBu
ZXh0TGluZVN0YXRlLnByZUNvbmRpdGlvblN0cmluZ2lmaWVkID09PSBzdGF0ZS5wb3N0Q29uZGl0
aW9uU3RyaW5naWZpZWQpIHsKKyAgICAgICAgICAgICAgICAvLyBGb2xsb3dpbmcgbGluZXMgYXJl
IHVwIHRvIGRhdGUsIG5vIG5lZWQgcmUtaGlnaGxpZ2h0LgorICAgICAgICAgICAgICAgICsrbGlu
ZU51bWJlcjsKKyAgICAgICAgICAgICAgICB0aGlzLl9kYW1hZ2VDYWxsYmFjayhzdGFydExpbmUs
IGxpbmVOdW1iZXIpOworCisgICAgICAgICAgICAgICAgLy8gQWR2YW5jZSB0aGUgInBvaW50ZXIi
IHRvIHRoZSBsYXN0IGhpZ2hsaWdodGVkIGxpbmUgd2l0aGluIHRoZSBnaXZlbiBjaHVuay4KKyAg
ICAgICAgICAgICAgICBmb3IgKDsgbGluZU51bWJlciA8IGVuZExpbmU7ICsrbGluZU51bWJlcikg
eworICAgICAgICAgICAgICAgICAgICB2YXIgc3RhdGUgPSB0aGlzLl90ZXh0TW9kZWwuZ2V0QXR0
cmlidXRlKGxpbmVOdW1iZXIsICJoaWdobGlnaHQiKTsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KCFzdGF0ZSB8fCAhc3RhdGUucG9zdENvbmRpdGlvblN0cmluZ2lmaWVkKQorICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHRo
aXMuX2xhc3RIaWdobGlnaHRlZExpbmUgPSBsaW5lTnVtYmVyOworICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgdGhpcy5fZGFt
YWdlQ2FsbGJhY2sodGhpcy5fbGFzdEhpZ2hsaWdodGVkTGluZSwgbGluZU51bWJlcik7Ci0gICAg
ICAgIHRoaXMuX3Rva2VuaXplckNvbmRpdGlvblN0cmluZ2lmaWVkID0gSlNPTi5zdHJpbmdpZnko
dGhpcy5fdG9rZW5pemVyLmNvbmRpdGlvbik7CisgICAgICAgIHRoaXMuX2RhbWFnZUNhbGxiYWNr
KHN0YXJ0TGluZSwgbGluZU51bWJlcik7CiAgICAgICAgIHRoaXMuX2xhc3RIaWdobGlnaHRlZExp
bmUgPSBsaW5lTnVtYmVyOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfSwKKworICAgIF9z
ZWxlY3RIaWdobGlnaHRTdGF0ZTogZnVuY3Rpb24obGluZU51bWJlciwgcHJlQ29uZGl0aW9uU3Ry
aW5naWZpZWQpCisgICAgeworICAgICAgICB2YXIgc3RhdGUgPSB0aGlzLl90ZXh0TW9kZWwuZ2V0
QXR0cmlidXRlKGxpbmVOdW1iZXIsICJoaWdobGlnaHQiKTsKKyAgICAgICAgaWYgKHN0YXRlICYm
IHN0YXRlLnByZUNvbmRpdGlvblN0cmluZ2lmaWVkID09PSBwcmVDb25kaXRpb25TdHJpbmdpZmll
ZCkKKyAgICAgICAgICAgIHJldHVybiBzdGF0ZTsKKworICAgICAgICB2YXIgb3V0ZGF0ZWRTdGF0
ZSA9IHRoaXMuX3RleHRNb2RlbC5nZXRBdHRyaWJ1dGUobGluZU51bWJlciwgImhpZ2hsaWdodC1v
dXRkYXRlZCIpOworICAgICAgICBpZiAob3V0ZGF0ZWRTdGF0ZSAmJiBvdXRkYXRlZFN0YXRlLnBy
ZUNvbmRpdGlvblN0cmluZ2lmaWVkID09PSBwcmVDb25kaXRpb25TdHJpbmdpZmllZCkgeworICAg
ICAgICAgICAgLy8gU3dhcCBzdGF0ZXMuCisgICAgICAgICAgICB0aGlzLl90ZXh0TW9kZWwuc2V0
QXR0cmlidXRlKGxpbmVOdW1iZXIsICJoaWdobGlnaHQiLCBvdXRkYXRlZFN0YXRlKTsKKyAgICAg
ICAgICAgIHRoaXMuX3RleHRNb2RlbC5zZXRBdHRyaWJ1dGUobGluZU51bWJlciwgImhpZ2hsaWdo
dC1vdXRkYXRlZCIsIHN0YXRlKTsKKyAgICAgICAgICAgIHJldHVybiBvdXRkYXRlZFN0YXRlOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKHN0YXRlKQorICAgICAgICAgICAgdGhpcy5fdGV4dE1v
ZGVsLnNldEF0dHJpYnV0ZShsaW5lTnVtYmVyLCAiaGlnaGxpZ2h0LW91dGRhdGVkIiwgc3RhdGUp
OworCisgICAgICAgIHN0YXRlID0ge307CisgICAgICAgIHN0YXRlLnByZUNvbmRpdGlvblN0cmlu
Z2lmaWVkID0gcHJlQ29uZGl0aW9uU3RyaW5naWZpZWQ7CisgICAgICAgIHRoaXMuX3RleHRNb2Rl
bC5zZXRBdHRyaWJ1dGUobGluZU51bWJlciwgImhpZ2hsaWdodCIsIHN0YXRlKTsKKyAgICAgICAg
cmV0dXJuIHN0YXRlOworICAgIH0sCisKKyAgICBfY2xlYXJIaWdobGlnaHRTdGF0ZTogZnVuY3Rp
b24obGluZU51bWJlcikKKyAgICB7CisgICAgICAgIHRoaXMuX3RleHRNb2RlbC5yZW1vdmVBdHRy
aWJ1dGUobGluZU51bWJlciwgImhpZ2hsaWdodCIpOworICAgICAgICB0aGlzLl90ZXh0TW9kZWwu
cmVtb3ZlQXR0cmlidXRlKGxpbmVOdW1iZXIsICJoaWdobGlnaHQtb3V0ZGF0ZWQiKTsKICAgICB9
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRW
aWV3ZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRWaWV3ZXIu
anMKaW5kZXggNGNlYmFlMzllNzdlMzI2ODlmMmVjMTBiYThjYzk2OGJkODdiZjQzNy4uZDliM2Rh
N2ZkYWYwZmNhMWQ5MjZiODU1MWY0MTcxYmM5MDk5NTFkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0Vmlld2VyLmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGV4dFZpZXdlci5qcwpAQCAtODE5LDcgKzgxOSw2IEBA
IFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgIF9i
dWlsZENodW5rczogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdGhpcy5faGlnaGxpZ2h0ZXIu
cmVzZXQoKTsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl90ZXh0TW9kZWwubGlu
ZXNDb3VudDsgKytpKQogICAgICAgICAgICAgdGhpcy5fdGV4dE1vZGVsLnJlbW92ZUF0dHJpYnV0
ZShpLCAiaGlnaGxpZ2h0Iik7CiAKQEAgLTEzNzMsNyArMTM3Miw4IEBAIFdlYkluc3BlY3Rvci5U
ZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGNodW5rID0gdGhp
cy5fdGV4dENodW5rc1tyZXN1bHQuZW5kIC0gMV07CiAgICAgICAgIHZhciBsYXN0VmlzaWJsZUxp
bmUgPSBjaHVuay5zdGFydExpbmUgKyBjaHVuay5saW5lc0NvdW50OwogCi0gICAgICAgIGxhc3RW
aXNpYmxlTGluZSA9IE1hdGgubWF4KGxhc3RWaXNpYmxlTGluZSwgcmFuZ2UuZW5kTGluZSk7Cisg
ICAgICAgIGxhc3RWaXNpYmxlTGluZSA9IE1hdGgubWF4KGxhc3RWaXNpYmxlTGluZSwgcmFuZ2Uu
ZW5kTGluZSArIDEpOworICAgICAgICBsYXN0VmlzaWJsZUxpbmUgPSBNYXRoLm1pbihsYXN0Vmlz
aWJsZUxpbmUsIHRoaXMuX3RleHRNb2RlbC5saW5lc0NvdW50KTsKIAogICAgICAgICB2YXIgdXBk
YXRlZCA9IHRoaXMuX2hpZ2hsaWdodGVyLnVwZGF0ZUhpZ2hsaWdodChyYW5nZS5zdGFydExpbmUs
IGxhc3RWaXNpYmxlTGluZSk7CiAgICAgICAgIGlmICghdXBkYXRlZCkgewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>