Finish documenting utility module.

Modified CSS to make text a bit more compact.
Moved any.hpp from its own header to utility module
Change tests from CRLF to LF
Fix some compiler errors dealing with any
Finish documenting gears.

It took over four months to finish this. Chances are that this
documentation is not entirely finished. The mathematical meta
functions still need to be documented and/or moved.
Changed CRLF to LF in the docs directory.

Also changed the CSS to have 20px right padding for parameter names and
exceptions thrown.
diff --git a/docs/doxygen.css b/docs/doxygen.css
index 445f084..35784e2 100644
--- a/docs/doxygen.css
+++ b/docs/doxygen.css
@@ -1,1424 +1,1425 @@
-/* The modified CSS for doxygen 1.8.3.1 */
-
-body, table, div, p, dl {
-    font-family: 'Arial' sans-serif;
-    font-weight: 400;
-    font-size: 15px;
-    /*line-height: 140%;*/
-}
-
-/* @group Heading Levels */
-
-h1.groupheader {
-    font-size: 150%
-}
-
-.title {
-    font-size: 25px;
-    margin: 10px 2px;
-    font-weight: normal;
-    color: #333;
-}
-
-h2.groupheader {
-    border-bottom: 1px solid #879ECB;
-    color: #354C7B;
-    font-size: 150%;
-    font-weight: normal;
-    margin-top: 1.75em;
-    padding-top: 8px;
-    padding-bottom: 4px;
-    width: 100%;
-}
-
-h3.groupheader {
-    font-size: 100%
-}
-
-h1, h2, h3, h4, h5, h6 {
-    -webkit-transition: text-shadow 0.5s linear;
-    -moz-transition: text-shadow 0.5s linear;
-    -ms-transition: text-shadow 0.5s linear;
-    -o-transition: text-shadow 0.5s linear;
-    transition: text-shadow 0.5s linear;
-    margin-right: 15px;
-}
-
-h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow {
-    text-shadow: 0 0 15px cyan
-}
-
-dt {
-    font-weight: bold
-}
-
-div.multicol {
-    -moz-column-gap: 1em;
-    -webkit-column-gap: 1em;
-    -moz-column-count: 3;
-    -webkit-column-count: 3;
-}
-
-p.startli, p.startdd, p.starttd {
-    margin-top: 2px
-}
-
-p.endli {
-    margin-bottom: 0px
-}
-
-p.enddd {
-    margin-bottom: 4px
-}
-
-p.endtd {
-    margin-bottom: 2px
-}
-
-/* @end */
-
-caption {
-    font-weight: bold
-}
-
-span.legend {
-    font-size: 70%;
-    text-align: center;
-}
-
-h3.version {
-    font-size: 90%;
-    text-align: center;
-}
-
-div.qindex, div.navtab {
-    background-color: #EBEFF6;
-    border: 1px solid #A3B4D7;
-    text-align: center;
-}
-
-div.qindex, div.navpath {
-    width: 100%;
-    line-height: 140%;
-}
-
-div.navtab {
-    margin-right: 15px
-}
-
-/* @group Link Styling */
-
-a {
-    color: #3D578C;
-    font-weight: normal;
-    text-decoration: none;
-}
-
-.contents a:visited {
-    color: #4665A2
-}
-
-a:hover {
-    text-decoration: underline
-}
-
-a.qindex {
-    font-weight: bold
-}
-
-a.qindexHL {
-    font-weight: bold;
-    background-color: #9CAFD4;
-    color: #ffffff;
-    border: 1px double #869DCA;
-}
-
-.contents a.qindexHL:visited {
-    color: #ffffff
-}
-
-a.el {
-    font-weight: bold
-}
-
-a.elRef {
-
-}
-
-a.code, a.code:visited {
-    color: #006135
-}
-
-a.codeRef, a.codeRef:visited {
-    /*color: #4665A2; */
-    color: #006135;
-}
-
-/* @end */
-
-/* @group Code fragments */
-
-dl.el {
-    margin-left: -1cm
-}
-
-pre.fragment {
-    border: 1px solid #C4CFE5;
-    background-color: #FBFCFD;
-    padding: 4px 6px;
-    margin: 4px 8px 4px 2px;
-    overflow: auto;
-    word-wrap: break-word;
-    font-size: 9pt;
-    line-height: 125%;
-    font-family: monospace, fixed;
-    font-size: 105%;
-}
-
-div.fragment {
-    background-color: #f8f8f8;
-    border: 1px solid #cccccc;
-    font-family: Consolas, Monaco, monospace;
-    font-size: 13px;
-    line-height: 19px;
-    overflow: auto;
-    padding: 6px 10px;
-    border-radius: 3px;
-}
-
-div.line {
-    font-family: Consolas, Monaco, monospace;
-    font-size: 13px;
-    min-height: 13px;
-    line-height: 19px;
-    overflow: auto;
-    text-wrap: unrestricted;
-    white-space: -moz-pre-wrap; /* Moz */
-    white-space: -pre-wrap; /* Opera 4-6 */
-    white-space: -o-pre-wrap; /* Opera 7 */
-    white-space: pre-wrap; /* CSS3  */
-    word-wrap: break-word; /* IE 5.5+ */
-    text-indent: -53px;
-    padding-left: 53px;
-    padding-bottom: 0px;
-    margin: 0px;
-    -webkit-transition-property: background-color, box-shadow;
-    -webkit-transition-duration: 0.5s;
-    -moz-transition-property: background-color, box-shadow;
-    -moz-transition-duration: 0.5s;
-    -ms-transition-property: background-color, box-shadow;
-    -ms-transition-duration: 0.5s;
-    -o-transition-property: background-color, box-shadow;
-    -o-transition-duration: 0.5s;
-    transition-property: background-color, box-shadow;
-    transition-duration: 0.5s;
-}
-
-div.line.glow {
-    background-color: cyan;
-    box-shadow: 0 0 10px cyan;
-}
-
-span.lineno {
-    padding-right: 4px;
-    text-align: right;
-    border-right: 2px solid #0F0;
-    background-color: #E8E8E8;
-    white-space: pre;
-}
-
-span.lineno a {
-    background-color: #D8D8D8
-}
-
-span.lineno a:hover {
-    background-color: #C8C8C8
-}
-
-code, tt {
-    margin: 0 2px;
-    padding: 0 5px;
-    white-space: nowrap;
-    font-family: Consolas, Monaco, monospace;
-    border: 1px solid #eaeaea;
-    background-color: #f8f8f8;
-    border-radius: 3px;
-    color: #d14;
-}
-
-pre code {
-    margin: 0;
-    padding: 0;
-    white-space: pre;
-    border: none;
-    background: transparent;
-}
-
-pre {
-    background-color: #f8f8f8;
-    border: 1px solid #cccccc;
-    font-family: Consolas, Monaco, monospace;
-    font-size: 13px;
-    line-height: 19px;
-    overflow: auto;
-    padding: 6px 10px;
-    border-radius: 3px;
-}
-
-pre code, pre tt {
-    background-color: transparent;
-    border: none;
-}
-
-/* @end */
-
-div.ah {
-    width: 100%;
-    background-color: #eee;
-    font-weight: bold;
-    color: #000;
-    margin-bottom: 1px;
-    margin-top: 1px;
-    border: solid 1px #999;
-}
-
-div.groupHeader {
-    margin-left: 16px;
-    margin-top: 12px;
-    font-weight: bold;
-}
-
-div.groupText {
-    margin-left: 16px;
-}
-
-body {
-    background-color: white;
-    color: black;
-    margin: 0;
-    overflow: hidden;
-}
-
-div.contents, #content {
-    width: 950px;
-    margin: 0 auto;
-    padding: 0;
-}
-
-div.contents h1 {
-    color: #333;
-    padding: 0.5em 0;
-    margin-top: 30px;
-    margin-bottom: 0;
-    font-size: 20pt;
-    font-weight: normal;
-    border-bottom: solid 1px #999;
-}
-
-div.contents h2 {
-    font-size: 20pt;
-    font-weight: normal;
-    margin-top: 1.5em;
-    padding-bottom: 0.4em;
-    border-bottom: 1px solid #999;
-    color: #333;
-}
-
-div.contents h3 {
-    font-size: 16pt;
-    font-weight: normal;
-}
-
-div.contents p {
-    color: #333;
-    text-align: justify;
-}
-
-div.contents ul {
-    list-style-type: square;
-    list-style-position: outside;
-    margin: 0 0 0 1.5em;
-    padding: 0;
-}
-
-div.contents ul li {
-    color: #333;
-    margin: 0 0 0.3em 0;
-}
-
-td.indexkey {
-    background-color: #EBEFF6;
-    font-weight: bold;
-    border: 1px solid #C4CFE5;
-    margin: 2px 0px 2px 0;
-    padding: 2px 10px;
-    white-space: nowrap;
-    vertical-align: top;
-}
-
-td.indexvalue {
-    background-color: #EBEFF6;
-    border: 1px solid #C4CFE5;
-    padding: 2px 10px;
-    margin: 2px 0px;
-}
-
-tr.memlist {
-    background-color: #EEF1F7
-}
-
-p.formulaDsp {
-    text-align: center
-}
-
-img.formulaDsp {
-
-}
-
-img.formulaInl {
-    vertical-align: middle
-}
-
-div.center {
-    text-align: center;
-    margin-top: 0px;
-    margin-bottom: 0px;
-    padding: 0px;
-}
-
-div.center img {
-    border: 0px
-}
-
-address.footer {
-    text-align: right;
-    padding-right: 12px;
-}
-
-img.footer {
-    border: 0px;
-    vertical-align: middle;
-}
-
-/* @group Code Colorization */
-
-span.keyword {
-    color: #0000FF
-}
-
-span.keywordtype {
-    color: #0000FF
-}
-
-span.keywordflow {
-    color: #0000FF
-}
-
-span.comment {
-    color: #008000
-}
-
-span.preprocessor {
-    color: #A15151;
-    font-weight: bold;
-}
-
-span.stringliteral {
-    color: #d14
-}
-
-span.charliteral {
-    color: #d14
-}
-
-span.vhdldigit {
-    color: #ff00ff
-}
-
-span.vhdlchar {
-    color: #000000
-}
-
-span.vhdlkeyword {
-    color: #700070
-}
-
-span.vhdllogic {
-    color: #ff0000
-}
-
-blockquote {
-    background-color: #F7F8FB;
-    border-left: 2px solid #9CAFD4;
-    margin: 0 24px 0 4px;
-    padding: 0 12px 0 16px;
-}
-
-/* @end */
-
-/*
-.search {
-    color: #003399;
-    font-weight: bold;
-}
-
-form.search {
-    margin-bottom: 0px;
-    margin-top: 0px;
-}
-
-input.search {
-    font-size: 75%;
-    color: #000080;
-    font-weight: normal;
-    background-color: #e8eef2;
-}
-*/
-
-td.tiny {
-    font-size: 75%
-}
-
-.dirtab {
-    padding: 4px;
-    border-collapse: collapse;
-    border: 1px solid #A3B4D7;
-}
-
-th.dirtab {
-    background: #EBEFF6;
-    font-weight: bold;
-}
-
-hr {
-    height: 0px;
-    border: none;
-    border-top: 1px solid #4A6AAA;
-}
-
-hr.footer {
-    height: 1px
-}
-
-/* @group Member Descriptions */
-
-table.memberdecls {
-    border-spacing: 0px;
-    padding: 0px;
-}
-
-.memberdecls td, .fieldtable tr {
-    -webkit-transition-property: background-color, box-shadow;
-    -webkit-transition-duration: 0.5s;
-    -moz-transition-property: background-color, box-shadow;
-    -moz-transition-duration: 0.5s;
-    -ms-transition-property: background-color, box-shadow;
-    -ms-transition-duration: 0.5s;
-    -o-transition-property: background-color, box-shadow;
-    -o-transition-duration: 0.5s;
-    transition-property: background-color, box-shadow;
-    transition-duration: 0.5s;
-}
-
-.memberdecls td.glow, .fieldtable tr.glow {
-    background-color: cyan;
-    box-shadow: 0 0 15px cyan;
-}
-
-.mdescLeft, .mdescRight {
-    background-color: #F9FAFC;
-    border: none;
-    margin: 4px;
-    padding: 1px 0 0 8px;
-}
-
-.memItemLeft, .memItemRight, .memTemplItemLeft, .memTemplItemRight, .memTemplParams {
-    background-color: #F9FAFC;
-    border: none;
-    margin: 4px;
-    padding: 1px 0 0 8px;
-    font-family: Consolas, Monaco, monospace;
-}
-
-.mdescLeft, .mdescRight {
-    padding: 0px 8px 4px 8px;
-    color: #555;
-}
-
-.memSeparator {
-    border-bottom: 1px solid #DEE4F0;
-    line-height: 1px;
-    margin: 0px;
-    padding: 0px;
-}
-
-.memItemLeft, .memTemplItemLeft {
-    white-space: nowrap;
-    font-family: Consolas, Monaco, monospace;
-}
-
-.memItemRight {
-    width: 100%;
-    font-family: Consolas, Monaco, monospace;
-}
-
-.memTemplParams {
-    color: #0000FF;
-    white-space: nowrap;
-    font-family: Consolas, Monaco, monospace;
-    font-size: 80%;
-}
-
-/* @end */
-
-/* @group Member Details */
-
-/* Styles for detailed member documentation */
-
-.memtemplate {
-    font-size: 80%;
-    font-family: Consolas, Monaco, monospace;
-    color: #0000FF;
-    font-weight: normal;
-    margin-left: 9px;
-}
-
-.memnav {
-    background-color: #EBEFF6;
-    border: 1px solid #A3B4D7;
-    text-align: center;
-    margin: 2px;
-    margin-right: 15px;
-    padding: 2px;
-}
-
-.mempage {
-    width: 100%
-}
-
-.memitem {
-    padding: 0;
-    margin-bottom: 20px;
-    margin-right: 5px;
-    display: table !important;
-    width: 100%;
-}
-
-.memname {
-    font-family: Consolas, Monaco, monospace;
-    font-weight: bold;
-    margin-left: 6px;
-}
-
-.memname td {
-    vertical-align: bottom
-}
-
-.memproto, dl.reflist dt {
-    border-top: 1px solid #A8B8D9;
-    border-left: 1px solid #A8B8D9;
-    border-right: 1px solid #A8B8D9;
-    padding: 6px 0px 6px 0px;
-    color: #000;
-    font-weight: bold;
-    text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
-    background-color: #eee;
-    border-top-right-radius: 4px;
-    border-top-left-radius: 4px;
-    -moz-border-radius-topright: 4px;
-    -moz-border-radius-topleft: 4px;
-    -webkit-border-top-right-radius: 4px;
-    -webkit-border-top-left-radius: 4px;
-}
-
-.memdoc, dl.reflist dd {
-    border: 1px solid #A8B8D9;
-    padding: 6px 10px 2px 10px;
-    background-color: #FBFCFD;
-    background-color: #FFFFFF;
-    border-bottom-left-radius: 4px;
-    border-bottom-right-radius: 4px;
-    -moz-border-radius-bottomleft: 4px;
-    -moz-border-radius-bottomright: 4px;
-    -webkit-border-bottom-left-radius: 4px;
-    -webkit-border-bottom-right-radius: 4px;
-}
-
-dl.reflist dt {
-    padding: 5px
-}
-
-dl.reflist dd {
-    margin: 0px 0px 10px 0px;
-    padding: 5px;
-}
-
-.paramkey {
-    text-align: right
-}
-
-.paramtype {
-    white-space: nowrap
-}
-
-.paramname {
-    color: #602020;
-    white-space: nowrap;
-    font-family: Consolas, Monaco, monospace;
-    font-weight: bold;
-}
-
-.paramname em {
-    font-style: normal
-}
-
-.paramname code {
-    line-height: 14px
-}
-
-.params, .retval, .exception, .tparams {
-    margin-left: 0px;
-    padding-left: 0px;
-}
-
-.params .paramname, .retval .paramname {
-    font-family: Consolas, Monaco, monospace;
-    font-weight: bold;
-    /*padding-right: 20px;*/
-    vertical-align: top;
-}
-
-table.tparams td.paramname, table.params td.paramname {
-  padding-right: 20px;
-}
-
-.params .paramtype {
-    font-style: italic;
-    vertical-align: top;
-}
-
-.params .paramdir {
-    font-family: 'Consolas', monospace;
-    vertical-align: top;
-}
-
-table.mlabels {
-    border-spacing: 0px
-}
-
-td.mlabels-left {
-    width: 100%;
-    padding: 0px;
-}
-
-td.mlabels-right {
-    vertical-align: bottom;
-    padding: 0px;
-    white-space: nowrap;
-}
-
-span.mlabels {
-    margin-left: 8px
-}
-
-span.mlabel {
-    background-color: #728DC1;
-    border-top: 1px solid #5373B4;
-    border-left: 1px solid #5373B4;
-    border-right: 1px solid #C4CFE5;
-    border-bottom: 1px solid #C4CFE5;
-    text-shadow: none;
-    color: white;
-    margin-right: 4px;
-    padding: 2px 3px;
-    border-radius: 3px;
-    font-size: 7pt;
-    white-space: nowrap;
-    vertical-align: middle;
-}
-
-/* @end */
-
-/* these are for tree view when not used as main index */
-
-div.directory {
-    margin: 10px 0px;
-    border-top: 1px solid #A8B8D9;
-    width: 100%;
-}
-
-.directory table {
-    border-collapse: collapse
-}
-
-.directory td {
-    margin: 0px;
-    padding: 0px;
-    vertical-align: top;
-}
-
-.directory td.entry {
-    white-space: nowrap;
-    padding: 5px 5px 5px 0px;
-}
-
-.directory td.entry a {
-    outline: none
-}
-
-.directory td.entry a img {
-    border: none
-}
-
-.directory td.desc {
-    width: 100%;
-    padding-left: 12px;
-    padding-right: 6px;
-    padding-top: 4px;
-}
-
-.directory tr.even {
-    padding-left: 6px;
-    background-color: #F7F8FB;
-}
-
-.directory img {
-    vertical-align: -30%
-}
-
-.directory .levels {
-    white-space: nowrap;
-    width: 100%;
-    text-align: right;
-    font-size: 9pt;
-}
-
-.directory .levels span {
-    cursor: pointer;
-    padding-left: 2px;
-    padding-right: 2px;
-    color: #3D578C;
-}
-
-div.dynheader {
-    margin-top: 8px;
-    -webkit-touch-callout: none;
-    -webkit-user-select: none;
-    -khtml-user-select: none;
-    -moz-user-select: none;
-    -ms-user-select: none;
-    user-select: none;
-}
-
-address {
-    font-style: normal;
-    color: #2A3D61;
-}
-
-table.doxtable {
-    border-collapse: collapse;
-    margin-top: 4px;
-    margin-bottom: 4px;
-}
-
-table.doxtable td, table.doxtable th {
-    border: 1px solid #2D4068;
-    padding: 3px 7px 2px;
-}
-
-table.doxtable th {
-    background-color: #374F7F;
-    color: #FFFFFF;
-    font-size: 110%;
-    padding-bottom: 4px;
-    padding-top: 5px;
-}
-
-table.fieldtable {
-    /*width: 100%;*/
-    margin-bottom: 10px;
-    border: 1px solid #A8B8D9;
-    border-spacing: 0px;
-    -moz-border-radius: 4px;
-    -webkit-border-radius: 4px;
-    border-radius: 4px;
-    -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
-    -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
-    box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
-}
-
-.fieldtable td, .fieldtable th {
-    padding: 3px 7px 2px
-}
-
-.fieldtable td.fieldtype, .fieldtable td.fieldname {
-    white-space: nowrap;
-    border-right: 1px solid #A8B8D9;
-    border-bottom: 1px solid #A8B8D9;
-    vertical-align: top;
-}
-
-.fieldtable td.fieldname {
-    padding-top: 5px
-}
-
-.fieldtable td.fielddoc {
-    border-bottom: 1px solid #A8B8D9;
-    /*width: 100%;*/
-}
-
-.fieldtable td.fielddoc p:first-child {
-    margin-top: 2px
-}
-
-.fieldtable td.fielddoc p:last-child {
-    margin-bottom: 2px
-}
-
-.fieldtable tr:last-child td {
-    border-bottom: none
-}
-
-.fieldtable th {
-    background-image: url('nav_f.png');
-    background-repeat: repeat-x;
-    background-color: #E2E8F2;
-    font-size: 90%;
-    color: #253555;
-    padding-bottom: 4px;
-    padding-top: 5px;
-    text-align: left;
-    -moz-border-radius-topleft: 4px;
-    -moz-border-radius-topright: 4px;
-    -webkit-border-top-left-radius: 4px;
-    -webkit-border-top-right-radius: 4px;
-    border-top-left-radius: 4px;
-    border-top-right-radius: 4px;
-    border-bottom: 1px solid #A8B8D9;
-}
-
-.tabsearch {
-    top: 0px;
-    left: 10px;
-    height: 36px;
-    /*background-image: url('tab_b.png');*/
-    z-index: 101;
-    overflow: hidden;
-    font-size: 13px;
-}
-
-.navpath ul {
-    font-size: 11px;
-    /*background-image: url('tab_b.png');*/
-    background-repeat: repeat-x;
-    background-position: 0 -5px;
-    height: 30px;
-    line-height: 30px;
-    color: #8AA0CC;
-    border: solid 1px #C2CDE4;
-    overflow: hidden;
-    margin: 0px;
-    padding: 0px;
-}
-
-.navpath li {
-    list-style-type: none;
-    float: left;
-    padding-left: 10px;
-    padding-right: 15px;
-    background-image: url('bc_s.png');
-    background-repeat: no-repeat;
-    background-position: right;
-    color: #364D7C;
-}
-
-.navpath li.navelem a {
-    height: 32px;
-    display: block;
-    text-decoration: none;
-    outline: none;
-    color: #283A5D;
-    font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
-    text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
-    text-decoration: none;
-}
-
-.navpath li.navelem a:hover {
-    color: #6884BD
-}
-
-.navpath li.footer {
-    list-style-type: none;
-    float: right;
-    padding-left: 10px;
-    padding-right: 15px;
-    background-image: none;
-    background-repeat: no-repeat;
-    background-position: right;
-    color: #364D7C;
-    font-size: 8pt;
-}
-
-div.summary {
-    float: right;
-    font-size: 8pt;
-    padding-right: 5px;
-    width: 50%;
-    text-align: right;
-}
-
-div.summary a {
-    white-space: nowrap
-}
-
-div.ingroups {
-    font-size: 8pt;
-    width: 50%;
-    text-align: left;
-}
-
-div.ingroups a {
-    white-space: nowrap
-}
-
-div.header {
-    margin: 2em auto;
-    width: 950px;
-    border-bottom: 1px solid #999;
-}
-
-div.headertitle {
-    padding: 5px 5px 5px 0px
-}
-
-dl {
-    padding: 0 0 0 10px
-}
-
-/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */
-
-dl.section {
-    margin-left: 0px;
-    padding-left: 0px;
-}
-
-dl.note {
-    margin-left: -7px;
-    padding-left: 3px;
-    border-left: 4px solid;
-    border-color: #D0C000;
-}
-
-dl.warning, dl.attention {
-    margin-left: -7px;
-    padding-left: 3px;
-    border-left: 4px solid;
-    border-color: #FF0000;
-}
-
-dl.pre, dl.post, dl.invariant {
-    margin-left: -7px;
-    padding-left: 3px;
-    border-left: 4px solid;
-    border-color: #00D000;
-}
-
-dl.deprecated {
-    margin-left: -7px;
-    padding-left: 3px;
-    border-left: 4px solid;
-    border-color: #505050;
-}
-
-dl.todo {
-    margin-left: -7px;
-    padding-left: 3px;
-    border-left: 4px solid;
-    border-color: #00C0E0;
-}
-
-dl.test {
-    margin-left: -7px;
-    padding-left: 3px;
-    border-left: 4px solid;
-    border-color: #3030E0;
-}
-
-dl.bug {
-    margin-left: -7px;
-    padding-left: 3px;
-    border-left: 4px solid;
-    border-color: #C08050;
-}
-
-dl.section dd {
-    margin-bottom: 6px
-}
-
-#projectlogo {
-    text-align: center;
-    vertical-align: bottom;
-    border-collapse: separate;
-}
-
-#projectlogo img {
-    border: 0px none
-}
-
-#projectname {
-    font: 300% Tahoma, Arial,sans-serif;
-    margin: 0px;
-    padding: 2px 0px;
-}
-
-#projectbrief {
-    font: 120% Tahoma, Arial,sans-serif;
-    margin: 0px;
-    padding: 0px;
-}
-
-#projectnumber {
-    font: 50% Tahoma, Arial,sans-serif;
-    margin: 0px;
-    padding: 0px;
-}
-
-#titlearea {
-    padding: 2px;
-    margin: 0px;
-    width: 100%;
-    border-bottom: 1px solid #5373B4;
-}
-
-.image {
-    text-align: center
-}
-
-.dotgraph {
-    text-align: center
-}
-
-.mscgraph {
-    text-align: center
-}
-
-.caption {
-    font-weight: bold
-}
-
-div.zoom {
-    border: 1px solid #90A5CE
-}
-
-dl.citelist {
-    margin-bottom: 50px
-}
-
-dl.citelist dt {
-    color: #334975;
-    float: left;
-    font-weight: bold;
-    margin-right: 10px;
-    padding: 5px;
-}
-
-dl.citelist dd {
-    margin: 2px 0;
-    padding: 5px 0;
-}
-
-div.toc {
-    padding: 14px 25px;
-    background-color: #F4F6FA;
-    border: 1px solid #D8DFEE;
-    border-radius: 7px 7px 7px 7px;
-    float: right;
-    height: auto;
-    margin: 0 20px 10px 10px;
-    width: 200px;
-}
-
-div.toc li {
-    background: url("bdwn.png") no-repeat scroll 0 5px transparent;
-    font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif;
-    margin-top: 5px;
-    padding-left: 10px;
-    padding-top: 2px;
-}
-
-div.toc h3 {
-    font: bold 12px/1.2 Arial,FreeSans,sans-serif;
-    color: #4665A2;
-    border-bottom: 0 none;
-    margin: 0;
-}
-
-div.toc ul {
-    list-style: none outside none;
-    border: medium none;
-    padding: 0px;
-}
-
-div.toc li.level1 {
-    margin-left: 0px
-}
-
-div.toc li.level2 {
-    margin-left: 15px
-}
-
-div.toc li.level3 {
-    margin-left: 30px
-}
-
-div.toc li.level4 {
-    margin-left: 45px
-}
-
-.inherit_header {
-    font-weight: bold;
-    color: gray;
-    cursor: pointer;
-    -webkit-touch-callout: none;
-    -webkit-user-select: none;
-    -khtml-user-select: none;
-    -moz-user-select: none;
-    -ms-user-select: none;
-    user-select: none;
-}
-
-.inherit_header td {
-    padding: 6px 0px 2px 5px
-}
-
-.inherit {
-    display: none
-}
-
-tr.heading h2 {
-    margin-top: 12px;
-    margin-bottom: 4px;
-}
-
-@media print {
-    #top {
-        display: none
-    }
-
-    #side-nav {
-        display: none
-    }
-
-    #nav-path {
-        display: none
-    }
-
-    body {
-        overflow: visible
-    }
-
-    h1, h2, h3, h4, h5, h6 {
-        page-break-after: avoid
-    }
-
-    .summary {
-        display: none
-    }
-
-    .memitem {
-        page-break-inside: avoid
-    }
-
-    #doc-content {
-        margin-left: 0 !important;
-        height: auto !important;
-        width: auto !important;
-        overflow: inherit;
-        display: inline;
-    }
-}
-
-/* tabs.css */
-
-.tabs {
-    width: 100%;
-    z-index: 101;
-    font-size: 12px;
-    font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
-    border-bottom: solid 1px #5373B4;
-    background-color: #dbeaf5;
-}
-
-.tabs2, .tabs3 {
-    display: none;
-}
-
-.tablist {
-    margin: 0;
-    padding: 0;
-    display: table;
-}
-
-.tablist li {
-    float: left;
-    display: table-cell;
-    line-height: 36px;
-    list-style: none;
-}
-
-.tablist a {
-    display: block;
-    padding: 0 20px;
-    background-repeat: no-repeat;
-    background-position: right;
-    color: #3b8dc8;
-    text-decoration: none;
-    outline: none;
-}
-
-.tabs3 .tablist a {
-    padding: 0 10px
-}
-
-.tablist a:hover {
-    text-decoration: underline
-}
-
-.tablist li.current a {
-    font-weight: bold
-}
-
-/* navtree.css */
-
-#nav-tree .children_ul {
-  margin:0;
-  padding:4px;
-}
-
-#nav-tree ul {
-  list-style:none outside none;
-  margin:0px;
-  padding:0px;
-}
-
-#nav-tree li {
-  white-space:nowrap;
-  margin:0px;
-  padding:0px;
-}
-
-#nav-tree .plus {
-  margin:0px;
-}
-
-#nav-tree .selected {
-  background-image: url('tab_a.png');
-  background-repeat:repeat-x;
-  color: #fff;
-  text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
-}
-
-#nav-tree img {
-  margin:0px;
-  padding:0px;
-  border:0px;
-  vertical-align: middle;
-}
-
-#nav-tree a {
-  text-decoration:none;
-  padding:0px;
-  margin:0px;
-  outline:none;
-}
-
-#nav-tree .label {
-  margin:0px;
-  padding:0px;
-  font: 12px 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
-}
-
-#nav-tree .label a {
-  padding:2px;
-}
-
-#nav-tree .selected a {
-  text-decoration:none;
-  color:#fff;
-}
-
-#nav-tree .children_ul {
-  margin:0px;
-  padding:0px;
-}
-
-#nav-tree .item {
-  margin:0px;
-  padding:0px;
-}
-
-#nav-tree {
-  padding: 0px 0px;
-  background-color: #FAFAFF;
-  font-size:14px;
-  overflow:auto;
-}
-
-#doc-content {
-  overflow:auto;
-  display:block;
-  padding:0px;
-  margin:0px;
-  -webkit-overflow-scrolling : touch; /* iOS 5+ */
-}
-
-#side-nav {
-  padding:0 6px 0 0;
-  margin: 0px;
-  display:block;
-  position: absolute;
-  left: 0px;
-  width: 250px;
-}
-
-.ui-resizable .ui-resizable-handle {
-  display:block;
-}
-
-.ui-resizable-e {
-  background:url("ftv2splitbar.png") repeat scroll right center transparent;
-  cursor:e-resize;
-  height:100%;
-  right:0;
-  top:0;
-  width:6px;
-}
-
-.ui-resizable-handle {
-  display:none;
-  font-size:0.1px;
-  position:absolute;
-  z-index:1;
-}
-
-#nav-tree-contents {
-  margin: 6px 0px 0px 0px;
-}
-
-#nav-tree {
-  background-image:url('nav_h.png');
-  background-repeat:repeat-x;
-  background-color: #F9FAFC;
-  -webkit-overflow-scrolling : touch; /* iOS 5+ */
-}
-
-#nav-sync {
-  display: none;
-}
-
-@media print
-{
-  #nav-tree { display: none; }
-  div.ui-resizable-handle { display: none; position: relative; }
-}
-
+/* The modified CSS for doxygen 1.8.3.1 */
+
+body, table, div, p, dl {
+    font-family: 'Arial' sans-serif;
+    font-weight: 400;
+    font-size: 15px;
+    /*line-height: 140%;*/
+}
+
+/* @group Heading Levels */
+
+h1.groupheader {
+    font-size: 150%
+}
+
+.title {
+    font-size: 25px;
+    margin: 10px 2px;
+    font-weight: normal;
+    color: #333;
+}
+
+h2.groupheader {
+    border-bottom: 1px solid #879ECB;
+    color: #354C7B;
+    font-size: 150%;
+    font-weight: normal;
+    margin-top: 1.75em;
+    padding-top: 8px;
+    padding-bottom: 4px;
+    width: 100%;
+}
+
+h3.groupheader {
+    font-size: 100%
+}
+
+h1, h2, h3, h4, h5, h6 {
+    -webkit-transition: text-shadow 0.5s linear;
+    -moz-transition: text-shadow 0.5s linear;
+    -ms-transition: text-shadow 0.5s linear;
+    -o-transition: text-shadow 0.5s linear;
+    transition: text-shadow 0.5s linear;
+    margin-right: 15px;
+}
+
+h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow {
+    text-shadow: 0 0 15px cyan
+}
+
+dt {
+    font-weight: bold
+}
+
+div.multicol {
+    -moz-column-gap: 1em;
+    -webkit-column-gap: 1em;
+    -moz-column-count: 3;
+    -webkit-column-count: 3;
+}
+
+p.startli, p.startdd, p.starttd {
+    margin-top: 2px
+}
+
+p.endli {
+    margin-bottom: 0px
+}
+
+p.enddd {
+    margin-bottom: 4px
+}
+
+p.endtd {
+    margin-bottom: 2px
+}
+
+/* @end */
+
+caption {
+    font-weight: bold
+}
+
+span.legend {
+    font-size: 70%;
+    text-align: center;
+}
+
+h3.version {
+    font-size: 90%;
+    text-align: center;
+}
+
+div.qindex, div.navtab {
+    background-color: #EBEFF6;
+    border: 1px solid #A3B4D7;
+    text-align: center;
+}
+
+div.qindex, div.navpath {
+    width: 100%;
+    line-height: 140%;
+}
+
+div.navtab {
+    margin-right: 15px
+}
+
+/* @group Link Styling */
+
+a {
+    color: #3D578C;
+    font-weight: normal;
+    text-decoration: none;
+}
+
+.contents a:visited {
+    color: #4665A2
+}
+
+a:hover {
+    text-decoration: underline
+}
+
+a.qindex {
+    font-weight: bold
+}
+
+a.qindexHL {
+    font-weight: bold;
+    background-color: #9CAFD4;
+    color: #ffffff;
+    border: 1px double #869DCA;
+}
+
+.contents a.qindexHL:visited {
+    color: #ffffff
+}
+
+a.el {
+    font-weight: bold
+}
+
+a.elRef {
+
+}
+
+a.code, a.code:visited {
+    color: #006135
+}
+
+a.codeRef, a.codeRef:visited {
+    /*color: #4665A2; */
+    color: #006135;
+}
+
+/* @end */
+
+/* @group Code fragments */
+
+dl.el {
+    margin-left: -1cm
+}
+
+pre.fragment {
+    border: 1px solid #C4CFE5;
+    background-color: #FBFCFD;
+    padding: 4px 6px;
+    margin: 4px 8px 4px 2px;
+    overflow: auto;
+    word-wrap: break-word;
+    font-size: 9pt;
+    line-height: 125%;
+    font-family: monospace, fixed;
+    font-size: 105%;
+}
+
+div.fragment {
+    background-color: #f8f8f8;
+    border: 1px solid #cccccc;
+    font-family: Consolas, Monaco, monospace;
+    font-size: 13px;
+    line-height: 19px;
+    overflow: auto;
+    padding: 6px 10px;
+    border-radius: 3px;
+}
+
+div.line {
+    font-family: Consolas, Monaco, monospace;
+    font-size: 13px;
+    min-height: 13px;
+    line-height: 19px;
+    overflow: auto;
+    text-wrap: unrestricted;
+    white-space: -moz-pre-wrap; /* Moz */
+    white-space: -pre-wrap; /* Opera 4-6 */
+    white-space: -o-pre-wrap; /* Opera 7 */
+    white-space: pre-wrap; /* CSS3  */
+    word-wrap: break-word; /* IE 5.5+ */
+    text-indent: -53px;
+    padding-left: 53px;
+    padding-bottom: 0px;
+    margin: 0px;
+    -webkit-transition-property: background-color, box-shadow;
+    -webkit-transition-duration: 0.5s;
+    -moz-transition-property: background-color, box-shadow;
+    -moz-transition-duration: 0.5s;
+    -ms-transition-property: background-color, box-shadow;
+    -ms-transition-duration: 0.5s;
+    -o-transition-property: background-color, box-shadow;
+    -o-transition-duration: 0.5s;
+    transition-property: background-color, box-shadow;
+    transition-duration: 0.5s;
+}
+
+div.line.glow {
+    background-color: cyan;
+    box-shadow: 0 0 10px cyan;
+}
+
+span.lineno {
+    padding-right: 4px;
+    text-align: right;
+    border-right: 2px solid #0F0;
+    background-color: #E8E8E8;
+    white-space: pre;
+}
+
+span.lineno a {
+    background-color: #D8D8D8
+}
+
+span.lineno a:hover {
+    background-color: #C8C8C8
+}
+
+code, tt {
+    margin: 0 2px;
+    padding: 0 5px;
+    white-space: nowrap;
+    font-family: Consolas, Monaco, monospace;
+    border: 1px solid #eaeaea;
+    background-color: #f8f8f8;
+    border-radius: 3px;
+    color: #d14;
+}
+
+pre code {
+    margin: 0;
+    padding: 0;
+    white-space: pre;
+    border: none;
+    background: transparent;
+}
+
+pre {
+    background-color: #f8f8f8;
+    border: 1px solid #cccccc;
+    font-family: Consolas, Monaco, monospace;
+    font-size: 13px;
+    line-height: 19px;
+    overflow: auto;
+    padding: 6px 10px;
+    border-radius: 3px;
+}
+
+pre code, pre tt {
+    background-color: transparent;
+    border: none;
+}
+
+/* @end */
+
+div.ah {
+    width: 100%;
+    background-color: #eee;
+    font-weight: bold;
+    color: #000;
+    margin-bottom: 1px;
+    margin-top: 1px;
+    border: solid 1px #999;
+}
+
+div.groupHeader {
+    margin-left: 16px;
+    margin-top: 12px;
+    font-weight: bold;
+}
+
+div.groupText {
+    margin-left: 16px;
+}
+
+body {
+    background-color: white;
+    color: black;
+    margin: 0;
+    overflow: hidden;
+}
+
+div.contents, #content {
+    width: 950px;
+    margin: 0 auto;
+    padding: 0;
+}
+
+div.contents h1 {
+    color: #333;
+    padding: 0.5em 0;
+    margin-top: 30px;
+    margin-bottom: 0;
+    font-size: 20pt;
+    font-weight: normal;
+    border-bottom: solid 1px #999;
+}
+
+div.contents h2 {
+    font-size: 20pt;
+    font-weight: normal;
+    margin-top: 1.5em;
+    padding-bottom: 0.4em;
+    border-bottom: 1px solid #999;
+    color: #333;
+}
+
+div.contents h3 {
+    font-size: 16pt;
+    font-weight: normal;
+}
+
+div.contents p {
+    color: #333;
+    text-align: justify;
+}
+
+div.contents ul {
+    list-style-type: square;
+    list-style-position: outside;
+    margin: 0 0 0 1.5em;
+    padding: 0;
+}
+
+div.contents ul li {
+    color: #333;
+    margin: 0 0 0.3em 0;
+}
+
+td.indexkey {
+    background-color: #EBEFF6;
+    font-weight: bold;
+    border: 1px solid #C4CFE5;
+    margin: 2px 0px 2px 0;
+    padding: 2px 10px;
+    white-space: nowrap;
+    vertical-align: top;
+}
+
+td.indexvalue {
+    background-color: #EBEFF6;
+    border: 1px solid #C4CFE5;
+    padding: 2px 10px;
+    margin: 2px 0px;
+}
+
+tr.memlist {
+    background-color: #EEF1F7
+}
+
+p.formulaDsp {
+    text-align: center
+}
+
+img.formulaDsp {
+
+}
+
+img.formulaInl {
+    vertical-align: middle
+}
+
+div.center {
+    text-align: center;
+    margin-top: 0px;
+    margin-bottom: 0px;
+    padding: 0px;
+}
+
+div.center img {
+    border: 0px
+}
+
+address.footer {
+    text-align: right;
+    padding-right: 12px;
+}
+
+img.footer {
+    border: 0px;
+    vertical-align: middle;
+}
+
+/* @group Code Colorization */
+
+span.keyword {
+    color: #0000FF
+}
+
+span.keywordtype {
+    color: #0000FF
+}
+
+span.keywordflow {
+    color: #0000FF
+}
+
+span.comment {
+    color: #008000
+}
+
+span.preprocessor {
+    color: #A15151;
+    font-weight: bold;
+}
+
+span.stringliteral {
+    color: #d14
+}
+
+span.charliteral {
+    color: #d14
+}
+
+span.vhdldigit {
+    color: #ff00ff
+}
+
+span.vhdlchar {
+    color: #000000
+}
+
+span.vhdlkeyword {
+    color: #700070
+}
+
+span.vhdllogic {
+    color: #ff0000
+}
+
+blockquote {
+    background-color: #F7F8FB;
+    border-left: 2px solid #9CAFD4;
+    margin: 0 24px 0 4px;
+    padding: 0 12px 0 16px;
+}
+
+/* @end */
+
+/*
+.search {
+    color: #003399;
+    font-weight: bold;
+}
+
+form.search {
+    margin-bottom: 0px;
+    margin-top: 0px;
+}
+
+input.search {
+    font-size: 75%;
+    color: #000080;
+    font-weight: normal;
+    background-color: #e8eef2;
+}
+*/
+
+td.tiny {
+    font-size: 75%
+}
+
+.dirtab {
+    padding: 4px;
+    border-collapse: collapse;
+    border: 1px solid #A3B4D7;
+}
+
+th.dirtab {
+    background: #EBEFF6;
+    font-weight: bold;
+}
+
+hr {
+    height: 0px;
+    border: none;
+    border-top: 1px solid #4A6AAA;
+}
+
+hr.footer {
+    height: 1px
+}
+
+/* @group Member Descriptions */
+
+table.memberdecls {
+    border-spacing: 0px;
+    padding: 0px;
+}
+
+.memberdecls td, .fieldtable tr {
+    -webkit-transition-property: background-color, box-shadow;
+    -webkit-transition-duration: 0.5s;
+    -moz-transition-property: background-color, box-shadow;
+    -moz-transition-duration: 0.5s;
+    -ms-transition-property: background-color, box-shadow;
+    -ms-transition-duration: 0.5s;
+    -o-transition-property: background-color, box-shadow;
+    -o-transition-duration: 0.5s;
+    transition-property: background-color, box-shadow;
+    transition-duration: 0.5s;
+}
+
+.memberdecls td.glow, .fieldtable tr.glow {
+    background-color: cyan;
+    box-shadow: 0 0 15px cyan;
+}
+
+.mdescLeft, .mdescRight {
+    background-color: #F9FAFC;
+    border: none;
+    margin: 4px;
+    padding: 1px 0 0 8px;
+}
+
+.memItemLeft, .memItemRight, .memTemplItemLeft, .memTemplItemRight, .memTemplParams {
+    background-color: #F9FAFC;
+    border: none;
+    margin: 4px;
+    padding: 1px 0 0 8px;
+    font-family: Consolas, Monaco, monospace;
+}
+
+.mdescLeft, .mdescRight {
+    padding: 0px 8px 4px 8px;
+    color: #555;
+}
+
+.memSeparator {
+    border-bottom: 1px solid #DEE4F0;
+    line-height: 1px;
+    margin: 0px;
+    padding: 0px;
+}
+
+.memItemLeft, .memTemplItemLeft {
+    white-space: nowrap;
+    font-family: Consolas, Monaco, monospace;
+}
+
+.memItemRight {
+    width: 100%;
+    font-family: Consolas, Monaco, monospace;
+}
+
+.memTemplParams {
+    color: #0000FF;
+    white-space: nowrap;
+    font-family: Consolas, Monaco, monospace;
+    font-size: 80%;
+}
+
+/* @end */
+
+/* @group Member Details */
+
+/* Styles for detailed member documentation */
+
+.memtemplate {
+    font-size: 80%;
+    font-family: Consolas, Monaco, monospace;
+    color: #0000FF;
+    font-weight: normal;
+    margin-left: 9px;
+}
+
+.memnav {
+    background-color: #EBEFF6;
+    border: 1px solid #A3B4D7;
+    text-align: center;
+    margin: 2px;
+    margin-right: 15px;
+    padding: 2px;
+}
+
+.mempage {
+    width: 100%
+}
+
+.memitem {
+    padding: 0;
+    margin-bottom: 20px;
+    margin-right: 5px;
+    display: table !important;
+    width: 100%;
+}
+
+.memname {
+    font-family: Consolas, Monaco, monospace;
+    font-weight: bold;
+    margin-left: 6px;
+}
+
+.memname td {
+    vertical-align: bottom
+}
+
+.memproto, dl.reflist dt {
+    border-top: 1px solid #A8B8D9;
+    border-left: 1px solid #A8B8D9;
+    border-right: 1px solid #A8B8D9;
+    padding: 6px 0px 6px 0px;
+    color: #000;
+    font-weight: bold;
+    text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+    background-color: #eee;
+    border-top-right-radius: 4px;
+    border-top-left-radius: 4px;
+    -moz-border-radius-topright: 4px;
+    -moz-border-radius-topleft: 4px;
+    -webkit-border-top-right-radius: 4px;
+    -webkit-border-top-left-radius: 4px;
+}
+
+.memdoc, dl.reflist dd {
+    border: 1px solid #A8B8D9;
+    padding: 6px 10px 2px 10px;
+    background-color: #FBFCFD;
+    background-color: #FFFFFF;
+    border-bottom-left-radius: 4px;
+    border-bottom-right-radius: 4px;
+    -moz-border-radius-bottomleft: 4px;
+    -moz-border-radius-bottomright: 4px;
+    -webkit-border-bottom-left-radius: 4px;
+    -webkit-border-bottom-right-radius: 4px;
+}
+
+dl.reflist dt {
+    padding: 5px
+}
+
+dl.reflist dd {
+    margin: 0px 0px 10px 0px;
+    padding: 5px;
+}
+
+.paramkey {
+    text-align: right
+}
+
+.paramtype {
+    white-space: nowrap
+}
+
+.paramname {
+    color: #602020;
+    white-space: nowrap;
+    font-family: Consolas, Monaco, monospace;
+    font-weight: bold;
+    padding-right: 20px;
+}
+
+.paramname em {
+    font-style: normal
+}
+
+.paramname code {
+    line-height: 14px
+}
+
+.params, .retval, .exception, .tparams {
+    margin-left: 0px;
+    padding-left: 0px;
+}
+
+.params .paramname, .retval .paramname {
+    font-family: Consolas, Monaco, monospace;
+    font-weight: bold;
+    /*padding-right: 20px;*/
+    vertical-align: top;
+}
+
+table.tparams td.paramname, table.params {
+  padding-right: 20px;
+}
+
+.params .paramtype {
+    font-style: italic;
+    vertical-align: top;
+}
+
+.params .paramdir {
+    font-family: 'Consolas', monospace;
+    vertical-align: top;
+}
+
+table.mlabels {
+    border-spacing: 0px
+}
+
+td.mlabels-left {
+    width: 100%;
+    padding: 0px;
+}
+
+td.mlabels-right {
+    vertical-align: bottom;
+    padding: 0px;
+    white-space: nowrap;
+}
+
+span.mlabels {
+    margin-left: 8px
+}
+
+span.mlabel {
+    background-color: #728DC1;
+    border-top: 1px solid #5373B4;
+    border-left: 1px solid #5373B4;
+    border-right: 1px solid #C4CFE5;
+    border-bottom: 1px solid #C4CFE5;
+    text-shadow: none;
+    color: white;
+    margin-right: 4px;
+    padding: 2px 3px;
+    border-radius: 3px;
+    font-size: 7pt;
+    white-space: nowrap;
+    vertical-align: middle;
+}
+
+/* @end */
+
+/* these are for tree view when not used as main index */
+
+div.directory {
+    margin: 10px 0px;
+    border-top: 1px solid #A8B8D9;
+    width: 100%;
+}
+
+.directory table {
+    border-collapse: collapse
+}
+
+.directory td {
+    margin: 0px;
+    padding: 0px;
+    vertical-align: top;
+}
+
+.directory td.entry {
+    white-space: nowrap;
+    padding: 5px 5px 5px 0px;
+}
+
+.directory td.entry a {
+    outline: none
+}
+
+.directory td.entry a img {
+    border: none
+}
+
+.directory td.desc {
+    width: 100%;
+    padding-left: 12px;
+    padding-right: 6px;
+    padding-top: 4px;
+}
+
+.directory tr.even {
+    padding-left: 6px;
+    background-color: #F7F8FB;
+}
+
+.directory img {
+    vertical-align: -30%
+}
+
+.directory .levels {
+    white-space: nowrap;
+    width: 100%;
+    text-align: right;
+    font-size: 9pt;
+}
+
+.directory .levels span {
+    cursor: pointer;
+    padding-left: 2px;
+    padding-right: 2px;
+    color: #3D578C;
+}
+
+div.dynheader {
+    margin-top: 8px;
+    -webkit-touch-callout: none;
+    -webkit-user-select: none;
+    -khtml-user-select: none;
+    -moz-user-select: none;
+    -ms-user-select: none;
+    user-select: none;
+}
+
+address {
+    font-style: normal;
+    color: #2A3D61;
+}
+
+table.doxtable {
+    border-collapse: collapse;
+    margin-top: 4px;
+    margin-bottom: 4px;
+}
+
+table.doxtable td, table.doxtable th {
+    border: 1px solid #2D4068;
+    padding: 3px 7px 2px;
+}
+
+table.doxtable th {
+    background-color: #374F7F;
+    color: #FFFFFF;
+    font-size: 110%;
+    padding-bottom: 4px;
+    padding-top: 5px;
+}
+
+table.fieldtable {
+    /*width: 100%;*/
+    margin-bottom: 10px;
+    border: 1px solid #A8B8D9;
+    border-spacing: 0px;
+    -moz-border-radius: 4px;
+    -webkit-border-radius: 4px;
+    border-radius: 4px;
+    -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
+    -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
+    box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
+}
+
+.fieldtable td, .fieldtable th {
+    padding: 3px 7px 2px
+}
+
+.fieldtable td.fieldtype, .fieldtable td.fieldname {
+    white-space: nowrap;
+    border-right: 1px solid #A8B8D9;
+    border-bottom: 1px solid #A8B8D9;
+    vertical-align: top;
+}
+
+.fieldtable td.fieldname {
+    padding-top: 5px
+}
+
+.fieldtable td.fielddoc {
+    border-bottom: 1px solid #A8B8D9;
+    /*width: 100%;*/
+}
+
+.fieldtable td.fielddoc p:first-child {
+    margin-top: 2px
+}
+
+.fieldtable td.fielddoc p:last-child {
+    margin-bottom: 2px
+}
+
+.fieldtable tr:last-child td {
+    border-bottom: none
+}
+
+.fieldtable th {
+    background-image: url('nav_f.png');
+    background-repeat: repeat-x;
+    background-color: #E2E8F2;
+    font-size: 90%;
+    color: #253555;
+    padding-bottom: 4px;
+    padding-top: 5px;
+    text-align: left;
+    -moz-border-radius-topleft: 4px;
+    -moz-border-radius-topright: 4px;
+    -webkit-border-top-left-radius: 4px;
+    -webkit-border-top-right-radius: 4px;
+    border-top-left-radius: 4px;
+    border-top-right-radius: 4px;
+    border-bottom: 1px solid #A8B8D9;
+}
+
+.tabsearch {
+    top: 0px;
+    left: 10px;
+    height: 36px;
+    /*background-image: url('tab_b.png');*/
+    z-index: 101;
+    overflow: hidden;
+    font-size: 13px;
+}
+
+.navpath ul {
+    font-size: 11px;
+    /*background-image: url('tab_b.png');*/
+    background-repeat: repeat-x;
+    background-position: 0 -5px;
+    height: 30px;
+    line-height: 30px;
+    color: #8AA0CC;
+    border: solid 1px #C2CDE4;
+    overflow: hidden;
+    margin: 0px;
+    padding: 0px;
+}
+
+.navpath li {
+    list-style-type: none;
+    float: left;
+    padding-left: 10px;
+    padding-right: 15px;
+    background-image: url('bc_s.png');
+    background-repeat: no-repeat;
+    background-position: right;
+    color: #364D7C;
+}
+
+.navpath li.navelem a {
+    height: 32px;
+    display: block;
+    text-decoration: none;
+    outline: none;
+    color: #283A5D;
+    font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
+    text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+    text-decoration: none;
+}
+
+.navpath li.navelem a:hover {
+    color: #6884BD
+}
+
+.navpath li.footer {
+    list-style-type: none;
+    float: right;
+    padding-left: 10px;
+    padding-right: 15px;
+    background-image: none;
+    background-repeat: no-repeat;
+    background-position: right;
+    color: #364D7C;
+    font-size: 8pt;
+}
+
+div.summary {
+    float: right;
+    font-size: 8pt;
+    padding-right: 5px;
+    width: 50%;
+    text-align: right;
+}
+
+div.summary a {
+    white-space: nowrap
+}
+
+div.ingroups {
+    font-size: 8pt;
+    width: 50%;
+    text-align: left;
+}
+
+div.ingroups a {
+    white-space: nowrap
+}
+
+div.header {
+    margin: 2em auto;
+    width: 950px;
+    border-bottom: 1px solid #999;
+}
+
+div.headertitle {
+    padding: 5px 5px 5px 0px
+}
+
+dl {
+    padding: 0 0 0 10px
+}
+
+/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */
+
+dl.section {
+    margin-left: 0px;
+    padding-left: 0px;
+}
+
+dl.note {
+    margin-left: -7px;
+    padding-left: 3px;
+    border-left: 4px solid;
+    border-color: #D0C000;
+}
+
+dl.warning, dl.attention {
+    margin-left: -7px;
+    padding-left: 3px;
+    border-left: 4px solid;
+    border-color: #FF0000;
+}
+
+dl.pre, dl.post, dl.invariant {
+    margin-left: -7px;
+    padding-left: 3px;
+    border-left: 4px solid;
+    border-color: #00D000;
+}
+
+dl.deprecated {
+    margin-left: -7px;
+    padding-left: 3px;
+    border-left: 4px solid;
+    border-color: #505050;
+}
+
+dl.todo {
+    margin-left: -7px;
+    padding-left: 3px;
+    border-left: 4px solid;
+    border-color: #00C0E0;
+}
+
+dl.test {
+    margin-left: -7px;
+    padding-left: 3px;
+    border-left: 4px solid;
+    border-color: #3030E0;
+}
+
+dl.bug {
+    margin-left: -7px;
+    padding-left: 3px;
+    border-left: 4px solid;
+    border-color: #C08050;
+}
+
+dl.section dd {
+    margin-bottom: 6px
+}
+
+#projectlogo {
+    text-align: center;
+    vertical-align: bottom;
+    border-collapse: separate;
+}
+
+#projectlogo img {
+    border: 0px none
+}
+
+#projectname {
+    font: 300% Tahoma, Arial,sans-serif;
+    margin: 0px;
+    padding: 2px 0px;
+}
+
+#projectbrief {
+    font: 120% Tahoma, Arial,sans-serif;
+    margin: 0px;
+    padding: 0px;
+}
+
+#projectnumber {
+    font: 50% Tahoma, Arial,sans-serif;
+    margin: 0px;
+    padding: 0px;
+}
+
+#titlearea {
+    padding: 2px;
+    margin: 0px;
+    width: 100%;
+    border-bottom: 1px solid #5373B4;
+}
+
+.image {
+    text-align: center
+}
+
+.dotgraph {
+    text-align: center
+}
+
+.mscgraph {
+    text-align: center
+}
+
+.caption {
+    font-weight: bold
+}
+
+div.zoom {
+    border: 1px solid #90A5CE
+}
+
+dl.citelist {
+    margin-bottom: 50px
+}
+
+dl.citelist dt {
+    color: #334975;
+    float: left;
+    font-weight: bold;
+    margin-right: 10px;
+    padding: 5px;
+}
+
+dl.citelist dd {
+    margin: 2px 0;
+    padding: 5px 0;
+}
+
+div.toc {
+    padding: 14px 25px;
+    background-color: #F4F6FA;
+    border: 1px solid #D8DFEE;
+    border-radius: 7px 7px 7px 7px;
+    float: right;
+    height: auto;
+    margin: 0 20px 10px 10px;
+    width: 200px;
+}
+
+div.toc li {
+    background: url("bdwn.png") no-repeat scroll 0 5px transparent;
+    font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif;
+    margin-top: 5px;
+    padding-left: 10px;
+    padding-top: 2px;
+}
+
+div.toc h3 {
+    font: bold 12px/1.2 Arial,FreeSans,sans-serif;
+    color: #4665A2;
+    border-bottom: 0 none;
+    margin: 0;
+}
+
+div.toc ul {
+    list-style: none outside none;
+    border: medium none;
+    padding: 0px;
+}
+
+div.toc li.level1 {
+    margin-left: 0px
+}
+
+div.toc li.level2 {
+    margin-left: 15px
+}
+
+div.toc li.level3 {
+    margin-left: 30px
+}
+
+div.toc li.level4 {
+    margin-left: 45px
+}
+
+.inherit_header {
+    font-weight: bold;
+    color: gray;
+    cursor: pointer;
+    -webkit-touch-callout: none;
+    -webkit-user-select: none;
+    -khtml-user-select: none;
+    -moz-user-select: none;
+    -ms-user-select: none;
+    user-select: none;
+}
+
+.inherit_header td {
+    padding: 6px 0px 2px 5px
+}
+
+.inherit {
+    display: none
+}
+
+tr.heading h2 {
+    margin-top: 12px;
+    margin-bottom: 4px;
+}
+
+@media print {
+    #top {
+        display: none
+    }
+
+    #side-nav {
+        display: none
+    }
+
+    #nav-path {
+        display: none
+    }
+
+    body {
+        overflow: visible
+    }
+
+    h1, h2, h3, h4, h5, h6 {
+        page-break-after: avoid
+    }
+
+    .summary {
+        display: none
+    }
+
+    .memitem {
+        page-break-inside: avoid
+    }
+
+    #doc-content {
+        margin-left: 0 !important;
+        height: auto !important;
+        width: auto !important;
+        overflow: inherit;
+        display: inline;
+    }
+}
+
+/* tabs.css */
+
+.tabs {
+    width: 100%;
+    z-index: 101;
+    font-size: 12px;
+    font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
+    border-bottom: solid 1px #5373B4;
+    background-color: #dbeaf5;
+}
+
+.tabs2, .tabs3 {
+    display: none;
+}
+
+.tablist {
+    margin: 0;
+    padding: 0;
+    display: table;
+}
+
+.tablist li {
+    float: left;
+    display: table-cell;
+    line-height: 36px;
+    list-style: none;
+}
+
+.tablist a {
+    display: block;
+    padding: 0 20px;
+    background-repeat: no-repeat;
+    background-position: right;
+    color: #3b8dc8;
+    text-decoration: none;
+    outline: none;
+}
+
+.tabs3 .tablist a {
+    padding: 0 10px
+}
+
+.tablist a:hover {
+    text-decoration: underline
+}
+
+.tablist li.current a {
+    font-weight: bold
+}
+
+/* navtree.css */
+
+#nav-tree .children_ul {
+  margin:0;
+  padding:4px;
+}
+
+#nav-tree ul {
+  list-style:none outside none;
+  margin:0px;
+  padding:0px;
+}
+
+#nav-tree li {
+  white-space:nowrap;
+  margin:0px;
+  padding:0px;
+}
+
+#nav-tree .plus {
+  margin:0px;
+}
+
+#nav-tree .selected {
+  background-image: url('tab_a.png');
+  background-repeat:repeat-x;
+  color: #fff;
+  text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
+}
+
+#nav-tree img {
+  margin:0px;
+  padding:0px;
+  border:0px;
+  vertical-align: middle;
+}
+
+#nav-tree a {
+  text-decoration:none;
+  padding:0px;
+  margin:0px;
+  outline:none;
+}
+
+#nav-tree .label {
+  margin:0px;
+  padding:0px;
+  font: 12px 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
+}
+
+#nav-tree .label a {
+  padding:2px;
+}
+
+#nav-tree .selected a {
+  text-decoration:none;
+  color:#fff;
+}
+
+#nav-tree .children_ul {
+  margin:0px;
+  padding:0px;
+}
+
+#nav-tree .item {
+  margin:0px;
+  padding:0px;
+}
+
+#nav-tree {
+  padding: 0px 0px;
+  background-color: #FAFAFF;
+  font-size:14px;
+  overflow:auto;
+}
+
+#doc-content {
+  overflow:auto;
+  display:block;
+  padding:0px;
+  margin:0px;
+  -webkit-overflow-scrolling : touch; /* iOS 5+ */
+}
+
+#side-nav {
+  padding:0 6px 0 0;
+  margin: 0px;
+  display:block;
+  position: absolute;
+  left: 0px;
+  width: 250px;
+}
+
+.ui-resizable .ui-resizable-handle {
+  display:block;
+}
+
+.ui-resizable-e {
+  background:url("ftv2splitbar.png") repeat scroll right center transparent;
+  cursor:e-resize;
+  height:100%;
+  right:0;
+  top:0;
+  width:6px;
+}
+
+.ui-resizable-handle {
+  display:none;
+  font-size:0.1px;
+  position:absolute;
+  z-index:1;
+}
+
+#nav-tree-contents {
+  margin: 6px 0px 0px 0px;
+}
+
+#nav-tree {
+  background-image:url('nav_h.png');
+  background-repeat:repeat-x;
+  background-color: #F9FAFC;
+  -webkit-overflow-scrolling : touch; /* iOS 5+ */
+}
+
+#nav-sync {
+  display: none;
+}
+
+@media print
+{
+  #nav-tree { display: none; }
+  div.ui-resizable-handle { display: none; position: relative; }
+}
+
diff --git a/docs/footer.html b/docs/footer.html
index 54f6e28..e994ead 100644
--- a/docs/footer.html
+++ b/docs/footer.html
@@ -1,11 +1,11 @@
-<!-- HTML footer for doxygen 1.8.3.1-->
-<!-- start footer part -->
-<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
-  <ul>
-    <li class="footer">
-        Copyright © Danny Y. Documentation generated by <a href="http://www.doxygen.org/index.html">Doxygen</a>
-    </li>
-  </ul>
-</div>
-</body>
-</html>
+<!-- HTML footer for doxygen 1.8.3.1-->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">
+        Copyright © Danny Y. Documentation generated by <a href="http://www.doxygen.org/index.html">Doxygen</a>
+    </li>
+  </ul>
+</div>
+</body>
+</html>
diff --git a/docs/gears.png b/docs/gears.png
index a3887f8..3da7f65 100644
Binary files a/docs/gears.png and b/docs/gears.png differ
diff --git a/docs/header.html b/docs/header.html
index efebb36..5ef9a10 100644
--- a/docs/header.html
+++ b/docs/header.html
@@ -1,27 +1,27 @@
-<!-- HTML header for doxygen 1.8.3.1-->
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen $doxygenversion"/>
-<title>$projectname: $title</title>
-<title>$title</title>
-<script type="text/javascript" src="$relpath^jquery.js"></script>
-<script type="text/javascript" src="$relpath^dynsections.js"></script>
-$treeview
-$search
-<link href="$relpath^$stylesheet" rel="stylesheet" type="text/css" />
-$extrastylesheet
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><a href="index.html"><img alt="Logo" src="$relpath^$projectlogo"/></a></td>
- </tr>
- </tbody>
-</table>
+<!-- HTML header for doxygen 1.8.3.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen $doxygenversion"/>
+<title>$projectname: $title</title>
+<title>$title</title>
+<script type="text/javascript" src="$relpath^jquery.js"></script>
+<script type="text/javascript" src="$relpath^dynsections.js"></script>
+$treeview
+$search
+<link href="$relpath^$stylesheet" rel="stylesheet" type="text/css" />
+$extrastylesheet
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectlogo"><a href="index.html"><img alt="Logo" src="$relpath^$projectlogo"/></a></td>
+ </tr>
+ </tbody>
+</table>
 </div>
\ No newline at end of file
diff --git a/docs/mainpage.hpp b/docs/mainpage.hpp
index c5d57fb..20053b1 100644
--- a/docs/mainpage.hpp
+++ b/docs/mainpage.hpp
@@ -1,18 +1,18 @@
-///
-/// \mainpage
-///
-/// \section welcome Welcome
-/// Welcome to the official documentation for Gears. You can find all the documentation for
-/// classes and functions in the <a href="./annotated.html">annotated view</a>.
-///
-/// \section whatisgears What is Gears?
-/// Gears is a collection of utilities (henceforth now called "modules") that are helpful to C++11 programmers.
-/// These include a large collection of modules ranging from the string module to the functional module.
-///
-/// \section compilersupport Compiler Support
-/// Since Gears makes heavy use of C++11 features, only the compilers with the most support for C++11 are supported. At the
-/// time of this writing, this only includes GCC 4.8.1 or higher and Clang 3.4 or higher. Visual Studio 2012 or lower are
-/// not supported at all, and you might get lucky with some modules on Visual Studio 2013 although not explicitly supported.
-///
-/// <br />
+///
+/// \mainpage
+///
+/// \section welcome Welcome
+/// Welcome to the official documentation for Gears. You can find all the documentation for
+/// classes and functions in the <a href="./annotated.html">annotated view</a>.
+///
+/// \section whatisgears What is Gears?
+/// Gears is a collection of utilities (henceforth now called "modules") that are helpful to C++11 programmers.
+/// These include a large collection of modules ranging from the string module to the functional module.
+///
+/// \section compilersupport Compiler Support
+/// Since Gears makes heavy use of C++11 features, only the compilers with the most support for C++11 are supported. At the
+/// time of this writing, this only includes GCC 4.8.1 or higher and Clang 3.4 or higher. Visual Studio 2012 or lower are
+/// not supported at all, and you might get lucky with some modules on Visual Studio 2013 although not explicitly supported.
+///
+/// <br />
 ///
\ No newline at end of file
Document the operator overloads of uintx.
Change DOXYGEN macro to GEARS_FOR_DOXYGEN_ONLY
Move min, max, and abs from meta module to math module.

Also documented the rest of the functions which as a result has made
it so gears is actually fully documented, at expense of uglifying the
code with macros to circumvent Doxygen's strangeness.
Add missing include
Add example for gears::io::lines