<?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>163996</bug_id>
          
          <creation_ts>2016-10-25 16:57:04 -0700</creation_ts>
          <short_desc>String.prototype.replace() should throw an OutOfMemoryError when using too much memory.</short_desc>
          <delta_ts>2016-10-28 06:20:07 -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>JavaScriptCore</component>
          <version>WebKit Local 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>164125</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1244545</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-10-25 16:57:04 -0700</bug_when>
    <thetext>Currently, it just crashes with an allocation failure, which is correct behavior but not too friendly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244546</commentid>
    <comment_count>1</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-10-25 16:58:12 -0700</bug_when>
    <thetext>&lt;rdar://problem/28263117&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244556</commentid>
    <comment_count>2</comment_count>
      <attachid>292852</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-10-25 17:07:26 -0700</bug_when>
    <thetext>Created attachment 292852
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244563</commentid>
    <comment_count>3</comment_count>
      <attachid>292852</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-10-25 17:17:51 -0700</bug_when>
    <thetext>Comment on attachment 292852
proposed patch.

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

&gt; Source/JavaScriptCore/runtime/StringPrototype.cpp:462
&gt; +            THROW_AND_RETURN_IF_FAIL(exec, scope, sourceRanges.tryConstructAndAppend(lastIndex, result.start - lastIndex));

I don&apos;t really like this idiom because it buries the real code inside the error handling macro.

How about this:

if (!sourceRanges.tryConstructAndAppend(lastIndex, result.start - lastIndex))
    OUT_OF_MEMORY(exec, scope);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244564</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-10-25 17:19:06 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 292852 [details]
&gt; proposed patch.
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=292852&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/StringPrototype.cpp:462
&gt; &gt; +            THROW_AND_RETURN_IF_FAIL(exec, scope, sourceRanges.tryConstructAndAppend(lastIndex, result.start - lastIndex));
&gt; 
&gt; I don&apos;t really like this idiom because it buries the real code inside the
&gt; error handling macro.
&gt; 
&gt; How about this:
&gt; 
&gt; if (!sourceRanges.tryConstructAndAppend(lastIndex, result.start - lastIndex))
&gt;     OUT_OF_MEMORY(exec, scope);

Sure.  I&apos;ll make the change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244567</commentid>
    <comment_count>5</comment_count>
      <attachid>292853</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-10-25 17:25:38 -0700</bug_when>
    <thetext>Created attachment 292853
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244574</commentid>
    <comment_count>6</comment_count>
      <attachid>292853</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-10-25 17:32:54 -0700</bug_when>
    <thetext>Comment on attachment 292853
proposed patch.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244588</commentid>
    <comment_count>7</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-10-25 18:19:17 -0700</bug_when>
    <thetext>Thanks for the review.  Landed in r207861: &lt;http://trac.webkit.org/r207861&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292852</attachid>
            <date>2016-10-25 17:07:26 -0700</date>
            <delta_ts>2016-10-25 17:25:38 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-163996.patch</filename>
            <type>text/plain</type>
            <size>12209</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMDc4NTUpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDE2LTEwLTI1ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KKworICAgICAgICBTdHJpbmcucHJvdG90eXBlLnJlcGxhY2UoKSBzaG91bGQgdGhyb3cgYW4g
T3V0T2ZNZW1vcnlFcnJvciB3aGVuIHVzaW5nIHRvbyBtdWNoIG1lbW9yeS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Mzk5NgorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMjgyNjMxMTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBzdHJlc3Mvc3RyaW5nLXByb3RvdHlwZS1yZXBsYWNlLXNob3VsZC10
aHJvdy1vdXQtb2YtbWVtb3J5LWVycm9yLXdoZW4tdXNpbmctdG9vLW11Y2gtbWVtb3J5LmpzOiBB
ZGRlZC4KKwogMjAxNi0xMC0yNSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAg
ICAgICAgSlNTdHJpbmdKb2luZXI6OmpvaW5lZExlbmd0aCgpIHNob3VsZCBsaW1pdCBqb2luZWQg
c3RyaW5nIGxlbmd0aHMgdG8gSU5UX01BWC4KSW5kZXg6IEpTVGVzdHMvc3RyZXNzL3N0cmluZy1w
cm90b3R5cGUtcmVwbGFjZS1zaG91bGQtdGhyb3ctb3V0LW9mLW1lbW9yeS1lcnJvci13aGVuLXVz
aW5nLXRvby1tdWNoLW1lbW9yeS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9zdHJp
bmctcHJvdG90eXBlLXJlcGxhY2Utc2hvdWxkLXRocm93LW91dC1vZi1tZW1vcnktZXJyb3Itd2hl
bi11c2luZy10b28tbXVjaC1tZW1vcnkuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9zdHJl
c3Mvc3RyaW5nLXByb3RvdHlwZS1yZXBsYWNlLXNob3VsZC10aHJvdy1vdXQtb2YtbWVtb3J5LWVy
cm9yLXdoZW4tdXNpbmctdG9vLW11Y2gtbWVtb3J5LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMjMgQEAKKy8vQCBydW5GVExOb0NKSVQKKy8vQCBzbG93IQorLy9AbGFyZ2VIZWFwCisvLyBU
aGlzIHRlc3Qgc2hvdWxkIG5vdCBjcmFzaCBvciBmYWlsIGFueSBhc3NlcnRpb25zLgorCitmdW5j
dGlvbiBzaG91bGRFcXVhbCh0ZXN0SWQsIGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0
dWFsICE9IGV4cGVjdGVkKSB7CisgICAgICAgIHRocm93IHRlc3RJZCArICI6IEVSUk9SOiBleHBl
Y3QgIiArIGV4cGVjdGVkICsgIiwgYWN0dWFsICIgKyBhY3R1YWw7CisgICAgfQorfQorCit2YXIg
ZXhjZXB0aW9uID0gdW5kZWZpbmVkOworCitzMiA9ICd4Jy5yZXBlYXQoMHgzZmZmZmZmZik7City
MCA9IC8oKD89XFMpKS9naXk7CisKK3RyeSB7CisgICAgczIucmVwbGFjZShyMCwgJycpCit9IGNh
dGNoIChlKSB7CisgICAgZXhjZXB0aW9uID0gZTsKK30KKworc2hvdWxkRXF1YWwoMTAwMDAsIGV4
Y2VwdGlvbiwgIkVycm9yOiBPdXQgb2YgbWVtb3J5Iik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cJKHJldmlzaW9uIDIwNzg1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMyBAQAorMjAxNi0xMC0yNSAgTWFyayBMYW0g
IDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgU3RyaW5nLnByb3RvdHlwZS5yZXBsYWNl
KCkgc2hvdWxkIHRocm93IGFuIE91dE9mTWVtb3J5RXJyb3Igd2hlbiB1c2luZyB0b28gbXVjaCBt
ZW1vcnkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjM5OTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI4MjYzMTE3PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN0cmluZy5wcm90b3R5cGUucmVwbGFj
ZSgpIHVzZXMgYSBWZWN0b3IgaW50ZXJuYWxseSBmb3IgYm9va2tlZXBpbmcgd29yay4KKyAgICAg
ICAgQ3VycmVudGx5LCBpZiB0aGlzIHZlY3RvciBnZXRzIHRvbyBiaWcsIHdlIGp1c3QgY3Jhc2gg
b24gYWxsb2NhdGlvbiBmYWlsdXJlLgorICAgICAgICBXaGlsZSB0aGlzIGlzIGNvcnJlY3QgYmVo
YXZpb3IsIGl0IGlzIG5vdCB0b28gZnJpZW5kbHkuCisKKyAgICAgICAgV2Ugbm93IGRldGVjdCB0
aGUgaW1taW5lbnQgZmFpbHVyZSwgYW5kIHRocm93IGEgT3V0T2ZNZW1vcnlFcnJvciBpbnN0ZWFk
LgorCisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlND
OjpyZW1vdmVVc2luZ1JlZ0V4cFNlYXJjaCk6CisgICAgICAgIChKU0M6OnJlcGxhY2VVc2luZ1Jl
Z0V4cFNlYXJjaCk6CisgICAgICAgIChKU0M6Om9wZXJhdGlvblN0cmluZ1Byb3RvRnVuY1JlcGxh
Y2VSZWdFeHBFbXB0eVN0cik6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1JlcGxhY2VV
c2luZ1JlZ0V4cCk6CisKIDIwMTYtMTAtMjUgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29t
PgogCiAgICAgICAgIEFkZCBUaHJvd1Njb3BlOjpyZWxlYXNlKCkgY2FsbHMgYXQgYWxsIGNhbGwg
c2l0ZXMgb2YganNNYWtlTm9udHJpdmlhbFN0cmluZygpLgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDc4
NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00MzMsOCArNDMzLDE3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5F
IEpTVmFsdWUganNTcGxpY2VTdWIKICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgV1RGTW92ZShp
bXBsKSk7CiB9CiAKKyNkZWZpbmUgVEhST1dfQU5EX1JFVFVSTl9JRl9GQUlMKGV4ZWNfXywgc2Nv
cGVfXywgdHJ5Q29uc3RydWN0QW5kQXBwZW5kU3VjY2Vzc19fKSBcCisgICAgZG8geyBcCisgICAg
ICAgIGlmIChVTkxJS0VMWSghdHJ5Q29uc3RydWN0QW5kQXBwZW5kU3VjY2Vzc19fKSkgeyBcCisg
ICAgICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlY19fLCBzY29wZV9fKTsgXAorICAg
ICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7IFwKKyAgICAgICAgfSBcCisgICAgfSB3
aGlsZSAoZmFsc2UpCisKIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIHJlbW92
ZVVzaW5nUmVnRXhwU2VhcmNoKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU1N0cmluZyogc3Ry
aW5nLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgUmVnRXhwKiByZWdFeHApCiB7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1
cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKICAgICAKICAgICBzaXplX3QgbGFzdEluZGV4ID0gMDsK
QEAgLTQ1MCw3ICs0NTksNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSBy
ZW1vCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBpZiAobGFzdEluZGV4IDwgcmVzdWx0
LnN0YXJ0KQotICAgICAgICAgICAgc291cmNlUmFuZ2VzLmNvbnN0cnVjdEFuZEFwcGVuZChsYXN0
SW5kZXgsIHJlc3VsdC5zdGFydCAtIGxhc3RJbmRleCk7CisgICAgICAgICAgICBUSFJPV19BTkRf
UkVUVVJOX0lGX0ZBSUwoZXhlYywgc2NvcGUsIHNvdXJjZVJhbmdlcy50cnlDb25zdHJ1Y3RBbmRB
cHBlbmQobGFzdEluZGV4LCByZXN1bHQuc3RhcnQgLSBsYXN0SW5kZXgpKTsKIAogICAgICAgICBs
YXN0SW5kZXggPSByZXN1bHQuZW5kOwogICAgICAgICBzdGFydFBvc2l0aW9uID0gbGFzdEluZGV4
OwpAQCAtNDY3LDggKzQ3Niw5IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVl
IHJlbW8KICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzdHJpbmcpOwogCiAgICAgaWYg
KHN0YXRpY19jYXN0PHVuc2lnbmVkPihsYXN0SW5kZXgpIDwgc291cmNlTGVuKQotICAgICAgICBz
b3VyY2VSYW5nZXMuY29uc3RydWN0QW5kQXBwZW5kKGxhc3RJbmRleCwgc291cmNlTGVuIC0gbGFz
dEluZGV4KTsKKyAgICAgICAgVEhST1dfQU5EX1JFVFVSTl9JRl9GQUlMKGV4ZWMsIHNjb3BlLCBz
b3VyY2VSYW5nZXMudHJ5Q29uc3RydWN0QW5kQXBwZW5kKGxhc3RJbmRleCwgc291cmNlTGVuIC0g
bGFzdEluZGV4KSk7CiAKKyAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1NwbGljZVN1YnN0cmluZ3MoZXhlYywgc3RyaW5nLCBzb3VyY2UsIHNvdXJjZVJh
bmdlcy5kYXRhKCksIHNvdXJjZVJhbmdlcy5zaXplKCkpKTsKIH0KIApAQCAtNDkwLDggKzUwMCwx
MCBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSByZXBsCiAgICAgICAgIHJl
Z0V4cE9iamVjdC0+c2V0TGFzdEluZGV4KGV4ZWMsIDApOwogICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgICAgICBpZiAoY2FsbFR5cGUg
PT0gQ2FsbFR5cGU6Ok5vbmUgJiYgIXJlcGxhY2VtZW50U3RyaW5nLmxlbmd0aCgpKQorICAgICAg
ICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUgJiYgIXJlcGxhY2VtZW50U3RyaW5nLmxl
bmd0aCgpKSB7CisgICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgICAgICAgICByZXR1
cm4gcmVtb3ZlVXNpbmdSZWdFeHBTZWFyY2godm0sIGV4ZWMsIHN0cmluZywgc291cmNlLCByZWdF
eHApOworICAgICAgICB9CiAgICAgfQogCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgd3JvbmcgYmVj
YXVzZSB3ZSBtYXkgYmUgY2FsbGVkIGRpcmVjdGx5IGZyb20gdGhlIEZUTC4KQEAgLTUxOCw3ICs1
MzAsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSByZXBsCiAgICAgICAg
ICAgICAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAg
ICAgICAgICAgICAgc291cmNlUmFuZ2VzLmNvbnN0cnVjdEFuZEFwcGVuZChsYXN0SW5kZXgsIHJl
c3VsdC5zdGFydCAtIGxhc3RJbmRleCk7CisgICAgICAgICAgICAgICAgVEhST1dfQU5EX1JFVFVS
Tl9JRl9GQUlMKGV4ZWMsIHNjb3BlLCBzb3VyY2VSYW5nZXMudHJ5Q29uc3RydWN0QW5kQXBwZW5k
KGxhc3RJbmRleCwgcmVzdWx0LnN0YXJ0IC0gbGFzdEluZGV4KSk7CiAKICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBpID0gMDsKICAgICAgICAgICAgICAgICBmb3IgKDsgaSA8IHJlZ0V4cC0+bnVt
U3VicGF0dGVybnMoKSArIDE7ICsraSkgewpAQCAtNTU2LDcgKzU2OCw3IEBAIHN0YXRpYyBBTFdB
WVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIHJlcGwKICAgICAgICAgICAgICAgICBpZiAoIXJlc3Vs
dCkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgICAgICBzb3VyY2VS
YW5nZXMuY29uc3RydWN0QW5kQXBwZW5kKGxhc3RJbmRleCwgcmVzdWx0LnN0YXJ0IC0gbGFzdElu
ZGV4KTsKKyAgICAgICAgICAgICAgICBUSFJPV19BTkRfUkVUVVJOX0lGX0ZBSUwoZXhlYywgc2Nv
cGUsIHNvdXJjZVJhbmdlcy50cnlDb25zdHJ1Y3RBbmRBcHBlbmQobGFzdEluZGV4LCByZXN1bHQu
c3RhcnQgLSBsYXN0SW5kZXgpKTsKIAogICAgICAgICAgICAgICAgIHVuc2lnbmVkIGkgPSAwOwog
ICAgICAgICAgICAgICAgIGZvciAoOyBpIDwgcmVnRXhwLT5udW1TdWJwYXR0ZXJucygpICsgMTsg
KytpKSB7CkBAIC01OTYsNyArNjA4LDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpT
VmFsdWUgcmVwbAogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICBpZiAoY2Fs
bFR5cGUgIT0gQ2FsbFR5cGU6Ok5vbmUpIHsKLSAgICAgICAgICAgICAgICBzb3VyY2VSYW5nZXMu
Y29uc3RydWN0QW5kQXBwZW5kKGxhc3RJbmRleCwgcmVzdWx0LnN0YXJ0IC0gbGFzdEluZGV4KTsK
KyAgICAgICAgICAgICAgICBUSFJPV19BTkRfUkVUVVJOX0lGX0ZBSUwoZXhlYywgc2NvcGUsIHNv
dXJjZVJhbmdlcy50cnlDb25zdHJ1Y3RBbmRBcHBlbmQobGFzdEluZGV4LCByZXN1bHQuc3RhcnQg
LSBsYXN0SW5kZXgpKTsKIAogICAgICAgICAgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFy
Z3M7CiAKQEAgLTYyMCw3ICs2MzIsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNW
YWx1ZSByZXBsCiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGludCByZXBs
TGVuID0gcmVwbGFjZW1lbnRTdHJpbmcubGVuZ3RoKCk7CiAgICAgICAgICAgICAgICAgaWYgKGxh
c3RJbmRleCA8IHJlc3VsdC5zdGFydCB8fCByZXBsTGVuKSB7Ci0gICAgICAgICAgICAgICAgICAg
IHNvdXJjZVJhbmdlcy5jb25zdHJ1Y3RBbmRBcHBlbmQobGFzdEluZGV4LCByZXN1bHQuc3RhcnQg
LSBsYXN0SW5kZXgpOworICAgICAgICAgICAgICAgICAgICBUSFJPV19BTkRfUkVUVVJOX0lGX0ZB
SUwoZXhlYywgc2NvcGUsIHNvdXJjZVJhbmdlcy50cnlDb25zdHJ1Y3RBbmRBcHBlbmQobGFzdElu
ZGV4LCByZXN1bHQuc3RhcnQgLSBsYXN0SW5kZXgpKTsKIAogICAgICAgICAgICAgICAgICAgICBp
ZiAocmVwbExlbikKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50cy5hcHBlbmQo
c3Vic3RpdHV0ZUJhY2tyZWZlcmVuY2VzKHJlcGxhY2VtZW50U3RyaW5nLCBzb3VyY2UsIG92ZWN0
b3IsIHJlZ0V4cCkpOwpAQCAtNjQ1LDcgKzY1Nyw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEVu
Y29kZWRKU1ZhbHVlIHJlcGwKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzdHJpbmcp
OwogCiAgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihsYXN0SW5kZXgpIDwgc291cmNlTGVu
KQotICAgICAgICBzb3VyY2VSYW5nZXMuY29uc3RydWN0QW5kQXBwZW5kKGxhc3RJbmRleCwgc291
cmNlTGVuIC0gbGFzdEluZGV4KTsKKyAgICAgICAgVEhST1dfQU5EX1JFVFVSTl9JRl9GQUlMKGV4
ZWMsIHNjb3BlLCBzb3VyY2VSYW5nZXMudHJ5Q29uc3RydWN0QW5kQXBwZW5kKGxhc3RJbmRleCwg
c291cmNlTGVuIC0gbGFzdEluZGV4KSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
U3BsaWNlU3Vic3RyaW5nc1dpdGhTZXBhcmF0b3JzKGV4ZWMsIHN0cmluZywgc291cmNlLCBzb3Vy
Y2VSYW5nZXMuZGF0YSgpLCBzb3VyY2VSYW5nZXMuc2l6ZSgpLCByZXBsYWNlbWVudHMuZGF0YSgp
LCByZXBsYWNlbWVudHMuc2l6ZSgpKSk7CiB9CkBAIC02NjIsMTEgKzY3NCwxMyBAQCBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN0CiAgICAgICAgIC8vIEVTNS4xIDE1LjUu
NC4xMCBzdGVwIDguYS4KICAgICAgICAgc2VhcmNoVmFsdWUtPnNldExhc3RJbmRleChleGVjLCAw
KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CisgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICAgICAgcmV0dXJuIHJlbW92ZVVzaW5nUmVn
RXhwU2VhcmNoKHZtLCBleGVjLCB0aGlzVmFsdWUsIHRoaXNWYWx1ZS0+dmFsdWUoZXhlYyksIHJl
Z0V4cCk7CiAgICAgfQogCiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgU3RyaW5nIHJlcGxh
Y2VtZW50U3RyaW5nID0gZW1wdHlTdHJpbmcoKTsKKyAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAg
cmV0dXJuIHJlcGxhY2VVc2luZ1JlZ0V4cFNlYXJjaCgKICAgICAgICAgdm0sIGV4ZWMsIHRoaXNW
YWx1ZSwgc2VhcmNoVmFsdWUsIGNhbGxEYXRhLCBDYWxsVHlwZTo6Tm9uZSwgcmVwbGFjZW1lbnRT
dHJpbmcsIEpTVmFsdWUoKSk7CiB9CkBAIC02OTUsNiArNzA5LDcgQEAgc3RhdGljIEFMV0FZU19J
TkxJTkUgRW5jb2RlZEpTVmFsdWUgcmVwbAogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB9CiAKKyAgICBzY29wZS5yZWxlYXNlKCk7CiAg
ICAgcmV0dXJuIHJlcGxhY2VVc2luZ1JlZ0V4cFNlYXJjaCgKICAgICAgICAgdm0sIGV4ZWMsIHN0
cmluZywgc2VhcmNoVmFsdWUsIGNhbGxEYXRhLCBjYWxsVHlwZSwgcmVwbGFjZW1lbnRTdHJpbmcs
IHJlcGxhY2VWYWx1ZSk7CiB9CkBAIC04MzIsNiArODQ3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogICAgIGlmICghc2VhcmNoVmFsdWUuaW5oZXJpdHMoUmVn
RXhwT2JqZWN0OjppbmZvKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogCisgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIHJldHVybiByZXBsYWNlVXNp
bmdSZWdFeHBTZWFyY2goZXhlYy0+dm0oKSwgZXhlYywgc3RyaW5nLCBzZWFyY2hWYWx1ZSwgZXhl
Yy0+YXJndW1lbnQoMSkpOwogfQogCkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMjA3ODUxKQorKysgU291cmNl
L1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxNi0xMC0y
NSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgU3RyaW5nLnByb3Rv
dHlwZS5yZXBsYWNlKCkgc2hvdWxkIHRocm93IGFuIE91dE9mTWVtb3J5RXJyb3Igd2hlbiB1c2lu
ZyB0b28gbXVjaCBtZW1vcnkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjM5OTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI4MjYzMTE3PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1ZlY3Rv
ci5oOgorICAgICAgICAoV1RGOjptaW5DYXBhY2l0eT46OnRyeUNvbnN0cnVjdEFuZEFwcGVuZCk6
CisgICAgICAgIChXVEY6Om1pbkNhcGFjaXR5Pjo6dHJ5Q29uc3RydWN0QW5kQXBwZW5kU2xvd0Nh
c2UpOgorICAgICAgICAtIEFkZGVkIHRyeSB2ZXJzaW9ucyBvZiBjb25zdHJ1Y3RBbmRBcHBlbmQo
KSBzbyB0aGF0IHdlIGNhbiBoYW5kbGUgdGhlIGZhaWx1cmUKKyAgICAgICAgICB0byBhbGxvY2F0
ZSBtb3JlIGdyYWNlZnVsbHkuCisKIDIwMTYtMTAtMjUgIEtvbnN0YW50aW4gVG9rYXJldiAgPGFu
bnVsZW5AeWFuZGV4LnJ1PgogCiAgICAgICAgIE5vbi1zcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGRl
bGV0ZU9iamVjdCBzaG91bGQgbm90IGhhdmUgdGVtcGxhdGUgYXJndW1lbnQKSW5kZXg6IFNvdXJj
ZS9XVEYvd3RmL1ZlY3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1ZlY3Rvci5o
CShyZXZpc2lvbiAyMDc4NTEpCisrKyBTb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaAkod29ya2luZyBj
b3B5KQpAQCAtNzIyLDYgKzcyMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZChWYWx1ZVR5
cGUmJiB2YWx1ZSkgeyBhcHBlbmQ8VmFsdWVUeXBlPihzdGQ6OmZvcndhcmQ8VmFsdWVUeXBlPih2
YWx1ZSkpOyB9CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gdm9pZCBhcHBlbmQoVSYmKTsKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPiB2b2lkIGNvbnN0cnVjdEFuZEFwcGVuZChBcmdz
JiYuLi4pOworICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+IGJvb2wgdHJ5Q29uc3RydWN0
QW5kQXBwZW5kKEFyZ3MmJi4uLik7CiAKICAgICB2b2lkIHVuY2hlY2tlZEFwcGVuZChWYWx1ZVR5
cGUmJiB2YWx1ZSkgeyB1bmNoZWNrZWRBcHBlbmQ8VmFsdWVUeXBlPihzdGQ6OmZvcndhcmQ8VmFs
dWVUeXBlPih2YWx1ZSkpOyB9CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gdm9pZCB1bmNoZWNr
ZWRBcHBlbmQoVSYmKTsKQEAgLTc4NSw2ICs3ODYsNyBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFU+IFUqIGV4cGFuZENhcGFjaXR5KHNpemVfdCBuZXdNaW5DYXBhY2l0eSwgVSop
OyAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiB2b2lkIGFwcGVuZFNsb3dDYXNlKFUmJik7CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gdm9pZCBjb25zdHJ1Y3RBbmRBcHBlbmRTbG93
Q2FzZShBcmdzJiYuLi4pOworICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+IGJvb2wgdHJ5
Q29uc3RydWN0QW5kQXBwZW5kU2xvd0Nhc2UoQXJncyYmLi4uKTsKIAogICAgIHZvaWQgYXNhblNl
dEluaXRpYWxCdWZmZXJTaXplVG8oc2l6ZV90KTsKICAgICB2b2lkIGFzYW5TZXRCdWZmZXJTaXpl
VG9GdWxsQ2FwYWNpdHkoKTsKQEAgLTEyMjUsNiArMTIyNywxOSBAQCBBTFdBWVNfSU5MSU5FIHZv
aWQgVmVjdG9yPFQsIGlubGluZUNhcGFjCiAgICAgY29uc3RydWN0QW5kQXBwZW5kU2xvd0Nhc2Uo
c3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVCwg
c2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBt
aW5DYXBhY2l0eT4gdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4KK0FMV0FZU19JTkxJTkUgYm9v
bCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+
Ojp0cnlDb25zdHJ1Y3RBbmRBcHBlbmQoQXJncyYmLi4uIGFyZ3MpCit7CisgICAgaWYgKHNpemUo
KSAhPSBjYXBhY2l0eSgpKSB7CisgICAgICAgIGFzYW5CdWZmZXJTaXplV2lsbENoYW5nZVRvKG1f
c2l6ZSArIDEpOworICAgICAgICBuZXcgKE5vdE51bGwsIGVuZCgpKSBUKHN0ZDo6Zm9yd2FyZDxB
cmdzPihhcmdzKS4uLik7CisgICAgICAgICsrbV9zaXplOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisgICAgCisgICAgcmV0dXJuIHRyeUNvbnN0cnVjdEFuZEFwcGVuZFNsb3dDYXNlKHN0
ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNp
emVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWlu
Q2FwYWNpdHk+IHRlbXBsYXRlPHR5cGVuYW1lIFU+CiB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBh
Y2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46OmFwcGVuZFNsb3dDYXNlKFUmJiB2
YWx1ZSkKIHsKQEAgLTEyNTIsNiArMTI2NywyMSBAQCB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBh
Y2l0eSwgT3ZlcmZsb3dICiAgICAgKyttX3NpemU7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQs
IHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3Qg
bWluQ2FwYWNpdHk+IHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+Citib29sIFZlY3RvcjxULCBp
bmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46OnRyeUNvbnN0cnVj
dEFuZEFwcGVuZFNsb3dDYXNlKEFyZ3MmJi4uLiBhcmdzKQoreworICAgIEFTU0VSVChzaXplKCkg
PT0gY2FwYWNpdHkoKSk7CisgICAgCisgICAgaWYgKFVOTElLRUxZKCF0cnlFeHBhbmRDYXBhY2l0
eShzaXplKCkgKyAxKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBBU1NFUlQoYmVnaW4o
KSk7CisgICAgCisgICAgYXNhbkJ1ZmZlclNpemVXaWxsQ2hhbmdlVG8obV9zaXplICsgMSk7Cisg
ICAgbmV3IChOb3ROdWxsLCBlbmQoKSkgVChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwor
ICAgICsrbV9zaXplOworICAgIHJldHVybiB0cnVlOworfQorCiAvLyBUaGlzIHZlcnNpb24gb2Yg
YXBwZW5kIHNhdmVzIGEgYnJhbmNoIGluIHRoZSBjYXNlIHdoZXJlIHlvdSBrbm93IHRoYXQgdGhl
CiAvLyB2ZWN0b3IncyBjYXBhY2l0eSBpcyBsYXJnZSBlbm91Z2ggZm9yIHRoZSBhcHBlbmQgdG8g
c3VjY2VlZC4KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292853</attachid>
            <date>2016-10-25 17:25:38 -0700</date>
            <delta_ts>2016-10-25 17:32:54 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-163996.patch</filename>
            <type>text/plain</type>
            <size>12521</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMDc4NTUpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDE2LTEwLTI1ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KKworICAgICAgICBTdHJpbmcucHJvdG90eXBlLnJlcGxhY2UoKSBzaG91bGQgdGhyb3cgYW4g
T3V0T2ZNZW1vcnlFcnJvciB3aGVuIHVzaW5nIHRvbyBtdWNoIG1lbW9yeS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Mzk5NgorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMjgyNjMxMTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBzdHJlc3Mvc3RyaW5nLXByb3RvdHlwZS1yZXBsYWNlLXNob3VsZC10
aHJvdy1vdXQtb2YtbWVtb3J5LWVycm9yLXdoZW4tdXNpbmctdG9vLW11Y2gtbWVtb3J5LmpzOiBB
ZGRlZC4KKwogMjAxNi0xMC0yNSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAg
ICAgICAgSlNTdHJpbmdKb2luZXI6OmpvaW5lZExlbmd0aCgpIHNob3VsZCBsaW1pdCBqb2luZWQg
c3RyaW5nIGxlbmd0aHMgdG8gSU5UX01BWC4KSW5kZXg6IEpTVGVzdHMvc3RyZXNzL3N0cmluZy1w
cm90b3R5cGUtcmVwbGFjZS1zaG91bGQtdGhyb3ctb3V0LW9mLW1lbW9yeS1lcnJvci13aGVuLXVz
aW5nLXRvby1tdWNoLW1lbW9yeS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9zdHJp
bmctcHJvdG90eXBlLXJlcGxhY2Utc2hvdWxkLXRocm93LW91dC1vZi1tZW1vcnktZXJyb3Itd2hl
bi11c2luZy10b28tbXVjaC1tZW1vcnkuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9zdHJl
c3Mvc3RyaW5nLXByb3RvdHlwZS1yZXBsYWNlLXNob3VsZC10aHJvdy1vdXQtb2YtbWVtb3J5LWVy
cm9yLXdoZW4tdXNpbmctdG9vLW11Y2gtbWVtb3J5LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMjMgQEAKKy8vQCBydW5GVExOb0NKSVQKKy8vQCBzbG93IQorLy9AbGFyZ2VIZWFwCisvLyBU
aGlzIHRlc3Qgc2hvdWxkIG5vdCBjcmFzaCBvciBmYWlsIGFueSBhc3NlcnRpb25zLgorCitmdW5j
dGlvbiBzaG91bGRFcXVhbCh0ZXN0SWQsIGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0
dWFsICE9IGV4cGVjdGVkKSB7CisgICAgICAgIHRocm93IHRlc3RJZCArICI6IEVSUk9SOiBleHBl
Y3QgIiArIGV4cGVjdGVkICsgIiwgYWN0dWFsICIgKyBhY3R1YWw7CisgICAgfQorfQorCit2YXIg
ZXhjZXB0aW9uID0gdW5kZWZpbmVkOworCitzMiA9ICd4Jy5yZXBlYXQoMHgzZmZmZmZmZik7City
MCA9IC8oKD89XFMpKS9naXk7CisKK3RyeSB7CisgICAgczIucmVwbGFjZShyMCwgJycpCit9IGNh
dGNoIChlKSB7CisgICAgZXhjZXB0aW9uID0gZTsKK30KKworc2hvdWxkRXF1YWwoMTAwMDAsIGV4
Y2VwdGlvbiwgIkVycm9yOiBPdXQgb2YgbWVtb3J5Iik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cJKHJldmlzaW9uIDIwNzg1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMyBAQAorMjAxNi0xMC0yNSAgTWFyayBMYW0g
IDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgU3RyaW5nLnByb3RvdHlwZS5yZXBsYWNl
KCkgc2hvdWxkIHRocm93IGFuIE91dE9mTWVtb3J5RXJyb3Igd2hlbiB1c2luZyB0b28gbXVjaCBt
ZW1vcnkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjM5OTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI4MjYzMTE3PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN0cmluZy5wcm90b3R5cGUucmVwbGFj
ZSgpIHVzZXMgYSBWZWN0b3IgaW50ZXJuYWxseSBmb3IgYm9va2tlZXBpbmcgd29yay4KKyAgICAg
ICAgQ3VycmVudGx5LCBpZiB0aGlzIHZlY3RvciBnZXRzIHRvbyBiaWcsIHdlIGp1c3QgY3Jhc2gg
b24gYWxsb2NhdGlvbiBmYWlsdXJlLgorICAgICAgICBXaGlsZSB0aGlzIGlzIGNvcnJlY3QgYmVo
YXZpb3IsIGl0IGlzIG5vdCB0b28gZnJpZW5kbHkuCisKKyAgICAgICAgV2Ugbm93IGRldGVjdCB0
aGUgaW1taW5lbnQgZmFpbHVyZSwgYW5kIHRocm93IGEgT3V0T2ZNZW1vcnlFcnJvciBpbnN0ZWFk
LgorCisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlND
OjpyZW1vdmVVc2luZ1JlZ0V4cFNlYXJjaCk6CisgICAgICAgIChKU0M6OnJlcGxhY2VVc2luZ1Jl
Z0V4cFNlYXJjaCk6CisgICAgICAgIChKU0M6Om9wZXJhdGlvblN0cmluZ1Byb3RvRnVuY1JlcGxh
Y2VSZWdFeHBFbXB0eVN0cik6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1JlcGxhY2VV
c2luZ1JlZ0V4cCk6CisKIDIwMTYtMTAtMjUgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29t
PgogCiAgICAgICAgIEFkZCBUaHJvd1Njb3BlOjpyZWxlYXNlKCkgY2FsbHMgYXQgYWxsIGNhbGwg
c2l0ZXMgb2YganNNYWtlTm9udHJpdmlhbFN0cmluZygpLgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDc4
NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00MzMsOCArNDMzLDE1IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5F
IEpTVmFsdWUganNTcGxpY2VTdWIKICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgV1RGTW92ZShp
bXBsKSk7CiB9CiAKKyNkZWZpbmUgT1VUX09GX01FTU9SWShleGVjX18sIHNjb3BlX18pIFwKKyAg
ICBkbyB7IFwKKyAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWNfXywgc2NvcGVfXyk7
IFwKKyAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7IFwKKyAgICB9IHdoaWxlIChmYWxz
ZSkKKwogc3RhdGljIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgcmVtb3ZlVXNpbmdSZWdF
eHBTZWFyY2goVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5nKiBzdHJpbmcsIGNvbnN0
IFN0cmluZyYgc291cmNlLCBSZWdFeHAqIHJlZ0V4cCkKIHsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVy
U2NvcGUoZmFsc2UpOwogICAgIAogICAgIHNpemVfdCBsYXN0SW5kZXggPSAwOwpAQCAtNDQ5LDkg
KzQ1NiwxMCBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSByZW1vCiAgICAg
ICAgIGlmICghcmVzdWx0KQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgaWYgKGxhc3RJ
bmRleCA8IHJlc3VsdC5zdGFydCkKLSAgICAgICAgICAgIHNvdXJjZVJhbmdlcy5jb25zdHJ1Y3RB
bmRBcHBlbmQobGFzdEluZGV4LCByZXN1bHQuc3RhcnQgLSBsYXN0SW5kZXgpOwotCisgICAgICAg
IGlmIChsYXN0SW5kZXggPCByZXN1bHQuc3RhcnQpIHsKKyAgICAgICAgICAgIGlmIChVTkxJS0VM
WSghc291cmNlUmFuZ2VzLnRyeUNvbnN0cnVjdEFuZEFwcGVuZChsYXN0SW5kZXgsIHJlc3VsdC5z
dGFydCAtIGxhc3RJbmRleCkpKQorICAgICAgICAgICAgICAgIE9VVF9PRl9NRU1PUlkoZXhlYywg
c2NvcGUpOworICAgICAgICB9CiAgICAgICAgIGxhc3RJbmRleCA9IHJlc3VsdC5lbmQ7CiAgICAg
ICAgIHN0YXJ0UG9zaXRpb24gPSBsYXN0SW5kZXg7CiAKQEAgLTQ2Niw5ICs0NzQsMTEgQEAgc3Rh
dGljIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgcmVtbwogICAgIGlmICghbGFzdEluZGV4
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHN0cmluZyk7CiAKLSAgICBpZiAoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGxhc3RJbmRleCkgPCBzb3VyY2VMZW4pCi0gICAgICAgIHNvdXJj
ZVJhbmdlcy5jb25zdHJ1Y3RBbmRBcHBlbmQobGFzdEluZGV4LCBzb3VyY2VMZW4gLSBsYXN0SW5k
ZXgpOwotCisgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihsYXN0SW5kZXgpIDwgc291cmNl
TGVuKSB7CisgICAgICAgIGlmIChVTkxJS0VMWSghc291cmNlUmFuZ2VzLnRyeUNvbnN0cnVjdEFu
ZEFwcGVuZChsYXN0SW5kZXgsIHNvdXJjZUxlbiAtIGxhc3RJbmRleCkpKQorICAgICAgICAgICAg
T1VUX09GX01FTU9SWShleGVjLCBzY29wZSk7CisgICAgfQorICAgIHNjb3BlLnJlbGVhc2UoKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3BsaWNlU3Vic3RyaW5ncyhleGVjLCBzdHJp
bmcsIHNvdXJjZSwgc291cmNlUmFuZ2VzLmRhdGEoKSwgc291cmNlUmFuZ2VzLnNpemUoKSkpOwog
fQogCkBAIC00OTAsOCArNTAwLDEwIEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1Zh
bHVlIHJlcGwKICAgICAgICAgcmVnRXhwT2JqZWN0LT5zZXRMYXN0SW5kZXgoZXhlYywgMCk7CiAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0g
ICAgICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSAmJiAhcmVwbGFjZW1lbnRTdHJp
bmcubGVuZ3RoKCkpCisgICAgICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSAmJiAh
cmVwbGFjZW1lbnRTdHJpbmcubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgIHNjb3BlLnJlbGVhc2Uo
KTsKICAgICAgICAgICAgIHJldHVybiByZW1vdmVVc2luZ1JlZ0V4cFNlYXJjaCh2bSwgZXhlYywg
c3RyaW5nLCBzb3VyY2UsIHJlZ0V4cCk7CisgICAgICAgIH0KICAgICB9CiAKICAgICAvLyBGSVhN
RTogVGhpcyBpcyB3cm9uZyBiZWNhdXNlIHdlIG1heSBiZSBjYWxsZWQgZGlyZWN0bHkgZnJvbSB0
aGUgRlRMLgpAQCAtNTE4LDcgKzUzMCw4IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEVuY29kZWRK
U1ZhbHVlIHJlcGwKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgICAgICBzb3VyY2VSYW5nZXMuY29uc3RydWN0QW5k
QXBwZW5kKGxhc3RJbmRleCwgcmVzdWx0LnN0YXJ0IC0gbGFzdEluZGV4KTsKKyAgICAgICAgICAg
ICAgICBpZiAoVU5MSUtFTFkoIXNvdXJjZVJhbmdlcy50cnlDb25zdHJ1Y3RBbmRBcHBlbmQobGFz
dEluZGV4LCByZXN1bHQuc3RhcnQgLSBsYXN0SW5kZXgpKSkKKyAgICAgICAgICAgICAgICAgICAg
T1VUX09GX01FTU9SWShleGVjLCBzY29wZSk7CiAKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
ID0gMDsKICAgICAgICAgICAgICAgICBmb3IgKDsgaSA8IHJlZ0V4cC0+bnVtU3VicGF0dGVybnMo
KSArIDE7ICsraSkgewpAQCAtNTU2LDcgKzU2OSw4IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEVu
Y29kZWRKU1ZhbHVlIHJlcGwKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgICAgICBzb3VyY2VSYW5nZXMuY29uc3Ry
dWN0QW5kQXBwZW5kKGxhc3RJbmRleCwgcmVzdWx0LnN0YXJ0IC0gbGFzdEluZGV4KTsKKyAgICAg
ICAgICAgICAgICBpZiAoVU5MSUtFTFkoIXNvdXJjZVJhbmdlcy50cnlDb25zdHJ1Y3RBbmRBcHBl
bmQobGFzdEluZGV4LCByZXN1bHQuc3RhcnQgLSBsYXN0SW5kZXgpKSkKKyAgICAgICAgICAgICAg
ICAgICAgT1VUX09GX01FTU9SWShleGVjLCBzY29wZSk7CiAKICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBpID0gMDsKICAgICAgICAgICAgICAgICBmb3IgKDsgaSA8IHJlZ0V4cC0+bnVtU3VicGF0
dGVybnMoKSArIDE7ICsraSkgewpAQCAtNTk2LDcgKzYxMCw4IEBAIHN0YXRpYyBBTFdBWVNfSU5M
SU5FIEVuY29kZWRKU1ZhbHVlIHJlcGwKICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAg
ICAgICAgaWYgKGNhbGxUeXBlICE9IENhbGxUeXBlOjpOb25lKSB7Ci0gICAgICAgICAgICAgICAg
c291cmNlUmFuZ2VzLmNvbnN0cnVjdEFuZEFwcGVuZChsYXN0SW5kZXgsIHJlc3VsdC5zdGFydCAt
IGxhc3RJbmRleCk7CisgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFzb3VyY2VSYW5nZXMu
dHJ5Q29uc3RydWN0QW5kQXBwZW5kKGxhc3RJbmRleCwgcmVzdWx0LnN0YXJ0IC0gbGFzdEluZGV4
KSkpCisgICAgICAgICAgICAgICAgICAgIE9VVF9PRl9NRU1PUlkoZXhlYywgc2NvcGUpOwogCiAg
ICAgICAgICAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKIApAQCAtNjIwLDcgKzYz
NSw4IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIHJlcGwKICAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgaW50IHJlcGxMZW4gPSByZXBsYWNlbWVudFN0
cmluZy5sZW5ndGgoKTsKICAgICAgICAgICAgICAgICBpZiAobGFzdEluZGV4IDwgcmVzdWx0LnN0
YXJ0IHx8IHJlcGxMZW4pIHsKLSAgICAgICAgICAgICAgICAgICAgc291cmNlUmFuZ2VzLmNvbnN0
cnVjdEFuZEFwcGVuZChsYXN0SW5kZXgsIHJlc3VsdC5zdGFydCAtIGxhc3RJbmRleCk7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWSghc291cmNlUmFuZ2VzLnRyeUNvbnN0cnVjdEFu
ZEFwcGVuZChsYXN0SW5kZXgsIHJlc3VsdC5zdGFydCAtIGxhc3RJbmRleCkpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgT1VUX09GX01FTU9SWShleGVjLCBzY29wZSk7CiAKICAgICAgICAgICAg
ICAgICAgICAgaWYgKHJlcGxMZW4pCiAgICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlbWVu
dHMuYXBwZW5kKHN1YnN0aXR1dGVCYWNrcmVmZXJlbmNlcyhyZXBsYWNlbWVudFN0cmluZywgc291
cmNlLCBvdmVjdG9yLCByZWdFeHApKTsKQEAgLTY0NCw5ICs2NjAsMTAgQEAgc3RhdGljIEFMV0FZ
U19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgcmVwbAogICAgIGlmICghbGFzdEluZGV4ICYmIHJlcGxh
Y2VtZW50cy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc3RyaW5n
KTsKIAotICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4obGFzdEluZGV4KSA8IHNvdXJjZUxl
bikKLSAgICAgICAgc291cmNlUmFuZ2VzLmNvbnN0cnVjdEFuZEFwcGVuZChsYXN0SW5kZXgsIHNv
dXJjZUxlbiAtIGxhc3RJbmRleCk7Ci0KKyAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxh
c3RJbmRleCkgPCBzb3VyY2VMZW4pIHsKKyAgICAgICAgaWYgKFVOTElLRUxZKCFzb3VyY2VSYW5n
ZXMudHJ5Q29uc3RydWN0QW5kQXBwZW5kKGxhc3RJbmRleCwgc291cmNlTGVuIC0gbGFzdEluZGV4
KSkpCisgICAgICAgICAgICBPVVRfT0ZfTUVNT1JZKGV4ZWMsIHNjb3BlKTsKKyAgICB9CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1NwbGljZVN1YnN0cmluZ3NXaXRoU2VwYXJhdG9ycyhl
eGVjLCBzdHJpbmcsIHNvdXJjZSwgc291cmNlUmFuZ2VzLmRhdGEoKSwgc291cmNlUmFuZ2VzLnNp
emUoKSwgcmVwbGFjZW1lbnRzLmRhdGEoKSwgcmVwbGFjZW1lbnRzLnNpemUoKSkpOwogfQogCkBA
IC02NjIsMTEgKzY3OSwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blN0CiAgICAgICAgIC8vIEVTNS4xIDE1LjUuNC4xMCBzdGVwIDguYS4KICAgICAgICAgc2VhcmNo
VmFsdWUtPnNldExhc3RJbmRleChleGVjLCAwKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKICAg
ICAgICAgcmV0dXJuIHJlbW92ZVVzaW5nUmVnRXhwU2VhcmNoKHZtLCBleGVjLCB0aGlzVmFsdWUs
IHRoaXNWYWx1ZS0+dmFsdWUoZXhlYyksIHJlZ0V4cCk7CiAgICAgfQogCiAgICAgQ2FsbERhdGEg
Y2FsbERhdGE7CiAgICAgU3RyaW5nIHJlcGxhY2VtZW50U3RyaW5nID0gZW1wdHlTdHJpbmcoKTsK
KyAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgcmV0dXJuIHJlcGxhY2VVc2luZ1JlZ0V4cFNlYXJj
aCgKICAgICAgICAgdm0sIGV4ZWMsIHRoaXNWYWx1ZSwgc2VhcmNoVmFsdWUsIGNhbGxEYXRhLCBD
YWxsVHlwZTo6Tm9uZSwgcmVwbGFjZW1lbnRTdHJpbmcsIEpTVmFsdWUoKSk7CiB9CkBAIC02OTUs
NiArNzE0LDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgcmVwbAogICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB9
CiAKKyAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgcmV0dXJuIHJlcGxhY2VVc2luZ1JlZ0V4cFNl
YXJjaCgKICAgICAgICAgdm0sIGV4ZWMsIHN0cmluZywgc2VhcmNoVmFsdWUsIGNhbGxEYXRhLCBj
YWxsVHlwZSwgcmVwbGFjZW1lbnRTdHJpbmcsIHJlcGxhY2VWYWx1ZSk7CiB9CkBAIC04MzIsNiAr
ODUyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogICAgIGlm
ICghc2VhcmNoVmFsdWUuaW5oZXJpdHMoUmVnRXhwT2JqZWN0OjppbmZvKCkpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCisgICAgc2NvcGUucmVsZWFz
ZSgpOwogICAgIHJldHVybiByZXBsYWNlVXNpbmdSZWdFeHBTZWFyY2goZXhlYy0+dm0oKSwgZXhl
Yywgc3RyaW5nLCBzZWFyY2hWYWx1ZSwgZXhlYy0+YXJndW1lbnQoMSkpOwogfQogCkluZGV4OiBT
b3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwko
cmV2aXNpb24gMjA3ODUxKQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNyBAQAorMjAxNi0xMC0yNSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5j
b20+CisKKyAgICAgICAgU3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlKCkgc2hvdWxkIHRocm93IGFu
IE91dE9mTWVtb3J5RXJyb3Igd2hlbiB1c2luZyB0b28gbXVjaCBtZW1vcnkuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM5OTYKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzI4MjYzMTE3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogd3RmL1ZlY3Rvci5oOgorICAgICAgICAoV1RGOjptaW5DYXBhY2l0
eT46OnRyeUNvbnN0cnVjdEFuZEFwcGVuZCk6CisgICAgICAgIChXVEY6Om1pbkNhcGFjaXR5Pjo6
dHJ5Q29uc3RydWN0QW5kQXBwZW5kU2xvd0Nhc2UpOgorICAgICAgICAtIEFkZGVkIHRyeSB2ZXJz
aW9ucyBvZiBjb25zdHJ1Y3RBbmRBcHBlbmQoKSBzbyB0aGF0IHdlIGNhbiBoYW5kbGUgdGhlIGZh
aWx1cmUKKyAgICAgICAgICB0byBhbGxvY2F0ZSBtb3JlIGdyYWNlZnVsbHkuCisKIDIwMTYtMTAt
MjUgIEtvbnN0YW50aW4gVG9rYXJldiAgPGFubnVsZW5AeWFuZGV4LnJ1PgogCiAgICAgICAgIE5v
bi1zcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGRlbGV0ZU9iamVjdCBzaG91bGQgbm90IGhhdmUgdGVt
cGxhdGUgYXJndW1lbnQKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCShyZXZpc2lvbiAyMDc4NTEpCisrKyBTb3VyY2Uv
V1RGL3d0Zi9WZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNzIyLDYgKzcyMiw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGFwcGVuZChWYWx1ZVR5cGUmJiB2YWx1ZSkgeyBhcHBlbmQ8VmFsdWVUeXBl
PihzdGQ6OmZvcndhcmQ8VmFsdWVUeXBlPih2YWx1ZSkpOyB9CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVT4gdm9pZCBhcHBlbmQoVSYmKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPiB2
b2lkIGNvbnN0cnVjdEFuZEFwcGVuZChBcmdzJiYuLi4pOworICAgIHRlbXBsYXRlPHR5cGVuYW1l
Li4uIEFyZ3M+IGJvb2wgdHJ5Q29uc3RydWN0QW5kQXBwZW5kKEFyZ3MmJi4uLik7CiAKICAgICB2
b2lkIHVuY2hlY2tlZEFwcGVuZChWYWx1ZVR5cGUmJiB2YWx1ZSkgeyB1bmNoZWNrZWRBcHBlbmQ8
VmFsdWVUeXBlPihzdGQ6OmZvcndhcmQ8VmFsdWVUeXBlPih2YWx1ZSkpOyB9CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVT4gdm9pZCB1bmNoZWNrZWRBcHBlbmQoVSYmKTsKQEAgLTc4NSw2ICs3ODYs
NyBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IFUqIGV4cGFuZENhcGFjaXR5
KHNpemVfdCBuZXdNaW5DYXBhY2l0eSwgVSopOyAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiB2
b2lkIGFwcGVuZFNsb3dDYXNlKFUmJik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4g
dm9pZCBjb25zdHJ1Y3RBbmRBcHBlbmRTbG93Q2FzZShBcmdzJiYuLi4pOworICAgIHRlbXBsYXRl
PHR5cGVuYW1lLi4uIEFyZ3M+IGJvb2wgdHJ5Q29uc3RydWN0QW5kQXBwZW5kU2xvd0Nhc2UoQXJn
cyYmLi4uKTsKIAogICAgIHZvaWQgYXNhblNldEluaXRpYWxCdWZmZXJTaXplVG8oc2l6ZV90KTsK
ICAgICB2b2lkIGFzYW5TZXRCdWZmZXJTaXplVG9GdWxsQ2FwYWNpdHkoKTsKQEAgLTEyMjUsNiAr
MTIyNywxOSBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjCiAgICAg
Y29uc3RydWN0QW5kQXBwZW5kU2xvd0Nhc2Uoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsK
IH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFt
ZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4gdGVtcGxhdGU8dHlwZW5hbWUu
Li4gQXJncz4KK0FMV0FZU19JTkxJTkUgYm9vbCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92
ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+Ojp0cnlDb25zdHJ1Y3RBbmRBcHBlbmQoQXJncyYm
Li4uIGFyZ3MpCit7CisgICAgaWYgKHNpemUoKSAhPSBjYXBhY2l0eSgpKSB7CisgICAgICAgIGFz
YW5CdWZmZXJTaXplV2lsbENoYW5nZVRvKG1fc2l6ZSArIDEpOworICAgICAgICBuZXcgKE5vdE51
bGwsIGVuZCgpKSBUKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgICAgICsrbV9z
aXplOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRyeUNv
bnN0cnVjdEFuZEFwcGVuZFNsb3dDYXNlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Cit9
CisKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUg
T3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+IHRlbXBsYXRlPHR5cGVuYW1lIFU+
CiB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBh
Y2l0eT46OmFwcGVuZFNsb3dDYXNlKFUmJiB2YWx1ZSkKIHsKQEAgLTEyNTIsNiArMTI2NywyMSBA
QCB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dICiAgICAgKyttX3NpemU7
CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5h
bWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+IHRlbXBsYXRlPHR5cGVuYW1l
Li4uIEFyZ3M+Citib29sIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVy
LCBtaW5DYXBhY2l0eT46OnRyeUNvbnN0cnVjdEFuZEFwcGVuZFNsb3dDYXNlKEFyZ3MmJi4uLiBh
cmdzKQoreworICAgIEFTU0VSVChzaXplKCkgPT0gY2FwYWNpdHkoKSk7CisgICAgCisgICAgaWYg
KFVOTElLRUxZKCF0cnlFeHBhbmRDYXBhY2l0eShzaXplKCkgKyAxKSkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBBU1NFUlQoYmVnaW4oKSk7CisgICAgCisgICAgYXNhbkJ1ZmZlclNpemVX
aWxsQ2hhbmdlVG8obV9zaXplICsgMSk7CisgICAgbmV3IChOb3ROdWxsLCBlbmQoKSkgVChzdGQ6
OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAgICsrbV9zaXplOworICAgIHJldHVybiB0cnVl
OworfQorCiAvLyBUaGlzIHZlcnNpb24gb2YgYXBwZW5kIHNhdmVzIGEgYnJhbmNoIGluIHRoZSBj
YXNlIHdoZXJlIHlvdSBrbm93IHRoYXQgdGhlCiAvLyB2ZWN0b3IncyBjYXBhY2l0eSBpcyBsYXJn
ZSBlbm91Z2ggZm9yIHRoZSBhcHBlbmQgdG8gc3VjY2VlZC4KIAo=
</data>
<flag name="review"
          id="315839"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>