m4_changecom()m4_dnl
m4_changequote(,)m4_dnl  m4 BUG: You cannot invoke m4_changequote([,]) twice in a row...
m4_changequote([,])m4_dnl
m4_divert
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<!-- This web page was generated by the GNU m4 preprocessor

http://en.wikipedia.org/wiki/GNU_m4
m4_dnl http://www.gnu.org/software/m4/m4.html
m4_dnl http://en.wikipedia.org/wiki/M4_(computer_language)

that adds a Turing complete layer on top of HTML containing such
useful features as file inclusion, macros, conditional constructs and
shell commands.-->

m4_divert(-1) m4_dnl

m4_dnl <p>
m4_dnl </p>

m4_dnl relative-include function which works like C's #include
m4_dnl function in how it keeps track of the current directory.
m4_dnl It is called with 2 args.  The first arg should be
m4_dnl a relative directory (NOT an absolute directory like m4_home)
m4_dnl
m4_dnl Example: m4_rinclude(..,index.m4)
m4_dnl
m4_dnl has the result of including file ../index.m4
m4_define([m4_rinclude],m4_dnl
[m4_dnl
m4_ifdef([m4_rinclude_path],,[m4_define([m4_rinclude_path],.)])m4_dnl
m4_pushdef([m4_rinclude_path],m4_rinclude_path/$1)m4_dnl
m4_include(m4_rinclude_path/$2)m4_dnl
m4_popdef([m4_rinclude_path])m4_dnl
])m4_dnl

m4_dnl ###############################################
m4_dnl Print function:
m4_dnl ###############################################
m4_define([m4_print],[Current value [$1] = $1])

m4_dnl ###############################################
m4_dnl Add to list function that behaves correctly
m4_dnl in the case of an empty list
m4_dnl
m4_dnl BUGS: Beware of spaces in input as this causes
m4_dnl it not to work!?!?!
m4_dnl
m4_dnl separates list elements with a space, which is
m4_dnl not very useful... Ideally would separate with a comma.
m4_dnl ###############################################
m4_define([m4_add_to_list],[m4_ifdef([$1],[m4_define([$1],$1 $2)],[m4_define([$1],$2)])])

m4_define([m4_ignore],[])

m4_define([m4_title_2],m4_title)

m4_dnl TODO: splat fern-icon-16x16.png in
m4_dnl
m4_dnl (1) ~/hairy-lemon/nobin/html2html.bat
m4_dnl (2) ~/hairy-lemon/src/50webs-com/tibbles/favicon.ico
m4_dnl
m4_dnl TODO: splat stylesheetX.css in
m4_dnl
m4_dnl (1) ~/hairy-lemon/src/nobin/html2html.bat
m4_dnl (2) ~/hairy-lemon/src/50webs-com/java_tutorials/q2html.bat
m4_dnl (3) ~/hairy-lemon/src/50webs-com/java_tutorials/a2html.bat
m4_dnl (4) ~/hairy-lemon/src/50webs-com/tibbles
m4_dnl (5) ~/dlisp/d-htmlize.el

m4_define([m4_head_stuff],[
m4_dnl <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
m4_dnl <meta http-equiv="Content-Type" content="text/html; charset=iso-8879-1">
m4_dnl Was fern-icon-16x16.png
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Davin Pearson's personal Website">
<meta name="keywords" content="Davin Max Pearson &#44; C++ &#44; Emacs &#44; Lisp &#44; m4 &#44; PHP &#44; HTML &#44; Lisp++">
<meta name="robots" content="All">
<meta name="author" content="Davin Pearson -- http://davin.50webs.com">
<link rel="shortcut icon" href="m4_home_neat(earth.gif)">
<link rel="stylesheet" href="m4_home_neat(stylesheet10.css)" type="text/css">])

m4_define([m4_body_stuff],[bgcolor="m4_bgcolor" text="m4_textcolor" link="m4_linkcolor" vlink="m4_vlinkcolor"])

m4_define([m4_begin_html],[
<html> m4_dnl <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <title>m4_title</title>
  <!-- begin head stuff -->
  m4_head_stuff
  <!-- end head stuff -->
</head>
<body m4_body_stuff> m4_dnl
m4_show_ezi_banner m4_dnl
<br>
m4_ifdef([m4_title_2],[
<!-- begin title_2 -->
<center>
  <h1>m4_title_2</h1>
</center>
<!-- end title_2 -->])
])

m4_dnl <img src="m4_home/left_arrow_a.gif" width=23 height=19>
m4_dnl m4_define([m5_font],["Arial,Helvetica,Geneva"])
m4_define([m5_font],Arial)

m4_define([m4_back_to_somewhere],[
<!-- begin back to somewhere -->
<center>
  <table cellpadding=2><tr><td align=center bgcolor="m4_button_color" onMouseOver="this.bgColor='#ffffff'" onMouseOut="this.bgColor='m4_button_color'">
        <a href="m4_ifelse(m4_regexp(m4_back_to_somewhere_href,javascript),-1,m4_home/,)m4_back_to_somewhere_href">
        <font color="black" face="m5_font" size="-1">m4_back_to_somewhere_text</font></a>
  </td></tr></table>
</center>
<!-- end back to somewhere -->
])

m4_define([m4_please_report], [Please report any broken links to<br>
<script type="text/javascript">
var name = "links";
var at = "@";
var domain = "davinpearson.com";
document.write("<a href=\"mailto:" + name + at + domain + "?subject=Broken Link\">");
document.write(name + at + domain);
document.write("<\/a>");
</script>])

m4_define([m4_end_html],[

m4_back_to_somewhere

<center>
  m4_ifdef([m5_link],[
  <center>
    <table border="0" bgcolor="m4_button_color">
      <tr>
        <td align="center">
          <font face="m5_font" size="-1">This page has the following hit count:</font>
          <br>
          m4_include(m5_link)
        </td>
      </tr>
    </table>
  </center>])
  <!-- begin navigation buttons -->
  m4_ezi_buttons_minor m4_ifelse([m4_ezi_buttons_minor],,<small>|</small><br>)
  <!-- end navigation buttons -->
  <font face="m5_font" size="-1">
  <br>
  Last modified: m4_esyscmd(date)<br>
  Best viewed at 800x600 or above resolution.<br>
  &copy; Copyright 1999-m4_esyscmd(date +%Y) Davin Pearson.<br>
  m4_please_report<br>
  </font>
</center>

<br><br><br>
</body>
</html>
])

m4_define([m4_location],[m4_ifelse(m4_dirname,.,,m4_dirname/)m4_filename.html])
m4_define([m4_home_neat],[m4_ifelse(m4_home,.,$1,m4_home/$1)])

m4_dnl ARGS $1 = name $2 = dir/file.html
m4_define([m4_ezi_button_f],
[m4_ifelse($1,newline,</tr><tr>,$2,m4_location,
[<td align=center><font color=white face=m5_font size="-1"><b>$1</b></font></td>
],
[<td align=center bgcolor="m4_button_color" onMouseOver="this.bgColor='#ffffff'" onMouseOut="this.bgColor='m4_button_color'"><a href="m4_home_neat($2)"><font face=m5_font color=black size="-1"><b>$1</b></font></a></td>])
])

m4_define([m4_ezi_button_g],
[m4_ifelse($1,newline,<br>,
$2,m4_location,[<font face=m5_font size="-1">m4_patsubst($1,&nbsp;,)</font>],
[<font face=m5_font size="-1"><a href="m4_home_neat($2)">m4_patsubst($1,&nbsp;,)</a></font>]
)]
)

m4_define([m4_ezi_button],
[
m4_add_to_list([m4_ezi_buttons_major],m4_ezi_button_f($1,$2))
m4_add_to_list([m4_ezi_buttons_minor],<small>|</small> m4_ezi_button_g($1,$2))
])

m4_dnl m4_define([m4_ezi_buttons_major],)
m4_dnl m4_define([m4_ezi_buttons_minor],)

m4_define([m4_table_bgcolor],#000000)

m4_define([m4_show_ezi_banner],[
<center>
  <table border=10 width=750 bgcolor="m4_table_bgcolor">
    <tr>
      <td>

        <!-- begin top crud -->
        m4_top_crud
        <!-- end top crud -->

        <!-- begin navigation buttons -->
        m4_begin_ezi_table
        m4_ezi_buttons_major
        m4_end_ezi_table
        <!-- end navigation buttons -->

        <br>
      </td>
    </tr>
  </table>

</center>

])

m4_define([m4_back_to_somewhere_href],[index.html])
m4_define([m4_back_to_somewhere_text],[Back to Main Menu.])

m4_define([m4_begin_ezi_table],[<center><table cellpadding=2><tr>])
m4_define([m4_end_ezi_table],[</tr></table></center>])

m4_dnl m4_define([m4_research_color],#ff8844) orange
m4_define([m4_research_color],#ffee00)

m4_dnl NOTE: carraige return is essential here
m4_define([m4_error], [m4_errprint(m4___file__:m4___line__: m4 error ($1)
)])

m4_ifdef([m4_top_logo],,[m4_define([m4_top_logo],<img src="m4_home/fern.png" width=74 height=46 alt="Fern">)])

m4_ifdef([m4_top_motto],,[m4_define([m4_top_motto],<font color=white size="-1"><i>New Zealanders making it harder to hate computers</i></font>)])

m4_dnl <font color=white size=6 face=helvetica><b>www.davinpearson.com</b></font>
m4_dnl <font color=white size=6 face=helvetica><b>h1.ripway.com/davin</b></font>

m4_ifdef([m4_top_address],,[m4_define([m4_top_address],[<font color=white size=6 face=m5_font><b>davin.50webs.com</b></font>])])

m4_define([m5_forloop],[m4_pushdef([$1], [$2])m5__forloop([$1], [$2], [$3], [$4])m4_popdef([$1])])
m4_define([m5__forloop], [$4[]m4_ifelse($1, [$3], , [m4_define([$1], m4_incr($1))m5__forloop([$1], [$2], [$3], [$4])])])
m4_define([m5_spaces], [m4_ifelse(m4_eval($1),0,,[m5_forloop([i], 1, m4_eval($1), [&nbsp;])])])

m4_define([APOS],[$1&rsquo;])
m4_define([BPOS],[&lsquo;$1])

m4_define(QQ,&lsquo;&lsquo;$*&rsquo;&rsquo;)
m4_define(QQQ,&lsquo;$*&rsquo;)

m4_define([m4_years],[m4_eval(((13 * 32 * (m4_translit(m4_esyscmd(date +%Y),[
])) + 32 * (m4_translit(m4_esyscmd(date +%m),[
])) + (m4_translit(m4_esyscmd(date +%d),[
])) - $1 * 13 * 32 - $2 * 32 - $3) / (13 * 32)))])
m4_dnl (- 2014 1997)

m4_define([m5_davinpearson_com],[m4_error(m5 davinpearson_com undefined)])

m4_include(index.m4)

m4_dnl NOTE: only define if not yet defined...
m4_dnl NOTE: these are sensible default colors for the widgets etc.

m4_ifdef([m4_button_color],,[m4_error(m4 button_color undefined)])
m4_ifdef([m4_bgcolor],,[m4_define([m4_bgcolor],[#f0f0f0])])
m4_ifdef([m4_textcolor],,[m4_define([m4_textcolor],[#000000])])
m4_ifdef([m4_linkcolor],,[m4_define([m4_linkcolor],[#0044ff])])
m4_ifdef([m4_vlinkcolor],,[m4_define([m4_vlinkcolor],[#888888])])

m4_ifdef([m4_top_crud],,[m4_define([m4_top_crud],[
<center>
  <table>
    <tr>
      <td valign=top>
        m4_top_logo
      </td>
      <td align=center valign=top>
        m4_top_address
        <br>
        m4_top_motto
        <br>
        <br>
      </td>
    </tr>
  </table>
</center>
])])

m4_define([AHREF],[<a href="$1">$2<img border=0 src="m4_home/external-link2.png" alt="" width="15" height="12"></a>])

m4_define([m4_davin_pearson], Davin Pearson http://davin.50webs.com)

m4_divert m4_dnl