summaryrefslogtreecommitdiff
path: root/doc/design
diff options
context:
space:
mode:
Diffstat (limited to 'doc/design')
-rw-r--r--doc/design/MANIFEST25
-rw-r--r--doc/design/SConstruct49
-rw-r--r--doc/design/acks.xml193
-rw-r--r--doc/design/bground.xml100
-rw-r--r--doc/design/chtml.xsl57
-rw-r--r--doc/design/copyright.xml51
-rw-r--r--doc/design/engine.fig179
-rw-r--r--doc/design/engine.jpgbin0 -> 41228 bytes
-rw-r--r--doc/design/engine.svg529
-rw-r--r--doc/design/engine.xml1978
-rw-r--r--doc/design/goals.xml230
-rw-r--r--doc/design/html.xsl56
-rw-r--r--doc/design/install.xml46
-rw-r--r--doc/design/intro.xml125
-rw-r--r--doc/design/issues.xml209
-rw-r--r--doc/design/main.xml88
-rw-r--r--doc/design/native.xml378
-rw-r--r--doc/design/overview.xml508
-rw-r--r--doc/design/pdf.xsl72
-rw-r--r--doc/design/scons.css263
-rw-r--r--doc/design/scons_title.xsl6352
-rw-r--r--doc/design/summary.xml53
-rw-r--r--doc/design/titlepage/SConsBuildBricks_path.svg320
-rw-r--r--doc/design/titlepage/SCons_path.svg196
-rwxr-xr-xdoc/design/titlepage/bricks.jpgbin0 -> 36855 bytes
-rw-r--r--doc/design/titlepage/mapnik_final_colors.svg6397
26 files changed, 18454 insertions, 0 deletions
diff --git a/doc/design/MANIFEST b/doc/design/MANIFEST
new file mode 100644
index 0000000..0168e11
--- /dev/null
+++ b/doc/design/MANIFEST
@@ -0,0 +1,25 @@
+# We don't use a wildcard for the XML files
+# here, because it would pull in the created
+# ones as well...
+acks.xml
+bground.xml
+copyright.xml
+engine.xml
+goals.xml
+install.xml
+intro.xml
+issues.xml
+main.xml
+native.xml
+overview.xml
+summary.xml
+engine.fig
+engine.jpg
+engine.svg
+*.xsl
+scons.css
+SConstruct
+titlepage/bricks.jpg
+titlepage/mapnik_final_colors.svg
+titlepage/SCons_path.svg
+titlepage/SConsBuildBricks_path.svg
diff --git a/doc/design/SConstruct b/doc/design/SConstruct
new file mode 100644
index 0000000..5cee70e
--- /dev/null
+++ b/doc/design/SConstruct
@@ -0,0 +1,49 @@
+#
+# SConstruct file for building SCons documentation.
+#
+
+#
+# Copyright (c) 2001 - 2014 The SCons Foundation
+#
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sublicense, and/or sell copies of the Software, and to
+# permit persons to whom the Software is furnished to do so, subject to
+# the following conditions:
+#
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+import os
+
+env = Environment(ENV={'PATH' : os.environ['PATH']},
+ tools=['docbook'],
+ toolpath=['../../src/engine/SCons/Tool'],
+ DOCBOOK_DEFAULT_XSL_HTML='html.xsl',
+ DOCBOOK_DEFAULT_XSL_HTMLCHUNKED='chtml.xsl',
+ DOCBOOK_DEFAULT_XSL_PDF='pdf.xsl')
+
+has_pdf = False
+if (env.WhereIs('fop') or
+ env.WhereIs('xep')):
+ has_pdf = True
+
+#
+# Create document
+#
+env.DocbookXInclude('design_xi.xml', 'main.xml')
+env.DocbookXslt('design.xml', 'design_xi.xml',
+ xsl='../xslt/to_docbook.xslt')
+env.DocbookHtmlChunked('index.html','design.xml', base_dir='scons-design/')
+if has_pdf:
+ env.DocbookPdf('scons-design.pdf','design.xml')
diff --git a/doc/design/acks.xml b/doc/design/acks.xml
new file mode 100644
index 0000000..76aa968
--- /dev/null
+++ b/doc/design/acks.xml
@@ -0,0 +1,193 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<chapter id="chap-acks"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
+<title>Acknowledgements</title>
+
+<!--
+
+ Copyright (c) 2001 - 2014 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-->
+
+ <para>
+
+ I'm grateful to the following people
+ for their influence, knowing or not,
+ on the design of &SCons;:
+
+ </para>
+
+ <variablelist>
+ <varlistentry>
+ <term>Bob Sidebotham</term>
+ <listitem>
+ <para>
+
+ First, as the original author of &Cons;, Bob did the real heavy
+ lifting of creating the underlying model for dependency management
+ and software construction, as well as implementing it in Perl.
+ During the first years of &Cons;' existence, Bob did a skillful
+ job of integrating input and code from the first users, and
+ consequently is a source of practical wisdom and insight into the
+ problems of real-world software construction. His continuing
+ advice has been invaluable.
+
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>The &SCons; Development Team</term>
+ <listitem>
+ <para>
+
+ A big round of thanks go to those brave souls who have
+ gotten in on the ground floor:
+ David Abrahams,
+ Charles Crain,
+ Steven Leblanc.
+ Anthony Roach,
+ and
+ Steven Shaw.
+ Their contributions,
+ through their general knowledge of software build issues in general
+ Python in particular,
+ have made &SCons; what it is today.
+
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>The &Cons; Community</term>
+ <listitem>
+ <para>
+
+ The real-world build problems that the users of &Cons;
+ share on the <command>cons-discuss</command> mailing list
+ have informed much of the thinking that
+ has gone into the &SCons; design.
+ In particular,
+ Rajesh Vaidheeswarran,
+ the current maintainer of &Cons;,
+ has been a very steady influence.
+ I've also picked up valuable insight from
+ mailing-list participants
+ Johan Holmberg,
+ Damien Neil,
+ Gary Oberbrunner,
+ Wayne Scott,
+ and Greg Spencer.
+
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>Peter Miller</term>
+ <listitem>
+
+ <para>
+
+ Peter has indirectly
+ influenced two aspects of the &SCons; design:
+
+ </para>
+
+ <para>
+
+ Miller's influential paper
+ <citetitle>Recursive Make Considered Harmful</citetitle>
+ was what led me, indirectly, to my involvement with &Cons;
+ in the first place.
+ Experimenting with the single-Makefile approach he describes in
+ <citetitle>RMCH</citetitle> led me to conclude that while it worked
+ as advertised, it was not an extensible scheme. This solidified
+ my frustration with Make and led me to try &Cons;, which at its
+ core shares the single-process, universal-DAG model of the "RMCH"
+ single-Makefile technique.
+
+ </para>
+
+ <para>
+
+ The testing framework that Miller created for his
+ Aegis change management system
+ changed the way I approach software development
+ by providing a framework for rigorous, repeatable
+ testing during development.
+ It was my success at using Aegis for personal projects
+ that led me to begin my involvement with &Cons;
+ by creating the <command>cons-test</command> regression suite.
+
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>Stuart Stanley</term>
+ <listitem>
+ <para>
+
+ An experienced Python programmer,
+ Stuart provided valuable advice and insight
+ into some of the more useful Python idioms at my disposal
+ during the original <literal>ScCons</literal>; design
+ for the Software Carpentry contest.
+
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>Gary Holt</term>
+ <listitem>
+ <para>
+
+ I don't know which came first,
+ the first-round Software Carpentry contest entry
+ or the tool itself,
+ but Gary's design for &Makepp;
+ showed me that it is possible to marry
+ the strengths of &Cons;-like dependency management
+ with backwards compatibility for &Makefile;s.
+ Striving to support both
+ &Makefile; compatibility and
+ a native Python interface
+ cleaned up the &SCons; design immeasurably
+ by factoring out the common elements
+ into the Build Engine.
+
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+
+</chapter>
diff --git a/doc/design/bground.xml b/doc/design/bground.xml
new file mode 100644
index 0000000..b711a37
--- /dev/null
+++ b/doc/design/bground.xml
@@ -0,0 +1,100 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<chapter id="chap-background"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
+<title>Background</title>
+
+<!--
+
+ Copyright (c) 2001 - 2014 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-->
+
+ <para>
+
+ Most of the ideas in &SCons; originate with &Cons;, a Perl-based
+ software construction utility that has been in use by a small but
+ growing community since its development by Bob Sidebotham at FORE
+ Systems in 1996. The &Cons; copyright was transferred in 2000 from
+ Marconi (who purchased FORE Systems) to the Free Software Foundation.
+ I've been a principal implementer and maintainer of &Cons; for several
+ years.
+
+ </para>
+
+ <para>
+
+ &Cons; was originally designed to handle complicated software build
+ problems (multiple directories, variant builds) while keeping the
+ input files simple and maintainable. The general philosophy is that
+ the build tool should ``do the right thing'' with minimal input
+ from an unsophisticated user, while still providing a rich set of
+ underlying functionality for more complicated software construction
+ tasks needed by experts.
+
+ </para>
+
+ <para>
+
+ In 2000, the Software Carpentry sought entries in a contest for a
+ new, Python-based build tool that would provide an improvement
+ over Make for physical scientists and other non-programmers
+ struggling to use their computers more effectively. Prior to that,
+ the idea of combining the superior build architecture of &Cons;
+ with the easier syntax of Python had come up several times on
+ the <literal>cons-discuss</literal> mailing list. The Software
+ Carpentry contest provided the right motivation to spend some
+ actual time working on a design document.
+
+ </para>
+
+ <para>
+
+ After two rounds of competition, the submitted design, named
+ <application>ScCons</application>, won the competition. Software
+ Carpentry, however, did not immediately fund implementation of the
+ build tool, instead contracting for additional, more detailed draft(s)
+ of the design document. This proved to be not as strong motivation as
+ actual coding, and after several months of inactivity, I essentially
+ resigned from the Software Carpentry effort in early 2001 to start
+ working on the tool independently.
+
+ </para>
+
+ <para>
+
+ After half a year of prototyping some of the important infrastructure,
+ I accumulated enough code to take the project public at SourceForge,
+ renaming it &SCons; to distinguish it slightly from the version of the
+ design that won the Software Carpentry contest while still honoring
+ its roots there and in the original &Cons; utility. And also because
+ it would be a teensy bit easier to type.
+
+ </para>
+
+</chapter>
diff --git a/doc/design/chtml.xsl b/doc/design/chtml.xsl
new file mode 100644
index 0000000..44b2551
--- /dev/null
+++ b/doc/design/chtml.xsl
@@ -0,0 +1,57 @@
+<?xml version='1.0'?>
+<!--
+
+ Copyright (c) 2001 - 2014 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-->
+<xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ version="1.0">
+
+ <xsl:import href="../../src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunk.xsl"/>
+
+<xsl:param name="base.dir" select="'scons-design/'"/>
+<xsl:param name="l10n.gentext.default.language" select="'en'"/>
+<xsl:param name="section.autolabel" select="1"/>
+<xsl:param name="section.label.includes.component.label" select="1"/>
+<xsl:param name="html.stylesheet" select="'scons.css'"/>
+<xsl:param name="generate.toc">
+/appendix toc,title
+article/appendix nop
+/article toc,title
+book toc,title,figure,table,example,equation
+/chapter toc,title
+part toc,title
+/preface toc,title
+reference toc,title
+/sect1 toc
+/sect2 toc
+/sect3 toc
+/sect4 toc
+/sect5 toc
+/section toc
+set toc,title
+</xsl:param>
+
+</xsl:stylesheet>
+
diff --git a/doc/design/copyright.xml b/doc/design/copyright.xml
new file mode 100644
index 0000000..d91f7a7
--- /dev/null
+++ b/doc/design/copyright.xml
@@ -0,0 +1,51 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<legalnotice xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
+
+<!--
+
+ Copyright (c) 2001 - 2014 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-->
+
+<blockquote>
+ <para>
+
+ Copyright (c) 2001 Steven Knight
+
+ Portions of this document, by the same author, were previously
+ published Copyright 2000 by CodeSourcery LLC, under the Software Carpentry
+ Open Publication License, the terms of which are available at
+ <ulink url="http://www.software-carpentry.com/openpub-license.html">
+ http://www.software-carpentry.com/openpub-license.html
+ </ulink>.
+
+ </para>
+</blockquote>
+
+</legalnotice>
diff --git a/doc/design/engine.fig b/doc/design/engine.fig
new file mode 100644
index 0000000..90f3d4f
--- /dev/null
+++ b/doc/design/engine.fig
@@ -0,0 +1,179 @@
+#FIG 3.2
+Landscape
+Center
+Inches
+Letter
+100.00
+Single
+-2
+1200 2
+6 2100 8700 3600 9300
+2 2 0 1 0 7 100 0 -1 4.000 0 0 -1 0 0 5
+ 2100 8700 3600 8700 3600 9300 2100 9300 2100 8700
+4 0 0 100 0 18 14 0.0000 4 165 900 2400 9075 Node.FS\001
+-6
+6 7050 6900 9000 7500
+2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5
+ 7050 6900 9000 6900 9000 7500 7050 7500 7050 6900
+4 0 0 100 0 18 14 0.0000 4 165 1530 7200 7275 Intercessor.FS\001
+-6
+6 9450 6900 11400 7500
+2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5
+ 9450 6900 11400 6900 11400 7500 9450 7500 9450 6900
+4 0 0 100 0 18 14 0.0000 4 165 1560 9600 7275 Intercessor.DB\001
+-6
+6 1200 4200 2400 4800
+2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5
+ 1200 4200 2400 4200 2400 4800 1200 4800 1200 4200
+4 0 0 100 0 18 14 0.0000 4 165 870 1350 4575 Scanner\001
+-6
+6 2400 3300 3600 3900
+2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5
+ 2400 3300 3600 3300 3600 3900 2400 3900 2400 3300
+4 0 0 100 0 18 14 0.0000 4 165 750 2625 3675 Builder\001
+-6
+6 8700 1650 10500 2250
+2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5
+ 8700 1650 10500 1650 10500 2250 8700 2250 8700 1650
+4 0 0 100 0 18 14 0.0000 4 165 1185 9000 2025 Intercessor\001
+-6
+6 1500 1650 3300 2250
+2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5
+ 1500 1650 3300 1650 3300 2250 1500 2250 1500 1650
+4 0 0 100 0 18 14 0.0000 4 165 1320 1725 2025 Environment\001
+-6
+6 7800 8700 9300 9300
+2 2 0 1 0 7 100 0 -1 4.000 0 0 -1 0 0 5
+ 7800 8700 9300 8700 9300 9300 7800 9300 7800 8700
+4 0 0 100 0 18 14 0.0000 4 165 930 8100 9075 Node.DB\001
+-6
+6 1500 10200 2400 10800
+2 2 0 1 0 7 100 0 -1 4.000 0 0 -1 0 0 5
+ 1500 10200 2400 10200 2400 10800 1500 10800 1500 10200
+4 0 0 100 0 18 14 0.0000 4 165 315 1800 10575 Dir\001
+-6
+6 3300 10200 4200 10800
+2 2 0 1 0 7 100 0 -1 4.000 0 0 -1 0 0 5
+ 3300 10200 4200 10200 4200 10800 3300 10800 3300 10200
+4 0 0 100 0 18 14 0.0000 4 165 375 3600 10575 File\001
+-6
+6 6000 10200 7200 10800
+2 2 0 1 0 7 100 0 -1 4.000 0 0 -1 0 0 5
+ 6000 10200 7200 10200 7200 10800 6000 10800 6000 10200
+4 0 0 100 0 18 14 0.0000 4 165 555 6300 10575 Table\001
+-6
+6 7800 10200 9300 10800
+2 2 0 1 0 7 100 0 -1 4.000 0 0 -1 0 0 5
+ 7800 10200 9300 10200 9300 10800 7800 10800 7800 10200
+4 0 0 100 0 18 14 0.0000 4 165 765 8100 10575 Record\001
+-6
+6 9900 10200 11100 10800
+2 2 0 1 0 7 100 0 -1 4.000 0 0 -1 0 0 5
+ 9900 10200 11100 10200 11100 10800 9900 10800 9900 10200
+4 0 0 100 0 18 14 0.0000 4 165 510 10200 10575 Field\001
+-6
+2 3 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5
+ 6900 5250 6825 5175 6900 5100 6975 5175 6900 5250
+2 3 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5
+ 6300 5250 6225 5175 6300 5100 6375 5175 6300 5250
+2 3 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5
+ 5700 5250 5625 5175 5700 5100 5775 5175 5700 5250
+2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5
+ 4800 2700 7200 2700 7200 5100 4800 5100 4800 2700
+2 3 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 4
+ 5100 5100 5025 5250 5175 5250 5100 5100
+2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 1 0 5
+ 0 0 1.00 60.00 120.00
+ 6300 5250 6300 5700 8400 5700 8400 4200 7200 4200
+2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 1 0 5
+ 0 0 1.00 60.00 120.00
+ 5700 5250 5700 6000 9000 6000 9000 3600 7200 3600
+2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2
+ 5100 5250 5100 8100
+2 3 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5
+ 4725 3675 4650 3600 4725 3525 4800 3600 4725 3675
+2 3 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5
+ 4725 4575 4650 4500 4725 4425 4800 4500 4725 4575
+2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 1 0 2
+ 0 0 1.00 60.00 120.00
+ 4650 3600 3600 3600
+2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 1 0 2
+ 0 0 1.00 60.00 120.00
+ 4650 4500 2400 4500
+2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 1 0 2
+ 0 0 1.00 60.00 120.00
+ 1800 2400 1800 4200
+2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 1 0 2
+ 0 0 1.00 60.00 120.00
+ 3000 2400 3000 3300
+2 1 1 1 0 7 100 0 -1 4.000 0 0 7 0 0 2
+ 5850 1950 5850 2700
+2 3 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5
+ 3000 2400 2925 2325 3000 2250 3075 2325 3000 2400
+2 3 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5
+ 1800 2400 1725 2325 1800 2250 1875 2325 1800 2400
+2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2
+ 3300 1950 8700 1950
+2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2
+ 9600 2400 9600 6600
+2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 4
+ 7950 6900 7950 6600 10350 6600 10350 6900
+2 3 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 4
+ 9600 2250 9525 2400 9675 2400 9600 2250
+2 1 0 1 0 7 100 0 -1 4.000 0 0 7 0 0 2
+ 4800 3000 7200 3000
+2 1 0 1 0 7 100 0 -1 4.000 0 0 -1 0 0 2
+ 4800 3300 7200 3300
+2 3 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 4
+ 2850 9300 2775 9450 2925 9450 2850 9300
+2 1 0 1 0 7 100 0 -1 4.000 0 0 -1 0 0 4
+ 2100 10200 2100 9900 3750 9900 3750 10200
+2 1 0 1 0 7 100 0 -1 4.000 0 0 -1 0 0 5
+ 6600 10200 6600 9900 10500 9900 10500 10200 10500 10125
+2 1 0 1 0 7 100 0 -1 4.000 0 0 -1 0 0 2
+ 2850 9450 2850 9900
+2 1 0 1 0 7 100 0 -1 4.000 0 0 -1 0 0 2
+ 8475 9450 8475 10200
+2 3 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 4
+ 8475 9300 8400 9450 8550 9450 8475 9300
+2 1 0 1 0 7 100 0 -1 4.000 0 0 -1 0 0 1
+ 2775 6825
+2 1 0 1 0 7 100 0 -1 4.000 0 0 -1 1 0 3
+ 0 0 1.00 60.00 120.00
+ 1800 10200 1800 9000 2100 9000
+2 1 0 1 0 7 100 0 -1 4.000 0 0 -1 1 0 2
+ 0 0 1.00 60.00 120.00
+ 9900 10500 9300 10500
+2 1 0 1 0 7 100 0 -1 4.000 0 0 -1 1 0 2
+ 0 0 1.00 60.00 120.00
+ 7800 10500 7200 10500
+2 1 0 1 0 7 100 0 -1 4.000 0 0 7 0 0 4
+ 2850 8700 2850 8100 8550 8100 8550 8700
+2 1 1 1 0 7 100 0 -1 4.000 0 0 -1 1 0 3
+ 0 0 1.00 60.00 120.00
+ 10350 7500 10350 9000 9300 9000
+2 1 1 1 0 7 100 0 -1 4.000 0 0 -1 1 0 3
+ 0 0 1.00 60.00 120.00
+ 7050 7200 2400 7200 2400 8700
+2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 1 0 5
+ 0 0 1.00 60.00 120.00
+ 6900 5250 6900 5400 7800 5400 7800 4800 7200 4800
+4 0 0 100 0 18 14 0.0000 4 165 555 4950 2925 Node\001
+4 0 0 100 0 16 10 0.0000 4 150 825 7350 3525 dependency\001
+4 0 0 100 0 16 10 0.0000 4 45 60 7425 3825 *\001
+4 0 0 100 0 16 10 0.0000 4 120 555 7350 4125 srcnode\001
+4 0 0 100 0 16 10 0.0000 4 120 90 7425 4425 1\001
+4 0 0 100 0 16 10 0.0000 4 150 570 7350 4725 repnode\001
+4 0 0 100 0 16 10 0.0000 4 120 90 7425 5025 1\001
+4 0 0 100 0 16 10 0.0000 4 120 270 2550 4725 0..1\001
+4 0 0 100 0 16 10 0.0000 4 120 270 3750 3825 0..1\001
+4 0 0 100 0 0 12 0.0000 4 75 90 1875 4050 *\001
+4 0 0 100 0 0 12 0.0000 4 75 90 3075 3150 *\001
+4 0 0 100 0 16 14 0.0000 4 210 600 5100 3750 build()\001
+4 0 0 100 0 16 14 0.0000 4 210 630 5100 4260 scan()\001
+4 0 0 100 0 0 12 0.0000 4 135 90 9750 10725 1\001
+4 0 0 100 0 16 10 0.0000 4 120 90 1650 10125 1\001
+4 0 0 100 0 16 10 0.0000 4 45 60 1875 9225 *\001
+4 0 0 100 0 16 10 0.0000 4 120 90 7650 10725 1\001
+4 0 0 100 0 16 10 0.0000 4 45 60 7275 10725 *\001
+4 0 0 100 0 16 10 0.0000 4 45 60 9375 10725 *\001
diff --git a/doc/design/engine.jpg b/doc/design/engine.jpg
new file mode 100644
index 0000000..2e82232
--- /dev/null
+++ b/doc/design/engine.jpg
Binary files differ
diff --git a/doc/design/engine.svg b/doc/design/engine.svg
new file mode 100644
index 0000000..2ed9bcc
--- /dev/null
+++ b/doc/design/engine.svg
@@ -0,0 +1,529 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ version="1.1"
+ width="8.5in"
+ height="7.5999999in"
+ viewBox="1188 1638 10224 9174"
+ id="svg3034">
+ <metadata
+ id="metadata3230">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <defs
+ id="defs3228" />
+ <g
+ id="g3036"
+ style="fill:none;stroke-width:0.025in">
+ <rect
+ width="1500"
+ height="600"
+ rx="0"
+ x="2100"
+ y="8700"
+ id="rect3038"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="1950"
+ height="600"
+ rx="0"
+ x="7050"
+ y="6900"
+ id="rect3040"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="1950"
+ height="600"
+ rx="0"
+ x="9450"
+ y="6900"
+ id="rect3042"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="1200"
+ height="600"
+ rx="0"
+ x="1200"
+ y="4200"
+ id="rect3044"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="1200"
+ height="600"
+ rx="0"
+ x="2400"
+ y="3300"
+ id="rect3046"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="1800"
+ height="600"
+ rx="0"
+ x="8700"
+ y="1650"
+ id="rect3048"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="1800"
+ height="600"
+ rx="0"
+ x="1500"
+ y="1650"
+ id="rect3050"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="1500"
+ height="600"
+ rx="0"
+ x="7800"
+ y="8700"
+ id="rect3052"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="900"
+ height="600"
+ rx="0"
+ x="1500"
+ y="10200"
+ id="rect3054"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="900"
+ height="600"
+ rx="0"
+ x="3300"
+ y="10200"
+ id="rect3056"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="1200"
+ height="600"
+ rx="0"
+ x="6000"
+ y="10200"
+ id="rect3058"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="1500"
+ height="600"
+ rx="0"
+ x="7800"
+ y="10200"
+ id="rect3060"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="1200"
+ height="600"
+ rx="0"
+ x="9900"
+ y="10200"
+ id="rect3062"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polygon
+ points="6825,5175 6900,5100 6975,5175 6900,5250 6900,5250 "
+ id="polygon3064"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polygon
+ points="6225,5175 6300,5100 6375,5175 6300,5250 6300,5250 "
+ id="polygon3066"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polygon
+ points="5625,5175 5700,5100 5775,5175 5700,5250 5700,5250 "
+ id="polygon3068"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <rect
+ width="2400"
+ height="2400"
+ rx="0"
+ x="4800"
+ y="2700"
+ id="rect3070"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polygon
+ points="5025,5250 5175,5250 5100,5100 5100,5100 "
+ id="polygon3072"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polyline
+ points="6300,5250 6300,5700 8400,5700 8400,4200 7216,4200 "
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ id="polyline3074" />
+ <polyline
+ points="7322 4170 7202 4200 7322 4230 "
+ style="stroke:#000000;stroke-width:7;stroke-miterlimit:8"
+ id="polyline3076" />
+ <polyline
+ points="5700,5250 5700,6000 9000,6000 9000,3600 7216,3600 "
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ id="polyline3078" />
+ <polyline
+ points="7322 3570 7202 3600 7322 3630 "
+ style="stroke:#000000;stroke-width:7;stroke-miterlimit:8"
+ id="polyline3080" />
+ <polyline
+ points="5100,5250 5100,8100 "
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ id="polyline3082" />
+ <polygon
+ points="4650,3600 4725,3525 4800,3600 4725,3675 4725,3675 "
+ id="polygon3084"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polygon
+ points="4650,4500 4725,4425 4800,4500 4725,4575 4725,4575 "
+ id="polygon3086"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polyline
+ points="4650,3600 3616,3600 "
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ id="polyline3088" />
+ <polyline
+ points="3722 3570 3602 3600 3722 3630 "
+ style="stroke:#000000;stroke-width:7;stroke-miterlimit:8"
+ id="polyline3090" />
+ <polyline
+ points="4650,4500 2416,4500 "
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ id="polyline3092" />
+ <polyline
+ points="2522 4470 2402 4500 2522 4530 "
+ style="stroke:#000000;stroke-width:7;stroke-miterlimit:8"
+ id="polyline3094" />
+ <polyline
+ points="1800,2400 1800,4183 "
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ id="polyline3096" />
+ <polyline
+ points="1770 4078 1800 4198 1830 4078 "
+ style="stroke:#000000;stroke-width:7;stroke-miterlimit:8"
+ id="polyline3098" />
+ <polyline
+ points="3000,2400 3000,3283 "
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ id="polyline3100" />
+ <polyline
+ points="2970 3178 3000 3298 3030 3178 "
+ style="stroke:#000000;stroke-width:7;stroke-miterlimit:8"
+ id="polyline3102" />
+ <polyline
+ points="5850,1950 5850,2700 "
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:40, 40"
+ id="polyline3104" />
+ <polygon
+ points="2925,2325 3000,2250 3075,2325 3000,2400 3000,2400 "
+ id="polygon3106"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polygon
+ points="1725,2325 1800,2250 1875,2325 1800,2400 1800,2400 "
+ id="polygon3108"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polyline
+ points="3300,1950 8700,1950 "
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ id="polyline3110" />
+ <polyline
+ points="9600,2400 9600,6600 "
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ id="polyline3112" />
+ <polyline
+ points="7950,6900 7950,6600 10350,6600 10350,6900 "
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ id="polyline3114" />
+ <polygon
+ points="9525,2400 9675,2400 9600,2250 9600,2250 "
+ id="polygon3116"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polyline
+ points="4800,3000 7200,3000 "
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ id="polyline3118" />
+ <polyline
+ points="4800,3300 7200,3300 "
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ id="polyline3120" />
+ <polygon
+ points="2775,9450 2925,9450 2850,9300 2850,9300 "
+ id="polygon3122"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polyline
+ points="2100,10200 2100,9900 3750,9900 3750,10200 "
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ id="polyline3124" />
+ <polyline
+ points="6600,10200 6600,9900 10500,9900 10500,10200 10500,10125 "
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ id="polyline3126" />
+ <polyline
+ points="2850,9450 2850,9900 "
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ id="polyline3128" />
+ <polyline
+ points="8475,9450 8475,10200 "
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ id="polyline3130" />
+ <polygon
+ points="8400,9450 8550,9450 8475,9300 8475,9300 "
+ id="polygon3132"
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+ <polyline
+ points="2775,6825 "
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ id="polyline3134" />
+ <polyline
+ points="1800,10200 1800,9000 2083,9000 "
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ id="polyline3136" />
+ <polyline
+ points="1978 9030 2098 9000 1978 8970 "
+ style="stroke:#000000;stroke-width:7;stroke-miterlimit:8"
+ id="polyline3138" />
+ <polyline
+ points="9900,10500 9316,10500 "
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ id="polyline3140" />
+ <polyline
+ points="9422 10470 9302 10500 9422 10530 "
+ style="stroke:#000000;stroke-width:7;stroke-miterlimit:8"
+ id="polyline3142" />
+ <polyline
+ points="7800,10500 7216,10500 "
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ id="polyline3144" />
+ <polyline
+ points="7322 10470 7202 10500 7322 10530 "
+ style="stroke:#000000;stroke-width:7;stroke-miterlimit:8"
+ id="polyline3146" />
+ <polyline
+ points="2850,8700 2850,8100 8550,8100 8550,8700 "
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ id="polyline3148" />
+ <polyline
+ points="10350,7500 10350,9000 9316,9000 "
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:40, 40"
+ id="polyline3150" />
+ <polyline
+ points="9422 8970 9302 9000 9422 9030 "
+ style="stroke:#000000;stroke-width:7;stroke-miterlimit:8"
+ id="polyline3152" />
+ <polyline
+ points="7050,7200 2400,7200 2400,8683 "
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:40, 40"
+ id="polyline3154" />
+ <polyline
+ points="2370 8578 2400 8698 2430 8578 "
+ style="stroke:#000000;stroke-width:7;stroke-miterlimit:8"
+ id="polyline3156" />
+ <polyline
+ points="6900,5250 6900,5400 7800,5400 7800,4800 7216,4800 "
+ style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+ id="polyline3158" />
+ <polyline
+ points="7322 4770 7202 4800 7322 4830 "
+ style="stroke:#000000;stroke-width:7;stroke-miterlimit:8"
+ id="polyline3160" />
+ <text
+ x="2400"
+ y="9075"
+ id="text3162"
+ xml:space="preserve"
+ style="font-size:168px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;font-family:Helvetica">Node.FS</text>
+ <text
+ x="7200"
+ y="7275"
+ id="text3164"
+ xml:space="preserve"
+ style="font-size:168px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;font-family:Helvetica">Intercessor.FS</text>
+ <text
+ x="9600"
+ y="7275"
+ id="text3166"
+ xml:space="preserve"
+ style="font-size:168px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;font-family:Helvetica">Intercessor.DB</text>
+ <text
+ x="1350"
+ y="4575"
+ id="text3168"
+ xml:space="preserve"
+ style="font-size:168px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;font-family:Helvetica">Scanner</text>
+ <text
+ x="2625"
+ y="3675"
+ id="text3170"
+ xml:space="preserve"
+ style="font-size:168px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;font-family:Helvetica">Builder</text>
+ <text
+ x="9000"
+ y="2025"
+ id="text3172"
+ xml:space="preserve"
+ style="font-size:168px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;font-family:Helvetica">Intercessor</text>
+ <text
+ x="1725"
+ y="2025"
+ id="text3174"
+ xml:space="preserve"
+ style="font-size:168px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;font-family:Helvetica">Environment</text>
+ <text
+ x="8100"
+ y="9075"
+ id="text3176"
+ xml:space="preserve"
+ style="font-size:168px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;font-family:Helvetica">Node.DB</text>
+ <text
+ x="1800"
+ y="10575"
+ id="text3178"
+ xml:space="preserve"
+ style="font-size:168px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;font-family:Helvetica">Dir</text>
+ <text
+ x="3600"
+ y="10575"
+ id="text3180"
+ xml:space="preserve"
+ style="font-size:168px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;font-family:Helvetica">File</text>
+ <text
+ x="6300"
+ y="10575"
+ id="text3182"
+ xml:space="preserve"
+ style="font-size:168px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;font-family:Helvetica">Table</text>
+ <text
+ x="8100"
+ y="10575"
+ id="text3184"
+ xml:space="preserve"
+ style="font-size:168px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;font-family:Helvetica">Record</text>
+ <text
+ x="10200"
+ y="10575"
+ id="text3186"
+ xml:space="preserve"
+ style="font-size:168px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;font-family:Helvetica">Field</text>
+ <text
+ x="4950"
+ y="2925"
+ id="text3188"
+ xml:space="preserve"
+ style="font-size:168px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;font-family:Helvetica">Node</text>
+ <text
+ x="7350"
+ y="3525"
+ id="text3190"
+ xml:space="preserve"
+ style="font-size:120px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Helvetica">dependency</text>
+ <text
+ x="7425"
+ y="3825"
+ id="text3192"
+ xml:space="preserve"
+ style="font-size:120px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Helvetica">*</text>
+ <text
+ x="7350"
+ y="4125"
+ id="text3194"
+ xml:space="preserve"
+ style="font-size:120px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Helvetica">srcnode</text>
+ <text
+ x="7425"
+ y="4425"
+ id="text3196"
+ xml:space="preserve"
+ style="font-size:120px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Helvetica">1</text>
+ <text
+ x="7350"
+ y="4725"
+ id="text3198"
+ xml:space="preserve"
+ style="font-size:120px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Helvetica">repnode</text>
+ <text
+ x="7425"
+ y="5025"
+ id="text3200"
+ xml:space="preserve"
+ style="font-size:120px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Helvetica">1</text>
+ <text
+ x="2550"
+ y="4725"
+ id="text3202"
+ xml:space="preserve"
+ style="font-size:120px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Helvetica">0..1</text>
+ <text
+ x="3750"
+ y="3825"
+ id="text3204"
+ xml:space="preserve"
+ style="font-size:120px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Helvetica">0..1</text>
+ <text
+ x="1875"
+ y="4050"
+ id="text3206"
+ xml:space="preserve"
+ style="font-size:144px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">*</text>
+ <text
+ x="3075"
+ y="3150"
+ id="text3208"
+ xml:space="preserve"
+ style="font-size:144px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">*</text>
+ <text
+ x="5100"
+ y="3750"
+ id="text3210"
+ xml:space="preserve"
+ style="font-size:168px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Helvetica">build()</text>
+ <text
+ x="5100"
+ y="4260"
+ id="text3212"
+ xml:space="preserve"
+ style="font-size:168px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Helvetica">scan()</text>
+ <text
+ x="9750"
+ y="10725"
+ id="text3214"
+ xml:space="preserve"
+ style="font-size:144px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">1</text>
+ <text
+ x="1650"
+ y="10125"
+ id="text3216"
+ xml:space="preserve"
+ style="font-size:120px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Helvetica">1</text>
+ <text
+ x="1875"
+ y="9225"
+ id="text3218"
+ xml:space="preserve"
+ style="font-size:120px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Helvetica">*</text>
+ <text
+ x="7650"
+ y="10725"
+ id="text3220"
+ xml:space="preserve"
+ style="font-size:120px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Helvetica">1</text>
+ <text
+ x="7275"
+ y="10725"
+ id="text3222"
+ xml:space="preserve"
+ style="font-size:120px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Helvetica">*</text>
+ <text
+ x="9375"
+ y="10725"
+ id="text3224"
+ xml:space="preserve"
+ style="font-size:120px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Helvetica">*</text>
+ </g>
+</svg>
diff --git a/doc/design/engine.xml b/doc/design/engine.xml
new file mode 100644
index 0000000..065daf4
--- /dev/null
+++ b/doc/design/engine.xml
@@ -0,0 +1,1978 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<chapter id="chap-engine"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
+<title>Build Engine API</title>
+
+<!--
+
+ Copyright (c) 2001 - 2014 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-->
+
+<section id="sect-principles">
+ <title>General Principles</title>
+
+ <section>
+ <title>Keyword arguments</title>
+
+ <para>
+
+ All methods and functions in this API will support the use of keyword
+ arguments in calls, for the sake of explicitness and readability.
+ For brevity in the hands of experts, most methods and functions
+ will also support positional arguments for their most-commonly-used
+ arguments. As an explicit example, the following two lines will each
+ arrange for an executable program named <filename>foo</filename> (or
+ <filename>foo.exe</filename> on a Win32 system) to be compiled from
+ the <filename>foo.c</filename> source file:
+
+ </para>
+
+ <programlisting>
+ env.Program(target = 'foo', source = 'foo.c')
+
+ env.Program('foo', 'foo.c')
+ </programlisting>
+
+ </section>
+
+ <section>
+ <title>Internal object representation</title>
+
+ <para>
+
+ All methods and functions use internal (Python) objects that
+ represent the external objects (files, for example) for which they
+ perform dependency analysis.
+
+ </para>
+
+ <para>
+
+ All methods and functions in this API that accept an external object
+ as an argument will accept <emphasis>either</emphasis> a string
+ description or an object reference. For example, the two following
+ two-line examples are equivalent:
+
+ </para>
+
+ <programlisting>
+ env.Object(target = 'foo.o', source = 'foo.c')
+ env.Program(target = 'foo', 'foo.o') # builds foo from foo.o
+
+ foo_obj = env.Object(target = 'foo.o', source = 'foo.c')
+ env.Program(target = 'foo', foo_obj) # builds foo from foo.o
+ </programlisting>
+
+ </section>
+
+</section>
+
+
+
+<section id="sect-envs">
+ <title>&ConsEnvs;</title>
+
+ <para>
+
+ A &consenv; is the basic means by which a software system interacts
+ with the &SCons; Python API to control a build process.
+
+ </para>
+
+ <para>
+
+ A &consenv; is an object with associated methods for generating target
+ files of various types (&Builder; objects), other associated object
+ methods for automatically determining dependencies from the contents
+ of various types of source files (&Scanner; objects), and a dictionary
+ of values used by these methods.
+
+ </para>
+
+ <para>
+
+ Passing no arguments to the &Environment; instantiation creates a
+ &consenv; with default values for the current platform:
+
+ </para>
+
+ <programlisting>
+ env = Environment()
+ </programlisting>
+
+ <section>
+ <title>&Consvars;</title>
+
+ <para>
+
+ A &consenv; has an associated dictionary of &consvars; that control how
+ the build is performed. By default, the &Environment; method creates
+ a &consenv; with values that make most software build "out of the box"
+ on the host system. These default values will be generated at the
+ time &SCons; is installed using functionality similar to that provided
+ by GNU &Autoconf;.
+ <footnote>
+ <para>
+ It would be nice if we could avoid re-inventing the wheel here by
+ using some other Python-based tool &Autoconf; replacement--like what
+ was supposed to come out of the Software Carpentry configuration
+ tool contest. It will probably be most efficient to roll our own
+ logic initially and convert if something better does come along.
+ </para>
+ </footnote>
+ At a minimum, there will be pre-configured sets of default values
+ that will provide reasonable defaults for UNIX and Windows NT.
+
+ </para>
+
+ <para>
+
+ The default &consenv; values may be overridden when a new &consenv; is
+ created by specifying keyword arguments:
+
+ </para>
+
+ <programlisting>
+ env = Environment(CC = 'gcc',
+ CCFLAGS = '-g',
+ CPPPATH = ['.', 'src', '/usr/include'],
+ LIBPATH = ['/usr/lib', '.'])
+ </programlisting>
+
+ </section>
+
+ <section>
+ <title>Fetching &consvars;</title>
+
+ <para>
+
+ A copy of the dictionary of &consvars; can be returned using
+ the &Dictionary; method:
+
+ </para>
+
+ <programlisting>
+ env = Environment()
+ dict = env.Dictionary()
+ </programlisting>
+
+ <para>
+
+ If any arguments are supplied, then just the corresponding value(s)
+ are returned:
+
+ </para>
+
+ <programlisting>
+ ccflags = env.Dictionary('CCFLAGS')
+ cc, ld = env.Dictionary('CC', 'LD')
+ </programlisting>
+
+ </section>
+
+ <section>
+ <title>Copying a &consenv;</title>
+
+ <para>
+
+ A method exists to return a copy of an existing environment, with
+ any overridden values specified as keyword arguments to the method:
+
+ </para>
+
+ <programlisting>
+ env = Environment()
+ debug = env.Copy(CCFLAGS = '-g')
+ </programlisting>
+
+ </section>
+
+ <section>
+ <title>Multiple &consenvs;</title>
+
+ <para>
+
+ Different external objects often require different build
+ characteristics. Multiple &consenvs; may be defined, each with
+ different values:
+
+ </para>
+
+ <programlisting>
+ env = Environment(CCFLAGS = '')
+ debug = Environment(CCFLAGS = '-g')
+ env.Make(target = 'hello', source = 'hello.c')
+ debug.Make(target = 'hello-debug', source = 'hello.c')
+ </programlisting>
+
+ <para>
+
+ Dictionaries of values from multiple &consenvs; may be passed to the
+ &Environment; instantiation or the &Copy; method, in which case the
+ last-specified dictionary value wins:
+
+ </para>
+
+ <programlisting>
+ env1 = Environment(CCFLAGS = '-O', LDFLAGS = '-d')
+ env2 = Environment(CCFLAGS = '-g')
+ new = Environment(env1.Dictionary(), env2.Dictionary())
+ </programlisting>
+
+ <para>
+
+ The <varname>new</varname> environment in the above example retains
+ <literal>LDFLAGS = '-d'</literal> from the <varname>env1</varname>
+ environment, and <literal>CCFLAGS = '-g'</literal> from the
+ <varname>env2</varname> environment.
+
+ </para>
+
+ <!--
+
+ hardware details
+ current directory
+ OS environment variables
+ compilers and options,
+ aliases for commands,
+ versions of tools
+
+ environment overrides a la Cons
+
+ compilation options
+
+ cross compilation via selection of tool+options
+
+ paths for header files (specify alternate path)
+
+ accomodate smart compilers that can tell you
+ "I know how to turn .c or .ccp into .o",
+ "I know how to turn .f into .o"
+
+ -->
+
+ </section>
+
+ <section>
+ <title>Variable substitution</title>
+
+ <para>
+
+ Within a construction command, any variable from the &consenv; may
+ be interpolated by prefixing the name of the construction with
+ <symbol>$</symbol>:
+
+ </para>
+
+ <programlisting>
+ MyBuilder = Builder(command = "$XX $XXFLAGS -c $_INPUTS -o $target")
+
+ env.Command(targets = 'bar.out', sources = 'bar.in',
+ command = "sed '1d' &lt; $source > $target")
+ </programlisting>
+
+ <para>
+
+ Variable substitution is recursive: the command line is expanded
+ until no more substitutions can be made.
+
+ </para>
+
+ <para>
+
+ Variable names following the <symbol>$</symbol> may be enclosed in
+ braces. This can be used to concatenate an interpolated value with an
+ alphanumeric character:
+
+ </para>
+
+ <programlisting>
+ VerboseBuilder = Builder(command = "$XX -${XXFLAGS}v > $target")
+ </programlisting>
+
+ <para>
+
+ The variable within braces may contain a pair of parentheses
+ after a Python function name to be evaluated (for example,
+ <literal>${map()}</literal>). &SCons; will interpolate the return
+ value from the function (presumably a string):
+
+ </para>
+
+ <programlisting>
+ env = Environment(FUNC = myfunc)
+ env.Command(target = 'foo.out', source = 'foo.in',
+ command = "${FUNC($&lt;)}")
+ </programlisting>
+
+ <para>
+
+ If a referenced variable is not defined in the &consenv;,
+ the null string is interpolated.
+
+ </para>
+
+ <para>
+
+ The following special variables can also be used:
+
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term><literal>$targets</literal></term>
+ <listitem>
+ <para>
+
+ All target file names. If multiple targets are specified in an
+ array, <literal>$targets</literal> expands to the entire list of
+ targets, separated by a single space.
+
+ </para>
+
+ <para>
+
+ Individual targets from a list may be extracted by enclosing
+ the <literal>targets</literal> keyword in braces and using the
+ appropriate Python array index or slice:
+
+ </para>
+
+ <programlisting>
+ ${targets[0]} # expands to the first target
+
+ ${targets[1:]} # expands to all but the first target
+
+ ${targets[1:-1]} # expands to all but the first and last targets
+ </programlisting>
+
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><literal>$target</literal></term>
+ <listitem>
+ <para>
+
+ A synonym for <literal>${targets[0]}</literal>, the first target
+ specified.
+
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><literal>$sources</literal></term>
+ <listitem>
+ <para>
+
+ All input file names. Any input file names that
+ are used anywhere else on the current command
+ line (via <literal>${sources[0]}</literal>,
+ <literal>${sources{[1]}</literal>, etc.) are removed from the
+ expanded list.
+
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+ <para>
+
+ Any of the above special variables may be enclosed in braces and
+ followed immediately by one of the following attributes to select just
+ a portion of the expanded path name:
+
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term><literal>.base</literal></term>
+ <listitem>
+ <para>
+
+ Basename: the directory plus the file name, minus any file suffix.
+
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><literal>.dir</literal></term>
+ <listitem>
+ <para>
+
+ The directory in which the file lives. This is a relative path,
+ where appropriate.
+
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><literal>.file</literal></term>
+ <listitem>
+ <para>
+
+ The file name, minus any directory portion.
+
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><literal>.suffix</literal></term>
+ <listitem>
+ <para>
+
+ The file name suffix (that is, the right-most dot in the file name,
+ and all characters to the right of that).
+
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><literal>.filebase</literal></term>
+ <listitem>
+ <para>
+
+ The file name (no directory portion), minus any file suffix.
+
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><literal>.abspath</literal></term>
+ <listitem>
+ <para>
+
+ The absolute path to the file.
+
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+ </section>
+
+</section>
+
+
+
+<section id="sect-builders">
+ <title>&Builder; Objects</title>
+
+ <para>
+
+ By default, &SCons; supplies (and uses) a number of pre-defined
+ &Builder; objects:
+
+ </para>
+
+ <informaltable>
+ <tgroup cols="2">
+ <tbody>
+
+ <row>
+ <entry>&Object;</entry>
+ <entry>compile or assemble an object file</entry>
+ </row>
+
+ <row>
+ <entry>&Library;</entry>
+ <entry>archive files into a library</entry>
+ </row>
+
+ <row>
+ <entry>&SharedLibrary;</entry>
+ <entry>archive files into a shared library</entry>
+ </row>
+
+ <row>
+ <entry>&Program;</entry>
+ <entry>link objects and/or libraries into an executable</entry>
+ </row>
+
+ <row>
+ <entry>&MakeBuilder;</entry>
+ <entry>build according to file suffixes; see below</entry>
+ </row>
+
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+<!--
+&Library; and &SharedLibrary; have nearly identical
+semantics, just different
+tools and &consenvs (paths, etc.) that they use.
+In other words, you can construct a shared library
+using just the &Library; &Builder; object
+with a different environment.
+I think that's a better way to do it.
+Feedback?
+-->
+
+ <para>
+
+ A &consenv; can be explicitly initialized with associated &Builder;
+ objects that will be bound to the &consenv; object:
+
+ </para>
+
+ <programlisting>
+ env = Environment(BUILDERS = ['Object', 'Program'])
+ </programlisting>
+
+ <para>
+
+ &Builder; objects bound to a &consenv; can be called directly as
+ methods. When invoked, a &Builder; object returns a (list of) objects
+ that it will build:
+
+ </para>
+
+ <programlisting>
+ obj = env.Object(target ='hello.o', source = 'hello.c')
+ lib = env.Library(target ='libfoo.a',
+ source = ['aaa.c', 'bbb.c'])
+ slib = env.SharedLibrary(target ='libbar.so',
+ source = ['xxx.c', 'yyy.c'])
+ prog = env.Program(target ='hello',
+ source = ['hello.o', 'libfoo.a', 'libbar.so'])
+ </programlisting>
+
+ <section>
+ <title>Specifying multiple inputs</title>
+
+ <para>
+
+ Multiple input files that go into creating a target file may be passed
+ in as a single string, with the individual file names separated by
+ white space:
+
+ </para>
+
+ <programlisting>
+ env.Library(target = 'foo.a', source = 'aaa.c bbb.c ccc.c')
+ env.Object(target = 'yyy.o', source = 'yyy.c')
+ env.Program(target = 'bar', source = 'xxx.c yyy.o foo.a')
+ </programlisting>
+
+ <para>
+
+ Alternatively, multiple input files that go into creating a target
+ file may be passed in as an array. This allows input files to be
+ specified using their object representation:
+
+ </para>
+
+ <programlisting>
+ env.Library(target = 'foo.a', source = ['aaa.c', 'bbb.c', 'ccc.c'])
+ yyy_obj = env.Object(target = 'yyy.o', source = 'yyy.c')
+ env.Program(target = 'bar', source = ['xxx.c', yyy_obj, 'foo.a'])
+ </programlisting>
+
+ <para>
+
+ Individual string elements within an array of input files are
+ <emphasis>not</emphasis> further split into white-space separated
+ file names. This allows file names that contain white space to
+ be specified by putting the value into an array:
+
+ <programlisting>
+ env.Program(target = 'foo', source = ['an input file.c'])
+ </programlisting>
+
+ </para>
+
+ </section>
+
+ <section>
+ <title>Specifying multiple targets</title>
+
+ <para>
+
+ Conversely, the generated target may be a string listing multiple
+ files separated by white space:
+
+ </para>
+
+ <programlisting>
+ env.Object(target = 'grammar.o y.tab.h', source = 'grammar.y')
+ </programlisting>
+
+ <para>
+
+ An array of multiple target files can be used to mix string and object
+ representations, or to accomodate file names that contain white space:
+
+ </para>
+
+ <programlisting>
+ env.Program(target = ['my program'], source = 'input.c')
+ </programlisting>
+
+ </section>
+
+ <section>
+ <title>File prefixes and suffixes</title>
+
+ <para>
+
+ For portability, if the target file name does not already have an
+ appropriate file prefix or suffix, the &Builder; objects will
+ append one appropriate for the file type on the current system:
+
+ </para>
+
+ <programlisting>
+ # builds 'hello.o' on UNIX, 'hello.obj' on Windows NT:
+ obj = env.Object(target ='hello', source = 'hello.c')
+
+ # builds 'libfoo.a' on UNIX, 'foo.lib' on Windows NT:
+ lib = env.Library(target ='foo', source = ['aaa.c', 'bbb.c'])
+
+ # builds 'libbar.so' on UNIX, 'bar.dll' on Windows NT:
+ slib = env.SharedLibrary(target ='bar', source = ['xxx.c', 'yyy.c'])
+
+ # builds 'hello' on UNIX, 'hello.exe' on Windows NT:
+ prog = env.Program(target ='hello',
+ source = ['hello.o', 'libfoo.a', 'libbar.so'])
+ </programlisting>
+
+ </section>
+
+ <section>
+ <title>&Builder; object exceptions</title>
+
+ <para>
+
+ &Builder; objects raise the following exceptions on error:
+
+ <!--
+ LIST THESE ONCE WE FIGURE OUT WHAT THEY ARE FROM CODING THEM.
+ -->
+
+ </para>
+ </section>
+
+ <section>
+ <title>User-defined &Builder; objects</title>
+
+ <para>
+
+ Users can define additional &Builder; objects for specific external
+ object types unknown to &SCons;. A &Builder; object may build its
+ target by executing an external command:
+
+ </para>
+
+ <programlisting>
+ WebPage = Builder(command = 'htmlgen $HTMLGENFLAGS $sources > $target',
+ suffix = '.html',
+ src_suffix = '.in')
+ </programlisting>
+
+ <para>
+
+ Alternatively, a &Builder; object may also build its target by
+ executing a Python function:
+
+ </para>
+
+ <programlisting>
+ def update(dest):
+ # [code to update the object]
+ return 1
+
+ OtherBuilder1 = Builder(function = update,
+ src_suffix = ['.in', '.input'])
+ </programlisting>
+
+ <para>
+
+ An optional argument to pass to the function may be specified:
+
+ </para>
+
+ <programlisting>
+ def update_arg(dest, arg):
+ # [code to update the object]
+ return 1
+
+ OtherBuilder2 = Builder(function = update_arg,
+ function_arg = 'xyzzy',
+ src_suffix = ['.in', '.input'])
+ </programlisting>
+
+ <para>
+
+ Both an external command and an internal function may be specified,
+ in which case the function will be called to build the object first,
+ followed by the command line.
+
+ </para>
+
+ <!--
+ NEED AN EXAMPLE HERE.
+ -->
+
+ <para>
+
+ User-defined &Builder; objects can be used like the default &Builder;
+ objects to initialize &consenvs;.
+
+ </para>
+
+ <programlisting>
+ WebPage = Builder(command = 'htmlgen $HTMLGENFLAGS $sources > $target',
+ suffix = '.html',
+ src_suffix = '.in')
+ env = Environment(BUILDERS = ['WebPage'])
+ env.WebPage(target = 'foo.html', source = 'foo.in')
+ # Builds 'bar.html' on UNIX, 'bar.htm' on Windows NT:
+ env.WebPage(target = 'bar', source = 'bar.in')
+ </programlisting>
+
+ <para>
+
+ The command-line specification can interpolate variables from the
+ &consenv;; see "Variable substitution," above.
+
+ </para>
+
+ <para>
+
+ A &Builder; object may optionally be initialized with a list of:
+
+ </para>
+
+ <itemizedlist>
+ <listitem>
+ <para>
+
+ the prefix of the target file (e.g., 'lib' for libraries)
+
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+
+ the suffix of the target file (e.g., '.a' for libraries)
+
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+
+ the expected suffixes of the input files
+ (e.g., '.o' for object files)
+
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+
+ These arguments are used in automatic
+ dependency analysis and to generate output file names that don't
+ have suffixes supplied explicitly.
+
+ </para>
+ </section>
+
+ <section>
+ <title>Copying &Builder; Objects</title>
+
+ <para>
+
+ A &Copy; method exists to return a copy of an existing &Builder;
+ object, with any overridden values specified as keyword arguments to
+ the method:
+
+ </para>
+
+ <programlisting>
+ build = Builder(function = my_build)
+ build_out = build.Copy(suffix = '.out')
+ </programlisting>
+
+ <para>
+
+ Typically, &Builder; objects will be supplied by a tool-master or
+ administrator through a shared &consenv;.
+
+ </para>
+ </section>
+
+ <section>
+ <title>Special-purpose build rules</title>
+
+ <para>
+
+ A pre-defined &Command; builder exists to associate a target file with
+ a specific command or list of commands for building the file:
+
+ </para>
+
+ <programlisting>
+ env.Command(target = 'foo.out', source =
+ command = 'foo.in', "foo.process $sources > $target")
+
+ commands = [ "bar.process -o .tmpfile $sources",
+ "mv .tmpfile $target" ]
+ env.Command(target = 'bar.out', source = 'bar.in', command = commands)
+ </programlisting>
+
+ <para>
+ This is useful when it's too cumbersome to create a &Builder;
+ object just to build a single file in a special way.
+
+ </para>
+ </section>
+
+ <section>
+ <title>The &MakeBuilder; &Builder;</title>
+
+ <para>
+
+ A pre-defined &Builder; object named &MakeBuilder; exists to make
+ simple builds as easy as possible for users, at the expense of
+ sacrificing some build portability.
+
+ </para>
+
+ <para>
+
+ The following minimal example builds the 'hello' program from the
+ 'hello.c' source file:
+
+ </para>
+
+ <programlisting>
+ Environment().Make('hello', 'hello.c')
+ </programlisting>
+
+ <para>
+
+ Users of the &MakeBuilder; &Builder; object are not required to
+ understand intermediate steps involved in generating a file--for
+ example, the distinction between compiling source code into an object
+ file, and then linking object files into an executable. The details
+ of intermediate steps are handled by the invoked method. Users that
+ need to, however, can specify intermediate steps explicitly:
+
+ </para>
+
+ <programlisting>
+ env = Environment()
+ env.Make(target = 'hello.o', source = 'hello.c')
+ env.Make(target = 'hello', source = 'hello.o')
+ </programlisting>
+
+ <para>
+
+ The &MakeBuilder; method understands the file suffixes specified and
+ "does the right thing" to generate the target object and program
+ files, respectively. It does this by examining the specified output
+ suffixes for the &Builder; objects bound to the environment.
+
+ </para>
+
+ <para>
+
+ Because file name suffixes in the target and source file names
+ must be specified, the &MakeBuilder; method can't be used
+ portably across operating systems. In other words, for the
+ example above, the &MakeBuilder; builder will not generate
+ <filename>hello.exe</filename> on Windows NT.
+
+ </para>
+
+ </section>
+
+ <section>
+ <title>&Builder; maps</title>
+
+<!--
+Do we even need this anymore?
+Now that the individual builders
+have specified <literal>suffix</literal>
+and <literal>src_suffix</literal> values,
+all of the information we need to support
+the &MakeBuilder; builder is right there in the environment.
+I think this is a holdover from before I
+added the <literal>suffix</literal> arguments.
+If you want &MakeBuilder; to do something different,
+you set it up with another environment...
+-->
+
+ <para>
+
+ The <function>env.Make</function> method "does the right thing" to
+ build different file types because it uses a dictionary from the
+ &consenv; that maps file suffixes to the appropriate &Builder; object.
+ This &BUILDERMAP; can be initialized at instantiation:
+
+ </para>
+
+ <programlisting>
+ env = Environment(BUILDERMAP = {
+ '.o' : Object,
+ '.a' : Library,
+ '.html' : WebPage,
+ '' : Program,
+ })
+ </programlisting>
+
+ <para>
+
+ With the &BUILDERMAP; properly initialized, the
+ <function>env.Make</function> method can be used to build additional
+ file types:
+
+ </para>
+
+ <programlisting>
+ env.Make(target = 'index.html', source = 'index.input')
+ </programlisting>
+
+ <para>
+
+ &Builder; objects referenced in the &BUILDERMAP; do not need to be
+ listed separately in the <literal>BUILDERS</literal> variable. The &consenv; will
+ bind the union of the &Builder; objects listed in both variables.
+
+ </para>
+
+ <!--
+
+ YYY support scanners which detect files which haven't been generated yet
+
+ -->
+
+ </section>
+
+</section>
+
+
+
+<section id="sect-deps">
+ <title>Dependencies</title>
+
+ <section>
+ <title>Automatic dependencies</title>
+
+ <para>
+
+ By default, &SCons; assumes that a target file has <literal>automatic
+ dependencies</literal> on the:
+
+ </para>
+
+ <blockquote>
+ <simplelist>
+
+ <member>tool used to build the target file</member>
+
+ <member>contents of the input files</member>
+
+ <member>command line used to build the target file</member>
+
+ </simplelist>
+ </blockquote>
+
+ <para>
+
+ If any of these changes, the target file will be rebuilt.
+
+ </para>
+ </section>
+
+ <section>
+ <title>Implicit dependencies</title>
+
+ <para>
+
+ Additionally, &SCons; can scan the contents of files for
+ <literal>implicit dependencies</literal> on other files. For
+ example, &SCons; will scan the contents of a <filename>.c</filename>
+ file and determine that any object created from it is
+ dependent on any <filename>.h</filename> files specified via
+ <literal>#include</literal>. &SCons;, therefore, "does the right
+ thing" without needing to have these dependencies listed explicitly:
+
+ </para>
+
+ <programlisting>
+ % cat Construct
+ env = Environment()
+ env.Program('hello', 'hello.c')
+ % cat hello.c
+ #include "hello_string.h"
+ main()
+ {
+ printf("%s\n", STRING);
+ }
+ % cat > hello_string.h
+ #define STRING "Hello, world!\n"
+ % scons .
+ gcc -c hello.c -o hello.o
+ gcc -o hello hello.c
+ % ./hello
+ Hello, world!
+ % cat > hello_string.h
+ #define STRING "Hello, world, hello!\n"
+ % scons .
+ gcc -c hello.c -o hello.o
+ gcc -o hello hello.c
+ % ./hello
+ Hello, world, hello!
+ %
+ </programlisting>
+
+ </section>
+
+ <section>
+ <title>Ignoring dependencies</title>
+
+ <para>
+
+ Undesirable <literal>automatic dependencies</literal> or
+ <literal>implicit dependencies</literal> may be ignored:
+
+ </para>
+
+ <programlisting>
+ env.Program(target = 'bar', source = 'bar.c')
+ env.Ignore('bar', '/usr/bin/gcc', 'version.h')
+ </programlisting>
+
+ <para>
+
+ In the above example, the <filename>bar</filename> program will not
+ be rebuilt if the <filename>/usr/bin/gcc</filename> compiler or the
+ <filename>version.h</filename> file change.
+
+ </para>
+ </section>
+
+ <section>
+ <title>Explicit dependencies</title>
+
+ <para>
+
+ Dependencies that are unknown to &SCons; may be specified explicitly
+ in an &SCons; configuration file:
+
+ </para>
+
+ <programlisting>
+ env.Dependency(target = 'output1', dependency = 'input_1 input_2')
+ env.Dependency(target = 'output2', dependency = ['input_1', 'input_2'])
+ env.Dependency(target = 'output3', dependency = ['white space input'])
+
+ env.Dependency(target = 'output_a output_b', dependency = 'input_3')
+ env.Dependency(target = ['output_c', 'output_d'], dependency = 'input_4')
+ env.Dependency(target = ['white space output'], dependency = 'input_5')
+ </programlisting>
+
+ <para>
+
+ Just like the <literal>target</literal> keyword argument, the
+ <literal>dependency</literal> keyword argument may be specified as a
+ string of white-space separated file names, or as an array.
+
+ </para>
+
+ <para>
+
+ A dependency on an &SCons; configuration file itself may be specified
+ explicitly to force a rebuild whenever the configuration file changes:
+
+ </para>
+
+ <programlisting>
+ env.Dependency(target = 'archive.tar.gz', dependency = 'SConstruct')
+ </programlisting>
+
+ </section>
+
+</section>
+
+
+
+<section id="sect-scanners">
+ <title>&Scanner; Objects</title>
+
+ <para>
+
+ Analagous to the previously-described &Builder; objects, &SCons;
+ supplies (and uses) &Scanner; objects to search the contents of
+ a file for implicit dependency files:
+
+ </para>
+
+ <informaltable>
+ <tgroup cols="2">
+ <tbody>
+
+ <row>
+ <entry>CScan</entry>
+ <entry>scan .{c,C,cc,cxx,cpp} files for #include dependencies</entry>
+ </row>
+
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ <para>
+
+ A &consenv; can be explicitly initialized with
+ associated &Scanner; objects:
+
+ </para>
+
+ <programlisting>
+ env = Environment(SCANNERS = ['CScan', 'M4Scan'])
+ </programlisting>
+
+ <para>
+
+ &Scanner; objects bound to a &consenv; can be
+ associated directly with specified files:
+
+ </para>
+
+ <programlisting>
+ env.CScan('foo.c', 'bar.c')
+ env.M4Scan('input.m4')
+ </programlisting>
+
+ <section>
+ <title>User-defined &Scanner; objects</title>
+
+ <para>
+
+ A user may define a &Scanner; object to scan a type of file for
+ implicit dependencies:
+
+ </para>
+
+ <programlisting>
+ def scanner1(file_contents):
+ # search for dependencies
+ return dependency_list
+
+ FirstScan = Scanner(function = scanner1)
+ </programlisting>
+
+ <para>
+
+ The scanner function must return a list of dependencies that its finds
+ based on analyzing the file contents it is passed as an argument.
+
+ </para>
+
+ <para>
+
+ The scanner function, when invoked, will be passed the calling
+ environment. The scanner function can use &consenvs; from the passed
+ environment to affect how it performs its dependency scan--the
+ canonical example being to use some sort of search-path construction
+ variable to look for dependency files in other directories:
+
+ </para>
+
+ <programlisting>
+ def scanner2(file_contents, env):
+ path = env.{'SCANNERPATH'} # XXX
+ # search for dependencies using 'path'
+ return dependency_list
+
+ SecondScan = Scanner(function = scanner2)
+ </programlisting>
+
+ <para>
+
+ The user may specify an additional argument when the &Scanner; object
+ is created. When the scanner is invoked, the additional argument
+ will be passed to the scanner funciton, which can be used in any way
+ the scanner function sees fit:
+
+ </para>
+
+ <programlisting>
+ def scanner3(file_contents, env, arg):
+ # skip 'arg' lines, then search for dependencies
+ return dependency_list
+
+ Skip_3_Lines_Scan = Scanner(function = scanner2, argument = 3)
+ Skip_6_Lines_Scan = Scanner(function = scanner2, argument = 6)
+ </programlisting>
+
+ </section>
+
+ <section>
+ <title>Copying &Scanner; Objects</title>
+
+ <para>
+
+ A method exists to return a copy of an existing &Scanner; object,
+ with any overridden values specified as keyword arguments to the
+ method:
+
+ </para>
+
+ <programlisting>
+ scan = Scanner(function = my_scan)
+ scan_path = scan.Copy(path = '%SCANNERPATH')
+ </programlisting>
+
+ <para>
+
+ Typically, &Scanner; objects will be supplied by a tool-master or
+ administrator through a shared &consenv;.
+
+ </para>
+ </section>
+
+ <section>
+ <title>&Scanner; maps</title>
+
+<!--
+If the &BUILDERMAP; proves unnecessary,
+we could/should get rid of this one, too,
+by adding a parallel <literal>src_suffix</literal>
+argument to the &Scanner; factory...
+Comments?
+-->
+
+ <para>
+
+ Each &consenv; has a &SCANNERMAP;, a dictionary that associates
+ different file suffixes with a scanner object that can be used to
+ generate a list of dependencies from the contents of that file. This
+ &SCANNERMAP; can be initialized at instantiation:
+
+ </para>
+
+ <programlisting>
+ env = Environment(SCANNERMAP = {
+ '.c' : CScan,
+ '.cc' : CScan,
+ '.m4' : M4Scan,
+ })
+ </programlisting>
+
+ <para>
+
+ &Scanner; objects referenced in the &SCANNERMAP; do not need to
+ be listed separately in the <literal>SCANNERS</literal> variable. The &consenv;
+ will bind the union of the &Scanner; objects listed
+ in both variables.
+
+ </para>
+
+ </section>
+
+</section>
+
+
+
+<section id="sect-targets">
+ <title>Targets</title>
+
+ <para>
+
+ The methods in the build engine API described so far merely
+ establish associations that describe file dependencies, how a
+ file should be scanned, etc. Since the real point is to actually
+ <emphasis>build</emphasis> files, &SCons; also has methods that
+ actually direct the build engine to build, or otherwise manipulate,
+ target files.
+
+ </para>
+
+ <section>
+ <title>Building targets</title>
+ <para>
+
+ One or more targets may be built as follows:
+
+ </para>
+
+ <programlisting>
+ env.Build(target = ['foo', 'bar'])
+ </programlisting>
+
+ <para>
+
+ Note that specifying a directory (or other collective object) will
+ cause all subsidiary/dependent objects to be built as well:
+
+ </para>
+
+ <programlisting>
+ env.Build(target = '.')
+
+ env.Build(target = 'builddir')
+ </programlisting>
+
+ <para>
+
+ By default, &SCons; explicitly removes a target file before
+ invoking the underlying function or command(s) to build it.
+
+ </para>
+ </section>
+
+ <section>
+ <title>Removing targets</title>
+
+ <para>
+
+ A "cleanup" operation of removing generated (target) files is
+ performed as follows:
+
+ </para>
+
+ <programlisting>
+ env.Clean(target = ['foo', 'bar'])
+ </programlisting>
+
+ <para>
+
+ Like the &Build; method, the &Clean; method may be passed a
+ directory or other collective object, in which case the subsidiary
+ target objects under the directory will be removed:
+
+ </para>
+
+ <programlisting>
+ env.Clean(target = '.')
+
+ env.Clean(target = 'builddir')
+ </programlisting>
+
+ <para>
+
+ (The directories themselves are not removed.)
+
+ </para>
+ </section>
+
+ <section>
+ <title>Suppressing cleanup removal of build-targets</title>
+
+ <para>
+
+ By default, &SCons; explicitly removes all build-targets
+ when invoked to perform "cleanup". Files that should not be
+ removed during "cleanup" can be specified via the
+ &NoClean; method:
+
+ </para>
+
+ <programlisting>
+env.Library(target = 'libfoo.a', source = ['aaa.c', 'bbb.c', 'ccc.c'])
+env.NoClean('libfoo.a')
+ </programlisting>
+
+ <para>
+
+ The NoClean operation has precedence over the Clean operation.
+ A target that is specified as both Clean and NoClean, will not
+ be removed during a clean.
+
+ In the following example, target 'foo' will not be removed
+ during "cleanup":
+
+ <programlisting>
+env.Clean(target = 'foo')
+env.NoClean('foo')
+ </programlisting>
+
+
+ </para>
+
+ </section>
+
+ <section>
+ <title>Suppressing build-target removal</title>
+
+ <para>
+
+ As mentioned, by default, &SCons; explicitly removes a target
+ file before invoking the underlying function or command(s) to build
+ it. Files that should not be removed before rebuilding can be
+ specified via the &Precious; method:
+
+ </para>
+
+ <programlisting>
+ env.Library(target = 'libfoo.a', source = ['aaa.c', 'bbb.c', 'ccc.c'])
+ env.Precious('libfoo.a')
+ </programlisting>
+
+ </section>
+
+ <section>
+ <title>Default targets</title>
+
+ <para>
+
+ The user may specify default targets that will be built if there are no
+ targets supplied on the command line:
+
+ </para>
+
+ <programlisting>
+ env.Default('install', 'src')
+ </programlisting>
+
+ <para>
+
+ Multiple calls to the &Default; method (typically one per &SConscript;
+ file) append their arguments to the list of default targets.
+
+ </para>
+ </section>
+
+ <section>
+ <title>File installation</title>
+
+ <para>
+
+ Files may be installed in a destination directory:
+
+ </para>
+
+ <programlisting>
+ env.Install('/usr/bin', 'program1', 'program2')
+ </programlisting>
+
+ <para>
+
+ Files may be renamed on installation:
+
+ </para>
+
+ <programlisting>
+ env.InstallAs('/usr/bin/xyzzy', 'xyzzy.in')
+ </programlisting>
+
+ <para>
+
+ Multiple files may be renamed on installation by specifying
+ equal-length lists of target and source files:
+
+ </para>
+
+ <programlisting>
+ env.InstallAs(['/usr/bin/foo', '/usr/bin/bar'],
+ ['foo.in', 'bar.in'])
+ </programlisting>
+
+ </section>
+
+ <section>
+ <title>Target aliases</title>
+
+ <para>
+
+ In order to provide convenient "shortcut" target names that expand to
+ a specified list of targets, aliases may be established:
+
+ </para>
+
+ <programlisting>
+ env.Alias(alias = 'install',
+ targets = ['/sbin', '/usr/lib', '/usr/share/man'])
+ </programlisting>
+
+ <para>
+
+ In this example, specifying a target of <literal>install</literal>
+ will cause all the files in the associated directories to be built
+ (that is, installed).
+
+ </para>
+
+ <para>
+
+ An &Alias; may include one or more other &Aliases; in its list:
+
+ </para>
+
+ <programlisting>
+ env.Alias(alias = 'libraries', targets = ['lib'])
+ env.Alias(alias = 'programs', targets = ['libraries', 'src'])
+ </programlisting>
+
+ </section>
+
+</section>
+
+
+
+<section id="sect-custom">
+ <title>Customizing output</title>
+
+<!--
+Take this whole section with a grain of salt.
+I whipped it up without a great deal of thought
+to try to add a "competitive advantage"
+for the second round of the Software Carpentry contest.
+In particular, hard-coding the
+analysis points and the keywords that specify them
+feels inflexible,
+but I can't think of another way it would be
+done effectively.
+I dunno, maybe this is fine as it is...
+-->
+
+ <para>
+
+ The &SCons; API supports the ability to customize, redirect, or
+ suppress its printed output through user-defined functions.
+ &SCons; has several pre-defined points in its build process at
+ which it calls a function to (potentially) print output. User-defined
+ functions can be specified for these call-back points when &Build;
+ or &Clean;is invoked:
+
+ </para>
+
+ <programlisting>
+ env.Build(target = '.',
+ on_analysis = dump_dependency,
+ pre_update = my_print_command,
+ post_update = my_error_handler)
+ on_error = my_error_handler)
+ </programlisting>
+
+ <para>
+
+ The specific call-back points are:
+
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term><literal>on_analysis</literal></term>
+ <listitem>
+ <para>
+
+ Called for every object, immediately after the object has been
+ analyzed to see if it's out-of-date. Typically used to print a
+ trace of considered objects for debugging of unexpected dependencies.
+
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><literal>pre_update</literal></term>
+ <listitem>
+ <para>
+
+ Called for every object that has been determined to be out-of-date
+ before its update function or command is executed. Typically used
+ to print the command being called to update a target.
+
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><literal>post_update</literal></term>
+ <listitem>
+ <para>
+
+ Called for every object after its update function or command has
+ been executed. Typically used to report that a top-level specified
+ target is up-to-date or was not remade.
+
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><literal>on_error</literal></term>
+ <listitem>
+ <para>
+
+ Called for every error returned by an update function or command.
+ Typically used to report errors with some string that will be
+ identifiable to build-analysis tools.
+
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+ <para>
+
+ Functions for each of these call-back points all take the same
+ arguments:
+
+ </para>
+
+ <programlisting>
+ my_dump_dependency(target, level, status, update, dependencies)
+ </programlisting>
+
+ <para>
+
+ where the arguments are:
+
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term><literal>target</literal></term>
+ <listitem>
+ <para>
+
+ The target object being considered.
+
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><literal>level</literal></term>
+ <listitem>
+ <para>
+
+ Specifies how many levels the dependency analysis has
+ recursed in order to consider the <literal>target</literal>.
+ A value of <literal>0</literal> specifies a top-level
+ <literal>target</literal> (that is, one passed to the
+ &Build; or &Clean; method). Objects which a top-level
+ <literal>target</literal> is directly dependent upon have a
+ <literal>level</literal> of &lt;1>, their direct dependencies have a
+ <literal>level</literal> of &lt;2>, etc. Typically used to indent
+ output to reflect the recursive levels.
+
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><literal>status</literal></term>
+ <listitem>
+ <para>
+
+ A string specifying the current status of the target
+ (<literal>"unknown"</literal>, <literal>"built"</literal>,
+ <literal>"error"</literal>, <literal>"analyzed"</literal>, etc.). A
+ complete list will be enumerated and described during implementation.
+
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><literal>update</literal></term>
+ <listitem>
+ <para>
+
+ The command line or function name that will be (or has been) executed
+ to update the <literal>target</literal>.
+
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><literal>dependencies</literal></term>
+ <listitem>
+ <para>
+
+ A list of direct dependencies of the target.
+
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+</section>
+
+
+
+<section id="separate">
+ <title>Separate source and build trees</title>
+
+<!--
+I've never liked Cons' use of the name <literal>Link</literal>
+for this functionality,
+mainly because the term is overloaded
+with linking object files into an executable.
+Yet I've never come up with anything better.
+Any suggestions?
+-->
+
+<!--
+Also, I made this an &Environment; method because
+it logically belongs in the API reference
+(the build engine needs to know about it),
+and I thought it was clean to have
+everything in the build-engine API
+be called through an &Environment; object.
+But <literal>&Link</literal> isn't really
+associated with a specific environment
+(the &Cons; classic implementation just
+leaves it as a bare function call),
+so maybe we should just follow that example
+and not call it through an environment...
+-->
+
+ <para>
+
+ &SCons; allows target files to be built completely separately from
+ the source files by "linking" a build directory to an underlying
+ source directory:
+
+ </para>
+
+ <programlisting>
+ env.Link('build', 'src')
+
+ SConscript('build/SConscript')
+ </programlisting>
+
+ <para>
+
+ &SCons; will copy (or hard link) necessary files (including the
+ &SConscript; file) into the build directory hierarchy. This allows the
+ source directory to remain uncluttered by derived files.
+
+ </para>
+
+</section>
+
+
+
+<section id="sect-variant">
+ <title>Variant builds</title>
+
+ <para>
+
+ The &Link; method may be used in conjunction with multiple
+ &consenvs; to support variant builds. The following
+ &SConstruct; and &SConscript; files would build separate debug and
+ production versions of the same program side-by-side:
+
+ </para>
+
+ <programlisting>
+ % cat SConstruct
+ env = Environment()
+ env.Link('build/debug', 'src')
+ env.Link('build/production', 'src')
+ flags = '-g'
+ SConscript('build/debug/SConscript', Export(env))
+ flags = '-O'
+ SConscript('build/production/SConscript', Export(env))
+ % cat src/SConscript
+ env = Environment(CCFLAGS = flags)
+ env.Program('hello', 'hello.c')
+ </programlisting>
+
+ <para>
+
+ The following example would build the appropriate program for the current
+ compilation platform, without having to clean any directories of object
+ or executable files for other architectures:
+
+ </para>
+
+ <programlisting>
+ % cat SConstruct
+ build_platform = os.path.join('build', sys.platform)
+ Link(build_platform, 'src')
+ SConscript(os.path.join(build_platform, 'SConscript'))
+ % cat src/SConscript
+ env = Environment
+ env.Program('hello', 'hello.c')
+ </programlisting>
+
+</section>
+
+
+
+<section id="sect-repositories">
+ <title>Code repositories</title>
+
+<!--
+Like &Link;, &Repository; and &Local; are part of the
+API reference, but not really tied to any specific environment.
+Is it better to be consistent about calling
+everything in the API through an environment,
+or to leave these independent so as
+not to complicate their calling interface?
+-->
+
+ <para>
+
+ &SCons; may use files from one or more shared code repositories in order
+ to build local copies of changed target files. A repository would
+ typically be a central directory tree, maintained by an integrator,
+ with known good libraries and executables.
+
+ </para>
+
+ <programlisting>
+ Repository('/home/source/1.1', '/home/source/1.0')
+ </programlisting>
+
+ <para>
+
+ Specified repositories will be searched in-order for any file
+ (configuration file, input file, target file) that does not exist
+ in the local directory tree. When building a local target file,
+ &SCons; will rewrite path names in the build command to use the
+ necessary repository files. This includes modifying lists of
+ <option>-I</option> or <option>-L</option> flags to specify an
+ appropriate set of include paths for dependency analysis.
+
+ </para>
+ <para>
+
+ &SCons; will modify the Python <varname>sys.path</varname> variable to
+ reflect the addition of repositories to the search path, so that any
+ imported modules or packages necessary for the build can be found in a
+ repository, as well.
+
+ </para>
+ <para>
+
+ If an up-to-date target file is found in a code repository, the file
+ will not be rebuilt or copied locally. Files that must exist locally
+ (for example, to run tests) may be specified:
+
+ </para>
+
+ <programlisting>
+ Local('program', 'libfoo.a')
+ </programlisting>
+
+ <para>
+
+ in which case &SCons; will copy or link an up-to-date copy of the
+ file from the appropriate repository.
+
+ </para>
+
+</section>
+
+
+
+<section id="sect-caching">
+ <title>Derived-file caching</title>
+
+<!--
+There should be extensions to this part of the API for
+auxiliary functions like cleaning the cache.
+-->
+
+ <para>
+
+ &SCons; can maintain a cache directory of target files which may be
+ shared among multiple builds. This reduces build times by allowing
+ developers working on a project together to share common target
+ files:
+
+ </para>
+
+ <programlisting>
+ Cache('/var/tmp/build.cache/i386')
+ </programlisting>
+
+ <para>
+
+ When a target file is generated, a copy is added to the cache.
+ When generating a target file, if &SCons; determines that a file
+ that has been built with the exact same dependencies already exists
+ in the specified cache, &SCons; will copy the cached file rather
+ than re-building the target.
+
+ </para>
+ <para>
+
+ Command-line options exist to modify the &SCons; caching behavior
+ for a specific build, including disabling caching, building
+ dependencies in random order, and displaying commands as if cached
+ files were built.
+
+ </para>
+
+</section>
+
+
+
+<section id="sect-jobs">
+ <title>Job management</title>
+
+<!--
+This has been completely superseded by
+the more sophisticated &Task; manager
+that Anthony Roach has contributed.
+I need to write that up...
+-->
+
+ <para>
+
+ A simple API exists to inform the Build Engine how many jobs may
+ be run simultaneously:
+
+ </para>
+
+ <programlisting>
+ Jobs(limit = 4)
+ </programlisting>
+
+</section>
+
+</chapter>
diff --git a/doc/design/goals.xml b/doc/design/goals.xml
new file mode 100644
index 0000000..e320be8
--- /dev/null
+++ b/doc/design/goals.xml
@@ -0,0 +1,230 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<chapter id="chap-goals"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
+<title>Goals</title>
+
+<!--
+
+ Copyright (c) 2001 - 2014 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-->
+
+ <para>
+
+ As a next-generation build tool,
+ &SCons; should fundamentally
+ improve on its predecessors.
+ Rather than simply being driven by trying to
+ <emphasis>not</emphasis> be like previous tools,
+ &SCons; aims to satisfy the following goals:
+
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term><literal>Practicality</literal></term>
+ <listitem>
+ <para>
+
+ The &SCons; design emphasizes
+ an implementable feature set
+ that lets users get practical, useful work done.
+ &SCons; is helped in this regard by its roots in &Cons;,
+ which has had its feature set honed by
+ several years of input
+ from a dedicated band of users.
+
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><literal>Portability</literal></term>
+ <listitem>
+ <para>
+
+ &SCons; is intended as a portable build tool,
+ able to handle software construction tasks
+ on a variety of operating systems.
+ It should be possible (although not mandatory)
+ to use &SCons; so that the same configuration file
+ builds the same software correctly on,
+ for example, both Linux and Windows NT.
+ Consequently, &SCons; should hide from users
+ operating-system-dependent details
+ such as filename extensions
+ (for example, <filename>.o</filename>
+ vs. <filename>.obj</filename>).
+
+ <!--
+ XXX: enable writing portable builds without forcing it
+ -->
+
+ <!--
+ XXX: still write non-portably for quick-and-dirty
+ -->
+
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><literal>Usability</literal></term>
+ <listitem>
+ <para>
+
+ Novice users should be able to grasp quickly
+ the rudiments of using &SCons; to build their software.
+ This extends to installing &SCons;, too.
+ Installation should be painless,
+ and the installed &SCons;
+ should work "out of the box"
+ to build most software.
+
+ </para>
+
+ <para>
+
+ This goal should be kept in mind during implementation,
+ when there is always a tendency to try to optimize too early.
+ Speed is nice, but not as important as clarity
+ and ease of use.
+
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><literal>Utility</literal></term>
+ <listitem>
+ <para>
+
+ &SCons; should also provide a rich enough set of features
+ to accommodate building more complicated software projects.
+ However, the features required for
+ building complicated software projects
+ should not get in the way of novice users.
+ (See the previous goal.)
+ In other words, complexity should be available
+ when it's needed
+ but not required to get work done.
+ Practically, this implies that &SCons;
+ shouldn't be dumbed down to the point it
+ excludes complicated software builds.
+
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><literal>Sharability</literal></term>
+ <listitem>
+ <para>
+
+ As a key element in balancing the conflicting
+ needs of <literal>Usability</literal> and <literal>Utility</literal>,
+ &SCons; should provide mechanisms to
+ allow &SCons; users to share build rules,
+ dependency scanners, and other objects and recipes
+ for constructing software.
+ A good sharing mechanism should support
+ the model wherein most developers on a project
+ use rules and templates
+ that are created
+ and maintained by a local integrator or build-master,
+
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><literal>Extensibility</literal></term>
+ <listitem>
+ <para>
+
+ &SCons; should provide mechanisms for
+ easily extending its capabilities,
+ including building new types of files,
+ adding new types of dependency scanning,
+ being able to accomodate dependencies
+ between objects other than files,
+ etc.
+
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><literal>Flexibility</literal></term>
+ <listitem>
+ <para>
+
+ In addition to providing a useful command-line interface,
+ &SCons; should provide the right architectural
+ framework for embedding its dependency management
+ in other interfaces.
+ &SCons; would help strengthen other GUIs or IDEs
+ and the additional requirements of the
+ other interfaces would help broaden and solidify
+ the core &SCons; dependency management.
+
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+<section id="sect-fix-make">
+ <title>Fixing &Make;'s problems</title>
+
+ <para>
+
+<!--
+To be written.
+-->
+
+ </para>
+
+</section>
+
+<section id="sect-fix-cons">
+ <title>Fixing &Cons;'s problems</title>
+
+ <para>
+
+<!--
+To be written.
+-->
+
+ </para>
+
+</section>
+
+</chapter>
diff --git a/doc/design/html.xsl b/doc/design/html.xsl
new file mode 100644
index 0000000..5b03fa1
--- /dev/null
+++ b/doc/design/html.xsl
@@ -0,0 +1,56 @@
+<?xml version='1.0'?>
+<!--
+
+ Copyright (c) 2001 - 2014 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-->
+<xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ version="1.0">
+
+ <xsl:import href="../../src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/html/docbook.xsl"/>
+
+<xsl:param name="l10n.gentext.default.language" select="'en'"/>
+<xsl:param name="section.autolabel" select="1"/>
+<xsl:param name="section.label.includes.component.label" select="1"/>
+<xsl:param name="html.stylesheet" select="'scons.css'"/>
+<xsl:param name="generate.toc">
+/appendix toc,title
+article/appendix nop
+/article toc,title
+book toc,title,figure,table,example,equation
+/chapter toc,title
+part toc,title
+/preface toc,title
+reference toc,title
+/sect1 toc
+/sect2 toc
+/sect3 toc
+/sect4 toc
+/sect5 toc
+/section toc
+set toc,title
+</xsl:param>
+
+</xsl:stylesheet>
+
diff --git a/doc/design/install.xml b/doc/design/install.xml
new file mode 100644
index 0000000..1d3f38e
--- /dev/null
+++ b/doc/design/install.xml
@@ -0,0 +1,46 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<chapter id="chap-install"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
+<title>Installation</title>
+
+<!--
+
+ Copyright (c) 2001 - 2014 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-->
+
+<!--
+THIS CHAPTER NEEDS TO BE DISCUSSED AND WRITTEN.
+-->
+
+<para>
+
+</para>
+
+</chapter>
diff --git a/doc/design/intro.xml b/doc/design/intro.xml
new file mode 100644
index 0000000..b716ca6
--- /dev/null
+++ b/doc/design/intro.xml
@@ -0,0 +1,125 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<chapter id="chap-intro"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
+<title>Introduction</title>
+
+<!--
+
+ Copyright (c) 2001 - 2014 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-->
+
+ <para>
+
+ The &SCons; tool provides an easy-to-use, feature-rich interface
+ for constructing software. Architecturally, &SCons; separates
+ its dependency analysis and external object management into an
+ interface-independent Build Engine that could be embedded in any
+ software system that can run Python.
+
+ </para>
+
+ <para>
+
+ At the command line, &SCons; presents an easily-grasped tool
+ where configuration files are Python scripts, reducing the need
+ to learn new build-tool syntax. Inexperienced users can use
+ intelligent methods that ``do the right thing'' to build software
+ with a minimum of fuss. Sophisticated users can use a rich set
+ of underlying features for finer control of the build process,
+ including mechanisms for easily extending the build process to new
+ file types.
+
+ </para>
+
+ <para>
+
+ Dependencies are tracked using digital signatures,
+ which provide more robust dependency analysis than file time
+ stamps. Implicit dependencies are determined automatically by
+ scanning the contents of source files, avoiding the need for
+ laborious and fragile maintenance of static lists of dependencies in
+ configuration files.
+
+ </para>
+
+ <para>
+
+ The &SCons; tool supports use of files from one or more central code
+ repositories, a mechanism for caching derived files, and parallel
+ builds. The tool also includes a framework for sharing build
+ environments, which allows system administrators or integrators to
+ define appropriate build parameters for use by other users.
+
+ </para>
+
+<section id="sect-document">
+ <title>About This Document</title>
+
+ <para>
+
+ This document is an ongoing work-in-progress to write down the ideas
+ and tradeoffs that have gone, and will go into, the &SCons; design.
+ As such, this is intended primarily for use by developers and others
+ working on &SCons;, although it is also intended to serve as a
+ detailed overview of &SCons; for other interested parties. It will
+ be continually updated and evolve, and will likely overlap with other
+ documentation produced by the project. Sections of this document
+ that deal with syntax, for example, may move or be copied into a user
+ guide or reference manual.
+
+ </para>
+
+ <para>
+
+ So please don't assume that everything mentioned here has been
+ decided and carved in stone. If you have ideas for improvements, or
+ questions about things that don't seem to make any sense, please help
+ improve the design by speaking up about them.
+
+ </para>
+
+<!--
+Sections marked like this
+(prefixed with <literal>RATIONALE:</literal> in the HTML,
+surrounded by <literal>BEGIN RATIONALE:</literal>
+and <literal>END RATIONALE:</literal>
+in the printed documentatio)
+are DocBook REMARKs,
+comments about the document
+rather than actual document.
+I've used these to mark sections that need work,
+but also to cite some open design issues.
+If you have input on any of these marked issues,
+I'm especially eager to hear it.
+-->
+
+</section>
+
+</chapter>
diff --git a/doc/design/issues.xml b/doc/design/issues.xml
new file mode 100644
index 0000000..a35149d
--- /dev/null
+++ b/doc/design/issues.xml
@@ -0,0 +1,209 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<chapter id="chap-issues"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
+<title>Other Issues</title>
+
+<!--
+
+ Copyright (c) 2001 - 2014 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-->
+ <para>
+
+ No build tools is perfect.
+ Here are some &SCons; issues that
+ do not yet have solutions.
+
+ </para>
+
+ <section>
+ <title>Interaction with SC-config</title>
+
+ <para>
+
+ The SC-config tool will be used in the &SCons; installation
+ process to generate an appropriate default construction environment
+ so that building most software works "out of the box" on the
+ installed platform. The SC-config tool will find reasonable default
+ compilers (C, C++, Fortran), linkers/loaders, library archive tools,
+ etc. for specification in the default &SCons; construction
+ environment.
+
+ </para>
+
+ </section>
+
+ <section>
+ <title>Interaction with test infrastructures</title>
+
+ <para>
+
+ &SCons; can be configured to use SC-test (or some other test tool)
+ to provide controlled, automated testing of software. The &Link;
+ method could link a <filename>test</filename> subdirectory to a build
+ subdirectory:
+
+ </para>
+
+ <programlisting>
+ Link('test', 'build')
+ SConscript('test/SConscript')</programlisting>
+
+ <para>
+
+ Any test cases checked in with the source code will be linked
+ into the <filename>test</filename> subdirectory and executed. If
+ &SConscript; files and test cases are written with this in mind, then
+ invoking:
+
+ </para>
+
+ <programlisting>
+ % sccons test</programlisting>
+
+ <para>
+
+ Would run all the automated test cases that depend on any changed
+ software.
+
+ </para>
+
+
+ <!--
+
+ YYY integrate with SC-test to provide sanity check on new tools
+ "discovery testing" of new tools
+ results recorded in a central database
+ central database can be somewhere else on web
+
+ -->
+
+ </section>
+
+ <section>
+ <title>Java dependencies</title>
+
+ <para>
+
+ Java dependencies are difficult for an external dependency-based
+ construction tool to accomodate. Determining Java class dependencies
+ is more complicated than the simple pattern-matching of C or C++
+ <literal>#include</literal> files. From the point of view of an
+ external build tool, the Java compiler behaves "unpredictably"
+ because it may create or update multiple output class files and
+ directories as a result of its internal class dependencies.
+
+ </para>
+
+ <para>
+
+ An obvious &SCons; implementation would be to have the &Scanner;
+ object parse output from <command>Java -depend -verbose</command> to
+ calculate dependencies, but this has the distinct disadvantage of
+ requiring two separate compiler invocations, thereby slowing down
+ builds.
+
+ </para>
+
+ </section>
+
+ <section>
+ <title>Limitations of digital signature calculation</title>
+
+ <para>
+
+ In practice, calculating digital signatures of a file's contents is a
+ more robust mechanism than time stamps for determining what needs
+ building. However:
+
+ </para>
+
+ <orderedlist numeration="arabic">
+
+ <listitem>
+ <para>
+
+ Developers used to the time stamp model of &Make; can initially
+ find digital signatures counter-intuitive. The assumption that:
+
+ <programlisting>
+ % touch file.c</programlisting>
+
+ will cause a rebuild of <filename>file</filename> is strong...
+
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+
+ Abstracting dependency calculation into a single digital signature
+ loses a little information: It is no longer possible to tell
+ (without laborious additional calculation) which input file dependency
+ caused a rebuild of a given target file. A feature that could
+ report, "I'm rebuilding file X because it's out-of-date with respect
+ to file Y," would be good, but an digital-signature implementation of
+ such a feature is non-obvious.
+
+ </para>
+ </listitem>
+
+ </orderedlist>
+
+ </section>
+
+ <section>
+ <title>Remote execution</title>
+
+ <para>
+
+ The ability to use multiple build systems through remote execution
+ of tools would be good. This should be implementable through the
+ &Job; class. Construction environments would need modification
+ to specify build systems.
+
+ </para>
+
+ </section>
+
+ <section>
+ <title>Conditional builds</title>
+
+ <para>
+
+ The ability to check run-time conditions as suggested on the
+ sc-discuss mailing list ("build X only if: the machine is idle /
+ the file system has Y megabytes free space") would also be good,
+ but is not part of the current design.
+
+ </para>
+
+ </section>
+
+</chapter>
diff --git a/doc/design/main.xml b/doc/design/main.xml
new file mode 100644
index 0000000..fda23ec
--- /dev/null
+++ b/doc/design/main.xml
@@ -0,0 +1,88 @@
+<?xml version="1.0"?>
+
+<!--
+
+ Copyright (c) 2001 - 2014 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-->
+
+<!DOCTYPE sconsdoc [
+
+ <!ENTITY % version SYSTEM "../version.xml">
+ %version;
+
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+
+]>
+
+<book xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
+ <bookinfo>
+ <title>SCons &buildversion;</title>
+ <subtitle>Design</subtitle>
+ <author>
+ <firstname>Steven</firstname>
+ <surname>Knight</surname>
+ </author>
+
+ <corpauthor>Steven Knight</corpauthor>
+
+ <pubdate>2001</pubdate>
+
+ <copyright>
+ <year>2001</year>
+ <holder>Steven Knight</holder>
+ </copyright>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+
+ <releaseinfo>version &buildversion;</releaseinfo>
+
+ </bookinfo>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="intro.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="goals.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="overview.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="engine.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="native.xml"/>
+
+ <!--
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="install.xml"/>
+
+ -->
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="issues.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="bground.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="summary.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="acks.xml"/>
+
+</book>
diff --git a/doc/design/native.xml b/doc/design/native.xml
new file mode 100644
index 0000000..6ba892b
--- /dev/null
+++ b/doc/design/native.xml
@@ -0,0 +1,378 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<chapter id="chap-native"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
+<title>Native Python Interface</title>
+
+<!--
+
+ Copyright (c) 2001 - 2014 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-->
+
+<para>
+
+ The "Native Python" interface is the interface
+ that the actual &SCons; utility will present to users.
+ Because it exposes the Python Build Engine API,
+ &SCons; users will have direct access to the complete
+ functionality of the Build Engine.
+ In contrast, a different user interface such as a GUI
+ may choose to only use, and present to the end-user,
+ a subset of the Build Engine functionality.
+
+</para>
+
+<section id="sect-config">
+ <title>Configuration files</title>
+
+ <para>
+
+ &SCons; configuration files are simply Python scripts that invoke
+ methods to specify target files to be built, rules for building the
+ target files, and dependencies. Common build rules are available by
+ default and need not be explicitly specified in the configuration
+ files.
+
+ </para>
+
+ <para>
+
+ By default, the &SCons; utility searches for a file named
+ &SConstruct;, &Sconstruct; or &sconstruct; (in that order) in the
+ current directory, and reads its configuration from the first file
+ found. A <option>-f</option> command-line option exists to read a
+ different file name.
+
+ </para>
+
+</section>
+
+
+
+<section id="sect-syntax">
+ <title>Python syntax</title>
+
+ <para>
+
+ Because &SCons; configuration files are Python scripts, normal Python
+ syntax can be used to generate or manipulate lists of targets or
+ dependencies:
+
+ </para>
+
+ <programlisting>
+ sources = ['aaa.c', 'bbb.c', 'ccc.c']
+ env.Make('bar', sources)
+ </programlisting>
+
+ <para>
+
+ Python flow-control can be used to iterate through invocations of
+ build rules:
+
+ </para>
+
+ <programlisting>
+ objects = ['aaa.o', 'bbb.o', 'ccc.o']
+ for obj in objects:
+ src = replace(obj, '.o', '.c')
+ env.Make(obj, src)
+ </programlisting>
+
+ <para>
+
+ or to handle more complicated conditional invocations:
+
+ </para>
+
+ <programlisting>
+ # only build 'foo' on Linux systems
+ if sys.platform == 'linux1':
+ env.Make('foo', 'foo.c')
+ </programlisting>
+
+ <para>
+
+ Because &SCons; configuration files are Python scripts, syntax errors
+ will be caught by the Python parser. Target-building does not begin
+ until after all configuration files are read, so a syntax error will
+ not cause a build to fail half-way.
+
+ </para>
+
+</section>
+
+
+
+<section id="sect-subsidiary">
+ <title>Subsidiary configuration Files</title>
+
+ <para>
+
+ A configuration file can instruct &SCons; to read up subsidiary
+ configuration files. Subsidiary files are specified explicitly in a
+ configuration file via the &SConscript; method. As usual, multiple
+ file names may be specified with white space separation, or in an
+ array:
+
+ </para>
+
+ <programlisting>
+ SConscript('other_file')
+ SConscript('file1 file2')
+ SConscript(['file3', 'file4'])
+ SConscript(['file name with white space'])
+ </programlisting>
+
+ <para>
+
+ An explicit <literal>sconscript</literal> keyword may be used:
+
+ </para>
+
+ <programlisting>
+ SConscript(sconscript = 'other_file')
+ </programlisting>
+
+ <para>
+
+ Including subsidiary configuration files is recursive: a configuration
+ file included via &SConscript; may in turn &SConscript; other
+ configuration files.
+
+ </para>
+
+</section>
+
+
+
+<section id="sect-scoping">
+ <title>Variable scoping in subsidiary files</title>
+
+ <para>
+
+ When a subsidiary configuration file is read, it is given its own
+ namespace; it does not have automatic access to variables from the parent
+ configuration file.
+
+ </para>
+
+ <para>
+
+ Any variables (not just &SCons; objects) that are to be shared between configuration files must be
+ explicitly passed in the &SConscript; call
+ using the &Export; method:
+
+ </para>
+
+ <programlisting>
+ env = Environment()
+ debug = Environment(CCFLAGS = '-g')
+ installdir = '/usr/bin'
+ SConscript('src/SConscript', Export(env=env, debug=debug, installdir=installdir))
+ </programlisting>
+
+<!--
+The <literal>env=env</literal> stuff bugs me
+because it imposes extra work on the normal
+case where you <emphasis>don't</emphasis> rename
+the variables.
+Can we simplify the &Export; method
+so that a string
+without a keyword assignment
+is split into variables that are passed
+through transparently?
+Equivalent to the above example:
+<literal>SConscript('src/SConscript', Export('env debug installdir'))</literal>
+-->
+
+ <para>
+
+ Which may be specified explicitly using a keyword argument:
+
+ </para>
+
+ <programlisting>
+ env = Environment()
+ debug = Environment(CCFLAGS = '-g')
+ installdir = '/usr/bin'
+ SConscript(sconscript = 'src/SConscript',
+ export = Export(env=env, debug=debug, installdir=installdir))
+ </programlisting>
+
+ <para>
+
+ Explicit variable-passing provides control over exactly what is available
+ to a subsidiary file, and avoids unintended side effects of changes in
+ one configuration file affecting other far-removed configuration files
+ (a very hard-to-debug class of build problem).
+
+ </para>
+
+</section>
+
+
+
+<section id="sect-hierarchy">
+ <title>Hierarchical builds</title>
+
+ <para>
+
+ The &SConscript; method is so named because, by convention, subsidiary
+ configuration files in subdirectories are named &SConscript;:
+
+ </para>
+
+ <programlisting>
+ SConscript('src/SConscript')
+ SConscript('lib/build_me')
+ </programlisting>
+
+ <para>
+
+ When a subsidiary configuration file is read from a subdirectory, all
+ of that configuration file's targets and build rules are interpreted
+ relative to that directory (as if &SCons; had changed its working
+ directory to that subdirectory). This allows for easy support of
+ hierarchical builds of directory trees for large projects.
+
+ </para>
+
+</section>
+
+
+
+<section id="sect-sharing">
+ <title>Sharing &consenvs;</title>
+
+ <para>
+
+ &SCons; will allow users to share &consenvs;, as well as other &SCons;
+ objects and Python variables, by importing them from a central, shared
+ repository using normal Python syntax:
+
+ </para>
+
+ <programlisting>
+ from LocalEnvironments import optimized, debug
+
+ optimized.Make('foo', 'foo.c')
+ debug.Make('foo-d', 'foo.c')
+ </programlisting>
+
+ <para>
+
+ The expectation is that some local tool-master, integrator or
+ administrator will be responsible for assembling environments (creating
+ the &Builder; objects that specify the tools, options, etc.) and make
+ these available for sharing by all users.
+
+ </para>
+
+ <para>
+
+ The modules containing shared &consenvs;
+ (<literal>LocalEnvironments</literal> in the above example) can be
+ checked in and controlled with the rest of the source files. This
+ allows a project to track the combinations of tools and command-line
+ options that work on different platforms, at different times, and with
+ different tool versions, by using already-familiar revision control
+ tools.
+
+ </para>
+
+</section>
+
+
+
+<section id="sect-help">
+ <title>Help</title>
+
+ <para>
+
+ The &SCons; utility provides a &Help; function to allow the writer
+ of a &SConstruct; file to provide help text that is specific to
+ the local build tree:
+
+ </para>
+
+ <programlisting>
+ Help("""
+ Type:
+ scons . build and test everything
+ scons test build the software
+ scons src run the tests
+ scons web build the web pages
+ """)
+ </programlisting>
+
+ <para>
+
+ This help text is displayed in response to the <option>-h</option>
+ command-line option. Calling the &Help; function more than once is an
+ error.
+
+ </para>
+
+</section>
+
+
+
+<section id="sect-debug">
+ <title>Debug</title>
+
+ <para>
+
+ &SCons; supports several command-line options for printing extra
+ information with which to debug build problems.
+
+ </para>
+
+<!--
+These need to be specified and explained
+beyond what the man page will have.
+-->
+
+ <!-- BEGIN HTML -->
+
+ <para>
+
+ See the -d, -p, -pa, and -pw options
+ in the <!--<A HREF="#sccons_Man_page">man page</A>-->, below.
+ All of these options make use of call-back functions to
+ <!--<A HREF="reference.html#Customizing_output">control the output</A>-->
+ printed by the Build Engine.
+
+ </para>
+
+ <!-- END HTML -->
+
+</section>
+
+</chapter>
diff --git a/doc/design/overview.xml b/doc/design/overview.xml
new file mode 100644
index 0000000..cd50146
--- /dev/null
+++ b/doc/design/overview.xml
@@ -0,0 +1,508 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<chapter id="chap-overview"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
+<title>Overview</title>
+
+<!--
+
+ Copyright (c) 2001 - 2014 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-->
+
+<section id="sect-architecture">
+ <title>Architecture</title>
+
+ <para>
+
+ The heart of &SCons; is its <emphasis>Build Engine</emphasis>.
+ The &SCons; Build Engine is a Python module
+ that manages dependencies between
+ external objects
+ such as files or database records.
+ The Build Engine is designed to
+ be interface-neutral
+ and easily embeddable in any
+ software system that needs dependency
+ analysis between updatable objects.
+
+ </para>
+
+ <para>
+
+ The key parts of the Build Engine architecture
+ are captured in the following quasi-UML diagram:
+
+ </para>
+
+ <figure>
+ <title>&SCons; Architecture</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="engine.svg" align="center" scale="50"/>
+ </imageobject>
+ <imageobject>
+ <imagedata fileref="engine.jpg" align="center"/>
+ </imageobject>
+ </mediaobject>
+ </figure>
+
+ <para>
+
+ The point of &SCons; is to manage
+ dependencies between arbitrary external objects.
+ Consequently, the Build Engine does not restrict or specify
+ the nature of the external objects it manages,
+ but instead relies on subclass of the &Node;
+ class to interact with the external system or systems
+ (file systems, database management systems)
+ that maintain the objects being examined or updated.
+
+ </para>
+
+ <para>
+
+ The Build Engine presents to the software system in
+ which it is embedded
+ a Python API for specifying source (input) and target (output) objects,
+ rules for building/updating objects,
+ rules for scanning objects for dependencies, etc.
+ Above its Python API,
+ the Build Engine is completely
+ interface-independent,
+ and can be encapsulated by any other software
+ that supports embedded Python.
+
+ </para>
+
+ <para>
+
+ Software that chooses to use the Build Engine
+ for dependency management
+ interacts with it
+ through <emphasis>Construction Environments</emphasis>.
+ A Construction Environment consists
+ of a dictionary of environment variables,
+ and one or more associated
+ &Scanner; objects
+ and &Builder; objects.
+ The Python API is used to
+ form these associations.
+
+ </para>
+
+ <para>
+
+ A &Scanner; object specifies
+ how to examine a type of source object
+ (C source file, database record)
+ for dependency information.
+ A &Scanner; object may use
+ variables from the associated
+ Construction Environment
+ to modify how it scans an object:
+ specifying a search path for included files,
+ which field in a database record to consult,
+ etc.
+
+ </para>
+
+ <para>
+
+ A &Builder; object specifies
+ how to update a type of target object:
+ executable program, object file, database field, etc.
+ Like a &Scanner; object,
+ a &Builder; object may use
+ variables from the associated
+ Construction Environment
+ to modify how it builds an object:
+ specifying flags to a compiler,
+ using a different update function,
+ etc.
+
+ </para>
+
+ <para>
+
+ &Scanner; and &Builder; objects will return one or more
+ &Node; objects that represent external objects.
+ &Node; objects are the means by which the
+ Build Engine tracks dependencies:
+ A &Node; may represent a source (input) object that
+ should already exist,
+ or a target (output) object which may be built,
+ or both.
+ The &Node; class is sub-classed to
+ represent external objects of specific type:
+ files, directories, database fields or records, etc.
+ Because dependency information, however,
+ is tracked by the top-level &Node; methods and attributes,
+ dependencies can exist
+ between nodes representing different external object types.
+ For example,
+ building a file could be made
+ dependent on the value of a given
+ field in a database record,
+ or a database table could depend
+ on the contents of an external file.
+
+ </para>
+
+ <para>
+
+ The Build Engine uses a &Job; class (not displayed)
+ to manage the actual work of updating external target objects:
+ spawning commands to build files,
+ submitting the necessary commands to update a database record,
+ etc.
+ The &Job; class has sub-classes
+ to handle differences between spawning
+ jobs in parallel and serially.
+
+ </para>
+
+ <para>
+
+ The Build Engine also uses a
+ &Signature; class (not displayed)
+ to maintain information about whether
+ an external object is up-to-date.
+ Target objects with out-of-date signatures
+ are updated using the appropriate
+ &Builder; object.
+
+ </para>
+
+ <!-- BEGIN HTML -->
+
+ <!--
+ Details on the composition, methods,
+ and attributes of these classes
+ are available in the A HREF="internals.html" Internals /A page.
+ -->
+
+ <!-- END HTML -->
+
+</section>
+
+
+
+<section id="sect-engine">
+ <title>Build Engine</title>
+
+ <para>
+
+ More detailed discussion of some of the
+ Build Engine's characteristics:
+
+ </para>
+
+ <section>
+ <title>Python API</title>
+
+ <para>
+
+ The Build Engine can be embedded in any other software
+ that supports embedding Python:
+ in a GUI,
+ in a wrapper script that
+ interprets classic <filename>Makefile</filename> syntax,
+ or in any other software that
+ can translate its dependency representation
+ into the appropriate calls to the Build Engine API.
+ <!--<xref linkend="chap-native">--> describes in detail
+ the specification for a "Native Python" interface
+ that will drive the &SCons; implementation effort.
+
+ </para>
+
+ </section>
+
+ <section>
+ <title>Single-image execution</title>
+
+ <para>
+
+ When building/updating the objects,
+ the Build Engine operates as a single executable
+ with a complete Directed Acyclic Graph (DAG)
+ of the dependencies in the entire build tree.
+ This is in stark contrast to the
+ commonplace recursive use of Make
+ to handle hierarchical directory-tree builds.
+
+ </para>
+
+ </section>
+
+ <section>
+ <title>Dependency analysis</title>
+
+ <para>
+
+ Dependency analysis is carried out via digital signatures
+ (a.k.a. "fingerprints").
+ Contents of object are examined and reduced
+ to a number that can be stored and compared to
+ see if the object has changed.
+ Additionally, &SCons; uses the same
+ signature technique on the command-lines that
+ are executed to update an object.
+ If the command-line has changed since the last time,
+ then the object must be rebuilt.
+
+ </para>
+
+ </section>
+
+ <section>
+ <title>Customized output</title>
+
+ <para>
+
+ The output of Build Engine is customizable
+ through user-defined functions.
+ This could be used to print additional desired
+ information about what &SCons; is doing,
+ or tailor output to a specific build analyzer,
+ GUI, or IDE.
+
+ </para>
+
+ </section>
+
+ <section>
+ <title>Build failures</title>
+
+ <para>
+
+ &SCons; detects build failures via the exit status from the tools
+ used to build the target files. By default, a failed exit status
+ (non-zero on UNIX systems) terminates the build with an appropriate
+ error message. An appropriate class from the Python library will
+ interpret build-tool failures via an OS-independent API.
+
+ </para>
+
+ <para>
+
+ If multiple tasks are executing in a parallel build, and one tool
+ returns failure, &SCons; will not initiate any further build tasks,
+ but allow the other build tasks to complete before terminating.
+
+ </para>
+
+ <para>
+
+ A <option>-k</option> command-line option may be used to ignore
+ errors and continue building other targets. In no case will a target
+ that depends on a failed build be rebuilt.
+
+ </para>
+
+ </section>
+
+</section>
+
+
+
+<section id="sect-interfaces">
+ <title>Interfaces</title>
+
+ <para>
+
+ As previously described,
+ the &SCons; Build Engine
+ is interface-independent above its Python API,
+ and can be embedded in any software system
+ that can translate its dependency requirements
+ into the necessary Python calls.
+
+ </para>
+
+ <para>
+
+ The "main" &SCons; interface
+ for implementation purposes,
+ uses Python scripts as configuration files.
+ Because this exposes the Build Engine's Python API to the user,
+ it is current called the "Native Python" interface.
+
+ </para>
+
+ <para>
+
+ This section will also discuss
+ how &SCons; will function in the context
+ of two other interfaces:
+ the &Makefile; interface of the classic &Make; utility,
+ and a hypothetical graphical user interface (GUI).
+
+ </para>
+
+ <section>
+ <title>Native Python interface</title>
+
+ <para>
+
+ The Native Python interface is intended to be the primary interface
+ by which users will know &SCons;--that is,
+ it is the interface they will use
+ if they actually type &SCons; at a command-line prompt.
+
+ </para>
+
+ <para>
+
+ In the Native Python interface, &SCons; configuration files are simply
+ Python scripts that directly invoke methods from the Build Engine's
+ Python API to specify target files to be built, rules for building
+ the target files, and dependencies. Additional methods, specific to
+ this interface, are added to handle functionality that is specific to
+ the Native Python interface: reading a subsidiary configuration file;
+ copying target files to an installation directory; etc.
+
+ </para>
+
+ <para>
+
+ Because configuration files are Python scripts, Python flow control
+ can be used to provide very flexible manipulation of objects and
+ dependencies. For example, a function could be used to invoke a common
+ set of methods on a file, and called iteratively over an array of
+ files.
+
+ </para>
+
+ <para>
+
+ As an additional advantage, syntax errors in &SCons; Native Python
+ configuration files will be caught by the Python parser. Target-building
+ does not begin until after all configuration files are read, so a syntax
+ error will not cause a build to fail half-way.
+
+ </para>
+
+ </section>
+
+ <section>
+ <title>Makefile interface</title>
+
+ <para>
+
+ An alternate &SCons; interface would provide backwards
+ compatibility with the classic &Make; utility.
+ This would be done by embedding the &SCons; Build Engine
+ in a Python script that can translate existing
+ &Makefile;s into the underlying calls to the
+ Build Engine's Python API
+ for building and tracking dependencies.
+ Here are approaches to solving some of the issues
+ that arise from marrying these two pieces:
+
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ &Makefile; suffix rules can be translated
+ into an appropriate &Builder; object
+ with suffix maps from the Construction Environment.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Long lists of static dependences
+ appended to a &Makefile; by
+ various <command>"make depend"</command> schemes
+ can be preserved
+ but supplemented by
+ the more accurate dependency information
+ provided by &Scanner; objects.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Recursive invocations of &Make;
+ can be avoided by reading up
+ the subsidiary &Makefile; instead.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+
+ Lest this seem like too outlandish an undertaking,
+ there is a working example of this approach:
+ Gary Holt's &Makepp; utility
+ is a Perl script that provides
+ admirably complete parsing of complicated &Makefile;s
+ around an internal build engine inspired,
+ in part, by the classic <application>Cons</application> utility.
+
+ </para>
+
+ </section>
+
+ <section>
+ <title>Graphical interfaces</title>
+
+ <para>
+
+ The &SCons; Build Engine
+ is designed from the ground up to be embedded
+ into multiple interfaces.
+ Consequently, embedding the dependency capabilities
+ of &SCons; into graphical interface
+ would be a matter of mapping the
+ GUI's dependency representation
+ (either implicit or explicit)
+ into corresponding calls to the Python API
+ of the &SCons; Build Engine.
+
+ </para>
+
+ <para>
+
+ Note, however, that this proposal leaves the problem of
+ designed a good graphical interface
+ for representing software build dependencies
+ to people with actual GUI design experience...
+
+ </para>
+
+ </section>
+
+</section>
+
+</chapter>
diff --git a/doc/design/pdf.xsl b/doc/design/pdf.xsl
new file mode 100644
index 0000000..57c246b
--- /dev/null
+++ b/doc/design/pdf.xsl
@@ -0,0 +1,72 @@
+<?xml version='1.0'?>
+<!--
+
+ Copyright (c) 2001 - 2014 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-->
+
+<xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ version="1.0">
+
+ <xsl:import href="../../src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/docbook.xsl"/>
+ <xsl:include href="scons_title.xsl"/>
+<xsl:param name="l10n.gentext.default.language" select="'en'"/>
+<xsl:param name="section.autolabel" select="1"></xsl:param>
+<xsl:param name="section.label.includes.component.label" select="1"/>
+<xsl:param name="paper.type" select="'letter'"></xsl:param>
+<xsl:param name="body.start.indent">0pt</xsl:param>
+<xsl:param name="shade.verbatim" select="1"></xsl:param>
+<xsl:param name="variablelist.term.break.after" select="1"></xsl:param>
+
+<xsl:param name="generate.toc">
+/appendix toc,title
+article/appendix nop
+/article toc,title
+book toc,title,figure,table,example,equation
+/chapter toc,title
+part toc,title
+/preface toc,title
+reference toc,title
+/sect1 toc
+/sect2 toc
+/sect3 toc
+/sect4 toc
+/sect5 toc
+/section toc
+set toc,title
+</xsl:param>
+
+<xsl:attribute-set name="variablelist.term.properties">
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+</xsl:attribute-set>
+
+<xsl:template match="variablelist">
+ <xsl:variable name="presentation">
+ <xsl:call-template name="pi.dbfo_list-presentation"/>
+ </xsl:variable>
+ <xsl:apply-templates select="." mode="vl.as.blocks"/>
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/doc/design/scons.css b/doc/design/scons.css
new file mode 100644
index 0000000..ff9b5a1
--- /dev/null
+++ b/doc/design/scons.css
@@ -0,0 +1,263 @@
+body {
+ background: #ffffff;
+ margin: 10px;
+ padding: 0;
+ font-family:palatino, georgia, verdana, arial, sans-serif;
+ }
+
+
+a:link {
+ color: #80572a;
+ }
+
+a:link:hover {
+ color: #d72816;
+ text-decoration: none;
+ }
+
+tt {
+ color: #a14447;
+ }
+
+pre {
+ background: #e0e0e0;
+ }
+
+#main {
+ border: 1px solid;
+ border-color: black;
+ background-color: white;
+ background-image: url(../images/sconsback.png);
+ background-repeat: repeat-y 50% 0;
+ background-position: right top;
+ margin: 30px auto;
+ width: 750px;
+ }
+
+#banner {
+ background-image: url(../images/scons-banner.jpg);
+ border-bottom: 1px solid;
+ height: 95px;
+ }
+
+#menu {
+ font-family: sans-serif;
+ font-size: small;
+ line-height: 0.9em;
+ float: right;
+ width: 220px;
+ clear: both;
+ margin-top: 10px;
+ }
+
+#menu li {
+ margin-bottom: 7px;
+ }
+
+#menu li li {
+ margin-bottom: 2px;
+ }
+
+#menu li.submenuitems {
+ margin-bottom: 2px;
+ }
+
+#menu a {
+ text-decoration: none;
+ }
+
+#footer {
+ border-top: 1px solid black;
+ text-align: center;
+ font-size: small;
+ color: #822;
+ margin-top: 4px;
+ background: #eee;
+ }
+
+ul.hack {
+ list-style-position:inside;
+ }
+
+ul.menuitems {
+ list-style-type: none;
+ }
+
+ul.submenuitems {
+ list-style-type: none;
+ font-size: smaller;
+ margin-left: 0;
+ padding-left: 16px;
+ }
+
+ul.subsubmenuitems {
+ list-style-type: none;
+ font-size: smaller;
+ margin-left: 0;
+ padding-left: 16px;
+ }
+
+ol.upper-roman {
+ list-style-type: upper-roman;
+ }
+
+ol.decimal {
+ list-style-type: decimal;
+ }
+
+#currentpage {
+ font-weight: bold;
+ }
+
+#bodycontent {
+ margin: 15px;
+ width: 520px;
+ font-size: small;
+ line-height: 1.5em;
+ }
+
+#bodycontent li {
+ margin-bottom: 6px;
+ list-style-type: square;
+ }
+
+#sconsdownloadtable downloadtable {
+ display: table;
+ margin-left: 5%;
+ border-spacing: 12px 3px;
+ }
+
+#sconsdownloadtable downloadrow {
+ display: table-row;
+ }
+
+#sconsdownloadtable downloadentry {
+ display: table-cell;
+ text-align: center;
+ vertical-align: bottom;
+ }
+
+#sconsdownloadtable downloaddescription {
+ display: table-cell;
+ font-weight: bold;
+ text-align: left;
+ }
+
+#sconsdownloadtable downloadversion {
+ display: table-cell;
+ font-weight: bold;
+ text-align: center;
+ }
+
+#sconsdocversiontable sconsversiontable {
+ display: table;
+ margin-left: 10%;
+ border-spacing: 12px 3px;
+ }
+
+#sconsdocversiontable sconsversionrow {
+ display: table-row;
+ }
+
+#sconsdocversiontable docformat {
+ display: table-cell;
+ font-weight: bold;
+ text-align: center;
+ vertical-align: bottom;
+ }
+
+#sconsdocversiontable sconsversion {
+ display: table-cell;
+ font-weight: bold;
+ text-align: left;
+ }
+
+#sconsdocversiontable docversion {
+ display: table-cell;
+ font-weight: bold;
+ text-align: center;
+ }
+
+#osrating {
+ margin-left: 35px;
+ }
+
+
+h2 {
+ color: #272;
+ color: #c01714;
+ font-family: sans-serif;
+ font-weight: normal;
+ }
+
+h2.pagetitle {
+ font-size: xx-large;
+ }
+h3 {
+ margin-bottom: 10px;
+ }
+
+.date {
+ font-size: small;
+ color: gray;
+ }
+
+.link {
+ margin-bottom: 22px;
+ }
+
+.linkname {
+ }
+
+.linkdesc {
+ margin: 10px;
+ margin-top: 0;
+ }
+
+.quote {
+ margin-top: 20px;
+ margin-bottom: 10px;
+ background: #f8f8f8;
+ border: 1px solid;
+ border-color: #ddd;
+ }
+
+.quotetitle {
+ font-weight: bold;
+ font-size: large;
+ margin: 10px;
+ }
+
+.quotedesc {
+ margin-left: 20px;
+ margin-right: 10px;
+ margin-bottom: 15px;
+ }
+
+.quotetext {
+ margin-top: 20px;
+ margin-left: 20px;
+ margin-right: 10px;
+ font-style: italic;
+ }
+
+.quoteauthor {
+ font-size: small;
+ text-align: right;
+ margin-top: 10px;
+ margin-right: 7px;
+ }
+
+.sconslogo {
+ font-style: normal;
+ font-weight: bold;
+ color: #822;
+ }
+
+.downloadlink {
+ }
+
+.downloaddescription {
+ margin-left: 1em;
+ margin-bottom: 0.4em;
+ }
diff --git a/doc/design/scons_title.xsl b/doc/design/scons_title.xsl
new file mode 100644
index 0000000..7fc9589
--- /dev/null
+++ b/doc/design/scons_title.xsl
@@ -0,0 +1,6352 @@
+<?xml version="1.0"?>
+<!--
+
+ Copyright (c) 2001 - 2014 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:exsl="http://exslt.org/common"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ version="1.0" exclude-result-prefixes="exsl">
+
+<!-- This stylesheet was created by template/titlepage.xsl; do not edit it by hand. -->
+
+<xsl:template name="article.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="articleinfo/title">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/title"/>
+ </xsl:when>
+ <xsl:when test="artheader/title">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="articleinfo/subtitle">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="artheader/subtitle">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/mediaobject"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/mediaobject"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/mediaobject"/>
+</xsl:template>
+
+<xsl:template name="article.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="article.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="article.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="article.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="article.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" font-family="{$title.fontset}">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="article.titlepage.before.recto"/>
+ <xsl:call-template name="article.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block start-indent="0pt" text-align="center"><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="article.titlepage.before.verso"/>
+ <xsl:call-template name="article.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="article.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="article.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="article.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="article.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" keep-with-next.within-column="always" font-size="24.8832pt" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::article[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="article.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="mediaobject" mode="article.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="set.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="setinfo/title">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="setinfo/subtitle">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/corpauthor"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/authorgroup"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/author"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/othercredit"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/releaseinfo"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/copyright"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/legalnotice"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/pubdate"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/revision"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/revhistory"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/abstract"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="set.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="set.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="set.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="set.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="set.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="set.titlepage.before.recto"/>
+ <xsl:call-template name="set.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="set.titlepage.before.verso"/>
+ <xsl:call-template name="set.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="set.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="set.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="set.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style" text-align="center" font-size="24.8832pt" space-before="18.6624pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="division.title">
+<xsl:with-param name="node" select="ancestor-or-self::set[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style" font-family="{$title.fontset}" text-align="center">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="set.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:param name="scons.inner.twidtha">
+ <xsl:choose>
+ <xsl:when test="$paper.type = 'A4'">200mm</xsl:when>
+ <xsl:otherwise>205.9mm</xsl:otherwise> <!-- 8.5in-10mm -->
+ </xsl:choose>
+</xsl:param>
+<xsl:param name="scons.inner.twidthb">
+ <xsl:choose>
+ <xsl:when test="$paper.type = 'A4'">190mm</xsl:when>
+ <xsl:otherwise>195.9mm</xsl:otherwise> <!-- 8.5in-20mm -->
+ </xsl:choose>
+</xsl:param>
+<xsl:param name="scons.inner.twidthc">
+ <xsl:choose>
+ <xsl:when test="$paper.type = 'A4'">180mm</xsl:when>
+ <xsl:otherwise>185.9mm</xsl:otherwise> <!-- 8.5in-30mm -->
+ </xsl:choose>
+</xsl:param>
+
+<xsl:template name="book.titlepage.recto">
+
+ <fo:block-container height="3mm">
+ <fo:block></fo:block>
+ </fo:block-container>
+ <fo:block>
+ <fo:table table-layout="fixed" width="100%" padding="0pt" border-width="0pt" border-style="none">
+
+ <fo:table-column column-width="10mm"/>
+ <fo:table-column column-width="{$scons.inner.twidtha}"/>
+ <fo:table-body>
+ <fo:table-row text-align="center">
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ <fo:table-cell text-align="center">
+ <fo:block line-height="0">
+ <fo:external-graphic
+ src="url(titlepage/SConsBuildBricks_path.svg)"
+ width="{$scons.inner.twidtha}" content-width="scale-to-fit"
+ scaling="uniform"/>
+ </fo:block></fo:table-cell>
+ </fo:table-row>
+ </fo:table-body>
+ </fo:table>
+ </fo:block>
+
+
+ <fo:block-container height="4cm">
+ <fo:block></fo:block>
+ </fo:block-container>
+
+<fo:block>
+ <fo:table table-layout="fixed" width="100%" border-width="0pt" border-style="none">
+
+ <fo:table-column column-width="10mm"/>
+ <fo:table-column column-width="{$scons.inner.twidthc}"/>
+ <fo:table-column column-width="20mm"/>
+
+ <fo:table-body>
+ <fo:table-row text-align="center">
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ <fo:table-cell text-align="left" display-align="after">
+ <xsl:choose>
+ <xsl:when test="bookinfo/title">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:block><fo:inline> </fo:inline></fo:block>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:table-cell>
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ </fo:table-body>
+ </fo:table>
+ </fo:block>
+
+<!--
+ <fo:block-container height="6mm">
+ <fo:block></fo:block>
+ </fo:block-container>
+-->
+
+ <xsl:choose>
+ <xsl:when test="bookinfo/edition">
+<fo:block>
+ <fo:table table-layout="fixed" width="100%" border-width="0pt" border-style="none">
+
+ <fo:table-column column-width="10mm"/>
+ <fo:table-column column-width="{$scons.inner.twidthc}"/>
+ <fo:table-column column-width="20mm"/>
+
+ <fo:table-body>
+ <fo:table-row text-align="center">
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ <fo:table-cell text-align="left" display-align="after">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/edition"/>
+ </fo:table-cell>
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ </fo:table-body>
+ </fo:table>
+ </fo:block>
+
+ <fo:block-container height="9mm">
+ <fo:block></fo:block>
+ </fo:block-container>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:block-container height="6mm">
+ <fo:block></fo:block>
+ </fo:block-container>
+ </xsl:otherwise>
+ </xsl:choose>
+
+
+<fo:block>
+ <fo:table table-layout="fixed" width="100%" border-width="0pt" border-style="none">
+
+ <fo:table-column column-width="10mm"/>
+ <fo:table-column column-width="{$scons.inner.twidthc}"/>
+ <fo:table-column column-width="20mm"/>
+
+ <fo:table-body>
+ <fo:table-row text-align="center">
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ <fo:table-cell text-align="left" display-align="after">
+ <xsl:choose>
+ <xsl:when test="bookinfo/subtitle">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:block><fo:inline> </fo:inline></fo:block>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:table-cell>
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ </fo:table-body>
+ </fo:table>
+ </fo:block>
+
+
+ <xsl:choose>
+ <xsl:when test="bookinfo/corpauthor">
+ <fo:block-container height="15mm">
+ <fo:block></fo:block>
+ </fo:block-container>
+<fo:block>
+ <fo:table table-layout="fixed" width="100%" border-width="0pt" border-style="none">
+
+ <fo:table-column column-width="10mm"/>
+ <fo:table-column column-width="{$scons.inner.twidthc}"/>
+ <fo:table-column column-width="20mm"/>
+
+ <fo:table-body>
+ <fo:table-row text-align="center">
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ <fo:table-cell text-align="left" display-align="after">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/corpauthor"/>
+ </fo:table-cell>
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ </fo:table-body>
+ </fo:table>
+ </fo:block>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <fo:block-container height="9mm">
+ <fo:block></fo:block>
+ </fo:block-container>
+
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/mediaobject"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/mediaobject"/>
+</xsl:template>
+
+<xsl:template name="book.titlepage.verso">
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/releaseinfo"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/copyright"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/pubdate"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/revision"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/legalnotice"/>
+</xsl:template>
+
+<xsl:template name="book.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="book.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="book.titlepage.before.verso"><fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" break-after="page"/>
+</xsl:template>
+
+<xsl:template name="book.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="book.titlepage.before.recto"/>
+ <xsl:call-template name="book.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="book.titlepage.before.verso"/>
+ <xsl:call-template name="book.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="book.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="book.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="book.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<!--
+<xsl:template match="title" mode="book.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" text-align="center" font-size="24pt" space-before="18pt" font-weight="bold" font-family="'serif'">
+<xsl:call-template name="division.title">
+<xsl:with-param name="node" select="ancestor-or-self::book[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="book.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" text-align="left" font-size="20pt" space-before="15pt" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+-->
+<xsl:template match="corpauthor" mode="book.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" text-align="left" font-size="20pt" space-before="0pt" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="mediaobject" mode="book.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="book.titlepage.verso.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style">
+<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="book.titlepage.verso.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style">
+<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="book.titlepage.verso.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style">
+<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="book.titlepage.verso.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style">
+<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="part.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="partinfo/title">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="partinfo/subtitle">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="part.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="part.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="part.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="part.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="part.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="part.titlepage.before.recto"/>
+ <xsl:call-template name="part.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="part.titlepage.before.verso"/>
+ <xsl:call-template name="part.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="part.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="part.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="part.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="part.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="part.titlepage.recto.style" text-align="center" font-size="24.8832pt" space-before="18.6624pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="division.title">
+<xsl:with-param name="node" select="ancestor-or-self::part[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="part.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="part.titlepage.recto.style" text-align="center" font-size="20.736pt" space-before="15.552pt" font-weight="bold" font-style="italic" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="partintro.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="partintroinfo/title">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="partintroinfo/subtitle">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/corpauthor"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/authorgroup"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/author"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/othercredit"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/releaseinfo"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/copyright"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/copyright"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/legalnotice"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/pubdate"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/revision"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/revision"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/revhistory"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/abstract"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/abstract"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="partintro.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="partintro.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="partintro.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="partintro.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="partintro.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="partintro.titlepage.before.recto"/>
+ <xsl:call-template name="partintro.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="partintro.titlepage.before.verso"/>
+ <xsl:call-template name="partintro.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="partintro.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="partintro.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="partintro.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style" text-align="center" font-size="24.8832pt" font-weight="bold" space-before="1em" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style" text-align="center" font-size="14.4pt" font-weight="bold" font-style="italic" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="partintro.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="reference.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="referenceinfo/title">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="referenceinfo/subtitle">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/corpauthor"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/authorgroup"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/author"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/othercredit"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/releaseinfo"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/copyright"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/copyright"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/legalnotice"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/pubdate"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/revision"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/revision"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/revhistory"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/abstract"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/abstract"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="reference.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="reference.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="reference.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="reference.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="reference.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="reference.titlepage.before.recto"/>
+ <xsl:call-template name="reference.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="reference.titlepage.before.verso"/>
+ <xsl:call-template name="reference.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="reference.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="reference.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="reference.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style" text-align="center" font-size="24.8832pt" space-before="18.6624pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="division.title">
+<xsl:with-param name="node" select="ancestor-or-self::reference[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style" font-family="{$title.fontset}" text-align="center">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="reference.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="refsynopsisdiv.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="refsynopsisdivinfo/title">
+ <xsl:apply-templates mode="refsynopsisdiv.titlepage.recto.auto.mode" select="refsynopsisdivinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="refsynopsisdiv.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="refsynopsisdiv.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="refsynopsisdiv.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="refsynopsisdiv.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="refsynopsisdiv.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="refsynopsisdiv.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="refsynopsisdiv.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="refsynopsisdiv.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="refsynopsisdiv.titlepage.before.recto"/>
+ <xsl:call-template name="refsynopsisdiv.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="refsynopsisdiv.titlepage.before.verso"/>
+ <xsl:call-template name="refsynopsisdiv.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="refsynopsisdiv.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="refsynopsisdiv.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="refsynopsisdiv.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="refsynopsisdiv.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="refsynopsisdiv.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="refsynopsisdiv.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="refsection.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="refsectioninfo/title">
+ <xsl:apply-templates mode="refsection.titlepage.recto.auto.mode" select="refsectioninfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="refsection.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="refsection.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="refsection.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="refsection.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="refsection.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="refsection.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="refsection.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="refsection.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="refsection.titlepage.before.recto"/>
+ <xsl:call-template name="refsection.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="refsection.titlepage.before.verso"/>
+ <xsl:call-template name="refsection.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="refsection.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="refsection.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="refsection.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="refsection.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="refsection.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="refsection.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="refsect1.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="refsect1info/title">
+ <xsl:apply-templates mode="refsect1.titlepage.recto.auto.mode" select="refsect1info/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="refsect1.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="refsect1.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="refsect1.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="refsect1.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="refsect1.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="refsect1.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="refsect1.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="refsect1.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="refsect1.titlepage.before.recto"/>
+ <xsl:call-template name="refsect1.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="refsect1.titlepage.before.verso"/>
+ <xsl:call-template name="refsect1.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="refsect1.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="refsect1.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="refsect1.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="refsect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="refsect1.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="refsect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="refsect2.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="refsect2info/title">
+ <xsl:apply-templates mode="refsect2.titlepage.recto.auto.mode" select="refsect2info/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="refsect2.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="refsect2.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="refsect2.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="refsect2.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="refsect2.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="refsect2.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="refsect2.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="refsect2.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="refsect2.titlepage.before.recto"/>
+ <xsl:call-template name="refsect2.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="refsect2.titlepage.before.verso"/>
+ <xsl:call-template name="refsect2.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="refsect2.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="refsect2.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="refsect2.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="refsect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="refsect2.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="refsect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="refsect3.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="refsect3info/title">
+ <xsl:apply-templates mode="refsect3.titlepage.recto.auto.mode" select="refsect3info/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="refsect3.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="refsect3.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="refsect3.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="refsect3.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="refsect3.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="refsect3.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="refsect3.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="refsect3.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="refsect3.titlepage.before.recto"/>
+ <xsl:call-template name="refsect3.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="refsect3.titlepage.before.verso"/>
+ <xsl:call-template name="refsect3.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="refsect3.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="refsect3.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="refsect3.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="refsect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="refsect3.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="refsect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="dedication.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="dedication.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::dedication[1]"/>
+</xsl:call-template></fo:block>
+ <xsl:choose>
+ <xsl:when test="dedicationinfo/subtitle">
+ <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="dedicationinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="dedication.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="dedication.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="dedication.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="dedication.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="dedication.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="dedication.titlepage.before.recto"/>
+ <xsl:call-template name="dedication.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="dedication.titlepage.before.verso"/>
+ <xsl:call-template name="dedication.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="dedication.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="dedication.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="dedication.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="dedication.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="dedication.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="dedication.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="preface.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::preface[1]"/>
+</xsl:call-template></fo:block>
+ <xsl:choose>
+ <xsl:when test="prefaceinfo/subtitle">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/corpauthor"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/authorgroup"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/author"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/othercredit"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/releaseinfo"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/copyright"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/copyright"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/legalnotice"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/pubdate"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/revision"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/revision"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/revhistory"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/abstract"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/abstract"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="preface.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="preface.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="preface.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="preface.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="preface.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="preface.titlepage.before.recto"/>
+ <xsl:call-template name="preface.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="preface.titlepage.before.verso"/>
+ <xsl:call-template name="preface.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="preface.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="preface.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="preface.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="preface.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="chapter.titlepage.recto">
+
+ <fo:block-container height="1cm">
+ <fo:block></fo:block>
+ </fo:block-container>
+
+<fo:block text-align="center">
+ <fo:leader leader-length="85%" leader-pattern="rule" rule-style="solid" rule-thickness="1pt" color="#C51410"/>
+</fo:block>
+
+ <fo:block-container height="0.7cm">
+ <fo:block></fo:block>
+ </fo:block-container>
+
+ <xsl:choose>
+ <xsl:when test="chapterinfo/title">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+
+ <fo:block-container height="0.7cm">
+ <fo:block></fo:block>
+ </fo:block-container>
+
+
+<fo:block text-align="center">
+ <fo:leader leader-length="85%" leader-pattern="rule" rule-style="solid" rule-thickness="1pt" color="#C51410"/>
+</fo:block>
+
+ <fo:block-container height="1cm">
+ <fo:block></fo:block>
+ </fo:block-container>
+
+</xsl:template>
+
+<xsl:template name="chapter.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="chapter.titlepage.separator">
+<!--
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" break-after="page"/>
+-->
+</xsl:template>
+
+<xsl:template name="chapter.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="chapter.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="chapter.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" font-family="{$title.fontset}">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="chapter.titlepage.before.recto"/>
+ <xsl:call-template name="chapter.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block margin-left="{$title.margin.left}"><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="chapter.titlepage.before.verso"/>
+ <xsl:call-template name="chapter.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="chapter.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="chapter.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="chapter.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style" font-size="24.8832pt" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::chapter[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style" space-before="0.5em" font-style="italic" font-size="14.4pt" font-weight="bold">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style" space-before="0.5em" space-after="0.5em" font-size="14.4pt">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style" space-before="0.5em" space-after="0.5em" font-size="14.4pt">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style" space-before="0.5em" space-after="0.5em" font-size="14.4pt">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="appendix.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="appendixinfo/title">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="appendixinfo/subtitle">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/corpauthor"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/authorgroup"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/author"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/othercredit"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/releaseinfo"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/copyright"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/copyright"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/legalnotice"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/pubdate"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/revision"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/revision"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/revhistory"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/abstract"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/abstract"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="appendix.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="appendix.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="appendix.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="appendix.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="appendix.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="appendix.titlepage.before.recto"/>
+ <xsl:call-template name="appendix.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="appendix.titlepage.before.verso"/>
+ <xsl:call-template name="appendix.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="appendix.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="appendix.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="appendix.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="24.8832pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::appendix[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="appendix.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="section.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sectioninfo/title">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sectioninfo/subtitle">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/corpauthor"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/authorgroup"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/author"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/othercredit"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/releaseinfo"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/copyright"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/legalnotice"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/pubdate"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/revision"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/revhistory"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/abstract"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="section.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="section.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="section.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="section.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="section.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="section.titlepage.before.recto"/>
+ <xsl:call-template name="section.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="section.titlepage.before.verso"/>
+ <xsl:call-template name="section.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="section.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="section.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="section.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="section.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="sect1.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sect1info/title">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sect1info/subtitle">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/corpauthor"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/authorgroup"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/author"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/othercredit"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/releaseinfo"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/copyright"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/legalnotice"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/pubdate"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/revision"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/revhistory"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/abstract"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="sect1.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="sect1.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="sect1.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="sect1.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="sect1.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="sect1.titlepage.before.recto"/>
+ <xsl:call-template name="sect1.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="sect1.titlepage.before.verso"/>
+ <xsl:call-template name="sect1.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="sect1.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="sect1.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="sect1.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="sect1.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="sect2.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sect2info/title">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sect2info/subtitle">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/corpauthor"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/authorgroup"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/author"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/othercredit"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/releaseinfo"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/copyright"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/legalnotice"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/pubdate"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/revision"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/revhistory"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/abstract"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="sect2.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="sect2.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="sect2.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="sect2.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="sect2.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="sect2.titlepage.before.recto"/>
+ <xsl:call-template name="sect2.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="sect2.titlepage.before.verso"/>
+ <xsl:call-template name="sect2.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="sect2.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="sect2.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="sect2.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="sect2.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="sect3.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sect3info/title">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sect3info/subtitle">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/corpauthor"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/authorgroup"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/author"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/othercredit"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/releaseinfo"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/copyright"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/legalnotice"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/pubdate"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/revision"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/revhistory"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/abstract"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="sect3.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="sect3.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="sect3.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="sect3.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="sect3.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="sect3.titlepage.before.recto"/>
+ <xsl:call-template name="sect3.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="sect3.titlepage.before.verso"/>
+ <xsl:call-template name="sect3.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="sect3.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="sect3.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="sect3.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="sect3.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="sect4.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sect4info/title">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sect4info/subtitle">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/corpauthor"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/authorgroup"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/author"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/othercredit"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/releaseinfo"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/copyright"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/legalnotice"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/pubdate"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/revision"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/revhistory"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/abstract"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="sect4.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="sect4.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="sect4.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="sect4.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="sect4.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="sect4.titlepage.before.recto"/>
+ <xsl:call-template name="sect4.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="sect4.titlepage.before.verso"/>
+ <xsl:call-template name="sect4.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="sect4.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="sect4.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="sect4.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="sect4.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="sect5.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sect5info/title">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sect5info/subtitle">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/corpauthor"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/authorgroup"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/author"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/othercredit"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/releaseinfo"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/copyright"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/legalnotice"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/pubdate"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/revision"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/revhistory"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/abstract"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="sect5.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="sect5.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="sect5.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="sect5.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="sect5.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="sect5.titlepage.before.recto"/>
+ <xsl:call-template name="sect5.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="sect5.titlepage.before.verso"/>
+ <xsl:call-template name="sect5.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="sect5.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="sect5.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="sect5.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="sect5.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="simplesectinfo/title">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="simplesectinfo/subtitle">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/corpauthor"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/authorgroup"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/author"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/othercredit"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/releaseinfo"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/copyright"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/copyright"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/legalnotice"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/pubdate"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/revision"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/revision"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/revhistory"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/abstract"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/abstract"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="simplesect.titlepage.before.recto"/>
+ <xsl:call-template name="simplesect.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="simplesect.titlepage.before.verso"/>
+ <xsl:call-template name="simplesect.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="simplesect.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="simplesect.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="simplesect.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="simplesect.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="bibliography.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::bibliography[1]"/>
+</xsl:call-template></fo:block>
+ <xsl:choose>
+ <xsl:when test="bibliographyinfo/subtitle">
+ <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="bibliographyinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="bibliography.titlepage.before.recto"/>
+ <xsl:call-template name="bibliography.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="bibliography.titlepage.before.verso"/>
+ <xsl:call-template name="bibliography.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="bibliography.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="bibliography.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="bibliography.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="bibliography.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="bibliography.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="bibliography.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="bibliodiv.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="bibliodivinfo/title">
+ <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="bibliodivinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="bibliodivinfo/subtitle">
+ <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="bibliodivinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="bibliodiv.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="bibliodiv.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="bibliodiv.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="bibliodiv.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="bibliodiv.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="bibliodiv.titlepage.before.recto"/>
+ <xsl:call-template name="bibliodiv.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="bibliodiv.titlepage.before.verso"/>
+ <xsl:call-template name="bibliodiv.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="bibliodiv.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="bibliodiv.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="bibliodiv.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="bibliodiv.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="bibliodiv.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="20.736pt" font-family="{$title.fontset}" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::bibliodiv[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="bibliodiv.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="bibliodiv.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="bibliodiv.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="glossary.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="glossary.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::glossary[1]"/>
+</xsl:call-template></fo:block>
+ <xsl:choose>
+ <xsl:when test="glossaryinfo/subtitle">
+ <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="glossaryinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="glossary.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="glossary.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="glossary.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="glossary.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="glossary.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="glossary.titlepage.before.recto"/>
+ <xsl:call-template name="glossary.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="glossary.titlepage.before.verso"/>
+ <xsl:call-template name="glossary.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="glossary.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="glossary.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="glossary.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="glossary.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="glossary.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="glossary.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="glossdiv.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="glossdivinfo/title">
+ <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="glossdivinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="glossdivinfo/subtitle">
+ <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="glossdivinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="glossdiv.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="glossdiv.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="glossdiv.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="glossdiv.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="glossdiv.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="glossdiv.titlepage.before.recto"/>
+ <xsl:call-template name="glossdiv.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="glossdiv.titlepage.before.verso"/>
+ <xsl:call-template name="glossdiv.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="glossdiv.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="glossdiv.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="glossdiv.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="glossdiv.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="glossdiv.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="20.736pt" font-family="{$title.fontset}" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::glossdiv[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="glossdiv.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="glossdiv.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="glossdiv.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="index.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="index.titlepage.recto.style" margin-left="0pt" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::index[1]"/>
+<xsl:with-param name="pagewide" select="1"/>
+</xsl:call-template></fo:block>
+ <xsl:choose>
+ <xsl:when test="indexinfo/subtitle">
+ <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="indexinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="index.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="index.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="index.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="index.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="index.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="index.titlepage.before.recto"/>
+ <xsl:call-template name="index.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="index.titlepage.before.verso"/>
+ <xsl:call-template name="index.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="index.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="index.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="index.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="index.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="index.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="index.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="indexdiv.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="indexdiv.titlepage.recto.style">
+<xsl:call-template name="indexdiv.title">
+<xsl:with-param name="title" select="title"/>
+</xsl:call-template></fo:block>
+ <xsl:choose>
+ <xsl:when test="indexdivinfo/subtitle">
+ <xsl:apply-templates mode="indexdiv.titlepage.recto.auto.mode" select="indexdivinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="indexdiv.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="indexdiv.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="indexdiv.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="indexdiv.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="indexdiv.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="indexdiv.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="indexdiv.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="indexdiv.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="indexdiv.titlepage.before.recto"/>
+ <xsl:call-template name="indexdiv.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="indexdiv.titlepage.before.verso"/>
+ <xsl:call-template name="indexdiv.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="indexdiv.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="indexdiv.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="indexdiv.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="indexdiv.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="indexdiv.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="indexdiv.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="setindex.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="setindex.titlepage.recto.style" margin-left="0pt" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::setindex[1]"/>
+<xsl:with-param name="pagewide" select="1"/>
+</xsl:call-template></fo:block>
+ <xsl:choose>
+ <xsl:when test="setindexinfo/subtitle">
+ <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="setindexinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="setindex.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="setindex.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="setindex.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="setindex.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="setindex.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="setindex.titlepage.before.recto"/>
+ <xsl:call-template name="setindex.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="setindex.titlepage.before.verso"/>
+ <xsl:call-template name="setindex.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="setindex.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="setindex.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="setindex.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="setindex.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="setindex.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="setindex.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="colophon.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="colophon.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::colophon[1]"/>
+</xsl:call-template></fo:block>
+ <xsl:choose>
+ <xsl:when test="colophoninfo/subtitle">
+ <xsl:apply-templates mode="colophon.titlepage.recto.auto.mode" select="colophoninfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="colophon.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="colophon.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="colophon.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="colophon.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="colophon.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="colophon.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="colophon.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="colophon.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="colophon.titlepage.before.recto"/>
+ <xsl:call-template name="colophon.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="colophon.titlepage.before.verso"/>
+ <xsl:call-template name="colophon.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="colophon.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="colophon.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="colophon.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="colophon.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="colophon.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="colophon.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="sidebar.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sidebarinfo/title">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="sidebarinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sidebarinfo/subtitle">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="sidebarinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="sidebar.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="sidebar.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="sidebar.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="sidebar.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="sidebar.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="sidebar.titlepage.before.recto"/>
+ <xsl:call-template name="sidebar.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="sidebar.titlepage.before.verso"/>
+ <xsl:call-template name="sidebar.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="sidebar.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="sidebar.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="sidebar.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="sidebar.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sidebar.titlepage.recto.style" font-family="{$title.fontset}" font-weight="bold">
+<xsl:apply-templates select="." mode="sidebar.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="sidebar.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sidebar.titlepage.recto.style" font-family="{$title.fontset}">
+<xsl:apply-templates select="." mode="sidebar.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="qandaset.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="qandasetinfo/title">
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/title"/>
+ </xsl:when>
+ <xsl:when test="blockinfo/title">
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="qandasetinfo/subtitle">
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="blockinfo/subtitle">
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/corpauthor"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/corpauthor"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/authorgroup"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/authorgroup"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/author"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/author"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/othercredit"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/othercredit"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/releaseinfo"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/releaseinfo"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/copyright"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/copyright"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/legalnotice"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/legalnotice"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/pubdate"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/pubdate"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/revision"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/revision"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/revhistory"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/revhistory"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/abstract"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/abstract"/>
+ <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="qandaset.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="qandaset.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="qandaset.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="qandaset.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="qandaset.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" font-family="{$title.fontset}">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="qandaset.titlepage.before.recto"/>
+ <xsl:call-template name="qandaset.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block start-indent="0pt" text-align="center"><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="qandaset.titlepage.before.verso"/>
+ <xsl:call-template name="qandaset.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="qandaset.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="qandaset.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="qandaset.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" keep-with-next.within-column="always" font-size="24.8832pt" font-weight="bold">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::qandaset[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em" font-size="14.4pt">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em" font-size="14.4pt">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="author" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em" font-size="14.4pt">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="copyright" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" text-align="start" margin-left="0.5in" margin-right="0.5in" font-family="{$body.fontset}">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revision" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="abstract" mode="qandaset.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em" text-align="start" margin-left="0.5in" margin-right="0.5in" font-family="{$body.fontset}">
+<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template name="table.of.contents.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="table.of.contents.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="gentext">
+<xsl:with-param name="key" select="'TableofContents'"/>
+</xsl:call-template></fo:block>
+</xsl:template>
+
+<xsl:template name="table.of.contents.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="table.of.contents.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="table.of.contents.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="table.of.contents.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="table.of.contents.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="table.of.contents.titlepage.before.recto"/>
+ <xsl:call-template name="table.of.contents.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="table.of.contents.titlepage.before.verso"/>
+ <xsl:call-template name="table.of.contents.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="table.of.contents.titlepage.separator"/>
+ </fo:block>
+
+</xsl:template>
+
+<xsl:template match="*" mode="table.of.contents.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="table.of.contents.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template name="list.of.tables.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="list.of.tables.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="gentext">
+<xsl:with-param name="key" select="'ListofTables'"/>
+</xsl:call-template></fo:block>
+</xsl:template>
+
+<xsl:template name="list.of.tables.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="list.of.tables.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="list.of.tables.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="list.of.tables.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="list.of.tables.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="list.of.tables.titlepage.before.recto"/>
+ <xsl:call-template name="list.of.tables.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="list.of.tables.titlepage.before.verso"/>
+ <xsl:call-template name="list.of.tables.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="list.of.tables.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.tables.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.tables.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template name="list.of.figures.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="list.of.figures.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="gentext">
+<xsl:with-param name="key" select="'ListofFigures'"/>
+</xsl:call-template></fo:block>
+</xsl:template>
+
+<xsl:template name="list.of.figures.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="list.of.figures.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="list.of.figures.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="list.of.figures.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="list.of.figures.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="list.of.figures.titlepage.before.recto"/>
+ <xsl:call-template name="list.of.figures.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="list.of.figures.titlepage.before.verso"/>
+ <xsl:call-template name="list.of.figures.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="list.of.figures.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.figures.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.figures.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template name="list.of.examples.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="list.of.examples.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="gentext">
+<xsl:with-param name="key" select="'ListofExamples'"/>
+</xsl:call-template></fo:block>
+</xsl:template>
+
+<xsl:template name="list.of.examples.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="list.of.examples.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="list.of.examples.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="list.of.examples.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="list.of.examples.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="list.of.examples.titlepage.before.recto"/>
+ <xsl:call-template name="list.of.examples.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="list.of.examples.titlepage.before.verso"/>
+ <xsl:call-template name="list.of.examples.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="list.of.examples.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.examples.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.examples.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template name="list.of.equations.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="list.of.equations.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="gentext">
+<xsl:with-param name="key" select="'ListofEquations'"/>
+</xsl:call-template></fo:block>
+</xsl:template>
+
+<xsl:template name="list.of.equations.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="list.of.equations.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="list.of.equations.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="list.of.equations.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="list.of.equations.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="list.of.equations.titlepage.before.recto"/>
+ <xsl:call-template name="list.of.equations.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="list.of.equations.titlepage.before.verso"/>
+ <xsl:call-template name="list.of.equations.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="list.of.equations.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.equations.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.equations.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template name="list.of.procedures.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="list.of.procedures.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="gentext">
+<xsl:with-param name="key" select="'ListofProcedures'"/>
+</xsl:call-template></fo:block>
+</xsl:template>
+
+<xsl:template name="list.of.procedures.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="list.of.procedures.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="list.of.procedures.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="list.of.procedures.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="list.of.procedures.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="list.of.procedures.titlepage.before.recto"/>
+ <xsl:call-template name="list.of.procedures.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="list.of.procedures.titlepage.before.verso"/>
+ <xsl:call-template name="list.of.procedures.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="list.of.procedures.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.procedures.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.procedures.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template name="list.of.unknowns.titlepage.recto">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="list.of.unknowns.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}">
+<xsl:call-template name="gentext">
+<xsl:with-param name="key" select="'ListofUnknown'"/>
+</xsl:call-template></fo:block>
+</xsl:template>
+
+<xsl:template name="list.of.unknowns.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="list.of.unknowns.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="list.of.unknowns.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="list.of.unknowns.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="list.of.unknowns.titlepage">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="list.of.unknowns.titlepage.before.recto"/>
+ <xsl:call-template name="list.of.unknowns.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$recto.content"/></fo:block>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="list.of.unknowns.titlepage.before.verso"/>
+ <xsl:call-template name="list.of.unknowns.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <fo:block><xsl:copy-of select="$verso.content"/></fo:block>
+ </xsl:if>
+ <xsl:call-template name="list.of.unknowns.titlepage.separator"/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.unknowns.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="list.of.unknowns.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+
+<!-- special titlepage masters for SCons Titlepage style in books -->
+<xsl:template name="user.pagemasters">
+ <!-- title pages -->
+ <fo:simple-page-master master-name="scons-titlepage-first"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="0mm"
+ margin-bottom="0mm"
+ margin-left="0mm"
+ margin-right="0mm">
+ <xsl:attribute name="margin-{$direction.align.start}" select="0mm"/>
+ <xsl:attribute name="margin-{$direction.align.end}" select="0mm"/>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-titlepage-first</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="0mm"
+ margin-top="0mm"
+ column-gap="0mm"
+ column-count="{$column.count.titlepage}"
+ background-repeat="no-repeat"
+ background-image="url(titlepage/mapnik_final_colors.svg)"
+ background-position-vertical="center"
+ background-position-horizontal="center">
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-first"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-first"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="scons-titlepage-odd"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-titlepage-odd</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.titlepage}"
+ column-count="{$column.count.titlepage}">
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-odd"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-odd"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="scons-titlepage-even"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-titlepage-even</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.titlepage}"
+ column-count="{$column.count.titlepage}">
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-even"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-even"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <!-- chapter pages -->
+ <fo:simple-page-master master-name="scons-chapter-first"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-chapter-first</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.titlepage}"
+ column-count="{$column.count.titlepage}">
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-first"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-first"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="scons-chapter-odd"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-chapter-odd</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.body}"
+ column-count="{$column.count.body}">
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-odd"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-odd"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="scons-chapter-even"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-chapter-even</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.body}"
+ column-count="{$column.count.body}">
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-even"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-even"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <!-- definition of pagemasters for draft mode -->
+ <xsl:if test="$draft.mode != 'no'">
+ <!-- draft title pages -->
+ <fo:simple-page-master master-name="scons-titlepage-first-draft"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-titlepage-first-draft</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.titlepage}"
+ column-count="{$column.count.titlepage}">
+ <xsl:if test="$draft.watermark.image != ''">
+ <xsl:attribute name="background-image">
+ <xsl:call-template name="fo-external-image">
+ <xsl:with-param name="filename" select="$draft.watermark.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+ <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+ <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+ <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+ </xsl:if>
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-first"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-first"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="scons-titlepage-odd-draft"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-titlepage-odd-draft</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.titlepage}"
+ column-count="{$column.count.titlepage}">
+ <xsl:if test="$draft.watermark.image != ''">
+ <xsl:attribute name="background-image">
+ <xsl:call-template name="fo-external-image">
+ <xsl:with-param name="filename" select="$draft.watermark.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+ <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+ <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+ <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+ </xsl:if>
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-odd"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-odd"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="scons-titlepage-even-draft"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-titlepage-even-draft</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.titlepage}"
+ column-count="{$column.count.titlepage}">
+ <xsl:if test="$draft.watermark.image != ''">
+ <xsl:attribute name="background-image">
+ <xsl:call-template name="fo-external-image">
+ <xsl:with-param name="filename" select="$draft.watermark.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+ <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+ <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+ <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+ </xsl:if>
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-even"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-even"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <!-- draft chapter pages -->
+ <fo:simple-page-master master-name="scons-chapter-first-draft"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-chapter-first-draft</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.titlepage}"
+ column-count="{$column.count.titlepage}">
+ <xsl:if test="$draft.watermark.image != ''">
+ <xsl:attribute name="background-image">
+ <xsl:call-template name="fo-external-image">
+ <xsl:with-param name="filename" select="$draft.watermark.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+ <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+ <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+ <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+ </xsl:if>
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-first"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-first"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="scons-chapter-odd-draft"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-chapter-odd-draft</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.body}"
+ column-count="{$column.count.body}">
+ <xsl:if test="$draft.watermark.image != ''">
+ <xsl:attribute name="background-image">
+ <xsl:call-template name="fo-external-image">
+ <xsl:with-param name="filename" select="$draft.watermark.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+ <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+ <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+ <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+ </xsl:if>
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-odd"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-odd"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master master-name="scons-chapter-even-draft"
+ page-width="{$page.width}"
+ page-height="{$page.height}"
+ margin-top="{$page.margin.top}"
+ margin-bottom="{$page.margin.bottom}">
+ <xsl:attribute name="margin-{$direction.align.start}">
+ <xsl:value-of select="$page.margin.outer"/>
+ <xsl:if test="$fop.extensions != 0">
+ <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="margin-{$direction.align.end}">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:if test="$axf.extensions != 0">
+ <xsl:call-template name="axf-page-master-properties">
+ <xsl:with-param name="page.master">scons-chapter-even-draft</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <fo:region-body margin-bottom="{$body.margin.bottom}"
+ margin-top="{$body.margin.top}"
+ column-gap="{$column.gap.body}"
+ column-count="{$column.count.body}">
+ <xsl:if test="$draft.watermark.image != ''">
+ <xsl:attribute name="background-image">
+ <xsl:call-template name="fo-external-image">
+ <xsl:with-param name="filename" select="$draft.watermark.image"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+ <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+ <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+ <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+ </xsl:if>
+ </fo:region-body>
+ <fo:region-before region-name="xsl-region-before-even"
+ extent="{$region.before.extent}"
+ display-align="before"/>
+ <fo:region-after region-name="xsl-region-after-even"
+ extent="{$region.after.extent}"
+ display-align="after"/>
+ </fo:simple-page-master>
+ </xsl:if>
+
+ <!-- setup for title page(s) -->
+ <fo:page-sequence-master master-name="scons-titlepage">
+ <fo:repeatable-page-master-alternatives>
+ <fo:conditional-page-master-reference master-reference="scons-titlepage-first"
+ page-position="first"/>
+ <fo:conditional-page-master-reference master-reference="scons-titlepage-odd"
+ odd-or-even="odd"/>
+ <fo:conditional-page-master-reference
+ odd-or-even="even">
+ <xsl:attribute name="master-reference">
+ <xsl:choose>
+ <xsl:when test="$double.sided != 0">scons-titlepage-even</xsl:when>
+ <xsl:otherwise>scons-titlepage-odd</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </fo:conditional-page-master-reference>
+ </fo:repeatable-page-master-alternatives>
+ </fo:page-sequence-master>
+
+ <!-- definition of pagemasters for draft mode -->
+ <xsl:if test="$draft.mode != 'no'">
+ <!-- draft title pages -->
+
+ <fo:page-sequence-master master-name="scons-titlepage-draft">
+ <fo:repeatable-page-master-alternatives>
+ <fo:conditional-page-master-reference master-reference="scons-titlepage-first-draft"
+ page-position="first"/>
+ <fo:conditional-page-master-reference master-reference="body-odd-draft"
+ odd-or-even="odd"/>
+ <fo:conditional-page-master-reference
+ odd-or-even="even">
+ <xsl:attribute name="master-reference">
+ <xsl:choose>
+ <xsl:when test="$double.sided != 0">body-even-draft</xsl:when>
+ <xsl:otherwise>body-odd-draft</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </fo:conditional-page-master-reference>
+ </fo:repeatable-page-master-alternatives>
+ </fo:page-sequence-master>
+ </xsl:if>
+
+ <!-- setup for chapter pages -->
+ <fo:page-sequence-master master-name="scons-chapter">
+ <fo:repeatable-page-master-alternatives>
+ <fo:conditional-page-master-reference master-reference="scons-chapter-first"
+ page-position="first"/>
+ <fo:conditional-page-master-reference master-reference="scons-chapter-odd"
+ odd-or-even="odd"/>
+ <fo:conditional-page-master-reference
+ odd-or-even="even">
+ <xsl:attribute name="master-reference">
+ <xsl:choose>
+ <xsl:when test="$double.sided != 0">scons-chapter-even</xsl:when>
+ <xsl:otherwise>scons-chapter-odd</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </fo:conditional-page-master-reference>
+ </fo:repeatable-page-master-alternatives>
+ </fo:page-sequence-master>
+ <!-- setup for draft chapter pages -->
+ <xsl:if test="$draft.mode != 'no'">
+ <!-- draft chapter pages -->
+ <fo:page-sequence-master master-name="scons-chapter-draft">
+ <fo:repeatable-page-master-alternatives>
+ <fo:conditional-page-master-reference master-reference="scons-chapter-first-draft"
+ page-position="first"/>
+ <fo:conditional-page-master-reference master-reference="scons-chapter-odd-draft"
+ odd-or-even="odd"/>
+ <fo:conditional-page-master-reference
+ odd-or-even="even">
+ <xsl:attribute name="master-reference">
+ <xsl:choose>
+ <xsl:when test="$double.sided != 0">scons-chapter-even-draft</xsl:when>
+ <xsl:otherwise>scons-chapter-odd-draft</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </fo:conditional-page-master-reference>
+ </fo:repeatable-page-master-alternatives>
+ </fo:page-sequence-master>
+ </xsl:if>
+
+</xsl:template>
+
+<!-- selecting our SCons pagemasters -->
+<xsl:template name="select.user.pagemaster">
+ <xsl:param name="element"/>
+ <xsl:param name="pageclass"/>
+ <xsl:param name="default-pagemaster"/>
+
+ <xsl:choose>
+ <xsl:when test="$default-pagemaster = 'titlepage'">
+ <xsl:value-of select="'scons-titlepage'" />
+ </xsl:when>
+ <xsl:when test="$element = 'chapter' and
+ $default-pagemaster = 'body-draft'">
+ <xsl:value-of select="'scons-chapter-draft'" />
+ </xsl:when>
+ <xsl:when test="$element = 'chapter'">
+ <xsl:value-of select="'scons-chapter'" />
+ </xsl:when>
+ <xsl:when test="$default-pagemaster = 'titlepage-draft'">
+ <xsl:value-of select="'scons-titlepage-draft'" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$default-pagemaster"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+
+
+<xsl:template match="title" mode="book.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" text-align="left" display-align="after" color="#C51410" font-size="75pt" space-before="0pt" space-after="0pt" font-weight="bold" font-family="'serif'">
+<xsl:call-template name="division.title">
+<xsl:with-param name="node" select="ancestor-or-self::book[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="book.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" text-align="left" display-align="after" font-size="28pt" space-before="0pt" space-after="0pt" font-family="{$title.fontset}" font-weight="normal">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="edition" mode="book.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" text-align="left" display-align="after" color="#C51410" font-size="56pt" space-before="0pt" space-after="0pt" font-family="'serif'" font-weight="normal">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+
+<xsl:attribute-set name="chap.label.properties">
+ <xsl:attribute name="font-family">
+ <xsl:value-of select="$title.fontset"/>
+ </xsl:attribute>
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ <xsl:attribute name="color">#C51410</xsl:attribute>
+ <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute>
+ <xsl:attribute name="text-align">center</xsl:attribute>
+ <xsl:attribute name="display-align">after</xsl:attribute>
+ <xsl:attribute name="space-before">0pt</xsl:attribute>
+ <xsl:attribute name="space-after">0pt</xsl:attribute>
+</xsl:attribute-set>
+
+<xsl:attribute-set name="chap.title.properties">
+ <xsl:attribute name="font-family">
+ <xsl:value-of select="$title.fontset"/>
+ </xsl:attribute>
+ <xsl:attribute name="font-size">24pt</xsl:attribute>
+ <xsl:attribute name="color">#C51410</xsl:attribute>
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute>
+ <xsl:attribute name="text-align">left</xsl:attribute>
+ <xsl:attribute name="display-align">after</xsl:attribute>
+ <xsl:attribute name="space-before">0pt</xsl:attribute>
+ <xsl:attribute name="space-after">0pt</xsl:attribute>
+ <xsl:attribute name="space-start">0.7em</xsl:attribute>
+</xsl:attribute-set>
+
+
+<!-- customization of chapter titles -->
+<xsl:template name="chap.title">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="pagewide" select="0"/>
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$node"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="title">
+ <xsl:apply-templates select="$node" mode="object.title.markup">
+ <xsl:with-param name="allow-anchors" select="1"/>
+ </xsl:apply-templates>
+ </xsl:variable>
+
+ <xsl:variable name="titleabbrev">
+ <xsl:apply-templates select="$node" mode="titleabbrev.markup"/>
+ </xsl:variable>
+
+ <xsl:variable name="level">
+ <xsl:choose>
+ <xsl:when test="ancestor::section">
+ <xsl:value-of select="count(ancestor::section)+1"/>
+ </xsl:when>
+ <xsl:when test="ancestor::sect5">6</xsl:when>
+ <xsl:when test="ancestor::sect4">5</xsl:when>
+ <xsl:when test="ancestor::sect3">4</xsl:when>
+ <xsl:when test="ancestor::sect2">3</xsl:when>
+ <xsl:when test="ancestor::sect1">2</xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:if test="$passivetex.extensions != 0">
+ <fotex:bookmark xmlns:fotex="http://www.tug.org/fotex"
+ fotex-bookmark-level="2"
+ fotex-bookmark-label="{$id}">
+ <xsl:value-of select="$titleabbrev"/>
+ </fotex:bookmark>
+ </xsl:if>
+
+ <fo:table table-layout="fixed" width="100%" border-width="0pt" border-style="none">
+
+ <fo:table-column column-width="17mm"/>
+ <fo:table-column/>
+ <fo:table-column column-width="17mm"/>
+
+ <fo:table-body>
+ <fo:table-row text-align="center">
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ <fo:table-cell xsl:use-attribute-sets="chap.title.properties">
+ <fo:block>
+
+ <fo:inline xsl:use-attribute-sets="chap.label.properties" font-size="57pt"><xsl:apply-templates select="$node"
+ mode="label.markup"/></fo:inline>
+
+ <fo:inline xsl:use-attribute-sets="chap.title.properties"><xsl:apply-templates select="$node"
+ mode="title.markup"/></fo:inline>
+ </fo:block>
+ </fo:table-cell>
+ <fo:table-cell>
+ <fo:block></fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ </fo:table-body>
+ </fo:table>
+</xsl:template>
+
+<xsl:template match="title" mode="chapter.titlepage.recto.auto.mode">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+<xsl:call-template name="chap.title">
+<xsl:with-param name="node" select="ancestor-or-self::chapter[1]"/>
+</xsl:call-template>
+</fo:block>
+</xsl:template>
+
+
+<xsl:template match="title" mode="header.content">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" space-before="0pt" space-after="0pt">
+<xsl:apply-templates select="."/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="header.content">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" space-before="0pt" space-after="0pt">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+<xsl:template match="edition" mode="header.content">
+<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" space-before="0pt" space-after="0pt">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</fo:block>
+</xsl:template>
+
+
+<xsl:template name="header.table">
+ <xsl:param name="pageclass" select="''"/>
+ <xsl:param name="sequence" select="''"/>
+ <xsl:param name="element" select="''"/>
+ <xsl:param name="gentext-key" select="''"/>
+
+ <!-- default is a single table style for all headers -->
+ <!-- Customize it for different page classes or sequence location -->
+
+ <xsl:choose>
+ <xsl:when test="$pageclass = 'index'">
+ <xsl:attribute name="margin-left">0pt</xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:variable name="column1">
+ <xsl:choose>
+ <xsl:when test="$double.sided = 0">1</xsl:when>
+ <xsl:when test="$sequence = 'first' or $sequence = 'odd'">1</xsl:when>
+ <xsl:otherwise>3</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="column3">
+ <xsl:choose>
+ <xsl:when test="$double.sided = 0">3</xsl:when>
+ <xsl:when test="$sequence = 'first' or $sequence = 'odd'">3</xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="candidate">
+ <fo:table table-layout="fixed" width="100%">
+ <xsl:call-template name="head.sep.rule">
+ <xsl:with-param name="pageclass" select="$pageclass"/>
+ <xsl:with-param name="sequence" select="$sequence"/>
+ <xsl:with-param name="gentext-key" select="$gentext-key"/>
+ </xsl:call-template>
+
+ <fo:table-column column-number="1">
+ <xsl:attribute name="column-width">
+ <xsl:text>proportional-column-width(</xsl:text>
+ <xsl:call-template name="header.footer.width">
+ <xsl:with-param name="location">header</xsl:with-param>
+ <xsl:with-param name="position" select="$column1"/>
+ </xsl:call-template>
+ <xsl:text>)</xsl:text>
+ </xsl:attribute>
+ </fo:table-column>
+ <fo:table-column column-number="2">
+ <xsl:attribute name="column-width">
+ <xsl:text>proportional-column-width(</xsl:text>
+ <xsl:call-template name="header.footer.width">
+ <xsl:with-param name="location">header</xsl:with-param>
+ <xsl:with-param name="position" select="2"/>
+ </xsl:call-template>
+ <xsl:text>)</xsl:text>
+ </xsl:attribute>
+ </fo:table-column>
+ <fo:table-column column-number="3">
+ <xsl:attribute name="column-width">
+ <xsl:text>proportional-column-width(</xsl:text>
+ <xsl:call-template name="header.footer.width">
+ <xsl:with-param name="location">header</xsl:with-param>
+ <xsl:with-param name="position" select="$column3"/>
+ </xsl:call-template>
+ <xsl:text>)</xsl:text>
+ </xsl:attribute>
+ </fo:table-column>
+
+ <fo:table-body>
+ <fo:table-row>
+ <xsl:attribute name="block-progression-dimension.minimum">
+ <xsl:value-of select="$header.table.height"/>
+ </xsl:attribute>
+ <fo:table-cell text-align="left"
+ display-align="before">
+ <xsl:if test="$fop.extensions = 0">
+ <xsl:attribute name="relative-align">baseline</xsl:attribute>
+ </xsl:if>
+ <fo:block>
+ <xsl:call-template name="header.content">
+ <xsl:with-param name="pageclass" select="$pageclass"/>
+ <xsl:with-param name="sequence" select="$sequence"/>
+ <xsl:with-param name="position" select="'left'"/>
+ <xsl:with-param name="gentext-key" select="$gentext-key"/>
+ </xsl:call-template>
+ </fo:block>
+ </fo:table-cell>
+ <fo:table-cell text-align="center"
+ display-align="before">
+ <xsl:if test="$fop.extensions = 0">
+ <xsl:attribute name="relative-align">baseline</xsl:attribute>
+ </xsl:if>
+ <fo:block>
+ <xsl:call-template name="header.content">
+ <xsl:with-param name="pageclass" select="$pageclass"/>
+ <xsl:with-param name="sequence" select="$sequence"/>
+ <xsl:with-param name="position" select="'center'"/>
+ <xsl:with-param name="gentext-key" select="$gentext-key"/>
+ </xsl:call-template>
+ </fo:block>
+ </fo:table-cell>
+ <fo:table-cell text-align="right"
+ display-align="before">
+ <xsl:if test="$fop.extensions = 0">
+ <xsl:attribute name="relative-align">baseline</xsl:attribute>
+ </xsl:if>
+ <fo:block>
+ <xsl:call-template name="header.content">
+ <xsl:with-param name="pageclass" select="$pageclass"/>
+ <xsl:with-param name="sequence" select="$sequence"/>
+ <xsl:with-param name="position" select="'right'"/>
+ <xsl:with-param name="gentext-key" select="$gentext-key"/>
+ </xsl:call-template>
+ </fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ </fo:table-body>
+ </fo:table>
+ </xsl:variable>
+
+ <!-- Really output a header? -->
+ <xsl:choose>
+ <xsl:when test="$pageclass = 'titlepage' and $gentext-key = 'book'
+ and $sequence='first'">
+ <!-- no, book titlepages have no headers at all -->
+ </xsl:when>
+ <xsl:when test="$pageclass = 'scons-titlepage'">
+ <!-- no, book titlepages have no headers at all -->
+ </xsl:when>
+ <xsl:when test="$pageclass = 'scons-chapter' and
+ $sequence = 'first'">
+ <!-- no, book chapters have no headers at all -->
+ </xsl:when>
+ <xsl:when test="$sequence = 'blank' and $headers.on.blank.pages = 0">
+ <!-- no output -->
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$candidate"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+
+<xsl:template name="header.content">
+ <xsl:param name="pageclass" select="''"/>
+ <xsl:param name="sequence" select="''"/>
+ <xsl:param name="position" select="''"/>
+ <xsl:param name="gentext-key" select="''"/>
+
+ <fo:block>
+
+ <!-- sequence can be odd, even, first, blank -->
+ <!-- position can be left, center, right -->
+ <xsl:choose>
+
+ <xsl:when test="$pageclass = 'titlepage'">
+ <!-- nop; no footer on title pages -->
+ </xsl:when>
+
+ <xsl:when test="$double.sided != 0 and $sequence = 'even'
+ and $position='left'">
+ <fo:retrieve-marker
+ retrieve-class-name="section.head.marker"
+ retrieve-position="first-including-carryover"
+ retrieve-boundary="page-sequence"/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided != 0 and
+ ($sequence = 'odd' or $sequence = 'first' or $sequence = 'blank')
+ and $position='right'">
+ <fo:retrieve-marker
+ retrieve-class-name="section.head.marker"
+ retrieve-position="first-including-carryover"
+ retrieve-boundary="page-sequence"/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided != 0 and
+ ($sequence = 'odd' or $sequence = 'first' or $sequence = 'blank')
+ and $position='left'">
+ <xsl:value-of select="/book/title"/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided != 0 and $sequence = 'even'
+ and $position='right'">
+ <xsl:value-of select="/book/title"/>
+ </xsl:when>
+
+
+ <xsl:when test="$double.sided = 0 and $sequence = 'even'
+ and $position='right'">
+ <xsl:value-of select="/book/title"/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided = 0 and $sequence = 'even'
+ and $position='left'">
+ <xsl:value-of select="/book/title"/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided = 0 and ($sequence = 'odd' or $sequence = 'first')
+ and $position='right'">
+ <fo:retrieve-marker
+ retrieve-class-name="section.head.marker"
+ retrieve-position="first-including-carryover"
+ retrieve-boundary="page-sequence"/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided = 0 and ($sequence = 'odd' or $sequence = 'first')
+ and $position='left'">
+ <xsl:value-of select="/book/title"/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided = 0 and $sequence = 'even'
+ and $position='right'">
+ <fo:retrieve-marker
+ retrieve-class-name="section.head.marker"
+ retrieve-position="first-including-carryover"
+ retrieve-boundary="page-sequence"/>
+ </xsl:when>
+
+
+ <xsl:when test="$position='center'">
+<!-- <xsl:apply-templates select="."
+ mode="titleabbrev.markup"/>
+-->
+ </xsl:when>
+
+ <xsl:when test="$sequence='blank'">
+ <!-- nop -->
+ </xsl:when>
+
+ <xsl:otherwise>
+ <!-- nop -->
+ </xsl:otherwise>
+
+ </xsl:choose>
+ </fo:block>
+</xsl:template>
+
+
+<xsl:template name="footer.table">
+ <xsl:param name="pageclass" select="''"/>
+ <xsl:param name="sequence" select="''"/>
+ <xsl:param name="gentext-key" select="''"/>
+
+ <!-- default is a single table style for all footers -->
+ <!-- Customize it for different page classes or sequence location -->
+
+ <xsl:choose>
+ <xsl:when test="$pageclass = 'index'">
+ <xsl:attribute name="margin-left">0pt</xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:variable name="column1">
+ <xsl:choose>
+ <xsl:when test="$double.sided = 0">1</xsl:when>
+ <xsl:when test="$sequence = 'first' or $sequence = 'odd'">1</xsl:when>
+ <xsl:otherwise>3</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="column3">
+ <xsl:choose>
+ <xsl:when test="$double.sided = 0">3</xsl:when>
+ <xsl:when test="$sequence = 'first' or $sequence = 'odd'">3</xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="candidate">
+ <fo:table table-layout="fixed" width="100%">
+ <xsl:call-template name="foot.sep.rule">
+ <xsl:with-param name="pageclass" select="$pageclass"/>
+ <xsl:with-param name="sequence" select="$sequence"/>
+ <xsl:with-param name="gentext-key" select="$gentext-key"/>
+ </xsl:call-template>
+ <fo:table-column column-number="1">
+ <xsl:attribute name="column-width">
+ <xsl:text>proportional-column-width(</xsl:text>
+ <xsl:call-template name="header.footer.width">
+ <xsl:with-param name="location">footer</xsl:with-param>
+ <xsl:with-param name="position" select="$column1"/>
+ </xsl:call-template>
+ <xsl:text>)</xsl:text>
+ </xsl:attribute>
+ </fo:table-column>
+ <fo:table-column column-number="2">
+ <xsl:attribute name="column-width">
+ <xsl:text>proportional-column-width(</xsl:text>
+ <xsl:call-template name="header.footer.width">
+ <xsl:with-param name="location">footer</xsl:with-param>
+ <xsl:with-param name="position" select="2"/>
+ </xsl:call-template>
+ <xsl:text>)</xsl:text>
+ </xsl:attribute>
+ </fo:table-column>
+ <fo:table-column column-number="3">
+ <xsl:attribute name="column-width">
+ <xsl:text>proportional-column-width(</xsl:text>
+ <xsl:call-template name="header.footer.width">
+ <xsl:with-param name="location">footer</xsl:with-param>
+ <xsl:with-param name="position" select="$column3"/>
+ </xsl:call-template>
+ <xsl:text>)</xsl:text>
+ </xsl:attribute>
+ </fo:table-column>
+
+ <fo:table-body>
+ <fo:table-row>
+ <xsl:attribute name="block-progression-dimension.minimum">
+ <xsl:value-of select="$footer.table.height"/>
+ </xsl:attribute>
+ <fo:table-cell text-align="left"
+ display-align="after">
+ <xsl:if test="$fop.extensions = 0">
+ <xsl:attribute name="relative-align">baseline</xsl:attribute>
+ </xsl:if>
+ <fo:block>
+ <xsl:call-template name="footer.content">
+ <xsl:with-param name="pageclass" select="$pageclass"/>
+ <xsl:with-param name="sequence" select="$sequence"/>
+ <xsl:with-param name="position" select="'left'"/>
+ <xsl:with-param name="gentext-key" select="$gentext-key"/>
+ </xsl:call-template>
+ </fo:block>
+ </fo:table-cell>
+ <fo:table-cell text-align="center"
+ display-align="after">
+ <xsl:if test="$fop.extensions = 0">
+ <xsl:attribute name="relative-align">baseline</xsl:attribute>
+ </xsl:if>
+ <fo:block>
+ <xsl:call-template name="footer.content">
+ <xsl:with-param name="pageclass" select="$pageclass"/>
+ <xsl:with-param name="sequence" select="$sequence"/>
+ <xsl:with-param name="position" select="'center'"/>
+ <xsl:with-param name="gentext-key" select="$gentext-key"/>
+ </xsl:call-template>
+ </fo:block>
+ </fo:table-cell>
+ <fo:table-cell text-align="right"
+ display-align="after">
+ <xsl:if test="$fop.extensions = 0">
+ <xsl:attribute name="relative-align">baseline</xsl:attribute>
+ </xsl:if>
+ <fo:block>
+ <xsl:call-template name="footer.content">
+ <xsl:with-param name="pageclass" select="$pageclass"/>
+ <xsl:with-param name="sequence" select="$sequence"/>
+ <xsl:with-param name="position" select="'right'"/>
+ <xsl:with-param name="gentext-key" select="$gentext-key"/>
+ </xsl:call-template>
+ </fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ </fo:table-body>
+ </fo:table>
+ </xsl:variable>
+
+ <!-- Really output a footer? -->
+ <xsl:choose>
+ <xsl:when test="$pageclass='titlepage' and $gentext-key='book'
+ and $sequence='first'">
+ <!-- no, book titlepages have no footers at all -->
+ </xsl:when>
+ <xsl:when test="$pageclass = 'scons-titlepage'">
+ <!-- no, book titlepages have no footers at all -->
+ </xsl:when>
+ <xsl:when test="$pageclass = 'scons-chapter' and
+ $sequence='first'">
+ <!-- no, book chapters have no footers on first page -->
+ </xsl:when>
+ <xsl:when test="$sequence = 'blank' and $footers.on.blank.pages = 0">
+ <!-- no output -->
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$candidate"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+
+<xsl:template name="footer.content">
+ <xsl:param name="pageclass" select="''"/>
+ <xsl:param name="sequence" select="''"/>
+ <xsl:param name="position" select="''"/>
+ <xsl:param name="gentext-key" select="''"/>
+
+ <fo:block>
+ <!-- pageclass can be front, body, back -->
+ <!-- sequence can be odd, even, first, blank -->
+ <!-- position can be left, center, right -->
+ <xsl:choose>
+ <xsl:when test="$pageclass = 'titlepage'">
+ <!-- nop; no footer on title pages -->
+ </xsl:when>
+
+ <xsl:when test="$double.sided != 0 and $sequence = 'even'
+ and $position='left'">
+ <fo:page-number/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided != 0 and
+ ($sequence = 'odd' or $sequence = 'first' or $sequence = 'blank')
+ and $position='right'">
+ <fo:page-number/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided != 0 and
+ ($sequence = 'odd' or $sequence = 'first' or $sequence = 'blank')
+ and $position='left'">
+ <fo:external-graphic
+ src="url(titlepage/SCons_path.svg)"
+ width="20mm" content-width="scale-to-fit"
+ scaling="uniform"/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided != 0 and $sequence = 'even'
+ and $position='right'">
+ <fo:external-graphic
+ src="url(titlepage/SCons_path.svg)"
+ width="20mm" content-width="scale-to-fit"
+ scaling="uniform"/>
+ </xsl:when>
+
+
+ <xsl:when test="$double.sided = 0 and $sequence = 'even'
+ and $position='right'">
+ <fo:external-graphic
+ src="url(titlepage/SCons_path.svg)"
+ width="20mm" content-width="scale-to-fit"
+ scaling="uniform"/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided = 0 and $sequence = 'even'
+ and $position='left'">
+ <fo:external-graphic
+ src="url(titlepage/SCons_path.svg)"
+ width="20mm" content-width="scale-to-fit"
+ scaling="uniform"/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided = 0 and ($sequence = 'odd' or $sequence = 'first')
+ and $position='right'">
+ <fo:page-number/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided = 0 and ($sequence = 'odd' or $sequence = 'first')
+ and $position='left'">
+ <fo:external-graphic
+ src="url(titlepage/SCons_path.svg)"
+ width="20mm" content-width="scale-to-fit"
+ scaling="uniform"/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided = 0 and $sequence = 'even'
+ and $position='right'">
+ <fo:page-number/>
+ </xsl:when>
+
+
+ <xsl:when test="$position='center'">
+ </xsl:when>
+
+ <xsl:when test="$sequence='blank'">
+ <!-- nop -->
+ </xsl:when>
+
+
+ <xsl:otherwise>
+ <!-- nop -->
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:block>
+</xsl:template>
+
+<xsl:template name="head.sep.rule">
+ <xsl:param name="pageclass"/>
+ <xsl:param name="sequence"/>
+ <xsl:param name="gentext-key"/>
+
+ <xsl:if test="$header.rule != 0">
+ <xsl:attribute name="border-bottom-width">0.5pt</xsl:attribute>
+ <xsl:attribute name="border-bottom-style">solid</xsl:attribute>
+ <xsl:attribute name="border-bottom-color">#C51410</xsl:attribute>
+ </xsl:if>
+</xsl:template>
+
+
+<xsl:template name="foot.sep.rule">
+ <xsl:param name="pageclass"/>
+ <xsl:param name="sequence"/>
+ <xsl:param name="gentext-key"/>
+
+ <xsl:if test="$footer.rule != 0">
+ <xsl:attribute name="border-top-width">0.5pt</xsl:attribute>
+ <xsl:attribute name="border-top-style">solid</xsl:attribute>
+ <xsl:attribute name="border-top-color">#C51410</xsl:attribute>
+ </xsl:if>
+</xsl:template>
+
+<xsl:param name="header.column.widths">1 0 1</xsl:param>
+<xsl:param name="footer.column.widths">1 0 1</xsl:param>
+<xsl:param name="headers.on.blank.pages" select="1"/>
+<xsl:param name="footers.on.blank.pages" select="1"/>
+
+</xsl:stylesheet>
+
diff --git a/doc/design/summary.xml b/doc/design/summary.xml
new file mode 100644
index 0000000..1931bef
--- /dev/null
+++ b/doc/design/summary.xml
@@ -0,0 +1,53 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+ <!ENTITY % scons SYSTEM "../scons.mod">
+ %scons;
+]>
+
+<chapter id="chap-summary"
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
+<title>Summary</title>
+
+<!--
+
+ Copyright (c) 2001 - 2014 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-->
+
+ <para>
+
+ &SCons; offers a robust and feature-rich design for an SC-build
+ tool. With a Build Engine based on the proven design of
+ the &Cons; utility, it offers increased simplification of the
+ user interface for unsophisticated users with the addition
+ of the "do-the-right-thing" <function>env.Make</function>
+ method, increased flexibility for sophisticated users with the
+ addition of &Builder; and &Scanner; objects, a mechanism to
+ allow tool-masters (and users) to share working construction
+ environments, and embeddability to provide reliable dependency
+ management in a variety of environments and interfaces.
+
+ </para>
+
+</chapter>
diff --git a/doc/design/titlepage/SConsBuildBricks_path.svg b/doc/design/titlepage/SConsBuildBricks_path.svg
new file mode 100644
index 0000000..ed0c60d
--- /dev/null
+++ b/doc/design/titlepage/SConsBuildBricks_path.svg
@@ -0,0 +1,320 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="636.73999"
+ height="80.330002"
+ id="svg2"
+ sodipodi:version="0.32"
+ inkscape:version="0.48.1 r9760"
+ version="1.0"
+ sodipodi:docname="SConsBuildBricks.svg"
+ inkscape:export-filename="Constructs-using-SCons.png"
+ inkscape:export-xdpi="100"
+ inkscape:export-ydpi="100">
+ <defs
+ id="defs4" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="2.6603715"
+ inkscape:cx="80.565423"
+ inkscape:cy="53.016465"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer2"
+ inkscape:window-width="942"
+ inkscape:window-height="667"
+ inkscape:window-x="52"
+ inkscape:window-y="25"
+ width="168px"
+ height="60px"
+ showgrid="false"
+ inkscape:window-maximized="0" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ <dc:date>2008-05-18</dc:date>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Hartmut Goebel</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:rights>
+ <cc:Agent>
+ <dc:title>Hartmut Goebel &lt;h.goebel@goebel-consult.de&gt;</dc:title>
+ </cc:Agent>
+ </dc:rights>
+ <dc:language>en</dc:language>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>SCons</rdf:li>
+ <rdf:li>software build tool</rdf:li>
+ <rdf:li>software construction tool</rdf:li>
+ <rdf:li />
+ </rdf:Bag>
+ </dc:subject>
+ <dc:contributor>
+ <cc:Agent>
+ <dc:title>Based on the pixeled SCons logo (author unknown).</dc:title>
+ </cc:Agent>
+ </dc:contributor>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/by-nc-sa/2.0/" />
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/by-nc-sa/2.5/">
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Reproduction" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Distribution" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/Notice" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/Attribution" />
+ <cc:prohibits
+ rdf:resource="http://web.resource.org/cc/CommercialUse" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/ShareAlike" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Ebene 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-264.3227,-503.6795)"
+ inkscape:export-filename="SCons.png"
+ style="display:inline" />
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="Constructs"
+ style="display:inline">
+ <g
+ transform="translate(-264.04696,-505.06832)"
+ style="display:inline"
+ id="Brick-to-Brick-9"
+ inkscape:label="#g2189"
+ inkscape:export-filename="SCons-Bricks.png">
+ <rect
+ y="552.24042"
+ x="296.28955"
+ height="8.3218126"
+ width="25.570662"
+ id="rect2170-4"
+ style="fill:#cf291c;fill-opacity:1;stroke:#000000;stroke-width:1.4000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ <rect
+ y="552.24042"
+ x="267.02267"
+ height="8.3218126"
+ width="25.570662"
+ id="rect3143-1"
+ style="fill:#cf291c;fill-opacity:1;stroke:#000000;stroke-width:1.4000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ <rect
+ y="540.14984"
+ x="267.02267"
+ height="8.3218126"
+ width="13.012291"
+ id="rect3145-9"
+ style="fill:#cf291c;fill-opacity:1;stroke:#000000;stroke-width:1.40000021;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ <rect
+ y="540.14984"
+ x="308.84793"
+ height="8.3218126"
+ width="13.012291"
+ id="rect3147-5"
+ style="fill:#cf291c;fill-opacity:1;stroke:#000000;stroke-width:1.40000021;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ <rect
+ transform="matrix(0.905934,0.423418,-0.423418,0.905934,0,0)"
+ y="335.94952"
+ x="480.29761"
+ height="8.3219995"
+ width="23"
+ id="rect3149-7"
+ style="fill:#cf291c;fill-opacity:1;stroke:#000000;stroke-width:1.4000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ <g
+ id="g2185-4">
+ <path
+ style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none;marker-start:none;marker-end:none"
+ d="m 297.75417,522.67403 c -3.0064,6.09106 -3.82029,6.65046 -3.12294,18.68449"
+ id="path3155-1"
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0" />
+ <path
+ sodipodi:type="star"
+ style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:2.56573844;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ id="path8218-2"
+ sodipodi:sides="3"
+ sodipodi:cx="269.17282"
+ sodipodi:cy="490.86679"
+ sodipodi:r1="14.074683"
+ sodipodi:r2="14.074683"
+ sodipodi:arg1="1.5922984"
+ sodipodi:arg2="-2.6531172"
+ inkscape:flatsided="false"
+ inkscape:rounded="0"
+ inkscape:randomized="0"
+ d="m 268.87021,504.93822 -12.12603,-20.6764 0.39373,-0.69281 23.9693,-0.16325 0.40313,0.68739 -11.84327,20.83964 z"
+ transform="matrix(0.370735,0,0,0.409743,194.6666,341.5009)" />
+ </g>
+ </g>
+ <g
+ style="font-size:12.22589397px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
+ id="text1316-2"
+ transform="translate(0.27574335,-0.05632028)">
+ <path
+ d="m 3.8227174,71.530541 0,3.265412 1.9341746,0 c 0.6486997,10e-7 1.1282631,-0.133322 1.4386916,-0.399969 0.3143968,-0.270623 0.4715981,-0.68253 0.4716043,-1.235722 C 7.6671817,72.603095 7.5099804,72.193178 7.1955836,71.930509 6.8851551,71.663867 6.4055917,71.530545 5.756892,71.530541 l -1.9341746,0 m 0,-3.665381 0,2.686354 1.7849327,0 c 0.5890032,5e-6 1.0267789,-0.109439 1.3133285,-0.328332 C 7.211497,70.00032 7.3567589,69.662038 7.3567648,69.208337 7.3567589,68.758629 7.211497,68.422337 6.9209786,68.199462 6.634429,67.976602 6.1966533,67.865168 5.6076501,67.86516 l -1.7849327,0 m -1.2058743,-0.990966 3.0803522,0 c 0.9193247,9e-6 1.6277254,0.191038 2.1252042,0.573089 0.497466,0.382067 0.7462022,0.925307 0.7462093,1.629721 -7.1e-6,0.545237 -0.1273601,0.979033 -0.3820592,1.301389 -0.2547126,0.322368 -0.6288118,0.523347 -1.1222988,0.602937 0.5929814,0.127358 1.0526459,0.394003 1.3789949,0.799937 0.3303146,0.401962 0.4954754,0.905404 0.495483,1.510328 -7.6e-6,0.795958 -0.2706325,1.410834 -0.8118758,1.844629 -0.5412567,0.433797 -1.311344,0.650695 -2.3102642,0.650695 l -3.1997456,0 0,-8.912725"
+ id="path3187"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 10.837085,73.148322 0,-4.047439 1.09842,0 0,4.005652 c -2e-6,0.632787 0.123371,1.108371 0.37012,1.426752 0.246744,0.314404 0.616863,0.471605 1.110359,0.471604 0.592984,10e-7 1.060608,-0.189038 1.402874,-0.567119 0.346236,-0.378078 0.519356,-0.893459 0.519362,-1.546146 l 0,-3.790743 1.09842,0 0,6.686036 -1.09842,0 0,-1.026784 c -0.266651,0.405938 -0.577074,0.708401 -0.93127,0.90739 -0.350225,0.195009 -0.758152,0.292514 -1.223783,0.292514 -0.768101,0 -1.351138,-0.238787 -1.749115,-0.716361 -0.397979,-0.477573 -0.596968,-1.176024 -0.596967,-2.095356 m 2.763959,-4.20862 0,0"
+ id="path3189"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 18.711086,69.100883 1.09842,0 0,6.686036 -1.09842,0 0,-6.686036 m 0,-2.602778 1.09842,0 0,1.390934 -1.09842,0 0,-1.390934"
+ id="path3191"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 22.101862,66.498105 1.09842,0 0,9.288814 -1.09842,0 0,-9.288814"
+ id="path3193"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 29.892286,70.115728 0,-3.617623 1.09842,0 0,9.288814 -1.09842,0 0,-1.002906 c -0.230833,0.397979 -0.523347,0.694473 -0.877543,0.889482 -0.350225,0.191029 -0.772081,0.286544 -1.265571,0.286544 -0.807898,0 -1.466552,-0.322362 -1.975962,-0.967087 -0.505433,-0.644724 -0.758149,-1.492417 -0.758149,-2.543082 0,-1.050658 0.252716,-1.898351 0.758149,-2.543081 0.50941,-0.644718 1.168064,-0.96708 1.975962,-0.967087 0.49349,7e-6 0.915346,0.09751 1.265571,0.292514 0.354196,0.191036 0.64671,0.485539 0.877543,0.883512 M 26.1493,72.44987 c -2e-6,0.807899 0.165159,1.442674 0.495483,1.904327 0.334299,0.457676 0.791973,0.686513 1.373025,0.686512 0.581044,10e-7 1.038718,-0.228836 1.373025,-0.686512 0.334296,-0.461653 0.501447,-1.096428 0.501453,-1.904327 -6e-6,-0.807891 -0.167157,-1.440676 -0.501453,-1.898356 -0.334307,-0.461649 -0.791981,-0.692477 -1.373025,-0.692482 -0.581052,5e-6 -1.038726,0.230833 -1.373025,0.692482 -0.330324,0.45768 -0.495485,1.090465 -0.495483,1.898356"
+ id="path3195"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 39.927309,76.407765 c -0.310427,0.795955 -0.61289,1.315316 -0.90739,1.558085 -0.294507,0.242764 -0.688505,0.364148 -1.181996,0.36415 l -0.877542,0 0,-0.91933 0.644725,0 c 0.302461,-10e-7 0.537268,-0.07164 0.704421,-0.214908 0.167149,-0.143274 0.352208,-0.481555 0.55518,-1.014845 l 0.196999,-0.501453 -2.704262,-6.578581 1.164086,0 2.089386,5.229435 2.089387,-5.229435 1.164086,0 -2.93708,7.306882"
+ id="path3197"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 46.971524,69.870971 c -0.589011,6e-6 -1.054645,0.230833 -1.396904,0.692482 -0.342263,0.45768 -0.513394,1.086485 -0.513392,1.886417 -2e-6,0.799939 0.169139,1.430734 0.507423,1.892387 0.342258,0.457676 0.809882,0.686514 1.402873,0.686513 0.585024,1e-6 1.048668,-0.230826 1.390934,-0.692482 0.342256,-0.461653 0.513387,-1.090458 0.513393,-1.886418 -6e-6,-0.791972 -0.171137,-1.418788 -0.513393,-1.880447 -0.342266,-0.465629 -0.80591,-0.698446 -1.390934,-0.698452 m 0,-0.931269 c 0.955144,7e-6 1.705332,0.310429 2.250568,0.931269 0.545223,0.620851 0.817838,1.480484 0.817845,2.578899 -7e-6,1.094443 -0.272622,1.954075 -0.817845,2.5789 -0.545236,0.620846 -1.295424,0.931269 -2.250568,0.931269 -0.95913,0 -1.711309,-0.310423 -2.256537,-0.931269 -0.541251,-0.624825 -0.811876,-1.484457 -0.811876,-2.5789 0,-1.098415 0.270625,-1.958048 0.811876,-2.578899 0.545228,-0.62084 1.297407,-0.931262 2.256537,-0.931269"
+ id="path3199"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 51.741295,73.148322 0,-4.047439 1.09842,0 0,4.005652 c -2e-6,0.632787 0.123371,1.108371 0.37012,1.426752 0.246744,0.314404 0.616863,0.471605 1.110359,0.471604 0.592984,10e-7 1.060608,-0.189038 1.402874,-0.567119 0.346236,-0.378078 0.519356,-0.893459 0.519362,-1.546146 l 0,-3.790743 1.09842,0 0,6.686036 -1.09842,0 0,-1.026784 c -0.266651,0.405938 -0.577074,0.708401 -0.93127,0.90739 -0.350225,0.195009 -0.758152,0.292514 -1.223783,0.292514 -0.768101,0 -1.351138,-0.238787 -1.749115,-0.716361 -0.397979,-0.477573 -0.596968,-1.176024 -0.596967,-2.095356 m 2.763959,-4.20862 0,0"
+ id="path3201"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 63.489616,70.127667 c -0.123378,-0.07163 -0.258691,-0.123368 -0.405938,-0.155212 -0.143277,-0.03581 -0.302468,-0.05372 -0.477574,-0.05373 -0.62085,6e-6 -1.098423,0.202975 -1.432722,0.608907 -0.330324,0.401963 -0.495485,0.981021 -0.495483,1.737176 l 0,3.522108 -1.10439,0 0,-6.686036 1.10439,0 0,1.038723 c 0.230825,-0.405932 0.531298,-0.706405 0.901421,-0.901421 0.370116,-0.198982 0.819831,-0.298476 1.349146,-0.298483 0.07561,7e-6 0.159187,0.006 0.250727,0.01791 0.09153,0.008 0.193014,0.0219 0.304453,0.04179 l 0.006,1.128269"
+ id="path3203"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 72.808278,69.297882 0,1.038724 c -0.310428,-0.159186 -0.63279,-0.27858 -0.967087,-0.358181 -0.334306,-0.07959 -0.680547,-0.119388 -1.038723,-0.119393 -0.545234,5e-6 -0.955151,0.08358 -1.229753,0.250726 -0.270628,0.167156 -0.40594,0.417882 -0.405938,0.752179 -2e-6,0.254711 0.0975,0.45569 0.292514,0.602937 0.195007,0.143276 0.587015,0.280579 1.176026,0.411908 l 0.376089,0.08357 c 0.780033,0.167155 1.333223,0.403952 1.65957,0.710391 0.330316,0.302467 0.495477,0.726313 0.495483,1.271541 -6e-6,0.620848 -0.246752,1.11235 -0.74024,1.47451 -0.489518,0.36216 -1.16409,0.54324 -2.02372,0.54324 -0.358183,0 -0.732282,-0.03582 -1.122299,-0.107454 -0.38604,-0.06766 -0.793967,-0.171131 -1.223783,-0.310423 l 0,-1.134238 c 0.405937,0.210929 0.805905,0.370121 1.199905,0.477574 0.393996,0.103475 0.784014,0.155212 1.170056,0.155211 0.517368,10e-7 0.915346,-0.08755 1.193935,-0.262665 0.27858,-0.179089 0.417873,-0.429816 0.417877,-0.752179 -4e-6,-0.298482 -0.101489,-0.527319 -0.304453,-0.686513 -0.198994,-0.159189 -0.638759,-0.31241 -1.319298,-0.459665 l -0.38206,-0.08955 c -0.680544,-0.143269 -1.172047,-0.362157 -1.474509,-0.656664 -0.302465,-0.29848 -0.453696,-0.706407 -0.453695,-1.223784 -10e-7,-0.6288 0.222866,-1.114333 0.668603,-1.4566 0.445734,-0.342255 1.078519,-0.513385 1.898357,-0.513392 0.405934,7e-6 0.787993,0.02985 1.146177,0.08955 0.358176,0.0597 0.688498,0.149248 0.990966,0.268635"
+ id="path3205"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 77.51238,69.870971 c -0.589011,6e-6 -1.054646,0.230833 -1.396904,0.692482 -0.342264,0.45768 -0.513394,1.086485 -0.513392,1.886417 -2e-6,0.799939 0.169139,1.430734 0.507422,1.892387 0.342259,0.457676 0.809883,0.686514 1.402874,0.686513 0.585023,1e-6 1.048668,-0.230826 1.390934,-0.692482 0.342256,-0.461653 0.513386,-1.090458 0.513392,-1.886418 -6e-6,-0.791972 -0.171136,-1.418788 -0.513392,-1.880447 -0.342266,-0.465629 -0.805911,-0.698446 -1.390934,-0.698452 m 0,-0.931269 c 0.955143,7e-6 1.705331,0.310429 2.250567,0.931269 0.545224,0.620851 0.817839,1.480484 0.817846,2.578899 -7e-6,1.094443 -0.272622,1.954075 -0.817846,2.5789 -0.545236,0.620846 -1.295424,0.931269 -2.250567,0.931269 -0.959131,0 -1.711309,-0.310423 -2.256537,-0.931269 -0.541252,-0.624825 -0.811877,-1.484457 -0.811876,-2.5789 -10e-7,-1.098415 0.270624,-1.958048 0.811876,-2.578899 0.545228,-0.62084 1.297406,-0.931262 2.256537,-0.931269"
+ id="path3207"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 85.780384,66.498105 0,0.91336 -1.050663,0 c -0.394002,8e-6 -0.668607,0.0796 -0.823815,0.238787 -0.151235,0.159199 -0.22685,0.445743 -0.226848,0.859633 l 0,0.590998 1.808812,0 0,0.853663 -1.808812,0 0,5.832373 -1.10439,0 0,-5.832373 -1.050663,0 0,-0.853663 1.050663,0 0,-0.465635 c -10e-7,-0.744211 0.173119,-1.285461 0.519362,-1.623751 0.346239,-0.342253 0.895448,-0.513383 1.64763,-0.513392 l 1.038724,0"
+ id="path3209"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 87.565311,67.202526 0,1.898357 2.262506,0 0,0.853663 -2.262506,0 0,3.629563 c -3e-6,0.545232 0.07362,0.895452 0.220878,1.050662 0.151229,0.155213 0.455682,0.232819 0.91336,0.232818 l 1.128268,0 0,0.91933 -1.128268,0 c -0.847696,0 -1.432724,-0.157202 -1.755084,-0.471605 -0.322364,-0.318382 -0.483545,-0.89545 -0.483544,-1.731205 l 0,-3.629563 -0.805906,0 0,-0.853663 0.805906,0 0,-1.898357 1.10439,0"
+ id="path3211"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 90.639696,69.100883 1.09842,0 1.373026,5.217496 1.367055,-5.217496 1.29542,0 1.373025,5.217496 1.367055,-5.217496 1.098421,0 -1.749115,6.686036 -1.29542,0 -1.438691,-5.480162 -1.444662,5.480162 -1.295419,0 -1.749115,-6.686036"
+ id="path3213"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 104.32219,72.425992 c -0.8875,3e-6 -1.50237,0.101487 -1.84463,0.304453 -0.34226,0.202972 -0.51339,0.549213 -0.51339,1.038724 0,0.39002 0.12735,0.700443 0.38206,0.931269 0.25868,0.226848 0.6089,0.340272 1.05066,0.340271 0.6089,10e-7 1.09643,-0.214907 1.46257,-0.644725 0.37011,-0.433794 0.55517,-1.008872 0.55518,-1.725236 l 0,-0.244756 -1.09245,0 m 2.19087,-0.453696 0,3.814623 -1.09842,0 0,-1.014845 c -0.25073,0.405938 -0.56314,0.706412 -0.93724,0.901421 -0.3741,0.191029 -0.83178,0.286544 -1.37302,0.286544 -0.68453,0 -1.22976,-0.191029 -1.6357,-0.573089 -0.40195,-0.386038 -0.60293,-0.901419 -0.60293,-1.546145 0,-0.752177 0.25072,-1.319295 0.75218,-1.701358 0.50543,-0.382055 1.2576,-0.573084 2.25653,-0.573088 l 1.54018,0 0,-0.107455 c -1e-5,-0.505427 -0.16716,-0.895446 -0.50145,-1.170056 -0.33033,-0.278579 -0.79596,-0.417871 -1.39691,-0.417877 -0.38206,6e-6 -0.75417,0.04577 -1.11633,0.137302 -0.36216,0.09154 -0.71039,0.228844 -1.04469,0.411908 l 0,-1.014845 c 0.40196,-0.155205 0.79198,-0.270618 1.17006,-0.346241 0.37807,-0.07959 0.7462,-0.119386 1.10439,-0.119393 0.96708,7e-6 1.68941,0.250733 2.16699,0.752179 0.47757,0.501458 0.71635,1.261596 0.71636,2.280415"
+ id="path3215"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 112.65586,70.127667 c -0.12338,-0.07163 -0.25869,-0.123368 -0.40594,-0.155212 -0.14327,-0.03581 -0.30247,-0.05372 -0.47757,-0.05373 -0.62085,6e-6 -1.09842,0.202975 -1.43272,0.608907 -0.33033,0.401963 -0.49549,0.981021 -0.49549,1.737176 l 0,3.522108 -1.10439,0 0,-6.686036 1.10439,0 0,1.038723 c 0.23083,-0.405932 0.5313,-0.706405 0.90142,-0.901421 0.37012,-0.198982 0.81984,-0.298476 1.34915,-0.298483 0.0756,7e-6 0.15919,0.006 0.25073,0.01791 0.0915,0.008 0.19301,0.0219 0.30445,0.04179 l 0.006,1.128269"
+ id="path3217"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 119.27622,72.169296 0,0.53727 -5.05034,0 c 0.0477,0.756162 0.2746,1.33323 0.68054,1.731206 0.40992,0.394 0.97903,0.590999 1.70733,0.590998 0.42185,1e-6 0.82978,-0.05174 1.22378,-0.155212 0.39797,-0.103473 0.79197,-0.258684 1.182,-0.465634 l 0,1.038723 c -0.39401,0.167151 -0.79795,0.294504 -1.21185,0.382059 -0.4139,0.08756 -0.83377,0.131333 -1.2596,0.131333 -1.06658,0 -1.91229,-0.310423 -2.53711,-0.931269 -0.62085,-0.620845 -0.93127,-1.460578 -0.93127,-2.519203 0,-1.094436 0.2945,-1.962028 0.88351,-2.602778 0.59299,-0.644718 1.39093,-0.96708 2.39384,-0.967087 0.89943,7e-6 1.60982,0.29053 2.13118,0.871572 0.52532,0.577074 0.78799,1.363081 0.78799,2.358022 m -1.09842,-0.322363 c -0.008,-0.600942 -0.1771,-1.080506 -0.50742,-1.438691 -0.32635,-0.358175 -0.76014,-0.537265 -1.30139,-0.537271 -0.61289,6e-6 -1.10439,0.173126 -1.47451,0.519362 -0.36614,0.346246 -0.57707,0.833769 -0.63278,1.46257 l 3.9161,-0.006"
+ id="path3219"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 121.35964,74.270621 1.2596,0 0,1.026784 -0.97903,1.910296 -0.77008,0 0.48951,-1.910296 0,-1.026784"
+ id="path3221"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 133.66315,72.44987 c -1e-5,-0.807891 -0.16716,-1.440676 -0.50146,-1.898356 -0.33032,-0.461649 -0.78601,-0.692477 -1.36705,-0.692482 -0.58105,5e-6 -1.03873,0.230833 -1.37303,0.692482 -0.33032,0.45768 -0.49548,1.090465 -0.49548,1.898356 0,0.807899 0.16516,1.442674 0.49548,1.904327 0.3343,0.457676 0.79198,0.686513 1.37303,0.686512 0.58104,10e-7 1.03673,-0.228836 1.36705,-0.686512 0.3343,-0.461653 0.50145,-1.096428 0.50146,-1.904327 m -3.73702,-2.334142 c 0.23082,-0.397973 0.52135,-0.692476 0.87157,-0.883512 0.3542,-0.195003 0.77606,-0.292507 1.26557,-0.292514 0.81187,7e-6 1.47053,0.322369 1.97596,0.967087 0.50941,0.64473 0.76412,1.492423 0.76412,2.543081 0,1.050665 -0.25471,1.898358 -0.76412,2.543082 -0.50543,0.644725 -1.16409,0.967087 -1.97596,0.967087 -0.48951,0 -0.91137,-0.09551 -1.26557,-0.286544 -0.35022,-0.195009 -0.64075,-0.491503 -0.87157,-0.889482 l 0,1.002906 -1.10439,0 0,-9.288814 1.10439,0 0,3.617623"
+ id="path3223"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 142.34306,72.169296 0,0.53727 -5.05035,0 c 0.0478,0.756162 0.27461,1.33323 0.68055,1.731206 0.40991,0.394 0.97902,0.590999 1.70732,0.590998 0.42185,1e-6 0.82978,-0.05174 1.22379,-0.155212 0.39797,-0.103473 0.79197,-0.258684 1.18199,-0.465634 l 0,1.038723 c -0.394,0.167151 -0.79795,0.294504 -1.21184,0.382059 -0.41391,0.08756 -0.83377,0.131333 -1.2596,0.131333 -1.06659,0 -1.91229,-0.310423 -2.53712,-0.931269 -0.62084,-0.620845 -0.93127,-1.460578 -0.93127,-2.519203 0,-1.094436 0.29451,-1.962028 0.88352,-2.602778 0.59298,-0.644718 1.39093,-0.96708 2.39384,-0.967087 0.89942,7e-6 1.60981,0.29053 2.13117,0.871572 0.52533,0.577074 0.78799,1.363081 0.788,2.358022 m -1.09842,-0.322363 c -0.008,-0.600942 -0.17711,-1.080506 -0.50743,-1.438691 -0.32634,-0.358175 -0.76014,-0.537265 -1.30138,-0.537271 -0.61289,6e-6 -1.1044,0.173126 -1.47451,0.519362 -0.36615,0.346246 -0.57707,0.833769 -0.63279,1.46257 l 3.91611,-0.006"
+ id="path3225"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 145.23238,67.202526 0,1.898357 2.26251,0 0,0.853663 -2.26251,0 0,3.629563 c 0,0.545232 0.0736,0.895452 0.22088,1.050662 0.15123,0.155213 0.45568,0.232819 0.91336,0.232818 l 1.12827,0 0,0.91933 -1.12827,0 c -0.8477,0 -1.43273,-0.157202 -1.75509,-0.471605 -0.32236,-0.318382 -0.48354,-0.89545 -0.48354,-1.731205 l 0,-3.629563 -0.80591,0 0,-0.853663 0.80591,0 0,-1.898357 1.10439,0"
+ id="path3227"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 150.03199,67.202526 0,1.898357 2.2625,0 0,0.853663 -2.2625,0 0,3.629563 c -1e-5,0.545232 0.0736,0.895452 0.22087,1.050662 0.15123,0.155213 0.45569,0.232819 0.91336,0.232818 l 1.12827,0 0,0.91933 -1.12827,0 c -0.84769,0 -1.43272,-0.157202 -1.75508,-0.471605 -0.32236,-0.318382 -0.48355,-0.89545 -0.48354,-1.731205 l 0,-3.629563 -0.80591,0 0,-0.853663 0.80591,0 0,-1.898357 1.10439,0"
+ id="path3229"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 159.46407,72.169296 0,0.53727 -5.05034,0 c 0.0478,0.756162 0.2746,1.33323 0.68054,1.731206 0.40992,0.394 0.97903,0.590999 1.70733,0.590998 0.42185,1e-6 0.82978,-0.05174 1.22378,-0.155212 0.39798,-0.103473 0.79197,-0.258684 1.182,-0.465634 l 0,1.038723 c -0.39401,0.167151 -0.79795,0.294504 -1.21185,0.382059 -0.4139,0.08756 -0.83376,0.131333 -1.2596,0.131333 -1.06658,0 -1.91228,-0.310423 -2.53711,-0.931269 -0.62085,-0.620845 -0.93127,-1.460578 -0.93127,-2.519203 0,-1.094436 0.29451,-1.962028 0.88351,-2.602778 0.59299,-0.644718 1.39094,-0.96708 2.39384,-0.967087 0.89943,7e-6 1.60982,0.29053 2.13118,0.871572 0.52532,0.577074 0.78799,1.363081 0.78799,2.358022 m -1.09842,-0.322363 c -0.008,-0.600942 -0.1771,-1.080506 -0.50742,-1.438691 -0.32634,-0.358175 -0.76014,-0.537265 -1.30139,-0.537271 -0.61289,6e-6 -1.10439,0.173126 -1.47451,0.519362 -0.36614,0.346246 -0.57707,0.833769 -0.63278,1.46257 l 3.9161,-0.006"
+ id="path3231"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 165.14123,70.127667 c -0.12337,-0.07163 -0.25869,-0.123368 -0.40593,-0.155212 -0.14328,-0.03581 -0.30247,-0.05372 -0.47758,-0.05373 -0.62085,6e-6 -1.09842,0.202975 -1.43272,0.608907 -0.33032,0.401963 -0.49548,0.981021 -0.49548,1.737176 l 0,3.522108 -1.10439,0 0,-6.686036 1.10439,0 0,1.038723 c 0.23082,-0.405932 0.5313,-0.706405 0.90142,-0.901421 0.37012,-0.198982 0.81983,-0.298476 1.34915,-0.298483 0.0756,7e-6 0.15918,0.006 0.25072,0.01791 0.0915,0.008 0.19302,0.0219 0.30446,0.04179 l 0.006,1.128269"
+ id="path3233"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 165.33823,74.270621 1.25961,0 0,1.516298 -1.25961,0 0,-1.516298"
+ id="path3235"
+ inkscape:connector-curvature="0" />
+ </g>
+ <g
+ transform="matrix(1.0124967,0,0,0.98765755,0.27574335,-0.05632028)"
+ style="font-size:28.4279995px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:semi-condensed;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;display:inline;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Bold Semi-Condensed"
+ id="text10160-1">
+ <path
+ d="m 64.462518,55.550974 0,-4.913824 1.582418,0 c 0.249852,1.554661 0.823593,2.716025 1.721226,3.484096 0.897623,0.768075 2.142272,1.152112 3.733952,1.152111 1.286282,1e-6 2.267195,-0.272989 2.942742,-0.818971 0.675522,-0.545978 1.013289,-1.34644 1.013302,-2.401388 -1.3e-5,-0.832847 -0.23136,-1.480619 -0.694043,-1.943321 -0.453453,-0.462688 -1.39735,-0.892994 -2.831695,-1.29092 L 69.140368,48.05531 c -1.823025,-0.51821 -3.10469,-1.235387 -3.844998,-2.151533 -0.740315,-0.925379 -1.110471,-2.239432 -1.110469,-3.942164 -2e-6,-2.05435 0.610755,-3.650648 1.832273,-4.788896 1.230765,-1.147464 2.95199,-1.721206 5.16368,-1.721227 1.091951,2.1e-5 2.225553,0.101814 3.40081,0.305379 1.184487,0.203607 2.410628,0.508985 3.678428,0.916137 l 0,4.580683 -1.582418,0 c -0.249869,-1.425085 -0.781968,-2.466148 -1.596299,-3.123193 -0.814355,-0.666262 -1.975719,-0.999403 -3.484095,-0.999422 -1.230778,1.9e-5 -2.160794,0.240621 -2.790053,0.721805 -0.629271,0.471967 -0.943904,1.17989 -0.943899,2.123771 -5e-6,0.860629 0.217462,1.517656 0.652401,1.971082 0.434927,0.444202 1.494498,0.906897 3.178717,1.388086 l 2.803933,0.763447 c 1.730467,0.481215 2.98437,1.230781 3.761713,2.2487 0.777312,1.017938 1.165975,2.419904 1.165992,4.2059 -1.7e-5,2.091387 -0.64779,3.683057 -1.94332,4.775015 -1.295561,1.082708 -3.20649,1.62406 -5.732795,1.624061 -1.21227,-1e-6 -2.419903,-0.115674 -3.622904,-0.347022 -1.203012,-0.231347 -2.424527,-0.582995 -3.664547,-1.054945"
+ id="path3176"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 100.03916,50.63715 c -0.490476,2.137656 -1.374224,3.724699 -2.651245,4.761135 -1.2678,1.036437 -2.975144,1.554655 -5.122037,1.554656 -3.15559,-1e-6 -5.649515,-0.962406 -7.481783,-2.887219 -1.823021,-1.934062 -2.73453,-4.552915 -2.734529,-7.856566 -10e-7,-3.312885 0.911508,-5.931738 2.734529,-7.856566 1.832268,-1.934047 4.326193,-2.901079 7.481783,-2.9011 1.101203,2.1e-5 2.253313,0.148084 3.456334,0.444188 1.202992,0.296145 2.470776,0.744959 3.803355,1.346443 l 0,5.094275 -1.582418,0 c -0.323903,-1.739718 -0.916152,-3.039891 -1.77675,-3.900521 -0.851373,-0.869848 -1.980349,-1.304782 -3.386929,-1.304801 -1.82303,1.9e-5 -3.174099,0.744958 -4.053211,2.234818 -0.879128,1.480641 -1.318688,3.761727 -1.318682,6.843264 -6e-6,3.081558 0.439554,5.362643 1.318682,6.843263 0.879112,1.480627 2.234808,2.220939 4.067092,2.220938 1.249264,1e-6 2.267193,-0.384036 3.053789,-1.152111 0.786566,-0.768071 1.355681,-1.929435 1.707345,-3.484096 l 2.484675,0"
+ id="path3178"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 112.49029,55.273357 c 1.59166,1e-6 2.77153,-0.744937 3.53962,-2.234818 0.77731,-1.489874 1.16598,-3.766333 1.16599,-6.829383 -10e-6,-3.072283 -0.38868,-5.353369 -1.16599,-6.843264 -0.76809,-1.48986 -1.94796,-2.234799 -3.53962,-2.234818 -1.58243,1.9e-5 -2.7623,0.754212 -3.53962,2.26258 -0.77733,1.499149 -1.166,3.77098 -1.16599,6.815502 -10e-6,3.035288 0.38866,5.30712 1.16599,6.815502 0.77732,1.499135 1.95719,2.2487 3.53962,2.248699 m 0,1.679584 c -3.13708,-1e-6 -5.59862,-0.953152 -7.38462,-2.859457 -1.786,-1.9063 -2.679,-4.534407 -2.679,-7.884328 0,-3.3499 0.893,-5.978007 2.679,-7.884328 1.79526,-1.915538 4.25679,-2.873317 7.38462,-2.873338 3.13706,2.1e-5 5.59397,0.953173 7.37074,2.859457 1.78598,1.906321 2.67898,4.539055 2.679,7.898209 -2e-5,3.349921 -0.89302,5.978028 -2.679,7.884328 -1.78602,1.906305 -4.24293,2.859456 -7.37074,2.859457"
+ id="path3180"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 124.74709,56.550396 0,-1.679584 2.38751,0 0,-17.364955 -2.38751,0 0,-1.679584 5.82996,0 11.25738,14.672068 0,-12.992484 -2.37363,0 0,-1.679584 6.524,0 0,1.679584 -2.38751,0 0,19.044539 -3.27588,0 -11.42395,-14.977447 0,13.297863 2.37363,0 0,1.679584 -6.524,0"
+ id="path3182"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 148.96919,55.550974 0,-4.913824 1.58241,0 c 0.24986,1.554661 0.8236,2.716025 1.72123,3.484096 0.89762,0.768075 2.14227,1.152112 3.73395,1.152111 1.28628,1e-6 2.2672,-0.272989 2.94274,-0.818971 0.67553,-0.545978 1.01329,-1.34644 1.01331,-2.401388 -2e-5,-0.832847 -0.23136,-1.480619 -0.69405,-1.943321 -0.45345,-0.462688 -1.39735,-0.892994 -2.83169,-1.29092 l -2.79005,-0.763447 c -1.82303,-0.51821 -3.10469,-1.235387 -3.845,-2.151533 -0.74032,-0.925379 -1.11047,-2.239432 -1.11047,-3.942164 0,-2.05435 0.61075,-3.650648 1.83227,-4.788896 1.23077,-1.147464 2.95199,-1.721206 5.16368,-1.721227 1.09195,2.1e-5 2.22556,0.101814 3.40081,0.305379 1.18449,0.203607 2.41063,0.508985 3.67843,0.916137 l 0,4.580683 -1.58242,0 c -0.24987,-1.425085 -0.78197,-2.466148 -1.5963,-3.123193 -0.81435,-0.666262 -1.97572,-0.999403 -3.48409,-0.999422 -1.23078,1.9e-5 -2.1608,0.240621 -2.79006,0.721805 -0.62927,0.471967 -0.9439,1.17989 -0.94389,2.123771 -1e-5,0.860629 0.21746,1.517656 0.6524,1.971082 0.43492,0.444202 1.4945,0.906897 3.17871,1.388086 l 2.80394,0.763447 c 1.73046,0.481215 2.98437,1.230781 3.76171,2.2487 0.77731,1.017938 1.16598,2.419904 1.16599,4.2059 -1e-5,2.091387 -0.64779,3.683057 -1.94332,4.775015 -1.29556,1.082708 -3.20649,1.62406 -5.73279,1.624061 -1.21227,-1e-6 -2.41991,-0.115674 -3.62291,-0.347022 -1.20301,-0.231347 -2.42452,-0.582995 -3.66454,-1.054945"
+ id="path3184"
+ inkscape:connector-curvature="0" />
+ </g>
+ <image
+ id="image1340"
+ height="80.018639"
+ width="465.43411"
+ sodipodi:absref="bricks.jpg"
+ xlink:href="bricks.jpg"
+ x="171.31058"
+ y="0.17131744" />
+ </g>
+</svg>
diff --git a/doc/design/titlepage/SCons_path.svg b/doc/design/titlepage/SCons_path.svg
new file mode 100644
index 0000000..ef580ee
--- /dev/null
+++ b/doc/design/titlepage/SCons_path.svg
@@ -0,0 +1,196 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="167.9814"
+ height="58.247482"
+ id="svg2"
+ sodipodi:version="0.32"
+ inkscape:version="0.48.3.1 r9886"
+ version="1.0"
+ sodipodi:docname="SCons_path.svg"
+ inkscape:export-filename="Constructs-using-SCons.png"
+ inkscape:export-xdpi="100"
+ inkscape:export-ydpi="100">
+ <title
+ id="title2996">SCons - Build your software, better (SCons Logo)</title>
+ <defs
+ id="defs4" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="2.6603715"
+ inkscape:cx="7.1635215"
+ inkscape:cy="31.742841"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer2"
+ inkscape:window-width="868"
+ inkscape:window-height="789"
+ inkscape:window-x="210"
+ inkscape:window-y="24"
+ width="168px"
+ height="60px"
+ showgrid="false"
+ inkscape:window-maximized="0"
+ fit-margin-left="2"
+ fit-margin-top="2"
+ fit-margin-right="2"
+ fit-margin-bottom="2" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title>SCons - Build your software, better (SCons Logo)</dc:title>
+ <dc:date>2011-05-19</dc:date>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Dirk Baechle</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:rights>
+ <cc:Agent>
+ <dc:title>Dirk Baechle &lt;dl9obn@darc.de&gt;</dc:title>
+ </cc:Agent>
+ </dc:rights>
+ <dc:language>en</dc:language>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>SCons</rdf:li>
+ <rdf:li>software build tool</rdf:li>
+ <rdf:li>software construction tool</rdf:li>
+ <rdf:li />
+ </rdf:Bag>
+ </dc:subject>
+ <dc:contributor>
+ <cc:Agent>
+ <dc:title>Based on the SCons (Constructs using) logo by Hartmut Goebel &lt;h.goebel@goebel-consult.de&gt;.</dc:title>
+ </cc:Agent>
+ </dc:contributor>
+ <cc:license
+ rdf:resource="" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Ebene 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-264.32267,-503.68225)"
+ inkscape:export-filename="SCons.png"
+ style="display:inline" />
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="Constructs"
+ style="display:inline"
+ transform="translate(2.5546741e-5,-0.00274857)">
+ <g
+ transform="translate(-264.3227,-505.012)"
+ style="display:inline"
+ id="Brick-to-Brick"
+ inkscape:label="#g2189"
+ inkscape:export-filename="SCons-Bricks.png">
+ <rect
+ y="552.24042"
+ x="296.28955"
+ height="8.3218126"
+ width="25.570662"
+ id="rect2170"
+ style="fill:#cf291c;fill-opacity:1;stroke:#000000;stroke-width:1.4000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ <rect
+ y="552.24042"
+ x="267.02267"
+ height="8.3218126"
+ width="25.570662"
+ id="rect3143"
+ style="fill:#cf291c;fill-opacity:1;stroke:#000000;stroke-width:1.4000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ <rect
+ y="540.14984"
+ x="267.02267"
+ height="8.3218126"
+ width="13.012291"
+ id="rect3145"
+ style="fill:#cf291c;fill-opacity:1;stroke:#000000;stroke-width:1.40000021;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ <rect
+ y="540.14984"
+ x="308.84793"
+ height="8.3218126"
+ width="13.012291"
+ id="rect3147"
+ style="fill:#cf291c;fill-opacity:1;stroke:#000000;stroke-width:1.40000021;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ <rect
+ transform="matrix(0.905934,0.423418,-0.423418,0.905934,0,0)"
+ y="335.94952"
+ x="480.29761"
+ height="8.3219995"
+ width="23"
+ id="rect3149"
+ style="fill:#cf291c;fill-opacity:1;stroke:#000000;stroke-width:1.4000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ <g
+ id="g2185">
+ <path
+ style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none;marker-start:none;marker-end:none"
+ d="m 297.75417,522.67403 c -3.0064,6.09106 -3.82029,6.65046 -3.12294,18.68449"
+ id="path3155"
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0" />
+ <path
+ sodipodi:type="star"
+ style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:2.56573844;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ id="path8218"
+ sodipodi:sides="3"
+ sodipodi:cx="269.17282"
+ sodipodi:cy="490.86679"
+ sodipodi:r1="14.074683"
+ sodipodi:r2="14.074683"
+ sodipodi:arg1="1.5922984"
+ sodipodi:arg2="-2.6531172"
+ inkscape:flatsided="false"
+ inkscape:rounded="0"
+ inkscape:randomized="0"
+ d="m 268.87021,504.93822 -12.12603,-20.6764 0.39373,-0.69281 23.9693,-0.16325 0.40313,0.68739 -11.84327,20.83964 z"
+ transform="matrix(0.370735,0,0,0.409743,194.6666,341.5009)" />
+ </g>
+ </g>
+ <g
+ transform="scale(1.0124967,0.98765755)"
+ style="font-size:28.4279995px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:semi-condensed;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;display:inline;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Bold Semi-Condensed"
+ id="text10160">
+ <path
+ d="m 64.462518,55.550974 0,-4.913824 1.582418,0 c 0.249852,1.554661 0.823593,2.716025 1.721226,3.484096 0.897623,0.768075 2.142272,1.152112 3.733952,1.152111 1.286282,1e-6 2.267195,-0.272989 2.942742,-0.818971 0.675522,-0.545978 1.013289,-1.34644 1.013302,-2.401388 -1.3e-5,-0.832847 -0.23136,-1.480619 -0.694043,-1.943321 -0.453453,-0.462688 -1.39735,-0.892994 -2.831695,-1.29092 L 69.140368,48.05531 c -1.823025,-0.51821 -3.10469,-1.235387 -3.844998,-2.151533 -0.740315,-0.925379 -1.110471,-2.239432 -1.110469,-3.942164 -2e-6,-2.05435 0.610755,-3.650648 1.832273,-4.788896 1.230765,-1.147464 2.95199,-1.721206 5.16368,-1.721227 1.091951,2.1e-5 2.225553,0.101814 3.40081,0.305379 1.184487,0.203607 2.410628,0.508985 3.678428,0.916137 l 0,4.580683 -1.582418,0 c -0.249869,-1.425085 -0.781968,-2.466148 -1.596299,-3.123193 -0.814355,-0.666262 -1.975719,-0.999403 -3.484095,-0.999422 -1.230778,1.9e-5 -2.160794,0.240621 -2.790053,0.721805 -0.629271,0.471967 -0.943904,1.17989 -0.943899,2.123771 -5e-6,0.860629 0.217462,1.517656 0.652401,1.971082 0.434927,0.444202 1.494498,0.906897 3.178717,1.388086 l 2.803933,0.763447 c 1.730467,0.481215 2.98437,1.230781 3.761713,2.2487 0.777312,1.017938 1.165975,2.419904 1.165992,4.2059 -1.7e-5,2.091387 -0.64779,3.683057 -1.94332,4.775015 -1.295561,1.082708 -3.20649,1.62406 -5.732795,1.624061 -1.21227,-1e-6 -2.419903,-0.115674 -3.622904,-0.347022 -1.203012,-0.231347 -2.424527,-0.582995 -3.664547,-1.054945"
+ style=""
+ id="path3017" />
+ <path
+ d="m 100.03916,50.63715 c -0.490476,2.137656 -1.374224,3.724699 -2.651245,4.761135 -1.2678,1.036437 -2.975144,1.554655 -5.122037,1.554656 -3.15559,-1e-6 -5.649515,-0.962406 -7.481783,-2.887219 -1.823021,-1.934062 -2.73453,-4.552915 -2.734529,-7.856566 -10e-7,-3.312885 0.911508,-5.931738 2.734529,-7.856566 1.832268,-1.934047 4.326193,-2.901079 7.481783,-2.9011 1.101203,2.1e-5 2.253313,0.148084 3.456334,0.444188 1.202992,0.296145 2.470776,0.744959 3.803355,1.346443 l 0,5.094275 -1.582418,0 c -0.323903,-1.739718 -0.916152,-3.039891 -1.77675,-3.900521 -0.851373,-0.869848 -1.980349,-1.304782 -3.386929,-1.304801 -1.82303,1.9e-5 -3.174099,0.744958 -4.053211,2.234818 -0.879128,1.480641 -1.318688,3.761727 -1.318682,6.843264 -6e-6,3.081558 0.439554,5.362643 1.318682,6.843263 0.879112,1.480627 2.234808,2.220939 4.067092,2.220938 1.249264,1e-6 2.267193,-0.384036 3.053789,-1.152111 0.786566,-0.768071 1.355681,-1.929435 1.707345,-3.484096 l 2.484675,0"
+ style=""
+ id="path3019" />
+ <path
+ d="m 112.49029,55.273357 c 1.59166,1e-6 2.77153,-0.744937 3.53962,-2.234818 0.77731,-1.489874 1.16598,-3.766333 1.16599,-6.829383 -10e-6,-3.072283 -0.38868,-5.353369 -1.16599,-6.843264 -0.76809,-1.48986 -1.94796,-2.234799 -3.53962,-2.234818 -1.58243,1.9e-5 -2.7623,0.754212 -3.53962,2.26258 -0.77733,1.499149 -1.166,3.77098 -1.16599,6.815502 -10e-6,3.035288 0.38866,5.30712 1.16599,6.815502 0.77732,1.499135 1.95719,2.2487 3.53962,2.248699 m 0,1.679584 c -3.13708,-1e-6 -5.59862,-0.953152 -7.38462,-2.859457 -1.786,-1.9063 -2.679,-4.534407 -2.679,-7.884328 0,-3.3499 0.893,-5.978007 2.679,-7.884328 1.79526,-1.915538 4.25679,-2.873317 7.38462,-2.873338 3.13706,2.1e-5 5.59397,0.953173 7.37074,2.859457 1.78598,1.906321 2.67898,4.539055 2.679,7.898209 -2e-5,3.349921 -0.89302,5.978028 -2.679,7.884328 -1.78602,1.906305 -4.24293,2.859456 -7.37074,2.859457"
+ style=""
+ id="path3021" />
+ <path
+ d="m 124.74709,56.550396 0,-1.679584 2.38751,0 0,-17.364955 -2.38751,0 0,-1.679584 5.82996,0 11.25738,14.672068 0,-12.992484 -2.37363,0 0,-1.679584 6.524,0 0,1.679584 -2.38751,0 0,19.044539 -3.27588,0 -11.42395,-14.977447 0,13.297863 2.37363,0 0,1.679584 -6.524,0"
+ style=""
+ id="path3023" />
+ <path
+ d="m 148.96919,55.550974 0,-4.913824 1.58241,0 c 0.24986,1.554661 0.8236,2.716025 1.72123,3.484096 0.89762,0.768075 2.14227,1.152112 3.73395,1.152111 1.28628,1e-6 2.2672,-0.272989 2.94274,-0.818971 0.67553,-0.545978 1.01329,-1.34644 1.01331,-2.401388 -2e-5,-0.832847 -0.23136,-1.480619 -0.69405,-1.943321 -0.45345,-0.462688 -1.39735,-0.892994 -2.83169,-1.29092 l -2.79005,-0.763447 c -1.82303,-0.51821 -3.10469,-1.235387 -3.845,-2.151533 -0.74032,-0.925379 -1.11047,-2.239432 -1.11047,-3.942164 0,-2.05435 0.61075,-3.650648 1.83227,-4.788896 1.23077,-1.147464 2.95199,-1.721206 5.16368,-1.721227 1.09195,2.1e-5 2.22556,0.101814 3.40081,0.305379 1.18449,0.203607 2.41063,0.508985 3.67843,0.916137 l 0,4.580683 -1.58242,0 c -0.24987,-1.425085 -0.78197,-2.466148 -1.5963,-3.123193 -0.81435,-0.666262 -1.97572,-0.999403 -3.48409,-0.999422 -1.23078,1.9e-5 -2.1608,0.240621 -2.79006,0.721805 -0.62927,0.471967 -0.9439,1.17989 -0.94389,2.123771 -1e-5,0.860629 0.21746,1.517656 0.6524,1.971082 0.43492,0.444202 1.4945,0.906897 3.17871,1.388086 l 2.80394,0.763447 c 1.73046,0.481215 2.98437,1.230781 3.76171,2.2487 0.77731,1.017938 1.16598,2.419904 1.16599,4.2059 -1e-5,2.091387 -0.64779,3.683057 -1.94332,4.775015 -1.29556,1.082708 -3.20649,1.62406 -5.73279,1.624061 -1.21227,-1e-6 -2.41991,-0.115674 -3.62291,-0.347022 -1.20301,-0.231347 -2.42452,-0.582995 -3.66454,-1.054945"
+ style=""
+ id="path3025" />
+ </g>
+ </g>
+</svg>
diff --git a/doc/design/titlepage/bricks.jpg b/doc/design/titlepage/bricks.jpg
new file mode 100755
index 0000000..b2dc16b
--- /dev/null
+++ b/doc/design/titlepage/bricks.jpg
Binary files differ
diff --git a/doc/design/titlepage/mapnik_final_colors.svg b/doc/design/titlepage/mapnik_final_colors.svg
new file mode 100644
index 0000000..23bb54a
--- /dev/null
+++ b/doc/design/titlepage/mapnik_final_colors.svg
@@ -0,0 +1,6397 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ fill-opacity="1"
+ color-rendering="auto"
+ color-interpolation="auto"
+ stroke="black"
+ text-rendering="auto"
+ stroke-linecap="square"
+ width="600"
+ stroke-miterlimit="10"
+ stroke-opacity="1"
+ shape-rendering="auto"
+ fill="black"
+ stroke-dasharray="none"
+ font-weight="normal"
+ stroke-width="1"
+ height="701"
+ font-family="'Dialog'"
+ font-style="normal"
+ stroke-linejoin="miter"
+ font-size="12"
+ stroke-dashoffset="0"
+ image-rendering="auto"
+ id="svg8168"
+ version="1.1"
+ inkscape:version="0.48.3.1 r9886"
+ sodipodi:docname="mapnik_final_colors.svg">
+ <title
+ id="title9830">SCons, Book titlepage background</title>
+ <metadata
+ id="metadata9828">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <cc:license
+ rdf:resource="" />
+ <dc:title>SCons, Book titlepage background</dc:title>
+ <dc:date>2013-04-15</dc:date>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Dirk Baechle</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:rights>
+ <cc:Agent>
+ <dc:title>Dirk Baechle &lt;dl9obn@darc.de&gt;</dc:title>
+ </cc:Agent>
+ </dc:rights>
+ <dc:language>en</dc:language>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>SCons</rdf:li>
+ <rdf:li>software build tool</rdf:li>
+ <rdf:li>software construction tool</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ <dc:contributor>
+ <cc:Agent>
+ <dc:title>Based on a SCons dependency tree of the Mapnik project (www.mapnik.org)</dc:title>
+ </cc:Agent>
+ </dc:contributor>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="735"
+ inkscape:window-height="480"
+ id="namedview9826"
+ showgrid="false"
+ inkscape:zoom="0.33666191"
+ inkscape:cx="300"
+ inkscape:cy="350.5"
+ inkscape:window-x="85"
+ inkscape:window-y="99"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="svg8168" />
+ <!--Generated by ySVG-->
+ <defs
+ id="genericDefs" />
+ <g
+ id="g8171">
+ <defs
+ id="defs1">
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath1">
+ <path
+ d="M0 0 L600 0 L600 701 L0 701 L0 0 Z"
+ id="path8175" />
+ </clipPath>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath2">
+ <path
+ d="M-871 -1293 L3138 -1293 L3138 3390.8484 L-871 3390.8484 L-871 -1293 Z"
+ id="path8178" />
+ </clipPath>
+ </defs>
+ <g
+ fill="white"
+ transform="scale(0.1497,0.1497) translate(871,1293)"
+ stroke="white"
+ id="g8180">
+ <rect
+ x="-871"
+ y="-1293"
+ clip-path="url(#clipPath2)"
+ width="4009"
+ height="4684"
+ stroke="none"
+ id="rect8182" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8184">
+ <rect
+ x="1133.3896"
+ y="93"
+ clip-path="url(#clipPath2)"
+ width="142.2207"
+ height="30"
+ stroke="none"
+ id="rect8186" />
+ <text
+ x="1140.3896"
+ y="112.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8188">./src/agg_renderer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8190">
+ <rect
+ x="1133.3896"
+ y="93"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="142.2207"
+ height="30"
+ id="rect8192" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8194">
+ <rect
+ x="-44.5742"
+ y="1682.5"
+ clip-path="url(#clipPath2)"
+ width="69.1484"
+ height="30"
+ stroke="none"
+ id="rect8196" />
+ <text
+ x="-37.5742"
+ y="1701.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8198">./agg/src</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8200">
+ <rect
+ x="-44.5742"
+ y="1682.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="69.1484"
+ height="30"
+ id="rect8202" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8204">
+ <rect
+ x="1133.7031"
+ y="-665"
+ clip-path="url(#clipPath2)"
+ width="114.5938"
+ height="30"
+ stroke="none"
+ id="rect8206" />
+ <text
+ x="1140.7031"
+ y="-645.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8208">./src/graphics.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8210">
+ <rect
+ x="1133.7031"
+ y="-665"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="114.5938"
+ height="30"
+ id="rect8212" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8214">
+ <rect
+ x="1669.0742"
+ y="-63.5"
+ clip-path="url(#clipPath2)"
+ width="111.8516"
+ height="30"
+ stroke="none"
+ id="rect8216" />
+ <text
+ x="1676.0742"
+ y="-44.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8218">./src/font_set.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8220">
+ <rect
+ x="1669.0742"
+ y="-63.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="111.8516"
+ height="30"
+ id="rect8222" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8224">
+ <rect
+ x="-615.9639"
+ y="2086.5"
+ clip-path="url(#clipPath2)"
+ width="234.9277"
+ height="30"
+ stroke="none"
+ id="rect8226" />
+ <text
+ x="-608.9639"
+ y="2105.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8228">./agg/src/agg_vcgen_markers_term.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8230">
+ <rect
+ x="-615.9639"
+ y="2086.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="234.9277"
+ height="30"
+ id="rect8232" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8234">
+ <rect
+ x="2055.0605"
+ y="-148"
+ clip-path="url(#clipPath2)"
+ width="107.8789"
+ height="30"
+ stroke="none"
+ id="rect8236" />
+ <text
+ x="2062.0605"
+ y="-128.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8238">./src/params.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8240">
+ <rect
+ x="2055.0605"
+ y="-148"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="107.8789"
+ height="30"
+ id="rect8242" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8244">
+ <rect
+ x="-78.1094"
+ y="1848"
+ clip-path="url(#clipPath2)"
+ width="189.2188"
+ height="30"
+ stroke="none"
+ id="rect8246" />
+ <text
+ x="-71.1094"
+ y="1867.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8248">./agg/src/agg_image_filters.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8250">
+ <rect
+ x="-78.1094"
+ y="1848"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="189.2188"
+ height="30"
+ id="rect8252" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8254">
+ <rect
+ x="2427.3438"
+ y="1805"
+ clip-path="url(#clipPath2)"
+ width="258.3125"
+ height="30"
+ stroke="none"
+ id="rect8256" />
+ <text
+ x="2434.3438"
+ y="1824.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8258">./bindings/python/mapnik_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8260">
+ <rect
+ x="2427.3438"
+ y="1805"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="258.3125"
+ height="30"
+ id="rect8262" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8264">
+ <rect
+ x="1768.7578"
+ y="190"
+ clip-path="url(#clipPath2)"
+ width="112.4844"
+ height="30"
+ stroke="none"
+ id="rect8266" />
+ <text
+ x="1775.7578"
+ y="209.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8268">./src/memory.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8270">
+ <rect
+ x="1768.7578"
+ y="190"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="112.4844"
+ height="30"
+ id="rect8272" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8274">
+ <rect
+ x="1295.8389"
+ y="3348.5"
+ clip-path="url(#clipPath2)"
+ width="263.3223"
+ height="30"
+ stroke="none"
+ id="rect8276" />
+ <text
+ x="1302.8389"
+ y="3367.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8278">./bindings/python/mapnik_font_engine.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8280">
+ <rect
+ x="1295.8389"
+ y="3348.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="263.3223"
+ height="30"
+ id="rect8282" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8284">
+ <rect
+ x="644.1875"
+ y="440"
+ clip-path="url(#clipPath2)"
+ width="205.625"
+ height="30"
+ stroke="none"
+ id="rect8286" />
+ <text
+ x="651.1875"
+ y="459.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8288">./plugins/input/shape/dbffile.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8290">
+ <rect
+ x="644.1875"
+ y="440"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="205.625"
+ height="30"
+ id="rect8292" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8294">
+ <rect
+ x="141.2227"
+ y="1886.5"
+ clip-path="url(#clipPath2)"
+ width="196.5547"
+ height="30"
+ stroke="none"
+ id="rect8296" />
+ <text
+ x="148.2227"
+ y="1905.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8298">./agg/src/agg_line_aa_basics.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8300">
+ <rect
+ x="141.2227"
+ y="1886.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="196.5547"
+ height="30"
+ id="rect8302" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8304">
+ <rect
+ x="1837.5674"
+ y="-302.5"
+ clip-path="url(#clipPath2)"
+ width="121.8652"
+ height="30"
+ stroke="none"
+ id="rect8306" />
+ <text
+ x="1844.5674"
+ y="-283.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8308">./src/save_map.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8310">
+ <rect
+ x="1837.5674"
+ y="-302.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="121.8652"
+ height="30"
+ id="rect8312" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8314">
+ <rect
+ x="655.2578"
+ y="2799.5"
+ clip-path="url(#clipPath2)"
+ width="283.4844"
+ height="30"
+ stroke="none"
+ id="rect8316" />
+ <text
+ x="662.2578"
+ y="2818.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8318">./bindings/python/mapnik_view_transform.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8320">
+ <rect
+ x="655.2578"
+ y="2799.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="283.4844"
+ height="30"
+ id="rect8322" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8324">
+ <rect
+ x="1871.4453"
+ y="-160.5"
+ clip-path="url(#clipPath2)"
+ width="94.1094"
+ height="30"
+ stroke="none"
+ id="rect8326" />
+ <text
+ x="1878.4453"
+ y="-141.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8328">./src/color.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8330">
+ <rect
+ x="1871.4453"
+ y="-160.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="94.1094"
+ height="30"
+ id="rect8332" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8334">
+ <rect
+ x="94.7598"
+ y="1464"
+ clip-path="url(#clipPath2)"
+ width="98.4805"
+ height="30"
+ stroke="none"
+ id="rect8336" />
+ <text
+ x="101.7598"
+ y="1483.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8338">./agg/libagg.a</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8340">
+ <rect
+ x="94.7598"
+ y="1464"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="98.4805"
+ height="30"
+ id="rect8342" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8344">
+ <rect
+ x="1939.2666"
+ y="-928"
+ clip-path="url(#clipPath2)"
+ width="187.4668"
+ height="30"
+ stroke="none"
+ id="rect8346" />
+ <text
+ x="1946.2666"
+ y="-908.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8348">./src/font_engine_freetype.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8350">
+ <rect
+ x="1939.2666"
+ y="-928"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="187.4668"
+ height="30"
+ id="rect8352" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8354">
+ <rect
+ x="1924.2861"
+ y="152.5"
+ clip-path="url(#clipPath2)"
+ width="101.4277"
+ height="30"
+ stroke="none"
+ id="rect8356" />
+ <text
+ x="1931.2861"
+ y="171.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8358">./src/stroke.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8360">
+ <rect
+ x="1924.2861"
+ y="152.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="101.4277"
+ height="30"
+ id="rect8362" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8364">
+ <rect
+ x="1550.0732"
+ y="2624"
+ clip-path="url(#clipPath2)"
+ width="229.8535"
+ height="30"
+ stroke="none"
+ id="rect8366" />
+ <text
+ x="1557.0732"
+ y="2643.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8368">./bindings/python/mapnik_image.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8370">
+ <rect
+ x="1550.0732"
+ y="2624"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="229.8535"
+ height="30"
+ id="rect8372" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8374">
+ <rect
+ x="1955.9092"
+ y="-737"
+ clip-path="url(#clipPath2)"
+ width="125.1816"
+ height="30"
+ stroke="none"
+ id="rect8376" />
+ <text
+ x="1962.9092"
+ y="-717.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8378">./src/image_util.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8380">
+ <rect
+ x="1955.9092"
+ y="-737"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="125.1816"
+ height="30"
+ id="rect8382" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8384">
+ <rect
+ x="966.7939"
+ y="2852.5"
+ clip-path="url(#clipPath2)"
+ width="297.4121"
+ height="30"
+ stroke="none"
+ id="rect8386" />
+ <text
+ x="973.7939"
+ y="2871.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8388">./bindings/python/mapnik_datasource_cache.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8390">
+ <rect
+ x="966.7939"
+ y="2852.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="297.4121"
+ height="30"
+ id="rect8392" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8394">
+ <rect
+ x="-154.5957"
+ y="2476.5"
+ clip-path="url(#clipPath2)"
+ width="94.1914"
+ height="30"
+ stroke="none"
+ id="rect8396" />
+ <text
+ x="-147.5957"
+ y="2495.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8398">./agg/include</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8400">
+ <rect
+ x="-154.5957"
+ y="2476.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="94.1914"
+ height="30"
+ id="rect8402" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8404">
+ <rect
+ x="889.5508"
+ y="2446.5"
+ clip-path="url(#clipPath2)"
+ width="216.8984"
+ height="30"
+ stroke="none"
+ id="rect8406" />
+ <text
+ x="896.5508"
+ y="2465.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8408">./bindings/python/mapnik_rule.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8410">
+ <rect
+ x="889.5508"
+ y="2446.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="216.8984"
+ height="30"
+ id="rect8412" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8414">
+ <rect
+ x="270.4668"
+ y="1185.5"
+ clip-path="url(#clipPath2)"
+ width="174.0664"
+ height="30"
+ stroke="none"
+ id="rect8416" />
+ <text
+ x="277.4668"
+ y="1204.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8418">./agg/src/agg_bezier_arc.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8420">
+ <rect
+ x="270.4668"
+ y="1185.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="174.0664"
+ height="30"
+ id="rect8422" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8424">
+ <rect
+ x="1531.0332"
+ y="1589.5"
+ clip-path="url(#clipPath2)"
+ width="252.9336"
+ height="30"
+ stroke="none"
+ id="rect8426" />
+ <text
+ x="1538.0332"
+ y="1608.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8428">./bindings/python/mapnik_featureset.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8430">
+ <rect
+ x="1531.0332"
+ y="1589.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="252.9336"
+ height="30"
+ id="rect8432" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8434">
+ <rect
+ x="185.0576"
+ y="1689"
+ clip-path="url(#clipPath2)"
+ width="131.8848"
+ height="30"
+ stroke="none"
+ id="rect8436" />
+ <text
+ x="192.0576"
+ y="1708.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8438">./agg/src/agg_arc.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8440">
+ <rect
+ x="185.0576"
+ y="1689"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="131.8848"
+ height="30"
+ id="rect8442" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8444">
+ <rect
+ x="-166.7686"
+ y="540"
+ clip-path="url(#clipPath2)"
+ width="220.5371"
+ height="30"
+ stroke="none"
+ id="rect8446" />
+ <text
+ x="-159.7686"
+ y="559.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8448">./plugins/input/shape/shapefile.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8450">
+ <rect
+ x="-166.7686"
+ y="540"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="220.5371"
+ height="30"
+ id="rect8452" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8454">
+ <rect
+ x="-59.0459"
+ y="-1075.5"
+ clip-path="url(#clipPath2)"
+ width="271.0918"
+ height="30"
+ stroke="none"
+ id="rect8456" />
+ <text
+ x="-52.0459"
+ y="-1056.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8458">./plugins/input/raster/raster_datasource.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8460">
+ <rect
+ x="-59.0459"
+ y="-1075.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="271.0918"
+ height="30"
+ id="rect8462" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8464">
+ <rect
+ x="-712.333"
+ y="-443"
+ clip-path="url(#clipPath2)"
+ width="265.666"
+ height="30"
+ stroke="none"
+ id="rect8466" />
+ <text
+ x="-705.333"
+ y="-423.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8468">./plugins/input/raster/raster_featureset.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8470">
+ <rect
+ x="-712.333"
+ y="-443"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="265.666"
+ height="30"
+ id="rect8472" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8474">
+ <rect
+ x="1988.0195"
+ y="311.5"
+ clip-path="url(#clipPath2)"
+ width="110.9609"
+ height="30"
+ stroke="none"
+ id="rect8476" />
+ <text
+ x="1995.0195"
+ y="330.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8478">./src/unicode.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8480">
+ <rect
+ x="1988.0195"
+ y="311.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="110.9609"
+ height="30"
+ id="rect8482" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8484">
+ <rect
+ x="2889.043"
+ y="2261"
+ clip-path="url(#clipPath2)"
+ width="233.9141"
+ height="30"
+ stroke="none"
+ id="rect8486" />
+ <text
+ x="2896.043"
+ y="2280.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8488">./bindings/python/mapnik/ogcserver</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8490">
+ <rect
+ x="2889.043"
+ y="2261"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="233.9141"
+ height="30"
+ id="rect8492" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8494">
+ <rect
+ x="1957.6152"
+ y="1969"
+ clip-path="url(#clipPath2)"
+ width="219.7695"
+ height="30"
+ stroke="none"
+ id="rect8496" />
+ <text
+ x="1964.6152"
+ y="1988.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8498">./bindings/python/mapnik_map.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8500">
+ <rect
+ x="1957.6152"
+ y="1969"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="219.7695"
+ height="30"
+ id="rect8502" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8504">
+ <rect
+ x="1404.0469"
+ y="45"
+ clip-path="url(#clipPath2)"
+ width="97.9062"
+ height="30"
+ stroke="none"
+ id="rect8506" />
+ <text
+ x="1411.0469"
+ y="64.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8508">./src/arrow.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8510">
+ <rect
+ x="1404.0469"
+ y="45"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="97.9062"
+ height="30"
+ id="rect8512" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8514">
+ <rect
+ x="378.9629"
+ y="-617"
+ clip-path="url(#clipPath2)"
+ width="67.0742"
+ height="30"
+ stroke="none"
+ id="rect8516" />
+ <text
+ x="385.9629"
+ y="-597.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8518">./plugins</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8520">
+ <rect
+ x="378.9629"
+ y="-617"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="67.0742"
+ height="30"
+ id="rect8522" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8524">
+ <rect
+ x="-600.0176"
+ y="-904"
+ clip-path="url(#clipPath2)"
+ width="218.0352"
+ height="30"
+ stroke="none"
+ id="rect8526" />
+ <text
+ x="-593.0176"
+ y="-884.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8528">./plugins/input/raster/raster.input</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8530">
+ <rect
+ x="-600.0176"
+ y="-904"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="218.0352"
+ height="30"
+ id="rect8532" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8534">
+ <rect
+ x="504.8223"
+ y="1246.5"
+ clip-path="url(#clipPath2)"
+ width="199.3555"
+ height="30"
+ stroke="none"
+ id="rect8536" />
+ <text
+ x="511.8223"
+ y="1265.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8538">./agg/src/agg_vcgen_contour.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8540">
+ <rect
+ x="504.8223"
+ y="1246.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="199.3555"
+ height="30"
+ id="rect8542" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8544">
+ <rect
+ x="477.084"
+ y="1562.5"
+ clip-path="url(#clipPath2)"
+ width="239.832"
+ height="30"
+ stroke="none"
+ id="rect8546" />
+ <text
+ x="484.084"
+ y="1581.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8548">./agg/src/agg_trans_warp_magnifier.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8550">
+ <rect
+ x="477.084"
+ y="1562.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="239.832"
+ height="30"
+ id="rect8552" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8554">
+ <rect
+ x="1807.8203"
+ y="2883"
+ clip-path="url(#clipPath2)"
+ width="258.3594"
+ height="30"
+ stroke="none"
+ id="rect8556" />
+ <text
+ x="1814.8203"
+ y="2902.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8558">./bindings/python/mapnik_datasource.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8560">
+ <rect
+ x="1807.8203"
+ y="2883"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="258.3594"
+ height="30"
+ id="rect8562" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8564">
+ <rect
+ x="200.9756"
+ y="772"
+ clip-path="url(#clipPath2)"
+ width="267.0488"
+ height="30"
+ stroke="none"
+ id="rect8566" />
+ <text
+ x="207.9756"
+ y="791.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8568">./plugins/input/shape/shape_featureset.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8570">
+ <rect
+ x="200.9756"
+ y="772"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="267.0488"
+ height="30"
+ id="rect8572" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8574">
+ <rect
+ x="1338.8779"
+ y="-330.5"
+ clip-path="url(#clipPath2)"
+ width="121.2441"
+ height="30"
+ stroke="none"
+ id="rect8576" />
+ <text
+ x="1345.8779"
+ y="-311.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8578">./src/load_map.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8580">
+ <rect
+ x="1338.8779"
+ y="-330.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="121.2441"
+ height="30"
+ id="rect8582" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8584">
+ <rect
+ x="1635.1797"
+ y="2310"
+ clip-path="url(#clipPath2)"
+ width="294.6406"
+ height="30"
+ stroke="none"
+ id="rect8586" />
+ <text
+ x="1642.1797"
+ y="2329.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8588">./bindings/python/mapnik_point_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8590">
+ <rect
+ x="1635.1797"
+ y="2310"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="294.6406"
+ height="30"
+ id="rect8592" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8594">
+ <rect
+ x="1870.9814"
+ y="-498.5"
+ clip-path="url(#clipPath2)"
+ width="204.0371"
+ height="30"
+ stroke="none"
+ id="rect8596" />
+ <text
+ x="1877.9814"
+ y="-479.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8598">./src/line_pattern_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8600">
+ <rect
+ x="1870.9814"
+ y="-498.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="204.0371"
+ height="30"
+ id="rect8602" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8604">
+ <rect
+ x="2406.4492"
+ y="2209"
+ clip-path="url(#clipPath2)"
+ width="171.1016"
+ height="30"
+ stroke="none"
+ id="rect8606" />
+ <text
+ x="2413.4492"
+ y="2228.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8608">./bindings/python/mapnik</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8610">
+ <rect
+ x="2406.4492"
+ y="2209"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="171.1016"
+ height="30"
+ id="rect8612" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8614">
+ <rect
+ x="-228.4014"
+ y="-713.5"
+ clip-path="url(#clipPath2)"
+ width="143.8027"
+ height="30"
+ stroke="none"
+ id="rect8616" />
+ <text
+ x="-221.4014"
+ y="-694.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8618">./plugins/input/raster</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8620">
+ <rect
+ x="-228.4014"
+ y="-713.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="143.8027"
+ height="30"
+ id="rect8622" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8624">
+ <rect
+ x="1749.3877"
+ y="-581.5"
+ clip-path="url(#clipPath2)"
+ width="90.2246"
+ height="30"
+ stroke="none"
+ id="rect8626" />
+ <text
+ x="1756.3877"
+ y="-562.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8628">./src/map.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8630">
+ <rect
+ x="1749.3877"
+ y="-581.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="90.2246"
+ height="30"
+ id="rect8632" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8634">
+ <rect
+ x="1467.6729"
+ y="-572"
+ clip-path="url(#clipPath2)"
+ width="88.6543"
+ height="30"
+ stroke="none"
+ id="rect8636" />
+ <text
+ x="1474.6729"
+ y="-552.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8638">./src/wkb.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8640">
+ <rect
+ x="1467.6729"
+ y="-572"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="88.6543"
+ height="30"
+ id="rect8642" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8644">
+ <rect
+ x="-575.8799"
+ y="1522.5"
+ clip-path="url(#clipPath2)"
+ width="190.7598"
+ height="30"
+ stroke="none"
+ id="rect8646" />
+ <text
+ x="-568.8799"
+ y="1541.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8648">./agg/src/agg_vcgen_stroke.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8650">
+ <rect
+ x="-575.8799"
+ y="1522.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="190.7598"
+ height="30"
+ id="rect8652" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8654">
+ <rect
+ x="-133.5166"
+ y="1274"
+ clip-path="url(#clipPath2)"
+ width="163.0332"
+ height="30"
+ stroke="none"
+ id="rect8656" />
+ <text
+ x="-126.5166"
+ y="1293.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8658">./agg/src/agg_gsv_text.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8660">
+ <rect
+ x="-133.5166"
+ y="1274"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="163.0332"
+ height="30"
+ id="rect8662" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8664">
+ <rect
+ x="318.249"
+ y="-203.5"
+ clip-path="url(#clipPath2)"
+ width="202.502"
+ height="30"
+ stroke="none"
+ id="rect8666" />
+ <text
+ x="325.249"
+ y="-184.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8668">./plugins/input/shape/shape.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8670">
+ <rect
+ x="318.249"
+ y="-203.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="202.502"
+ height="30"
+ id="rect8672" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8674">
+ <rect
+ x="2219.1865"
+ y="1968"
+ clip-path="url(#clipPath2)"
+ width="74.627"
+ height="30"
+ stroke="none"
+ id="rect8676" />
+ <text
+ x="2226.1865"
+ y="1987.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8678">./bindings</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8680">
+ <rect
+ x="2219.1865"
+ y="1968"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="74.627"
+ height="30"
+ id="rect8682" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8684">
+ <rect
+ x="1558.8682"
+ y="-315.5"
+ clip-path="url(#clipPath2)"
+ width="41.2637"
+ height="30"
+ stroke="none"
+ id="rect8686" />
+ <text
+ x="1565.8682"
+ y="-296.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8688">./src</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8690">
+ <rect
+ x="1558.8682"
+ y="-315.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="41.2637"
+ height="30"
+ id="rect8692" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8694">
+ <rect
+ x="1371.5898"
+ y="1863"
+ clip-path="url(#clipPath2)"
+ width="221.8203"
+ height="30"
+ stroke="none"
+ id="rect8696" />
+ <text
+ x="1378.5898"
+ y="1882.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8698">./bindings/python/mapnik_filter.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8700">
+ <rect
+ x="1371.5898"
+ y="1863"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="221.8203"
+ height="30"
+ id="rect8702" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8704">
+ <rect
+ x="-483.2334"
+ y="1775.5"
+ clip-path="url(#clipPath2)"
+ width="196.4668"
+ height="30"
+ stroke="none"
+ id="rect8706" />
+ <text
+ x="-476.2334"
+ y="1794.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8708">./agg/src/agg_vcgen_bspline.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8710">
+ <rect
+ x="-483.2334"
+ y="1775.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="196.4668"
+ height="30"
+ id="rect8712" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8714">
+ <rect
+ x="1292.1309"
+ y="2653"
+ clip-path="url(#clipPath2)"
+ width="227.7383"
+ height="30"
+ stroke="none"
+ id="rect8716" />
+ <text
+ x="1299.1309"
+ y="2672.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8718">./bindings/python/mapnik_coord.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8720">
+ <rect
+ x="1292.1309"
+ y="2653"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="227.7383"
+ height="30"
+ id="rect8722" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8724">
+ <rect
+ x="1750.0254"
+ y="-805"
+ clip-path="url(#clipPath2)"
+ width="116.9492"
+ height="30"
+ stroke="none"
+ id="rect8726" />
+ <text
+ x="1757.0254"
+ y="-785.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8728">./src/envelope.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8730">
+ <rect
+ x="1750.0254"
+ y="-805"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="116.9492"
+ height="30"
+ id="rect8732" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8734">
+ <rect
+ x="-353.043"
+ y="2040.5"
+ clip-path="url(#clipPath2)"
+ width="229.0859"
+ height="30"
+ stroke="none"
+ id="rect8736" />
+ <text
+ x="-346.043"
+ y="2059.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8738">./agg/src/agg_vpgen_segmentator.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8740">
+ <rect
+ x="-353.043"
+ y="2040.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="229.0859"
+ height="30"
+ id="rect8742" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8744">
+ <rect
+ x="1707.3262"
+ y="1980.5"
+ clip-path="url(#clipPath2)"
+ width="222.3477"
+ height="30"
+ stroke="none"
+ id="rect8746" />
+ <text
+ x="1714.3262"
+ y="1999.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8748">./bindings/python/mapnik_layer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8750">
+ <rect
+ x="1707.3262"
+ y="1980.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="222.3477"
+ height="30"
+ id="rect8752" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8754">
+ <rect
+ x="1338.3086"
+ y="2945.5"
+ clip-path="url(#clipPath2)"
+ width="285.3828"
+ height="30"
+ stroke="none"
+ id="rect8756" />
+ <text
+ x="1345.3086"
+ y="2964.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8758">./bindings/python/mapnik_line_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8760">
+ <rect
+ x="1338.3086"
+ y="2945.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="285.3828"
+ height="30"
+ id="rect8762" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8764">
+ <rect
+ x="1750.2461"
+ y="396"
+ clip-path="url(#clipPath2)"
+ width="169.5078"
+ height="30"
+ stroke="none"
+ id="rect8766" />
+ <text
+ x="1757.2461"
+ y="415.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8768">./src/shield_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8770">
+ <rect
+ x="1750.2461"
+ y="396"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="169.5078"
+ height="30"
+ id="rect8772" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8774">
+ <rect
+ x="-414.9922"
+ y="992"
+ clip-path="url(#clipPath2)"
+ width="221.9844"
+ height="30"
+ stroke="none"
+ id="rect8776" />
+ <text
+ x="-407.9922"
+ y="1011.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8778">./agg/src/agg_trans_double_path.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8780">
+ <rect
+ x="-414.9922"
+ y="992"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="221.9844"
+ height="30"
+ id="rect8782" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8784">
+ <rect
+ x="1304.5332"
+ y="201.5"
+ clip-path="url(#clipPath2)"
+ width="123.9336"
+ height="30"
+ stroke="none"
+ id="rect8786" />
+ <text
+ x="1311.5332"
+ y="220.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8788">./src/projection.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8790">
+ <rect
+ x="1304.5332"
+ y="201.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="123.9336"
+ height="30"
+ id="rect8792" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8794">
+ <rect
+ x="1109.5029"
+ y="-329"
+ clip-path="url(#clipPath2)"
+ width="124.9941"
+ height="30"
+ stroke="none"
+ id="rect8796" />
+ <text
+ x="1116.5029"
+ y="-309.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8798">./src/tiff_reader.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8800">
+ <rect
+ x="1109.5029"
+ y="-329"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="124.9941"
+ height="30"
+ id="rect8802" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8804">
+ <rect
+ x="1684.8213"
+ y="3263.5"
+ clip-path="url(#clipPath2)"
+ width="281.3574"
+ height="30"
+ stroke="none"
+ id="rect8806" />
+ <text
+ x="1691.8213"
+ y="3282.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8808">./bindings/python/mapnik_proj_transform.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8810">
+ <rect
+ x="1684.8213"
+ y="3263.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="281.3574"
+ height="30"
+ id="rect8812" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8814">
+ <rect
+ x="1276.292"
+ y="1606"
+ clip-path="url(#clipPath2)"
+ width="221.416"
+ height="30"
+ stroke="none"
+ id="rect8816" />
+ <text
+ x="1283.292"
+ y="1625.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8818">./bindings/python/mapnik_style.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8820">
+ <rect
+ x="1276.292"
+ y="1606"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="221.416"
+ height="30"
+ id="rect8822" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8824">
+ <rect
+ x="1811.9736"
+ y="1677.5"
+ clip-path="url(#clipPath2)"
+ width="299.0527"
+ height="30"
+ stroke="none"
+ id="rect8826" />
+ <text
+ x="1818.9736"
+ y="1696.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8828">./bindings/python/mapnik_shield_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8830">
+ <rect
+ x="1811.9736"
+ y="1677.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="299.0527"
+ height="30"
+ id="rect8832" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8834">
+ <rect
+ x="1461.6602"
+ y="246"
+ clip-path="url(#clipPath2)"
+ width="143.6797"
+ height="30"
+ stroke="none"
+ id="rect8836" />
+ <text
+ x="1468.6602"
+ y="265.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8838">./src/image_reader.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8840">
+ <rect
+ x="1461.6602"
+ y="246"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="143.6797"
+ height="30"
+ id="rect8842" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8844">
+ <rect
+ x="-339.2471"
+ y="1384.5"
+ clip-path="url(#clipPath2)"
+ width="156.4941"
+ height="30"
+ stroke="none"
+ id="rect8846" />
+ <text
+ x="-332.2471"
+ y="1403.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8848">./agg/src/agg_bspline.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8850">
+ <rect
+ x="-339.2471"
+ y="1384.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="156.4941"
+ height="30"
+ id="rect8852" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8854">
+ <rect
+ x="-154.2881"
+ y="1504"
+ clip-path="url(#clipPath2)"
+ width="216.5762"
+ height="30"
+ stroke="none"
+ id="rect8856" />
+ <text
+ x="-147.2881"
+ y="1523.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8858">./agg/src/agg_trans_single_path.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8860">
+ <rect
+ x="-154.2881"
+ y="1504"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="216.5762"
+ height="30"
+ id="rect8862" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8864">
+ <rect
+ x="-451.9092"
+ y="-1278"
+ clip-path="url(#clipPath2)"
+ width="229.8184"
+ height="30"
+ stroke="none"
+ id="rect8866" />
+ <text
+ x="-444.9092"
+ y="-1258.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8868">./plugins/input/raster/raster_info.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8870">
+ <rect
+ x="-451.9092"
+ y="-1278"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="229.8184"
+ height="30"
+ id="rect8872" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8874">
+ <rect
+ x="58.041"
+ y="1120"
+ clip-path="url(#clipPath2)"
+ width="181.918"
+ height="30"
+ stroke="none"
+ id="rect8876" />
+ <text
+ x="65.041"
+ y="1139.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8878">./agg/src/agg_vcgen_dash.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8880">
+ <rect
+ x="58.041"
+ y="1120"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="181.918"
+ height="30"
+ id="rect8882" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8884">
+ <rect
+ x="2112.2607"
+ y="3055.5"
+ clip-path="url(#clipPath2)"
+ width="253.4785"
+ height="30"
+ stroke="none"
+ id="rect8886" />
+ <text
+ x="2119.2607"
+ y="3074.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8888">./bindings/python/mapnik_projection.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8890">
+ <rect
+ x="2112.2607"
+ y="3055.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="253.4785"
+ height="30"
+ id="rect8892" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8894">
+ <rect
+ x="1082.2676"
+ y="2091.5"
+ clip-path="url(#clipPath2)"
+ width="261.4648"
+ height="30"
+ stroke="none"
+ id="rect8896" />
+ <text
+ x="1089.2676"
+ y="2110.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8898">./bindings/python/mapnik_image_view.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8900">
+ <rect
+ x="1082.2676"
+ y="2091.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="261.4648"
+ height="30"
+ id="rect8902" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8904">
+ <rect
+ x="1584.8125"
+ y="86.5"
+ clip-path="url(#clipPath2)"
+ width="113.375"
+ height="30"
+ stroke="none"
+ id="rect8906" />
+ <text
+ x="1591.8125"
+ y="105.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8908">./src/distance.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8910">
+ <rect
+ x="1584.8125"
+ y="86.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="113.375"
+ height="30"
+ id="rect8912" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8914">
+ <rect
+ x="2103.0664"
+ y="-319"
+ clip-path="url(#clipPath2)"
+ width="167.8672"
+ height="30"
+ stroke="none"
+ id="rect8916" />
+ <text
+ x="2110.0664"
+ y="-299.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8918">./src/datasource_cache.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8920">
+ <rect
+ x="2103.0664"
+ y="-319"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="167.8672"
+ height="30"
+ id="rect8922" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8924">
+ <rect
+ x="2138.9033"
+ y="1613"
+ clip-path="url(#clipPath2)"
+ width="260.1934"
+ height="30"
+ stroke="none"
+ id="rect8926" />
+ <text
+ x="2145.9033"
+ y="1632.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8928">./bindings/python/mapnik_parameters.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8930">
+ <rect
+ x="2138.9033"
+ y="1613"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="260.1934"
+ height="30"
+ id="rect8932" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8934">
+ <rect
+ x="1284.1455"
+ y="-474"
+ clip-path="url(#clipPath2)"
+ width="101.709"
+ height="30"
+ stroke="none"
+ id="rect8936" />
+ <text
+ x="1291.1455"
+ y="-454.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8938">./src/plugin.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8940">
+ <rect
+ x="1284.1455"
+ y="-474"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="101.709"
+ height="30"
+ id="rect8942" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8944">
+ <rect
+ x="-543.7891"
+ y="1299"
+ clip-path="url(#clipPath2)"
+ width="175.5781"
+ height="30"
+ stroke="none"
+ id="rect8946" />
+ <text
+ x="-536.7891"
+ y="1318.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8948">./agg/src/agg_arrowhead.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8950">
+ <rect
+ x="-543.7891"
+ y="1299"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="175.5781"
+ height="30"
+ id="rect8952" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8954">
+ <rect
+ x="1817.1787"
+ y="2604.5"
+ clip-path="url(#clipPath2)"
+ width="235.6426"
+ height="30"
+ stroke="none"
+ id="rect8956" />
+ <text
+ x="1824.1787"
+ y="2623.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8958">./bindings/python/mapnik_feature.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8960">
+ <rect
+ x="1817.1787"
+ y="2604.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="235.6426"
+ height="30"
+ id="rect8962" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8964">
+ <rect
+ x="-855.123"
+ y="1614.5"
+ clip-path="url(#clipPath2)"
+ width="251.2461"
+ height="30"
+ stroke="none"
+ id="rect8966" />
+ <text
+ x="-848.123"
+ y="1633.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8968">./agg/src/agg_embedded_raster_fonts.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8970">
+ <rect
+ x="-855.123"
+ y="1614.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="251.2461"
+ height="30"
+ id="rect8972" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8974">
+ <rect
+ x="1669.6777"
+ y="-220"
+ clip-path="url(#clipPath2)"
+ width="122.6445"
+ height="30"
+ stroke="none"
+ id="rect8976" />
+ <text
+ x="1676.6777"
+ y="-200.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8978">./src/libmapnik.so</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8980">
+ <rect
+ x="1669.6777"
+ y="-220"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="122.6445"
+ height="30"
+ id="rect8982" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8984">
+ <rect
+ x="1039.1885"
+ y="-125.5"
+ clip-path="url(#clipPath2)"
+ width="165.623"
+ height="30"
+ stroke="none"
+ id="rect8986" />
+ <text
+ x="1046.1885"
+ y="-106.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8988">./src/placement_finder.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g8990">
+ <rect
+ x="1039.1885"
+ y="-125.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="165.623"
+ height="30"
+ id="rect8992" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g8994">
+ <rect
+ x="-165.1045"
+ y="1004.5"
+ clip-path="url(#clipPath2)"
+ width="178.209"
+ height="30"
+ stroke="none"
+ id="rect8996" />
+ <text
+ x="-158.1045"
+ y="1023.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text8998">./agg/src/agg_sqrt_tables.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9000">
+ <rect
+ x="-165.1045"
+ y="1004.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="178.209"
+ height="30"
+ id="rect9002" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9004">
+ <rect
+ x="221.5254"
+ y="1478"
+ clip-path="url(#clipPath2)"
+ width="227.9492"
+ height="30"
+ stroke="none"
+ id="rect9006" />
+ <text
+ x="228.5254"
+ y="1497.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9008">./agg/src/agg_vpgen_clip_polyline.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9010">
+ <rect
+ x="221.5254"
+ y="1478"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="227.9492"
+ height="30"
+ id="rect9012" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9014">
+ <rect
+ x="1468.9746"
+ y="1004"
+ clip-path="url(#clipPath2)"
+ width="298.0508"
+ height="30"
+ stroke="none"
+ id="rect9016" />
+ <text
+ x="1475.9746"
+ y="1023.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9018">./bindings/python/mapnik_raster_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9020">
+ <rect
+ x="1468.9746"
+ y="1004"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="298.0508"
+ height="30"
+ id="rect9022" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9024">
+ <rect
+ x="365.8027"
+ y="2029"
+ clip-path="url(#clipPath2)"
+ width="198.3945"
+ height="30"
+ stroke="none"
+ id="rect9026" />
+ <text
+ x="372.8027"
+ y="2048.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9028">./agg/src/agg_line_profile_aa.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9030">
+ <rect
+ x="365.8027"
+ y="2029"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="198.3945"
+ height="30"
+ id="rect9032" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9034">
+ <rect
+ x="915.209"
+ y="1764.5"
+ clip-path="url(#clipPath2)"
+ width="333.582"
+ height="30"
+ stroke="none"
+ id="rect9036" />
+ <text
+ x="922.209"
+ y="1783.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9038">./bindings/python/mapnik_line_pattern_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9040">
+ <rect
+ x="915.209"
+ y="1764.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="333.582"
+ height="30"
+ id="rect9042" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9044">
+ <rect
+ x="1297.1729"
+ y="1293"
+ clip-path="url(#clipPath2)"
+ width="223.6543"
+ height="30"
+ stroke="none"
+ id="rect9046" />
+ <text
+ x="1304.1729"
+ y="1312.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9048">./bindings/python/mapnik_color.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9050">
+ <rect
+ x="1297.1729"
+ y="1293"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="223.6543"
+ height="30"
+ id="rect9052" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9054">
+ <rect
+ x="1634.5938"
+ y="-394"
+ clip-path="url(#clipPath2)"
+ width="151.8125"
+ height="30"
+ stroke="none"
+ id="rect9056" />
+ <text
+ x="1641.5938"
+ y="-374.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9058">./src/proj_transform.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9060">
+ <rect
+ x="1634.5938"
+ y="-394"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="151.8125"
+ height="30"
+ id="rect9062" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9064">
+ <rect
+ x="1298.2715"
+ y="-145.5"
+ clip-path="url(#clipPath2)"
+ width="182.457"
+ height="30"
+ stroke="none"
+ id="rect9066" />
+ <text
+ x="1305.2715"
+ y="-126.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9068">./src/memory_datasource.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9070">
+ <rect
+ x="1298.2715"
+ y="-145.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="182.457"
+ height="30"
+ id="rect9072" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9074">
+ <rect
+ x="-194.8857"
+ y="-261"
+ clip-path="url(#clipPath2)"
+ width="103.7715"
+ height="30"
+ stroke="none"
+ id="rect9076" />
+ <text
+ x="-187.8857"
+ y="-241.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9078">./plugins/input</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9080">
+ <rect
+ x="-194.8857"
+ y="-261"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="103.7715"
+ height="30"
+ id="rect9082" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9084">
+ <rect
+ x="653.0186"
+ y="1857.5"
+ clip-path="url(#clipPath2)"
+ width="234.9629"
+ height="30"
+ stroke="none"
+ id="rect9086" />
+ <text
+ x="660.0186"
+ y="1876.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9088">./bindings/python/mapnik_python.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9090">
+ <rect
+ x="653.0186"
+ y="1857.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="234.9629"
+ height="30"
+ id="rect9092" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9094">
+ <rect
+ x="1588.6523"
+ y="-617"
+ clip-path="url(#clipPath2)"
+ width="130.6953"
+ height="30"
+ stroke="none"
+ id="rect9096" />
+ <text
+ x="1595.6523"
+ y="-597.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9098">./src/png_reader.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9100">
+ <rect
+ x="1588.6523"
+ y="-617"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="130.6953"
+ height="30"
+ id="rect9102" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9104">
+ <rect
+ x="1136.2529"
+ y="2381.5"
+ clip-path="url(#clipPath2)"
+ width="246.4941"
+ height="30"
+ stroke="none"
+ id="rect9106" />
+ <text
+ x="1143.2529"
+ y="2400.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9108">./bindings/python/mapnik_envelope.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9110">
+ <rect
+ x="1136.2529"
+ y="2381.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="246.4941"
+ height="30"
+ id="rect9112" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9114">
+ <rect
+ x="1007.5137"
+ y="1452.5"
+ clip-path="url(#clipPath2)"
+ width="230.9727"
+ height="30"
+ stroke="none"
+ id="rect9116" />
+ <text
+ x="1014.5137"
+ y="1471.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9118">./bindings/python/mapnik_stroke.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9120">
+ <rect
+ x="1007.5137"
+ y="1452.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="230.9727"
+ height="30"
+ id="rect9122" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9124">
+ <rect
+ x="262.791"
+ y="323.5"
+ clip-path="url(#clipPath2)"
+ width="219.418"
+ height="30"
+ stroke="none"
+ id="rect9126" />
+ <text
+ x="269.791"
+ y="342.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9128">./plugins/input/shape/shape.input</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9130">
+ <rect
+ x="262.791"
+ y="323.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="219.418"
+ height="30"
+ id="rect9132" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9134">
+ <rect
+ x="1963.374"
+ y="1315.5"
+ clip-path="url(#clipPath2)"
+ width="227.252"
+ height="30"
+ stroke="none"
+ id="rect9136" />
+ <text
+ x="1970.374"
+ y="1334.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9138">./bindings/python/mapnik_query.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9140">
+ <rect
+ x="1963.374"
+ y="1315.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="227.252"
+ height="30"
+ id="rect9142" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9144">
+ <rect
+ x="1342.4521"
+ y="-878.5"
+ clip-path="url(#clipPath2)"
+ width="165.0957"
+ height="30"
+ stroke="none"
+ id="rect9146" />
+ <text
+ x="1349.4521"
+ y="-859.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9148">./src/point_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9150">
+ <rect
+ x="1342.4521"
+ y="-878.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="165.0957"
+ height="30"
+ id="rect9152" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9154">
+ <rect
+ x="1478.75"
+ y="456.5"
+ clip-path="url(#clipPath2)"
+ width="138.5"
+ height="30"
+ stroke="none"
+ id="rect9156" />
+ <text
+ x="1485.75"
+ y="475.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9158">./src/filter_factory.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9160">
+ <rect
+ x="1478.75"
+ y="456.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="138.5"
+ height="30"
+ id="rect9162" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9164">
+ <rect
+ x="2050.8623"
+ y="2266.5"
+ clip-path="url(#clipPath2)"
+ width="311.2754"
+ height="30"
+ stroke="none"
+ id="rect9166" />
+ <text
+ x="2057.8623"
+ y="2285.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9168">./bindings/python/mapnik_polygon_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9170">
+ <rect
+ x="2050.8623"
+ y="2266.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="311.2754"
+ height="30"
+ id="rect9172" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9174">
+ <rect
+ x="-94.2109"
+ y="2225"
+ clip-path="url(#clipPath2)"
+ width="236.4219"
+ height="30"
+ stroke="none"
+ id="rect9176" />
+ <text
+ x="-87.2109"
+ y="2244.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9178">./agg/src/agg_vcgen_smooth_poly1.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9180">
+ <rect
+ x="-94.2109"
+ y="2225"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="236.4219"
+ height="30"
+ id="rect9182" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9184">
+ <rect
+ x="-372.2812"
+ y="106.5"
+ clip-path="url(#clipPath2)"
+ width="305.5625"
+ height="30"
+ stroke="none"
+ id="rect9186" />
+ <text
+ x="-365.2812"
+ y="125.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9188">./plugins/input/shape/shape_index_featureset.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9190">
+ <rect
+ x="-372.2812"
+ y="106.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="305.5625"
+ height="30"
+ id="rect9192" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9194">
+ <rect
+ x="833.4131"
+ y="2166"
+ clip-path="url(#clipPath2)"
+ width="220.1738"
+ height="30"
+ stroke="none"
+ id="rect9196" />
+ <text
+ x="840.4131"
+ y="2185.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9198">./bindings/python/python_cairo.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9200">
+ <rect
+ x="833.4131"
+ y="2166"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="220.1738"
+ height="30"
+ id="rect9202" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9204">
+ <rect
+ x="2146.6162"
+ y="-496"
+ clip-path="url(#clipPath2)"
+ width="128.7676"
+ height="30"
+ stroke="none"
+ id="rect9206" />
+ <text
+ x="2153.6162"
+ y="-476.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9208">./src/symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9210">
+ <rect
+ x="2146.6162"
+ y="-496"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="128.7676"
+ height="30"
+ id="rect9212" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9214">
+ <rect
+ x="1412.8066"
+ y="2339"
+ clip-path="url(#clipPath2)"
+ width="194.3867"
+ height="30"
+ stroke="none"
+ id="rect9216" />
+ <text
+ x="1419.8066"
+ y="2358.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9218">./bindings/python/_mapnik.so</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9220">
+ <rect
+ x="1412.8066"
+ y="2339"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="194.3867"
+ height="30"
+ id="rect9222" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9224">
+ <rect
+ x="179.0781"
+ y="2247.5"
+ clip-path="url(#clipPath2)"
+ width="182.8438"
+ height="30"
+ stroke="none"
+ id="rect9226" />
+ <text
+ x="186.0781"
+ y="2266.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9228">./agg/src/agg_trans_affine.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9230">
+ <rect
+ x="179.0781"
+ y="2247.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="182.8438"
+ height="30"
+ id="rect9232" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9234">
+ <rect
+ x="862.0352"
+ y="-594"
+ clip-path="url(#clipPath2)"
+ width="229.9297"
+ height="30"
+ stroke="none"
+ id="rect9236" />
+ <text
+ x="869.0352"
+ y="-574.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9238">./src/polygon_pattern_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9240">
+ <rect
+ x="862.0352"
+ y="-594"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="229.9297"
+ height="30"
+ id="rect9242" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9244">
+ <rect
+ x="2093.7627"
+ y="2629.5"
+ clip-path="url(#clipPath2)"
+ width="359.4746"
+ height="30"
+ stroke="none"
+ id="rect9246" />
+ <text
+ x="2100.7627"
+ y="2648.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9248">./bindings/python/mapnik_polygon_pattern_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9250">
+ <rect
+ x="2093.7627"
+ y="2629.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="359.4746"
+ height="30"
+ id="rect9252" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9254">
+ <rect
+ x="-258.3594"
+ y="1764.5"
+ clip-path="url(#clipPath2)"
+ width="151.7188"
+ height="30"
+ stroke="none"
+ id="rect9256" />
+ <text
+ x="-251.3594"
+ y="1783.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9258">./agg/src/agg_curves.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9260">
+ <rect
+ x="-258.3594"
+ y="1764.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="151.7188"
+ height="30"
+ id="rect9262" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9264">
+ <rect
+ x="1277.6055"
+ y="-635"
+ clip-path="url(#clipPath2)"
+ width="157.7891"
+ height="30"
+ stroke="none"
+ id="rect9266" />
+ <text
+ x="1284.6055"
+ y="-615.5791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9268">./src/text_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9270">
+ <rect
+ x="1277.6055"
+ y="-635"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="157.7891"
+ height="30"
+ id="rect9272" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9274">
+ <rect
+ x="1546.2705"
+ y="-843.5"
+ clip-path="url(#clipPath2)"
+ width="174.459"
+ height="30"
+ stroke="none"
+ id="rect9276" />
+ <text
+ x="1553.2705"
+ y="-824.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9278">./src/scale_denominator.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9280">
+ <rect
+ x="1546.2705"
+ y="-843.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="174.459"
+ height="30"
+ id="rect9282" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9284">
+ <rect
+ x="628.8291"
+ y="31.5"
+ clip-path="url(#clipPath2)"
+ width="219.3418"
+ height="30"
+ stroke="none"
+ id="rect9286" />
+ <text
+ x="635.8291"
+ y="50.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9288">./plugins/input/shape/shape_io.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9290">
+ <rect
+ x="628.8291"
+ y="31.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="219.3418"
+ height="30"
+ id="rect9292" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9294">
+ <rect
+ x="1505.0986"
+ y="-439.5"
+ clip-path="url(#clipPath2)"
+ width="92.8027"
+ height="30"
+ stroke="none"
+ id="rect9296" />
+ <text
+ x="1512.0986"
+ y="-420.0791"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9298">./src/layer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9300">
+ <rect
+ x="1505.0986"
+ y="-439.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="92.8027"
+ height="30"
+ id="rect9302" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9304">
+ <rect
+ x="-40.8408"
+ y="2038"
+ clip-path="url(#clipPath2)"
+ width="45.6816"
+ height="30"
+ stroke="none"
+ id="rect9306" />
+ <text
+ x="-33.8408"
+ y="2057.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9308">./agg</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9310">
+ <rect
+ x="-40.8408"
+ y="2038"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="45.6816"
+ height="30"
+ id="rect9312" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9314">
+ <rect
+ x="1874.2168"
+ y="-5.5"
+ clip-path="url(#clipPath2)"
+ width="151.5664"
+ height="30"
+ stroke="none"
+ id="rect9316" />
+ <text
+ x="1881.2168"
+ y="13.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9318">./src/libxml2_loader.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9320">
+ <rect
+ x="1874.2168"
+ y="-5.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="151.5664"
+ height="30"
+ id="rect9322" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9324">
+ <rect
+ x="-801.0898"
+ y="1201.5"
+ clip-path="url(#clipPath2)"
+ width="229.1797"
+ height="30"
+ stroke="none"
+ id="rect9326" />
+ <text
+ x="-794.0898"
+ y="1220.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9328">./agg/src/agg_vpgen_clip_polygon.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9330">
+ <rect
+ x="-801.0898"
+ y="1201.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="229.1797"
+ height="30"
+ id="rect9332" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9334">
+ <rect
+ x="151.7529"
+ y="97.5"
+ clip-path="url(#clipPath2)"
+ width="144.4941"
+ height="30"
+ stroke="none"
+ id="rect9336" />
+ <text
+ x="158.7529"
+ y="116.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9338">./plugins/input/shape</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9340">
+ <rect
+ x="151.7529"
+ y="97.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="144.4941"
+ height="30"
+ id="rect9342" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9344">
+ <rect
+ x="543.2588"
+ y="2286.5"
+ clip-path="url(#clipPath2)"
+ width="249.4824"
+ height="30"
+ stroke="none"
+ id="rect9346" />
+ <text
+ x="550.2588"
+ y="2305.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9348">./bindings/python/mapnik_geometry.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9350">
+ <rect
+ x="543.2588"
+ y="2286.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="249.4824"
+ height="30"
+ id="rect9352" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9354">
+ <rect
+ x="923.333"
+ y="1091.5"
+ clip-path="url(#clipPath2)"
+ width="287.334"
+ height="30"
+ stroke="none"
+ id="rect9356" />
+ <text
+ x="930.333"
+ y="1110.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9358">./bindings/python/mapnik_text_symbolizer.os</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9360">
+ <rect
+ x="923.333"
+ y="1091.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="287.334"
+ height="30"
+ id="rect9362" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9364">
+ <rect
+ x="433.3008"
+ y="1806"
+ clip-path="url(#clipPath2)"
+ width="191.3984"
+ height="30"
+ stroke="none"
+ id="rect9366" />
+ <text
+ x="440.3008"
+ y="1825.4209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9368">./agg/src/agg_rounded_rect.o</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9370">
+ <rect
+ x="433.3008"
+ y="1806"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="191.3984"
+ height="30"
+ id="rect9372" />
+ </g>
+ <g
+ fill="rgb(187,196,94)"
+ fill-opacity="0.098"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ stroke-opacity="0.098"
+ stroke="rgb(187,196,94)"
+ id="g9374">
+ <rect
+ x="1541.252"
+ y="2065.5"
+ clip-path="url(#clipPath2)"
+ width="121.4961"
+ height="30"
+ stroke="none"
+ id="rect9376" />
+ <text
+ x="1548.252"
+ y="2084.9209"
+ clip-path="url(#clipPath2)"
+ fill="rgb(86,95,145)"
+ font-family="sans-serif"
+ stroke="none"
+ xml:space="preserve"
+ id="text9378">./bindings/python</text>
+ </g>
+ <g
+ stroke-linecap="butt"
+ transform="matrix(0.1497,0,0,0.1497,130.3567,193.5146)"
+ fill-opacity="0.098"
+ fill="rgb(86,95,145)"
+ stroke="rgb(86,95,145)"
+ stroke-opacity="0.098"
+ stroke-miterlimit="1.45"
+ id="g9380">
+ <rect
+ x="1541.252"
+ y="2065.5"
+ clip-path="url(#clipPath2)"
+ fill="none"
+ width="121.4961"
+ height="30"
+ id="rect9382" />
+ <path
+ fill="none"
+ d="M2577.5508 2232.655 L2889.043 2264.1677"
+ clip-path="url(#clipPath2)"
+ id="path9384" />
+ <path
+ fill="none"
+ d="M24.5742 1698.3611 L185.0576 1702.3578"
+ clip-path="url(#clipPath2)"
+ id="path9386" />
+ <path
+ fill="none"
+ d="M-31.6769 1682.5 L-131.8263 1613.1986 L-307.8319 1479.7761 L-322.1423 1467.1691 L-335.9341 1453.8378 L-420.4944 1355.8801 L-431.8936 1341.8081 L-442.9968 1329"
+ clip-path="url(#clipPath2)"
+ id="path9388" />
+ <path
+ fill="none"
+ d="M7.2593 1682.5 L170.8382 1540.3337 L183.5103 1528.4264 L195.0703 1515.1906 L203.2204 1499.588 L208.0298 1482.4165 L212.1165 1464.9495 L217.4223 1447.5245 L224.4582 1430.9707 L348.8411 1215.5"
+ clip-path="url(#clipPath2)"
+ id="path9390" />
+ <path
+ fill="none"
+ d="M-30.3421 1682.5 L-117.9062 1617.9313 L-127.6741 1609.3701 L-136.938 1599.8932 L-145.2881 1589.3641 L-152.7591 1578.7178 L-251.9406 1414.5"
+ clip-path="url(#clipPath2)"
+ id="path9392" />
+ <path
+ fill="none"
+ d="M-41.5549 1712.5 L-150.9451 1764.5"
+ clip-path="url(#clipPath2)"
+ id="path9394" />
+ <path
+ fill="none"
+ d="M-44.5742 1694.2324 L-603.877 1641.3727"
+ clip-path="url(#clipPath2)"
+ id="path9396" />
+ <path
+ fill="none"
+ d="M-0.4959 1682.5 L5.2959 1673.359 L54.5589 1589.4877 L61.0658 1576.5562 L66.893 1562.6425 L71.3597 1548.4495 L73.9725 1533.6312 L74.9174 1518.3745 L73.7647 1503.0833 L70.803 1487.9604 L65.953 1473.3381 L59.488 1459.3448 L52.1157 1446.1976 L-42.0651 1304"
+ clip-path="url(#clipPath2)"
+ id="path9398" />
+ <path
+ fill="none"
+ d="M-7.5982 1712.5 L14.0982 1848"
+ clip-path="url(#clipPath2)"
+ id="path9400" />
+ <path
+ fill="none"
+ d="M8.3456 1712.5 L221.1544 1886.5"
+ clip-path="url(#clipPath2)"
+ id="path9402" />
+ <path
+ fill="none"
+ d="M24.5742 1709.7097 L224.8548 1780.4376 L274.5859 1796.1027 L290.3831 1803.1301 L305.0963 1812.2388 L317.8884 1823.064 L329.0148 1835.4955 L338.6302 1848.3523 L455.3114 2029"
+ clip-path="url(#clipPath2)"
+ id="path9404" />
+ <path
+ fill="none"
+ d="M24.5742 1709.5155 L220.8472 1777.7257 L238.4817 1782.3004 L324.5341 1794.4855 L341.7867 1796.4042 L433.3008 1808.4272"
+ clip-path="url(#clipPath2)"
+ id="path9406" />
+ <path
+ fill="none"
+ d="M-0.9936 1682.5 L50.1437 1597.332 L57.3786 1583.8605 L63.929 1570.2368 L69.2742 1555.1427 L72.9572 1539.9404 L74.755 1524.0978 L74.5616 1508.144 L69.7308 1462.8016 L67.2398 1448.1791 L46.6858 1301.0886 L40.6985 1270.2456 L36.1484 1254.5295 L30.1596 1239.6921 L-68.7682 1034.5"
+ clip-path="url(#clipPath2)"
+ id="path9408" />
+ <path
+ fill="none"
+ d="M7.5011 1712.5 L84.9684 1778.8966 L97.4166 1792.4541 L107.5913 1806.808 L115.5777 1822.2261 L120.8528 1838.3977 L123.3011 1854.1149 L127.3981 1901.7179 L129.5949 1917.3544 L132.8063 1932.9053 L137.6825 1947.8722 L264.1679 2247.5"
+ clip-path="url(#clipPath2)"
+ id="path9410" />
+ <path
+ fill="none"
+ d="M-30.3804 1682.5 L-109.8009 1624.0464 L-121.1156 1614.7283 L-132.1969 1604.0846 L-142.184 1592.3759 L-150.7367 1579.3018 L-157.7693 1565.1106 L-163.0598 1550.7333 L-165.983 1534.505 L-167.597 1518.8418 L-168.8886 1410.1838 L-169.9251 1394.0894 L-172.5114 1377.2661 L-176.7595 1361.7198 L-298.6194 1022"
+ clip-path="url(#clipPath2)"
+ id="path9412" />
+ <path
+ fill="none"
+ d="M-13.0252 1682.5 L-42.9748 1534"
+ clip-path="url(#clipPath2)"
+ id="path9414" />
+ <path
+ fill="none"
+ d="M24.5742 1687.3417 L211.2763 1632.4862 L230.4907 1627.6432 L250.3716 1624.6504 L328.7023 1621.3073 L348.4196 1619.7538 L368.0745 1617.4214 L510.9839 1592.5"
+ clip-path="url(#clipPath2)"
+ id="path9416" />
+ <path
+ fill="none"
+ d="M-44.5742 1695.8385 L-164.7434 1690.0634 L-177.8356 1690.061 L-191.578 1690.8328 L-204.8772 1693.3619 L-217.7414 1697.4427 L-240.9324 1708.3999 L-358.6783 1775.5"
+ clip-path="url(#clipPath2)"
+ id="path9418" />
+ <path
+ fill="none"
+ d="M7.529 1682.5 L138.9264 1570.0598 L148.6751 1560.6741 L158.7948 1552.2384 L178.7862 1533.6653 L188.7202 1523.3728 L197.5696 1511.4668 L203.8828 1497.4987 L207.8515 1482.9614 L211.1029 1467.9121 L215.285 1452.8943 L221.2153 1438.4976 L228.5741 1424.6746 L238.2442 1412.2913 L248.6876 1400.8505 L261.0592 1390.6781 L274.4546 1382.137 L288.1776 1374.8389 L315.8387 1363.2257 L561.9354 1276.5"
+ clip-path="url(#clipPath2)"
+ id="path9420" />
+ <path
+ fill="none"
+ d="M-1.1162 1682.5 L53.6143 1590.0895 L61.9957 1573.4156 L68.9728 1555.3479 L73.5761 1536.5132 L76.2372 1517.584 L79.7695 1480.3877 L82.222 1461.5187 L145.9323 1150"
+ clip-path="url(#clipPath2)"
+ id="path9422" />
+ <path
+ fill="none"
+ d="M-21.1026 1712.5 L-106.8676 1828.3712 L-116.5694 1839.3942 L-127.7954 1849.3232 L-139.8821 1858.0498 L-165.3045 1872.8499 L-284.2802 1934.2721 L-298.4405 1942.3529 L-312.5903 1951.3605 L-339.184 1971.7175 L-480.0865 2086.5"
+ clip-path="url(#clipPath2)"
+ id="path9424" />
+ <path
+ fill="none"
+ d="M-19.2353 1712.5 L-60.2772 1779.1603 L-74.3468 1803.9298 L-80.6547 1816.9384 L-86.1567 1831.2423 L-89.365 1846.1083 L-90.6617 1861.1736 L-90.0964 1876.3617 L-86.5496 1891.6437 L-81.7927 1905.8558 L-74.9382 1919.4861 L-66.4475 1932.3898 L-47.7518 1955.9055 L9.8738 2025.3236 L17.6516 2039.1315 L21.1875 2054.6111 L23.7724 2225"
+ clip-path="url(#clipPath2)"
+ id="path9426" />
+ <path
+ fill="none"
+ d="M-44.5742 1685.7426 L-436.3906 1552.5"
+ clip-path="url(#clipPath2)"
+ id="path9428" />
+ <path
+ fill="none"
+ d="M-34.4191 1682.5 L-422.8861 1443.8751 L-438.5209 1435.4724 L-485.9133 1412.2606 L-501.7971 1403.8612 L-517.0173 1393.6337 L-530.9767 1381.8546 L-672.3918 1231.5"
+ clip-path="url(#clipPath2)"
+ id="path9430" />
+ <path
+ fill="none"
+ d="M15.3423 1682.5 L310.1577 1508"
+ clip-path="url(#clipPath2)"
+ id="path9432" />
+ <path
+ fill="none"
+ d="M-19.574 1712.5 L-228.926 2040.5"
+ clip-path="url(#clipPath2)"
+ id="path9434" />
+ <path
+ fill="none"
+ d="M1705.7683 -190 L1229.7317 93"
+ clip-path="url(#clipPath2)"
+ id="path9436" />
+ <path
+ fill="none"
+ d="M1792.3223 -207.5711 L1889.0596 -211.6272 L1904.3265 -213.2381 L1919.7518 -216.2674 L1934.6373 -220.1078 L2143.3914 -289.0011"
+ clip-path="url(#clipPath2)"
+ id="path9438" />
+ <path
+ fill="none"
+ d="M1778.2689 -190 L1871.4453 -160.432"
+ clip-path="url(#clipPath2)"
+ id="path9440" />
+ <path
+ fill="none"
+ d="M1737.709 -220 L1784.8777 -325.4607 L1792.1422 -343.3415 L1797.3993 -362.1091 L1798.9524 -381.2829 L1796.4418 -400.2448 L1791.0763 -418.4256 L1784.3788 -435.7887 L1742.769 -535.712 L1737.2317 -553.2609 L1736.0367 -571.5535 L1739.8428 -589.6634 L1745.2104 -606.9964 L1803.3124 -775"
+ clip-path="url(#clipPath2)"
+ id="path9442" />
+ <path
+ fill="none"
+ d="M1722.7018 -190 L1671.9998 -98.3503 L1664.8926 -83.9824 L1658.9614 -68.4607 L1656.0035 -52.007 L1657.1727 -35.4369 L1662.0831 -19.4679 L1703.2703 67.3736 L1708.6812 82.8308 L1711.2114 99.089 L1709.9719 115.4139 L1705.568 131.1046 L1687.5476 173.7935 L1681.0388 187.5816 L1675.4331 201.3511 L1662.2848 228.414 L1555.0521 456.5"
+ clip-path="url(#clipPath2)"
+ id="path9444" />
+ <path
+ fill="none"
+ d="M1737.8416 -220 L1790.4821 -335.4135 L1796.799 -350.5091 L1942.6581 -740.9563 L1956.9553 -771.0897 L2024.962 -898"
+ clip-path="url(#clipPath2)"
+ id="path9446" />
+ <path
+ fill="none"
+ d="M1730.4249 -190 L1725.5751 -63.5"
+ clip-path="url(#clipPath2)"
+ id="path9448" />
+ <path
+ fill="none"
+ d="M1715.6113 -220 L1609.3069 -323.6192 L1597.2324 -332.56 L1584.4562 -339.7423 L1534.261 -364.9576 L1521.441 -372.2469 L1509.2654 -381.3355 L1498.1863 -390.8954 L1395.7156 -491.3533 L1384.5231 -501.4753 L1372.7471 -511.0984 L1359.075 -518.9822 L1316.8344 -536.9285 L1302.9846 -545.2017 L1290.5354 -554.8357 L1278.8702 -565.0334 L1206.5126 -635"
+ clip-path="url(#clipPath2)"
+ id="path9450" />
+ <path
+ fill="none"
+ d="M1721.9266 -190 L1674.641 -111.8283 L1585.7194 54.9422 L1578.7654 70.2131 L1572.662 85.898 L1536.8547 246"
+ clip-path="url(#clipPath2)"
+ id="path9452" />
+ <path
+ fill="none"
+ d="M1737.8553 -220 L1793.4465 -341.6367 L1861.5244 -516.049 L1869.9036 -533.5408 L1879.9336 -550.3941 L1891.3851 -566.1861 L2006.2628 -707"
+ clip-path="url(#clipPath2)"
+ id="path9454" />
+ <path
+ fill="none"
+ d="M1718.7335 -220 L1563.7665 -409.5"
+ clip-path="url(#clipPath2)"
+ id="path9456" />
+ <path
+ fill="none"
+ d="M1743.1837 -220 L1839.7024 -338.8295 L1870.7987 -373.4109 L1959.0747 -468.5"
+ clip-path="url(#clipPath2)"
+ id="path9458" />
+ <path
+ fill="none"
+ d="M1737.6589 -220 L1759.5264 -269.2584 L1789.1104 -333.3076 L1793.4485 -345.0605 L1797.1232 -357.1674 L1799.2274 -369.9363 L1800.329 -382.1035 L1800.6512 -394.3187 L1795.0359 -551.5"
+ clip-path="url(#clipPath2)"
+ id="path9460" />
+ <path
+ fill="none"
+ d="M1686 -220 L1444.5 -300.5"
+ clip-path="url(#clipPath2)"
+ id="path9462" />
+ <path
+ fill="none"
+ d="M1737.9821 -190 L1759.0538 -144.7306 L1763.9989 -132.3875 L1786.4437 -83.6733 L1791.2949 -70.4718 L1794.7535 -56.8085 L1823.2671 190"
+ clip-path="url(#clipPath2)"
+ id="path9464" />
+ <path
+ fill="none"
+ d="M1792.3223 -205.6755 L1912.9915 -207.0047 L1925.9236 -205.9872 L1938.9326 -203.1653 L1962.4874 -194.9545 L2073.5273 -148"
+ clip-path="url(#clipPath2)"
+ id="path9466" />
+ <path
+ fill="none"
+ d="M1669.6777 -210.6785 L1654.0314 -212.1274 L1634.9186 -214.42 L1615.7456 -215.458 L1429.9047 -232.3959 L1393.85 -234.3698 L1375.6881 -233.3309 L1359.0819 -229.8459 L1342.7466 -224.1006 L1327.733 -217.4407 L1150.8571 -125.5"
+ clip-path="url(#clipPath2)"
+ id="path9468" />
+ <path
+ fill="none"
+ d="M1715.6975 -220 L1618.0374 -315.7292 L1606.6896 -325.8326 L1593.8826 -334.5842 L1498.2308 -379.2232 L1365.6914 -444"
+ clip-path="url(#clipPath2)"
+ id="path9470" />
+ <path
+ fill="none"
+ d="M1719.4562 -220 L1647.702 -313.2364 L1639.4208 -324.8945 L1631.936 -337.4316 L1626.1655 -351.033 L1622.7638 -364.8717 L1621.6257 -379.3865 L1622.1956 -393.6915 L1651.7098 -587"
+ clip-path="url(#clipPath2)"
+ id="path9472" />
+ <path
+ fill="none"
+ d="M1719.4407 -220 L1647.3424 -313.5588 L1638.4584 -326.7014 L1630.6166 -340.589 L1624.4246 -356.2978 L1621.1759 -371.7042 L1611.754 -432.9737 L1608.1443 -448.4993 L1571.5094 -565.6849 L1565.8434 -580.5214 L1432.4658 -848.5"
+ clip-path="url(#clipPath2)"
+ id="path9474" />
+ <path
+ fill="none"
+ d="M1689.9011 -220 L1579.2606 -260.3808 L1562.4448 -268.2509 L1547.4619 -279.0468 L1453.738 -366.6343 L1438.5922 -377.8836 L1421.4435 -385.7967 L1403.1199 -389.4229 L1331.2155 -394.633 L1313.1571 -398.5897 L1296.312 -405.6636 L1004.6323 -564"
+ clip-path="url(#clipPath2)"
+ id="path9476" />
+ <path
+ fill="none"
+ d="M1761.4546 -220 L1868.0454 -272.5"
+ clip-path="url(#clipPath2)"
+ id="path9478" />
+ <path
+ fill="none"
+ d="M1737.8378 -190 L1782.3468 -92.3615 L1788.3433 -77.1847 L1792.8481 -60.652 L1794.0735 -43.5573 L1792.6171 -26.5087 L1758.4685 174.4238 L1756.068 191.6194 L1755.7196 208.9639 L1758.5198 225.972 L1763.705 241.887 L1786.6254 300.2224 L1792.8827 313.9514 L1798.786 328.3393 L1828.4285 396"
+ clip-path="url(#clipPath2)"
+ id="path9480" />
+ <path
+ fill="none"
+ d="M1715.6499 -220 L1613.6167 -319.7058 L1600.3414 -330.6942 L1585.488 -339.5492 L1539.1113 -362.3184 L1523.2679 -371.3719 L1508.7147 -382.5849 L1496.9186 -396.8426 L1365.9385 -605"
+ clip-path="url(#clipPath2)"
+ id="path9482" />
+ <path
+ fill="none"
+ d="M1669.6777 -211.4206 L1570.3632 -221.8192 L1552.5938 -223.1205 L1391.7688 -241.755 L1373.3782 -245.8518 L1216.3251 -299"
+ clip-path="url(#clipPath2)"
+ id="path9484" />
+ <path
+ fill="none"
+ d="M1719.3217 -220 L1652.9008 -305.3127 L1637.6135 -327.1343 L1630.889 -339.1896 L1625.6447 -352.1444 L1622.0043 -365.6252 L1617.4021 -392.0246 L1616.0254 -404.7892 L1611.8835 -431.1289 L1608.2532 -444.5484 L1601.9314 -457.2315 L1593.8871 -468.5936 L1525.8938 -542"
+ clip-path="url(#clipPath2)"
+ id="path9486" />
+ <path
+ fill="none"
+ d="M1719.7517 -190 L1512.821 85.951 L1501.3052 99.9877 L1488.329 112.7794 L1384.1188 201.5"
+ clip-path="url(#clipPath2)"
+ id="path9488" />
+ <path
+ fill="none"
+ d="M1729.2328 -220 L1712.2672 -364"
+ clip-path="url(#clipPath2)"
+ id="path9490" />
+ <path
+ fill="none"
+ d="M1722.5846 -190 L1681.4597 -116.6974 L1674.6794 -103.1759 L1667.4226 -89.8639 L1660.6564 -74.698 L1656.6792 -58.9427 L1653.626 -41.7401 L1651.9781 -24.6842 L1650.8036 -7.3245 L1649.0201 10.5424 L1642.7401 86.5"
+ clip-path="url(#clipPath2)"
+ id="path9492" />
+ <path
+ fill="none"
+ d="M1719.2087 -220 L1694.7434 -251.1231 L1686.0302 -263.1407 L1649.7358 -309.5934 L1641.0094 -322.1074 L1632.9093 -335.3819 L1626.6534 -350.1132 L1622.9349 -365.8031 L1621.8632 -381.9264 L1623.8821 -397.968 L1628.7859 -413.585 L1635.8981 -428.3178 L1712.8442 -546.8633 L1721.0911 -560.9402 L1727.7742 -576.067 L1731.7117 -592.0207 L1732.0756 -608.6171 L1729.2048 -624.3967 L1717.8364 -653.6657 L1673.2709 -747.8106 L1666.1648 -761.2916 L1660.1403 -774.6749 L1640.9241 -813.5"
+ clip-path="url(#clipPath2)"
+ id="path9494" />
+ <path
+ fill="none"
+ d="M1669.6777 -191.6222 L1458.2584 -145.5"
+ clip-path="url(#clipPath2)"
+ id="path9496" />
+ <path
+ fill="none"
+ d="M1739.1447 -190 L1863.7595 39.5027 L1871.1771 51.7794 L1879.2983 64.0357 L1898.2384 86.2591 L1960.827 152.5"
+ clip-path="url(#clipPath2)"
+ id="path9498" />
+ <path
+ fill="none"
+ d="M1743.6166 -220 L1839.2838 -333.7397 L1850.5449 -344.3013 L1863.4709 -352.6133 L1878.0291 -358.5926 L1893.3893 -361.687 L1968.7413 -367.1797 L1984.5386 -369.0039 L2000.3026 -372.444 L2016.0938 -377.015 L2030.8204 -383.4816 L2045.321 -390.3967 L2183.5708 -466"
+ clip-path="url(#clipPath2)"
+ id="path9500" />
+ <path
+ fill="none"
+ d="M1715.2642 -190 L1468.7358 45"
+ clip-path="url(#clipPath2)"
+ id="path9502" />
+ <path
+ fill="none"
+ d="M1738.1113 -190 L1823.2002 -10.5217 L1911.3304 184.7965 L1921.2964 202.1295 L1933.5916 217.8769 L2028.3225 311.5"
+ clip-path="url(#clipPath2)"
+ id="path9504" />
+ <path
+ fill="none"
+ d="M1746.3147 -190 L1934.6853 -5.5"
+ clip-path="url(#clipPath2)"
+ id="path9506" />
+ <path
+ fill="none"
+ d="M1719.8269 -189.9794 L1710.9945 -178.7845 L1516.5352 81.5281 L1506.3717 94.2074 L1495.1205 106.1388 L1481.5793 115.3665 L1466.39 121.0814 L1450.9139 124.6082 L1362.7417 139.9343 L1347.4766 143.7284 L1332.6359 149.6314 L1319.3198 158.2387 L1307.5835 169.312 L1287.3872 193.3884 L672.594 973.4279 L441.6343 1256.7087 L430.5662 1268.6992 L418.3392 1279.9236 L405.4018 1289.8066 L264.9038 1384.0872 L163.1076 1464"
+ clip-path="url(#clipPath2)"
+ id="path9508" />
+ <path
+ fill="none"
+ d="M250.5503 127.5 L428.9006 228.2618 L462.1554 250.634 L726.0931 440"
+ clip-path="url(#clipPath2)"
+ id="path9510" />
+ <path
+ fill="none"
+ d="M233.8562 127.5 L362.6438 323.5"
+ clip-path="url(#clipPath2)"
+ id="path9512" />
+ <path
+ fill="none"
+ d="M233.7425 97.5 L409.7575 -173.5"
+ clip-path="url(#clipPath2)"
+ id="path9514" />
+ <path
+ fill="none"
+ d="M225.5602 127.5 L249.045 353.2842 L331.5446 772"
+ clip-path="url(#clipPath2)"
+ id="path9516" />
+ <path
+ fill="none"
+ d="M151.7529 113.9661 L-66.7188 118.3996"
+ clip-path="url(#clipPath2)"
+ id="path9518" />
+ <path
+ fill="none"
+ d="M296.2471 103.2322 L628.8291 60.5686"
+ clip-path="url(#clipPath2)"
+ id="path9520" />
+ <path
+ fill="none"
+ d="M214.4915 127.5 L-46.9915 540"
+ clip-path="url(#clipPath2)"
+ id="path9522" />
+ <path
+ fill="none"
+ d="M2239.3679 1998 L2155.4436 2071.4805 L2143.0876 2080.9946 L2129.8374 2089.5989 L2115.9492 2096.5876 L2101.1887 2102.0188 L2086.0796 2105.4854 L2071.1526 2107.5623 L1841.6396 2119.9771 L1826.8549 2120.2129 L1811.7775 2119.8667 L1796.7798 2118.3806 L1662.748 2092.3142"
+ clip-path="url(#clipPath2)"
+ id="path9524" />
+ <path
+ fill="none"
+ d="M1572.8621 -285.5 L1490.1808 -98.6625 L1481.3794 -82.0423 L1470.7261 -66.2432 L1457.8481 -52.605 L1443.4885 -41.2841 L1412.5255 -21.1364 L1228.6635 93"
+ clip-path="url(#clipPath2)"
+ id="path9526" />
+ <path
+ fill="none"
+ d="M1574.2365 -285.5 L1458.2635 45"
+ clip-path="url(#clipPath2)"
+ id="path9528" />
+ <path
+ fill="none"
+ d="M1600.1318 -297.875 L1738.1715 -280.3118 L1750.5458 -277.2058 L1762.5206 -272.6636 L1773.9989 -266.3214 L1784.2484 -258.9727 L1900.7533 -160.5"
+ clip-path="url(#clipPath2)"
+ id="path9530" />
+ <path
+ fill="none"
+ d="M1600.1318 -298.6243 L1682.269 -291.1569 L1699.8048 -290.2136 L1717.6859 -290.6404 L1735.2581 -293.9877 L1751.9829 -299.9295 L1782.4274 -314.1314 L1796.3497 -321.4707 L1811.2347 -328.2465 L1839.545 -342.5801 L1868.8745 -355.7003 L1884.9718 -359.8295 L1900.8519 -361.6436 L1917.1348 -359.9464 L2114.6455 -319"
+ clip-path="url(#clipPath2)"
+ id="path9532" />
+ <path
+ fill="none"
+ d="M1581.8135 -285.5 L1639.1865 86.5"
+ clip-path="url(#clipPath2)"
+ id="path9534" />
+ <path
+ fill="none"
+ d="M1585.9137 -315.5 L1626.9812 -411.5464 L1635.4854 -427.641 L1709.5739 -541.4645 L1718.5413 -556.3099 L1726.7808 -571.8899 L1802.88 -775"
+ clip-path="url(#clipPath2)"
+ id="path9536" />
+ <path
+ fill="none"
+ d="M1579.1661 -285.5 L1570.9286 84.607 L1571.356 101.6438 L1573.7692 118.6585 L1578.5906 135.3658 L1612.851 229.6021 L1617.0092 246.5683 L1617.9976 264.2934 L1615.7949 281.7931 L1611.1025 298.5992 L1553.4745 456.5"
+ clip-path="url(#clipPath2)"
+ id="path9538" />
+ <path
+ fill="none"
+ d="M1585.9491 -315.5 L1628.7637 -415.0833 L1636.6608 -429.5917 L1716.1844 -549.9628 L1741.313 -592.6497 L1751.0687 -606.4507 L1761.7155 -618.8658 L2019.1653 -898"
+ clip-path="url(#clipPath2)"
+ id="path9540" />
+ <path
+ fill="none"
+ d="M1588.1608 -285.5 L1716.3392 -63.5"
+ clip-path="url(#clipPath2)"
+ id="path9542" />
+ <path
+ fill="none"
+ d="M1564.959 -315.5 L1392.1792 -493.7342 L1380.0123 -505.272 L1366.1857 -515.327 L1350.8662 -522.8212 L1319.0122 -536.3331 L1303.6681 -545.1216 L1289.8102 -555.9888 L1276.7415 -567.3019 L1252.1761 -591.2873 L1206.6294 -635"
+ clip-path="url(#clipPath2)"
+ id="path9544" />
+ <path
+ fill="none"
+ d="M1578.2711 -285.5 L1534.7289 246"
+ clip-path="url(#clipPath2)"
+ id="path9546" />
+ <path
+ fill="none"
+ d="M1585.9148 -315.5 L1623.9624 -404.4688 L1630.5997 -418.2294 L1638.6387 -431.1348 L1648.6869 -442.6392 L1660.5364 -452.3571 L1673.6339 -459.9249 L1687.4928 -466.009 L1797.6302 -504.2472 L1812.218 -509.8861 L1826.6222 -517.39 L1839.3597 -527.7557 L1862.4513 -551.5592 L1932.7964 -628.1892 L1945.5214 -641.296 L2004.9359 -707"
+ clip-path="url(#clipPath2)"
+ id="path9548" />
+ <path
+ fill="none"
+ d="M1576.1129 -315.5 L1554.8871 -409.5"
+ clip-path="url(#clipPath2)"
+ id="path9550" />
+ <path
+ fill="none"
+ d="M1600.1318 -287.4944 L1707.2042 -220"
+ clip-path="url(#clipPath2)"
+ id="path9552" />
+ <path
+ fill="none"
+ d="M1589.1985 -285.5 L1661.0529 -174.3671 L1671.0265 -160.6411 L1682.8058 -148.7924 L1696.5781 -138.8818 L1710.4188 -131.841 L1753.0952 -113.1987 L1780.0155 -98.1506 L1926.3145 -5.5"
+ clip-path="url(#clipPath2)"
+ id="path9554" />
+ <path
+ fill="none"
+ d="M1600.1318 -298.6609 L1686.9719 -290.92 L1702.6021 -290.1562 L1718.5648 -290.5393 L1734.2698 -293.5994 L1749.1108 -299.236 L1762.6196 -306.9124 L1786.0736 -324.64 L1955.3499 -468.5"
+ clip-path="url(#clipPath2)"
+ id="path9556" />
+ <path
+ fill="none"
+ d="M1558.8682 -302.2193 L1460.1221 -310.4482"
+ clip-path="url(#clipPath2)"
+ id="path9558" />
+ <path
+ fill="none"
+ d="M1585.8168 -315.5 L1625.8408 -410.543 L1631.3073 -420.9417 L1637.6289 -430.8379 L1645.0138 -440.2143 L1653.0944 -448.5581 L1669.6295 -463.5915 L1776.2988 -551.5"
+ clip-path="url(#clipPath2)"
+ id="path9560" />
+ <path
+ fill="none"
+ d="M1583.7883 -285.5 L1651.3751 -49.0925 L1657.1646 -31.9459 L1664.5016 -14.997 L1674.2026 0.9056 L1813.9171 190"
+ clip-path="url(#clipPath2)"
+ id="path9562" />
+ <path
+ fill="none"
+ d="M1562.7354 -285.5 L1406.2646 -145.5"
+ clip-path="url(#clipPath2)"
+ id="path9564" />
+ <path
+ fill="none"
+ d="M1600.1318 -297.8126 L1735.9352 -280.1231 L1753.366 -275.8355 L1770.0992 -269.3911 L1786.1671 -261.7391 L1846.3505 -230.1474 L1862.1223 -222.5492 L1878.9531 -216.0268 L1896.1616 -211.8175 L1930.9523 -204.9131 L1948.24 -199.5791 L2072.7815 -148"
+ clip-path="url(#clipPath2)"
+ id="path9566" />
+ <path
+ fill="none"
+ d="M1558.8682 -293.0663 L1433.3401 -247.8382 L1418.0536 -243.2349 L1402.4036 -239.6292 L1370.939 -233.1345 L1355.0715 -228.8596 L1340.0222 -222.6089 L1151.171 -125.5"
+ clip-path="url(#clipPath2)"
+ id="path9568" />
+ <path
+ fill="none"
+ d="M1558.8682 -313.8748 L1358.1388 -444"
+ clip-path="url(#clipPath2)"
+ id="path9570" />
+ <path
+ fill="none"
+ d="M1583.8586 -315.5 L1612.3093 -413.4114 L1650.684 -587"
+ clip-path="url(#clipPath2)"
+ id="path9572" />
+ <path
+ fill="none"
+ d="M1566.2933 -315.5 L1514.8843 -373.89 L1504.1537 -387.4749 L1495.3708 -403.1423 L1489.4203 -419.789 L1460.8938 -520.2078 L1456.6606 -538.3257 L1453.6722 -556.3632 L1452.3645 -574.7655 L1449.7781 -629.4624 L1430.1891 -809.7579 L1428.8347 -827.6007 L1426.6023 -848.5"
+ clip-path="url(#clipPath2)"
+ id="path9574" />
+ <path
+ fill="none"
+ d="M1558.8682 -312.1941 L1452.7843 -372.322 L1440.3207 -378.6023 L1427.2346 -384.2264 L1413.2999 -388.1193 L1399.0243 -390.3098 L1343.8071 -393.2482 L1329.5986 -394.5866 L1315.0881 -397.9596 L1301.3245 -402.9852 L1288.3081 -409.2307 L1004.5057 -564"
+ clip-path="url(#clipPath2)"
+ id="path9576" />
+ <path
+ fill="none"
+ d="M1600.1318 -312.8633 L1685.4681 -364"
+ clip-path="url(#clipPath2)"
+ id="path9578" />
+ <path
+ fill="none"
+ d="M1572.8585 -285.5 L1487.5991 -92.9386 L1478.4438 -76.6212 L1468.6229 -61.6985 L1402.7 22.2378 L1394.6174 38.8205 L1389.4469 56.8215 L1368.6556 201.5"
+ clip-path="url(#clipPath2)"
+ id="path9580" />
+ <path
+ fill="none"
+ d="M1600.1318 -298.5135 L1693.5884 -289.5154 L1709.191 -288.7659 L1837.5674 -287.9075"
+ clip-path="url(#clipPath2)"
+ id="path9582" />
+ <path
+ fill="none"
+ d="M1583.7517 -315.5 L1607.5015 -399.2886 L1610.8323 -416.8157 L1610.6674 -434.742 L1607.6373 -452.1016 L1580.8672 -566.9084 L1577.3993 -584.0591 L1575.7869 -601.7263 L1577.35 -619.4314 L1580.9305 -636.3984 L1614.8164 -764.4524 L1619.7084 -780.1863 L1624.0825 -796.5162 L1629.0833 -813.5"
+ clip-path="url(#clipPath2)"
+ id="path9584" />
+ <path
+ fill="none"
+ d="M1583.8019 -285.5 L1652.9181 -44.5011 L1657.9495 -28.9759 L1664.0696 -13.6799 L1706.2524 72.6705 L1712.1622 88.0203 L1755.9924 223.5812 L1761.5636 238.7214 L1828.6061 396"
+ clip-path="url(#clipPath2)"
+ id="path9586" />
+ <path
+ fill="none"
+ d="M1589.1637 -285.5 L1664.5575 -168.474 L1674.3359 -156.5337 L1685.8951 -145.9557 L1699.149 -137.4223 L1755.5259 -110.7229 L1769.1538 -101.467 L1780.8571 -89.4849 L1791.1833 -75.2934 L1809.1395 -47.7027 L1874.6827 57.0747 L1886.2128 72.1643 L1898.6288 86.4205 L1960.8711 152.5"
+ clip-path="url(#clipPath2)"
+ id="path9588" />
+ <path
+ fill="none"
+ d="M1600.1318 -298.5899 L1680.4246 -291.1563 L1695.1542 -290.3194 L1710.582 -290.1999 L1726.1627 -291.7365 L1741.3241 -295.5708 L1755.6965 -301.1228 L1857.4005 -351.0461 L1870.8876 -356.5639 L1885.2015 -360.5438 L1899.5851 -362.6042 L1969.0137 -367.0708 L1983.0198 -368.654 L1997.3274 -370.9745 L2011.1989 -374.9344 L2024.6467 -380.273 L2049.2156 -392.3064 L2183.6387 -466"
+ clip-path="url(#clipPath2)"
+ id="path9590" />
+ <path
+ fill="none"
+ d="M1566.01 -315.4926 L1563.0609 -318.6098 L1506.4263 -383.1129 L1498.4028 -393.4107 L1491.4194 -403.7922 L1366.5425 -604.9753"
+ clip-path="url(#clipPath2)"
+ id="path9592" />
+ <path
+ fill="none"
+ d="M1558.8682 -293.1273 L1428.6742 -246.6027 L1414.7637 -243.1767 L1400.3463 -241.7605 L1385.8116 -243.0361 L1372.291 -245.7882 L1216.0447 -299"
+ clip-path="url(#clipPath2)"
+ id="path9594" />
+ <path
+ fill="none"
+ d="M1589.1405 -285.5 L1662.5685 -171.2502 L1672.3359 -158.9074 L1684.024 -147.4209 L1697.4471 -138.3556 L1711.6204 -131.2945 L1739.769 -118.6583 L1753.9266 -111.6033 L1767.6046 -102.8544 L1779.1833 -91.2369 L1788.0878 -77.7131 L1910.2734 182.3812 L1918.0563 197.3588 L1928.0577 211.2185 L1939.489 224.0622 L2028.2697 311.5"
+ clip-path="url(#clipPath2)"
+ id="path9596" />
+ <path
+ fill="none"
+ d="M1566.3265 -315.5 L1508.5015 -381.3427 L1499.0966 -395.045 L1493.3429 -410.4246 L1491.4697 -427.2559 L1492.8239 -443.7798 L1503.1702 -508.4587 L1509.2715 -542"
+ clip-path="url(#clipPath2)"
+ id="path9598" />
+ <path
+ fill="none"
+ d="M389.0941 -587 L-119.5941 -261"
+ clip-path="url(#clipPath2)"
+ id="path9600" />
+ <path
+ fill="none"
+ d="M128.5263 1464 L-36.5263 1304"
+ clip-path="url(#clipPath2)"
+ id="path9602" />
+ <path
+ fill="none"
+ d="M144.218 1464 L148.782 1150"
+ clip-path="url(#clipPath2)"
+ id="path9604" />
+ <path
+ fill="none"
+ d="M151.1333 1494 L243.8667 1689"
+ clip-path="url(#clipPath2)"
+ id="path9606" />
+ <path
+ fill="none"
+ d="M193.2402 1482.5999 L221.5254 1484.6676"
+ clip-path="url(#clipPath2)"
+ id="path9608" />
+ <path
+ fill="none"
+ d="M131.7539 1494 L55.0677 1587.9316 L42.7085 1601.2833 L29.2008 1613.6403 L14.6157 1624.2771 L-30.3586 1651.8414 L-44.221 1662.6852 L-54.3718 1676.7185 L-60.8013 1692.8674 L-91.1062 1788.2023 L-96.9305 1804.7229 L-104.2114 1820.9052 L-114.1318 1835.8052 L-126.848 1848.3961 L-141.6743 1858.7947 L-188.0667 1884.5151 L-282.5689 1933.7706 L-298.8415 1943.1725 L-314.7511 1953.4357 L-329.8501 1964.6443 L-400.5812 2021.3927 L-414.3242 2033.2428 L-480.0018 2086.5"
+ clip-path="url(#clipPath2)"
+ id="path9610" />
+ <path
+ fill="none"
+ d="M136.8978 1464 L44.4644 1268.7787 L30.7535 1243.0776 L22.1897 1230.6184 L11.9742 1219.5244 L0.3747 1209.786 L-281.4855 1022"
+ clip-path="url(#clipPath2)"
+ id="path9612" />
+ <path
+ fill="none"
+ d="M114.6057 1464 L19.7533 1415.5966 L5.1171 1409.1525 L-10.0416 1403.6228 L-25.3298 1399.9612 L-41.5699 1398.2047 L-57.5674 1398.7446 L-73.0805 1401.1993 L-88.2248 1405.7168 L-102.3748 1411.7216 L-115.7571 1419.2593 L-412.0113 1622.5936 L-426.6128 1631.0859 L-442.5374 1638.3893 L-459.532 1643.1439 L-477.3163 1645.5321 L-495.0157 1645.5688 L-530.7623 1644.0494 L-603.877 1638.6968"
+ clip-path="url(#clipPath2)"
+ id="path9614" />
+ <path
+ fill="none"
+ d="M158.371 1494 L187.1266 1524.0143 L197.6006 1535.7157 L208.6994 1546.4695 L219.3031 1557.908 L242.3572 1579.9839 L254.935 1590.5386 L268.6319 1600.2789 L283.2219 1608.0371 L298.8794 1613.9297 L314.9249 1617.7449 L331.4337 1619.5149 L348.0342 1619.0803 L364.3559 1617.3861 L380.0265 1615.2402 L510.7629 1592.5"
+ clip-path="url(#clipPath2)"
+ id="path9616" />
+ <path
+ fill="none"
+ d="M94.7598 1489.3663 L25.25 1504"
+ clip-path="url(#clipPath2)"
+ id="path9618" />
+ <path
+ fill="none"
+ d="M155.4991 1464 L346.0009 1215.5"
+ clip-path="url(#clipPath2)"
+ id="path9620" />
+ <path
+ fill="none"
+ d="M115.0461 1464 L39.6685 1424.9496 L8.9389 1410.5149 L-6.7761 1404.1628 L-84.1233 1378.9407 L-98.8205 1373.088 L-217.905 1317.8275 L-231.9918 1312.7723 L-246.5594 1309.5073 L-261.5918 1307.9351 L-317.872 1308.4144 L-368.2109 1310.45"
+ clip-path="url(#clipPath2)"
+ id="path9622" />
+ <path
+ fill="none"
+ d="M136.8183 1464 L-68.8183 1034.5"
+ clip-path="url(#clipPath2)"
+ id="path9624" />
+ <path
+ fill="none"
+ d="M139.0195 1494 L21.4805 1848"
+ clip-path="url(#clipPath2)"
+ id="path9626" />
+ <path
+ fill="none"
+ d="M137.2531 1494 L45.4936 1698.0031 L38.4408 1711.5551 L30.6577 1724.6348 L20.0462 1735.8912 L7.5286 1744.2808 L-31.3456 1765.874 L-44.1084 1774.0631 L-55.9533 1783.681 L-66.6299 1794.6614 L-75.9345 1806.4084 L-228.7105 2040.5"
+ clip-path="url(#clipPath2)"
+ id="path9628" />
+ <path
+ fill="none"
+ d="M131.8724 1494 L58.0749 1585.2761 L48.5865 1596.0686 L38.2552 1606.5284 L26.8 1616.1461 L14.9864 1624.6083 L-33.392 1653.4683 L-56.7115 1671.0442 L-165.1028 1764.5"
+ clip-path="url(#clipPath2)"
+ id="path9630" />
+ <path
+ fill="none"
+ d="M145.7432 1494 L170.5621 1707.5676 L173.274 1721.3608 L176.9338 1735.2415 L233.8552 1886.5"
+ clip-path="url(#clipPath2)"
+ id="path9632" />
+ <path
+ fill="none"
+ d="M143.1595 1494 L134.3284 1651.611 L125.1812 1858.2568 L123.4991 1875.0447 L120.446 1891.9172 L28.1562 2225"
+ clip-path="url(#clipPath2)"
+ id="path9634" />
+ <path
+ fill="none"
+ d="M114.9596 1464 L32.9453 1421.6379 L-1.0743 1406.0146 L-18.5145 1399.7577 L-71.2901 1383.0033 L-88.9296 1376.5465 L-106.0097 1368.7263 L-238.8289 1302.1188 L-409.014 1224.1451 L-427.4155 1217.8203 L-446.496 1213.999 L-465.6518 1212.6815 L-571.9102 1214.5187"
+ clip-path="url(#clipPath2)"
+ id="path9636" />
+ <path
+ fill="none"
+ d="M115.0747 1464 L26.8791 1418.2637 L1.6098 1407.1744 L-11.6988 1402.4895 L-25.5129 1399.5509 L-39.428 1397.7089 L-53.2746 1396.8475 L-182.7529 1398.5009"
+ clip-path="url(#clipPath2)"
+ id="path9638" />
+ <path
+ fill="none"
+ d="M158.4073 1494 L233.2235 1571.894 L245.2775 1583.5159 L257.7588 1594.7755 L511.0151 1806"
+ clip-path="url(#clipPath2)"
+ id="path9640" />
+ <path
+ fill="none"
+ d="M143.4499 1494 L128.6067 1898.7615 L129.6534 1916.7771 L133.5966 1934.4972 L144.7699 1967.9235 L264.0977 2247.5"
+ clip-path="url(#clipPath2)"
+ id="path9642" />
+ <path
+ fill="none"
+ d="M157.9143 1494 L239.0956 1581.5155 L299.5429 1639.5773 L309.3708 1650.3474 L318.2313 1662.1793 L325.1808 1675.1222 L341.235 1713.9014 L459.376 2029"
+ clip-path="url(#clipPath2)"
+ id="path9644" />
+ <path
+ fill="none"
+ d="M131.9298 1494 L59.0988 1584.5089 L39.4312 1605.1343 L27.9236 1614.6936 L15.4433 1623.2069 L1.9076 1630.1975 L-12.1443 1635.9338 L-196.2444 1689.7206 L-211.4697 1695.0406 L-226.6018 1701.6837 L-241.4386 1709.1649 L-358.5241 1775.5"
+ clip-path="url(#clipPath2)"
+ id="path9646" />
+ <path
+ fill="none"
+ d="M115.1774 1464 L45.9922 1427.9943 L17.8225 1414.6093 L3.2932 1408.3326 L-12.0923 1402.9446 L-27.8721 1399.5634 L-43.8078 1398.2095 L-59.8553 1398.9216 L-75.4321 1401.8431 L-90.507 1406.4702 L-105.0128 1412.959 L-118.572 1420.2053 L-131.5067 1427.7472 L-143.8491 1435.9572 L-156.4999 1443.1549 L-208.0187 1474.8807 L-222.4372 1482.162 L-238.3481 1487.8889 L-269.2329 1495.8068 L-404.4922 1522.5"
+ clip-path="url(#clipPath2)"
+ id="path9648" />
+ <path
+ fill="none"
+ d="M163.4566 1464 L246.2284 1400.1873 L260.1052 1390.4387 L274.5361 1381.6288 L289.8481 1374.1788 L320.3453 1361.8997 L350.8412 1351.5752 L365.7409 1345.8651 L562.049 1276.5"
+ clip-path="url(#clipPath2)"
+ id="path9650" />
+ <path
+ fill="none"
+ d="M-182.8386 -713.5 L-464.6614 -874"
+ clip-path="url(#clipPath2)"
+ id="path9652" />
+ <path
+ fill="none"
+ d="M-146.8453 -713.5 L66.8453 -1045.5"
+ clip-path="url(#clipPath2)"
+ id="path9654" />
+ <path
+ fill="none"
+ d="M-179.9566 -683.5 L-556.0435 -443"
+ clip-path="url(#clipPath2)"
+ id="path9656" />
+ <path
+ fill="none"
+ d="M-161.2963 -713.5 L-332.2037 -1248"
+ clip-path="url(#clipPath2)"
+ id="path9658" />
+ <path
+ fill="none"
+ d="M-441.3644 -904 L26.8644 -1045.5"
+ clip-path="url(#clipPath2)"
+ id="path9660" />
+ <path
+ fill="none"
+ d="M-493.8796 -874 L-576.6204 -443"
+ clip-path="url(#clipPath2)"
+ id="path9662" />
+ <path
+ fill="none"
+ d="M-484.8235 -904 L-343.1765 -1248"
+ clip-path="url(#clipPath2)"
+ id="path9664" />
+ <path
+ fill="none"
+ d="M1474.5735 2339 L1326.7584 2276.4133 L1308.9584 2269.8667 L1290.6266 2264.2744 L1271.7128 2260.5183 L1196.8739 2249.6672 L1177.7106 2246.0295 L1122.927 2232.1714 L996.0959 2196"
+ clip-path="url(#clipPath2)"
+ id="path9666" />
+ <path
+ fill="none"
+ d="M1503.9481 2339 L1255.6714 1723.624 L1242.3505 1694.6458 L1130.8816 1482.5"
+ clip-path="url(#clipPath2)"
+ id="path9668" />
+ <path
+ fill="none"
+ d="M1474.5431 2339 L1322.069 2274.4961 L1303.8984 2268.2122 L1285.0522 2263.4204 L1265.6094 2261.2283 L1246.234 2261.4336 L1227.1411 2263.3792 L978.9871 2301.2107 L960.8951 2303.2319 L942.4762 2304.3843 L906.9919 2304.9417 L792.7412 2303.2964"
+ clip-path="url(#clipPath2)"
+ id="path9670" />
+ <path
+ fill="none"
+ d="M1518.1578 2369 L1656.8422 2624"
+ clip-path="url(#clipPath2)"
+ id="path9672" />
+ <path
+ fill="none"
+ d="M1529.2338 2369 L1729.9617 2525.5437 L1741.25 2535.3298 L1752.4939 2545.8992 L1763.1542 2557.5071 L1772.4307 2570.2263 L1780.174 2583.7786 L1786.6165 2597.8826 L1797.2206 2626.0237 L1801.7369 2640.0129 L1812.5941 2668.3142 L1818.7988 2682.1631 L1928.7854 2883"
+ clip-path="url(#clipPath2)"
+ id="path9674" />
+ <path
+ fill="none"
+ d="M1511.5278 2369 L1513.1466 2384.8933 L1514.204 2400.4846 L1537.4098 2649.1707 L1540.1097 2665.6206 L1544.6873 2681.5659 L1550.3002 2697.064 L1556.4666 2711.6733 L1818.3805 3263.5"
+ clip-path="url(#clipPath2)"
+ id="path9676" />
+ <path
+ fill="none"
+ d="M1526.5431 2339 L1664.9104 2213.5396 L1676.3075 2204.0525 L1688.2982 2195.3054 L1701.2352 2186.9421 L1714.6727 2179.9111 L1728.8771 2174.0081 L1743.3738 2169.3315 L1772.5908 2162.6487 L2081.9709 2107.0034 L2096.4185 2103.4382 L2111.0107 2098.6389 L2124.6841 2092.2168 L2137.7759 2084.4053 L2149.7017 2074.8916 L2160.5408 2063.8689 L2169.6196 2051.8689 L2177.3831 2038.7415 L2183.9478 2025.1888 L2205.1951 1970.9033 L2211.8096 1957.5084 L2221.3857 1945.6956 L2233.8264 1936.7653 L2247.5352 1930.2933 L2514.4805 1835"
+ clip-path="url(#clipPath2)"
+ id="path9678" />
+ <path
+ fill="none"
+ d="M1529.1042 2369 L1738.5509 2533.45 L1750.5435 2543.9087 L1761.3635 2555.615 L1771.2257 2568.3628 L1779.4089 2582.2319 L1786.0944 2596.5154 L1812.7916 2666.5 L1819.77 2680.5874 L1827.7897 2693.7729 L1837.3392 2705.9377 L1848.2404 2717.001 L1860.5529 2726.521 L1873.8605 2734.6018 L1887.8599 2741.093 L1902.7081 2746.1006 L1917.8242 2749.6072 L1962.748 2758.1482 L1977.8821 2762.0352 L1992.6849 2767.7485 L2007.0975 2774.7456 L2020.618 2783.7029 L2033.1394 2793.7778 L2044.6404 2805.4622 L2055.4875 2817.95 L2228.1003 3055.5"
+ clip-path="url(#clipPath2)"
+ id="path9680" />
+ <path
+ fill="none"
+ d="M1493.432 2369 L1358.0886 2491.5347 L1344.4315 2502.6399 L1329.5942 2512.6628 L1313.6755 2520.7417 L1297.0505 2526.8035 L1279.6298 2530.5449 L1261.9062 2532.02 L1243.9521 2531.1667 L1226.3867 2528.6655 L1192.8405 2520.178 L1047.8075 2476.5"
+ clip-path="url(#clipPath2)"
+ id="path9682" />
+ <path
+ fill="none"
+ d="M1493.3915 2369 L1351.8792 2496.8074 L1336.9489 2508.2498 L1321.3251 2518.696 L823.5881 2799.5"
+ clip-path="url(#clipPath2)"
+ id="path9684" />
+ <path
+ fill="none"
+ d="M1504.6932 2339 L1339.462 1871.9652 L1287.3363 1714.5103 L1281.5391 1698.6304 L1271.3762 1666.3949 L1266.9104 1649.3513 L1263.7081 1632.1747 L1261.8214 1614.8285 L1252.174 1465.3066 L1249.6622 1448.1022 L1245.6331 1430.9169 L1239.6428 1414.2061 L1232.1565 1398.4878 L1224.3367 1383.3807 L1075.5237 1121.5"
+ clip-path="url(#clipPath2)"
+ id="path9686" />
+ <path
+ fill="none"
+ d="M1505.0319 2369 L1410.9681 2653"
+ clip-path="url(#clipPath2)"
+ id="path9688" />
+ <path
+ fill="none"
+ d="M1534.0114 2369 L1910.9886 2604.5"
+ clip-path="url(#clipPath2)"
+ id="path9690" />
+ <path
+ fill="none"
+ d="M1501.9417 2339 L1342.1976 2041.6492 L1333.6259 2028.2693 L1324.1749 2015.4473 L1313.6296 2003.1354 L1097.5363 1794.5"
+ clip-path="url(#clipPath2)"
+ id="path9692" />
+ <path
+ fill="none"
+ d="M1504.9796 2339 L1369.1797 1933.2559 L1364.5956 1917.7723 L1361.1023 1901.3207 L1359.2668 1884.6461 L1358.9624 1867.7823 L1364.918 1804.7361 L1385.1973 1636"
+ clip-path="url(#clipPath2)"
+ id="path9694" />
+ <path
+ fill="none"
+ d="M1607.1934 2343.6565 L1641.5518 2340"
+ clip-path="url(#clipPath2)"
+ id="path9696" />
+ <path
+ fill="none"
+ d="M1509.1334 2339 L1483.3666 1893"
+ clip-path="url(#clipPath2)"
+ id="path9698" />
+ <path
+ fill="none"
+ d="M1535.9918 2369 L1686.6624 2455.9526 L1702.3188 2464.1128 L1718.441 2471.5791 L1735.4189 2477.6355 L1752.9897 2482.0723 L1770.8313 2484.4812 L1805.623 2486.6531 L1924.4827 2487.9512 L1942.2737 2489.0781 L1960.0562 2491.6494 L1977.8062 2496.248 L1994.6891 2502.8237 L2010.9612 2510.2305 L2244.1704 2629.5"
+ clip-path="url(#clipPath2)"
+ id="path9700" />
+ <path
+ fill="none"
+ d="M1421.5883 2369 L1347.9117 2381.5"
+ clip-path="url(#clipPath2)"
+ id="path9702" />
+ <path
+ fill="none"
+ d="M1510.9263 2339 L1526.5001 2086.7854 L1528.6637 2070.645 L1532.7749 2054.6072 L1539.1635 2039.5104 L1582.8965 1955.9016 L1589.814 1941.5165 L1596.3032 1926.5045 L1601.6031 1910.614 L1604.801 1894.145 L1605.9075 1877.3345 L1604.8375 1860.4043 L1601.4618 1844.0298 L1596.4197 1828.249 L1590.9009 1813.1063 L1584.6427 1798.0835 L1579.1389 1783.2101 L1530.6157 1664.5873 L1525.4736 1648.2223 L1521.2292 1631.2045 L1518.8718 1613.6608 L1518.7667 1596.1191 L1520.1587 1578.7006 L1615.3778 1034"
+ clip-path="url(#clipPath2)"
+ id="path9704" />
+ <path
+ fill="none"
+ d="M1520.0275 2339 L1652.9227 2140.2031 L1661.5157 2125.8765 L1669.6093 2110.4673 L1674.8169 2093.8274 L1678.4438 2077.0471 L1692.2361 1993.3143 L1695.9932 1975.8687 L1700.5378 1958.3699 L1707.6724 1941.3625 L1716.8115 1925.3213 L1728.2234 1910.7318 L1740.7257 1897.5914 L1945.353 1707.5"
+ clip-path="url(#clipPath2)"
+ id="path9706" />
+ <path
+ fill="none"
+ d="M1511.1052 2369 L1519.2036 2478.908 L1520.9386 2494.2686 L1532.0088 2648.5208 L1532.4585 2664.9966 L1531.5543 2681.3984 L1528.7942 2697.7139 L1523.9926 2713.2405 L1517.3701 2727.6858 L1508.618 2741.5935 L1498.5919 2754.0928 L1487.2609 2765.2034 L1475.011 2774.9775 L1400.5135 2826.1184 L1387.9414 2835.4861 L1376.0679 2845.9873 L1364.8727 2857.1089 L1355.0602 2869.5366 L1346.4813 2882.7495 L1339.2728 2896.8088 L1333.5167 2911.4705 L1329.4667 2926.6213 L1326.7267 2942.0088 L1325.672 2957.7959 L1326.2606 2973.5076 L1327.9357 2989.0308 L1330.9374 3004.3113 L1404.1639 3275.9639 L1407.5632 3290.6909 L1412.1721 3304.8933 L1423.5769 3348.5"
+ clip-path="url(#clipPath2)"
+ id="path9708" />
+ <path
+ fill="none"
+ d="M1526.5193 2339 L1665.6112 2212.7002 L1689.0184 2194.4897 L1701.7162 2186.1914 L1714.7228 2178.7192 L1869.8474 2109.8154 L1882.8911 2102.8474 L1895.4789 2095.4939 L2044.3569 1999"
+ clip-path="url(#clipPath2)"
+ id="path9710" />
+ <path
+ fill="none"
+ d="M1496.996 2369 L1385.6895 2497.3909 L1376.2972 2507.3276 L1322.2389 2568.2527 L1304.2604 2589.7803 L1125.6952 2852.5"
+ clip-path="url(#clipPath2)"
+ id="path9712" />
+ <path
+ fill="none"
+ d="M1510.8751 2339 L1524.2369 2109.9836 L1527.4911 2077.0388 L1530.6801 2060.7397 L1536.7727 2044.8093 L1587.699 1945.4836 L1600.6235 1915.0745 L1605.15 1898.5553 L1608.6882 1882.624 L1654.8674 1619.5"
+ clip-path="url(#clipPath2)"
+ id="path9714" />
+ <path
+ fill="none"
+ d="M1492 2339 L1231 2121.5"
+ clip-path="url(#clipPath2)"
+ id="path9716" />
+ <path
+ fill="none"
+ d="M1511.2671 2369 L1511.5583 2372.4485 L1512.4863 2390.939 L1532.1252 2653.0818 L1532.3657 2673.238 L1530.3511 2693.1304 L1483.7687 2945.5"
+ clip-path="url(#clipPath2)"
+ id="path9718" />
+ <path
+ fill="none"
+ d="M1519.9977 2339 L1653.2191 2139.1204 L1662.4175 2124.3665 L1670.4188 2108.1663 L1675.7124 2091.2019 L1696.2084 1972.2346 L1700.4777 1954.8425 L1732.6132 1855.5861 L1738.5227 1839.8522 L1743.5808 1823.199 L1800.3926 1658.3755 L1806.9249 1641.4769 L1814.4071 1624.5726 L1823.2809 1608.1635 L1833.8232 1592.6519 L1845.3483 1578.3093 L1857.2207 1564.7336 L1881.5801 1538.2433 L1893.6631 1525.9165 L2062.9272 1345.5"
+ clip-path="url(#clipPath2)"
+ id="path9720" />
+ <path
+ fill="none"
+ d="M1536.2448 2369 L1700.8926 2463.1035 L1716.5065 2470.6301 L1732.8228 2476.7573 L1749.6938 2481.2634 L1766.9144 2483.8633 L1784.0165 2484.6411 L1801.1552 2483.6919 L1817.9308 2480.7009 L1834.475 2476.1997 L1850.3604 2470.1069 L1879.984 2456.0632 L2178.4429 2296.5"
+ clip-path="url(#clipPath2)"
+ id="path9722" />
+ <path
+ fill="none"
+ d="M1522.908 2339 L1805.592 2010.5"
+ clip-path="url(#clipPath2)"
+ id="path9724" />
+ <path
+ fill="none"
+ d="M1526.6202 2339 L1669.4025 2210.1367 L1681.7156 2200.2549 L1694.8494 2191.0376 L1708.5754 2182.6992 L1736.0583 2168.71 L1856.1318 2115.9321 L1869.5493 2109.1848 L1882.8529 2101.687 L1895.3044 2092.6658 L1906.7675 2082.3103 L1916.951 2070.5432 L1925.2897 2057.9207 L1932.2095 2044.2831 L1937.395 2029.8201 L1941.0835 2014.8721 L1942.8657 1999.6416 L1944.0657 1984.2588 L1945.8129 1968.6353 L1949.1118 1952.8204 L1954.0919 1937.6868 L1961.2629 1923.1643 L1970.3491 1909.4205 L1981.2208 1896.7792 L1993.2787 1884.9609 L2081.2905 1807.6135 L2253.324 1643"
+ clip-path="url(#clipPath2)"
+ id="path9726" />
+ <path
+ fill="none"
+ d="M1475.3552 2339 L1375.7992 2295.8955 L1325.3004 2275.6824 L1307.8301 2269.3855 L1289.7203 2263.9866 L1271.4009 2260.2725 L1201.3519 2250.1917 L1183.7898 2246.8469 L1166.7448 2241.9495 L1150.2572 2235.1619 L1134.9137 2226.417 L1120.8173 2216.0547 L1108.2313 2204.0881 L1097.0183 2190.8472 L1086.9922 2176.9243 L1051.8983 2121.3184 L1042.0785 2107.6038 L1031.0328 2094.5808 L1018.9379 2082.5935 L981.7686 2049.2241 L968.8684 2038.6184 L956.4572 2027.4056 L788.5068 1887.5"
+ clip-path="url(#clipPath2)"
+ id="path9728" />
+ <path
+ fill="none"
+ d="M1504.9901 2339 L1366.5494 1924.4966 L1362.4882 1908.5767 L1359.8616 1892.2843 L1359.1125 1875.623 L1360.5317 1859.0786 L1364.2106 1843.1631 L1369.8442 1827.4664 L1377.5298 1813.0808 L1386.8759 1799.7292 L1397.203 1787.4834 L1418.8458 1765.0261 L1472.7761 1711.0153 L1482.7151 1699.1749 L1491.9009 1685.959 L1499.3961 1671.5507 L1505.2434 1656.2231 L1508.5443 1640.9038 L1510.1094 1624.6781 L1509.5914 1608.5144 L1507.2157 1592.4027 L1503.3352 1577.2427 L1414.2556 1323"
+ clip-path="url(#clipPath2)"
+ id="path9730" />
+ <path
+ fill="none"
+ d="M1510.9319 2339 L1526.4713 2088.8757 L1528.2183 2072.9792 L1531.8409 2057.2632 L1537.6543 2042.4523 L1544.4132 2028.5757 L1585.9958 1949.0065 L1592.6586 1935.08 L1598.5482 1920.4163 L1603.2426 1905.4922 L1605.3632 1889.2352 L1606.0835 1873.2714 L1604.3267 1857.3202 L1600.7614 1841.5823 L1590.5676 1811.7375 L1532.8832 1669.7617 L1527.2454 1654.2057 L1522.8604 1638.2473 L1519.7045 1621.5173 L1518.6511 1604.515 L1519.7151 1587.4683 L1522.7896 1570.5966 L1527.3335 1554.9121 L1533.6583 1539.2854 L1561.9587 1481.5208 L1599.4431 1410.3932 L1606.4193 1395.9069 L1755.7795 1107.7368 L1762.8444 1092.5857 L1769.0634 1076.776 L1774.2321 1060.2958 L1777.7761 1043.705 L1779.5951 1026.4392 L1780.0076 1009.2284 L1773.9335 912.5138 L1713.5631 108.591 L1711.499 94.9959 L1708.3801 80.2525 L1703.2778 66.8524 L1697.6584 54.3873 L1673.673 8.0907 L1662.9922 -15.4828 L1658.6643 -27.8628 L1656.0237 -41.0869 L1655.9708 -54.2819 L1658.2432 -67.2466 L1662.6152 -79.6855 L1667.8322 -91.0654 L1722.6837 -190"
+ clip-path="url(#clipPath2)"
+ id="path9732" />
+ <path
+ fill="none"
+ d="M420.7189 353.5 L698.7811 440"
+ clip-path="url(#clipPath2)"
+ id="path9734" />
+ <path
+ fill="none"
+ d="M373.8378 323.5 L418.1622 -173.5"
+ clip-path="url(#clipPath2)"
+ id="path9736" />
+ <path
+ fill="none"
+ d="M371.2291 353.5 L335.7709 772"
+ clip-path="url(#clipPath2)"
+ id="path9738" />
+ <path
+ fill="none"
+ d="M342.7771 353.5 L-26.7771 540"
+ clip-path="url(#clipPath2)"
+ id="path9740" />
+ <path
+ fill="none"
+ d="M331.5783 323.5 L-178.5783 136.5"
+ clip-path="url(#clipPath2)"
+ id="path9742" />
+ <path
+ fill="none"
+ d="M391.3014 323.5 L719.6986 61.5"
+ clip-path="url(#clipPath2)"
+ id="path9744" />
+ <path
+ fill="none"
+ d="M-143.4475 -261 L-156.0525 -683.5"
+ clip-path="url(#clipPath2)"
+ id="path9746" />
+ <path
+ fill="none"
+ d="M-127.6443 -231 L208.6443 97.5"
+ clip-path="url(#clipPath2)"
+ id="path9748" />
+ <path
+ fill="none"
+ d="M-27.0049 2068 L-83.2198 2161.6406 L-90.3236 2174.7258 L-96.6365 2188.5735 L-101.5907 2203.1204 L-105.1204 2217.9927 L-107.1567 2232.9121 L-108.6474 2262.2935 L-107.5751 2476.5"
+ clip-path="url(#clipPath2)"
+ id="path9750" />
+ <path
+ fill="none"
+ d="M-3.3147 2038 L88.2079 1944.5159 L98.9239 1931.85 L108.6347 1917.8579 L115.9706 1901.8237 L121.2358 1885.2582 L124.3123 1867.311 L143.2395 1494"
+ clip-path="url(#clipPath2)"
+ id="path9752" />
+ <path
+ fill="none"
+ d="M-24.6663 2038 L-80.8903 1911.4879 L-85.1263 1899.4636 L-88.5606 1887.0404 L-90.5707 1874.1945 L-91.1801 1861.1097 L-90.1218 1848.1241 L-87.5325 1835.3932 L-83.6841 1822.7667 L-72.56 1799.5031 L-53.9055 1768.1414 L-19.3229 1712.5"
+ clip-path="url(#clipPath2)"
+ id="path9754" />
+ <path
+ fill="none"
+ d="M1596.9543 2095.5 L1515.0457 2339"
+ clip-path="url(#clipPath2)"
+ id="path9756" />
+ <path
+ fill="none"
+ d="M1662.748 2092.5029 L1764.6105 2112.6294 L1782.9017 2115.6848 L1801.8885 2118.3333 L1821.3508 2119.7209 L1840.4524 2120.2183 L1858.9543 2119.3088 L1877.6461 2119.5857 L2183.1145 2112.4343 L2200.6819 2112.6753 L2218.771 2113.5925 L2236.468 2115.9619 L2253.6194 2120.0029 L2270.5688 2125.4739 L2286.7974 2131.6306 L2458.6768 2209"
+ clip-path="url(#clipPath2)"
+ id="path9758" />
+ <path
+ fill="none"
+ d="M1602.3943 2065.5 L1606.7793 1898.7041 L1606.4932 1881.5487 L1605.2306 1864.0957 L1601.9255 1846.7361 L1596.955 1829.9541 L1591.1913 1813.7092 L1533.9847 1674.6245 L1527.9525 1658.2727 L1522.3416 1641.5908 L1503.7571 1574.8905 L1420.4307 1339.3589 L1414.5142 1324.3173 L1414.069 1323"
+ clip-path="url(#clipPath2)"
+ id="path9760" />
+ <path
+ fill="none"
+ d="M1603.0338 2095.5 L1619.5222 2334.7439 L1619.976 2349.6047 L1619.3141 2364.5964 L1616.8829 2379.4578 L1612.6283 2393.7292 L1606.6503 2407.0378 L1599.2849 2419.5703 L1533.5831 2509.7273 L1499.2429 2554.429 L1489.8187 2565.7656 L1418.298 2653"
+ clip-path="url(#clipPath2)"
+ id="path9762" />
+ <path
+ fill="none"
+ d="M1603.1926 2095.5 L1621.6029 2327.0608 L1624.4425 2347.2661 L1628.7183 2366.9514 L1635.0629 2385.7578 L1643.6881 2403.5862 L1654.035 2420.3408 L1665.6207 2435.8164 L1758.1301 2550.2654 L1769.3726 2565.7361 L1779.1656 2582.3586 L1787.2401 2599.9016 L1814.0522 2669.9602 L1822.2802 2687.2004 L1928.8368 2883"
+ clip-path="url(#clipPath2)"
+ id="path9764" />
+ <path
+ fill="none"
+ d="M1588.7958 2095.5 L1440.1951 2264.3108 L1421.9424 2287.5852 L1413.851 2300.9641 L1407.3724 2315.2051 L1402.7751 2330.5364 L1400.0977 2346.2444 L1394.8491 2410.0798 L1391.8948 2426.9863 L1386.8583 2443.4583 L1380.0405 2459.543 L1371.4266 2474.8496 L1352.7933 2504.1155 L1264.7759 2637.0266 L1255.2261 2652.488 L1155.7711 2805.2529 L1146.0284 2821.1672 L1135.6465 2836.3376 L1125.1975 2852.5"
+ clip-path="url(#clipPath2)"
+ id="path9766" />
+ <path
+ fill="none"
+ d="M1585.7421 2095.5 L1275.7579 2381.5"
+ clip-path="url(#clipPath2)"
+ id="path9768" />
+ <path
+ fill="none"
+ d="M1603.1949 2095.5 L1622.4318 2336.9685 L1624.5369 2352.1443 L1628.201 2367.3962 L1632.8905 2381.77 L1638.9683 2395.7341 L1646.1216 2408.7371 L1654.6532 2421.2065 L1664.1459 2432.8657 L1674.5833 2443.5085 L1686.1106 2453.272 L1697.5612 2462.1409 L1912.3665 2604.5"
+ clip-path="url(#clipPath2)"
+ id="path9770" />
+ <path
+ fill="none"
+ d="M1603.7489 2065.5 L1655.7511 1619.5"
+ clip-path="url(#clipPath2)"
+ id="path9772" />
+ <path
+ fill="none"
+ d="M1593.1482 2065.5 L1491.3518 1893"
+ clip-path="url(#clipPath2)"
+ id="path9774" />
+ <path
+ fill="none"
+ d="M1603.0256 2095.5 L1619.4376 2335.5383 L1619.8356 2352.4175 L1618.8832 2369.4175 L1615.4667 2385.9312 L1610.9801 2401.5234 L1549.5068 2578.6951 L1544.7748 2594.0952 L1540.5493 2610.1763 L1538.3051 2626.9604 L1537.8387 2643.7305 L1539.5312 2660.8184 L1543.3848 2677.5637 L1548.2743 2693.5508 L1620.949 2887.3188 L1626.1494 2902.9475 L1630.7904 2919.1487 L1634.1757 2935.949 L1635.9564 2952.8755 L1635.8079 2970.0298 L1633.827 2987.1138 L1630.0143 3003.8672 L1624.4489 3020.2371 L1617.4717 3036.0044 L1609.7772 3051.0796 L1436.2516 3348.5"
+ clip-path="url(#clipPath2)"
+ id="path9776" />
+ <path
+ fill="none"
+ d="M1570.7225 2095.5 L1288.5803 2230.8096 L1274.9982 2236.7656 L1260.8542 2242.2251 L1246.2103 2246.6372 L982.4409 2300.4243 L953.6058 2304.5635 L924.563 2305.3845 L792.7412 2303.3887"
+ clip-path="url(#clipPath2)"
+ id="path9778" />
+ <path
+ fill="none"
+ d="M1603.1537 2095.5 L1620.8918 2326.1306 L1625.1042 2362.6926 L1662.8341 2624"
+ clip-path="url(#clipPath2)"
+ id="path9780" />
+ <path
+ fill="none"
+ d="M1541.252 2084.5603 L1343.7324 2097.7622"
+ clip-path="url(#clipPath2)"
+ id="path9782" />
+ <path
+ fill="none"
+ d="M1640.2059 2065.5 L1780.2941 2010.5"
+ clip-path="url(#clipPath2)"
+ id="path9784" />
+ <path
+ fill="none"
+ d="M1572.6794 2065.5 L1434.8101 1994.9679 L1106.5612 1794.5"
+ clip-path="url(#clipPath2)"
+ id="path9786" />
+ <path
+ fill="none"
+ d="M1603.0039 2095.5 L1619.616 2343.7134 L1619.334 2362.2961 L1616.5592 2380.8618 L1611.7566 2398.3032 L1606.5804 2414.9185 L1549.1158 2579.8984 L1544.0386 2597.4407 L1539.7373 2615.8103 L1536.9749 2634.4294 L1533.7061 2671.905 L1531.5634 2690.6077 L1483.8102 2945.5"
+ clip-path="url(#clipPath2)"
+ id="path9788" />
+ <path
+ fill="none"
+ d="M1662.748 2092.4651 L1780.0096 2115.5613 L1796.447 2117.708 L1813.3804 2119.1421 L1830.0333 2118.6409 L1846.8956 2115.9663 L1862.7615 2110.9902 L1877.9795 2104.4839 L1905.5245 2089.0781 L2044.3778 1999"
+ clip-path="url(#clipPath2)"
+ id="path9790" />
+ <path
+ fill="none"
+ d="M1612.9232 2065.5 L1705.944 1937.7614 L1717.1481 1923.3706 L1729.4146 1909.6766 L1743.266 1897.5363 L1758.9332 1887.454 L1775.6699 1879.6144 L1793.1348 1874.4734 L1811.5116 1871.0072 L1970.6 1855.2622 L1988.6428 1852.0848 L2006.829 1847.8024 L2024.3502 1841.5553 L2040.8623 1833.4706 L2056.6687 1823.6088 L2070.9719 1812.4393 L2084.522 1800.8351 L2252.9895 1643"
+ clip-path="url(#clipPath2)"
+ id="path9792" />
+ <path
+ fill="none"
+ d="M1613.0736 2095.5 L1771.4264 2310"
+ clip-path="url(#clipPath2)"
+ id="path9794" />
+ <path
+ fill="none"
+ d="M1639.7083 2095.5 L1842.3861 2176.1233 L1859.5131 2185.2539 L1876.282 2195.9019 L1891.6011 2208.3118 L1905.634 2221.8408 L1931.1401 2250.0837 L2260.4797 2629.5"
+ clip-path="url(#clipPath2)"
+ id="path9796" />
+ <path
+ fill="none"
+ d="M1647.1119 2095.5 L2161.3879 2266.5"
+ clip-path="url(#clipPath2)"
+ id="path9798" />
+ <path
+ fill="none"
+ d="M1603.1909 2095.5 L1621.691 2328.5208 L1623.5604 2343.7834 L1626.24 2359.3225 L1630.3749 2374.5793 L1636.0944 2389.2988 L1642.9762 2403.4038 L1651.1168 2416.8372 L1660.1671 2429.6006 L1758.1458 2550.04 L1768.1744 2563.7002 L1777.2103 2578.6135 L1784.3627 2594.6853 L1789.4128 2611.853 L1791.9921 2629.5588 L1793.291 2647.2483 L1792.9524 2895.9575 L1795.2501 2933.1309 L1824.1862 3263.5"
+ clip-path="url(#clipPath2)"
+ id="path9800" />
+ <path
+ fill="none"
+ d="M1603.203 2095.5 L1621.8832 2328.4165 L1624.0609 2345.5154 L1627.2642 2362.4485 L1632.0743 2378.8948 L1638.6213 2394.3691 L1646.8019 2409.1277 L1656.0619 2422.8191 L1667.0085 2435.4368 L1679.0601 2446.8408 L1692.3024 2456.9438 L1706.4554 2465.6316 L1721.5145 2472.658 L1737.2064 2478.3113 L1753.2076 2482.2488 L1769.3447 2484.6384 L1785.3156 2486.0251 L1800.7511 2486.7747 L1920.0581 2487.4966 L1935.141 2488.1736 L1950.616 2489.679 L1966.2471 2492.644 L1980.7709 2497.282 L1994.8182 2503.7949 L2008.2539 2511.574 L2020.3892 2520.8616 L2031.2859 2531.5286 L2040.8636 2543.397 L2049.1069 2556.0459 L2055.8984 2570.1116 L2060.9514 2584.1262 L2065.0398 2598.769 L2071.573 2626.8027 L2083.4851 2682.906 L2087.3142 2697.304 L2091.7251 2711.4783 L2232.8469 3055.5"
+ clip-path="url(#clipPath2)"
+ id="path9802" />
+ <path
+ fill="none"
+ d="M1555.4919 2065.5 L1263.2942 1971.259 L1245.3774 1966.6671 L1226.5901 1963.6918 L1207.9307 1962.2289 L1171.8567 1961.0642 L1081.4442 1960.0654 L1062.9497 1958.3174 L1044.2203 1954.9642 L1025.8896 1950.8408 L819.3997 1887.5"
+ clip-path="url(#clipPath2)"
+ id="path9804" />
+ <path
+ fill="none"
+ d="M1608.9635 2065.5 L1809.4962 1633.5309 L1818.6376 1616.1558 L1829.1941 1599.274 L1841.2507 1583.3263 L2063.0132 1345.5"
+ clip-path="url(#clipPath2)"
+ id="path9806" />
+ <path
+ fill="none"
+ d="M1602.3933 2065.5 L1606.7363 1899.8634 L1606.4586 1882.6648 L1605.2378 1865.1937 L1602.3794 1848.0233 L1597.3771 1831.3533 L1585.6033 1799.6447 L1528.9104 1659.5087 L1523.7875 1642.5001 L1520.1628 1624.7736 L1518.6923 1606.78 L1519.3666 1588.6658 L1521.3606 1571.0901 L1615.3744 1034"
+ clip-path="url(#clipPath2)"
+ id="path9808" />
+ <path
+ fill="none"
+ d="M1571.2109 2095.5 L1261.994 2246.146 L1219.6743 2264.4104 L1205.4592 2271.2598 L1191.7346 2278.4478 L1178.4591 2287.1375 L1166.1311 2296.8726 L1154.6273 2306.9568 L1013.2023 2446.5"
+ clip-path="url(#clipPath2)"
+ id="path9810" />
+ <path
+ fill="none"
+ d="M1612.9133 2065.5 L1708.3259 1934.3589 L1718.8427 1921.1146 L1730.2498 1907.9574 L1742.2875 1895.532 L1945.3046 1707.5"
+ clip-path="url(#clipPath2)"
+ id="path9812" />
+ <path
+ fill="none"
+ d="M1572.9703 2065.5 L1444.6885 1999.2152 L1429.064 1990.3815 L1413.6222 1980.5148 L1399.3938 1969.1509 L1386.8495 1955.9407 L1376.3173 1941.3074 L1367.1516 1926.2937 L1215.7188 1635.2328 L1131.2916 1482.5"
+ clip-path="url(#clipPath2)"
+ id="path9814" />
+ <path
+ fill="none"
+ d="M1602.3855 2065.5 L1606.9542 1887.743 L1606 1869.5469 L1602.9114 1851.5056 L1597.8892 1834.3082 L1590.2271 1818.0243 L1580.5396 1803.0505 L1569.3032 1789.5634 L1544.9924 1765.5038 L1403.4001 1636"
+ clip-path="url(#clipPath2)"
+ id="path9816" />
+ <path
+ fill="none"
+ d="M1662.748 2092.4412 L1766.4723 2112.8303 L1800.2173 2118.0352 L1817.9073 2119.0618 L1835.2128 2118.0942 L1852.0842 2114.189 L1868.7249 2108.4495 L1883.6569 2100.4832 L1897.4779 2090.6223 L1909.8057 2078.9834 L1920.2412 2065.7119 L1928.7743 2051.3101 L1935.4041 2035.9259 L1939.7797 2019.7667 L1942.3596 2003.6836 L1945.6359 1971.5028 L1948.5076 1955.5732 L1953.2712 1940.0039 L1959.8096 1925.6807 L1968.1327 1912.3596 L1978.111 1900.3622 L1989.2583 1889.7343 L2001.7524 1880.6145 L2015.2451 1873.4164 L2029.7437 1867.4449 L2044.5986 1863.3865 L2059.4072 1860.6979 L2116.5818 1854.9585 L2130.5618 1854.0964 L2427.3464 1831.3152"
+ clip-path="url(#clipPath2)"
+ id="path9818" />
+ <path
+ fill="none"
+ d="M1602.395 2065.5 L1606.7798 1898.9805 L1606.3993 1880.6311 L1604.8654 1862.1401 L1601.0284 1844.0854 L1594.6597 1826.991 L1585.889 1810.8241 L1574.9169 1796.2695 L1561.8469 1783.6718 L1547.1339 1773.0948 L1530.927 1764.6783 L1514.0385 1758.6746 L1496.0397 1755.1381 L1478.5284 1752.9952 L1377.3137 1744.3647 L1359.9923 1741.0127 L1343.1707 1736.0409 L1327.205 1728.5714 L1312.6506 1718.9408 L1299.2815 1707.3992 L1288.0135 1694.0232 L1278.6018 1679.4884 L1271.3124 1663.254 L1266.2087 1646.291 L1263.3679 1629.0929 L1251.9883 1463.8362 L1249.3915 1446.7079 L1245.1688 1429.4218 L1239.0171 1412.9744 L1231.691 1397.4093 L1158.1884 1265.8065 L1149.532 1251.7174 L1075.525 1121.5"
+ clip-path="url(#clipPath2)"
+ id="path9820" />
+ <path
+ fill="none"
+ d="M1571.1819 2095.5 L1270.4301 2241.884 L1209.0909 2269.5261 L1193.9401 2277.4502 L1179.7173 2286.9822 L1166.2568 2298.0002 L1154.4349 2310.5815 L1144.4984 2324.4265 L1136.3844 2339.6184 L1130.1035 2355.6626 L1125.9659 2372.5798 L1123.5559 2389.3396 L1122.2933 2406.2454 L1120.1442 2455.5945 L1118.5703 2472.6367 L1115.6298 2489.781 L1110.2885 2506.1963 L1102.5222 2521.7383 L1093.292 2536.2493 L1081.7872 2549.6086 L1057.8158 2573.1782 L813.2117 2799.5"
+ clip-path="url(#clipPath2)"
+ id="path9822" />
+ <path
+ fill="none"
+ d="M1570.7183 2095.5 L1288.796 2230.6855 L1274.8589 2236.5764 L1260.1879 2242.116 L1245.0063 2246.1299 L1229.2333 2248.7217 L1213.7101 2249.8647 L1198.0498 2249.1724 L1182.5889 2247.0691 L1153.3807 2240.5171 L996.3959 2196"
+ clip-path="url(#clipPath2)"
+ id="path9824" />
+ </g>
+ </g>
+</svg>