<?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>156593</bug_id>
          
          <creation_ts>2016-04-14 13:42:40 -0700</creation_ts>
          <short_desc>AffectsNextSibling style relation marking is inefficient</short_desc>
          <delta_ts>2016-04-15 00:56:09 -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>CSS</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>benjamin</cc>
    
    <cc>kling</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1183827</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-04-14 13:42:40 -0700</bug_when>
    <thetext>We add a StyleRelation entry for each sibling to mark. With long sibling lists this can be inefficient in terms of both memory and speed. Instead make a single entry that includes the sibling count to mark.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183838</commentid>
    <comment_count>1</comment_count>
      <attachid>276420</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-04-14 13:52:47 -0700</bug_when>
    <thetext>Created attachment 276420
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183849</commentid>
    <comment_count>2</comment_count>
      <attachid>276426</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-04-14 14:12:25 -0700</bug_when>
    <thetext>Created attachment 276426
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183875</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-04-14 14:38:10 -0700</bug_when>
    <thetext>&lt;rdar://problem/25735554&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183881</commentid>
    <comment_count>4</comment_count>
      <attachid>276426</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-04-14 14:46:45 -0700</bug_when>
    <thetext>Comment on attachment 276426
patch

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

&gt; Source/WebCore/css/SelectorChecker.cpp:94
&gt; +        if (last.type == Style::Relation::AffectsNextSibling &amp;&amp; last.element-&gt;previousElementSibling() == &amp;element) {

It would likely be better to do:
    element -&gt;nextElementSibling() == last.element
to avoid touching the memory of last.element again.

&gt; Source/WebCore/cssjit/SelectorCompiler.cpp:2214
&gt; +        LocalRegister lastRelation(m_registerAllocator);
&gt; +        m_assembler.load32(sizeAddress, lastRelation);

It would be better to have this load above the mergeFailure above.

Currently the CPU will have to do two loads:
1) m_assembler.branchTest32(Assembler::Zero, sizeAddress)
2) m_assembler.load32(sizeAddress, lastRelation);

If you write:
LocalRegister size(m_registerAllocator);
m_assembler.load32(sizeAddress, size);
mergeFailure.append(m_assembler.branchTest32(Assembler::Zero, size));
m_assembler.sub32(Assembler::TrustedImm32(1), size);
...

Then you only need one load.

&gt; Source/WebCore/cssjit/SelectorCompiler.cpp:2237
&gt; +        m_assembler.load32(valueAddress, value);
&gt; +        m_assembler.add32(Assembler::TrustedImm32(1), value);
&gt; +        m_assembler.store32(value, valueAddress);

If you want you can do 
    m_assembler.add32(Assembler::TrustedImm32(1), valueAddress);

That&apos;s one instruction on x86. On ARM it generates the same code as you wrote.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184031</commentid>
    <comment_count>5</comment_count>
      <attachid>276464</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-04-15 00:07:15 -0700</bug_when>
    <thetext>Created attachment 276464
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184041</commentid>
    <comment_count>6</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-04-15 00:42:15 -0700</bug_when>
    <thetext>&gt; It would likely be better to do:
&gt;     element -&gt;nextElementSibling() == last.element
&gt; to avoid touching the memory of last.element again.

Good idea. Did this also on the compiler path.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184042</commentid>
    <comment_count>7</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-04-15 00:56:09 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/199583</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276420</attachid>
            <date>2016-04-14 13:52:47 -0700</date>
            <delta_ts>2016-04-14 14:12:25 -0700</delta_ts>
            <desc>patch</desc>
            <filename>affectsnextsibling-combine.patch</filename>
            <type>text/plain</type>
            <size>9236</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5OTU1MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDE2LTA0LTE0ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBBZmZlY3RzTmV4dFNpYmxpbmcg
c3R5bGUgcmVsYXRpb24gbWFya2luZyBpcyBpbmVmZmljaWVudAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2NTkzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgYWRkIGEgU3R5bGVSZWxhdGlvbiBlbnRy
eSBmb3IgZWFjaCBzaWJsaW5nIHRvIG1hcmsuIFdpdGggbG9uZyBzaWJsaW5nIGxpc3RzIHRoaXMg
Y2FuIGJlIGluZWZmaWNpZW50CisgICAgICAgIGluIHRlcm1zIG9mIGJvdGggbWVtb3J5IGFuZCBz
cGVlZC4gSW5zdGVhZCBtYWtlIGEgc2luZ2xlIGVudHJ5IHRoYXQgaW5jbHVkZXMgdGhlIHNpYmxp
bmcgY291bnQgdG8gbWFyay4KKworICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6YWRkU3R5bGVSZWxhdGlvbik6CisKKyAgICAgICAgICAgIFdoZW4g
YWRkaW5nIEFmZmVjdHNOZXh0U2libGluZyBlbnRyeSBjaGVjayBpbiB0aGUgbGFzdCBlbnRyeSBp
biB0aGUgc3R5bGUgcmVsYXRpb24gdmVjdG9yIGhhcyB0aGUKKyAgICAgICAgICAgIHNhbWUgdHlw
ZSBhbmQgaXMgcGFydCBvZiB0aGUgc2FtZSBzaWJsaW5nIGNoYWluLiBJZiBzbyBqdXN0IHVwZGF0
ZSB0aGUgZXhpc3RpbmcgZW50cnkuCisKKyAgICAgICAgKiBjc3NqaXQvU2VsZWN0b3JDb21waWxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNvbXBpbGVyOjpTZWxlY3RvckNvZGVH
ZW5lcmF0b3I6OmdlbmVyYXRlQWRkU3R5bGVSZWxhdGlvbik6CisKKyAgICAgICAgICAgIFRoZSBz
YW1lIHRoaW5nIGluIGhhbmQtY3JhZnRlZCBtYWNybyBhc3NlbWJsZXIuCisKKyAgICAgICAgKiBz
dHlsZS9TdHlsZVJlbGF0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6Y29tbWl0
UmVsYXRpb25zKToKKworICAgICAgICAgICAgTWFyayBhcyBtYW55IHNpYmxpbmcgZWxlbWVudHMg
YXMgdGhlIHZhbHVlIGluZGljYXRlcy4KKworICAgICAgICAqIHN0eWxlL1N0eWxlUmVsYXRpb25z
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UmVsYXRpb246OlJlbGF0aW9uKToKKworICAg
ICAgICAgICAgTWFrZSBlbGVtZW50IGEgcG9pbnRlciBzbyB3ZSBjYW4gdWRwYXRlIGl0LgorCiAy
MDE2LTA0LTE0ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAg
IFtDTWFrZV0gQ2xlYW4gdXAgQ01ha2UgZmlsZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9T
ZWxlY3RvckNoZWNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TZWxl
Y3RvckNoZWNrZXIuY3BwCShyZXZpc2lvbiAxOTk0MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3Mv
U2VsZWN0b3JDaGVja2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksNiArODksMTQgQEAgc3Rh
dGljIGlubGluZSB2b2lkIGFkZFN0eWxlUmVsYXRpb24oU2VsZQogICAgIEFTU0VSVCh2YWx1ZSA9
PSAxIHx8IHR5cGUgPT0gU3R5bGU6OlJlbGF0aW9uOjpOdGhDaGlsZEluZGV4IHx8IHR5cGUgPT0g
U3R5bGU6OlJlbGF0aW9uOjpBZmZlY3RlZEJ5RW1wdHkpOwogICAgIGlmIChjaGVja2luZ0NvbnRl
eHQucmVzb2x2aW5nTW9kZSAhPSBTZWxlY3RvckNoZWNrZXI6Ok1vZGU6OlJlc29sdmluZ1N0eWxl
KQogICAgICAgICByZXR1cm47CisgICAgaWYgKHR5cGUgPT0gU3R5bGU6OlJlbGF0aW9uOjpBZmZl
Y3RzTmV4dFNpYmxpbmcgJiYgIWNoZWNraW5nQ29udGV4dC5zdHlsZVJlbGF0aW9ucy5pc0VtcHR5
KCkpIHsKKyAgICAgICAgYXV0byYgbGFzdCA9IGNoZWNraW5nQ29udGV4dC5zdHlsZVJlbGF0aW9u
cy5sYXN0KCk7CisgICAgICAgIGlmIChsYXN0LnR5cGUgPT0gU3R5bGU6OlJlbGF0aW9uOjpBZmZl
Y3RzTmV4dFNpYmxpbmcgJiYgbGFzdC5lbGVtZW50LT5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKCkg
PT0gJmVsZW1lbnQpIHsKKyAgICAgICAgICAgICsrbGFzdC52YWx1ZTsKKyAgICAgICAgICAgIGxh
c3QuZWxlbWVudCA9ICZlbGVtZW50OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgfQogICAgIGNoZWNraW5nQ29udGV4dC5zdHlsZVJlbGF0aW9ucy5hcHBlbmQoeyBlbGVtZW50
LCB0eXBlLCB2YWx1ZSB9KTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvY3Nzaml0L1NlbGVj
dG9yQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzc2ppdC9TZWxl
Y3RvckNvbXBpbGVyLmNwcAkocmV2aXNpb24gMTk5NDE2KQorKysgU291cmNlL1dlYkNvcmUvY3Nz
aml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTk4LDE2ICsyMTk4
LDU3IEBAIHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUFkZFMKIHsKICAgICBB
U1NFUlQobV9zZWxlY3RvckNvbnRleHQgIT0gU2VsZWN0b3JDb250ZXh0OjpRdWVyeVNlbGVjdG9y
KTsKIAorICAgIEFzc2VtYmxlcjo6QWRkcmVzcyB2ZWN0b3JBZGRyZXNzKGNoZWNraW5nQ29udGV4
dCwgT0JKRUNUX09GRlNFVE9GKFNlbGVjdG9yQ2hlY2tlcjo6Q2hlY2tpbmdDb250ZXh0LCBzdHls
ZVJlbGF0aW9ucykpOworICAgIGF1dG8gZGF0YUFkZHJlc3MgPSB2ZWN0b3JBZGRyZXNzLndpdGhP
ZmZzZXQoU3R5bGU6OlJlbGF0aW9uczo6ZGF0YU1lbW9yeU9mZnNldCgpKTsKKyAgICBhdXRvIHNp
emVBZGRyZXNzID0gdmVjdG9yQWRkcmVzcy53aXRoT2Zmc2V0KFN0eWxlOjpSZWxhdGlvbnM6OnNp
emVNZW1vcnlPZmZzZXQoKSk7CisKKyAgICAvLyBGb3IgQWZmZWN0c05leHRTaWJsaW5nIHdlIGp1
c3QgaW5jcmVtZW50IHRoZSBjb3VudCBpZiB0aGUgcHJldmlvdXMgYWRkZWQgcmVsYXRpb24gd2Fz
IGluIHRoZSBzYW1lIHNpYmxpbmcgY2hhaW4uCisgICAgQXNzZW1ibGVyOjpKdW1wTGlzdCBtZXJn
ZVN1Y2Nlc3M7CisgICAgaWYgKHJlbGF0aW9uVHlwZSA9PSBTdHlsZTo6UmVsYXRpb246OkFmZmVj
dHNOZXh0U2libGluZykgeworICAgICAgICBBc3NlbWJsZXI6Okp1bXBMaXN0IG1lcmdlRmFpbHVy
ZTsKKyAgICAgICAgLy8gaWYgKCFjaGVja2luZ0NvbnRleHQuc3R5bGVSZWxhdGlvbnMuaXNFbXB0
eSgpKQorICAgICAgICBtZXJnZUZhaWx1cmUuYXBwZW5kKG1fYXNzZW1ibGVyLmJyYW5jaFRlc3Qz
MihBc3NlbWJsZXI6Olplcm8sIHNpemVBZGRyZXNzKSk7CisKKyAgICAgICAgLy8gU3R5bGU6OlJl
bGF0aW9uJiBsYXN0UmVsYXRpb24gPSBjaGVja2luZ0NvbnRleHQuc3R5bGVSZWxhdGlvbnMubGFz
dCgpOworICAgICAgICBMb2NhbFJlZ2lzdGVyIGxhc3RSZWxhdGlvbihtX3JlZ2lzdGVyQWxsb2Nh
dG9yKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9hZDMyKHNpemVBZGRyZXNzLCBsYXN0UmVsYXRp
b24pOworICAgICAgICBtX2Fzc2VtYmxlci5zdWIzMihBc3NlbWJsZXI6OlRydXN0ZWRJbW0zMigx
KSwgbGFzdFJlbGF0aW9uKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubXVsMzIoQXNzZW1ibGVyOjpU
cnVzdGVkSW1tMzIoc2l6ZW9mKFN0eWxlOjpSZWxhdGlvbikpLCBsYXN0UmVsYXRpb24sIGxhc3RS
ZWxhdGlvbik7CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZFB0cihkYXRhQWRkcmVzcywgbGFzdFJl
bGF0aW9uKTsKKworICAgICAgICAvLyBpZiAobGFzdFJlbGF0aW9uLnR5cGUgPT0gU3R5bGU6OlJl
bGF0aW9uOjpBZmZlY3RzTmV4dFNpYmxpbmcpCisgICAgICAgIEFzc2VtYmxlcjo6QWRkcmVzcyB0
eXBlQWRkcmVzcyhsYXN0UmVsYXRpb24sIE9CSkVDVF9PRkZTRVRPRihTdHlsZTo6UmVsYXRpb24s
IHR5cGUpKTsKKyAgICAgICAgbWVyZ2VGYWlsdXJlLmFwcGVuZChtX2Fzc2VtYmxlci5icmFuY2gz
MihBc3NlbWJsZXI6Ok5vdEVxdWFsLCB0eXBlQWRkcmVzcywgQXNzZW1ibGVyOjpUcnVzdGVkSW1t
MzIoU3R5bGU6OlJlbGF0aW9uOjpBZmZlY3RzTmV4dFNpYmxpbmcpKSk7CisKKyAgICAgICAgQXNz
ZW1ibGVyOjpBZGRyZXNzIGVsZW1lbnRBZGRyZXNzKGxhc3RSZWxhdGlvbiwgT0JKRUNUX09GRlNF
VE9GKFN0eWxlOjpSZWxhdGlvbiwgZWxlbWVudCkpOworICAgICAgICB7CisgICAgICAgICAgICAv
LyBpZiAobGFzdFJlbGF0aW9uLmVsZW1lbnQtPnByZXZpb3VzU2libGluZ0VsZW1lbnQoKSA9PSAm
ZWxlbWVudCkKKyAgICAgICAgICAgIExvY2FsUmVnaXN0ZXIgcHJldmlvdXNTaWJsaW5nRWxlbWVu
dChtX3JlZ2lzdGVyQWxsb2NhdG9yKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmxvYWRQdHIo
ZWxlbWVudEFkZHJlc3MsIHByZXZpb3VzU2libGluZ0VsZW1lbnQpOworICAgICAgICAgICAgZ2Vu
ZXJhdGVXYWxrVG9QcmV2aW91c0FkamFjZW50RWxlbWVudChtZXJnZUZhaWx1cmUsIHByZXZpb3Vz
U2libGluZ0VsZW1lbnQpOworICAgICAgICAgICAgbWVyZ2VGYWlsdXJlLmFwcGVuZChtX2Fzc2Vt
Ymxlci5icmFuY2hQdHIoQXNzZW1ibGVyOjpOb3RFcXVhbCwgcHJldmlvdXNTaWJsaW5nRWxlbWVu
dCwgZWxlbWVudCkpOworICAgICAgICB9CisKKyAgICAgICAgLy8gKytsYXN0UmVsYXRpb24udmFs
dWU7CisgICAgICAgIEFzc2VtYmxlcjo6QWRkcmVzcyB2YWx1ZUFkZHJlc3MobGFzdFJlbGF0aW9u
LCBPQkpFQ1RfT0ZGU0VUT0YoU3R5bGU6OlJlbGF0aW9uLCB2YWx1ZSkpOworICAgICAgICBMb2Nh
bFJlZ2lzdGVyIHZhbHVlKG1fcmVnaXN0ZXJBbGxvY2F0b3IpOworICAgICAgICBtX2Fzc2VtYmxl
ci5sb2FkMzIodmFsdWVBZGRyZXNzLCB2YWx1ZSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZDMy
KEFzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKDEpLCB2YWx1ZSk7CisgICAgICAgIG1fYXNzZW1ibGVy
LnN0b3JlMzIodmFsdWUsIHZhbHVlQWRkcmVzcyk7CisKKyAgICAgICAgLy8gbGFzdFJlbGF0aW9u
LmVsZW1lbnQgPSAmZWxlbWVudDsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3RvcmVQdHIoZWxlbWVu
dCwgZWxlbWVudEFkZHJlc3MpOworCisgICAgICAgIG1lcmdlU3VjY2Vzcy5hcHBlbmQobV9hc3Nl
bWJsZXIuanVtcCgpKTsKKyAgICAgICAgbWVyZ2VGYWlsdXJlLmxpbmsoJm1fYXNzZW1ibGVyKTsK
KyAgICB9CisKICAgICAvLyBGSVhNRTogQXBwZW5kIHRvIHZlY3RvciB3aXRob3V0IGEgZnVuY3Rp
b24gY2FsbCBhdCBsZWFzdCB3aGVuIHRoZXJlIGlzIHN1ZmZpY2llbnQgY2FwYWNpdHkuCiAgICAg
RnVuY3Rpb25DYWxsIGZ1bmN0aW9uQ2FsbChtX2Fzc2VtYmxlciwgbV9yZWdpc3RlckFsbG9jYXRv
ciwgbV9zdGFja0FsbG9jYXRvciwgbV9mdW5jdGlvbkNhbGxzKTsKICAgICBmdW5jdGlvbkNhbGwu
c2V0RnVuY3Rpb25BZGRyZXNzKGFkZFN0eWxlUmVsYXRpb25GdW5jdGlvbik7CiAgICAgZnVuY3Rp
b25DYWxsLnNldFR3b0FyZ3VtZW50cyhjaGVja2luZ0NvbnRleHQsIGVsZW1lbnQpOwogICAgIGZ1
bmN0aW9uQ2FsbC5jYWxsKCk7CiAKLSAgICBBc3NlbWJsZXI6OkFkZHJlc3MgdmVjdG9yQWRkcmVz
cyhjaGVja2luZ0NvbnRleHQsIE9CSkVDVF9PRkZTRVRPRihTZWxlY3RvckNoZWNrZXI6OkNoZWNr
aW5nQ29udGV4dCwgc3R5bGVSZWxhdGlvbnMpKTsKLSAgICBhdXRvIGRhdGFBZGRyZXNzID0gdmVj
dG9yQWRkcmVzcy53aXRoT2Zmc2V0KFN0eWxlOjpSZWxhdGlvbnM6OmRhdGFNZW1vcnlPZmZzZXQo
KSk7Ci0gICAgYXV0byBzaXplQWRkcmVzcyA9IHZlY3RvckFkZHJlc3Mud2l0aE9mZnNldChTdHls
ZTo6UmVsYXRpb25zOjpzaXplTWVtb3J5T2Zmc2V0KCkpOwotCiAgICAgTG9jYWxSZWdpc3RlciBy
ZWxhdGlvblBvaW50ZXIobV9yZWdpc3RlckFsbG9jYXRvcik7CiAgICAgbV9hc3NlbWJsZXIubG9h
ZDMyKHNpemVBZGRyZXNzLCByZWxhdGlvblBvaW50ZXIpOwogICAgIG1fYXNzZW1ibGVyLnN1YjMy
KEFzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKDEpLCByZWxhdGlvblBvaW50ZXIpOwpAQCAtMjIyMSw2
ICsyMjYyLDggQEAgdm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlQWRkUwogICAg
ICAgICBBc3NlbWJsZXI6OkFkZHJlc3MgdmFsdWVBZGRyZXNzKHJlbGF0aW9uUG9pbnRlciwgT0JK
RUNUX09GRlNFVE9GKFN0eWxlOjpSZWxhdGlvbiwgdmFsdWUpKTsKICAgICAgICAgbV9hc3NlbWJs
ZXIuc3RvcmUzMigqdmFsdWUsIHZhbHVlQWRkcmVzcyk7CiAgICAgfQorCisgICAgbWVyZ2VTdWNj
ZXNzLmxpbmsoJm1fYXNzZW1ibGVyKTsKIH0KIAogQXNzZW1ibGVyOjpKdW1wTGlzdCBTZWxlY3Rv
ckNvZGVHZW5lcmF0b3I6Omp1bXBJZk5vUHJldmlvdXNBZGphY2VudEVsZW1lbnQoKQpJbmRleDog
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZWxhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVsYXRpb25zLmNwcAkocmV2aXNpb24gMTk5NDE2KQor
KysgU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZWxhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00NSw3ICs0NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZWxhdGlvbnM+IGNvbW1pdFJlbGF0
aW8KICAgICB9OwogCiAgICAgZm9yIChhdXRvJiByZWxhdGlvbiA6IHJlbGF0aW9ucykgewotICAg
ICAgICBpZiAoJnJlbGF0aW9uLmVsZW1lbnQgIT0gJmVsZW1lbnQpIHsKKyAgICAgICAgaWYgKHJl
bGF0aW9uLmVsZW1lbnQgIT0gJmVsZW1lbnQpIHsKICAgICAgICAgICAgIGFwcGVuZFN0eWxlUmVs
YXRpb24ocmVsYXRpb24pOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KQEAgLTkx
LDcgKzkxLDcgQEAgdm9pZCBjb21taXRSZWxhdGlvbnMoc3RkOjp1bmlxdWVfcHRyPFJlbAogICAg
IGlmICghcmVsYXRpb25zKQogICAgICAgICByZXR1cm47CiAgICAgZm9yIChhdXRvJiByZWxhdGlv
biA6ICpyZWxhdGlvbnMpIHsKLSAgICAgICAgYXV0byYgZWxlbWVudCA9IGNvbnN0X2Nhc3Q8RWxl
bWVudCY+KHJlbGF0aW9uLmVsZW1lbnQpOworICAgICAgICBhdXRvJiBlbGVtZW50ID0gY29uc3Rf
Y2FzdDxFbGVtZW50Jj4oKnJlbGF0aW9uLmVsZW1lbnQpOwogICAgICAgICBzd2l0Y2ggKHJlbGF0
aW9uLnR5cGUpIHsKICAgICAgICAgY2FzZSBSZWxhdGlvbjo6QWZmZWN0ZWRCeUFjdGl2ZToKICAg
ICAgICAgICAgIGVsZW1lbnQuc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5QWN0aXZlKCk7CkBAIC0xMDgs
OSArMTA4LDE0IEBAIHZvaWQgY29tbWl0UmVsYXRpb25zKHN0ZDo6dW5pcXVlX3B0cjxSZWwKICAg
ICAgICAgY2FzZSBSZWxhdGlvbjo6QWZmZWN0ZWRCeVByZXZpb3VzU2libGluZzoKICAgICAgICAg
ICAgIGVsZW1lbnQuc2V0U3R5bGVJc0FmZmVjdGVkQnlQcmV2aW91c1NpYmxpbmcoKTsKICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFJlbGF0aW9uOjpBZmZlY3RzTmV4dFNpYmxpbmc6
Ci0gICAgICAgICAgICBlbGVtZW50LnNldEFmZmVjdHNOZXh0U2libGluZ0VsZW1lbnRTdHlsZSgp
OworICAgICAgICBjYXNlIFJlbGF0aW9uOjpBZmZlY3RzTmV4dFNpYmxpbmc6IHsKKyAgICAgICAg
ICAgIGF1dG8qIHNpYmxpbmcgPSAmZWxlbWVudDsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCByZWxhdGlvbi52YWx1ZSAmJiBzaWJsaW5nOyArK2kpIHsKKyAgICAgICAgICAg
ICAgICBzaWJsaW5nLT5zZXRBZmZlY3RzTmV4dFNpYmxpbmdFbGVtZW50U3R5bGUoKTsKKyAgICAg
ICAgICAgICAgICBzaWJsaW5nID0gc2libGluZy0+bmV4dEVsZW1lbnRTaWJsaW5nKCk7CisgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIFJl
bGF0aW9uOjpDaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlczoKICAgICAg
ICAgICAgIGVsZW1lbnQuc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVs
ZXMoKTsKICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5
bGVSZWxhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJl
bGF0aW9ucy5oCShyZXZpc2lvbiAxOTk0MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHls
ZVJlbGF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBAIHN0cnVjdCBSZWxh
dGlvbiB7CiAgICAgICAgIEFmZmVjdGVkQnlFbXB0eSwKICAgICAgICAgQWZmZWN0ZWRCeUhvdmVy
LAogICAgICAgICBBZmZlY3RlZEJ5UHJldmlvdXNTaWJsaW5nLAorICAgICAgICAvLyBGb3IgQWZm
ZWN0c05leHRTaWJsaW5nICd2YWx1ZScgdGVsbHMgaG93IG1hbnkgc2libGluZ3MgdG8gbWFyayBi
YWNrd2FyZHMgZnJvbSAnZWxlbWVudCcuCiAgICAgICAgIEFmZmVjdHNOZXh0U2libGluZywKICAg
ICAgICAgQ2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMsCiAgICAgICAg
IENoaWxkcmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlcywKQEAgLTU0LDEyICs1NSwxMiBAQCBz
dHJ1Y3QgUmVsYXRpb24gewogICAgICAgICBOdGhDaGlsZEluZGV4LAogICAgICAgICBVbmlxdWUs
CiAgICAgfTsKLSAgICBjb25zdCBFbGVtZW50JiBlbGVtZW50OworICAgIGNvbnN0IEVsZW1lbnQq
IGVsZW1lbnQ7CiAgICAgVHlwZSB0eXBlOwogICAgIHVuc2lnbmVkIHZhbHVlOwogCiAgICAgUmVs
YXRpb24oY29uc3QgRWxlbWVudCYgZWxlbWVudCwgVHlwZSB0eXBlLCB1bnNpZ25lZCB2YWx1ZSA9
IDEpCi0gICAgICAgIDogZWxlbWVudChlbGVtZW50KQorICAgICAgICA6IGVsZW1lbnQoJmVsZW1l
bnQpCiAgICAgICAgICwgdHlwZSh0eXBlKQogICAgICAgICAsIHZhbHVlKHZhbHVlKQogICAgIHsg
fQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276426</attachid>
            <date>2016-04-14 14:12:25 -0700</date>
            <delta_ts>2016-04-15 00:07:15 -0700</delta_ts>
            <desc>patch</desc>
            <filename>affectsnextsibling-combine-2.patch</filename>
            <type>text/plain</type>
            <size>10329</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5OTU1MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDE2LTA0LTE0ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBBZmZlY3RzTmV4dFNpYmxpbmcg
c3R5bGUgcmVsYXRpb24gbWFya2luZyBpcyBpbmVmZmljaWVudAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2NTkzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgYWRkIGEgU3R5bGVSZWxhdGlvbiBlbnRy
eSBmb3IgZWFjaCBzaWJsaW5nIHRvIG1hcmsuIFdpdGggbG9uZyBzaWJsaW5nIGxpc3RzIHRoaXMg
Y2FuIGJlIGluZWZmaWNpZW50CisgICAgICAgIGluIHRlcm1zIG9mIGJvdGggbWVtb3J5IGFuZCBz
cGVlZC4gSW5zdGVhZCBtYWtlIGEgc2luZ2xlIGVudHJ5IHRoYXQgaW5jbHVkZXMgdGhlIHNpYmxp
bmcgY291bnQgdG8gbWFyay4KKworICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6YWRkU3R5bGVSZWxhdGlvbik6CisKKyAgICAgICAgICAgIFdoZW4g
YWRkaW5nIEFmZmVjdHNOZXh0U2libGluZyBlbnRyeSBjaGVjayBpbiB0aGUgbGFzdCBlbnRyeSBp
biB0aGUgc3R5bGUgcmVsYXRpb24gdmVjdG9yIGhhcyB0aGUKKyAgICAgICAgICAgIHNhbWUgdHlw
ZSBhbmQgaXMgcGFydCBvZiB0aGUgc2FtZSBzaWJsaW5nIGNoYWluLiBJZiBzbyBqdXN0IHVwZGF0
ZSB0aGUgZXhpc3RpbmcgZW50cnkuCisKKyAgICAgICAgKiBjc3NqaXQvU2VsZWN0b3JDb21waWxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNvbXBpbGVyOjpTZWxlY3RvckNvZGVH
ZW5lcmF0b3I6OmdlbmVyYXRlQWRkU3R5bGVSZWxhdGlvbik6CisKKyAgICAgICAgICAgIFRoZSBz
YW1lIHRoaW5nIGluIGhhbmQtY3JhZnRlZCBtYWNybyBhc3NlbWJsZXIuCisKKyAgICAgICAgKiBj
c3NqaXQvU2VsZWN0b3JDb21waWxlci5oOgorCisgICAgICAgICAgICBTdG9wIGx5aW5nIGFib3V0
IHRoZSBjb25zdG5lc3Mgb2YgdGhlIENoZWNraW5nQ29udGV4dC4KKworICAgICAgICAqIHN0eWxl
L1N0eWxlUmVsYXRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpjb21taXRSZWxh
dGlvbnMpOgorCisgICAgICAgICAgICBNYXJrIGFzIG1hbnkgc2libGluZyBlbGVtZW50cyBhcyB0
aGUgdmFsdWUgaW5kaWNhdGVzLgorCisgICAgICAgICogc3R5bGUvU3R5bGVSZWxhdGlvbnMuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSZWxhdGlvbjo6UmVsYXRpb24pOgorCisgICAgICAg
ICAgICBNYWtlIGVsZW1lbnQgYSBwb2ludGVyIHNvIHdlIGNhbiB1ZHBhdGUgaXQuCisKIDIwMTYt
MDQtMTQgIE1hbnVlbCBSZWdvIENhc2Fzbm92YXMgIDxyZWdvQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW2Nzcy1ncmlkXSBJbXBsZW1lbnQgQ1NTR3JpZFRlbXBsYXRlQXJlYXNWYWx1ZTo6ZXF1YWxz
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAkocmV2aXNpb24gMTk5
NDE2KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTg5LDYgKzg5LDE0IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRTdHlsZVJlbGF0
aW9uKFNlbGUKICAgICBBU1NFUlQodmFsdWUgPT0gMSB8fCB0eXBlID09IFN0eWxlOjpSZWxhdGlv
bjo6TnRoQ2hpbGRJbmRleCB8fCB0eXBlID09IFN0eWxlOjpSZWxhdGlvbjo6QWZmZWN0ZWRCeUVt
cHR5KTsKICAgICBpZiAoY2hlY2tpbmdDb250ZXh0LnJlc29sdmluZ01vZGUgIT0gU2VsZWN0b3JD
aGVja2VyOjpNb2RlOjpSZXNvbHZpbmdTdHlsZSkKICAgICAgICAgcmV0dXJuOworICAgIGlmICh0
eXBlID09IFN0eWxlOjpSZWxhdGlvbjo6QWZmZWN0c05leHRTaWJsaW5nICYmICFjaGVja2luZ0Nv
bnRleHQuc3R5bGVSZWxhdGlvbnMuaXNFbXB0eSgpKSB7CisgICAgICAgIGF1dG8mIGxhc3QgPSBj
aGVja2luZ0NvbnRleHQuc3R5bGVSZWxhdGlvbnMubGFzdCgpOworICAgICAgICBpZiAobGFzdC50
eXBlID09IFN0eWxlOjpSZWxhdGlvbjo6QWZmZWN0c05leHRTaWJsaW5nICYmIGxhc3QuZWxlbWVu
dC0+cHJldmlvdXNFbGVtZW50U2libGluZygpID09ICZlbGVtZW50KSB7CisgICAgICAgICAgICAr
K2xhc3QudmFsdWU7CisgICAgICAgICAgICBsYXN0LmVsZW1lbnQgPSAmZWxlbWVudDsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KICAgICBjaGVja2luZ0NvbnRleHQuc3R5
bGVSZWxhdGlvbnMuYXBwZW5kKHsgZWxlbWVudCwgdHlwZSwgdmFsdWUgfSk7CiB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2Nzc2ppdC9TZWxlY3RvckNvbXBpbGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9jc3NqaXQvU2VsZWN0b3JDb21waWxlci5jcHAJKHJldmlzaW9uIDE5
OTQxNikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzc2ppdC9TZWxlY3RvckNvbXBpbGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjE5OCwxNiArMjE5OCw1NyBAQCB2b2lkIFNlbGVjdG9yQ29kZUdlbmVy
YXRvcjo6Z2VuZXJhdGVBZGRTCiB7CiAgICAgQVNTRVJUKG1fc2VsZWN0b3JDb250ZXh0ICE9IFNl
bGVjdG9yQ29udGV4dDo6UXVlcnlTZWxlY3Rvcik7CiAKKyAgICBBc3NlbWJsZXI6OkFkZHJlc3Mg
dmVjdG9yQWRkcmVzcyhjaGVja2luZ0NvbnRleHQsIE9CSkVDVF9PRkZTRVRPRihTZWxlY3RvckNo
ZWNrZXI6OkNoZWNraW5nQ29udGV4dCwgc3R5bGVSZWxhdGlvbnMpKTsKKyAgICBhdXRvIGRhdGFB
ZGRyZXNzID0gdmVjdG9yQWRkcmVzcy53aXRoT2Zmc2V0KFN0eWxlOjpSZWxhdGlvbnM6OmRhdGFN
ZW1vcnlPZmZzZXQoKSk7CisgICAgYXV0byBzaXplQWRkcmVzcyA9IHZlY3RvckFkZHJlc3Mud2l0
aE9mZnNldChTdHlsZTo6UmVsYXRpb25zOjpzaXplTWVtb3J5T2Zmc2V0KCkpOworCisgICAgLy8g
Rm9yIEFmZmVjdHNOZXh0U2libGluZyB3ZSBqdXN0IGluY3JlbWVudCB0aGUgY291bnQgaWYgdGhl
IHByZXZpb3VzIGFkZGVkIHJlbGF0aW9uIHdhcyBpbiB0aGUgc2FtZSBzaWJsaW5nIGNoYWluLgor
ICAgIEFzc2VtYmxlcjo6SnVtcExpc3QgbWVyZ2VTdWNjZXNzOworICAgIGlmIChyZWxhdGlvblR5
cGUgPT0gU3R5bGU6OlJlbGF0aW9uOjpBZmZlY3RzTmV4dFNpYmxpbmcpIHsKKyAgICAgICAgQXNz
ZW1ibGVyOjpKdW1wTGlzdCBtZXJnZUZhaWx1cmU7CisgICAgICAgIC8vIGlmICghY2hlY2tpbmdD
b250ZXh0LnN0eWxlUmVsYXRpb25zLmlzRW1wdHkoKSkKKyAgICAgICAgbWVyZ2VGYWlsdXJlLmFw
cGVuZChtX2Fzc2VtYmxlci5icmFuY2hUZXN0MzIoQXNzZW1ibGVyOjpaZXJvLCBzaXplQWRkcmVz
cykpOworCisgICAgICAgIC8vIFN0eWxlOjpSZWxhdGlvbiYgbGFzdFJlbGF0aW9uID0gY2hlY2tp
bmdDb250ZXh0LnN0eWxlUmVsYXRpb25zLmxhc3QoKTsKKyAgICAgICAgTG9jYWxSZWdpc3RlciBs
YXN0UmVsYXRpb24obV9yZWdpc3RlckFsbG9jYXRvcik7CisgICAgICAgIG1fYXNzZW1ibGVyLmxv
YWQzMihzaXplQWRkcmVzcywgbGFzdFJlbGF0aW9uKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3Vi
MzIoQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoMSksIGxhc3RSZWxhdGlvbik7CisgICAgICAgIG1f
YXNzZW1ibGVyLm11bDMyKEFzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKHNpemVvZihTdHlsZTo6UmVs
YXRpb24pKSwgbGFzdFJlbGF0aW9uLCBsYXN0UmVsYXRpb24pOworICAgICAgICBtX2Fzc2VtYmxl
ci5hZGRQdHIoZGF0YUFkZHJlc3MsIGxhc3RSZWxhdGlvbik7CisKKyAgICAgICAgLy8gaWYgKGxh
c3RSZWxhdGlvbi50eXBlID09IFN0eWxlOjpSZWxhdGlvbjo6QWZmZWN0c05leHRTaWJsaW5nKQor
ICAgICAgICBBc3NlbWJsZXI6OkFkZHJlc3MgdHlwZUFkZHJlc3MobGFzdFJlbGF0aW9uLCBPQkpF
Q1RfT0ZGU0VUT0YoU3R5bGU6OlJlbGF0aW9uLCB0eXBlKSk7CisgICAgICAgIG1lcmdlRmFpbHVy
ZS5hcHBlbmQobV9hc3NlbWJsZXIuYnJhbmNoMzIoQXNzZW1ibGVyOjpOb3RFcXVhbCwgdHlwZUFk
ZHJlc3MsIEFzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKFN0eWxlOjpSZWxhdGlvbjo6QWZmZWN0c05l
eHRTaWJsaW5nKSkpOworCisgICAgICAgIEFzc2VtYmxlcjo6QWRkcmVzcyBlbGVtZW50QWRkcmVz
cyhsYXN0UmVsYXRpb24sIE9CSkVDVF9PRkZTRVRPRihTdHlsZTo6UmVsYXRpb24sIGVsZW1lbnQp
KTsKKyAgICAgICAgeworICAgICAgICAgICAgLy8gaWYgKGxhc3RSZWxhdGlvbi5lbGVtZW50LT5w
cmV2aW91c1NpYmxpbmdFbGVtZW50KCkgPT0gJmVsZW1lbnQpCisgICAgICAgICAgICBMb2NhbFJl
Z2lzdGVyIHByZXZpb3VzU2libGluZ0VsZW1lbnQobV9yZWdpc3RlckFsbG9jYXRvcik7CisgICAg
ICAgICAgICBtX2Fzc2VtYmxlci5sb2FkUHRyKGVsZW1lbnRBZGRyZXNzLCBwcmV2aW91c1NpYmxp
bmdFbGVtZW50KTsKKyAgICAgICAgICAgIGdlbmVyYXRlV2Fsa1RvUHJldmlvdXNBZGphY2VudEVs
ZW1lbnQobWVyZ2VGYWlsdXJlLCBwcmV2aW91c1NpYmxpbmdFbGVtZW50KTsKKyAgICAgICAgICAg
IG1lcmdlRmFpbHVyZS5hcHBlbmQobV9hc3NlbWJsZXIuYnJhbmNoUHRyKEFzc2VtYmxlcjo6Tm90
RXF1YWwsIHByZXZpb3VzU2libGluZ0VsZW1lbnQsIGVsZW1lbnQpKTsKKyAgICAgICAgfQorCisg
ICAgICAgIC8vICsrbGFzdFJlbGF0aW9uLnZhbHVlOworICAgICAgICBBc3NlbWJsZXI6OkFkZHJl
c3MgdmFsdWVBZGRyZXNzKGxhc3RSZWxhdGlvbiwgT0JKRUNUX09GRlNFVE9GKFN0eWxlOjpSZWxh
dGlvbiwgdmFsdWUpKTsKKyAgICAgICAgTG9jYWxSZWdpc3RlciB2YWx1ZShtX3JlZ2lzdGVyQWxs
b2NhdG9yKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9hZDMyKHZhbHVlQWRkcmVzcywgdmFsdWUp
OworICAgICAgICBtX2Fzc2VtYmxlci5hZGQzMihBc3NlbWJsZXI6OlRydXN0ZWRJbW0zMigxKSwg
dmFsdWUpOworICAgICAgICBtX2Fzc2VtYmxlci5zdG9yZTMyKHZhbHVlLCB2YWx1ZUFkZHJlc3Mp
OworCisgICAgICAgIC8vIGxhc3RSZWxhdGlvbi5lbGVtZW50ID0gJmVsZW1lbnQ7CisgICAgICAg
IG1fYXNzZW1ibGVyLnN0b3JlUHRyKGVsZW1lbnQsIGVsZW1lbnRBZGRyZXNzKTsKKworICAgICAg
ICBtZXJnZVN1Y2Nlc3MuYXBwZW5kKG1fYXNzZW1ibGVyLmp1bXAoKSk7CisgICAgICAgIG1lcmdl
RmFpbHVyZS5saW5rKCZtX2Fzc2VtYmxlcik7CisgICAgfQorCiAgICAgLy8gRklYTUU6IEFwcGVu
ZCB0byB2ZWN0b3Igd2l0aG91dCBhIGZ1bmN0aW9uIGNhbGwgYXQgbGVhc3Qgd2hlbiB0aGVyZSBp
cyBzdWZmaWNpZW50IGNhcGFjaXR5LgogICAgIEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbkNhbGwobV9h
c3NlbWJsZXIsIG1fcmVnaXN0ZXJBbGxvY2F0b3IsIG1fc3RhY2tBbGxvY2F0b3IsIG1fZnVuY3Rp
b25DYWxscyk7CiAgICAgZnVuY3Rpb25DYWxsLnNldEZ1bmN0aW9uQWRkcmVzcyhhZGRTdHlsZVJl
bGF0aW9uRnVuY3Rpb24pOwogICAgIGZ1bmN0aW9uQ2FsbC5zZXRUd29Bcmd1bWVudHMoY2hlY2tp
bmdDb250ZXh0LCBlbGVtZW50KTsKICAgICBmdW5jdGlvbkNhbGwuY2FsbCgpOwogCi0gICAgQXNz
ZW1ibGVyOjpBZGRyZXNzIHZlY3RvckFkZHJlc3MoY2hlY2tpbmdDb250ZXh0LCBPQkpFQ1RfT0ZG
U0VUT0YoU2VsZWN0b3JDaGVja2VyOjpDaGVja2luZ0NvbnRleHQsIHN0eWxlUmVsYXRpb25zKSk7
Ci0gICAgYXV0byBkYXRhQWRkcmVzcyA9IHZlY3RvckFkZHJlc3Mud2l0aE9mZnNldChTdHlsZTo6
UmVsYXRpb25zOjpkYXRhTWVtb3J5T2Zmc2V0KCkpOwotICAgIGF1dG8gc2l6ZUFkZHJlc3MgPSB2
ZWN0b3JBZGRyZXNzLndpdGhPZmZzZXQoU3R5bGU6OlJlbGF0aW9uczo6c2l6ZU1lbW9yeU9mZnNl
dCgpKTsKLQogICAgIExvY2FsUmVnaXN0ZXIgcmVsYXRpb25Qb2ludGVyKG1fcmVnaXN0ZXJBbGxv
Y2F0b3IpOwogICAgIG1fYXNzZW1ibGVyLmxvYWQzMihzaXplQWRkcmVzcywgcmVsYXRpb25Qb2lu
dGVyKTsKICAgICBtX2Fzc2VtYmxlci5zdWIzMihBc3NlbWJsZXI6OlRydXN0ZWRJbW0zMigxKSwg
cmVsYXRpb25Qb2ludGVyKTsKQEAgLTIyMjEsNiArMjI2Miw4IEBAIHZvaWQgU2VsZWN0b3JDb2Rl
R2VuZXJhdG9yOjpnZW5lcmF0ZUFkZFMKICAgICAgICAgQXNzZW1ibGVyOjpBZGRyZXNzIHZhbHVl
QWRkcmVzcyhyZWxhdGlvblBvaW50ZXIsIE9CSkVDVF9PRkZTRVRPRihTdHlsZTo6UmVsYXRpb24s
IHZhbHVlKSk7CiAgICAgICAgIG1fYXNzZW1ibGVyLnN0b3JlMzIoKnZhbHVlLCB2YWx1ZUFkZHJl
c3MpOwogICAgIH0KKworICAgIG1lcmdlU3VjY2Vzcy5saW5rKCZtX2Fzc2VtYmxlcik7CiB9CiAK
IEFzc2VtYmxlcjo6SnVtcExpc3QgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpqdW1wSWZOb1ByZXZp
b3VzQWRqYWNlbnRFbGVtZW50KCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzc2ppdC9TZWxlY3Rv
ckNvbXBpbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3Nzaml0L1NlbGVjdG9y
Q29tcGlsZXIuaAkocmV2aXNpb24gMTk5NDE2KQorKysgU291cmNlL1dlYkNvcmUvY3Nzaml0L1Nl
bGVjdG9yQ29tcGlsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtODAsNyArODAsNyBAQCBlbnVtIGNs
YXNzIFNlbGVjdG9yQ29udGV4dCB7CiB0eXBlZGVmIHVuc2lnbmVkICgqUnVsZUNvbGxlY3RvclNp
bXBsZVNlbGVjdG9yQ2hlY2tlcikoY29uc3QgRWxlbWVudCosIHVuc2lnbmVkKik7CiB0eXBlZGVm
IHVuc2lnbmVkICgqUXVlcnlTZWxlY3RvclNpbXBsZVNlbGVjdG9yQ2hlY2tlcikoY29uc3QgRWxl
bWVudCopOwogCi10eXBlZGVmIHVuc2lnbmVkICgqUnVsZUNvbGxlY3RvclNlbGVjdG9yQ2hlY2tl
cldpdGhDaGVja2luZ0NvbnRleHQpKGNvbnN0IEVsZW1lbnQqLCBjb25zdCBTZWxlY3RvckNoZWNr
ZXI6OkNoZWNraW5nQ29udGV4dCosIHVuc2lnbmVkKik7Cit0eXBlZGVmIHVuc2lnbmVkICgqUnVs
ZUNvbGxlY3RvclNlbGVjdG9yQ2hlY2tlcldpdGhDaGVja2luZ0NvbnRleHQpKGNvbnN0IEVsZW1l
bnQqLCBTZWxlY3RvckNoZWNrZXI6OkNoZWNraW5nQ29udGV4dCosIHVuc2lnbmVkKik7CiB0eXBl
ZGVmIHVuc2lnbmVkICgqUXVlcnlTZWxlY3RvclNlbGVjdG9yQ2hlY2tlcldpdGhDaGVja2luZ0Nv
bnRleHQpKGNvbnN0IEVsZW1lbnQqLCBjb25zdCBTZWxlY3RvckNoZWNrZXI6OkNoZWNraW5nQ29u
dGV4dCopOwogCiBTZWxlY3RvckNvbXBpbGF0aW9uU3RhdHVzIGNvbXBpbGVTZWxlY3Rvcihjb25z
dCBDU1NTZWxlY3RvciosIEpTQzo6Vk0qLCBTZWxlY3RvckNvbnRleHQsIEpTQzo6TWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmJiBvdXRwdXRDb2RlUmVmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0eWxl
L1N0eWxlUmVsYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdHlsZS9T
dHlsZVJlbGF0aW9ucy5jcHAJKHJldmlzaW9uIDE5OTQxNikKKysrIFNvdXJjZS9XZWJDb3JlL3N0
eWxlL1N0eWxlUmVsYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8UmVsYXRpb25zPiBjb21taXRSZWxhdGlvCiAgICAgfTsKIAogICAgIGZv
ciAoYXV0byYgcmVsYXRpb24gOiByZWxhdGlvbnMpIHsKLSAgICAgICAgaWYgKCZyZWxhdGlvbi5l
bGVtZW50ICE9ICZlbGVtZW50KSB7CisgICAgICAgIGlmIChyZWxhdGlvbi5lbGVtZW50ICE9ICZl
bGVtZW50KSB7CiAgICAgICAgICAgICBhcHBlbmRTdHlsZVJlbGF0aW9uKHJlbGF0aW9uKTsKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgY29t
bWl0UmVsYXRpb25zKHN0ZDo6dW5pcXVlX3B0cjxSZWwKICAgICBpZiAoIXJlbGF0aW9ucykKICAg
ICAgICAgcmV0dXJuOwogICAgIGZvciAoYXV0byYgcmVsYXRpb24gOiAqcmVsYXRpb25zKSB7Ci0g
ICAgICAgIGF1dG8mIGVsZW1lbnQgPSBjb25zdF9jYXN0PEVsZW1lbnQmPihyZWxhdGlvbi5lbGVt
ZW50KTsKKyAgICAgICAgYXV0byYgZWxlbWVudCA9IGNvbnN0X2Nhc3Q8RWxlbWVudCY+KCpyZWxh
dGlvbi5lbGVtZW50KTsKICAgICAgICAgc3dpdGNoIChyZWxhdGlvbi50eXBlKSB7CiAgICAgICAg
IGNhc2UgUmVsYXRpb246OkFmZmVjdGVkQnlBY3RpdmU6CiAgICAgICAgICAgICBlbGVtZW50LnNl
dENoaWxkcmVuQWZmZWN0ZWRCeUFjdGl2ZSgpOwpAQCAtMTA4LDkgKzEwOCwxMiBAQCB2b2lkIGNv
bW1pdFJlbGF0aW9ucyhzdGQ6OnVuaXF1ZV9wdHI8UmVsCiAgICAgICAgIGNhc2UgUmVsYXRpb246
OkFmZmVjdGVkQnlQcmV2aW91c1NpYmxpbmc6CiAgICAgICAgICAgICBlbGVtZW50LnNldFN0eWxl
SXNBZmZlY3RlZEJ5UHJldmlvdXNTaWJsaW5nKCk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBSZWxhdGlvbjo6QWZmZWN0c05leHRTaWJsaW5nOgotICAgICAgICAgICAgZWxlbWVu
dC5zZXRBZmZlY3RzTmV4dFNpYmxpbmdFbGVtZW50U3R5bGUoKTsKKyAgICAgICAgY2FzZSBSZWxh
dGlvbjo6QWZmZWN0c05leHRTaWJsaW5nOiB7CisgICAgICAgICAgICBhdXRvKiBzaWJsaW5nID0g
JmVsZW1lbnQ7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVsYXRpb24u
dmFsdWUgJiYgc2libGluZzsgKytpLCBzaWJsaW5nID0gc2libGluZy0+bmV4dEVsZW1lbnRTaWJs
aW5nKCkpCisgICAgICAgICAgICAgICAgc2libGluZy0+c2V0QWZmZWN0c05leHRTaWJsaW5nRWxl
bWVudFN0eWxlKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNl
IFJlbGF0aW9uOjpDaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlczoKICAg
ICAgICAgICAgIGVsZW1lbnQuc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFs
UnVsZXMoKTsKICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVSZWxhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHls
ZVJlbGF0aW9ucy5oCShyZXZpc2lvbiAxOTk0MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdHlsZS9T
dHlsZVJlbGF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBAIHN0cnVjdCBS
ZWxhdGlvbiB7CiAgICAgICAgIEFmZmVjdGVkQnlFbXB0eSwKICAgICAgICAgQWZmZWN0ZWRCeUhv
dmVyLAogICAgICAgICBBZmZlY3RlZEJ5UHJldmlvdXNTaWJsaW5nLAorICAgICAgICAvLyBGb3Ig
QWZmZWN0c05leHRTaWJsaW5nICd2YWx1ZScgdGVsbHMgaG93IG1hbnkgZWxlbWVudCBzaWJsaW5n
cyB0byBtYXJrIHN0YXJ0aW5nIHdpdGggJ2VsZW1lbnQnLgogICAgICAgICBBZmZlY3RzTmV4dFNp
YmxpbmcsCiAgICAgICAgIENoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVz
LAogICAgICAgICBDaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMsCkBAIC01NCwxMiAr
NTUsMTIgQEAgc3RydWN0IFJlbGF0aW9uIHsKICAgICAgICAgTnRoQ2hpbGRJbmRleCwKICAgICAg
ICAgVW5pcXVlLAogICAgIH07Ci0gICAgY29uc3QgRWxlbWVudCYgZWxlbWVudDsKKyAgICBjb25z
dCBFbGVtZW50KiBlbGVtZW50OwogICAgIFR5cGUgdHlwZTsKICAgICB1bnNpZ25lZCB2YWx1ZTsK
IAogICAgIFJlbGF0aW9uKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIFR5cGUgdHlwZSwgdW5zaWdu
ZWQgdmFsdWUgPSAxKQotICAgICAgICA6IGVsZW1lbnQoZWxlbWVudCkKKyAgICAgICAgOiBlbGVt
ZW50KCZlbGVtZW50KQogICAgICAgICAsIHR5cGUodHlwZSkKICAgICAgICAgLCB2YWx1ZSh2YWx1
ZSkKICAgICB7IH0K
</data>
<flag name="review"
          id="300725"
          type_id="1"
          status="+"
          setter="benjamin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276464</attachid>
            <date>2016-04-15 00:07:15 -0700</date>
            <delta_ts>2016-04-15 00:07:15 -0700</delta_ts>
            <desc>patch</desc>
            <filename>affectsnextsibling-combine-3.patch</filename>
            <type>text/plain</type>
            <size>10072</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5OTU1MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDE2LTA0LTE0ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBBZmZlY3RzTmV4dFNpYmxpbmcg
c3R5bGUgcmVsYXRpb24gbWFya2luZyBpcyBpbmVmZmljaWVudAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2NTkzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgQmVuamFtaW4gUG91bGFpbi4KKworICAgICAgICBXZSBhZGQgYSBTdHlsZVJlbGF0aW9uIGVu
dHJ5IGZvciBlYWNoIHNpYmxpbmcgdG8gbWFyay4gV2l0aCBsb25nIHNpYmxpbmcgbGlzdHMgdGhp
cyBjYW4gYmUgaW5lZmZpY2llbnQKKyAgICAgICAgaW4gdGVybXMgb2YgYm90aCBtZW1vcnkgYW5k
IHNwZWVkLiBJbnN0ZWFkIG1ha2UgYSBzaW5nbGUgZW50cnkgdGhhdCBpbmNsdWRlcyB0aGUgc2li
bGluZyBjb3VudCB0byBtYXJrLgorCisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjphZGRTdHlsZVJlbGF0aW9uKToKKworICAgICAgICAgICAgV2hl
biBhZGRpbmcgQWZmZWN0c05leHRTaWJsaW5nIGVudHJ5IGNoZWNrIGluIHRoZSBsYXN0IGVudHJ5
IGluIHRoZSBzdHlsZSByZWxhdGlvbiB2ZWN0b3IgaGFzIHRoZQorICAgICAgICAgICAgc2FtZSB0
eXBlIGFuZCBpcyBwYXJ0IG9mIHRoZSBzYW1lIHNpYmxpbmcgY2hhaW4uIElmIHNvIGp1c3QgdXBk
YXRlIHRoZSBleGlzdGluZyBlbnRyeS4KKworICAgICAgICAqIGNzc2ppdC9TZWxlY3RvckNvbXBp
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ29tcGlsZXI6OlNlbGVjdG9yQ29k
ZUdlbmVyYXRvcjo6Z2VuZXJhdGVBZGRTdHlsZVJlbGF0aW9uKToKKworICAgICAgICAgICAgVGhl
IHNhbWUgdGhpbmcgaW4gaGFuZC1jcmFmdGVkIG1hY3JvIGFzc2VtYmxlci4KKworICAgICAgICAq
IGNzc2ppdC9TZWxlY3RvckNvbXBpbGVyLmg6CisKKyAgICAgICAgICAgIFN0b3AgbHlpbmcgYWJv
dXQgdGhlIGNvbnN0bmVzcyBvZiB0aGUgQ2hlY2tpbmdDb250ZXh0LgorCisgICAgICAgICogc3R5
bGUvU3R5bGVSZWxhdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OmNvbW1pdFJl
bGF0aW9ucyk6CisKKyAgICAgICAgICAgIE1hcmsgYXMgbWFueSBzaWJsaW5nIGVsZW1lbnRzIGFz
IHRoZSB2YWx1ZSBpbmRpY2F0ZXMuCisKKyAgICAgICAgKiBzdHlsZS9TdHlsZVJlbGF0aW9ucy5o
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlJlbGF0aW9uOjpSZWxhdGlvbik6CisKKyAgICAg
ICAgICAgIE1ha2UgZWxlbWVudCBhIHBvaW50ZXIgc28gd2UgY2FuIHVkcGF0ZSBpdC4KKwogMjAx
Ni0wNC0xNCAgTWFudWVsIFJlZ28gQ2FzYXNub3ZhcyAgPHJlZ29AaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbY3NzLWdyaWRdIEltcGxlbWVudCBDU1NHcmlkVGVtcGxhdGVBcmVhc1ZhbHVlOjplcXVh
bHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCShyZXZpc2lvbiAx
OTk0MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODksNiArODksMTQgQEAgc3RhdGljIGlubGluZSB2b2lkIGFkZFN0eWxlUmVs
YXRpb24oU2VsZQogICAgIEFTU0VSVCh2YWx1ZSA9PSAxIHx8IHR5cGUgPT0gU3R5bGU6OlJlbGF0
aW9uOjpOdGhDaGlsZEluZGV4IHx8IHR5cGUgPT0gU3R5bGU6OlJlbGF0aW9uOjpBZmZlY3RlZEJ5
RW1wdHkpOwogICAgIGlmIChjaGVja2luZ0NvbnRleHQucmVzb2x2aW5nTW9kZSAhPSBTZWxlY3Rv
ckNoZWNrZXI6Ok1vZGU6OlJlc29sdmluZ1N0eWxlKQogICAgICAgICByZXR1cm47CisgICAgaWYg
KHR5cGUgPT0gU3R5bGU6OlJlbGF0aW9uOjpBZmZlY3RzTmV4dFNpYmxpbmcgJiYgIWNoZWNraW5n
Q29udGV4dC5zdHlsZVJlbGF0aW9ucy5pc0VtcHR5KCkpIHsKKyAgICAgICAgYXV0byYgbGFzdCA9
IGNoZWNraW5nQ29udGV4dC5zdHlsZVJlbGF0aW9ucy5sYXN0KCk7CisgICAgICAgIGlmIChsYXN0
LnR5cGUgPT0gU3R5bGU6OlJlbGF0aW9uOjpBZmZlY3RzTmV4dFNpYmxpbmcgJiYgbGFzdC5lbGVt
ZW50ID09IGVsZW1lbnQubmV4dEVsZW1lbnRTaWJsaW5nKCkpIHsKKyAgICAgICAgICAgICsrbGFz
dC52YWx1ZTsKKyAgICAgICAgICAgIGxhc3QuZWxlbWVudCA9ICZlbGVtZW50OworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQogICAgIGNoZWNraW5nQ29udGV4dC5zdHlsZVJl
bGF0aW9ucy5hcHBlbmQoeyBlbGVtZW50LCB0eXBlLCB2YWx1ZSB9KTsKIH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2Nzc2ppdC9TZWxlY3RvckNvbXBpbGVyLmNwcAkocmV2aXNpb24gMTk5NDE2
KQorKysgU291cmNlL1dlYkNvcmUvY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMTk4LDE2ICsyMTk4LDUyIEBAIHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9y
OjpnZW5lcmF0ZUFkZFMKIHsKICAgICBBU1NFUlQobV9zZWxlY3RvckNvbnRleHQgIT0gU2VsZWN0
b3JDb250ZXh0OjpRdWVyeVNlbGVjdG9yKTsKIAorICAgIEFzc2VtYmxlcjo6QWRkcmVzcyB2ZWN0
b3JBZGRyZXNzKGNoZWNraW5nQ29udGV4dCwgT0JKRUNUX09GRlNFVE9GKFNlbGVjdG9yQ2hlY2tl
cjo6Q2hlY2tpbmdDb250ZXh0LCBzdHlsZVJlbGF0aW9ucykpOworICAgIGF1dG8gZGF0YUFkZHJl
c3MgPSB2ZWN0b3JBZGRyZXNzLndpdGhPZmZzZXQoU3R5bGU6OlJlbGF0aW9uczo6ZGF0YU1lbW9y
eU9mZnNldCgpKTsKKyAgICBhdXRvIHNpemVBZGRyZXNzID0gdmVjdG9yQWRkcmVzcy53aXRoT2Zm
c2V0KFN0eWxlOjpSZWxhdGlvbnM6OnNpemVNZW1vcnlPZmZzZXQoKSk7CisKKyAgICAvLyBGb3Ig
QWZmZWN0c05leHRTaWJsaW5nIHdlIGp1c3QgaW5jcmVtZW50IHRoZSBjb3VudCBpZiB0aGUgcHJl
dmlvdXMgYWRkZWQgcmVsYXRpb24gd2FzIGluIHRoZSBzYW1lIHNpYmxpbmcgY2hhaW4uCisgICAg
QXNzZW1ibGVyOjpKdW1wTGlzdCBtZXJnZVN1Y2Nlc3M7CisgICAgaWYgKHJlbGF0aW9uVHlwZSA9
PSBTdHlsZTo6UmVsYXRpb246OkFmZmVjdHNOZXh0U2libGluZykgeworICAgICAgICBBc3NlbWJs
ZXI6Okp1bXBMaXN0IG1lcmdlRmFpbHVyZTsKKworICAgICAgICAvLyBTdHlsZTo6UmVsYXRpb24m
IGxhc3RSZWxhdGlvbiA9IGNoZWNraW5nQ29udGV4dC5zdHlsZVJlbGF0aW9ucy5sYXN0KCk7Cisg
ICAgICAgIExvY2FsUmVnaXN0ZXIgbGFzdFJlbGF0aW9uKG1fcmVnaXN0ZXJBbGxvY2F0b3IpOwor
ICAgICAgICBtX2Fzc2VtYmxlci5sb2FkMzIoc2l6ZUFkZHJlc3MsIGxhc3RSZWxhdGlvbik7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLnN1YjMyKEFzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKDEpLCBsYXN0
UmVsYXRpb24pOyAvLyBBdCBsZWFzdCBvbmUgQWZmZWN0ZWRCeVByZXZpb3VzU2libGluZyBoYXMg
YmVlbiBhZGRlZCBlYXJsaWVyLgorICAgICAgICBtX2Fzc2VtYmxlci5tdWwzMihBc3NlbWJsZXI6
OlRydXN0ZWRJbW0zMihzaXplb2YoU3R5bGU6OlJlbGF0aW9uKSksIGxhc3RSZWxhdGlvbiwgbGFz
dFJlbGF0aW9uKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkUHRyKGRhdGFBZGRyZXNzLCBsYXN0
UmVsYXRpb24pOworCisgICAgICAgIC8vIGlmIChsYXN0UmVsYXRpb24udHlwZSA9PSBTdHlsZTo6
UmVsYXRpb246OkFmZmVjdHNOZXh0U2libGluZykKKyAgICAgICAgQXNzZW1ibGVyOjpBZGRyZXNz
IHR5cGVBZGRyZXNzKGxhc3RSZWxhdGlvbiwgT0JKRUNUX09GRlNFVE9GKFN0eWxlOjpSZWxhdGlv
biwgdHlwZSkpOworICAgICAgICBtZXJnZUZhaWx1cmUuYXBwZW5kKG1fYXNzZW1ibGVyLmJyYW5j
aDMyKEFzc2VtYmxlcjo6Tm90RXF1YWwsIHR5cGVBZGRyZXNzLCBBc3NlbWJsZXI6OlRydXN0ZWRJ
bW0zMihTdHlsZTo6UmVsYXRpb246OkFmZmVjdHNOZXh0U2libGluZykpKTsKKworICAgICAgICBB
c3NlbWJsZXI6OkFkZHJlc3MgZWxlbWVudEFkZHJlc3MobGFzdFJlbGF0aW9uLCBPQkpFQ1RfT0ZG
U0VUT0YoU3R5bGU6OlJlbGF0aW9uLCBlbGVtZW50KSk7CisgICAgICAgIHsKKyAgICAgICAgICAg
IC8vIGlmIChlbGVtZW50Lm5leHRTaWJsaW5nRWxlbWVudCgpID09IGxhc3RSZWxhdGlvbi5lbGVt
ZW50KQorICAgICAgICAgICAgTG9jYWxSZWdpc3RlciBuZXh0U2libGluZ0VsZW1lbnQobV9yZWdp
c3RlckFsbG9jYXRvcik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3ZlKGVsZW1lbnQsIG5l
eHRTaWJsaW5nRWxlbWVudCk7CisgICAgICAgICAgICBnZW5lcmF0ZVdhbGtUb05leHRBZGphY2Vu
dEVsZW1lbnQobWVyZ2VGYWlsdXJlLCBuZXh0U2libGluZ0VsZW1lbnQpOworICAgICAgICAgICAg
bWVyZ2VGYWlsdXJlLmFwcGVuZChtX2Fzc2VtYmxlci5icmFuY2hQdHIoQXNzZW1ibGVyOjpOb3RF
cXVhbCwgbmV4dFNpYmxpbmdFbGVtZW50LCBlbGVtZW50QWRkcmVzcykpOworICAgICAgICB9CisK
KyAgICAgICAgLy8gKytsYXN0UmVsYXRpb24udmFsdWU7CisgICAgICAgIEFzc2VtYmxlcjo6QWRk
cmVzcyB2YWx1ZUFkZHJlc3MobGFzdFJlbGF0aW9uLCBPQkpFQ1RfT0ZGU0VUT0YoU3R5bGU6OlJl
bGF0aW9uLCB2YWx1ZSkpOworICAgICAgICBtX2Fzc2VtYmxlci5hZGQzMihBc3NlbWJsZXI6OlRy
dXN0ZWRJbW0zMigxKSwgdmFsdWVBZGRyZXNzKTsKKworICAgICAgICAvLyBsYXN0UmVsYXRpb24u
ZWxlbWVudCA9ICZlbGVtZW50OworICAgICAgICBtX2Fzc2VtYmxlci5zdG9yZVB0cihlbGVtZW50
LCBlbGVtZW50QWRkcmVzcyk7CisKKyAgICAgICAgbWVyZ2VTdWNjZXNzLmFwcGVuZChtX2Fzc2Vt
Ymxlci5qdW1wKCkpOworICAgICAgICBtZXJnZUZhaWx1cmUubGluaygmbV9hc3NlbWJsZXIpOwor
ICAgIH0KKwogICAgIC8vIEZJWE1FOiBBcHBlbmQgdG8gdmVjdG9yIHdpdGhvdXQgYSBmdW5jdGlv
biBjYWxsIGF0IGxlYXN0IHdoZW4gdGhlcmUgaXMgc3VmZmljaWVudCBjYXBhY2l0eS4KICAgICBG
dW5jdGlvbkNhbGwgZnVuY3Rpb25DYWxsKG1fYXNzZW1ibGVyLCBtX3JlZ2lzdGVyQWxsb2NhdG9y
LCBtX3N0YWNrQWxsb2NhdG9yLCBtX2Z1bmN0aW9uQ2FsbHMpOwogICAgIGZ1bmN0aW9uQ2FsbC5z
ZXRGdW5jdGlvbkFkZHJlc3MoYWRkU3R5bGVSZWxhdGlvbkZ1bmN0aW9uKTsKICAgICBmdW5jdGlv
bkNhbGwuc2V0VHdvQXJndW1lbnRzKGNoZWNraW5nQ29udGV4dCwgZWxlbWVudCk7CiAgICAgZnVu
Y3Rpb25DYWxsLmNhbGwoKTsKIAotICAgIEFzc2VtYmxlcjo6QWRkcmVzcyB2ZWN0b3JBZGRyZXNz
KGNoZWNraW5nQ29udGV4dCwgT0JKRUNUX09GRlNFVE9GKFNlbGVjdG9yQ2hlY2tlcjo6Q2hlY2tp
bmdDb250ZXh0LCBzdHlsZVJlbGF0aW9ucykpOwotICAgIGF1dG8gZGF0YUFkZHJlc3MgPSB2ZWN0
b3JBZGRyZXNzLndpdGhPZmZzZXQoU3R5bGU6OlJlbGF0aW9uczo6ZGF0YU1lbW9yeU9mZnNldCgp
KTsKLSAgICBhdXRvIHNpemVBZGRyZXNzID0gdmVjdG9yQWRkcmVzcy53aXRoT2Zmc2V0KFN0eWxl
OjpSZWxhdGlvbnM6OnNpemVNZW1vcnlPZmZzZXQoKSk7Ci0KICAgICBMb2NhbFJlZ2lzdGVyIHJl
bGF0aW9uUG9pbnRlcihtX3JlZ2lzdGVyQWxsb2NhdG9yKTsKICAgICBtX2Fzc2VtYmxlci5sb2Fk
MzIoc2l6ZUFkZHJlc3MsIHJlbGF0aW9uUG9pbnRlcik7CiAgICAgbV9hc3NlbWJsZXIuc3ViMzIo
QXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoMSksIHJlbGF0aW9uUG9pbnRlcik7CkBAIC0yMjIxLDYg
KzIyNTcsOCBAQCB2b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVBZGRTCiAgICAg
ICAgIEFzc2VtYmxlcjo6QWRkcmVzcyB2YWx1ZUFkZHJlc3MocmVsYXRpb25Qb2ludGVyLCBPQkpF
Q1RfT0ZGU0VUT0YoU3R5bGU6OlJlbGF0aW9uLCB2YWx1ZSkpOwogICAgICAgICBtX2Fzc2VtYmxl
ci5zdG9yZTMyKCp2YWx1ZSwgdmFsdWVBZGRyZXNzKTsKICAgICB9CisKKyAgICBtZXJnZVN1Y2Nl
c3MubGluaygmbV9hc3NlbWJsZXIpOwogfQogCiBBc3NlbWJsZXI6Okp1bXBMaXN0IFNlbGVjdG9y
Q29kZUdlbmVyYXRvcjo6anVtcElmTm9QcmV2aW91c0FkamFjZW50RWxlbWVudCgpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3NqaXQvU2VsZWN0b3JDb21waWxlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2Nzc2ppdC9TZWxlY3RvckNvbXBpbGVyLmgJKHJldmlzaW9uIDE5OTQxNikK
KysrIFNvdXJjZS9XZWJDb3JlL2Nzc2ppdC9TZWxlY3RvckNvbXBpbGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTgwLDcgKzgwLDcgQEAgZW51bSBjbGFzcyBTZWxlY3RvckNvbnRleHQgewogdHlwZWRl
ZiB1bnNpZ25lZCAoKlJ1bGVDb2xsZWN0b3JTaW1wbGVTZWxlY3RvckNoZWNrZXIpKGNvbnN0IEVs
ZW1lbnQqLCB1bnNpZ25lZCopOwogdHlwZWRlZiB1bnNpZ25lZCAoKlF1ZXJ5U2VsZWN0b3JTaW1w
bGVTZWxlY3RvckNoZWNrZXIpKGNvbnN0IEVsZW1lbnQqKTsKIAotdHlwZWRlZiB1bnNpZ25lZCAo
KlJ1bGVDb2xsZWN0b3JTZWxlY3RvckNoZWNrZXJXaXRoQ2hlY2tpbmdDb250ZXh0KShjb25zdCBF
bGVtZW50KiwgY29uc3QgU2VsZWN0b3JDaGVja2VyOjpDaGVja2luZ0NvbnRleHQqLCB1bnNpZ25l
ZCopOwordHlwZWRlZiB1bnNpZ25lZCAoKlJ1bGVDb2xsZWN0b3JTZWxlY3RvckNoZWNrZXJXaXRo
Q2hlY2tpbmdDb250ZXh0KShjb25zdCBFbGVtZW50KiwgU2VsZWN0b3JDaGVja2VyOjpDaGVja2lu
Z0NvbnRleHQqLCB1bnNpZ25lZCopOwogdHlwZWRlZiB1bnNpZ25lZCAoKlF1ZXJ5U2VsZWN0b3JT
ZWxlY3RvckNoZWNrZXJXaXRoQ2hlY2tpbmdDb250ZXh0KShjb25zdCBFbGVtZW50KiwgY29uc3Qg
U2VsZWN0b3JDaGVja2VyOjpDaGVja2luZ0NvbnRleHQqKTsKIAogU2VsZWN0b3JDb21waWxhdGlv
blN0YXR1cyBjb21waWxlU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3IqLCBKU0M6OlZNKiwgU2Vs
ZWN0b3JDb250ZXh0LCBKU0M6Ok1hY3JvQXNzZW1ibGVyQ29kZVJlZiYgb3V0cHV0Q29kZVJlZik7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlbGF0aW9ucy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZWxhdGlvbnMuY3BwCShyZXZpc2lvbiAx
OTk0MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlbGF0aW9ucy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbGF0aW9ucz4gY29t
bWl0UmVsYXRpbwogICAgIH07CiAKICAgICBmb3IgKGF1dG8mIHJlbGF0aW9uIDogcmVsYXRpb25z
KSB7Ci0gICAgICAgIGlmICgmcmVsYXRpb24uZWxlbWVudCAhPSAmZWxlbWVudCkgeworICAgICAg
ICBpZiAocmVsYXRpb24uZWxlbWVudCAhPSAmZWxlbWVudCkgewogICAgICAgICAgICAgYXBwZW5k
U3R5bGVSZWxhdGlvbihyZWxhdGlvbik7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQpAQCAtOTEsNyArOTEsNyBAQCB2b2lkIGNvbW1pdFJlbGF0aW9ucyhzdGQ6OnVuaXF1ZV9wdHI8
UmVsCiAgICAgaWYgKCFyZWxhdGlvbnMpCiAgICAgICAgIHJldHVybjsKICAgICBmb3IgKGF1dG8m
IHJlbGF0aW9uIDogKnJlbGF0aW9ucykgewotICAgICAgICBhdXRvJiBlbGVtZW50ID0gY29uc3Rf
Y2FzdDxFbGVtZW50Jj4ocmVsYXRpb24uZWxlbWVudCk7CisgICAgICAgIGF1dG8mIGVsZW1lbnQg
PSBjb25zdF9jYXN0PEVsZW1lbnQmPigqcmVsYXRpb24uZWxlbWVudCk7CiAgICAgICAgIHN3aXRj
aCAocmVsYXRpb24udHlwZSkgewogICAgICAgICBjYXNlIFJlbGF0aW9uOjpBZmZlY3RlZEJ5QWN0
aXZlOgogICAgICAgICAgICAgZWxlbWVudC5zZXRDaGlsZHJlbkFmZmVjdGVkQnlBY3RpdmUoKTsK
QEAgLTEwOCw5ICsxMDgsMTIgQEAgdm9pZCBjb21taXRSZWxhdGlvbnMoc3RkOjp1bmlxdWVfcHRy
PFJlbAogICAgICAgICBjYXNlIFJlbGF0aW9uOjpBZmZlY3RlZEJ5UHJldmlvdXNTaWJsaW5nOgog
ICAgICAgICAgICAgZWxlbWVudC5zZXRTdHlsZUlzQWZmZWN0ZWRCeVByZXZpb3VzU2libGluZygp
OwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUmVsYXRpb246OkFmZmVjdHNOZXh0
U2libGluZzoKLSAgICAgICAgICAgIGVsZW1lbnQuc2V0QWZmZWN0c05leHRTaWJsaW5nRWxlbWVu
dFN0eWxlKCk7CisgICAgICAgIGNhc2UgUmVsYXRpb246OkFmZmVjdHNOZXh0U2libGluZzogewor
ICAgICAgICAgICAgYXV0byogc2libGluZyA9ICZlbGVtZW50OworICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHJlbGF0aW9uLnZhbHVlICYmIHNpYmxpbmc7ICsraSwgc2libGlu
ZyA9IHNpYmxpbmctPm5leHRFbGVtZW50U2libGluZygpKQorICAgICAgICAgICAgICAgIHNpYmxp
bmctPnNldEFmZmVjdHNOZXh0U2libGluZ0VsZW1lbnRTdHlsZSgpOwogICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBSZWxhdGlvbjo6Q2hpbGRyZW5BZmZlY3RlZEJ5
QmFja3dhcmRQb3NpdGlvbmFsUnVsZXM6CiAgICAgICAgICAgICBlbGVtZW50LnNldENoaWxkcmVu
QWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCk7CiAgICAgICAgICAgICBicmVhazsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVsYXRpb25zLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZWxhdGlvbnMuaAkocmV2aXNpb24gMTk5NDE2
KQorKysgU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZWxhdGlvbnMuaAkod29ya2luZyBjb3B5
KQpAQCAtNDQsNiArNDQsNyBAQCBzdHJ1Y3QgUmVsYXRpb24gewogICAgICAgICBBZmZlY3RlZEJ5
RW1wdHksCiAgICAgICAgIEFmZmVjdGVkQnlIb3ZlciwKICAgICAgICAgQWZmZWN0ZWRCeVByZXZp
b3VzU2libGluZywKKyAgICAgICAgLy8gRm9yIEFmZmVjdHNOZXh0U2libGluZyAndmFsdWUnIHRl
bGxzIGhvdyBtYW55IGVsZW1lbnQgc2libGluZ3MgdG8gbWFyayBzdGFydGluZyB3aXRoICdlbGVt
ZW50Jy4KICAgICAgICAgQWZmZWN0c05leHRTaWJsaW5nLAogICAgICAgICBDaGlsZHJlbkFmZmVj
dGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcywKICAgICAgICAgQ2hpbGRyZW5BZmZlY3RlZEJ5
Rmlyc3RDaGlsZFJ1bGVzLApAQCAtNTQsMTIgKzU1LDEyIEBAIHN0cnVjdCBSZWxhdGlvbiB7CiAg
ICAgICAgIE50aENoaWxkSW5kZXgsCiAgICAgICAgIFVuaXF1ZSwKICAgICB9OwotICAgIGNvbnN0
IEVsZW1lbnQmIGVsZW1lbnQ7CisgICAgY29uc3QgRWxlbWVudCogZWxlbWVudDsKICAgICBUeXBl
IHR5cGU7CiAgICAgdW5zaWduZWQgdmFsdWU7CiAKICAgICBSZWxhdGlvbihjb25zdCBFbGVtZW50
JiBlbGVtZW50LCBUeXBlIHR5cGUsIHVuc2lnbmVkIHZhbHVlID0gMSkKLSAgICAgICAgOiBlbGVt
ZW50KGVsZW1lbnQpCisgICAgICAgIDogZWxlbWVudCgmZWxlbWVudCkKICAgICAgICAgLCB0eXBl
KHR5cGUpCiAgICAgICAgICwgdmFsdWUodmFsdWUpCiAgICAgeyB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>