<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://www.w3.org/Bugs/Public/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4"
          urlbase="https://www.w3.org/Bugs/Public/"
          
          maintainer="sysbot+bugzilla@w3.org"
>

    <bug>
          <bug_id>12969</bug_id>
          
          <creation_ts>2011-06-16 12:54:27 +0000</creation_ts>
          <short_desc>bilinear interpolation</short_desc>
          <delta_ts>2011-08-03 21:11:49 +0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>SVG</product>
          <component>Gradients</component>
          <version>SVG 2.0</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc>http://www.peepo.com</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>enhancement</bug_severity>
          <target_milestone>Test Suite</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="j.chetwynd">jay</reporter>
          <assigned_to name="Doug Schepers">schepers</assigned_to>
          <cc>cabanier</cc>
    
    <cc>cam</cc>
    
    <cc>jackalmage</cc>
          
          <qa_contact name="SVG Public List">www-svg</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>49683</commentid>
    <comment_count>0</comment_count>
    <who name="j.chetwynd">jay</who>
    <bug_when>2011-06-16 12:54:27 +0000</bug_when>
    <thetext>SVG 1.1 &amp; 1.2 provide linear colour gradients.

bilinear interpolation provides two dimensional gradients, frequently used in for instance mapping applications, these are not readily reproduced using SVG or lerp alone.

an array is input, and a larger one that contains the intermediate values is generated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49684</commentid>
    <comment_count>1</comment_count>
    <who name="j.chetwynd">jay</who>
    <bug_when>2011-06-16 12:58:35 +0000</bug_when>
    <thetext>    /**
    * linear interpolation
    * t value between 0 and 1, a = initial value, b = final value
    */

    function lerp(t, a, b) {
      return (+a+(b-a)*t);
    }

    /**
    * bilinear interpolation of intermediate values in two dimensions
    * tx = number of intermediate x values required + 1
    * ty= number of intermediate y values required + 1
    * x = width
    * y = height
    * arr = array of length x*y
	* out = array of length x*(tx-1)*y*(ty-1)
    */

    function blerp(tx, ty, arr, x, y){
      var out = [],
          outv = 0,
          k = 1,
          j = 0,
          i = 1;

      for(k; k&lt;=ty; k++){
        for(j; j&lt;x-1; j++){
          f = lerp(k/ty, arr[j], arr[x+j]);
          g = lerp(k/ty, arr[j+1], arr[x+j+1]);
          for(i; i&lt;tx; i++){
            outv = lerp(i/tx, f, g);
            out.push(outv);
          }
          i = 1;
        }
        j=0;
      }
      return out;
    }

    var ex1 = blerp(10, 10, [0,10,100,110], 2, 2),
        ex2 = blerp(10, 10, [0,10,20,100,110,120], 3, 2);

    console.log(ex1.join(&apos;,&apos;));
    console.log(&quot;\n&quot;);
    console.log(ex2.join(&apos;,&apos;));</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49685</commentid>
    <comment_count>2</comment_count>
      <attachid>1000</attachid>
    <who name="j.chetwynd">jay</who>
    <bug_when>2011-06-16 12:59:31 +0000</bug_when>
    <thetext>Created attachment 1000
javascript patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49734</commentid>
    <comment_count>3</comment_count>
      <attachid>1001</attachid>
    <who name="j.chetwynd">jay</who>
    <bug_when>2011-06-16 21:37:32 +0000</bug_when>
    <thetext>Created attachment 1001
y and out.length correction</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49735</commentid>
    <comment_count>4</comment_count>
    <who name="j.chetwynd">jay</who>
    <bug_when>2011-06-16 21:38:45 +0000</bug_when>
    <thetext>see &apos;y and out.length correction&apos; attachment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49831</commentid>
    <comment_count>5</comment_count>
      <attachid>1002</attachid>
    <who name="j.chetwynd">jay</who>
    <bug_when>2011-06-18 13:35:00 +0000</bug_when>
    <thetext>Created attachment 1002
include border values</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49832</commentid>
    <comment_count>6</comment_count>
      <attachid>1003</attachid>
    <who name="j.chetwynd">jay</who>
    <bug_when>2011-06-18 13:46:36 +0000</bug_when>
    <thetext>Created attachment 1003
adjust out.length</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49834</commentid>
    <comment_count>7</comment_count>
      <attachid>1004</attachid>
    <who name="j.chetwynd">jay</who>
    <bug_when>2011-06-18 15:07:04 +0000</bug_when>
    <thetext>Created attachment 1004
visualisation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>52088</commentid>
    <comment_count>8</comment_count>
    <who name="Cameron McCormack">cam</who>
    <bug_when>2011-08-03 05:15:54 +0000</bug_when>
    <thetext>This sounds like something that could be added as a new image-rendering property value, if it is useful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>52179</commentid>
    <comment_count>9</comment_count>
    <who name="Tab Atkins Jr.">jackalmage</who>
    <bug_when>2011-08-03 15:23:58 +0000</bug_when>
    <thetext>Nah, this is actually a new kind of gradient.  It should be handled by the Coons Patch suggestion, though, since that usually does bilinear blending within each patch.  Just make a patch with straight sides.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>52241</commentid>
    <comment_count>10</comment_count>
    <who name="j.chetwynd">jay</who>
    <bug_when>2011-08-03 20:39:42 +0000</bug_when>
    <thetext>comments: 8/9

please open the visualisation attachment,

the bilinear extrapolation is one aspect, 
another is the matrix,

both are needed, not necessarily via this method,
but something as easily assimilated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>52244</commentid>
    <comment_count>11</comment_count>
    <who name="j.chetwynd">jay</who>
    <bug_when>2011-08-03 20:43:26 +0000</bug_when>
    <thetext>comment 10 oops: interpolation, not extrapolation ~:&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>52251</commentid>
    <comment_count>12</comment_count>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2011-08-03 21:11:49 +0000</bug_when>
    <thetext>Are you looking for something like PDF&apos;s function shading?
Look for the PDF reference manual, chapter 4.6.3 under &apos;Type1 (Function-Based) Shadings&apos;
I&apos;ve seen cases where this gradient is used with a sample function (chapter 3.9.1) as input. This seems to match what you&apos;re trying to accomplish:
set up a 2x2 domain of colors and interpolate between them.

You could approximate the same behavior with a grid of coons patches (= the matrix) but it would be very verbose.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>1000</attachid>
            <date>2011-06-16 12:59:31 +0000</date>
            <delta_ts>2011-06-16 21:37:32 +0000</delta_ts>
            <desc>javascript patch</desc>
            <filename>blerp.js</filename>
            <type>application/x-javascript</type>
            <size>1131</size>
            <attacher name="j.chetwynd">jay</attacher>
            
              <data encoding="base64">ICAgIC8qKgogICAgKiBsaW5lYXIgaW50ZXJwb2xhdGlvbgogICAgKiB0IHZhbHVlIGJldHdlZW4g
MCBhbmQgMSwgYSA9IGluaXRpYWwgdmFsdWUsIGIgPSBmaW5hbCB2YWx1ZQogICAgKi8KCiAgICBm
dW5jdGlvbiBsZXJwKHQsIGEsIGIpIHsKICAgICAgcmV0dXJuICgrYSsoYi1hKSp0KTsKICAgIH0K
CiAgICAvKioKICAgICogYmlsaW5lYXIgaW50ZXJwb2xhdGlvbiBvZiBpbnRlcm1lZGlhdGUgdmFs
dWVzIGluIHR3byBkaW1lbnNpb25zCiAgICAqIHR4ID0gbnVtYmVyIG9mIGludGVybWVkaWF0ZSB4
IHZhbHVlcyByZXF1aXJlZCArIDEKICAgICogdHk9IG51bWJlciBvZiBpbnRlcm1lZGlhdGUgeSB2
YWx1ZXMgcmVxdWlyZWQgKyAxCiAgICAqIHggPSB3aWR0aAogICAgKiB5ID0gaGVpZ2h0CiAgICAq
IGFyciA9IGFycmF5IG9mIGxlbmd0aCB4KnkKCSogb3V0ID0gYXJyYXkgb2YgbGVuZ3RoIHgqKHR4
LTEpKnkqKHR5LTEpCiAgICAqLwoKICAgIGZ1bmN0aW9uIGJsZXJwKHR4LCB0eSwgYXJyLCB4LCB5
KXsKICAgICAgdmFyIG91dCA9IFtdLAogICAgICAgICAgb3V0diA9IDAsCiAgICAgICAgICBrID0g
MSwKICAgICAgICAgIGogPSAwLAogICAgICAgICAgaSA9IDE7CgogICAgICBmb3Ioazsgazw9dHk7
IGsrKyl7CiAgICAgICAgZm9yKGo7IGo8eC0xOyBqKyspewogICAgICAgICAgZiA9IGxlcnAoay90
eSwgYXJyW2pdLCBhcnJbeCtqXSk7CiAgICAgICAgICBnID0gbGVycChrL3R5LCBhcnJbaisxXSwg
YXJyW3graisxXSk7CiAgICAgICAgICBmb3IoaTsgaTx0eDsgaSsrKXsKICAgICAgICAgICAgb3V0
diA9IGxlcnAoaS90eCwgZiwgZyk7CiAgICAgICAgICAgIG91dC5wdXNoKG91dHYpOwogICAgICAg
ICAgfQogICAgICAgICAgaSA9IDE7CiAgICAgICAgfQogICAgICAgIGo9MDsKICAgICAgfQogICAg
ICByZXR1cm4gb3V0OwogICAgfQoKICAgIHZhciBleDEgPSBibGVycCgxMCwgMTAsIFswLDEwLDEw
MCwxMTBdLCAyLCAyKSwKICAgICAgICBleDIgPSBibGVycCgxMCwgMTAsIFswLDEwLDIwLDEwMCwx
MTAsMTIwXSwgMywgMik7CgogICAgY29uc29sZS5sb2coZXgxLmpvaW4oJywnKSk7CiAgICBjb25z
b2xlLmxvZygiXG4iKTsKICAgIGNvbnNvbGUubG9nKGV4Mi5qb2luKCcsJykpOwoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>1001</attachid>
            <date>2011-06-16 21:37:32 +0000</date>
            <delta_ts>2011-06-18 13:35:00 +0000</delta_ts>
            <desc>y and out.length correction</desc>
            <filename>blerp.js</filename>
            <type>application/x-javascript</type>
            <size>1395</size>
            <attacher name="j.chetwynd">jay</attacher>
            
              <data encoding="base64">ICAgIC8qKgogICAgKiBsaW5lYXIgaW50ZXJwb2xhdGlvbgogICAgKiB0IHZhbHVlIGJldHdlZW4g
MCBhbmQgMSwgYSA9IGluaXRpYWwgdmFsdWUsIGIgPSBmaW5hbCB2YWx1ZQogICAgKi8KCiAgICBm
dW5jdGlvbiBsZXJwKHQsIGEsIGIpIHsKICAgICAgcmV0dXJuICgrYSsoYi1hKSp0KTsKICAgIH0K
CiAgICAvKioKICAgICogYmlsaW5lYXIgaW50ZXJwb2xhdGlvbiBvZiBpbnRlcm1lZGlhdGUgdmFs
dWVzIGluIHR3byBkaW1lbnNpb25zCiAgICAqIHR4ID0gbnVtYmVyIG9mIGludGVybWVkaWF0ZSB4
IHZhbHVlcyByZXF1aXJlZCArIDEKICAgICogdHk9IG51bWJlciBvZiBpbnRlcm1lZGlhdGUgeSB2
YWx1ZXMgcmVxdWlyZWQgKyAxCiAgICAqIHggPSB3aWR0aAogICAgKiB5ID0gaGVpZ2h0CiAgICAq
IGFyciA9IGFycmF5IG9mIGxlbmd0aCB4KnkKCSogb3V0ID0gYXJyYXkgb2YgbGVuZ3RoICh4LTEp
Kih0eC0xKSooeS0xKSoodHktMSkKICAgICovCgogICAgZnVuY3Rpb24gYmxlcnAodHgsIHR5LCBh
cnIsIHgsIHkpewogICAgICB2YXIgb3V0ID0gW10sCiAgICAgICAgICBvdXR2ID0gMCwKICAgICAg
ICAgIGwgPSAwLAogICAgICAgICAgayA9IDEsCiAgICAgICAgICBqID0gMCwKICAgICAgICAgIGkg
PSAxOwoKICAgICAgZm9yKGw7IGw8PXktMjsgbCsrKXsKICAgICAgZm9yKGs7IGs8dHk7IGsrKyl7
CiAgICAgICAgZm9yKGo7IGo8eC0xOyBqKyspewogICAgICAgICAgZiA9IGxlcnAoay90eSwgYXJy
W2ogKyBsKnhdLCBhcnJbeCArIGogKyBsKnhdKTsKICAgICAgICAgIGcgPSBsZXJwKGsvdHksIGFy
cltqICsgMSArIGwqeF0sIGFyclt4ICsgaiArIDEgKyBsKnhdKTsKICAgICAgICAgIGZvcihpOyBp
PHR4OyBpKyspewogICAgICAgICAgICBvdXR2ID0gbGVycChpL3R4LCBmLCBnKTsKICAgICAgICAg
ICAgb3V0LnB1c2gob3V0dik7CiAgICAgICAgICB9CiAgICAgICAgICBpID0gMTsKICAgICAgICB9
CiAgICAgICAgaiA9IDA7CiAgICAgIH0KICAgICAgICBrID0gMTsKICAgICAgfQogICAgICByZXR1
cm4gb3V0OwogICAgfQoKICAgIHZhciBleDEgPSBibGVycCgxMCwgMTAsIFswLDEwLDEwMCwxMTBd
LCAyLCAyKSwKICAgICAgICBleDIgPSBibGVycCgxMCwgMTAsIFswLDEwLDIwLDEwMCwxMTAsMTIw
XSwgMywgMik7CiAgICAgICAgZXgzID0gYmxlcnAoMTAsIDEwLCBbMCwxMCwyMCwxMDAsMTEwLDEy
MCwyMDAsMjEwLDIyMCw0MDAsNjEwLDgyMF0sIDMsIDQpOyAgLy80MDAsNjEwLDgyMAoKICAgIGNv
bnNvbGUubG9nKGV4MS5qb2luKCcsJykpOwogICAgY29uc29sZS5sb2coIlxuXG4iKTsKICAgIGNv
bnNvbGUubG9nKGV4Mi5qb2luKCcsJykpOwogICAgY29uc29sZS5sb2coIlxuXG4iKTsKICAgIGNv
bnNvbGUubG9nKGV4My5qb2luKCcsJykpOwoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>1002</attachid>
            <date>2011-06-18 13:35:00 +0000</date>
            <delta_ts>2011-06-18 15:07:04 +0000</delta_ts>
            <desc>include border values</desc>
            <filename>blerp.js</filename>
            <type>application/x-javascript</type>
            <size>1423</size>
            <attacher name="j.chetwynd">jay</attacher>
            
              <data encoding="base64">ICAgIC8qKgogICAgKiBsaW5lYXIgaW50ZXJwb2xhdGlvbgogICAgKiB0IHZhbHVlIGJldHdlZW4g
MCBhbmQgMSwgYSA9IGluaXRpYWwgdmFsdWUsIGIgPSBmaW5hbCB2YWx1ZQogICAgKi8KCiAgICBm
dW5jdGlvbiBsZXJwKHQsIGEsIGIpIHsKICAgICAgcmV0dXJuICgrYSsoYi1hKSp0KTsKICAgIH0K
CiAgICAvKioKICAgICogYmlsaW5lYXIgaW50ZXJwb2xhdGlvbiBvZiBpbnRlcm1lZGlhdGUgdmFs
dWVzIGluIHR3byBkaW1lbnNpb25zCiAgICAqIHR4ID0gbnVtYmVyIG9mIGludGVybWVkaWF0ZSB4
IHZhbHVlcyByZXF1aXJlZCArIDEKICAgICogdHk9IG51bWJlciBvZiBpbnRlcm1lZGlhdGUgeSB2
YWx1ZXMgcmVxdWlyZWQgKyAxCiAgICAqIHggPSB3aWR0aAogICAgKiB5ID0gaGVpZ2h0CiAgICAq
IGFyciA9IGFycmF5IG9mIGxlbmd0aCB4KnkKCSogb3V0ID0gYXJyYXkgb2YgbGVuZ3RoICh4LTEp
Kih0eC0xKSooeS0xKSoodHktMSkKICAgICovCgogICAgZnVuY3Rpb24gYmxlcnAodHgsIHR5LCBh
cnIsIHgsIHkpewogICAgICB2YXIgb3V0ID0gW10sCiAgICAgICAgICBvdXR2ID0gMCwKICAgICAg
ICAgIGwgPSAwLAogICAgICAgICAgayA9IDAsCiAgICAgICAgICBqID0gMCwKICAgICAgICAgIGkg
PSAwOwoKICAgICAgZm9yKGw7IGw8PXktMjsgbCsrKXsKICAgICAgICBmb3Ioazsgazw9dHk7IGsr
Kyl7CiAgICAgICAgICBmb3Ioajsgajx4LTE7IGorKyl7CiAgICAgICAgICAgIGYgPSBsZXJwKGsv
dHksIGFycltqICsgbCp4XSwgYXJyW3ggKyBqICsgbCp4XSk7CiAgICAgICAgICAgIGcgPSBsZXJw
KGsvdHksIGFycltqICsgMSArIGwqeF0sIGFyclt4ICsgaiArIDEgKyBsKnhdKTsKICAgICAgICAg
ICAgZm9yKGk7IGk8PXR4OyBpKyspewogICAgICAgICAgICAgIG91dHYgPSBsZXJwKGkvdHgsIGYs
IGcpOwogICAgICAgICAgICAgIG91dC5wdXNoKG91dHYpOwogICAgICAgICAgICB9CiAgICAgICAg
ICAgIGkgPSAxOwogICAgICAgICAgfQogICAgICAgICAgaiA9IDA7CiAgICAgICAgICBpID0gMDsK
ICAgICAgICB9CiAgICAgICAgayA9IDE7CiAgICAgIH0KICAgICAgcmV0dXJuIG91dDsKICAgIH0K
CiAgICB2YXIgZXgxID0gYmxlcnAoMTAsIDEwLCBbMCwxMCwxMDAsMTEwXSwgMiwgMiksCiAgICAg
ICAgZXgyID0gYmxlcnAoMTAsIDEwLCBbMCwxMCwyMCwxMDAsMTEwLDEyMF0sIDMsIDIpOwogICAg
ICAgIGV4MyA9IGJsZXJwKDEwLCAxMCwgWzAsMTAsMjAsMTAwLDExMCwxMjAsMjAwLDIxMCwyMjAs
NDAwLDYxMCw4MjBdLCAzLCA0KTsKCiAgICBjb25zb2xlLmxvZyhleDEuam9pbignLCcpKTsKICAg
IGNvbnNvbGUubG9nKCJcblxuIik7CiAgICBjb25zb2xlLmxvZyhleDIuam9pbignLCcpKTsKICAg
IGNvbnNvbGUubG9nKCJcblxuIik7CiAgICBjb25zb2xlLmxvZyhleDMuam9pbignLCcpKTsKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>1003</attachid>
            <date>2011-06-18 13:46:36 +0000</date>
            <delta_ts>2011-06-18 13:46:36 +0000</delta_ts>
            <desc>adjust out.length</desc>
            <filename>blerp.js</filename>
            <type>application/x-javascript</type>
            <size>1420</size>
            <attacher name="j.chetwynd">jay</attacher>
            
              <data encoding="base64">ICAgIC8qKgogICAgKiBsaW5lYXIgaW50ZXJwb2xhdGlvbgogICAgKiB0IHZhbHVlIGJldHdlZW4g
MCBhbmQgMSwgYSA9IGluaXRpYWwgdmFsdWUsIGIgPSBmaW5hbCB2YWx1ZQogICAgKi8KCiAgICBm
dW5jdGlvbiBsZXJwKHQsIGEsIGIpIHsKICAgICAgcmV0dXJuICgrYSsoYi1hKSp0KTsKICAgIH0K
CiAgICAvKioKICAgICogYmlsaW5lYXIgaW50ZXJwb2xhdGlvbiBvZiBpbnRlcm1lZGlhdGUgdmFs
dWVzIGluIHR3byBkaW1lbnNpb25zCiAgICAqIHR4ID0gbnVtYmVyIG9mIGludGVybWVkaWF0ZSB4
IHZhbHVlcyByZXF1aXJlZCArIDEKICAgICogdHk9IG51bWJlciBvZiBpbnRlcm1lZGlhdGUgeSB2
YWx1ZXMgcmVxdWlyZWQgKyAxCiAgICAqIHggPSB3aWR0aAogICAgKiB5ID0gaGVpZ2h0CiAgICAq
IGFyciA9IGFycmF5IG9mIGxlbmd0aCB4KnkKCSogb3V0ID0gYXJyYXkgb2YgbGVuZ3RoIDErKCh4
LTEpKnR4KSoxKygoeS0xKSp0eSkKICAgICovCgogICAgZnVuY3Rpb24gYmxlcnAodHgsIHR5LCBh
cnIsIHgsIHkpewogICAgICB2YXIgb3V0ID0gW10sCiAgICAgICAgICBvdXR2ID0gMCwKICAgICAg
ICAgIGwgPSAwLAogICAgICAgICAgayA9IDAsCiAgICAgICAgICBqID0gMCwKICAgICAgICAgIGkg
PSAwOwoKICAgICAgZm9yKGw7IGw8PXktMjsgbCsrKXsKICAgICAgICBmb3Ioazsgazw9dHk7IGsr
Kyl7CiAgICAgICAgICBmb3Ioajsgajx4LTE7IGorKyl7CiAgICAgICAgICAgIGYgPSBsZXJwKGsv
dHksIGFycltqICsgbCp4XSwgYXJyW3ggKyBqICsgbCp4XSk7CiAgICAgICAgICAgIGcgPSBsZXJw
KGsvdHksIGFycltqICsgMSArIGwqeF0sIGFyclt4ICsgaiArIDEgKyBsKnhdKTsKICAgICAgICAg
ICAgZm9yKGk7IGk8PXR4OyBpKyspewogICAgICAgICAgICAgIG91dHYgPSBsZXJwKGkvdHgsIGYs
IGcpOwogICAgICAgICAgICAgIG91dC5wdXNoKG91dHYpOwogICAgICAgICAgICB9CiAgICAgICAg
ICAgIGkgPSAxOwogICAgICAgICAgfQogICAgICAgICAgaiA9IDA7CiAgICAgICAgICBpID0gMDsK
ICAgICAgICB9CiAgICAgICAgayA9IDE7CiAgICAgIH0KICAgICAgcmV0dXJuIG91dDsKICAgIH0K
CiAgICB2YXIgZXgxID0gYmxlcnAoMTAsIDEwLCBbMCwxMCwxMDAsMTEwXSwgMiwgMiksCiAgICAg
ICAgZXgyID0gYmxlcnAoMTAsIDEwLCBbMCwxMCwyMCwxMDAsMTEwLDEyMF0sIDMsIDIpOwogICAg
ICAgIGV4MyA9IGJsZXJwKDEwLCAxMCwgWzAsMTAsMjAsMTAwLDExMCwxMjAsMjAwLDIxMCwyMjAs
NDAwLDYxMCw4MjBdLCAzLCA0KTsKCiAgICBjb25zb2xlLmxvZyhleDEuam9pbignLCcpKTsKICAg
IGNvbnNvbGUubG9nKCJcblxuIik7CiAgICBjb25zb2xlLmxvZyhleDIuam9pbignLCcpKTsKICAg
IGNvbnNvbGUubG9nKCJcblxuIik7CiAgICBjb25zb2xlLmxvZyhleDMubGVuZ3RoKTsKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>1004</attachid>
            <date>2011-06-18 15:07:04 +0000</date>
            <delta_ts>2011-06-18 15:07:04 +0000</delta_ts>
            <desc>visualisation</desc>
            <filename>blerp.svg</filename>
            <type>image/svg+xml</type>
            <size>5080</size>
            <attacher name="j.chetwynd">jay</attacher>
            
              <data encoding="base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiIHN0YW5kYWxvbmU9Im5vIj8+IAo8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiCiAgIHdpZHRoPSIxNjAwIgogICBoZWlnaHQ9Ijgw
MCIKICAgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgCj4gCjxnIHRyYW5zZm9ybT0ic2NhbGUoNCkiPgo8
ZyBpZD0ic21hbGwiIC8+CjxnIGlkPSJsYXJnZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjAwLDAp
Ii8+CjwvZz4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2VjbWFzY3JpcHQiPiA8IVtDREFUQVsgCgogICAg
QXJyYXkucHJvdG90eXBlLnN1bSA9IGZ1bmN0aW9uKCkgewogICAgIHJldHVybiAoISB0aGlzLmxl
bmd0aCkgPyAwIDogdGhpcy5zbGljZSgxKS5zdW0oKSArICgodHlwZW9mIHRoaXNbMF0gPT0gJ251
bWJlcicpID8gdGhpc1swXSA6IDApOwogICAgfTsgCgogICAgZnVuY3Rpb24gYm9yZGVycyhhcnIp
IHsKICAgIC8vICoyNTYgZm9yIGhpZ2ggY29udHJhc3QKCiAgICAgIHZhciBhcnJsID0gYXJyLmxl
bmd0aDsKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJsOyBpKyspewogICAgICAgIHZhciBk
ID0gYXJyW2ldOwogICAgICAgIGlmKGQ+PTEyMy41ICYmIGQ8PTEyNi41KXsKICAgICAgICAgIGFy
cltpXSA9IE1hdGgucm91bmQoKDEyNi41LWQpKjIxKTsKICAgICAgICB9ZWxzZSBpZihkPjEyNi41
ICYmIGQ8PTEyNyl7CiAgICAgICAgICBhcnJbaV0gPSBNYXRoLnJvdW5kKDEyOC0oMTI3LWQpKjI1
Nik7CiAgICAgICAgfWVsc2UgaWYoZD4xMjcgJiYgZDw9MTI3LjUpewogICAgICAgICAgYXJyW2ld
ID0gTWF0aC5yb3VuZCgxMjcrKGQtMTI3KSoyNTYpOwogICAgICAgIH1lbHNlIGlmKGQ+MTI3LjUg
JiYgZDw9MTMwLjUpewogICAgICAgICAgYXJyW2ldID0gTWF0aC5yb3VuZCgyNTUtKGQtMTI3LjUp
KjIxKTsKICAgICAgICB9ZWxzZXthcnJbaV0gPSAgTWF0aC5yb3VuZChkKTt9CiAgICAgIH0KICAg
ICAgcmV0dXJuIGFycjsKICAgIH0KCiAgICBmdW5jdGlvbiBjcmVhdGVSZWN0cyhhcnIsdyxoLHgs
eSx3aGVyZSl7CiAgICAgIHZhciBzaGFwZSwgYywgaSA9IDAsIGFycmwgPSBhcnIubGVuZ3RoLAog
ICAgICAgIGdyb3VwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJnIik7CiAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgeTsgaysrKXsKICAg
ICAgZm9yICh2YXIgaiA9IDA7IGogPCB4OyBqKyspewogICAgICAgIGMgPSAicmdiKCIgKyBhcnJb
aV0gKyAiLDEyNywxMjcpIiwKICAgICAgICBzaGFwZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAicmVjdCIpOwoJCXNoYXBlLnNldEF0dHJp
YnV0ZU5TKG51bGwsICJ4Iiwgaip3KTsKCQlzaGFwZS5zZXRBdHRyaWJ1dGVOUyhudWxsLCAieSIs
IGsqaCk7CgkJc2hhcGUuc2V0QXR0cmlidXRlTlMobnVsbCwgIndpZHRoIiwgIHcpOwoJCXNoYXBl
LnNldEF0dHJpYnV0ZU5TKG51bGwsICJoZWlnaHQiLCBoKTsKCQlzaGFwZS5zZXRBdHRyaWJ1dGVO
UyhudWxsLCAiZmlsbCIsIGMpOwoJCWdyb3VwLmFwcGVuZENoaWxkKHNoYXBlKTsKCQlpKys7CiAg
ICAgIH0KICAgICAgfQogICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh3aGVyZSkuYXBwZW5k
Q2hpbGQoZ3JvdXApOwogICAgfQoKICAgIGZ1bmN0aW9uIG1vdmVEcG9pbnQoYXJyLCBuKXsKICAg
ICAgdmFyIGFycmwgPSBhcnIubGVuZ3RoOwogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFycmw7
IGkrKyl7CiAgICAgICAgYXJyW2ldID0gYXJyW2ldL247CiAgICAgIH0KICAgICAgcmV0dXJuIGFy
cjsKICAgIH0KCiAgICAvLyBldnQuZGF0YSBub3JtYWxpc2UgYW5kIGRpc3BsYXkgZ3JhZGllbnRz
IAogICAgZnVuY3Rpb24gbm9ybWFsaXNlR3JhZGllbnRzKGNudEdyYWRpZW50KXsKICAgICAgdmFy
IGNHbCA9IGNudEdyYWRpZW50Lmxlbmd0aDsKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjR2w7
IGkrKyl7CiAgICAgICAgY250R3JhZGllbnRbaV0gID0gcGFyc2VJbnQoMjU1LTI1NSpjbnRHcmFk
aWVudFtpXSk7ICAvL3JhbmdlIDI1NCB0byAwICBlbHNlIC0xMjggdG8gKzEyOCB0b28gbGFyZ2Ug
YXMgMjU3CiAgICAgIH0KICAgICAgcmV0dXJuIGNudEdyYWRpZW50OyAgIAogICAgfQoKICAgIC8q
KgogICAgKiBsaW5lYXIgaW50ZXJwb2xhdGlvbgogICAgKiB0IHZhbHVlIGJldHdlZW4gMCBhbmQg
MSwgYSA9IGluaXRpYWwgdmFsdWUsIGIgPSBmaW5hbCB2YWx1ZQogICAgKi8KCiAgICBmdW5jdGlv
biBsZXJwKHQsIGEsIGIpIHsKICAgICAgcmV0dXJuICgrYSsoYi1hKSp0KTsKICAgIH0KCiAgICAv
KioKICAgICogYmlsaW5lYXIgaW50ZXJwb2xhdGlvbiBvZiBpbnRlcm1lZGlhdGUgdmFsdWVzIGlu
IHR3byBkaW1lbnNpb25zCiAgICAqIHR4ID0gbnVtYmVyIG9mIGludGVybWVkaWF0ZSB4IHZhbHVl
cyByZXF1aXJlZCArIDEKICAgICogdHk9IG51bWJlciBvZiBpbnRlcm1lZGlhdGUgeSB2YWx1ZXMg
cmVxdWlyZWQgKyAxCiAgICAqIHggPSB3aWR0aAogICAgKiB5ID0gaGVpZ2h0CiAgICAqIGFyciA9
IGFycmF5IG9mIGxlbmd0aCB4KnkKCSogb3V0ID0gYXJyYXkgb2YgbGVuZ3RoIDErKCh4LTEpKnR4
KSoxKygoeS0xKSp0eSkKICAgICovCgogICAgZnVuY3Rpb24gYmxlcnAodHgsIHR5LCBhcnIsIHgs
IHkpewogICAgICB2YXIgb3V0ID0gW10sCiAgICAgICAgICBvdXR2ID0gMCwKICAgICAgICAgIGwg
PSAwLAogICAgICAgICAgayA9IDAsCiAgICAgICAgICBqID0gMCwKICAgICAgICAgIGkgPSAwOwoK
ICAgICAgZm9yKGw7IGw8PXktMjsgbCsrKXsKICAgICAgICBmb3Ioazsgazw9dHk7IGsrKyl7CiAg
ICAgICAgICBmb3Ioajsgajx4LTE7IGorKyl7CiAgICAgICAgICAgIGYgPSBsZXJwKGsvdHksIGFy
cltqICsgbCp4XSwgYXJyW3ggKyBqICsgbCp4XSk7CiAgICAgICAgICAgIGcgPSBsZXJwKGsvdHks
IGFycltqICsgMSArIGwqeF0sIGFyclt4ICsgaiArIDEgKyBsKnhdKTsKICAgICAgICAgICAgZm9y
KGk7IGk8PXR4OyBpKyspewogICAgICAgICAgICAgIG91dHYgPSBsZXJwKGkvdHgsIGYsIGcpOwog
ICAgICAgICAgICAgIG91dC5wdXNoKG91dHYpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGkg
PSAxOwogICAgICAgICAgfQogICAgICAgICAgaiA9IDA7CiAgICAgICAgICBpID0gMDsKICAgICAg
ICB9CiAgICAgICAgayA9IDE7CiAgICAgIH0KICAgICAgcmV0dXJuIG91dDsKICAgIH0KCgp2YXIg
c2FyciA9WzYwMiw1ODksNTU1LDQ1MCwzMjEsMjEyLDE4MiwxNzEsMTc4LDIxOSwyODksMzczLDQ0
Niw1MDUsNTUyLDU4Myw1OTAsNTg2LDU4NCw2MTQsNjExLDU5MCw1MTIsMjU1LDE5NCwxNjksMTcy
LDE2NCwyMDAsMjk4LDM5Miw0NjUsNTIwLDU2OSw2MDIsNjAxLDU4OSw1ODIsNjE5LDYyMyw2Mjcs
NjczLDEyMywxMjMsMTIzLDE5MSwxMTYsMTE2LDMxOCw0MjQsNDkxLDU0Myw2MDAsNjU5LDYyNSw1
OTEsNTc1LDU5OCw2MTQsNjc5LDYyNyw2MzQsNjM0LDEyMywzNTUsNjMyLDM4MSw0NTAsNDk4LDUx
OSw1NTgsNjIxLDc5Miw2NDAsNTgxLDU1OSw1NTIsNTM0LDUxMiw1MTksNjM0LDMyNSw2MzIsNjMy
LDYzMiw1NzMsNzA1LDU2NCw1NDIsNTUyLDU3MCw2MDAsNTYyLDUzMiw1MjAsNTEzLDQ2MiwzMzgs
NDM2LDQ2MSwzMjUsMzI1LDYzMywyNjIsMzQzLDUwOSw1MzUsNTI3LDUzMyw1MzIsNTE0LDQ2OSw0
NzEsNDcxLDU0Myw1MTgsNDcwLDMyNSwzMjUsMzI1LDc4MSwyMDgsMzE2LDQwMCw0NDYsNDg1LDUw
NCw1MDgsNTAzLDQ1OSwzMTAsNDEyLDQ0NSw2MjUsNjE1LDU5NCw1ODAsNzk2LDU0OSw3ODEsMjA5
LDMzNSwzODYsNDMyLDQ2NCw0ODUsNDkxLDQ5MCw0ODMsNDY5LDQ2Nyw0NjMsNzA5LDczMCw4MzYs
NzE2LDc5Niw2ODUsNzgxLDIwOSwzNDAsMzg0LDQyNCw0NTcsNDc3LDQ4Myw0ODUsNTE4LDYzNyw1
MjIsNDgzLDc0Nyw3NTEsNzU4LDY3OCw1MzUsNjQ5LDc4MSwyMDksMzQ1LDM5OSw0MzUsNDYwLDQ3
OCw0ODUsNDgzLDQ3MSw0NTgsNDU0LDQ1Niw3NzQsNzY5LDc1NCw2NzMsNTk1LDY0NSw1ODAsNDMx
LDQxMSw0MzQsNDU1LDQ3MSw0ODQsNDg5LDQ3OSw0MzAsMjgyLDM5MSw0MjQsNzU1LDgxOSw4MTks
Njc3LDUwNiw2MTYsNTg5LDUxNyw0ODMsNDc3LDQ4MCw0ODgsNDk4LDUwMyw0OTksNDc5LDQzNiw0
NDEsNDQxLDU3OCw1MDksNTMzLDc5Miw1MDcsNjc5LDYzOCw1NjgsNTI3LDUxMSw1MDMsNTA2LDUx
Nyw1MjgsNTM2LDUzNCw1MTIsNDk2LDQ4Niw0MDksMzU3LDI0NiwyNDYsODQ2LDg0Niw2OTAsNjEz
LDU1OSw1MzUsNTIyLDUyNCw1MzUsNTU0LDU4NCw2MjEsNTg1LDU0OCw1MzEsMzIzLDMwOSwzMjUs
NTQxLDcyMCw3MjYsNjg0LDYyOCw1ODAsNTUyLDUzOCw1MzgsNTQ5LDU3Nyw2MzEsODA5LDY1NCw1
OTAsNTY1LDI3MiwyNTksMjEwLDg0MCw4NDAsNzI1LDY3Miw2MjcsNTgyLDU1Niw1NDMsNTM5LDU1
MCw1NzMsNjA2LDY1Myw2MjMsNTkwLDU3MywyNTEsMjQzLDIxMCwyMTAsODQwLDcxNCw2NTcsNjE1
LDU3MCw1NTQsNTQxLDUzOSw1NDIsNTU5LDU3OCw1OTIsNTg3LDU3Myw1NjUsMjUxLDI1NiwyODAs
NDA1LDU5MCw2NDIsNjI2LDU5OSw1NzEsNTUwLDUzNiw1MzEsNTM2LDU0NCw1NTUsNTY0LDU2Myw1
NTksNTU5LDI1OSwyNjgsMzA5LDQwNCw1MjMsNTg4LDU5OCw1ODQsNTY2LDU0OCw1MzcsNTM0LDUz
Myw1MzksNTQ0LDU1NCw1NTUsNTU1LDU1N10KCiAgICBzYXJyID0gbW92ZURwb2ludChzYXJyLCAx
MDAwKTsKCgogICAgdmFyIHNjID0gTWF0aC5yb3VuZChzYXJyLnN1bSgpKS0xODAtOS41OwkJLy9r
b21pIHJhbmdlIDAgdG8gMQogICAgICBzYXJyID0gbm9ybWFsaXNlR3JhZGllbnRzKHNhcnIpOwog
ICAgICBjcmVhdGVSZWN0cyhzYXJyLDEwLDEwLDE5LDE5LCJzbWFsbCIpOwogICAgICBhcnIgPSBi
bGVycCgxMCwgMTEsIHNhcnIsIDE5LCAxOSk7CiAgICAgIGFyciA9IGJvcmRlcnMoYXJyKTsKICAg
ICAgY3JlYXRlUmVjdHMoYXJyLDEsMSwxODEsMTk5LCJsYXJnZSIpOwoKCgoKXV0+PC9zY3JpcHQ+
Cjwvc3ZnPg==
</data>

          </attachment>
      

    </bug>

</bugzilla>