<?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>59228</bug_id>
          
          <creation_ts>2011-04-22 14:06:38 -0700</creation_ts>
          <short_desc>Remove IsShadowRootFlag from Node</short_desc>
          <delta_ts>2011-11-20 17:58:35 -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>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</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>48698</dependson>
          <blocked>72352</blocked>
    
    <blocked>59802</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dimitri Glazkov (Google)">dglazkov</reporter>
          <assigned_to name="Dimitri Glazkov (Google)">dglazkov</assigned_to>
          <cc>dominicc</cc>
    
    <cc>morrita</cc>
    
    <cc>rolandsteiner</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>391041</commentid>
    <comment_count>0</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-04-22 14:06:38 -0700</bug_when>
    <thetext>Once shadow DOM always starts with the ShadowRoot element, we no longer need this flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416806</commentid>
    <comment_count>1</comment_count>
      <attachid>96302</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-06-07 14:55:22 -0700</bug_when>
    <thetext>Created attachment 96302
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416908</commentid>
    <comment_count>2</comment_count>
      <attachid>96302</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-07 16:24:11 -0700</bug_when>
    <thetext>Comment on attachment 96302
Patch

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

&gt; Source/WebCore/dom/Node.h:213
&gt; -    bool isShadowRoot() const { return getFlag(IsShadowRootFlag); }
&gt; -    // FIXME: Remove this when all shadow roots are ShadowRoots.
&gt; -    virtual bool isShadowBoundary() const { return false; }
&gt; +    virtual bool isShadowRoot() const { return false; }

A virtual function is not as fast as checking a bit. And in the past we have optimized various code paths by replacing virtual functions with a bit in Node.

Are you sure that this does not create a slowdown?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416943</commentid>
    <comment_count>3</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-06-07 17:13:59 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 96302 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=96302&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/Node.h:213
&gt; &gt; -    bool isShadowRoot() const { return getFlag(IsShadowRootFlag); }
&gt; &gt; -    // FIXME: Remove this when all shadow roots are ShadowRoots.
&gt; &gt; -    virtual bool isShadowBoundary() const { return false; }
&gt; &gt; +    virtual bool isShadowRoot() const { return false; }
&gt; 
&gt; A virtual function is not as fast as checking a bit. And in the past we have optimized various code paths by replacing virtual functions with a bit in Node.
&gt; 
&gt; Are you sure that this does not create a slowdown?

I will check. I wrote a microbench for this a while back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416944</commentid>
    <comment_count>4</comment_count>
      <attachid>96302</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-06-07 17:14:22 -0700</bug_when>
    <thetext>Comment on attachment 96302
Patch

Actually, this patch sucks. I can do better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417422</commentid>
    <comment_count>5</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-06-08 12:46:42 -0700</bug_when>
    <thetext>This patch has at least two parts. I need to split out the simple ones.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506635</commentid>
    <comment_count>6</comment_count>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2011-11-20 17:58:35 -0800</bug_when>
    <thetext>Actually we tried replacing this with a virtual, but it regressed performance because parentNode needs to test isShadowRoot; see bug 69266. For now I think we assume that the node flag stays.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96302</attachid>
            <date>2011-06-07 14:55:22 -0700</date>
            <delta_ts>2011-06-07 17:14:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59228-20110607145521.patch</filename>
            <type>text/plain</type>
            <size>17929</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODgyNTYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2MTVlMmFiOTE4NjcyN2Rj
ZDFlNmVhYjI5NDMxNDM4OTY2OTBjOWQzLi5hNmQ1NzdkNjU1ZWNiMDZhNDA1NzMwY2EzNDM2MmYz
NmZkM2E4NTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTcgQEAKKzIwMTEtMDYtMDcgIERpbWl0
cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgSXNTaGFkb3dSb290RmxhZyBmcm9t
IE5vZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5
MjI4CisKKyAgICAgICAgTm93IHRoYXQgc2hhZG93IERPTSBjb252ZXJzaW9uIGlzIGNvbXBsZXRl
LCB3ZSBjYW4gYmVnaW4gc2ltcGxpZnlpbmcgY29kZS4gV2Ugc3RhcnQgd2l0aCByZW1vdmluZyBh
IGJpdCBmcm9tCisgICAgICAgIGluIE5vZGVGbGFncywgc2luY2UgaXQgaXMgbm8gbG9uZ2VyIG5l
Y2Vzc2FyeSAtLSBhbGwgc2hhZG93IERPTSByb290cyBhcmUgaW5zdGFuY2VzIG9mIHRoZSBTaGFk
b3dSb290LgorCisgICAgICAgIFRoZSBjaGFuZ2UgZG9lcyB0aHJlZSB0aGluZ3M6CisgICAgICAg
IDEpIFJlbW92ZXMgdGhlIG5vdGlvbiBvZiBzZXR0aW5nIHNoYWRvdyBob3N0LiBTaW5jZSB0aGlz
IGNhbiBvbmx5IGJlIGRvbmUgb24gdGhlIFNoYWRvd1Jvb3QsIHdlIGNhbiBzaW1wbGlmeSB0aGUg
Y29kZQorICAgICAgICAgICBhbmQgdXNlIHNldFBhcmVudC4KKyAgICAgICAgMikgUmVtb3ZlcyBv
bGQgaXNTaGFkb3dSb290IG1ldGhvZCBhbmQgcmVuYW1lcyBpc1NoYWRvd0JvdW5kYXJ5IHRvIHNl
cnZlIGl0cyBwdXJwb3NlLiBDb2xsYXRlcmFsbHksIEkgaGFkIHRvCisgICAgICAgICAgIGNoYW5n
ZSB0aGUgd2F5IFNoYWRvd0NvbnRlbnRFbGVtZW50IGlkZW50aWZpZXMgaXRzZWxmIGJ5IHN1cmZh
Y2luZyBpc1NoYWRvd0NvbnRlbnQgYWNjZXNzb3Igb24gTm9kZS4KKyAgICAgICAgMykgUmVtb3Zl
cyBhbGwgbG9naWMgdGhhdCByZWxpZWQgb24gTm9kZUZsYWdzIGJpdCBmaWVsZCBhbmQgcmVwbGFj
ZXMgd2l0aCBkaXJlY3QgY2hlY2tzIG9mIGlzU2hhZG93Um9vdC4KKworICAgICAgICBSZWZhY3Rv
cmluZywgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIGNzcy9DU1NTdHls
ZVNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzQXRTaGFkb3dCb3VuZGFyeSk6IENo
YW5nZWQgdG8gdXNlIGlzU2hhZG93Um9vdC4KKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjplbnN1cmVTaGFkb3dSb290KTogQ2hhbmdlZCB0byB1
c2Ugc2V0UGFyZW50LgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6cmVtb3ZlU2hhZG93Um9v
dCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aXNTcGVsbENoZWNraW5nRW5h
YmxlZCk6IENoYW5nZWQgdG8gdXNlIGlzU2hhZG93Um9vdC4KKyAgICAgICAgKiBkb20vTm9kZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzaGFkb3dIb3N0KTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpOb2RlOjpub25Cb3VuZGFyeVNoYWRvd1RyZWVSb290Tm9kZSk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6bm9uU2hhZG93Qm91bmRhcnlQYXJlbnROb2RlKTogRGl0
dG8uCisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmlzU2hh
ZG93Um9vdCk6IGlzU2hhZG93Qm91bmRhcnkgLT4gaXNTaGFkb3dSb290LgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZTo6aXNDb250ZW50RWxlbWVudCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZTo6cGFyZW50Tm9kZSk6IENoYW5nZWQgdG8gdXNlIGlzU2hhZG93Um9vdC4KKyAgICAgICAg
KFdlYkNvcmU6Ok5vZGU6OnBhcmVudE5vZGVHdWFyYW50ZWVkSG9zdEZyZWUpOiBEaXR0by4KKyAg
ICAgICAgKiBkb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZVJlbmRlcmluZ0NvbnRleHQ6Ok5vZGVSZW5kZXJpbmdDb250ZXh0KTogRGl0dG8uCisgICAg
ICAgICogZG9tL1Bvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjpQb3Np
dGlvbik6IERpdHRvLgorICAgICAgICAqIGRvbS9TaGFkb3dDb250ZW50RWxlbWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhZG93Q29udGVudEVsZW1lbnQ6OmlzQ29udGVudEVsZW1lbnQpOiBE
aXR0by4KKyAgICAgICAgKiBkb20vU2hhZG93Um9vdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
aGFkb3dSb290OjpoYXNDb250ZW50RWxlbWVudCk6IENoYW5nZWQgdG8gY2hlY2sgZm9yIGlzQ29u
dGVudEVsZW1lbnQuCisgICAgICAgICogZG9tL1NoYWRvd1Jvb3QuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlNoYWRvd1Jvb3Q6OmlzU2hhZG93Um9vdCk6IFJlbmFtZWQgZnJvbSBpc1NoYWRvd0JvdW5k
YXJ5LgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6Omluc2VydE5vZGVBZnRlcik6IENoYW5n
ZWQgdG8gdXNlIGlzU2hhZG93Um9vdC4KKyAgICAgICAgKiBlZGl0aW5nL2h0bWxlZGl0aW5nLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnZpc2libGVQb3NpdGlvbkJlZm9yZU5vZGUpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OnZpc2libGVQb3NpdGlvbkFmdGVyTm9kZSk6IERpdHRvLgorICAg
ICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXNGaWxl
SW5wdXQpOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpub2RlUG9zaXRpb24pOiBEaXR0by4KKwogMjAxMS0wNi0wNyAg
RW1pbCBBIEVrbHVuZCAgPGVhZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
RXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxl
Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKaW5kZXgg
MWQzN2Y1MGJhMjU2MjRhZDkwOWY3NTdkN2M2MmVjMWI5NWY5NWRhYy4uZjMxZGUxZjAyMGIwYmM2
MTA2YmJlNzczMDI5MTQ5MzlmNGU4YjFkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1N0eWxlU2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNl
bGVjdG9yLmNwcApAQCAtMTc4Myw3ICsxNzgzLDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzQXRT
aGFkb3dCb3VuZGFyeShFbGVtZW50KiBlbGVtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBDb250YWluZXJOb2RlKiBwYXJlbnROb2RlID0gZWxlbWVudC0+cGFyZW50Tm9kZSgpOwot
ICAgIHJldHVybiBwYXJlbnROb2RlICYmIHBhcmVudE5vZGUtPmlzU2hhZG93Qm91bmRhcnkoKTsK
KyAgICByZXR1cm4gcGFyZW50Tm9kZSAmJiBwYXJlbnROb2RlLT5pc1NoYWRvd1Jvb3QoKTsKIH0K
IAogdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphZGp1c3RSZW5kZXJTdHlsZShSZW5kZXJTdHlsZSog
c3R5bGUsIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSwgRWxlbWVudCAqZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcAppbmRleCBkZTI1Y2ZhMTE5MGFjZWI5YTY3YmJkY2ExOGJjNjBlZmIxZTc3ZDI2Li5k
ZDA1M2NkZmQxZmU0ZmM5MjVhZjc5MzJkNDdhMWY1ZWU0Zjc2MTlkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwCkBAIC0xMjAzLDcgKzEyMDMsNyBAQCBTaGFkb3dSb290KiBFbGVtZW50OjplbnN1cmVT
aGFkb3dSb290KCkKICAgICBSZWZQdHI8U2hhZG93Um9vdD4gbmV3Um9vdCA9IFNoYWRvd1Jvb3Q6
OmNyZWF0ZShkb2N1bWVudCgpKTsKICAgICBlbnN1cmVSYXJlRGF0YSgpLT5tX3NoYWRvd1Jvb3Qg
PSBuZXdSb290LmdldCgpOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEluc2Vy
dERPTU5vZGUoZG9jdW1lbnQoKSwgbmV3Um9vdC5nZXQoKSwgdGhpcyk7Ci0gICAgbmV3Um9vdC0+
c2V0U2hhZG93SG9zdCh0aGlzKTsKKyAgICBuZXdSb290LT5zZXRQYXJlbnQodGhpcyk7CiAgICAg
aWYgKGluRG9jdW1lbnQoKSkKICAgICAgICAgbmV3Um9vdC0+aW5zZXJ0ZWRJbnRvRG9jdW1lbnQo
KTsKICAgICBpZiAoYXR0YWNoZWQoKSkKQEAgLTEyMjcsNyArMTIyNyw3IEBAIHZvaWQgRWxlbWVu
dDo6cmVtb3ZlU2hhZG93Um9vdCgpCiAgICAgICAgIGlmIChvbGRSb290LT5hdHRhY2hlZCgpKQog
ICAgICAgICAgICAgb2xkUm9vdC0+ZGV0YWNoKCk7CiAKLSAgICAgICAgb2xkUm9vdC0+c2V0U2hh
ZG93SG9zdCgwKTsKKyAgICAgICAgb2xkUm9vdC0+c2V0UGFyZW50KDApOwogCiAgICAgICAgIGlm
IChvbGRSb290LT5pbkRvY3VtZW50KCkpCiAgICAgICAgICAgICBvbGRSb290LT5yZW1vdmVkRnJv
bURvY3VtZW50KCk7CkBAIC0xOTU1LDcgKzE5NTUsNyBAQCBib29sIEVsZW1lbnQ6OmlzU3BlbGxD
aGVja2luZ0VuYWJsZWQoKSBjb25zdAogICAgICAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBj
b25zdF9jYXN0PEVsZW1lbnQqPihlbGVtZW50KS0+cGFyZW50T3JIb3N0Tm9kZSgpOwogICAgICAg
ICBpZiAocGFyZW50ICYmIHBhcmVudC0+aXNFbGVtZW50Tm9kZSgpKQogICAgICAgICAgICAgZWxl
bWVudCA9IHRvRWxlbWVudChwYXJlbnQpOwotICAgICAgICBlbHNlIGlmIChwYXJlbnQgJiYgcGFy
ZW50LT5pc1NoYWRvd0JvdW5kYXJ5KCkpCisgICAgICAgIGVsc2UgaWYgKHBhcmVudCAmJiBwYXJl
bnQtPmlzU2hhZG93Um9vdCgpKQogICAgICAgICAgICAgZWxlbWVudCA9IHRvRWxlbWVudChwYXJl
bnQtPnBhcmVudE9ySG9zdE5vZGUoKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGVsZW1l
bnQgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDQwNDlkODNjZTFmMjJjMGM1NjY5ZDVkZjI3N2Ri
OGRlY2I5MzVjOGIuLjE1NjNlNTUxMDQwNDk5NDYxMTU2ODNkYTdjMzhlNDE0ZGZiOWJmN2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5jcHAKQEAgLTU0OCwxOCArNTQ4LDcgQEAgTm9kZVJhcmVEYXRhKiBOb2RlOjpj
cmVhdGVSYXJlRGF0YSgpCiAKIEVsZW1lbnQqIE5vZGU6OnNoYWRvd0hvc3QoKSBjb25zdAogewot
ICAgIHJldHVybiB0b0VsZW1lbnQoZ2V0RmxhZyhJc1NoYWRvd1Jvb3RGbGFnKSA/IHBhcmVudCgp
IDogMCk7Ci19Ci0KLXZvaWQgTm9kZTo6c2V0U2hhZG93SG9zdChFbGVtZW50KiBob3N0KQotewot
ICAgIEFTU0VSVCghcGFyZW50Tm9kZSgpICYmICFpc1NWR1NoYWRvd1Jvb3QoKSk7Ci0gICAgaWYg
KGhvc3QpCi0gICAgICAgIHNldEZsYWcoSXNTaGFkb3dSb290RmxhZyk7Ci0gICAgZWxzZQotICAg
ICAgICBjbGVhckZsYWcoSXNTaGFkb3dSb290RmxhZyk7Ci0KLSAgICBzZXRQYXJlbnQoaG9zdCk7
CisgICAgcmV0dXJuIHRvRWxlbWVudChpc1NoYWRvd1Jvb3QoKSA/IHBhcmVudCgpIDogMCk7CiB9
CiAKIEhUTUxJbnB1dEVsZW1lbnQqIE5vZGU6OnRvSW5wdXRFbGVtZW50KCkKQEAgLTE1NDQsMTMg
KzE1MzMsMTMgQEAgTm9kZSogTm9kZTo6c2hhZG93VHJlZVJvb3ROb2RlKCkgY29uc3QKIAogTm9k
ZSogTm9kZTo6bm9uQm91bmRhcnlTaGFkb3dUcmVlUm9vdE5vZGUoKQogewotICAgIEFTU0VSVCgh
aXNTaGFkb3dCb3VuZGFyeSgpKTsKKyAgICBBU1NFUlQoIWlzU2hhZG93Um9vdCgpKTsKICAgICBO
b2RlKiByb290ID0gdGhpczsKICAgICB3aGlsZSAocm9vdCkgewogICAgICAgICBpZiAocm9vdC0+
aXNTaGFkb3dSb290KCkgfHwgcm9vdC0+aXNTVkdTaGFkb3dSb290KCkpCiAgICAgICAgICAgICBy
ZXR1cm4gcm9vdDsKICAgICAgICAgTm9kZSogcGFyZW50ID0gcm9vdC0+cGFyZW50Tm9kZUd1YXJh
bnRlZWRIb3N0RnJlZSgpOwotICAgICAgICBpZiAocGFyZW50ICYmIHBhcmVudC0+aXNTaGFkb3dC
b3VuZGFyeSgpKQorICAgICAgICBpZiAocGFyZW50ICYmIHBhcmVudC0+aXNTaGFkb3dSb290KCkp
CiAgICAgICAgICAgICByZXR1cm4gcm9vdDsKICAgICAgICAgcm9vdCA9IHBhcmVudDsKICAgICB9
CkBAIC0xNTYwLDcgKzE1NDksNyBAQCBOb2RlKiBOb2RlOjpub25Cb3VuZGFyeVNoYWRvd1RyZWVS
b290Tm9kZSgpCiBDb250YWluZXJOb2RlKiBOb2RlOjpub25TaGFkb3dCb3VuZGFyeVBhcmVudE5v
ZGUoKSBjb25zdAogewogICAgIENvbnRhaW5lck5vZGUqIHBhcmVudCA9IHBhcmVudE5vZGUoKTsK
LSAgICByZXR1cm4gcGFyZW50ICYmICFwYXJlbnQtPmlzU2hhZG93Qm91bmRhcnkoKSA/IHBhcmVu
dCA6IDA7CisgICAgcmV0dXJuIHBhcmVudCAmJiAhcGFyZW50LT5pc1NoYWRvd1Jvb3QoKSA/IHBh
cmVudCA6IDA7CiB9CiAKIGJvb2wgTm9kZTo6aXNJblNoYWRvd1RyZWUoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5k
ZXggNmZjOTVmYzA4MWE4NWMwZGM0Y2FiNmI2MTk2ZDJlODRiN2YyNTMzNC4uZjc5MmZiNmEyN2Rm
ZWE0YjMzYzlmZmY1ZTE3NWU3OWU1OWY0ZWViZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC04MSw3ICs4MSw3
IEBAIGNsYXNzIFRyZWVTY29wZTsKIAogdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAotY29u
c3QgaW50IG5vZGVTdHlsZUNoYW5nZVNoaWZ0ID0gMjU7Citjb25zdCBpbnQgbm9kZVN0eWxlQ2hh
bmdlU2hpZnQgPSAyNDsKIAogLy8gU3ludGhldGljU3R5bGVDaGFuZ2UgbWVhbnMgdGhhdCB3ZSBu
ZWVkIHRvIGdvIHRocm91Z2ggdGhlIGVudGlyZSBzdHlsZSBjaGFuZ2UgbG9naWMgZXZlbiB0aG91
Z2gKIC8vIG5vIHN0eWxlIHByb3BlcnR5IGhhcyBhY3R1YWxseSBjaGFuZ2VkLiBJdCBpcyB1c2Vk
IHRvIHJlc3RydWN0dXJlIHRoZSB0cmVlIHdoZW4sIGZvciBpbnN0YW5jZSwKQEAgLTIxMCwxNSAr
MjEwLDE0IEBAIHB1YmxpYzoKICAgICBib29sIGlzQ29tbWVudE5vZGUoKSBjb25zdCB7IHJldHVy
biBnZXRGbGFnKElzQ29tbWVudEZsYWcpOyB9CiAgICAgdmlydHVhbCBib29sIGlzQ2hhcmFjdGVy
RGF0YU5vZGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNEb2N1bWVudE5v
ZGUoKSBjb25zdDsKLSAgICBib29sIGlzU2hhZG93Um9vdCgpIGNvbnN0IHsgcmV0dXJuIGdldEZs
YWcoSXNTaGFkb3dSb290RmxhZyk7IH0KLSAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd2hlbiBh
bGwgc2hhZG93IHJvb3RzIGFyZSBTaGFkb3dSb290cy4KLSAgICB2aXJ0dWFsIGJvb2wgaXNTaGFk
b3dCb3VuZGFyeSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlz
U2hhZG93Um9vdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlz
Q29udGVudEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9v
bCBjYW5IYXZlTGlnaHRDaGlsZFJlbmRlcmVyV2l0aFNoYWRvdygpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAKICAgICBOb2RlKiBzaGFkb3dBbmNlc3Rvck5vZGUoKSBjb25zdDsKLSAgICAvLyBS
ZXR1cm5zIDAsIGEgU2hhZG93Um9vdCwgb3IgYSBsZWdhY3kgc2hhZG93IHJvb3QuCisgICAgLy8g
UmV0dXJucyBhIFNoYWRvd1Jvb3Qgb3IgMC4KICAgICBOb2RlKiBzaGFkb3dUcmVlUm9vdE5vZGUo
KSBjb25zdDsKLSAgICAvLyBSZXR1cm5zIDAsIGEgY2hpbGQgb2YgU2hhZG93Um9vdCwgb3IgYSBs
ZWdhY3kgc2hhZG93IHJvb3QuCisgICAgLy8gUmV0dXJucyBhIGNoaWxkIG9mIFNoYWRvd1Jvb3Qg
b3IgMC4KICAgICBOb2RlKiBub25Cb3VuZGFyeVNoYWRvd1RyZWVSb290Tm9kZSgpOwogICAgIGJv
b2wgaXNJblNoYWRvd1RyZWUoKTsKICAgICAvLyBOb2RlJ3MgcGFyZW50LCBzaGFkb3cgdHJlZSBo
b3N0LCBvciBTVkcgdXNlLgpAQCAtMjI5LDcgKzIyOCw2IEBAIHB1YmxpYzoKICAgICBDb250YWlu
ZXJOb2RlKiBub25TaGFkb3dCb3VuZGFyeVBhcmVudE5vZGUoKSBjb25zdDsKIAogICAgIEVsZW1l
bnQqIHNoYWRvd0hvc3QoKSBjb25zdDsKLSAgICB2b2lkIHNldFNoYWRvd0hvc3QoRWxlbWVudCop
OwogCiAgICAgYm9vbCBzZWxmT3JBbmNlc3Rvckhhc0RpckF1dG9BdHRyaWJ1dGUoKSBjb25zdCB7
IHJldHVybiBnZXRGbGFnKFNlbGZPckFuY2VzdG9ySGFzRGlyQXV0b0ZsYWcpOyB9CiAgICAgdm9p
ZCBzZXRTZWxmT3JBbmNlc3Rvckhhc0RpckF1dG9BdHRyaWJ1dGUoYm9vbCBmbGFnKSB7IHNldEZs
YWcoZmxhZywgU2VsZk9yQW5jZXN0b3JIYXNEaXJBdXRvRmxhZyk7IH0KQEAgLTU5NCwxNyArNTky
LDE2IEBAIHByaXZhdGU6CiAgICAgICAgIEluQWN0aXZlQ2hhaW5GbGFnID0gMSA8PCAxNSwKICAg
ICAgICAgSW5EZXRhY2hGbGFnID0gMSA8PCAxNiwKICAgICAgICAgSGFzUmFyZURhdGFGbGFnID0g
MSA8PCAxNywKLSAgICAgICAgSXNTaGFkb3dSb290RmxhZyA9IDEgPDwgMTgsCiAKICAgICAgICAg
Ly8gVGhlc2UgYml0cyBhcmUgdXNlZCBieSBkZXJpdmVkIGNsYXNzZXMsIHB1bGxlZCB1cCBoZXJl
IHNvIHRoZXkgY2FuCiAgICAgICAgIC8vIGJlIHN0b3JlZCBpbiB0aGUgc2FtZSBtZW1vcnkgd29y
ZCBhcyB0aGUgTm9kZSBiaXRzIGFib3ZlLgotICAgICAgICBJc1BhcnNpbmdDaGlsZHJlbkZpbmlz
aGVkRmxhZyA9IDEgPDwgMTksIC8vIEVsZW1lbnQKLSAgICAgICAgSXNTdHlsZUF0dHJpYnV0ZVZh
bGlkRmxhZyA9IDEgPDwgMjAsIC8vIFN0eWxlZEVsZW1lbnQKLSAgICAgICAgSXNTeW5jaHJvbml6
aW5nU3R5bGVBdHRyaWJ1dGVGbGFnID0gMSA8PCAyMSwgLy8gU3R5bGVkRWxlbWVudAorICAgICAg
ICBJc1BhcnNpbmdDaGlsZHJlbkZpbmlzaGVkRmxhZyA9IDEgPDwgMTgsIC8vIEVsZW1lbnQKKyAg
ICAgICAgSXNTdHlsZUF0dHJpYnV0ZVZhbGlkRmxhZyA9IDEgPDwgMTksIC8vIFN0eWxlZEVsZW1l
bnQKKyAgICAgICAgSXNTeW5jaHJvbml6aW5nU3R5bGVBdHRyaWJ1dGVGbGFnID0gMSA8PCAyMCwg
Ly8gU3R5bGVkRWxlbWVudAogI2lmIEVOQUJMRShTVkcpCi0gICAgICAgIEFyZVNWR0F0dHJpYnV0
ZXNWYWxpZEZsYWcgPSAxIDw8IDIyLCAvLyBFbGVtZW50Ci0gICAgICAgIElzU3luY2hyb25pemlu
Z1NWR0F0dHJpYnV0ZXNGbGFnID0gMSA8PCAyMywgLy8gU1ZHRWxlbWVudAotICAgICAgICBIYXNT
VkdSYXJlRGF0YUZsYWcgPSAxIDw8IDI0LCAvLyBTVkdFbGVtZW50CisgICAgICAgIEFyZVNWR0F0
dHJpYnV0ZXNWYWxpZEZsYWcgPSAxIDw8IDIxLCAvLyBFbGVtZW50CisgICAgICAgIElzU3luY2hy
b25pemluZ1NWR0F0dHJpYnV0ZXNGbGFnID0gMSA8PCAyMiwgLy8gU1ZHRWxlbWVudAorICAgICAg
ICBIYXNTVkdSYXJlRGF0YUZsYWcgPSAxIDw8IDIzLCAvLyBTVkdFbGVtZW50CiAjZW5kaWYKIAog
ICAgICAgICBTdHlsZUNoYW5nZU1hc2sgPSAxIDw8IG5vZGVTdHlsZUNoYW5nZVNoaWZ0IHwgMSA8
PCAobm9kZVN0eWxlQ2hhbmdlU2hpZnQgKyAxKSwKQEAgLTcyNyw3ICs3MjQsNyBAQCBpbmxpbmUg
dm9pZCBhZGRTdWJyZXNvdXJjZVVSTChMaXN0SGFzaFNldDxLVVJMPiYgdXJscywgY29uc3QgS1VS
TCYgdXJsKQogCiBpbmxpbmUgQ29udGFpbmVyTm9kZSogTm9kZTo6cGFyZW50Tm9kZSgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIGdldEZsYWcoSXNTaGFkb3dSb290RmxhZykgfHwgaXNTVkdTaGFkb3dS
b290KCkgPyAwIDogcGFyZW50KCk7CisgICAgcmV0dXJuIGlzU2hhZG93Um9vdCgpIHx8IGlzU1ZH
U2hhZG93Um9vdCgpID8gMCA6IHBhcmVudCgpOwogfQogCiBpbmxpbmUgQ29udGFpbmVyTm9kZSog
Tm9kZTo6cGFyZW50T3JIb3N0Tm9kZSgpIGNvbnN0CkBAIC03MzcsNyArNzM0LDcgQEAgaW5saW5l
IENvbnRhaW5lck5vZGUqIE5vZGU6OnBhcmVudE9ySG9zdE5vZGUoKSBjb25zdAogCiBpbmxpbmUg
Q29udGFpbmVyTm9kZSogTm9kZTo6cGFyZW50Tm9kZUd1YXJhbnRlZWRIb3N0RnJlZSgpIGNvbnN0
CiB7Ci0gICAgQVNTRVJUKCFnZXRGbGFnKElzU2hhZG93Um9vdEZsYWcpICYmICFpc1NWR1NoYWRv
d1Jvb3QoKSk7CisgICAgQVNTRVJUKCFpc1NoYWRvd1Jvb3QoKSAmJiAhaXNTVkdTaGFkb3dSb290
KCkpOwogICAgIHJldHVybiBwYXJlbnRPckhvc3ROb2RlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDY5M2ZlNTI1OWM2M2ZiNmY4MDgz
ZjU4NmJjNzFlZDVlOWNiM2Y3ZjAuLmUwYzA5NDE2YThjMjNiMzFlZmNkM2E2NzU2MGEyZjJiOGYw
ZDg1ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcApA
QCAtNDYsNyArNDYsNyBAQCBOb2RlUmVuZGVyaW5nQ29udGV4dDo6Tm9kZVJlbmRlcmluZ0NvbnRl
eHQoTm9kZSogbm9kZSkKICAgICBpZiAoIXBhcmVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
aWYgKHBhcmVudC0+aXNTaGFkb3dCb3VuZGFyeSgpKSB7CisgICAgaWYgKHBhcmVudC0+aXNTaGFk
b3dSb290KCkpIHsKICAgICAgICAgbV9sb2NhdGlvbiA9IExvY2F0aW9uU2hhZG93Q2hpbGQ7CiAg
ICAgICAgIG1fcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlID0gcGFyZW50LT5zaGFkb3dI
b3N0KCk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Q
b3NpdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCmluZGV4IDM4ZmRl
YWU5ZjE1MTgxY2M5ZjBjYjcyZGQzNGEzN2NkN2M5MTNlMDYuLmJmOWNmN2JhNDg2Y2RmNzQ3YjVk
OTBkOWE4NDZkMTcyOWQxMjYwN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3Np
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcApAQCAtODAsNyAr
ODAsNyBAQCBQb3NpdGlvbjo6UG9zaXRpb24oUGFzc1JlZlB0cjxOb2RlPiBhbmNob3JOb2RlLCBp
bnQgb2Zmc2V0KQogICAgICwgbV9hbmNob3JUeXBlKGFuY2hvclR5cGVGb3JMZWdhY3lFZGl0aW5n
UG9zaXRpb24obV9hbmNob3JOb2RlLmdldCgpLCBtX29mZnNldCkpCiAgICAgLCBtX2lzTGVnYWN5
RWRpdGluZ1Bvc2l0aW9uKHRydWUpCiB7Ci0gICAgQVNTRVJUKCFtX2FuY2hvck5vZGUgfHwgIW1f
YW5jaG9yTm9kZS0+aXNTaGFkb3dCb3VuZGFyeSgpKTsKKyAgICBBU1NFUlQoIW1fYW5jaG9yTm9k
ZSB8fCAhbV9hbmNob3JOb2RlLT5pc1NoYWRvd1Jvb3QoKSk7CiB9CiAKIFBvc2l0aW9uOjpQb3Np
dGlvbihQYXNzUmVmUHRyPE5vZGU+IGFuY2hvck5vZGUsIEFuY2hvclR5cGUgYW5jaG9yVHlwZSkK
QEAgLTg5LDcgKzg5LDcgQEAgUG9zaXRpb246OlBvc2l0aW9uKFBhc3NSZWZQdHI8Tm9kZT4gYW5j
aG9yTm9kZSwgQW5jaG9yVHlwZSBhbmNob3JUeXBlKQogICAgICwgbV9hbmNob3JUeXBlKGFuY2hv
clR5cGUpCiAgICAgLCBtX2lzTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKGZhbHNlKQogewotICAgIEFT
U0VSVCghbV9hbmNob3JOb2RlIHx8ICFtX2FuY2hvck5vZGUtPmlzU2hhZG93Qm91bmRhcnkoKSk7
CisgICAgQVNTRVJUKCFtX2FuY2hvck5vZGUgfHwgIW1fYW5jaG9yTm9kZS0+aXNTaGFkb3dSb290
KCkpOwogICAgIEFTU0VSVChhbmNob3JUeXBlICE9IFBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvcik7
CiB9CiAKQEAgLTk5LDcgKzk5LDcgQEAgUG9zaXRpb246OlBvc2l0aW9uKFBhc3NSZWZQdHI8Tm9k
ZT4gYW5jaG9yTm9kZSwgaW50IG9mZnNldCwgQW5jaG9yVHlwZSBhbmNob3JUeXAKICAgICAsIG1f
YW5jaG9yVHlwZShhbmNob3JUeXBlKQogICAgICwgbV9pc0xlZ2FjeUVkaXRpbmdQb3NpdGlvbihm
YWxzZSkKIHsKLSAgICBBU1NFUlQoIW1fYW5jaG9yTm9kZSB8fCAhZWRpdGluZ0lnbm9yZXNDb250
ZW50KG1fYW5jaG9yTm9kZS5nZXQoKSkgfHwgIW1fYW5jaG9yTm9kZS0+aXNTaGFkb3dCb3VuZGFy
eSgpKTsKKyAgICBBU1NFUlQoIW1fYW5jaG9yTm9kZSB8fCAhZWRpdGluZ0lnbm9yZXNDb250ZW50
KG1fYW5jaG9yTm9kZS5nZXQoKSkgfHwgIW1fYW5jaG9yTm9kZS0+aXNTaGFkb3dSb290KCkpOwog
ICAgIEFTU0VSVChhbmNob3JUeXBlID09IFBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvcik7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50RWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmgKaW5kZXggMDlmZGI0MjAz
ODljMDc4OTQ4NjQ4NDM5NjkxOGZkMjBjZGYxZDM3YS4uZmZmOGQ2N2JhNjNkNTYxMjcyNzViNzgz
NTAxYWZjYTdhNWVkNGEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0Nv
bnRlbnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVt
ZW50LmgKQEAgLTQ5LDkgKzQ5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2go
KTsKIAogcHJpdmF0ZToKLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgcmVwbGFjZWQgd2l0
aCB0YWctbmFtZSBjaGVja2luZyBvbmNlIDxjb250ZW50PiBpcyByZWFkeS4KLSAgICAvLyBTZWUg
YWxzbyBodHRwOi8vd2Via2l0Lm9yZy9iLzU2OTczCi0gICAgdmlydHVhbCBib29sIGlzU2hhZG93
Qm91bmRhcnkoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGlzQ29u
dGVudEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIHJl
bmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKSB7IHJldHVybiBmYWxz
ZTsgfQogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVu
YSosIFJlbmRlclN0eWxlKikgeyByZXR1cm4gMDsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290
LmNwcAppbmRleCAwNjA4OGM3NjJjOGU5ZmMwNDM4NTNkOTY5ZTZjNDg1MjY4MjJhOWNjLi5iNWY2
MWU2ODhmNDZkZmUwZmIwZWY1YmQ4ODA1Y2UwOTRjNDhhMGY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRv
d1Jvb3QuY3BwCkBAIC0xMTMsOSArMTEzLDcgQEAgdm9pZCBTaGFkb3dSb290Ojpob3N0Q2hpbGRy
ZW5DaGFuZ2VkKCkKIGJvb2wgU2hhZG93Um9vdDo6aGFzQ29udGVudEVsZW1lbnQoKSBjb25zdAog
ewogICAgIGZvciAoTm9kZSogbiA9IGZpcnN0Q2hpbGQoKTsgbjsgbiA9IG4tPnRyYXZlcnNlTmV4
dE5vZGUodGhpcykpIHsKLSAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIHJlcGxhY2Vk
IHdpdGggdGFnLW5hbWUgY2hlY2tpbmcgb25jZSA8Y29udGVudD4gaXMgcmVhZHkuCi0gICAgICAg
IC8vIFNlZSBhbHNvIGh0dHA6Ly93ZWJraXQub3JnL2IvNTY5NzMKLSAgICAgICAgaWYgKG4tPmlz
U2hhZG93Qm91bmRhcnkoKSkKKyAgICAgICAgaWYgKG4tPmlzQ29udGVudEVsZW1lbnQoKSkKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1NoYWRvd1Jvb3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKaW5k
ZXggY2U4ZWIwZjFhNTliODFmZTdiMDY4OTg5ZTViZDE2NTZkYTdjNTRhMy4uM2NlYTg2ZDdhNzg5
NjYyMmY2NmFmYmUzZjczNWNhOWQxZTQ1NmRiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1NoYWRvd1Jvb3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCkBA
IC0zOCw3ICszOCw3IEBAIGNsYXNzIFNoYWRvd1Jvb3QgOiBwdWJsaWMgVHJlZVNjb3BlIHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFkb3dSb290PiBjcmVhdGUoRG9jdW1lbnQq
KTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc1NoYWRvd0JvdW5kYXJ5KCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1NoYWRvd1Jvb3QoKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdlID0gTm9DaGFu
Z2UpOwogCiAgICAgQ29udGFpbmVyTm9kZSogYWN0aXZlQ29udGVudENvbnRhaW5lcigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAppbmRleCA5
NGNkNzczNmE2NmUyM2I4MjMyNWUwZmI1ZTIxODk2NmRhNzhlMjIyLi5kOTJkNWE1OTI0OGVkNDE3
OWQ2YzhmZjliNmRjNDViODkwYmQ2NGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcApAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgQ29tcG9z
aXRlRWRpdENvbW1hbmQ6Omluc2VydE5vZGVBZnRlcihQYXNzUmVmUHRyPE5vZGU+IGluc2VydENo
aWxkLCBQYXNzUmVmCiAgICAgQVNTRVJUKCFyZWZDaGlsZC0+aGFzVGFnTmFtZShib2R5VGFnKSk7
CiAgICAgQ29udGFpbmVyTm9kZSogcGFyZW50ID0gcmVmQ2hpbGQtPnBhcmVudE5vZGUoKTsKICAg
ICBBU1NFUlQocGFyZW50KTsKLSAgICBBU1NFUlQoIXBhcmVudC0+aXNTaGFkb3dCb3VuZGFyeSgp
KTsKKyAgICBBU1NFUlQoIXBhcmVudC0+aXNTaGFkb3dSb290KCkpOwogICAgIGlmIChwYXJlbnQt
Pmxhc3RDaGlsZCgpID09IHJlZkNoaWxkKQogICAgICAgICBhcHBlbmROb2RlKGluc2VydENoaWxk
LCBwYXJlbnQpOwogICAgIGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9odG1sZWRpdGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNw
cAppbmRleCAyNWMxMWY3MmZkMTEwYWZiMjY4ODkzMTRkZjlmYTk1NzIxNzk5ZDQxLi44YzQyMjUy
MmFjZDIwZDU3YWNlNDY5MWNmMmQwZWExYWUyZGFjOWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2h0bWxlZGl0aW5nLmNwcApAQCAtNTAyLDcgKzUwMiw3IEBAIFZpc2libGVQb3NpdGlvbiB2aXNp
YmxlUG9zaXRpb25CZWZvcmVOb2RlKE5vZGUqIG5vZGUpCiAgICAgaWYgKG5vZGUtPmNoaWxkTm9k
ZUNvdW50KCkpCiAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oZmlyc3RQb3NpdGlvbklu
T3JCZWZvcmVOb2RlKG5vZGUpLCBET1dOU1RSRUFNKTsKICAgICBBU1NFUlQobm9kZS0+cGFyZW50
Tm9kZSgpKTsKLSAgICBBU1NFUlQoIW5vZGUtPnBhcmVudE5vZGUoKS0+aXNTaGFkb3dCb3VuZGFy
eSgpKTsKKyAgICBBU1NFUlQoIW5vZGUtPnBhcmVudE5vZGUoKS0+aXNTaGFkb3dSb290KCkpOwog
ICAgIHJldHVybiBwb3NpdGlvbkluUGFyZW50QmVmb3JlTm9kZShub2RlKTsKIH0KIApAQCAtNTEz
LDcgKzUxMyw3IEBAIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25BZnRlck5vZGUoTm9k
ZSogbm9kZSkKICAgICBpZiAobm9kZS0+Y2hpbGROb2RlQ291bnQoKSkKICAgICAgICAgcmV0dXJu
IFZpc2libGVQb3NpdGlvbihsYXN0UG9zaXRpb25Jbk9yQWZ0ZXJOb2RlKG5vZGUpLCBET1dOU1RS
RUFNKTsKICAgICBBU1NFUlQobm9kZS0+cGFyZW50Tm9kZSgpKTsKLSAgICBBU1NFUlQoIW5vZGUt
PnBhcmVudE5vZGUoKS0+aXNTaGFkb3dCb3VuZGFyeSgpKTsKKyAgICBBU1NFUlQoIW5vZGUtPnBh
cmVudE5vZGUoKS0+aXNTaGFkb3dSb290KCkpOwogICAgIHJldHVybiBwb3NpdGlvbkluUGFyZW50
QWZ0ZXJOb2RlKG5vZGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Ry
YWdDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3Bw
CmluZGV4IDJhNjIzZTA3N2NhNmI5M2I4ZWEyMmZjMzc3NDUwOGU1ODhjODJkYmMuLjZlZDk2ZTVm
YzM5N2E1NTA0ZTk3ZDY4MWZhNjIzMTAzYzM5YzEwYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJh
Z0NvbnRyb2xsZXIuY3BwCkBAIC0yNTYsNyArMjU2LDcgQEAgc3RhdGljIEhUTUxJbnB1dEVsZW1l
bnQqIGFzRmlsZUlucHV0KE5vZGUqIG5vZGUpCiAgICAgSFRNTElucHV0RWxlbWVudCogaW5wdXRF
bGVtZW50ID0gbm9kZS0+dG9JbnB1dEVsZW1lbnQoKTsKIAogICAgIC8vIElmIHRoaXMgaXMgYSBi
dXR0b24gaW5zaWRlIG9mIHRoZSBhIGZpbGUgaW5wdXQsIG1vdmUgdXAgdG8gdGhlIGZpbGUgaW5w
dXQuCi0gICAgaWYgKGlucHV0RWxlbWVudCAmJiBpbnB1dEVsZW1lbnQtPmlzVGV4dEJ1dHRvbigp
ICYmIGlucHV0RWxlbWVudC0+dHJlZVNjb3BlKCktPmlzU2hhZG93Qm91bmRhcnkoKSkKKyAgICBp
ZiAoaW5wdXRFbGVtZW50ICYmIGlucHV0RWxlbWVudC0+aXNUZXh0QnV0dG9uKCkgJiYgaW5wdXRF
bGVtZW50LT50cmVlU2NvcGUoKS0+aXNTaGFkb3dSb290KCkpCiAgICAgICAgIGlucHV0RWxlbWVu
dCA9IGlucHV0RWxlbWVudC0+dHJlZVNjb3BlKCktPnNoYWRvd0hvc3QoKS0+dG9JbnB1dEVsZW1l
bnQoKTsKIAogICAgIHJldHVybiBpbnB1dEVsZW1lbnQgJiYgaW5wdXRFbGVtZW50LT5pc0ZpbGVV
cGxvYWQoKSA/IGlucHV0RWxlbWVudCA6IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVHJlZUFzVGV4dC5jcHAKaW5kZXggMDA3OGI0Mjc4NTk1YjNiMDUzMjQ0MWQ0YWZmZmVi
NGM0NjRiN2QxZi4uZDA5NmY4NzhhZWEzNTVlNGMzMGM4Y2JmNDRjMjcxMzFlM2E2NWU1OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcApAQCAtNzIz
LDcgKzcyMyw3IEBAIHN0YXRpYyBTdHJpbmcgbm9kZVBvc2l0aW9uKE5vZGUqIG5vZGUpCiAgICAg
ICAgICAgICAgICAgcmVzdWx0ICs9ICJib2R5IjsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChuLT5pc1NoYWRvd0JvdW5kYXJ5KCkpCisgICAg
ICAgICAgICBpZiAobi0+aXNTaGFkb3dSb290KCkpCiAgICAgICAgICAgICAgICAgcmVzdWx0ICs9
ICJ7IiArIGdldFRhZ05hbWUobikgKyAifSI7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAg
ICAgICAgcmVzdWx0ICs9ICJjaGlsZCAiICsgU3RyaW5nOjpudW1iZXIobi0+bm9kZUluZGV4KCkp
ICsgIiB7IiArIGdldFRhZ05hbWUobikgKyAifSI7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>