<?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>175718</bug_id>
          
          <creation_ts>2017-08-18 04:46:40 -0700</creation_ts>
          <short_desc>Factor render tree mutation code from RenderListItem to RenderTreeUpdater</short_desc>
          <delta_ts>2017-08-18 07:52:58 -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>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>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>kling</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1340035</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-08-18 04:46:40 -0700</bug_when>
    <thetext>We already stopped doing layout time mutations. We can now move the code out too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340037</commentid>
    <comment_count>1</comment_count>
      <attachid>318491</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-08-18 05:35:30 -0700</bug_when>
    <thetext>Created attachment 318491
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340046</commentid>
    <comment_count>2</comment_count>
      <attachid>318491</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2017-08-18 06:54:56 -0700</bug_when>
    <thetext>Comment on attachment 318491
patch

Another nice one.
r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340059</commentid>
    <comment_count>3</comment_count>
      <attachid>318491</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-18 07:52:25 -0700</bug_when>
    <thetext>Comment on attachment 318491
patch

Clearing flags on attachment: 318491

Committed r220916: &lt;http://trac.webkit.org/changeset/220916&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340060</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-18 07:52:27 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340061</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-08-18 07:52:58 -0700</bug_when>
    <thetext>&lt;rdar://problem/33962529&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318491</attachid>
            <date>2017-08-18 05:35:30 -0700</date>
            <delta_ts>2017-08-18 07:52:25 -0700</delta_ts>
            <desc>patch</desc>
            <filename>list-item-rendertreeupdater.patch</filename>
            <type>text/plain</type>
            <size>25436</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMDkxNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBACisyMDE3LTA4LTE4ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBGYWN0b3IgcmVuZGVyIHRyZWUg
bXV0YXRpb24gY29kZSBmcm9tIFJlbmRlckxpc3RJdGVtIHRvIFJlbmRlclRyZWVVcGRhdGVyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU3MTgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBhbHJlYWR5
IHN0b3BwZWQgZG9pbmcgbGF5b3V0IHRpbWUgbXV0YXRpb25zLiBXZSBjYW4gbm93IG1vdmUgdGhl
IGNvZGUgb3V0IHRvby4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6aXNIVE1MTGlzdEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UGFyZW50
T2ZGaXJzdExpbmVCb3gpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Zmlyc3ROb25NYXJr
ZXJDaGlsZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0SXRlbTo6dXBk
YXRlTWFya2VyUmVuZGVyZXIpOiBEZWxldGVkLgorCisgICAgICAgICAgICBNb3ZlZCB0byBSZW5k
ZXJUcmVlVXBkYXRlcjo6TGlzdEl0ZW0uCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlz
dEl0ZW0uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0TWFya2VyOjp3aWxsQmVEZXN0cm95ZWQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9UZXh0QXV0b1NpemluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
QXV0b1NpemluZ1ZhbHVlOjphZGp1c3RUZXh0Tm9kZVNpemVzKToKKyAgICAgICAgKiBzdHlsZS9S
ZW5kZXJUcmVlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlVXBkYXRl
cjo6cHVzaFBhcmVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlVXBkYXRlcjo6cG9w
UGFyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVVcGRhdGVyOjp1cGRhdGVCZWZv
cmVEZXNjZW5kYW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlVXBkYXRlcjo6dXBk
YXRlQWZ0ZXJEZXNjZW5kYW50cyk6CisKKyAgICAgICAgICAgIEZhY3RvciBwcmUvcG9zdCB1cGRh
dGUgaW50byBmdW5jdGlvbnMuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVVcGRhdGVy
Ojp1cGRhdGVCZWZvcmVPckFmdGVyUHNldWRvRWxlbWVudCk6CisgICAgICAgICogc3R5bGUvUmVu
ZGVyVHJlZVVwZGF0ZXIuaDoKKyAgICAgICAgKiBzdHlsZS9SZW5kZXJUcmVlVXBkYXRlckxpc3RJ
dGVtLmNwcDogQWRkZWQuCisKKyAgICAgICAgICAgIE11dGF0aW9uIGZ1bmN0aW9ucyBtb3ZlIGhl
cmUuCisKKyAgICAgICAgKFdlYkNvcmU6OmdldFBhcmVudE9mRmlyc3RMaW5lQm94KToKKyAgICAg
ICAgKFdlYkNvcmU6OmZpcnN0Tm9uTWFya2VyQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVHJlZVVwZGF0ZXI6Okxpc3RJdGVtOjp1cGRhdGVNYXJrZXIpOgorICAgICAgICAqIHN0eWxl
L1JlbmRlclRyZWVVcGRhdGVyTGlzdEl0ZW0uaDogQWRkZWQuCisKIDIwMTctMDgtMTggIE1zMmdl
ciAgPE1zMmdlckBnbWFpbC5jb20+CiAKICAgICAgICAgW0dUS10gU2hvdyBjb250cm9scyBpZiBh
IHZpZGVvIGVsZW1lbnQgaXNuJ3QgYWxsb3dlZCB0byBwbGF5IGlubGluZS4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMjA4NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjc5Niw2ICsyNzk2LDcgQEAgc2V0KFdlYkNvcmVf
U09VUkNFUwogICAgIHN0eWxlL1JlbmRlclRyZWVQb3NpdGlvbi5jcHAKICAgICBzdHlsZS9SZW5k
ZXJUcmVlVXBkYXRlci5jcHAKICAgICBzdHlsZS9SZW5kZXJUcmVlVXBkYXRlckZpcnN0TGV0dGVy
LmNwcAorICAgIHN0eWxlL1JlbmRlclRyZWVVcGRhdGVyTGlzdEl0ZW0uY3BwCiAgICAgc3R5bGUv
U3R5bGVDaGFuZ2UuY3BwCiAgICAgc3R5bGUvU3R5bGVGb250U2l6ZUZ1bmN0aW9ucy5jcHAKICAg
ICBzdHlsZS9TdHlsZUludmFsaWRhdG9yLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjIwODU4KQorKysg
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC02NzkyLDYgKzY3OTIsOSBAQAogCQlFNDgyODQwODFGNDQ1OTRDMDA4NjNBQzMg
LyogUmVuZGVyVHJlZVVwZGF0ZXJGaXJzdExldHRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDgyODQwNjFGNDQ1OTRCMDA4NjNBQzMgLyogUmVu
ZGVyVHJlZVVwZGF0ZXJGaXJzdExldHRlci5jcHAgKi87IH07CiAJCUU0ODk0NEEyMTgwQjU3RDgw
MEYxNjVEOCAvKiBTaW1wbGVMaW5lTGF5b3V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0ODk0NEEwMTgwQjU3RDgwMEYxNjVEOCAvKiBTaW1wbGVM
aW5lTGF5b3V0LmNwcCAqLzsgfTsKIAkJRTQ4OTQ0QTMxODBCNTdEODAwRjE2NUQ4IC8qIFNpbXBs
ZUxpbmVMYXlvdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEU0ODk0NEExMTgwQjU3RDgwMEYxNjVEOCAvKiBTaW1wbGVMaW5lTGF5b3V0LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTQ4RTMzMkMxRjQ3
MDM3QzAwQkFCMEVGIC8qIFJlbmRlclRyZWVVcGRhdGVyRmlyc3RMZXR0ZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0ODI4NDA5MUY0NDU5NTYwMDg2
M0FDMyAvKiBSZW5kZXJUcmVlVXBkYXRlckZpcnN0TGV0dGVyLmggKi87IH07CisJCUU0OEUzMzJE
MUY0NzAzODAwMEJBQjBFRiAvKiBSZW5kZXJUcmVlVXBkYXRlckxpc3RJdGVtLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0OEUzMzJBMUY0NkM5ODAw
MEJBQjBFRiAvKiBSZW5kZXJUcmVlVXBkYXRlckxpc3RJdGVtLmNwcCAqLzsgfTsKKwkJRTQ4RTMz
MkUxRjQ3MDM4MDAwQkFCMEVGIC8qIFJlbmRlclRyZWVVcGRhdGVyTGlzdEl0ZW0uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0OEUzMzI4MUY0NkM5N0Yw
MEJBQjBFRiAvKiBSZW5kZXJUcmVlVXBkYXRlckxpc3RJdGVtLmggKi87IH07CiAJCUU0OTE2RkY3
MTk1REY2QTAwMDVBQjM0OSAvKiBMYXllckZsdXNoVGhyb3R0bGVTdGF0ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ5MTZGRjYxOTVERjZBMDAwNUFC
MzQ5IC8qIExheWVyRmx1c2hUaHJvdHRsZVN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTQ5NDZFQUUxNTZFNjRERDAwRDMyOTdGIC8qIFN0
eWxlUnVsZUltcG9ydC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFNDk0NkVBQzE1NkU2NEREMDBEMzI5N0YgLyogU3R5bGVSdWxlSW1wb3J0LmNwcCAq
LzsgfTsKIAkJRTQ5NDZFQUYxNTZFNjRERDAwRDMyOTdGIC8qIFN0eWxlUnVsZUltcG9ydC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ5NDZFQUQxNTZF
NjRERDAwRDMyOTdGIC8qIFN0eWxlUnVsZUltcG9ydC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNTQwNSw2ICsxNTQwOCw4IEBACiAJCUU0ODI4
NDA5MUY0NDU5NTYwMDg2M0FDMyAvKiBSZW5kZXJUcmVlVXBkYXRlckZpcnN0TGV0dGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlbmRlclRyZWVVcGRhdGVyRmlyc3RMZXR0ZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTQ4OTQ0QTAxODBCNTdEODAwRjE2NUQ4IC8qIFNpbXBsZUxpbmVM
YXlvdXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2ltcGxlTGlu
ZUxheW91dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0ODk0NEExMTgwQjU3
RDgwMEYxNjVEOCAvKiBTaW1wbGVMaW5lTGF5b3V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNpbXBsZUxpbmVMYXlvdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRTQ4RTMzMjgxRjQ2Qzk3RjAwQkFCMEVGIC8qIFJlbmRlclRyZWVVcGRhdGVyTGlzdEl0ZW0u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyVHJlZVVwZGF0ZXJMaXN0
SXRlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNDhFMzMyQTFGNDZDOTgwMDBC
QUIwRUYgLyogUmVuZGVyVHJlZVVwZGF0ZXJMaXN0SXRlbS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJUcmVlVXBkYXRlckxpc3RJdGVtLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ5MTZGRjYxOTVERjZBMDAwNUFCMzQ5IC8qIExheWVy
Rmx1c2hUaHJvdHRsZVN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExh
eWVyRmx1c2hUaHJvdHRsZVN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0
OTQ2RUFDMTU2RTY0REQwMEQzMjk3RiAvKiBTdHlsZVJ1bGVJbXBvcnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3R5bGVSdWxlSW1wb3J0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ5NDZFQUQxNTZFNjRERDAwRDMyOTdGIC8qIFN0eWxlUnVs
ZUltcG9ydC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHlsZVJ1bGVJbXBv
cnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI0OTE3LDYgKzI0OTIyLDggQEAK
IAkJCQlFNDYxODAyODFDOEEwNkNEMDAyNkMwMkMgLyogUmVuZGVyVHJlZVVwZGF0ZXIuaCAqLywK
IAkJCQlFNDgyODQwNjFGNDQ1OTRCMDA4NjNBQzMgLyogUmVuZGVyVHJlZVVwZGF0ZXJGaXJzdExl
dHRlci5jcHAgKi8sCiAJCQkJRTQ4Mjg0MDkxRjQ0NTk1NjAwODYzQUMzIC8qIFJlbmRlclRyZWVV
cGRhdGVyRmlyc3RMZXR0ZXIuaCAqLywKKwkJCQlFNDhFMzMyQTFGNDZDOTgwMDBCQUIwRUYgLyog
UmVuZGVyVHJlZVVwZGF0ZXJMaXN0SXRlbS5jcHAgKi8sCisJCQkJRTQ4RTMzMjgxRjQ2Qzk3RjAw
QkFCMEVGIC8qIFJlbmRlclRyZWVVcGRhdGVyTGlzdEl0ZW0uaCAqLywKIAkJCQlFNDAxRTBBNTFD
M0MwQ0Y3MDBGMzREMTAgLyogU3R5bGVDaGFuZ2UuY3BwICovLAogCQkJCUU0MDFFMEEzMUMzQzBC
ODMwMEYzNEQxMCAvKiBTdHlsZUNoYW5nZS5oICovLAogCQkJCUU0RDU4RUI2MTdCNEVEODkwMENC
RENBOCAvKiBTdHlsZUZvbnRTaXplRnVuY3Rpb25zLmNwcCAqLywKQEAgLTI3ODA3LDYgKzI3ODE0
LDcgQEAKIAkJCQkxQUU5NkE4RDFEMUEwREREMDBCODY3NjggLyogSlNBcHBsZVBheVBheW1lbnRN
ZXRob2RTZWxlY3RlZEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzY1MjMxQTFFMDBEQkI1
MDA2NzdGMjIgLyogSlNBcHBsZVBheVBheW1lbnRQYXNzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3
QzY1NzlGMjFFMDA4NTY2MDBFM0EyN0EgLyogSlNBcHBsZVBheVBheW1lbnRSZXF1ZXN0LmggaW4g
SGVhZGVycyAqLywKKwkJCQlFNDhFMzMyQzFGNDcwMzdDMDBCQUIwRUYgLyogUmVuZGVyVHJlZVVw
ZGF0ZXJGaXJzdExldHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFOTZBOEYxRDFBMERERDAw
Qjg2NzY4IC8qIEpTQXBwbGVQYXlTZXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUU5NkE5
MTFEMUEwREREMDBCODY3NjggLyogSlNBcHBsZVBheVNoaXBwaW5nQ29udGFjdFNlbGVjdGVkRXZl
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDNjU3OUY0MUUwMDg1NjYwMEUzQTI3QSAvKiBKU0Fw
cGxlUGF5U2hpcHBpbmdNZXRob2QuaCBpbiBIZWFkZXJzICovLApAQCAtMjk4MDcsNiArMjk4MTUs
NyBAQAogCQkJCUJDMjI3NDdCMEU4MzY2RTIwMEU3Rjk3NSAvKiBTVkdSZW5kZXJTdHlsZURlZnMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTQzNjcwOEYyMTJEOUNBNEIwMDA0NDIzNCAvKiBTVkdSZW5k
ZXJTdXBwb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MzY3MDhGNDEyRDlDQTRCMDAwNDQyMzQg
LyogU1ZHUmVuZGVyVHJlZUFzVGV4dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTQ4RTMzMkUxRjQ3
MDM4MDAwQkFCMEVGIC8qIFJlbmRlclRyZWVVcGRhdGVyTGlzdEl0ZW0uaCBpbiBIZWFkZXJzICov
LAogCQkJCTQzNjcwOEY2MTJEOUNBNEIwMDA0NDIzNCAvKiBTVkdSZXNvdXJjZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQzNjcwOEY4MTJEOUNBNEIwMDA0NDIzNCAvKiBTVkdSZXNvdXJjZXNDYWNo
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDM2NzA4RkExMkQ5Q0E0QjAwMDQ0MjM0IC8qIFNWR1Jl
c291cmNlc0N5Y2xlU29sdmVyLmggaW4gSGVhZGVycyAqLywKQEAgLTMxOTM2LDYgKzMxOTQ1LDcg
QEAKIAkJCQlFMTcyQUY4RjE4MTFCQzM3MDBGQkFEQjkgLyogSlNET01Qcm9taXNlRGVmZXJyZWQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGM0I5MjgxRUUzQjZERTAwQjg0MTQ0IC8qIEpTRE9N
UXVhZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjk0QTM5NjFFRjFCMTA1MDBGQkFGRkIgLyog
SlNET01RdWFkQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUU0OEUzMzJEMUY0NzAzODAw
MEJBQjBFRiAvKiBSZW5kZXJUcmVlVXBkYXRlckxpc3RJdGVtLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGRjNCOTJBMUVFM0I2REUwMEI4NDE0NCAvKiBKU0RPTVF1YWRJbml0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGNDcxMEJCMURCNTZCRTgwMDJEQ0VDMyAvKiBKU0RPTVJlY3QuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEY0NzEwQkQxREI1NkJFODAwMkRDRUMzIC8qIEpTRE9NUmVjdElu
aXQuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGlzdEl0ZW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMaXN0SXRlbS5jcHAJKHJldmlzaW9uIDIyMDg1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMaXN0SXRlbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDkgKzM0LDYg
QEAKICNpbmNsdWRlICJSZW5kZXJDaGlsZEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiUmVuZGVySW5s
aW5lLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGlzdE1hcmtlci5oIgotI2luY2x1ZGUgIlJlbmRlck11
bHRpQ29sdW1uRmxvd1RocmVhZC5oIgotI2luY2x1ZGUgIlJlbmRlclJ1YnkuaCIKLSNpbmNsdWRl
ICJSZW5kZXJUYWJsZS5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTdHls
ZUluaGVyaXRlZERhdGEuaCIKICNpZiAhQVNTRVJUX0RJU0FCTEVECkBAIC0xMTAsNyArMTA3LDcg
QEAgdm9pZCBSZW5kZXJMaXN0SXRlbTo6d2lsbEJlUmVtb3ZlZEZyb21UcgogICAgIHVwZGF0ZUxp
c3RNYXJrZXJOdW1iZXJzKCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBpc0hUTUxMaXN0RWxl
bWVudChjb25zdCBOb2RlJiBub2RlKQorYm9vbCBpc0hUTUxMaXN0RWxlbWVudChjb25zdCBOb2Rl
JiBub2RlKQogewogICAgIHJldHVybiBpczxIVE1MVUxpc3RFbGVtZW50Pihub2RlKSB8fCBpczxI
VE1MT0xpc3RFbGVtZW50Pihub2RlKTsKIH0KQEAgLTIyNiwzNSArMjIzLDYgQEAgdm9pZCBSZW5k
ZXJMaXN0SXRlbTo6dXBkYXRlVmFsdWVOb3coKSBjbwogICAgIG1faXNWYWx1ZVVwVG9EYXRlID0g
dHJ1ZTsKIH0KIAotc3RhdGljIFJlbmRlckJsb2NrKiBnZXRQYXJlbnRPZkZpcnN0TGluZUJveChS
ZW5kZXJCbG9jayYgY3VycmVudCwgUmVuZGVyT2JqZWN0JiBtYXJrZXIpCi17Ci0gICAgYm9vbCBp
blF1aXJrc01vZGUgPSBjdXJyZW50LmRvY3VtZW50KCkuaW5RdWlya3NNb2RlKCk7Ci0gICAgZm9y
IChhdXRvJiBjaGlsZCA6IGNoaWxkcmVuT2ZUeXBlPFJlbmRlck9iamVjdD4oY3VycmVudCkpIHsK
LSAgICAgICAgaWYgKCZjaGlsZCA9PSAmbWFya2VyKQotICAgICAgICAgICAgY29udGludWU7Ci0K
LSAgICAgICAgaWYgKGNoaWxkLmlzSW5saW5lKCkgJiYgKCFpczxSZW5kZXJJbmxpbmU+KGNoaWxk
KSB8fCBjdXJyZW50LmdlbmVyYXRlc0xpbmVCb3hlc0ZvcklubGluZUNoaWxkKCZjaGlsZCkpKQot
ICAgICAgICAgICAgcmV0dXJuICZjdXJyZW50OwotCi0gICAgICAgIGlmIChjaGlsZC5pc0Zsb2F0
aW5nKCkgfHwgY2hpbGQuaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCi0gICAgICAgICAgICBjb250
aW51ZTsKLQotICAgICAgICBpZiAoIWlzPFJlbmRlckJsb2NrPihjaGlsZCkgfHwgaXM8UmVuZGVy
VGFibGU+KGNoaWxkKSB8fCBpczxSZW5kZXJSdWJ5QXNCbG9jaz4oY2hpbGQpKQotICAgICAgICAg
ICAgYnJlYWs7Ci0KLSAgICAgICAgaWYgKGlzPFJlbmRlckJveD4oY2hpbGQpICYmIGRvd25jYXN0
PFJlbmRlckJveD4oY2hpbGQpLmlzV3JpdGluZ01vZGVSb290KCkpCi0gICAgICAgICAgICBicmVh
azsKLQotICAgICAgICBpZiAoaXM8UmVuZGVyTGlzdEl0ZW0+KGN1cnJlbnQpICYmIGluUXVpcmtz
TW9kZSAmJiBjaGlsZC5ub2RlKCkgJiYgaXNIVE1MTGlzdEVsZW1lbnQoKmNoaWxkLm5vZGUoKSkp
Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBpZiAoUmVuZGVyQmxvY2sqIGxpbmVCb3gg
PSBnZXRQYXJlbnRPZkZpcnN0TGluZUJveChkb3duY2FzdDxSZW5kZXJCbG9jaz4oY2hpbGQpLCBt
YXJrZXIpKQotICAgICAgICAgICAgcmV0dXJuIGxpbmVCb3g7Ci0gICAgfQotCi0gICAgcmV0dXJu
IG51bGxwdHI7Ci19Ci0KIHZvaWQgUmVuZGVyTGlzdEl0ZW06OnVwZGF0ZVZhbHVlKCkKIHsKICAg
ICBpZiAoIW1faGFzRXhwbGljaXRWYWx1ZSkgewpAQCAtMjY0LDU4ICsyMzIsNiBAQCB2b2lkIFJl
bmRlckxpc3RJdGVtOjp1cGRhdGVWYWx1ZSgpCiAgICAgfQogfQogCi1zdGF0aWMgUmVuZGVyT2Jq
ZWN0KiBmaXJzdE5vbk1hcmtlckNoaWxkKFJlbmRlckJsb2NrJiBwYXJlbnQpCi17Ci0gICAgUmVu
ZGVyT2JqZWN0KiBjaGlsZCA9IHBhcmVudC5maXJzdENoaWxkKCk7Ci0gICAgd2hpbGUgKGlzPFJl
bmRlckxpc3RNYXJrZXI+KGNoaWxkKSkKLSAgICAgICAgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxp
bmcoKTsKLSAgICByZXR1cm4gY2hpbGQ7Ci19Ci0KLXZvaWQgUmVuZGVyTGlzdEl0ZW06OnVwZGF0
ZU1hcmtlclJlbmRlcmVyKCkKLXsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElP
TighdmlldygpLmxheW91dFN0YXRlKCkpOwotCi0gICAgaWYgKHN0eWxlKCkubGlzdFN0eWxlVHlw
ZSgpID09IE5vbmVMaXN0U3R5bGUgJiYgKCFzdHlsZSgpLmxpc3RTdHlsZUltYWdlKCkgfHwgc3R5
bGUoKS5saXN0U3R5bGVJbWFnZSgpLT5lcnJvck9jY3VycmVkKCkpKSB7Ci0gICAgICAgIGlmICht
X21hcmtlcikgewotICAgICAgICAgICAgbV9tYXJrZXItPmRlc3Ryb3koKTsKLSAgICAgICAgICAg
IEFTU0VSVCghbV9tYXJrZXIpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBhdXRvIG5ld1N0eWxlID0gY29tcHV0ZU1hcmtlclN0eWxlKCk7Ci0gICAgaWYgKG1fbWFy
a2VyKQotICAgICAgICBtX21hcmtlci0+c2V0U3R5bGUoV1RGTW92ZShuZXdTdHlsZSkpOwotICAg
IGVsc2UgewotICAgICAgICBtX21hcmtlciA9IGNyZWF0ZVJlbmRlcmVyPFJlbmRlckxpc3RNYXJr
ZXI+KCp0aGlzLCBXVEZNb3ZlKG5ld1N0eWxlKSkubGVha1B0cigpOwotICAgICAgICBtX21hcmtl
ci0+aW5pdGlhbGl6ZVN0eWxlKCk7Ci0gICAgfQotCi0gICAgUmVuZGVyRWxlbWVudCogY3VycmVu
dFBhcmVudCA9IG1fbWFya2VyLT5wYXJlbnQoKTsKLSAgICBSZW5kZXJCbG9jayogbmV3UGFyZW50
ID0gZ2V0UGFyZW50T2ZGaXJzdExpbmVCb3goKnRoaXMsICptX21hcmtlcik7Ci0gICAgaWYgKCFu
ZXdQYXJlbnQpIHsKLSAgICAgICAgLy8gSWYgdGhlIG1hcmtlciBpcyBjdXJyZW50bHkgY29udGFp
bmVkIGluc2lkZSBhbiBhbm9ueW1vdXMgYm94LAotICAgICAgICAvLyB0aGVuIHdlIGFyZSB0aGUg
b25seSBpdGVtIGluIHRoYXQgYW5vbnltb3VzIGJveCAoc2luY2Ugbm8gbGluZSBib3gKLSAgICAg
ICAgLy8gcGFyZW50IHdhcyBmb3VuZCkuIEl0J3Mgb2sgdG8ganVzdCBsZWF2ZSB0aGUgbWFya2Vy
IHdoZXJlIGl0IGlzCi0gICAgICAgIC8vIGluIHRoaXMgY2FzZS4KLSAgICAgICAgaWYgKGN1cnJl
bnRQYXJlbnQgJiYgY3VycmVudFBhcmVudC0+aXNBbm9ueW1vdXNCbG9jaygpKQotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICBpZiAobXVsdGlDb2x1bW5GbG93VGhyZWFkKCkpCi0gICAgICAg
ICAgICBuZXdQYXJlbnQgPSBtdWx0aUNvbHVtbkZsb3dUaHJlYWQoKTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgbmV3UGFyZW50ID0gdGhpczsKLSAgICB9Ci0KLSAgICBpZiAobmV3UGFyZW50
ICE9IGN1cnJlbnRQYXJlbnQpIHsKLSAgICAgICAgbV9tYXJrZXItPnJlbW92ZUZyb21QYXJlbnQo
KTsKLSAgICAgICAgbmV3UGFyZW50LT5hZGRDaGlsZChtX21hcmtlciwgZmlyc3ROb25NYXJrZXJD
aGlsZCgqbmV3UGFyZW50KSk7Ci0gICAgICAgIC8vIElmIGN1cnJlbnQgcGFyZW50IGlzIGFuIGFu
b255bW91cyBibG9jayB0aGF0IGhhcyBsb3N0IGFsbCBpdHMgY2hpbGRyZW4sIGRlc3Ryb3kgaXQu
Ci0gICAgICAgIGlmIChjdXJyZW50UGFyZW50ICYmIGN1cnJlbnRQYXJlbnQtPmlzQW5vbnltb3Vz
QmxvY2soKSAmJiAhY3VycmVudFBhcmVudC0+Zmlyc3RDaGlsZCgpICYmICFkb3duY2FzdDxSZW5k
ZXJCbG9jaz4oKmN1cnJlbnRQYXJlbnQpLmNvbnRpbnVhdGlvbigpKQotICAgICAgICAgICAgY3Vy
cmVudFBhcmVudC0+ZGVzdHJveSgpOwotICAgIH0KLX0KLQogdm9pZCBSZW5kZXJMaXN0SXRlbTo6
bGF5b3V0KCkKIHsKICAgICBTdGFja1N0YXRzOjpMYXlvdXRDaGVja1BvaW50IGxheW91dENoZWNr
UG9pbnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uaAko
cmV2aXNpb24gMjIwODU4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJ
dGVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDkgKzU0LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgdm9pZCB1cGRhdGVJdGVtVmFsdWVzRm9yT3JkZXJlZExpc3QoY29uc3QgSFRNTE9MaXN0RWxl
bWVudCYpOwogICAgIHN0YXRpYyB1bnNpZ25lZCBpdGVtQ291bnRGb3JPcmRlcmVkTGlzdChjb25z
dCBIVE1MT0xpc3RFbGVtZW50Jik7CiAKLSAgICB2b2lkIGRpZERlc3Ryb3lMaXN0TWFya2VyKCkg
eyBtX21hcmtlciA9IG51bGxwdHI7IH0KKyAgICBSZW5kZXJTdHlsZSBjb21wdXRlTWFya2VyU3R5
bGUoKSBjb25zdDsKIAotICAgIHZvaWQgdXBkYXRlTWFya2VyUmVuZGVyZXIoKTsKKyAgICBSZW5k
ZXJMaXN0TWFya2VyKiBtYXJrZXJSZW5kZXJlcigpIHsgcmV0dXJuIG1fbWFya2VyOyB9CisgICAg
dm9pZCBzZXRNYXJrZXJSZW5kZXJlcihSZW5kZXJMaXN0TWFya2VyKiBtYXJrZXIpIHsgbV9tYXJr
ZXIgPSBtYXJrZXI7IH0KIAogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBib29sIGluTGF5b3V0
KCkgY29uc3QgeyByZXR1cm4gbV9pbkxheW91dDsgfQpAQCAtODUsNyArODYsNiBAQCBwcml2YXRl
OgogICAgIHZvaWQgdXBkYXRlVmFsdWVOb3coKSBjb25zdDsKICAgICB2b2lkIGV4cGxpY2l0VmFs
dWVDaGFuZ2VkKCk7CiAKLSAgICBSZW5kZXJTdHlsZSBjb21wdXRlTWFya2VyU3R5bGUoKSBjb25z
dDsKIAogICAgIGludCBtX2V4cGxpY2l0VmFsdWU7CiAgICAgUmVuZGVyTGlzdE1hcmtlciogbV9t
YXJrZXI7CkBAIC05OCw2ICs5OCw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX25vdEluTGlzdCA6
IDE7CiB9OwogCitib29sIGlzSFRNTExpc3RFbGVtZW50KGNvbnN0IE5vZGUmKTsKKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1JFTkRFUl9PQkpFQ1Qo
UmVuZGVyTGlzdEl0ZW0sIGlzTGlzdEl0ZW0oKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAJKHJldmlzaW9uIDIyMDg1OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTEzMyw3ICsxMTMzLDcgQEAgUmVuZGVyTGlzdE1hcmtlcjo6flJlbmRlckxpc3RNYXJrZXIo
KQogCiB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OndpbGxCZURlc3Ryb3llZCgpCiB7Ci0gICAgbV9s
aXN0SXRlbS5kaWREZXN0cm95TGlzdE1hcmtlcigpOworICAgIG1fbGlzdEl0ZW0uc2V0TWFya2Vy
UmVuZGVyZXIobnVsbHB0cik7CiAgICAgaWYgKG1faW1hZ2UpCiAgICAgICAgIG1faW1hZ2UtPnJl
bW92ZUNsaWVudCh0aGlzKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRB
dXRvU2l6aW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4
dEF1dG9TaXppbmcuY3BwCShyZXZpc2lvbiAyMjA4NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvVGV4dEF1dG9TaXppbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMSArMzMsMTEg
QEAKICNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNs
dWRlICJSZW5kZXJCbG9jay5oIgotI2luY2x1ZGUgIlJlbmRlckxpc3RJdGVtLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyTGlzdE1hcmtlci5oIgogI2luY2x1ZGUgIlJlbmRlclRleHQuaCIKICNpbmNsdWRl
ICJSZW5kZXJUZXh0RnJhZ21lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJUcmVlVXBkYXRlckZpcnN0
TGV0dGVyLmgiCisjaW5jbHVkZSAiUmVuZGVyVHJlZVVwZGF0ZXJMaXN0SXRlbS5oIgogI2luY2x1
ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTU5LDcgKzE1
OSw3IEBAIGF1dG8gVGV4dEF1dG9TaXppbmdWYWx1ZTo6YWRqdXN0VGV4dE5vZGUKICAgICAgICAg
cGFyZW50UmVuZGVyZXItPnNldFN0eWxlKFdURk1vdmUobmV3UGFyZW50U3R5bGUpKTsKIAogICAg
ICAgICBpZiAoaXM8UmVuZGVyTGlzdEl0ZW0+KCpwYXJlbnRSZW5kZXJlcikpCi0gICAgICAgICAg
ICBkb3duY2FzdDxSZW5kZXJMaXN0SXRlbT4oKnBhcmVudFJlbmRlcmVyKS51cGRhdGVNYXJrZXJS
ZW5kZXJlcigpOworICAgICAgICAgICAgUmVuZGVyVHJlZVVwZGF0ZXI6Okxpc3RJdGVtOjp1cGRh
dGVNYXJrZXIoZG93bmNhc3Q8UmVuZGVyTGlzdEl0ZW0+KCpwYXJlbnRSZW5kZXJlcikpOwogICAg
IH0KIAogICAgIGZvciAoYXV0byYgbm9kZSA6IG1fYXV0b1NpemVkTm9kZXMpIHsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N0eWxlL1JlbmRlclRyZWVVcGRhdGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdHlsZS9SZW5kZXJUcmVlVXBkYXRlci5jcHAJKHJldmlzaW9uIDIyMDg1
OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1JlbmRlclRyZWVVcGRhdGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIlJlbmRlck5hbWVkRmxvd1RocmVh
ZC5oIgogI2luY2x1ZGUgIlJlbmRlclF1b3RlLmgiCiAjaW5jbHVkZSAiUmVuZGVyVHJlZVVwZGF0
ZXJGaXJzdExldHRlci5oIgorI2luY2x1ZGUgIlJlbmRlclRyZWVVcGRhdGVyTGlzdEl0ZW0uaCIK
ICNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCiAjaW5jbHVkZSAiU3R5bGVUcmVlUmVzb2x2ZXIu
aCIKICNpbmNsdWRlIDx3dGYvU3lzdGVtVHJhY2luZy5oPgpAQCAtMjI0LDI2ICsyMjUsMTUgQEAg
dm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6cHVzaFBhcmVudChFbGVtZQogewogICAgIG1fcGFyZW50
U3RhY2suYXBwZW5kKFBhcmVudChlbGVtZW50LCBjaGFuZ2VUeXBlKSk7CiAKLSAgICB1cGRhdGVC
ZWZvcmVPckFmdGVyUHNldWRvRWxlbWVudChlbGVtZW50LCBCRUZPUkUpOworICAgIHVwZGF0ZUJl
Zm9yZURlc2NlbmRhbnRzKGVsZW1lbnQpOwogfQogCiB2b2lkIFJlbmRlclRyZWVVcGRhdGVyOjpw
b3BQYXJlbnQoKQogewogICAgIGF1dG8mIHBhcmVudCA9IG1fcGFyZW50U3RhY2subGFzdCgpOwor
ICAgIGlmIChwYXJlbnQuZWxlbWVudCkKKyAgICAgICAgdXBkYXRlQWZ0ZXJEZXNjZW5kYW50cygq
cGFyZW50LmVsZW1lbnQsIHBhcmVudC5zdHlsZUNoYW5nZSk7CiAKLSAgICBpZiAocGFyZW50LmVs
ZW1lbnQpIHsKLSAgICAgICAgdXBkYXRlQmVmb3JlT3JBZnRlclBzZXVkb0VsZW1lbnQoKnBhcmVu
dC5lbGVtZW50LCBBRlRFUik7Ci0KLSAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gcGFyZW50
LmVsZW1lbnQtPnJlbmRlcmVyKCkpIHsKLSAgICAgICAgICAgIGlmIChpczxSZW5kZXJCbG9jaz4o
KnJlbmRlcmVyKSkKLSAgICAgICAgICAgICAgICBGaXJzdExldHRlcjo6dXBkYXRlKGRvd25jYXN0
PFJlbmRlckJsb2NrPigqcmVuZGVyZXIpKTsKLSAgICAgICAgICAgIGlmIChpczxSZW5kZXJMaXN0
SXRlbT4oKnJlbmRlcmVyKSkKLSAgICAgICAgICAgICAgICBkb3duY2FzdDxSZW5kZXJMaXN0SXRl
bT4oKnJlbmRlcmVyKS51cGRhdGVNYXJrZXJSZW5kZXJlcigpOwotCi0gICAgICAgICAgICBpZiAo
cGFyZW50LmVsZW1lbnQtPmhhc0N1c3RvbVN0eWxlUmVzb2x2ZUNhbGxiYWNrcygpICYmIHBhcmVu
dC5zdHlsZUNoYW5nZSA9PSBTdHlsZTo6RGV0YWNoKQotICAgICAgICAgICAgICAgIHBhcmVudC5l
bGVtZW50LT5kaWRBdHRhY2hSZW5kZXJlcnMoKTsKLSAgICAgICAgfQotICAgIH0KICAgICBtX3Bh
cmVudFN0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIApAQCAtMjU1LDYgKzI0NSwyOSBAQCB2b2lkIFJl
bmRlclRyZWVVcGRhdGVyOjpwb3BQYXJlbnRzVG9EZXB0CiAgICAgICAgIHBvcFBhcmVudCgpOwog
fQogCit2b2lkIFJlbmRlclRyZWVVcGRhdGVyOjp1cGRhdGVCZWZvcmVEZXNjZW5kYW50cyhFbGVt
ZW50JiBlbGVtZW50KQoreworICAgIHVwZGF0ZUJlZm9yZU9yQWZ0ZXJQc2V1ZG9FbGVtZW50KGVs
ZW1lbnQsIEJFRk9SRSk7Cit9CisKK3ZvaWQgUmVuZGVyVHJlZVVwZGF0ZXI6OnVwZGF0ZUFmdGVy
RGVzY2VuZGFudHMoRWxlbWVudCYgZWxlbWVudCwgU3R5bGU6OkNoYW5nZSBzdHlsZUNoYW5nZSkK
K3sKKyAgICB1cGRhdGVCZWZvcmVPckFmdGVyUHNldWRvRWxlbWVudChlbGVtZW50LCBBRlRFUik7
CisKKyAgICBhdXRvKiByZW5kZXJlciA9IGVsZW1lbnQucmVuZGVyZXIoKTsKKyAgICBpZiAoIXJl
bmRlcmVyKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBUaGVzZSBmdW5jdGlvbnMgZG8gcmVu
ZGVyIHRyZWUgbXV0YXRpb25zIHRoYXQgcmVxdWlyZSBkZXNjZW5kYW50IHJlbmRlcmVycy4KKyAg
ICBpZiAoaXM8UmVuZGVyQmxvY2s+KCpyZW5kZXJlcikpCisgICAgICAgIEZpcnN0TGV0dGVyOjp1
cGRhdGUoZG93bmNhc3Q8UmVuZGVyQmxvY2s+KCpyZW5kZXJlcikpOworICAgIGlmIChpczxSZW5k
ZXJMaXN0SXRlbT4oKnJlbmRlcmVyKSkKKyAgICAgICAgTGlzdEl0ZW06OnVwZGF0ZU1hcmtlcihk
b3duY2FzdDxSZW5kZXJMaXN0SXRlbT4oKnJlbmRlcmVyKSk7CisKKyAgICBpZiAoZWxlbWVudC5o
YXNDdXN0b21TdHlsZVJlc29sdmVDYWxsYmFja3MoKSAmJiBzdHlsZUNoYW5nZSA9PSBTdHlsZTo6
RGV0YWNoKQorICAgICAgICBlbGVtZW50LmRpZEF0dGFjaFJlbmRlcmVycygpOworfQorCiBzdGF0
aWMgYm9vbCBwc2V1ZG9TdHlsZUNhY2hlSXNJbnZhbGlkKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVy
LCBSZW5kZXJTdHlsZSogbmV3U3R5bGUpCiB7CiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIGN1cnJl
bnRTdHlsZSA9IHJlbmRlcmVyLT5zdHlsZSgpOwpAQCAtNTcxLDcgKzU4NCw3IEBAIHZvaWQgUmVu
ZGVyVHJlZVVwZGF0ZXI6OnVwZGF0ZUJlZm9yZU9yQWYKICAgICAgICAgICAgIHVwZGF0ZVF1b3Rl
c1VwVG8oJmNoaWxkKTsKICAgICB9CiAgICAgaWYgKGlzPFJlbmRlckxpc3RJdGVtPigqcHNldWRv
UmVuZGVyZXIpKQotICAgICAgICBkb3duY2FzdDxSZW5kZXJMaXN0SXRlbT4oKnBzZXVkb1JlbmRl
cmVyKS51cGRhdGVNYXJrZXJSZW5kZXJlcigpOworICAgICAgICBMaXN0SXRlbTo6dXBkYXRlTWFy
a2VyKGRvd25jYXN0PFJlbmRlckxpc3RJdGVtPigqcHNldWRvUmVuZGVyZXIpKTsKIH0KIAogdm9p
ZCBSZW5kZXJUcmVlVXBkYXRlcjo6dGVhckRvd25SZW5kZXJlcnMoRWxlbWVudCYgcm9vdCwgVGVh
cmRvd25UeXBlIHRlYXJkb3duVHlwZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0eWxlL1JlbmRl
clRyZWVVcGRhdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3R5bGUvUmVuZGVy
VHJlZVVwZGF0ZXIuaAkocmV2aXNpb24gMjIwODU4KQorKysgU291cmNlL1dlYkNvcmUvc3R5bGUv
UmVuZGVyVHJlZVVwZGF0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIHZvaWQgdGVhckRvd25SZW5kZXJlcihUZXh0Jik7CiAKICAgICBjbGFz
cyBGaXJzdExldHRlcjsKKyAgICBjbGFzcyBMaXN0SXRlbTsKIAogcHJpdmF0ZToKICAgICB2b2lk
IHVwZGF0ZVJlbmRlclRyZWUoQ29udGFpbmVyTm9kZSYgcm9vdCk7CkBAIC01OSw2ICs2MCw4IEBA
IHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVFbGVtZW50UmVuZGVyZXIoRWxlbWVudCYsIGNvbnN0
IFN0eWxlOjpFbGVtZW50VXBkYXRlJik7CiAgICAgdm9pZCBjcmVhdGVSZW5kZXJlcihFbGVtZW50
JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgdm9pZCBpbnZhbGlkYXRlV2hpdGVzcGFjZU9ubHlUZXh0
U2libGluZ3NBZnRlckF0dGFjaElmTmVlZGVkKE5vZGUmKTsKKyAgICB2b2lkIHVwZGF0ZUJlZm9y
ZURlc2NlbmRhbnRzKEVsZW1lbnQmKTsKKyAgICB2b2lkIHVwZGF0ZUFmdGVyRGVzY2VuZGFudHMo
RWxlbWVudCYsIFN0eWxlOjpDaGFuZ2UpOwogICAgIHZvaWQgdXBkYXRlQmVmb3JlT3JBZnRlclBz
ZXVkb0VsZW1lbnQoRWxlbWVudCYsIFBzZXVkb0lkKTsKIAogICAgIHN0cnVjdCBQYXJlbnQgewpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3R5bGUvUmVuZGVyVHJlZVVwZGF0ZXJMaXN0SXRlbS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3R5bGUvUmVuZGVyVHJlZVVwZGF0ZXJMaXN0
SXRlbS5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvc3R5bGUvUmVuZGVyVHJl
ZVVwZGF0ZXJMaXN0SXRlbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMjAgQEAKKy8q
KgorICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCisgKiAg
ICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDMtMjAwNiwgMjAxMCwgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQW5kcmV3IFdlbGxpbmd0b24gKHByb3Rv
bkB3aXJldGFwcGVkLm5ldCkKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW5k
ZXJUcmVlVXBkYXRlckxpc3RJdGVtLmgiCisKKyNpbmNsdWRlICJSZW5kZXJDaGlsZEl0ZXJhdG9y
LmgiCisjaW5jbHVkZSAiUmVuZGVyTGlzdE1hcmtlci5oIgorI2luY2x1ZGUgIlJlbmRlck11bHRp
Q29sdW1uRmxvd1RocmVhZC5oIgorI2luY2x1ZGUgIlJlbmRlclJ1YnkuaCIKKyNpbmNsdWRlICJS
ZW5kZXJUYWJsZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBSZW5kZXJCbG9j
ayogZ2V0UGFyZW50T2ZGaXJzdExpbmVCb3goUmVuZGVyQmxvY2smIGN1cnJlbnQsIFJlbmRlck9i
amVjdCYgbWFya2VyKQoreworICAgIGJvb2wgaW5RdWlya3NNb2RlID0gY3VycmVudC5kb2N1bWVu
dCgpLmluUXVpcmtzTW9kZSgpOworICAgIGZvciAoYXV0byYgY2hpbGQgOiBjaGlsZHJlbk9mVHlw
ZTxSZW5kZXJPYmplY3Q+KGN1cnJlbnQpKSB7CisgICAgICAgIGlmICgmY2hpbGQgPT0gJm1hcmtl
cikKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmIChjaGlsZC5pc0lubGluZSgp
ICYmICghaXM8UmVuZGVySW5saW5lPihjaGlsZCkgfHwgY3VycmVudC5nZW5lcmF0ZXNMaW5lQm94
ZXNGb3JJbmxpbmVDaGlsZCgmY2hpbGQpKSkKKyAgICAgICAgICAgIHJldHVybiAmY3VycmVudDsK
KworICAgICAgICBpZiAoY2hpbGQuaXNGbG9hdGluZygpIHx8IGNoaWxkLmlzT3V0T2ZGbG93UG9z
aXRpb25lZCgpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKCFpczxSZW5k
ZXJCbG9jaz4oY2hpbGQpIHx8IGlzPFJlbmRlclRhYmxlPihjaGlsZCkgfHwgaXM8UmVuZGVyUnVi
eUFzQmxvY2s+KGNoaWxkKSkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGlmIChpczxS
ZW5kZXJCb3g+KGNoaWxkKSAmJiBkb3duY2FzdDxSZW5kZXJCb3g+KGNoaWxkKS5pc1dyaXRpbmdN
b2RlUm9vdCgpKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgaWYgKGlzPFJlbmRlckxp
c3RJdGVtPihjdXJyZW50KSAmJiBpblF1aXJrc01vZGUgJiYgY2hpbGQubm9kZSgpICYmIGlzSFRN
TExpc3RFbGVtZW50KCpjaGlsZC5ub2RlKCkpKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgaWYgKFJlbmRlckJsb2NrKiBsaW5lQm94ID0gZ2V0UGFyZW50T2ZGaXJzdExpbmVCb3goZG93
bmNhc3Q8UmVuZGVyQmxvY2s+KGNoaWxkKSwgbWFya2VyKSkKKyAgICAgICAgICAgIHJldHVybiBs
aW5lQm94OworICAgIH0KKworICAgIHJldHVybiBudWxscHRyOworfQorCitzdGF0aWMgUmVuZGVy
T2JqZWN0KiBmaXJzdE5vbk1hcmtlckNoaWxkKFJlbmRlckJsb2NrJiBwYXJlbnQpCit7CisgICAg
UmVuZGVyT2JqZWN0KiBjaGlsZCA9IHBhcmVudC5maXJzdENoaWxkKCk7CisgICAgd2hpbGUgKGlz
PFJlbmRlckxpc3RNYXJrZXI+KGNoaWxkKSkKKyAgICAgICAgY2hpbGQgPSBjaGlsZC0+bmV4dFNp
YmxpbmcoKTsKKyAgICByZXR1cm4gY2hpbGQ7Cit9CisKK3ZvaWQgUmVuZGVyVHJlZVVwZGF0ZXI6
Okxpc3RJdGVtOjp1cGRhdGVNYXJrZXIoUmVuZGVyTGlzdEl0ZW0mIGxpc3RJdGVtUmVuZGVyZXIp
Cit7CisgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIWxpc3RJdGVtUmVuZGVy
ZXIudmlldygpLmxheW91dFN0YXRlKCkpOworCisgICAgYXV0byYgc3R5bGUgPSBsaXN0SXRlbVJl
bmRlcmVyLnN0eWxlKCk7CisKKyAgICBpZiAoc3R5bGUubGlzdFN0eWxlVHlwZSgpID09IE5vbmVM
aXN0U3R5bGUgJiYgKCFzdHlsZS5saXN0U3R5bGVJbWFnZSgpIHx8IHN0eWxlLmxpc3RTdHlsZUlt
YWdlKCktPmVycm9yT2NjdXJyZWQoKSkpIHsKKyAgICAgICAgaWYgKGxpc3RJdGVtUmVuZGVyZXIu
bWFya2VyUmVuZGVyZXIoKSkgeworICAgICAgICAgICAgbGlzdEl0ZW1SZW5kZXJlci5tYXJrZXJS
ZW5kZXJlcigpLT5kZXN0cm95KCk7CisgICAgICAgICAgICBBU1NFUlQoIWxpc3RJdGVtUmVuZGVy
ZXIubWFya2VyUmVuZGVyZXIoKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGF1dG8gbmV3U3R5bGUgPSBsaXN0SXRlbVJlbmRlcmVyLmNvbXB1dGVNYXJrZXJTdHls
ZSgpOworICAgIGF1dG8qIG1hcmtlclJlbmRlcmVyID0gbGlzdEl0ZW1SZW5kZXJlci5tYXJrZXJS
ZW5kZXJlcigpOworICAgIGlmIChtYXJrZXJSZW5kZXJlcikKKyAgICAgICAgbWFya2VyUmVuZGVy
ZXItPnNldFN0eWxlKFdURk1vdmUobmV3U3R5bGUpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgbWFy
a2VyUmVuZGVyZXIgPSBXZWJDb3JlOjpjcmVhdGVSZW5kZXJlcjxSZW5kZXJMaXN0TWFya2VyPihs
aXN0SXRlbVJlbmRlcmVyLCBXVEZNb3ZlKG5ld1N0eWxlKSkubGVha1B0cigpOworICAgICAgICBt
YXJrZXJSZW5kZXJlci0+aW5pdGlhbGl6ZVN0eWxlKCk7CisgICAgICAgIGxpc3RJdGVtUmVuZGVy
ZXIuc2V0TWFya2VyUmVuZGVyZXIobWFya2VyUmVuZGVyZXIpOworICAgIH0KKworICAgIFJlbmRl
ckVsZW1lbnQqIGN1cnJlbnRQYXJlbnQgPSBtYXJrZXJSZW5kZXJlci0+cGFyZW50KCk7CisgICAg
UmVuZGVyQmxvY2sqIG5ld1BhcmVudCA9IGdldFBhcmVudE9mRmlyc3RMaW5lQm94KGxpc3RJdGVt
UmVuZGVyZXIsICptYXJrZXJSZW5kZXJlcik7CisgICAgaWYgKCFuZXdQYXJlbnQpIHsKKyAgICAg
ICAgLy8gSWYgdGhlIG1hcmtlciBpcyBjdXJyZW50bHkgY29udGFpbmVkIGluc2lkZSBhbiBhbm9u
eW1vdXMgYm94LAorICAgICAgICAvLyB0aGVuIHdlIGFyZSB0aGUgb25seSBpdGVtIGluIHRoYXQg
YW5vbnltb3VzIGJveCAoc2luY2Ugbm8gbGluZSBib3gKKyAgICAgICAgLy8gcGFyZW50IHdhcyBm
b3VuZCkuIEl0J3Mgb2sgdG8ganVzdCBsZWF2ZSB0aGUgbWFya2VyIHdoZXJlIGl0IGlzCisgICAg
ICAgIC8vIGluIHRoaXMgY2FzZS4KKyAgICAgICAgaWYgKGN1cnJlbnRQYXJlbnQgJiYgY3VycmVu
dFBhcmVudC0+aXNBbm9ueW1vdXNCbG9jaygpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBpZiAoYXV0byogbXVsdGlDb2x1bW5GbG93VGhyZWFkID0gbGlzdEl0ZW1SZW5kZXJlci5tdWx0
aUNvbHVtbkZsb3dUaHJlYWQoKSkKKyAgICAgICAgICAgIG5ld1BhcmVudCA9IG11bHRpQ29sdW1u
Rmxvd1RocmVhZDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbmV3UGFyZW50ID0gJmxpc3RJ
dGVtUmVuZGVyZXI7CisgICAgfQorCisgICAgaWYgKG5ld1BhcmVudCAhPSBjdXJyZW50UGFyZW50
KSB7CisgICAgICAgIG1hcmtlclJlbmRlcmVyLT5yZW1vdmVGcm9tUGFyZW50KCk7CisgICAgICAg
IG5ld1BhcmVudC0+YWRkQ2hpbGQobWFya2VyUmVuZGVyZXIsIGZpcnN0Tm9uTWFya2VyQ2hpbGQo
Km5ld1BhcmVudCkpOworICAgICAgICAvLyBJZiBjdXJyZW50IHBhcmVudCBpcyBhbiBhbm9ueW1v
dXMgYmxvY2sgdGhhdCBoYXMgbG9zdCBhbGwgaXRzIGNoaWxkcmVuLCBkZXN0cm95IGl0LgorICAg
ICAgICBpZiAoY3VycmVudFBhcmVudCAmJiBjdXJyZW50UGFyZW50LT5pc0Fub255bW91c0Jsb2Nr
KCkgJiYgIWN1cnJlbnRQYXJlbnQtPmZpcnN0Q2hpbGQoKSAmJiAhZG93bmNhc3Q8UmVuZGVyQmxv
Y2s+KCpjdXJyZW50UGFyZW50KS5jb250aW51YXRpb24oKSkKKyAgICAgICAgICAgIGN1cnJlbnRQ
YXJlbnQtPmRlc3Ryb3koKTsKKyAgICB9Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0
eWxlL1JlbmRlclRyZWVVcGRhdGVyTGlzdEl0ZW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdHlsZS9SZW5kZXJUcmVlVXBkYXRlckxpc3RJdGVtLmgJKG5vbmV4aXN0ZW50KQorKysg
U291cmNlL1dlYkNvcmUvc3R5bGUvUmVuZGVyVHJlZVVwZGF0ZXJMaXN0SXRlbS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIlJlbmRlckxpc3RJdGVtLmgiCisjaW5jbHVkZSAiUmVuZGVyVHJlZVVwZGF0ZXIuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSZW5kZXJUcmVlVXBkYXRlcjo6TGlzdEl0
ZW0geworcHVibGljOgorICAgIHN0YXRpYyB2b2lkIHVwZGF0ZU1hcmtlcihSZW5kZXJMaXN0SXRl
bSYpOworfTsKKworfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>