<?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>112599</bug_id>
          
          <creation_ts>2013-03-18 11:21:05 -0700</creation_ts>
          <short_desc>DFG should inline binary string concatenations (i.e. ValueAdd with string children)</short_desc>
          <delta_ts>2013-03-19 10:05:27 -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>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>112663</dependson>
    
    <dependson>112665</dependson>
    
    <dependson>112697</dependson>
          <blocked>112376</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>buildbot</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>ossy</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-ews</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>857335</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-03-18 11:21:05 -0700</bug_when>
    <thetext>And it should do so even if the children are StringObjects, or possibly StringObjects.  This should also lay the groundwork for making this fast:

&quot;foo&quot; + x

where x is an int.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857336</commentid>
    <comment_count>1</comment_count>
      <attachid>193612</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-03-18 11:24:16 -0700</bug_when>
    <thetext>Created attachment 193612
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857361</commentid>
    <comment_count>2</comment_count>
      <attachid>193612</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-03-18 11:36:25 -0700</bug_when>
    <thetext>Comment on attachment 193612
the patch

Attachment 193612 did not pass qt-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/17187464</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857371</commentid>
    <comment_count>3</comment_count>
      <attachid>193612</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-03-18 11:42:49 -0700</bug_when>
    <thetext>Comment on attachment 193612
the patch

Attachment 193612 did not pass qt-wk2-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/17160560</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857446</commentid>
    <comment_count>4</comment_count>
      <attachid>193612</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-03-18 12:54:49 -0700</bug_when>
    <thetext>Comment on attachment 193612
the patch

r=me.

I&apos;ve found myself pondering making us plant calls to the valueOf functions in the DFG, that way the function calls are cacheable and we could add intrinsics for the more common implementations, and custom calls would &quot;just work&quot;

That said i&apos;m not sure how much of a win that would be for concat, etc now that the common case of String objects is handled.  But I do recall toString being sufficiently common on generic objects to be something we might consider investigating in future.

Other than that, make the qt bots non-red (!PLATFORM(QT) ?) and r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857470</commentid>
    <comment_count>5</comment_count>
      <attachid>193612</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-03-18 13:28:04 -0700</bug_when>
    <thetext>Comment on attachment 193612
the patch

Attachment 193612 did not pass efl-ews (efl):
Output: http://webkit-commit-queue.appspot.com/results/17235080</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857529</commentid>
    <comment_count>6</comment_count>
      <attachid>193612</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-18 14:12:13 -0700</bug_when>
    <thetext>Comment on attachment 193612
the patch

Attachment 193612 did not pass mac-ews (mac):
Output: http://webkit-commit-queue.appspot.com/results/17080771</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857810</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-03-18 17:46:35 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 193612 [details])
&gt; r=me.
&gt; 
&gt; I&apos;ve found myself pondering making us plant calls to the valueOf functions in the DFG, that way the function calls are cacheable and we could add intrinsics for the more common implementations, and custom calls would &quot;just work&quot;

Can&apos;t do that.  Because you have to do the weirdo thing where you either look up valueOf, or toString if the former finds nothing.  And then convert the result to a string.  Or not a string.  And then either do a numeric addition or a string concatenation.

So, I mean, you could plant all of that.  But you&apos;ll be planting a national forest.

&gt; 
&gt; That said i&apos;m not sure how much of a win that would be for concat, etc now that the common case of String objects is handled.  But I do recall toString being sufficiently common on generic objects to be something we might consider investigating in future.
&gt; 
&gt; Other than that, make the qt bots non-red (!PLATFORM(QT) ?) and r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857811</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-03-18 17:47:30 -0700</bug_when>
    <thetext>Landed with 32-bit fixes in http://trac.webkit.org/changeset/146164</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858397</commentid>
    <comment_count>9</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-03-19 10:05:27 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Landed with 32-bit fixes in http://trac.webkit.org/changeset/146164

It made all inspector tests timeout on ARM traditional platform:
https://bugs.webkit.org/show_bug.cgi?id=112697</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193612</attachid>
            <date>2013-03-18 11:24:16 -0700</date>
            <delta_ts>2013-03-18 14:12:13 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>16909</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ2MDg5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBA
CisyMDEzLTAzLTE4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIHNob3VsZCBpbmxpbmUgYmluYXJ5IHN0cmluZyBjb25jYXRlbmF0aW9ucyAoaS5lLiBWYWx1
ZUFkZCB3aXRoIHN0cmluZyBjaGlsZHJlbikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTExMjU5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorICAgICAgICAKKyAgICAgICAgVGhpcyBkb2VzIGFzIGFkdmVydGlzZWQ6IGlmIHlv
dSBkbyB4ICsgeSB3aGVyZSB4IGFuZCB5IGFyZSBzdHJpbmdzLCB5b3UnbGwgZ2V0CisgICAgICAg
IGEgZmFzdCBpbmxpbmVkIEpTUm9wZVN0cmluZyBhbGxvY2F0aW9uIChhbG9uZyB3aXRoIHdoYXRl
dmVyIGNoZWNrcyBhcmUgbmVjZXNzYXJ5KS4KKyAgICAgICAgSXQgYWxzbyBkb2VzIGdvb2QgdGhp
bmdzIGlmIGVpdGhlciB4IG9yIHkgKG9yIGJvdGgpIGFyZSBTdHJpbmdPYmplY3RzLCBvciBzb21l
CisgICAgICAgIG90aGVyIHRoaW5nIGxpa2UgU3RyaW5nT3JTdHJpbmdPYmplY3QuIEl0IGFsc28g
bGF5cyB0aGUgZ3JvdW5kd29yayBmb3IgbWFraW5nIHRoaXMKKyAgICAgICAgZmFzdCBpZiBlaXRo
ZXIgeCBvciB5IGFyZSBudW1iZXJzLCBvciBzb21lIG90aGVyIHJlYXNvbmFibHktY2hlYXAtdG8t
Y29udmVydAorICAgICAgICB2YWx1ZS4KKworICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFN0YXRl
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFN0YXRlOjpleGVjdXRlRWZmZWN0cyk6
CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZp
eHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgIChGaXh1cFBoYXNlKToKKyAgICAgICAgKEpT
Qzo6REZHOjpGaXh1cFBoYXNlOjppc1N0cmluZ09iamVjdFVzZSk6CisgICAgICAgIChKU0M6OkRG
Rzo6Rml4dXBQaGFzZTo6Y29udmVydFN0cmluZ0FkZFVzZSk6CisgICAgICAgIChKU0M6OkRGRzo6
Rml4dXBQaGFzZTo6YXR0ZW1wdFRvTWFrZUZhc3RTdHJpbmdBZGQpOgorICAgICAgICAqIGRmZy9E
RkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVBZGQpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWxsT3BlcmF0aW9uKToKKyAg
ICAgICAgKFNwZWN1bGF0aXZlSklUKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6ZW1pdEFsbG9jYXRlSlNDZWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6ZW1pdEFsbG9jYXRlSlNPYmplY3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuaDoK
KyAgICAgICAgKEpTQzo6SlNTdHJpbmc6Om9mZnNldE9mRmxhZ3MpOgorICAgICAgICAoSlNTdHJp
bmcpOgorICAgICAgICAoSlNSb3BlU3RyaW5nKToKKyAgICAgICAgKEpTQzo6SlNSb3BlU3RyaW5n
OjpvZmZzZXRPZkZpYmVycyk6CisKIDIwMTMtMDMtMTUgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFw
cGxlLmNvbT4KIAogICAgICAgICBERkcgc3RyaW5nIGNvbnZlcnNpb25zIGFuZCBhbGxvY2F0aW9u
cyBzaG91bGQgYmUgaW5saW5lZApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdFN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0U3RhdGUuY3BwCShyZXZpc2lvbiAxNDYwODkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjYs
NiArNDY2LDkgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlRWZmZWN0cyh1bnNpZwogICAg
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0KFNwZWNEb3Vi
bGUpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgS25vd25TdHJpbmdVc2U6Cisg
ICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldChtX2dyYXBoLm1fZ2xvYmFsRGF0YS5zdHJpbmdT
dHJ1Y3R1cmUuZ2V0KCkpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChub2RlLT5vcCgpID09IFZhbHVlQWRkKTsKICAgICAg
ICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5jb2RlT3JpZ2luLCBpbmRleEluQmxvY2spOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lv
biAxNDYwODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDgsNiArMTQ4LDMwIEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgZml4RG91YmxlRWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAg
Ly8gRklYTUU6IE9wdGltaXplIGZvciB0aGUgY2FzZSB3aGVyZSBvbmUgb2YgdGhlIG9wZXJhbmRz
IGlzIHRoZQorICAgICAgICAgICAgLy8gZW1wdHkgc3RyaW5nLiBBbHNvIGNvbnNpZGVyIG9wdGlt
aXppbmcgZm9yIHRoZSBjYXNlIHdoZXJlIHdlIGRvbid0CisgICAgICAgICAgICAvLyBiZWxpZXZl
IGVpdGhlciBzaWRlIGlzIHRoZSBlbXRweSBzdHJpbmcuIEJvdGggb2YgdGhlc2UgdGhpbmdzIHNo
b3VsZAorICAgICAgICAgICAgLy8gYmUgZWFzeS4KKyAgICAgICAgICAgIAorICAgICAgICAgICAg
aWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVTdHJpbmcoKQorICAgICAgICAgICAg
ICAgICYmIGF0dGVtcHRUb01ha2VGYXN0U3RyaW5nQWRkPFN0cmluZ1VzZT4obm9kZSwgbm9kZS0+
Y2hpbGQxKCksIG5vZGUtPmNoaWxkMigpKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGlmIChub2RlLT5jaGlsZDIoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nKCkKKyAgICAg
ICAgICAgICAgICAmJiBhdHRlbXB0VG9NYWtlRmFzdFN0cmluZ0FkZDxTdHJpbmdVc2U+KG5vZGUs
IG5vZGUtPmNoaWxkMigpLCBub2RlLT5jaGlsZDEoKSkpCisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZ09i
amVjdCgpCisgICAgICAgICAgICAgICAgJiYgYXR0ZW1wdFRvTWFrZUZhc3RTdHJpbmdBZGQ8U3Ry
aW5nT2JqZWN0VXNlPihub2RlLCBub2RlLT5jaGlsZDEoKSwgbm9kZS0+Y2hpbGQyKCkpKQorICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigpLT5zaG91
bGRTcGVjdWxhdGVTdHJpbmdPYmplY3QoKQorICAgICAgICAgICAgICAgICYmIGF0dGVtcHRUb01h
a2VGYXN0U3RyaW5nQWRkPFN0cmluZ09iamVjdFVzZT4obm9kZSwgbm9kZS0+Y2hpbGQyKCksIG5v
ZGUtPmNoaWxkMSgpKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGlmIChu
b2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nT3JTdHJpbmdPYmplY3QoKQorICAg
ICAgICAgICAgICAgICYmIGF0dGVtcHRUb01ha2VGYXN0U3RyaW5nQWRkPFN0cmluZ09yU3RyaW5n
T2JqZWN0VXNlPihub2RlLCBub2RlLT5jaGlsZDEoKSwgbm9kZS0+Y2hpbGQyKCkpKQorICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigpLT5zaG91bGRT
cGVjdWxhdGVTdHJpbmdPclN0cmluZ09iamVjdCgpCisgICAgICAgICAgICAgICAgJiYgYXR0ZW1w
dFRvTWFrZUZhc3RTdHJpbmdBZGQ8U3RyaW5nT3JTdHJpbmdPYmplY3RVc2U+KG5vZGUsIG5vZGUt
PmNoaWxkMigpLCBub2RlLT5jaGlsZDEoKSkpCisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC04NjIsNiArODg2LDc0
IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICB9CiAgICAgCisgICAgdGVtcGxhdGU8VXNlS2luZCB1
c2VLaW5kPgorICAgIGJvb2wgaXNTdHJpbmdPYmplY3RVc2UoKQorICAgIHsKKyAgICAgICAgc3dp
dGNoICh1c2VLaW5kKSB7CisgICAgICAgIGNhc2UgU3RyaW5nT2JqZWN0VXNlOgorICAgICAgICBj
YXNlIFN0cmluZ09yU3RyaW5nT2JqZWN0VXNlOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAg
ICB9CisgICAgCisgICAgdGVtcGxhdGU8VXNlS2luZCB1c2VLaW5kPgorICAgIHZvaWQgY29udmVy
dFN0cmluZ0FkZFVzZShOb2RlKiBub2RlLCBFZGdlJiBlZGdlKQorICAgIHsKKyAgICAgICAgaWYg
KHVzZUtpbmQgPT0gU3RyaW5nVXNlKSB7CisgICAgICAgICAgICAvLyBUaGlzIHByZXNlcnZlcyB0
aGUgYmluYXJ5VXNlS2luZCgpIGludmFyaWFudCBvdCBWYWx1ZUFkZDogVmFsdWVBZGQncworICAg
ICAgICAgICAgLy8gdHdvIGVkZ2VzIHdpbGwgYWx3YXlzIGhhdmUgaWRlbnRpY2FsIHVzZSBraW5k
cywgd2hpY2ggbWFrZXMgdGhlCisgICAgICAgICAgICAvLyBkZWNpc2lvbiBwcm9jZXNzIG11Y2gg
ZWFzaWVyLgorICAgICAgICAgICAgb2JzZXJ2ZVVzZUtpbmRPbk5vZGU8U3RyaW5nVXNlPihlZGdl
Lm5vZGUoKSk7CisgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAg
ICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgUGhhbnRvbSwgbm9kZS0+Y29kZU9y
aWdpbiwKKyAgICAgICAgICAgICAgICBFZGdlKGVkZ2Uubm9kZSgpLCBTdHJpbmdVc2UpKTsKKyAg
ICAgICAgICAgIGVkZ2Uuc2V0VXNlS2luZChLbm93blN0cmluZ1VzZSk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIEZJWE1FOiBXZSBvdWdodCB0
byBiZSBhYmxlIHRvIGhhdmUgYSBUb1ByaW1pdGl2ZVRvU3RyaW5nIG5vZGUuCisgICAgICAgIAor
ICAgICAgICBvYnNlcnZlVXNlS2luZE9uTm9kZTx1c2VLaW5kPihlZGdlLm5vZGUoKSk7CisgICAg
ICAgIGVkZ2UgPSBFZGdlKG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICBt
X2luZGV4SW5CbG9jaywgU3BlY1N0cmluZywgVG9TdHJpbmcsIG5vZGUtPmNvZGVPcmlnaW4sCisg
ICAgICAgICAgICBFZGdlKGVkZ2Uubm9kZSgpLCB1c2VLaW5kKSksIEtub3duU3RyaW5nVXNlKTsK
KyAgICB9CisgICAgCisgICAgdGVtcGxhdGU8VXNlS2luZCBsZWZ0VXNlS2luZD4KKyAgICBib29s
IGF0dGVtcHRUb01ha2VGYXN0U3RyaW5nQWRkKE5vZGUqIG5vZGUsIEVkZ2UmIGxlZnQsIEVkZ2Um
IHJpZ2h0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGxlZnRVc2VLaW5kID09IFN0cmluZ1VzZSB8
fCBsZWZ0VXNlS2luZCA9PSBTdHJpbmdPYmplY3RVc2UgfHwgbGVmdFVzZUtpbmQgPT0gU3RyaW5n
T3JTdHJpbmdPYmplY3RVc2UpOworICAgICAgICAKKyAgICAgICAgaWYgKGlzU3RyaW5nT2JqZWN0
VXNlPGxlZnRVc2VLaW5kPigpICYmICFjYW5PcHRpbWl6ZVN0cmluZ09iamVjdEFjY2Vzcyhub2Rl
LT5jb2RlT3JpZ2luKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAg
ICAgIGlmIChyaWdodC0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nKCkpIHsKKyAgICAgICAgICAgIGNv
bnZlcnRTdHJpbmdBZGRVc2U8bGVmdFVzZUtpbmQ+KG5vZGUsIGxlZnQpOworICAgICAgICAgICAg
Y29udmVydFN0cmluZ0FkZFVzZTxTdHJpbmdVc2U+KG5vZGUsIHJpZ2h0KTsKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAocmlnaHQtPnNo
b3VsZFNwZWN1bGF0ZVN0cmluZ09iamVjdCgpCisgICAgICAgICAgICAmJiBjYW5PcHRpbWl6ZVN0
cmluZ09iamVjdEFjY2Vzcyhub2RlLT5jb2RlT3JpZ2luKSkgeworICAgICAgICAgICAgY29udmVy
dFN0cmluZ0FkZFVzZTxsZWZ0VXNlS2luZD4obm9kZSwgbGVmdCk7CisgICAgICAgICAgICBjb252
ZXJ0U3RyaW5nQWRkVXNlPFN0cmluZ09iamVjdFVzZT4obm9kZSwgcmlnaHQpOworICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChyaWdodC0+
c2hvdWxkU3BlY3VsYXRlU3RyaW5nT3JTdHJpbmdPYmplY3QoKQorICAgICAgICAgICAgJiYgY2Fu
T3B0aW1pemVTdHJpbmdPYmplY3RBY2Nlc3Mobm9kZS0+Y29kZU9yaWdpbikpIHsKKyAgICAgICAg
ICAgIGNvbnZlcnRTdHJpbmdBZGRVc2U8bGVmdFVzZUtpbmQ+KG5vZGUsIGxlZnQpOworICAgICAg
ICAgICAgY29udmVydFN0cmluZ0FkZFVzZTxTdHJpbmdPclN0cmluZ09iamVjdFVzZT4obm9kZSwg
cmlnaHQpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgCisg
ICAgICAgIC8vIEZJWE1FOiBXZSBvdWdodCB0byBiZSBhYmxlIHRvIGNvbnZlcnQgdGhlIHJpZ2h0
IGNhc2UgdG8gZG8KKyAgICAgICAgLy8gVG9QcmltaXRpdmVUb1N0cmluZy4KKyAgICAgICAgcmV0
dXJuIGZhbHNlOyAvLyBMZXQgdGhlIHNsb3cgcGF0aCB3b3JyeSBhYm91dCBpdC4KKyAgICB9Cisg
ICAgCiAgICAgYm9vbCBpc1N0cmluZ1Byb3RvdHlwZU1ldGhvZFNhbmUoU3RydWN0dXJlKiBzdHJp
bmdQcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQogICAgIHsKICAg
ICAgICAgdW5zaWduZWQgYXR0cmlidXRlc1VudXNlZDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTQ2MDg5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTU3MSw2ICsxNTcxLDE2IEBAIEpTQ2VsbCogREZHX09QRVJBVElPTiBvcGVyYXRpb25Ub1N0cmlu
ZygKICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKS50b1N0cmluZyhleGVjKTsKIH0K
IAorSlNDZWxsKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblN0cmluZ0FkZChFeGVjU3RhdGUqIGV4
ZWMsIEpTU3RyaW5nKiBsZWZ0LCBKU1N0cmluZyogcmlnaHQpCit7CisgICAgSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIoJmdsb2JhbERhdGEsIGV4ZWMpOworCisgICAgLy8gRG9uJ3QgZXZlbiBib3Ro
ZXIgY2FsbGluZyBqc1N0cmluZygpIGJlY2F1c2Ugb3VyIGZhc3QgcGF0aCB3b3VsZCBoYXZlIGRv
bmUgd2hhdGV2ZXIKKyAgICAvLyBvcHRpbWl6YXRpb25zIHRoYXQgZnVuY3Rpb24gd291bGQgaGF2
ZSBkb25lLgorICAgIHJldHVybiBKU1JvcGVTdHJpbmc6OmNyZWF0ZShnbG9iYWxEYXRhLCBsZWZ0
LCByaWdodCk7Cit9CisKIGRvdWJsZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkZNb2RPbkludHMo
aW50MzJfdCBhLCBpbnQzMl90IGIpCiB7CiAgICAgcmV0dXJuIGZtb2QoYSwgYik7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAkocmV2aXNpb24gMTQ2MDg5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTg3LDYgKzg3LDcgQEAgdHlwZWRlZiBKU0NlbGwqIERGR19PUEVSQVRJT04gKCpD
X0RGR09wZQogdHlwZWRlZiBKU0NlbGwqIERGR19PUEVSQVRJT04gKCpDX0RGR09wZXJhdGlvbl9F
SWNmKShFeGVjU3RhdGUqLCBJbmxpbmVDYWxsRnJhbWUqKTsKIHR5cGVkZWYgSlNDZWxsKiBERkdf
T1BFUkFUSU9OICgqQ19ERkdPcGVyYXRpb25fRUopKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVl
KTsKIHR5cGVkZWYgSlNDZWxsKiBERkdfT1BFUkFUSU9OICgqQ19ERkdPcGVyYXRpb25fRUpzc1N0
KShFeGVjU3RhdGUqLCBKU1N0cmluZyosIFN0cnVjdHVyZSopOwordHlwZWRlZiBKU0NlbGwqIERG
R19PUEVSQVRJT04gKCpDX0RGR09wZXJhdGlvbl9FSnNzSnNzKShFeGVjU3RhdGUqLCBKU1N0cmlu
ZyosIEpTU3RyaW5nKik7CiB0eXBlZGVmIEpTQ2VsbCogREZHX09QRVJBVElPTiAoKkNfREZHT3Bl
cmF0aW9uX0VPWikoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBpbnQzMl90KTsKIHR5cGVkZWYgSlND
ZWxsKiBERkdfT1BFUkFUSU9OICgqQ19ERkdPcGVyYXRpb25fRVN0KShFeGVjU3RhdGUqLCBTdHJ1
Y3R1cmUqKTsKIHR5cGVkZWYgZG91YmxlIERGR19PUEVSQVRJT04gKCpEX0RGR09wZXJhdGlvbl9E
RCkoZG91YmxlLCBkb3VibGUpOwpAQCAtMjE3LDYgKzIxOCw3IEBAIFN0cmluZ0ltcGwqIERGR19P
UEVSQVRJT04gb3BlcmF0aW9uUmVzb2wKIEpTQ2VsbCogREZHX09QRVJBVElPTiBvcGVyYXRpb25O
ZXdTdHJpbmdPYmplY3QoRXhlY1N0YXRlKiwgSlNTdHJpbmcqLCBTdHJ1Y3R1cmUqKTsKIEpTQ2Vs
bCogREZHX09QRVJBVElPTiBvcGVyYXRpb25Ub1N0cmluZ09uQ2VsbChFeGVjU3RhdGUqLCBKU0Nl
bGwqKTsKIEpTQ2VsbCogREZHX09QRVJBVElPTiBvcGVyYXRpb25Ub1N0cmluZyhFeGVjU3RhdGUq
LCBFbmNvZGVkSlNWYWx1ZSk7CitKU0NlbGwqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uU3RyaW5n
QWRkKEV4ZWNTdGF0ZSosIEpTU3RyaW5nKiwgSlNTdHJpbmcqKTsKIAogLy8gVGhpcyBtZXRob2Qg
aXMgdXNlZCB0byBsb29rdXAgYW4gZXhjZXB0aW9uIGhhbmRlciwga2V5ZWQgYnkgZmF1bHRMb2Nh
dGlvbiwgd2hpY2ggaXMKIC8vIHRoZSByZXR1cm4gbG9jYXRpb24gZnJvbSBvbmUgb2YgdGhlIGNh
bGxzIG91dCB0byBvbmUgb2YgdGhlIGhlbHBlciBvcGVyYXRpb25zIGFib3ZlLgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlz
aW9uIDE0NjA4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDk0LDYgKzMwOTQsNTggQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUFkZChOb2RlKiBubwogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
ICAgICAKKyAgICBjYXNlIEtub3duU3RyaW5nVXNlOiB7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxP
cGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxP
cGVyYW5kIG9wMih0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEdQUlRlbXBvcmFyeSBy
ZXN1bHQodGhpcyk7CisgICAgICAgIEdQUlRlbXBvcmFyeSBhbGxvY2F0b3IodGhpcyk7CisgICAg
ICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOworICAgICAgICAKKyAgICAgICAgR1BSUmVn
IG9wMUdQUiA9IG9wMS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIG9wMkdQUiA9IG9wMi5ncHIoKTsK
KyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAgR1BSUmVn
IGFsbG9jYXRvckdQUiA9IGFsbG9jYXRvci5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHNjcmF0Y2hH
UFIgPSBzY3JhdGNoLmdwcigpOworICAgICAgICAKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAg
b3AxTm90RW1wdHkgPSBtX2ppdC5icmFuY2hUZXN0MzIoCisgICAgICAgICAgICBKSVRDb21waWxl
cjo6Tm9uWmVybywgSklUQ29tcGlsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU1N0cmluZzo6b2Zmc2V0
T2ZMZW5ndGgoKSkpOworICAgICAgICAKKyAgICAgICAgbV9qaXQubW92ZShvcDJHUFIsIHJlc3Vs
dEdQUik7CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmUxID0gbV9qaXQuanVtcCgpOwor
ICAgICAgICAKKyAgICAgICAgb3AxTm90RW1wdHkubGluaygmbV9qaXQpOworICAgICAgICBKSVRD
b21waWxlcjo6SnVtcCBvcDJOb3RFbXB0eSA9IG1faml0LmJyYW5jaFRlc3QzMigKKyAgICAgICAg
ICAgIEpJVENvbXBpbGVyOjpOb25aZXJvLCBKSVRDb21waWxlcjo6QWRkcmVzcyhvcDJHUFIsIEpT
U3RyaW5nOjpvZmZzZXRPZkxlbmd0aCgpKSk7CisgICAgICAgIAorICAgICAgICBtX2ppdC5tb3Zl
KG9wMUdQUiwgcmVzdWx0R1BSKTsKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZTIgPSBt
X2ppdC5qdW1wKCk7CisgICAgICAgIAorICAgICAgICBvcDJOb3RFbXB0eS5saW5rKCZtX2ppdCk7
CisgICAgICAgIAorICAgICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd1BhdGg7CisgICAg
ICAgIE1hcmtlZEFsbG9jYXRvciYgbWFya2VkQWxsb2NhdG9yID0gbV9qaXQuZ2xvYmFsRGF0YSgp
LT5oZWFwLmFsbG9jYXRvckZvck9iamVjdFdpdGhJbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3Io
c2l6ZW9mKEpTUm9wZVN0cmluZykpOworICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIo
Jm1hcmtlZEFsbG9jYXRvciksIGFsbG9jYXRvckdQUik7CisgICAgICAgIGVtaXRBbGxvY2F0ZUpT
Q2VsbChyZXN1bHRHUFIsIGFsbG9jYXRvckdQUiwgVHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxE
YXRhKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSksIHNjcmF0Y2hHUFIsIHNsb3dQYXRoKTsKKyAg
ICAgICAgCisgICAgICAgIG1faml0LnN0b3JlUHRyKFRydXN0ZWRJbW1QdHIoMCksIEpJVENvbXBp
bGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNTdHJpbmc6Om9mZnNldE9mVmFsdWUoKSkpOworICAg
ICAgICBtX2ppdC5zdG9yZVB0cihUcnVzdGVkSW1tUHRyKDApLCBKSVRDb21waWxlcjo6QWRkcmVz
cyhyZXN1bHRHUFIsIEpTUm9wZVN0cmluZzo6b2Zmc2V0T2ZGaWJlcnMoKSArIHNpemVvZihXcml0
ZUJhcnJpZXI8SlNTdHJpbmc+KSAqIDIpKTsKKyAgICAgICAgbV9qaXQuc3RvcmVQdHIob3AxR1BS
LCBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTUm9wZVN0cmluZzo6b2Zmc2V0T2ZG
aWJlcnMoKSkpOworICAgICAgICBtX2ppdC5zdG9yZVB0cihvcDJHUFIsIEpJVENvbXBpbGVyOjpB
ZGRyZXNzKHJlc3VsdEdQUiwgSlNSb3BlU3RyaW5nOjpvZmZzZXRPZkZpYmVycygpICsgc2l6ZW9m
KFdyaXRlQmFycmllcjxKU1N0cmluZz4pKSk7CisgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21w
aWxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTU3RyaW5nOjpvZmZzZXRPZkZsYWdzKCkpLCBzY3JhdGNo
R1BSKTsKKyAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpBZGRyZXNzKG9wMUdQUiwg
SlNTdHJpbmc6Om9mZnNldE9mTGVuZ3RoKCkpLCBhbGxvY2F0b3JHUFIpOworICAgICAgICBtX2pp
dC5hbmQzMihKSVRDb21waWxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTU3RyaW5nOjpvZmZzZXRPZkZs
YWdzKCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgbV9qaXQuYWRkMzIoSklUQ29tcGlsZXI6OkFk
ZHJlc3Mob3AyR1BSLCBKU1N0cmluZzo6b2Zmc2V0T2ZMZW5ndGgoKSksIGFsbG9jYXRvckdQUik7
CisgICAgICAgIG1faml0LmFuZDMyKEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoSlNTdHJpbmc6
OklzOEJpdCksIHNjcmF0Y2hHUFIpOworICAgICAgICBtX2ppdC5zdG9yZTMyKHNjcmF0Y2hHUFIs
IEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNTdHJpbmc6Om9mZnNldE9mRmxhZ3Mo
KSkpOworICAgICAgICBtX2ppdC5zdG9yZTMyKGFsbG9jYXRvckdQUiwgSklUQ29tcGlsZXI6OkFk
ZHJlc3MocmVzdWx0R1BSLCBKU1N0cmluZzo6b2Zmc2V0T2ZMZW5ndGgoKSkpOworICAgICAgICAK
KyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKAorICAgICAgICAgICAg
c2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvblN0cmluZ0FkZCwgcmVzdWx0R1BSLCBvcDFHUFIsIG9w
MkdQUikpOworICAgICAgICAKKyAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgICAgICAKICAgICBjYXNlIFVudHlwZWRVc2U6IHsK
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQobm9kZS0+b3AoKSA9PSBWYWx1ZUFkZCk7CiAgICAgICAg
IGNvbXBpbGVWYWx1ZUFkZChub2RlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDE0NjA4OSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMTA5
MCw2ICsxMDkwLDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSk7CiAgICAgICAgIHJldHVy
biBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
KTsKICAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0RGR09wZXJh
dGlvbl9FSnNzSnNzIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJl
ZyBhcmcyKQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KGFyZzEsIGFyZzIpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
a1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgfQogICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oQ19ERkdPcGVyYXRpb25fRUogb3BlcmF0aW9uLCBHUFJSZWcgcmVz
dWx0LCBHUFJSZWcgYXJnMSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShhcmcxKTsKQEAgLTIxMjcsMTEgKzIxMzIsMTEgQEAgcHVibGljOgogICAgICAg
ICAKICAgICAgICAgcmV0dXJuIHNsb3dQYXRoOwogICAgIH0KLQotICAgIC8vIEFsbG9jYXRvciBm
b3IgYW4gb2JqZWN0IG9mIGEgc3BlY2lmaWMgc2l6ZS4KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
U3RydWN0dXJlVHlwZSwgdHlwZW5hbWUgU3RvcmFnZVR5cGU+IC8vIFN0cnVjdHVyZVR5cGUgYW5k
IFN0b3JhZ2VUeXBlIGNhbiBiZSBHUFIgb3IgSW1tUHRyLgotICAgIHZvaWQgZW1pdEFsbG9jYXRl
SlNPYmplY3QoR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIGFsbG9jYXRvckdQUiwgU3RydWN0dXJl
VHlwZSBzdHJ1Y3R1cmUsCi0gICAgICAgIFN0b3JhZ2VUeXBlIHN0b3JhZ2UsIEdQUlJlZyBzY3Jh
dGNoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QmIHNsb3dQYXRoKQorICAgIAorICAgIC8v
IEFsbG9jYXRvciBmb3IgYSBjZWxsIG9mIGEgc3BlY2lmaWMgc2l6ZS4KKyAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgU3RydWN0dXJlVHlwZT4gLy8gU3RydWN0dXJlVHlwZSBjYW4gYmUgR1BSIG9yIElt
bVB0ci4KKyAgICB2b2lkIGVtaXRBbGxvY2F0ZUpTQ2VsbChHUFJSZWcgcmVzdWx0R1BSLCBHUFJS
ZWcgYWxsb2NhdG9yR1BSLCBTdHJ1Y3R1cmVUeXBlIHN0cnVjdHVyZSwKKyAgICAgICAgR1BSUmVn
IHNjcmF0Y2hHUFIsIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYgc2xvd1BhdGgpCiAgICAgewog
ICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGFsbG9jYXRvckdQ
UiwgTWFya2VkQWxsb2NhdG9yOjpvZmZzZXRPZkZyZWVMaXN0SGVhZCgpKSwgcmVzdWx0R1BSKTsK
ICAgICAgICAgc2xvd1BhdGguYXBwZW5kKG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJs
ZXI6Olplcm8sIHJlc3VsdEdQUikpOwpAQCAtMjE0Myw2ICsyMTQ4LDE0IEBAIHB1YmxpYzoKIAog
ICAgICAgICAvLyBJbml0aWFsaXplIHRoZSBvYmplY3QncyBTdHJ1Y3R1cmUuCiAgICAgICAgIG1f
aml0LnN0b3JlUHRyKHN0cnVjdHVyZSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BS
LCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSk7CisgICAgfQorCisgICAgLy8gQWxsb2NhdG9y
IGZvciBhbiBvYmplY3Qgb2YgYSBzcGVjaWZpYyBzaXplLgorICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBTdHJ1Y3R1cmVUeXBlLCB0eXBlbmFtZSBTdG9yYWdlVHlwZT4gLy8gU3RydWN0dXJlVHlwZSBh
bmQgU3RvcmFnZVR5cGUgY2FuIGJlIEdQUiBvciBJbW1QdHIuCisgICAgdm9pZCBlbWl0QWxsb2Nh
dGVKU09iamVjdChHUFJSZWcgcmVzdWx0R1BSLCBHUFJSZWcgYWxsb2NhdG9yR1BSLCBTdHJ1Y3R1
cmVUeXBlIHN0cnVjdHVyZSwKKyAgICAgICAgU3RvcmFnZVR5cGUgc3RvcmFnZSwgR1BSUmVnIHNj
cmF0Y2hHUFIsIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYgc2xvd1BhdGgpCisgICAgeworICAg
ICAgICBlbWl0QWxsb2NhdGVKU0NlbGwocmVzdWx0R1BSLCBhbGxvY2F0b3JHUFIsIHN0cnVjdHVy
ZSwgc2NyYXRjaEdQUiwgc2xvd1BhdGgpOwogICAgICAgICAKICAgICAgICAgLy8gSW5pdGlhbGl6
ZSB0aGUgb2JqZWN0J3MgcHJvcGVydHkgc3RvcmFnZSBwb2ludGVyLgogICAgICAgICBtX2ppdC5z
dG9yZVB0cihzdG9yYWdlLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTT2Jq
ZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N0cmluZy5oCShyZXZpc2lvbiAxNDYwODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTksMTIgKzE1OSwxOSBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyBzaXplX3Qgb2Zm
c2V0T2ZMZW5ndGgoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNTdHJpbmcsIG1fbGVuZ3Ro
KTsgfQorICAgICAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mRmxhZ3MoKSB7IHJldHVybiBPQkpF
Q1RfT0ZGU0VUT0YoSlNTdHJpbmcsIG1fZmxhZ3MpOyB9CiAgICAgICAgIHN0YXRpYyBzaXplX3Qg
b2Zmc2V0T2ZWYWx1ZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU1N0cmluZywgbV92YWx1
ZSk7IH0KIAogICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCBDbGFzc0luZm8gc19p
bmZvOwogCiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZp
c2l0b3ImKTsKIAorICAgICAgICBlbnVtIHsKKyAgICAgICAgICAgIEhhc2hDb25zdExvY2sgPSAx
dSA8PCAyLAorICAgICAgICAgICAgSXNIYXNoQ29uc3RTaW5nbGV0b24gPSAxdSA8PCAxLAorICAg
ICAgICAgICAgSXM4Qml0ID0gMXUKKyAgICAgICAgfTsKKwogICAgIHByb3RlY3RlZDoKICAgICAg
ICAgZnJpZW5kIGNsYXNzIEpTVmFsdWU7CiAgICAgICAgIApAQCAtMTg2LDEyICsxOTMsNiBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB1bnNpZ25lZCBtX2ZsYWdzOwogICAgICAgICAKLSAg
ICAgICAgZW51bSB7Ci0gICAgICAgICAgICBIYXNoQ29uc3RMb2NrID0gMXUgPDwgMiwKLSAgICAg
ICAgICAgIElzSGFzaENvbnN0U2luZ2xldG9uID0gMXUgPDwgMSwKLSAgICAgICAgICAgIElzOEJp
dCA9IDF1Ci0gICAgICAgIH07Ci0KICAgICAgICAgLy8gQSBzdHJpbmcgaXMgcmVwcmVzZW50ZWQg
ZWl0aGVyIGJ5IGEgU3RyaW5nIG9yIGEgcm9wZSBvZiBmaWJlcnMuCiAgICAgICAgIHVuc2lnbmVk
IG1fbGVuZ3RoOwogICAgICAgICBtdXRhYmxlIFN0cmluZyBtX3ZhbHVlOwpAQCAtMzA4LDYgKzMw
OSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICAgICAgdm9pZCB2aXNpdEZp
YmVycyhTbG90VmlzaXRvciYpOworICAgICAgICAKKyAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBv
ZmZzZXRPZkZpYmVycygpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU1JvcGVTdHJpbmcsIG1f
ZmliZXJzKTsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIEpTVmFsdWUganNTdHJp
bmcoRXhlY1N0YXRlKiwgUmVnaXN0ZXIqLCB1bnNpZ25lZCk7Cg==
</data>
<flag name="review"
          id="215188"
          type_id="1"
          status="+"
          setter="oliver"
    />
    <flag name="commit-queue"
          id="215193"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
      

    </bug>

</bugzilla>