<?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>46290</bug_id>
          
          <creation_ts>2010-09-22 12:13:37 -0700</creation_ts>
          <short_desc>Add AudioChannelSplitter files</short_desc>
          <delta_ts>2010-09-29 18:27:24 -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>Other</rep_platform>
          <op_sys>OS X 10.5</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>0</everconfirmed>
          <reporter name="Chris Rogers">crogers</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cmarrin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>jamesr</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kbr</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>283139</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2010-09-22 12:13:37 -0700</bug_when>
    <thetext>Add AudioChannelSplitter files</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283142</commentid>
    <comment_count>1</comment_count>
      <attachid>68414</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2010-09-22 12:14:46 -0700</bug_when>
    <thetext>Created attachment 68414
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283146</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2010-09-22 12:18:01 -0700</bug_when>
    <thetext>This is the implementation for AudioChannelSplitter as described in the web audio API:
http://chromium.googlecode.com/svn/trunk/samples/audio/specification/specification.html#AudioChannelSplitter-section</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286355</commentid>
    <comment_count>3</comment_count>
      <attachid>68414</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-09-28 10:33:53 -0700</bug_when>
    <thetext>Comment on attachment 68414
Patch

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

This basically looks good but I&apos;m marking it r- because of the initialize() / uninitialize() refactoring issue. Couple of other minor details.

&gt; WebCore/webaudio/AudioChannelSplitter.cpp:40
&gt; +// This is considering that 5.1 (6 channels is the largest we&apos;ll ever deal with).

This isn&apos;t a complete sentence.

&gt; WebCore/webaudio/AudioChannelSplitter.cpp:58
&gt; +void AudioChannelSplitter::process(size_t /*framesToProcess*/)

In the .cpp, since the argument is completely unused, just leave the name off rather than commenting it out.

&gt; WebCore/webaudio/AudioChannelSplitter.cpp:85
&gt; +void AudioChannelSplitter::initialize()

It looks like every AudioNode subclass has this exact same initialize() and uninitialize() method. They should be refactored into the base class. At that point m_isInitialized could be private in AudioNode.

&gt; WebCore/webaudio/AudioChannelSplitter.h:47
&gt; +    virtual void process(size_t /*framesToProcess*/);

I think the argument name should be uncommented.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286603</commentid>
    <comment_count>4</comment_count>
      <attachid>69123</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2010-09-28 16:01:20 -0700</bug_when>
    <thetext>Created attachment 69123
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286604</commentid>
    <comment_count>5</comment_count>
      <attachid>68414</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2010-09-28 16:04:51 -0700</bug_when>
    <thetext>Comment on attachment 68414
Patch

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

&gt;&gt; WebCore/webaudio/AudioChannelSplitter.cpp:40
&gt;&gt; +// This is considering that 5.1 (6 channels is the largest we&apos;ll ever deal with).
&gt; 
&gt; This isn&apos;t a complete sentence.

FIXED

&gt;&gt; WebCore/webaudio/AudioChannelSplitter.cpp:58
&gt;&gt; +void AudioChannelSplitter::process(size_t /*framesToProcess*/)
&gt; 
&gt; In the .cpp, since the argument is completely unused, just leave the name off rather than commenting it out.

I&apos;ve added the following just for a little extra safety:
    ASSERT_UNUSED(framesToProcess, framesToProcess == source-&gt;length());

&gt;&gt; WebCore/webaudio/AudioChannelSplitter.cpp:85
&gt;&gt; +void AudioChannelSplitter::initialize()
&gt; 
&gt; It looks like every AudioNode subclass has this exact same initialize() and uninitialize() method. They should be refactored into the base class. At that point m_isInitialized could be private in AudioNode.

FIXED: I&apos;ve changed AudioNode as you suggest (which I&apos;ll post as a separate patch)

&gt;&gt; WebCore/webaudio/AudioChannelSplitter.h:47
&gt;&gt; +    virtual void process(size_t /*framesToProcess*/);
&gt; 
&gt; I think the argument name should be uncommented.

FIXED</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287158</commentid>
    <comment_count>6</comment_count>
      <attachid>69123</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-09-29 15:12:40 -0700</bug_when>
    <thetext>Comment on attachment 69123
Patch

Looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287294</commentid>
    <comment_count>7</comment_count>
      <attachid>69123</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-29 18:27:18 -0700</bug_when>
    <thetext>Comment on attachment 69123
Patch

Clearing flags on attachment: 69123

Committed r68736: &lt;http://trac.webkit.org/changeset/68736&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287295</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-29 18:27:24 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68414</attachid>
            <date>2010-09-22 12:14:46 -0700</date>
            <delta_ts>2010-09-28 16:04:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46290-20100922121445.patch</filename>
            <type>text/plain</type>
            <size>9423</size>
            <attacher name="Chris Rogers">crogers</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2ODA2NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMTAtMDktMjIgIENocmlzIFJvZ2VycyAgPGNyb2dlcnNAZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgQXVkaW9DaGFubmVsU3BsaXR0ZXIgZmlsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2MjkwCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNl
IGF1ZGlvIEFQSSBpcyBub3QgeWV0IGltcGxlbWVudGVkLgorCisgICAgICAgICogd2ViYXVkaW8v
QXVkaW9DaGFubmVsU3BsaXR0ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
Q2hhbm5lbFNwbGl0dGVyOjpBdWRpb0NoYW5uZWxTcGxpdHRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb0NoYW5uZWxTcGxpdHRlcjo6cHJvY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b0NoYW5uZWxTcGxpdHRlcjo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9DaGFubmVs
U3BsaXR0ZXI6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9DaGFubmVsU3Bs
aXR0ZXI6OnVuaW5pdGlhbGl6ZSk6CisgICAgICAgICogd2ViYXVkaW8vQXVkaW9DaGFubmVsU3Bs
aXR0ZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5uZWxTcGxpdHRlcjo6
Y3JlYXRlKToKKyAgICAgICAgKiB3ZWJhdWRpby9BdWRpb0NoYW5uZWxTcGxpdHRlci5pZGw6IEFk
ZGVkLgorCiAyMDEwLTA5LTIyICBFcmlrIEFydmlkc3NvbiAgPGFydkBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgTmF0ZSBDaGFwaW4uCkluZGV4OiBXZWJDb3JlL3dlYmF1ZGlv
L0F1ZGlvQ2hhbm5lbFNwbGl0dGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3dlYmF1ZGlv
L0F1ZGlvQ2hhbm5lbFNwbGl0dGVyLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvd2ViYXVk
aW8vQXVkaW9DaGFubmVsU3BsaXR0ZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDk3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBD
b21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQl9BVURJTykKKworI2luY2x1
ZGUgIkF1ZGlvQ2hhbm5lbFNwbGl0dGVyLmgiCisKKyNpbmNsdWRlICJBdWRpb05vZGVJbnB1dC5o
IgorI2luY2x1ZGUgIkF1ZGlvTm9kZU91dHB1dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7Cisg
ICAgCisvLyBUaGlzIGlzIGNvbnNpZGVyaW5nIHRoYXQgNS4xICg2IGNoYW5uZWxzIGlzIHRoZSBs
YXJnZXN0IHdlJ2xsIGV2ZXIgZGVhbCB3aXRoKS4KKy8vIEl0IGNhbiBlYXNpbHkgYmUgaW5jcmVh
c2VkIHRvIHN1cHBvcnQgbW9yZSBpZiB0aGUgd2ViIGF1ZGlvIHNwZWNpZmljYXRpb24gaXMgdXBk
YXRlZC4KK2NvbnN0IHVuc2lnbmVkIE51bWJlck9mT3V0cHV0cyA9IDY7CisKK0F1ZGlvQ2hhbm5l
bFNwbGl0dGVyOjpBdWRpb0NoYW5uZWxTcGxpdHRlcihBdWRpb0NvbnRleHQqIGNvbnRleHQsIGRv
dWJsZSBzYW1wbGVSYXRlKQorICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCit7
CisgICAgYWRkSW5wdXQoYWRvcHRQdHIobmV3IEF1ZGlvTm9kZUlucHV0KHRoaXMpKSk7CisKKyAg
ICAvLyBDcmVhdGUgYSBmaXhlZCBudW1iZXIgb2Ygb3V0cHV0cyAoYWJsZSB0byBoYW5kbGUgdGhl
IG1heGltdW0gbnVtYmVyIG9mIGNoYW5uZWxzIGZlZCB0byBhbiBpbnB1dCkuCisgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IE51bWJlck9mT3V0cHV0czsgKytpKQorICAgICAgICBhZGRPdXRw
dXQoYWRvcHRQdHIobmV3IEF1ZGlvTm9kZU91dHB1dCh0aGlzLCAxKSkpOworICAgIAorICAgIHNl
dFR5cGUoTm9kZVR5cGVDaGFubmVsU3BsaXR0ZXIpOworICAgIAorICAgIGluaXRpYWxpemUoKTsK
K30KKwordm9pZCBBdWRpb0NoYW5uZWxTcGxpdHRlcjo6cHJvY2VzcyhzaXplX3QgLypmcmFtZXNU
b1Byb2Nlc3MqLykKK3sKKyAgICBBdWRpb0J1cyogc291cmNlID0gaW5wdXQoMCktPmJ1cygpOwor
ICAgIEFTU0VSVChzb3VyY2UpOworICAgIAorICAgIHVuc2lnbmVkIG51bWJlck9mU291cmNlQ2hh
bm5lbHMgPSBzb3VyY2UtPm51bWJlck9mQ2hhbm5lbHMoKTsKKyAgICAKKyAgICBBU1NFUlQobnVt
YmVyT2ZPdXRwdXRzKCkgPT0gTnVtYmVyT2ZPdXRwdXRzKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgTnVtYmVyT2ZPdXRwdXRzOyArK2kpIHsKKyAgICAgICAgQXVkaW9CdXMqIGRlc3Rp
bmF0aW9uID0gb3V0cHV0KGkpLT5idXMoKTsKKyAgICAgICAgQVNTRVJUKGRlc3RpbmF0aW9uKTsK
KyAgICAgICAgCisgICAgICAgIGlmIChpIDwgbnVtYmVyT2ZTb3VyY2VDaGFubmVscykgeworICAg
ICAgICAgICAgLy8gU3BsaXQgdGhlIGNoYW5uZWwgb3V0IGlmIGl0IGV4aXN0cyBpbiB0aGUgc291
cmNlLgorICAgICAgICAgICAgLy8gSXQgd291bGQgYmUgbmljZSB0byBhdm9pZCB0aGUgY29weSBh
bmQgc2ltcGx5IHBhc3MgYWxvbmcgcG9pbnRlcnMsIGJ1dCB0aGlzIGJlY29tZXMgZXh0cmVtZWx5
IGRpZmZpY3VsdCB3aXRoIGZhbm91dCBhbmQgZmFuaW4uCisgICAgICAgICAgICBkZXN0aW5hdGlv
bi0+Y2hhbm5lbCgwKS0+Y29weUZyb20oc291cmNlLT5jaGFubmVsKGkpKTsKKyAgICAgICAgfSBl
bHNlIGlmIChvdXRwdXQoaSktPmZhbk91dENvdW50KCkgPiAwKSB7CisgICAgICAgICAgICAvLyBP
bmx5IGJvdGhlciB6ZXJvaW5nIG91dCB0aGUgZGVzdGluYXRpb24gaWYgaXQncyBjb25uZWN0ZWQg
dG8gYW55dGhpbmcKKyAgICAgICAgICAgIGRlc3RpbmF0aW9uLT56ZXJvKCk7CisgICAgICAgIH0K
KyAgICB9Cit9CisKK3ZvaWQgQXVkaW9DaGFubmVsU3BsaXR0ZXI6OnJlc2V0KCkKK3sKK30KKwor
dm9pZCBBdWRpb0NoYW5uZWxTcGxpdHRlcjo6aW5pdGlhbGl6ZSgpCit7CisgICAgbV9pc0luaXRp
YWxpemVkID0gdHJ1ZTsKK30KKwordm9pZCBBdWRpb0NoYW5uZWxTcGxpdHRlcjo6dW5pbml0aWFs
aXplKCkKK3sKKyAgICBtX2lzSW5pdGlhbGl6ZWQgPSBmYWxzZTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykKSW5kZXg6IFdlYkNvcmUv
d2ViYXVkaW8vQXVkaW9DaGFubmVsU3BsaXR0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3dl
YmF1ZGlvL0F1ZGlvQ2hhbm5lbFNwbGl0dGVyLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3dl
YmF1ZGlvL0F1ZGlvQ2hhbm5lbFNwbGl0dGVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxl
IENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAor
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIEF1ZGlvQ2hhbm5lbFNwbGl0dGVyX2gKKyNkZWZpbmUgQXVkaW9DaGFubmVs
U3BsaXR0ZXJfaAorCisjaW5jbHVkZSAiQXVkaW9Ob2RlLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBdWRpb0NvbnRleHQ7Cisg
ICAgCitjbGFzcyBBdWRpb0NoYW5uZWxTcGxpdHRlciA6IHB1YmxpYyBBdWRpb05vZGUgeworcHVi
bGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF1ZGlvQ2hhbm5lbFNwbGl0dGVyPiBjcmVhdGUo
QXVkaW9Db250ZXh0KiBjb250ZXh0LCBkb3VibGUgc2FtcGxlUmF0ZSkKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgQXVkaW9DaGFubmVsU3BsaXR0ZXIoY29udGV4dCwgc2FtcGxl
UmF0ZSkpOyAgICAgIAorICAgIH0KKworICAgIC8vIEF1ZGlvTm9kZQorICAgIHZpcnR1YWwgdm9p
ZCBwcm9jZXNzKHNpemVfdCAvKmZyYW1lc1RvUHJvY2VzcyovKTsKKyAgICB2aXJ0dWFsIHZvaWQg
cmVzZXQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZSgpOworICAgIHZpcnR1YWwgdm9p
ZCB1bmluaXRpYWxpemUoKTsgICAgCisKK3ByaXZhdGU6CisgICAgQXVkaW9DaGFubmVsU3BsaXR0
ZXIoQXVkaW9Db250ZXh0KiwgZG91YmxlIHNhbXBsZVJhdGUpOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gQXVkaW9DaGFubmVsU3BsaXR0ZXJfaApJbmRleDogV2Vi
Q29yZS93ZWJhdWRpby9BdWRpb0NoYW5uZWxTcGxpdHRlci5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS93ZWJhdWRpby9BdWRpb0NoYW5uZWxTcGxpdHRlci5pZGwJKHJldmlzaW9uIDApCisrKyBX
ZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ2hhbm5lbFNwbGl0dGVyLmlkbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5h
bWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAq
ICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisg
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKK21vZHVsZSBhdWRpbyB7CisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAg
Q29uZGl0aW9uYWw9V0VCX0FVRElPCisgICAgXSBBdWRpb0NoYW5uZWxTcGxpdHRlciA6IEF1ZGlv
Tm9kZSB7CisgICAgfTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69123</attachid>
            <date>2010-09-28 16:01:20 -0700</date>
            <delta_ts>2010-09-29 18:27:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46290-20100928160120.patch</filename>
            <type>text/plain</type>
            <size>9146</size>
            <attacher name="Chris Rogers">crogers</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2ODYwMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTAtMDktMjggIENocmlzIFJvZ2VycyAgPGNyb2dlcnNAZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgQXVkaW9DaGFubmVsU3BsaXR0ZXIgZmlsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2MjkwCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNl
IGF1ZGlvIEFQSSBpcyBub3QgeWV0IGltcGxlbWVudGVkLgorCisgICAgICAgICogd2ViYXVkaW8v
QXVkaW9DaGFubmVsU3BsaXR0ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
Q2hhbm5lbFNwbGl0dGVyOjpBdWRpb0NoYW5uZWxTcGxpdHRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb0NoYW5uZWxTcGxpdHRlcjo6cHJvY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b0NoYW5uZWxTcGxpdHRlcjo6cmVzZXQpOgorICAgICAgICAqIHdlYmF1ZGlvL0F1ZGlvQ2hhbm5l
bFNwbGl0dGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9DaGFubmVsU3BsaXR0
ZXI6OmNyZWF0ZSk6CisgICAgICAgICogd2ViYXVkaW8vQXVkaW9DaGFubmVsU3BsaXR0ZXIuaWRs
OiBBZGRlZC4KKwogMjAxMC0wOS0yOCAgWGlhb21laSBKaSAgPHhqaUBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgTGV2aW4uCkluZGV4OiBXZWJDb3JlL3dlYmF1ZGlv
L0F1ZGlvQ2hhbm5lbFNwbGl0dGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3dlYmF1ZGlv
L0F1ZGlvQ2hhbm5lbFNwbGl0dGVyLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvd2ViYXVk
aW8vQXVkaW9DaGFubmVsU3BsaXR0ZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBD
b21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQl9BVURJTykKKworI2luY2x1
ZGUgIkF1ZGlvQ2hhbm5lbFNwbGl0dGVyLmgiCisKKyNpbmNsdWRlICJBdWRpb05vZGVJbnB1dC5o
IgorI2luY2x1ZGUgIkF1ZGlvTm9kZU91dHB1dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7Cisg
ICAgCisvLyBUaGlzIGlzIGNvbnNpZGVyaW5nIHRoYXQgNS4xICg2IGNoYW5uZWxzKSBpcyB0aGUg
bGFyZ2VzdCB3ZSdsbCBldmVyIGRlYWwgd2l0aC4KKy8vIEl0IGNhbiBlYXNpbHkgYmUgaW5jcmVh
c2VkIHRvIHN1cHBvcnQgbW9yZSBpZiB0aGUgd2ViIGF1ZGlvIHNwZWNpZmljYXRpb24gaXMgdXBk
YXRlZC4KK2NvbnN0IHVuc2lnbmVkIE51bWJlck9mT3V0cHV0cyA9IDY7CisKK0F1ZGlvQ2hhbm5l
bFNwbGl0dGVyOjpBdWRpb0NoYW5uZWxTcGxpdHRlcihBdWRpb0NvbnRleHQqIGNvbnRleHQsIGRv
dWJsZSBzYW1wbGVSYXRlKQorICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCit7
CisgICAgYWRkSW5wdXQoYWRvcHRQdHIobmV3IEF1ZGlvTm9kZUlucHV0KHRoaXMpKSk7CisKKyAg
ICAvLyBDcmVhdGUgYSBmaXhlZCBudW1iZXIgb2Ygb3V0cHV0cyAoYWJsZSB0byBoYW5kbGUgdGhl
IG1heGltdW0gbnVtYmVyIG9mIGNoYW5uZWxzIGZlZCB0byBhbiBpbnB1dCkuCisgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IE51bWJlck9mT3V0cHV0czsgKytpKQorICAgICAgICBhZGRPdXRw
dXQoYWRvcHRQdHIobmV3IEF1ZGlvTm9kZU91dHB1dCh0aGlzLCAxKSkpOworICAgIAorICAgIHNl
dFR5cGUoTm9kZVR5cGVDaGFubmVsU3BsaXR0ZXIpOworICAgIAorICAgIGluaXRpYWxpemUoKTsK
K30KKwordm9pZCBBdWRpb0NoYW5uZWxTcGxpdHRlcjo6cHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Q
cm9jZXNzKQoreworICAgIEF1ZGlvQnVzKiBzb3VyY2UgPSBpbnB1dCgwKS0+YnVzKCk7CisgICAg
QVNTRVJUKHNvdXJjZSk7CisgICAgQVNTRVJUX1VOVVNFRChmcmFtZXNUb1Byb2Nlc3MsIGZyYW1l
c1RvUHJvY2VzcyA9PSBzb3VyY2UtPmxlbmd0aCgpKTsKKyAgICAKKyAgICB1bnNpZ25lZCBudW1i
ZXJPZlNvdXJjZUNoYW5uZWxzID0gc291cmNlLT5udW1iZXJPZkNoYW5uZWxzKCk7CisgICAgCisg
ICAgQVNTRVJUKG51bWJlck9mT3V0cHV0cygpID09IE51bWJlck9mT3V0cHV0cyk7CisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IE51bWJlck9mT3V0cHV0czsgKytpKSB7CisgICAgICAgIEF1
ZGlvQnVzKiBkZXN0aW5hdGlvbiA9IG91dHB1dChpKS0+YnVzKCk7CisgICAgICAgIEFTU0VSVChk
ZXN0aW5hdGlvbik7CisgICAgICAgIAorICAgICAgICBpZiAoaSA8IG51bWJlck9mU291cmNlQ2hh
bm5lbHMpIHsKKyAgICAgICAgICAgIC8vIFNwbGl0IHRoZSBjaGFubmVsIG91dCBpZiBpdCBleGlz
dHMgaW4gdGhlIHNvdXJjZS4KKyAgICAgICAgICAgIC8vIEl0IHdvdWxkIGJlIG5pY2UgdG8gYXZv
aWQgdGhlIGNvcHkgYW5kIHNpbXBseSBwYXNzIGFsb25nIHBvaW50ZXJzLCBidXQgdGhpcyBiZWNv
bWVzIGV4dHJlbWVseSBkaWZmaWN1bHQgd2l0aCBmYW5vdXQgYW5kIGZhbmluLgorICAgICAgICAg
ICAgZGVzdGluYXRpb24tPmNoYW5uZWwoMCktPmNvcHlGcm9tKHNvdXJjZS0+Y2hhbm5lbChpKSk7
CisgICAgICAgIH0gZWxzZSBpZiAob3V0cHV0KGkpLT5mYW5PdXRDb3VudCgpID4gMCkgeworICAg
ICAgICAgICAgLy8gT25seSBib3RoZXIgemVyb2luZyBvdXQgdGhlIGRlc3RpbmF0aW9uIGlmIGl0
J3MgY29ubmVjdGVkIHRvIGFueXRoaW5nCisgICAgICAgICAgICBkZXN0aW5hdGlvbi0+emVybygp
OworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIEF1ZGlvQ2hhbm5lbFNwbGl0dGVyOjpyZXNl
dCgpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShX
RUJfQVVESU8pCkluZGV4OiBXZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ2hhbm5lbFNwbGl0dGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS93ZWJhdWRpby9BdWRpb0NoYW5uZWxTcGxpdHRlci5oCShy
ZXZpc2lvbiAwKQorKysgV2ViQ29yZS93ZWJhdWRpby9BdWRpb0NoYW5uZWxTcGxpdHRlci5oCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAg
TmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRo
ZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBBdWRpb0NoYW5uZWxTcGxpdHRl
cl9oCisjZGVmaW5lIEF1ZGlvQ2hhbm5lbFNwbGl0dGVyX2gKKworI2luY2x1ZGUgIkF1ZGlvTm9k
ZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgQXVkaW9Db250ZXh0OworICAgIAorY2xhc3MgQXVkaW9DaGFubmVsU3BsaXR0ZXIg
OiBwdWJsaWMgQXVkaW9Ob2RlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdWRp
b0NoYW5uZWxTcGxpdHRlcj4gY3JlYXRlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZG91YmxlIHNh
bXBsZVJhdGUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF1ZGlvQ2hhbm5l
bFNwbGl0dGVyKGNvbnRleHQsIHNhbXBsZVJhdGUpKTsgICAgICAKKyAgICB9CisKKyAgICAvLyBB
dWRpb05vZGUKKyAgICB2aXJ0dWFsIHZvaWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNz
KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKTsKKworcHJpdmF0ZToKKyAgICBBdWRpb0NoYW5u
ZWxTcGxpdHRlcihBdWRpb0NvbnRleHQqLCBkb3VibGUgc2FtcGxlUmF0ZSk7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBBdWRpb0NoYW5uZWxTcGxpdHRlcl9oCklu
ZGV4OiBXZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ2hhbm5lbFNwbGl0dGVyLmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ2hhbm5lbFNwbGl0dGVyLmlkbAkocmV2aXNpb24g
MCkKKysrIFdlYkNvcmUvd2ViYXVkaW8vQXVkaW9DaGFubmVsU3BsaXR0ZXIuaWRsCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhl
ciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1l
cyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIGF1ZGlvIHsKKyAgICBpbnRlcmZhY2UgWwor
ICAgICAgICBDb25kaXRpb25hbD1XRUJfQVVESU8KKyAgICBdIEF1ZGlvQ2hhbm5lbFNwbGl0dGVy
IDogQXVkaW9Ob2RlIHsKKyAgICB9OworfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>