<?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>202562</bug_id>
          
          <creation_ts>2019-10-03 22:39:56 -0700</creation_ts>
          <short_desc>Node::ref/deref should be const</short_desc>
          <delta_ts>2019-10-06 02:58:14 -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>DOM</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1576727</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-10-03 22:39:56 -0700</bug_when>
    <thetext>So you can have RefPtr&lt;const Element&gt;. This matches RefCounted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576728</commentid>
    <comment_count>1</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-10-03 22:41:38 -0700</bug_when>
    <thetext>Makes sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576785</commentid>
    <comment_count>2</comment_count>
      <attachid>380203</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-10-04 02:22:14 -0700</bug_when>
    <thetext>Created attachment 380203
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576939</commentid>
    <comment_count>3</comment_count>
      <attachid>380203</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-10-04 11:57:38 -0700</bug_when>
    <thetext>Comment on attachment 380203
patch

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

&gt; Source/WebCore/css/ElementRuleCollector.h:105
&gt; +    RefPtr&lt;const Element&gt; m_shadowHostInPartRuleScope { nullptr };

No need for { ~ }.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577243</commentid>
    <comment_count>4</comment_count>
      <attachid>380293</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-10-06 02:14:00 -0700</bug_when>
    <thetext>Created attachment 380293
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577244</commentid>
    <comment_count>5</comment_count>
      <attachid>380293</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-06 02:57:48 -0700</bug_when>
    <thetext>Comment on attachment 380293
patch

Clearing flags on attachment: 380293

Committed r250768: &lt;https://trac.webkit.org/changeset/250768&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577245</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-06 02:57:50 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577246</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-06 02:58:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/56015817&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380203</attachid>
            <date>2019-10-04 02:22:14 -0700</date>
            <delta_ts>2019-10-06 02:14:00 -0700</delta_ts>
            <desc>patch</desc>
            <filename>node-const-ref.patch</filename>
            <type>text/plain</type>
            <size>17333</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0NDU4ZWRhODk0OC4uYTkyOTEwYzQwZjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNSBAQAorMjAxOS0xMC0wNCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+
CisKKyAgICAgICAgTm9kZTo6cmVmL2RlcmVmIHNob3VsZCBiZSBjb25zdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyNTYyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBlbmFibGVzIFJlZlB0cjxj
b25zdCBFbGVtZW50PiBhbmQgbWF0Y2hlcyBSZWZDb3VudGVkLgorCisgICAgICAgICogY3NzL0Vs
ZW1lbnRSdWxlQ29sbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSdWxlQ29s
bGVjdG9yOjpjb2xsZWN0TWF0Y2hpbmdSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
UnVsZUNvbGxlY3Rvcjo6bWF0Y2hBdXRob3JSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hBdXRob3JTaGFkb3dQc2V1ZG9FbGVtZW50UnVsZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6Om1hdGNoSG9zdFBzZXVkb0Ns
YXNzUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6Om1hdGNo
U2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UnVs
ZUNvbGxlY3Rvcjo6bWF0Y2hQYXJ0UHNldWRvRWxlbWVudFJ1bGVzKToKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjpjb2xsZWN0TWF0Y2hpbmdTaGFkb3dQc2V1ZG9FbGVt
ZW50UnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6OmNvbGxl
Y3RTbG90dGVkUHNldWRvRWxlbWVudFJ1bGVzRm9yU2xvdCk6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hVQVJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnRSdWxlQ29sbGVjdG9yOjpydWxlTWF0Y2hlcyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hBbGxSdWxlcyk6CisKKyAgICAgICAgVXNlIGl0IHRvIHJl
ZiBlbGVtZW50cyBpbiBFbGVtZW50UnVsZUNvbGxlY3Rvci4KKworICAgICAgICAqIGNzcy9FbGVt
ZW50UnVsZUNvbGxlY3Rvci5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJ1bGVDb2xsZWN0
b3I6OmVsZW1lbnQgY29uc3QpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlOjpyZWYgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6ZGVyZWYgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmVmKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGU6OmRlcmVmKTogRGVsZXRlZC4KKwogMjAxOS0xMC0wNCAgQW50dGkgS29pdmlz
dG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgW0NTUyBTaGFkb3cgUGFydHNdIFN1cHBv
cnQgJ2V4cG9ydHBhcnRzJyBhdHRyaWJ1dGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1
bGVDb2xsZWN0b3IuY3BwCmluZGV4IDIwN2NiNTMxZmM5Li4wYzJmNDYwYjkxZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwCkBAIC0xNDIsMjUgKzE0Miwy
NSBAQCB2b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjpjb2xsZWN0TWF0Y2hpbmdSdWxlcyhjb25z
dCBNYXRjaFJlcXVlc3QmIG1hdGNoUmVxdWVzdAogICAgIEFTU0VSVChtYXRjaFJlcXVlc3QucnVs
ZVNldCk7CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghKG1fbW9kZSA9PSBTZWxlY3RvckNoZWNr
ZXI6Ok1vZGU6OkNvbGxlY3RpbmdSdWxlc0lnbm9yaW5nVmlydHVhbFBzZXVkb0VsZW1lbnRzICYm
IG1fcHNldWRvU3R5bGVSZXF1ZXN0LnBzZXVkb0lkICE9IFBzZXVkb0lkOjpOb25lKSwgIldoZW4g
aW4gU3R5bGVJbnZhbGlkYXRpb24gb3IgU2hhcmluZ1J1bGVzLCBTZWxlY3RvckNoZWNrZXIgZG9l
cyBub3QgdHJ5IHRvIG1hdGNoIHRoZSBwc2V1ZG8gSUQuIFdoaWxlIEVsZW1lbnRSdWxlQ29sbGVj
dG9yIHN1cHBvcnRzIG1hdGNoaW5nIGEgcGFydGljdWxhciBwc2V1ZG9JZCBpbiB0aGlzIGNhc2Us
IHRoaXMgd291bGQgaW5kaWNhdGUgYSBlcnJvciBhdCB0aGUgY2FsbCBzaXRlIHNpbmNlIG1hdGNo
aW5nIGEgcGFydGljdWxhciBlbGVtZW50IHNob3VsZCBiZSB1bm5lY2Vzc2FyeS4iKTsKIAotICAg
IGF1dG8qIHNoYWRvd1Jvb3QgPSBtX2VsZW1lbnQuY29udGFpbmluZ1NoYWRvd1Jvb3QoKTsKKyAg
ICBhdXRvKiBzaGFkb3dSb290ID0gZWxlbWVudCgpLmNvbnRhaW5pbmdTaGFkb3dSb290KCk7CiAg
ICAgaWYgKHNoYWRvd1Jvb3QgJiYgc2hhZG93Um9vdC0+bW9kZSgpID09IFNoYWRvd1Jvb3RNb2Rl
OjpVc2VyQWdlbnQpCiAgICAgICAgIGNvbGxlY3RNYXRjaGluZ1NoYWRvd1BzZXVkb0VsZW1lbnRS
dWxlcyhtYXRjaFJlcXVlc3QsIHJ1bGVSYW5nZSk7CiAKICAgICAvLyBXZSBuZWVkIHRvIGNvbGxl
Y3QgdGhlIHJ1bGVzIGZvciBpZCwgY2xhc3MsIHRhZywgYW5kIGV2ZXJ5dGhpbmcgZWxzZSBpbnRv
IGEgYnVmZmVyIGFuZAogICAgIC8vIHRoZW4gc29ydCB0aGUgYnVmZmVyLgotICAgIGF1dG8mIGlk
ID0gbV9lbGVtZW50LmlkRm9yU3R5bGVSZXNvbHV0aW9uKCk7CisgICAgYXV0byYgaWQgPSBlbGVt
ZW50KCkuaWRGb3JTdHlsZVJlc29sdXRpb24oKTsKICAgICBpZiAoIWlkLmlzTnVsbCgpKQogICAg
ICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QobWF0Y2hSZXF1ZXN0LnJ1bGVTZXQtPmlk
UnVsZXMoaWQpLCBtYXRjaFJlcXVlc3QsIHJ1bGVSYW5nZSk7Ci0gICAgaWYgKG1fZWxlbWVudC5o
YXNDbGFzcygpKSB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9lbGVtZW50LmNs
YXNzTmFtZXMoKS5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVz
Rm9yTGlzdChtYXRjaFJlcXVlc3QucnVsZVNldC0+Y2xhc3NSdWxlcyhtX2VsZW1lbnQuY2xhc3NO
YW1lcygpW2ldKSwgbWF0Y2hSZXF1ZXN0LCBydWxlUmFuZ2UpOworICAgIGlmIChlbGVtZW50KCku
aGFzQ2xhc3MoKSkgeworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVsZW1lbnQoKS5j
bGFzc05hbWVzKCkuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxl
c0Zvckxpc3QobWF0Y2hSZXF1ZXN0LnJ1bGVTZXQtPmNsYXNzUnVsZXMoZWxlbWVudCgpLmNsYXNz
TmFtZXMoKVtpXSksIG1hdGNoUmVxdWVzdCwgcnVsZVJhbmdlKTsKICAgICB9CiAKLSAgICBpZiAo
bV9lbGVtZW50LmlzTGluaygpKQorICAgIGlmIChlbGVtZW50KCkuaXNMaW5rKCkpCiAgICAgICAg
IGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChtYXRjaFJlcXVlc3QucnVsZVNldC0+bGlua1Bz
ZXVkb0NsYXNzUnVsZXMoKSwgbWF0Y2hSZXF1ZXN0LCBydWxlUmFuZ2UpOwotICAgIGlmIChTZWxl
Y3RvckNoZWNrZXI6Om1hdGNoZXNGb2N1c1BzZXVkb0NsYXNzKG1fZWxlbWVudCkpCisgICAgaWYg
KFNlbGVjdG9yQ2hlY2tlcjo6bWF0Y2hlc0ZvY3VzUHNldWRvQ2xhc3MoZWxlbWVudCgpKSkKICAg
ICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KG1hdGNoUmVxdWVzdC5ydWxlU2V0LT5m
b2N1c1BzZXVkb0NsYXNzUnVsZXMoKSwgbWF0Y2hSZXF1ZXN0LCBydWxlUmFuZ2UpOwotICAgIGNv
bGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChtYXRjaFJlcXVlc3QucnVsZVNldC0+dGFnUnVsZXMo
bV9lbGVtZW50LmxvY2FsTmFtZSgpLCBtX2VsZW1lbnQuaXNIVE1MRWxlbWVudCgpICYmIG1fZWxl
bWVudC5kb2N1bWVudCgpLmlzSFRNTERvY3VtZW50KCkpLCBtYXRjaFJlcXVlc3QsIHJ1bGVSYW5n
ZSk7CisgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KG1hdGNoUmVxdWVzdC5ydWxlU2V0
LT50YWdSdWxlcyhlbGVtZW50KCkubG9jYWxOYW1lKCksIGVsZW1lbnQoKS5pc0hUTUxFbGVtZW50
KCkgJiYgZWxlbWVudCgpLmRvY3VtZW50KCkuaXNIVE1MRG9jdW1lbnQoKSksIG1hdGNoUmVxdWVz
dCwgcnVsZVJhbmdlKTsKICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QobWF0Y2hSZXF1
ZXN0LnJ1bGVTZXQtPnVuaXZlcnNhbFJ1bGVzKCksIG1hdGNoUmVxdWVzdCwgcnVsZVJhbmdlKTsK
IH0KIApAQCAtMTk0LDE4ICsxOTQsMTggQEAgdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0
Y2hBdXRob3JSdWxlcyhib29sIGluY2x1ZGVFbXB0eVJ1bGVzKQogICAgICAgICBjb2xsZWN0TWF0
Y2hpbmdSdWxlcyhtYXRjaFJlcXVlc3QsIHJ1bGVSYW5nZSk7CiAgICAgfQogCi0gICAgYXV0byog
cGFyZW50ID0gbV9lbGVtZW50LnBhcmVudEVsZW1lbnQoKTsKKyAgICBhdXRvKiBwYXJlbnQgPSBl
bGVtZW50KCkucGFyZW50RWxlbWVudCgpOwogICAgIGlmIChwYXJlbnQgJiYgcGFyZW50LT5zaGFk
b3dSb290KCkpCiAgICAgICAgIG1hdGNoU2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxlcyhpbmNsdWRl
RW1wdHlSdWxlcywgcnVsZVJhbmdlKTsKIAotICAgIGlmIChtX2VsZW1lbnQuc2hhZG93Um9vdCgp
KQorICAgIGlmIChlbGVtZW50KCkuc2hhZG93Um9vdCgpKQogICAgICAgICBtYXRjaEhvc3RQc2V1
ZG9DbGFzc1J1bGVzKGluY2x1ZGVFbXB0eVJ1bGVzLCBydWxlUmFuZ2UpOwogCi0gICAgaWYgKG1f
ZWxlbWVudC5pc0luU2hhZG93VHJlZSgpKSB7CisgICAgaWYgKGVsZW1lbnQoKS5pc0luU2hhZG93
VHJlZSgpKSB7CiAgICAgICAgIG1hdGNoQXV0aG9yU2hhZG93UHNldWRvRWxlbWVudFJ1bGVzKGlu
Y2x1ZGVFbXB0eVJ1bGVzLCBydWxlUmFuZ2UpOwogCi0gICAgICAgIGlmICghbV9lbGVtZW50LnBh
cnROYW1lcygpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG1hdGNoUGFydFBzZXVkb0VsZW1lbnRS
dWxlcygqbV9lbGVtZW50LmNvbnRhaW5pbmdTaGFkb3dSb290KCksIGluY2x1ZGVFbXB0eVJ1bGVz
LCBydWxlUmFuZ2UpOworICAgICAgICBpZiAoIWVsZW1lbnQoKS5wYXJ0TmFtZXMoKS5pc0VtcHR5
KCkpCisgICAgICAgICAgICBtYXRjaFBhcnRQc2V1ZG9FbGVtZW50UnVsZXMoKmVsZW1lbnQoKS5j
b250YWluaW5nU2hhZG93Um9vdCgpLCBpbmNsdWRlRW1wdHlSdWxlcywgcnVsZVJhbmdlKTsKICAg
ICB9CiAKICAgICBzb3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMoKTsKQEAgLTIxMyw4ICsyMTMs
OCBAQCB2b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjptYXRjaEF1dGhvclJ1bGVzKGJvb2wgaW5j
bHVkZUVtcHR5UnVsZXMpCiAKIHZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6Om1hdGNoQXV0aG9y
U2hhZG93UHNldWRvRWxlbWVudFJ1bGVzKGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMsIFN0eWxlUmVz
b2x2ZXI6OlJ1bGVSYW5nZSYgcnVsZVJhbmdlKQogewotICAgIEFTU0VSVChtX2VsZW1lbnQuaXNJ
blNoYWRvd1RyZWUoKSk7Ci0gICAgYXV0byYgc2hhZG93Um9vdCA9ICptX2VsZW1lbnQuY29udGFp
bmluZ1NoYWRvd1Jvb3QoKTsKKyAgICBBU1NFUlQoZWxlbWVudCgpLmlzSW5TaGFkb3dUcmVlKCkp
OworICAgIGF1dG8mIHNoYWRvd1Jvb3QgPSAqZWxlbWVudCgpLmNvbnRhaW5pbmdTaGFkb3dSb290
KCk7CiAgICAgaWYgKHNoYWRvd1Jvb3QubW9kZSgpICE9IFNoYWRvd1Jvb3RNb2RlOjpVc2VyQWdl
bnQpCiAgICAgICAgIHJldHVybjsKICAgICAvLyBMb29rIHVwIHNoYWRvdyBwc2V1ZG8gZWxlbWVu
dHMgYWxzbyBmcm9tIHRoZSBob3N0IHNjb3BlIGF1dGhvciBzdHlsZSBhcyB0aGV5IGFyZSB3ZWIt
ZXhwb3NlZC4KQEAgLTIyNSw5ICsyMjUsOSBAQCB2b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjpt
YXRjaEF1dGhvclNoYWRvd1BzZXVkb0VsZW1lbnRSdWxlcyhib29sIGluY2x1ZGVFbXB0eQogCiB2
b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjptYXRjaEhvc3RQc2V1ZG9DbGFzc1J1bGVzKGJvb2wg
aW5jbHVkZUVtcHR5UnVsZXMsIFN0eWxlUmVzb2x2ZXI6OlJ1bGVSYW5nZSYgcnVsZVJhbmdlKQog
ewotICAgIEFTU0VSVChtX2VsZW1lbnQuc2hhZG93Um9vdCgpKTsKKyAgICBBU1NFUlQoZWxlbWVu
dCgpLnNoYWRvd1Jvb3QoKSk7CiAKLSAgICBhdXRvJiBzaGFkb3dBdXRob3JTdHlsZSA9IG1fZWxl
bWVudC5zaGFkb3dSb290KCktPnN0eWxlU2NvcGUoKS5yZXNvbHZlcigpLnJ1bGVTZXRzKCkuYXV0
aG9yU3R5bGUoKTsKKyAgICBhdXRvJiBzaGFkb3dBdXRob3JTdHlsZSA9IGVsZW1lbnQoKS5zaGFk
b3dSb290KCktPnN0eWxlU2NvcGUoKS5yZXNvbHZlcigpLnJ1bGVTZXRzKCkuYXV0aG9yU3R5bGUo
KTsKICAgICBhdXRvJiBzaGFkb3dIb3N0UnVsZXMgPSBzaGFkb3dBdXRob3JTdHlsZS5ob3N0UHNl
dWRvQ2xhc3NSdWxlcygpOwogICAgIGlmIChzaGFkb3dIb3N0UnVsZXMuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm47CkBAIC0yNDAsNyArMjQwLDcgQEAgdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rv
cjo6bWF0Y2hIb3N0UHNldWRvQ2xhc3NSdWxlcyhib29sIGluY2x1ZGVFbXB0eVJ1bGVzLCBTdHkK
IAogdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hTbG90dGVkUHNldWRvRWxlbWVudFJ1
bGVzKGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMsIFN0eWxlUmVzb2x2ZXI6OlJ1bGVSYW5nZSYgcnVs
ZVJhbmdlKQogewotICAgIGF1dG8qIHNsb3QgPSBtX2VsZW1lbnQuYXNzaWduZWRTbG90KCk7Cisg
ICAgYXV0byogc2xvdCA9IGVsZW1lbnQoKS5hc3NpZ25lZFNsb3QoKTsKICAgICBhdXRvIHN0eWxl
U2NvcGVPcmRpbmFsID0gU3R5bGU6OlNjb3BlT3JkaW5hbDo6Rmlyc3RTbG90OwogCiAgICAgZm9y
ICg7IHNsb3Q7IHNsb3QgPSBzbG90LT5hc3NpZ25lZFNsb3QoKSwgKytzdHlsZVNjb3BlT3JkaW5h
bCkgewpAQCAtMjY1LDEyICsyNjUsMTIgQEAgdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0
Y2hTbG90dGVkUHNldWRvRWxlbWVudFJ1bGVzKGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMKIAogdm9p
ZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hQYXJ0UHNldWRvRWxlbWVudFJ1bGVzKGNvbnN0
IFNoYWRvd1Jvb3QmIGNvbnRhaW5pbmdTaGFkb3dSb290LCBib29sIGluY2x1ZGVFbXB0eVJ1bGVz
LCBTdHlsZVJlc29sdmVyOjpSdWxlUmFuZ2UmIHJ1bGVSYW5nZSkKIHsKLSAgICBBU1NFUlQobV9l
bGVtZW50LmlzSW5TaGFkb3dUcmVlKCkpOwotICAgIEFTU0VSVCghbV9lbGVtZW50LnBhcnROYW1l
cygpLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKGVsZW1lbnQoKS5pc0luU2hhZG93VHJlZSgpKTsK
KyAgICBBU1NFUlQoIWVsZW1lbnQoKS5wYXJ0TmFtZXMoKS5pc0VtcHR5KCkpOwogCiAgICAgYXV0
byYgc2hhZG93SG9zdCA9ICpjb250YWluaW5nU2hhZG93Um9vdC5ob3N0KCk7CiAgICAgewotICAg
ICAgICBTZXRGb3JTY29wZTxjb25zdCBFbGVtZW50Kj4gcGFydE1hdGNoaW5nU2NvcGUobV9zaGFk
b3dIb3N0SW5QYXJ0UnVsZVNjb3BlLCAmc2hhZG93SG9zdCk7CisgICAgICAgIFNldEZvclNjb3Bl
PFJlZlB0cjxjb25zdCBFbGVtZW50Pj4gcGFydE1hdGNoaW5nU2NvcGUobV9zaGFkb3dIb3N0SW5Q
YXJ0UnVsZVNjb3BlLCAmc2hhZG93SG9zdCk7CiAKICAgICAgICAgYXV0byYgaG9zdEF1dGhvclJ1
bGVzID0gU3R5bGU6OlNjb3BlOjpmb3JOb2RlKHNoYWRvd0hvc3QpLnJlc29sdmVyKCkucnVsZVNl
dHMoKS5hdXRob3JTdHlsZSgpOwogICAgICAgICBNYXRjaFJlcXVlc3QgaG9zdEF1dGhvclJlcXVl
c3QgeyAmaG9zdEF1dGhvclJ1bGVzLCBpbmNsdWRlRW1wdHlSdWxlcywgU3R5bGU6OlNjb3BlT3Jk
aW5hbDo6Q29udGFpbmluZ0hvc3QgfTsKQEAgLTI4OCwyMiArMjg4LDIyIEBAIHZvaWQgRWxlbWVu
dFJ1bGVDb2xsZWN0b3I6Om1hdGNoUGFydFBzZXVkb0VsZW1lbnRSdWxlcyhjb25zdCBTaGFkb3dS
b290JiBjb250YWluCiB2b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjpjb2xsZWN0TWF0Y2hpbmdT
aGFkb3dQc2V1ZG9FbGVtZW50UnVsZXMoY29uc3QgTWF0Y2hSZXF1ZXN0JiBtYXRjaFJlcXVlc3Qs
IFN0eWxlUmVzb2x2ZXI6OlJ1bGVSYW5nZSYgcnVsZVJhbmdlKQogewogICAgIEFTU0VSVChtYXRj
aFJlcXVlc3QucnVsZVNldCk7Ci0gICAgQVNTRVJUKG1fZWxlbWVudC5jb250YWluaW5nU2hhZG93
Um9vdCgpLT5tb2RlKCkgPT0gU2hhZG93Um9vdE1vZGU6OlVzZXJBZ2VudCk7CisgICAgQVNTRVJU
KGVsZW1lbnQoKS5jb250YWluaW5nU2hhZG93Um9vdCgpLT5tb2RlKCkgPT0gU2hhZG93Um9vdE1v
ZGU6OlVzZXJBZ2VudCk7CiAKICAgICBhdXRvJiBydWxlcyA9ICptYXRjaFJlcXVlc3QucnVsZVNl
dDsKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgLy8gRlhJTUU6IFdlYlZUVCBzaG91bGQg
bm90IGJlIGRvbmUgYnkgc3R5bGluZyBVQSBzaGFkb3cgdHJlZXMgbGlrZSB0aGlzLgotICAgIGlm
IChtX2VsZW1lbnQuaXNXZWJWVFRFbGVtZW50KCkpCisgICAgaWYgKGVsZW1lbnQoKS5pc1dlYlZU
VEVsZW1lbnQoKSkKICAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KHJ1bGVzLmN1
ZVBzZXVkb1J1bGVzKCksIG1hdGNoUmVxdWVzdCwgcnVsZVJhbmdlKTsKICNlbmRpZgotICAgIGF1
dG8mIHBzZXVkb0lkID0gbV9lbGVtZW50LnNoYWRvd1BzZXVkb0lkKCk7CisgICAgYXV0byYgcHNl
dWRvSWQgPSBlbGVtZW50KCkuc2hhZG93UHNldWRvSWQoKTsKICAgICBpZiAoIXBzZXVkb0lkLmlz
RW1wdHkoKSkKICAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KHJ1bGVzLnNoYWRv
d1BzZXVkb0VsZW1lbnRSdWxlcyhwc2V1ZG9JZCksIG1hdGNoUmVxdWVzdCwgcnVsZVJhbmdlKTsK
IH0KIAogc3RkOjp1bmlxdWVfcHRyPFJ1bGVTZXQ6OlJ1bGVEYXRhVmVjdG9yPiBFbGVtZW50UnVs
ZUNvbGxlY3Rvcjo6Y29sbGVjdFNsb3R0ZWRQc2V1ZG9FbGVtZW50UnVsZXNGb3JTbG90KGJvb2wg
aW5jbHVkZUVtcHR5UnVsZXMpCiB7Ci0gICAgQVNTRVJUKGlzPEhUTUxTbG90RWxlbWVudD4obV9l
bGVtZW50KSk7CisgICAgQVNTRVJUKGlzPEhUTUxTbG90RWxlbWVudD4oZWxlbWVudCgpKSk7CiAK
ICAgICBjbGVhck1hdGNoZWRSdWxlcygpOwogCkBAIC0zNTAsNyArMzUwLDcgQEAgdm9pZCBFbGVt
ZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hVQVJ1bGVzKCkKICAgICBtYXRjaFVBUnVsZXMoKnVzZXJB
Z2VudFN0eWxlU2hlZXQpOwogCiAgICAgLy8gSW4gcXVpcmtzIG1vZGUsIHdlIG1hdGNoIHJ1bGVz
IGZyb20gdGhlIHF1aXJrcyB1c2VyIGFnZW50IHNoZWV0LgotICAgIGlmIChtX2VsZW1lbnQuZG9j
dW1lbnQoKS5pblF1aXJrc01vZGUoKSkKKyAgICBpZiAoZWxlbWVudCgpLmRvY3VtZW50KCkuaW5R
dWlya3NNb2RlKCkpCiAgICAgICAgIG1hdGNoVUFSdWxlcygqQ1NTRGVmYXVsdFN0eWxlU2hlZXRz
OjpkZWZhdWx0UXVpcmtzU3R5bGUpOwogCiAgICAgaWYgKG1fdXNlckFnZW50TWVkaWFRdWVyeVN0
eWxlKQpAQCAtMzg1LDcgKzM4NSw3IEBAIGlubGluZSBib29sIEVsZW1lbnRSdWxlQ29sbGVjdG9y
OjpydWxlTWF0Y2hlcyhjb25zdCBSdWxlRGF0YSYgcnVsZURhdGEsIHVuc2lnbmVkCiAgICAgLy8g
V2Uga25vdyBhIHN1ZmZpY2llbnRseSBzaW1wbGUgc2luZ2xlIHBhcnQgc2VsZWN0b3IgbWF0Y2hl
cyBzaW1wbHkgYmVjYXVzZSB3ZSBmb3VuZCBpdCBmcm9tIHRoZSBydWxlIGhhc2ggd2hlbiBmaWx0
ZXJpbmcgdGhlIFJ1bGVTZXQuCiAgICAgLy8gVGhpcyBpcyBsaW1pdGVkIHRvIEhUTUwgb25seSBz
byB3ZSBkb24ndCBuZWVkIHRvIGNoZWNrIHRoZSBuYW1lc3BhY2UgKGJlY2F1c2Ugb2YgdGFnIG5h
bWUgbWF0Y2gpLgogICAgIE1hdGNoQmFzZWRPblJ1bGVIYXNoIG1hdGNoQmFzZWRPblJ1bGVIYXNo
ID0gcnVsZURhdGEubWF0Y2hCYXNlZE9uUnVsZUhhc2goKTsKLSAgICBpZiAobWF0Y2hCYXNlZE9u
UnVsZUhhc2ggIT0gTWF0Y2hCYXNlZE9uUnVsZUhhc2g6Ok5vbmUgJiYgbV9lbGVtZW50LmlzSFRN
TEVsZW1lbnQoKSkgeworICAgIGlmIChtYXRjaEJhc2VkT25SdWxlSGFzaCAhPSBNYXRjaEJhc2Vk
T25SdWxlSGFzaDo6Tm9uZSAmJiBlbGVtZW50KCkuaXNIVE1MRWxlbWVudCgpKSB7CiAgICAgICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UobV9wc2V1ZG9TdHlsZVJlcXVlc3QucHNldWRvSWQgPT0gUHNl
dWRvSWQ6Ok5vbmUsICJJZiB3ZSBtYXRjaCBiYXNlZCBvbiB0aGUgcnVsZSBoYXNoIHdoaWxlIGNv
bGxlY3RpbmcgZm9yIGEgcGFydGljdWxhciBwc2V1ZG8gZWxlbWVudCBJRCwgd2Ugd291bGQgYWRk
IGluY29ycmVjdCBydWxlcyBmb3IgdGhhdCBwc2V1ZG8gZWxlbWVudCBJRC4gV2Ugc2hvdWxkIG5l
dmVyIGVuZCBpbiBydWxlTWF0Y2hlcygpIHdpdGggYSBwc2V1ZG8gZWxlbWVudCBpZiB0aGUgcnVs
ZURhdGEgY2Fubm90IG1hdGNoIGFueSBwc2V1ZG8gZWxlbWVudC4iKTsKIAogICAgICAgICBzd2l0
Y2ggKG1hdGNoQmFzZWRPblJ1bGVIYXNoKSB7CkBAIC00MjEsMTIgKzQyMSwxMiBAQCBpbmxpbmUg
Ym9vbCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6cnVsZU1hdGNoZXMoY29uc3QgUnVsZURhdGEmIHJ1
bGVEYXRhLCB1bnNpZ25lZAogICAgICAgICBhdXRvIHNlbGVjdG9yQ2hlY2tlciA9IFNlbGVjdG9y
Q29tcGlsZXI6OnJ1bGVDb2xsZWN0b3JTaW1wbGVTZWxlY3RvckNoZWNrZXJGdW5jdGlvbihjb21w
aWxlZFNlbGVjdG9yQ2hlY2tlciwgY29tcGlsZWRTZWxlY3Rvci5zdGF0dXMpOwogI2lmICFBU1NF
UlRfTVNHX0RJU0FCTEVECiAgICAgICAgIHVuc2lnbmVkIGlnbm9yZVNwZWNpZmljaXR5OwotICAg
ICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFzZWxlY3RvckNoZWNrZXIoJm1fZWxlbWVudCwgJmln
bm9yZVNwZWNpZmljaXR5KSB8fCBtX3BzZXVkb1N0eWxlUmVxdWVzdC5wc2V1ZG9JZCA9PSBQc2V1
ZG9JZDo6Tm9uZSwgIldoZW4gbWF0Y2hpbmcgcHNldWRvIGVsZW1lbnRzLCB3ZSBzaG91bGQgbmV2
ZXIgY29tcGlsZSBhIHNlbGVjdG9yIGNoZWNrZXIgd2l0aG91dCBjb250ZXh0IHVubGVzcyBpdCBj
YW5ub3QgbWF0Y2ggYW55dGhpbmcuIik7CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXNl
bGVjdG9yQ2hlY2tlcigmZWxlbWVudCgpLCAmaWdub3JlU3BlY2lmaWNpdHkpIHx8IG1fcHNldWRv
U3R5bGVSZXF1ZXN0LnBzZXVkb0lkID09IFBzZXVkb0lkOjpOb25lLCAiV2hlbiBtYXRjaGluZyBw
c2V1ZG8gZWxlbWVudHMsIHdlIHNob3VsZCBuZXZlciBjb21waWxlIGEgc2VsZWN0b3IgY2hlY2tl
ciB3aXRob3V0IGNvbnRleHQgdW5sZXNzIGl0IGNhbm5vdCBtYXRjaCBhbnl0aGluZy4iKTsKICNl
bmRpZgogI2lmIENTU19TRUxFQ1RPUl9KSVRfUFJPRklMSU5HCiAgICAgICAgIHJ1bGVEYXRhLmNv
bXBpbGVkU2VsZWN0b3JVc2VkKCk7CiAjZW5kaWYKLSAgICAgICAgYm9vbCBzZWxlY3Rvck1hdGNo
ZXMgPSBzZWxlY3RvckNoZWNrZXIoJm1fZWxlbWVudCwgJnNwZWNpZmljaXR5KTsKKyAgICAgICAg
Ym9vbCBzZWxlY3Rvck1hdGNoZXMgPSBzZWxlY3RvckNoZWNrZXIoJmVsZW1lbnQoKSwgJnNwZWNp
ZmljaXR5KTsKIAogICAgICAgICBpZiAoc2VsZWN0b3JNYXRjaGVzICYmIHJ1bGVEYXRhLmNvbnRh
aW5zVW5jb21tb25BdHRyaWJ1dGVTZWxlY3RvcigpKQogICAgICAgICAgICAgbV9kaWRNYXRjaFVu
Y29tbW9uQXR0cmlidXRlU2VsZWN0b3IgPSB0cnVlOwpAQCAtNDQwLDcgKzQ0MCw3IEBAIGlubGlu
ZSBib29sIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjpydWxlTWF0Y2hlcyhjb25zdCBSdWxlRGF0YSYg
cnVsZURhdGEsIHVuc2lnbmVkCiAgICAgY29udGV4dC5zY3JvbGxiYXIgPSBtX3BzZXVkb1N0eWxl
UmVxdWVzdC5zY3JvbGxiYXI7CiAgICAgY29udGV4dC5zY3JvbGxiYXJQYXJ0ID0gbV9wc2V1ZG9T
dHlsZVJlcXVlc3Quc2Nyb2xsYmFyUGFydDsKICAgICBjb250ZXh0LmlzTWF0Y2hpbmdIb3N0UHNl
dWRvQ2xhc3MgPSBtX2lzTWF0Y2hpbmdIb3N0UHNldWRvQ2xhc3M7Ci0gICAgY29udGV4dC5zaGFk
b3dIb3N0SW5QYXJ0UnVsZVNjb3BlID0gbV9zaGFkb3dIb3N0SW5QYXJ0UnVsZVNjb3BlOworICAg
IGNvbnRleHQuc2hhZG93SG9zdEluUGFydFJ1bGVTY29wZSA9IG1fc2hhZG93SG9zdEluUGFydFJ1
bGVTY29wZS5nZXQoKTsKIAogICAgIGJvb2wgc2VsZWN0b3JNYXRjaGVzOwogI2lmIEVOQUJMRShD
U1NfU0VMRUNUT1JfSklUKQpAQCAtNDUyLDcgKzQ1Miw3IEBAIGlubGluZSBib29sIEVsZW1lbnRS
dWxlQ29sbGVjdG9yOjpydWxlTWF0Y2hlcyhjb25zdCBSdWxlRGF0YSYgcnVsZURhdGEsIHVuc2ln
bmVkCiAjaWYgQ1NTX1NFTEVDVE9SX0pJVF9QUk9GSUxJTkcKICAgICAgICAgY29tcGlsZWRTZWxl
Y3Rvci51c2VDb3VudCsrOwogI2VuZGlmCi0gICAgICAgIHNlbGVjdG9yTWF0Y2hlcyA9IHNlbGVj
dG9yQ2hlY2tlcigmbV9lbGVtZW50LCAmY29udGV4dCwgJnNwZWNpZmljaXR5KTsKKyAgICAgICAg
c2VsZWN0b3JNYXRjaGVzID0gc2VsZWN0b3JDaGVja2VyKCZlbGVtZW50KCksICZjb250ZXh0LCAm
c3BlY2lmaWNpdHkpOwogICAgIH0gZWxzZQogI2VuZGlmIC8vIEVOQUJMRShDU1NfU0VMRUNUT1Jf
SklUKQogICAgIHsKQEAgLTQ2Myw4ICs0NjMsOCBAQCBpbmxpbmUgYm9vbCBFbGVtZW50UnVsZUNv
bGxlY3Rvcjo6cnVsZU1hdGNoZXMoY29uc3QgUnVsZURhdGEmIHJ1bGVEYXRhLCB1bnNpZ25lZAog
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICAvLyBTbG93
IHBhdGguCi0gICAgICAgIFNlbGVjdG9yQ2hlY2tlciBzZWxlY3RvckNoZWNrZXIobV9lbGVtZW50
LmRvY3VtZW50KCkpOwotICAgICAgICBzZWxlY3Rvck1hdGNoZXMgPSBzZWxlY3RvckNoZWNrZXIu
bWF0Y2goKnNlbGVjdG9yLCBtX2VsZW1lbnQsIGNvbnRleHQsIHNwZWNpZmljaXR5KTsKKyAgICAg
ICAgU2VsZWN0b3JDaGVja2VyIHNlbGVjdG9yQ2hlY2tlcihlbGVtZW50KCkuZG9jdW1lbnQoKSk7
CisgICAgICAgIHNlbGVjdG9yTWF0Y2hlcyA9IHNlbGVjdG9yQ2hlY2tlci5tYXRjaCgqc2VsZWN0
b3IsIGVsZW1lbnQoKSwgY29udGV4dCwgc3BlY2lmaWNpdHkpOwogICAgIH0KIAogICAgIGlmIChy
dWxlRGF0YS5jb250YWluc1VuY29tbW9uQXR0cmlidXRlU2VsZWN0b3IoKSkgewpAQCAtNTMyLDgg
KzUzMiw4IEBAIHZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6Om1hdGNoQWxsUnVsZXMoYm9vbCBt
YXRjaEF1dGhvckFuZFVzZXJTdHlsZXMsIGJvb2wgaW5jCiAgICAgICAgIG1hdGNoVXNlclJ1bGVz
KGZhbHNlKTsKIAogICAgIC8vIE5vdyBjaGVjayBhdXRob3IgcnVsZXMsIGJlZ2lubmluZyBmaXJz
dCB3aXRoIHByZXNlbnRhdGlvbmFsIGF0dHJpYnV0ZXMgbWFwcGVkIGZyb20gSFRNTC4KLSAgICBp
ZiAoaXM8U3R5bGVkRWxlbWVudD4obV9lbGVtZW50KSkgewotICAgICAgICBhdXRvJiBzdHlsZWRF
bGVtZW50ID0gZG93bmNhc3Q8U3R5bGVkRWxlbWVudD4obV9lbGVtZW50KTsKKyAgICBpZiAoaXM8
U3R5bGVkRWxlbWVudD4oZWxlbWVudCgpKSkgeworICAgICAgICBhdXRvJiBzdHlsZWRFbGVtZW50
ID0gZG93bmNhc3Q8U3R5bGVkRWxlbWVudD4oZWxlbWVudCgpKTsKICAgICAgICAgYWRkRWxlbWVu
dFN0eWxlUHJvcGVydGllcyhzdHlsZWRFbGVtZW50LnByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxl
KCkpOwogCiAgICAgICAgIC8vIE5vdyB3ZSBjaGVjayBhZGRpdGlvbmFsIG1hcHBlZCBkZWNsYXJh
dGlvbnMuCkBAIC01NTMsOCArNTUzLDggQEAgdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0
Y2hBbGxSdWxlcyhib29sIG1hdGNoQXV0aG9yQW5kVXNlclN0eWxlcywgYm9vbCBpbmMKICAgICBp
ZiAobWF0Y2hBdXRob3JBbmRVc2VyU3R5bGVzKQogICAgICAgICBtYXRjaEF1dGhvclJ1bGVzKGZh
bHNlKTsKIAotICAgIGlmIChtYXRjaEF1dGhvckFuZFVzZXJTdHlsZXMgJiYgaXM8U3R5bGVkRWxl
bWVudD4obV9lbGVtZW50KSkgewotICAgICAgICBhdXRvJiBzdHlsZWRFbGVtZW50ID0gZG93bmNh
c3Q8U3R5bGVkRWxlbWVudD4obV9lbGVtZW50KTsKKyAgICBpZiAobWF0Y2hBdXRob3JBbmRVc2Vy
U3R5bGVzICYmIGlzPFN0eWxlZEVsZW1lbnQ+KGVsZW1lbnQoKSkpIHsKKyAgICAgICAgYXV0byYg
c3R5bGVkRWxlbWVudCA9IGRvd25jYXN0PFN0eWxlZEVsZW1lbnQ+KGVsZW1lbnQoKSk7CiAgICAg
ICAgIC8vIE5vdyBjaGVjayBvdXIgaW5saW5lIHN0eWxlIGF0dHJpYnV0ZS4KICAgICAgICAgaWYg
KHN0eWxlZEVsZW1lbnQuaW5saW5lU3R5bGUoKSkgewogICAgICAgICAgICAgLy8gSW5saW5lIHN0
eWxlIGlzIGltbXV0YWJsZSBhcyBsb25nIGFzIHRoZXJlIGlzIG5vIENTU09NIHdyYXBwZXIuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5oCmluZGV4IGRhOTAxOThjMTJh
Li45NjkwN2M3YzA1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxl
Q29sbGVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9y
LmgKQEAgLTg5LDcgKzg5LDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgYWRkTWF0Y2hlZFJ1bGUo
Y29uc3QgUnVsZURhdGEmLCB1bnNpZ25lZCBzcGVjaWZpY2l0eSwgU3R5bGU6OlNjb3BlT3JkaW5h
bCwgU3R5bGVSZXNvbHZlcjo6UnVsZVJhbmdlJik7CiAKLSAgICBjb25zdCBFbGVtZW50JiBtX2Vs
ZW1lbnQ7CisgICAgY29uc3QgRWxlbWVudCYgZWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZWxl
bWVudC5nZXQoKTsgfQorCisgICAgY29uc3QgUmVmPGNvbnN0IEVsZW1lbnQ+IG1fZWxlbWVudDsK
ICAgICBjb25zdCBSdWxlU2V0JiBtX2F1dGhvclN0eWxlOwogICAgIGNvbnN0IFJ1bGVTZXQqIG1f
dXNlclN0eWxlIHsgbnVsbHB0ciB9OwogICAgIGNvbnN0IFJ1bGVTZXQqIG1fdXNlckFnZW50TWVk
aWFRdWVyeVN0eWxlIHsgbnVsbHB0ciB9OwpAQCAtMTAwLDcgKzEwMiw3IEBAIHByaXZhdGU6CiAg
ICAgU2VsZWN0b3JDaGVja2VyOjpNb2RlIG1fbW9kZSB7IFNlbGVjdG9yQ2hlY2tlcjo6TW9kZTo6
UmVzb2x2aW5nU3R5bGUgfTsKICAgICBib29sIG1faXNNYXRjaGluZ1Nsb3R0ZWRQc2V1ZG9FbGVt
ZW50cyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzTWF0Y2hpbmdIb3N0UHNldWRvQ2xhc3MgeyBm
YWxzZSB9OwotICAgIGNvbnN0IEVsZW1lbnQqIG1fc2hhZG93SG9zdEluUGFydFJ1bGVTY29wZSB7
IG51bGxwdHIgfTsKKyAgICBSZWZQdHI8Y29uc3QgRWxlbWVudD4gbV9zaGFkb3dIb3N0SW5QYXJ0
UnVsZVNjb3BlIHsgbnVsbHB0ciB9OwogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8UnVsZVNl
dDo6UnVsZURhdGFWZWN0b3I+PiBtX2tlZXBBbGl2ZVNsb3R0ZWRQc2V1ZG9FbGVtZW50UnVsZXM7
CiAKICAgICBWZWN0b3I8TWF0Y2hlZFJ1bGUsIDY0PiBtX21hdGNoZWRSdWxlczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5o
CmluZGV4IDhjYzIxNGExYWYwLi4wNGFiYTEzZGY4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC00NzcsMTQg
KzQ3NywxNCBAQCBwdWJsaWM6CiAgICAgLy8gUGVyZm9ybSB0aGUgZGVmYXVsdCBhY3Rpb24gZm9y
IGFuIGV2ZW50LgogICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Jik7
CiAKLSAgICB2b2lkIHJlZigpOwotICAgIHZvaWQgZGVyZWYoKTsKKyAgICB2b2lkIHJlZigpIGNv
bnN0OworICAgIHZvaWQgZGVyZWYoKSBjb25zdDsKICAgICBib29sIGhhc09uZVJlZigpIGNvbnN0
OwogICAgIHVuc2lnbmVkIHJlZkNvdW50KCkgY29uc3Q7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAg
Ym9vbCBtX2RlbGV0aW9uSGFzQmVndW4geyBmYWxzZSB9OwotICAgIGJvb2wgbV9pblJlbW92ZWRM
YXN0UmVmRnVuY3Rpb24geyBmYWxzZSB9OworICAgIG11dGFibGUgYm9vbCBtX2luUmVtb3ZlZExh
c3RSZWZGdW5jdGlvbiB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2Fkb3B0aW9uSXNSZXF1aXJlZCB7
IHRydWUgfTsKICNlbmRpZgogCkBAIC02NjgsNyArNjY4LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
dm9pZCBvcGVyYXRvcigpKE5vZGVSYXJlRGF0YSopIGNvbnN0OwogICAgIH07CiAKLSAgICB1aW50
MzJfdCBtX3JlZkNvdW50QW5kUGFyZW50Qml0IHsgc19yZWZDb3VudEluY3JlbWVudCB9OworICAg
IG11dGFibGUgdWludDMyX3QgbV9yZWZDb3VudEFuZFBhcmVudEJpdCB7IHNfcmVmQ291bnRJbmNy
ZW1lbnQgfTsKICAgICBtdXRhYmxlIHVpbnQzMl90IG1fbm9kZUZsYWdzOwogCiAgICAgQ29udGFp
bmVyTm9kZSogbV9wYXJlbnROb2RlIHsgbnVsbHB0ciB9OwpAQCAtNjkwLDcgKzY5MCw3IEBAIGlu
bGluZSB2b2lkIGFkb3B0ZWQoTm9kZSogbm9kZSkKIH0KICNlbmRpZgogCi1BTFdBWVNfSU5MSU5F
IHZvaWQgTm9kZTo6cmVmKCkKK0FMV0FZU19JTkxJTkUgdm9pZCBOb2RlOjpyZWYoKSBjb25zdAog
ewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKCFtX2RlbGV0aW9uSGFz
QmVndW4pOwpAQCAtNjk5LDcgKzY5OSw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBOb2RlOjpyZWYo
KQogICAgIG1fcmVmQ291bnRBbmRQYXJlbnRCaXQgKz0gc19yZWZDb3VudEluY3JlbWVudDsKIH0K
IAotQUxXQVlTX0lOTElORSB2b2lkIE5vZGU6OmRlcmVmKCkKK0FMV0FZU19JTkxJTkUgdm9pZCBO
b2RlOjpkZXJlZigpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBB
U1NFUlQocmVmQ291bnQoKSk7CkBAIC03MTMsNyArNzEzLDcgQEAgQUxXQVlTX0lOTElORSB2b2lk
IE5vZGU6OmRlcmVmKCkKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgIG1faW5SZW1vdmVkTGFzdFJl
ZkZ1bmN0aW9uID0gdHJ1ZTsKICNlbmRpZgotICAgICAgICByZW1vdmVkTGFzdFJlZigpOworICAg
ICAgICBjb25zdF9jYXN0PE5vZGUmPigqdGhpcykucmVtb3ZlZExhc3RSZWYoKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICBtX3JlZkNvdW50QW5kUGFyZW50Qml0ID0gdXBkYXRlZFJlZkNv
dW50Owo=
</data>
<flag name="review"
          id="395926"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380293</attachid>
            <date>2019-10-06 02:14:00 -0700</date>
            <delta_ts>2019-10-06 02:57:48 -0700</delta_ts>
            <desc>patch</desc>
            <filename>node-const-ref-2.patch</filename>
            <type>text/plain</type>
            <size>17330</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzNzU2NmEwOTA3My4uYzI3YjkxMTU0M2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNSBAQAorMjAxOS0xMC0wNCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+
CisKKyAgICAgICAgTm9kZTo6cmVmL2RlcmVmIHNob3VsZCBiZSBjb25zdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyNTYyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgorCisgICAgICAgIFRoaXMgZW5hYmxlcyBSZWZQdHI8Y29u
c3QgRWxlbWVudD4gYW5kIG1hdGNoZXMgUmVmQ291bnRlZC4KKworICAgICAgICAqIGNzcy9FbGVt
ZW50UnVsZUNvbGxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UnVsZUNvbGxl
Y3Rvcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJ1
bGVDb2xsZWN0b3I6Om1hdGNoQXV0aG9yUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dFJ1bGVDb2xsZWN0b3I6Om1hdGNoQXV0aG9yU2hhZG93UHNldWRvRWxlbWVudFJ1bGVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjptYXRjaEhvc3RQc2V1ZG9DbGFz
c1J1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjptYXRjaFNs
b3R0ZWRQc2V1ZG9FbGVtZW50UnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJ1bGVD
b2xsZWN0b3I6Om1hdGNoUGFydFBzZXVkb0VsZW1lbnRSdWxlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50UnVsZUNvbGxlY3Rvcjo6Y29sbGVjdE1hdGNoaW5nU2hhZG93UHNldWRvRWxlbWVu
dFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjpjb2xsZWN0
U2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxlc0ZvclNsb3QpOgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudFJ1bGVDb2xsZWN0b3I6Om1hdGNoVUFSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50UnVsZUNvbGxlY3Rvcjo6cnVsZU1hdGNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dFJ1bGVDb2xsZWN0b3I6Om1hdGNoQWxsUnVsZXMpOgorCisgICAgICAgIFVzZSBpdCB0byByZWYg
ZWxlbWVudHMgaW4gRWxlbWVudFJ1bGVDb2xsZWN0b3IuCisKKyAgICAgICAgKiBjc3MvRWxlbWVu
dFJ1bGVDb2xsZWN0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSdWxlQ29sbGVjdG9y
OjplbGVtZW50IGNvbnN0KToKKyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZTo6cmVmIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmRlcmVmIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnJlZik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpOb2RlOjpkZXJlZik6IERlbGV0ZWQuCisKIDIwMTktMTAtMDUgIFphbGFuIEJ1anRhcyAg
PHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXSBMYXlvdXRDaGlsZHRJdGVyYXRvckFk
YXB0ZXIgLT4gTGF5b3V0Q2hpbGRJdGVyYXRvckFkYXB0ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
RWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwCmluZGV4IDIwN2NiNTMxZmM5Li4wYzJmNDYwYjkxZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwCkBAIC0xNDIs
MjUgKzE0MiwyNSBAQCB2b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjpjb2xsZWN0TWF0Y2hpbmdS
dWxlcyhjb25zdCBNYXRjaFJlcXVlc3QmIG1hdGNoUmVxdWVzdAogICAgIEFTU0VSVChtYXRjaFJl
cXVlc3QucnVsZVNldCk7CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghKG1fbW9kZSA9PSBTZWxl
Y3RvckNoZWNrZXI6Ok1vZGU6OkNvbGxlY3RpbmdSdWxlc0lnbm9yaW5nVmlydHVhbFBzZXVkb0Vs
ZW1lbnRzICYmIG1fcHNldWRvU3R5bGVSZXF1ZXN0LnBzZXVkb0lkICE9IFBzZXVkb0lkOjpOb25l
KSwgIldoZW4gaW4gU3R5bGVJbnZhbGlkYXRpb24gb3IgU2hhcmluZ1J1bGVzLCBTZWxlY3RvckNo
ZWNrZXIgZG9lcyBub3QgdHJ5IHRvIG1hdGNoIHRoZSBwc2V1ZG8gSUQuIFdoaWxlIEVsZW1lbnRS
dWxlQ29sbGVjdG9yIHN1cHBvcnRzIG1hdGNoaW5nIGEgcGFydGljdWxhciBwc2V1ZG9JZCBpbiB0
aGlzIGNhc2UsIHRoaXMgd291bGQgaW5kaWNhdGUgYSBlcnJvciBhdCB0aGUgY2FsbCBzaXRlIHNp
bmNlIG1hdGNoaW5nIGEgcGFydGljdWxhciBlbGVtZW50IHNob3VsZCBiZSB1bm5lY2Vzc2FyeS4i
KTsKIAotICAgIGF1dG8qIHNoYWRvd1Jvb3QgPSBtX2VsZW1lbnQuY29udGFpbmluZ1NoYWRvd1Jv
b3QoKTsKKyAgICBhdXRvKiBzaGFkb3dSb290ID0gZWxlbWVudCgpLmNvbnRhaW5pbmdTaGFkb3dS
b290KCk7CiAgICAgaWYgKHNoYWRvd1Jvb3QgJiYgc2hhZG93Um9vdC0+bW9kZSgpID09IFNoYWRv
d1Jvb3RNb2RlOjpVc2VyQWdlbnQpCiAgICAgICAgIGNvbGxlY3RNYXRjaGluZ1NoYWRvd1BzZXVk
b0VsZW1lbnRSdWxlcyhtYXRjaFJlcXVlc3QsIHJ1bGVSYW5nZSk7CiAKICAgICAvLyBXZSBuZWVk
IHRvIGNvbGxlY3QgdGhlIHJ1bGVzIGZvciBpZCwgY2xhc3MsIHRhZywgYW5kIGV2ZXJ5dGhpbmcg
ZWxzZSBpbnRvIGEgYnVmZmVyIGFuZAogICAgIC8vIHRoZW4gc29ydCB0aGUgYnVmZmVyLgotICAg
IGF1dG8mIGlkID0gbV9lbGVtZW50LmlkRm9yU3R5bGVSZXNvbHV0aW9uKCk7CisgICAgYXV0byYg
aWQgPSBlbGVtZW50KCkuaWRGb3JTdHlsZVJlc29sdXRpb24oKTsKICAgICBpZiAoIWlkLmlzTnVs
bCgpKQogICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QobWF0Y2hSZXF1ZXN0LnJ1
bGVTZXQtPmlkUnVsZXMoaWQpLCBtYXRjaFJlcXVlc3QsIHJ1bGVSYW5nZSk7Ci0gICAgaWYgKG1f
ZWxlbWVudC5oYXNDbGFzcygpKSB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9l
bGVtZW50LmNsYXNzTmFtZXMoKS5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIGNvbGxlY3RNYXRj
aGluZ1J1bGVzRm9yTGlzdChtYXRjaFJlcXVlc3QucnVsZVNldC0+Y2xhc3NSdWxlcyhtX2VsZW1l
bnQuY2xhc3NOYW1lcygpW2ldKSwgbWF0Y2hSZXF1ZXN0LCBydWxlUmFuZ2UpOworICAgIGlmIChl
bGVtZW50KCkuaGFzQ2xhc3MoKSkgeworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVs
ZW1lbnQoKS5jbGFzc05hbWVzKCkuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBjb2xsZWN0TWF0
Y2hpbmdSdWxlc0Zvckxpc3QobWF0Y2hSZXF1ZXN0LnJ1bGVTZXQtPmNsYXNzUnVsZXMoZWxlbWVu
dCgpLmNsYXNzTmFtZXMoKVtpXSksIG1hdGNoUmVxdWVzdCwgcnVsZVJhbmdlKTsKICAgICB9CiAK
LSAgICBpZiAobV9lbGVtZW50LmlzTGluaygpKQorICAgIGlmIChlbGVtZW50KCkuaXNMaW5rKCkp
CiAgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChtYXRjaFJlcXVlc3QucnVsZVNl
dC0+bGlua1BzZXVkb0NsYXNzUnVsZXMoKSwgbWF0Y2hSZXF1ZXN0LCBydWxlUmFuZ2UpOwotICAg
IGlmIChTZWxlY3RvckNoZWNrZXI6Om1hdGNoZXNGb2N1c1BzZXVkb0NsYXNzKG1fZWxlbWVudCkp
CisgICAgaWYgKFNlbGVjdG9yQ2hlY2tlcjo6bWF0Y2hlc0ZvY3VzUHNldWRvQ2xhc3MoZWxlbWVu
dCgpKSkKICAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KG1hdGNoUmVxdWVzdC5y
dWxlU2V0LT5mb2N1c1BzZXVkb0NsYXNzUnVsZXMoKSwgbWF0Y2hSZXF1ZXN0LCBydWxlUmFuZ2Up
OwotICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChtYXRjaFJlcXVlc3QucnVsZVNldC0+
dGFnUnVsZXMobV9lbGVtZW50LmxvY2FsTmFtZSgpLCBtX2VsZW1lbnQuaXNIVE1MRWxlbWVudCgp
ICYmIG1fZWxlbWVudC5kb2N1bWVudCgpLmlzSFRNTERvY3VtZW50KCkpLCBtYXRjaFJlcXVlc3Qs
IHJ1bGVSYW5nZSk7CisgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KG1hdGNoUmVxdWVz
dC5ydWxlU2V0LT50YWdSdWxlcyhlbGVtZW50KCkubG9jYWxOYW1lKCksIGVsZW1lbnQoKS5pc0hU
TUxFbGVtZW50KCkgJiYgZWxlbWVudCgpLmRvY3VtZW50KCkuaXNIVE1MRG9jdW1lbnQoKSksIG1h
dGNoUmVxdWVzdCwgcnVsZVJhbmdlKTsKICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3Qo
bWF0Y2hSZXF1ZXN0LnJ1bGVTZXQtPnVuaXZlcnNhbFJ1bGVzKCksIG1hdGNoUmVxdWVzdCwgcnVs
ZVJhbmdlKTsKIH0KIApAQCAtMTk0LDE4ICsxOTQsMTggQEAgdm9pZCBFbGVtZW50UnVsZUNvbGxl
Y3Rvcjo6bWF0Y2hBdXRob3JSdWxlcyhib29sIGluY2x1ZGVFbXB0eVJ1bGVzKQogICAgICAgICBj
b2xsZWN0TWF0Y2hpbmdSdWxlcyhtYXRjaFJlcXVlc3QsIHJ1bGVSYW5nZSk7CiAgICAgfQogCi0g
ICAgYXV0byogcGFyZW50ID0gbV9lbGVtZW50LnBhcmVudEVsZW1lbnQoKTsKKyAgICBhdXRvKiBw
YXJlbnQgPSBlbGVtZW50KCkucGFyZW50RWxlbWVudCgpOwogICAgIGlmIChwYXJlbnQgJiYgcGFy
ZW50LT5zaGFkb3dSb290KCkpCiAgICAgICAgIG1hdGNoU2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxl
cyhpbmNsdWRlRW1wdHlSdWxlcywgcnVsZVJhbmdlKTsKIAotICAgIGlmIChtX2VsZW1lbnQuc2hh
ZG93Um9vdCgpKQorICAgIGlmIChlbGVtZW50KCkuc2hhZG93Um9vdCgpKQogICAgICAgICBtYXRj
aEhvc3RQc2V1ZG9DbGFzc1J1bGVzKGluY2x1ZGVFbXB0eVJ1bGVzLCBydWxlUmFuZ2UpOwogCi0g
ICAgaWYgKG1fZWxlbWVudC5pc0luU2hhZG93VHJlZSgpKSB7CisgICAgaWYgKGVsZW1lbnQoKS5p
c0luU2hhZG93VHJlZSgpKSB7CiAgICAgICAgIG1hdGNoQXV0aG9yU2hhZG93UHNldWRvRWxlbWVu
dFJ1bGVzKGluY2x1ZGVFbXB0eVJ1bGVzLCBydWxlUmFuZ2UpOwogCi0gICAgICAgIGlmICghbV9l
bGVtZW50LnBhcnROYW1lcygpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG1hdGNoUGFydFBzZXVk
b0VsZW1lbnRSdWxlcygqbV9lbGVtZW50LmNvbnRhaW5pbmdTaGFkb3dSb290KCksIGluY2x1ZGVF
bXB0eVJ1bGVzLCBydWxlUmFuZ2UpOworICAgICAgICBpZiAoIWVsZW1lbnQoKS5wYXJ0TmFtZXMo
KS5pc0VtcHR5KCkpCisgICAgICAgICAgICBtYXRjaFBhcnRQc2V1ZG9FbGVtZW50UnVsZXMoKmVs
ZW1lbnQoKS5jb250YWluaW5nU2hhZG93Um9vdCgpLCBpbmNsdWRlRW1wdHlSdWxlcywgcnVsZVJh
bmdlKTsKICAgICB9CiAKICAgICBzb3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMoKTsKQEAgLTIx
Myw4ICsyMTMsOCBAQCB2b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjptYXRjaEF1dGhvclJ1bGVz
KGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMpCiAKIHZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6Om1h
dGNoQXV0aG9yU2hhZG93UHNldWRvRWxlbWVudFJ1bGVzKGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMs
IFN0eWxlUmVzb2x2ZXI6OlJ1bGVSYW5nZSYgcnVsZVJhbmdlKQogewotICAgIEFTU0VSVChtX2Vs
ZW1lbnQuaXNJblNoYWRvd1RyZWUoKSk7Ci0gICAgYXV0byYgc2hhZG93Um9vdCA9ICptX2VsZW1l
bnQuY29udGFpbmluZ1NoYWRvd1Jvb3QoKTsKKyAgICBBU1NFUlQoZWxlbWVudCgpLmlzSW5TaGFk
b3dUcmVlKCkpOworICAgIGF1dG8mIHNoYWRvd1Jvb3QgPSAqZWxlbWVudCgpLmNvbnRhaW5pbmdT
aGFkb3dSb290KCk7CiAgICAgaWYgKHNoYWRvd1Jvb3QubW9kZSgpICE9IFNoYWRvd1Jvb3RNb2Rl
OjpVc2VyQWdlbnQpCiAgICAgICAgIHJldHVybjsKICAgICAvLyBMb29rIHVwIHNoYWRvdyBwc2V1
ZG8gZWxlbWVudHMgYWxzbyBmcm9tIHRoZSBob3N0IHNjb3BlIGF1dGhvciBzdHlsZSBhcyB0aGV5
IGFyZSB3ZWItZXhwb3NlZC4KQEAgLTIyNSw5ICsyMjUsOSBAQCB2b2lkIEVsZW1lbnRSdWxlQ29s
bGVjdG9yOjptYXRjaEF1dGhvclNoYWRvd1BzZXVkb0VsZW1lbnRSdWxlcyhib29sIGluY2x1ZGVF
bXB0eQogCiB2b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjptYXRjaEhvc3RQc2V1ZG9DbGFzc1J1
bGVzKGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMsIFN0eWxlUmVzb2x2ZXI6OlJ1bGVSYW5nZSYgcnVs
ZVJhbmdlKQogewotICAgIEFTU0VSVChtX2VsZW1lbnQuc2hhZG93Um9vdCgpKTsKKyAgICBBU1NF
UlQoZWxlbWVudCgpLnNoYWRvd1Jvb3QoKSk7CiAKLSAgICBhdXRvJiBzaGFkb3dBdXRob3JTdHls
ZSA9IG1fZWxlbWVudC5zaGFkb3dSb290KCktPnN0eWxlU2NvcGUoKS5yZXNvbHZlcigpLnJ1bGVT
ZXRzKCkuYXV0aG9yU3R5bGUoKTsKKyAgICBhdXRvJiBzaGFkb3dBdXRob3JTdHlsZSA9IGVsZW1l
bnQoKS5zaGFkb3dSb290KCktPnN0eWxlU2NvcGUoKS5yZXNvbHZlcigpLnJ1bGVTZXRzKCkuYXV0
aG9yU3R5bGUoKTsKICAgICBhdXRvJiBzaGFkb3dIb3N0UnVsZXMgPSBzaGFkb3dBdXRob3JTdHls
ZS5ob3N0UHNldWRvQ2xhc3NSdWxlcygpOwogICAgIGlmIChzaGFkb3dIb3N0UnVsZXMuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm47CkBAIC0yNDAsNyArMjQwLDcgQEAgdm9pZCBFbGVtZW50UnVs
ZUNvbGxlY3Rvcjo6bWF0Y2hIb3N0UHNldWRvQ2xhc3NSdWxlcyhib29sIGluY2x1ZGVFbXB0eVJ1
bGVzLCBTdHkKIAogdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hTbG90dGVkUHNldWRv
RWxlbWVudFJ1bGVzKGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMsIFN0eWxlUmVzb2x2ZXI6OlJ1bGVS
YW5nZSYgcnVsZVJhbmdlKQogewotICAgIGF1dG8qIHNsb3QgPSBtX2VsZW1lbnQuYXNzaWduZWRT
bG90KCk7CisgICAgYXV0byogc2xvdCA9IGVsZW1lbnQoKS5hc3NpZ25lZFNsb3QoKTsKICAgICBh
dXRvIHN0eWxlU2NvcGVPcmRpbmFsID0gU3R5bGU6OlNjb3BlT3JkaW5hbDo6Rmlyc3RTbG90Owog
CiAgICAgZm9yICg7IHNsb3Q7IHNsb3QgPSBzbG90LT5hc3NpZ25lZFNsb3QoKSwgKytzdHlsZVNj
b3BlT3JkaW5hbCkgewpAQCAtMjY1LDEyICsyNjUsMTIgQEAgdm9pZCBFbGVtZW50UnVsZUNvbGxl
Y3Rvcjo6bWF0Y2hTbG90dGVkUHNldWRvRWxlbWVudFJ1bGVzKGJvb2wgaW5jbHVkZUVtcHR5UnVs
ZXMKIAogdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hQYXJ0UHNldWRvRWxlbWVudFJ1
bGVzKGNvbnN0IFNoYWRvd1Jvb3QmIGNvbnRhaW5pbmdTaGFkb3dSb290LCBib29sIGluY2x1ZGVF
bXB0eVJ1bGVzLCBTdHlsZVJlc29sdmVyOjpSdWxlUmFuZ2UmIHJ1bGVSYW5nZSkKIHsKLSAgICBB
U1NFUlQobV9lbGVtZW50LmlzSW5TaGFkb3dUcmVlKCkpOwotICAgIEFTU0VSVCghbV9lbGVtZW50
LnBhcnROYW1lcygpLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKGVsZW1lbnQoKS5pc0luU2hhZG93
VHJlZSgpKTsKKyAgICBBU1NFUlQoIWVsZW1lbnQoKS5wYXJ0TmFtZXMoKS5pc0VtcHR5KCkpOwog
CiAgICAgYXV0byYgc2hhZG93SG9zdCA9ICpjb250YWluaW5nU2hhZG93Um9vdC5ob3N0KCk7CiAg
ICAgewotICAgICAgICBTZXRGb3JTY29wZTxjb25zdCBFbGVtZW50Kj4gcGFydE1hdGNoaW5nU2Nv
cGUobV9zaGFkb3dIb3N0SW5QYXJ0UnVsZVNjb3BlLCAmc2hhZG93SG9zdCk7CisgICAgICAgIFNl
dEZvclNjb3BlPFJlZlB0cjxjb25zdCBFbGVtZW50Pj4gcGFydE1hdGNoaW5nU2NvcGUobV9zaGFk
b3dIb3N0SW5QYXJ0UnVsZVNjb3BlLCAmc2hhZG93SG9zdCk7CiAKICAgICAgICAgYXV0byYgaG9z
dEF1dGhvclJ1bGVzID0gU3R5bGU6OlNjb3BlOjpmb3JOb2RlKHNoYWRvd0hvc3QpLnJlc29sdmVy
KCkucnVsZVNldHMoKS5hdXRob3JTdHlsZSgpOwogICAgICAgICBNYXRjaFJlcXVlc3QgaG9zdEF1
dGhvclJlcXVlc3QgeyAmaG9zdEF1dGhvclJ1bGVzLCBpbmNsdWRlRW1wdHlSdWxlcywgU3R5bGU6
OlNjb3BlT3JkaW5hbDo6Q29udGFpbmluZ0hvc3QgfTsKQEAgLTI4OCwyMiArMjg4LDIyIEBAIHZv
aWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6Om1hdGNoUGFydFBzZXVkb0VsZW1lbnRSdWxlcyhjb25z
dCBTaGFkb3dSb290JiBjb250YWluCiB2b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjpjb2xsZWN0
TWF0Y2hpbmdTaGFkb3dQc2V1ZG9FbGVtZW50UnVsZXMoY29uc3QgTWF0Y2hSZXF1ZXN0JiBtYXRj
aFJlcXVlc3QsIFN0eWxlUmVzb2x2ZXI6OlJ1bGVSYW5nZSYgcnVsZVJhbmdlKQogewogICAgIEFT
U0VSVChtYXRjaFJlcXVlc3QucnVsZVNldCk7Ci0gICAgQVNTRVJUKG1fZWxlbWVudC5jb250YWlu
aW5nU2hhZG93Um9vdCgpLT5tb2RlKCkgPT0gU2hhZG93Um9vdE1vZGU6OlVzZXJBZ2VudCk7Cisg
ICAgQVNTRVJUKGVsZW1lbnQoKS5jb250YWluaW5nU2hhZG93Um9vdCgpLT5tb2RlKCkgPT0gU2hh
ZG93Um9vdE1vZGU6OlVzZXJBZ2VudCk7CiAKICAgICBhdXRvJiBydWxlcyA9ICptYXRjaFJlcXVl
c3QucnVsZVNldDsKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgLy8gRlhJTUU6IFdlYlZU
VCBzaG91bGQgbm90IGJlIGRvbmUgYnkgc3R5bGluZyBVQSBzaGFkb3cgdHJlZXMgbGlrZSB0aGlz
LgotICAgIGlmIChtX2VsZW1lbnQuaXNXZWJWVFRFbGVtZW50KCkpCisgICAgaWYgKGVsZW1lbnQo
KS5pc1dlYlZUVEVsZW1lbnQoKSkKICAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0
KHJ1bGVzLmN1ZVBzZXVkb1J1bGVzKCksIG1hdGNoUmVxdWVzdCwgcnVsZVJhbmdlKTsKICNlbmRp
ZgotICAgIGF1dG8mIHBzZXVkb0lkID0gbV9lbGVtZW50LnNoYWRvd1BzZXVkb0lkKCk7CisgICAg
YXV0byYgcHNldWRvSWQgPSBlbGVtZW50KCkuc2hhZG93UHNldWRvSWQoKTsKICAgICBpZiAoIXBz
ZXVkb0lkLmlzRW1wdHkoKSkKICAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KHJ1
bGVzLnNoYWRvd1BzZXVkb0VsZW1lbnRSdWxlcyhwc2V1ZG9JZCksIG1hdGNoUmVxdWVzdCwgcnVs
ZVJhbmdlKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFJ1bGVTZXQ6OlJ1bGVEYXRhVmVjdG9yPiBF
bGVtZW50UnVsZUNvbGxlY3Rvcjo6Y29sbGVjdFNsb3R0ZWRQc2V1ZG9FbGVtZW50UnVsZXNGb3JT
bG90KGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMpCiB7Ci0gICAgQVNTRVJUKGlzPEhUTUxTbG90RWxl
bWVudD4obV9lbGVtZW50KSk7CisgICAgQVNTRVJUKGlzPEhUTUxTbG90RWxlbWVudD4oZWxlbWVu
dCgpKSk7CiAKICAgICBjbGVhck1hdGNoZWRSdWxlcygpOwogCkBAIC0zNTAsNyArMzUwLDcgQEAg
dm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hVQVJ1bGVzKCkKICAgICBtYXRjaFVBUnVs
ZXMoKnVzZXJBZ2VudFN0eWxlU2hlZXQpOwogCiAgICAgLy8gSW4gcXVpcmtzIG1vZGUsIHdlIG1h
dGNoIHJ1bGVzIGZyb20gdGhlIHF1aXJrcyB1c2VyIGFnZW50IHNoZWV0LgotICAgIGlmIChtX2Vs
ZW1lbnQuZG9jdW1lbnQoKS5pblF1aXJrc01vZGUoKSkKKyAgICBpZiAoZWxlbWVudCgpLmRvY3Vt
ZW50KCkuaW5RdWlya3NNb2RlKCkpCiAgICAgICAgIG1hdGNoVUFSdWxlcygqQ1NTRGVmYXVsdFN0
eWxlU2hlZXRzOjpkZWZhdWx0UXVpcmtzU3R5bGUpOwogCiAgICAgaWYgKG1fdXNlckFnZW50TWVk
aWFRdWVyeVN0eWxlKQpAQCAtMzg1LDcgKzM4NSw3IEBAIGlubGluZSBib29sIEVsZW1lbnRSdWxl
Q29sbGVjdG9yOjpydWxlTWF0Y2hlcyhjb25zdCBSdWxlRGF0YSYgcnVsZURhdGEsIHVuc2lnbmVk
CiAgICAgLy8gV2Uga25vdyBhIHN1ZmZpY2llbnRseSBzaW1wbGUgc2luZ2xlIHBhcnQgc2VsZWN0
b3IgbWF0Y2hlcyBzaW1wbHkgYmVjYXVzZSB3ZSBmb3VuZCBpdCBmcm9tIHRoZSBydWxlIGhhc2gg
d2hlbiBmaWx0ZXJpbmcgdGhlIFJ1bGVTZXQuCiAgICAgLy8gVGhpcyBpcyBsaW1pdGVkIHRvIEhU
TUwgb25seSBzbyB3ZSBkb24ndCBuZWVkIHRvIGNoZWNrIHRoZSBuYW1lc3BhY2UgKGJlY2F1c2Ug
b2YgdGFnIG5hbWUgbWF0Y2gpLgogICAgIE1hdGNoQmFzZWRPblJ1bGVIYXNoIG1hdGNoQmFzZWRP
blJ1bGVIYXNoID0gcnVsZURhdGEubWF0Y2hCYXNlZE9uUnVsZUhhc2goKTsKLSAgICBpZiAobWF0
Y2hCYXNlZE9uUnVsZUhhc2ggIT0gTWF0Y2hCYXNlZE9uUnVsZUhhc2g6Ok5vbmUgJiYgbV9lbGVt
ZW50LmlzSFRNTEVsZW1lbnQoKSkgeworICAgIGlmIChtYXRjaEJhc2VkT25SdWxlSGFzaCAhPSBN
YXRjaEJhc2VkT25SdWxlSGFzaDo6Tm9uZSAmJiBlbGVtZW50KCkuaXNIVE1MRWxlbWVudCgpKSB7
CiAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9wc2V1ZG9TdHlsZVJlcXVlc3QucHNldWRv
SWQgPT0gUHNldWRvSWQ6Ok5vbmUsICJJZiB3ZSBtYXRjaCBiYXNlZCBvbiB0aGUgcnVsZSBoYXNo
IHdoaWxlIGNvbGxlY3RpbmcgZm9yIGEgcGFydGljdWxhciBwc2V1ZG8gZWxlbWVudCBJRCwgd2Ug
d291bGQgYWRkIGluY29ycmVjdCBydWxlcyBmb3IgdGhhdCBwc2V1ZG8gZWxlbWVudCBJRC4gV2Ug
c2hvdWxkIG5ldmVyIGVuZCBpbiBydWxlTWF0Y2hlcygpIHdpdGggYSBwc2V1ZG8gZWxlbWVudCBp
ZiB0aGUgcnVsZURhdGEgY2Fubm90IG1hdGNoIGFueSBwc2V1ZG8gZWxlbWVudC4iKTsKIAogICAg
ICAgICBzd2l0Y2ggKG1hdGNoQmFzZWRPblJ1bGVIYXNoKSB7CkBAIC00MjEsMTIgKzQyMSwxMiBA
QCBpbmxpbmUgYm9vbCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6cnVsZU1hdGNoZXMoY29uc3QgUnVs
ZURhdGEmIHJ1bGVEYXRhLCB1bnNpZ25lZAogICAgICAgICBhdXRvIHNlbGVjdG9yQ2hlY2tlciA9
IFNlbGVjdG9yQ29tcGlsZXI6OnJ1bGVDb2xsZWN0b3JTaW1wbGVTZWxlY3RvckNoZWNrZXJGdW5j
dGlvbihjb21waWxlZFNlbGVjdG9yQ2hlY2tlciwgY29tcGlsZWRTZWxlY3Rvci5zdGF0dXMpOwog
I2lmICFBU1NFUlRfTVNHX0RJU0FCTEVECiAgICAgICAgIHVuc2lnbmVkIGlnbm9yZVNwZWNpZmlj
aXR5OwotICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFzZWxlY3RvckNoZWNrZXIoJm1fZWxl
bWVudCwgJmlnbm9yZVNwZWNpZmljaXR5KSB8fCBtX3BzZXVkb1N0eWxlUmVxdWVzdC5wc2V1ZG9J
ZCA9PSBQc2V1ZG9JZDo6Tm9uZSwgIldoZW4gbWF0Y2hpbmcgcHNldWRvIGVsZW1lbnRzLCB3ZSBz
aG91bGQgbmV2ZXIgY29tcGlsZSBhIHNlbGVjdG9yIGNoZWNrZXIgd2l0aG91dCBjb250ZXh0IHVu
bGVzcyBpdCBjYW5ub3QgbWF0Y2ggYW55dGhpbmcuIik7CisgICAgICAgIEFTU0VSVF9XSVRIX01F
U1NBR0UoIXNlbGVjdG9yQ2hlY2tlcigmZWxlbWVudCgpLCAmaWdub3JlU3BlY2lmaWNpdHkpIHx8
IG1fcHNldWRvU3R5bGVSZXF1ZXN0LnBzZXVkb0lkID09IFBzZXVkb0lkOjpOb25lLCAiV2hlbiBt
YXRjaGluZyBwc2V1ZG8gZWxlbWVudHMsIHdlIHNob3VsZCBuZXZlciBjb21waWxlIGEgc2VsZWN0
b3IgY2hlY2tlciB3aXRob3V0IGNvbnRleHQgdW5sZXNzIGl0IGNhbm5vdCBtYXRjaCBhbnl0aGlu
Zy4iKTsKICNlbmRpZgogI2lmIENTU19TRUxFQ1RPUl9KSVRfUFJPRklMSU5HCiAgICAgICAgIHJ1
bGVEYXRhLmNvbXBpbGVkU2VsZWN0b3JVc2VkKCk7CiAjZW5kaWYKLSAgICAgICAgYm9vbCBzZWxl
Y3Rvck1hdGNoZXMgPSBzZWxlY3RvckNoZWNrZXIoJm1fZWxlbWVudCwgJnNwZWNpZmljaXR5KTsK
KyAgICAgICAgYm9vbCBzZWxlY3Rvck1hdGNoZXMgPSBzZWxlY3RvckNoZWNrZXIoJmVsZW1lbnQo
KSwgJnNwZWNpZmljaXR5KTsKIAogICAgICAgICBpZiAoc2VsZWN0b3JNYXRjaGVzICYmIHJ1bGVE
YXRhLmNvbnRhaW5zVW5jb21tb25BdHRyaWJ1dGVTZWxlY3RvcigpKQogICAgICAgICAgICAgbV9k
aWRNYXRjaFVuY29tbW9uQXR0cmlidXRlU2VsZWN0b3IgPSB0cnVlOwpAQCAtNDQwLDcgKzQ0MCw3
IEBAIGlubGluZSBib29sIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjpydWxlTWF0Y2hlcyhjb25zdCBS
dWxlRGF0YSYgcnVsZURhdGEsIHVuc2lnbmVkCiAgICAgY29udGV4dC5zY3JvbGxiYXIgPSBtX3Bz
ZXVkb1N0eWxlUmVxdWVzdC5zY3JvbGxiYXI7CiAgICAgY29udGV4dC5zY3JvbGxiYXJQYXJ0ID0g
bV9wc2V1ZG9TdHlsZVJlcXVlc3Quc2Nyb2xsYmFyUGFydDsKICAgICBjb250ZXh0LmlzTWF0Y2hp
bmdIb3N0UHNldWRvQ2xhc3MgPSBtX2lzTWF0Y2hpbmdIb3N0UHNldWRvQ2xhc3M7Ci0gICAgY29u
dGV4dC5zaGFkb3dIb3N0SW5QYXJ0UnVsZVNjb3BlID0gbV9zaGFkb3dIb3N0SW5QYXJ0UnVsZVNj
b3BlOworICAgIGNvbnRleHQuc2hhZG93SG9zdEluUGFydFJ1bGVTY29wZSA9IG1fc2hhZG93SG9z
dEluUGFydFJ1bGVTY29wZS5nZXQoKTsKIAogICAgIGJvb2wgc2VsZWN0b3JNYXRjaGVzOwogI2lm
IEVOQUJMRShDU1NfU0VMRUNUT1JfSklUKQpAQCAtNDUyLDcgKzQ1Miw3IEBAIGlubGluZSBib29s
IEVsZW1lbnRSdWxlQ29sbGVjdG9yOjpydWxlTWF0Y2hlcyhjb25zdCBSdWxlRGF0YSYgcnVsZURh
dGEsIHVuc2lnbmVkCiAjaWYgQ1NTX1NFTEVDVE9SX0pJVF9QUk9GSUxJTkcKICAgICAgICAgY29t
cGlsZWRTZWxlY3Rvci51c2VDb3VudCsrOwogI2VuZGlmCi0gICAgICAgIHNlbGVjdG9yTWF0Y2hl
cyA9IHNlbGVjdG9yQ2hlY2tlcigmbV9lbGVtZW50LCAmY29udGV4dCwgJnNwZWNpZmljaXR5KTsK
KyAgICAgICAgc2VsZWN0b3JNYXRjaGVzID0gc2VsZWN0b3JDaGVja2VyKCZlbGVtZW50KCksICZj
b250ZXh0LCAmc3BlY2lmaWNpdHkpOwogICAgIH0gZWxzZQogI2VuZGlmIC8vIEVOQUJMRShDU1Nf
U0VMRUNUT1JfSklUKQogICAgIHsKQEAgLTQ2Myw4ICs0NjMsOCBAQCBpbmxpbmUgYm9vbCBFbGVt
ZW50UnVsZUNvbGxlY3Rvcjo6cnVsZU1hdGNoZXMoY29uc3QgUnVsZURhdGEmIHJ1bGVEYXRhLCB1
bnNpZ25lZAogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAg
ICAvLyBTbG93IHBhdGguCi0gICAgICAgIFNlbGVjdG9yQ2hlY2tlciBzZWxlY3RvckNoZWNrZXIo
bV9lbGVtZW50LmRvY3VtZW50KCkpOwotICAgICAgICBzZWxlY3Rvck1hdGNoZXMgPSBzZWxlY3Rv
ckNoZWNrZXIubWF0Y2goKnNlbGVjdG9yLCBtX2VsZW1lbnQsIGNvbnRleHQsIHNwZWNpZmljaXR5
KTsKKyAgICAgICAgU2VsZWN0b3JDaGVja2VyIHNlbGVjdG9yQ2hlY2tlcihlbGVtZW50KCkuZG9j
dW1lbnQoKSk7CisgICAgICAgIHNlbGVjdG9yTWF0Y2hlcyA9IHNlbGVjdG9yQ2hlY2tlci5tYXRj
aCgqc2VsZWN0b3IsIGVsZW1lbnQoKSwgY29udGV4dCwgc3BlY2lmaWNpdHkpOwogICAgIH0KIAog
ICAgIGlmIChydWxlRGF0YS5jb250YWluc1VuY29tbW9uQXR0cmlidXRlU2VsZWN0b3IoKSkgewpA
QCAtNTMyLDggKzUzMiw4IEBAIHZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6Om1hdGNoQWxsUnVs
ZXMoYm9vbCBtYXRjaEF1dGhvckFuZFVzZXJTdHlsZXMsIGJvb2wgaW5jCiAgICAgICAgIG1hdGNo
VXNlclJ1bGVzKGZhbHNlKTsKIAogICAgIC8vIE5vdyBjaGVjayBhdXRob3IgcnVsZXMsIGJlZ2lu
bmluZyBmaXJzdCB3aXRoIHByZXNlbnRhdGlvbmFsIGF0dHJpYnV0ZXMgbWFwcGVkIGZyb20gSFRN
TC4KLSAgICBpZiAoaXM8U3R5bGVkRWxlbWVudD4obV9lbGVtZW50KSkgewotICAgICAgICBhdXRv
JiBzdHlsZWRFbGVtZW50ID0gZG93bmNhc3Q8U3R5bGVkRWxlbWVudD4obV9lbGVtZW50KTsKKyAg
ICBpZiAoaXM8U3R5bGVkRWxlbWVudD4oZWxlbWVudCgpKSkgeworICAgICAgICBhdXRvJiBzdHls
ZWRFbGVtZW50ID0gZG93bmNhc3Q8U3R5bGVkRWxlbWVudD4oZWxlbWVudCgpKTsKICAgICAgICAg
YWRkRWxlbWVudFN0eWxlUHJvcGVydGllcyhzdHlsZWRFbGVtZW50LnByZXNlbnRhdGlvbkF0dHJp
YnV0ZVN0eWxlKCkpOwogCiAgICAgICAgIC8vIE5vdyB3ZSBjaGVjayBhZGRpdGlvbmFsIG1hcHBl
ZCBkZWNsYXJhdGlvbnMuCkBAIC01NTMsOCArNTUzLDggQEAgdm9pZCBFbGVtZW50UnVsZUNvbGxl
Y3Rvcjo6bWF0Y2hBbGxSdWxlcyhib29sIG1hdGNoQXV0aG9yQW5kVXNlclN0eWxlcywgYm9vbCBp
bmMKICAgICBpZiAobWF0Y2hBdXRob3JBbmRVc2VyU3R5bGVzKQogICAgICAgICBtYXRjaEF1dGhv
clJ1bGVzKGZhbHNlKTsKIAotICAgIGlmIChtYXRjaEF1dGhvckFuZFVzZXJTdHlsZXMgJiYgaXM8
U3R5bGVkRWxlbWVudD4obV9lbGVtZW50KSkgewotICAgICAgICBhdXRvJiBzdHlsZWRFbGVtZW50
ID0gZG93bmNhc3Q8U3R5bGVkRWxlbWVudD4obV9lbGVtZW50KTsKKyAgICBpZiAobWF0Y2hBdXRo
b3JBbmRVc2VyU3R5bGVzICYmIGlzPFN0eWxlZEVsZW1lbnQ+KGVsZW1lbnQoKSkpIHsKKyAgICAg
ICAgYXV0byYgc3R5bGVkRWxlbWVudCA9IGRvd25jYXN0PFN0eWxlZEVsZW1lbnQ+KGVsZW1lbnQo
KSk7CiAgICAgICAgIC8vIE5vdyBjaGVjayBvdXIgaW5saW5lIHN0eWxlIGF0dHJpYnV0ZS4KICAg
ICAgICAgaWYgKHN0eWxlZEVsZW1lbnQuaW5saW5lU3R5bGUoKSkgewogICAgICAgICAgICAgLy8g
SW5saW5lIHN0eWxlIGlzIGltbXV0YWJsZSBhcyBsb25nIGFzIHRoZXJlIGlzIG5vIENTU09NIHdy
YXBwZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0
b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5oCmluZGV4IGRh
OTAxOThjMTJhLi5jYWFhMWQwOWIxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0Vs
ZW1lbnRSdWxlQ29sbGVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxl
Q29sbGVjdG9yLmgKQEAgLTg5LDcgKzg5LDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgYWRkTWF0
Y2hlZFJ1bGUoY29uc3QgUnVsZURhdGEmLCB1bnNpZ25lZCBzcGVjaWZpY2l0eSwgU3R5bGU6OlNj
b3BlT3JkaW5hbCwgU3R5bGVSZXNvbHZlcjo6UnVsZVJhbmdlJik7CiAKLSAgICBjb25zdCBFbGVt
ZW50JiBtX2VsZW1lbnQ7CisgICAgY29uc3QgRWxlbWVudCYgZWxlbWVudCgpIGNvbnN0IHsgcmV0
dXJuIG1fZWxlbWVudC5nZXQoKTsgfQorCisgICAgY29uc3QgUmVmPGNvbnN0IEVsZW1lbnQ+IG1f
ZWxlbWVudDsKICAgICBjb25zdCBSdWxlU2V0JiBtX2F1dGhvclN0eWxlOwogICAgIGNvbnN0IFJ1
bGVTZXQqIG1fdXNlclN0eWxlIHsgbnVsbHB0ciB9OwogICAgIGNvbnN0IFJ1bGVTZXQqIG1fdXNl
ckFnZW50TWVkaWFRdWVyeVN0eWxlIHsgbnVsbHB0ciB9OwpAQCAtMTAwLDcgKzEwMiw3IEBAIHBy
aXZhdGU6CiAgICAgU2VsZWN0b3JDaGVja2VyOjpNb2RlIG1fbW9kZSB7IFNlbGVjdG9yQ2hlY2tl
cjo6TW9kZTo6UmVzb2x2aW5nU3R5bGUgfTsKICAgICBib29sIG1faXNNYXRjaGluZ1Nsb3R0ZWRQ
c2V1ZG9FbGVtZW50cyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzTWF0Y2hpbmdIb3N0UHNldWRv
Q2xhc3MgeyBmYWxzZSB9OwotICAgIGNvbnN0IEVsZW1lbnQqIG1fc2hhZG93SG9zdEluUGFydFJ1
bGVTY29wZSB7IG51bGxwdHIgfTsKKyAgICBSZWZQdHI8Y29uc3QgRWxlbWVudD4gbV9zaGFkb3dI
b3N0SW5QYXJ0UnVsZVNjb3BlOwogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8UnVsZVNldDo6
UnVsZURhdGFWZWN0b3I+PiBtX2tlZXBBbGl2ZVNsb3R0ZWRQc2V1ZG9FbGVtZW50UnVsZXM7CiAK
ICAgICBWZWN0b3I8TWF0Y2hlZFJ1bGUsIDY0PiBtX21hdGNoZWRSdWxlczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmlu
ZGV4IDhjYzIxNGExYWYwLi4wNGFiYTEzZGY4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC00NzcsMTQgKzQ3
NywxNCBAQCBwdWJsaWM6CiAgICAgLy8gUGVyZm9ybSB0aGUgZGVmYXVsdCBhY3Rpb24gZm9yIGFu
IGV2ZW50LgogICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Jik7CiAK
LSAgICB2b2lkIHJlZigpOwotICAgIHZvaWQgZGVyZWYoKTsKKyAgICB2b2lkIHJlZigpIGNvbnN0
OworICAgIHZvaWQgZGVyZWYoKSBjb25zdDsKICAgICBib29sIGhhc09uZVJlZigpIGNvbnN0Owog
ICAgIHVuc2lnbmVkIHJlZkNvdW50KCkgY29uc3Q7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgYm9v
bCBtX2RlbGV0aW9uSGFzQmVndW4geyBmYWxzZSB9OwotICAgIGJvb2wgbV9pblJlbW92ZWRMYXN0
UmVmRnVuY3Rpb24geyBmYWxzZSB9OworICAgIG11dGFibGUgYm9vbCBtX2luUmVtb3ZlZExhc3RS
ZWZGdW5jdGlvbiB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2Fkb3B0aW9uSXNSZXF1aXJlZCB7IHRy
dWUgfTsKICNlbmRpZgogCkBAIC02NjgsNyArNjY4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgdm9p
ZCBvcGVyYXRvcigpKE5vZGVSYXJlRGF0YSopIGNvbnN0OwogICAgIH07CiAKLSAgICB1aW50MzJf
dCBtX3JlZkNvdW50QW5kUGFyZW50Qml0IHsgc19yZWZDb3VudEluY3JlbWVudCB9OworICAgIG11
dGFibGUgdWludDMyX3QgbV9yZWZDb3VudEFuZFBhcmVudEJpdCB7IHNfcmVmQ291bnRJbmNyZW1l
bnQgfTsKICAgICBtdXRhYmxlIHVpbnQzMl90IG1fbm9kZUZsYWdzOwogCiAgICAgQ29udGFpbmVy
Tm9kZSogbV9wYXJlbnROb2RlIHsgbnVsbHB0ciB9OwpAQCAtNjkwLDcgKzY5MCw3IEBAIGlubGlu
ZSB2b2lkIGFkb3B0ZWQoTm9kZSogbm9kZSkKIH0KICNlbmRpZgogCi1BTFdBWVNfSU5MSU5FIHZv
aWQgTm9kZTo6cmVmKCkKK0FMV0FZU19JTkxJTkUgdm9pZCBOb2RlOjpyZWYoKSBjb25zdAogewog
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKCFtX2RlbGV0aW9uSGFzQmVn
dW4pOwpAQCAtNjk5LDcgKzY5OSw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBOb2RlOjpyZWYoKQog
ICAgIG1fcmVmQ291bnRBbmRQYXJlbnRCaXQgKz0gc19yZWZDb3VudEluY3JlbWVudDsKIH0KIAot
QUxXQVlTX0lOTElORSB2b2lkIE5vZGU6OmRlcmVmKCkKK0FMV0FZU19JTkxJTkUgdm9pZCBOb2Rl
OjpkZXJlZigpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NF
UlQocmVmQ291bnQoKSk7CkBAIC03MTMsNyArNzEzLDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIE5v
ZGU6OmRlcmVmKCkKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgIG1faW5SZW1vdmVkTGFzdFJlZkZ1
bmN0aW9uID0gdHJ1ZTsKICNlbmRpZgotICAgICAgICByZW1vdmVkTGFzdFJlZigpOworICAgICAg
ICBjb25zdF9jYXN0PE5vZGUmPigqdGhpcykucmVtb3ZlZExhc3RSZWYoKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBtX3JlZkNvdW50QW5kUGFyZW50Qml0ID0gdXBkYXRlZFJlZkNvdW50
Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>