<?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>61399</bug_id>
          
          <creation_ts>2011-05-24 15:05:38 -0700</creation_ts>
          <short_desc>Split HeapRootVisitor into its own class</short_desc>
          <delta_ts>2011-05-24 17:03:08 -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>New Bugs</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="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>oliver</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>409239</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-05-24 15:05:38 -0700</bug_when>
    <thetext>Split HeapRootVisitor into its own class</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409243</commentid>
    <comment_count>1</comment_count>
      <attachid>94699</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-05-24 15:08:29 -0700</bug_when>
    <thetext>Created attachment 94699
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409249</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-05-24 15:12:15 -0700</bug_when>
    <thetext>Attachment 94699 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/heap/HandleHeap.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/heap/HeapRootVisitor.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/ArgList.cpp:28:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 3 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409306</commentid>
    <comment_count>3</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-05-24 16:46:40 -0700</bug_when>
    <thetext>Committed r87230: &lt;http://trac.webkit.org/changeset/87230&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409316</commentid>
    <comment_count>4</comment_count>
      <attachid>94699</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-05-24 17:03:08 -0700</bug_when>
    <thetext>Comment on attachment 94699
Patch

Attachment 94699 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/8726860</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>94699</attachid>
            <date>2011-05-24 15:08:29 -0700</date>
            <delta_ts>2011-05-24 17:03:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61399-20110524150828.patch</filename>
            <type>text/plain</type>
            <size>28392</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODcyMTEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAK
KzIwMTEtMDUtMjQgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTcGxpdCBIZWFwUm9vdFZp
c2l0b3IgaW50byBpdHMgb3duIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02MTM5OQorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToK
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5neXBpOgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
LnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2o6CisgICAgICAgICog
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBoZWFw
L0hhbmRsZUhlYXAuY3BwOgorICAgICAgICAqIGhlYXAvSGFuZGxlU3RhY2suY3BwOgorICAgICAg
ICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgICogaGVhcC9IZWFwUm9vdFZpc2l0b3IuaDogQ29w
aWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmguCisgICAgICAg
ICogaGVhcC9NYXJrU3RhY2suaDoKKyAgICAgICAgKiBydW50aW1lL0FyZ0xpc3QuY3BwOgorICAg
ICAgICAqIHJ1bnRpbWUvU21hbGxTdHJpbmdzLmNwcDoKKwogMjAxMS0wNS0yNCAgR2VvZmZyZXkg
R2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCB0aGUgTWFjIGJ1aWxkOiBZ
ZXMsIHBsZWFzZSBkbyByZW1vdmUgdGhlc2UgZmlsZXMsIHN2bi4KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiA4NzE5OCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTIsNiArMTEyLDcgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL01hcmtTdGFjay5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtTdGFjay5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwUm9vdFZpc2l0b3Iu
aCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwIFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oIFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLmd5cGkJKHJldmlzaW9uIDg3MTk4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTMxOSw2ICszMTks
NyBAQAogICAgICAgICAgICAgJ2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmgnLAogICAgICAgICAg
ICAgJ2hlYXAvTWFya1N0YWNrLmNwcCcsCiAgICAgICAgICAgICAnaGVhcC9NYXJrU3RhY2suaCcs
CisgICAgICAgICAgICAnaGVhcC9IZWFwUm9vdFZpc2l0b3IuaCcsCiAgICAgICAgICAgICAnaGVh
cC9NYXJrZWRCbG9jay5jcHAnLAogICAgICAgICAgICAgJ2hlYXAvTWFya2VkQmxvY2suaCcsCiAg
ICAgICAgICAgICAnaGVhcC9NYXJrZWRTcGFjZS5jcHAnLApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJKHJldmlzaW9u
IDg3MTk4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTE5
MTQsNiArMTkxNCwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRmlsZT4KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8RmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsYXRp
dmVQYXRoPSIuLlwuLlxoZWFwXEhlYXBSb290VmlzaXRvci5oIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRmlsZT4K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmlsZQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlwuLlxoZWFwXEhlYXAuY3BwIgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDwvRmlsZT4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA4
NzE5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNjQsNiArMTY0LDcgQEAKIAkJMTQ3
RjM5RDcxMDdFQzM3NjAwNDI3QTQ4IC8qIEpTVmFyaWFibGVPYmplY3QuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyMkEzOUEwRTE2RTE0ODAwQUYy
MUM4IC8qIEpTVmFyaWFibGVPYmplY3QuY3BwICovOyB9OwogCQkxNDgyQjc0RTBBNDMwMzI4MDA1
MTdDRkMgLyogSlNTdHJpbmdSZWYuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMTQ4MkI3NEMwQTQzMDMyODAwNTE3Q0ZDIC8qIEpTU3RyaW5nUmVmLmNw
cCAqLzsgfTsKIAkJMTQ4MkI3RTQwQTQzMDc2MDAwNTE3Q0ZDIC8qIEpTT2JqZWN0UmVmLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0ODJCN0UyMEE0
MzA3NjAwMDUxN0NGQyAvKiBKU09iamVjdFJlZi5jcHAgKi87IH07CisJCTE0ODYzMDBBMTM4QzYx
RjgwMEI0MkUxNiAvKiBIZWFwUm9vdFZpc2l0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0ODYzMDA5MTM4QzYxRjgwMEI0MkUxNiAvKiBIZWFwUm9v
dFZpc2l0b3IuaCAqLzsgfTsKIAkJMTQ4Q0QxRDgxMDhDRjkwMjAwODE2M0M2IC8qIEpTQ29udGV4
dFJlZlByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDE0OENEMUQ3MTA4Q0Y5MDIwMDgxNjNDNiAvKiBKU0NvbnRleHRSZWZQcml2YXRlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQ4RjIxQUEx
MDdFQzUzQTAwNDJFQzJDIC8qIEJ5dGVjb2RlR2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk2OUEwNzIwMEVEMUNFMzMwMEYxRjY4MSAv
KiBCeXRlY29kZUdlbmVyYXRvci5jcHAgKi87IH07CiAJCTE0OEYyMUIwMTA3RUM1NDEwMDQyRUMy
QyAvKiBMZXhlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGNjkyQTg2NTAyNTU1OTdEMDFGRjYwRjcgLyogTGV4ZXIuY3BwICovOyB9OwpAQCAtNzgz
LDYgKzc4NCw3IEBACiAJCTE0ODJCN0UxMEE0MzA3NjAwMDUxN0NGQyAvKiBKU09iamVjdFJlZi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU09iamVjdFJlZi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxNDgyQjdFMjBBNDMwNzYwMDA1MTdDRkMgLyogSlNPYmpl
Y3RSZWYuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNPYmplY3RS
ZWYuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDgzQjU4OTA5OUJDMTk1MDAx
NkU0RjAgLyogSlNJbW1lZGlhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTSW1tZWRpYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0ODYzMDA5MTM4
QzYxRjgwMEI0MkUxNiAvKiBIZWFwUm9vdFZpc2l0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gSGVhcFJvb3RWaXNpdG9yLmg7IHBhdGggPSAuLi8uLi8uLi93ZWJraXQvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFJvb3RWaXNpdG9yLmg7IHNvdXJjZVRyZWUgPSBT
T1VSQ0VfUk9PVDsgfTsKIAkJMTQ4QTE2MjYwOTVEMTZCQjAwNjY2RDBEIC8qIExpc3RSZWZQdHIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpc3RSZWZQdHIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ4QTFFQ0QwRDEwQzIzQjAwNjlBNDdDIC8qIFJlZlB0
ckhhc2hNYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVmUHRySGFzaE1h
cC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDhDRDFENzEwOENGOTAyMDA4MTYz
QzYgLyogSlNDb250ZXh0UmVmUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU0NvbnRleHRSZWZQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xNDgwLDggKzE0ODIsMTAgQEAKIAkJCQkxNDJFMzEyRDEzNEZGMEE2MDBBRkFEQjUgLyogSGFu
ZGxlSGVhcC5oICovLAogCQkJCTE0MkUzMTJFMTM0RkYwQTYwMEFGQURCNSAvKiBIYW5kbGVTdGFj
ay5jcHAgKi8sCiAJCQkJMTQyRTMxMkYxMzRGRjBBNjAwQUZBREI1IC8qIEhhbmRsZVN0YWNrLmgg
Ki8sCisJCQkJMTQ2RkE1QTgxMzc4RjZCMDAwMzYyN0EzIC8qIEhhbmRsZVR5cGVzLmggKi8sCiAJ
CQkJMTRGQjk4NkIxMzUyMjU0MTAwODVBNURCIC8qIEhlYXAuY3BwICovLAogCQkJCTE0RkI5ODZD
MTM1MjI1NDEwMDg1QTVEQiAvKiBIZWFwLmggKi8sCisJCQkJMTQ4NjMwMDkxMzhDNjFGODAwQjQy
RTE2IC8qIEhlYXBSb290VmlzaXRvci5oICovLAogCQkJCTE0MkUzMTMwMTM0RkYwQTYwMEFGQURC
NSAvKiBMb2NhbC5oICovLAogCQkJCTE0MkUzMTMxMTM0RkYwQTYwMEFGQURCNSAvKiBMb2NhbFNj
b3BlLmggKi8sCiAJCQkJMTRCNzIzM0YxMkQ3RDBEQTAwM0JENUVEIC8qIE1hY2hpbmVTdGFja01h
cmtlci5jcHAgKi8sCkBAIC0xNDk0LDcgKzE0OTgsNiBAQAogCQkJCTE0MkQ2RjBGMTM1MzlBNDEw
MEIwMkU4NiAvKiBNYXJrU3RhY2suaCAqLywKIAkJCQkxNDJFMzEzMjEzNEZGMEE2MDBBRkFEQjUg
LyogU3Ryb25nLmggKi8sCiAJCQkJMTQyRTMxMzMxMzRGRjBBNjAwQUZBREI1IC8qIFdlYWsuaCAq
LywKLQkJCQkxNDZGQTVBODEzNzhGNkIwMDAzNjI3QTMgLyogSGFuZGxlVHlwZXMuaCAqLywKIAkJ
CSk7CiAJCQlwYXRoID0gaGVhcDsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yNTM2
LDYgKzI1MzksNyBAQAogCQkJCTc5MzRCQjdFMTM2MTk3OTQwMENCOTlBMSAvKiBQYXJhbGxlbEpv
YnNMaWJkaXNwYXRjaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzkzNEJCN0YxMzYxOTc5NDAwQ0I5
OUExIC8qIFBhcmFsbGVsSm9ic09wZW5NUC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjUxRENBMDQx
MzZBNkZFRjAwRjc0MTk0IC8qIFBhc3NUcmFpdHMuaCBpbiBIZWFkZXJzICovLAorCQkJCTE0ODYz
MDBBMTM4QzYxRjgwMEI0MkUxNiAvKiBIZWFwUm9vdFZpc2l0b3IuaCBpbiBIZWFkZXJzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlSGVhcC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlSGVhcC5jcHAJKHJldmlzaW9u
IDg3MTk4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlSGVhcC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJIYW5kbGVIZWFwLmgiCiAK
ICNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIkhlYXBSb290VmlzaXRvci5oIgogCiBu
YW1lc3BhY2UgSlNDIHsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxl
U3RhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRs
ZVN0YWNrLmNwcAkocmV2aXNpb24gODcxOTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IYW5kbGVTdGFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDEwICsyNCw5IEBACiAgKi8K
IAogI2luY2x1ZGUgImNvbmZpZy5oIgotCiAjaW5jbHVkZSAiSGFuZGxlU3RhY2suaCIKIAotI2lu
Y2x1ZGUgIk1hcmtTdGFjay5oIgorI2luY2x1ZGUgIkhlYXBSb290VmlzaXRvci5oIgogCiBuYW1l
c3BhY2UgSlNDIHsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlz
aW9uIDg3MTk4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNs
dWRlICJDb25zZXJ2YXRpdmVSb290cy5oIgogI2luY2x1ZGUgIkdDQWN0aXZpdHlDYWxsYmFjay5o
IgorI2luY2x1ZGUgIkhlYXBSb290VmlzaXRvci5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgi
CiAjaW5jbHVkZSAiSlNHbG9iYWxEYXRhLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBSb290VmlzaXRvci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBSb290VmlzaXRvci5oCShy
ZXZpc2lvbiA4NzE5OCkJKGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNr
Lmg6ODcxOTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwUm9vdFZpc2l0b3Iu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwOSwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIE1hcmtTdGFja19oCisjZGVm
aW5lIE1hcmtTdGFja19oCisKKyNpbmNsdWRlICJIYW5kbGVUeXBlcy5oIgorI2luY2x1ZGUgIkpT
VmFsdWUuaCIKKyNpbmNsdWRlICJSZWdpc3Rlci5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgor
I2luY2x1ZGUgPHd0Zi9PU0FsbG9jYXRvci5oPgorI2luY2x1ZGUgPHd0Zi9QYWdlQmxvY2suaD4K
KworbmFtZXNwYWNlIEpTQyB7CisKKyAgICBjbGFzcyBDb25zZXJ2YXRpdmVSb290czsKKyAgICBj
bGFzcyBKU0dsb2JhbERhdGE7CisgICAgY2xhc3MgTWFya1N0YWNrOworICAgIGNsYXNzIFJlZ2lz
dGVyOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFdyaXRlQmFycmllckJhc2U7Cisg
ICAgCisgICAgdHlwZWRlZiBNYXJrU3RhY2sgU2xvdFZpc2l0b3I7CisKKyAgICBlbnVtIE1hcmtT
ZXRQcm9wZXJ0aWVzIHsgTWF5Q29udGFpbk51bGxWYWx1ZXMsIE5vTnVsbFZhbHVlcyB9OworICAg
IAorICAgIHN0cnVjdCBNYXJrU2V0IHsKKyAgICAgICAgTWFya1NldChKU1ZhbHVlKiB2YWx1ZXMs
IEpTVmFsdWUqIGVuZCwgTWFya1NldFByb3BlcnRpZXMpOworCisgICAgICAgIEpTVmFsdWUqIG1f
dmFsdWVzOworICAgICAgICBKU1ZhbHVlKiBtX2VuZDsKKyAgICAgICAgTWFya1NldFByb3BlcnRp
ZXMgbV9wcm9wZXJ0aWVzOworICAgIH07CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFz
cyBNYXJrU3RhY2tBcnJheSB7CisgICAgcHVibGljOgorICAgICAgICBNYXJrU3RhY2tBcnJheSgp
OworICAgICAgICB+TWFya1N0YWNrQXJyYXkoKTsKKworICAgICAgICB2b2lkIGV4cGFuZCgpOwor
ICAgICAgICB2b2lkIGFwcGVuZChjb25zdCBUJik7CisKKyAgICAgICAgVCByZW1vdmVMYXN0KCk7
CisgICAgICAgIFQmIGxhc3QoKTsKKworICAgICAgICBib29sIGlzRW1wdHkoKTsKKyAgICAgICAg
c2l6ZV90IHNpemUoKTsKKworICAgICAgICB2b2lkIHNocmlua0FsbG9jYXRpb24oc2l6ZV90KTsK
KworICAgIHByaXZhdGU6CisgICAgICAgIHNpemVfdCBtX3RvcDsKKyAgICAgICAgc2l6ZV90IG1f
YWxsb2NhdGVkOworICAgICAgICBzaXplX3QgbV9jYXBhY2l0eTsKKyAgICAgICAgVCogbV9kYXRh
OworICAgIH07CisKKyAgICBjbGFzcyBNYXJrU3RhY2sgeworICAgICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShNYXJrU3RhY2spOworICAgICAgICBmcmllbmQgY2xhc3MgSGVhcFJvb3RWaXNpdG9y
OyAvLyBBbGxvd2VkIHRvIG1hcmsgYSBKU1ZhbHVlKiBvciBKU0NlbGwqKiBkaXJlY3RseS4KKwor
ICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIHZvaWQqIGFsbG9jYXRlU3RhY2soc2l6ZV90KTsK
KyAgICAgICAgc3RhdGljIHZvaWQgcmVsZWFzZVN0YWNrKHZvaWQqLCBzaXplX3QpOworCisgICAg
ICAgIE1hcmtTdGFjayh2b2lkKiBqc0FycmF5VlB0cik7CisgICAgICAgIH5NYXJrU3RhY2soKTsK
KworICAgICAgICB2b2lkIGFwcGVuZChDb25zZXJ2YXRpdmVSb290cyYpOworCisgICAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIGFwcGVuZChXcml0ZUJhcnJpZXJCYXNlPFQ+
Kik7CisgICAgICAgIGlubGluZSB2b2lkIGFwcGVuZFZhbHVlcyhXcml0ZUJhcnJpZXJCYXNlPFVu
a25vd24+Kiwgc2l6ZV90IGNvdW50LCBNYXJrU2V0UHJvcGVydGllcyA9IE5vTnVsbFZhbHVlcyk7
CisgICAgICAgIAorICAgICAgICBib29sIGFkZE9wYXF1ZVJvb3Qodm9pZCopOworICAgICAgICBi
b29sIGNvbnRhaW5zT3BhcXVlUm9vdCh2b2lkKik7CisgICAgICAgIGludCBvcGFxdWVSb290Q291
bnQoKTsKKworICAgICAgICB2b2lkIGRyYWluKCk7CisgICAgICAgIHZvaWQgcmVzZXQoKTsKKwor
ICAgIHByaXZhdGU6CisjaWYgRU5BQkxFKEdDX1ZBTElEQVRJT04pCisgICAgICAgIHN0YXRpYyB2
b2lkIHZhbGlkYXRlU2V0KEpTVmFsdWUqLCBzaXplX3QpOworICAgICAgICBzdGF0aWMgdm9pZCB2
YWxpZGF0ZVZhbHVlKEpTVmFsdWUpOworI2VuZGlmCisKKyAgICAgICAgdm9pZCBhcHBlbmQoSlNW
YWx1ZSopOworICAgICAgICB2b2lkIGFwcGVuZChKU1ZhbHVlKiwgc2l6ZV90IGNvdW50KTsKKyAg
ICAgICAgdm9pZCBhcHBlbmQoSlNDZWxsKiopOworCisgICAgICAgIHZvaWQgaW50ZXJuYWxBcHBl
bmQoSlNDZWxsKik7CisgICAgICAgIHZvaWQgaW50ZXJuYWxBcHBlbmQoSlNWYWx1ZSk7CisgICAg
ICAgIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqKTsKKworICAgICAgICB2b2lkKiBtX2pzQXJy
YXlWUHRyOworICAgICAgICBNYXJrU3RhY2tBcnJheTxNYXJrU2V0PiBtX21hcmtTZXRzOworICAg
ICAgICBNYXJrU3RhY2tBcnJheTxKU0NlbGwqPiBtX3ZhbHVlczsKKyAgICAgICAgSGFzaFNldDx2
b2lkKj4gbV9vcGFxdWVSb290czsgLy8gSGFuZGxlLW93bmluZyBkYXRhIHN0cnVjdHVyZXMgbm90
IHZpc2libGUgdG8gdGhlIGdhcmJhZ2UgY29sbGVjdG9yLgorCisjaWYgIUFTU0VSVF9ESVNBQkxF
RAorICAgIHB1YmxpYzoKKyAgICAgICAgYm9vbCBtX2lzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zp
b2xhdGlvbjsKKyAgICAgICAgYm9vbCBtX2lzRHJhaW5pbmc7CisjZW5kaWYKKyAgICB9OworCisg
ICAgaW5saW5lIE1hcmtTdGFjazo6TWFya1N0YWNrKHZvaWQqIGpzQXJyYXlWUHRyKQorICAgICAg
ICA6IG1fanNBcnJheVZQdHIoanNBcnJheVZQdHIpCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAg
ICAgICAsIG1faXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uKGZhbHNlKQorICAgICAg
ICAsIG1faXNEcmFpbmluZyhmYWxzZSkKKyNlbmRpZgorICAgIHsKKyAgICB9CisKKyAgICBpbmxp
bmUgTWFya1N0YWNrOjp+TWFya1N0YWNrKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX21hcmtT
ZXRzLmlzRW1wdHkoKSk7CisgICAgICAgIEFTU0VSVChtX3ZhbHVlcy5pc0VtcHR5KCkpOworICAg
IH0KKworICAgIGlubGluZSBib29sIE1hcmtTdGFjazo6YWRkT3BhcXVlUm9vdCh2b2lkKiByb290
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fb3BhcXVlUm9vdHMuYWRkKHJvb3QpLnNlY29uZDsK
KyAgICB9CisKKyAgICBpbmxpbmUgYm9vbCBNYXJrU3RhY2s6OmNvbnRhaW5zT3BhcXVlUm9vdCh2
b2lkKiByb290KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fb3BhcXVlUm9vdHMuY29udGFpbnMo
cm9vdCk7CisgICAgfQorCisgICAgaW5saW5lIGludCBNYXJrU3RhY2s6Om9wYXF1ZVJvb3RDb3Vu
dCgpCisgICAgeworICAgICAgICByZXR1cm4gbV9vcGFxdWVSb290cy5zaXplKCk7CisgICAgfQor
CisgICAgaW5saW5lIE1hcmtTZXQ6Ok1hcmtTZXQoSlNWYWx1ZSogdmFsdWVzLCBKU1ZhbHVlKiBl
bmQsIE1hcmtTZXRQcm9wZXJ0aWVzIHByb3BlcnRpZXMpCisgICAgICAgICAgICA6IG1fdmFsdWVz
KHZhbHVlcykKKyAgICAgICAgICAgICwgbV9lbmQoZW5kKQorICAgICAgICAgICAgLCBtX3Byb3Bl
cnRpZXMocHJvcGVydGllcykKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKHZhbHVlcyk7
CisgICAgICAgIH0KKworICAgIGlubGluZSB2b2lkKiBNYXJrU3RhY2s6OmFsbG9jYXRlU3RhY2so
c2l6ZV90IHNpemUpCisgICAgeworICAgICAgICByZXR1cm4gT1NBbGxvY2F0b3I6OnJlc2VydmVB
bmRDb21taXQoc2l6ZSk7CisgICAgfQorCisgICAgaW5saW5lIHZvaWQgTWFya1N0YWNrOjpyZWxl
YXNlU3RhY2sodm9pZCogYWRkciwgc2l6ZV90IHNpemUpCisgICAgeworICAgICAgICBPU0FsbG9j
YXRvcjo6ZGVjb21taXRBbmRSZWxlYXNlKGFkZHIsIHNpemUpOworICAgIH0KKworICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgTWFya1N0YWNrQXJyYXk8VD46Ok1hcmtTdGFja0FycmF5
KCkKKyAgICAgICAgOiBtX3RvcCgwKQorICAgICAgICAsIG1fYWxsb2NhdGVkKHBhZ2VTaXplKCkp
CisgICAgICAgICwgbV9jYXBhY2l0eShtX2FsbG9jYXRlZCAvIHNpemVvZihUKSkKKyAgICB7Cisg
ICAgICAgIG1fZGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8VCo+KE1hcmtTdGFjazo6YWxsb2NhdGVT
dGFjayhtX2FsbG9jYXRlZCkpOworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBp
bmxpbmUgTWFya1N0YWNrQXJyYXk8VD46On5NYXJrU3RhY2tBcnJheSgpCisgICAgeworICAgICAg
ICBNYXJrU3RhY2s6OnJlbGVhc2VTdGFjayhtX2RhdGEsIG1fYWxsb2NhdGVkKTsKKyAgICB9CisK
KyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgTWFya1N0YWNrQXJyYXk8VD46
OmV4cGFuZCgpCisgICAgeworICAgICAgICBzaXplX3Qgb2xkQWxsb2NhdGlvbiA9IG1fYWxsb2Nh
dGVkOworICAgICAgICBtX2FsbG9jYXRlZCAqPSAyOworICAgICAgICBtX2NhcGFjaXR5ID0gbV9h
bGxvY2F0ZWQgLyBzaXplb2YoVCk7CisgICAgICAgIHZvaWQqIG5ld0RhdGEgPSBNYXJrU3RhY2s6
OmFsbG9jYXRlU3RhY2sobV9hbGxvY2F0ZWQpOworICAgICAgICBtZW1jcHkobmV3RGF0YSwgbV9k
YXRhLCBvbGRBbGxvY2F0aW9uKTsKKyAgICAgICAgTWFya1N0YWNrOjpyZWxlYXNlU3RhY2sobV9k
YXRhLCBvbGRBbGxvY2F0aW9uKTsKKyAgICAgICAgbV9kYXRhID0gcmVpbnRlcnByZXRfY2FzdDxU
Kj4obmV3RGF0YSk7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSB2
b2lkIE1hcmtTdGFja0FycmF5PFQ+OjphcHBlbmQoY29uc3QgVCYgdikKKyAgICB7CisgICAgICAg
IGlmIChtX3RvcCA9PSBtX2NhcGFjaXR5KQorICAgICAgICAgICAgZXhwYW5kKCk7CisgICAgICAg
IG1fZGF0YVttX3RvcCsrXSA9IHY7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
IGlubGluZSBUIE1hcmtTdGFja0FycmF5PFQ+OjpyZW1vdmVMYXN0KCkKKyAgICB7CisgICAgICAg
IEFTU0VSVChtX3RvcCk7CisgICAgICAgIHJldHVybiBtX2RhdGFbLS1tX3RvcF07CisgICAgfQor
ICAgIAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgVCYgTWFya1N0YWNrQXJyYXk8
VD46Omxhc3QoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdG9wKTsKKyAgICAgICAgcmV0dXJu
IG1fZGF0YVttX3RvcCAtIDFdOworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBp
bmxpbmUgYm9vbCBNYXJrU3RhY2tBcnJheTxUPjo6aXNFbXB0eSgpCisgICAgeworICAgICAgICBy
ZXR1cm4gbV90b3AgPT0gMDsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5s
aW5lIHNpemVfdCBNYXJrU3RhY2tBcnJheTxUPjo6c2l6ZSgpCisgICAgeworICAgICAgICByZXR1
cm4gbV90b3A7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lk
IE1hcmtTdGFja0FycmF5PFQ+OjpzaHJpbmtBbGxvY2F0aW9uKHNpemVfdCBzaXplKQorICAgIHsK
KyAgICAgICAgQVNTRVJUKHNpemUgPD0gbV9hbGxvY2F0ZWQpOworICAgICAgICBBU1NFUlQoaXNQ
YWdlQWxpZ25lZChzaXplKSk7CisgICAgICAgIGlmIChzaXplID09IG1fYWxsb2NhdGVkKQorICAg
ICAgICAgICAgcmV0dXJuOworI2lmIE9TKFdJTkRPV1MpIHx8IE9TKFNZTUJJQU4pIHx8IFBMQVRG
T1JNKEJSRVdNUCkKKyAgICAgICAgLy8gV2UgY2Fubm90IHJlbGVhc2UgYSBwYXJ0IG9mIGEgcmVn
aW9uIHdpdGggVmlydHVhbEZyZWUuICBUbyBnZXQgYXJvdW5kIHRoaXMsCisgICAgICAgIC8vIHdl
J2xsIHJlbGVhc2UgdGhlIGVudGlyZSByZWdpb24gYW5kIHJlYWxsb2NhdGUgdGhlIHNpemUgdGhh
dCB3ZSB3YW50LgorICAgICAgICBNYXJrU3RhY2s6OnJlbGVhc2VTdGFjayhtX2RhdGEsIG1fYWxs
b2NhdGVkKTsKKyAgICAgICAgbV9kYXRhID0gcmVpbnRlcnByZXRfY2FzdDxUKj4oTWFya1N0YWNr
OjphbGxvY2F0ZVN0YWNrKHNpemUpKTsKKyNlbHNlCisgICAgICAgIE1hcmtTdGFjazo6cmVsZWFz
ZVN0YWNrKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KG1fZGF0YSkgKyBzaXplLCBtX2FsbG9jYXRl
ZCAtIHNpemUpOworI2VuZGlmCisgICAgICAgIG1fYWxsb2NhdGVkID0gc2l6ZTsKKyAgICAgICAg
bV9jYXBhY2l0eSA9IG1fYWxsb2NhdGVkIC8gc2l6ZW9mKFQpOworICAgIH0KKworICAgIGlubGlu
ZSB2b2lkIE1hcmtTdGFjazo6YXBwZW5kKEpTVmFsdWUqIHNsb3QsIHNpemVfdCBjb3VudCkKKyAg
ICB7CisgICAgICAgIGlmICghY291bnQpCisgICAgICAgICAgICByZXR1cm47CisjaWYgRU5BQkxF
KEdDX1ZBTElEQVRJT04pCisgICAgICAgIHZhbGlkYXRlU2V0KHNsb3QsIGNvdW50KTsKKyNlbmRp
ZgorICAgICAgICBtX21hcmtTZXRzLmFwcGVuZChNYXJrU2V0KHNsb3QsIHNsb3QgKyBjb3VudCwg
Tm9OdWxsVmFsdWVzKSk7CisgICAgfQorICAgIAorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBNYXJr
U3RhY2s6OmFwcGVuZChKU1ZhbHVlKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVCh2YWx1
ZSk7CisgICAgICAgIGludGVybmFsQXBwZW5kKCp2YWx1ZSk7CisgICAgfQorCisgICAgQUxXQVlT
X0lOTElORSB2b2lkIE1hcmtTdGFjazo6YXBwZW5kKEpTQ2VsbCoqIHZhbHVlKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKHZhbHVlKTsKKyAgICAgICAgaW50ZXJuYWxBcHBlbmQoKnZhbHVlKTsKKyAg
ICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgTWFya1N0YWNrOjppbnRlcm5hbEFwcGVuZChK
U1ZhbHVlIHZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHZhbHVlKTsKKyNpZiBFTkFCTEUo
R0NfVkFMSURBVElPTikKKyAgICAgICAgdmFsaWRhdGVWYWx1ZSh2YWx1ZSk7CisjZW5kaWYKKyAg
ICAgICAgaWYgKHZhbHVlLmlzQ2VsbCgpKQorICAgICAgICAgICAgaW50ZXJuYWxBcHBlbmQodmFs
dWUuYXNDZWxsKCkpOworICAgIH0KKworICAgIC8vIFByaXZpbGVnZWQgY2xhc3MgZm9yIG1hcmtp
bmcgSlNWYWx1ZXMgZGlyZWN0bHkuIEl0IGlzIG9ubHkgc2FmZSB0byB1c2UKKyAgICAvLyB0aGlz
IGNsYXNzIHRvIG1hcmsgZGlyZWN0IGhlYXAgcm9vdHMgdGhhdCBhcmUgbWFya2VkIGR1cmluZyBl
dmVyeSBHQyBwYXNzLgorICAgIC8vIEFsbCBvdGhlciByZWZlcmVuY2VzIHNob3VsZCBiZSB3cmFw
cGVkIGluIFdyaXRlQmFycmllcnMgYW5kIG1hcmtlZCB0aHJvdWdoCisgICAgLy8gdGhlIE1hcmtT
dGFjay4KKyAgICBjbGFzcyBIZWFwUm9vdFZpc2l0b3IgeworICAgIHByaXZhdGU6CisgICAgICAg
IGZyaWVuZCBjbGFzcyBIZWFwOworICAgICAgICBIZWFwUm9vdFZpc2l0b3IoU2xvdFZpc2l0b3Im
KTsKKworICAgIHB1YmxpYzoKKyAgICAgICAgdm9pZCBtYXJrKEpTVmFsdWUqKTsKKyAgICAgICAg
dm9pZCBtYXJrKEpTVmFsdWUqLCBzaXplX3QpOworICAgICAgICB2b2lkIG1hcmsoSlNTdHJpbmcq
Kik7CisgICAgICAgIHZvaWQgbWFyayhKU0NlbGwqKik7CisgICAgICAgIAorICAgICAgICBTbG90
VmlzaXRvciYgdmlzaXRvcigpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgU2xvdFZpc2l0b3Im
IG1fdmlzaXRvcjsKKyAgICB9OworCisgICAgaW5saW5lIEhlYXBSb290VmlzaXRvcjo6SGVhcFJv
b3RWaXNpdG9yKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQorICAgICAgICA6IG1fdmlzaXRvcih2aXNp
dG9yKQorICAgIHsKKyAgICB9CisKKyAgICBpbmxpbmUgdm9pZCBIZWFwUm9vdFZpc2l0b3I6Om1h
cmsoSlNWYWx1ZSogc2xvdCkKKyAgICB7CisgICAgICAgIG1fdmlzaXRvci5hcHBlbmQoc2xvdCk7
CisgICAgfQorCisgICAgaW5saW5lIHZvaWQgSGVhcFJvb3RWaXNpdG9yOjptYXJrKEpTVmFsdWUq
IHNsb3QsIHNpemVfdCBjb3VudCkKKyAgICB7CisgICAgICAgIG1fdmlzaXRvci5hcHBlbmQoc2xv
dCwgY291bnQpOworICAgIH0KKworICAgIGlubGluZSB2b2lkIEhlYXBSb290VmlzaXRvcjo6bWFy
ayhKU1N0cmluZyoqIHNsb3QpCisgICAgeworICAgICAgICBtX3Zpc2l0b3IuYXBwZW5kKHJlaW50
ZXJwcmV0X2Nhc3Q8SlNDZWxsKio+KHNsb3QpKTsKKyAgICB9CisKKyAgICBpbmxpbmUgdm9pZCBI
ZWFwUm9vdFZpc2l0b3I6Om1hcmsoSlNDZWxsKiogc2xvdCkKKyAgICB7CisgICAgICAgIG1fdmlz
aXRvci5hcHBlbmQoc2xvdCk7CisgICAgfQorCisgICAgaW5saW5lIFNsb3RWaXNpdG9yJiBIZWFw
Um9vdFZpc2l0b3I6OnZpc2l0b3IoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fdmlzaXRvcjsK
KyAgICB9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXBSb290VmlzaXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBSb290VmlzaXRvci5oCShyZXZpc2lvbiA4NzE5OCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBSb290VmlzaXRvci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yMywyNjEgKzIzLDEzIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVm
IE1hcmtTdGFja19oCi0jZGVmaW5lIE1hcmtTdGFja19oCisjaWZuZGVmIEhlYXBSb290VmlzaXRv
cl9oCisjZGVmaW5lIEhlYXBSb290VmlzaXRvcl9oCiAKLSNpbmNsdWRlICJIYW5kbGVUeXBlcy5o
IgotI2luY2x1ZGUgIkpTVmFsdWUuaCIKLSNpbmNsdWRlICJSZWdpc3Rlci5oIgotI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9PU0FsbG9jYXRvci5oPgotI2luY2x1ZGUgPHd0
Zi9QYWdlQmxvY2suaD4KKyNpbmNsdWRlICJNYXJrU3RhY2suaCIKIAogbmFtZXNwYWNlIEpTQyB7
CiAKLSAgICBjbGFzcyBDb25zZXJ2YXRpdmVSb290czsKLSAgICBjbGFzcyBKU0dsb2JhbERhdGE7
Ci0gICAgY2xhc3MgTWFya1N0YWNrOwotICAgIGNsYXNzIFJlZ2lzdGVyOwotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IGNsYXNzIFdyaXRlQmFycmllckJhc2U7Ci0gICAgCi0gICAgdHlwZWRlZiBN
YXJrU3RhY2sgU2xvdFZpc2l0b3I7Ci0KLSAgICBlbnVtIE1hcmtTZXRQcm9wZXJ0aWVzIHsgTWF5
Q29udGFpbk51bGxWYWx1ZXMsIE5vTnVsbFZhbHVlcyB9OwotICAgIAotICAgIHN0cnVjdCBNYXJr
U2V0IHsKLSAgICAgICAgTWFya1NldChKU1ZhbHVlKiB2YWx1ZXMsIEpTVmFsdWUqIGVuZCwgTWFy
a1NldFByb3BlcnRpZXMpOwotCi0gICAgICAgIEpTVmFsdWUqIG1fdmFsdWVzOwotICAgICAgICBK
U1ZhbHVlKiBtX2VuZDsKLSAgICAgICAgTWFya1NldFByb3BlcnRpZXMgbV9wcm9wZXJ0aWVzOwot
ICAgIH07Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBNYXJrU3RhY2tBcnJheSB7
Ci0gICAgcHVibGljOgotICAgICAgICBNYXJrU3RhY2tBcnJheSgpOwotICAgICAgICB+TWFya1N0
YWNrQXJyYXkoKTsKLQotICAgICAgICB2b2lkIGV4cGFuZCgpOwotICAgICAgICB2b2lkIGFwcGVu
ZChjb25zdCBUJik7Ci0KLSAgICAgICAgVCByZW1vdmVMYXN0KCk7Ci0gICAgICAgIFQmIGxhc3Qo
KTsKLQotICAgICAgICBib29sIGlzRW1wdHkoKTsKLSAgICAgICAgc2l6ZV90IHNpemUoKTsKLQot
ICAgICAgICB2b2lkIHNocmlua0FsbG9jYXRpb24oc2l6ZV90KTsKLQotICAgIHByaXZhdGU6Ci0g
ICAgICAgIHNpemVfdCBtX3RvcDsKLSAgICAgICAgc2l6ZV90IG1fYWxsb2NhdGVkOwotICAgICAg
ICBzaXplX3QgbV9jYXBhY2l0eTsKLSAgICAgICAgVCogbV9kYXRhOwotICAgIH07Ci0KLSAgICBj
bGFzcyBNYXJrU3RhY2sgewotICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNYXJrU3RhY2sp
OwotICAgICAgICBmcmllbmQgY2xhc3MgSGVhcFJvb3RWaXNpdG9yOyAvLyBBbGxvd2VkIHRvIG1h
cmsgYSBKU1ZhbHVlKiBvciBKU0NlbGwqKiBkaXJlY3RseS4KLQotICAgIHB1YmxpYzoKLSAgICAg
ICAgc3RhdGljIHZvaWQqIGFsbG9jYXRlU3RhY2soc2l6ZV90KTsKLSAgICAgICAgc3RhdGljIHZv
aWQgcmVsZWFzZVN0YWNrKHZvaWQqLCBzaXplX3QpOwotCi0gICAgICAgIE1hcmtTdGFjayh2b2lk
KiBqc0FycmF5VlB0cik7Ci0gICAgICAgIH5NYXJrU3RhY2soKTsKLQotICAgICAgICB2b2lkIGFw
cGVuZChDb25zZXJ2YXRpdmVSb290cyYpOwotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IGlubGluZSB2b2lkIGFwcGVuZChXcml0ZUJhcnJpZXJCYXNlPFQ+Kik7Ci0gICAgICAgIGlubGlu
ZSB2b2lkIGFwcGVuZFZhbHVlcyhXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+Kiwgc2l6ZV90IGNv
dW50LCBNYXJrU2V0UHJvcGVydGllcyA9IE5vTnVsbFZhbHVlcyk7Ci0gICAgICAgIAotICAgICAg
ICBib29sIGFkZE9wYXF1ZVJvb3Qodm9pZCopOwotICAgICAgICBib29sIGNvbnRhaW5zT3BhcXVl
Um9vdCh2b2lkKik7Ci0gICAgICAgIGludCBvcGFxdWVSb290Q291bnQoKTsKLQotICAgICAgICB2
b2lkIGRyYWluKCk7Ci0gICAgICAgIHZvaWQgcmVzZXQoKTsKLQotICAgIHByaXZhdGU6Ci0jaWYg
RU5BQkxFKEdDX1ZBTElEQVRJT04pCi0gICAgICAgIHN0YXRpYyB2b2lkIHZhbGlkYXRlU2V0KEpT
VmFsdWUqLCBzaXplX3QpOwotICAgICAgICBzdGF0aWMgdm9pZCB2YWxpZGF0ZVZhbHVlKEpTVmFs
dWUpOwotI2VuZGlmCi0KLSAgICAgICAgdm9pZCBhcHBlbmQoSlNWYWx1ZSopOwotICAgICAgICB2
b2lkIGFwcGVuZChKU1ZhbHVlKiwgc2l6ZV90IGNvdW50KTsKLSAgICAgICAgdm9pZCBhcHBlbmQo
SlNDZWxsKiopOwotCi0gICAgICAgIHZvaWQgaW50ZXJuYWxBcHBlbmQoSlNDZWxsKik7Ci0gICAg
ICAgIHZvaWQgaW50ZXJuYWxBcHBlbmQoSlNWYWx1ZSk7Ci0gICAgICAgIHZvaWQgdmlzaXRDaGls
ZHJlbihKU0NlbGwqKTsKLQotICAgICAgICB2b2lkKiBtX2pzQXJyYXlWUHRyOwotICAgICAgICBN
YXJrU3RhY2tBcnJheTxNYXJrU2V0PiBtX21hcmtTZXRzOwotICAgICAgICBNYXJrU3RhY2tBcnJh
eTxKU0NlbGwqPiBtX3ZhbHVlczsKLSAgICAgICAgSGFzaFNldDx2b2lkKj4gbV9vcGFxdWVSb290
czsgLy8gSGFuZGxlLW93bmluZyBkYXRhIHN0cnVjdHVyZXMgbm90IHZpc2libGUgdG8gdGhlIGdh
cmJhZ2UgY29sbGVjdG9yLgotCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgIHB1YmxpYzoKLSAg
ICAgICAgYm9vbCBtX2lzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbjsKLSAgICAgICAg
Ym9vbCBtX2lzRHJhaW5pbmc7Ci0jZW5kaWYKLSAgICB9OwotCi0gICAgaW5saW5lIE1hcmtTdGFj
azo6TWFya1N0YWNrKHZvaWQqIGpzQXJyYXlWUHRyKQotICAgICAgICA6IG1fanNBcnJheVZQdHIo
anNBcnJheVZQdHIpCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgICAgICAsIG1faXNDaGVja2lu
Z0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uKGZhbHNlKQotICAgICAgICAsIG1faXNEcmFpbmluZyhm
YWxzZSkKLSNlbmRpZgotICAgIHsKLSAgICB9Ci0KLSAgICBpbmxpbmUgTWFya1N0YWNrOjp+TWFy
a1N0YWNrKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX21hcmtTZXRzLmlzRW1wdHkoKSk7Ci0g
ICAgICAgIEFTU0VSVChtX3ZhbHVlcy5pc0VtcHR5KCkpOwotICAgIH0KLQotICAgIGlubGluZSBi
b29sIE1hcmtTdGFjazo6YWRkT3BhcXVlUm9vdCh2b2lkKiByb290KQotICAgIHsKLSAgICAgICAg
cmV0dXJuIG1fb3BhcXVlUm9vdHMuYWRkKHJvb3QpLnNlY29uZDsKLSAgICB9Ci0KLSAgICBpbmxp
bmUgYm9vbCBNYXJrU3RhY2s6OmNvbnRhaW5zT3BhcXVlUm9vdCh2b2lkKiByb290KQotICAgIHsK
LSAgICAgICAgcmV0dXJuIG1fb3BhcXVlUm9vdHMuY29udGFpbnMocm9vdCk7Ci0gICAgfQotCi0g
ICAgaW5saW5lIGludCBNYXJrU3RhY2s6Om9wYXF1ZVJvb3RDb3VudCgpCi0gICAgewotICAgICAg
ICByZXR1cm4gbV9vcGFxdWVSb290cy5zaXplKCk7Ci0gICAgfQotCi0gICAgaW5saW5lIE1hcmtT
ZXQ6Ok1hcmtTZXQoSlNWYWx1ZSogdmFsdWVzLCBKU1ZhbHVlKiBlbmQsIE1hcmtTZXRQcm9wZXJ0
aWVzIHByb3BlcnRpZXMpCi0gICAgICAgICAgICA6IG1fdmFsdWVzKHZhbHVlcykKLSAgICAgICAg
ICAgICwgbV9lbmQoZW5kKQotICAgICAgICAgICAgLCBtX3Byb3BlcnRpZXMocHJvcGVydGllcykK
LSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKHZhbHVlcyk7Ci0gICAgICAgIH0KLQotICAg
IGlubGluZSB2b2lkKiBNYXJrU3RhY2s6OmFsbG9jYXRlU3RhY2soc2l6ZV90IHNpemUpCi0gICAg
ewotICAgICAgICByZXR1cm4gT1NBbGxvY2F0b3I6OnJlc2VydmVBbmRDb21taXQoc2l6ZSk7Ci0g
ICAgfQotCi0gICAgaW5saW5lIHZvaWQgTWFya1N0YWNrOjpyZWxlYXNlU3RhY2sodm9pZCogYWRk
ciwgc2l6ZV90IHNpemUpCi0gICAgewotICAgICAgICBPU0FsbG9jYXRvcjo6ZGVjb21taXRBbmRS
ZWxlYXNlKGFkZHIsIHNpemUpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBp
bmxpbmUgTWFya1N0YWNrQXJyYXk8VD46Ok1hcmtTdGFja0FycmF5KCkKLSAgICAgICAgOiBtX3Rv
cCgwKQotICAgICAgICAsIG1fYWxsb2NhdGVkKHBhZ2VTaXplKCkpCi0gICAgICAgICwgbV9jYXBh
Y2l0eShtX2FsbG9jYXRlZCAvIHNpemVvZihUKSkKLSAgICB7Ci0gICAgICAgIG1fZGF0YSA9IHJl
aW50ZXJwcmV0X2Nhc3Q8VCo+KE1hcmtTdGFjazo6YWxsb2NhdGVTdGFjayhtX2FsbG9jYXRlZCkp
OwotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgTWFya1N0YWNrQXJy
YXk8VD46On5NYXJrU3RhY2tBcnJheSgpCi0gICAgewotICAgICAgICBNYXJrU3RhY2s6OnJlbGVh
c2VTdGFjayhtX2RhdGEsIG1fYWxsb2NhdGVkKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4gaW5saW5lIHZvaWQgTWFya1N0YWNrQXJyYXk8VD46OmV4cGFuZCgpCi0gICAgewot
ICAgICAgICBzaXplX3Qgb2xkQWxsb2NhdGlvbiA9IG1fYWxsb2NhdGVkOwotICAgICAgICBtX2Fs
bG9jYXRlZCAqPSAyOwotICAgICAgICBtX2NhcGFjaXR5ID0gbV9hbGxvY2F0ZWQgLyBzaXplb2Yo
VCk7Ci0gICAgICAgIHZvaWQqIG5ld0RhdGEgPSBNYXJrU3RhY2s6OmFsbG9jYXRlU3RhY2sobV9h
bGxvY2F0ZWQpOwotICAgICAgICBtZW1jcHkobmV3RGF0YSwgbV9kYXRhLCBvbGRBbGxvY2F0aW9u
KTsKLSAgICAgICAgTWFya1N0YWNrOjpyZWxlYXNlU3RhY2sobV9kYXRhLCBvbGRBbGxvY2F0aW9u
KTsKLSAgICAgICAgbV9kYXRhID0gcmVpbnRlcnByZXRfY2FzdDxUKj4obmV3RGF0YSk7Ci0gICAg
fQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIE1hcmtTdGFja0FycmF5
PFQ+OjphcHBlbmQoY29uc3QgVCYgdikKLSAgICB7Ci0gICAgICAgIGlmIChtX3RvcCA9PSBtX2Nh
cGFjaXR5KQotICAgICAgICAgICAgZXhwYW5kKCk7Ci0gICAgICAgIG1fZGF0YVttX3RvcCsrXSA9
IHY7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBUIE1hcmtTdGFj
a0FycmF5PFQ+OjpyZW1vdmVMYXN0KCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3RvcCk7Ci0g
ICAgICAgIHJldHVybiBtX2RhdGFbLS1tX3RvcF07Ci0gICAgfQotICAgIAotICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPiBpbmxpbmUgVCYgTWFya1N0YWNrQXJyYXk8VD46Omxhc3QoKQotICAgIHsK
LSAgICAgICAgQVNTRVJUKG1fdG9wKTsKLSAgICAgICAgcmV0dXJuIG1fZGF0YVttX3RvcCAtIDFd
OwotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgYm9vbCBNYXJrU3Rh
Y2tBcnJheTxUPjo6aXNFbXB0eSgpCi0gICAgewotICAgICAgICByZXR1cm4gbV90b3AgPT0gMDsK
LSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIHNpemVfdCBNYXJrU3Rh
Y2tBcnJheTxUPjo6c2l6ZSgpCi0gICAgewotICAgICAgICByZXR1cm4gbV90b3A7Ci0gICAgfQot
Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIE1hcmtTdGFja0FycmF5PFQ+
OjpzaHJpbmtBbGxvY2F0aW9uKHNpemVfdCBzaXplKQotICAgIHsKLSAgICAgICAgQVNTRVJUKHNp
emUgPD0gbV9hbGxvY2F0ZWQpOwotICAgICAgICBBU1NFUlQoaXNQYWdlQWxpZ25lZChzaXplKSk7
Ci0gICAgICAgIGlmIChzaXplID09IG1fYWxsb2NhdGVkKQotICAgICAgICAgICAgcmV0dXJuOwot
I2lmIE9TKFdJTkRPV1MpIHx8IE9TKFNZTUJJQU4pIHx8IFBMQVRGT1JNKEJSRVdNUCkKLSAgICAg
ICAgLy8gV2UgY2Fubm90IHJlbGVhc2UgYSBwYXJ0IG9mIGEgcmVnaW9uIHdpdGggVmlydHVhbEZy
ZWUuICBUbyBnZXQgYXJvdW5kIHRoaXMsCi0gICAgICAgIC8vIHdlJ2xsIHJlbGVhc2UgdGhlIGVu
dGlyZSByZWdpb24gYW5kIHJlYWxsb2NhdGUgdGhlIHNpemUgdGhhdCB3ZSB3YW50LgotICAgICAg
ICBNYXJrU3RhY2s6OnJlbGVhc2VTdGFjayhtX2RhdGEsIG1fYWxsb2NhdGVkKTsKLSAgICAgICAg
bV9kYXRhID0gcmVpbnRlcnByZXRfY2FzdDxUKj4oTWFya1N0YWNrOjphbGxvY2F0ZVN0YWNrKHNp
emUpKTsKLSNlbHNlCi0gICAgICAgIE1hcmtTdGFjazo6cmVsZWFzZVN0YWNrKHJlaW50ZXJwcmV0
X2Nhc3Q8Y2hhcio+KG1fZGF0YSkgKyBzaXplLCBtX2FsbG9jYXRlZCAtIHNpemUpOwotI2VuZGlm
Ci0gICAgICAgIG1fYWxsb2NhdGVkID0gc2l6ZTsKLSAgICAgICAgbV9jYXBhY2l0eSA9IG1fYWxs
b2NhdGVkIC8gc2l6ZW9mKFQpOwotICAgIH0KLQotICAgIGlubGluZSB2b2lkIE1hcmtTdGFjazo6
YXBwZW5kKEpTVmFsdWUqIHNsb3QsIHNpemVfdCBjb3VudCkKLSAgICB7Ci0gICAgICAgIGlmICgh
Y291bnQpCi0gICAgICAgICAgICByZXR1cm47Ci0jaWYgRU5BQkxFKEdDX1ZBTElEQVRJT04pCi0g
ICAgICAgIHZhbGlkYXRlU2V0KHNsb3QsIGNvdW50KTsKLSNlbmRpZgotICAgICAgICBtX21hcmtT
ZXRzLmFwcGVuZChNYXJrU2V0KHNsb3QsIHNsb3QgKyBjb3VudCwgTm9OdWxsVmFsdWVzKSk7Ci0g
ICAgfQotICAgIAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBNYXJrU3RhY2s6OmFwcGVuZChKU1Zh
bHVlKiB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCh2YWx1ZSk7Ci0gICAgICAgIGludGVy
bmFsQXBwZW5kKCp2YWx1ZSk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIE1hcmtT
dGFjazo6YXBwZW5kKEpTQ2VsbCoqIHZhbHVlKQotICAgIHsKLSAgICAgICAgQVNTRVJUKHZhbHVl
KTsKLSAgICAgICAgaW50ZXJuYWxBcHBlbmQoKnZhbHVlKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgTWFya1N0YWNrOjppbnRlcm5hbEFwcGVuZChKU1ZhbHVlIHZhbHVlKQotICAg
IHsKLSAgICAgICAgQVNTRVJUKHZhbHVlKTsKLSNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikKLSAg
ICAgICAgdmFsaWRhdGVWYWx1ZSh2YWx1ZSk7Ci0jZW5kaWYKLSAgICAgICAgaWYgKHZhbHVlLmlz
Q2VsbCgpKQotICAgICAgICAgICAgaW50ZXJuYWxBcHBlbmQodmFsdWUuYXNDZWxsKCkpOwotICAg
IH0KLQogICAgIC8vIFByaXZpbGVnZWQgY2xhc3MgZm9yIG1hcmtpbmcgSlNWYWx1ZXMgZGlyZWN0
bHkuIEl0IGlzIG9ubHkgc2FmZSB0byB1c2UKICAgICAvLyB0aGlzIGNsYXNzIHRvIG1hcmsgZGly
ZWN0IGhlYXAgcm9vdHMgdGhhdCBhcmUgbWFya2VkIGR1cmluZyBldmVyeSBHQyBwYXNzLgogICAg
IC8vIEFsbCBvdGhlciByZWZlcmVuY2VzIHNob3VsZCBiZSB3cmFwcGVkIGluIFdyaXRlQmFycmll
cnMgYW5kIG1hcmtlZCB0aHJvdWdoCkBAIC0zMzEsNCArODMsNCBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKLSNlbmRpZgorI2VuZGlmIC8vIEhlYXBSb290VmlzaXRv
cl9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suaAkocmV2aXNpb24g
ODcxOTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDMsOCArNDMsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBSZWdp
c3RlcjsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBXcml0ZUJhcnJpZXJCYXNlOwog
ICAgIAotICAgIHR5cGVkZWYgTWFya1N0YWNrIFNsb3RWaXNpdG9yOwotCiAgICAgZW51bSBNYXJr
U2V0UHJvcGVydGllcyB7IE1heUNvbnRhaW5OdWxsVmFsdWVzLCBOb051bGxWYWx1ZXMgfTsKICAg
ICAKICAgICBzdHJ1Y3QgTWFya1NldCB7CkBAIC0yNzgsNTYgKzI3Niw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAgICAgaW50ZXJuYWxBcHBlbmQodmFsdWUuYXNDZWxsKCkpOwogICAgIH0K
IAotICAgIC8vIFByaXZpbGVnZWQgY2xhc3MgZm9yIG1hcmtpbmcgSlNWYWx1ZXMgZGlyZWN0bHku
IEl0IGlzIG9ubHkgc2FmZSB0byB1c2UKLSAgICAvLyB0aGlzIGNsYXNzIHRvIG1hcmsgZGlyZWN0
IGhlYXAgcm9vdHMgdGhhdCBhcmUgbWFya2VkIGR1cmluZyBldmVyeSBHQyBwYXNzLgotICAgIC8v
IEFsbCBvdGhlciByZWZlcmVuY2VzIHNob3VsZCBiZSB3cmFwcGVkIGluIFdyaXRlQmFycmllcnMg
YW5kIG1hcmtlZCB0aHJvdWdoCi0gICAgLy8gdGhlIE1hcmtTdGFjay4KLSAgICBjbGFzcyBIZWFw
Um9vdFZpc2l0b3IgewotICAgIHByaXZhdGU6Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBIZWFwOwot
ICAgICAgICBIZWFwUm9vdFZpc2l0b3IoU2xvdFZpc2l0b3ImKTsKLQotICAgIHB1YmxpYzoKLSAg
ICAgICAgdm9pZCBtYXJrKEpTVmFsdWUqKTsKLSAgICAgICAgdm9pZCBtYXJrKEpTVmFsdWUqLCBz
aXplX3QpOwotICAgICAgICB2b2lkIG1hcmsoSlNTdHJpbmcqKik7Ci0gICAgICAgIHZvaWQgbWFy
ayhKU0NlbGwqKik7Ci0gICAgICAgIAotICAgICAgICBTbG90VmlzaXRvciYgdmlzaXRvcigpOwot
Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgU2xvdFZpc2l0b3ImIG1fdmlzaXRvcjsKLSAgICB9Owot
Ci0gICAgaW5saW5lIEhlYXBSb290VmlzaXRvcjo6SGVhcFJvb3RWaXNpdG9yKFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQotICAgICAgICA6IG1fdmlzaXRvcih2aXNpdG9yKQotICAgIHsKLSAgICB9Ci0K
LSAgICBpbmxpbmUgdm9pZCBIZWFwUm9vdFZpc2l0b3I6Om1hcmsoSlNWYWx1ZSogc2xvdCkKLSAg
ICB7Ci0gICAgICAgIG1fdmlzaXRvci5hcHBlbmQoc2xvdCk7Ci0gICAgfQotCi0gICAgaW5saW5l
IHZvaWQgSGVhcFJvb3RWaXNpdG9yOjptYXJrKEpTVmFsdWUqIHNsb3QsIHNpemVfdCBjb3VudCkK
LSAgICB7Ci0gICAgICAgIG1fdmlzaXRvci5hcHBlbmQoc2xvdCwgY291bnQpOwotICAgIH0KLQot
ICAgIGlubGluZSB2b2lkIEhlYXBSb290VmlzaXRvcjo6bWFyayhKU1N0cmluZyoqIHNsb3QpCi0g
ICAgewotICAgICAgICBtX3Zpc2l0b3IuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxsKio+
KHNsb3QpKTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgdm9pZCBIZWFwUm9vdFZpc2l0b3I6Om1hcmso
SlNDZWxsKiogc2xvdCkKLSAgICB7Ci0gICAgICAgIG1fdmlzaXRvci5hcHBlbmQoc2xvdCk7Ci0g
ICAgfQotCi0gICAgaW5saW5lIFNsb3RWaXNpdG9yJiBIZWFwUm9vdFZpc2l0b3I6OnZpc2l0b3Io
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdmlzaXRvcjsKLSAgICB9CisgICAgdHlwZWRlZiBN
YXJrU3RhY2sgU2xvdFZpc2l0b3I7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmNwcAkocmV2aXNpb24gODcxOTgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiU2NvcGVDaGFpbi5oIgorI2luY2x1ZGUgIkhlYXBSb290VmlzaXRv
ci5oIgogCiB1c2luZyBzdGQ6Om1pbjsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU21hbGxTdHJpbmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TbWFsbFN0cmluZ3MuY3BwCShyZXZpc2lvbiA4NzE5OCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTbWFsbFN0cmlu
Z3MuaCIKIAorI2luY2x1ZGUgIkhlYXBSb290VmlzaXRvci5oIgogI2luY2x1ZGUgIkpTR2xvYmFs
T2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4K
</data>
<flag name="review"
          id="88039"
          type_id="1"
          status="+"
          setter="oliver"
    />
    <flag name="commit-queue"
          id="88067"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>