<?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>130194</bug_id>
          
          <creation_ts>2014-03-13 07:56:09 -0700</creation_ts>
          <short_desc>Remove StyleResolver::State::m_parentNode</short_desc>
          <delta_ts>2014-03-13 13:13:37 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></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>darin</cc>
    
    <cc>kling</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>990005</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-03-13 07:56:09 -0700</bug_when>
    <thetext>We just need the parent style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990008</commentid>
    <comment_count>1</comment_count>
      <attachid>226594</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-03-13 08:15:53 -0700</bug_when>
    <thetext>Created attachment 226594
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990016</commentid>
    <comment_count>2</comment_count>
      <attachid>226594</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-03-13 08:56:08 -0700</bug_when>
    <thetext>Comment on attachment 226594
patch

r=me! RenderStyle&amp;!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990069</commentid>
    <comment_count>3</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-03-13 11:01:35 -0700</bug_when>
    <thetext>https://trac.webkit.org/r165542</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990090</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-03-13 11:38:30 -0700</bug_when>
    <thetext>To fix optimized builds:

  &quot;__ZNK7WebCore4Node11renderStyleEv&quot;, referenced from:
      __ZN7WebCore16HTMLTitleElement17textWithDirectionEv in HTMLTitleElement.o
      __ZNK7WebCore17MediaQueryMatcher16prepareEvaluatorEv in MediaQueryMatcher.o
      __ZNK7WebCore10StyleMedia11matchMediumERKN3WTF6StringE in StyleMedia.o

We need to add includes of NodeRenderStyle.h to HTMLTitleElement.cpp, MediaQueryMatcher.cpp, and StyleMedia.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990091</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-03-13 11:39:17 -0700</bug_when>
    <thetext>I see, Antti did that in http://trac.webkit.org/changeset/165547</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990132</commentid>
    <comment_count>6</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-03-13 12:53:52 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; I see, Antti did that in http://trac.webkit.org/changeset/165547

The bots are still red after r165547.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990136</commentid>
    <comment_count>7</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-03-13 13:13:37 -0700</bug_when>
    <thetext>Looks like Benjamin fixed that in https://trac.webkit.org/r165561</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226594</attachid>
            <date>2014-03-13 08:15:53 -0700</date>
            <delta_ts>2014-03-13 08:56:07 -0700</delta_ts>
            <desc>patch</desc>
            <filename>style-resolver-parent.patch</filename>
            <type>text/plain</type>
            <size>31632</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NTUzMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcyIEBACisyMDE0LTAzLTEzICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgU3R5bGVSZXNvbHZl
cjo6U3RhdGU6Om1fcGFyZW50Tm9kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTMwMTk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyB2YXJpYWJsZSB3YXMgdGhlICJwYXJlbnQiIG5vZGUgd2hlcmUg
dGhlIHN0eWxlIHdhcyBiZWluZyBpbmhlcml0ZWQgZnJvbSwgbm90IHRoZSBhY3R1YWwgcGFyZW50
LgorICAgICAgICBUaGUgY29kZSB3b3VsZCBhbHNvIHJlY29tcHV0ZSBpdCBldmVuIHRob3VnaCB0
aGUgY2FsbCBzaXRlcyBnZW5lcmFsbHkga25vdyB0aGUgcGFyZW50IHN0eWxlIGFscmVhZHkuCisK
KyAgICAgICAgSWYgd2UgY29uc2lzdGVudGx5IHBhc3MgcGFyZW50IHN0eWxlIHRvIFN0eWxlUmVz
b2x2ZXI6OnN0eWxlRm9yRWxlbWVudCB3ZSB3b24ndCBuZWVkIHRoZSB2YXJpYWJsZSBhbmQKKyAg
ICAgICAgdGhlIGFzc29jaWF0ZWQgY29kZS4gV2UgYWxzbyBnZXQgcmlkIG9mIG9uZSBtb3JlIGNs
aWVudCBvZiBOb2RlUmVuZGVyaW5nVHJhdmVyc2FsLgorCisgICAgICAgICogY3NzL01lZGlhUXVl
cnlNYXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnlNYXRjaGVyOjpwcmVw
YXJlRXZhbHVhdG9yKToKKyAgICAgICAgKiBjc3MvU1ZHQ1NTU3R5bGVTZWxlY3Rvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjphcHBseVNWR1Byb3BlcnR5KToKKyAgICAg
ICAgKiBjc3MvU3R5bGVNZWRpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZU1lZGlhOjpt
YXRjaE1lZGl1bSk6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6U3RhdGU6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlUmVzb2x2ZXI6OlN0eWxlUmVzb2x2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVS
ZXNvbHZlcjo6U3RhdGU6OmluaXRGb3JTdHlsZVJlc29sdmUpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eSk6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmRvY3VtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OlN0YXRlOjpTdGF0ZSk6CisgICAgICAgICogZG9t
L0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y3VzdG9tU3R5bGVGb3JS
ZW5kZXJlcik6CisgICAgICAgIAorICAgICAgICAgICAgQWRkIHBhcmVudFN0eWxlIHBhcmFtZXRl
ci4KKworICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL1BzZXVkb0VsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHNldWRvRWxlbWVudDo6Y3VzdG9tU3R5bGVGb3JS
ZW5kZXJlcik6CisgICAgICAgICogZG9tL1BzZXVkb0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1s
L0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdEdyb3Vw
RWxlbWVudDo6ZGlkQXR0YWNoUmVuZGVyZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPcHRH
cm91cEVsZW1lbnQ6OnVwZGF0ZU5vblJlbmRlclN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxPcHRHcm91cEVsZW1lbnQ6OmN1c3RvbVN0eWxlRm9yUmVuZGVyZXIpOgorICAgICAgICAqIGh0
bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTE9wdGlvbkVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1lbnQ6OmRpZEF0dGFjaFJl
bmRlcmVycyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVudDo6dXBkYXRlTm9u
UmVuZGVyU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1lbnQ6OmN1c3Rv
bVN0eWxlRm9yUmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaDoK
KyAgICAgICAgKiBodG1sL0hUTUxUaXRsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFRpdGxlRWxlbWVudDo6dGV4dFdpdGhEaXJlY3Rpb24pOgorICAgICAgICAqIGh0bWwvc2hh
ZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
Q29udHJvbElubmVyRWxlbWVudDo6Y3VzdG9tU3R5bGVGb3JSZW5kZXJlcik6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OmN1c3RvbVN0eWxlRm9yUmVuZGVy
ZXIpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6Y29tcHV0ZVN0eWxlSW5SZWdpb24p
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OmNvbXB1dGVDaGls
ZHJlblN0eWxlSW5SZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93RnJh
Z21lbnQ6OnNldFJlZ2lvbk9iamVjdHNSZWdpb25TdHlsZSk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50Lmg6CisgICAgICAgICogc3R5bGUvU3R5bGVSZXNvbHZl
VHJlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6c3R5bGVGb3JFbGVtZW50KToKKyAg
ICAgICAgCisgICAgICAgICAgICBUaGlzIHVzZWQgdG8gYmUgRWxlbWVudDo6c3R5bGVGb3JSZW5k
ZXJlci4gSXQgaXMgbm93IGEgc3RhbmRhbG9uZSBzdGF0aWMuCisKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjplbGVtZW50SW5zaWRlUmVnaW9uTmVlZHNSZW5kZXJlcik6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6Y3JlYXRlUmVuZGVyZXJJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6cmVzb2x2ZUxvY2FsKToKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjpjdXN0b21TdHlsZUZvclJlbmRlcmVyKToKKyAgICAg
ICAgKiBzdmcvU1ZHRWxlbWVudC5oOgorCiAyMDE0LTAzLTEyICBCcmlhbiBCdXJnICA8YmJ1cmdA
YXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBSZXBsYXk6IGFkZCBpbmZyYXN0cnVjdHVyZSBmb3Ig
bWVtb2l6aW5nIG5vbmRldGVybWluaXN0aWMgRE9NIEFQSXMKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2Nzcy9NZWRpYVF1ZXJ5TWF0Y2hlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Y3NzL01lZGlhUXVlcnlNYXRjaGVyLmNwcAkocmV2aXNpb24gMTY1NDY0KQorKysgU291cmNlL1dl
YkNvcmUvY3NzL01lZGlhUXVlcnlNYXRjaGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQsNyAr
ODQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFRdWVyeUV2YWx1YXRvcj4gTWVkCiAgICAgaWYg
KCFkb2N1bWVudEVsZW1lbnQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRy
PFJlbmRlclN0eWxlPiByb290U3R5bGUgPSBtX2RvY3VtZW50LT5lbnN1cmVTdHlsZVJlc29sdmVy
KCkuc3R5bGVGb3JFbGVtZW50KGRvY3VtZW50RWxlbWVudCwgMCAvKmRlZmF1bHRQYXJlbnQqLywg
RGlzYWxsb3dTdHlsZVNoYXJpbmcsIE1hdGNoT25seVVzZXJBZ2VudFJ1bGVzKTsKKyAgICBSZWZQ
dHI8UmVuZGVyU3R5bGU+IHJvb3RTdHlsZSA9IG1fZG9jdW1lbnQtPmVuc3VyZVN0eWxlUmVzb2x2
ZXIoKS5zdHlsZUZvckVsZW1lbnQoZG9jdW1lbnRFbGVtZW50LCBtX2RvY3VtZW50LT5yZW5kZXJT
dHlsZSgpLCBEaXNhbGxvd1N0eWxlU2hhcmluZywgTWF0Y2hPbmx5VXNlckFnZW50UnVsZXMpOwog
CiAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFRdWVyeUV2YWx1YXRvcj4obWVkaWFU
eXBlKCksIG1fZG9jdW1lbnQtPmZyYW1lKCksIHJvb3RTdHlsZS5nZXQoKSk7CiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTU3R5bGVTZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU1N0eWxlU2VsZWN0b3IuY3BwCShyZXZpc2lvbiAxNjU0
NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTExMCw4ICsxMTAsOCBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5U1ZH
UHJvcGVydHkoQ1NTCiAgICAgY29uc3QgU3RhdGUmIHN0YXRlID0gbV9zdGF0ZTsKICAgICBTVkdS
ZW5kZXJTdHlsZSYgc3ZnU3R5bGUgPSBzdGF0ZS5zdHlsZSgpLT5hY2Nlc3NTVkdTdHlsZSgpOwog
Ci0gICAgYm9vbCBpc0luaGVyaXQgPSBzdGF0ZS5wYXJlbnROb2RlKCkgJiYgdmFsdWUtPmlzSW5o
ZXJpdGVkVmFsdWUoKTsKLSAgICBib29sIGlzSW5pdGlhbCA9IHZhbHVlLT5pc0luaXRpYWxWYWx1
ZSgpIHx8ICghc3RhdGUucGFyZW50Tm9kZSgpICYmIHZhbHVlLT5pc0luaGVyaXRlZFZhbHVlKCkp
OworICAgIGJvb2wgaXNJbmhlcml0ID0gc3RhdGUucGFyZW50U3R5bGUoKSAmJiB2YWx1ZS0+aXNJ
bmhlcml0ZWRWYWx1ZSgpOworICAgIGJvb2wgaXNJbml0aWFsID0gdmFsdWUtPmlzSW5pdGlhbFZh
bHVlKCkgfHwgKCFzdGF0ZS5wYXJlbnRTdHlsZSgpICYmIHZhbHVlLT5pc0luaGVyaXRlZFZhbHVl
KCkpOwogCiAgICAgLy8gV2hhdCBmb2xsb3dzIGlzIGEgbGlzdCB0aGF0IG1hcHMgdGhlIENTUyBw
cm9wZXJ0aWVzIGludG8gdGhlaXIKICAgICAvLyBjb3JyZXNwb25kaW5nIGZyb250LWVuZCBSZW5k
ZXJTdHlsZSB2YWx1ZXMuIFNob3J0aGFuZHMoZS5nLiBib3JkZXIsCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVNZWRpYS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlTWVkaWEuY3BwCShyZXZpc2lvbiAxNjU0NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVNZWRpYS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDcgQEAgYm9vbCBTdHls
ZU1lZGlhOjptYXRjaE1lZGl1bShjb25zdCBTdHJpbgogICAgIGlmICghZG9jdW1lbnRFbGVtZW50
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHJvb3RT
dHlsZSA9IGRvY3VtZW50LT5lbnN1cmVTdHlsZVJlc29sdmVyKCkuc3R5bGVGb3JFbGVtZW50KGRv
Y3VtZW50RWxlbWVudCwgMCAvKmRlZmF1bHRQYXJlbnQqLywgRGlzYWxsb3dTdHlsZVNoYXJpbmcs
IE1hdGNoT25seVVzZXJBZ2VudFJ1bGVzKTsKKyAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHJvb3RT
dHlsZSA9IGRvY3VtZW50LT5lbnN1cmVTdHlsZVJlc29sdmVyKCkuc3R5bGVGb3JFbGVtZW50KGRv
Y3VtZW50RWxlbWVudCwgZG9jdW1lbnQtPnJlbmRlclN0eWxlKCksIERpc2FsbG93U3R5bGVTaGFy
aW5nLCBNYXRjaE9ubHlVc2VyQWdlbnRSdWxlcyk7CiAKICAgICBSZWZQdHI8TWVkaWFRdWVyeVNl
dD4gbWVkaWEgPSBNZWRpYVF1ZXJ5U2V0OjpjcmVhdGUoKTsKICAgICBpZiAoIW1lZGlhLT5wYXJz
ZShxdWVyeSkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCShyZXZpc2lv
biAxNjU0NjUpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTg4LDcgKzg4LDYgQEAKICNpbmNsdWRlICJNZWRpYUxpc3QuaCIKICNpbmNs
dWRlICJNZWRpYVF1ZXJ5RXZhbHVhdG9yLmgiCiAjaW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgi
Ci0jaW5jbHVkZSAiTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIK
ICNpbmNsdWRlICJQYWdlUnVsZUNvbGxlY3Rvci5oIgogI2luY2x1ZGUgIlBhaXIuaCIKQEAgLTIz
OCw3ICsyMzcsNiBAQCBpbmxpbmUgdm9pZCBTdHlsZVJlc29sdmVyOjpTdGF0ZTo6Y2xlYXIoCiAg
ICAgbV9lbGVtZW50ID0gbnVsbHB0cjsKICAgICBtX3N0eWxlZEVsZW1lbnQgPSBudWxscHRyOwog
ICAgIG1fcGFyZW50U3R5bGUgPSBudWxscHRyOwotICAgIG1fcGFyZW50Tm9kZSA9IG51bGxwdHI7
CiAgICAgbV9yZWdpb25Gb3JTdHlsaW5nID0gbnVsbHB0cjsKICAgICBtX3BlbmRpbmdJbWFnZVBy
b3BlcnRpZXMuY2xlYXIoKTsKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCkBAIC0yODUsNyArMjgz
LDcgQEAgU3R5bGVSZXNvbHZlcjo6U3R5bGVSZXNvbHZlcihEb2N1bWVudCYgZAogICAgICAgICBt
X21lZGl1bSA9IHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFRdWVyeUV2YWx1YXRvcj4oImFsbCIpOwog
CiAgICAgaWYgKHJvb3QpCi0gICAgICAgIG1fcm9vdERlZmF1bHRTdHlsZSA9IHN0eWxlRm9yRWxl
bWVudChyb290LCAwLCBEaXNhbGxvd1N0eWxlU2hhcmluZywgTWF0Y2hPbmx5VXNlckFnZW50UnVs
ZXMpOworICAgICAgICBtX3Jvb3REZWZhdWx0U3R5bGUgPSBzdHlsZUZvckVsZW1lbnQocm9vdCwg
bV9kb2N1bWVudC5yZW5kZXJTdHlsZSgpLCBEaXNhbGxvd1N0eWxlU2hhcmluZywgTWF0Y2hPbmx5
VXNlckFnZW50UnVsZXMpOwogCiAgICAgaWYgKG1fcm9vdERlZmF1bHRTdHlsZSAmJiB2aWV3KQog
ICAgICAgICBtX21lZGl1bSA9IHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFRdWVyeUV2YWx1YXRvcj4o
dmlldy0+bWVkaWFUeXBlKCksICZ2aWV3LT5mcmFtZSgpLCBtX3Jvb3REZWZhdWx0U3R5bGUuZ2V0
KCkpOwpAQCAtNDExLDE1ICs0MDksMTAgQEAgaW5saW5lIHZvaWQgU3R5bGVSZXNvbHZlcjo6U3Rh
dGU6OmluaXRGbwogICAgIG1fcmVnaW9uRm9yU3R5bGluZyA9IHJlZ2lvbkZvclN0eWxpbmc7CiAK
ICAgICBpZiAoZSkgewotICAgICAgICBtX3BhcmVudE5vZGUgPSBlLT5pc1BzZXVkb0VsZW1lbnQo
KSA/IHRvUHNldWRvRWxlbWVudChlKS0+aG9zdEVsZW1lbnQoKSA6IE5vZGVSZW5kZXJpbmdUcmF2
ZXJzYWw6OnBhcmVudChlKTsKICAgICAgICAgYm9vbCByZXNldFN0eWxlSW5oZXJpdGFuY2UgPSBo
YXNTaGFkb3dSb290UGFyZW50KCplKSAmJiB0b1NoYWRvd1Jvb3QoZS0+cGFyZW50Tm9kZSgpKS0+
cmVzZXRTdHlsZUluaGVyaXRhbmNlKCk7Ci0gICAgICAgIG1fcGFyZW50U3R5bGUgPSByZXNldFN0
eWxlSW5oZXJpdGFuY2UgPyAwIDoKLSAgICAgICAgICAgIHBhcmVudFN0eWxlID8gcGFyZW50U3R5
bGUgOgotICAgICAgICAgICAgbV9wYXJlbnROb2RlID8gbV9wYXJlbnROb2RlLT5yZW5kZXJTdHls
ZSgpIDogMDsKLSAgICB9IGVsc2UgewotICAgICAgICBtX3BhcmVudE5vZGUgPSAwOworICAgICAg
ICBtX3BhcmVudFN0eWxlID0gcmVzZXRTdHlsZUluaGVyaXRhbmNlID8gbnVsbHB0ciA6IHBhcmVu
dFN0eWxlOworICAgIH0gZWxzZQogICAgICAgICBtX3BhcmVudFN0eWxlID0gcGFyZW50U3R5bGU7
Ci0gICAgfQogCiAgICAgTm9kZSogZG9jRWxlbWVudCA9IGUgPyBlLT5kb2N1bWVudCgpLmRvY3Vt
ZW50RWxlbWVudCgpIDogMDsKICAgICBSZW5kZXJTdHlsZSogZG9jU3R5bGUgPSBkb2N1bWVudC5y
ZW5kZXJTdHlsZSgpOwpAQCAtMjEyNSwxMSArMjExOCwxMCBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6
OmFwcGx5UHJvcGVydHkoQ1NTUHJvCiAgICAgICAgIHJldHVybiBhcHBseVByb3BlcnR5KG5ld0lk
LCB2YWx1ZSk7CiAgICAgfQogCi0gICAgYm9vbCBpc0luaGVyaXQgPSBzdGF0ZS5wYXJlbnROb2Rl
KCkgJiYgdmFsdWUtPmlzSW5oZXJpdGVkVmFsdWUoKTsKLSAgICBib29sIGlzSW5pdGlhbCA9IHZh
bHVlLT5pc0luaXRpYWxWYWx1ZSgpIHx8ICghc3RhdGUucGFyZW50Tm9kZSgpICYmIHZhbHVlLT5p
c0luaGVyaXRlZFZhbHVlKCkpOworICAgIGJvb2wgaXNJbmhlcml0ID0gc3RhdGUucGFyZW50U3R5
bGUoKSAmJiB2YWx1ZS0+aXNJbmhlcml0ZWRWYWx1ZSgpOworICAgIGJvb2wgaXNJbml0aWFsID0g
dmFsdWUtPmlzSW5pdGlhbFZhbHVlKCkgfHwgKCFzdGF0ZS5wYXJlbnRTdHlsZSgpICYmIHZhbHVl
LT5pc0luaGVyaXRlZFZhbHVlKCkpOwogCiAgICAgQVNTRVJUKCFpc0luaGVyaXQgfHwgIWlzSW5p
dGlhbCk7IC8vIGlzSW5oZXJpdCAtPiAhaXNJbml0aWFsICYmIGlzSW5pdGlhbCAtPiAhaXNJbmhl
cml0Ci0gICAgQVNTRVJUKCFpc0luaGVyaXQgfHwgKHN0YXRlLnBhcmVudE5vZGUoKSAmJiBzdGF0
ZS5wYXJlbnRTdHlsZSgpKSk7IC8vIGlzSW5oZXJpdCAtPiAoc3RhdGUucGFyZW50Tm9kZSgpICYm
IHN0YXRlLnBhcmVudFN0eWxlKCkpCiAKICAgICBpZiAoIXN0YXRlLmFwcGx5UHJvcGVydHlUb1Jl
Z3VsYXJTdHlsZSgpICYmICghc3RhdGUuYXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZSgp
IHx8ICFpc1ZhbGlkVmlzaXRlZExpbmtQcm9wZXJ0eShpZCkpKSB7CiAgICAgICAgIC8vIExpbWl0
IHRoZSBwcm9wZXJ0aWVzIHRoYXQgY2FuIGJlIGFwcGxpZWQgdG8gb25seSB0aGUgb25lcyBob25v
cmVkIGJ5IDp2aXNpdGVkLgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCShyZXZp
c2lvbiAxNjU0NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDMsOCArMTQzLDggQEAgcHVibGljOgogICAgIHZvaWQgcHVzaFBhcmVu
dEVsZW1lbnQoRWxlbWVudCopOwogICAgIHZvaWQgcG9wUGFyZW50RWxlbWVudChFbGVtZW50Kik7
CiAKLSAgICBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZUZvckVsZW1lbnQoRWxlbWVudCosIFJl
bmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IDAsIFN0eWxlU2hhcmluZ0JlaGF2aW9yID0gQWxsb3dT
dHlsZVNoYXJpbmcsCi0gICAgICAgIFJ1bGVNYXRjaGluZ0JlaGF2aW9yID0gTWF0Y2hBbGxSdWxl
cywgUmVuZGVyUmVnaW9uKiByZWdpb25Gb3JTdHlsaW5nID0gMCk7CisgICAgUGFzc1JlZjxSZW5k
ZXJTdHlsZT4gc3R5bGVGb3JFbGVtZW50KEVsZW1lbnQqLCBSZW5kZXJTdHlsZSogcGFyZW50U3R5
bGUsIFN0eWxlU2hhcmluZ0JlaGF2aW9yID0gQWxsb3dTdHlsZVNoYXJpbmcsCisgICAgICAgIFJ1
bGVNYXRjaGluZ0JlaGF2aW9yID0gTWF0Y2hBbGxSdWxlcywgUmVuZGVyUmVnaW9uKiByZWdpb25G
b3JTdHlsaW5nID0gbnVsbHB0cik7CiAKICAgICB2b2lkIGtleWZyYW1lU3R5bGVzRm9yQW5pbWF0
aW9uKEVsZW1lbnQqLCBjb25zdCBSZW5kZXJTdHlsZSosIEtleWZyYW1lTGlzdCYpOwogCkBAIC0x
NTgsNyArMTU4LDYgQEAgcHVibGljOgogICAgIFJlbmRlclN0eWxlKiByb290RWxlbWVudFN0eWxl
KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5yb290RWxlbWVudFN0eWxlKCk7IH0KICAgICBFbGVt
ZW50KiBlbGVtZW50KCkgeyByZXR1cm4gbV9zdGF0ZS5lbGVtZW50KCk7IH0KICAgICBEb2N1bWVu
dCYgZG9jdW1lbnQoKSB7IHJldHVybiBtX2RvY3VtZW50OyB9Ci0gICAgYm9vbCBoYXNQYXJlbnRO
b2RlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5wYXJlbnROb2RlKCk7IH0KIAogICAgIC8vIEZJ
WE1FOiBJdCBjb3VsZCBiZSBiZXR0ZXIgdG8gY2FsbCBtX3J1bGVTZXRzLmFwcGVuZEF1dGhvclN0
eWxlU2hlZXRzKCkgZGlyZWN0bHkgYWZ0ZXIgd2UgZmFjdG9yIFN0eWxlUnNvbHZlciBmdXJ0aGVy
LgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDg4OTAK
QEAgLTMzNiw3ICszMzUsNiBAQCBwdWJsaWM6CiAgICAgICAgIFN0YXRlKCkKICAgICAgICAgOiBt
X2VsZW1lbnQoMCkKICAgICAgICAgLCBtX3N0eWxlZEVsZW1lbnQoMCkKLSAgICAgICAgLCBtX3Bh
cmVudE5vZGUoMCkKICAgICAgICAgLCBtX3BhcmVudFN0eWxlKDApCiAgICAgICAgICwgbV9yb290
RWxlbWVudFN0eWxlKDApCiAgICAgICAgICwgbV9yZWdpb25Gb3JTdHlsaW5nKDApCkBAIC0zNjEs
NyArMzU5LDYgQEAgcHVibGljOgogICAgICAgICBSZW5kZXJTdHlsZSogc3R5bGUoKSBjb25zdCB7
IHJldHVybiBtX3N0eWxlLmdldCgpOyB9CiAgICAgICAgIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHRh
a2VTdHlsZSgpIHsgcmV0dXJuIG1fc3R5bGUucmVsZWFzZU5vbk51bGwoKTsgfQogCi0gICAgICAg
IGNvbnN0IENvbnRhaW5lck5vZGUqIHBhcmVudE5vZGUoKSBjb25zdCB7IHJldHVybiBtX3BhcmVu
dE5vZGU7IH0KICAgICAgICAgdm9pZCBzZXRQYXJlbnRTdHlsZShQYXNzUmVmPFJlbmRlclN0eWxl
PiBwYXJlbnRTdHlsZSkgeyBtX3BhcmVudFN0eWxlID0gc3RkOjptb3ZlKHBhcmVudFN0eWxlKTsg
fQogICAgICAgICBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3Bh
cmVudFN0eWxlLmdldCgpOyB9CiAgICAgICAgIFJlbmRlclN0eWxlKiByb290RWxlbWVudFN0eWxl
KCkgY29uc3QgeyByZXR1cm4gbV9yb290RWxlbWVudFN0eWxlOyB9CkBAIC00MDgsNyArNDA1LDYg
QEAgcHVibGljOgogICAgICAgICBFbGVtZW50KiBtX2VsZW1lbnQ7CiAgICAgICAgIFJlZlB0cjxS
ZW5kZXJTdHlsZT4gbV9zdHlsZTsKICAgICAgICAgU3R5bGVkRWxlbWVudCogbV9zdHlsZWRFbGVt
ZW50OwotICAgICAgICBDb250YWluZXJOb2RlKiBtX3BhcmVudE5vZGU7CiAgICAgICAgIFJlZlB0
cjxSZW5kZXJTdHlsZT4gbV9wYXJlbnRTdHlsZTsKICAgICAgICAgUmVuZGVyU3R5bGUqIG1fcm9v
dEVsZW1lbnRTdHlsZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkocmV2aXNpb24gMTY1
NDY1KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzg2LDE2ICsxMzg2LDYgQEAgdm9pZCBFbGVtZW50Ojp1bnJlZ2lzdGVyTmFtZWRGbG93Q29u
dGVudAogICAgICAgICBkb2N1bWVudCgpLnJlbmRlclZpZXcoKS0+Zmxvd1RocmVhZENvbnRyb2xs
ZXIoKS51bnJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnQoKnRoaXMpOwogfQogCi1QYXNz
UmVmPFJlbmRlclN0eWxlPiBFbGVtZW50OjpzdHlsZUZvclJlbmRlcmVyKCkKLXsKLSAgICBpZiAo
aGFzQ3VzdG9tU3R5bGVSZXNvbHZlQ2FsbGJhY2tzKCkpIHsKLSAgICAgICAgaWYgKFJlZlB0cjxS
ZW5kZXJTdHlsZT4gc3R5bGUgPSBjdXN0b21TdHlsZUZvclJlbmRlcmVyKCkpCi0gICAgICAgICAg
ICByZXR1cm4gc3R5bGUucmVsZWFzZU5vbk51bGwoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZG9j
dW1lbnQoKS5lbnN1cmVTdHlsZVJlc29sdmVyKCkuc3R5bGVGb3JFbGVtZW50KHRoaXMpOwotfQot
CiBTaGFkb3dSb290KiBFbGVtZW50OjpzaGFkb3dSb290KCkgY29uc3QKIHsKICAgICByZXR1cm4g
aGFzUmFyZURhdGEoKSA/IGVsZW1lbnRSYXJlRGF0YSgpLT5zaGFkb3dSb290KCkgOiAwOwpAQCAt
Mjg5NCw3ICsyODg0LDcgQEAgdm9pZCBFbGVtZW50OjpkaWREZXRhY2hSZW5kZXJlcnMoKQogICAg
IEFTU0VSVChoYXNDdXN0b21TdHlsZVJlc29sdmVDYWxsYmFja3MoKSk7CiB9CiAKLVBhc3NSZWZQ
dHI8UmVuZGVyU3R5bGU+IEVsZW1lbnQ6OmN1c3RvbVN0eWxlRm9yUmVuZGVyZXIoKQorUGFzc1Jl
ZlB0cjxSZW5kZXJTdHlsZT4gRWxlbWVudDo6Y3VzdG9tU3R5bGVGb3JSZW5kZXJlcihSZW5kZXJT
dHlsZSYpCiB7CiAgICAgQVNTRVJUKGhhc0N1c3RvbVN0eWxlUmVzb2x2ZUNhbGxiYWNrcygpKTsK
ICAgICByZXR1cm4gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAkocmV2aXNpb24gMTY1NDY0KQor
KysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTI0LDgg
KzUyNCw2IEBAIHB1YmxpYzoKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNTcGVsbENoZWNraW5n
RW5hYmxlZCgpIGNvbnN0OwogCi0gICAgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGVGb3JSZW5k
ZXJlcigpOwotCiAgICAgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQqIHJlbmRlck5hbWVkRmxvd0Zy
YWdtZW50KCkgY29uc3Q7CiAKICNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCkBAIC01NTgsNiArNTU2
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRBdHRhY2hSZW5kZXJlcnMoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgd2lsbERldGFjaFJlbmRlcmVycygpOwogICAgIHZpcnR1YWwgdm9pZCBk
aWREZXRhY2hSZW5kZXJlcnMoKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+
IGN1c3RvbVN0eWxlRm9yUmVuZGVyZXIoUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlKTsKIAogICAg
IHZvaWQgc2V0QmVmb3JlUHNldWRvRWxlbWVudChQYXNzUmVmUHRyPFBzZXVkb0VsZW1lbnQ+KTsK
ICAgICB2b2lkIHNldEFmdGVyUHNldWRvRWxlbWVudChQYXNzUmVmUHRyPFBzZXVkb0VsZW1lbnQ+
KTsKQEAgLTU3OSw4ICs1NzgsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGNoaWxk
cmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9p
ZCByZW1vdmVBbGxFdmVudExpc3RlbmVycygpIG92ZXJyaWRlIGZpbmFsOwogCi0gICAgdmlydHVh
bCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBjdXN0b21TdHlsZUZvclJlbmRlcmVyKCk7Ci0KICAg
ICB2b2lkIGNsZWFyVGFiSW5kZXhFeHBsaWNpdGx5SWZOZWVkZWQoKTsgICAgCiAgICAgdm9pZCBz
ZXRUYWJJbmRleEV4cGxpY2l0bHkoc2hvcnQpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20v
UHNldWRvRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1BzZXVk
b0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxNjU0NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vUHNl
dWRvRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDkgKzcwLDkgQEAgUHNldWRvRWxl
bWVudDo6flBzZXVkb0VsZW1lbnQoKQogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cHNl
dWRvRWxlbWVudERlc3Ryb3llZChkb2N1bWVudCgpLnBhZ2UoKSwgdGhpcyk7CiB9CiAKLVBhc3NS
ZWZQdHI8UmVuZGVyU3R5bGU+IFBzZXVkb0VsZW1lbnQ6OmN1c3RvbVN0eWxlRm9yUmVuZGVyZXIo
KQorUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gUHNldWRvRWxlbWVudDo6Y3VzdG9tU3R5bGVGb3JS
ZW5kZXJlcihSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUpCiB7Ci0gICAgcmV0dXJuIG1faG9zdEVs
ZW1lbnQtPnJlbmRlcmVyKCktPmdldENhY2hlZFBzZXVkb1N0eWxlKG1fcHNldWRvSWQpOworICAg
IHJldHVybiBtX2hvc3RFbGVtZW50LT5yZW5kZXJlcigpLT5nZXRDYWNoZWRQc2V1ZG9TdHlsZSht
X3BzZXVkb0lkLCAmcGFyZW50U3R5bGUpOwogfQogCiB2b2lkIFBzZXVkb0VsZW1lbnQ6OmRpZEF0
dGFjaFJlbmRlcmVycygpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmgJKHJldmlz
aW9uIDE2NTQ2NCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIEVsZW1lbnQqIGhvc3RFbGVt
ZW50KCkgY29uc3QgeyByZXR1cm4gbV9ob3N0RWxlbWVudDsgfQogICAgIHZvaWQgY2xlYXJIb3N0
RWxlbWVudCgpIHsgbV9ob3N0RWxlbWVudCA9IG51bGxwdHI7IH0KIAotICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxSZW5kZXJTdHlsZT4gY3VzdG9tU3R5bGVGb3JSZW5kZXJlcigpIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gY3VzdG9tU3R5bGVGb3JSZW5kZXJl
cihSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBk
aWRBdHRhY2hSZW5kZXJlcnMoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJ
c05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlOwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHAJKHJldmlzaW9uIDE2NTQ2NCkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBIVE1MT3B0R3JvdXBFbGVtZW50OjpkaWRBdHRhY2hS
ZW5kZQogICAgIC8vIG1hbnVhbGx5IGNhY2hlIHRoZSB2YWx1ZS4gVGhpcyBoYXBwZW5zIGlmIG91
ciBwYXJlbnQgZG9lc24ndCBoYXZlIGEKICAgICAvLyByZW5kZXJlciBsaWtlIDxvcHRncm91cD4g
b3IgaWYgaXQgZG9lc24ndCBhbGxvdyBjaGlsZHJlbiBsaWtlIDxzZWxlY3Q+LgogICAgIGlmICgh
bV9zdHlsZSAmJiBwYXJlbnROb2RlKCktPnJlbmRlclN0eWxlKCkpCi0gICAgICAgIHVwZGF0ZU5v
blJlbmRlclN0eWxlKCk7CisgICAgICAgIHVwZGF0ZU5vblJlbmRlclN0eWxlKCpwYXJlbnROb2Rl
KCktPnJlbmRlclN0eWxlKCkpOwogfQogCiB2b2lkIEhUTUxPcHRHcm91cEVsZW1lbnQ6OndpbGxE
ZXRhY2hSZW5kZXJlcnMoKQpAQCAtMTA0LDkgKzEwNCw5IEBAIHZvaWQgSFRNTE9wdEdyb3VwRWxl
bWVudDo6d2lsbERldGFjaFJlbmQKICAgICBtX3N0eWxlLmNsZWFyKCk7CiB9CiAKLXZvaWQgSFRN
TE9wdEdyb3VwRWxlbWVudDo6dXBkYXRlTm9uUmVuZGVyU3R5bGUoKQordm9pZCBIVE1MT3B0R3Jv
dXBFbGVtZW50Ojp1cGRhdGVOb25SZW5kZXJTdHlsZShSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUp
CiB7Ci0gICAgbV9zdHlsZSA9IGRvY3VtZW50KCkuZW5zdXJlU3R5bGVSZXNvbHZlcigpLnN0eWxl
Rm9yRWxlbWVudCh0aGlzKTsKKyAgICBtX3N0eWxlID0gZG9jdW1lbnQoKS5lbnN1cmVTdHlsZVJl
c29sdmVyKCkuc3R5bGVGb3JFbGVtZW50KHRoaXMsICZwYXJlbnRTdHlsZSk7CiB9CiAKIFJlbmRl
clN0eWxlKiBIVE1MT3B0R3JvdXBFbGVtZW50Ojpub25SZW5kZXJlclN0eWxlKCkgY29uc3QKQEAg
LTExNCwxMSArMTE0LDExIEBAIFJlbmRlclN0eWxlKiBIVE1MT3B0R3JvdXBFbGVtZW50Ojpub25S
ZW4KICAgICByZXR1cm4gbV9zdHlsZS5nZXQoKTsKIH0KIAotUGFzc1JlZlB0cjxSZW5kZXJTdHls
ZT4gSFRNTE9wdEdyb3VwRWxlbWVudDo6Y3VzdG9tU3R5bGVGb3JSZW5kZXJlcigpCitQYXNzUmVm
UHRyPFJlbmRlclN0eWxlPiBIVE1MT3B0R3JvdXBFbGVtZW50OjpjdXN0b21TdHlsZUZvclJlbmRl
cmVyKFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSkKIHsKICAgICAvLyBzdHlsZUZvclJlbmRlcmVy
IGlzIGNhbGxlZCB3aGVuZXZlciBhIG5ldyBzdHlsZSBzaG91bGQgYmUgYXNzb2NpYXRlZAogICAg
IC8vIHdpdGggYW4gRWxlbWVudCBzbyBub3cgaXMgYSBnb29kIHRpbWUgdG8gdXBkYXRlIG91ciBj
YWNoZWQgc3R5bGUuCi0gICAgdXBkYXRlTm9uUmVuZGVyU3R5bGUoKTsKKyAgICB1cGRhdGVOb25S
ZW5kZXJTdHlsZShwYXJlbnRTdHlsZSk7CiAgICAgcmV0dXJuIG1fc3R5bGU7CiB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5oCShyZXZpc2lvbiAxNjU0
NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTQsOSArNTQsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBhY2Nl
c3NLZXlBY3Rpb24oYm9vbCBzZW5kTW91c2VFdmVudHMpIG92ZXJyaWRlOwogCiAgICAgLy8gPG9w
dGdyb3VwPiBuZXZlciBoYXMgYSByZW5kZXJlciBzbyB3ZSBtYW51YWxseSBtYW5hZ2UgYSBjYWNo
ZWQgc3R5bGUuCi0gICAgdm9pZCB1cGRhdGVOb25SZW5kZXJTdHlsZSgpOworICAgIHZvaWQgdXBk
YXRlTm9uUmVuZGVyU3R5bGUoUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlKTsKICAgICB2aXJ0dWFs
IFJlbmRlclN0eWxlKiBub25SZW5kZXJlclN0eWxlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBjdXN0b21TdHlsZUZvclJlbmRlcmVyKCkgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBjdXN0b21TdHlsZUZv
clJlbmRlcmVyKFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSkgb3ZlcnJpZGU7CiAKICAgICB2b2lk
IHJlY2FsY1NlbGVjdE9wdGlvbnMoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
T3B0aW9uRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
T3B0aW9uRWxlbWVudC5jcHAJKHJldmlzaW9uIDE2NTQ2NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NCw3ICs5NCw3IEBA
IHZvaWQgSFRNTE9wdGlvbkVsZW1lbnQ6OmRpZEF0dGFjaFJlbmRlcmUKICAgICAvLyBtYW51YWxs
eSBjYWNoZSB0aGUgdmFsdWUuIFRoaXMgaGFwcGVucyBpZiBvdXIgcGFyZW50IGRvZXNuJ3QgaGF2
ZSBhCiAgICAgLy8gcmVuZGVyZXIgbGlrZSA8b3B0Z3JvdXA+IG9yIGlmIGl0IGRvZXNuJ3QgYWxs
b3cgY2hpbGRyZW4gbGlrZSA8c2VsZWN0Pi4KICAgICBpZiAoIW1fc3R5bGUgJiYgcGFyZW50Tm9k
ZSgpLT5yZW5kZXJTdHlsZSgpKQotICAgICAgICB1cGRhdGVOb25SZW5kZXJTdHlsZSgpOworICAg
ICAgICB1cGRhdGVOb25SZW5kZXJTdHlsZSgqcGFyZW50Tm9kZSgpLT5yZW5kZXJTdHlsZSgpKTsK
IH0KIAogdm9pZCBIVE1MT3B0aW9uRWxlbWVudDo6d2lsbERldGFjaFJlbmRlcmVycygpCkBAIC0z
MDAsOSArMzAwLDkgQEAgdm9pZCBIVE1MT3B0aW9uRWxlbWVudDo6c2V0TGFiZWwoY29uc3QgUwog
ICAgIHNldEF0dHJpYnV0ZShsYWJlbEF0dHIsIGxhYmVsKTsKIH0KIAotdm9pZCBIVE1MT3B0aW9u
RWxlbWVudDo6dXBkYXRlTm9uUmVuZGVyU3R5bGUoKQordm9pZCBIVE1MT3B0aW9uRWxlbWVudDo6
dXBkYXRlTm9uUmVuZGVyU3R5bGUoUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlKQogewotICAgIG1f
c3R5bGUgPSBkb2N1bWVudCgpLmVuc3VyZVN0eWxlUmVzb2x2ZXIoKS5zdHlsZUZvckVsZW1lbnQo
dGhpcyk7CisgICAgbV9zdHlsZSA9IGRvY3VtZW50KCkuZW5zdXJlU3R5bGVSZXNvbHZlcigpLnN0
eWxlRm9yRWxlbWVudCh0aGlzLCAmcGFyZW50U3R5bGUpOwogfQogCiBSZW5kZXJTdHlsZSogSFRN
TE9wdGlvbkVsZW1lbnQ6Om5vblJlbmRlcmVyU3R5bGUoKSBjb25zdApAQCAtMzEwLDExICszMTAs
MTEgQEAgUmVuZGVyU3R5bGUqIEhUTUxPcHRpb25FbGVtZW50Ojpub25SZW5kZQogICAgIHJldHVy
biBtX3N0eWxlLmdldCgpOwogfQogCi1QYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBIVE1MT3B0aW9u
RWxlbWVudDo6Y3VzdG9tU3R5bGVGb3JSZW5kZXJlcigpCitQYXNzUmVmUHRyPFJlbmRlclN0eWxl
PiBIVE1MT3B0aW9uRWxlbWVudDo6Y3VzdG9tU3R5bGVGb3JSZW5kZXJlcihSZW5kZXJTdHlsZSYg
cGFyZW50U3R5bGUpCiB7CiAgICAgLy8gc3R5bGVGb3JSZW5kZXJlciBpcyBjYWxsZWQgd2hlbmV2
ZXIgYSBuZXcgc3R5bGUgc2hvdWxkIGJlIGFzc29jaWF0ZWQKICAgICAvLyB3aXRoIGFuIEVsZW1l
bnQgc28gbm93IGlzIGEgZ29vZCB0aW1lIHRvIHVwZGF0ZSBvdXIgY2FjaGVkIHN0eWxlLgotICAg
IHVwZGF0ZU5vblJlbmRlclN0eWxlKCk7CisgICAgdXBkYXRlTm9uUmVuZGVyU3R5bGUocGFyZW50
U3R5bGUpOwogICAgIHJldHVybiBtX3N0eWxlOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPcHRpb25FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT3B0aW9uRWxlbWVudC5oCShyZXZpc2lvbiAxNjU0NjQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDkgKzgyLDkg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxk
Q2hhbmdlJikgb3ZlcnJpZGU7CiAKICAgICAvLyA8b3B0aW9uPiBuZXZlciBoYXMgYSByZW5kZXJl
ciBzbyB3ZSBtYW51YWxseSBtYW5hZ2UgYSBjYWNoZWQgc3R5bGUuCi0gICAgdm9pZCB1cGRhdGVO
b25SZW5kZXJTdHlsZSgpOworICAgIHZvaWQgdXBkYXRlTm9uUmVuZGVyU3R5bGUoUmVuZGVyU3R5
bGUmIHBhcmVudFN0eWxlKTsKICAgICB2aXJ0dWFsIFJlbmRlclN0eWxlKiBub25SZW5kZXJlclN0
eWxlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFJlbmRlclN0eWxl
PiBjdXN0b21TdHlsZUZvclJlbmRlcmVyKCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBQYXNzUmVm
UHRyPFJlbmRlclN0eWxlPiBjdXN0b21TdHlsZUZvclJlbmRlcmVyKFJlbmRlclN0eWxlJiBwYXJl
bnRTdHlsZSkgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjYWxjU3R5bGUoU3R5
bGU6OkNoYW5nZSkgb3ZlcnJpZGU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRp
dGxlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGl0
bGVFbGVtZW50LmNwcAkocmV2aXNpb24gMTY1NDY0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGl0bGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2lu
Y2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAi
U3R5bGVJbmhlcml0ZWREYXRhLmgiCisjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgogI2luY2x1
ZGUgIlRleHQuaCIKICNpbmNsdWRlICJUZXh0Tm9kZVRyYXZlcnNhbC5oIgogI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KQEAgLTg1LDcgKzg2LDcgQEAgU3RyaW5nV2l0aERpcmVjdGlvbiBIVE1MVGl0bGVF
bGVtZW50Ojp0ZQogICAgIGlmIChSZW5kZXJTdHlsZSogY29tcHV0ZWRTdHlsZSA9IHRoaXMtPmNv
bXB1dGVkU3R5bGUoKSkKICAgICAgICAgZGlyZWN0aW9uID0gY29tcHV0ZWRTdHlsZS0+ZGlyZWN0
aW9uKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIFJlZjxSZW5kZXJTdHlsZT4gc3R5bGUoc3R5bGVG
b3JSZW5kZXJlcigpKTsKKyAgICAgICAgUmVmPFJlbmRlclN0eWxlPiBzdHlsZShkb2N1bWVudCgp
LmVuc3VyZVN0eWxlUmVzb2x2ZXIoKS5zdHlsZUZvckVsZW1lbnQodGhpcywgcGFyZW50RWxlbWVu
dCgpID8gcGFyZW50RWxlbWVudCgpLT5yZW5kZXJTdHlsZSgpIDogbnVsbHB0cikpOwogICAgICAg
ICBkaXJlY3Rpb24gPSBzdHlsZS5nZXQoKS5kaXJlY3Rpb24oKTsKICAgICB9CiAgICAgcmV0dXJu
IFN0cmluZ1dpdGhEaXJlY3Rpb24odGV4dCgpLCBkaXJlY3Rpb24pOwpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMu
Y3BwCShyZXZpc2lvbiAxNjU0NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0
Q29udHJvbElubmVyRWxlbWVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBA
IFBhc3NSZWZQdHI8VGV4dENvbnRyb2xJbm5lckVsZW1lbnQ+IFRleHQKICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFRleHRDb250cm9sSW5uZXJFbGVtZW50KGRvY3VtZW50KSk7CiB9CiAKLVBhc3NS
ZWZQdHI8UmVuZGVyU3R5bGU+IFRleHRDb250cm9sSW5uZXJFbGVtZW50OjpjdXN0b21TdHlsZUZv
clJlbmRlcmVyKCkKK1Bhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IFRleHRDb250cm9sSW5uZXJFbGVt
ZW50OjpjdXN0b21TdHlsZUZvclJlbmRlcmVyKFJlbmRlclN0eWxlJikKIHsKICAgICBSZW5kZXJU
ZXh0Q29udHJvbFNpbmdsZUxpbmUqIHBhcmVudFJlbmRlcmVyID0gdG9SZW5kZXJUZXh0Q29udHJv
bFNpbmdsZUxpbmUoc2hhZG93SG9zdCgpLT5yZW5kZXJlcigpKTsKICAgICByZXR1cm4gcGFyZW50
UmVuZGVyZXItPmNyZWF0ZUlubmVyQmxvY2tTdHlsZSgmcGFyZW50UmVuZGVyZXItPnN0eWxlKCkp
OwpAQCAtMTIyLDcgKzEyMiw3IEBAIFJlbmRlclRleHRDb250cm9sSW5uZXJCbG9jayogVGV4dENv
bnRyb2wKICAgICByZXR1cm4gdG9SZW5kZXJUZXh0Q29udHJvbElubmVyQmxvY2soSFRNTERpdkVs
ZW1lbnQ6OnJlbmRlcmVyKCkpOwogfQogCi1QYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBUZXh0Q29u
dHJvbElubmVyVGV4dEVsZW1lbnQ6OmN1c3RvbVN0eWxlRm9yUmVuZGVyZXIoKQorUGFzc1JlZlB0
cjxSZW5kZXJTdHlsZT4gVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50OjpjdXN0b21TdHlsZUZv
clJlbmRlcmVyKFJlbmRlclN0eWxlJikKIHsKICAgICBSZW5kZXJUZXh0Q29udHJvbCogcGFyZW50
UmVuZGVyZXIgPSB0b1JlbmRlclRleHRDb250cm9sKHNoYWRvd0hvc3QoKS0+cmVuZGVyZXIoKSk7
CiAgICAgcmV0dXJuIHBhcmVudFJlbmRlcmVyLT5jcmVhdGVJbm5lclRleHRTdHlsZSgmcGFyZW50
UmVuZGVyZXItPnN0eWxlKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4
dENvbnRyb2xJbm5lckVsZW1lbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgJKHJldmlzaW9uIDE2NTQ2NCkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oCSh3
b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAg
IFRleHRDb250cm9sSW5uZXJFbGVtZW50KERvY3VtZW50Jik7Ci0gICAgdmlydHVhbCBQYXNzUmVm
UHRyPFJlbmRlclN0eWxlPiBjdXN0b21TdHlsZUZvclJlbmRlcmVyKCkgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBjdXN0b21TdHlsZUZvclJlbmRlcmVyKFJl
bmRlclN0eWxlJiBwYXJlbnRTdHlsZSkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgdmlydHVh
bCBib29sIGlzTW91c2VGb2N1c2FibGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQpAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFRleHRDb250cm9sSW5u
ZXJUZXh0RWxlbWVudChEb2N1bWVudCYpOwogICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBjdXN0b21TdHlsZUZvclJl
bmRlcmVyKCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBj
dXN0b21TdHlsZUZvclJlbmRlcmVyKFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSkgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCBib29sIGlzTW91c2VGb2N1c2FibGUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1RleHRDb250cm9sSW5uZXJUZXh0RWxl
bWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIH07CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5jcHAJ
KHJldmlzaW9uIDE2NTQ2NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1l
ZEZsb3dGcmFnbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs
dWRlICJQYWludEluZm8uaCIKICNpbmNsdWRlICJSZW5kZXJCb3hSZWdpb25JbmZvLmgiCiAjaW5j
bHVkZSAiUmVuZGVyRmxvd1RocmVhZC5oIgorI2luY2x1ZGUgIlJlbmRlckl0ZXJhdG9yLmgiCiAj
aW5jbHVkZSAiUmVuZGVyTmFtZWRGbG93VGhyZWFkLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5o
IgogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKQEAgLTM0OSwyNCArMzUwLDIxIEBAIHZvaWQg
UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OmNoZWNrUmVnaW8KICAgICB0b1JlbmRlck5hbWVkRmxv
d1RocmVhZChtX2Zsb3dUaHJlYWQpLT5jaGVja1JlZ2lvbnNXaXRoU3R5bGluZygpOwogfQogCi1Q
YXNzUmVmUHRyPFJlbmRlclN0eWxlPiBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6Y29tcHV0ZVN0
eWxlSW5SZWdpb24oY29uc3QgUmVuZGVyT2JqZWN0KiBvYmplY3QpCitQYXNzUmVmUHRyPFJlbmRl
clN0eWxlPiBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6Y29tcHV0ZVN0eWxlSW5SZWdpb24oUmVu
ZGVyRWxlbWVudCYgcmVuZGVyZXIsIFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSkKIHsKLSAgICBB
U1NFUlQob2JqZWN0KTsKLSAgICBBU1NFUlQoIW9iamVjdC0+aXNBbm9ueW1vdXMoKSk7Ci0gICAg
QVNTRVJUKG9iamVjdC0+bm9kZSgpICYmIG9iamVjdC0+bm9kZSgpLT5pc0VsZW1lbnROb2RlKCkp
OworICAgIEFTU0VSVCghcmVuZGVyZXIuaXNBbm9ueW1vdXMoKSk7CiAKICAgICAvLyBGSVhNRTog
UmVnaW9uIHN0eWxpbmcgZmFpbHMgZm9yIHBzZXVkby1lbGVtZW50cyBiZWNhdXNlIHRoZSByZW5k
ZXJlcnMgZG9uJ3QgaGF2ZSBhIG5vZGUuCi0gICAgRWxlbWVudCogZWxlbWVudCA9IHRvRWxlbWVu
dChvYmplY3QtPm5vZGUoKSk7Ci0gICAgUmVmUHRyPFJlbmRlclN0eWxlPiByZW5kZXJPYmplY3RS
ZWdpb25TdHlsZSA9IG9iamVjdC0+dmlldygpLmRvY3VtZW50KCkuZW5zdXJlU3R5bGVSZXNvbHZl
cigpLnN0eWxlRm9yRWxlbWVudChlbGVtZW50LCAwLCBEaXNhbGxvd1N0eWxlU2hhcmluZywgTWF0
Y2hBbGxSdWxlcywgdGhpcyk7CisgICAgUmVmUHRyPFJlbmRlclN0eWxlPiByZW5kZXJPYmplY3RS
ZWdpb25TdHlsZSA9IHJlbmRlcmVyLnZpZXcoKS5kb2N1bWVudCgpLmVuc3VyZVN0eWxlUmVzb2x2
ZXIoKS5zdHlsZUZvckVsZW1lbnQocmVuZGVyZXIuZWxlbWVudCgpLCAmcGFyZW50U3R5bGUsIERp
c2FsbG93U3R5bGVTaGFyaW5nLCBNYXRjaEFsbFJ1bGVzLCB0aGlzKTsKIAogICAgIHJldHVybiBy
ZW5kZXJPYmplY3RSZWdpb25TdHlsZS5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgUmVuZGVyTmFtZWRG
bG93RnJhZ21lbnQ6OmNvbXB1dGVDaGlsZHJlblN0eWxlSW5SZWdpb24oY29uc3QgUmVuZGVyRWxl
bWVudCogb2JqZWN0KQordm9pZCBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6Y29tcHV0ZUNoaWxk
cmVuU3R5bGVJblJlZ2lvbihSZW5kZXJFbGVtZW50JiByZW5kZXJlcikKIHsKLSAgICBmb3IgKFJl
bmRlck9iamVjdCogY2hpbGQgPSBvYmplY3QtPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0g
Y2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKKyAgICBmb3IgKGF1dG8mIGNoaWxkIDogY2hpbGRyZW5P
ZlR5cGU8UmVuZGVyT2JqZWN0PihyZW5kZXJlcikpIHsKIAotICAgICAgICBhdXRvIGl0ID0gbV9y
ZW5kZXJPYmplY3RSZWdpb25TdHlsZS5maW5kKGNoaWxkKTsKKyAgICAgICAgYXV0byBpdCA9IG1f
cmVuZGVyT2JqZWN0UmVnaW9uU3R5bGUuZmluZCgmY2hpbGQpOwogCiAgICAgICAgIFJlZlB0cjxS
ZW5kZXJTdHlsZT4gY2hpbGRTdHlsZUluUmVnaW9uOwogICAgICAgICBib29sIG9iamVjdFJlZ2lv
blN0eWxlQ2FjaGVkID0gZmFsc2U7CkBAIC0zNzQsMTcgKzM3MiwxNyBAQCB2b2lkIFJlbmRlck5h
bWVkRmxvd0ZyYWdtZW50Ojpjb21wdXRlQ2hpCiAgICAgICAgICAgICBjaGlsZFN0eWxlSW5SZWdp
b24gPSBpdC0+dmFsdWUuc3R5bGU7CiAgICAgICAgICAgICBvYmplY3RSZWdpb25TdHlsZUNhY2hl
ZCA9IHRydWU7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoY2hpbGQtPmlzQW5v
bnltb3VzKCkgfHwgY2hpbGQtPmlzSW5GbG93UmVuZGVyRmxvd1RocmVhZCgpKQotICAgICAgICAg
ICAgICAgIGNoaWxkU3R5bGVJblJlZ2lvbiA9IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNT
dHlsZVdpdGhEaXNwbGF5KCZvYmplY3QtPnN0eWxlKCksIGNoaWxkLT5zdHlsZSgpLmRpc3BsYXko
KSk7Ci0gICAgICAgICAgICBlbHNlIGlmIChjaGlsZC0+aXNUZXh0KCkpCi0gICAgICAgICAgICAg
ICAgY2hpbGRTdHlsZUluUmVnaW9uID0gUmVuZGVyU3R5bGU6OmNsb25lKCZvYmplY3QtPnN0eWxl
KCkpOworICAgICAgICAgICAgaWYgKGNoaWxkLmlzQW5vbnltb3VzKCkgfHwgY2hpbGQuaXNJbkZs
b3dSZW5kZXJGbG93VGhyZWFkKCkpCisgICAgICAgICAgICAgICAgY2hpbGRTdHlsZUluUmVnaW9u
ID0gUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoJnJlbmRlcmVy
LnN0eWxlKCksIGNoaWxkLnN0eWxlKCkuZGlzcGxheSgpKTsKKyAgICAgICAgICAgIGVsc2UgaWYg
KGNoaWxkLmlzVGV4dCgpKQorICAgICAgICAgICAgICAgIGNoaWxkU3R5bGVJblJlZ2lvbiA9IFJl
bmRlclN0eWxlOjpjbG9uZSgmcmVuZGVyZXIuc3R5bGUoKSk7CiAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgY2hpbGRTdHlsZUluUmVnaW9uID0gY29tcHV0ZVN0eWxlSW5SZWdpb24o
Y2hpbGQpOworICAgICAgICAgICAgICAgIGNoaWxkU3R5bGVJblJlZ2lvbiA9IGNvbXB1dGVTdHls
ZUluUmVnaW9uKHRvUmVuZGVyRWxlbWVudChjaGlsZCksIHJlbmRlcmVyLnN0eWxlKCkpOwogICAg
ICAgICB9CiAKLSAgICAgICAgc2V0T2JqZWN0U3R5bGVJblJlZ2lvbihjaGlsZCwgY2hpbGRTdHls
ZUluUmVnaW9uLCBvYmplY3RSZWdpb25TdHlsZUNhY2hlZCk7CisgICAgICAgIHNldE9iamVjdFN0
eWxlSW5SZWdpb24oJmNoaWxkLCBjaGlsZFN0eWxlSW5SZWdpb24sIG9iamVjdFJlZ2lvblN0eWxl
Q2FjaGVkKTsKIAotICAgICAgICBpZiAoY2hpbGQtPmlzUmVuZGVyRWxlbWVudCgpKQorICAgICAg
ICBpZiAoY2hpbGQuaXNSZW5kZXJFbGVtZW50KCkpCiAgICAgICAgICAgICBjb21wdXRlQ2hpbGRy
ZW5TdHlsZUluUmVnaW9uKHRvUmVuZGVyRWxlbWVudChjaGlsZCkpOwogICAgIH0KIH0KQEAgLTQ1
MiwxMSArNDUwLDExIEBAIHZvaWQgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OnNldFJlZ2lvbk8K
ICAgICAgICAgICAgIEFTU0VSVChpdC0+dmFsdWUuY2FjaGVkKTsKICAgICAgICAgICAgIG9iamVj
dFJlZ2lvblN0eWxlQ2FjaGVkID0gdHJ1ZTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBv
YmplY3RTdHlsZUluUmVnaW9uID0gY29tcHV0ZVN0eWxlSW5SZWdpb24ob2JqZWN0KTsKKyAgICAg
ICAgICAgIG9iamVjdFN0eWxlSW5SZWdpb24gPSBjb21wdXRlU3R5bGVJblJlZ2lvbigqb2JqZWN0
LCBzdHlsZSgpKTsKIAogICAgICAgICBzZXRPYmplY3RTdHlsZUluUmVnaW9uKG9iamVjdCwgb2Jq
ZWN0U3R5bGVJblJlZ2lvbiwgb2JqZWN0UmVnaW9uU3R5bGVDYWNoZWQpOwogCi0gICAgICAgIGNv
bXB1dGVDaGlsZHJlblN0eWxlSW5SZWdpb24ob2JqZWN0KTsKKyAgICAgICAgY29tcHV0ZUNoaWxk
cmVuU3R5bGVJblJlZ2lvbigqb2JqZWN0KTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5oCShyZXZpc2lv
biAxNjU0NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJh
Z21lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDggKzEyMiw4IEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gIlJlbmRlck5hbWVkRmxvd0ZyYWdtZW50IjsgfQogCi0gICAgUGFzc1JlZlB0cjxS
ZW5kZXJTdHlsZT4gY29tcHV0ZVN0eWxlSW5SZWdpb24oY29uc3QgUmVuZGVyT2JqZWN0Kik7Ci0g
ICAgdm9pZCBjb21wdXRlQ2hpbGRyZW5TdHlsZUluUmVnaW9uKGNvbnN0IFJlbmRlckVsZW1lbnQq
KTsKKyAgICBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBjb21wdXRlU3R5bGVJblJlZ2lvbihSZW5k
ZXJFbGVtZW50JiwgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlKTsKKyAgICB2b2lkIGNvbXB1dGVD
aGlsZHJlblN0eWxlSW5SZWdpb24oUmVuZGVyRWxlbWVudCYpOwogICAgIHZvaWQgc2V0T2JqZWN0
U3R5bGVJblJlZ2lvbihSZW5kZXJPYmplY3QqLCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiwgYm9v
bCBvYmplY3RSZWdpb25TdHlsZUNhY2hlZCk7CiAKICAgICB2b2lkIHVwZGF0ZVJlZ2lvbkhhc0F1
dG9Mb2dpY2FsSGVpZ2h0RmxhZygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVS
ZXNvbHZlVHJlZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVS
ZXNvbHZlVHJlZS5jcHAJKHJldmlzaW9uIDE2NTQ2NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N0eWxl
L1N0eWxlUmVzb2x2ZVRyZWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjMsNiArMTYzLDE1IEBA
IHN0YXRpYyBib29sIHNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IEUKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAorc3RhdGljIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlRm9yRWxlbWVudChFbGVt
ZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUpCit7CisgICAgaWYgKGVsZW1l
bnQuaGFzQ3VzdG9tU3R5bGVSZXNvbHZlQ2FsbGJhY2tzKCkpIHsKKyAgICAgICAgaWYgKFJlZlB0
cjxSZW5kZXJTdHlsZT4gc3R5bGUgPSBlbGVtZW50LmN1c3RvbVN0eWxlRm9yUmVuZGVyZXIocGFy
ZW50U3R5bGUpKQorICAgICAgICAgICAgcmV0dXJuIHN0eWxlLnJlbGVhc2VOb25OdWxsKCk7Cisg
ICAgfQorICAgIHJldHVybiBlbGVtZW50LmRvY3VtZW50KCkuZW5zdXJlU3R5bGVSZXNvbHZlcigp
LnN0eWxlRm9yRWxlbWVudCgmZWxlbWVudCwgJnBhcmVudFN0eWxlKTsKK30KKwogLy8gQ2hlY2sg
dGhlIHNwZWNpZmljIGNhc2Ugb2YgZWxlbWVudHMgdGhhdCBhcmUgY2hpbGRyZW4gb2YgcmVnaW9u
cyBidXQgYXJlIGZsb3dlZCBpbnRvIGEgZmxvdyB0aHJlYWQgdGhlbXNlbHZlcy4KIHN0YXRpYyBi
b29sIGVsZW1lbnRJbnNpZGVSZWdpb25OZWVkc1JlbmRlcmVyKEVsZW1lbnQmIGVsZW1lbnQsIGNv
bnN0IENvbnRhaW5lck5vZGUmIHJlbmRlcmluZ1BhcmVudE5vZGUsIFJlZlB0cjxSZW5kZXJTdHls
ZT4mIHN0eWxlKQogewpAQCAtMTc2LDcgKzE4NSw3IEBAIHN0YXRpYyBib29sIGVsZW1lbnRJbnNp
ZGVSZWdpb25OZWVkc1JlbmQKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFzdHls
ZSkKLSAgICAgICAgc3R5bGUgPSBlbGVtZW50LnN0eWxlRm9yUmVuZGVyZXIoKTsKKyAgICAgICAg
c3R5bGUgPSBzdHlsZUZvckVsZW1lbnQoZWxlbWVudCwgKnJlbmRlcmluZ1BhcmVudE5vZGUucmVu
ZGVyU3R5bGUoKSk7CiAKICAgICAvLyBDaGlsZHJlbiBvZiB0aGlzIGVsZW1lbnQgd2lsbCBvbmx5
IGJlIGFsbG93ZWQgdG8gYmUgZmxvd2VkIGludG8gb3RoZXIgZmxvdy10aHJlYWRzIGlmIGRpc3Bs
YXkgaXMgTk9UIG5vbmUuCiAgICAgaWYgKGVsZW1lbnQucmVuZGVyZXJJc05lZWRlZCgqc3R5bGUp
KQpAQCAtMjE2LDcgKzIyNSw3IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZVJlbmRlcmVySWZOZWVkZWQo
RWxlbWUKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFzdHlsZSkKLSAgICAgICAgc3R5bGUg
PSBlbGVtZW50LnN0eWxlRm9yUmVuZGVyZXIoKTsKKyAgICAgICAgc3R5bGUgPSBzdHlsZUZvckVs
ZW1lbnQoZWxlbWVudCwgKnJlbmRlcmluZ1BhcmVudE5vZGUucmVuZGVyU3R5bGUoKSk7CiAKICAg
ICBSZW5kZXJOYW1lZEZsb3dUaHJlYWQqIHBhcmVudEZsb3dSZW5kZXJlciA9IDA7CiAjaWYgRU5B
QkxFKENTU19SRUdJT05TKQpAQCAtNjYxLDcgKzY3MCw3IEBAIHN0YXRpYyBDaGFuZ2UgcmVzb2x2
ZUxvY2FsKEVsZW1lbnQmIGN1cnIKIAogICAgIERvY3VtZW50JiBkb2N1bWVudCA9IGN1cnJlbnQu
ZG9jdW1lbnQoKTsKICAgICBpZiAoY3VycmVudFN0eWxlICYmIGN1cnJlbnQuc3R5bGVDaGFuZ2VU
eXBlKCkgIT0gUmVjb25zdHJ1Y3RSZW5kZXJUcmVlKSB7Ci0gICAgICAgIG5ld1N0eWxlID0gY3Vy
cmVudC5zdHlsZUZvclJlbmRlcmVyKCk7CisgICAgICAgIG5ld1N0eWxlID0gc3R5bGVGb3JFbGVt
ZW50KGN1cnJlbnQsICpyZW5kZXJpbmdQYXJlbnROb2RlLnJlbmRlclN0eWxlKCkpOwogICAgICAg
ICBsb2NhbENoYW5nZSA9IGRldGVybWluZUNoYW5nZShjdXJyZW50U3R5bGUuZ2V0KCksIG5ld1N0
eWxlLmdldCgpKTsKICAgICB9CiAgICAgaWYgKGxvY2FsQ2hhbmdlID09IERldGFjaCkgewpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAkocmV2aXNpb24gMTY1NDY0KQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NjgsMTggKzc2
OCwxMiBAQCB2b2lkIFNWR0VsZW1lbnQ6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhCiAgICAgY29u
dGV4dEVsZW1lbnQtPnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UoKTsKIH0KIAotUGFzc1JlZlB0
cjxSZW5kZXJTdHlsZT4gU1ZHRWxlbWVudDo6Y3VzdG9tU3R5bGVGb3JSZW5kZXJlcigpCitQYXNz
UmVmUHRyPFJlbmRlclN0eWxlPiBTVkdFbGVtZW50OjpjdXN0b21TdHlsZUZvclJlbmRlcmVyKFJl
bmRlclN0eWxlJiBwYXJlbnRTdHlsZSkKIHsKICAgICBpZiAoIWNvcnJlc3BvbmRpbmdFbGVtZW50
KCkpCi0gICAgICAgIHJldHVybiBkb2N1bWVudCgpLmVuc3VyZVN0eWxlUmVzb2x2ZXIoKS5zdHls
ZUZvckVsZW1lbnQodGhpcyk7CisgICAgICAgIHJldHVybiBkb2N1bWVudCgpLmVuc3VyZVN0eWxl
UmVzb2x2ZXIoKS5zdHlsZUZvckVsZW1lbnQodGhpcywgJnBhcmVudFN0eWxlKTsKIAotICAgIFJl
bmRlclN0eWxlKiBzdHlsZSA9IDA7Ci0gICAgaWYgKEVsZW1lbnQqIHBhcmVudCA9IHBhcmVudE9y
U2hhZG93SG9zdEVsZW1lbnQoKSkgewotICAgICAgICBpZiAoYXV0byByZW5kZXJlciA9IHBhcmVu
dC0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAgIHN0eWxlID0gJnJlbmRlcmVyLT5zdHlsZSgpOwot
ICAgIH0KLQotICAgIHJldHVybiBkb2N1bWVudCgpLmVuc3VyZVN0eWxlUmVzb2x2ZXIoKS5zdHls
ZUZvckVsZW1lbnQoY29ycmVzcG9uZGluZ0VsZW1lbnQoKSwgc3R5bGUsIERpc2FsbG93U3R5bGVT
aGFyaW5nKTsKKyAgICByZXR1cm4gZG9jdW1lbnQoKS5lbnN1cmVTdHlsZVJlc29sdmVyKCkuc3R5
bGVGb3JFbGVtZW50KGNvcnJlc3BvbmRpbmdFbGVtZW50KCksICZwYXJlbnRTdHlsZSwgRGlzYWxs
b3dTdHlsZVNoYXJpbmcpOwogfQogCiBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzKiBTVkdFbGVtZW50
OjphbmltYXRlZFNNSUxTdHlsZVByb3BlcnRpZXMoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RWxlbWVudC5oCShyZXZpc2lvbiAxNjU0NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsNyArMTEyLDcgQEAgcHVibGljOgogICAgIHZv
aWQgc3luY2hyb25pemVBbmltYXRlZFNWR0F0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikg
Y29uc3Q7CiAgICAgc3RhdGljIHZvaWQgc3luY2hyb25pemVBbGxBbmltYXRlZFNWR0F0dHJpYnV0
ZShTVkdFbGVtZW50Kik7CiAgCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBj
dXN0b21TdHlsZUZvclJlbmRlcmVyKCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBQYXNzUmVmUHRy
PFJlbmRlclN0eWxlPiBjdXN0b21TdHlsZUZvclJlbmRlcmVyKFJlbmRlclN0eWxlJiBwYXJlbnRT
dHlsZSkgb3ZlcnJpZGU7CiAKICAgICBzdGF0aWMgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRmVh
dHVyZXMoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpOwogICAgIHN0YXRpYyB2b2lkIHN5bmNo
cm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KTsK
</data>
<flag name="review"
          id="250837"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>