<?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>151089</bug_id>
          
          <creation_ts>2015-11-10 04:50:27 -0800</creation_ts>
          <short_desc>[Streams API] Fix style issues</short_desc>
          <delta_ts>2015-11-10 07:45: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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Xabier Rodríguez Calvar">calvaris</reporter>
          <assigned_to name="Xabier Rodríguez Calvar">calvaris</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1140739</commentid>
    <comment_count>0</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2015-11-10 04:50:27 -0800</bug_when>
    <thetext>[Streams API] Fix style issues</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140740</commentid>
    <comment_count>1</comment_count>
      <attachid>265167</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2015-11-10 04:52:24 -0800</bug_when>
    <thetext>Created attachment 265167
Patch

Inlined some things, var -&gt; const and let, removed some undefined parameters and returns, added missing use strict and other minor changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140745</commentid>
    <comment_count>2</comment_count>
      <attachid>265167</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-11-10 05:39:30 -0800</bug_when>
    <thetext>Comment on attachment 265167
Patch

Nice clean-up.
Use of bind() may not be safe.
Would you be able to land the patch without the bind changes.
Doing a quick check, bind seems already in use in WritableStream.
A follow-up should fix that. 

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

&gt; Source/WebCore/Modules/streams/ReadableStream.js:58
&gt; +    @Promise.prototype.@then.@call(@Promise.@resolve(@invokeOrNoop(underlyingSource, &quot;start&quot;, [this.@controller])), function() {

This line is rather hard to parse.
I would keep it as two different lines.

&gt; Source/WebCore/Modules/streams/ReadableStreamInternals.js:243
&gt; +    @Promise.prototype.@then.@call(@promiseInvokeOrNoop(stream.@underlyingSource, &quot;pull&quot;, [stream.@controller]), function() {

Ditto.

&gt; Source/WebCore/Modules/streams/WritableStreamInternals.js:112
&gt; +        @errorWritableStream.bind(stream)

Using bind may not be safe.
What if someone does Function.prototype.bind = evilFunction?

I would remove the change from this patch.
As a later patch and if that is worth it, @bind may be added and this change may be done.

&gt; Source/WebCore/Modules/streams/WritableStreamInternals.js:129
&gt; +        @errorWritableStream.bind(stream)

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140759</commentid>
    <comment_count>3</comment_count>
      <attachid>265175</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2015-11-10 06:47:20 -0800</bug_when>
    <thetext>Created attachment 265175
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140763</commentid>
    <comment_count>4</comment_count>
      <attachid>265175</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-10 07:45:21 -0800</bug_when>
    <thetext>Comment on attachment 265175
Patch for landing

Clearing flags on attachment: 265175

Committed r192246: &lt;http://trac.webkit.org/changeset/192246&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140764</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-10 07:45:25 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265167</attachid>
            <date>2015-11-10 04:52:24 -0800</date>
            <delta_ts>2015-11-10 06:47:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-151089-20151110135219.patch</filename>
            <type>text/plain</type>
            <size>20234</size>
            <attacher name="Xabier Rodríguez Calvar">calvaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyMjA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTYzYzBmZWEyNzM1M2Zm
ZDM5ZjYzODcwM2NmNDY1M2FiMTZjZTY4NS4uOTM1ZTdkYjFlYzAyYTM1MzRjYmY5MzYxNjFjYTM0
NmFlNzllY2EyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDU0IEBACiAyMDE1LTExLTEwICBYYWJp
ZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+CiAKKyAgICAgICAgW1N0
cmVhbXMgQVBJXSBGaXggc3R5bGUgaXNzdWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTEwODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbmxpbmVkIHNvbWUgdGhpbmdzLCBjb252ZXJ0ZWQgdmFyIGlu
dG8gbGV0IGFuZCBjb25zdCwgcmVtb3ZlZCBzb21lIHVuZGVmaW5lZCBwYXJhbWV0ZXJzIGFuZCBy
ZXR1cm5zLCBhZGRlZAorICAgICAgICBtaXNzaW5nICJ1c2Ugc3RyaWN0IiBjbGF1c2VzIGFuZCBv
dGhlciBtaW5vciBzdHlsZSBjaGFuZ2VzLgorCisgICAgICAgIEludGVybmFsIHJld29yaywgbm8g
bmV3IHRlc3RzIG5lZWRlZC4KKworICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0
cmVhbS5qczoKKyAgICAgICAgKGluaXRpYWxpemVSZWFkYWJsZVN0cmVhbSk6CisgICAgICAgICog
TW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5qczoKKyAgICAgICAgKGVu
cXVldWUpOgorICAgICAgICAoZXJyb3IpOgorICAgICAgICAoY2xvc2UpOgorICAgICAgICAqIE1v
ZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUludGVybmFscy5qczoKKyAgICAgICAgKHRlZVJl
YWRhYmxlU3RyZWFtKToKKyAgICAgICAgKHRlZVJlYWRhYmxlU3RyZWFtUHVsbEZ1bmN0aW9uKToK
KyAgICAgICAgKHRlZVJlYWRhYmxlU3RyZWFtQnJhbmNoMkNhbmNlbEZ1bmN0aW9uKToKKyAgICAg
ICAgKGVycm9yUmVhZGFibGVTdHJlYW0pOgorICAgICAgICAoZmluaXNoQ2xvc2luZ1JlYWRhYmxl
U3RyZWFtKToKKyAgICAgICAgKGNsb3NlUmVhZGFibGVTdHJlYW1SZWFkZXIpOgorICAgICAgICAo
ZW5xdWV1ZUluUmVhZGFibGVTdHJlYW0pOgorICAgICAgICAocmVhZEZyb21SZWFkYWJsZVN0cmVh
bVJlYWRlcik6CisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVy
LmpzOgorICAgICAgICAocmVsZWFzZUxvY2spOgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9T
dHJlYW1JbnRlcm5hbHMuanM6CisgICAgICAgIChpbnZva2VPck5vb3ApOgorICAgICAgICAocHJv
bWlzZUludm9rZU9yTm9vcCk6CisgICAgICAgIChwcm9taXNlSW52b2tlT3JGYWxsYmFja09yTm9v
cCk6CisgICAgICAgICh2YWxpZGF0ZUFuZE5vcm1hbGl6ZVF1ZXVpbmdTdHJhdGVneSk6CisgICAg
ICAgIChuZXdRdWV1ZSk6CisgICAgICAgIChkZXF1ZXVlVmFsdWUpOgorICAgICAgICAoZW5xdWV1
ZVZhbHVlV2l0aFNpemUpOgorICAgICAgICAocGVla1F1ZXVlVmFsdWUpOgorICAgICAgICAqIE1v
ZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbS5qczoKKyAgICAgICAgKGluaXRpYWxpemVXcml0
YWJsZVN0cmVhbSk6CisgICAgICAgIChhYm9ydCk6CisgICAgICAgIChjbG9zZSk6CisgICAgICAg
ICogTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtSW50ZXJuYWxzLmpzOgorICAgICAgICAo
c3luY1dyaXRhYmxlU3RyZWFtU3RhdGVXaXRoUXVldWUpOgorICAgICAgICAoZXJyb3JXcml0YWJs
ZVN0cmVhbSk6CisgICAgICAgIChjYWxsT3JTY2hlZHVsZVdyaXRhYmxlU3RyZWFtQWR2YW5jZVF1
ZXVlKToKKyAgICAgICAgKHdyaXRhYmxlU3RyZWFtQWR2YW5jZVF1ZXVlKToKKyAgICAgICAgKGNs
b3NlV3JpdGFibGVTdHJlYW0pOiBEZWxldGVkLgorCisyMDE1LTExLTEwICBYYWJpZXIgUm9kcmln
dWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+CisKICAgICAgICAgW1N0cmVhbXMgQVBJ
XSBTaGllbGQgcHJvbWlzZXMgd2hlbiBwcm90b3R5cGUgaXMgcmVwbGFjZWQgZnJvbSBhIHByb21p
c2UKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTAz
MwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVT
dHJlYW0uanMgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0u
anMKaW5kZXggZWE0MjNkOGM3M2JjZWQyMzYzZTNmZmVhYmQzNjZlN2JmYmYzZWFiYS4uZjhiOTkz
OWMwZjlhMzdmZGI1ZDQxNWE0MWZkMGVkNGRhNTMwMGRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5qcwpAQCAtNTQsOSArNTQsOCBAQCBm
dW5jdGlvbiBpbml0aWFsaXplUmVhZGFibGVTdHJlYW0odW5kZXJseWluZ1NvdXJjZSwgc3RyYXRl
Z3kpCiAgICAgdGhpcy5AY29udHJvbGxlciA9IG5ldyBAUmVhZGFibGVTdHJlYW1Db250cm9sbGVy
KHRoaXMpOwogICAgIHRoaXMuQHN0cmF0ZWd5ID0gQHZhbGlkYXRlQW5kTm9ybWFsaXplUXVldWlu
Z1N0cmF0ZWd5KHN0cmF0ZWd5LnNpemUsIHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmspOwogCi0gICAg
dmFyIHJlc3VsdCA9IEBpbnZva2VPck5vb3AodW5kZXJseWluZ1NvdXJjZSwgInN0YXJ0IiwgW3Ro
aXMuQGNvbnRyb2xsZXJdKTsKLSAgICB2YXIgX3RoaXMgPSB0aGlzOwotICAgIEBQcm9taXNlLnBy
b3RvdHlwZS5AdGhlbi5AY2FsbChAUHJvbWlzZS5AcmVzb2x2ZShyZXN1bHQpLCBmdW5jdGlvbigp
IHsKKyAgICBjb25zdCBfdGhpcyA9IHRoaXM7CisgICAgQFByb21pc2UucHJvdG90eXBlLkB0aGVu
LkBjYWxsKEBQcm9taXNlLkByZXNvbHZlKEBpbnZva2VPck5vb3AodW5kZXJseWluZ1NvdXJjZSwg
InN0YXJ0IiwgW3RoaXMuQGNvbnRyb2xsZXJdKSksIGZ1bmN0aW9uKCkgewogICAgICAgICBfdGhp
cy5Ac3RhcnRlZCA9IHRydWU7CiAgICAgICAgIEByZXF1ZXN0UmVhZGFibGVTdHJlYW1QdWxsKF90
aGlzKTsKICAgICB9LCBmdW5jdGlvbihlcnJvcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5qcyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuanMKaW5kZXgg
MGQ5OTgxYjFjNzM5NTQ1MjZlOGMzNmFmMDg2NGJiOGJlZWI0MDdiOS4uOWM4YzM0ZWE0YzQ4MTZi
OTdhZDQyOGUwMTJkNzI1M2UwYjE3Mzc2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5qcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmpzCkBAIC0zMiwx
NCArMzIsMTQgQEAgZnVuY3Rpb24gZW5xdWV1ZShjaHVuaykKICAgICBpZiAoIUBpc1JlYWRhYmxl
U3RyZWFtQ29udHJvbGxlcih0aGlzKSkKICAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkZ1
bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgb24gYSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIiKTsK
IAotICAgIHZhciBzdHJlYW0gPSB0aGlzLkBjb250cm9sbGVkUmVhZGFibGVTdHJlYW07CisgICAg
Y29uc3Qgc3RyZWFtID0gdGhpcy5AY29udHJvbGxlZFJlYWRhYmxlU3RyZWFtOwogICAgIGlmIChz
dHJlYW0uQHN0YXRlID09PSBAc3RyZWFtRXJyb3JlZCkKICAgICAgICAgdGhyb3cgc3RyZWFtLkBz
dG9yZWRFcnJvcjsKIAogICAgIGlmIChzdHJlYW0uQGNsb3NlUmVxdWVzdGVkKQogICAgICAgICB0
aHJvdyBuZXcgQFR5cGVFcnJvcigiUmVhZGFibGVTdHJlYW0gaXMgcmVxdWVzdGVkIHRvIGNsb3Nl
Iik7CiAKLSAgICByZXR1cm4gQGVucXVldWVJblJlYWRhYmxlU3RyZWFtKHN0cmVhbSwgY2h1bmsp
CisgICAgcmV0dXJuIEBlbnF1ZXVlSW5SZWFkYWJsZVN0cmVhbShzdHJlYW0sIGNodW5rKTsKIH0K
IAogZnVuY3Rpb24gZXJyb3IoZXJyb3IpCkBAIC00OSw3ICs0OSw3IEBAIGZ1bmN0aW9uIGVycm9y
KGVycm9yKQogICAgIGlmICghQGlzUmVhZGFibGVTdHJlYW1Db250cm9sbGVyKHRoaXMpKQogICAg
ICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiRnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBvbiBh
IFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlciIpOwogCi0gICAgdmFyIHN0cmVhbSA9IHRoaXMuQGNv
bnRyb2xsZWRSZWFkYWJsZVN0cmVhbTsKKyAgICBjb25zdCBzdHJlYW0gPSB0aGlzLkBjb250cm9s
bGVkUmVhZGFibGVTdHJlYW07CiAgICAgaWYgKHN0cmVhbS5Ac3RhdGUgIT09IEBzdHJlYW1SZWFk
YWJsZSkKICAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIlJlYWFibGVTdHJlYW0gaXMgbm90
IHJlYWRhYmxlIik7CiAKQEAgLTYzLDcgKzYzLDcgQEAgZnVuY3Rpb24gY2xvc2UoKQogICAgIGlm
ICghQGlzUmVhZGFibGVTdHJlYW1Db250cm9sbGVyKHRoaXMpKQogICAgICAgICB0aHJvdyBuZXcg
QFR5cGVFcnJvcigiRnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBvbiBhIFJlYWRhYmxlU3RyZWFt
Q29udHJvbGxlciIpOwogCi0gICAgdmFyIHN0cmVhbSA9IHRoaXMuQGNvbnRyb2xsZWRSZWFkYWJs
ZVN0cmVhbTsKKyAgICBjb25zdCBzdHJlYW0gPSB0aGlzLkBjb250cm9sbGVkUmVhZGFibGVTdHJl
YW07CiAgICAgaWYgKHN0cmVhbS5AY2xvc2VSZXF1ZXN0ZWQpCiAgICAgICAgIHRocm93IG5ldyBA
VHlwZUVycm9yKCJSZWFkYWJsZVN0cmVhbSBpcyBhbHJlYWR5IHJlcXVlc3RlZCB0byBjbG9zZSIp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVT
dHJlYW1JbnRlcm5hbHMuanMgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFi
bGVTdHJlYW1JbnRlcm5hbHMuanMKaW5kZXggOWIyNjA4MDk3ZDc5YzljOTlmNjdkODAzYmJlY2Yy
MmZjMmU1MjcwZC4uYzM4NmQzOTlmYjJlYjA3OTRiMTFhN2MyOWQwYmFjYzQwMThiZWZiNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtSW50
ZXJuYWxzLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0
cmVhbUludGVybmFscy5qcwpAQCAtNzksOSArNzksOSBAQCBmdW5jdGlvbiB0ZWVSZWFkYWJsZVN0
cmVhbShzdHJlYW0sIHNob3VsZENsb25lKQogICAgIEBhc3NlcnQoQGlzUmVhZGFibGVTdHJlYW0o
c3RyZWFtKSk7CiAgICAgQGFzc2VydCh0eXBlb2Yoc2hvdWxkQ2xvbmUpID09PSAiYm9vbGVhbiIp
OwogCi0gICAgbGV0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoKTsKKyAgICBjb25zdCByZWFk
ZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKCk7CiAKLSAgICBsZXQgdGVlU3RhdGUgPSB7CisgICAgY29u
c3QgdGVlU3RhdGUgPSB7CiAgICAgICAgIGNsb3NlZE9yRXJyb3JlZDogZmFsc2UsCiAgICAgICAg
IGNhbmNlbGVkMTogZmFsc2UsCiAgICAgICAgIGNhbmNlbGVkMjogZmFsc2UsCkBAIC05MSwyMCAr
OTEsMTYgQEAgZnVuY3Rpb24gdGVlUmVhZGFibGVTdHJlYW0oc3RyZWFtLCBzaG91bGRDbG9uZSkK
IAogICAgIHRlZVN0YXRlLmNhbmNlbFByb21pc2VDYXBhYmlsaXR5ID0gQG5ld1Byb21pc2VDYXBh
YmlsaXR5KEBJbnRlcm5hbFByb21pc2UpOwogCi0gICAgbGV0IHB1bGxGdW5jdGlvbiA9IEB0ZWVS
ZWFkYWJsZVN0cmVhbVB1bGxGdW5jdGlvbih0ZWVTdGF0ZSwgcmVhZGVyLCBzaG91bGRDbG9uZSk7
CisgICAgY29uc3QgcHVsbEZ1bmN0aW9uID0gQHRlZVJlYWRhYmxlU3RyZWFtUHVsbEZ1bmN0aW9u
KHRlZVN0YXRlLCByZWFkZXIsIHNob3VsZENsb25lKTsKIAotICAgIGxldCB1bmRlcmx5aW5nU291
cmNlMSA9IHsKKyAgICBjb25zdCBicmFuY2gxID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKICAgICAg
ICAgInB1bGwiOiBwdWxsRnVuY3Rpb24sCiAgICAgICAgICJjYW5jZWwiOiBAdGVlUmVhZGFibGVT
dHJlYW1CcmFuY2gxQ2FuY2VsRnVuY3Rpb24odGVlU3RhdGUsIHN0cmVhbSkKLSAgICB9OwotCi0g
ICAgbGV0IHVuZGVybHlpbmdTb3VyY2UyID0geworICAgIH0pOworICAgIGNvbnN0IGJyYW5jaDIg
PSBuZXcgUmVhZGFibGVTdHJlYW0oewogICAgICAgICAicHVsbCI6IHB1bGxGdW5jdGlvbiwKICAg
ICAgICAgImNhbmNlbCI6IEB0ZWVSZWFkYWJsZVN0cmVhbUJyYW5jaDJDYW5jZWxGdW5jdGlvbih0
ZWVTdGF0ZSwgc3RyZWFtKQotICAgIH07Ci0KLSAgICBsZXQgYnJhbmNoMSA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSh1bmRlcmx5aW5nU291cmNlMSk7Ci0gICAgbGV0IGJyYW5jaDIgPSBuZXcgUmVhZGFi
bGVTdHJlYW0odW5kZXJseWluZ1NvdXJjZTIpOworICAgIH0pOwogCiAgICAgQFByb21pc2UucHJv
dG90eXBlLkBjYXRjaC5AY2FsbChyZWFkZXIuY2xvc2VkLCBmdW5jdGlvbihlKSB7CiAgICAgICAg
IGlmICh0ZWVTdGF0ZS5jbG9zZWRPckVycm9yZWQpCkBAIC0xMjMsNiArMTE5LDggQEAgZnVuY3Rp
b24gdGVlUmVhZGFibGVTdHJlYW0oc3RyZWFtLCBzaG91bGRDbG9uZSkKIAogZnVuY3Rpb24gdGVl
UmVhZGFibGVTdHJlYW1QdWxsRnVuY3Rpb24odGVlU3RhdGUsIHJlYWRlciwgc2hvdWxkQ2xvbmUp
CiB7CisgICAgInVzZSBzdHJpY3QiOworCiAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgewogICAgICAg
ICBAUHJvbWlzZS5wcm90b3R5cGUuQHRoZW4uQGNhbGwocmVhZGVyLnJlYWQoKSwgZnVuY3Rpb24o
cmVzdWx0KSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0LmRvbmUgJiYgIXRlZVN0YXRlLmNsb3Nl
ZE9yRXJyb3JlZCkgewpAQCAtMTQ2LDYgKzE0NCw4IEBAIGZ1bmN0aW9uIHRlZVJlYWRhYmxlU3Ry
ZWFtUHVsbEZ1bmN0aW9uKHRlZVN0YXRlLCByZWFkZXIsIHNob3VsZENsb25lKQogCiBmdW5jdGlv
biB0ZWVSZWFkYWJsZVN0cmVhbUJyYW5jaDFDYW5jZWxGdW5jdGlvbih0ZWVTdGF0ZSwgc3RyZWFt
KQogeworICAgICJ1c2Ugc3RyaWN0IjsKKwogICAgIHJldHVybiBmdW5jdGlvbihyKSB7CiAgICAg
ICAgIHRlZVN0YXRlLmNhbmNlbGVkMSA9IHRydWU7CiAgICAgICAgIHRlZVN0YXRlLnJlYXNvbjEg
PSByOwpAQCAtMTYwLDYgKzE2MCw4IEBAIGZ1bmN0aW9uIHRlZVJlYWRhYmxlU3RyZWFtQnJhbmNo
MUNhbmNlbEZ1bmN0aW9uKHRlZVN0YXRlLCBzdHJlYW0pCiAKIGZ1bmN0aW9uIHRlZVJlYWRhYmxl
U3RyZWFtQnJhbmNoMkNhbmNlbEZ1bmN0aW9uKHRlZVN0YXRlLCBzdHJlYW0pCiB7CisgICAgInVz
ZSBzdHJpY3QiOworCiAgICAgcmV0dXJuIGZ1bmN0aW9uKHIpIHsKICAgICAgICAgdGVlU3RhdGUu
Y2FuY2VsZWQyID0gdHJ1ZTsKICAgICAgICAgdGVlU3RhdGUucmVhc29uMiA9IHI7CkBAIC0yMDQs
MTAgKzIwNiwxMCBAQCBmdW5jdGlvbiBlcnJvclJlYWRhYmxlU3RyZWFtKHN0cmVhbSwgZXJyb3Ip
CiAKICAgICBpZiAoIXN0cmVhbS5AcmVhZGVyKQogICAgICAgICByZXR1cm47Ci0gICAgdmFyIHJl
YWRlciA9IHN0cmVhbS5AcmVhZGVyOworICAgIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5AcmVhZGVy
OwogCi0gICAgdmFyIHJlcXVlc3RzID0gcmVhZGVyLkByZWFkUmVxdWVzdHM7Ci0gICAgZm9yICh2
YXIgaW5kZXggPSAwLCBsZW5ndGggPSByZXF1ZXN0cy5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyAr
K2luZGV4KQorICAgIGNvbnN0IHJlcXVlc3RzID0gcmVhZGVyLkByZWFkUmVxdWVzdHM7CisgICAg
Zm9yIChsZXQgaW5kZXggPSAwLCBsZW5ndGggPSByZXF1ZXN0cy5sZW5ndGg7IGluZGV4IDwgbGVu
Z3RoOyArK2luZGV4KQogICAgICAgICByZXF1ZXN0c1tpbmRleF0uQHJlamVjdC5AY2FsbCh1bmRl
ZmluZWQsIGVycm9yKTsKICAgICByZWFkZXIuQHJlYWRSZXF1ZXN0cyA9IFtdOwogCkBAIC0yMzgs
OCArMjQwLDcgQEAgZnVuY3Rpb24gcmVxdWVzdFJlYWRhYmxlU3RyZWFtUHVsbChzdHJlYW0pCiAK
ICAgICBzdHJlYW0uQHB1bGxpbmcgPSB0cnVlOwogCi0gICAgdmFyIHByb21pc2UgPSBAcHJvbWlz
ZUludm9rZU9yTm9vcChzdHJlYW0uQHVuZGVybHlpbmdTb3VyY2UsICJwdWxsIiwgW3N0cmVhbS5A
Y29udHJvbGxlcl0pOwotICAgIEBQcm9taXNlLnByb3RvdHlwZS5AdGhlbi5AY2FsbChwcm9taXNl
LCBmdW5jdGlvbigpIHsKKyAgICBAUHJvbWlzZS5wcm90b3R5cGUuQHRoZW4uQGNhbGwoQHByb21p
c2VJbnZva2VPck5vb3Aoc3RyZWFtLkB1bmRlcmx5aW5nU291cmNlLCAicHVsbCIsIFtzdHJlYW0u
QGNvbnRyb2xsZXJdKSwgZnVuY3Rpb24oKSB7CiAgICAgICAgIHN0cmVhbS5AcHVsbGluZyA9IGZh
bHNlOwogICAgICAgICBpZiAoc3RyZWFtLkBwdWxsQWdhaW4pIHsKICAgICAgICAgICAgIHN0cmVh
bS5AcHVsbEFnYWluID0gZmFsc2U7CkBAIC0yOTIsNyArMjkzLDcgQEAgZnVuY3Rpb24gZmluaXNo
Q2xvc2luZ1JlYWRhYmxlU3RyZWFtKHN0cmVhbSkKIAogICAgIEBhc3NlcnQoc3RyZWFtLkBzdGF0
ZSA9PT0gIEBzdHJlYW1SZWFkYWJsZSk7CiAgICAgc3RyZWFtLkBzdGF0ZSA9IEBzdHJlYW1DbG9z
ZWQ7Ci0gICAgdmFyIHJlYWRlciA9IHN0cmVhbS5AcmVhZGVyOworICAgIGNvbnN0IHJlYWRlciA9
IHN0cmVhbS5AcmVhZGVyOwogICAgIGlmIChyZWFkZXIpCiAgICAgICAgIEBjbG9zZVJlYWRhYmxl
U3RyZWFtUmVhZGVyKHJlYWRlcik7CiB9CkBAIC0zMTQsMTMgKzMxNSwxMyBAQCBmdW5jdGlvbiBj
bG9zZVJlYWRhYmxlU3RyZWFtUmVhZGVyKHJlYWRlcikKIHsKICAgICAidXNlIHN0cmljdCI7CiAK
LSAgICB2YXIgcmVxdWVzdHMgPSByZWFkZXIuQHJlYWRSZXF1ZXN0czsKLSAgICBmb3IgKHZhciBp
bmRleCA9IDAsIGxlbmd0aCA9IHJlcXVlc3RzLmxlbmd0aDsgaW5kZXggPCBsZW5ndGg7ICsraW5k
ZXgpCisgICAgY29uc3QgcmVxdWVzdHMgPSByZWFkZXIuQHJlYWRSZXF1ZXN0czsKKyAgICBmb3Ig
KGxldCBpbmRleCA9IDAsIGxlbmd0aCA9IHJlcXVlc3RzLmxlbmd0aDsgaW5kZXggPCBsZW5ndGg7
ICsraW5kZXgpCiAgICAgICAgIHJlcXVlc3RzW2luZGV4XS5AcmVzb2x2ZS5AY2FsbCh1bmRlZmlu
ZWQsIHt2YWx1ZTp1bmRlZmluZWQsIGRvbmU6IHRydWV9KTsKICAgICByZWFkZXIuQHJlYWRSZXF1
ZXN0cyA9IFtdOwogICAgIEByZWxlYXNlUmVhZGFibGVTdHJlYW1SZWFkZXIocmVhZGVyKTsKICAg
ICByZWFkZXIuQHN0YXRlID0gQHN0cmVhbUNsb3NlZDsKLSAgICByZWFkZXIuQGNsb3NlZFByb21p
c2VDYXBhYmlsaXR5LkByZXNvbHZlLkBjYWxsKHVuZGVmaW5lZCk7CisgICAgcmVhZGVyLkBjbG9z
ZWRQcm9taXNlQ2FwYWJpbGl0eS5AcmVzb2x2ZS5AY2FsbCgpOwogfQogCiBmdW5jdGlvbiBlbnF1
ZXVlSW5SZWFkYWJsZVN0cmVhbShzdHJlYW0sIGNodW5rKQpAQCAtMzMwLDE4ICszMzEsMTggQEAg
ZnVuY3Rpb24gZW5xdWV1ZUluUmVhZGFibGVTdHJlYW0oc3RyZWFtLCBjaHVuaykKICAgICBAYXNz
ZXJ0KCFzdHJlYW0uQGNsb3NlUmVxdWVzdGVkKTsKICAgICBAYXNzZXJ0KHN0cmVhbS5Ac3RhdGUg
IT09IEBzdHJlYW1FcnJvcmVkKTsKICAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHN0cmVhbUNs
b3NlZCkKLSAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKKyAgICAgICAgcmV0dXJuOwogICAgIGlm
IChAaXNSZWFkYWJsZVN0cmVhbUxvY2tlZChzdHJlYW0pICYmIHN0cmVhbS5AcmVhZGVyLkByZWFk
UmVxdWVzdHMubGVuZ3RoKSB7CiAgICAgICAgIHN0cmVhbS5AcmVhZGVyLkByZWFkUmVxdWVzdHMu
c2hpZnQoKS5AcmVzb2x2ZS5AY2FsbCh1bmRlZmluZWQsIHt2YWx1ZTogY2h1bmssIGRvbmU6IGZh
bHNlfSk7CiAgICAgICAgIEByZXF1ZXN0UmVhZGFibGVTdHJlYW1QdWxsKHN0cmVhbSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgdHJ5IHsKLSAgICAgICAgdmFyIHNpemUgPSAxOworICAg
ICAgICBsZXQgc2l6ZSA9IDE7CiAgICAgICAgIGlmIChzdHJlYW0uQHN0cmF0ZWd5LnNpemUpIHsK
ICAgICAgICAgICAgIHNpemUgPSBOdW1iZXIoc3RyZWFtLkBzdHJhdGVneS5zaXplKGNodW5rKSk7
CiAgICAgICAgICAgICBpZiAoTnVtYmVyLmlzTmFOKHNpemUpIHx8IHNpemUgPT09ICtJbmZpbml0
eSB8fCBzaXplIDwgMCkKLSAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQ2h1
bmsgc2l6ZSBpcyBub3QgdmFsaWQiKTsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQFJhbmdl
RXJyb3IoIkNodW5rIHNpemUgaXMgbm90IHZhbGlkIik7CiAgICAgICAgIH0KICAgICAgICAgQGVu
cXVldWVWYWx1ZVdpdGhTaXplKHN0cmVhbS5AcXVldWUsIGNodW5rLCBzaXplKTsKICAgICB9CkBA
IC0zNjIsMTYgKzM2MywxNiBAQCBmdW5jdGlvbiByZWFkRnJvbVJlYWRhYmxlU3RyZWFtUmVhZGVy
KHJlYWRlcikKICAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZWplY3QocmVhZGVyLkBzdG9yZWRF
cnJvcik7CiAgICAgQGFzc2VydCghIXJlYWRlci5Ab3duZXJSZWFkYWJsZVN0cmVhbSk7CiAgICAg
QGFzc2VydChyZWFkZXIuQG93bmVyUmVhZGFibGVTdHJlYW0uQHN0YXRlID09PSBAc3RyZWFtUmVh
ZGFibGUpOwotICAgIHZhciBzdHJlYW0gPSByZWFkZXIuQG93bmVyUmVhZGFibGVTdHJlYW07Cisg
ICAgY29uc3Qgc3RyZWFtID0gcmVhZGVyLkBvd25lclJlYWRhYmxlU3RyZWFtOwogICAgIGlmIChz
dHJlYW0uQHF1ZXVlLmNvbnRlbnQubGVuZ3RoKSB7Ci0gICAgICAgIHZhciBjaHVuayA9IEBkZXF1
ZXVlVmFsdWUoc3RyZWFtLkBxdWV1ZSk7CisgICAgICAgIGNvbnN0IGNodW5rID0gQGRlcXVldWVW
YWx1ZShzdHJlYW0uQHF1ZXVlKTsKICAgICAgICAgaWYgKCFzdHJlYW0uQGNsb3NlUmVxdWVzdGVk
KQogICAgICAgICAgICAgQHJlcXVlc3RSZWFkYWJsZVN0cmVhbVB1bGwoc3RyZWFtKTsKICAgICAg
ICAgZWxzZSBpZiAoIXN0cmVhbS5AcXVldWUuY29udGVudC5sZW5ndGgpCiAgICAgICAgICAgICBA
ZmluaXNoQ2xvc2luZ1JlYWRhYmxlU3RyZWFtKHN0cmVhbSk7CiAgICAgICAgIHJldHVybiBAUHJv
bWlzZS5AcmVzb2x2ZSh7dmFsdWU6IGNodW5rLCBkb25lOiBmYWxzZX0pOwogICAgIH0KLSAgICB2
YXIgcmVhZFByb21pc2VDYXBhYmlsaXR5ID0gQG5ld1Byb21pc2VDYXBhYmlsaXR5KEBQcm9taXNl
KTsKKyAgICBjb25zdCByZWFkUHJvbWlzZUNhcGFiaWxpdHkgPSBAbmV3UHJvbWlzZUNhcGFiaWxp
dHkoQFByb21pc2UpOwogICAgIHJlYWRlci5AcmVhZFJlcXVlc3RzLnB1c2gocmVhZFByb21pc2VD
YXBhYmlsaXR5KTsKICAgICBAcmVxdWVzdFJlYWRhYmxlU3RyZWFtUHVsbChzdHJlYW0pOwogICAg
IHJldHVybiByZWFkUHJvbWlzZUNhcGFiaWxpdHkuQHByb21pc2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuanMgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuanMKaW5kZXgg
NzFlMTBlNjQwMTlkODY4MzQwZTRiMjM0OTU1MTFhMzgwZTY4YjlmZC4uN2E4ZTYzZTI0OTFjYmIw
MDE0MDFiNzJhMGQ4MmMwYWU2YTA0NjMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmpzCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5qcwpAQCAtNjQsNyArNjQsNyBA
QCBmdW5jdGlvbiByZWxlYXNlTG9jaygpCiAgICAgICAgICByZXR1cm47CiAKICAgICBpZiAodGhp
cy5AcmVhZFJlcXVlc3RzLmxlbmd0aCkKLSAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoKTsK
KyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIlRoZXJlIGFyZSBzdGlsbCBwZW5kaW5nIHJl
YWQgcmVxdWVzdHMsIGNhbm5vdCByZWxlYXNlIHRoZSBsb2NrIik7CiAKICAgICBAY2xvc2VSZWFk
YWJsZVN0cmVhbVJlYWRlcih0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3RyZWFtcy9TdHJlYW1JbnRlcm5hbHMuanMgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3N0cmVhbXMvU3RyZWFtSW50ZXJuYWxzLmpzCmluZGV4IGNiYzFiMjE0NDZjNTUzNTc1ZmE5YzUw
YTZiMDhjMGE3NmNjNjM4YjUuLmZjZDhjOTk1NzkwMTgzYjM2NmExMmI2NzgxMzQwNmJiN2VmMmY0
NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9TdHJlYW1JbnRl
cm5hbHMuanMKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1N0cmVhbUludGVy
bmFscy5qcwpAQCAtMzEsNyArMzEsNyBAQCBmdW5jdGlvbiBpbnZva2VPck5vb3Aob2JqZWN0LCBr
ZXksIGFyZ3MpCiB7CiAgICAgInVzZSBzdHJpY3QiOwogCi0gICAgdmFyIG1ldGhvZCA9IG9iamVj
dFtrZXldOworICAgIGNvbnN0IG1ldGhvZCA9IG9iamVjdFtrZXldOwogICAgIGlmICh0eXBlb2Yg
bWV0aG9kID09PSAidW5kZWZpbmVkIikKICAgICAgICAgcmV0dXJuOwogICAgIHJldHVybiBtZXRo
b2QuQGFwcGx5KG9iamVjdCwgYXJncyk7CkBAIC00MiwxMSArNDIsMTAgQEAgZnVuY3Rpb24gcHJv
bWlzZUludm9rZU9yTm9vcChvYmplY3QsIGtleSwgYXJncykKICAgICAidXNlIHN0cmljdCI7CiAK
ICAgICB0cnkgewotICAgICAgICB2YXIgbWV0aG9kID0gb2JqZWN0W2tleV07CisgICAgICAgIGNv
bnN0IG1ldGhvZCA9IG9iamVjdFtrZXldOwogICAgICAgICBpZiAodHlwZW9mIG1ldGhvZCA9PT0g
InVuZGVmaW5lZCIpCiAgICAgICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlc29sdmUoKTsKLSAg
ICAgICAgdmFyIHJlc3VsdCA9IG1ldGhvZC5AYXBwbHkob2JqZWN0LCBhcmdzKTsKLSAgICAgICAg
cmV0dXJuIEBQcm9taXNlLkByZXNvbHZlKHJlc3VsdCk7CisgICAgICAgIHJldHVybiBAUHJvbWlz
ZS5AcmVzb2x2ZShtZXRob2QuQGFwcGx5KG9iamVjdCwgYXJncykpOwogICAgIH0KICAgICBjYXRj
aChlcnJvcikgewogICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdChlcnJvcik7CkBAIC02
Miw4ICs2MSw3IEBAIGZ1bmN0aW9uIHByb21pc2VJbnZva2VPckZhbGxiYWNrT3JOb29wKG9iamVj
dCwga2V5MSwgYXJnczEsIGtleTIsIGFyZ3MyKQogICAgICAgICBjb25zdCBtZXRob2QgPSBvYmpl
Y3Rba2V5MV07CiAgICAgICAgIGlmICh0eXBlb2YgbWV0aG9kID09PSAidW5kZWZpbmVkIikKICAg
ICAgICAgICAgIHJldHVybiBAcHJvbWlzZUludm9rZU9yTm9vcChvYmplY3QsIGtleTIsIGFyZ3My
KTsKLSAgICAgICAgY29uc3QgcmVzdWx0ID0gbWV0aG9kLkBhcHBseShvYmplY3QsIGFyZ3MxKTsK
LSAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZXNvbHZlKHJlc3VsdCk7CisgICAgICAgIHJldHVy
biBAUHJvbWlzZS5AcmVzb2x2ZShtZXRob2QuQGFwcGx5KG9iamVjdCwgYXJnczEpKTsKICAgICB9
CiAgICAgY2F0Y2goZXJyb3IpIHsKICAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZWplY3QoZXJy
b3IpOwpAQCAtNzcsNyArNzUsNyBAQCBmdW5jdGlvbiB2YWxpZGF0ZUFuZE5vcm1hbGl6ZVF1ZXVp
bmdTdHJhdGVneShzaXplLCBoaWdoV2F0ZXJNYXJrKQogICAgIGlmIChzaXplICE9PSB1bmRlZmlu
ZWQgJiYgdHlwZW9mIHNpemUgIT09ICJmdW5jdGlvbiIpCiAgICAgICAgIHRocm93IG5ldyBAVHlw
ZUVycm9yKCJzaXplIHBhcmFtZXRlciBtdXN0IGJlIGEgZnVuY3Rpb24iKTsKIAotICAgIHZhciBu
b3JtYWxpemVkU3RyYXRlZ3kgPSB7IH07CisgICAgY29uc3Qgbm9ybWFsaXplZFN0cmF0ZWd5ID0g
eyB9OwogCiAgICAgbm9ybWFsaXplZFN0cmF0ZWd5LnNpemUgPSBzaXplOwogICAgIG5vcm1hbGl6
ZWRTdHJhdGVneS5oaWdoV2F0ZXJNYXJrID0gTnVtYmVyKGhpZ2hXYXRlck1hcmspOwpAQCAtOTIs
NiArOTAsOCBAQCBmdW5jdGlvbiB2YWxpZGF0ZUFuZE5vcm1hbGl6ZVF1ZXVpbmdTdHJhdGVneShz
aXplLCBoaWdoV2F0ZXJNYXJrKQogCiBmdW5jdGlvbiBuZXdRdWV1ZSgpCiB7CisgICAgInVzZSBz
dHJpY3QiOworCiAgICAgcmV0dXJuIHsgY29udGVudDogW10sIHNpemU6IDAgfTsKIH0KIApAQCAt
OTksMjQgKzk5LDI2IEBAIGZ1bmN0aW9uIGRlcXVldWVWYWx1ZShxdWV1ZSkKIHsKICAgICAidXNl
IHN0cmljdCI7CiAKLSAgICB2YXIgcmVjb3JkID0gcXVldWUuY29udGVudC5zaGlmdCgpOworICAg
IGNvbnN0IHJlY29yZCA9IHF1ZXVlLmNvbnRlbnQuc2hpZnQoKTsKICAgICBxdWV1ZS5zaXplIC09
IHJlY29yZC5zaXplOwogICAgIHJldHVybiByZWNvcmQudmFsdWU7CiB9CiAKIGZ1bmN0aW9uIGVu
cXVldWVWYWx1ZVdpdGhTaXplKHF1ZXVlLCB2YWx1ZSwgc2l6ZSkKIHsKKyAgICAidXNlIHN0cmlj
dCI7CisKICAgICBzaXplID0gTnVtYmVyKHNpemUpOwogICAgIGlmIChOdW1iZXIuaXNOYU4oc2l6
ZSkgfHwgIU51bWJlci5pc0Zpbml0ZShzaXplKSB8fCBzaXplIDwgMCkKICAgICAgICAgdGhyb3cg
bmV3IEBSYW5nZUVycm9yKCJzaXplIGhhcyBhbiBpbmNvcnJlY3QgdmFsdWUiKTsKICAgICBxdWV1
ZS5jb250ZW50LnB1c2goeyB2YWx1ZTogdmFsdWUsIHNpemU6IHNpemUgfSk7CiAgICAgcXVldWUu
c2l6ZSArPSBzaXplOwotCi0gICAgcmV0dXJuIHVuZGVmaW5lZDsKIH0KIAogZnVuY3Rpb24gcGVl
a1F1ZXVlVmFsdWUocXVldWUpCiB7CisgICAgInVzZSBzdHJpY3QiOworCiAgICAgQGFzc2VydChx
dWV1ZS5jb250ZW50Lmxlbmd0aCA+IDApOwogCiAgICAgcmV0dXJuIHF1ZXVlLmNvbnRlbnRbMF0u
dmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvV3JpdGFi
bGVTdHJlYW0uanMgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJl
YW0uanMKaW5kZXggZjU1ZmU3ZDZmNjFkMTI3MGNmZTRmMGQ0NzVlODQ1YmE2YzI5ZGZiOS4uMjM5
MDc4YThjMmYxM2ZhNjhlMTYyYTAyZjZiNWE2NmIxMjE2NWQ1ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtLmpzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbS5qcwpAQCAtNTMsMTAgKzUzLDkg
QEAgZnVuY3Rpb24gaW5pdGlhbGl6ZVdyaXRhYmxlU3RyZWFtKHVuZGVybHlpbmdTaW5rLCBzdHJh
dGVneSkKIAogICAgIEBzeW5jV3JpdGFibGVTdHJlYW1TdGF0ZVdpdGhRdWV1ZSh0aGlzKTsKIAot
ICAgIHZhciBlcnJvciA9IEBlcnJvcldyaXRhYmxlU3RyZWFtLmJpbmQodGhpcyk7Ci0gICAgdmFy
IHN0YXJ0UmVzdWx0ID0gQGludm9rZU9yTm9vcCh1bmRlcmx5aW5nU2luaywgInN0YXJ0IiwgW2Vy
cm9yXSk7Ci0gICAgdGhpcy5Ac3RhcnRlZFByb21pc2UgPSBAUHJvbWlzZS5AcmVzb2x2ZShzdGFy
dFJlc3VsdCk7Ci0gICAgdmFyIF90aGlzID0gdGhpczsKKyAgICBjb25zdCBlcnJvciA9IEBlcnJv
cldyaXRhYmxlU3RyZWFtLmJpbmQodGhpcyk7CisgICAgdGhpcy5Ac3RhcnRlZFByb21pc2UgPSBA
UHJvbWlzZS5AcmVzb2x2ZShAaW52b2tlT3JOb29wKHVuZGVybHlpbmdTaW5rLCAic3RhcnQiLCBb
ZXJyb3JdKSk7CisgICAgY29uc3QgX3RoaXMgPSB0aGlzOwogICAgIEBQcm9taXNlLnByb3RvdHlw
ZS5AdGhlbi5AY2FsbCh0aGlzLkBzdGFydGVkUHJvbWlzZSwgZnVuY3Rpb24oKSB7CiAgICAgICAg
IF90aGlzLkBzdGFydGVkID0gdHJ1ZTsKICAgICAgICAgX3RoaXMuQHN0YXJ0ZWRQcm9taXNlID0g
dW5kZWZpbmVkOwpAQCAtNzgsNyArNzcsNyBAQCBmdW5jdGlvbiBhYm9ydChyZWFzb24pCiAgICAg
aWYgKHRoaXMuQHN0YXRlID09PSBAc3RyZWFtRXJyb3JlZCkKICAgICAgICAgcmV0dXJuIEBQcm9t
aXNlLkByZWplY3QodGhpcy5Ac3RvcmVkRXJyb3IpOwogCi0gICAgQGVycm9yV3JpdGFibGVTdHJl
YW0uQGFwcGx5KHRoaXMsIFtyZWFzb25dKTsKKyAgICBAZXJyb3JXcml0YWJsZVN0cmVhbS5AY2Fs
bCh0aGlzLCByZWFzb24pOwogCiAgICAgY29uc3Qgc2lua0Fib3J0UHJvbWlzZSA9IEBwcm9taXNl
SW52b2tlT3JGYWxsYmFja09yTm9vcCh0aGlzLkB1bmRlcmx5aW5nU2luaywgImFib3J0IiwgW3Jl
YXNvbl0sICJjbG9zZSIsIFtdKTsKIApAQCAtOTksNyArOTgsNyBAQCBmdW5jdGlvbiBjbG9zZSgp
CiAgICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KHRoaXMuQHN0b3JlZEVycm9yKTsKIAog
ICAgIGlmICh0aGlzLkBzdGF0ZSA9PT0gQHN0cmVhbVdhaXRpbmcpCi0gICAgICAgIHRoaXMuQHJl
YWR5UHJvbWlzZUNhcGFiaWxpdHkuQHJlc29sdmUuQGNhbGwodW5kZWZpbmVkLCB1bmRlZmluZWQp
OworICAgICAgICB0aGlzLkByZWFkeVByb21pc2VDYXBhYmlsaXR5LkByZXNvbHZlLkBjYWxsKCk7
CiAKICAgICB0aGlzLkBzdGF0ZSA9IEBzdHJlYW1DbG9zaW5nOwogICAgIEBlbnF1ZXVlVmFsdWVX
aXRoU2l6ZSh0aGlzLkBxdWV1ZSwgImNsb3NlIiwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW1JbnRlcm5hbHMuanMgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW1JbnRlcm5hbHMuanMKaW5kZXgg
YjU3ZWJhZmUxNWUzM2MxZDA2MjQ2NjZkOGYzMTNhZWJjY2UxMTA5Zi4uYTdhYmQ3MDY2ZmNkYzg4
YzQyMDZjYTk0OTBlYjg1MGUxM2NhZGQ1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtSW50ZXJuYWxzLmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbUludGVybmFscy5qcwpAQCAtNTAsNyAr
NTAsNyBAQCBmdW5jdGlvbiBzeW5jV3JpdGFibGVTdHJlYW1TdGF0ZVdpdGhRdWV1ZShzdHJlYW0p
CiAgICAgfQogICAgIGlmICghc2hvdWxkQXBwbHlCYWNrcHJlc3N1cmUgJiYgc3RyZWFtLkBzdGF0
ZSA9PT0gQHN0cmVhbVdhaXRpbmcpIHsKICAgICAgICAgc3RyZWFtLkBzdGF0ZSA9IEBzdHJlYW1X
cml0YWJsZTsKLSAgICAgICAgc3RyZWFtLkByZWFkeVByb21pc2VDYXBhYmlsaXR5LkByZXNvbHZl
LkBjYWxsKHVuZGVmaW5lZCwgdW5kZWZpbmVkKTsKKyAgICAgICAgc3RyZWFtLkByZWFkeVByb21p
c2VDYXBhYmlsaXR5LkByZXNvbHZlLkBjYWxsKCk7CiAgICAgfQogfQogCkBAIC01OSwzNCArNTks
MzUgQEAgZnVuY3Rpb24gZXJyb3JXcml0YWJsZVN0cmVhbShlKQogICAgICJ1c2Ugc3RyaWN0IjsK
IAogICAgIGlmICh0aGlzLkBzdGF0ZSA9PT0gQHN0cmVhbUNsb3NlZCB8fCB0aGlzLkBzdGF0ZSA9
PT0gQHN0cmVhbUVycm9yZWQpCi0gICAgICAgIHJldHVybiB1bmRlZmluZWQ7CisgICAgICAgIHJl
dHVybjsKICAgICB3aGlsZSAodGhpcy5AcXVldWUuY29udGVudC5sZW5ndGggPiAwKSB7Ci0gICAg
ICAgIHZhciB3cml0ZVJlY29yZCA9IEBkZXF1ZXVlVmFsdWUodGhpcy5AcXVldWUpOworICAgICAg
ICBjb25zdCB3cml0ZVJlY29yZCA9IEBkZXF1ZXVlVmFsdWUodGhpcy5AcXVldWUpOwogICAgICAg
ICBpZiAod3JpdGVSZWNvcmQgIT09ICJjbG9zZSIpCiAgICAgICAgICAgICB3cml0ZVJlY29yZC5w
cm9taXNlQ2FwYWJpbGl0eS5AcmVqZWN0LkBjYWxsKHVuZGVmaW5lZCwgZSk7CiAgICAgfQogICAg
IHRoaXMuQHN0b3JlZEVycm9yID0gZTsKICAgICBpZiAodGhpcy5Ac3RhdGUgPT09IEBzdHJlYW1X
YWl0aW5nKQotICAgICAgICB0aGlzLkByZWFkeVByb21pc2VDYXBhYmlsaXR5LkByZXNvbHZlLkBj
YWxsKHVuZGVmaW5lZCwgdW5kZWZpbmVkKTsKKyAgICAgICAgdGhpcy5AcmVhZHlQcm9taXNlQ2Fw
YWJpbGl0eS5AcmVzb2x2ZS5AY2FsbCgpOwogICAgIHRoaXMuQGNsb3NlZFByb21pc2VDYXBhYmls
aXR5LkByZWplY3QuQGNhbGwodW5kZWZpbmVkLCBlKTsKICAgICB0aGlzLkBzdGF0ZSA9IEBzdHJl
YW1FcnJvcmVkOwotICAgIHJldHVybiB1bmRlZmluZWQ7CiB9CiAKIGZ1bmN0aW9uIGNhbGxPclNj
aGVkdWxlV3JpdGFibGVTdHJlYW1BZHZhbmNlUXVldWUoc3RyZWFtKQogeworICAgICJ1c2Ugc3Ry
aWN0IjsKKwogICAgIGlmICghc3RyZWFtLkBzdGFydGVkKQogICAgICAgICBAUHJvbWlzZS5wcm90
b3R5cGUuQHRoZW4uQGNhbGwoc3RyZWFtLkBzdGFydGVkUHJvbWlzZSwgZnVuY3Rpb24oKSB7IEB3
cml0YWJsZVN0cmVhbUFkdmFuY2VRdWV1ZShzdHJlYW0pOyB9KTsKICAgICBlbHNlCiAgICAgICAg
IEB3cml0YWJsZVN0cmVhbUFkdmFuY2VRdWV1ZShzdHJlYW0pOwotCi0gICAgcmV0dXJuIHVuZGVm
aW5lZDsKIH0KIAogZnVuY3Rpb24gd3JpdGFibGVTdHJlYW1BZHZhbmNlUXVldWUoc3RyZWFtKQog
eworICAgICJ1c2Ugc3RyaWN0IjsKKwogICAgIGlmIChzdHJlYW0uQHF1ZXVlLmNvbnRlbnQubGVu
Z3RoID09PSAwIHx8IHN0cmVhbS5Ad3JpdGluZykKLSAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsK
KyAgICAgICAgcmV0dXJuOwogCiAgICAgY29uc3Qgd3JpdGVSZWNvcmQgPSBAcGVla1F1ZXVlVmFs
dWUoc3RyZWFtLkBxdWV1ZSk7CiAgICAgaWYgKHdyaXRlUmVjb3JkID09PSAiY2xvc2UiKSB7CkBA
IC05NCw3ICs5NSw3IEBAIGZ1bmN0aW9uIHdyaXRhYmxlU3RyZWFtQWR2YW5jZVF1ZXVlKHN0cmVh
bSkKICAgICAgICAgQGRlcXVldWVWYWx1ZShzdHJlYW0uQHF1ZXVlKTsKICAgICAgICAgQGFzc2Vy
dChzdHJlYW0uQHF1ZXVlLmNvbnRlbnQubGVuZ3RoID09PSAwKTsKICAgICAgICAgQGNsb3NlV3Jp
dGFibGVTdHJlYW0oc3RyZWFtKTsKLSAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKKyAgICAgICAg
cmV0dXJuOwogICAgIH0KIAogICAgIHN0cmVhbS5Ad3JpdGluZyA9IHRydWU7CkBAIC0xMDMsMzQg
KzEwNCwyOCBAQCBmdW5jdGlvbiB3cml0YWJsZVN0cmVhbUFkdmFuY2VRdWV1ZShzdHJlYW0pCiAg
ICAgICAgICAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHN0cmVhbUVycm9yZWQpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgc3RyZWFtLkB3cml0aW5nID0gZmFsc2U7Ci0g
ICAgICAgICAgICB3cml0ZVJlY29yZC5wcm9taXNlQ2FwYWJpbGl0eS5AcmVzb2x2ZS5AY2FsbCh1
bmRlZmluZWQsIHVuZGVmaW5lZCk7CisgICAgICAgICAgICB3cml0ZVJlY29yZC5wcm9taXNlQ2Fw
YWJpbGl0eS5AcmVzb2x2ZS5AY2FsbCgpOwogICAgICAgICAgICAgQGRlcXVldWVWYWx1ZShzdHJl
YW0uQHF1ZXVlKTsKICAgICAgICAgICAgIEBzeW5jV3JpdGFibGVTdHJlYW1TdGF0ZVdpdGhRdWV1
ZShzdHJlYW0pOwogICAgICAgICAgICAgQHdyaXRhYmxlU3RyZWFtQWR2YW5jZVF1ZXVlKHN0cmVh
bSk7CiAgICAgICAgIH0sCi0gICAgICAgIGZ1bmN0aW9uKHIpIHsKLSAgICAgICAgICAgIEBlcnJv
cldyaXRhYmxlU3RyZWFtLkBhcHBseShzdHJlYW0sIFtyXSk7Ci0gICAgICAgIH0KKyAgICAgICAg
QGVycm9yV3JpdGFibGVTdHJlYW0uYmluZChzdHJlYW0pCiAgICAgKTsKLQotICAgIHJldHVybiB1
bmRlZmluZWQ7CiB9CiAKIGZ1bmN0aW9uIGNsb3NlV3JpdGFibGVTdHJlYW0oc3RyZWFtKQogewor
ICAgICJ1c2Ugc3RyaWN0IjsKKwogICAgIEBhc3NlcnQoc3RyZWFtLkBzdGF0ZSA9PT0gQHN0cmVh
bUNsb3NpbmcpOwogICAgIEBQcm9taXNlLnByb3RvdHlwZS5AdGhlbi5AY2FsbChAcHJvbWlzZUlu
dm9rZU9yTm9vcChzdHJlYW0uQHVuZGVybHlpbmdTaW5rLCAiY2xvc2UiKSwKICAgICAgICAgZnVu
Y3Rpb24oKSB7CiAgICAgICAgICAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHN0cmVhbUVycm9y
ZWQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgQGFzc2VydChzdHJlYW0u
QHN0YXRlID09PSBAc3RyZWFtQ2xvc2luZyk7Ci0gICAgICAgICAgICBzdHJlYW0uQGNsb3NlZFBy
b21pc2VDYXBhYmlsaXR5LkByZXNvbHZlLkBjYWxsKHVuZGVmaW5lZCwgdW5kZWZpbmVkKTsKKyAg
ICAgICAgICAgIHN0cmVhbS5AY2xvc2VkUHJvbWlzZUNhcGFiaWxpdHkuQHJlc29sdmUuQGNhbGwo
KTsKICAgICAgICAgICAgIHN0cmVhbS5Ac3RhdGUgPSBAc3RyZWFtQ2xvc2VkOwogICAgICAgICB9
LAotICAgICAgICBmdW5jdGlvbihyKSB7Ci0gICAgICAgICAgICBAZXJyb3JXcml0YWJsZVN0cmVh
bS5AYXBwbHkoc3RyZWFtLCBbcl0pOwotICAgICAgICB9CisgICAgICAgIEBlcnJvcldyaXRhYmxl
U3RyZWFtLmJpbmQoc3RyZWFtKQogICAgICk7Ci0KLSAgICByZXR1cm4gdW5kZWZpbmVkOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265175</attachid>
            <date>2015-11-10 06:47:20 -0800</date>
            <delta_ts>2015-11-10 07:45:21 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-151089-20151110154715.patch</filename>
            <type>text/plain</type>
            <size>20034</size>
            <attacher name="Xabier Rodríguez Calvar">calvaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyMjA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTYzYzBmZWEyNzM1M2Zm
ZDM5ZjYzODcwM2NmNDY1M2FiMTZjZTY4NS4uYWQ3ZTMxMzQ0Y2YzNTEwNmUwNmNhZTlkZTMzMTEw
OWI3YmYyODBjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDU0IEBACiAyMDE1LTExLTEwICBYYWJp
ZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+CiAKKyAgICAgICAgW1N0
cmVhbXMgQVBJXSBGaXggc3R5bGUgaXNzdWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTEwODkKKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4g
RmFibGV0LgorCisgICAgICAgIElubGluZWQgc29tZSB0aGluZ3MsIGNvbnZlcnRlZCB2YXIgaW50
byBsZXQgYW5kIGNvbnN0LCByZW1vdmVkIHNvbWUgdW5kZWZpbmVkIHBhcmFtZXRlcnMgYW5kIHJl
dHVybnMsIGFkZGVkCisgICAgICAgIG1pc3NpbmcgInVzZSBzdHJpY3QiIGNsYXVzZXMgYW5kIG90
aGVyIG1pbm9yIHN0eWxlIGNoYW5nZXMuCisKKyAgICAgICAgSW50ZXJuYWwgcmV3b3JrLCBubyBu
ZXcgdGVzdHMgbmVlZGVkLgorCisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3Ry
ZWFtLmpzOgorICAgICAgICAoaW5pdGlhbGl6ZVJlYWRhYmxlU3RyZWFtKToKKyAgICAgICAgKiBN
b2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmpzOgorICAgICAgICAoZW5x
dWV1ZSk6CisgICAgICAgIChlcnJvcik6CisgICAgICAgIChjbG9zZSk6CisgICAgICAgICogTW9k
dWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtSW50ZXJuYWxzLmpzOgorICAgICAgICAodGVlUmVh
ZGFibGVTdHJlYW0pOgorICAgICAgICAodGVlUmVhZGFibGVTdHJlYW1QdWxsRnVuY3Rpb24pOgor
ICAgICAgICAodGVlUmVhZGFibGVTdHJlYW1CcmFuY2gyQ2FuY2VsRnVuY3Rpb24pOgorICAgICAg
ICAoZXJyb3JSZWFkYWJsZVN0cmVhbSk6CisgICAgICAgIChmaW5pc2hDbG9zaW5nUmVhZGFibGVT
dHJlYW0pOgorICAgICAgICAoY2xvc2VSZWFkYWJsZVN0cmVhbVJlYWRlcik6CisgICAgICAgIChl
bnF1ZXVlSW5SZWFkYWJsZVN0cmVhbSk6CisgICAgICAgIChyZWFkRnJvbVJlYWRhYmxlU3RyZWFt
UmVhZGVyKToKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIu
anM6CisgICAgICAgIChyZWxlYXNlTG9jayk6CisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1N0
cmVhbUludGVybmFscy5qczoKKyAgICAgICAgKGludm9rZU9yTm9vcCk6CisgICAgICAgIChwcm9t
aXNlSW52b2tlT3JOb29wKToKKyAgICAgICAgKHByb21pc2VJbnZva2VPckZhbGxiYWNrT3JOb29w
KToKKyAgICAgICAgKHZhbGlkYXRlQW5kTm9ybWFsaXplUXVldWluZ1N0cmF0ZWd5KToKKyAgICAg
ICAgKG5ld1F1ZXVlKToKKyAgICAgICAgKGRlcXVldWVWYWx1ZSk6CisgICAgICAgIChlbnF1ZXVl
VmFsdWVXaXRoU2l6ZSk6CisgICAgICAgIChwZWVrUXVldWVWYWx1ZSk6CisgICAgICAgICogTW9k
dWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtLmpzOgorICAgICAgICAoaW5pdGlhbGl6ZVdyaXRh
YmxlU3RyZWFtKToKKyAgICAgICAgKGFib3J0KToKKyAgICAgICAgKGNsb3NlKToKKyAgICAgICAg
KiBNb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW1JbnRlcm5hbHMuanM6CisgICAgICAgIChz
eW5jV3JpdGFibGVTdHJlYW1TdGF0ZVdpdGhRdWV1ZSk6CisgICAgICAgIChlcnJvcldyaXRhYmxl
U3RyZWFtKToKKyAgICAgICAgKGNhbGxPclNjaGVkdWxlV3JpdGFibGVTdHJlYW1BZHZhbmNlUXVl
dWUpOgorICAgICAgICAod3JpdGFibGVTdHJlYW1BZHZhbmNlUXVldWUpOgorICAgICAgICAoY2xv
c2VXcml0YWJsZVN0cmVhbSk6IERlbGV0ZWQuCisKKzIwMTUtMTEtMTAgIFhhYmllciBSb2RyaWd1
ZXogQ2FsdmFyICA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4KKwogICAgICAgICBbU3RyZWFtcyBBUEld
IFNoaWVsZCBwcm9taXNlcyB3aGVuIHByb3RvdHlwZSBpcyByZXBsYWNlZCBmcm9tIGEgcHJvbWlz
ZQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxMDMz
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0
cmVhbS5qcyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5q
cwppbmRleCBlYTQyM2Q4YzczYmNlZDIzNjNlM2ZmZWFiZDM2NmU3YmZiZjNlYWJhLi5jMTEwZjYy
ZTgzYWYyODlhOGEwNDBkZTcyYjNjZWZkY2FjMTliZDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uanMKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmpzCkBAIC01NCw4ICs1NCw4IEBAIGZ1
bmN0aW9uIGluaXRpYWxpemVSZWFkYWJsZVN0cmVhbSh1bmRlcmx5aW5nU291cmNlLCBzdHJhdGVn
eSkKICAgICB0aGlzLkBjb250cm9sbGVyID0gbmV3IEBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIo
dGhpcyk7CiAgICAgdGhpcy5Ac3RyYXRlZ3kgPSBAdmFsaWRhdGVBbmROb3JtYWxpemVRdWV1aW5n
U3RyYXRlZ3koc3RyYXRlZ3kuc2l6ZSwgc3RyYXRlZ3kuaGlnaFdhdGVyTWFyayk7CiAKLSAgICB2
YXIgcmVzdWx0ID0gQGludm9rZU9yTm9vcCh1bmRlcmx5aW5nU291cmNlLCAic3RhcnQiLCBbdGhp
cy5AY29udHJvbGxlcl0pOwotICAgIHZhciBfdGhpcyA9IHRoaXM7CisgICAgY29uc3QgcmVzdWx0
ID0gQGludm9rZU9yTm9vcCh1bmRlcmx5aW5nU291cmNlLCAic3RhcnQiLCBbdGhpcy5AY29udHJv
bGxlcl0pOworICAgIGNvbnN0IF90aGlzID0gdGhpczsKICAgICBAUHJvbWlzZS5wcm90b3R5cGUu
QHRoZW4uQGNhbGwoQFByb21pc2UuQHJlc29sdmUocmVzdWx0KSwgZnVuY3Rpb24oKSB7CiAgICAg
ICAgIF90aGlzLkBzdGFydGVkID0gdHJ1ZTsKICAgICAgICAgQHJlcXVlc3RSZWFkYWJsZVN0cmVh
bVB1bGwoX3RoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1z
L1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5qcyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Ry
ZWFtcy9SZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuanMKaW5kZXggMGQ5OTgxYjFjNzM5NTQ1MjZl
OGMzNmFmMDg2NGJiOGJlZWI0MDdiOS4uOWM4YzM0ZWE0YzQ4MTZiOTdhZDQyOGUwMTJkNzI1M2Uw
YjE3Mzc2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRh
YmxlU3RyZWFtQ29udHJvbGxlci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVh
bXMvUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmpzCkBAIC0zMiwxNCArMzIsMTQgQEAgZnVuY3Rp
b24gZW5xdWV1ZShjaHVuaykKICAgICBpZiAoIUBpc1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlcih0
aGlzKSkKICAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkZ1bmN0aW9uIHNob3VsZCBiZSBj
YWxsZWQgb24gYSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIiKTsKIAotICAgIHZhciBzdHJlYW0g
PSB0aGlzLkBjb250cm9sbGVkUmVhZGFibGVTdHJlYW07CisgICAgY29uc3Qgc3RyZWFtID0gdGhp
cy5AY29udHJvbGxlZFJlYWRhYmxlU3RyZWFtOwogICAgIGlmIChzdHJlYW0uQHN0YXRlID09PSBA
c3RyZWFtRXJyb3JlZCkKICAgICAgICAgdGhyb3cgc3RyZWFtLkBzdG9yZWRFcnJvcjsKIAogICAg
IGlmIChzdHJlYW0uQGNsb3NlUmVxdWVzdGVkKQogICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJv
cigiUmVhZGFibGVTdHJlYW0gaXMgcmVxdWVzdGVkIHRvIGNsb3NlIik7CiAKLSAgICByZXR1cm4g
QGVucXVldWVJblJlYWRhYmxlU3RyZWFtKHN0cmVhbSwgY2h1bmspCisgICAgcmV0dXJuIEBlbnF1
ZXVlSW5SZWFkYWJsZVN0cmVhbShzdHJlYW0sIGNodW5rKTsKIH0KIAogZnVuY3Rpb24gZXJyb3Io
ZXJyb3IpCkBAIC00OSw3ICs0OSw3IEBAIGZ1bmN0aW9uIGVycm9yKGVycm9yKQogICAgIGlmICgh
QGlzUmVhZGFibGVTdHJlYW1Db250cm9sbGVyKHRoaXMpKQogICAgICAgICB0aHJvdyBuZXcgQFR5
cGVFcnJvcigiRnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBvbiBhIFJlYWRhYmxlU3RyZWFtQ29u
dHJvbGxlciIpOwogCi0gICAgdmFyIHN0cmVhbSA9IHRoaXMuQGNvbnRyb2xsZWRSZWFkYWJsZVN0
cmVhbTsKKyAgICBjb25zdCBzdHJlYW0gPSB0aGlzLkBjb250cm9sbGVkUmVhZGFibGVTdHJlYW07
CiAgICAgaWYgKHN0cmVhbS5Ac3RhdGUgIT09IEBzdHJlYW1SZWFkYWJsZSkKICAgICAgICAgdGhy
b3cgbmV3IEBUeXBlRXJyb3IoIlJlYWFibGVTdHJlYW0gaXMgbm90IHJlYWRhYmxlIik7CiAKQEAg
LTYzLDcgKzYzLDcgQEAgZnVuY3Rpb24gY2xvc2UoKQogICAgIGlmICghQGlzUmVhZGFibGVTdHJl
YW1Db250cm9sbGVyKHRoaXMpKQogICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiRnVuY3Rp
b24gc2hvdWxkIGJlIGNhbGxlZCBvbiBhIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlciIpOwogCi0g
ICAgdmFyIHN0cmVhbSA9IHRoaXMuQGNvbnRyb2xsZWRSZWFkYWJsZVN0cmVhbTsKKyAgICBjb25z
dCBzdHJlYW0gPSB0aGlzLkBjb250cm9sbGVkUmVhZGFibGVTdHJlYW07CiAgICAgaWYgKHN0cmVh
bS5AY2xvc2VSZXF1ZXN0ZWQpCiAgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJSZWFkYWJs
ZVN0cmVhbSBpcyBhbHJlYWR5IHJlcXVlc3RlZCB0byBjbG9zZSIpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1JbnRlcm5hbHMuanMg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1JbnRlcm5hbHMu
anMKaW5kZXggOWIyNjA4MDk3ZDc5YzljOTlmNjdkODAzYmJlY2YyMmZjMmU1MjcwZC4uZDU5MWM4
MmM0ODY4NDJhODZiNjhjNGM1NDc2Mjk2YjY1M2UyMzYzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtSW50ZXJuYWxzLmpzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUludGVybmFscy5qcwpA
QCAtNzksOSArNzksOSBAQCBmdW5jdGlvbiB0ZWVSZWFkYWJsZVN0cmVhbShzdHJlYW0sIHNob3Vs
ZENsb25lKQogICAgIEBhc3NlcnQoQGlzUmVhZGFibGVTdHJlYW0oc3RyZWFtKSk7CiAgICAgQGFz
c2VydCh0eXBlb2Yoc2hvdWxkQ2xvbmUpID09PSAiYm9vbGVhbiIpOwogCi0gICAgbGV0IHJlYWRl
ciA9IHN0cmVhbS5nZXRSZWFkZXIoKTsKKyAgICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVh
ZGVyKCk7CiAKLSAgICBsZXQgdGVlU3RhdGUgPSB7CisgICAgY29uc3QgdGVlU3RhdGUgPSB7CiAg
ICAgICAgIGNsb3NlZE9yRXJyb3JlZDogZmFsc2UsCiAgICAgICAgIGNhbmNlbGVkMTogZmFsc2Us
CiAgICAgICAgIGNhbmNlbGVkMjogZmFsc2UsCkBAIC05MSwyMCArOTEsMTYgQEAgZnVuY3Rpb24g
dGVlUmVhZGFibGVTdHJlYW0oc3RyZWFtLCBzaG91bGRDbG9uZSkKIAogICAgIHRlZVN0YXRlLmNh
bmNlbFByb21pc2VDYXBhYmlsaXR5ID0gQG5ld1Byb21pc2VDYXBhYmlsaXR5KEBJbnRlcm5hbFBy
b21pc2UpOwogCi0gICAgbGV0IHB1bGxGdW5jdGlvbiA9IEB0ZWVSZWFkYWJsZVN0cmVhbVB1bGxG
dW5jdGlvbih0ZWVTdGF0ZSwgcmVhZGVyLCBzaG91bGRDbG9uZSk7CisgICAgY29uc3QgcHVsbEZ1
bmN0aW9uID0gQHRlZVJlYWRhYmxlU3RyZWFtUHVsbEZ1bmN0aW9uKHRlZVN0YXRlLCByZWFkZXIs
IHNob3VsZENsb25lKTsKIAotICAgIGxldCB1bmRlcmx5aW5nU291cmNlMSA9IHsKKyAgICBjb25z
dCBicmFuY2gxID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKICAgICAgICAgInB1bGwiOiBwdWxsRnVu
Y3Rpb24sCiAgICAgICAgICJjYW5jZWwiOiBAdGVlUmVhZGFibGVTdHJlYW1CcmFuY2gxQ2FuY2Vs
RnVuY3Rpb24odGVlU3RhdGUsIHN0cmVhbSkKLSAgICB9OwotCi0gICAgbGV0IHVuZGVybHlpbmdT
b3VyY2UyID0geworICAgIH0pOworICAgIGNvbnN0IGJyYW5jaDIgPSBuZXcgUmVhZGFibGVTdHJl
YW0oewogICAgICAgICAicHVsbCI6IHB1bGxGdW5jdGlvbiwKICAgICAgICAgImNhbmNlbCI6IEB0
ZWVSZWFkYWJsZVN0cmVhbUJyYW5jaDJDYW5jZWxGdW5jdGlvbih0ZWVTdGF0ZSwgc3RyZWFtKQot
ICAgIH07Ci0KLSAgICBsZXQgYnJhbmNoMSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh1bmRlcmx5aW5n
U291cmNlMSk7Ci0gICAgbGV0IGJyYW5jaDIgPSBuZXcgUmVhZGFibGVTdHJlYW0odW5kZXJseWlu
Z1NvdXJjZTIpOworICAgIH0pOwogCiAgICAgQFByb21pc2UucHJvdG90eXBlLkBjYXRjaC5AY2Fs
bChyZWFkZXIuY2xvc2VkLCBmdW5jdGlvbihlKSB7CiAgICAgICAgIGlmICh0ZWVTdGF0ZS5jbG9z
ZWRPckVycm9yZWQpCkBAIC0xMjMsNiArMTE5LDggQEAgZnVuY3Rpb24gdGVlUmVhZGFibGVTdHJl
YW0oc3RyZWFtLCBzaG91bGRDbG9uZSkKIAogZnVuY3Rpb24gdGVlUmVhZGFibGVTdHJlYW1QdWxs
RnVuY3Rpb24odGVlU3RhdGUsIHJlYWRlciwgc2hvdWxkQ2xvbmUpCiB7CisgICAgInVzZSBzdHJp
Y3QiOworCiAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgewogICAgICAgICBAUHJvbWlzZS5wcm90b3R5
cGUuQHRoZW4uQGNhbGwocmVhZGVyLnJlYWQoKSwgZnVuY3Rpb24ocmVzdWx0KSB7CiAgICAgICAg
ICAgICBpZiAocmVzdWx0LmRvbmUgJiYgIXRlZVN0YXRlLmNsb3NlZE9yRXJyb3JlZCkgewpAQCAt
MTQ2LDYgKzE0NCw4IEBAIGZ1bmN0aW9uIHRlZVJlYWRhYmxlU3RyZWFtUHVsbEZ1bmN0aW9uKHRl
ZVN0YXRlLCByZWFkZXIsIHNob3VsZENsb25lKQogCiBmdW5jdGlvbiB0ZWVSZWFkYWJsZVN0cmVh
bUJyYW5jaDFDYW5jZWxGdW5jdGlvbih0ZWVTdGF0ZSwgc3RyZWFtKQogeworICAgICJ1c2Ugc3Ry
aWN0IjsKKwogICAgIHJldHVybiBmdW5jdGlvbihyKSB7CiAgICAgICAgIHRlZVN0YXRlLmNhbmNl
bGVkMSA9IHRydWU7CiAgICAgICAgIHRlZVN0YXRlLnJlYXNvbjEgPSByOwpAQCAtMTYwLDYgKzE2
MCw4IEBAIGZ1bmN0aW9uIHRlZVJlYWRhYmxlU3RyZWFtQnJhbmNoMUNhbmNlbEZ1bmN0aW9uKHRl
ZVN0YXRlLCBzdHJlYW0pCiAKIGZ1bmN0aW9uIHRlZVJlYWRhYmxlU3RyZWFtQnJhbmNoMkNhbmNl
bEZ1bmN0aW9uKHRlZVN0YXRlLCBzdHJlYW0pCiB7CisgICAgInVzZSBzdHJpY3QiOworCiAgICAg
cmV0dXJuIGZ1bmN0aW9uKHIpIHsKICAgICAgICAgdGVlU3RhdGUuY2FuY2VsZWQyID0gdHJ1ZTsK
ICAgICAgICAgdGVlU3RhdGUucmVhc29uMiA9IHI7CkBAIC0yMDQsMTAgKzIwNiwxMCBAQCBmdW5j
dGlvbiBlcnJvclJlYWRhYmxlU3RyZWFtKHN0cmVhbSwgZXJyb3IpCiAKICAgICBpZiAoIXN0cmVh
bS5AcmVhZGVyKQogICAgICAgICByZXR1cm47Ci0gICAgdmFyIHJlYWRlciA9IHN0cmVhbS5AcmVh
ZGVyOworICAgIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5AcmVhZGVyOwogCi0gICAgdmFyIHJlcXVl
c3RzID0gcmVhZGVyLkByZWFkUmVxdWVzdHM7Ci0gICAgZm9yICh2YXIgaW5kZXggPSAwLCBsZW5n
dGggPSByZXF1ZXN0cy5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyArK2luZGV4KQorICAgIGNvbnN0
IHJlcXVlc3RzID0gcmVhZGVyLkByZWFkUmVxdWVzdHM7CisgICAgZm9yIChsZXQgaW5kZXggPSAw
LCBsZW5ndGggPSByZXF1ZXN0cy5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyArK2luZGV4KQogICAg
ICAgICByZXF1ZXN0c1tpbmRleF0uQHJlamVjdC5AY2FsbCh1bmRlZmluZWQsIGVycm9yKTsKICAg
ICByZWFkZXIuQHJlYWRSZXF1ZXN0cyA9IFtdOwogCkBAIC0yMzgsNyArMjQwLDcgQEAgZnVuY3Rp
b24gcmVxdWVzdFJlYWRhYmxlU3RyZWFtUHVsbChzdHJlYW0pCiAKICAgICBzdHJlYW0uQHB1bGxp
bmcgPSB0cnVlOwogCi0gICAgdmFyIHByb21pc2UgPSBAcHJvbWlzZUludm9rZU9yTm9vcChzdHJl
YW0uQHVuZGVybHlpbmdTb3VyY2UsICJwdWxsIiwgW3N0cmVhbS5AY29udHJvbGxlcl0pOworICAg
IGNvbnN0IHByb21pc2UgPSBAcHJvbWlzZUludm9rZU9yTm9vcChzdHJlYW0uQHVuZGVybHlpbmdT
b3VyY2UsICJwdWxsIiwgW3N0cmVhbS5AY29udHJvbGxlcl0pOwogICAgIEBQcm9taXNlLnByb3Rv
dHlwZS5AdGhlbi5AY2FsbChwcm9taXNlLCBmdW5jdGlvbigpIHsKICAgICAgICAgc3RyZWFtLkBw
dWxsaW5nID0gZmFsc2U7CiAgICAgICAgIGlmIChzdHJlYW0uQHB1bGxBZ2FpbikgewpAQCAtMjky
LDcgKzI5NCw3IEBAIGZ1bmN0aW9uIGZpbmlzaENsb3NpbmdSZWFkYWJsZVN0cmVhbShzdHJlYW0p
CiAKICAgICBAYXNzZXJ0KHN0cmVhbS5Ac3RhdGUgPT09ICBAc3RyZWFtUmVhZGFibGUpOwogICAg
IHN0cmVhbS5Ac3RhdGUgPSBAc3RyZWFtQ2xvc2VkOwotICAgIHZhciByZWFkZXIgPSBzdHJlYW0u
QHJlYWRlcjsKKyAgICBjb25zdCByZWFkZXIgPSBzdHJlYW0uQHJlYWRlcjsKICAgICBpZiAocmVh
ZGVyKQogICAgICAgICBAY2xvc2VSZWFkYWJsZVN0cmVhbVJlYWRlcihyZWFkZXIpOwogfQpAQCAt
MzE0LDEzICszMTYsMTMgQEAgZnVuY3Rpb24gY2xvc2VSZWFkYWJsZVN0cmVhbVJlYWRlcihyZWFk
ZXIpCiB7CiAgICAgInVzZSBzdHJpY3QiOwogCi0gICAgdmFyIHJlcXVlc3RzID0gcmVhZGVyLkBy
ZWFkUmVxdWVzdHM7Ci0gICAgZm9yICh2YXIgaW5kZXggPSAwLCBsZW5ndGggPSByZXF1ZXN0cy5s
ZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyArK2luZGV4KQorICAgIGNvbnN0IHJlcXVlc3RzID0gcmVh
ZGVyLkByZWFkUmVxdWVzdHM7CisgICAgZm9yIChsZXQgaW5kZXggPSAwLCBsZW5ndGggPSByZXF1
ZXN0cy5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyArK2luZGV4KQogICAgICAgICByZXF1ZXN0c1tp
bmRleF0uQHJlc29sdmUuQGNhbGwodW5kZWZpbmVkLCB7dmFsdWU6dW5kZWZpbmVkLCBkb25lOiB0
cnVlfSk7CiAgICAgcmVhZGVyLkByZWFkUmVxdWVzdHMgPSBbXTsKICAgICBAcmVsZWFzZVJlYWRh
YmxlU3RyZWFtUmVhZGVyKHJlYWRlcik7CiAgICAgcmVhZGVyLkBzdGF0ZSA9IEBzdHJlYW1DbG9z
ZWQ7Ci0gICAgcmVhZGVyLkBjbG9zZWRQcm9taXNlQ2FwYWJpbGl0eS5AcmVzb2x2ZS5AY2FsbCh1
bmRlZmluZWQpOworICAgIHJlYWRlci5AY2xvc2VkUHJvbWlzZUNhcGFiaWxpdHkuQHJlc29sdmUu
QGNhbGwoKTsKIH0KIAogZnVuY3Rpb24gZW5xdWV1ZUluUmVhZGFibGVTdHJlYW0oc3RyZWFtLCBj
aHVuaykKQEAgLTMzMCwxOCArMzMyLDE4IEBAIGZ1bmN0aW9uIGVucXVldWVJblJlYWRhYmxlU3Ry
ZWFtKHN0cmVhbSwgY2h1bmspCiAgICAgQGFzc2VydCghc3RyZWFtLkBjbG9zZVJlcXVlc3RlZCk7
CiAgICAgQGFzc2VydChzdHJlYW0uQHN0YXRlICE9PSBAc3RyZWFtRXJyb3JlZCk7CiAgICAgaWYg
KHN0cmVhbS5Ac3RhdGUgPT09IEBzdHJlYW1DbG9zZWQpCi0gICAgICAgIHJldHVybiB1bmRlZmlu
ZWQ7CisgICAgICAgIHJldHVybjsKICAgICBpZiAoQGlzUmVhZGFibGVTdHJlYW1Mb2NrZWQoc3Ry
ZWFtKSAmJiBzdHJlYW0uQHJlYWRlci5AcmVhZFJlcXVlc3RzLmxlbmd0aCkgewogICAgICAgICBz
dHJlYW0uQHJlYWRlci5AcmVhZFJlcXVlc3RzLnNoaWZ0KCkuQHJlc29sdmUuQGNhbGwodW5kZWZp
bmVkLCB7dmFsdWU6IGNodW5rLCBkb25lOiBmYWxzZX0pOwogICAgICAgICBAcmVxdWVzdFJlYWRh
YmxlU3RyZWFtUHVsbChzdHJlYW0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIHRyeSB7
Ci0gICAgICAgIHZhciBzaXplID0gMTsKKyAgICAgICAgbGV0IHNpemUgPSAxOwogICAgICAgICBp
ZiAoc3RyZWFtLkBzdHJhdGVneS5zaXplKSB7CiAgICAgICAgICAgICBzaXplID0gTnVtYmVyKHN0
cmVhbS5Ac3RyYXRlZ3kuc2l6ZShjaHVuaykpOwogICAgICAgICAgICAgaWYgKE51bWJlci5pc05h
TihzaXplKSB8fCBzaXplID09PSArSW5maW5pdHkgfHwgc2l6ZSA8IDApCi0gICAgICAgICAgICAg
ICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkNodW5rIHNpemUgaXMgbm90IHZhbGlkIik7CisgICAg
ICAgICAgICAgICAgdGhyb3cgbmV3IEBSYW5nZUVycm9yKCJDaHVuayBzaXplIGlzIG5vdCB2YWxp
ZCIpOwogICAgICAgICB9CiAgICAgICAgIEBlbnF1ZXVlVmFsdWVXaXRoU2l6ZShzdHJlYW0uQHF1
ZXVlLCBjaHVuaywgc2l6ZSk7CiAgICAgfQpAQCAtMzYyLDE2ICszNjQsMTYgQEAgZnVuY3Rpb24g
cmVhZEZyb21SZWFkYWJsZVN0cmVhbVJlYWRlcihyZWFkZXIpCiAgICAgICAgIHJldHVybiBAUHJv
bWlzZS5AcmVqZWN0KHJlYWRlci5Ac3RvcmVkRXJyb3IpOwogICAgIEBhc3NlcnQoISFyZWFkZXIu
QG93bmVyUmVhZGFibGVTdHJlYW0pOwogICAgIEBhc3NlcnQocmVhZGVyLkBvd25lclJlYWRhYmxl
U3RyZWFtLkBzdGF0ZSA9PT0gQHN0cmVhbVJlYWRhYmxlKTsKLSAgICB2YXIgc3RyZWFtID0gcmVh
ZGVyLkBvd25lclJlYWRhYmxlU3RyZWFtOworICAgIGNvbnN0IHN0cmVhbSA9IHJlYWRlci5Ab3du
ZXJSZWFkYWJsZVN0cmVhbTsKICAgICBpZiAoc3RyZWFtLkBxdWV1ZS5jb250ZW50Lmxlbmd0aCkg
ewotICAgICAgICB2YXIgY2h1bmsgPSBAZGVxdWV1ZVZhbHVlKHN0cmVhbS5AcXVldWUpOworICAg
ICAgICBjb25zdCBjaHVuayA9IEBkZXF1ZXVlVmFsdWUoc3RyZWFtLkBxdWV1ZSk7CiAgICAgICAg
IGlmICghc3RyZWFtLkBjbG9zZVJlcXVlc3RlZCkKICAgICAgICAgICAgIEByZXF1ZXN0UmVhZGFi
bGVTdHJlYW1QdWxsKHN0cmVhbSk7CiAgICAgICAgIGVsc2UgaWYgKCFzdHJlYW0uQHF1ZXVlLmNv
bnRlbnQubGVuZ3RoKQogICAgICAgICAgICAgQGZpbmlzaENsb3NpbmdSZWFkYWJsZVN0cmVhbShz
dHJlYW0pOwogICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlc29sdmUoe3ZhbHVlOiBjaHVuaywg
ZG9uZTogZmFsc2V9KTsKICAgICB9Ci0gICAgdmFyIHJlYWRQcm9taXNlQ2FwYWJpbGl0eSA9IEBu
ZXdQcm9taXNlQ2FwYWJpbGl0eShAUHJvbWlzZSk7CisgICAgY29uc3QgcmVhZFByb21pc2VDYXBh
YmlsaXR5ID0gQG5ld1Byb21pc2VDYXBhYmlsaXR5KEBQcm9taXNlKTsKICAgICByZWFkZXIuQHJl
YWRSZXF1ZXN0cy5wdXNoKHJlYWRQcm9taXNlQ2FwYWJpbGl0eSk7CiAgICAgQHJlcXVlc3RSZWFk
YWJsZVN0cmVhbVB1bGwoc3RyZWFtKTsKICAgICByZXR1cm4gcmVhZFByb21pc2VDYXBhYmlsaXR5
LkBwcm9taXNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1Jl
YWRhYmxlU3RyZWFtUmVhZGVyLmpzIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1Jl
YWRhYmxlU3RyZWFtUmVhZGVyLmpzCmluZGV4IDcxZTEwZTY0MDE5ZDg2ODM0MGU0YjIzNDk1NTEx
YTM4MGU2OGI5ZmQuLjdhOGU2M2UyNDkxY2JiMDAxNDAxYjcyYTBkODJjMGFlNmEwNDYzMmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJl
YWRlci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJl
YW1SZWFkZXIuanMKQEAgLTY0LDcgKzY0LDcgQEAgZnVuY3Rpb24gcmVsZWFzZUxvY2soKQogICAg
ICAgICAgcmV0dXJuOwogCiAgICAgaWYgKHRoaXMuQHJlYWRSZXF1ZXN0cy5sZW5ndGgpCi0gICAg
ICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCk7CisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9y
KCJUaGVyZSBhcmUgc3RpbGwgcGVuZGluZyByZWFkIHJlcXVlc3RzLCBjYW5ub3QgcmVsZWFzZSB0
aGUgbG9jayIpOwogCiAgICAgQGNsb3NlUmVhZGFibGVTdHJlYW1SZWFkZXIodGhpcyk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvU3RyZWFtSW50ZXJuYWxz
LmpzIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1N0cmVhbUludGVybmFscy5qcwpp
bmRleCBjYmMxYjIxNDQ2YzU1MzU3NWZhOWM1MGE2YjA4YzBhNzZjYzYzOGI1Li5mY2Q4Yzk5NTc5
MDE4M2IzNjZhMTJiNjc4MTM0MDZiYjdlZjJmNDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3N0cmVhbXMvU3RyZWFtSW50ZXJuYWxzLmpzCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3RyZWFtcy9TdHJlYW1JbnRlcm5hbHMuanMKQEAgLTMxLDcgKzMxLDcgQEAgZnVu
Y3Rpb24gaW52b2tlT3JOb29wKG9iamVjdCwga2V5LCBhcmdzKQogewogICAgICJ1c2Ugc3RyaWN0
IjsKIAotICAgIHZhciBtZXRob2QgPSBvYmplY3Rba2V5XTsKKyAgICBjb25zdCBtZXRob2QgPSBv
YmplY3Rba2V5XTsKICAgICBpZiAodHlwZW9mIG1ldGhvZCA9PT0gInVuZGVmaW5lZCIpCiAgICAg
ICAgIHJldHVybjsKICAgICByZXR1cm4gbWV0aG9kLkBhcHBseShvYmplY3QsIGFyZ3MpOwpAQCAt
NDIsMTEgKzQyLDEwIEBAIGZ1bmN0aW9uIHByb21pc2VJbnZva2VPck5vb3Aob2JqZWN0LCBrZXks
IGFyZ3MpCiAgICAgInVzZSBzdHJpY3QiOwogCiAgICAgdHJ5IHsKLSAgICAgICAgdmFyIG1ldGhv
ZCA9IG9iamVjdFtrZXldOworICAgICAgICBjb25zdCBtZXRob2QgPSBvYmplY3Rba2V5XTsKICAg
ICAgICAgaWYgKHR5cGVvZiBtZXRob2QgPT09ICJ1bmRlZmluZWQiKQogICAgICAgICAgICAgcmV0
dXJuIEBQcm9taXNlLkByZXNvbHZlKCk7Ci0gICAgICAgIHZhciByZXN1bHQgPSBtZXRob2QuQGFw
cGx5KG9iamVjdCwgYXJncyk7Ci0gICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVzb2x2ZShyZXN1
bHQpOworICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlc29sdmUobWV0aG9kLkBhcHBseShvYmpl
Y3QsIGFyZ3MpKTsKICAgICB9CiAgICAgY2F0Y2goZXJyb3IpIHsKICAgICAgICAgcmV0dXJuIEBQ
cm9taXNlLkByZWplY3QoZXJyb3IpOwpAQCAtNjIsOCArNjEsNyBAQCBmdW5jdGlvbiBwcm9taXNl
SW52b2tlT3JGYWxsYmFja09yTm9vcChvYmplY3QsIGtleTEsIGFyZ3MxLCBrZXkyLCBhcmdzMikK
ICAgICAgICAgY29uc3QgbWV0aG9kID0gb2JqZWN0W2tleTFdOwogICAgICAgICBpZiAodHlwZW9m
IG1ldGhvZCA9PT0gInVuZGVmaW5lZCIpCiAgICAgICAgICAgICByZXR1cm4gQHByb21pc2VJbnZv
a2VPck5vb3Aob2JqZWN0LCBrZXkyLCBhcmdzMik7Ci0gICAgICAgIGNvbnN0IHJlc3VsdCA9IG1l
dGhvZC5AYXBwbHkob2JqZWN0LCBhcmdzMSk7Ci0gICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVz
b2x2ZShyZXN1bHQpOworICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlc29sdmUobWV0aG9kLkBh
cHBseShvYmplY3QsIGFyZ3MxKSk7CiAgICAgfQogICAgIGNhdGNoKGVycm9yKSB7CiAgICAgICAg
IHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KGVycm9yKTsKQEAgLTc3LDcgKzc1LDcgQEAgZnVuY3Rp
b24gdmFsaWRhdGVBbmROb3JtYWxpemVRdWV1aW5nU3RyYXRlZ3koc2l6ZSwgaGlnaFdhdGVyTWFy
aykKICAgICBpZiAoc2l6ZSAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiBzaXplICE9PSAiZnVuY3Rp
b24iKQogICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigic2l6ZSBwYXJhbWV0ZXIgbXVzdCBi
ZSBhIGZ1bmN0aW9uIik7CiAKLSAgICB2YXIgbm9ybWFsaXplZFN0cmF0ZWd5ID0geyB9OworICAg
IGNvbnN0IG5vcm1hbGl6ZWRTdHJhdGVneSA9IHsgfTsKIAogICAgIG5vcm1hbGl6ZWRTdHJhdGVn
eS5zaXplID0gc2l6ZTsKICAgICBub3JtYWxpemVkU3RyYXRlZ3kuaGlnaFdhdGVyTWFyayA9IE51
bWJlcihoaWdoV2F0ZXJNYXJrKTsKQEAgLTkyLDYgKzkwLDggQEAgZnVuY3Rpb24gdmFsaWRhdGVB
bmROb3JtYWxpemVRdWV1aW5nU3RyYXRlZ3koc2l6ZSwgaGlnaFdhdGVyTWFyaykKIAogZnVuY3Rp
b24gbmV3UXVldWUoKQogeworICAgICJ1c2Ugc3RyaWN0IjsKKwogICAgIHJldHVybiB7IGNvbnRl
bnQ6IFtdLCBzaXplOiAwIH07CiB9CiAKQEAgLTk5LDI0ICs5OSwyNiBAQCBmdW5jdGlvbiBkZXF1
ZXVlVmFsdWUocXVldWUpCiB7CiAgICAgInVzZSBzdHJpY3QiOwogCi0gICAgdmFyIHJlY29yZCA9
IHF1ZXVlLmNvbnRlbnQuc2hpZnQoKTsKKyAgICBjb25zdCByZWNvcmQgPSBxdWV1ZS5jb250ZW50
LnNoaWZ0KCk7CiAgICAgcXVldWUuc2l6ZSAtPSByZWNvcmQuc2l6ZTsKICAgICByZXR1cm4gcmVj
b3JkLnZhbHVlOwogfQogCiBmdW5jdGlvbiBlbnF1ZXVlVmFsdWVXaXRoU2l6ZShxdWV1ZSwgdmFs
dWUsIHNpemUpCiB7CisgICAgInVzZSBzdHJpY3QiOworCiAgICAgc2l6ZSA9IE51bWJlcihzaXpl
KTsKICAgICBpZiAoTnVtYmVyLmlzTmFOKHNpemUpIHx8ICFOdW1iZXIuaXNGaW5pdGUoc2l6ZSkg
fHwgc2l6ZSA8IDApCiAgICAgICAgIHRocm93IG5ldyBAUmFuZ2VFcnJvcigic2l6ZSBoYXMgYW4g
aW5jb3JyZWN0IHZhbHVlIik7CiAgICAgcXVldWUuY29udGVudC5wdXNoKHsgdmFsdWU6IHZhbHVl
LCBzaXplOiBzaXplIH0pOwogICAgIHF1ZXVlLnNpemUgKz0gc2l6ZTsKLQotICAgIHJldHVybiB1
bmRlZmluZWQ7CiB9CiAKIGZ1bmN0aW9uIHBlZWtRdWV1ZVZhbHVlKHF1ZXVlKQogeworICAgICJ1
c2Ugc3RyaWN0IjsKKwogICAgIEBhc3NlcnQocXVldWUuY29udGVudC5sZW5ndGggPiAwKTsKIAog
ICAgIHJldHVybiBxdWV1ZS5jb250ZW50WzBdLnZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtLmpzIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtLmpzCmluZGV4IGY1NWZlN2Q2ZjYxZDEyNzBj
ZmU0ZjBkNDc1ZTg0NWJhNmMyOWRmYjkuLjIzOTA3OGE4YzJmMTNmYTY4ZTE2MmEwMmY2YjVhNjZi
MTIxNjVkNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9Xcml0
YWJsZVN0cmVhbS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvV3JpdGFi
bGVTdHJlYW0uanMKQEAgLTUzLDEwICs1Myw5IEBAIGZ1bmN0aW9uIGluaXRpYWxpemVXcml0YWJs
ZVN0cmVhbSh1bmRlcmx5aW5nU2luaywgc3RyYXRlZ3kpCiAKICAgICBAc3luY1dyaXRhYmxlU3Ry
ZWFtU3RhdGVXaXRoUXVldWUodGhpcyk7CiAKLSAgICB2YXIgZXJyb3IgPSBAZXJyb3JXcml0YWJs
ZVN0cmVhbS5iaW5kKHRoaXMpOwotICAgIHZhciBzdGFydFJlc3VsdCA9IEBpbnZva2VPck5vb3Ao
dW5kZXJseWluZ1NpbmssICJzdGFydCIsIFtlcnJvcl0pOwotICAgIHRoaXMuQHN0YXJ0ZWRQcm9t
aXNlID0gQFByb21pc2UuQHJlc29sdmUoc3RhcnRSZXN1bHQpOwotICAgIHZhciBfdGhpcyA9IHRo
aXM7CisgICAgY29uc3QgZXJyb3IgPSBAZXJyb3JXcml0YWJsZVN0cmVhbS5iaW5kKHRoaXMpOwor
ICAgIHRoaXMuQHN0YXJ0ZWRQcm9taXNlID0gQFByb21pc2UuQHJlc29sdmUoQGludm9rZU9yTm9v
cCh1bmRlcmx5aW5nU2luaywgInN0YXJ0IiwgW2Vycm9yXSkpOworICAgIGNvbnN0IF90aGlzID0g
dGhpczsKICAgICBAUHJvbWlzZS5wcm90b3R5cGUuQHRoZW4uQGNhbGwodGhpcy5Ac3RhcnRlZFBy
b21pc2UsIGZ1bmN0aW9uKCkgewogICAgICAgICBfdGhpcy5Ac3RhcnRlZCA9IHRydWU7CiAgICAg
ICAgIF90aGlzLkBzdGFydGVkUHJvbWlzZSA9IHVuZGVmaW5lZDsKQEAgLTc4LDcgKzc3LDcgQEAg
ZnVuY3Rpb24gYWJvcnQocmVhc29uKQogICAgIGlmICh0aGlzLkBzdGF0ZSA9PT0gQHN0cmVhbUVy
cm9yZWQpCiAgICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KHRoaXMuQHN0b3JlZEVycm9y
KTsKIAotICAgIEBlcnJvcldyaXRhYmxlU3RyZWFtLkBhcHBseSh0aGlzLCBbcmVhc29uXSk7Cisg
ICAgQGVycm9yV3JpdGFibGVTdHJlYW0uQGNhbGwodGhpcywgcmVhc29uKTsKIAogICAgIGNvbnN0
IHNpbmtBYm9ydFByb21pc2UgPSBAcHJvbWlzZUludm9rZU9yRmFsbGJhY2tPck5vb3AodGhpcy5A
dW5kZXJseWluZ1NpbmssICJhYm9ydCIsIFtyZWFzb25dLCAiY2xvc2UiLCBbXSk7CiAKQEAgLTk5
LDcgKzk4LDcgQEAgZnVuY3Rpb24gY2xvc2UoKQogICAgICAgICByZXR1cm4gQFByb21pc2UuQHJl
amVjdCh0aGlzLkBzdG9yZWRFcnJvcik7CiAKICAgICBpZiAodGhpcy5Ac3RhdGUgPT09IEBzdHJl
YW1XYWl0aW5nKQotICAgICAgICB0aGlzLkByZWFkeVByb21pc2VDYXBhYmlsaXR5LkByZXNvbHZl
LkBjYWxsKHVuZGVmaW5lZCwgdW5kZWZpbmVkKTsKKyAgICAgICAgdGhpcy5AcmVhZHlQcm9taXNl
Q2FwYWJpbGl0eS5AcmVzb2x2ZS5AY2FsbCgpOwogCiAgICAgdGhpcy5Ac3RhdGUgPSBAc3RyZWFt
Q2xvc2luZzsKICAgICBAZW5xdWV1ZVZhbHVlV2l0aFNpemUodGhpcy5AcXVldWUsICJjbG9zZSIs
IDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxl
U3RyZWFtSW50ZXJuYWxzLmpzIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dyaXRh
YmxlU3RyZWFtSW50ZXJuYWxzLmpzCmluZGV4IGI1N2ViYWZlMTVlMzNjMWQwNjI0NjY2ZDhmMzEz
YWViY2NlMTEwOWYuLjQyOWQ1ODczNzc3ZTdjYmY0MDUxMWQ0ZGI5YTA1NmJkMzFmOTgyYTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbUlu
dGVybmFscy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVT
dHJlYW1JbnRlcm5hbHMuanMKQEAgLTUwLDcgKzUwLDcgQEAgZnVuY3Rpb24gc3luY1dyaXRhYmxl
U3RyZWFtU3RhdGVXaXRoUXVldWUoc3RyZWFtKQogICAgIH0KICAgICBpZiAoIXNob3VsZEFwcGx5
QmFja3ByZXNzdXJlICYmIHN0cmVhbS5Ac3RhdGUgPT09IEBzdHJlYW1XYWl0aW5nKSB7CiAgICAg
ICAgIHN0cmVhbS5Ac3RhdGUgPSBAc3RyZWFtV3JpdGFibGU7Ci0gICAgICAgIHN0cmVhbS5AcmVh
ZHlQcm9taXNlQ2FwYWJpbGl0eS5AcmVzb2x2ZS5AY2FsbCh1bmRlZmluZWQsIHVuZGVmaW5lZCk7
CisgICAgICAgIHN0cmVhbS5AcmVhZHlQcm9taXNlQ2FwYWJpbGl0eS5AcmVzb2x2ZS5AY2FsbCgp
OwogICAgIH0KIH0KIApAQCAtNTksMzQgKzU5LDM1IEBAIGZ1bmN0aW9uIGVycm9yV3JpdGFibGVT
dHJlYW0oZSkKICAgICAidXNlIHN0cmljdCI7CiAKICAgICBpZiAodGhpcy5Ac3RhdGUgPT09IEBz
dHJlYW1DbG9zZWQgfHwgdGhpcy5Ac3RhdGUgPT09IEBzdHJlYW1FcnJvcmVkKQotICAgICAgICBy
ZXR1cm4gdW5kZWZpbmVkOworICAgICAgICByZXR1cm47CiAgICAgd2hpbGUgKHRoaXMuQHF1ZXVl
LmNvbnRlbnQubGVuZ3RoID4gMCkgewotICAgICAgICB2YXIgd3JpdGVSZWNvcmQgPSBAZGVxdWV1
ZVZhbHVlKHRoaXMuQHF1ZXVlKTsKKyAgICAgICAgY29uc3Qgd3JpdGVSZWNvcmQgPSBAZGVxdWV1
ZVZhbHVlKHRoaXMuQHF1ZXVlKTsKICAgICAgICAgaWYgKHdyaXRlUmVjb3JkICE9PSAiY2xvc2Ui
KQogICAgICAgICAgICAgd3JpdGVSZWNvcmQucHJvbWlzZUNhcGFiaWxpdHkuQHJlamVjdC5AY2Fs
bCh1bmRlZmluZWQsIGUpOwogICAgIH0KICAgICB0aGlzLkBzdG9yZWRFcnJvciA9IGU7CiAgICAg
aWYgKHRoaXMuQHN0YXRlID09PSBAc3RyZWFtV2FpdGluZykKLSAgICAgICAgdGhpcy5AcmVhZHlQ
cm9taXNlQ2FwYWJpbGl0eS5AcmVzb2x2ZS5AY2FsbCh1bmRlZmluZWQsIHVuZGVmaW5lZCk7Cisg
ICAgICAgIHRoaXMuQHJlYWR5UHJvbWlzZUNhcGFiaWxpdHkuQHJlc29sdmUuQGNhbGwoKTsKICAg
ICB0aGlzLkBjbG9zZWRQcm9taXNlQ2FwYWJpbGl0eS5AcmVqZWN0LkBjYWxsKHVuZGVmaW5lZCwg
ZSk7CiAgICAgdGhpcy5Ac3RhdGUgPSBAc3RyZWFtRXJyb3JlZDsKLSAgICByZXR1cm4gdW5kZWZp
bmVkOwogfQogCiBmdW5jdGlvbiBjYWxsT3JTY2hlZHVsZVdyaXRhYmxlU3RyZWFtQWR2YW5jZVF1
ZXVlKHN0cmVhbSkKIHsKKyAgICAidXNlIHN0cmljdCI7CisKICAgICBpZiAoIXN0cmVhbS5Ac3Rh
cnRlZCkKICAgICAgICAgQFByb21pc2UucHJvdG90eXBlLkB0aGVuLkBjYWxsKHN0cmVhbS5Ac3Rh
cnRlZFByb21pc2UsIGZ1bmN0aW9uKCkgeyBAd3JpdGFibGVTdHJlYW1BZHZhbmNlUXVldWUoc3Ry
ZWFtKTsgfSk7CiAgICAgZWxzZQogICAgICAgICBAd3JpdGFibGVTdHJlYW1BZHZhbmNlUXVldWUo
c3RyZWFtKTsKLQotICAgIHJldHVybiB1bmRlZmluZWQ7CiB9CiAKIGZ1bmN0aW9uIHdyaXRhYmxl
U3RyZWFtQWR2YW5jZVF1ZXVlKHN0cmVhbSkKIHsKKyAgICAidXNlIHN0cmljdCI7CisKICAgICBp
ZiAoc3RyZWFtLkBxdWV1ZS5jb250ZW50Lmxlbmd0aCA9PT0gMCB8fCBzdHJlYW0uQHdyaXRpbmcp
Ci0gICAgICAgIHJldHVybiB1bmRlZmluZWQ7CisgICAgICAgIHJldHVybjsKIAogICAgIGNvbnN0
IHdyaXRlUmVjb3JkID0gQHBlZWtRdWV1ZVZhbHVlKHN0cmVhbS5AcXVldWUpOwogICAgIGlmICh3
cml0ZVJlY29yZCA9PT0gImNsb3NlIikgewpAQCAtOTQsNyArOTUsNyBAQCBmdW5jdGlvbiB3cml0
YWJsZVN0cmVhbUFkdmFuY2VRdWV1ZShzdHJlYW0pCiAgICAgICAgIEBkZXF1ZXVlVmFsdWUoc3Ry
ZWFtLkBxdWV1ZSk7CiAgICAgICAgIEBhc3NlcnQoc3RyZWFtLkBxdWV1ZS5jb250ZW50Lmxlbmd0
aCA9PT0gMCk7CiAgICAgICAgIEBjbG9zZVdyaXRhYmxlU3RyZWFtKHN0cmVhbSk7Ci0gICAgICAg
IHJldHVybiB1bmRlZmluZWQ7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBzdHJlYW0u
QHdyaXRpbmcgPSB0cnVlOwpAQCAtMTAzLDcgKzEwNCw3IEBAIGZ1bmN0aW9uIHdyaXRhYmxlU3Ry
ZWFtQWR2YW5jZVF1ZXVlKHN0cmVhbSkKICAgICAgICAgICAgIGlmIChzdHJlYW0uQHN0YXRlID09
PSBAc3RyZWFtRXJyb3JlZCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBz
dHJlYW0uQHdyaXRpbmcgPSBmYWxzZTsKLSAgICAgICAgICAgIHdyaXRlUmVjb3JkLnByb21pc2VD
YXBhYmlsaXR5LkByZXNvbHZlLkBjYWxsKHVuZGVmaW5lZCwgdW5kZWZpbmVkKTsKKyAgICAgICAg
ICAgIHdyaXRlUmVjb3JkLnByb21pc2VDYXBhYmlsaXR5LkByZXNvbHZlLkBjYWxsKCk7CiAgICAg
ICAgICAgICBAZGVxdWV1ZVZhbHVlKHN0cmVhbS5AcXVldWUpOwogICAgICAgICAgICAgQHN5bmNX
cml0YWJsZVN0cmVhbVN0YXRlV2l0aFF1ZXVlKHN0cmVhbSk7CiAgICAgICAgICAgICBAd3JpdGFi
bGVTdHJlYW1BZHZhbmNlUXVldWUoc3RyZWFtKTsKQEAgLTExMiwyNSArMTEzLDIzIEBAIGZ1bmN0
aW9uIHdyaXRhYmxlU3RyZWFtQWR2YW5jZVF1ZXVlKHN0cmVhbSkKICAgICAgICAgICAgIEBlcnJv
cldyaXRhYmxlU3RyZWFtLkBhcHBseShzdHJlYW0sIFtyXSk7CiAgICAgICAgIH0KICAgICApOwot
Ci0gICAgcmV0dXJuIHVuZGVmaW5lZDsKIH0KIAogZnVuY3Rpb24gY2xvc2VXcml0YWJsZVN0cmVh
bShzdHJlYW0pCiB7CisgICAgInVzZSBzdHJpY3QiOworCiAgICAgQGFzc2VydChzdHJlYW0uQHN0
YXRlID09PSBAc3RyZWFtQ2xvc2luZyk7CiAgICAgQFByb21pc2UucHJvdG90eXBlLkB0aGVuLkBj
YWxsKEBwcm9taXNlSW52b2tlT3JOb29wKHN0cmVhbS5AdW5kZXJseWluZ1NpbmssICJjbG9zZSIp
LAogICAgICAgICBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIGlmIChzdHJlYW0uQHN0YXRlID09
PSBAc3RyZWFtRXJyb3JlZCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBA
YXNzZXJ0KHN0cmVhbS5Ac3RhdGUgPT09IEBzdHJlYW1DbG9zaW5nKTsKLSAgICAgICAgICAgIHN0
cmVhbS5AY2xvc2VkUHJvbWlzZUNhcGFiaWxpdHkuQHJlc29sdmUuQGNhbGwodW5kZWZpbmVkLCB1
bmRlZmluZWQpOworICAgICAgICAgICAgc3RyZWFtLkBjbG9zZWRQcm9taXNlQ2FwYWJpbGl0eS5A
cmVzb2x2ZS5AY2FsbCgpOwogICAgICAgICAgICAgc3RyZWFtLkBzdGF0ZSA9IEBzdHJlYW1DbG9z
ZWQ7CiAgICAgICAgIH0sCiAgICAgICAgIGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgIEBlcnJv
cldyaXRhYmxlU3RyZWFtLkBhcHBseShzdHJlYW0sIFtyXSk7CiAgICAgICAgIH0KICAgICApOwot
Ci0gICAgcmV0dXJuIHVuZGVmaW5lZDsKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>