<?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>132140</bug_id>
          
          <creation_ts>2014-04-24 13:18:16 -0700</creation_ts>
          <short_desc>Web Inspector: Should update to CodeMirror 4.1</short_desc>
          <delta_ts>2014-04-24 17:07:17 -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</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jonathan Wells">jonowells</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1003743</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan Wells">jonowells</who>
    <bug_when>2014-04-24 13:18:16 -0700</bug_when>
    <thetext>CodeMirror 4.1 fixes a lot of reported issues related to migrating from CodeMirror 3 to 4. We should adopt the update.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003744</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-04-24 13:18:32 -0700</bug_when>
    <thetext>&lt;rdar://problem/16716249&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003825</commentid>
    <comment_count>2</comment_count>
      <attachid>230116</attachid>
    <who name="Jonathan Wells">jonowells</who>
    <bug_when>2014-04-24 16:18:40 -0700</bug_when>
    <thetext>Created attachment 230116
[PATCH] Proposed Fix: Update CodeMirror to 4.1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003890</commentid>
    <comment_count>3</comment_count>
      <attachid>230116</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-24 17:07:14 -0700</bug_when>
    <thetext>Comment on attachment 230116
[PATCH] Proposed Fix: Update CodeMirror to 4.1.

Clearing flags on attachment: 230116

Committed r167781: &lt;http://trac.webkit.org/changeset/167781&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003891</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-24 17:07:17 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>230116</attachid>
            <date>2014-04-24 16:18:40 -0700</date>
            <delta_ts>2014-04-24 17:07:14 -0700</delta_ts>
            <desc>[PATCH] Proposed Fix: Update CodeMirror to 4.1.</desc>
            <filename>codemirror_4_1.diff</filename>
            <type>text/plain</type>
            <size>39787</size>
            <attacher name="Jonathan Wells">jonowells</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGIxMGZiOWMuLmY2ZDg3OWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI2IEBACiAyMDE0LTA0LTI0ICBKb25hdGhhbiBXZWxs
cyAgPGpvbm93ZWxsc0BhcHBsZS5jb20+CgorICAgICAgICBXZWIgSW5zcGVjdG9yOiBTaG91bGQg
dXBkYXRlIHRvIENvZGVNaXJyb3IgNC4xCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMzIxNDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBVcGRhdGVkIHRvIENvZGVNaXJyb3IgNC4xLCB3aGljaCBjb250YWlu
cyBzZXZlcmFsIGJ1Z2ZpeGVzLgorICAgICAgICBSZWxlYXNlIG5vdGVzOiBodHRwOi8vY29kZW1p
cnJvci5uZXQvZG9jL3JlbGVhc2VzLmh0bWwjdjQKKworICAgICAgICAqIFRvb2xzL1ByZXR0eVBy
aW50aW5nL2NvZGVtaXJyb3IuanM6CisgICAgICAgICogVG9vbHMvUHJldHR5UHJpbnRpbmcvY3Nz
LmpzOgorICAgICAgICAqIFRvb2xzL1ByZXR0eVByaW50aW5nL2phdmFzY3JpcHQuanM6CisgICAg
ICAgICogVXNlckludGVyZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL2NvZGVtaXJyb3IuanM6Cisg
ICAgICAgICogVXNlckludGVyZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL2Nzcy5qczoKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL0V4dGVybmFsL0NvZGVNaXJyb3IvamF2YXNjcmlwdC5qczoKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL0V4dGVybmFsL0NvZGVNaXJyb3IvbGl2ZXNjcmlwdC5qczoK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0V4dGVybmFsL0NvZGVNaXJyb3IvcnVubW9kZS5qczoK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0V4dGVybmFsL0NvZGVNaXJyb3IveG1sLmpzOgorICAg
ICAgICBVcGRhdGVkIHRvIENvZGVNaXJyb3IgNC4xLgorCisyMDE0LTA0LTI0ICBKb25hdGhhbiBX
ZWxscyAgPGpvbm93ZWxsc0BhcHBsZS5jb20+CisKICAgICAgICAgV2ViIEluc3BlY3RvcjogQ1NT
IGF1dG9maWxsIHN1Z2dlc3RzIHByb3BlcnRpZXMgaW5zdGVhZCBvZiB2YWx1ZXMgd2hlbiB2YWx1
ZXMgYXJlIG5lZWRlZAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTMyMDkwCgpAQCAtMTAsNyArMzEsNyBAQAogICAgICAgICB3aXRoIENTUyBhdXRvZmls
bCwgQ1NTIGNvZGUgY29sb3JpbmcsIGFuZCBhbHNvCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzE4NTkuIFRoZSBtYWluIGlzc3VlIGlzIHRoYXQKICAg
ICAgICAgQ29kZU1pcnJvciA0J3MgQ1NTIG1vZGUgKGNzcy5qcykgc3RvcmVzIGl0cyBwYXJzaW5n
IG1vZGVzIGluIGEgZGlmZmVyZW50Ci0gICAgICAgIGRhdGEgc3RydWN0dXJlLiBBbGwgcmVmZXJl
bmNlcyB0byBzdGF0ZS5zdGFjayBhcmUgb2JzY2VsZXRlLiBNYW55CisgICAgICAgIGRhdGEgc3Ry
dWN0dXJlLiBBbGwgcmVmZXJlbmNlcyB0byBzdGF0ZS5zdGFjayBhcmUgb2Jzb2xldGUuIE1hbnkK
ICAgICAgICAgYXJlIGZpeGVkIGhlcmUgYW5kIG1vcmUgd2lsbCBiZSBpbiBhbiB1cGNvbWluZyBw
YXRjaC4KCiAgICAgICAgICogVG9vbHMvUHJldHR5UHJpbnRpbmcvQ29kZU1pcnJvckZvcm1hdHRl
cnMuanM6IFJlbW92ZWQgZXhjZXB0aW9uIGZvciBjaGVja2luZyBzdGF0ZS5zdGFjayBwcm9wZXJ0
aWVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Rvb2xzL1ByZXR0eVByaW50
aW5nL2NvZGVtaXJyb3IuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVG9vbHMvUHJldHR5UHJp
bnRpbmcvY29kZW1pcnJvci5qcwppbmRleCAxYTcwY2Q2Li4wYWIyMTc3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVG9vbHMvUHJldHR5UHJpbnRpbmcvY29kZW1pcnJvci5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVG9vbHMvUHJldHR5UHJpbnRpbmcvY29kZW1pcnJv
ci5qcwpAQCAtMzMsNyArMzMsNiBAQAogICB2YXIgcHJlc3RvID0gL09wZXJhXC8vLnRlc3QobmF2
aWdhdG9yLnVzZXJBZ2VudCk7CiAgIHZhciBzYWZhcmkgPSAvQXBwbGUgQ29tcHV0ZXIvLnRlc3Qo
bmF2aWdhdG9yLnZlbmRvcik7CiAgIHZhciBraHRtbCA9IC9LSFRNTFwvLy50ZXN0KG5hdmlnYXRv
ci51c2VyQWdlbnQpOwotICB2YXIgbWFjX2dlTGlvbiA9IC9NYWMgT1MgWCAxXGRcRChbNy05XXxc
ZFxkKVxELy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpOwogICB2YXIgbWFjX2dlTW91bnRhaW5M
aW9uID0gL01hYyBPUyBYIDFcZFxEKFs4LTldfFxkXGQpXEQvLnRlc3QobmF2aWdhdG9yLnVzZXJB
Z2VudCk7CiAgIHZhciBwaGFudG9tID0gL1BoYW50b21KUy8udGVzdChuYXZpZ2F0b3IudXNlckFn
ZW50KTsKCkBAIC00MzcsMTQgKzQzNiwxOCBAQAogICAgICAgZC5ndXR0ZXJGaWxsZXIuc3R5bGUu
d2lkdGggPSBkLmd1dHRlcnMub2Zmc2V0V2lkdGggKyAicHgiOwogICAgIH0gZWxzZSBkLmd1dHRl
ckZpbGxlci5zdHlsZS5kaXNwbGF5ID0gIiI7CgotICAgIGlmIChtYWNfZ2VMaW9uICYmIHNjcm9s
bGJhcldpZHRoKGQubWVhc3VyZSkgPT09IDApIHsKLSAgICAgIGQuc2Nyb2xsYmFyVi5zdHlsZS5t
aW5XaWR0aCA9IGQuc2Nyb2xsYmFySC5zdHlsZS5taW5IZWlnaHQgPSBtYWNfZ2VNb3VudGFpbkxp
b24gPyAiMThweCIgOiAiMTJweCI7Ci0gICAgICB2YXIgYmFyTW91c2VEb3duID0gZnVuY3Rpb24o
ZSkgewotICAgICAgICBpZiAoZV90YXJnZXQoZSkgIT0gZC5zY3JvbGxiYXJWICYmIGVfdGFyZ2V0
KGUpICE9IGQuc2Nyb2xsYmFySCkKLSAgICAgICAgICBvcGVyYXRpb24oY20sIG9uTW91c2VEb3du
KShlKTsKLSAgICAgIH07Ci0gICAgICBvbihkLnNjcm9sbGJhclYsICJtb3VzZWRvd24iLCBiYXJN
b3VzZURvd24pOwotICAgICAgb24oZC5zY3JvbGxiYXJILCAibW91c2Vkb3duIiwgYmFyTW91c2VE
b3duKTsKKyAgICBpZiAoIWNtLnN0YXRlLmNoZWNrZWRPdmVybGF5U2Nyb2xsYmFyICYmIG1lYXN1
cmUuY2xpZW50SGVpZ2h0ID4gMCkgeworICAgICAgaWYgKHNjcm9sbGJhcldpZHRoKGQubWVhc3Vy
ZSkgPT09IDApIHsKKyAgICAgICAgdmFyIHcgPSBtYWMgJiYgIW1hY19nZU1vdW50YWluTGlvbiA/
ICIxMnB4IiA6ICIxOHB4IjsKKyAgICAgICAgZC5zY3JvbGxiYXJWLnN0eWxlLm1pbldpZHRoID0g
ZC5zY3JvbGxiYXJILnN0eWxlLm1pbkhlaWdodCA9IHc7CisgICAgICAgIHZhciBiYXJNb3VzZURv
d24gPSBmdW5jdGlvbihlKSB7CisgICAgICAgICAgaWYgKGVfdGFyZ2V0KGUpICE9IGQuc2Nyb2xs
YmFyViAmJiBlX3RhcmdldChlKSAhPSBkLnNjcm9sbGJhckgpCisgICAgICAgICAgICBvcGVyYXRp
b24oY20sIG9uTW91c2VEb3duKShlKTsKKyAgICAgICAgfTsKKyAgICAgICAgb24oZC5zY3JvbGxi
YXJWLCAibW91c2Vkb3duIiwgYmFyTW91c2VEb3duKTsKKyAgICAgICAgb24oZC5zY3JvbGxiYXJI
LCAibW91c2Vkb3duIiwgYmFyTW91c2VEb3duKTsKKyAgICAgIH0KKyAgICAgIGNtLnN0YXRlLmNo
ZWNrZWRPdmVybGF5U2Nyb2xsYmFyID0gdHJ1ZTsKICAgICB9CiAgIH0KCkBAIC0xMTMxLDcgKzEx
MzQsNiBAQAoKICAgLy8gU2V0IGEgbmV3IHNlbGVjdGlvbi4KICAgZnVuY3Rpb24gc2V0U2VsZWN0
aW9uKGRvYywgc2VsLCBvcHRpb25zKSB7Ci0gICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5vcmln
aW4gJiYgZG9jLmNtKSBkb2MuY20uY3VyT3Aub3JpZ2luID0gb3B0aW9ucy5vcmlnaW47CiAgICAg
c2V0U2VsZWN0aW9uTm9VbmRvKGRvYywgc2VsLCBvcHRpb25zKTsKICAgICBhZGRTZWxlY3Rpb25U
b0hpc3RvcnkoZG9jLCBkb2Muc2VsLCBkb2MuY20gPyBkb2MuY20uY3VyT3AuaWQgOiBOYU4sIG9w
dGlvbnMpOwogICB9CkBAIC0xMTUyLDkgKzExNTQsMTAgQEAKCiAgICAgZG9jLnNlbCA9IHNlbDsK
Ci0gICAgaWYgKGRvYy5jbSkKLSAgICAgIGRvYy5jbS5jdXJPcC51cGRhdGVJbnB1dCA9IGRvYy5j
bS5jdXJPcC5zZWxlY3Rpb25DaGFuZ2VkID0KLSAgICAgICAgZG9jLmNtLmN1ck9wLmN1cnNvckFj
dGl2aXR5ID0gdHJ1ZTsKKyAgICBpZiAoZG9jLmNtKSB7CisgICAgICBkb2MuY20uY3VyT3AudXBk
YXRlSW5wdXQgPSBkb2MuY20uY3VyT3Auc2VsZWN0aW9uQ2hhbmdlZCA9IHRydWU7CisgICAgICBz
aWduYWxDdXJzb3JBY3Rpdml0eShkb2MuY20pOworICAgIH0KICAgICBzaWduYWxMYXRlcihkb2Ms
ICJjdXJzb3JBY3Rpdml0eSIsIGRvYyk7CiAgIH0KCkBAIC0xNDU0LDggKzE0NTcsOSBAQAogICAg
IGlmIChkaXNwbGF5LmNhY2hlZFBhZGRpbmdIKSByZXR1cm4gZGlzcGxheS5jYWNoZWRQYWRkaW5n
SDsKICAgICB2YXIgZSA9IHJlbW92ZUNoaWxkcmVuQW5kQWRkKGRpc3BsYXkubWVhc3VyZSwgZWx0
KCJwcmUiLCAieCIpKTsKICAgICB2YXIgc3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSA/
IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGUpIDogZS5jdXJyZW50U3R5bGU7Ci0gICAgcmV0dXJu
IGRpc3BsYXkuY2FjaGVkUGFkZGluZ0ggPSB7bGVmdDogcGFyc2VJbnQoc3R5bGUucGFkZGluZ0xl
ZnQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0OiBwYXJzZUlu
dChzdHlsZS5wYWRkaW5nUmlnaHQpfTsKKyAgICB2YXIgZGF0YSA9IHtsZWZ0OiBwYXJzZUludChz
dHlsZS5wYWRkaW5nTGVmdCksIHJpZ2h0OiBwYXJzZUludChzdHlsZS5wYWRkaW5nUmlnaHQpfTsK
KyAgICBpZiAoIWlzTmFOKGRhdGEubGVmdCkgJiYgIWlzTmFOKGRhdGEucmlnaHQpKSBkaXNwbGF5
LmNhY2hlZFBhZGRpbmdIID0gZGF0YTsKKyAgICByZXR1cm4gZGF0YTsKICAgfQoKICAgLy8gRW5z
dXJlIHRoZSBsaW5lVmlldy53cmFwcGluZy5oZWlnaHRzIGFycmF5IGlzIHBvcHVsYXRlZC4gVGhp
cyBpcwpAQCAtMTg4OSw4ICsxODkzLDcgQEAKICAgICAgIHVwZGF0ZUlucHV0OiBudWxsLCAgICAg
ICAvLyBXaGV0aGVyIHRvIHJlc2V0IHRoZSBpbnB1dCB0ZXh0YXJlYQogICAgICAgdHlwaW5nOiBm
YWxzZSwgICAgICAgICAgIC8vIFdoZXRoZXIgdGhpcyByZXNldCBzaG91bGQgYmUgY2FyZWZ1bCB0
byBsZWF2ZSBleGlzdGluZyB0ZXh0IChmb3IgY29tcG9zaXRpbmcpCiAgICAgICBjaGFuZ2VPYmpz
OiBudWxsLCAgICAgICAgLy8gQWNjdW11bGF0ZWQgY2hhbmdlcywgZm9yIGZpcmluZyBjaGFuZ2Ug
ZXZlbnRzCi0gICAgICBvcmlnaW46IG51bGwsICAgICAgICAgICAgLy8gU2VsZWN0aW9uJ3Mgb3Jp
Z2luCi0gICAgICBjdXJzb3JBY3Rpdml0eTogZmFsc2UsICAgLy8gV2hldGhlciB0byBmaXJlIGEg
Y3Vyc29yQWN0aXZpdHkgZXZlbnQKKyAgICAgIGN1cnNvckFjdGl2aXR5SGFuZGxlcnM6IG51bGws
IC8vIFNldCBvZiBoYW5kbGVycyB0byBmaXJlIGN1cnNvckFjdGl2aXR5IG9uCiAgICAgICBzZWxl
Y3Rpb25DaGFuZ2VkOiBmYWxzZSwgLy8gV2hldGhlciB0aGUgc2VsZWN0aW9uIG5lZWRzIHRvIGJl
IHJlZHJhd24KICAgICAgIHVwZGF0ZU1heExpbmU6IGZhbHNlLCAgICAvLyBTZXQgd2hlbiB0aGUg
d2lkZXN0IGxpbmUgbmVlZHMgdG8gYmUgZGV0ZXJtaW5lZCBhbmV3CiAgICAgICBzY3JvbGxMZWZ0
OiBudWxsLCBzY3JvbGxUb3A6IG51bGwsIC8vIEludGVybWVkaWF0ZSBzY3JvbGwgcG9zaXRpb24s
IG5vdCBwdXNoZWQgdG8gRE9NIHlldApAQCAtMTk1NSwxMyArMTk1OCwxMiBAQAogICAgICAgZGVs
YXllZENhbGxiYWNrcyA9IG51bGw7CiAgICAgfQogICAgIC8vIEZpcmUgY2hhbmdlIGV2ZW50cywg
YW5kIGRlbGF5ZWQgZXZlbnQgaGFuZGxlcnMKLSAgICBpZiAob3AuY2hhbmdlT2JqcykgewotICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvcC5jaGFuZ2VPYmpzLmxlbmd0aDsgaSsrKQotICAgICAg
ICBzaWduYWwoY20sICJjaGFuZ2UiLCBjbSwgb3AuY2hhbmdlT2Jqc1tpXSk7CisgICAgaWYgKG9w
LmNoYW5nZU9ianMpCiAgICAgICBzaWduYWwoY20sICJjaGFuZ2VzIiwgY20sIG9wLmNoYW5nZU9i
anMpOwotICAgIH0KLSAgICBpZiAob3AuY3Vyc29yQWN0aXZpdHkpIHNpZ25hbChjbSwgImN1cnNv
ckFjdGl2aXR5IiwgY20sIG9wLm9yaWdpbik7CiAgICAgaWYgKGRlbGF5ZWQpIGZvciAodmFyIGkg
PSAwOyBpIDwgZGVsYXllZC5sZW5ndGg7ICsraSkgZGVsYXllZFtpXSgpOworICAgIGlmIChvcC5j
dXJzb3JBY3Rpdml0eUhhbmRsZXJzKQorICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvcC5jdXJz
b3JBY3Rpdml0eUhhbmRsZXJzLmxlbmd0aDsgaSsrKQorICAgICAgICBvcC5jdXJzb3JBY3Rpdml0
eUhhbmRsZXJzW2ldKGNtKTsKICAgfQoKICAgLy8gUnVuIHRoZSBnaXZlbiBmdW5jdGlvbiBpbiBh
biBvcGVyYXRpb24KQEAgLTIyMjQsNyArMjIyNiwxMyBAQAogICAgIC8vIHBvc3NpYmxlIHdoZW4g
aXQgaXMgY2xlYXIgdGhhdCBub3RoaW5nIGhhcHBlbmVkLiBoYXNTZWxlY3Rpb24KICAgICAvLyB3
aWxsIGJlIHRoZSBjYXNlIHdoZW4gdGhlcmUgaXMgYSBsb3Qgb2YgdGV4dCBpbiB0aGUgdGV4dGFy
ZWEsCiAgICAgLy8gaW4gd2hpY2ggY2FzZSByZWFkaW5nIGl0cyB2YWx1ZSB3b3VsZCBiZSBleHBl
bnNpdmUuCi0gICAgaWYgKCFjbS5zdGF0ZS5mb2N1c2VkIHx8IGhhc1NlbGVjdGlvbihpbnB1dCkg
fHwgaXNSZWFkT25seShjbSkgfHwgY20ub3B0aW9ucy5kaXNhYmxlSW5wdXQpIHJldHVybiBmYWxz
ZTsKKyAgICBpZiAoIWNtLnN0YXRlLmZvY3VzZWQgfHwgKGhhc1NlbGVjdGlvbihpbnB1dCkgJiYg
IXByZXZJbnB1dCkgfHwgaXNSZWFkT25seShjbSkgfHwgY20ub3B0aW9ucy5kaXNhYmxlSW5wdXQp
CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgLy8gU2VlIHBhc3RlIGhhbmRsZXIgZm9yIG1vcmUg
b24gdGhlIGZha2VkTGFzdENoYXIga2x1ZGdlCisgICAgaWYgKGNtLnN0YXRlLnBhc3RlSW5jb21p
bmcgJiYgY20uc3RhdGUuZmFrZWRMYXN0Q2hhcikgeworICAgICAgaW5wdXQudmFsdWUgPSBpbnB1
dC52YWx1ZS5zdWJzdHJpbmcoMCwgaW5wdXQudmFsdWUubGVuZ3RoIC0gMSk7CisgICAgICBjbS5z
dGF0ZS5mYWtlZExhc3RDaGFyID0gZmFsc2U7CisgICAgfQogICAgIHZhciB0ZXh0ID0gaW5wdXQu
dmFsdWU7CiAgICAgLy8gSWYgbm90aGluZyBjaGFuZ2VkLCBiYWlsLgogICAgIGlmICh0ZXh0ID09
IHByZXZJbnB1dCAmJiAhY20uc29tZXRoaW5nU2VsZWN0ZWQoKSkgcmV0dXJuIGZhbHNlOwpAQCAt
MjQyNCw2ICsyNDMyLDE2IEBACiAgICAgICBmYXN0UG9sbChjbSk7CiAgICAgfSk7CiAgICAgb24o
ZC5pbnB1dCwgInBhc3RlIiwgZnVuY3Rpb24oKSB7CisgICAgICAvLyBXb3JrYXJvdW5kIGZvciB3
ZWJraXQgYnVnIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDIwNgor
ICAgICAgLy8gQWRkIGEgY2hhciB0byB0aGUgZW5kIG9mIHRleHRhcmVhIGJlZm9yZSBwYXN0ZSBv
Y2N1ciBzbyB0aGF0CisgICAgICAvLyBzZWxlY3Rpb24gZG9lc24ndCBzcGFuIHRvIHRoZSBlbmQg
b2YgdGV4dGFyZWEuCisgICAgICBpZiAod2Via2l0ICYmICFjbS5zdGF0ZS5mYWtlZExhc3RDaGFy
ICYmICEobmV3IERhdGUgLSBjbS5zdGF0ZS5sYXN0TWlkZGxlRG93biA8IDIwMCkpIHsKKyAgICAg
ICAgdmFyIHN0YXJ0ID0gZC5pbnB1dC5zZWxlY3Rpb25TdGFydCwgZW5kID0gZC5pbnB1dC5zZWxl
Y3Rpb25FbmQ7CisgICAgICAgIGQuaW5wdXQudmFsdWUgKz0gIiQiOworICAgICAgICBkLmlucHV0
LnNlbGVjdGlvblN0YXJ0ID0gc3RhcnQ7CisgICAgICAgIGQuaW5wdXQuc2VsZWN0aW9uRW5kID0g
ZW5kOworICAgICAgICBjbS5zdGF0ZS5mYWtlZExhc3RDaGFyID0gdHJ1ZTsKKyAgICAgIH0KICAg
ICAgIGNtLnN0YXRlLnBhc3RlSW5jb21pbmcgPSB0cnVlOwogICAgICAgZmFzdFBvbGwoY20pOwog
ICAgIH0pOwpAQCAtMjQ5Miw3ICsyNTEwLDcgQEAKICAgICB2YXIgY29vcmRzID0gY29vcmRzQ2hh
cihjbSwgeCwgeSksIGxpbmU7CiAgICAgaWYgKGZvclJlY3QgJiYgY29vcmRzLnhSZWwgPT0gMSAm
JiAobGluZSA9IGdldExpbmUoY20uZG9jLCBjb29yZHMubGluZSkudGV4dCkubGVuZ3RoID09IGNv
b3Jkcy5jaCkgewogICAgICAgdmFyIGNvbERpZmYgPSBjb3VudENvbHVtbihsaW5lLCBsaW5lLmxl
bmd0aCwgY20ub3B0aW9ucy50YWJTaXplKSAtIGxpbmUubGVuZ3RoOwotICAgICAgY29vcmRzID0g
UG9zKGNvb3Jkcy5saW5lLCBNYXRoLnJvdW5kKCh4IC0gcGFkZGluZ0goY20uZGlzcGxheSkubGVm
dCkgLyBjaGFyV2lkdGgoY20uZGlzcGxheSkpIC0gY29sRGlmZik7CisgICAgICBjb29yZHMgPSBQ
b3MoY29vcmRzLmxpbmUsIE1hdGgubWF4KDAsIE1hdGgucm91bmQoKHggLSBwYWRkaW5nSChjbS5k
aXNwbGF5KS5sZWZ0KSAvIGNoYXJXaWR0aChjbS5kaXNwbGF5KSkgLSBjb2xEaWZmKSk7CiAgICAg
fQogICAgIHJldHVybiBjb29yZHM7CiAgIH0KQEAgLTI1OTUsNyArMjYxMyw3IEBACiAgICAgZV9w
cmV2ZW50RGVmYXVsdChlKTsKCiAgICAgdmFyIG91clJhbmdlLCBvdXJJbmRleCwgc3RhcnRTZWwg
PSBkb2Muc2VsOwotICAgIGlmIChhZGROZXcpIHsKKyAgICBpZiAoYWRkTmV3ICYmICFlLnNoaWZ0
S2V5KSB7CiAgICAgICBvdXJJbmRleCA9IGRvYy5zZWwuY29udGFpbnMoc3RhcnQpOwogICAgICAg
aWYgKG91ckluZGV4ID4gLTEpCiAgICAgICAgIG91clJhbmdlID0gZG9jLnNlbC5yYW5nZXNbb3Vy
SW5kZXhdOwpAQCAtMjYyOSw2ICsyNjQ3LDcgQEAKICAgICBpZiAoIWFkZE5ldykgewogICAgICAg
b3VySW5kZXggPSAwOwogICAgICAgc2V0U2VsZWN0aW9uKGRvYywgbmV3IFNlbGVjdGlvbihbb3Vy
UmFuZ2VdLCAwKSwgc2VsX21vdXNlKTsKKyAgICAgIHN0YXJ0U2VsID0gZG9jLnNlbDsKICAgICB9
IGVsc2UgaWYgKG91ckluZGV4ID4gLTEpIHsKICAgICAgIHJlcGxhY2VPbmVTZWxlY3Rpb24oZG9j
LCBvdXJJbmRleCwgb3VyUmFuZ2UsIHNlbF9tb3VzZSk7CiAgICAgfSBlbHNlIHsKQEAgLTI3NjIs
NyArMjc4MSw3IEBACiAgICAgaWYgKHNpZ25hbERPTUV2ZW50KGNtLCBlKSB8fCBldmVudEluV2lk
Z2V0KGNtLmRpc3BsYXksIGUpKQogICAgICAgcmV0dXJuOwogICAgIGVfcHJldmVudERlZmF1bHQo
ZSk7Ci0gICAgaWYgKGllX3VwdG8xMCkgbGFzdERyb3AgPSArbmV3IERhdGU7CisgICAgaWYgKGll
KSBsYXN0RHJvcCA9ICtuZXcgRGF0ZTsKICAgICB2YXIgcG9zID0gcG9zRnJvbU1vdXNlKGNtLCBl
LCB0cnVlKSwgZmlsZXMgPSBlLmRhdGFUcmFuc2Zlci5maWxlczsKICAgICBpZiAoIXBvcyB8fCBp
c1JlYWRPbmx5KGNtKSkgcmV0dXJuOwogICAgIC8vIE1pZ2h0IGJlIGEgZmlsZSBkcm9wLCBpbiB3
aGljaCBjYXNlIHdlIHNpbXBseSBleHRyYWN0IHRoZSB0ZXh0CkBAIC0yODA3LDcgKzI4MjYsNyBA
QAogICB9CgogICBmdW5jdGlvbiBvbkRyYWdTdGFydChjbSwgZSkgewotICAgIGlmIChpZV91cHRv
MTAgJiYgKCFjbS5zdGF0ZS5kcmFnZ2luZ1RleHQgfHwgK25ldyBEYXRlIC0gbGFzdERyb3AgPCAx
MDApKSB7IGVfc3RvcChlKTsgcmV0dXJuOyB9CisgICAgaWYgKGllICYmICghY20uc3RhdGUuZHJh
Z2dpbmdUZXh0IHx8ICtuZXcgRGF0ZSAtIGxhc3REcm9wIDwgMTAwKSkgeyBlX3N0b3AoZSk7IHJl
dHVybjsgfQogICAgIGlmIChzaWduYWxET01FdmVudChjbSwgZSkgfHwgZXZlbnRJbldpZGdldChj
bS5kaXNwbGF5LCBlKSkgcmV0dXJuOwoKICAgICBlLmRhdGFUcmFuc2Zlci5zZXREYXRhKCJUZXh0
IiwgY20uZ2V0U2VsZWN0aW9uKCkpOwpAQCAtMzA4OCw3ICszMTA3LDEwIEBACiAgICAgICBzaWdu
YWwoY20sICJmb2N1cyIsIGNtKTsKICAgICAgIGNtLnN0YXRlLmZvY3VzZWQgPSB0cnVlOwogICAg
ICAgYWRkQ2xhc3MoY20uZGlzcGxheS53cmFwcGVyLCAiQ29kZU1pcnJvci1mb2N1c2VkIik7Ci0g
ICAgICBpZiAoIWNtLmN1ck9wKSB7CisgICAgICAvLyBUaGUgcHJldklucHV0IHRlc3QgcHJldmVu
dHMgdGhpcyBmcm9tIGZpcmluZyB3aGVuIGEgY29udGV4dAorICAgICAgLy8gbWVudSBpcyBjbG9z
ZWQgKHNpbmNlIHRoZSByZXNldElucHV0IHdvdWxkIGtpbGwgdGhlCisgICAgICAvLyBzZWxlY3Qt
YWxsIGRldGVjdGlvbiBoYWNrKQorICAgICAgaWYgKCFjbS5jdXJPcCAmJiBjbS5kaXNwbGF5LnNl
bEZvckNvbnRleHRNZW51ID09IGNtLmRvYy5zZWwpIHsKICAgICAgICAgcmVzZXRJbnB1dChjbSk7
CiAgICAgICAgIGlmICh3ZWJraXQpIHNldFRpbWVvdXQoYmluZChyZXNldElucHV0LCBjbSwgdHJ1
ZSksIDApOyAvLyBJc3N1ZSAjMTczMAogICAgICAgfQpAQCAtMzEzNiwxNCArMzE1OCwxNiBAQAog
ICAgIHJlc2V0SW5wdXQoY20pOwogICAgIC8vIEFkZHMgIlNlbGVjdCBhbGwiIHRvIGNvbnRleHQg
bWVudSBpbiBGRgogICAgIGlmICghY20uc29tZXRoaW5nU2VsZWN0ZWQoKSkgZGlzcGxheS5pbnB1
dC52YWx1ZSA9IGRpc3BsYXkucHJldklucHV0ID0gIiAiOworICAgIGRpc3BsYXkuc2VsRm9yQ29u
dGV4dE1lbnUgPSBjbS5kb2Muc2VsOwoKICAgICAvLyBTZWxlY3QtYWxsIHdpbGwgYmUgZ3JleWVk
IG91dCBpZiB0aGVyZSdzIG5vdGhpbmcgdG8gc2VsZWN0LCBzbwogICAgIC8vIHRoaXMgYWRkcyBh
IHplcm8td2lkdGggc3BhY2Ugc28gdGhhdCB3ZSBjYW4gbGF0ZXIgY2hlY2sgd2hldGhlcgogICAg
IC8vIGl0IGdvdCBzZWxlY3RlZC4KICAgICBmdW5jdGlvbiBwcmVwYXJlU2VsZWN0QWxsSGFjaygp
IHsKICAgICAgIGlmIChkaXNwbGF5LmlucHV0LnNlbGVjdGlvblN0YXJ0ICE9IG51bGwpIHsKLSAg
ICAgICAgdmFyIGV4dHZhbCA9IGRpc3BsYXkuaW5wdXQudmFsdWUgPSAiXHUyMDBiIiArIChjbS5z
b21ldGhpbmdTZWxlY3RlZCgpID8gZGlzcGxheS5pbnB1dC52YWx1ZSA6ICIiKTsKLSAgICAgICAg
ZGlzcGxheS5wcmV2SW5wdXQgPSAiXHUyMDBiIjsKKyAgICAgICAgdmFyIHNlbGVjdGVkID0gY20u
c29tZXRoaW5nU2VsZWN0ZWQoKTsKKyAgICAgICAgdmFyIGV4dHZhbCA9IGRpc3BsYXkuaW5wdXQu
dmFsdWUgPSAiXHUyMDBiIiArIChzZWxlY3RlZCA/IGRpc3BsYXkuaW5wdXQudmFsdWUgOiAiIik7
CisgICAgICAgIGRpc3BsYXkucHJldklucHV0ID0gc2VsZWN0ZWQgPyAiIiA6ICJcdTIwMGIiOwog
ICAgICAgICBkaXNwbGF5LmlucHV0LnNlbGVjdGlvblN0YXJ0ID0gMTsgZGlzcGxheS5pbnB1dC5z
ZWxlY3Rpb25FbmQgPSBleHR2YWwubGVuZ3RoOwogICAgICAgfQogICAgIH0KQEAgLTMxNTcsOCAr
MzE4MSw4IEBACiAgICAgICBpZiAoZGlzcGxheS5pbnB1dC5zZWxlY3Rpb25TdGFydCAhPSBudWxs
KSB7CiAgICAgICAgIGlmICghaWUgfHwgaWVfdXB0bzgpIHByZXBhcmVTZWxlY3RBbGxIYWNrKCk7
CiAgICAgICAgIGNsZWFyVGltZW91dChkZXRlY3RpbmdTZWxlY3RBbGwpOwotICAgICAgICB2YXIg
aSA9IDAsIHBvbGwgPSBmdW5jdGlvbigpewotICAgICAgICAgIGlmIChkaXNwbGF5LnByZXZJbnB1
dCA9PSAiXHUyMDBiIiAmJiBkaXNwbGF5LmlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDApCisgICAg
ICAgIHZhciBpID0gMCwgcG9sbCA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgIGlmIChkaXNwbGF5
LnNlbEZvckNvbnRleHRNZW51ID09IGNtLmRvYy5zZWwgJiYgZGlzcGxheS5pbnB1dC5zZWxlY3Rp
b25TdGFydCA9PSAwKQogICAgICAgICAgICAgb3BlcmF0aW9uKGNtLCBjb21tYW5kcy5zZWxlY3RB
bGwpKGNtKTsKICAgICAgICAgICBlbHNlIGlmIChpKysgPCAxMCkgZGV0ZWN0aW5nU2VsZWN0QWxs
ID0gc2V0VGltZW91dChwb2xsLCA1MDApOwogICAgICAgICAgIGVsc2UgcmVzZXRJbnB1dChjbSk7
CkBAIC0zNDM0LDcgKzM0NTgsNyBAQAogICAgIH0KCiAgICAgaWYgKGRvYy5zZWwuY29udGFpbnMo
Y2hhbmdlLmZyb20sIGNoYW5nZS50bykgPiAtMSkKLSAgICAgIGNtLmN1ck9wLmN1cnNvckFjdGl2
aXR5ID0gdHJ1ZTsKKyAgICAgIHNpZ25hbEN1cnNvckFjdGl2aXR5KGNtKTsKCiAgICAgdXBkYXRl
RG9jKGRvYywgY2hhbmdlLCBzcGFucywgZXN0aW1hdGVIZWlnaHQoY20pKTsKCkBAIC0zNDYyLDEz
ICszNDg2LDE3IEBACiAgICAgZWxzZQogICAgICAgcmVnQ2hhbmdlKGNtLCBmcm9tLmxpbmUsIHRv
LmxpbmUgKyAxLCBsZW5kaWZmKTsKCi0gICAgaWYgKGhhc0hhbmRsZXIoY20sICJjaGFuZ2UiKSB8
fCBoYXNIYW5kbGVyKGNtLCAiY2hhbmdlcyIpKQotICAgICAgKGNtLmN1ck9wLmNoYW5nZU9ianMg
fHwgKGNtLmN1ck9wLmNoYW5nZU9ianMgPSBbXSkpLnB1c2goeworICAgIHZhciBjaGFuZ2VzSGFu
ZGxlciA9IGhhc0hhbmRsZXIoY20sICJjaGFuZ2VzIiksIGNoYW5nZUhhbmRsZXIgPSBoYXNIYW5k
bGVyKGNtLCAiY2hhbmdlIik7CisgICAgaWYgKGNoYW5nZUhhbmRsZXIgfHwgY2hhbmdlc0hhbmRs
ZXIpIHsKKyAgICAgIHZhciBvYmogPSB7CiAgICAgICAgIGZyb206IGZyb20sIHRvOiB0bywKICAg
ICAgICAgdGV4dDogY2hhbmdlLnRleHQsCiAgICAgICAgIHJlbW92ZWQ6IGNoYW5nZS5yZW1vdmVk
LAogICAgICAgICBvcmlnaW46IGNoYW5nZS5vcmlnaW4KLSAgICAgIH0pOworICAgICAgfTsKKyAg
ICAgIGlmIChjaGFuZ2VIYW5kbGVyKSBzaWduYWxMYXRlcihjbSwgImNoYW5nZSIsIGNtLCBvYmop
OworICAgICAgaWYgKGNoYW5nZXNIYW5kbGVyKSAoY20uY3VyT3AuY2hhbmdlT2JqcyB8fCAoY20u
Y3VyT3AuY2hhbmdlT2JqcyA9IFtdKSkucHVzaChvYmopOworICAgIH0KICAgfQoKICAgZnVuY3Rp
b24gcmVwbGFjZVJhbmdlKGRvYywgY29kZSwgZnJvbSwgdG8sIG9yaWdpbikgewpAQCAtMzg5OSwx
MyArMzkyNywxNiBAQAogICAgICAgcG9zID0gY2xpcFBvcyh0aGlzLmRvYywgcG9zKTsKICAgICAg
IHZhciBzdHlsZXMgPSBnZXRMaW5lU3R5bGVzKHRoaXMsIGdldExpbmUodGhpcy5kb2MsIHBvcy5s
aW5lKSk7CiAgICAgICB2YXIgYmVmb3JlID0gMCwgYWZ0ZXIgPSAoc3R5bGVzLmxlbmd0aCAtIDEp
IC8gMiwgY2ggPSBwb3MuY2g7Ci0gICAgICBpZiAoY2ggPT0gMCkgcmV0dXJuIHN0eWxlc1syXTsK
LSAgICAgIGZvciAoOzspIHsKKyAgICAgIHZhciB0eXBlOworICAgICAgaWYgKGNoID09IDApIHR5
cGUgPSBzdHlsZXNbMl07CisgICAgICBlbHNlIGZvciAoOzspIHsKICAgICAgICAgdmFyIG1pZCA9
IChiZWZvcmUgKyBhZnRlcikgPj4gMTsKICAgICAgICAgaWYgKChtaWQgPyBzdHlsZXNbbWlkICog
MiAtIDFdIDogMCkgPj0gY2gpIGFmdGVyID0gbWlkOwogICAgICAgICBlbHNlIGlmIChzdHlsZXNb
bWlkICogMiArIDFdIDwgY2gpIGJlZm9yZSA9IG1pZCArIDE7Ci0gICAgICAgIGVsc2UgcmV0dXJu
IHN0eWxlc1ttaWQgKiAyICsgMl07CisgICAgICAgIGVsc2UgeyB0eXBlID0gc3R5bGVzW21pZCAq
IDIgKyAyXTsgYnJlYWs7IH0KICAgICAgIH0KKyAgICAgIHZhciBjdXQgPSB0eXBlID8gdHlwZS5p
bmRleE9mKCJjbS1vdmVybGF5ICIpIDogLTE7CisgICAgICByZXR1cm4gY3V0IDwgMCA/IHR5cGUg
OiBjdXQgPT0gMCA/IG51bGwgOiB0eXBlLnNsaWNlKDAsIGN1dCAtIDEpOwogICAgIH0sCgogICAg
IGdldE1vZGVBdDogZnVuY3Rpb24ocG9zKSB7CkBAIC01NjIxLDEyICs1NjUyLDEyIEBACiAgICAg
ICAgIH0KICAgICAgICAgaWYgKCFzdHlsZSkgcmV0dXJuOwogICAgICAgICBpZiAob3ZlcmxheS5v
cGFxdWUpIHsKLSAgICAgICAgICBzdC5zcGxpY2Uoc3RhcnQsIGkgLSBzdGFydCwgZW5kLCBzdHls
ZSk7CisgICAgICAgICAgc3Quc3BsaWNlKHN0YXJ0LCBpIC0gc3RhcnQsIGVuZCwgImNtLW92ZXJs
YXkgIiArIHN0eWxlKTsKICAgICAgICAgICBpID0gc3RhcnQgKyAyOwogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgIGZvciAoOyBzdGFydCA8IGk7IHN0YXJ0ICs9IDIpIHsKICAgICAgICAgICAg
IHZhciBjdXIgPSBzdFtzdGFydCsxXTsKLSAgICAgICAgICAgIHN0W3N0YXJ0KzFdID0gY3VyID8g
Y3VyICsgIiAiICsgc3R5bGUgOiBzdHlsZTsKKyAgICAgICAgICAgIHN0W3N0YXJ0KzFdID0gKGN1
ciA/IGN1ciArICIgIiA6ICIiKSArICJjbS1vdmVybGF5ICIgKyBzdHlsZTsKICAgICAgICAgICB9
CiAgICAgICAgIH0KICAgICAgIH0sIGxpbmVDbGFzc2VzKTsKQEAgLTYyMjksMTMgKzYyNjAsMTMg
QEAKICAgICAgIH0KICAgICAgIHJldHVybiBwYXJ0czsKICAgICB9LAotICAgIHJlcGxhY2VTZWxl
Y3Rpb246IGRvY01ldGhvZE9wKGZ1bmN0aW9uKGNvZGUsIGNvbGxhcHNlLCBvcmlnaW4pIHsKKyAg
ICByZXBsYWNlU2VsZWN0aW9uOiBmdW5jdGlvbihjb2RlLCBjb2xsYXBzZSwgb3JpZ2luKSB7CiAg
ICAgICB2YXIgZHVwID0gW107CiAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuc2VsLnJh
bmdlcy5sZW5ndGg7IGkrKykKICAgICAgICAgZHVwW2ldID0gY29kZTsKICAgICAgIHRoaXMucmVw
bGFjZVNlbGVjdGlvbnMoZHVwLCBjb2xsYXBzZSwgb3JpZ2luIHx8ICIraW5wdXQiKTsKLSAgICB9
KSwKLSAgICByZXBsYWNlU2VsZWN0aW9uczogZnVuY3Rpb24oY29kZSwgY29sbGFwc2UsIG9yaWdp
bikgeworICAgIH0sCisgICAgcmVwbGFjZVNlbGVjdGlvbnM6IGRvY01ldGhvZE9wKGZ1bmN0aW9u
KGNvZGUsIGNvbGxhcHNlLCBvcmlnaW4pIHsKICAgICAgIHZhciBjaGFuZ2VzID0gW10sIHNlbCA9
IHRoaXMuc2VsOwogICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWwucmFuZ2VzLmxlbmd0aDsg
aSsrKSB7CiAgICAgICAgIHZhciByYW5nZSA9IHNlbC5yYW5nZXNbaV07CkBAIC02MjQ2LDcgKzYy
NzcsNyBAQAogICAgICAgICBtYWtlQ2hhbmdlKHRoaXMsIGNoYW5nZXNbaV0pOwogICAgICAgaWYg
KG5ld1NlbCkgc2V0U2VsZWN0aW9uUmVwbGFjZUhpc3RvcnkodGhpcywgbmV3U2VsKTsKICAgICAg
IGVsc2UgaWYgKHRoaXMuY20pIGVuc3VyZUN1cnNvclZpc2libGUodGhpcy5jbSk7Ci0gICAgfSwK
KyAgICB9KSwKICAgICB1bmRvOiBkb2NNZXRob2RPcChmdW5jdGlvbigpIHttYWtlQ2hhbmdlRnJv
bUhpc3RvcnkodGhpcywgInVuZG8iKTt9KSwKICAgICByZWRvOiBkb2NNZXRob2RPcChmdW5jdGlv
bigpIHttYWtlQ2hhbmdlRnJvbUhpc3RvcnkodGhpcywgInJlZG8iKTt9KSwKICAgICB1bmRvU2Vs
ZWN0aW9uOiBkb2NNZXRob2RPcChmdW5jdGlvbigpIHttYWtlQ2hhbmdlRnJvbUhpc3RvcnkodGhp
cywgInVuZG8iLCB0cnVlKTt9KSwKQEAgLTY4OTYsNiArNjkyNywxNCBAQAogICAgIHJldHVybiBl
X2RlZmF1bHRQcmV2ZW50ZWQoZSkgfHwgZS5jb2RlbWlycm9ySWdub3JlOwogICB9CgorICBmdW5j
dGlvbiBzaWduYWxDdXJzb3JBY3Rpdml0eShjbSkgeworICAgIHZhciBhcnIgPSBjbS5faGFuZGxl
cnMgJiYgY20uX2hhbmRsZXJzLmN1cnNvckFjdGl2aXR5OworICAgIGlmICghYXJyKSByZXR1cm47
CisgICAgdmFyIHNldCA9IGNtLmN1ck9wLmN1cnNvckFjdGl2aXR5SGFuZGxlcnMgfHwgKGNtLmN1
ck9wLmN1cnNvckFjdGl2aXR5SGFuZGxlcnMgPSBbXSk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBhcnIubGVuZ3RoOyArK2kpIGlmIChpbmRleE9mKHNldCwgYXJyW2ldKSA9PSAtMSkKKyAgICAg
IHNldC5wdXNoKGFycltpXSk7CisgIH0KKwogICBmdW5jdGlvbiBoYXNIYW5kbGVyKGVtaXR0ZXIs
IHR5cGUpIHsKICAgICB2YXIgYXJyID0gZW1pdHRlci5faGFuZGxlcnMgJiYgZW1pdHRlci5faGFu
ZGxlcnNbdHlwZV07CiAgICAgcmV0dXJuIGFyciAmJiBhcnIubGVuZ3RoID4gMDsKQEAgLTc0ODEs
NyArNzUyMCw3IEBACgogICAvLyBUSEUgRU5ECgotICBDb2RlTWlycm9yLnZlcnNpb24gPSAiNC4w
LjQiOworICBDb2RlTWlycm9yLnZlcnNpb24gPSAiNC4xLjAiOwoKICAgcmV0dXJuIENvZGVNaXJy
b3I7CiB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Ub29scy9QcmV0dHlQ
cmludGluZy9jc3MuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVG9vbHMvUHJldHR5UHJpbnRp
bmcvY3NzLmpzCmluZGV4IDM0MjY3MzIuLmEyYjgwZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Ub29scy9QcmV0dHlQcmludGluZy9jc3MuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1Rvb2xzL1ByZXR0eVByaW50aW5nL2Nzcy5qcwpAQCAtOTIsNyArOTIsNyBAQCBD
b2RlTWlycm9yLmRlZmluZU1vZGUoImNzcyIsIGZ1bmN0aW9uKGNvbmZpZywgcGFyc2VyQ29uZmln
KSB7CgogICBmdW5jdGlvbiB0b2tlblBhcmVudGhlc2l6ZWQoc3RyZWFtLCBzdGF0ZSkgewogICAg
IHN0cmVhbS5uZXh0KCk7IC8vIE11c3QgYmUgJygnCi0gICAgaWYgKCFzdHJlYW0ubWF0Y2goL1xz
KltcIlwnXS8sIGZhbHNlKSkKKyAgICBpZiAoIXN0cmVhbS5tYXRjaCgvXHMqW1wiXCcpXS8sIGZh
bHNlKSkKICAgICAgIHN0YXRlLnRva2VuaXplID0gdG9rZW5TdHJpbmcoIikiKTsKICAgICBlbHNl
CiAgICAgICBzdGF0ZS50b2tlbml6ZSA9IG51bGw7CkBAIC00NTMsMTMgKzQ1MywxMyBAQCBDb2Rl
TWlycm9yLmRlZmluZU1vZGUoImNzcyIsIGZ1bmN0aW9uKGNvbmZpZywgcGFyc2VyQ29uZmlnKSB7
CiAgICAgLy8gU1ZHLXNwZWNpZmljCiAgICAgImNsaXAtcGF0aCIsICJjbGlwLXJ1bGUiLCAibWFz
ayIsICJlbmFibGUtYmFja2dyb3VuZCIsICJmaWx0ZXIiLCAiZmxvb2QtY29sb3IiLAogICAgICJm
bG9vZC1vcGFjaXR5IiwgImxpZ2h0aW5nLWNvbG9yIiwgInN0b3AtY29sb3IiLCAic3RvcC1vcGFj
aXR5IiwgInBvaW50ZXItZXZlbnRzIiwKLSAgICAiY29sb3ItaW50ZXJwb2xhdGlvbiIsICJjb2xv
ci1pbnRlcnBvbGF0aW9uLWZpbHRlcnMiLCAiY29sb3ItcHJvZmlsZSIsCisgICAgImNvbG9yLWlu
dGVycG9sYXRpb24iLCAiY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzIiwKICAgICAiY29sb3It
cmVuZGVyaW5nIiwgImZpbGwiLCAiZmlsbC1vcGFjaXR5IiwgImZpbGwtcnVsZSIsICJpbWFnZS1y
ZW5kZXJpbmciLAogICAgICJtYXJrZXIiLCAibWFya2VyLWVuZCIsICJtYXJrZXItbWlkIiwgIm1h
cmtlci1zdGFydCIsICJzaGFwZS1yZW5kZXJpbmciLCAic3Ryb2tlIiwKICAgICAic3Ryb2tlLWRh
c2hhcnJheSIsICJzdHJva2UtZGFzaG9mZnNldCIsICJzdHJva2UtbGluZWNhcCIsICJzdHJva2Ut
bGluZWpvaW4iLAogICAgICJzdHJva2UtbWl0ZXJsaW1pdCIsICJzdHJva2Utb3BhY2l0eSIsICJz
dHJva2Utd2lkdGgiLCAidGV4dC1yZW5kZXJpbmciLAogICAgICJiYXNlbGluZS1zaGlmdCIsICJk
b21pbmFudC1iYXNlbGluZSIsICJnbHlwaC1vcmllbnRhdGlvbi1ob3Jpem9udGFsIiwKLSAgICAi
Z2x5cGgtb3JpZW50YXRpb24tdmVydGljYWwiLCAia2VybmluZyIsICJ0ZXh0LWFuY2hvciIsICJ3
cml0aW5nLW1vZGUiCisgICAgImdseXBoLW9yaWVudGF0aW9uLXZlcnRpY2FsIiwgInRleHQtYW5j
aG9yIiwgIndyaXRpbmctbW9kZSIKICAgXSwgcHJvcGVydHlLZXl3b3JkcyA9IGtleVNldChwcm9w
ZXJ0eUtleXdvcmRzXyk7CgogICB2YXIgbm9uU3RhbmRhcmRQcm9wZXJ0eUtleXdvcmRzID0gWwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Rvb2xzL1ByZXR0eVByaW50aW5nL2ph
dmFzY3JpcHQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVG9vbHMvUHJldHR5UHJpbnRpbmcv
amF2YXNjcmlwdC5qcwppbmRleCA5MzE4YWFiLi5kYWYxMzhiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVG9vbHMvUHJldHR5UHJpbnRpbmcvamF2YXNjcmlwdC5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVG9vbHMvUHJldHR5UHJpbnRpbmcvamF2YXNjcmlwdC5qcwpA
QCAtMzY2LDYgKzM2Niw3IEBAIENvZGVNaXJyb3IuZGVmaW5lTW9kZSgiamF2YXNjcmlwdCIsIGZ1
bmN0aW9uKGNvbmZpZywgcGFyc2VyQ29uZmlnKSB7CiAgICAgaWYgKHR5cGUgPT0gIm9wZXJhdG9y
IiB8fCB0eXBlID09ICJzcHJlYWQiKSByZXR1cm4gY29udChub0NvbW1hID8gZXhwcmVzc2lvbk5v
Q29tbWEgOiBleHByZXNzaW9uKTsKICAgICBpZiAodHlwZSA9PSAiWyIpIHJldHVybiBjb250KHB1
c2hsZXgoIl0iKSwgYXJyYXlMaXRlcmFsLCBwb3BsZXgsIG1heWJlb3ApOwogICAgIGlmICh0eXBl
ID09ICJ7IikgcmV0dXJuIGNvbnRDb21tYXNlcChvYmpwcm9wLCAifSIsIG51bGwsIG1heWJlb3Ap
OworICAgIGlmICh0eXBlID09ICJxdWFzaSIpIHsgcmV0dXJuIHBhc3MocXVhc2ksIG1heWJlb3Ap
OyB9CiAgICAgcmV0dXJuIGNvbnQoKTsKICAgfQogICBmdW5jdGlvbiBtYXliZWV4cHJlc3Npb24o
dHlwZSkgewpAQCAtMzkwLDIxICszOTEsMjIgQEAgQ29kZU1pcnJvci5kZWZpbmVNb2RlKCJqYXZh
c2NyaXB0IiwgZnVuY3Rpb24oY29uZmlnLCBwYXJzZXJDb25maWcpIHsKICAgICAgIGlmICh2YWx1
ZSA9PSAiPyIpIHJldHVybiBjb250KGV4cHJlc3Npb24sIGV4cGVjdCgiOiIpLCBleHByKTsKICAg
ICAgIHJldHVybiBjb250KGV4cHIpOwogICAgIH0KLSAgICBpZiAodHlwZSA9PSAicXVhc2kiKSB7
IGN4LmNjLnB1c2gobWUpOyByZXR1cm4gcXVhc2kodmFsdWUpOyB9CisgICAgaWYgKHR5cGUgPT0g
InF1YXNpIikgeyByZXR1cm4gcGFzcyhxdWFzaSwgbWUpOyB9CiAgICAgaWYgKHR5cGUgPT0gIjsi
KSByZXR1cm47CiAgICAgaWYgKHR5cGUgPT0gIigiKSByZXR1cm4gY29udENvbW1hc2VwKGV4cHJl
c3Npb25Ob0NvbW1hLCAiKSIsICJjYWxsIiwgbWUpOwogICAgIGlmICh0eXBlID09ICIuIikgcmV0
dXJuIGNvbnQocHJvcGVydHksIG1lKTsKICAgICBpZiAodHlwZSA9PSAiWyIpIHJldHVybiBjb250
KHB1c2hsZXgoIl0iKSwgbWF5YmVleHByZXNzaW9uLCBleHBlY3QoIl0iKSwgcG9wbGV4LCBtZSk7
CiAgIH0KLSAgZnVuY3Rpb24gcXVhc2kodmFsdWUpIHsKLSAgICBpZiAodmFsdWUuc2xpY2UodmFs
dWUubGVuZ3RoIC0gMikgIT0gIiR7IikgcmV0dXJuIGNvbnQoKTsKKyAgZnVuY3Rpb24gcXVhc2ko
dHlwZSwgdmFsdWUpIHsKKyAgICBpZiAodHlwZSAhPSAicXVhc2kiKSByZXR1cm4gcGFzcygpOwor
ICAgIGlmICh2YWx1ZS5zbGljZSh2YWx1ZS5sZW5ndGggLSAyKSAhPSAiJHsiKSByZXR1cm4gY29u
dChxdWFzaSk7CiAgICAgcmV0dXJuIGNvbnQoZXhwcmVzc2lvbiwgY29udGludWVRdWFzaSk7CiAg
IH0KICAgZnVuY3Rpb24gY29udGludWVRdWFzaSh0eXBlKSB7CiAgICAgaWYgKHR5cGUgPT0gIn0i
KSB7CiAgICAgICBjeC5tYXJrZWQgPSAic3RyaW5nLTIiOwogICAgICAgY3guc3RhdGUudG9rZW5p
emUgPSB0b2tlblF1YXNpOwotICAgICAgcmV0dXJuIGNvbnQoKTsKKyAgICAgIHJldHVybiBjb250
KHF1YXNpKTsKICAgICB9CiAgIH0KICAgZnVuY3Rpb24gYXJyb3dCb2R5KHR5cGUpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0V4dGVybmFsL0NvZGVN
aXJyb3IvY29kZW1pcnJvci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0V4dGVybmFsL0NvZGVNaXJyb3IvY29kZW1pcnJvci5qcwppbmRleCAxYTcwY2Q2Li4wYWIyMTc3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9FeHRlcm5h
bC9Db2RlTWlycm9yL2NvZGVtaXJyb3IuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci9jb2RlbWlycm9yLmpzCkBAIC0zMyw3ICsz
Myw2IEBACiAgIHZhciBwcmVzdG8gPSAvT3BlcmFcLy8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50
KTsKICAgdmFyIHNhZmFyaSA9IC9BcHBsZSBDb21wdXRlci8udGVzdChuYXZpZ2F0b3IudmVuZG9y
KTsKICAgdmFyIGtodG1sID0gL0tIVE1MXC8vLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7Ci0g
IHZhciBtYWNfZ2VMaW9uID0gL01hYyBPUyBYIDFcZFxEKFs3LTldfFxkXGQpXEQvLnRlc3QobmF2
aWdhdG9yLnVzZXJBZ2VudCk7CiAgIHZhciBtYWNfZ2VNb3VudGFpbkxpb24gPSAvTWFjIE9TIFgg
MVxkXEQoWzgtOV18XGRcZClcRC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTsKICAgdmFyIHBo
YW50b20gPSAvUGhhbnRvbUpTLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpOwoKQEAgLTQzNywx
NCArNDM2LDE4IEBACiAgICAgICBkLmd1dHRlckZpbGxlci5zdHlsZS53aWR0aCA9IGQuZ3V0dGVy
cy5vZmZzZXRXaWR0aCArICJweCI7CiAgICAgfSBlbHNlIGQuZ3V0dGVyRmlsbGVyLnN0eWxlLmRp
c3BsYXkgPSAiIjsKCi0gICAgaWYgKG1hY19nZUxpb24gJiYgc2Nyb2xsYmFyV2lkdGgoZC5tZWFz
dXJlKSA9PT0gMCkgewotICAgICAgZC5zY3JvbGxiYXJWLnN0eWxlLm1pbldpZHRoID0gZC5zY3Jv
bGxiYXJILnN0eWxlLm1pbkhlaWdodCA9IG1hY19nZU1vdW50YWluTGlvbiA/ICIxOHB4IiA6ICIx
MnB4IjsKLSAgICAgIHZhciBiYXJNb3VzZURvd24gPSBmdW5jdGlvbihlKSB7Ci0gICAgICAgIGlm
IChlX3RhcmdldChlKSAhPSBkLnNjcm9sbGJhclYgJiYgZV90YXJnZXQoZSkgIT0gZC5zY3JvbGxi
YXJIKQotICAgICAgICAgIG9wZXJhdGlvbihjbSwgb25Nb3VzZURvd24pKGUpOwotICAgICAgfTsK
LSAgICAgIG9uKGQuc2Nyb2xsYmFyViwgIm1vdXNlZG93biIsIGJhck1vdXNlRG93bik7Ci0gICAg
ICBvbihkLnNjcm9sbGJhckgsICJtb3VzZWRvd24iLCBiYXJNb3VzZURvd24pOworICAgIGlmICgh
Y20uc3RhdGUuY2hlY2tlZE92ZXJsYXlTY3JvbGxiYXIgJiYgbWVhc3VyZS5jbGllbnRIZWlnaHQg
PiAwKSB7CisgICAgICBpZiAoc2Nyb2xsYmFyV2lkdGgoZC5tZWFzdXJlKSA9PT0gMCkgeworICAg
ICAgICB2YXIgdyA9IG1hYyAmJiAhbWFjX2dlTW91bnRhaW5MaW9uID8gIjEycHgiIDogIjE4cHgi
OworICAgICAgICBkLnNjcm9sbGJhclYuc3R5bGUubWluV2lkdGggPSBkLnNjcm9sbGJhckguc3R5
bGUubWluSGVpZ2h0ID0gdzsKKyAgICAgICAgdmFyIGJhck1vdXNlRG93biA9IGZ1bmN0aW9uKGUp
IHsKKyAgICAgICAgICBpZiAoZV90YXJnZXQoZSkgIT0gZC5zY3JvbGxiYXJWICYmIGVfdGFyZ2V0
KGUpICE9IGQuc2Nyb2xsYmFySCkKKyAgICAgICAgICAgIG9wZXJhdGlvbihjbSwgb25Nb3VzZURv
d24pKGUpOworICAgICAgICB9OworICAgICAgICBvbihkLnNjcm9sbGJhclYsICJtb3VzZWRvd24i
LCBiYXJNb3VzZURvd24pOworICAgICAgICBvbihkLnNjcm9sbGJhckgsICJtb3VzZWRvd24iLCBi
YXJNb3VzZURvd24pOworICAgICAgfQorICAgICAgY20uc3RhdGUuY2hlY2tlZE92ZXJsYXlTY3Jv
bGxiYXIgPSB0cnVlOwogICAgIH0KICAgfQoKQEAgLTExMzEsNyArMTEzNCw2IEBACgogICAvLyBT
ZXQgYSBuZXcgc2VsZWN0aW9uLgogICBmdW5jdGlvbiBzZXRTZWxlY3Rpb24oZG9jLCBzZWwsIG9w
dGlvbnMpIHsKLSAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLm9yaWdpbiAmJiBkb2MuY20pIGRv
Yy5jbS5jdXJPcC5vcmlnaW4gPSBvcHRpb25zLm9yaWdpbjsKICAgICBzZXRTZWxlY3Rpb25Ob1Vu
ZG8oZG9jLCBzZWwsIG9wdGlvbnMpOwogICAgIGFkZFNlbGVjdGlvblRvSGlzdG9yeShkb2MsIGRv
Yy5zZWwsIGRvYy5jbSA/IGRvYy5jbS5jdXJPcC5pZCA6IE5hTiwgb3B0aW9ucyk7CiAgIH0KQEAg
LTExNTIsOSArMTE1NCwxMCBAQAoKICAgICBkb2Muc2VsID0gc2VsOwoKLSAgICBpZiAoZG9jLmNt
KQotICAgICAgZG9jLmNtLmN1ck9wLnVwZGF0ZUlucHV0ID0gZG9jLmNtLmN1ck9wLnNlbGVjdGlv
bkNoYW5nZWQgPQotICAgICAgICBkb2MuY20uY3VyT3AuY3Vyc29yQWN0aXZpdHkgPSB0cnVlOwor
ICAgIGlmIChkb2MuY20pIHsKKyAgICAgIGRvYy5jbS5jdXJPcC51cGRhdGVJbnB1dCA9IGRvYy5j
bS5jdXJPcC5zZWxlY3Rpb25DaGFuZ2VkID0gdHJ1ZTsKKyAgICAgIHNpZ25hbEN1cnNvckFjdGl2
aXR5KGRvYy5jbSk7CisgICAgfQogICAgIHNpZ25hbExhdGVyKGRvYywgImN1cnNvckFjdGl2aXR5
IiwgZG9jKTsKICAgfQoKQEAgLTE0NTQsOCArMTQ1Nyw5IEBACiAgICAgaWYgKGRpc3BsYXkuY2Fj
aGVkUGFkZGluZ0gpIHJldHVybiBkaXNwbGF5LmNhY2hlZFBhZGRpbmdIOwogICAgIHZhciBlID0g
cmVtb3ZlQ2hpbGRyZW5BbmRBZGQoZGlzcGxheS5tZWFzdXJlLCBlbHQoInByZSIsICJ4IikpOwog
ICAgIHZhciBzdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlID8gd2luZG93LmdldENvbXB1
dGVkU3R5bGUoZSkgOiBlLmN1cnJlbnRTdHlsZTsKLSAgICByZXR1cm4gZGlzcGxheS5jYWNoZWRQ
YWRkaW5nSCA9IHtsZWZ0OiBwYXJzZUludChzdHlsZS5wYWRkaW5nTGVmdCksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IHBhcnNlSW50KHN0eWxlLnBhZGRpbmdS
aWdodCl9OworICAgIHZhciBkYXRhID0ge2xlZnQ6IHBhcnNlSW50KHN0eWxlLnBhZGRpbmdMZWZ0
KSwgcmlnaHQ6IHBhcnNlSW50KHN0eWxlLnBhZGRpbmdSaWdodCl9OworICAgIGlmICghaXNOYU4o
ZGF0YS5sZWZ0KSAmJiAhaXNOYU4oZGF0YS5yaWdodCkpIGRpc3BsYXkuY2FjaGVkUGFkZGluZ0gg
PSBkYXRhOworICAgIHJldHVybiBkYXRhOwogICB9CgogICAvLyBFbnN1cmUgdGhlIGxpbmVWaWV3
LndyYXBwaW5nLmhlaWdodHMgYXJyYXkgaXMgcG9wdWxhdGVkLiBUaGlzIGlzCkBAIC0xODg5LDgg
KzE4OTMsNyBAQAogICAgICAgdXBkYXRlSW5wdXQ6IG51bGwsICAgICAgIC8vIFdoZXRoZXIgdG8g
cmVzZXQgdGhlIGlucHV0IHRleHRhcmVhCiAgICAgICB0eXBpbmc6IGZhbHNlLCAgICAgICAgICAg
Ly8gV2hldGhlciB0aGlzIHJlc2V0IHNob3VsZCBiZSBjYXJlZnVsIHRvIGxlYXZlIGV4aXN0aW5n
IHRleHQgKGZvciBjb21wb3NpdGluZykKICAgICAgIGNoYW5nZU9ianM6IG51bGwsICAgICAgICAv
LyBBY2N1bXVsYXRlZCBjaGFuZ2VzLCBmb3IgZmlyaW5nIGNoYW5nZSBldmVudHMKLSAgICAgIG9y
aWdpbjogbnVsbCwgICAgICAgICAgICAvLyBTZWxlY3Rpb24ncyBvcmlnaW4KLSAgICAgIGN1cnNv
ckFjdGl2aXR5OiBmYWxzZSwgICAvLyBXaGV0aGVyIHRvIGZpcmUgYSBjdXJzb3JBY3Rpdml0eSBl
dmVudAorICAgICAgY3Vyc29yQWN0aXZpdHlIYW5kbGVyczogbnVsbCwgLy8gU2V0IG9mIGhhbmRs
ZXJzIHRvIGZpcmUgY3Vyc29yQWN0aXZpdHkgb24KICAgICAgIHNlbGVjdGlvbkNoYW5nZWQ6IGZh
bHNlLCAvLyBXaGV0aGVyIHRoZSBzZWxlY3Rpb24gbmVlZHMgdG8gYmUgcmVkcmF3bgogICAgICAg
dXBkYXRlTWF4TGluZTogZmFsc2UsICAgIC8vIFNldCB3aGVuIHRoZSB3aWRlc3QgbGluZSBuZWVk
cyB0byBiZSBkZXRlcm1pbmVkIGFuZXcKICAgICAgIHNjcm9sbExlZnQ6IG51bGwsIHNjcm9sbFRv
cDogbnVsbCwgLy8gSW50ZXJtZWRpYXRlIHNjcm9sbCBwb3NpdGlvbiwgbm90IHB1c2hlZCB0byBE
T00geWV0CkBAIC0xOTU1LDEzICsxOTU4LDEyIEBACiAgICAgICBkZWxheWVkQ2FsbGJhY2tzID0g
bnVsbDsKICAgICB9CiAgICAgLy8gRmlyZSBjaGFuZ2UgZXZlbnRzLCBhbmQgZGVsYXllZCBldmVu
dCBoYW5kbGVycwotICAgIGlmIChvcC5jaGFuZ2VPYmpzKSB7Ci0gICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IG9wLmNoYW5nZU9ianMubGVuZ3RoOyBpKyspCi0gICAgICAgIHNpZ25hbChjbSwgImNo
YW5nZSIsIGNtLCBvcC5jaGFuZ2VPYmpzW2ldKTsKKyAgICBpZiAob3AuY2hhbmdlT2JqcykKICAg
ICAgIHNpZ25hbChjbSwgImNoYW5nZXMiLCBjbSwgb3AuY2hhbmdlT2Jqcyk7Ci0gICAgfQotICAg
IGlmIChvcC5jdXJzb3JBY3Rpdml0eSkgc2lnbmFsKGNtLCAiY3Vyc29yQWN0aXZpdHkiLCBjbSwg
b3Aub3JpZ2luKTsKICAgICBpZiAoZGVsYXllZCkgZm9yICh2YXIgaSA9IDA7IGkgPCBkZWxheWVk
Lmxlbmd0aDsgKytpKSBkZWxheWVkW2ldKCk7CisgICAgaWYgKG9wLmN1cnNvckFjdGl2aXR5SGFu
ZGxlcnMpCisgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG9wLmN1cnNvckFjdGl2aXR5SGFuZGxl
cnMubGVuZ3RoOyBpKyspCisgICAgICAgIG9wLmN1cnNvckFjdGl2aXR5SGFuZGxlcnNbaV0oY20p
OwogICB9CgogICAvLyBSdW4gdGhlIGdpdmVuIGZ1bmN0aW9uIGluIGFuIG9wZXJhdGlvbgpAQCAt
MjIyNCw3ICsyMjI2LDEzIEBACiAgICAgLy8gcG9zc2libGUgd2hlbiBpdCBpcyBjbGVhciB0aGF0
IG5vdGhpbmcgaGFwcGVuZWQuIGhhc1NlbGVjdGlvbgogICAgIC8vIHdpbGwgYmUgdGhlIGNhc2Ug
d2hlbiB0aGVyZSBpcyBhIGxvdCBvZiB0ZXh0IGluIHRoZSB0ZXh0YXJlYSwKICAgICAvLyBpbiB3
aGljaCBjYXNlIHJlYWRpbmcgaXRzIHZhbHVlIHdvdWxkIGJlIGV4cGVuc2l2ZS4KLSAgICBpZiAo
IWNtLnN0YXRlLmZvY3VzZWQgfHwgaGFzU2VsZWN0aW9uKGlucHV0KSB8fCBpc1JlYWRPbmx5KGNt
KSB8fCBjbS5vcHRpb25zLmRpc2FibGVJbnB1dCkgcmV0dXJuIGZhbHNlOworICAgIGlmICghY20u
c3RhdGUuZm9jdXNlZCB8fCAoaGFzU2VsZWN0aW9uKGlucHV0KSAmJiAhcHJldklucHV0KSB8fCBp
c1JlYWRPbmx5KGNtKSB8fCBjbS5vcHRpb25zLmRpc2FibGVJbnB1dCkKKyAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAvLyBTZWUgcGFzdGUgaGFuZGxlciBmb3IgbW9yZSBvbiB0aGUgZmFrZWRMYXN0
Q2hhciBrbHVkZ2UKKyAgICBpZiAoY20uc3RhdGUucGFzdGVJbmNvbWluZyAmJiBjbS5zdGF0ZS5m
YWtlZExhc3RDaGFyKSB7CisgICAgICBpbnB1dC52YWx1ZSA9IGlucHV0LnZhbHVlLnN1YnN0cmlu
ZygwLCBpbnB1dC52YWx1ZS5sZW5ndGggLSAxKTsKKyAgICAgIGNtLnN0YXRlLmZha2VkTGFzdENo
YXIgPSBmYWxzZTsKKyAgICB9CiAgICAgdmFyIHRleHQgPSBpbnB1dC52YWx1ZTsKICAgICAvLyBJ
ZiBub3RoaW5nIGNoYW5nZWQsIGJhaWwuCiAgICAgaWYgKHRleHQgPT0gcHJldklucHV0ICYmICFj
bS5zb21ldGhpbmdTZWxlY3RlZCgpKSByZXR1cm4gZmFsc2U7CkBAIC0yNDI0LDYgKzI0MzIsMTYg
QEAKICAgICAgIGZhc3RQb2xsKGNtKTsKICAgICB9KTsKICAgICBvbihkLmlucHV0LCAicGFzdGUi
LCBmdW5jdGlvbigpIHsKKyAgICAgIC8vIFdvcmthcm91bmQgZm9yIHdlYmtpdCBidWcgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwMjA2CisgICAgICAvLyBBZGQgYSBj
aGFyIHRvIHRoZSBlbmQgb2YgdGV4dGFyZWEgYmVmb3JlIHBhc3RlIG9jY3VyIHNvIHRoYXQKKyAg
ICAgIC8vIHNlbGVjdGlvbiBkb2Vzbid0IHNwYW4gdG8gdGhlIGVuZCBvZiB0ZXh0YXJlYS4KKyAg
ICAgIGlmICh3ZWJraXQgJiYgIWNtLnN0YXRlLmZha2VkTGFzdENoYXIgJiYgIShuZXcgRGF0ZSAt
IGNtLnN0YXRlLmxhc3RNaWRkbGVEb3duIDwgMjAwKSkgeworICAgICAgICB2YXIgc3RhcnQgPSBk
LmlucHV0LnNlbGVjdGlvblN0YXJ0LCBlbmQgPSBkLmlucHV0LnNlbGVjdGlvbkVuZDsKKyAgICAg
ICAgZC5pbnB1dC52YWx1ZSArPSAiJCI7CisgICAgICAgIGQuaW5wdXQuc2VsZWN0aW9uU3RhcnQg
PSBzdGFydDsKKyAgICAgICAgZC5pbnB1dC5zZWxlY3Rpb25FbmQgPSBlbmQ7CisgICAgICAgIGNt
LnN0YXRlLmZha2VkTGFzdENoYXIgPSB0cnVlOworICAgICAgfQogICAgICAgY20uc3RhdGUucGFz
dGVJbmNvbWluZyA9IHRydWU7CiAgICAgICBmYXN0UG9sbChjbSk7CiAgICAgfSk7CkBAIC0yNDky
LDcgKzI1MTAsNyBAQAogICAgIHZhciBjb29yZHMgPSBjb29yZHNDaGFyKGNtLCB4LCB5KSwgbGlu
ZTsKICAgICBpZiAoZm9yUmVjdCAmJiBjb29yZHMueFJlbCA9PSAxICYmIChsaW5lID0gZ2V0TGlu
ZShjbS5kb2MsIGNvb3Jkcy5saW5lKS50ZXh0KS5sZW5ndGggPT0gY29vcmRzLmNoKSB7CiAgICAg
ICB2YXIgY29sRGlmZiA9IGNvdW50Q29sdW1uKGxpbmUsIGxpbmUubGVuZ3RoLCBjbS5vcHRpb25z
LnRhYlNpemUpIC0gbGluZS5sZW5ndGg7Ci0gICAgICBjb29yZHMgPSBQb3MoY29vcmRzLmxpbmUs
IE1hdGgucm91bmQoKHggLSBwYWRkaW5nSChjbS5kaXNwbGF5KS5sZWZ0KSAvIGNoYXJXaWR0aChj
bS5kaXNwbGF5KSkgLSBjb2xEaWZmKTsKKyAgICAgIGNvb3JkcyA9IFBvcyhjb29yZHMubGluZSwg
TWF0aC5tYXgoMCwgTWF0aC5yb3VuZCgoeCAtIHBhZGRpbmdIKGNtLmRpc3BsYXkpLmxlZnQpIC8g
Y2hhcldpZHRoKGNtLmRpc3BsYXkpKSAtIGNvbERpZmYpKTsKICAgICB9CiAgICAgcmV0dXJuIGNv
b3JkczsKICAgfQpAQCAtMjU5NSw3ICsyNjEzLDcgQEAKICAgICBlX3ByZXZlbnREZWZhdWx0KGUp
OwoKICAgICB2YXIgb3VyUmFuZ2UsIG91ckluZGV4LCBzdGFydFNlbCA9IGRvYy5zZWw7Ci0gICAg
aWYgKGFkZE5ldykgeworICAgIGlmIChhZGROZXcgJiYgIWUuc2hpZnRLZXkpIHsKICAgICAgIG91
ckluZGV4ID0gZG9jLnNlbC5jb250YWlucyhzdGFydCk7CiAgICAgICBpZiAob3VySW5kZXggPiAt
MSkKICAgICAgICAgb3VyUmFuZ2UgPSBkb2Muc2VsLnJhbmdlc1tvdXJJbmRleF07CkBAIC0yNjI5
LDYgKzI2NDcsNyBAQAogICAgIGlmICghYWRkTmV3KSB7CiAgICAgICBvdXJJbmRleCA9IDA7CiAg
ICAgICBzZXRTZWxlY3Rpb24oZG9jLCBuZXcgU2VsZWN0aW9uKFtvdXJSYW5nZV0sIDApLCBzZWxf
bW91c2UpOworICAgICAgc3RhcnRTZWwgPSBkb2Muc2VsOwogICAgIH0gZWxzZSBpZiAob3VySW5k
ZXggPiAtMSkgewogICAgICAgcmVwbGFjZU9uZVNlbGVjdGlvbihkb2MsIG91ckluZGV4LCBvdXJS
YW5nZSwgc2VsX21vdXNlKTsKICAgICB9IGVsc2UgewpAQCAtMjc2Miw3ICsyNzgxLDcgQEAKICAg
ICBpZiAoc2lnbmFsRE9NRXZlbnQoY20sIGUpIHx8IGV2ZW50SW5XaWRnZXQoY20uZGlzcGxheSwg
ZSkpCiAgICAgICByZXR1cm47CiAgICAgZV9wcmV2ZW50RGVmYXVsdChlKTsKLSAgICBpZiAoaWVf
dXB0bzEwKSBsYXN0RHJvcCA9ICtuZXcgRGF0ZTsKKyAgICBpZiAoaWUpIGxhc3REcm9wID0gK25l
dyBEYXRlOwogICAgIHZhciBwb3MgPSBwb3NGcm9tTW91c2UoY20sIGUsIHRydWUpLCBmaWxlcyA9
IGUuZGF0YVRyYW5zZmVyLmZpbGVzOwogICAgIGlmICghcG9zIHx8IGlzUmVhZE9ubHkoY20pKSBy
ZXR1cm47CiAgICAgLy8gTWlnaHQgYmUgYSBmaWxlIGRyb3AsIGluIHdoaWNoIGNhc2Ugd2Ugc2lt
cGx5IGV4dHJhY3QgdGhlIHRleHQKQEAgLTI4MDcsNyArMjgyNiw3IEBACiAgIH0KCiAgIGZ1bmN0
aW9uIG9uRHJhZ1N0YXJ0KGNtLCBlKSB7Ci0gICAgaWYgKGllX3VwdG8xMCAmJiAoIWNtLnN0YXRl
LmRyYWdnaW5nVGV4dCB8fCArbmV3IERhdGUgLSBsYXN0RHJvcCA8IDEwMCkpIHsgZV9zdG9wKGUp
OyByZXR1cm47IH0KKyAgICBpZiAoaWUgJiYgKCFjbS5zdGF0ZS5kcmFnZ2luZ1RleHQgfHwgK25l
dyBEYXRlIC0gbGFzdERyb3AgPCAxMDApKSB7IGVfc3RvcChlKTsgcmV0dXJuOyB9CiAgICAgaWYg
KHNpZ25hbERPTUV2ZW50KGNtLCBlKSB8fCBldmVudEluV2lkZ2V0KGNtLmRpc3BsYXksIGUpKSBy
ZXR1cm47CgogICAgIGUuZGF0YVRyYW5zZmVyLnNldERhdGEoIlRleHQiLCBjbS5nZXRTZWxlY3Rp
b24oKSk7CkBAIC0zMDg4LDcgKzMxMDcsMTAgQEAKICAgICAgIHNpZ25hbChjbSwgImZvY3VzIiwg
Y20pOwogICAgICAgY20uc3RhdGUuZm9jdXNlZCA9IHRydWU7CiAgICAgICBhZGRDbGFzcyhjbS5k
aXNwbGF5LndyYXBwZXIsICJDb2RlTWlycm9yLWZvY3VzZWQiKTsKLSAgICAgIGlmICghY20uY3Vy
T3ApIHsKKyAgICAgIC8vIFRoZSBwcmV2SW5wdXQgdGVzdCBwcmV2ZW50cyB0aGlzIGZyb20gZmly
aW5nIHdoZW4gYSBjb250ZXh0CisgICAgICAvLyBtZW51IGlzIGNsb3NlZCAoc2luY2UgdGhlIHJl
c2V0SW5wdXQgd291bGQga2lsbCB0aGUKKyAgICAgIC8vIHNlbGVjdC1hbGwgZGV0ZWN0aW9uIGhh
Y2spCisgICAgICBpZiAoIWNtLmN1ck9wICYmIGNtLmRpc3BsYXkuc2VsRm9yQ29udGV4dE1lbnUg
PT0gY20uZG9jLnNlbCkgewogICAgICAgICByZXNldElucHV0KGNtKTsKICAgICAgICAgaWYgKHdl
YmtpdCkgc2V0VGltZW91dChiaW5kKHJlc2V0SW5wdXQsIGNtLCB0cnVlKSwgMCk7IC8vIElzc3Vl
ICMxNzMwCiAgICAgICB9CkBAIC0zMTM2LDE0ICszMTU4LDE2IEBACiAgICAgcmVzZXRJbnB1dChj
bSk7CiAgICAgLy8gQWRkcyAiU2VsZWN0IGFsbCIgdG8gY29udGV4dCBtZW51IGluIEZGCiAgICAg
aWYgKCFjbS5zb21ldGhpbmdTZWxlY3RlZCgpKSBkaXNwbGF5LmlucHV0LnZhbHVlID0gZGlzcGxh
eS5wcmV2SW5wdXQgPSAiICI7CisgICAgZGlzcGxheS5zZWxGb3JDb250ZXh0TWVudSA9IGNtLmRv
Yy5zZWw7CgogICAgIC8vIFNlbGVjdC1hbGwgd2lsbCBiZSBncmV5ZWQgb3V0IGlmIHRoZXJlJ3Mg
bm90aGluZyB0byBzZWxlY3QsIHNvCiAgICAgLy8gdGhpcyBhZGRzIGEgemVyby13aWR0aCBzcGFj
ZSBzbyB0aGF0IHdlIGNhbiBsYXRlciBjaGVjayB3aGV0aGVyCiAgICAgLy8gaXQgZ290IHNlbGVj
dGVkLgogICAgIGZ1bmN0aW9uIHByZXBhcmVTZWxlY3RBbGxIYWNrKCkgewogICAgICAgaWYgKGRp
c3BsYXkuaW5wdXQuc2VsZWN0aW9uU3RhcnQgIT0gbnVsbCkgewotICAgICAgICB2YXIgZXh0dmFs
ID0gZGlzcGxheS5pbnB1dC52YWx1ZSA9ICJcdTIwMGIiICsgKGNtLnNvbWV0aGluZ1NlbGVjdGVk
KCkgPyBkaXNwbGF5LmlucHV0LnZhbHVlIDogIiIpOwotICAgICAgICBkaXNwbGF5LnByZXZJbnB1
dCA9ICJcdTIwMGIiOworICAgICAgICB2YXIgc2VsZWN0ZWQgPSBjbS5zb21ldGhpbmdTZWxlY3Rl
ZCgpOworICAgICAgICB2YXIgZXh0dmFsID0gZGlzcGxheS5pbnB1dC52YWx1ZSA9ICJcdTIwMGIi
ICsgKHNlbGVjdGVkID8gZGlzcGxheS5pbnB1dC52YWx1ZSA6ICIiKTsKKyAgICAgICAgZGlzcGxh
eS5wcmV2SW5wdXQgPSBzZWxlY3RlZCA/ICIiIDogIlx1MjAwYiI7CiAgICAgICAgIGRpc3BsYXku
aW5wdXQuc2VsZWN0aW9uU3RhcnQgPSAxOyBkaXNwbGF5LmlucHV0LnNlbGVjdGlvbkVuZCA9IGV4
dHZhbC5sZW5ndGg7CiAgICAgICB9CiAgICAgfQpAQCAtMzE1Nyw4ICszMTgxLDggQEAKICAgICAg
IGlmIChkaXNwbGF5LmlucHV0LnNlbGVjdGlvblN0YXJ0ICE9IG51bGwpIHsKICAgICAgICAgaWYg
KCFpZSB8fCBpZV91cHRvOCkgcHJlcGFyZVNlbGVjdEFsbEhhY2soKTsKICAgICAgICAgY2xlYXJU
aW1lb3V0KGRldGVjdGluZ1NlbGVjdEFsbCk7Ci0gICAgICAgIHZhciBpID0gMCwgcG9sbCA9IGZ1
bmN0aW9uKCl7Ci0gICAgICAgICAgaWYgKGRpc3BsYXkucHJldklucHV0ID09ICJcdTIwMGIiICYm
IGRpc3BsYXkuaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMCkKKyAgICAgICAgdmFyIGkgPSAwLCBw
b2xsID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgaWYgKGRpc3BsYXkuc2VsRm9yQ29udGV4dE1l
bnUgPT0gY20uZG9jLnNlbCAmJiBkaXNwbGF5LmlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDApCiAg
ICAgICAgICAgICBvcGVyYXRpb24oY20sIGNvbW1hbmRzLnNlbGVjdEFsbCkoY20pOwogICAgICAg
ICAgIGVsc2UgaWYgKGkrKyA8IDEwKSBkZXRlY3RpbmdTZWxlY3RBbGwgPSBzZXRUaW1lb3V0KHBv
bGwsIDUwMCk7CiAgICAgICAgICAgZWxzZSByZXNldElucHV0KGNtKTsKQEAgLTM0MzQsNyArMzQ1
OCw3IEBACiAgICAgfQoKICAgICBpZiAoZG9jLnNlbC5jb250YWlucyhjaGFuZ2UuZnJvbSwgY2hh
bmdlLnRvKSA+IC0xKQotICAgICAgY20uY3VyT3AuY3Vyc29yQWN0aXZpdHkgPSB0cnVlOworICAg
ICAgc2lnbmFsQ3Vyc29yQWN0aXZpdHkoY20pOwoKICAgICB1cGRhdGVEb2MoZG9jLCBjaGFuZ2Us
IHNwYW5zLCBlc3RpbWF0ZUhlaWdodChjbSkpOwoKQEAgLTM0NjIsMTMgKzM0ODYsMTcgQEAKICAg
ICBlbHNlCiAgICAgICByZWdDaGFuZ2UoY20sIGZyb20ubGluZSwgdG8ubGluZSArIDEsIGxlbmRp
ZmYpOwoKLSAgICBpZiAoaGFzSGFuZGxlcihjbSwgImNoYW5nZSIpIHx8IGhhc0hhbmRsZXIoY20s
ICJjaGFuZ2VzIikpCi0gICAgICAoY20uY3VyT3AuY2hhbmdlT2JqcyB8fCAoY20uY3VyT3AuY2hh
bmdlT2JqcyA9IFtdKSkucHVzaCh7CisgICAgdmFyIGNoYW5nZXNIYW5kbGVyID0gaGFzSGFuZGxl
cihjbSwgImNoYW5nZXMiKSwgY2hhbmdlSGFuZGxlciA9IGhhc0hhbmRsZXIoY20sICJjaGFuZ2Ui
KTsKKyAgICBpZiAoY2hhbmdlSGFuZGxlciB8fCBjaGFuZ2VzSGFuZGxlcikgeworICAgICAgdmFy
IG9iaiA9IHsKICAgICAgICAgZnJvbTogZnJvbSwgdG86IHRvLAogICAgICAgICB0ZXh0OiBjaGFu
Z2UudGV4dCwKICAgICAgICAgcmVtb3ZlZDogY2hhbmdlLnJlbW92ZWQsCiAgICAgICAgIG9yaWdp
bjogY2hhbmdlLm9yaWdpbgotICAgICAgfSk7CisgICAgICB9OworICAgICAgaWYgKGNoYW5nZUhh
bmRsZXIpIHNpZ25hbExhdGVyKGNtLCAiY2hhbmdlIiwgY20sIG9iaik7CisgICAgICBpZiAoY2hh
bmdlc0hhbmRsZXIpIChjbS5jdXJPcC5jaGFuZ2VPYmpzIHx8IChjbS5jdXJPcC5jaGFuZ2VPYmpz
ID0gW10pKS5wdXNoKG9iaik7CisgICAgfQogICB9CgogICBmdW5jdGlvbiByZXBsYWNlUmFuZ2Uo
ZG9jLCBjb2RlLCBmcm9tLCB0bywgb3JpZ2luKSB7CkBAIC0zODk5LDEzICszOTI3LDE2IEBACiAg
ICAgICBwb3MgPSBjbGlwUG9zKHRoaXMuZG9jLCBwb3MpOwogICAgICAgdmFyIHN0eWxlcyA9IGdl
dExpbmVTdHlsZXModGhpcywgZ2V0TGluZSh0aGlzLmRvYywgcG9zLmxpbmUpKTsKICAgICAgIHZh
ciBiZWZvcmUgPSAwLCBhZnRlciA9IChzdHlsZXMubGVuZ3RoIC0gMSkgLyAyLCBjaCA9IHBvcy5j
aDsKLSAgICAgIGlmIChjaCA9PSAwKSByZXR1cm4gc3R5bGVzWzJdOwotICAgICAgZm9yICg7Oykg
eworICAgICAgdmFyIHR5cGU7CisgICAgICBpZiAoY2ggPT0gMCkgdHlwZSA9IHN0eWxlc1syXTsK
KyAgICAgIGVsc2UgZm9yICg7OykgewogICAgICAgICB2YXIgbWlkID0gKGJlZm9yZSArIGFmdGVy
KSA+PiAxOwogICAgICAgICBpZiAoKG1pZCA/IHN0eWxlc1ttaWQgKiAyIC0gMV0gOiAwKSA+PSBj
aCkgYWZ0ZXIgPSBtaWQ7CiAgICAgICAgIGVsc2UgaWYgKHN0eWxlc1ttaWQgKiAyICsgMV0gPCBj
aCkgYmVmb3JlID0gbWlkICsgMTsKLSAgICAgICAgZWxzZSByZXR1cm4gc3R5bGVzW21pZCAqIDIg
KyAyXTsKKyAgICAgICAgZWxzZSB7IHR5cGUgPSBzdHlsZXNbbWlkICogMiArIDJdOyBicmVhazsg
fQogICAgICAgfQorICAgICAgdmFyIGN1dCA9IHR5cGUgPyB0eXBlLmluZGV4T2YoImNtLW92ZXJs
YXkgIikgOiAtMTsKKyAgICAgIHJldHVybiBjdXQgPCAwID8gdHlwZSA6IGN1dCA9PSAwID8gbnVs
bCA6IHR5cGUuc2xpY2UoMCwgY3V0IC0gMSk7CiAgICAgfSwKCiAgICAgZ2V0TW9kZUF0OiBmdW5j
dGlvbihwb3MpIHsKQEAgLTU2MjEsMTIgKzU2NTIsMTIgQEAKICAgICAgICAgfQogICAgICAgICBp
ZiAoIXN0eWxlKSByZXR1cm47CiAgICAgICAgIGlmIChvdmVybGF5Lm9wYXF1ZSkgewotICAgICAg
ICAgIHN0LnNwbGljZShzdGFydCwgaSAtIHN0YXJ0LCBlbmQsIHN0eWxlKTsKKyAgICAgICAgICBz
dC5zcGxpY2Uoc3RhcnQsIGkgLSBzdGFydCwgZW5kLCAiY20tb3ZlcmxheSAiICsgc3R5bGUpOwog
ICAgICAgICAgIGkgPSBzdGFydCArIDI7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgZm9y
ICg7IHN0YXJ0IDwgaTsgc3RhcnQgKz0gMikgewogICAgICAgICAgICAgdmFyIGN1ciA9IHN0W3N0
YXJ0KzFdOwotICAgICAgICAgICAgc3Rbc3RhcnQrMV0gPSBjdXIgPyBjdXIgKyAiICIgKyBzdHls
ZSA6IHN0eWxlOworICAgICAgICAgICAgc3Rbc3RhcnQrMV0gPSAoY3VyID8gY3VyICsgIiAiIDog
IiIpICsgImNtLW92ZXJsYXkgIiArIHN0eWxlOwogICAgICAgICAgIH0KICAgICAgICAgfQogICAg
ICAgfSwgbGluZUNsYXNzZXMpOwpAQCAtNjIyOSwxMyArNjI2MCwxMyBAQAogICAgICAgfQogICAg
ICAgcmV0dXJuIHBhcnRzOwogICAgIH0sCi0gICAgcmVwbGFjZVNlbGVjdGlvbjogZG9jTWV0aG9k
T3AoZnVuY3Rpb24oY29kZSwgY29sbGFwc2UsIG9yaWdpbikgeworICAgIHJlcGxhY2VTZWxlY3Rp
b246IGZ1bmN0aW9uKGNvZGUsIGNvbGxhcHNlLCBvcmlnaW4pIHsKICAgICAgIHZhciBkdXAgPSBb
XTsKICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5zZWwucmFuZ2VzLmxlbmd0aDsgaSsr
KQogICAgICAgICBkdXBbaV0gPSBjb2RlOwogICAgICAgdGhpcy5yZXBsYWNlU2VsZWN0aW9ucyhk
dXAsIGNvbGxhcHNlLCBvcmlnaW4gfHwgIitpbnB1dCIpOwotICAgIH0pLAotICAgIHJlcGxhY2VT
ZWxlY3Rpb25zOiBmdW5jdGlvbihjb2RlLCBjb2xsYXBzZSwgb3JpZ2luKSB7CisgICAgfSwKKyAg
ICByZXBsYWNlU2VsZWN0aW9uczogZG9jTWV0aG9kT3AoZnVuY3Rpb24oY29kZSwgY29sbGFwc2Us
IG9yaWdpbikgewogICAgICAgdmFyIGNoYW5nZXMgPSBbXSwgc2VsID0gdGhpcy5zZWw7CiAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHNlbC5yYW5nZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAg
dmFyIHJhbmdlID0gc2VsLnJhbmdlc1tpXTsKQEAgLTYyNDYsNyArNjI3Nyw3IEBACiAgICAgICAg
IG1ha2VDaGFuZ2UodGhpcywgY2hhbmdlc1tpXSk7CiAgICAgICBpZiAobmV3U2VsKSBzZXRTZWxl
Y3Rpb25SZXBsYWNlSGlzdG9yeSh0aGlzLCBuZXdTZWwpOwogICAgICAgZWxzZSBpZiAodGhpcy5j
bSkgZW5zdXJlQ3Vyc29yVmlzaWJsZSh0aGlzLmNtKTsKLSAgICB9LAorICAgIH0pLAogICAgIHVu
ZG86IGRvY01ldGhvZE9wKGZ1bmN0aW9uKCkge21ha2VDaGFuZ2VGcm9tSGlzdG9yeSh0aGlzLCAi
dW5kbyIpO30pLAogICAgIHJlZG86IGRvY01ldGhvZE9wKGZ1bmN0aW9uKCkge21ha2VDaGFuZ2VG
cm9tSGlzdG9yeSh0aGlzLCAicmVkbyIpO30pLAogICAgIHVuZG9TZWxlY3Rpb246IGRvY01ldGhv
ZE9wKGZ1bmN0aW9uKCkge21ha2VDaGFuZ2VGcm9tSGlzdG9yeSh0aGlzLCAidW5kbyIsIHRydWUp
O30pLApAQCAtNjg5Niw2ICs2OTI3LDE0IEBACiAgICAgcmV0dXJuIGVfZGVmYXVsdFByZXZlbnRl
ZChlKSB8fCBlLmNvZGVtaXJyb3JJZ25vcmU7CiAgIH0KCisgIGZ1bmN0aW9uIHNpZ25hbEN1cnNv
ckFjdGl2aXR5KGNtKSB7CisgICAgdmFyIGFyciA9IGNtLl9oYW5kbGVycyAmJiBjbS5faGFuZGxl
cnMuY3Vyc29yQWN0aXZpdHk7CisgICAgaWYgKCFhcnIpIHJldHVybjsKKyAgICB2YXIgc2V0ID0g
Y20uY3VyT3AuY3Vyc29yQWN0aXZpdHlIYW5kbGVycyB8fCAoY20uY3VyT3AuY3Vyc29yQWN0aXZp
dHlIYW5kbGVycyA9IFtdKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyci5sZW5ndGg7ICsr
aSkgaWYgKGluZGV4T2Yoc2V0LCBhcnJbaV0pID09IC0xKQorICAgICAgc2V0LnB1c2goYXJyW2ld
KTsKKyAgfQorCiAgIGZ1bmN0aW9uIGhhc0hhbmRsZXIoZW1pdHRlciwgdHlwZSkgewogICAgIHZh
ciBhcnIgPSBlbWl0dGVyLl9oYW5kbGVycyAmJiBlbWl0dGVyLl9oYW5kbGVyc1t0eXBlXTsKICAg
ICByZXR1cm4gYXJyICYmIGFyci5sZW5ndGggPiAwOwpAQCAtNzQ4MSw3ICs3NTIwLDcgQEAKCiAg
IC8vIFRIRSBFTkQKCi0gIENvZGVNaXJyb3IudmVyc2lvbiA9ICI0LjAuNCI7CisgIENvZGVNaXJy
b3IudmVyc2lvbiA9ICI0LjEuMCI7CgogICByZXR1cm4gQ29kZU1pcnJvcjsKIH0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1p
cnJvci9jc3MuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9FeHRlcm5h
bC9Db2RlTWlycm9yL2Nzcy5qcwppbmRleCAzNDI2NzMyLi5hMmI4MGRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL2Nz
cy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9FeHRlcm5hbC9D
b2RlTWlycm9yL2Nzcy5qcwpAQCAtOTIsNyArOTIsNyBAQCBDb2RlTWlycm9yLmRlZmluZU1vZGUo
ImNzcyIsIGZ1bmN0aW9uKGNvbmZpZywgcGFyc2VyQ29uZmlnKSB7CgogICBmdW5jdGlvbiB0b2tl
blBhcmVudGhlc2l6ZWQoc3RyZWFtLCBzdGF0ZSkgewogICAgIHN0cmVhbS5uZXh0KCk7IC8vIE11
c3QgYmUgJygnCi0gICAgaWYgKCFzdHJlYW0ubWF0Y2goL1xzKltcIlwnXS8sIGZhbHNlKSkKKyAg
ICBpZiAoIXN0cmVhbS5tYXRjaCgvXHMqW1wiXCcpXS8sIGZhbHNlKSkKICAgICAgIHN0YXRlLnRv
a2VuaXplID0gdG9rZW5TdHJpbmcoIikiKTsKICAgICBlbHNlCiAgICAgICBzdGF0ZS50b2tlbml6
ZSA9IG51bGw7CkBAIC00NTMsMTMgKzQ1MywxMyBAQCBDb2RlTWlycm9yLmRlZmluZU1vZGUoImNz
cyIsIGZ1bmN0aW9uKGNvbmZpZywgcGFyc2VyQ29uZmlnKSB7CiAgICAgLy8gU1ZHLXNwZWNpZmlj
CiAgICAgImNsaXAtcGF0aCIsICJjbGlwLXJ1bGUiLCAibWFzayIsICJlbmFibGUtYmFja2dyb3Vu
ZCIsICJmaWx0ZXIiLCAiZmxvb2QtY29sb3IiLAogICAgICJmbG9vZC1vcGFjaXR5IiwgImxpZ2h0
aW5nLWNvbG9yIiwgInN0b3AtY29sb3IiLCAic3RvcC1vcGFjaXR5IiwgInBvaW50ZXItZXZlbnRz
IiwKLSAgICAiY29sb3ItaW50ZXJwb2xhdGlvbiIsICJjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRl
cnMiLCAiY29sb3ItcHJvZmlsZSIsCisgICAgImNvbG9yLWludGVycG9sYXRpb24iLCAiY29sb3It
aW50ZXJwb2xhdGlvbi1maWx0ZXJzIiwKICAgICAiY29sb3ItcmVuZGVyaW5nIiwgImZpbGwiLCAi
ZmlsbC1vcGFjaXR5IiwgImZpbGwtcnVsZSIsICJpbWFnZS1yZW5kZXJpbmciLAogICAgICJtYXJr
ZXIiLCAibWFya2VyLWVuZCIsICJtYXJrZXItbWlkIiwgIm1hcmtlci1zdGFydCIsICJzaGFwZS1y
ZW5kZXJpbmciLCAic3Ryb2tlIiwKICAgICAic3Ryb2tlLWRhc2hhcnJheSIsICJzdHJva2UtZGFz
aG9mZnNldCIsICJzdHJva2UtbGluZWNhcCIsICJzdHJva2UtbGluZWpvaW4iLAogICAgICJzdHJv
a2UtbWl0ZXJsaW1pdCIsICJzdHJva2Utb3BhY2l0eSIsICJzdHJva2Utd2lkdGgiLCAidGV4dC1y
ZW5kZXJpbmciLAogICAgICJiYXNlbGluZS1zaGlmdCIsICJkb21pbmFudC1iYXNlbGluZSIsICJn
bHlwaC1vcmllbnRhdGlvbi1ob3Jpem9udGFsIiwKLSAgICAiZ2x5cGgtb3JpZW50YXRpb24tdmVy
dGljYWwiLCAia2VybmluZyIsICJ0ZXh0LWFuY2hvciIsICJ3cml0aW5nLW1vZGUiCisgICAgImds
eXBoLW9yaWVudGF0aW9uLXZlcnRpY2FsIiwgInRleHQtYW5jaG9yIiwgIndyaXRpbmctbW9kZSIK
ICAgXSwgcHJvcGVydHlLZXl3b3JkcyA9IGtleVNldChwcm9wZXJ0eUtleXdvcmRzXyk7CgogICB2
YXIgbm9uU3RhbmRhcmRQcm9wZXJ0eUtleXdvcmRzID0gWwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci9qYXZhc2NyaXB0
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1p
cnJvci9qYXZhc2NyaXB0LmpzCmluZGV4IDkzMThhYWIuLmRhZjEzOGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0V4dGVybmFsL0NvZGVNaXJyb3IvamF2
YXNjcmlwdC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9FeHRl
cm5hbC9Db2RlTWlycm9yL2phdmFzY3JpcHQuanMKQEAgLTM2Niw2ICszNjYsNyBAQCBDb2RlTWly
cm9yLmRlZmluZU1vZGUoImphdmFzY3JpcHQiLCBmdW5jdGlvbihjb25maWcsIHBhcnNlckNvbmZp
ZykgewogICAgIGlmICh0eXBlID09ICJvcGVyYXRvciIgfHwgdHlwZSA9PSAic3ByZWFkIikgcmV0
dXJuIGNvbnQobm9Db21tYSA/IGV4cHJlc3Npb25Ob0NvbW1hIDogZXhwcmVzc2lvbik7CiAgICAg
aWYgKHR5cGUgPT0gIlsiKSByZXR1cm4gY29udChwdXNobGV4KCJdIiksIGFycmF5TGl0ZXJhbCwg
cG9wbGV4LCBtYXliZW9wKTsKICAgICBpZiAodHlwZSA9PSAieyIpIHJldHVybiBjb250Q29tbWFz
ZXAob2JqcHJvcCwgIn0iLCBudWxsLCBtYXliZW9wKTsKKyAgICBpZiAodHlwZSA9PSAicXVhc2ki
KSB7IHJldHVybiBwYXNzKHF1YXNpLCBtYXliZW9wKTsgfQogICAgIHJldHVybiBjb250KCk7CiAg
IH0KICAgZnVuY3Rpb24gbWF5YmVleHByZXNzaW9uKHR5cGUpIHsKQEAgLTM5MCwyMSArMzkxLDIy
IEBAIENvZGVNaXJyb3IuZGVmaW5lTW9kZSgiamF2YXNjcmlwdCIsIGZ1bmN0aW9uKGNvbmZpZywg
cGFyc2VyQ29uZmlnKSB7CiAgICAgICBpZiAodmFsdWUgPT0gIj8iKSByZXR1cm4gY29udChleHBy
ZXNzaW9uLCBleHBlY3QoIjoiKSwgZXhwcik7CiAgICAgICByZXR1cm4gY29udChleHByKTsKICAg
ICB9Ci0gICAgaWYgKHR5cGUgPT0gInF1YXNpIikgeyBjeC5jYy5wdXNoKG1lKTsgcmV0dXJuIHF1
YXNpKHZhbHVlKTsgfQorICAgIGlmICh0eXBlID09ICJxdWFzaSIpIHsgcmV0dXJuIHBhc3MocXVh
c2ksIG1lKTsgfQogICAgIGlmICh0eXBlID09ICI7IikgcmV0dXJuOwogICAgIGlmICh0eXBlID09
ICIoIikgcmV0dXJuIGNvbnRDb21tYXNlcChleHByZXNzaW9uTm9Db21tYSwgIikiLCAiY2FsbCIs
IG1lKTsKICAgICBpZiAodHlwZSA9PSAiLiIpIHJldHVybiBjb250KHByb3BlcnR5LCBtZSk7CiAg
ICAgaWYgKHR5cGUgPT0gIlsiKSByZXR1cm4gY29udChwdXNobGV4KCJdIiksIG1heWJlZXhwcmVz
c2lvbiwgZXhwZWN0KCJdIiksIHBvcGxleCwgbWUpOwogICB9Ci0gIGZ1bmN0aW9uIHF1YXNpKHZh
bHVlKSB7Ci0gICAgaWYgKHZhbHVlLnNsaWNlKHZhbHVlLmxlbmd0aCAtIDIpICE9ICIkeyIpIHJl
dHVybiBjb250KCk7CisgIGZ1bmN0aW9uIHF1YXNpKHR5cGUsIHZhbHVlKSB7CisgICAgaWYgKHR5
cGUgIT0gInF1YXNpIikgcmV0dXJuIHBhc3MoKTsKKyAgICBpZiAodmFsdWUuc2xpY2UodmFsdWUu
bGVuZ3RoIC0gMikgIT0gIiR7IikgcmV0dXJuIGNvbnQocXVhc2kpOwogICAgIHJldHVybiBjb250
KGV4cHJlc3Npb24sIGNvbnRpbnVlUXVhc2kpOwogICB9CiAgIGZ1bmN0aW9uIGNvbnRpbnVlUXVh
c2kodHlwZSkgewogICAgIGlmICh0eXBlID09ICJ9IikgewogICAgICAgY3gubWFya2VkID0gInN0
cmluZy0yIjsKICAgICAgIGN4LnN0YXRlLnRva2VuaXplID0gdG9rZW5RdWFzaTsKLSAgICAgIHJl
dHVybiBjb250KCk7CisgICAgICByZXR1cm4gY29udChxdWFzaSk7CiAgICAgfQogICB9CiAgIGZ1
bmN0aW9uIGFycm93Qm9keSh0eXBlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL2xpdmVzY3JpcHQuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL2xpdmVz
Y3JpcHQuanMKaW5kZXggOTMyMmJhOC4uNzU2MTgxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci9saXZlc2NyaXB0Lmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0V4dGVybmFsL0NvZGVN
aXJyb3IvbGl2ZXNjcmlwdC5qcwpAQCAtMjQsNyArMjQsNyBAQAogICAgICAgICAgIGZvciAoaSQg
PSAwLCBsZW4kID0gbnIubGVuZ3RoOyBpJCA8IGxlbiQ7ICsraSQpIHsKICAgICAgICAgICAgIHIg
PSBucltpJF07CiAgICAgICAgICAgICBpZiAoci5yZWdleCAmJiAobSA9IHN0cmVhbS5tYXRjaChy
LnJlZ2V4KSkpIHsKLSAgICAgICAgICAgICAgc3RhdGUubmV4dCA9IHIubmV4dDsKKyAgICAgICAg
ICAgICAgc3RhdGUubmV4dCA9IHIubmV4dCB8fCBzdGF0ZS5uZXh0OwogICAgICAgICAgICAgICBy
ZXR1cm4gci50b2tlbjsKICAgICAgICAgICAgIH0KICAgICAgICAgICB9CkBAIC0yMDMsNyArMjAz
LDcgQEAKICAgICAgICAgbmV4dDogJ3N0YXJ0JwogICAgICAgfSwgewogICAgICAgICB0b2tlbjog
J3RleHQnLAotICAgICAgICByZWdleDogJy4nLAorICAgICAgICByZWdleDogJycsCiAgICAgICAg
IG5leHQ6ICdzdGFydCcKICAgICAgIH0KICAgICBdLApAQCAtMjY1LDExICsyNjUsMTEgQEAKICAg
ICBpZiAoQXJyYXkuaXNBcnJheShyKSkgewogICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IHIu
bGVuZ3RoOyBpIDwgbGVuOyArK2kpIHsKICAgICAgICAgdmFyIHJyID0gcltpXTsKLSAgICAgICAg
aWYgKHJyLnJlZ2V4KSB7CisgICAgICAgIGlmICh0eXBlb2YgcnIucmVnZXggPT09ICdzdHJpbmcn
KSB7CiAgICAgICAgICAgUnVsZXNbaWR4XVtpXS5yZWdleCA9IG5ldyBSZWdFeHAoJ14nICsgcnIu
cmVnZXgpOwogICAgICAgICB9CiAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChyLnJlZ2V4KSB7Cisg
ICAgfSBlbHNlIGlmICh0eXBlb2YgcnIucmVnZXggPT09ICdzdHJpbmcnKSB7CiAgICAgICBSdWxl
c1tpZHhdLnJlZ2V4ID0gbmV3IFJlZ0V4cCgnXicgKyByLnJlZ2V4KTsKICAgICB9CiAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0V4dGVybmFsL0Nv
ZGVNaXJyb3IvcnVubW9kZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0V4dGVybmFsL0NvZGVNaXJyb3IvcnVubW9kZS5qcwppbmRleCAzNTE4NDBlLi40NGMxN2IxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9FeHRlcm5hbC9D
b2RlTWlycm9yL3J1bm1vZGUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci9ydW5tb2RlLmpzCkBAIC01Nyw2ICs1Nyw3IEBAIENv
ZGVNaXJyb3IucnVuTW9kZSA9IGZ1bmN0aW9uKHN0cmluZywgbW9kZXNwZWMsIGNhbGxiYWNrLCBv
cHRpb25zKSB7CiAgIGZvciAodmFyIGkgPSAwLCBlID0gbGluZXMubGVuZ3RoOyBpIDwgZTsgKytp
KSB7CiAgICAgaWYgKGkpIGNhbGxiYWNrKCJcbiIpOwogICAgIHZhciBzdHJlYW0gPSBuZXcgQ29k
ZU1pcnJvci5TdHJpbmdTdHJlYW0obGluZXNbaV0pOworICAgIGlmICghc3RyZWFtLnN0cmluZyAm
JiBtb2RlLmJsYW5rTGluZSkgbW9kZS5ibGFua0xpbmUoKTsKICAgICB3aGlsZSAoIXN0cmVhbS5l
b2woKSkgewogICAgICAgdmFyIHN0eWxlID0gbW9kZS50b2tlbihzdHJlYW0sIHN0YXRlKTsKICAg
ICAgIGNhbGxiYWNrKHN0cmVhbS5jdXJyZW50KCksIHN0eWxlLCBpLCBzdHJlYW0uc3RhcnQsIHN0
YXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0V4
dGVybmFsL0NvZGVNaXJyb3IveG1sLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci94bWwuanMKaW5kZXggYjhjNDI5Ny4uMzI0OGM0NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRXh0ZXJuYWwv
Q29kZU1pcnJvci94bWwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvRXh0ZXJuYWwvQ29kZU1pcnJvci94bWwuanMKQEAgLTMyMSw3ICszMjEsMTAgQEAgQ29kZU1p
cnJvci5kZWZpbmVNb2RlKCJ4bWwiLCBmdW5jdGlvbihjb25maWcsIHBhcnNlckNvbmZpZykgewog
ICAgICAgdmFyIGNvbnRleHQgPSBzdGF0ZS5jb250ZXh0OwogICAgICAgLy8gSW5kZW50IG11bHRp
LWxpbmUgc3RyaW5ncyAoZS5nLiBjc3MpLgogICAgICAgaWYgKHN0YXRlLnRva2VuaXplLmlzSW5B
dHRyaWJ1dGUpIHsKLSAgICAgICAgcmV0dXJuIHN0YXRlLnN0cmluZ1N0YXJ0Q29sICsgMTsKKyAg
ICAgICAgaWYgKHN0YXRlLnRhZ1N0YXJ0ID09IHN0YXRlLmluZGVudGVkKQorICAgICAgICAgIHJl
dHVybiBzdGF0ZS5zdHJpbmdTdGFydENvbCArIDE7CisgICAgICAgIGVsc2UKKyAgICAgICAgICBy
ZXR1cm4gc3RhdGUuaW5kZW50ZWQgKyBpbmRlbnRVbml0OwogICAgICAgfQogICAgICAgaWYgKGNv
bnRleHQgJiYgY29udGV4dC5ub0luZGVudCkgcmV0dXJuIENvZGVNaXJyb3IuUGFzczsKICAgICAg
IGlmIChzdGF0ZS50b2tlbml6ZSAhPSBpblRhZyAmJiBzdGF0ZS50b2tlbml6ZSAhPSBpblRleHQp
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>