<?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>46291</bug_id>
          
          <creation_ts>2010-09-22 12:15:24 -0700</creation_ts>
          <short_desc>Add AudioChannelMerger files</short_desc>
          <delta_ts>2010-09-29 17:55:19 -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>283143</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2010-09-22 12:15:24 -0700</bug_when>
    <thetext>Add AudioChannelMerger files</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283145</commentid>
    <comment_count>1</comment_count>
      <attachid>68415</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2010-09-22 12:16:16 -0700</bug_when>
    <thetext>Created attachment 68415
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283149</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2010-09-22 12:18:51 -0700</bug_when>
    <thetext>This is the implementation for AudioChannelMerger as described in the web audio API:
http://chromium.googlecode.com/svn/trunk/samples/audio/specification/specification.html#AudioChannelMerger-section</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286358</commentid>
    <comment_count>3</comment_count>
      <attachid>68415</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-09-28 10:36:14 -0700</bug_when>
    <thetext>Comment on attachment 68415
Patch

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

Looks good overall, but r- for similar issues as in AudioChannelSplitter.

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

Same issue with comment as in AudioChannelSplitter.

&gt; WebCore/webaudio/AudioChannelMerger.cpp:86
&gt; +                outputChannelIndex++;

Use preincrement.

&gt; WebCore/webaudio/AudioChannelMerger.cpp:98
&gt; +void AudioChannelMerger::initialize()

Refactor these into AudioNode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286608</commentid>
    <comment_count>4</comment_count>
      <attachid>69125</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2010-09-28 16:13:15 -0700</bug_when>
    <thetext>Created attachment 69125
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286610</commentid>
    <comment_count>5</comment_count>
      <attachid>68415</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2010-09-28 16:14:05 -0700</bug_when>
    <thetext>Comment on attachment 68415
Patch

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

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

FIXED

&gt;&gt; WebCore/webaudio/AudioChannelMerger.cpp:86
&gt;&gt; +                outputChannelIndex++;
&gt; 
&gt; Use preincrement.

FIXED

&gt;&gt; WebCore/webaudio/AudioChannelMerger.cpp:98
&gt;&gt; +void AudioChannelMerger::initialize()
&gt; 
&gt; Refactor these into AudioNode.

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

Looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287271</commentid>
    <comment_count>7</comment_count>
      <attachid>69125</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-29 17:55:13 -0700</bug_when>
    <thetext>Comment on attachment 69125
Patch

Clearing flags on attachment: 69125

Committed r68732: &lt;http://trac.webkit.org/changeset/68732&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287272</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-29 17:55:19 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68415</attachid>
            <date>2010-09-22 12:16:16 -0700</date>
            <delta_ts>2010-09-28 16:14:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46291-20100922121615.patch</filename>
            <type>text/plain</type>
            <size>9849</size>
            <attacher name="Chris Rogers">crogers</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2ODA2NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMTAtMDktMjIgIENocmlzIFJvZ2VycyAgPGNyb2dlcnNAZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgQXVkaW9DaGFubmVsTWVyZ2VyIGZpbGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00NjI5MQorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBzaW5jZSBh
dWRpbyBBUEkgaXMgbm90IHlldCBpbXBsZW1lbnRlZC4KKworICAgICAgICAqIHdlYmF1ZGlvL0F1
ZGlvQ2hhbm5lbE1lcmdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9DaGFu
bmVsTWVyZ2VyOjpBdWRpb0NoYW5uZWxNZXJnZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9D
aGFubmVsTWVyZ2VyOjpwcm9jZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbE1l
cmdlcjo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9DaGFubmVsTWVyZ2VyOjppbml0
aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbE1lcmdlcjo6dW5pbml0aWFs
aXplKToKKyAgICAgICAgKiB3ZWJhdWRpby9BdWRpb0NoYW5uZWxNZXJnZXIuaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5uZWxNZXJnZXI6OmNyZWF0ZSk6CisgICAgICAgICog
d2ViYXVkaW8vQXVkaW9DaGFubmVsTWVyZ2VyLmlkbDogQWRkZWQuCisKIDIwMTAtMDktMjIgIEVy
aWsgQXJ2aWRzc29uICA8YXJ2QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBO
YXRlIENoYXBpbi4KSW5kZXg6IFdlYkNvcmUvd2ViYXVkaW8vQXVkaW9DaGFubmVsTWVyZ2VyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ2hhbm5lbE1lcmdlci5jcHAJ
KHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ2hhbm5lbE1lcmdlci5jcHAJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTEwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAz
LiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9y
IHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisj
aWYgRU5BQkxFKFdFQl9BVURJTykKKworI2luY2x1ZGUgIkF1ZGlvQ2hhbm5lbE1lcmdlci5oIgor
CisjaW5jbHVkZSAiQXVkaW9Ob2RlSW5wdXQuaCIKKyNpbmNsdWRlICJBdWRpb05vZGVPdXRwdXQu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAorLy8gVGhpcyBpcyBjb25zaWRlcmluZyB0
aGF0IDUuMSAoNiBjaGFubmVscyBpcyB0aGUgbGFyZ2VzdCB3ZSdsbCBldmVyIGRlYWwgd2l0aCku
CisvLyBJdCBjYW4gZWFzaWx5IGJlIGluY3JlYXNlZCB0byBzdXBwb3J0IG1vcmUgaWYgdGhlIHdl
YiBhdWRpbyBzcGVjaWZpY2F0aW9uIGlzIHVwZGF0ZWQuCitjb25zdCB1bnNpZ25lZCBOdW1iZXJP
ZklucHV0cyA9IDY7CisKK0F1ZGlvQ2hhbm5lbE1lcmdlcjo6QXVkaW9DaGFubmVsTWVyZ2VyKEF1
ZGlvQ29udGV4dCogY29udGV4dCwgZG91YmxlIHNhbXBsZVJhdGUpCisgICAgOiBBdWRpb05vZGUo
Y29udGV4dCwgc2FtcGxlUmF0ZSkKK3sKKyAgICAvLyBDcmVhdGUgYSBmaXhlZCBudW1iZXIgb2Yg
aW5wdXRzIChhYmxlIHRvIGhhbmRsZSB0aGUgbWF4aW11bSBudW1iZXIgb2YgY2hhbm5lbHMgd2Ug
ZGVhbCB3aXRoKS4KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgTnVtYmVyT2ZJbnB1dHM7
ICsraSkKKyAgICAgICAgYWRkSW5wdXQoYWRvcHRQdHIobmV3IEF1ZGlvTm9kZUlucHV0KHRoaXMp
KSk7CisKKyAgICBhZGRPdXRwdXQoYWRvcHRQdHIobmV3IEF1ZGlvTm9kZU91dHB1dCh0aGlzLCAx
KSkpOworICAgIAorICAgIHNldFR5cGUoTm9kZVR5cGVDaGFubmVsTWVyZ2VyKTsKKyAgICAKKyAg
ICBpbml0aWFsaXplKCk7Cit9CisKK3ZvaWQgQXVkaW9DaGFubmVsTWVyZ2VyOjpwcm9jZXNzKHNp
emVfdCAvKmZyYW1lc1RvUHJvY2VzcyovKQoreworICAgIEF1ZGlvTm9kZU91dHB1dCogb3V0cHV0
ID0gdGhpcy0+b3V0cHV0KDApOworICAgIAorICAgIC8vIENvdW50IGhvdyBtYW55IGNoYW5uZWxz
IHdlIGhhdmUgYWxsIHRvZ2V0aGVyIGZyb20gYWxsIG9mIHRoZSBpbnB1dHMuCisgICAgdW5zaWdu
ZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscyA9IDA7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG51bWJlck9mSW5wdXRzKCk7ICsraSkgeworICAgICAgICBBdWRpb05vZGVJbnB1dCogaW5w
dXQgPSB0aGlzLT5pbnB1dChpKTsKKyAgICAgICAgaWYgKGlucHV0LT5pc0Nvbm5lY3RlZCgpKQor
ICAgICAgICAgICAgbnVtYmVyT2ZPdXRwdXRDaGFubmVscyArPSBpbnB1dC0+YnVzKCktPm51bWJl
ck9mQ2hhbm5lbHMoKTsKKyAgICB9CisKKyAgICAvLyBTZXQgdGhlIGNvcnJlY3QgbnVtYmVyIG9m
IGNoYW5uZWxzIG9uIHRoZSBvdXRwdXQKKyAgICBvdXRwdXQtPnNldE51bWJlck9mQ2hhbm5lbHMo
bnVtYmVyT2ZPdXRwdXRDaGFubmVscyk7CisgICAgCisgICAgLy8gTm93IG1lcmdlIHRoZSBjaGFu
bmVscyBiYWNrIGludG8gb25lIG91dHB1dC4KKyAgICB1bnNpZ25lZCBvdXRwdXRDaGFubmVsSW5k
ZXggPSAwOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZklucHV0cygpOyAr
K2kpIHsKKyAgICAgICAgQXVkaW9Ob2RlSW5wdXQqIGlucHV0ID0gdGhpcy0+aW5wdXQoaSk7Cisg
ICAgICAgIGlmIChpbnB1dC0+aXNDb25uZWN0ZWQoKSkgeworICAgICAgICAgICAgdW5zaWduZWQg
bnVtYmVyT2ZJbnB1dENoYW5uZWxzID0gaW5wdXQtPmJ1cygpLT5udW1iZXJPZkNoYW5uZWxzKCk7
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIE1lcmdlIGNoYW5uZWxzIGZyb20gdGhpcyBw
YXJ0aWN1bGFyIGlucHV0LgorICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IG51
bWJlck9mSW5wdXRDaGFubmVsczsgKytqKSB7CisgICAgICAgICAgICAgICAgQXVkaW9DaGFubmVs
KiBpbnB1dENoYW5uZWwgPSBpbnB1dC0+YnVzKCktPmNoYW5uZWwoaik7CisgICAgICAgICAgICAg
ICAgQXVkaW9DaGFubmVsKiBvdXRwdXRDaGFubmVsID0gb3V0cHV0LT5idXMoKS0+Y2hhbm5lbChv
dXRwdXRDaGFubmVsSW5kZXgpOworICAgICAgICAgICAgICAgIG91dHB1dENoYW5uZWwtPmNvcHlG
cm9tKGlucHV0Q2hhbm5lbCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgb3V0
cHV0Q2hhbm5lbEluZGV4Kys7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAg
CisgICAgQVNTRVJUKG91dHB1dENoYW5uZWxJbmRleCA9PSBudW1iZXJPZk91dHB1dENoYW5uZWxz
KTsKK30KKwordm9pZCBBdWRpb0NoYW5uZWxNZXJnZXI6OnJlc2V0KCkKK3sKK30KKwordm9pZCBB
dWRpb0NoYW5uZWxNZXJnZXI6OmluaXRpYWxpemUoKQoreworICAgIG1faXNJbml0aWFsaXplZCA9
IHRydWU7Cit9CisKK3ZvaWQgQXVkaW9DaGFubmVsTWVyZ2VyOjp1bmluaXRpYWxpemUoKQorewor
ICAgIG1faXNJbml0aWFsaXplZCA9IGZhbHNlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpJbmRleDogV2ViQ29yZS93ZWJhdWRpby9B
dWRpb0NoYW5uZWxNZXJnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3dlYmF1ZGlvL0F1ZGlv
Q2hhbm5lbE1lcmdlci5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS93ZWJhdWRpby9BdWRpb0No
YW5uZWxNZXJnZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4g
KCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJv
bSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQXVk
aW9DaGFubmVsTWVyZ2VyX2gKKyNkZWZpbmUgQXVkaW9DaGFubmVsTWVyZ2VyX2gKKworI2luY2x1
ZGUgIkF1ZGlvTm9kZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgQXVkaW9Db250ZXh0OworICAgIAorY2xhc3MgQXVkaW9DaGFu
bmVsTWVyZ2VyIDogcHVibGljIEF1ZGlvTm9kZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8QXVkaW9DaGFubmVsTWVyZ2VyPiBjcmVhdGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBk
b3VibGUgc2FtcGxlUmF0ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXVk
aW9DaGFubmVsTWVyZ2VyKGNvbnRleHQsIHNhbXBsZVJhdGUpKTsgICAgICAKKyAgICB9CisKKyAg
ICAvLyBBdWRpb05vZGUKKyAgICB2aXJ0dWFsIHZvaWQgcHJvY2VzcyhzaXplX3QgLypmcmFtZXNU
b1Byb2Nlc3MqLyk7CisgICAgdmlydHVhbCB2b2lkIHJlc2V0KCk7CisgICAgdmlydHVhbCB2b2lk
IGluaXRpYWxpemUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgdW5pbml0aWFsaXplKCk7ICAgIAorCitw
cml2YXRlOgorICAgIEF1ZGlvQ2hhbm5lbE1lcmdlcihBdWRpb0NvbnRleHQqIGNvbnRleHQsIGRv
dWJsZSBzYW1wbGVSYXRlKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEF1ZGlvQ2hhbm5lbE1lcmdlcl9oCkluZGV4OiBXZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ2hh
bm5lbE1lcmdlci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93ZWJhdWRpby9BdWRpb0NoYW5u
ZWxNZXJnZXIuaWRsCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS93ZWJhdWRpby9BdWRpb0NoYW5u
ZWxNZXJnZXIuaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAo
IkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9t
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIGF1ZGlv
IHsKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1XRUJfQVVESU8KKyAgICBd
IEF1ZGlvQ2hhbm5lbE1lcmdlciA6IEF1ZGlvTm9kZSB7CisgICAgfTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69125</attachid>
            <date>2010-09-28 16:13:15 -0700</date>
            <delta_ts>2010-09-29 17:55:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46291-20100928161315.patch</filename>
            <type>text/plain</type>
            <size>9607</size>
            <attacher name="Chris Rogers">crogers</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2ODYwNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTAtMDktMjggIENocmlzIFJvZ2VycyAgPGNyb2dlcnNAZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgQXVkaW9DaGFubmVsTWVyZ2VyIGZpbGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00NjI5MQorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBzaW5jZSBh
dWRpbyBBUEkgaXMgbm90IHlldCBpbXBsZW1lbnRlZC4KKworICAgICAgICAqIHdlYmF1ZGlvL0F1
ZGlvQ2hhbm5lbE1lcmdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9DaGFu
bmVsTWVyZ2VyOjpBdWRpb0NoYW5uZWxNZXJnZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9D
aGFubmVsTWVyZ2VyOjpwcm9jZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbE1l
cmdlcjo6cmVzZXQpOgorICAgICAgICAqIHdlYmF1ZGlvL0F1ZGlvQ2hhbm5lbE1lcmdlci5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbE1lcmdlcjo6Y3JlYXRlKToKKyAg
ICAgICAgKiB3ZWJhdWRpby9BdWRpb0NoYW5uZWxNZXJnZXIuaWRsOiBBZGRlZC4KKwogMjAxMC0w
OS0yOCAgTmF0IER1Y2EgIDxuZHVjYUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgSmFtZXMgUm9iaW5zb24uCkluZGV4OiBXZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ2hhbm5lbE1l
cmdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93ZWJhdWRpby9BdWRpb0NoYW5uZWxNZXJn
ZXIuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS93ZWJhdWRpby9BdWRpb0NoYW5uZWxNZXJn
ZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwMiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBs
ZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2lmIEVOQUJMRShXRUJfQVVESU8pCisKKyNpbmNsdWRlICJBdWRpb0NoYW5uZWxNZXJn
ZXIuaCIKKworI2luY2x1ZGUgIkF1ZGlvTm9kZUlucHV0LmgiCisjaW5jbHVkZSAiQXVkaW9Ob2Rl
T3V0cHV0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKKy8vIFRoaXMgaXMgY29uc2lk
ZXJpbmcgdGhhdCA1LjEgKDYgY2hhbm5lbHMpIGlzIHRoZSBsYXJnZXN0IHdlJ2xsIGV2ZXIgZGVh
bCB3aXRoLgorLy8gSXQgY2FuIGVhc2lseSBiZSBpbmNyZWFzZWQgdG8gc3VwcG9ydCBtb3JlIGlm
IHRoZSB3ZWIgYXVkaW8gc3BlY2lmaWNhdGlvbiBpcyB1cGRhdGVkLgorY29uc3QgdW5zaWduZWQg
TnVtYmVyT2ZJbnB1dHMgPSA2OworCitBdWRpb0NoYW5uZWxNZXJnZXI6OkF1ZGlvQ2hhbm5lbE1l
cmdlcihBdWRpb0NvbnRleHQqIGNvbnRleHQsIGRvdWJsZSBzYW1wbGVSYXRlKQorICAgIDogQXVk
aW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCit7CisgICAgLy8gQ3JlYXRlIGEgZml4ZWQgbnVt
YmVyIG9mIGlucHV0cyAoYWJsZSB0byBoYW5kbGUgdGhlIG1heGltdW0gbnVtYmVyIG9mIGNoYW5u
ZWxzIHdlIGRlYWwgd2l0aCkuCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IE51bWJlck9m
SW5wdXRzOyArK2kpCisgICAgICAgIGFkZElucHV0KGFkb3B0UHRyKG5ldyBBdWRpb05vZGVJbnB1
dCh0aGlzKSkpOworCisgICAgYWRkT3V0cHV0KGFkb3B0UHRyKG5ldyBBdWRpb05vZGVPdXRwdXQo
dGhpcywgMSkpKTsKKyAgICAKKyAgICBzZXRUeXBlKE5vZGVUeXBlQ2hhbm5lbE1lcmdlcik7Cisg
ICAgCisgICAgaW5pdGlhbGl6ZSgpOworfQorCit2b2lkIEF1ZGlvQ2hhbm5lbE1lcmdlcjo6cHJv
Y2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQoreworICAgIEF1ZGlvTm9kZU91dHB1dCogb3V0
cHV0ID0gdGhpcy0+b3V0cHV0KDApOworICAgIEFTU0VSVChvdXRwdXQpOworICAgIEFTU0VSVF9V
TlVTRUQoZnJhbWVzVG9Qcm9jZXNzLCBmcmFtZXNUb1Byb2Nlc3MgPT0gb3V0cHV0LT5idXMoKS0+
bGVuZ3RoKCkpOyAgICAKKyAgICAKKyAgICAvLyBDb3VudCBob3cgbWFueSBjaGFubmVscyB3ZSBo
YXZlIGFsbCB0b2dldGhlciBmcm9tIGFsbCBvZiB0aGUgaW5wdXRzLgorICAgIHVuc2lnbmVkIG51
bWJlck9mT3V0cHV0Q2hhbm5lbHMgPSAwOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBu
dW1iZXJPZklucHV0cygpOyArK2kpIHsKKyAgICAgICAgQXVkaW9Ob2RlSW5wdXQqIGlucHV0ID0g
dGhpcy0+aW5wdXQoaSk7CisgICAgICAgIGlmIChpbnB1dC0+aXNDb25uZWN0ZWQoKSkKKyAgICAg
ICAgICAgIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMgKz0gaW5wdXQtPmJ1cygpLT5udW1iZXJPZkNo
YW5uZWxzKCk7CisgICAgfQorCisgICAgLy8gU2V0IHRoZSBjb3JyZWN0IG51bWJlciBvZiBjaGFu
bmVscyBvbiB0aGUgb3V0cHV0CisgICAgb3V0cHV0LT5zZXROdW1iZXJPZkNoYW5uZWxzKG51bWJl
ck9mT3V0cHV0Q2hhbm5lbHMpOworICAgIAorICAgIC8vIE5vdyBtZXJnZSB0aGUgY2hhbm5lbHMg
YmFjayBpbnRvIG9uZSBvdXRwdXQuCisgICAgdW5zaWduZWQgb3V0cHV0Q2hhbm5lbEluZGV4ID0g
MDsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZJbnB1dHMoKTsgKytpKSB7
CisgICAgICAgIEF1ZGlvTm9kZUlucHV0KiBpbnB1dCA9IHRoaXMtPmlucHV0KGkpOworICAgICAg
ICBpZiAoaW5wdXQtPmlzQ29ubmVjdGVkKCkpIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIG51bWJl
ck9mSW5wdXRDaGFubmVscyA9IGlucHV0LT5idXMoKS0+bnVtYmVyT2ZDaGFubmVscygpOworICAg
ICAgICAgICAgCisgICAgICAgICAgICAvLyBNZXJnZSBjaGFubmVscyBmcm9tIHRoaXMgcGFydGlj
dWxhciBpbnB1dC4KKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBudW1iZXJP
ZklucHV0Q2hhbm5lbHM7ICsraikgeworICAgICAgICAgICAgICAgIEF1ZGlvQ2hhbm5lbCogaW5w
dXRDaGFubmVsID0gaW5wdXQtPmJ1cygpLT5jaGFubmVsKGopOworICAgICAgICAgICAgICAgIEF1
ZGlvQ2hhbm5lbCogb3V0cHV0Q2hhbm5lbCA9IG91dHB1dC0+YnVzKCktPmNoYW5uZWwob3V0cHV0
Q2hhbm5lbEluZGV4KTsKKyAgICAgICAgICAgICAgICBvdXRwdXRDaGFubmVsLT5jb3B5RnJvbShp
bnB1dENoYW5uZWwpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICsrb3V0cHV0
Q2hhbm5lbEluZGV4OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAg
IEFTU0VSVChvdXRwdXRDaGFubmVsSW5kZXggPT0gbnVtYmVyT2ZPdXRwdXRDaGFubmVscyk7Cit9
CisKK3ZvaWQgQXVkaW9DaGFubmVsTWVyZ2VyOjpyZXNldCgpCit7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pCkluZGV4OiBXZWJDb3Jl
L3dlYmF1ZGlvL0F1ZGlvQ2hhbm5lbE1lcmdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvd2Vi
YXVkaW8vQXVkaW9DaGFubmVsTWVyZ2VyLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3dlYmF1
ZGlvL0F1ZGlvQ2hhbm5lbE1lcmdlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21w
dXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQK
KyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBBdWRpb0NoYW5uZWxNZXJnZXJfaAorI2RlZmluZSBBdWRpb0NoYW5uZWxNZXJnZXJf
aAorCisjaW5jbHVkZSAiQXVkaW9Ob2RlLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBdWRpb0NvbnRleHQ7CisgICAgCitjbGFz
cyBBdWRpb0NoYW5uZWxNZXJnZXIgOiBwdWJsaWMgQXVkaW9Ob2RlIHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxBdWRpb0NoYW5uZWxNZXJnZXI+IGNyZWF0ZShBdWRpb0NvbnRleHQq
IGNvbnRleHQsIGRvdWJsZSBzYW1wbGVSYXRlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBBdWRpb0NoYW5uZWxNZXJnZXIoY29udGV4dCwgc2FtcGxlUmF0ZSkpOyAgICAgIAor
ICAgIH0KKworICAgIC8vIEF1ZGlvTm9kZQorICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzKHNpemVf
dCBmcmFtZXNUb1Byb2Nlc3MpOworICAgIHZpcnR1YWwgdm9pZCByZXNldCgpOworCitwcml2YXRl
OgorICAgIEF1ZGlvQ2hhbm5lbE1lcmdlcihBdWRpb0NvbnRleHQqLCBkb3VibGUgc2FtcGxlUmF0
ZSk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBBdWRpb0NoYW5u
ZWxNZXJnZXJfaApJbmRleDogV2ViQ29yZS93ZWJhdWRpby9BdWRpb0NoYW5uZWxNZXJnZXIuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvd2ViYXVkaW8vQXVkaW9DaGFubmVsTWVyZ2VyLmlkbAko
cmV2aXNpb24gMCkKKysrIFdlYkNvcmUvd2ViYXVkaW8vQXVkaW9DaGFubmVsTWVyZ2VyLmlkbAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4g
IE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0
aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSBhdWRpbyB7CisgICAgaW50ZXJm
YWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPCisgICAgXSBBdWRpb0NoYW5uZWxN
ZXJnZXIgOiBBdWRpb05vZGUgeworICAgIH07Cit9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>