<?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>160864</bug_id>
          
          <creation_ts>2016-08-15 14:32:52 -0700</creation_ts>
          <short_desc>Shadow DOM: Toggling class in `.class ::slotted(*)` does not trigger style recalc</short_desc>
          <delta_ts>2016-11-11 14:40:31 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>Safari Technology Preview</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>
          
          <blocked>148695</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Keanu Lee">webkit</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>koivisto</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1220156</commentid>
    <comment_count>0</comment_count>
    <who name="Keanu Lee">webkit</who>
    <bug_when>2016-08-15 14:32:52 -0700</bug_when>
    <thetext>Repro: http://jsbin.com/pureji/2/edit?html,output

If I have this style rule:

.class ::slotted(*) {
  background: green;
}

Toggling .class does not cause style recalc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220368</commentid>
    <comment_count>1</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-08-15 22:58:29 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 160427 ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250324</commentid>
    <comment_count>2</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-11-11 11:53:53 -0800</bug_when>
    <thetext>This is not a dupe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250336</commentid>
    <comment_count>3</comment_count>
      <attachid>294518</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-11-11 12:18:59 -0800</bug_when>
    <thetext>Created attachment 294518
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250340</commentid>
    <comment_count>4</comment_count>
      <attachid>294518</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-11-11 12:32:08 -0800</bug_when>
    <thetext>Comment on attachment 294518
patch

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

&gt; Source/WebCore/css/StyleInvalidationAnalysis.cpp:114
&gt; +        m_didInvalidateHostChildren = true;

It seems like we don&apos;t need to set m_didInvalidateHostChildren if the slot isn&apos;t in a shadow tree?
Or is this a kind of optimization to avoid checking whether element is in the shadow tree or not?

&gt; Source/WebCore/css/StyleInvalidationAnalysis.cpp:132
&gt; +        if (shouldCheckForSlots)
&gt; +            return CheckDescendants::Yes;

Don&apos;t we need to check the descendants of a 2nd, 3rd, etc... slot elements?
i.e. don&apos;t we need to check just !m_ruleSet.slottedPseudoElementRules().isEmpty()?
Put it another way, does this work if a single shadow root had multiple slots
each of which had to be invalidated?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250356</commentid>
    <comment_count>5</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-11-11 13:02:52 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 294518 [details]
&gt; patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=294518&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/css/StyleInvalidationAnalysis.cpp:114
&gt; &gt; +        m_didInvalidateHostChildren = true;
&gt; 
&gt; It seems like we don&apos;t need to set m_didInvalidateHostChildren if the slot
&gt; isn&apos;t in a shadow tree?
&gt; Or is this a kind of optimization to avoid checking whether element is in
&gt; the shadow tree or not?

It is used to avoid O(slots*host children) traversal if there are tons of slots/children.

&gt; Don&apos;t we need to check the descendants of a 2nd, 3rd, etc... slot elements?
&gt; i.e. don&apos;t we need to check just
&gt; !m_ruleSet.slottedPseudoElementRules().isEmpty()?
&gt; Put it another way, does this work if a single shadow root had multiple slots
&gt; each of which had to be invalidated?

It works because we invalidate all host children when we find the first slot. I don&apos;t think optimising more is important at this point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250361</commentid>
    <comment_count>6</comment_count>
      <attachid>294518</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-11-11 13:08:16 -0800</bug_when>
    <thetext>Comment on attachment 294518
patch

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

&gt;&gt;&gt; Source/WebCore/css/StyleInvalidationAnalysis.cpp:114
&gt;&gt;&gt; +        m_didInvalidateHostChildren = true;
&gt;&gt; 
&gt;&gt; It seems like we don&apos;t need to set m_didInvalidateHostChildren if the slot isn&apos;t in a shadow tree?
&gt;&gt; Or is this a kind of optimization to avoid checking whether element is in the shadow tree or not?
&gt; 
&gt; It is used to avoid O(slots*host children) traversal if there are tons of slots/children.

Might be worth a comment. Otherwise, someone might come around and *fix* it.

&gt; LayoutTests/fast/shadow-dom/css-scoping-host-and-slotted-context-invalidation.html:81
&gt; +

Can we add a test case with multiple slots in a single shadow tree?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250379</commentid>
    <comment_count>7</comment_count>
      <attachid>294528</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-11-11 13:37:13 -0800</bug_when>
    <thetext>Created attachment 294528
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250395</commentid>
    <comment_count>8</comment_count>
      <attachid>294528</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-11 14:02:40 -0800</bug_when>
    <thetext>Comment on attachment 294528
patch for landing

Clearing flags on attachment: 294528

Committed r208610: &lt;http://trac.webkit.org/changeset/208610&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250396</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-11 14:02:45 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250421</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-11-11 14:40:31 -0800</bug_when>
    <thetext>&lt;rdar://problem/29226652&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294518</attachid>
            <date>2016-11-11 12:18:59 -0800</date>
            <delta_ts>2016-11-11 13:37:13 -0800</delta_ts>
            <desc>patch</desc>
            <filename>slotted-and-host-invalidation-2.patch</filename>
            <type>text/plain</type>
            <size>10286</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwODYwMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDE2LTExLTExICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBTaGFkb3cgRE9NOiBUb2dnbGlu
ZyBjbGFzcyBpbiBgLmNsYXNzIDo6c2xvdHRlZCgqKWAgZG9lcyBub3QgdHJpZ2dlciBzdHlsZSBy
ZWNhbGMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
MDg2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFs
c28gZml4IHNpbWlsYXIgaXNzdWUgd2l0aCA6Omhvc3QKKworICAgICAgICBUZXN0OiBmYXN0L3No
YWRvdy1kb20vY3NzLXNjb3BpbmctaG9zdC1hbmQtc2xvdHRlZC1jb250ZXh0LWludmFsaWRhdGlv
bi5odG1sCisKKyAgICAgICAgKiBjc3MvU3R5bGVJbnZhbGlkYXRpb25BbmFseXNpcy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZUludmFsaWRhdGlvbkFuYWx5c2lzOjppbnZhbGlkYXRlSWZO
ZWVkZWQpOgorCisgICAgICAgICAgICBJZiB3ZSBoYXZlIDo6c2xvdHRlZCBydWxlcyBhbmQgZW5j
b3VudGVyIGEgPHNsb3Q+LCBpbnZhbGlkYXRlIHRoZSBzbG90dGVkIGhvc3QgY2hpbGRyZW4uCisK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlSW52YWxpZGF0aW9uQW5hbHlzaXM6OmludmFsaWRhdGVT
dHlsZSk6CisKKyAgICAgICAgICAgIEludmFsaWRhdGUgdGhlIHNoYWRvdyBob3N0IGlmIHdlIGhh
dmUgOjpob3N0IHJ1bGVzLgorCisgICAgICAgICogY3NzL1N0eWxlSW52YWxpZGF0aW9uQW5hbHlz
aXMuaDoKKyAgICAgICAgKiBkb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklubGluZVN0eWxlU2hlZXRPd25lcjo6Y3JlYXRlU2hlZXQpOgorCisgICAgICAg
ICAgICBGaXggYSBidWcgd2hlcmUgaXQgd2FzIHBvc3NpYmxlIHRvIG11dGF0ZSBzdHlsZXNoZWV0
cyBpbiB0aGUgaW5saW5lIHN0eWxlc2hlZXQgY2FjaGUuCisgICAgICAgICAgICBUaGUgaW5jbHVk
ZWQgdGVzdCBjb3ZlcnMgdGhpcy4KKworICAgICAgICAqIHN0eWxlL1N0eWxlU2NvcGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlNjb3BlOjp1cGRhdGVBY3RpdmVTdHlsZVNoZWV0cyk6
CisKKyAgICAgICAgICAgIEhhbmRsZSB0aGUgZnVsbCBpbnZhbGlkYXRpb24gY2FzZS4KKwogMjAx
Ni0xMS0xMSAgRGF2ZSBIeWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBbQ1NTIFBh
cnNlcl0gRml4IGJhc2ljIHNoYXBlIHBhcnNpbmcKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZUludmFsaWRhdGlvbkFuYWx5c2lzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVJbnZhbGlkYXRpb25BbmFseXNpcy5jcHAJKHJldmlzaW9uIDIwODM5OCkKKysr
IFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUludmFsaWRhdGlvbkFuYWx5c2lzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVk
ZSAiRWxlbWVudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRWxlbWVudFJ1bGVDb2xsZWN0b3IuaCIK
KyNpbmNsdWRlICJIVE1MU2xvdEVsZW1lbnQuaCIKICNpbmNsdWRlICJTZWxlY3RvckZpbHRlci5o
IgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJTdHlsZVJ1bGVJbXBvcnQuaCIK
QEAgLTEwMyw2ICsxMDQsMTYgQEAgU3R5bGVJbnZhbGlkYXRpb25BbmFseXNpczo6Q2hlY2tEZXNj
ZW5kYQogICAgICAgICAgICAgZWxlbWVudC5pbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlKCk7CiAg
ICAgfQogCisgICAgYm9vbCBzaG91bGRDaGVja0ZvclNsb3RzID0gIW1fcnVsZVNldC5zbG90dGVk
UHNldWRvRWxlbWVudFJ1bGVzKCkuaXNFbXB0eSgpICYmICFtX2RpZEludmFsaWRhdGVIb3N0Q2hp
bGRyZW47CisgICAgaWYgKHNob3VsZENoZWNrRm9yU2xvdHMgJiYgaXM8SFRNTFNsb3RFbGVtZW50
PihlbGVtZW50KSkgeworICAgICAgICBhdXRvKiBjb250YWluaW5nU2hhZG93Um9vdCA9IGVsZW1l
bnQuY29udGFpbmluZ1NoYWRvd1Jvb3QoKTsKKyAgICAgICAgaWYgKGNvbnRhaW5pbmdTaGFkb3dS
b290ICYmIGNvbnRhaW5pbmdTaGFkb3dSb290LT5ob3N0KCkpIHsKKyAgICAgICAgICAgIGZvciAo
YXV0byYgcG9zc2libHlTbG90dGVkIDogY2hpbGRyZW5PZlR5cGU8RWxlbWVudD4oKmNvbnRhaW5p
bmdTaGFkb3dSb290LT5ob3N0KCkpKQorICAgICAgICAgICAgICAgIHBvc3NpYmx5U2xvdHRlZC5p
bnZhbGlkYXRlU3R5bGUoKTsKKyAgICAgICAgfQorICAgICAgICBtX2RpZEludmFsaWRhdGVIb3N0
Q2hpbGRyZW4gPSB0cnVlOworICAgIH0KKwogICAgIHN3aXRjaCAoZWxlbWVudC5zdHlsZVZhbGlk
aXR5KCkpIHsKICAgICBjYXNlIFN0eWxlOjpWYWxpZGl0eTo6VmFsaWQ6IHsKICAgICAgICAgRWxl
bWVudFJ1bGVDb2xsZWN0b3IgcnVsZUNvbGxlY3RvcihlbGVtZW50LCBtX3J1bGVTZXQsIGZpbHRl
cik7CkBAIC0xMTcsNiArMTI4LDggQEAgU3R5bGVJbnZhbGlkYXRpb25BbmFseXNpczo6Q2hlY2tE
ZXNjZW5kYQogICAgICAgICByZXR1cm4gQ2hlY2tEZXNjZW5kYW50czo6WWVzOwogICAgIGNhc2Ug
U3R5bGU6OlZhbGlkaXR5OjpTdWJ0cmVlSW52YWxpZDoKICAgICBjYXNlIFN0eWxlOjpWYWxpZGl0
eTo6U3VidHJlZUFuZFJlbmRlcmVyc0ludmFsaWQ6CisgICAgICAgIGlmIChzaG91bGRDaGVja0Zv
clNsb3RzKQorICAgICAgICAgICAgcmV0dXJuIENoZWNrRGVzY2VuZGFudHM6OlllczsKICAgICAg
ICAgcmV0dXJuIENoZWNrRGVzY2VuZGFudHM6Ok5vOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKQEAgLTE3Miw2ICsxODUsOSBAQCB2b2lkIFN0eWxlSW52YWxpZGF0aW9uQW5hbHlz
aXM6OmludmFsaWRhCiB7CiAgICAgQVNTRVJUKCFtX2RpcnRpZXNBbGxTdHlsZSk7CiAKKyAgICBp
ZiAoIW1fcnVsZVNldC5ob3N0UHNldWRvQ2xhc3NSdWxlcygpLmlzRW1wdHkoKSAmJiBzaGFkb3dS
b290Lmhvc3QoKSkKKyAgICAgICAgc2hhZG93Um9vdC5ob3N0KCktPmludmFsaWRhdGVTdHlsZSgp
OworCiAgICAgZm9yIChhdXRvJiBjaGlsZCA6IGNoaWxkcmVuT2ZUeXBlPEVsZW1lbnQ+KHNoYWRv
d1Jvb3QpKSB7CiAgICAgICAgIFNlbGVjdG9yRmlsdGVyIGZpbHRlcjsKICAgICAgICAgaW52YWxp
ZGF0ZVN0eWxlRm9yVHJlZShjaGlsZCwgJmZpbHRlcik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVJbnZhbGlkYXRpb25BbmFseXNpcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZUludmFsaWRhdGlvbkFuYWx5c2lzLmgJKHJldmlzaW9uIDIwODM5OCkKKysr
IFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUludmFsaWRhdGlvbkFuYWx5c2lzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU4LDYgKzU4LDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBSdWxlU2V0JiBtX3J1
bGVTZXQ7CiAgICAgYm9vbCBtX2RpcnRpZXNBbGxTdHlsZSB7IGZhbHNlIH07CiAgICAgYm9vbCBt
X2hhc1NoYWRvd1BzZXVkb0VsZW1lbnRSdWxlc0luQXV0aG9yU2hlZXQgeyBmYWxzZSB9OworICAg
IGJvb2wgbV9kaWRJbnZhbGlkYXRlSG9zdENoaWxkcmVuIHsgZmFsc2UgfTsKIH07CiAKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwCShyZXZp
c2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEzLDEyICsyMTMsMTUgQEAgdm9pZCBJbmxpbmVTdHls
ZVNoZWV0T3duZXI6OmNyZWF0ZVNoZWV0KAogICAgIGNvbnRlbnRzLT5jaGVja0xvYWRlZCgpOwog
CiAgICAgaWYgKGNhY2hlS2V5ICYmIGNvbnRlbnRzLT5pc0NhY2hlYWJsZSgpKSB7CisgICAgICAg
IG1fc2hlZXQtPmNvbnRlbnRzKCkuYWRkZWRUb01lbW9yeUNhY2hlKCk7CiAgICAgICAgIGlubGlu
ZVN0eWxlU2hlZXRDYWNoZSgpLmFkZCgqY2FjaGVLZXksICZtX3NoZWV0LT5jb250ZW50cygpKTsK
IAogICAgICAgICAvLyBQcmV2ZW50IHBhdGhvbG9naWNhbCBncm93dGguCiAgICAgICAgIGNvbnN0
IHNpemVfdCBtYXhpbXVtSW5saW5lU3R5bGVTaGVldENhY2hlU2l6ZSA9IDUwOwotICAgICAgICBp
ZiAoaW5saW5lU3R5bGVTaGVldENhY2hlKCkuc2l6ZSgpID4gbWF4aW11bUlubGluZVN0eWxlU2hl
ZXRDYWNoZVNpemUpCisgICAgICAgIGlmIChpbmxpbmVTdHlsZVNoZWV0Q2FjaGUoKS5zaXplKCkg
PiBtYXhpbXVtSW5saW5lU3R5bGVTaGVldENhY2hlU2l6ZSkgeworICAgICAgICAgICAgaW5saW5l
U3R5bGVTaGVldENhY2hlKCkuYmVnaW4oKS0+dmFsdWUtPnJlbW92ZWRGcm9tTWVtb3J5Q2FjaGUo
KTsKICAgICAgICAgICAgIGlubGluZVN0eWxlU2hlZXRDYWNoZSgpLnJlbW92ZShpbmxpbmVTdHls
ZVNoZWV0Q2FjaGUoKS5iZWdpbigpKTsKKyAgICAgICAgfQogICAgIH0KIH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVTY29wZS5jcHAJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MDcsMTAgKzQw
NywxOSBAQCB2b2lkIFNjb3BlOjp1cGRhdGVBY3RpdmVTdHlsZVNoZWV0cyhVcGRhCiAgICAgICAg
ICAgICBtX3VzZXNTdHlsZUJhc2VkRWRpdGFiaWxpdHkgPSB0cnVlOwogICAgIH0KIAorICAgIC8v
IEZJWE1FOiBNb3ZlIHRoaXMgY29kZSBzb21ld2hlcmUgZWxzZS4KICAgICBpZiAocmVxdWlyZXNG
dWxsU3R5bGVSZWNhbGMpIHsKICAgICAgICAgaWYgKG1fc2hhZG93Um9vdCkgewogICAgICAgICAg
ICAgZm9yIChhdXRvJiBzaGFkb3dDaGlsZCA6IGNoaWxkcmVuT2ZUeXBlPEVsZW1lbnQ+KCptX3No
YWRvd1Jvb3QpKQogICAgICAgICAgICAgICAgIHNoYWRvd0NoaWxkLmludmFsaWRhdGVTdHlsZUZv
clN1YnRyZWUoKTsKKyAgICAgICAgICAgIGlmIChtX3NoYWRvd1Jvb3QtPmhvc3QoKSkgeworICAg
ICAgICAgICAgICAgIGlmICghcmVzb2x2ZXIoKS5ydWxlU2V0cygpLmF1dGhvclN0eWxlKCkuaG9z
dFBzZXVkb0NsYXNzUnVsZXMoKS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgIG1fc2hh
ZG93Um9vdC0+aG9zdCgpLT5pbnZhbGlkYXRlU3R5bGUoKTsKKyAgICAgICAgICAgICAgICBpZiAo
IXJlc29sdmVyKCkucnVsZVNldHMoKS5hdXRob3JTdHlsZSgpLnNsb3R0ZWRQc2V1ZG9FbGVtZW50
UnVsZXMoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChhdXRvJiBzaGFk
b3dDaGlsZCA6IGNoaWxkcmVuT2ZUeXBlPEVsZW1lbnQ+KCptX3NoYWRvd1Jvb3QtPmhvc3QoKSkp
CisgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dDaGlsZC5pbnZhbGlkYXRlU3R5bGUoKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZQogICAgICAg
ICAgICAgbV9kb2N1bWVudC5zY2hlZHVsZUZvcmNlZFN0eWxlUmVjYWxjKCk7CiAgICAgfQpJbmRl
eDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjA4Mzk4KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMTEtMTEgIEFudHRpIEtvaXZpc3RvICA8YW50
dGlAYXBwbGUuY29tPgorCisgICAgICAgIFNoYWRvdyBET006IFRvZ2dsaW5nIGNsYXNzIGluIGAu
Y2xhc3MgOjpzbG90dGVkKCopYCBkb2VzIG5vdCB0cmlnZ2VyIHN0eWxlIHJlY2FsYworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwODY0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L3NoYWRvdy1k
b20vY3NzLXNjb3BpbmctaG9zdC1hbmQtc2xvdHRlZC1jb250ZXh0LWludmFsaWRhdGlvbi1leHBl
Y3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NoYWRvdy1kb20vY3NzLXNjb3Bpbmct
aG9zdC1hbmQtc2xvdHRlZC1jb250ZXh0LWludmFsaWRhdGlvbi5odG1sOiBBZGRlZC4KKwogMjAx
Ni0xMS0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBs
YXlvdXQgdGVzdCBmb3IgaW5wdXQuc2V0Q3VzdG9tVmFsaWRpdHkoKQpAQCAtMzEsNiArNDEsNyBA
QAogICAgICAgICAqIGZhc3Qvc2hhZG93LWRvbS9jc3Mtc2NvcGluZy1zbG90LXdpdGgtaWQtZXhw
ZWN0ZWQuaHRtbDogQWRkZWQuCiAgICAgICAgICogZmFzdC9zaGFkb3ctZG9tL2Nzcy1zY29waW5n
LXNsb3Qtd2l0aC1pZC5odG1sOiBBZGRlZC4KIAorCiAyMDE2LTExLTA0ICBCcmFkeSBFaWRzb24g
IDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBJbmRleGVkREIgMi4wOiBVc2UgSURCLXNw
ZWNpZmljIGV4Y2VwdGlvbnMgaW4gcGxhY2VzIHdoZXJlIHRoZSBnZW5lcmljIGV4Y2VwdGlvbnMg
YXJlIGN1cnJlbnRseSB1c2VkLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2Nz
cy1zY29waW5nLWhvc3QtYW5kLXNsb3R0ZWQtY29udGV4dC1pbnZhbGlkYXRpb24tZXhwZWN0ZWQu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vY3NzLXNjb3Bp
bmctaG9zdC1hbmQtc2xvdHRlZC1jb250ZXh0LWludmFsaWRhdGlvbi1leHBlY3RlZC5odG1sCShu
b25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9jc3Mtc2NvcGluZy1o
b3N0LWFuZC1zbG90dGVkLWNvbnRleHQtaW52YWxpZGF0aW9uLWV4cGVjdGVkLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxi
b2R5PgorICAgICAgICA8cD5UZXN0IHBhc3NlcyBpZiB5b3Ugc2VlIGEgc2luZ2xlIDEwMHB4IGJ5
IDEwMHB4IGdyZWVuIGJveCBiZWxvdy48L3A+CisgICAgICAgIDxkaXYgc3R5bGU9IndpZHRoOiAx
MDBweDsgaGVpZ2h0OiAxMDBweDsgYmFja2dyb3VuZDogZ3JlZW47Ij48L2Rpdj4KKyAgICA8L2Jv
ZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vY3NzLXNjb3Bp
bmctaG9zdC1hbmQtc2xvdHRlZC1jb250ZXh0LWludmFsaWRhdGlvbi5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9jc3Mtc2NvcGluZy1ob3N0LWFuZC1zbG90
dGVkLWNvbnRleHQtaW52YWxpZGF0aW9uLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVz
dHMvZmFzdC9zaGFkb3ctZG9tL2Nzcy1zY29waW5nLWhvc3QtYW5kLXNsb3R0ZWQtY29udGV4dC1p
bnZhbGlkYXRpb24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDgyIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxib2R5PgorPHA+VGVzdCBwYXNzZXMgaWYgeW91IHNlZSBhIHNpbmdsZSAxMDBw
eCBieSAxMDBweCBncmVlbiBib3ggYmVsb3cuPC9wPgorPGRpdiBpZD0idDEiPgorICAgIDxzcGFu
PkZBSUw8L3NwYW4+Cis8L2Rpdj4KKzxkaXYgaWQ9InQyIj4KKyAgICA8c3Bhbj5GQUlMPC9zcGFu
PgorPC9kaXY+Cis8ZGl2IGlkPSJ0MyI+CisgICAgPHNwYW4+RkFJTDwvc3Bhbj4KKzwvZGl2Pgor
PGRpdiBpZD0idDQiPgorICAgIDxzcGFuPkZBSUw8L3NwYW4+Cis8L2Rpdj4KKzxkaXYgaWQ9InQ1
Ij4KKyAgICA8c3Bhbj5GQUlMPC9zcGFuPgorPC9kaXY+Cis8c2NyaXB0PgorCitmdW5jdGlvbiBh
dHRhY2hTaGFkb3coaG9zdCkKK3sKKyAgICBjb25zdCBzaGFkb3cgPSBob3N0LmF0dGFjaFNoYWRv
dyh7bW9kZTogJ2Nsb3NlZCd9KTsKKyAgICBzaGFkb3cuaW5uZXJIVE1MID0gYAorICAgIDxzdHls
ZT4KKyAgICA6aG9zdCB7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAy
MHB4OworICAgICAgICBiYWNrZ3JvdW5kOiBncmVlbjsKKyAgICAgICAgY29sb3I6IHJlZDsKKyAg
ICB9CisgICAgPC9zdHlsZT4KKyAgICA8ZGl2PjxzbG90Pjwvc2xvdD48L2Rpdj4KKyAgICBgOwor
ICAgIHJldHVybiBzaGFkb3c7Cit9CisKK3sKKyAgICBjb25zdCBob3N0ID0gZG9jdW1lbnQucXVl
cnlTZWxlY3RvcignI3QxJyk7CisgICAgY29uc3Qgc2hhZG93ID0gYXR0YWNoU2hhZG93KGhvc3Qp
OworICAgIGNvbnN0IHN0eWxlID0gc2hhZG93LnF1ZXJ5U2VsZWN0b3IoJ3N0eWxlJyk7CisgICAg
c3R5bGUuc2hlZXQuaW5zZXJ0UnVsZSgiLnNlbGVjdGVkIDo6c2xvdHRlZCgqKSB7IGNvbG9yOiBn
cmVlbiB9Iik7CisgICAgZ2V0Q29tcHV0ZWRTdHlsZShob3N0LnF1ZXJ5U2VsZWN0b3IoJ3NwYW4n
KSkuYmFja2dyb3VuZENvbG9yOworICAgIGNvbnN0IGRpdiA9IHNoYWRvdy5xdWVyeVNlbGVjdG9y
KCdkaXYnKTsKKyAgICBkaXYuY2xhc3NOYW1lID0gJ3NlbGVjdGVkJzsKK30KKworeworICAgIGNv
bnN0IGhvc3QgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjdDInKTsKKyAgICBjb25zdCBzaGFk
b3cgPSBhdHRhY2hTaGFkb3coaG9zdCk7CisgICAgZ2V0Q29tcHV0ZWRTdHlsZShob3N0LnF1ZXJ5
U2VsZWN0b3IoJ3NwYW4nKSkuYmFja2dyb3VuZENvbG9yOworICAgIGNvbnN0IHN0eWxlID0gc2hh
ZG93LnF1ZXJ5U2VsZWN0b3IoJ3N0eWxlJyk7CisgICAgc3R5bGUuc2hlZXQuaW5zZXJ0UnVsZSgi
ZGl2IDo6c2xvdHRlZCgqKSB7IGNvbG9yOiBncmVlbiB9Iik7Cit9CisKK3sKKyAgICBjb25zdCBo
b3N0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3QzJyk7CisgICAgY29uc3Qgc2hhZG93ID0g
YXR0YWNoU2hhZG93KGhvc3QpOworICAgIGdldENvbXB1dGVkU3R5bGUoaG9zdC5xdWVyeVNlbGVj
dG9yKCdzcGFuJykpLmJhY2tncm91bmRDb2xvcjsKKyAgICBjb25zdCBzdHlsZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7CisgICAgc3R5bGUudGV4dENvbnRlbnQgPSAiZGl2IDo6
c2xvdHRlZCgqKSB7IGNvbG9yOiBncmVlbiB9IjsKKyAgICBzaGFkb3cuYXBwZW5kQ2hpbGQoc3R5
bGUpOworfQorCit7CisgICAgY29uc3QgaG9zdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyN0
NCcpOworICAgIGNvbnN0IHNoYWRvdyA9IGF0dGFjaFNoYWRvdyhob3N0KTsKKyAgICBnZXRDb21w
dXRlZFN0eWxlKGhvc3QucXVlcnlTZWxlY3Rvcignc3BhbicpKS5iYWNrZ3JvdW5kQ29sb3I7Cisg
ICAgY29uc3Qgc3R5bGUgPSBzaGFkb3cucXVlcnlTZWxlY3Rvcignc3R5bGUnKTsKKyAgICBzdHls
ZS5zaGVldC5pbnNlcnRSdWxlKCI6aG9zdCB7IGNvbG9yOiBncmVlbiB9IiwgMSk7Cit9CisKK3sK
KyAgICBjb25zdCBob3N0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3Q1Jyk7CisgICAgY29u
c3Qgc2hhZG93ID0gYXR0YWNoU2hhZG93KGhvc3QpOworICAgIGdldENvbXB1dGVkU3R5bGUoaG9z
dC5xdWVyeVNlbGVjdG9yKCdzcGFuJykpLmJhY2tncm91bmRDb2xvcjsKKyAgICBjb25zdCBzdHls
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7CisgICAgc3R5bGUudGV4dENvbnRl
bnQgPSAiOmhvc3QoZGl2KSB7IGNvbG9yOiBncmVlbiB9IjsKKyAgICBzaGFkb3cuYXBwZW5kQ2hp
bGQoc3R5bGUpCit9CisKKzwvc2NyaXB0Pgo=
</data>
<flag name="review"
          id="317198"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294528</attachid>
            <date>2016-11-11 13:37:13 -0800</date>
            <delta_ts>2016-11-11 14:02:40 -0800</delta_ts>
            <desc>patch for landing</desc>
            <filename>slotted-and-host-invalidation-3.patch</filename>
            <type>text/plain</type>
            <size>10408</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwODYwMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDE2LTExLTExICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBTaGFkb3cgRE9NOiBUb2dnbGlu
ZyBjbGFzcyBpbiBgLmNsYXNzIDo6c2xvdHRlZCgqKWAgZG9lcyBub3QgdHJpZ2dlciBzdHlsZSBy
ZWNhbGMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
MDg2NAorCisgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KKworICAgICAgICBBbHNv
IGZpeCBzaW1pbGFyIGlzc3VlIHdpdGggOjpob3N0CisKKyAgICAgICAgVGVzdDogZmFzdC9zaGFk
b3ctZG9tL2Nzcy1zY29waW5nLWhvc3QtYW5kLXNsb3R0ZWQtY29udGV4dC1pbnZhbGlkYXRpb24u
aHRtbAorCisgICAgICAgICogY3NzL1N0eWxlSW52YWxpZGF0aW9uQW5hbHlzaXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVJbnZhbGlkYXRpb25BbmFseXNpczo6aW52YWxpZGF0ZUlmTmVl
ZGVkKToKKworICAgICAgICAgICAgSWYgd2UgaGF2ZSA6OnNsb3R0ZWQgcnVsZXMgYW5kIGVuY291
bnRlciBhIDxzbG90PiwgaW52YWxpZGF0ZSB0aGUgc2xvdHRlZCBob3N0IGNoaWxkcmVuLgorCisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZUludmFsaWRhdGlvbkFuYWx5c2lzOjppbnZhbGlkYXRlU3R5
bGUpOgorCisgICAgICAgICAgICBJbnZhbGlkYXRlIHRoZSBzaGFkb3cgaG9zdCBpZiB3ZSBoYXZl
IDo6aG9zdCBydWxlcy4KKworICAgICAgICAqIGNzcy9TdHlsZUludmFsaWRhdGlvbkFuYWx5c2lz
Lmg6CisgICAgICAgICogZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbmxpbmVTdHlsZVNoZWV0T3duZXI6OmNyZWF0ZVNoZWV0KToKKworICAgICAgICAg
ICAgRml4IGEgYnVnIHdoZXJlIGl0IHdhcyBwb3NzaWJsZSB0byBtdXRhdGUgc3R5bGVzaGVldHMg
aW4gdGhlIGlubGluZSBzdHlsZXNoZWV0IGNhY2hlLgorICAgICAgICAgICAgVGhlIGluY2x1ZGVk
IHRlc3QgY292ZXJzIHRoaXMuCisKKyAgICAgICAgKiBzdHlsZS9TdHlsZVNjb3BlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlOjpTY29wZTo6dXBkYXRlQWN0aXZlU3R5bGVTaGVldHMpOgor
CisgICAgICAgICAgICBIYW5kbGUgdGhlIGZ1bGwgaW52YWxpZGF0aW9uIGNhc2UuCisKIDIwMTYt
MTEtMTEgIERhdmUgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CiAKICAgICAgICAgW0NTUyBQYXJz
ZXJdIEZpeCBiYXNpYyBzaGFwZSBwYXJzaW5nCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVJbnZhbGlkYXRpb25BbmFseXNpcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlSW52YWxpZGF0aW9uQW5hbHlzaXMuY3BwCShyZXZpc2lvbiAyMDgzOTgpCisrKyBT
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVJbnZhbGlkYXRpb25BbmFseXNpcy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUg
IkVsZW1lbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkVsZW1lbnRSdWxlQ29sbGVjdG9yLmgiCisj
aW5jbHVkZSAiSFRNTFNsb3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiU2VsZWN0b3JGaWx0ZXIuaCIK
ICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAiU3R5bGVSdWxlSW1wb3J0LmgiCkBA
IC0xMDMsNiArMTA0LDE3IEBAIFN0eWxlSW52YWxpZGF0aW9uQW5hbHlzaXM6OkNoZWNrRGVzY2Vu
ZGEKICAgICAgICAgICAgIGVsZW1lbnQuaW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZSgpOwogICAg
IH0KIAorICAgIGJvb2wgc2hvdWxkQ2hlY2tGb3JTbG90cyA9ICFtX3J1bGVTZXQuc2xvdHRlZFBz
ZXVkb0VsZW1lbnRSdWxlcygpLmlzRW1wdHkoKSAmJiAhbV9kaWRJbnZhbGlkYXRlSG9zdENoaWxk
cmVuOworICAgIGlmIChzaG91bGRDaGVja0ZvclNsb3RzICYmIGlzPEhUTUxTbG90RWxlbWVudD4o
ZWxlbWVudCkpIHsKKyAgICAgICAgYXV0byogY29udGFpbmluZ1NoYWRvd1Jvb3QgPSBlbGVtZW50
LmNvbnRhaW5pbmdTaGFkb3dSb290KCk7CisgICAgICAgIGlmIChjb250YWluaW5nU2hhZG93Um9v
dCAmJiBjb250YWluaW5nU2hhZG93Um9vdC0+aG9zdCgpKSB7CisgICAgICAgICAgICBmb3IgKGF1
dG8mIHBvc3NpYmx5U2xvdHRlZCA6IGNoaWxkcmVuT2ZUeXBlPEVsZW1lbnQ+KCpjb250YWluaW5n
U2hhZG93Um9vdC0+aG9zdCgpKSkKKyAgICAgICAgICAgICAgICBwb3NzaWJseVNsb3R0ZWQuaW52
YWxpZGF0ZVN0eWxlKCk7CisgICAgICAgIH0KKyAgICAgICAgLy8gTm8gbmVlZCB0byBkbyB0aGlz
IGFnYWluLgorICAgICAgICBtX2RpZEludmFsaWRhdGVIb3N0Q2hpbGRyZW4gPSB0cnVlOworICAg
IH0KKwogICAgIHN3aXRjaCAoZWxlbWVudC5zdHlsZVZhbGlkaXR5KCkpIHsKICAgICBjYXNlIFN0
eWxlOjpWYWxpZGl0eTo6VmFsaWQ6IHsKICAgICAgICAgRWxlbWVudFJ1bGVDb2xsZWN0b3IgcnVs
ZUNvbGxlY3RvcihlbGVtZW50LCBtX3J1bGVTZXQsIGZpbHRlcik7CkBAIC0xMTcsNiArMTI5LDgg
QEAgU3R5bGVJbnZhbGlkYXRpb25BbmFseXNpczo6Q2hlY2tEZXNjZW5kYQogICAgICAgICByZXR1
cm4gQ2hlY2tEZXNjZW5kYW50czo6WWVzOwogICAgIGNhc2UgU3R5bGU6OlZhbGlkaXR5OjpTdWJ0
cmVlSW52YWxpZDoKICAgICBjYXNlIFN0eWxlOjpWYWxpZGl0eTo6U3VidHJlZUFuZFJlbmRlcmVy
c0ludmFsaWQ6CisgICAgICAgIGlmIChzaG91bGRDaGVja0ZvclNsb3RzKQorICAgICAgICAgICAg
cmV0dXJuIENoZWNrRGVzY2VuZGFudHM6OlllczsKICAgICAgICAgcmV0dXJuIENoZWNrRGVzY2Vu
ZGFudHM6Ok5vOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTE3Miw2ICsx
ODYsOSBAQCB2b2lkIFN0eWxlSW52YWxpZGF0aW9uQW5hbHlzaXM6OmludmFsaWRhCiB7CiAgICAg
QVNTRVJUKCFtX2RpcnRpZXNBbGxTdHlsZSk7CiAKKyAgICBpZiAoIW1fcnVsZVNldC5ob3N0UHNl
dWRvQ2xhc3NSdWxlcygpLmlzRW1wdHkoKSAmJiBzaGFkb3dSb290Lmhvc3QoKSkKKyAgICAgICAg
c2hhZG93Um9vdC5ob3N0KCktPmludmFsaWRhdGVTdHlsZSgpOworCiAgICAgZm9yIChhdXRvJiBj
aGlsZCA6IGNoaWxkcmVuT2ZUeXBlPEVsZW1lbnQ+KHNoYWRvd1Jvb3QpKSB7CiAgICAgICAgIFNl
bGVjdG9yRmlsdGVyIGZpbHRlcjsKICAgICAgICAgaW52YWxpZGF0ZVN0eWxlRm9yVHJlZShjaGls
ZCwgJmZpbHRlcik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVJbnZhbGlkYXRpb25B
bmFseXNpcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUludmFsaWRh
dGlvbkFuYWx5c2lzLmgJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZUludmFsaWRhdGlvbkFuYWx5c2lzLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDYgKzU4LDcg
QEAgcHJpdmF0ZToKICAgICBjb25zdCBSdWxlU2V0JiBtX3J1bGVTZXQ7CiAgICAgYm9vbCBtX2Rp
cnRpZXNBbGxTdHlsZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1NoYWRvd1BzZXVkb0VsZW1l
bnRSdWxlc0luQXV0aG9yU2hlZXQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9kaWRJbnZhbGlkYXRl
SG9zdENoaWxkcmVuIHsgZmFsc2UgfTsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjEzLDEyICsyMTMsMTUgQEAgdm9pZCBJbmxpbmVTdHlsZVNoZWV0T3duZXI6OmNyZWF0ZVNo
ZWV0KAogICAgIGNvbnRlbnRzLT5jaGVja0xvYWRlZCgpOwogCiAgICAgaWYgKGNhY2hlS2V5ICYm
IGNvbnRlbnRzLT5pc0NhY2hlYWJsZSgpKSB7CisgICAgICAgIG1fc2hlZXQtPmNvbnRlbnRzKCku
YWRkZWRUb01lbW9yeUNhY2hlKCk7CiAgICAgICAgIGlubGluZVN0eWxlU2hlZXRDYWNoZSgpLmFk
ZCgqY2FjaGVLZXksICZtX3NoZWV0LT5jb250ZW50cygpKTsKIAogICAgICAgICAvLyBQcmV2ZW50
IHBhdGhvbG9naWNhbCBncm93dGguCiAgICAgICAgIGNvbnN0IHNpemVfdCBtYXhpbXVtSW5saW5l
U3R5bGVTaGVldENhY2hlU2l6ZSA9IDUwOwotICAgICAgICBpZiAoaW5saW5lU3R5bGVTaGVldENh
Y2hlKCkuc2l6ZSgpID4gbWF4aW11bUlubGluZVN0eWxlU2hlZXRDYWNoZVNpemUpCisgICAgICAg
IGlmIChpbmxpbmVTdHlsZVNoZWV0Q2FjaGUoKS5zaXplKCkgPiBtYXhpbXVtSW5saW5lU3R5bGVT
aGVldENhY2hlU2l6ZSkgeworICAgICAgICAgICAgaW5saW5lU3R5bGVTaGVldENhY2hlKCkuYmVn
aW4oKS0+dmFsdWUtPnJlbW92ZWRGcm9tTWVtb3J5Q2FjaGUoKTsKICAgICAgICAgICAgIGlubGlu
ZVN0eWxlU2hlZXRDYWNoZSgpLnJlbW92ZShpbmxpbmVTdHlsZVNoZWV0Q2FjaGUoKS5iZWdpbigp
KTsKKyAgICAgICAgfQogICAgIH0KIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5
bGVTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29w
ZS5jcHAJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2Nv
cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MDcsMTAgKzQwNywxOSBAQCB2b2lkIFNjb3BlOjp1
cGRhdGVBY3RpdmVTdHlsZVNoZWV0cyhVcGRhCiAgICAgICAgICAgICBtX3VzZXNTdHlsZUJhc2Vk
RWRpdGFiaWxpdHkgPSB0cnVlOwogICAgIH0KIAorICAgIC8vIEZJWE1FOiBNb3ZlIHRoaXMgY29k
ZSBzb21ld2hlcmUgZWxzZS4KICAgICBpZiAocmVxdWlyZXNGdWxsU3R5bGVSZWNhbGMpIHsKICAg
ICAgICAgaWYgKG1fc2hhZG93Um9vdCkgewogICAgICAgICAgICAgZm9yIChhdXRvJiBzaGFkb3dD
aGlsZCA6IGNoaWxkcmVuT2ZUeXBlPEVsZW1lbnQ+KCptX3NoYWRvd1Jvb3QpKQogICAgICAgICAg
ICAgICAgIHNoYWRvd0NoaWxkLmludmFsaWRhdGVTdHlsZUZvclN1YnRyZWUoKTsKKyAgICAgICAg
ICAgIGlmIChtX3NoYWRvd1Jvb3QtPmhvc3QoKSkgeworICAgICAgICAgICAgICAgIGlmICghcmVz
b2x2ZXIoKS5ydWxlU2V0cygpLmF1dGhvclN0eWxlKCkuaG9zdFBzZXVkb0NsYXNzUnVsZXMoKS5p
c0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgIG1fc2hhZG93Um9vdC0+aG9zdCgpLT5pbnZh
bGlkYXRlU3R5bGUoKTsKKyAgICAgICAgICAgICAgICBpZiAoIXJlc29sdmVyKCkucnVsZVNldHMo
KS5hdXRob3JTdHlsZSgpLnNsb3R0ZWRQc2V1ZG9FbGVtZW50UnVsZXMoKS5pc0VtcHR5KCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgZm9yIChhdXRvJiBzaGFkb3dDaGlsZCA6IGNoaWxkcmVuT2ZU
eXBlPEVsZW1lbnQ+KCptX3NoYWRvd1Jvb3QtPmhvc3QoKSkpCisgICAgICAgICAgICAgICAgICAg
ICAgICBzaGFkb3dDaGlsZC5pbnZhbGlkYXRlU3R5bGUoKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbV9kb2N1bWVudC5zY2hl
ZHVsZUZvcmNlZFN0eWxlUmVjYWxjKCk7CiAgICAgfQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjA4Mzk4
KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTYtMTEtMTEgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAg
ICAgIFNoYWRvdyBET006IFRvZ2dsaW5nIGNsYXNzIGluIGAuY2xhc3MgOjpzbG90dGVkKCopYCBk
b2VzIG5vdCB0cmlnZ2VyIHN0eWxlIHJlY2FsYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwODY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3Vr
ZSBOaXdhLgorCisgICAgICAgICogZmFzdC9zaGFkb3ctZG9tL2Nzcy1zY29waW5nLWhvc3QtYW5k
LXNsb3R0ZWQtY29udGV4dC1pbnZhbGlkYXRpb24tZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9zaGFkb3ctZG9tL2Nzcy1zY29waW5nLWhvc3QtYW5kLXNsb3R0ZWQtY29udGV4
dC1pbnZhbGlkYXRpb24uaHRtbDogQWRkZWQuCisKIDIwMTYtMTEtMDQgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgbGF5b3V0IHRlc3QgZm9yIGlucHV0LnNl
dEN1c3RvbVZhbGlkaXR5KCkKQEAgLTMxLDYgKzQxLDcgQEAKICAgICAgICAgKiBmYXN0L3NoYWRv
dy1kb20vY3NzLXNjb3Bpbmctc2xvdC13aXRoLWlkLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgogICAg
ICAgICAqIGZhc3Qvc2hhZG93LWRvbS9jc3Mtc2NvcGluZy1zbG90LXdpdGgtaWQuaHRtbDogQWRk
ZWQuCiAKKwogMjAxNi0xMS0wNCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgSW5kZXhlZERCIDIuMDogVXNlIElEQi1zcGVjaWZpYyBleGNlcHRpb25zIGluIHBs
YWNlcyB3aGVyZSB0aGUgZ2VuZXJpYyBleGNlcHRpb25zIGFyZSBjdXJyZW50bHkgdXNlZC4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9jc3Mtc2NvcGluZy1ob3N0LWFuZC1zbG90
dGVkLWNvbnRleHQtaW52YWxpZGF0aW9uLWV4cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2Nzcy1zY29waW5nLWhvc3QtYW5kLXNsb3R0ZWQtY29u
dGV4dC1pbnZhbGlkYXRpb24tZXhwZWN0ZWQuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L3NoYWRvdy1kb20vY3NzLXNjb3BpbmctaG9zdC1hbmQtc2xvdHRlZC1jb250ZXh0
LWludmFsaWRhdGlvbi1leHBlY3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNyBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8Ym9keT4KKyAgICAgICAgPHA+VGVzdCBw
YXNzZXMgaWYgeW91IHNlZSBhIHNpbmdsZSAxMDBweCBieSAxMDBweCBncmVlbiBib3ggYmVsb3cu
PC9wPgorICAgICAgICA8ZGl2IHN0eWxlPSJ3aWR0aDogMTAwcHg7IGhlaWdodDogMTAwcHg7IGJh
Y2tncm91bmQ6IGdyZWVuOyI+PC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2Nzcy1zY29waW5nLWhvc3QtYW5kLXNsb3R0ZWQtY29u
dGV4dC1pbnZhbGlkYXRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3No
YWRvdy1kb20vY3NzLXNjb3BpbmctaG9zdC1hbmQtc2xvdHRlZC1jb250ZXh0LWludmFsaWRhdGlv
bi5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9jc3Mt
c2NvcGluZy1ob3N0LWFuZC1zbG90dGVkLWNvbnRleHQtaW52YWxpZGF0aW9uLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw4MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8Ym9keT4KKzxwPlRl
c3QgcGFzc2VzIGlmIHlvdSBzZWUgYSBzaW5nbGUgMTAwcHggYnkgMTAwcHggZ3JlZW4gYm94IGJl
bG93LjwvcD4KKzxkaXYgaWQ9InQxIj4KKyAgICA8c3Bhbj5GQUlMPC9zcGFuPgorPC9kaXY+Cis8
ZGl2IGlkPSJ0MiI+CisgICAgPHNwYW4gc2xvdD0ic2Vjb25kIj5GQUlMPC9zcGFuPgorPC9kaXY+
Cis8ZGl2IGlkPSJ0MyI+CisgICAgPHNwYW4+RkFJTDwvc3Bhbj4KKzwvZGl2PgorPGRpdiBpZD0i
dDQiPgorICAgIDxzcGFuPkZBSUw8L3NwYW4+Cis8L2Rpdj4KKzxkaXYgaWQ9InQ1Ij4KKyAgICA8
c3Bhbj5GQUlMPC9zcGFuPgorPC9kaXY+Cis8c2NyaXB0PgorCitmdW5jdGlvbiBhdHRhY2hTaGFk
b3coaG9zdCkKK3sKKyAgICBjb25zdCBzaGFkb3cgPSBob3N0LmF0dGFjaFNoYWRvdyh7bW9kZTog
J2Nsb3NlZCd9KTsKKyAgICBzaGFkb3cuaW5uZXJIVE1MID0gYAorICAgIDxzdHlsZT4KKyAgICA6
aG9zdCB7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMHB4OworICAg
ICAgICBiYWNrZ3JvdW5kOiBncmVlbjsKKyAgICAgICAgY29sb3I6IHJlZDsKKyAgICB9CisgICAg
PC9zdHlsZT4KKyAgICA8ZGl2PjxzbG90Pjwvc2xvdD48L2Rpdj4KKyAgICA8ZGl2IGlkPSJzZWNv
bmQtcGFyZW50Ij48c2xvdCBuYW1lPSJzZWNvbmQiPjwvc2xvdD48L2Rpdj4KKyAgICBgOworICAg
IHJldHVybiBzaGFkb3c7Cit9CisKK3sKKyAgICBjb25zdCBob3N0ID0gZG9jdW1lbnQucXVlcnlT
ZWxlY3RvcignI3QxJyk7CisgICAgY29uc3Qgc2hhZG93ID0gYXR0YWNoU2hhZG93KGhvc3QpOwor
ICAgIGNvbnN0IHN0eWxlID0gc2hhZG93LnF1ZXJ5U2VsZWN0b3IoJ3N0eWxlJyk7CisgICAgc3R5
bGUuc2hlZXQuaW5zZXJ0UnVsZSgiLnNlbGVjdGVkIDo6c2xvdHRlZCgqKSB7IGNvbG9yOiBncmVl
biB9Iik7CisgICAgZ2V0Q29tcHV0ZWRTdHlsZShob3N0LnF1ZXJ5U2VsZWN0b3IoJ3NwYW4nKSku
YmFja2dyb3VuZENvbG9yOworICAgIGNvbnN0IGRpdiA9IHNoYWRvdy5xdWVyeVNlbGVjdG9yKCdk
aXYnKTsKKyAgICBkaXYuY2xhc3NOYW1lID0gJ3NlbGVjdGVkJzsKK30KKworeworICAgIGNvbnN0
IGhvc3QgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjdDInKTsKKyAgICBjb25zdCBzaGFkb3cg
PSBhdHRhY2hTaGFkb3coaG9zdCk7CisgICAgZ2V0Q29tcHV0ZWRTdHlsZShob3N0LnF1ZXJ5U2Vs
ZWN0b3IoJ3NwYW4nKSkuYmFja2dyb3VuZENvbG9yOworICAgIGNvbnN0IHN0eWxlID0gc2hhZG93
LnF1ZXJ5U2VsZWN0b3IoJ3N0eWxlJyk7CisgICAgc3R5bGUuc2hlZXQuaW5zZXJ0UnVsZSgiI3Nl
Y29uZC1wYXJlbnQgOjpzbG90dGVkKCopIHsgY29sb3I6IGdyZWVuIH0iKTsKK30KKworeworICAg
IGNvbnN0IGhvc3QgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjdDMnKTsKKyAgICBjb25zdCBz
aGFkb3cgPSBhdHRhY2hTaGFkb3coaG9zdCk7CisgICAgZ2V0Q29tcHV0ZWRTdHlsZShob3N0LnF1
ZXJ5U2VsZWN0b3IoJ3NwYW4nKSkuYmFja2dyb3VuZENvbG9yOworICAgIGNvbnN0IHN0eWxlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTsKKyAgICBzdHlsZS50ZXh0Q29udGVudCA9
ICJkaXYgOjpzbG90dGVkKCopIHsgY29sb3I6IGdyZWVuIH0iOworICAgIHNoYWRvdy5hcHBlbmRD
aGlsZChzdHlsZSk7Cit9CisKK3sKKyAgICBjb25zdCBob3N0ID0gZG9jdW1lbnQucXVlcnlTZWxl
Y3RvcignI3Q0Jyk7CisgICAgY29uc3Qgc2hhZG93ID0gYXR0YWNoU2hhZG93KGhvc3QpOworICAg
IGdldENvbXB1dGVkU3R5bGUoaG9zdC5xdWVyeVNlbGVjdG9yKCdzcGFuJykpLmJhY2tncm91bmRD
b2xvcjsKKyAgICBjb25zdCBzdHlsZSA9IHNoYWRvdy5xdWVyeVNlbGVjdG9yKCdzdHlsZScpOwor
ICAgIHN0eWxlLnNoZWV0Lmluc2VydFJ1bGUoIjpob3N0IHsgY29sb3I6IGdyZWVuIH0iLCAxKTsK
K30KKworeworICAgIGNvbnN0IGhvc3QgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjdDUnKTsK
KyAgICBjb25zdCBzaGFkb3cgPSBhdHRhY2hTaGFkb3coaG9zdCk7CisgICAgZ2V0Q29tcHV0ZWRT
dHlsZShob3N0LnF1ZXJ5U2VsZWN0b3IoJ3NwYW4nKSkuYmFja2dyb3VuZENvbG9yOworICAgIGNv
bnN0IHN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTsKKyAgICBzdHlsZS50
ZXh0Q29udGVudCA9ICI6aG9zdChkaXYpIHsgY29sb3I6IGdyZWVuIH0iOworICAgIHNoYWRvdy5h
cHBlbmRDaGlsZChzdHlsZSkKK30KKworPC9zY3JpcHQ+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>