<?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>135179</bug_id>
          
          <creation_ts>2014-07-22 15:01:51 -0700</creation_ts>
          <short_desc>Array.concat() should work on runtime arrays too</short_desc>
          <delta_ts>2014-07-23 10:25:37 -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>528+ (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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>mmirman</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1024081</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-07-22 15:01:51 -0700</bug_when>
    <thetext>Patch coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1024082</commentid>
    <comment_count>1</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-07-22 15:02:25 -0700</bug_when>
    <thetext>&lt;rdar://problem/17544620&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1024091</commentid>
    <comment_count>2</comment_count>
      <attachid>235319</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-07-22 15:34:36 -0700</bug_when>
    <thetext>Created attachment 235319
the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1024092</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-07-22 15:36:19 -0700</bug_when>
    <thetext>Attachment 235319 did not pass style-queue:


ERROR: Source/JavaScriptCore/jsc.cpp:288:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/JavaScriptCore/jsc.cpp:289:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/JavaScriptCore/jsc.cpp:290:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/jsc.cpp:301:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/JavaScriptCore/jsc.cpp:361:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/JavaScriptCore/jsc.cpp:361:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/JavaScriptCore/jsc.cpp:362:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/JavaScriptCore/jsc.cpp:363:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/JavaScriptCore/jsc.cpp:365:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/JavaScriptCore/jsc.cpp:366:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/JavaScriptCore/jsc.cpp:367:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/JavaScriptCore/jsc.cpp:373:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/JavaScriptCore/jsc.cpp:373:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/jsc.cpp:374:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/JavaScriptCore/jsc.cpp:374:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/JavaScriptCore/jsc.cpp:375:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/JavaScriptCore/jsc.cpp:377:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/JavaScriptCore/jsc.cpp:378:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/JavaScriptCore/jsc.cpp:378:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/JavaScriptCore/jsc.cpp:379:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/JavaScriptCore/jsc.cpp:380:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/JavaScriptCore/jsc.cpp:381:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/JavaScriptCore/jsc.cpp:382:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/JavaScriptCore/jsc.cpp:383:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/JavaScriptCore/tests/stress/regexp-matches-array.js:2:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/tests/stress/regexp-matches-array.js:3:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/tests/stress/regexp-matches-array.js:4:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/tests/stress/regexp-matches-array.js:6:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/tests/stress/regexp-matches-array.js:7:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/tests/stress/regexp-matches-array.js:8:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/tests/stress/regexp-matches-array.js:9:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/tests/stress/regexp-matches-array.js:10:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/tests/stress/regexp-matches-array.js:11:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/tests/stress/runtime-array.js:2:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/tests/stress/runtime-array.js:3:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/tests/stress/runtime-array.js:5:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/tests/stress/runtime-array.js:6:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/tests/stress/runtime-array.js:7:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/tests/stress/runtime-array.js:8:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/tests/stress/runtime-array.js:9:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/tests/stress/runtime-array.js:10:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 41 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1024093</commentid>
    <comment_count>4</comment_count>
      <attachid>235319</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-07-22 15:37:20 -0700</bug_when>
    <thetext>Comment on attachment 235319
the patch.

Curses.  Will remove tabs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1024096</commentid>
    <comment_count>5</comment_count>
      <attachid>235321</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-07-22 15:47:46 -0700</bug_when>
    <thetext>Created attachment 235321
patch minus tabs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1024159</commentid>
    <comment_count>6</comment_count>
      <attachid>235321</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-07-22 21:02:41 -0700</bug_when>
    <thetext>Comment on attachment 235321
patch minus tabs

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1024162</commentid>
    <comment_count>7</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-07-22 21:20:38 -0700</bug_when>
    <thetext>Thanks.  Landed in r171390: &lt;http://trac.webkit.org/r171390&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1024224</commentid>
    <comment_count>8</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-07-23 07:21:36 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Thanks.  Landed in r171390: &lt;http://trac.webkit.org/r171390&gt;.

Did you look at the RegExpArray stuff too?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1024234</commentid>
    <comment_count>9</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-07-23 08:54:36 -0700</bug_when>
    <thetext>This introduced a build failure on Windows, since NO_RETURN_DUE_TO_CRASH is undefined.

1. I landed a build fix for this: &lt;http://trac.webkit.org/changeset/171393&gt;
2. I of course screwed up the change and had to land a follow-up: &lt;http://trac.webkit.org/changeset/171395&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1024246</commentid>
    <comment_count>10</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-07-23 09:56:17 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Did you look at the RegExpArray stuff too?

I believe you mean RegExpMatchesArray.  Yes, we looked at it, and also added a test at Source/JavaScriptCore/tests/stress/regexp-matches-array.js for it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1024254</commentid>
    <comment_count>11</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-07-23 10:25:37 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #8)
&gt; &gt; Did you look at the RegExpArray stuff too?
&gt; 
&gt; I believe you mean RegExpMatchesArray.  Yes, we looked at it, and also added a test at Source/JavaScriptCore/tests/stress/regexp-matches-array.js for it.

Sweet! Just curious if there was also an issue there.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235319</attachid>
            <date>2014-07-22 15:34:36 -0700</date>
            <delta_ts>2014-07-22 15:47:46 -0700</delta_ts>
            <desc>the patch.</desc>
            <filename>bug-135179.patch</filename>
            <type>text/plain</type>
            <size>11432</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcxMzY2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBA
CisyMDE0LTA3LTIyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
cnJheS5jb25jYXQoKSBzaG91bGQgd29yayBvbiBydW50aW1lIGFycmF5cyB0b28uCisgICAgICAg
IDxodHRwczovL3dlYmtpdC5vcmcvYi8xMzUxNzk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoV1RGOjpSdW50aW1l
QXJyYXk6OmNyZWF0ZSk6CisgICAgICAgIChXVEY6OlJ1bnRpbWVBcnJheTo6flJ1bnRpbWVBcnJh
eSk6CisgICAgICAgIChXVEY6OlJ1bnRpbWVBcnJheTo6ZGVzdHJveSk6CisgICAgICAgIChXVEY6
OlJ1bnRpbWVBcnJheTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKFdURjo6UnVudGlt
ZUFycmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KToKKyAgICAgICAgKFdURjo6UnVudGlt
ZUFycmF5OjpwdXQpOgorICAgICAgICAoV1RGOjpSdW50aW1lQXJyYXk6OmRlbGV0ZVByb3BlcnR5
KToKKyAgICAgICAgKFdURjo6UnVudGltZUFycmF5OjpnZXRMZW5ndGgpOgorICAgICAgICAoV1RG
OjpSdW50aW1lQXJyYXk6OmNyZWF0ZVByb3RvdHlwZSk6CisgICAgICAgIChXVEY6OlJ1bnRpbWVB
cnJheTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKFdURjo6UnVudGltZUFycmF5OjpmaW5p
c2hDcmVhdGlvbik6CisgICAgICAgIChXVEY6OlJ1bnRpbWVBcnJheTo6UnVudGltZUFycmF5KToK
KyAgICAgICAgKFdURjo6UnVudGltZUFycmF5OjpsZW5ndGhHZXR0ZXIpOgorICAgICAgICAoR2xv
YmFsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChmdW5jdGlvbkNyZWF0ZVJ1bnRp
bWVBcnJheSk6CisgICAgICAgIC0gQWRkZWQgc3VwcG9ydCB0byBjcmVhdGUgYSBydW50aW1lIGFy
cmF5IGZvciB0ZXN0aW5nIHB1cnBvc2UuCisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlw
ZS5jcHA6CisgICAgICAgIChKU0M6OmdldExlbmd0aCk6CisgICAgICAgIC0gQWRkZWQgZmFzdCBj
YXNlIGZvciB3aGVuIHRoZSBhcnJheSBvYmplY3QgaXMgYSBKU0FycmF5LgorICAgICAgICAoSlND
OjphcnJheVByb3RvRnVuY0pvaW4pOgorICAgICAgICAtIEFkZGVkIGEgbmVlZGVkIGJ1dCBtaXNz
aW5nIGV4Y2VwdGlvbiBjaGVjay4KKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNDb25jYXQp
OgorICAgICAgICAtIFVzZSBnZXRMZW5ndGgoKSB0byBjb21wdXRlIHRoZSBhcnJheSBsZW5ndGgg
aW5zdGVhZCBvZiBhc3N1bWluZyB0aGF0CisgICAgICAgICAgdGhlIGFycmF5IGlzIGEgSlNBcnJh
eSBpbnN0YW5jZS4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvcmVnZXhwLW1hdGNoZXMtYXJyYXku
anM6IEFkZGVkLgorICAgICAgICAodGVzdEFycmF5Q29uY2F0KToKKyAgICAgICAgKiB0ZXN0cy9z
dHJlc3MvcnVudGltZS1hcnJheS5qczogQWRkZWQuCisgICAgICAgICh0ZXN0QXJyYXlDb25jYXQp
OgorCiAyMDE0LTA3LTIyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAg
ICAgRml4IGNsb29wIGJ1aWxkLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHJldmlzaW9uIDE3
MTM0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMiw2ICsyMiw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAorI2luY2x1ZGUgIkFycmF5
UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiQnV0dGVyZmx5SW5saW5lcy5oIgogI2luY2x1ZGUgIkJ5
dGVjb2RlR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiQ29tcGxldGlvbi5oIgpAQCAtOTgsNiArOTks
NyBAQCBjbGFzcyBFbGVtZW50OwogY2xhc3MgRWxlbWVudEhhbmRsZU93bmVyOwogY2xhc3MgTWFz
dXFlcmFkZXI7CiBjbGFzcyBSb290OworY2xhc3MgUnVudGltZUFycmF5OwogCiBjbGFzcyBFbGVt
ZW50IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgpAQCAtMjc3LDEwICsyNzks
MTE4IEBAIHByaXZhdGU6CiAgICAgV3JpdGVCYXJyaWVyPEpTT2JqZWN0PiBtX2RlbGVnYXRlOwog
fTsKIAorY2xhc3MgUnVudGltZUFycmF5IDogcHVibGljIEpTQXJyYXkgeworcHVibGljOgorICAg
IHR5cGVkZWYgSlNBcnJheSBCYXNlOworCisgICAgc3RhdGljIFJ1bnRpbWVBcnJheSogY3JlYXRl
KEV4ZWNTdGF0ZSogZXhlYykKKyAgICB7CisJICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisJICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gY3JlYXRlU3RydWN0dXJlKHZtLCBn
bG9iYWxPYmplY3QsIGNyZWF0ZVByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSk7CisgICAgICAg
IFJ1bnRpbWVBcnJheSogcnVudGltZUFycmF5ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
UnVudGltZUFycmF5PigqZXhlYy0+aGVhcCgpKSkgUnVudGltZUFycmF5KGV4ZWMsIHN0cnVjdHVy
ZSk7CisgICAgICAgIHJ1bnRpbWVBcnJheS0+ZmluaXNoQ3JlYXRpb24oZXhlYyk7CisgICAgICAg
IHZtLmhlYXAuYWRkRmluYWxpemVyKHJ1bnRpbWVBcnJheSwgZGVzdHJveSk7CisgICAgICAgIHJl
dHVybiBydW50aW1lQXJyYXk7CisgICAgfQorCisgICAgflJ1bnRpbWVBcnJheSgpIHsgfQorCisg
ICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqIGNlbGwpCisgICAgeworCSAgICBzdGF0aWNf
Y2FzdDxSdW50aW1lQXJyYXkqPihjZWxsKS0+UnVudGltZUFycmF5Ojp+UnVudGltZUFycmF5KCk7
CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IGZhbHNl
OworCisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JiBzbG90KQorICAgIHsKKyAgICAgICAgUnVudGltZUFycmF5KiB0aGlzT2JqZWN0ID0ganNDYXN0
PFJ1bnRpbWVBcnJheSo+KG9iamVjdCk7CisgICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgeworICAgICAgICAgICAgc2xvdC5zZXRDYWNoZWFi
bGVDdXN0b20odGhpc09iamVjdCwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0sIHRo
aXNPYmplY3QtPmxlbmd0aEdldHRlcik7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgfQorCisgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTsK
KyAgICAgICAgaWYgKGluZGV4IDwgdGhpc09iamVjdC0+Z2V0TGVuZ3RoKCkpIHsKKyAgICAgICAg
ICAgIEFTU0VSVChpbmRleCAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpOworICAgICAgICAg
ICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBEb250RGVsZXRlIHwgRG9udEVudW0sIGpzTnVt
YmVyKHRoaXNPYmplY3QtPm1fdmVjdG9yW2luZGV4XSkpOworICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5
U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgIH0KKworICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbmRleCwgUHJvcGVydHlTbG90JiBzbG90KQorICAg
IHsKKyAgICAgICAgUnVudGltZUFycmF5KiB0aGlzT2JqZWN0ID0ganNDYXN0PFJ1bnRpbWVBcnJh
eSo+KG9iamVjdCk7CisgICAgICAgIGlmIChpbmRleCA8IHRoaXNPYmplY3QtPmdldExlbmd0aCgp
KSB7CisgICAgICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIERvbnREZWxldGUgfCBE
b250RW51bSwganNOdW1iZXIodGhpc09iamVjdC0+bV92ZWN0b3JbaW5kZXhdKSk7CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBKU09iamVjdDo6
Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBpbmRleCwgc2xvdCk7
CisgICAgfQorCisgICAgc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggdm9pZCBwdXQoSlND
ZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
KQorICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisK
KyAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCBib29sIGRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSkKKyAgICB7CisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgdW5zaWduZWQgZ2V0TGVuZ3RoKCkg
Y29uc3QgeyByZXR1cm4gbV92ZWN0b3Iuc2l6ZSgpOyB9CisKKyAgICBERUNMQVJFX0lORk87CisK
KyAgICBzdGF0aWMgQXJyYXlQcm90b3R5cGUqIGNyZWF0ZVByb3RvdHlwZShWTSYsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgeworICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0
LT5hcnJheVByb3RvdHlwZSgpOworICAgIH0KKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
cHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxh
Z3MpLCBpbmZvKCksIEFycmF5Q2xhc3MpOworICAgIH0KKworcHJvdGVjdGVkOgorICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjKQorCXsKKwkJQmFzZTo6ZmluaXNoQ3JlYXRp
b24oZXhlYy0+dm0oKSk7CisJCUFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKKworCQlmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsgaSsrKQorCQkJbV92ZWN0b3Iu
YXBwZW5kKGV4ZWMtPmFyZ3VtZW50KGkpLnRvSW50MzIoZXhlYykpOworCX0KKworICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5
U2xvdCB8IEludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJ
c05vdFplcm8gfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNBcnJheTo6U3RydWN0dXJl
RmxhZ3M7CisKK3ByaXZhdGU6CisgICAgUnVudGltZUFycmF5KEV4ZWNTdGF0ZSogZXhlYywgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCisJCTogSlNBcnJheShleGVjLT52bSgpLCBzdHJ1Y3R1cmUsIDAp
CisJeworCX0KKworCXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBsZW5ndGhHZXR0ZXIoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KQorCXsKKwkJUnVudGltZUFycmF5KiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxSdW50aW1l
QXJyYXkqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisJCWlmICghdGhpc09iamVjdCkK
KwkJCXJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworCQlyZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzTnVtYmVyKHRoaXNPYmplY3QtPmdldExlbmd0aCgpKSk7CisJfQorCisKKyAgICBWZWN0
b3I8aW50PiBtX3ZlY3RvcjsKK307CisKIGNvbnN0IENsYXNzSW5mbyBFbGVtZW50OjpzX2luZm8g
PSB7ICJFbGVtZW50IiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShF
bGVtZW50KSB9OwogY29uc3QgQ2xhc3NJbmZvIE1hc3F1ZXJhZGVyOjpzX2luZm8gPSB7ICJNYXNx
dWVyYWRlciIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoTWFzcXVl
cmFkZXIpIH07CiBjb25zdCBDbGFzc0luZm8gUm9vdDo6c19pbmZvID0geyAiUm9vdCIsICZCYXNl
OjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoUm9vdCkgfTsKIGNvbnN0IENsYXNz
SW5mbyBJbXB1cmVHZXR0ZXI6OnNfaW5mbyA9IHsgIkltcHVyZUdldHRlciIsICZCYXNlOjpzX2lu
Zm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSW1wdXJlR2V0dGVyKSB9OworY29uc3QgQ2xh
c3NJbmZvIFJ1bnRpbWVBcnJheTo6c19pbmZvID0geyAiUnVudGltZUFycmF5IiwgJkJhc2U6OnNf
aW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShSdW50aW1lQXJyYXkpIH07CiAKIEVsZW1l
bnRIYW5kbGVPd25lciogRWxlbWVudDo6aGFuZGxlT3duZXIoKQogewpAQCAtMzAxLDYgKzQxMSw3
IEBAIHZvaWQgRWxlbWVudDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogc3RhdGljIGJvb2wgZmls
bEJ1ZmZlcldpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBWZWN0b3I8
Y2hhcj4mIGJ1ZmZlcik7CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uQ3JlYXRlUHJveHkoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZVJ1bnRpbWVBcnJheShFeGVjU3RhdGUqKTsKIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlSW1wdXJlR2V0dGVy
KEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25TZXRJbXB1cmVHZXR0ZXJEZWxlZ2F0ZShFeGVjU3RhdGUqKTsKIApAQCAtNDg2LDYgKzU5Nyw3
IEBAIHByb3RlY3RlZDoKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJtYWtlTWFzcXVlcmFkZXIi
LCBmdW5jdGlvbk1ha2VNYXNxdWVyYWRlciwgMCk7CiAKICAgICAgICAgYWRkRnVuY3Rpb24odm0s
ICJjcmVhdGVQcm94eSIsIGZ1bmN0aW9uQ3JlYXRlUHJveHksIDEpOworICAgICAgICBhZGRGdW5j
dGlvbih2bSwgImNyZWF0ZVJ1bnRpbWVBcnJheSIsIGZ1bmN0aW9uQ3JlYXRlUnVudGltZUFycmF5
LCAwKTsKIAogICAgICAgICBhZGRGdW5jdGlvbih2bSwgImNyZWF0ZUltcHVyZUdldHRlciIsIGZ1
bmN0aW9uQ3JlYXRlSW1wdXJlR2V0dGVyLCAxKTsKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJz
ZXRJbXB1cmVHZXR0ZXJEZWxlZ2F0ZSIsIGZ1bmN0aW9uU2V0SW1wdXJlR2V0dGVyRGVsZWdhdGUs
IDIpOwpAQCAtNjU5LDYgKzc3MSwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uQ3JlCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShwcm94eSk7CiB9CiAKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVSdW50aW1lQXJyYXkoRXhlY1N0
YXRlKiBleGVjKQoreworICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOworICAgIFJ1bnRpbWVB
cnJheSogYXJyYXkgPSBSdW50aW1lQXJyYXk6OmNyZWF0ZShleGVjKTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGFycmF5KTsKK30KKwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbkNyZWF0ZUltcHVyZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNMb2Nr
SG9sZGVyIGxvY2soZXhlYyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheVByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAxNzEzNDQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE1OSw2ICsxNTksOCBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGdldFByb3BlcnR5
CiAKIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIGdldExlbmd0aChFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KiBvYmopCiB7CisgICAgaWYgKGlzSlNBcnJheShvYmopKQorICAgICAgICBy
ZXR1cm4ganNDYXN0PEpTQXJyYXkqPihvYmopLT5sZW5ndGgoKTsKICAgICByZXR1cm4gb2JqLT5n
ZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkudG9VSW50MzIoZXhlYyk7CiB9
CiAKQEAgLTQxMiw2ICs0MTQsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5
UHJvdG9GCiAKICAgICBmb3IgKDsgayA8IGxlbmd0aDsgaysrKSB7CiAgICAgICAgIEpTVmFsdWUg
ZWxlbWVudCA9IHRoaXNPYmotPmdldChleGVjLCBrKTsKKyAgICAgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKICAgICAgICAgaWYgKCFlbGVtZW50LmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAg
ICAgICBzdHJpbmdKb2luZXIuYXBwZW5kKGVsZW1lbnQudG9XVEZTdHJpbmdJbmxpbmUoZXhlYykp
OwogICAgICAgICBlbHNlCkBAIC00MjksOSArNDMzLDExIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgYXJyYXlQcm90b0YKICAgICBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxv
dz4gZmluYWxBcnJheVNpemUgPSAwOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7OykgewotICAg
ICAgICBpZiAoSlNBcnJheSogY3VycmVudEFycmF5ID0ganNEeW5hbWljQ2FzdDxKU0FycmF5Kj4o
Y3VyQXJnKSkKLSAgICAgICAgICAgIGZpbmFsQXJyYXlTaXplICs9IGN1cnJlbnRBcnJheS0+bGVu
Z3RoKCk7Ci0gICAgICAgIGVsc2UKKyAgICAgICAgaWYgKEpTQXJyYXkqIGN1cnJlbnRBcnJheSA9
IGpzRHluYW1pY0Nhc3Q8SlNBcnJheSo+KGN1ckFyZykpIHsKKyAgICAgICAgICAgIGZpbmFsQXJy
YXlTaXplICs9IGdldExlbmd0aChleGVjLCBjdXJyZW50QXJyYXkpOworICAgICAgICAgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgZmluYWxB
cnJheVNpemUrKzsKICAgICAgICAgaWYgKGkgPT0gYXJnQ291bnQpCiAgICAgICAgICAgICBicmVh
azsKQEAgLTQ1MCw3ICs0NTYsOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5
UHJvdG9GCiAgICAgdW5zaWduZWQgbiA9IDA7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7Oykgewog
ICAgICAgICBpZiAoSlNBcnJheSogY3VycmVudEFycmF5ID0ganNEeW5hbWljQ2FzdDxKU0FycmF5
Kj4oY3VyQXJnKSkgewotICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gY3VycmVudEFycmF5
LT5sZW5ndGgoKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IGdldExlbmd0aChleGVj
LCBjdXJyZW50QXJyYXkpOworICAgICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGsgPSAwOyBrIDwgbGVuZ3RoOyArK2spIHsKICAgICAg
ICAgICAgICAgICBKU1ZhbHVlIHYgPSBnZXRQcm9wZXJ0eShleGVjLCBjdXJyZW50QXJyYXksIGsp
OwogICAgICAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcmVnZXhwLW1hdGNoZXMtYXJyYXkuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9yZWdleHAtbWF0
Y2hlcy1hcnJheS5qcwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvcmVnZXhwLW1hdGNoZXMtYXJyYXkuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwxNCBAQAorZnVuY3Rpb24gdGVzdEFycmF5Q29uY2F0KCkgeworCXZhciBhcnJheSA9ICdhYmMn
Lm1hdGNoKC8oYSkoYikoYykvKTsKKwl2YXIgcmVzdWx0ID0gYXJyYXkuY29uY2F0KCk7CisJdmFy
IGV4cGVjdGVkUmVzdWx0ID0gWyJhYmMiLCAiYSIsICJiIiwgImMiXTsKKworCWlmIChyZXN1bHQu
bGVuZ3RoICE9IDQpCisJCXRocm93IG5ldyBFcnJvcigiUnVudGltZSBhcnJheSBsZW5ndGggaXMg
aW5jb3JyZWN0Iik7CisJZm9yICh2YXIgaSA9IDA7IGkgPCByZXN1bHQubGVuZ3RoOyBpKyspIHsK
KwkJaWYgKHJlc3VsdFtpXSAhPSBleHBlY3RlZFJlc3VsdFtpXSkKKwkJCXRocm93IG5ldyBFcnJv
cigiUnVudGltZSBhcnJheSBjb25jYXQgcmVzdWx0IGlzIGluY29ycmVjdCIpOworCX0KK307CisK
K3Rlc3RBcnJheUNvbmNhdCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9ydW50aW1lLWFycmF5LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvcnVudGltZS1hcnJheS5qcwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcnVudGltZS1hcnJheS5qcwkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDEzIEBACitmdW5jdGlvbiB0ZXN0QXJyYXlDb25jYXQoKSB7CisJdmFyIGFy
cmF5ID0gY3JlYXRlUnVudGltZUFycmF5KDEsIDIsIDMpOworCXZhciByZXN1bHQgPSBhcnJheS5j
b25jYXQoKTsKKworCWlmIChyZXN1bHQubGVuZ3RoICE9IDMpCisJCXRocm93IG5ldyBFcnJvcigi
UnVudGltZSBhcnJheSBsZW5ndGggaXMgaW5jb3JyZWN0Iik7CisJZm9yICh2YXIgaSA9IDA7IGkg
PCByZXN1bHQubGVuZ3RoOyBpKyspIHsKKwkJaWYgKHJlc3VsdFtpXSAhPSBpICsgMSkKKwkJCXRo
cm93IG5ldyBFcnJvcigiUnVudGltZSBhcnJheSBjb25jYXQgcmVzdWx0IGlzIGluY29ycmVjdCIp
OworCX0KK307CisKK3Rlc3RBcnJheUNvbmNhdCgpOwo=
</data>
<flag name="review"
          id="259890"
          type_id="1"
          status="-"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235321</attachid>
            <date>2014-07-22 15:47:46 -0700</date>
            <delta_ts>2014-07-22 21:02:41 -0700</delta_ts>
            <desc>patch minus tabs</desc>
            <filename>bug-135179.patch</filename>
            <type>text/plain</type>
            <size>11595</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcxMzY2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBA
CisyMDE0LTA3LTIyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
cnJheS5jb25jYXQoKSBzaG91bGQgd29yayBvbiBydW50aW1lIGFycmF5cyB0b28uCisgICAgICAg
IDxodHRwczovL3dlYmtpdC5vcmcvYi8xMzUxNzk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoV1RGOjpSdW50aW1l
QXJyYXk6OmNyZWF0ZSk6CisgICAgICAgIChXVEY6OlJ1bnRpbWVBcnJheTo6flJ1bnRpbWVBcnJh
eSk6CisgICAgICAgIChXVEY6OlJ1bnRpbWVBcnJheTo6ZGVzdHJveSk6CisgICAgICAgIChXVEY6
OlJ1bnRpbWVBcnJheTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKFdURjo6UnVudGlt
ZUFycmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KToKKyAgICAgICAgKFdURjo6UnVudGlt
ZUFycmF5OjpwdXQpOgorICAgICAgICAoV1RGOjpSdW50aW1lQXJyYXk6OmRlbGV0ZVByb3BlcnR5
KToKKyAgICAgICAgKFdURjo6UnVudGltZUFycmF5OjpnZXRMZW5ndGgpOgorICAgICAgICAoV1RG
OjpSdW50aW1lQXJyYXk6OmNyZWF0ZVByb3RvdHlwZSk6CisgICAgICAgIChXVEY6OlJ1bnRpbWVB
cnJheTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKFdURjo6UnVudGltZUFycmF5OjpmaW5p
c2hDcmVhdGlvbik6CisgICAgICAgIChXVEY6OlJ1bnRpbWVBcnJheTo6UnVudGltZUFycmF5KToK
KyAgICAgICAgKFdURjo6UnVudGltZUFycmF5OjpsZW5ndGhHZXR0ZXIpOgorICAgICAgICAoR2xv
YmFsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChmdW5jdGlvbkNyZWF0ZVJ1bnRp
bWVBcnJheSk6CisgICAgICAgIC0gQWRkZWQgc3VwcG9ydCB0byBjcmVhdGUgYSBydW50aW1lIGFy
cmF5IGZvciB0ZXN0aW5nIHB1cnBvc2UuCisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlw
ZS5jcHA6CisgICAgICAgIChKU0M6OmdldExlbmd0aCk6CisgICAgICAgIC0gQWRkZWQgZmFzdCBj
YXNlIGZvciB3aGVuIHRoZSBhcnJheSBvYmplY3QgaXMgYSBKU0FycmF5LgorICAgICAgICAoSlND
OjphcnJheVByb3RvRnVuY0pvaW4pOgorICAgICAgICAtIEFkZGVkIGEgbmVlZGVkIGJ1dCBtaXNz
aW5nIGV4Y2VwdGlvbiBjaGVjay4KKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNDb25jYXQp
OgorICAgICAgICAtIFVzZSBnZXRMZW5ndGgoKSB0byBjb21wdXRlIHRoZSBhcnJheSBsZW5ndGgg
aW5zdGVhZCBvZiBhc3N1bWluZyB0aGF0CisgICAgICAgICAgdGhlIGFycmF5IGlzIGEgSlNBcnJh
eSBpbnN0YW5jZS4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvcmVnZXhwLW1hdGNoZXMtYXJyYXku
anM6IEFkZGVkLgorICAgICAgICAodGVzdEFycmF5Q29uY2F0KToKKyAgICAgICAgKiB0ZXN0cy9z
dHJlc3MvcnVudGltZS1hcnJheS5qczogQWRkZWQuCisgICAgICAgICh0ZXN0QXJyYXlDb25jYXQp
OgorCiAyMDE0LTA3LTIyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAg
ICAgRml4IGNsb29wIGJ1aWxkLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHJldmlzaW9uIDE3
MTM0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMiw2ICsyMiw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAorI2luY2x1ZGUgIkFycmF5
UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiQnV0dGVyZmx5SW5saW5lcy5oIgogI2luY2x1ZGUgIkJ5
dGVjb2RlR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiQ29tcGxldGlvbi5oIgpAQCAtOTgsNiArOTks
NyBAQCBjbGFzcyBFbGVtZW50OwogY2xhc3MgRWxlbWVudEhhbmRsZU93bmVyOwogY2xhc3MgTWFz
dXFlcmFkZXI7CiBjbGFzcyBSb290OworY2xhc3MgUnVudGltZUFycmF5OwogCiBjbGFzcyBFbGVt
ZW50IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgpAQCAtMjc3LDEwICsyNzks
MTE3IEBAIHByaXZhdGU6CiAgICAgV3JpdGVCYXJyaWVyPEpTT2JqZWN0PiBtX2RlbGVnYXRlOwog
fTsKIAorY2xhc3MgUnVudGltZUFycmF5IDogcHVibGljIEpTQXJyYXkgeworcHVibGljOgorICAg
IHR5cGVkZWYgSlNBcnJheSBCYXNlOworCisgICAgc3RhdGljIFJ1bnRpbWVBcnJheSogY3JlYXRl
KEV4ZWNTdGF0ZSogZXhlYykKKyAgICB7CisgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gY3JlYXRlU3RydWN0dXJl
KHZtLCBnbG9iYWxPYmplY3QsIGNyZWF0ZVByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSk7Cisg
ICAgICAgIFJ1bnRpbWVBcnJheSogcnVudGltZUFycmF5ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8UnVudGltZUFycmF5PigqZXhlYy0+aGVhcCgpKSkgUnVudGltZUFycmF5KGV4ZWMsIHN0
cnVjdHVyZSk7CisgICAgICAgIHJ1bnRpbWVBcnJheS0+ZmluaXNoQ3JlYXRpb24oZXhlYyk7Cisg
ICAgICAgIHZtLmhlYXAuYWRkRmluYWxpemVyKHJ1bnRpbWVBcnJheSwgZGVzdHJveSk7CisgICAg
ICAgIHJldHVybiBydW50aW1lQXJyYXk7CisgICAgfQorCisgICAgflJ1bnRpbWVBcnJheSgpIHsg
fQorCisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqIGNlbGwpCisgICAgeworICAgICAg
ICBzdGF0aWNfY2FzdDxSdW50aW1lQXJyYXkqPihjZWxsKS0+UnVudGltZUFycmF5Ojp+UnVudGlt
ZUFycmF5KCk7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlv
biA9IGZhbHNlOworCisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90JiBzbG90KQorICAgIHsKKyAgICAgICAgUnVudGltZUFycmF5KiB0aGlzT2JqZWN0
ID0ganNDYXN0PFJ1bnRpbWVBcnJheSo+KG9iamVjdCk7CisgICAgICAgIGlmIChwcm9wZXJ0eU5h
bWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgeworICAgICAgICAgICAgc2xvdC5z
ZXRDYWNoZWFibGVDdXN0b20odGhpc09iamVjdCwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9u
dEVudW0sIHRoaXNPYmplY3QtPmxlbmd0aEdldHRlcik7CisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgfQorCisgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gcHJvcGVydHlOYW1lLmFz
SW5kZXgoKTsKKyAgICAgICAgaWYgKGluZGV4IDwgdGhpc09iamVjdC0+Z2V0TGVuZ3RoKCkpIHsK
KyAgICAgICAgICAgIEFTU0VSVChpbmRleCAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpOwor
ICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBEb250RGVsZXRlIHwgRG9udEVu
dW0sIGpzTnVtYmVyKHRoaXNPYmplY3QtPm1fdmVjdG9yW2luZGV4XSkpOworICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93
blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAg
IH0KKworICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbmRleCwgUHJvcGVydHlTbG90JiBz
bG90KQorICAgIHsKKyAgICAgICAgUnVudGltZUFycmF5KiB0aGlzT2JqZWN0ID0ganNDYXN0PFJ1
bnRpbWVBcnJheSo+KG9iamVjdCk7CisgICAgICAgIGlmIChpbmRleCA8IHRoaXNPYmplY3QtPmdl
dExlbmd0aCgpKSB7CisgICAgICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIERvbnRE
ZWxldGUgfCBEb250RW51bSwganNOdW1iZXIodGhpc09iamVjdC0+bV92ZWN0b3JbaW5kZXhdKSk7
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBK
U09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBpbmRl
eCwgc2xvdCk7CisgICAgfQorCisgICAgc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggdm9p
ZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmKQorICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICB9CisKKyAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCBib29sIGRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSkKKyAgICB7CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgdW5zaWduZWQgZ2V0
TGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV92ZWN0b3Iuc2l6ZSgpOyB9CisKKyAgICBERUNMQVJF
X0lORk87CisKKyAgICBzdGF0aWMgQXJyYXlQcm90b3R5cGUqIGNyZWF0ZVByb3RvdHlwZShWTSYs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgeworICAgICAgICByZXR1cm4gZ2xv
YmFsT2JqZWN0LT5hcnJheVByb3RvdHlwZSgpOworICAgIH0KKworICAgIHN0YXRpYyBTdHJ1Y3R1
cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3Ry
dWN0dXJlRmxhZ3MpLCBpbmZvKCksIEFycmF5Q2xhc3MpOworICAgIH0KKworcHJvdGVjdGVkOgor
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjKQorICAgIHsKKyAgICAgICAg
QmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+dm0oKSk7CisgICAgICAgIEFTU0VSVChpbmhlcml0
cyhpbmZvKCkpKTsKKworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGV4ZWMtPmFyZ3Vt
ZW50Q291bnQoKTsgaSsrKQorICAgICAgICAgICAgbV92ZWN0b3IuYXBwZW5kKGV4ZWMtPmFyZ3Vt
ZW50KGkpLnRvSW50MzIoZXhlYykpOworICAgIH0KKworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEludGVyY2Vw
dHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBPdmVy
cmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNBcnJheTo6U3RydWN0dXJlRmxhZ3M7CisKK3ByaXZh
dGU6CisgICAgUnVudGltZUFycmF5KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCisgICAgICAgIDogSlNBcnJheShleGVjLT52bSgpLCBzdHJ1Y3R1cmUsIDApCisgICAgewor
ICAgIH0KKworICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBsZW5ndGhHZXR0ZXIoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KQorICAgIHsKKyAgICAgICAgUnVudGltZUFycmF5KiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2Fz
dDxSdW50aW1lQXJyYXkqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgICAgIGlm
ICghdGhpc09iamVjdCkKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMp
OworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHRoaXNPYmplY3QtPmdl
dExlbmd0aCgpKSk7CisgICAgfQorCisgICAgVmVjdG9yPGludD4gbV92ZWN0b3I7Cit9OworCiBj
b25zdCBDbGFzc0luZm8gRWxlbWVudDo6c19pbmZvID0geyAiRWxlbWVudCIsICZCYXNlOjpzX2lu
Zm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoRWxlbWVudCkgfTsKIGNvbnN0IENsYXNzSW5m
byBNYXNxdWVyYWRlcjo6c19pbmZvID0geyAiTWFzcXVlcmFkZXIiLCAmQmFzZTo6c19pbmZvLCAw
LCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKE1hc3F1ZXJhZGVyKSB9OwogY29uc3QgQ2xhc3NJbmZv
IFJvb3Q6OnNfaW5mbyA9IHsgIlJvb3QiLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKFJvb3QpIH07CiBjb25zdCBDbGFzc0luZm8gSW1wdXJlR2V0dGVyOjpzX2luZm8g
PSB7ICJJbXB1cmVHZXR0ZXIiLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEltcHVyZUdldHRlcikgfTsKK2NvbnN0IENsYXNzSW5mbyBSdW50aW1lQXJyYXk6OnNfaW5m
byA9IHsgIlJ1bnRpbWVBcnJheSIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0Rf
VEFCTEUoUnVudGltZUFycmF5KSB9OwogCiBFbGVtZW50SGFuZGxlT3duZXIqIEVsZW1lbnQ6Omhh
bmRsZU93bmVyKCkKIHsKQEAgLTMwMSw2ICs0MTAsNyBAQCB2b2lkIEVsZW1lbnQ6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSkKIHN0YXRpYyBib29sIGZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZpbGUo
Y29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgVmVjdG9yPGNoYXI+JiBidWZmZXIpOwogCiBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZVByb3h5KEV4ZWNTdGF0
ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVS
dW50aW1lQXJyYXkoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvbkNyZWF0ZUltcHVyZUdldHRlcihFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2V0SW1wdXJlR2V0dGVyRGVsZWdhdGUo
RXhlY1N0YXRlKik7CiAKQEAgLTQ4Niw2ICs1OTYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIGFk
ZEZ1bmN0aW9uKHZtLCAibWFrZU1hc3F1ZXJhZGVyIiwgZnVuY3Rpb25NYWtlTWFzcXVlcmFkZXIs
IDApOwogCiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiY3JlYXRlUHJveHkiLCBmdW5jdGlvbkNy
ZWF0ZVByb3h5LCAxKTsKKyAgICAgICAgYWRkRnVuY3Rpb24odm0sICJjcmVhdGVSdW50aW1lQXJy
YXkiLCBmdW5jdGlvbkNyZWF0ZVJ1bnRpbWVBcnJheSwgMCk7CiAKICAgICAgICAgYWRkRnVuY3Rp
b24odm0sICJjcmVhdGVJbXB1cmVHZXR0ZXIiLCBmdW5jdGlvbkNyZWF0ZUltcHVyZUdldHRlciwg
MSk7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAic2V0SW1wdXJlR2V0dGVyRGVsZWdhdGUiLCBm
dW5jdGlvblNldEltcHVyZUdldHRlckRlbGVnYXRlLCAyKTsKQEAgLTY1OSw2ICs3NzAsMTMgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZQogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUocHJveHkpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uQ3JlYXRlUnVudGltZUFycmF5KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU0xvY2tI
b2xkZXIgbG9jayhleGVjKTsKKyAgICBSdW50aW1lQXJyYXkqIGFycmF5ID0gUnVudGltZUFycmF5
OjpjcmVhdGUoZXhlYyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhcnJheSk7Cit9CisK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVJbXB1cmVHZXR0ZXIo
RXhlY1N0YXRlKiBleGVjKQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAko
cmV2aXNpb24gMTcxMzQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQ
cm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTksNiArMTU5LDggQEAgc3RhdGljIEFM
V0FZU19JTkxJTkUgSlNWYWx1ZSBnZXRQcm9wZXJ0eQogCiBzdGF0aWMgQUxXQVlTX0lOTElORSB1
bnNpZ25lZCBnZXRMZW5ndGgoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb2JqKQogeworICAg
IGlmIChpc0pTQXJyYXkob2JqKSkKKyAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU0FycmF5Kj4ob2Jq
KS0+bGVuZ3RoKCk7CiAgICAgcmV0dXJuIG9iai0+Z2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5sZW5ndGgpLnRvVUludDMyKGV4ZWMpOwogfQogCkBAIC00MTIsNiArNDE0LDggQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRgogCiAgICAgZm9yICg7IGsgPCBs
ZW5ndGg7IGsrKykgewogICAgICAgICBKU1ZhbHVlIGVsZW1lbnQgPSB0aGlzT2JqLT5nZXQoZXhl
Yywgayk7CisgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgICAgIGlmICghZWxlbWVu
dC5pc1VuZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICAgICAgc3RyaW5nSm9pbmVyLmFwcGVuZChl
bGVtZW50LnRvV1RGU3RyaW5nSW5saW5lKGV4ZWMpKTsKICAgICAgICAgZWxzZQpAQCAtNDI5LDkg
KzQzMywxMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GCiAgICAg
Q2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+IGZpbmFsQXJyYXlTaXplID0gMDsKIAog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOzspIHsKLSAgICAgICAgaWYgKEpTQXJyYXkqIGN1cnJlbnRB
cnJheSA9IGpzRHluYW1pY0Nhc3Q8SlNBcnJheSo+KGN1ckFyZykpCi0gICAgICAgICAgICBmaW5h
bEFycmF5U2l6ZSArPSBjdXJyZW50QXJyYXktPmxlbmd0aCgpOwotICAgICAgICBlbHNlCisgICAg
ICAgIGlmIChKU0FycmF5KiBjdXJyZW50QXJyYXkgPSBqc0R5bmFtaWNDYXN0PEpTQXJyYXkqPihj
dXJBcmcpKSB7CisgICAgICAgICAgICBmaW5hbEFycmF5U2l6ZSArPSBnZXRMZW5ndGgoZXhlYywg
Y3VycmVudEFycmF5KTsKKyAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAg
ICAgICB9IGVsc2UKICAgICAgICAgICAgIGZpbmFsQXJyYXlTaXplKys7CiAgICAgICAgIGlmIChp
ID09IGFyZ0NvdW50KQogICAgICAgICAgICAgYnJlYWs7CkBAIC00NTAsNyArNDU2LDkgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRgogICAgIHVuc2lnbmVkIG4gPSAw
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOzspIHsKICAgICAgICAgaWYgKEpTQXJyYXkqIGN1cnJl
bnRBcnJheSA9IGpzRHluYW1pY0Nhc3Q8SlNBcnJheSo+KGN1ckFyZykpIHsKLSAgICAgICAgICAg
IHVuc2lnbmVkIGxlbmd0aCA9IGN1cnJlbnRBcnJheS0+bGVuZ3RoKCk7CisgICAgICAgICAgICB1
bnNpZ25lZCBsZW5ndGggPSBnZXRMZW5ndGgoZXhlYywgY3VycmVudEFycmF5KTsKKyAgICAgICAg
ICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBr
ID0gMDsgayA8IGxlbmd0aDsgKytrKSB7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZSB2ID0gZ2V0
UHJvcGVydHkoZXhlYywgY3VycmVudEFycmF5LCBrKTsKICAgICAgICAgICAgICAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL3JlZ2V4cC1tYXRjaGVzLWFycmF5LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvcmVnZXhwLW1hdGNoZXMtYXJyYXkuanMJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3JlZ2V4cC1tYXRjaGVzLWFy
cmF5LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQgQEAKK2Z1bmN0aW9uIHRlc3RBcnJh
eUNvbmNhdCgpIHsKKyAgICB2YXIgYXJyYXkgPSAnYWJjJy5tYXRjaCgvKGEpKGIpKGMpLyk7Cisg
ICAgdmFyIHJlc3VsdCA9IGFycmF5LmNvbmNhdCgpOworICAgIHZhciBleHBlY3RlZFJlc3VsdCA9
IFsiYWJjIiwgImEiLCAiYiIsICJjIl07CisKKyAgICBpZiAocmVzdWx0Lmxlbmd0aCAhPSA0KQor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlJ1bnRpbWUgYXJyYXkgbGVuZ3RoIGlzIGluY29ycmVj
dCIpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0Lmxlbmd0aDsgaSsrKSB7CisgICAg
ICAgIGlmIChyZXN1bHRbaV0gIT0gZXhwZWN0ZWRSZXN1bHRbaV0pCisgICAgICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoIlJ1bnRpbWUgYXJyYXkgY29uY2F0IHJlc3VsdCBpcyBpbmNvcnJlY3QiKTsK
KyAgICB9Cit9OworCit0ZXN0QXJyYXlDb25jYXQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvcnVudGltZS1hcnJheS5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3J1bnRpbWUtYXJyYXkuanMJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3J1bnRpbWUtYXJyYXkuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMyBAQAorZnVuY3Rpb24gdGVzdEFycmF5Q29uY2F0
KCkgeworICAgIHZhciBhcnJheSA9IGNyZWF0ZVJ1bnRpbWVBcnJheSgxLCAyLCAzKTsKKyAgICB2
YXIgcmVzdWx0ID0gYXJyYXkuY29uY2F0KCk7CisKKyAgICBpZiAocmVzdWx0Lmxlbmd0aCAhPSAz
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlJ1bnRpbWUgYXJyYXkgbGVuZ3RoIGlzIGluY29y
cmVjdCIpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0Lmxlbmd0aDsgaSsrKSB7Cisg
ICAgICAgIGlmIChyZXN1bHRbaV0gIT0gaSArIDEpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoIlJ1bnRpbWUgYXJyYXkgY29uY2F0IHJlc3VsdCBpcyBpbmNvcnJlY3QiKTsKKyAgICB9Cit9
OworCit0ZXN0QXJyYXlDb25jYXQoKTsK
</data>
<flag name="review"
          id="259892"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>