<?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>60532</bug_id>
          
          <creation_ts>2011-05-09 21:54:11 -0700</creation_ts>
          <short_desc>Fixed up some #include dependencies so the WriteBarrier class can actually call Heap::writeBarrier</short_desc>
          <delta_ts>2011-05-10 19:29:55 -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>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>401048</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-05-09 21:54:11 -0700</bug_when>
    <thetext>Fixed up some #include dependencies so the WriteBarrier class can actually call Heap::writeBarrier</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401050</commentid>
    <comment_count>1</comment_count>
      <attachid>92917</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-05-09 21:58:18 -0700</bug_when>
    <thetext>Created attachment 92917
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401053</commentid>
    <comment_count>2</comment_count>
      <attachid>92917</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-05-09 22:14:05 -0700</bug_when>
    <thetext>Comment on attachment 92917
Patch

Attachment 92917 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/8655802</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401063</commentid>
    <comment_count>3</comment_count>
      <attachid>92922</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-05-09 22:35:43 -0700</bug_when>
    <thetext>Created attachment 92922
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401070</commentid>
    <comment_count>4</comment_count>
      <attachid>92917</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-05-09 23:00:15 -0700</bug_when>
    <thetext>Comment on attachment 92917
Patch

Attachment 92917 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/8655819</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401074</commentid>
    <comment_count>5</comment_count>
      <attachid>92922</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-05-09 23:44:57 -0700</bug_when>
    <thetext>Comment on attachment 92922
Patch

Attachment 92922 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/8645819</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401232</commentid>
    <comment_count>6</comment_count>
      <attachid>92922</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-05-10 08:54:34 -0700</bug_when>
    <thetext>Comment on attachment 92922
Patch

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

r=me, but I think you need to find out why this failed on the Mac EWS

&gt; Source/JavaScriptCore/heap/MarkStack.h:42
&gt; +    template &lt;typename T&gt; class WriteBarrierBase;

I think we should consider a style guideline of omitting the space between the word template and the &lt;&gt; arguments, by analogy with how there is no space after a function name before its () arguments.

&gt; Source/JavaScriptCore/heap/MarkStack.h:65
&gt; +        inline void appendValues(WriteBarrierBase&lt;Unknown&gt;*, size_t count, MarkSetProperties = NoNullValues);

I believe the inline keyword here has no effect and so should be omitted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401477</commentid>
    <comment_count>7</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-05-10 14:04:46 -0700</bug_when>
    <thetext>&gt; r=me, but I think you need to find out why this failed on the Mac EWS

This builds locally, so I think the EWS may have gotten confused with the other path attached here. I&apos;ll watch the bots to make sure.

&gt; &gt; Source/JavaScriptCore/heap/MarkStack.h:42
&gt; &gt; +    template &lt;typename T&gt; class WriteBarrierBase;
&gt; 
&gt; I think we should consider a style guideline of omitting the space between the word template and the &lt;&gt; arguments, by analogy with how there is no space after a function name before its () arguments.

You keep telling me this, and I keep forgetting. Maybe today&apos;s the day I remember?

&gt; &gt; Source/JavaScriptCore/heap/MarkStack.h:65
&gt; &gt; +        inline void appendValues(WriteBarrierBase&lt;Unknown&gt;*, size_t count, MarkSetProperties = NoNullValues);
&gt; 
&gt; I believe the inline keyword here has no effect and so should be omitted.

Actually, it opts you in to this warning in the case where you forget to #include the defining header: &quot;scratch.cc:9: warning: inline function ‘void f()’ used but never defined&quot;. I think that&apos;s a little better than just getting a linker error, since linker errors on Mac OS X can be cryptic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401715</commentid>
    <comment_count>8</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-05-10 19:29:55 -0700</bug_when>
    <thetext>Committed r86209: &lt;http://trac.webkit.org/changeset/86209&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92917</attachid>
            <date>2011-05-09 21:58:18 -0700</date>
            <delta_ts>2011-05-09 23:00:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60532-20110509215816.patch</filename>
            <type>text/plain</type>
            <size>15415</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODYxMjkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDEgQEAK
KzIwMTEtMDUtMDkgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlZCB1cCBzb21lICNp
bmNsdWRlIGRlcGVuZGVuY2llcyBzbyB0aGUgV3JpdGVCYXJyaWVyIGNsYXNzIGNhbiBhY3R1YWxs
eSBjYWxsIEhlYXA6OndyaXRlQmFycmllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NjA1MzIKKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZ3lwaToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBCdWlsZCEKKworICAgICAgICAqIGhlYXAvSGFu
ZGxlLmg6IE1vdmVkIEhhbmRsZVR5cGVzIHRvIGl0cyBvd24gaGVhZGVyIGJlY2F1c2UgdGhhdCdz
IHRoZQorICAgICAgICBXZWJLaXQgc3R5bGUsIGFuZCBpdCB3YXMgbmVjZXNzYXJ5IHRvIHJlc29s
dmUgYSBjaXJjdWxhciBkZXBlbmRlbmN5CisgICAgICAgIGJldHdlZW4gSGFuZGxlLmggYW5kIFdy
aXRlQmFycmllci5oLgorCisgICAgICAgICogaGVhcC9IZWFwLmg6CisgICAgICAgIChKU0M6Okhl
YXA6OndyaXRlQmFycmllcik6IEFkZGVkIGFuIGlubGluZSBuby1vcCB3cml0ZUJhcnJpZXIoKSwg
dG8KKyAgICAgICAgdmVyaWZ5IHRoYXQgYWxsIHRoZSBjb2RlIGlzIGluIHRoZSByaWdodCBwbGFj
ZS4KKworICAgICAgICAqIGhlYXAvTWFya1N0YWNrLmg6IE1vdmVkIFdyaXRlQmFycmllciBvcGVy
YXRpb25zIHRvIFdyaXRlQmFycmllci5oIHRvCisgICAgICAgIHJlc29sdmUgYSBjaXJjdWxhciBk
ZXBlbmRlbmN5LgorCisgICAgICAgICogcnVudGltZS9BcmdMaXN0Lmg6CisgICAgICAgICogcnVu
dGltZS9KU0NlbGwuaDogI2luY2x1ZGUgV3JpdGVCYXJyaWVyLmggc2luY2Ugd2UgZG9uJ3QgZ2V0
IGl0IGZvcgorICAgICAgICBmcmVlIGFueW1vcmUuCisKKyAgICAgICAgKiBydW50aW1lL1Byb3Bl
cnR5TWFwSGFzaFRhYmxlLmg6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OlByb3BlcnR5
VGFibGUpOiBDYWxsIHRoZSByZWFsIHdyaXRlQmFycmllcigpCisgICAgICAgIGZ1bmN0aW9uLCBu
b3cgdGhhdCBpdCBleGlzdHMuCisKKyAgICAgICAgKiBydW50aW1lL1NtYWxsU3RyaW5ncy5oOiBS
ZW1vdmVkIGEgc3RyYXkgI2luY2x1ZGUgdG8gcmVzb2x2ZSBhIGNpcmN1bGFyCisgICAgICAgIGRl
cGVuZGVuY3kuCisKKyAgICAgICAgKiBydW50aW1lL1dyaXRlQmFycmllci5oOgorICAgICAgICAo
SlNDOjpXcml0ZUJhcnJpZXJCYXNlOjpzZXQpOgorICAgICAgICAoSlNDOjpNYXJrU3RhY2s6OmFw
cGVuZCk6CisgICAgICAgIChKU0M6Ok1hcmtTdGFjazo6YXBwZW5kVmFsdWVzKTogVXBkYXRlZCB0
byBtYXRjaCB0aGUgY2hhbmdlcyBhYm92ZS4KKwogMjAxMS0wNS0wOSAgRGFyaW4gQWRsZXIgIDxk
YXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQuCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gODYw
OTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2lu
ZyBjb3B5KQpAQCAtOTQsNiArOTQsNyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGVIZWFwLmggXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hhbmRsZVN0YWNrLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGFuZGxlU3RhY2suaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlVHlw
ZXMuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAgXAogCVNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TG9jYWwuaCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lw
aQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lw
aQkocmV2aXNpb24gODYwOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogICAgICAgICAgICAgJ2hl
YXAvSGFuZGxlLmgnLAogICAgICAgICAgICAgJ2hlYXAvSGFuZGxlSGVhcC5oJywKICAgICAgICAg
ICAgICdoZWFwL0hhbmRsZVN0YWNrLmgnLAorICAgICAgICAgICAgJ2hlYXAvSGFuZGxlVHlwZXMu
aCcsCiAgICAgICAgICAgICAnaGVhcC9IZWFwLmgnLAogICAgICAgICAgICAgJ2hlYXAvTG9jYWwu
aCcsCiAgICAgICAgICAgICAnaGVhcC9Mb2NhbFNjb3BlLmgnLApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDg2MDk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTc3OSw2ICs3NzksNyBAQAogCQkxNDZBQUIyQTBCNjZBODQ5MDBFNTVGMTYgLyogSlNTdHJp
bmdSZWZDRi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTdHJpbmdSZWZD
Ri5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDZBQUIzNzBCNjZBOTQ0MDBFNTVG
MTYgLyogSlNTdHJpbmdSZWZDRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNTdHJpbmdSZWZDRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0
NkIxNERCMTJFQjVCMTIwMDFCRUMxQiAvKiBDb25zZXJ2YXRpdmVSb290cy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb25zZXJ2YXRpdmVSb290cy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0NkZBNUE4MTM3OEY2QjAwMDM2MjdBMyAvKiBIYW5k
bGVUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIYW5kbGVUeXBlcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDZGRTUxMTExQTcxMDQzMDA4N0FFNjYg
LyogSklUQ2FsbDMyXzY0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpJVENhbGwzMl82NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0N0I4M0FB
MEU2REI4QzkwMDQ3NzVBNCAvKiBCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDdCODQ2MjBFNkRFNkIxMDA0Nzc1QTQgLyog
UHV0UHJvcGVydHlTbG90LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFB1dFBy
b3BlcnR5U2xvdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTUxNCw2ICsxNTE1
LDcgQEAKIAkJCQkxNDJENkYxMDEzNTM5QTQxMDBCMDJFODYgLyogTWFya1N0YWNrUG9zaXguY3Bw
ICovLAogCQkJCTE0MkUzMTMyMTM0RkYwQTYwMEFGQURCNSAvKiBTdHJvbmcuaCAqLywKIAkJCQkx
NDJFMzEzMzEzNEZGMEE2MDBBRkFEQjUgLyogV2Vhay5oICovLAorCQkJCTE0NkZBNUE4MTM3OEY2
QjAwMDM2MjdBMyAvKiBIYW5kbGVUeXBlcy5oICovLAogCQkJKTsKIAkJCXBhdGggPSBoZWFwOwog
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTIzMzYsMTMgKzIzMzgsMTMgQEAKIAkJCQlC
QzE4QzQwNTBFMTZGNUNEMDBCMzQ0NjAgLyogRnVuY3Rpb25Qcm90b3R5cGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCURERjdBQkQ0MTFGNjBFRDIwMDEwOEUzNiAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2su
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDA2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBHZXRQdHIu
aCBpbiBIZWFkZXJzICovLAorCQkJCTE0MkUzMTM0MTM0RkYwQTYwMEFGQURCNSAvKiBIYW5kbGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDA4MEUxNkY1Q0QwMEIzNDQ2MCAvKiBIYXNoQ291
bnRlZFNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MDkwRTE2RjVDRDAwQjM0NDYwIC8q
IEhhc2hGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDBBMEUxNkY1Q0QwMEIz
NDQ2MCAvKiBIYXNoSXRlcmF0b3JzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQwQjBFMTZG
NUNEMDBCMzQ0NjAgLyogSGFzaE1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MEMwRTE2
RjVDRDAwQjM0NDYwIC8qIEhhc2hTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDBEMEUx
NkY1Q0QwMEIzNDQ2MCAvKiBIYXNoVGFibGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTE0MkUzMTM0
MTM0RkYwQTYwMEFGQURCNSAvKiBIYW5kbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDBF
MEUxNkY1Q0QwMEIzNDQ2MCAvKiBIYXNoVHJhaXRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MTg2
QTZFQzEzMTAwQkE1MDA0NDc5RTEgLyogSGV4TnVtYmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzE4QzQwRjBFMTZGNUNEMDBCMzQ0NjAgLyogSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGUuaAkocmV2aXNpb24gODYwOTkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjYs
OCArMjYsNyBAQAogI2lmbmRlZiBIYW5kbGVfaAogI2RlZmluZSBIYW5kbGVfaAogCi0jaW5jbHVk
ZSAiV3JpdGVCYXJyaWVyLmgiCi0jaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRl
ICJIYW5kbGVUeXBlcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNzcsMjAgKzc2LDYgQEAg
cHJpdmF0ZToKICAgICBIYW5kbGVTbG90IG1fc2xvdDsKIH07CiAKLXRlbXBsYXRlIDx0eXBlbmFt
ZSBUPiBzdHJ1Y3QgSGFuZGxlVHlwZXMgewotICAgIHR5cGVkZWYgVCogRXh0ZXJuYWxUeXBlOwot
ICAgIHN0YXRpYyBFeHRlcm5hbFR5cGUgZ2V0RnJvbVNsb3QoSGFuZGxlU2xvdCBzbG90KSB7IHJl
dHVybiAoc2xvdCAmJiAqc2xvdCkgPyByZWludGVycHJldF9jYXN0PEV4dGVybmFsVHlwZT4oc2xv
dC0+YXNDZWxsKCkpIDogMDsgfQotICAgIHN0YXRpYyBKU1ZhbHVlIHRvSlNWYWx1ZShUKiBjZWxs
KSB7IHJldHVybiByZWludGVycHJldF9jYXN0PEpTQ2VsbCo+KGNlbGwpOyB9Ci0gICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFU+IHN0YXRpYyB2b2lkIHZhbGlkYXRlVXBjYXN0KCkgeyBUKiB0ZW1wOyB0
ZW1wID0gKFUqKTA7IH0KLX07Ci0KLXRlbXBsYXRlIDw+IHN0cnVjdCBIYW5kbGVUeXBlczxVbmtu
b3duPiB7Ci0gICAgdHlwZWRlZiBKU1ZhbHVlIEV4dGVybmFsVHlwZTsKLSAgICBzdGF0aWMgRXh0
ZXJuYWxUeXBlIGdldEZyb21TbG90KEhhbmRsZVNsb3Qgc2xvdCkgeyByZXR1cm4gc2xvdCA/ICpz
bG90IDogSlNWYWx1ZSgpOyB9Ci0gICAgc3RhdGljIEpTVmFsdWUgdG9KU1ZhbHVlKGNvbnN0IEpT
VmFsdWUmIHYpIHsgcmV0dXJuIHY7IH0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gc3RhdGlj
IHZvaWQgdmFsaWRhdGVVcGNhc3QoKSB7fQotfTsKLQogdGVtcGxhdGUgPHR5cGVuYW1lIEJhc2Us
IHR5cGVuYW1lIFQ+IHN0cnVjdCBIYW5kbGVDb252ZXJ0ZXIgewogICAgIFQqIG9wZXJhdG9yLT4o
KQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHJldmlzaW9uIDg2MDk5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNvcHkpCkBA
IC02MSw3ICs2MSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGJvb2wgaXNN
YXJrZWQoY29uc3QgSlNDZWxsKik7CiAgICAgICAgIHN0YXRpYyBib29sIHRlc3RBbmRTZXRNYXJr
ZWQoY29uc3QgSlNDZWxsKik7CiAgICAgICAgIHN0YXRpYyB2b2lkIHNldE1hcmtlZChKU0NlbGwq
KTsKLSAgICAgICAgCisKKyAgICAgICAgc3RhdGljIHZvaWQgd3JpdGVCYXJyaWVyKGNvbnN0IEpT
Q2VsbCosIEpTVmFsdWUpOworICAgICAgICBzdGF0aWMgdm9pZCB3cml0ZUJhcnJpZXIoY29uc3Qg
SlNDZWxsKiwgSlNDZWxsKik7CisKICAgICAgICAgSGVhcChKU0dsb2JhbERhdGEqKTsKICAgICAg
ICAgfkhlYXAoKTsKICAgICAgICAgdm9pZCBkZXN0cm95KCk7IC8vIEpTR2xvYmFsRGF0YSBtdXN0
IGNhbGwgZGVzdHJveSgpIGJlZm9yZSB+SGVhcCgpLgpAQCAtMTU4LDYgKzE2MSwxNCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgTWFya2VkU3BhY2U6OnNldE1hcmtlZChjZWxsKTsKICAgICB9
CiAKKyAgICBpbmxpbmUgdm9pZCBIZWFwOjp3cml0ZUJhcnJpZXIoY29uc3QgSlNDZWxsKiwgSlNW
YWx1ZSkKKyAgICB7CisgICAgfQorCisgICAgaW5saW5lIHZvaWQgSGVhcDo6d3JpdGVCYXJyaWVy
KGNvbnN0IEpTQ2VsbCosIEpTQ2VsbCopCisgICAgeworICAgIH0KKwogICAgIGlubGluZSBib29s
IEhlYXA6OmNvbnRhaW5zKHZvaWQqIHApCiAgICAgewogICAgICAgICByZXR1cm4gbV9tYXJrZWRT
cGFjZS5jb250YWlucyhwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtT
dGFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFj
ay5oCShyZXZpc2lvbiA4NjA5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtT
dGFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw5ICsyNiw5IEBACiAjaWZuZGVmIE1hcmtTdGFj
a19oCiAjZGVmaW5lIE1hcmtTdGFja19oCiAKKyNpbmNsdWRlICJIYW5kbGVUeXBlcy5oIgogI2lu
Y2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRlICJSZWdpc3Rlci5oIgotI2luY2x1ZGUgIldyaXRl
QmFycmllci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgpAQCAtMzksNiArMzksNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICBjbGFzcyBDb25zZXJ2YXRpdmVSb290czsKICAgICBjbGFzcyBKU0ds
b2JhbERhdGE7CiAgICAgY2xhc3MgUmVnaXN0ZXI7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
IGNsYXNzIFdyaXRlQmFycmllckJhc2U7CiAgICAgCiAgICAgZW51bSBNYXJrU2V0UHJvcGVydGll
cyB7IE1heUNvbnRhaW5OdWxsVmFsdWVzLCBOb051bGxWYWx1ZXMgfTsKICAgICAKQEAgLTYwLDE0
ICs2MSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgQVNTRVJUKG1fdmFsdWVzLmlz
RW1wdHkoKSk7CiAgICAgICAgIH0KIAotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9p
ZCBhcHBlbmQoV3JpdGVCYXJyaWVyQmFzZTxUPiopOwotCi0gICAgICAgIHZvaWQgYXBwZW5kVmFs
dWVzKFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGJhcnJpZXJzLCBzaXplX3QgY291bnQsIE1h
cmtTZXRQcm9wZXJ0aWVzIHByb3BlcnRpZXMgPSBOb051bGxWYWx1ZXMpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIEpTVmFsdWUqIHZhbHVlcyA9IGJhcnJpZXJzLT5zbG90KCk7Ci0gICAgICAgICAg
ICBpZiAoY291bnQpCi0gICAgICAgICAgICAgICAgbV9tYXJrU2V0cy5hcHBlbmQoTWFya1NldCh2
YWx1ZXMsIHZhbHVlcyArIGNvdW50LCBwcm9wZXJ0aWVzKSk7Ci0gICAgICAgIH0KKyAgICAgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIGFwcGVuZChXcml0ZUJhcnJpZXJCYXNl
PFQ+Kik7CisgICAgICAgIGlubGluZSB2b2lkIGFwcGVuZFZhbHVlcyhXcml0ZUJhcnJpZXJCYXNl
PFVua25vd24+Kiwgc2l6ZV90IGNvdW50LCBNYXJrU2V0UHJvcGVydGllcyA9IE5vTnVsbFZhbHVl
cyk7CiAgICAgICAgIAogICAgICAgICB2b2lkIGFwcGVuZChDb25zZXJ2YXRpdmVSb290cyYpOwog
CkBAIC0yMTAsMTEgKzIwNSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBtX21hcmtTZXRz
LmFwcGVuZChNYXJrU2V0KHNsb3QsIHNsb3QgKyBjb3VudCwgTm9OdWxsVmFsdWVzKSk7CiAgICAg
fQogICAgIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBNYXJrU3RhY2s6
OmFwcGVuZChXcml0ZUJhcnJpZXJCYXNlPFQ+KiBzbG90KQotICAgIHsKLSAgICAgICAgaW50ZXJu
YWxBcHBlbmQoKnNsb3QtPnNsb3QoKSk7Ci0gICAgfQotCiAgICAgQUxXQVlTX0lOTElORSB2b2lk
IE1hcmtTdGFjazo6YXBwZW5kKEpTVmFsdWUqIHZhbHVlKQogICAgIHsKICAgICAgICAgQVNTRVJU
KHZhbHVlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmgJKHJl
dmlzaW9uIDg2MDk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAKICNpbmNsdWRlICJDYWxsRnJhbWUu
aCIKICNpbmNsdWRlICJSZWdpc3Rlci5oIgorI2luY2x1ZGUgIldyaXRlQmFycmllci5oIgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkocmV2aXNpb24gODYwOTkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkod29ya2luZyBjb3B5KQpAQCAt
MzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkpTVmFsdWVJbmxp
bmVNZXRob2RzLmgiCiAjaW5jbHVkZSAiTWFya1N0YWNrLmgiCisjaW5jbHVkZSAiV3JpdGVCYXJy
aWVyLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1h
cEhhc2hUYWJsZS5oCShyZXZpc2lvbiA4NjA5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0NSw3ICsy
NDUsNyBAQCBpbmxpbmUgUHJvcGVydHlUYWJsZTo6UHJvcGVydHlUYWJsZSh1bnNpCiAgICAgQVNT
RVJUKGlzUG93ZXJPZjIobV9pbmRleFNpemUpKTsKIH0KIAotaW5saW5lIFByb3BlcnR5VGFibGU6
OlByb3BlcnR5VGFibGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0NlbGwqIG93bmVyLCBj
b25zdCBQcm9wZXJ0eVRhYmxlJiBvdGhlcikKK2lubGluZSBQcm9wZXJ0eVRhYmxlOjpQcm9wZXJ0
eVRhYmxlKEpTR2xvYmFsRGF0YSYsIEpTQ2VsbCogb3duZXIsIGNvbnN0IFByb3BlcnR5VGFibGUm
IG90aGVyKQogICAgIDogbV9pbmRleFNpemUob3RoZXIubV9pbmRleFNpemUpCiAgICAgLCBtX2lu
ZGV4TWFzayhvdGhlci5tX2luZGV4TWFzaykKICAgICAsIG1faW5kZXgoc3RhdGljX2Nhc3Q8dW5z
aWduZWQqPihmYXN0TWFsbG9jKGRhdGFTaXplKCkpKSkKQEAgLTI1OSw3ICsyNTksNyBAQCBpbmxp
bmUgUHJvcGVydHlUYWJsZTo6UHJvcGVydHlUYWJsZShKU0dsCiAgICAgaXRlcmF0b3IgZW5kID0g
dGhpcy0+ZW5kKCk7CiAgICAgZm9yIChpdGVyYXRvciBpdGVyID0gYmVnaW4oKTsgaXRlciAhPSBl
bmQ7ICsraXRlcikgewogICAgICAgICBpdGVyLT5rZXktPnJlZigpOwotICAgICAgICB3cml0ZUJh
cnJpZXIoZ2xvYmFsRGF0YSwgb3duZXIsIGl0ZXItPnNwZWNpZmljVmFsdWUuZ2V0KCkpOworICAg
ICAgICBIZWFwOjp3cml0ZUJhcnJpZXIob3duZXIsIGl0ZXItPnNwZWNpZmljVmFsdWUuZ2V0KCkp
OwogICAgIH0KIAogICAgIC8vIENvcHkgdGhlIG1fZGVsZXRlZE9mZnNldHMgdmVjdG9yLgpAQCAt
MjY4LDcgKzI2OCw3IEBAIGlubGluZSBQcm9wZXJ0eVRhYmxlOjpQcm9wZXJ0eVRhYmxlKEpTR2wK
ICAgICAgICAgbV9kZWxldGVkT2Zmc2V0cyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8dW5zaWduZWQ+
KCpvdGhlckRlbGV0ZWRPZmZzZXRzKSk7CiB9CiAKLWlubGluZSBQcm9wZXJ0eVRhYmxlOjpQcm9w
ZXJ0eVRhYmxlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDZWxsKiBvd25lciwgdW5zaWdu
ZWQgaW5pdGlhbENhcGFjaXR5LCBjb25zdCBQcm9wZXJ0eVRhYmxlJiBvdGhlcikKK2lubGluZSBQ
cm9wZXJ0eVRhYmxlOjpQcm9wZXJ0eVRhYmxlKEpTR2xvYmFsRGF0YSYsIEpTQ2VsbCogb3duZXIs
IHVuc2lnbmVkIGluaXRpYWxDYXBhY2l0eSwgY29uc3QgUHJvcGVydHlUYWJsZSYgb3RoZXIpCiAg
ICAgOiBtX2luZGV4U2l6ZShzaXplRm9yQ2FwYWNpdHkoaW5pdGlhbENhcGFjaXR5KSkKICAgICAs
IG1faW5kZXhNYXNrKG1faW5kZXhTaXplIC0gMSkKICAgICAsIG1faW5kZXgoc3RhdGljX2Nhc3Q8
dW5zaWduZWQqPihmYXN0WmVyb2VkTWFsbG9jKGRhdGFTaXplKCkpKSkKQEAgLTI4Myw3ICsyODMs
NyBAQCBpbmxpbmUgUHJvcGVydHlUYWJsZTo6UHJvcGVydHlUYWJsZShKU0dsCiAgICAgICAgIEFT
U0VSVChjYW5JbnNlcnQoKSk7CiAgICAgICAgIHJlaW5zZXJ0KCppdGVyKTsKICAgICAgICAgaXRl
ci0+a2V5LT5yZWYoKTsKLSAgICAgICAgd3JpdGVCYXJyaWVyKGdsb2JhbERhdGEsIG93bmVyLCBp
dGVyLT5zcGVjaWZpY1ZhbHVlLmdldCgpKTsKKyAgICAgICAgSGVhcDo6d3JpdGVCYXJyaWVyKG93
bmVyLCBpdGVyLT5zcGVjaWZpY1ZhbHVlLmdldCgpKTsKICAgICB9CiAKICAgICAvLyBDb3B5IHRo
ZSBtX2RlbGV0ZWRPZmZzZXRzIHZlY3Rvci4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1NtYWxsU3RyaW5ncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5oCShyZXZpc2lvbiA4NjA5OSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3
ICsyNyw2IEBACiAjZGVmaW5lIFNtYWxsU3RyaW5nc19oCiAKICNpbmNsdWRlICJVU3RyaW5nLmgi
Ci0jaW5jbHVkZSAiV3JpdGVCYXJyaWVyLmgiCiAjaW5jbHVkZSA8d3RmL0ZpeGVkQXJyYXkuaD4K
ICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1dyaXRlQmFycmllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1dyaXRlQmFycmllci5oCShyZXZpc2lvbiA4NjA5OSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1dyaXRlQmFycmllci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwz
OSArMjYsMjQgQEAKICNpZm5kZWYgV3JpdGVCYXJyaWVyX2gKICNkZWZpbmUgV3JpdGVCYXJyaWVy
X2gKIAotI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJIYW5kbGVUeXBlcy5oIgorI2lu
Y2x1ZGUgIkhlYXAuaCIKIAogbmFtZXNwYWNlIEpTQyB7CisKIGNsYXNzIEpTQ2VsbDsKIGNsYXNz
IEpTR2xvYmFsRGF0YTsKIAotaW5saW5lIHZvaWQgd3JpdGVCYXJyaWVyKEpTR2xvYmFsRGF0YSYs
IGNvbnN0IEpTQ2VsbCosIEpTVmFsdWUpCi17Ci19Ci0KLWlubGluZSB2b2lkIHdyaXRlQmFycmll
cihKU0dsb2JhbERhdGEmLCBjb25zdCBKU0NlbGwqLCBKU0NlbGwqKQotewotfQotCi10eXBlZGVm
IGVudW0geyB9IFVua25vd247Ci10eXBlZGVmIEpTVmFsdWUqIEhhbmRsZVNsb3Q7Ci0KLXRlbXBs
YXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgSlNWYWx1ZUNoZWNrZXIgewotICAgIHN0YXRpYyBjb25z
dCBib29sIElzSlNWYWx1ZSA9IGZhbHNlOwotfTsKLQotdGVtcGxhdGUgPD4gc3RydWN0IEpTVmFs
dWVDaGVja2VyPEpTVmFsdWU+IHsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBJc0pTVmFsdWUgPSB0
cnVlOwotfTsKK3RlbXBsYXRlIDxjbGFzcyBUPiBjbGFzcyBXcml0ZUJhcnJpZXJCYXNlOwordGVt
cGxhdGUgPD4gY2xhc3MgV3JpdGVCYXJyaWVyQmFzZTxKU1ZhbHVlPjsKIAogLy8gV2UgaGF2ZSBh
IHNlcGFyYXRlIGJhc2UgY2xhc3Mgd2l0aCBubyBjb25zdHJ1Y3RvcnMgZm9yIHVzZSBpbiBVbmlv
bnMuCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgV3JpdGVCYXJyaWVyQmFzZSB7CiBwdWJs
aWM6Ci0gICAgQ09NUElMRV9BU1NFUlQoIUpTVmFsdWVDaGVja2VyPFQ+OjpJc0pTVmFsdWUsIFdy
aXRlQmFycmllcl9KU1ZhbHVlX2lzX2ludmFsaWRfX3VzZV91bmtub3duKTsKLSAgICB2b2lkIHNl
dChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IEpTQ2VsbCogb3duZXIsIFQqIHZhbHVl
KQorICAgIHZvaWQgc2V0KEpTR2xvYmFsRGF0YSYsIGNvbnN0IEpTQ2VsbCogb3duZXIsIFQqIHZh
bHVlKQogICAgIHsKICAgICAgICAgdGhpcy0+bV9jZWxsID0gcmVpbnRlcnByZXRfY2FzdDxKU0Nl
bGwqPih2YWx1ZSk7Ci0gICAgICAgIHdyaXRlQmFycmllcihnbG9iYWxEYXRhLCBvd25lciwgdGhp
cy0+bV9jZWxsKTsKKyAgICAgICAgSGVhcDo6d3JpdGVCYXJyaWVyKG93bmVyLCB0aGlzLT5tX2Nl
bGwpOwogI2lmIEVOQUJMRShKU0NfWk9NQklFUykKICAgICAgICAgQVNTRVJUKCFpc1pvbWJpZShv
d25lcikpOwogICAgICAgICBBU1NFUlQoIWlzWm9tYmllKG1fY2VsbCkpOwpAQCAtMTA4LDE1ICs5
MywxNiBAQCBwcml2YXRlOgogCiB0ZW1wbGF0ZSA8PiBjbGFzcyBXcml0ZUJhcnJpZXJCYXNlPFVu
a25vd24+IHsKIHB1YmxpYzoKLSAgICB2b2lkIHNldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IGNvbnN0IEpTQ2VsbCogb3duZXIsIEpTVmFsdWUgdmFsdWUpCisgICAgdm9pZCBzZXQoSlNHbG9i
YWxEYXRhJiwgY29uc3QgSlNDZWxsKiBvd25lciwgSlNWYWx1ZSB2YWx1ZSkKICAgICB7CiAjaWYg
RU5BQkxFKEpTQ19aT01CSUVTKQogICAgICAgICBBU1NFUlQoIWlzWm9tYmllKG93bmVyKSk7CiAg
ICAgICAgIEFTU0VSVCghdmFsdWUuaXNab21iaWUoKSk7CiAjZW5kaWYKICAgICAgICAgbV92YWx1
ZSA9IEpTVmFsdWU6OmVuY29kZSh2YWx1ZSk7Ci0gICAgICAgIHdyaXRlQmFycmllcihnbG9iYWxE
YXRhLCBvd25lciwgdmFsdWUpOworICAgICAgICBIZWFwOjp3cml0ZUJhcnJpZXIob3duZXIsIHZh
bHVlKTsKICAgICB9CisKICAgICB2b2lkIHNldFdpdGhvdXRXcml0ZUJhcnJpZXIoSlNWYWx1ZSB2
YWx1ZSkKICAgICB7CiAjaWYgRU5BQkxFKEpTQ19aT01CSUVTKQpAQCAtMTg1LDYgKzE3MSwyMCBA
QCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4gaW5saW5lCiAgICAgcmV0dXJuIGxo
cy5nZXQoKSA9PSByaHMuZ2V0KCk7CiB9CiAKKy8vIE1hcmtTdGFjayBmdW5jdGlvbnMKKwordGVt
cGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIE1hcmtTdGFjazo6YXBwZW5kKFdyaXRlQmFy
cmllckJhc2U8VD4qIHNsb3QpCit7CisgICAgaW50ZXJuYWxBcHBlbmQoKnNsb3QtPnNsb3QoKSk7
Cit9CisKK2lubGluZSB2b2lkIE1hcmtTdGFjazo6YXBwZW5kVmFsdWVzKFdyaXRlQmFycmllckJh
c2U8VW5rbm93bj4qIGJhcnJpZXJzLCBzaXplX3QgY291bnQsIE1hcmtTZXRQcm9wZXJ0aWVzIHBy
b3BlcnRpZXMpCit7CisgICAgSlNWYWx1ZSogdmFsdWVzID0gYmFycmllcnMtPnNsb3QoKTsKKyAg
ICBpZiAoY291bnQpCisgICAgICAgIG1fbWFya1NldHMuYXBwZW5kKE1hcmtTZXQodmFsdWVzLCB2
YWx1ZXMgKyBjb3VudCwgcHJvcGVydGllcykpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAog
I2VuZGlmIC8vIFdyaXRlQmFycmllcl9oCg==
</data>
<flag name="commit-queue"
          id="85978"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92922</attachid>
            <date>2011-05-09 22:35:43 -0700</date>
            <delta_ts>2011-05-10 08:54:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60532-20110509223541.patch</filename>
            <type>text/plain</type>
            <size>17920</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODYxMzApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDEgQEAK
KzIwMTEtMDUtMDkgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlZCB1cCBzb21lICNp
bmNsdWRlIGRlcGVuZGVuY2llcyBzbyB0aGUgV3JpdGVCYXJyaWVyIGNsYXNzIGNhbiBhY3R1YWxs
eSBjYWxsIEhlYXA6OndyaXRlQmFycmllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NjA1MzIKKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZ3lwaToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBCdWlsZCEKKworICAgICAgICAqIGhlYXAvSGFu
ZGxlLmg6IE1vdmVkIEhhbmRsZVR5cGVzIHRvIGl0cyBvd24gaGVhZGVyIGJlY2F1c2UgdGhhdCdz
IHRoZQorICAgICAgICBXZWJLaXQgc3R5bGUsIGFuZCBpdCB3YXMgbmVjZXNzYXJ5IHRvIHJlc29s
dmUgYSBjaXJjdWxhciBkZXBlbmRlbmN5CisgICAgICAgIGJldHdlZW4gSGFuZGxlLmggYW5kIFdy
aXRlQmFycmllci5oLgorCisgICAgICAgICogaGVhcC9IZWFwLmg6CisgICAgICAgIChKU0M6Okhl
YXA6OndyaXRlQmFycmllcik6IEFkZGVkIGFuIGlubGluZSBuby1vcCB3cml0ZUJhcnJpZXIoKSwg
dG8KKyAgICAgICAgdmVyaWZ5IHRoYXQgYWxsIHRoZSBjb2RlIGlzIGluIHRoZSByaWdodCBwbGFj
ZS4KKworICAgICAgICAqIGhlYXAvTWFya1N0YWNrLmg6IE1vdmVkIFdyaXRlQmFycmllciBvcGVy
YXRpb25zIHRvIFdyaXRlQmFycmllci5oIHRvCisgICAgICAgIHJlc29sdmUgYSBjaXJjdWxhciBk
ZXBlbmRlbmN5LgorCisgICAgICAgICogcnVudGltZS9BcmdMaXN0Lmg6CisgICAgICAgICogcnVu
dGltZS9KU0NlbGwuaDogI2luY2x1ZGUgV3JpdGVCYXJyaWVyLmggc2luY2Ugd2UgZG9uJ3QgZ2V0
IGl0IGZvcgorICAgICAgICBmcmVlIGFueW1vcmUuCisKKyAgICAgICAgKiBydW50aW1lL1Byb3Bl
cnR5TWFwSGFzaFRhYmxlLmg6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OlByb3BlcnR5
VGFibGUpOiBDYWxsIHRoZSByZWFsIHdyaXRlQmFycmllcigpCisgICAgICAgIGZ1bmN0aW9uLCBu
b3cgdGhhdCBpdCBleGlzdHMuCisKKyAgICAgICAgKiBydW50aW1lL1NtYWxsU3RyaW5ncy5oOiBS
ZW1vdmVkIGEgc3RyYXkgI2luY2x1ZGUgdG8gcmVzb2x2ZSBhIGNpcmN1bGFyCisgICAgICAgIGRl
cGVuZGVuY3kuCisKKyAgICAgICAgKiBydW50aW1lL1dyaXRlQmFycmllci5oOgorICAgICAgICAo
SlNDOjpXcml0ZUJhcnJpZXJCYXNlOjpzZXQpOgorICAgICAgICAoSlNDOjpNYXJrU3RhY2s6OmFw
cGVuZCk6CisgICAgICAgIChKU0M6Ok1hcmtTdGFjazo6YXBwZW5kVmFsdWVzKTogVXBkYXRlZCB0
byBtYXRjaCB0aGUgY2hhbmdlcyBhYm92ZS4KKwogMjAxMS0wNS0wOSAgRGFyaW4gQWRsZXIgIDxk
YXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQuCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gODYx
MzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2lu
ZyBjb3B5KQpAQCAtOTQsNiArOTQsNyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGVIZWFwLmggXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hhbmRsZVN0YWNrLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGFuZGxlU3RhY2suaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlVHlw
ZXMuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAgXAogCVNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TG9jYWwuaCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lw
aQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lw
aQkocmV2aXNpb24gODYxMzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogICAgICAgICAgICAgJ2hl
YXAvSGFuZGxlLmgnLAogICAgICAgICAgICAgJ2hlYXAvSGFuZGxlSGVhcC5oJywKICAgICAgICAg
ICAgICdoZWFwL0hhbmRsZVN0YWNrLmgnLAorICAgICAgICAgICAgJ2hlYXAvSGFuZGxlVHlwZXMu
aCcsCiAgICAgICAgICAgICAnaGVhcC9IZWFwLmgnLAogICAgICAgICAgICAgJ2hlYXAvTG9jYWwu
aCcsCiAgICAgICAgICAgICAnaGVhcC9Mb2NhbFNjb3BlLmgnLApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDg2MTMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTc3OSw2ICs3NzksNyBAQAogCQkxNDZBQUIyQTBCNjZBODQ5MDBFNTVGMTYgLyogSlNTdHJp
bmdSZWZDRi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTdHJpbmdSZWZD
Ri5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDZBQUIzNzBCNjZBOTQ0MDBFNTVG
MTYgLyogSlNTdHJpbmdSZWZDRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNTdHJpbmdSZWZDRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0
NkIxNERCMTJFQjVCMTIwMDFCRUMxQiAvKiBDb25zZXJ2YXRpdmVSb290cy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb25zZXJ2YXRpdmVSb290cy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0NkZBNUE4MTM3OEY2QjAwMDM2MjdBMyAvKiBIYW5k
bGVUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIYW5kbGVUeXBlcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDZGRTUxMTExQTcxMDQzMDA4N0FFNjYg
LyogSklUQ2FsbDMyXzY0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpJVENhbGwzMl82NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0N0I4M0FB
MEU2REI4QzkwMDQ3NzVBNCAvKiBCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDdCODQ2MjBFNkRFNkIxMDA0Nzc1QTQgLyog
UHV0UHJvcGVydHlTbG90LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFB1dFBy
b3BlcnR5U2xvdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTUxNCw2ICsxNTE1
LDcgQEAKIAkJCQkxNDJENkYxMDEzNTM5QTQxMDBCMDJFODYgLyogTWFya1N0YWNrUG9zaXguY3Bw
ICovLAogCQkJCTE0MkUzMTMyMTM0RkYwQTYwMEFGQURCNSAvKiBTdHJvbmcuaCAqLywKIAkJCQkx
NDJFMzEzMzEzNEZGMEE2MDBBRkFEQjUgLyogV2Vhay5oICovLAorCQkJCTE0NkZBNUE4MTM3OEY2
QjAwMDM2MjdBMyAvKiBIYW5kbGVUeXBlcy5oICovLAogCQkJKTsKIAkJCXBhdGggPSBoZWFwOwog
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTIzMzYsMTMgKzIzMzgsMTMgQEAKIAkJCQlC
QzE4QzQwNTBFMTZGNUNEMDBCMzQ0NjAgLyogRnVuY3Rpb25Qcm90b3R5cGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCURERjdBQkQ0MTFGNjBFRDIwMDEwOEUzNiAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2su
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDA2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBHZXRQdHIu
aCBpbiBIZWFkZXJzICovLAorCQkJCTE0MkUzMTM0MTM0RkYwQTYwMEFGQURCNSAvKiBIYW5kbGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDA4MEUxNkY1Q0QwMEIzNDQ2MCAvKiBIYXNoQ291
bnRlZFNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MDkwRTE2RjVDRDAwQjM0NDYwIC8q
IEhhc2hGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDBBMEUxNkY1Q0QwMEIz
NDQ2MCAvKiBIYXNoSXRlcmF0b3JzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQwQjBFMTZG
NUNEMDBCMzQ0NjAgLyogSGFzaE1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MEMwRTE2
RjVDRDAwQjM0NDYwIC8qIEhhc2hTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDBEMEUx
NkY1Q0QwMEIzNDQ2MCAvKiBIYXNoVGFibGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTE0MkUzMTM0
MTM0RkYwQTYwMEFGQURCNSAvKiBIYW5kbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDBF
MEUxNkY1Q0QwMEIzNDQ2MCAvKiBIYXNoVHJhaXRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MTg2
QTZFQzEzMTAwQkE1MDA0NDc5RTEgLyogSGV4TnVtYmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzE4QzQwRjBFMTZGNUNEMDBCMzQ0NjAgLyogSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGUuaAkocmV2aXNpb24gODYxMzApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjYs
OCArMjYsNyBAQAogI2lmbmRlZiBIYW5kbGVfaAogI2RlZmluZSBIYW5kbGVfaAogCi0jaW5jbHVk
ZSAiV3JpdGVCYXJyaWVyLmgiCi0jaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRl
ICJIYW5kbGVUeXBlcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNzcsMjAgKzc2LDYgQEAg
cHJpdmF0ZToKICAgICBIYW5kbGVTbG90IG1fc2xvdDsKIH07CiAKLXRlbXBsYXRlIDx0eXBlbmFt
ZSBUPiBzdHJ1Y3QgSGFuZGxlVHlwZXMgewotICAgIHR5cGVkZWYgVCogRXh0ZXJuYWxUeXBlOwot
ICAgIHN0YXRpYyBFeHRlcm5hbFR5cGUgZ2V0RnJvbVNsb3QoSGFuZGxlU2xvdCBzbG90KSB7IHJl
dHVybiAoc2xvdCAmJiAqc2xvdCkgPyByZWludGVycHJldF9jYXN0PEV4dGVybmFsVHlwZT4oc2xv
dC0+YXNDZWxsKCkpIDogMDsgfQotICAgIHN0YXRpYyBKU1ZhbHVlIHRvSlNWYWx1ZShUKiBjZWxs
KSB7IHJldHVybiByZWludGVycHJldF9jYXN0PEpTQ2VsbCo+KGNlbGwpOyB9Ci0gICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFU+IHN0YXRpYyB2b2lkIHZhbGlkYXRlVXBjYXN0KCkgeyBUKiB0ZW1wOyB0
ZW1wID0gKFUqKTA7IH0KLX07Ci0KLXRlbXBsYXRlIDw+IHN0cnVjdCBIYW5kbGVUeXBlczxVbmtu
b3duPiB7Ci0gICAgdHlwZWRlZiBKU1ZhbHVlIEV4dGVybmFsVHlwZTsKLSAgICBzdGF0aWMgRXh0
ZXJuYWxUeXBlIGdldEZyb21TbG90KEhhbmRsZVNsb3Qgc2xvdCkgeyByZXR1cm4gc2xvdCA/ICpz
bG90IDogSlNWYWx1ZSgpOyB9Ci0gICAgc3RhdGljIEpTVmFsdWUgdG9KU1ZhbHVlKGNvbnN0IEpT
VmFsdWUmIHYpIHsgcmV0dXJuIHY7IH0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gc3RhdGlj
IHZvaWQgdmFsaWRhdGVVcGNhc3QoKSB7fQotfTsKLQogdGVtcGxhdGUgPHR5cGVuYW1lIEJhc2Us
IHR5cGVuYW1lIFQ+IHN0cnVjdCBIYW5kbGVDb252ZXJ0ZXIgewogICAgIFQqIG9wZXJhdG9yLT4o
KQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZVR5cGVzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlVHlwZXMuaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZVR5cGVzLmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEhhbmRs
ZVR5cGVzX2gKKyNkZWZpbmUgSGFuZGxlVHlwZXNfaAorCisjaW5jbHVkZSAiSlNWYWx1ZS5oIgor
CituYW1lc3BhY2UgSlNDIHsKKwordHlwZWRlZiBlbnVtIHsgfSBVbmtub3duOwordHlwZWRlZiBK
U1ZhbHVlKiBIYW5kbGVTbG90OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IEhhbmRs
ZVR5cGVzIHsKKyAgICB0eXBlZGVmIFQqIEV4dGVybmFsVHlwZTsKKyAgICBzdGF0aWMgRXh0ZXJu
YWxUeXBlIGdldEZyb21TbG90KEhhbmRsZVNsb3Qgc2xvdCkgeyByZXR1cm4gKHNsb3QgJiYgKnNs
b3QpID8gcmVpbnRlcnByZXRfY2FzdDxFeHRlcm5hbFR5cGU+KHNsb3QtPmFzQ2VsbCgpKSA6IDA7
IH0KKyAgICBzdGF0aWMgSlNWYWx1ZSB0b0pTVmFsdWUoVCogY2VsbCkgeyByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxKU0NlbGwqPihjZWxsKTsgfQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPiBz
dGF0aWMgdm9pZCB2YWxpZGF0ZVVwY2FzdCgpIHsgVCogdGVtcDsgdGVtcCA9IChVKikwOyB9Cit9
OworCit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFuZGxlVHlwZXM8VW5rbm93bj4geworICAgIHR5cGVk
ZWYgSlNWYWx1ZSBFeHRlcm5hbFR5cGU7CisgICAgc3RhdGljIEV4dGVybmFsVHlwZSBnZXRGcm9t
U2xvdChIYW5kbGVTbG90IHNsb3QpIHsgcmV0dXJuIHNsb3QgPyAqc2xvdCA6IEpTVmFsdWUoKTsg
fQorICAgIHN0YXRpYyBKU1ZhbHVlIHRvSlNWYWx1ZShjb25zdCBKU1ZhbHVlJiB2KSB7IHJldHVy
biB2OyB9CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+IHN0YXRpYyB2b2lkIHZhbGlkYXRlVXBj
YXN0KCkgeyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEhhbmRsZVR5
cGVzX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHJldmlzaW9uIDg2MTMwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC02
MSw3ICs2MSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGJvb2wgaXNNYXJr
ZWQoY29uc3QgSlNDZWxsKik7CiAgICAgICAgIHN0YXRpYyBib29sIHRlc3RBbmRTZXRNYXJrZWQo
Y29uc3QgSlNDZWxsKik7CiAgICAgICAgIHN0YXRpYyB2b2lkIHNldE1hcmtlZChKU0NlbGwqKTsK
LSAgICAgICAgCisKKyAgICAgICAgc3RhdGljIHZvaWQgd3JpdGVCYXJyaWVyKGNvbnN0IEpTQ2Vs
bCosIEpTVmFsdWUpOworICAgICAgICBzdGF0aWMgdm9pZCB3cml0ZUJhcnJpZXIoY29uc3QgSlND
ZWxsKiwgSlNDZWxsKik7CisKICAgICAgICAgSGVhcChKU0dsb2JhbERhdGEqKTsKICAgICAgICAg
fkhlYXAoKTsKICAgICAgICAgdm9pZCBkZXN0cm95KCk7IC8vIEpTR2xvYmFsRGF0YSBtdXN0IGNh
bGwgZGVzdHJveSgpIGJlZm9yZSB+SGVhcCgpLgpAQCAtMTU4LDYgKzE2MSwxNCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgTWFya2VkU3BhY2U6OnNldE1hcmtlZChjZWxsKTsKICAgICB9CiAK
KyAgICBpbmxpbmUgdm9pZCBIZWFwOjp3cml0ZUJhcnJpZXIoY29uc3QgSlNDZWxsKiwgSlNWYWx1
ZSkKKyAgICB7CisgICAgfQorCisgICAgaW5saW5lIHZvaWQgSGVhcDo6d3JpdGVCYXJyaWVyKGNv
bnN0IEpTQ2VsbCosIEpTQ2VsbCopCisgICAgeworICAgIH0KKwogICAgIGlubGluZSBib29sIEhl
YXA6OmNvbnRhaW5zKHZvaWQqIHApCiAgICAgewogICAgICAgICByZXR1cm4gbV9tYXJrZWRTcGFj
ZS5jb250YWlucyhwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFj
ay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5o
CShyZXZpc2lvbiA4NjEzMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFj
ay5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw5ICsyNiw5IEBACiAjaWZuZGVmIE1hcmtTdGFja19o
CiAjZGVmaW5lIE1hcmtTdGFja19oCiAKKyNpbmNsdWRlICJIYW5kbGVUeXBlcy5oIgogI2luY2x1
ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRlICJSZWdpc3Rlci5oIgotI2luY2x1ZGUgIldyaXRlQmFy
cmllci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgpAQCAtMzksNiArMzksNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICBjbGFzcyBDb25zZXJ2YXRpdmVSb290czsKICAgICBjbGFzcyBKU0dsb2Jh
bERhdGE7CiAgICAgY2xhc3MgUmVnaXN0ZXI7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNs
YXNzIFdyaXRlQmFycmllckJhc2U7CiAgICAgCiAgICAgZW51bSBNYXJrU2V0UHJvcGVydGllcyB7
IE1heUNvbnRhaW5OdWxsVmFsdWVzLCBOb051bGxWYWx1ZXMgfTsKICAgICAKQEAgLTYwLDE0ICs2
MSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgQVNTRVJUKG1fdmFsdWVzLmlzRW1w
dHkoKSk7CiAgICAgICAgIH0KIAotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBh
cHBlbmQoV3JpdGVCYXJyaWVyQmFzZTxUPiopOwotCi0gICAgICAgIHZvaWQgYXBwZW5kVmFsdWVz
KFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGJhcnJpZXJzLCBzaXplX3QgY291bnQsIE1hcmtT
ZXRQcm9wZXJ0aWVzIHByb3BlcnRpZXMgPSBOb051bGxWYWx1ZXMpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIEpTVmFsdWUqIHZhbHVlcyA9IGJhcnJpZXJzLT5zbG90KCk7Ci0gICAgICAgICAgICBp
ZiAoY291bnQpCi0gICAgICAgICAgICAgICAgbV9tYXJrU2V0cy5hcHBlbmQoTWFya1NldCh2YWx1
ZXMsIHZhbHVlcyArIGNvdW50LCBwcm9wZXJ0aWVzKSk7Ci0gICAgICAgIH0KKyAgICAgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIGFwcGVuZChXcml0ZUJhcnJpZXJCYXNlPFQ+
Kik7CisgICAgICAgIGlubGluZSB2b2lkIGFwcGVuZFZhbHVlcyhXcml0ZUJhcnJpZXJCYXNlPFVu
a25vd24+Kiwgc2l6ZV90IGNvdW50LCBNYXJrU2V0UHJvcGVydGllcyA9IE5vTnVsbFZhbHVlcyk7
CiAgICAgICAgIAogICAgICAgICB2b2lkIGFwcGVuZChDb25zZXJ2YXRpdmVSb290cyYpOwogCkBA
IC0yMTAsMTEgKzIwNSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBtX21hcmtTZXRzLmFw
cGVuZChNYXJrU2V0KHNsb3QsIHNsb3QgKyBjb3VudCwgTm9OdWxsVmFsdWVzKSk7CiAgICAgfQog
ICAgIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBNYXJrU3RhY2s6OmFw
cGVuZChXcml0ZUJhcnJpZXJCYXNlPFQ+KiBzbG90KQotICAgIHsKLSAgICAgICAgaW50ZXJuYWxB
cHBlbmQoKnNsb3QtPnNsb3QoKSk7Ci0gICAgfQotCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIE1h
cmtTdGFjazo6YXBwZW5kKEpTVmFsdWUqIHZhbHVlKQogICAgIHsKICAgICAgICAgQVNTRVJUKHZh
bHVlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmgJKHJldmlz
aW9uIDg2MTMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIK
ICNpbmNsdWRlICJSZWdpc3Rlci5oIgorI2luY2x1ZGUgIldyaXRlQmFycmllci5oIgogI2luY2x1
ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkocmV2aXNpb24gODYxMzApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkod29ya2luZyBjb3B5KQpAQCAtMzAs
NiArMzAsNyBAQAogI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkpTVmFsdWVJbmxpbmVN
ZXRob2RzLmgiCiAjaW5jbHVkZSAiTWFya1N0YWNrLmgiCisjaW5jbHVkZSAiV3JpdGVCYXJyaWVy
LmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhh
c2hUYWJsZS5oCShyZXZpc2lvbiA4NjEzMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0NSw3ICsyNDUs
NyBAQCBpbmxpbmUgUHJvcGVydHlUYWJsZTo6UHJvcGVydHlUYWJsZSh1bnNpCiAgICAgQVNTRVJU
KGlzUG93ZXJPZjIobV9pbmRleFNpemUpKTsKIH0KIAotaW5saW5lIFByb3BlcnR5VGFibGU6OlBy
b3BlcnR5VGFibGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0NlbGwqIG93bmVyLCBjb25z
dCBQcm9wZXJ0eVRhYmxlJiBvdGhlcikKK2lubGluZSBQcm9wZXJ0eVRhYmxlOjpQcm9wZXJ0eVRh
YmxlKEpTR2xvYmFsRGF0YSYsIEpTQ2VsbCogb3duZXIsIGNvbnN0IFByb3BlcnR5VGFibGUmIG90
aGVyKQogICAgIDogbV9pbmRleFNpemUob3RoZXIubV9pbmRleFNpemUpCiAgICAgLCBtX2luZGV4
TWFzayhvdGhlci5tX2luZGV4TWFzaykKICAgICAsIG1faW5kZXgoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQqPihmYXN0TWFsbG9jKGRhdGFTaXplKCkpKSkKQEAgLTI1OSw3ICsyNTksNyBAQCBpbmxpbmUg
UHJvcGVydHlUYWJsZTo6UHJvcGVydHlUYWJsZShKU0dsCiAgICAgaXRlcmF0b3IgZW5kID0gdGhp
cy0+ZW5kKCk7CiAgICAgZm9yIChpdGVyYXRvciBpdGVyID0gYmVnaW4oKTsgaXRlciAhPSBlbmQ7
ICsraXRlcikgewogICAgICAgICBpdGVyLT5rZXktPnJlZigpOwotICAgICAgICB3cml0ZUJhcnJp
ZXIoZ2xvYmFsRGF0YSwgb3duZXIsIGl0ZXItPnNwZWNpZmljVmFsdWUuZ2V0KCkpOworICAgICAg
ICBIZWFwOjp3cml0ZUJhcnJpZXIob3duZXIsIGl0ZXItPnNwZWNpZmljVmFsdWUuZ2V0KCkpOwog
ICAgIH0KIAogICAgIC8vIENvcHkgdGhlIG1fZGVsZXRlZE9mZnNldHMgdmVjdG9yLgpAQCAtMjY4
LDcgKzI2OCw3IEBAIGlubGluZSBQcm9wZXJ0eVRhYmxlOjpQcm9wZXJ0eVRhYmxlKEpTR2wKICAg
ICAgICAgbV9kZWxldGVkT2Zmc2V0cyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8dW5zaWduZWQ+KCpv
dGhlckRlbGV0ZWRPZmZzZXRzKSk7CiB9CiAKLWlubGluZSBQcm9wZXJ0eVRhYmxlOjpQcm9wZXJ0
eVRhYmxlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDZWxsKiBvd25lciwgdW5zaWduZWQg
aW5pdGlhbENhcGFjaXR5LCBjb25zdCBQcm9wZXJ0eVRhYmxlJiBvdGhlcikKK2lubGluZSBQcm9w
ZXJ0eVRhYmxlOjpQcm9wZXJ0eVRhYmxlKEpTR2xvYmFsRGF0YSYsIEpTQ2VsbCogb3duZXIsIHVu
c2lnbmVkIGluaXRpYWxDYXBhY2l0eSwgY29uc3QgUHJvcGVydHlUYWJsZSYgb3RoZXIpCiAgICAg
OiBtX2luZGV4U2l6ZShzaXplRm9yQ2FwYWNpdHkoaW5pdGlhbENhcGFjaXR5KSkKICAgICAsIG1f
aW5kZXhNYXNrKG1faW5kZXhTaXplIC0gMSkKICAgICAsIG1faW5kZXgoc3RhdGljX2Nhc3Q8dW5z
aWduZWQqPihmYXN0WmVyb2VkTWFsbG9jKGRhdGFTaXplKCkpKSkKQEAgLTI4Myw3ICsyODMsNyBA
QCBpbmxpbmUgUHJvcGVydHlUYWJsZTo6UHJvcGVydHlUYWJsZShKU0dsCiAgICAgICAgIEFTU0VS
VChjYW5JbnNlcnQoKSk7CiAgICAgICAgIHJlaW5zZXJ0KCppdGVyKTsKICAgICAgICAgaXRlci0+
a2V5LT5yZWYoKTsKLSAgICAgICAgd3JpdGVCYXJyaWVyKGdsb2JhbERhdGEsIG93bmVyLCBpdGVy
LT5zcGVjaWZpY1ZhbHVlLmdldCgpKTsKKyAgICAgICAgSGVhcDo6d3JpdGVCYXJyaWVyKG93bmVy
LCBpdGVyLT5zcGVjaWZpY1ZhbHVlLmdldCgpKTsKICAgICB9CiAKICAgICAvLyBDb3B5IHRoZSBt
X2RlbGV0ZWRPZmZzZXRzIHZlY3Rvci4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NtYWxsU3RyaW5ncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1NtYWxsU3RyaW5ncy5oCShyZXZpc2lvbiA4NjEzMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsy
Nyw2IEBACiAjZGVmaW5lIFNtYWxsU3RyaW5nc19oCiAKICNpbmNsdWRlICJVU3RyaW5nLmgiCi0j
aW5jbHVkZSAiV3JpdGVCYXJyaWVyLmgiCiAjaW5jbHVkZSA8d3RmL0ZpeGVkQXJyYXkuaD4KICNp
bmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1dyaXRlQmFycmllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1dyaXRlQmFycmllci5oCShyZXZpc2lvbiA4NjEzMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1dyaXRlQmFycmllci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwzOSAr
MjYsMjQgQEAKICNpZm5kZWYgV3JpdGVCYXJyaWVyX2gKICNkZWZpbmUgV3JpdGVCYXJyaWVyX2gK
IAotI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJIYW5kbGVUeXBlcy5oIgorI2luY2x1
ZGUgIkhlYXAuaCIKIAogbmFtZXNwYWNlIEpTQyB7CisKIGNsYXNzIEpTQ2VsbDsKIGNsYXNzIEpT
R2xvYmFsRGF0YTsKIAotaW5saW5lIHZvaWQgd3JpdGVCYXJyaWVyKEpTR2xvYmFsRGF0YSYsIGNv
bnN0IEpTQ2VsbCosIEpTVmFsdWUpCi17Ci19Ci0KLWlubGluZSB2b2lkIHdyaXRlQmFycmllcihK
U0dsb2JhbERhdGEmLCBjb25zdCBKU0NlbGwqLCBKU0NlbGwqKQotewotfQotCi10eXBlZGVmIGVu
dW0geyB9IFVua25vd247Ci10eXBlZGVmIEpTVmFsdWUqIEhhbmRsZVNsb3Q7Ci0KLXRlbXBsYXRl
IDx0eXBlbmFtZSBUPiBzdHJ1Y3QgSlNWYWx1ZUNoZWNrZXIgewotICAgIHN0YXRpYyBjb25zdCBi
b29sIElzSlNWYWx1ZSA9IGZhbHNlOwotfTsKLQotdGVtcGxhdGUgPD4gc3RydWN0IEpTVmFsdWVD
aGVja2VyPEpTVmFsdWU+IHsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBJc0pTVmFsdWUgPSB0cnVl
OwotfTsKK3RlbXBsYXRlIDxjbGFzcyBUPiBjbGFzcyBXcml0ZUJhcnJpZXJCYXNlOwordGVtcGxh
dGUgPD4gY2xhc3MgV3JpdGVCYXJyaWVyQmFzZTxKU1ZhbHVlPjsKIAogLy8gV2UgaGF2ZSBhIHNl
cGFyYXRlIGJhc2UgY2xhc3Mgd2l0aCBubyBjb25zdHJ1Y3RvcnMgZm9yIHVzZSBpbiBVbmlvbnMu
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgV3JpdGVCYXJyaWVyQmFzZSB7CiBwdWJsaWM6
Ci0gICAgQ09NUElMRV9BU1NFUlQoIUpTVmFsdWVDaGVja2VyPFQ+OjpJc0pTVmFsdWUsIFdyaXRl
QmFycmllcl9KU1ZhbHVlX2lzX2ludmFsaWRfX3VzZV91bmtub3duKTsKLSAgICB2b2lkIHNldChK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IEpTQ2VsbCogb3duZXIsIFQqIHZhbHVlKQor
ICAgIHZvaWQgc2V0KEpTR2xvYmFsRGF0YSYsIGNvbnN0IEpTQ2VsbCogb3duZXIsIFQqIHZhbHVl
KQogICAgIHsKICAgICAgICAgdGhpcy0+bV9jZWxsID0gcmVpbnRlcnByZXRfY2FzdDxKU0NlbGwq
Pih2YWx1ZSk7Ci0gICAgICAgIHdyaXRlQmFycmllcihnbG9iYWxEYXRhLCBvd25lciwgdGhpcy0+
bV9jZWxsKTsKKyAgICAgICAgSGVhcDo6d3JpdGVCYXJyaWVyKG93bmVyLCB0aGlzLT5tX2NlbGwp
OwogI2lmIEVOQUJMRShKU0NfWk9NQklFUykKICAgICAgICAgQVNTRVJUKCFpc1pvbWJpZShvd25l
cikpOwogICAgICAgICBBU1NFUlQoIWlzWm9tYmllKG1fY2VsbCkpOwpAQCAtMTA4LDE1ICs5Mywx
NiBAQCBwcml2YXRlOgogCiB0ZW1wbGF0ZSA8PiBjbGFzcyBXcml0ZUJhcnJpZXJCYXNlPFVua25v
d24+IHsKIHB1YmxpYzoKLSAgICB2b2lkIHNldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNv
bnN0IEpTQ2VsbCogb3duZXIsIEpTVmFsdWUgdmFsdWUpCisgICAgdm9pZCBzZXQoSlNHbG9iYWxE
YXRhJiwgY29uc3QgSlNDZWxsKiBvd25lciwgSlNWYWx1ZSB2YWx1ZSkKICAgICB7CiAjaWYgRU5B
QkxFKEpTQ19aT01CSUVTKQogICAgICAgICBBU1NFUlQoIWlzWm9tYmllKG93bmVyKSk7CiAgICAg
ICAgIEFTU0VSVCghdmFsdWUuaXNab21iaWUoKSk7CiAjZW5kaWYKICAgICAgICAgbV92YWx1ZSA9
IEpTVmFsdWU6OmVuY29kZSh2YWx1ZSk7Ci0gICAgICAgIHdyaXRlQmFycmllcihnbG9iYWxEYXRh
LCBvd25lciwgdmFsdWUpOworICAgICAgICBIZWFwOjp3cml0ZUJhcnJpZXIob3duZXIsIHZhbHVl
KTsKICAgICB9CisKICAgICB2b2lkIHNldFdpdGhvdXRXcml0ZUJhcnJpZXIoSlNWYWx1ZSB2YWx1
ZSkKICAgICB7CiAjaWYgRU5BQkxFKEpTQ19aT01CSUVTKQpAQCAtMTg1LDYgKzE3MSwyMCBAQCB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4gaW5saW5lCiAgICAgcmV0dXJuIGxocy5n
ZXQoKSA9PSByaHMuZ2V0KCk7CiB9CiAKKy8vIE1hcmtTdGFjayBmdW5jdGlvbnMKKwordGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIE1hcmtTdGFjazo6YXBwZW5kKFdyaXRlQmFycmll
ckJhc2U8VD4qIHNsb3QpCit7CisgICAgaW50ZXJuYWxBcHBlbmQoKnNsb3QtPnNsb3QoKSk7Cit9
CisKK2lubGluZSB2b2lkIE1hcmtTdGFjazo6YXBwZW5kVmFsdWVzKFdyaXRlQmFycmllckJhc2U8
VW5rbm93bj4qIGJhcnJpZXJzLCBzaXplX3QgY291bnQsIE1hcmtTZXRQcm9wZXJ0aWVzIHByb3Bl
cnRpZXMpCit7CisgICAgSlNWYWx1ZSogdmFsdWVzID0gYmFycmllcnMtPnNsb3QoKTsKKyAgICBp
ZiAoY291bnQpCisgICAgICAgIG1fbWFya1NldHMuYXBwZW5kKE1hcmtTZXQodmFsdWVzLCB2YWx1
ZXMgKyBjb3VudCwgcHJvcGVydGllcykpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2Vu
ZGlmIC8vIFdyaXRlQmFycmllcl9oCg==
</data>
<flag name="review"
          id="85975"
          type_id="1"
          status="+"
          setter="darin"
    />
    <flag name="commit-queue"
          id="85980"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>