Initial revision

This commit is contained in:
Sylvain Pion 2001-01-05 14:12:06 +00:00
parent 8db8083b67
commit 7198a876b9
25 changed files with 2114 additions and 0 deletions

3
.gitattributes vendored
View File

@ -1,4 +1,7 @@
* text=auto !eol
Extension_Packages/Vanilla/doc/cgal-bg2.gif -text svneol=unset#unset
Extension_Packages/Vanilla/doc/cgal_small.gif -text svneol=unset#unset
Extension_Packages/Vanilla/doc/vanilla.ps -text
Old_Packages/Doc23/doc_tex/kernel/IsoCuboid.gif svneol=native#unset
Old_Packages/Doc23/doc_tex/kernel/arrlinthree.gif svneol=native#unset
Old_Packages/Doc23/doc_tex/kernel/arrlintwo.gif svneol=native#unset

View File

@ -0,0 +1,33 @@
#----------------------------------------------------------
# INSTALLATION for Vanilla CGAL Extension Package
#----------------------------------------------------------
Edit the makefile in this directory as follows:
(1) Set the value of CGAL_MAKEFILE to the location of the
proper makefile for the desired platform and compiler
if this environment variable is not set. (NOTE: It is
better to set this as an environment variable since the
cep_test script requires this.)
(2) Set the value of CGAL_HOME to the root directory for the
local CGAL installation or establish an environment variable
with the appropriate value.
(3) If you would like to use a program other than 'cp' to install
the extension package (e.g., the 'install') program, change
the values of INSTALL and INSTALL_FLAGS
Compile the library type
% make
Install the library with
% make install
This will install the header files for the package in the directory
$(CGAL_HOME)/include/CEP/Vanilla, creating directories that don't
exist. The libVanill.a library will be installed in
$(CGAL_HOME)/lib/$(CGAL_OS_COMPILER), where $(CGAL_OS_COMPILER) is
the variable set in the CGAL_MAKEFILE indicating the desired platform-
compiler combination.

View File

@ -0,0 +1,79 @@
Package Name: Vanilla
Authors: Irene <irene@cgal.org>
Address: Curvy Street
10110 Flatland, Mars
URL: http://www.cgal.org/CEP/packages/Vanilla/
Version: 1.1 (9 Sept 1999)
CGAL Versions: 2.0 and greater
Supported Compilers & Platforms:
SunOS-5.7_eg++-egcs-2.91.66_LEDA
SunOS-5.7_g++-2.95.2_LEDA
IRIX64-6.5_CC-n32-7.3.1.1m_LEDA
IRIX64-6.5_CC-64-7.3.1.1m_LEDA
Purpose:
This package is an example of a CEP.
Description:
Distributed with this package are the following things:
README -- this file
INSTALLATION -- file describing more details about package installation
doc/ -- directory containing the package documentation in
postscript and HTML format
cep_test -- shell script for running the test suite
include/ -- directory containing the Vanilla header files
lib/ -- directory that will contain libVanill.a
makefile -- used to compile the libVanill.a and install the library
and header files
src/ -- directory containing source code for the Vanilla
library
test_suite/ -- directory containing the test suite source code,
input and output files
This package provides a templated class that allows one to create
different flavors (e.g. vanilla, chocolate, ...) of geometric objects.
This is useful, for example, when ...
Changes:
1.1 fixed bugs that didn't allow fruity flavors
1.0 initial release
Installation:
The command 'make install' may be used to install the Vanilla header
files and the library libVanill.a.
For further information on the installation process, see the
INSTALLATION file in this directory.
Documentation:
Package documentation is provided in postscript and HTML format in
the subdirectory doc.
Tested items:
The package provides the following functions and algorithms:
...
All functions and constructors have been tested.
Testing process:
First, every function and constructor is called in isolation. Then, the
"flavor enhancement" algorithm is tested first with a random set of input
points that contains degeneracies, and then with a input provided in
an input file, for which the output is known. The output of the algorithm
with the data provided in the input file is compared with the correct
output provided in an output file.
Hardware & Software requirements:
The software requires at least 16 Mbytes of memory.
Constraints:
The package works with the configuration SunOS-5.6_g++-2.95.1_LEDA
only after some patches for the library have been installed.

View File

@ -0,0 +1,75 @@
#! /bin/sh
# This is a script for running the Vanilla test suite.
#
# This script assumes that the CGAL_MAKEFILE environment variable is set
#---------------------------------------------------------------------#
# compile_and_run <target>
#---------------------------------------------------------------------#
compile_and_run()
{
echo "Compiling $1 ... "
if eval 'make CGAL_MAKEFILE=$CGAL_MAKEFILE $1'; then
echo " compilation of $1 succeeded"
else
echo " ERROR: compilation of $1 failed"
exit 1
fi
if [ -f $1 ] ; then
OUTPUTFILE=$1.out
rm -f $OUTPUTFILE
COMMAND="./$1"
#
# check for a .cmd file that contains command-line arguments for the program
#
if [ -f $1.cmd ] ; then
COMMAND="$COMMAND `cat $1.cmd`"
fi
#
# check for a .cin file that contains input to be provided to the program
#
if [ -f $1.cin ] ; then
COMMAND="cat $1.cin | $COMMAND"
fi
echo "Executing $1 ... "
echo
if eval 2>&1 $COMMAND > $OUTPUTFILE ; then
echo " execution of $1 succeeded"
else
echo " ERROR: execution of $1 failed"
exit 1
fi
else
echo " ERROR: could not execute $1"
exit 1
fi
eval "2>&1 make CGAL_MAKEFILE=$CGAL_MAKEFILE clean > /dev/null "
}
#---------------------------------------------------------------------#
# compile libVanill.a if it doesn't exist
#---------------------------------------------------------------------#
if [ ! -f lib/libVanill.a ]; then
make CGAL_MAKEFILE=$CGAL_MAKEFILE
fi
#---------------------------------------------------------------------#
# compile and run the tests
#---------------------------------------------------------------------#
cd test_suite
if [ $# -ne 0 ] ; then
for file in $* ; do
compile_and_run $file
done
else
compile_and_run vanilla_test1
compile_and_run vanilla_test2
compile_and_run vanilla_test3
fi

View File

@ -0,0 +1,176 @@
<!-- Begin of cc_manual_header -->
<!-- ------------------------- -->
<!-- $Revision$ -->
<!-- $Date$ -->
<!-- CC manual page automatically extracted from a TeX specification -->
<!-- in file main.html -->
<!-- by cc_extract_html, $Revision$. -->
<!-- Title -->
<HEAD>
<TITLE>Vanilla: A CEP Example: </TITLE>
</HEAD>
<!-- Background layout-->
<BODY BGCOLOR="FAF8E8" TEXT="#000000">
<!-- Navigation -->
<STRONG>Navigation:</STRONG>
<A HREF="main.html">Up</A>,
<A HREF="contents.html">Table of Contents</A>,
<A HREF="biblio.html">Bibliography</A>,
<A HREF="manual_index.html">Index</A>,
<A HREF="title.html">Title Page</A>
<HR>
<!-- End of cc_manual_header -->
<A NAME="Cross_link_anchor_0"></A>
<A NAME="Index_anchor_0"></A>
<H2>Class&nbsp;<I>Flavored_object&lt;O&gt;</I></H2>
<A NAME="ccRef_Flavored_object<O>"></A>
<A NAME="pageFlavoredObject"></A>
<P>
<H3>Definition</H3>
<P>
The class <I><A HREF="Class_Flavored_object.html#Cross_link_anchor_0">Flavored_object</A>&lt;O&gt;</I> is a templated class that is
derived from the class of its template argument. It adds a
flavor to the object and provides member functions for flavor
enhancement and for checking the validity of the flavor, as
well as functions for setting and retrieving the flavor of
the object.
<P>
<I>#include &lt;<A HREF="../include/CEP/Vanilla/Flavored_object.h">CEP/Vanilla/Flavored_object.h</A>&gt;</I>
<P>
<H3>Creation</H3>
<P>
<TABLE BORDER=0 CELLSPACING=2 CELLPADDING=0 WIDTH=650>
<TR><TD ALIGN=LEFT VALIGN=TOP WIDTH=100% NOWRAP COLSPAN=2>
<I><NOBR>
<A HREF="Class_Flavored_object.html#Cross_link_anchor_0">Flavored_object</A>&lt;O&gt; fo;
</I></NOBR>
</TD></TR><TR><TD WIDTH=30% NOWRAP></TD><TD ALIGN=LEFT VALIGN=TOP WIDTH=70%>
an unflavored empty object <I>fo</I>
<P>
</TD></TR>
<TR><TD><BR></TD></TR>
<TR><TD ALIGN=LEFT VALIGN=TOP WIDTH=100% NOWRAP COLSPAN=2>
<I><NOBR>
<A HREF="Class_Flavored_object.html#Cross_link_anchor_0">Flavored_object</A>&lt;O&gt; fo ( <A HREF="main.html#Enum_Flavor">Flavor</A> f);
</I></NOBR>
</TD></TR><TR><TD WIDTH=30% NOWRAP></TD><TD ALIGN=LEFT VALIGN=TOP WIDTH=70%>
<I>fo</I> is an empty object with flavor <I>f</I>
<P>
</TD></TR>
<TR><TD><BR></TD></TR>
<TR><TD ALIGN=LEFT VALIGN=TOP WIDTH=100% NOWRAP COLSPAN=2>
<I><NOBR>
<A HREF="Class_Flavored_object.html#Cross_link_anchor_0">Flavored_object</A>&lt;O&gt; fo ( Object o);
</I></NOBR>
</TD></TR><TR><TD WIDTH=30% NOWRAP></TD><TD ALIGN=LEFT VALIGN=TOP WIDTH=70%>
<I>fo</I> is a <A HREF="main.html#Enum_Flavor">VANILLA</A> object with value <I>o</I>
<P>
</TD></TR>
<TR><TD><BR></TD></TR>
<TR><TD ALIGN=LEFT VALIGN=TOP WIDTH=100% NOWRAP COLSPAN=2>
<I><NOBR>
<A HREF="Class_Flavored_object.html#Cross_link_anchor_0">Flavored_object</A>&lt;O&gt; fo ( Object o, <A HREF="main.html#Enum_Flavor">Flavor</A> f);
</I></NOBR>
</TD></TR><TR><TD WIDTH=30% NOWRAP></TD><TD ALIGN=LEFT VALIGN=TOP WIDTH=70%>
<I>fo</I> is an object with value <I>o</I> and flavor <I>f</I>
<P>
</TD></TR>
</TABLE>
<P>
<H3>Operations</H3>
<P>
<TABLE BORDER=0 CELLSPACING=2 CELLPADDING=0 WIDTH=650>
<TR><TD ALIGN=LEFT VALIGN=TOP WIDTH=25% NOWRAP>
<I><NOBR>
void
</I></NOBR>
</TD><TD ALIGN=LEFT VALIGN=TOP WIDTH=75% NOWRAP COLSPAN=2>
<I><NOBR>
fo.set_flavor ( <A HREF="main.html#Enum_Flavor">Flavor</A> f)
</I></NOBR>
</TR><TR><TD WIDTH=25% NOWRAP></TD><TD WIDTH=25% NOWRAP></TD><TD ALIGN=LEFT VALIGN=TOP WIDTH=50%>
makes <I>fo</I> an object with flavor <I>f</I><BR>
<EM>Precondition: </EM><I>f</I> must be a valid flavor
</TD></TR>
<TR><TD><BR></TD></TR>
<TR><TD ALIGN=LEFT VALIGN=TOP WIDTH=25% NOWRAP>
<I><NOBR>
void
</I></NOBR>
</TD><TD ALIGN=LEFT VALIGN=TOP WIDTH=75% NOWRAP COLSPAN=2>
<I><NOBR>
fo.enhance_flavor ()
</I></NOBR>
</TR><TR><TD WIDTH=25% NOWRAP></TD><TD WIDTH=25% NOWRAP></TD><TD ALIGN=LEFT VALIGN=TOP WIDTH=50%>
enhances <I>fo</I>'s flavor
</TD></TR>
<TR><TD><BR></TD></TR>
<TR><TD ALIGN=LEFT VALIGN=TOP WIDTH=25% NOWRAP>
<I><NOBR>
bool
</I></NOBR>
</TD><TD ALIGN=LEFT VALIGN=TOP WIDTH=25% NOWRAP>
<I><NOBR>
fo.is_valid ()
</I></NOBR>
</TD><TD ALIGN=LEFT VALIGN=TOP WIDTH=50%>
determines if <I>fo</I>'s flavor is valid
</TD></TR>
<TR><TD><BR></TD></TR>
<TR><TD ALIGN=LEFT VALIGN=TOP WIDTH=25% NOWRAP>
<I><NOBR>
<A HREF="main.html#Enum_Flavor">Flavor</A>
</I></NOBR>
</TD><TD ALIGN=LEFT VALIGN=TOP WIDTH=25% NOWRAP>
<I><NOBR>
fo.flavor ()
</I></NOBR>
</TD><TD ALIGN=LEFT VALIGN=TOP WIDTH=50%>
retrieves <I>fo</I>'s flavor
</TD></TR>
</TABLE>
<P>
<!-- Begin of cc_manual_footer -->
<!-- ------------------------- -->
<!-- $Revision$ -->
<!-- $Date$ -->
<!-- Navigation -->
<HR>
<STRONG>Navigation:</STRONG>
<A HREF="main.html">Up</A>,
<A HREF="contents.html">Table of Contents</A>,
<A HREF="biblio.html">Bibliography</A>,
<A HREF="manual_index.html">Index</A>,
<A HREF="title.html">Title Page</A>
<HR>
<address>
Irene. Tue, September 14, 1999.
</address>
</BODY>
</HTML>
<!-- End of cc_manual_footer -->

View File

@ -0,0 +1,66 @@
<!-- Begin of cc_biblio_header -->
<!-- ------------------------- -->
<!-- $Revision$ -->
<!-- $Date$ -->
<!-- CC manual index automatically extracted from a -->
<!-- TeX specification by cc_extract_html, $Revision$. -->
<!-- Title -->
<HEAD>
<TITLE>Vanilla: A CEP Example: Bibliography</TITLE>
</HEAD>
<!-- Background layout-->
<BODY BGCOLOR="FAF8E8" TEXT="#000000">
<!-- Navigation -->
<STRONG>Navigation:</STRONG>
<A HREF="main.html">Up</A>,
<A HREF="contents.html">Table of Contents</A>,
<A HREF="biblio.html">Bibliography</A>,
<A HREF="manual_index.html">Index</A>,
<A HREF="title.html">Title Page</A>
<HR>
<!-- The Page Header -->
<H1>Vanilla: A CEP Example<BR> Bibliography</H1>
<HR>
<!-- Begin of the table of bibliography entries -->
<TABLE>
<!-- End of cc_biblio_header -->
<P>
<TR><TD ALIGN=LEFT VALIGN=TOP NOWRAP>
<A NAME="Biblio_i-fefp-99"></A><B>[Ire99]</B></TD>
<TD ALIGN=LEFT VALIGN=TOP>
Irene.
<I><A HREF="main.html#Enum_Flavor">Flavor</A> Enhancement for Fun and Profit</I>.
Morgan-Kaufmann, San Mateo, CA, 1999.
</TD></TR>
<!-- Begin of cc_biblio_footer -->
<!-- ------------------------- -->
<!-- $Revision$ -->
<!-- $Date$ -->
<!-- End of the table of biliography entries -->
</TABLE>
<!-- Navigation -->
<HR>
<STRONG>Navigation:</STRONG>
<A HREF="contents.html">Table of Contents</A>,
<A HREF="biblio.html">Bibliography</A>,
<A HREF="manual_index.html">Index</A>,
<A HREF="title.html">Title Page</A>
<HR>
<address>
Irene. Tue, September 14, 1999.
</address>
</BODY>
</HTML>
<!-- End of cc_biblio_footer -->

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -0,0 +1,63 @@
<!-- Begin of cc_toc_header -->
<!-- ---------------------- -->
<!-- $Revision$ -->
<!-- $Date$ -->
<!-- CC manual table-of-contents automatically extracted from a -->
<!-- TeX specification by cc_extract_html, $Revision$. -->
<!-- Title -->
<HEAD>
<TITLE>Vanilla: A CEP Example: Table of Contents</TITLE>
</HEAD>
<!-- Background layout-->
<BODY BGCOLOR="FAF8E8" TEXT="#000000">
<!-- Navigation -->
<STRONG>Navigation:</STRONG>
<A HREF="contents.html">Table of Contents</A>,
<A HREF="biblio.html">Bibliography</A>,
<A HREF="manual_index.html">Index</A>,
<A HREF="title.html">Title Page</A>
<HR>
<!-- The Page Header -->
<H1>Vanilla: A CEP Example<BR> Table of Contents</H1>
<HR>
<!-- Begin of the ordered list of contents entries -->
<OL>
<LI> <A HREF="title.html">Title Page</A>
<LI> <A HREF="contents.html">Table of Contents</A>
<!-- End of cc_toc_header -->
<UL><LI><A HREF="main.html#Section_1">Introduction</A></UL>
<UL><LI><A HREF="main.html#Section_2">Flavors and flavor enhancement</A></UL>
<UL><LI><A HREF="main.html#Section_3">Reference Pages for Vanilla CEP</A></UL>
<!-- Begin of cc_toc_footer -->
<!-- ---------------------- -->
<!-- $Revision$ -->
<!-- $Date$ -->
<!-- End of the ordered list of contents entries -->
<LI> <A HREF="biblio.html">Bibliography</A>
<LI> <A HREF="manual_index.html">Index</A>
</OL>
<!-- Navigation -->
<HR>
<STRONG>Navigation:</STRONG>
<A HREF="contents.html">Table of Contents</A>,
<A HREF="biblio.html">Bibliography</A>,
<A HREF="manual_index.html">Index</A>,
<A HREF="title.html">Title Page</A>
<HR>
<address>
Irene. Tue, September 14, 1999.
</address>
</BODY>
</HTML>
<!-- End of cc_toc_footer -->

View File

@ -0,0 +1,175 @@
<!-- Begin of cc_manual_header -->
<!-- ------------------------- -->
<!-- $Revision$ -->
<!-- $Date$ -->
<!-- CC manual page automatically extracted from a TeX specification -->
<!-- in file main.html -->
<!-- by cc_extract_html, $Revision$. -->
<!-- Title -->
<HEAD>
<TITLE>Vanilla: A CEP Example: </TITLE>
</HEAD>
<!-- Background layout-->
<BODY BGCOLOR="FAF8E8" TEXT="#000000">
<!-- Navigation -->
<STRONG>Navigation:</STRONG>
<A HREF="contents.html">Table of Contents</A>,
<A HREF="biblio.html">Bibliography</A>,
<A HREF="manual_index.html">Index</A>,
<A HREF="title.html">Title Page</A>
<HR>
<!-- End of cc_manual_header -->
<P>
<A NAME="Section_1"></A>
<H2>Introduction</H2>
<A NAME="sectionIntro"></A>
<P>
Flavored objects are known to be very useful in computational geometry,
especially in industrial applications.
This extension package allows one to create flavored objects and provides
an implementation of Irene's <A HREF="main.html#Enum_Flavor">Flavor</A> Enhancement algorithm
[<A HREF="biblio.html#Biblio_i-fefp-99">Ire99</A>] on these objects.
<P>
<A NAME="Section_2"></A>
<H2>Flavors and flavor enhancement</H2>
<P>
<I>#include &lt;<A HREF="../include/CEP/Vanilla/flavor.h">CEP/Vanilla/flavor.h</A>&gt;</I>
<P>
The following enumerated type is provided in the header file <TT>flavor.h</TT>
of the Vanilla package. The functions listed here are precompiled into
the library <TT>libVanill.a</TT> provided with the package.
<P>
<TABLE BORDER=0 CELLSPACING=2 CELLPADDING=0 WIDTH=650>
<TR><TD ALIGN=LEFT VALIGN=TOP WIDTH=100% NOWRAP COLSPAN=2>
<I><NOBR>
<A NAME="Enum_Flavor"></A>
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0><TR><TD ALIGN=LEFT VALIGN=TOP NOWRAP><I>
enum <A HREF="main.html#Enum_Flavor">Flavor</A> { </TD><TD ALIGN=LEFT VALIGN=TOP NOWRAP>
<A HREF="main.html#Enum_Flavor">VANILLA</A>,<BR>
<A HREF="main.html#Enum_Flavor">CHOCOLATE_CHIP</A>,<BR>
<A HREF="main.html#Enum_Flavor">MINT_CHOCOLATE_CHIP</A>,<BR>
<A HREF="main.html#Enum_Flavor">CHOCOLATE</A>,<BR>
<A HREF="main.html#Enum_Flavor">STRAWBERRY</A>,<BR>
<A HREF="main.html#Enum_Flavor">NEAPOLITAN</A>,<BR>
<A HREF="main.html#Enum_Flavor">PEACH</A>,<BR>
<A HREF="main.html#Enum_Flavor">ROCKY_ROAD</A>,<BR>
<A HREF="main.html#Enum_Flavor">PISTACHIO</A>};</TD></TR></TABLE>
</I></NOBR>
</TD></TR>
<P>
</TABLE>
<P>
<TABLE BORDER=0 CELLSPACING=2 CELLPADDING=0 WIDTH=650>
<TR><TD ALIGN=LEFT VALIGN=TOP WIDTH=25% NOWRAP>
<I><NOBR>
<A NAME="Function_bool_valid_flavor6Flavor_f9;"></A>
bool
</I></NOBR>
</TD><TD ALIGN=LEFT VALIGN=TOP WIDTH=75% NOWRAP COLSPAN=2>
<I><NOBR>
valid_flavor ( <A HREF="main.html#Enum_Flavor">Flavor</A> f)
</I></NOBR>
</TR><TR><TD WIDTH=25% NOWRAP></TD><TD WIDTH=25% NOWRAP></TD><TD ALIGN=LEFT VALIGN=TOP WIDTH=50%>
is <I>true</I> if <I>f</I> is a valid flavor and <I>false</I> otherwise.
</TD></TR>
<TR><TD><BR></TD></TR>
<TR><TD ALIGN=LEFT VALIGN=TOP WIDTH=25% NOWRAP>
<I><NOBR>
<A NAME="Function_Flavor_flavor_enhance6Flavor_f9;"></A>
<A HREF="main.html#Enum_Flavor">Flavor</A>
</I></NOBR>
</TD><TD ALIGN=LEFT VALIGN=TOP WIDTH=75% NOWRAP COLSPAN=2>
<I><NOBR>
flavor_enhance ( <A HREF="main.html#Enum_Flavor">Flavor</A> f)
</I></NOBR>
</TR><TR><TD WIDTH=25% NOWRAP></TD><TD WIDTH=25% NOWRAP></TD><TD ALIGN=LEFT VALIGN=TOP WIDTH=50%>
implements the <A HREF="main.html#Enum_Flavor">Flavor</A> Enhancement algorithm. The return value of
the function is the enhancement of flavor <I>f</I>.
</TD></TR>
<TR><TD><BR></TD></TR>
<TR><TD ALIGN=LEFT VALIGN=TOP WIDTH=25% NOWRAP>
<I><NOBR>
<A NAME="Function_ostream__operator666ostream__os+_Flavor_f9;"></A>
ostream&amp;
</I></NOBR>
</TD><TD ALIGN=LEFT VALIGN=TOP WIDTH=75% NOWRAP COLSPAN=2>
<I><NOBR>
ostream&amp; os &lt;&lt; <A HREF="main.html#Enum_Flavor">Flavor</A> f
</I></NOBR>
</TR><TR><TD WIDTH=25% NOWRAP></TD><TD WIDTH=25% NOWRAP></TD><TD ALIGN=LEFT VALIGN=TOP WIDTH=50%>
output insertion operator for flavors. Inserts the string associated
with the enumeration <I>f</I> into <I>os</I> and returns the modified
stream.
</TD></TR>
<TR><TD><BR></TD></TR>
<TR><TD ALIGN=LEFT VALIGN=TOP WIDTH=25% NOWRAP>
<I><NOBR>
<A NAME="Function_istream__operator996istream__is+_Flavor__f9;"></A>
istream&amp;
</I></NOBR>
</TD><TD ALIGN=LEFT VALIGN=TOP WIDTH=75% NOWRAP COLSPAN=2>
<I><NOBR>
istream&amp; is &gt;&gt; <A HREF="main.html#Enum_Flavor">Flavor</A>&amp; f
</I></NOBR>
</TR><TR><TD WIDTH=25% NOWRAP></TD><TD WIDTH=25% NOWRAP></TD><TD ALIGN=LEFT VALIGN=TOP WIDTH=50%>
input extraction operator for flavors. Extracts the next string from
<I>is</I> and converts it to the corresponding <A HREF="main.html#Enum_Flavor">Flavor</A> value. If the
string does not match any of the valid flavor names, the value of <I>f</I>
does not change and the stream <I>is</I> goes into failure state.
</TD></TR>
</TABLE>
<P>
<A NAME="Section_3"></A>
<H2>Reference Pages for Vanilla CEP</H2>
<P>
<UL><LI>
<A HREF="Class_Flavored_object.html"><I>Flavored_object&lt;O&gt;</I></A>.</UL>
<P>
<!-- Begin of cc_manual_footer -->
<!-- ------------------------- -->
<!-- $Revision$ -->
<!-- $Date$ -->
<!-- Navigation -->
<HR>
<STRONG>Navigation:</STRONG>
<A HREF="main.html">Up</A>,
<A HREF="contents.html">Table of Contents</A>,
<A HREF="biblio.html">Bibliography</A>,
<A HREF="manual_index.html">Index</A>,
<A HREF="title.html">Title Page</A>
<HR>
<address>
Irene. Tue, September 14, 1999.
</address>
</BODY>
</HTML>
<!-- End of cc_manual_footer -->

View File

@ -0,0 +1,106 @@
<!-- Begin of cc_index_header -->
<!-- ------------------------ -->
<!-- $Revision$ -->
<!-- $Date$ -->
<!-- CC manual index automatically extracted from a -->
<!-- TeX specification by cc_extract_html, $Revision$. -->
<!-- Title -->
<HEAD>
<TITLE>Vanilla: A CEP Example: Index</TITLE>
</HEAD>
<!-- Background layout-->
<BODY BGCOLOR="FAF8E8" TEXT="#000000">
<!-- Navigation -->
<STRONG>Navigation:</STRONG>
<A HREF="contents.html">Table of Contents</A>,
<A HREF="biblio.html">Bibliography</A>,
<A HREF="manual_index.html">Index</A>,
<A HREF="title.html">Title Page</A>
<HR>
<!-- The Page Header -->
<H1>Vanilla: A CEP Example<BR> Index</H1>
<HR>
<!-- Begin of the unordered list of index entries -->
<UL>
<!-- End of cc_index_header -->
<P>
<LI><B>Concepts</B>
<P>
<LI><B>Classes</B>
<P>
<UL><LI><A HREF="Class_Flavored_object.html#Index_anchor_0"><I>Flavored_object</I></A></UL>
<P>
<LI><B>Nested Types</B>
<P>
<LI><B>Enums</B>
<P>
<UL><LI><I><A HREF="main.html#Enum_Flavor">Flavor</A></I></UL>
<P>
<LI><B>Enum Tags</B>
<P>
<UL><LI><I><A HREF="main.html#Enum_Flavor">CHOCOLATE</A></I></UL>
<UL><LI><I><A HREF="main.html#Enum_Flavor">CHOCOLATE_CHIP</A></I></UL>
<UL><LI><I><A HREF="main.html#Enum_Flavor">MINT_CHOCOLATE_CHIP</A></I></UL>
<UL><LI><I><A HREF="main.html#Enum_Flavor">NEAPOLITAN</A></I></UL>
<UL><LI><I><A HREF="main.html#Enum_Flavor">PEACH</A></I></UL>
<UL><LI><I><A HREF="main.html#Enum_Flavor">PISTACHIO</A></I></UL>
<UL><LI><I><A HREF="main.html#Enum_Flavor">ROCKY_ROAD</A></I></UL>
<UL><LI><I><A HREF="main.html#Enum_Flavor">STRAWBERRY</A></I></UL>
<UL><LI><I><A HREF="main.html#Enum_Flavor">VANILLA</A></I></UL>
<P>
<LI><B>Typedefs</B>
<P>
<LI><B>Macros</B>
<P>
<LI><B>Global Variables and Consts</B>
<P>
<LI><B>Functions</B>
<P>
<UL><LI><I><A HREF="main.html#Enum_Flavor">Flavor</A> <A HREF="main.html#Function_Flavor_flavor_enhance6Flavor_f9;">flavor_enhance</A>( <A HREF="main.html#Enum_Flavor">Flavor</A> f);</I></UL>
<UL><LI><I>ostream&amp; <A HREF="main.html#Function_ostream__operator666ostream__os+_Flavor_f9;">operator&lt;&lt;</A>( ostream&amp; os, <A HREF="main.html#Enum_Flavor">Flavor</A> f);</I></UL>
<UL><LI><I>istream&amp; <A HREF="main.html#Function_istream__operator996istream__is+_Flavor__f9;">operator&gt;&gt;</A>( istream&amp; is, <A HREF="main.html#Enum_Flavor">Flavor</A>&amp; f);</I></UL>
<UL><LI><I>bool <A HREF="main.html#Function_bool_valid_flavor6Flavor_f9;">valid_flavor</A>( <A HREF="main.html#Enum_Flavor">Flavor</A> f);</I></UL>
<!-- Begin of cc_index_footer -->
<!-- ------------------------ -->
<!-- $Revision$ -->
<!-- $Date$ -->
<!-- End of the unordered list of index entries -->
</UL>
<!-- Navigation -->
<HR>
<STRONG>Navigation:</STRONG>
<A HREF="contents.html">Table of Contents</A>,
<A HREF="biblio.html">Bibliography</A>,
<A HREF="manual_index.html">Index</A>,
<A HREF="title.html">Title Page</A>
<HR>
<address>
Irene. Tue, September 14, 1999.
</address>
</BODY>
</HTML>
<!-- End of cc_index_footer -->

View File

@ -0,0 +1,20 @@
<HEAD>
<TITLE>Vanilla: A CGAL Extension Package Example</TITLE>
</HEAD>
<!-- Background layout-->
<BODY BACKGROUND="cgal-bg2.gif">
<!-- Navigation -->
<STRONG>Navigation:</STRONG>
<A HREF="contents.html">Table of Contents</A>,
<A HREF="biblio.html">Bibliography</A>,
<A HREF="manual_index.html">Index</A>,
<A HREF="title.html">Title Page</A>
<HR>
<CENTER><A HREF="http://www.cs.uu.nl/CGAL"><IMG BORDER=0 SRC="cgal_small.gif" ALIGN=center ALT="CGAL"></A></CENTER>
<CENTER><H2>Extension Packages:</H2></CENTER>
<CENTER><H1>The Vanilla Example</H1></CENTER>

View File

@ -0,0 +1,864 @@
%!PS-Adobe-2.0
%%Creator: dvips(k) 5.78 Copyright 1998 Radical Eye Software (www.radicaleye.com)
%%Title: wrapper.dvi
%%Pages: 2
%%PageOrder: Ascend
%%BoundingBox: 0 0 596 842
%%EndComments
%DVIPSCommandLine: dvips -o vanilla.ps wrapper.dvi
%DVIPSParameters: dpi=600, compressed
%DVIPSSource: TeX output 1999.09.14:1809
%%BeginProcSet: texc.pro
%!
/TeXDict 300 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N
/X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72
mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1}
ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div
hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul
TR[matrix currentmatrix{dup dup round sub abs 0.00001 lt{round}if}
forall round exch round exch]setmatrix}N /@landscape{/isls true N}B
/@manualfeed{statusdict /manualfeed true put}B /@copies{/#copies X}B
/FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{
/nn 8 dict N nn begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N
string /base X array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N
end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{
/sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]
N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data dup
length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{
128 ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub
get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data
dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N
/rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup
/base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx
0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff
setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff
.1 sub]/id ch-image N /rw ch-width 7 add 8 idiv string N /rc 0 N /gp 0 N
/cp 0 N{rc 0 ne{rc 1 sub /rc X rw}{G}ifelse}imagemask restore}B /G{{id
gp get /gp gp 1 add N dup 18 mod S 18 idiv pl S get exec}loop}B /adv{cp
add /cp X}B /chg{rw cp id gp 4 index getinterval putinterval dup gp add
/gp X adv}B /nd{/cp 0 N rw exit}B /lsh{rw cp 2 copy get dup 0 eq{pop 1}{
dup 255 eq{pop 254}{dup dup add 255 and S 1 and or}ifelse}ifelse put 1
adv}B /rsh{rw cp 2 copy get dup 0 eq{pop 128}{dup 255 eq{pop 127}{dup 2
idiv S 128 and or}ifelse}ifelse put 1 adv}B /clr{rw cp 2 index string
putinterval adv}B /set{rw cp fillstr 0 4 index getinterval putinterval
adv}B /fillstr 18 string 0 1 17{2 copy 255 put pop}for N /pl[{adv 1 chg}
{adv 1 chg nd}{1 add chg}{1 add chg nd}{adv lsh}{adv lsh nd}{adv rsh}{
adv rsh nd}{1 add adv}{/rc X nd}{1 add set}{1 add clr}{adv 2 chg}{adv 2
chg nd}{pop nd}]dup{bind pop}forall N /D{/cc X dup type /stringtype ne{]
}if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup
length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{
cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin
0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul
add .99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore userdict
/eop-hook known{eop-hook}if showpage}N /@start{userdict /start-hook
known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X
/IE 256 array N 2 string 0 1 255{IE S dup 360 add 36 4 index cvrs cvn
put}for pop 65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N
/RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley
X /rulex X V}B /V{}B /RV statusdict begin /product where{pop false[
(Display)(NeXT)(LaserWriter 16/600)]{dup length product length le{dup
length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse}
forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale rulex ruley false
RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR rulex ruley scale 1 1
false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave newpath transform
round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg
rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N /tail
{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}B /c{-4 M}
B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{
4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{
p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p
a}B /bos{/SS save N}B /eos{SS restore}B end
%%EndProcSet
TeXDict begin 39158280 55380996 1000 600 600 (wrapper.dvi)
@start
%DVIPSBitmapFont: Fa cmbx10 10 13
/Fa 13 117 df<913803FFC0027F13F00103B512FC010FEB00FED93FF8133FD97FE0EBFF
8049485A5A1480484A13C04A6C1380A36F1300167E93C7FCA592383FFFC0B8FCA4000390
C7FCB3ABB5D8FC3F13FFA4303A7EB935>12 D<DB3FFCEB01C00203B5EAC003021FECF007
91B6EAFC0F01039039FC00FF3F4901C0EB1FFFD91FFEC77E49481403D97FF08049488048
5B48177F4849153F4890C9FC181F485A180F123F5B1807127FA24993C7FC12FFAD127F7F
F003C0123FA27F001F1707A26C6C1780180F6C6D16006C6D5D6C173E6C6D157ED97FF85D
6D6C4A5A6DB44A5A010701C0EB0FE06D01FCEBFF80010090B548C7FC021F14F8020314E0
9126003FFEC8FC3A3B7BB945>67 D<B87E17F817FF18C028007FF8000713F09338007FF8
EF1FFE717E050313807113C0A27113E0F07FF0A2F03FF8A219FC181FA219FEA419FFAC19
FEA419FC183FA219F8187F19F0F0FFE0A24D13C04D13804D1300EF1FFEEF7FFC933807FF
F0B912C095C7FC17FC178040397DB849>I<EDFFF8020FEBFF80027F14F0903A01FFC01F
FC010790380007FFD91FFC010113C0D93FF06D6C7E49486E7E49486E7E48496E7E488348
90C86C7EA248486F1380A248486F13C0A2003F18E0A348486F13F0A400FF18F8AC007F18
F06D5DA3003F18E0A26D5D001F18C0A26C6C4B13806C18006E5C6C6D4A5A6C5F6C6D4A5A
6D6C4A5AD93FFC49485A6DB401075B0107D9C01F90C7FC010190B512FC6D6C14F0020F14
80020001F8C8FC3D3B7BB948>79 D<EB3FFE0003B512E0000F14F8391FF00FFE003FEB03
FF6D6C7F6E7FA26F7EA26C5A6C5AEA0380C8FCA2EC3FFF010FB5FC137F3901FFF87F0007
1380380FFE00EA3FF85B485A12FF5BA415FF6D5A127F263FF00713F83B1FFC1FBFFFC039
0FFFFE1F0003EBF80F39003FE0032A257DA42E>97 D<903803FF80011F13F0017F13FC39
01FF83FE3A03FE007F804848133F484814C0001FEC1FE05B003FEC0FF0A2485A16F81507
12FFA290B6FCA301E0C8FCA4127FA36C7E1678121F6C6C14F86D14F000071403D801FFEB
0FE06C9038C07FC06DB51200010F13FC010113E025257DA42C>101
D<EA01F0EA07FC487EA2487EA56C5AA26C5AEA01F0C8FCA913FF127FA412077EB3A9B512
F8A4153B7DBA1B>105 D<01FEEB7FC000FF903803FFF8020F13FE91381F03FFDA3C0113
80000713780003497E6D4814C05CA25CA291C7FCB3A3B5D8FC3F13FFA430257DA435>
110 D<903801FFC0010F13F8017F13FFD9FF807F3A03FE003FE048486D7E48486D7E4848
6D7EA2003F81491303007F81A300FF1680A9007F1600A3003F5D6D1307001F5DA26C6C49
5A6C6C495A6C6C495A6C6C6CB45A6C6CB5C7FC011F13FC010113C029257DA430>I<9039
FF01FF80B5000F13F0023F13FC9138FE07FFDAF00113800007496C13C06C0180EB7FE091
C713F0EE3FF8A2EE1FFCA3EE0FFEAA17FC161FA217F8163F17F06E137F6E14E06EEBFFC0
DAF00313809139FC07FE0091383FFFF8020F13E0020390C7FC91C9FCACB512FCA42F357E
A435>I<9038FE03F000FFEB0FFEEC3FFF91387C7F809138F8FFC000075B6C6C5A5CA291
38807F80ED3F00150C92C7FC91C8FCB3A2B512FEA422257EA427>114
D<90383FF0383903FFFEF8000F13FF381FC00F383F0003007E1301007C130012FC15787E
7E6D130013FCEBFFE06C13FCECFF806C14C06C14F06C14F81203C614FC131F9038007FFE
140700F0130114007E157E7E157C6C14FC6C14F8EB80019038F007F090B512C000F81400
38E01FF81F257DA426>I<130FA55BA45BA25B5BA25A1207001FEBFFE0B6FCA3000390C7
FCB21578A815F86CEB80F014816CEBC3E090383FFFC06D1380903803FE001D357EB425>
I E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fb cmtt12 14.4 2
/Fb 2 63 df<177817FCEE03FE1607161F163FEEFFFC030313F84B13F0031F13C04B1380
9238FFFE004A13F802075B4A13C0023F5B4A48C7FC49485A4913F0010F5B491380017F90
C8FCEBFFFC00035B4813E0001F5B4890C9FC485AEAFFF85BA27FEA7FFE6C7E6C13C00007
7F6C13F8C67F6DB4FC011F7F6D13E001037F6D13FC6D6C7E6E6C7E020F7F6E13F0020113
FC6E7F92383FFF806F13C0030713F06F13F8030013FCEE7FFE161F16071603EE00FC1778
2F3C79C23E>60 D<123C127EB47E7F13F07FEA7FFE6C6C7E6C7F000713F06C7FC613FE6D
7E011F13C001077F6D13F801007F6EB4FC021F7F6E13E002037F6E13FC6E6C7E92383FFF
80030F13C06F13F0030113F86F13FCEE3FFE161FA2163FEEFFFC4B13F8030713F04B13C0
033F138092387FFE004A485A4A13F0020F5B4A1380027F90C7FCECFFFC01035B4913E001
1F5B017F90C8FC495A000313F8485B001F13C0485B4848C9FCEAFFF85B13C05B007ECAFC
123C2F3C79C23E>62 D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fc cmmi10 10 2
/Fc 2 63 df<EF0380EF0FC0173FEFFF80933803FE00EE0FF8EE3FE0EEFF80DB03FEC7FC
ED0FF8ED3FE0EDFF80DA03FEC8FCEC0FF8EC3FE0ECFF80D903FEC9FCEB0FF8EB3FE0EBFF
80D803FECAFCEA0FF8EA3FE0EA7F8000FECBFCA2EA7F80EA3FE0EA0FF8EA03FEC66C7EEB
3FE0EB0FF8EB03FE903800FF80EC3FE0EC0FF8EC03FE913800FF80ED3FE0ED0FF8ED03FE
923800FF80EE3FE0EE0FF8EE03FE933800FF80EF3FC0170FEF0380323279AD41>60
D<126012FCB4FCEA7FC0EA1FF0EA07FCEA01FF38007FC0EB1FF0EB07FCEB01FF9038007F
C0EC1FF0EC07FCEC01FF9138007FC0ED1FF0ED07FCED01FF9238007FC0EE1FF0EE07FCEE
01FF9338007F80EF1FC0A2EF7F80933801FF00EE07FCEE1FF0EE7FC04B48C7FCED07FCED
1FF0ED7FC04A48C8FCEC07FCEC1FF0EC7FC04948C9FCEB07FCEB1FF0EB7FC04848CAFCEA
07FCEA3FF0EA7FC048CBFC12FC1270323279AD41>62 D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fd cmsy10 10 2
/Fd 2 104 df<EC01F8140FEC3F80ECFC00495A495A495AA2130F5CB3A7131F5C133F49
C7FC13FEEA03F8EA7FE048C8FCEA7FE0EA03F8EA00FE137F6D7E131F80130FB3A7801307
A26D7E6D7E6D7EEC3F80EC0FF814011D537ABD2A>102 D<12FCEAFFC0EA07F0EA01FCEA
007E7F80131F80130FB3A7801307806D7E6D7EEB007EEC1FF0EC07F8EC1FF0EC7E00495A
495A495A5C130F5CB3A7131F5C133F91C7FC137E485AEA07F0EAFFC000FCC8FC1D537ABD
2A>I E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fe cmtt10 10 15
/Fe 15 119 df<EB0FC0EB3FE0497E497E80EA01F8EBF07C147E0003133E13E0A5147E14
7C9138FC3FF89039F0F87FFCEA01F1EBF3F001F7EB3FF89138E01F009038FFC03F6CEB80
3EA2EC007E49137C485A486C13FC00075CEBFF01D80FDF5B381F9F81383F8F8390380FC3
E0387E07E75D38FC03F7EB01FF5D6D1410ED007C80A26CEBFF80D87E0113C0D87F03EBE0
FC3A3F87F7F1F89038FFE3FF6C01C113F06C13806C9038007FC0D801FCEB1F8026357EB3
2C>38 D<121FEA3F80EA7FC0EAFFE0A5EA7FC0EA3F80EA1F000B0B708A2C>46
D<1507ED1F80153F15FF14034A1300EC1FFC4A5AECFFE0491380010790C7FCEB0FFCEB3F
F8EB7FE048485A4890C8FCEA0FFEEA1FF8EA7FF0EAFFC05BA27FEA7FF0EA1FF8EA0FFEEA
03FF6C13C06C6C7EEB3FF8EB0FFC6DB4FC01017F6D13E0EC3FF86E7EEC07FF6E13801400
153F151FED0700212A7BAD2C>60 D<127012FC7E6C7E13E06C7EEA1FFC6C7E3803FF80C6
7FEB7FF0EB1FF8EB0FFEEB03FF6D13C06D6C7EEC3FF8EC0FFC6EB4FC0201138080A25C02
071300EC0FFCEC3FF8EC7FE049485A4990C7FCEB0FFEEB1FF8EB7FF0EBFFC000035BD80F
FEC8FC485AEA7FF0485A138048C9FC5A1270212A7BAD2C>62 D<D87FFCEB7FFC486CEBFF
FEA36C48EB7FFCD80FC0EB07E06D130F000715C0A36D131F00031580A36D133F00011500
A36D5B0000147EA4017E5BA46D485AA490381F83F0A4010F5B14C7A301075BA214EFA201
035BA214FFA26D90C7FCA46D5A27347EB22C>86 D<3801FFF0000713FE001F6D7E15E048
809038C01FF81407EC01FC381F80000006C77EC8127EA3ECFFFE131F90B5FC1203120F48
EB807E383FF800EA7FC090C7FC12FE5AA47E007F14FEEB8003383FE01F6CB612FC6C15FE
6C14BF0001EBFE1F3A003FF007FC27247CA32C>97 D<EA7FF0487EA3127F1201AAEC1FE0
ECFFF801FB13FE90B6FC16809138F07FC09138801FE091380007F049EB03F85BED01FC49
1300A216FE167EA816FE6D14FCA2ED01F86D13036DEB07F0150F9138801FE09138E07FC0
91B51280160001FB5B01F813F83900F03FC027337FB22C>I<EC0FF8EC3FFE91B5FC4914
805B903807FC7F14F090390FE03F0014C092C7FCA6007FB512FEB7FCA36C5C26000FC0C7
FCB3A8003FB512F04880A36C5C21337DB22C>102 D<EA7FF0487EA3127F1201AAEC1FE0
EC7FFC9038F9FFFE01FB7F90B6FC9138F03F80ECC01F02807FEC000F5B5BA25BB3267FFF
E0B5FCB500F11480A36C01E0140029337FB22C>104 D<1307EB1FC0A2497EA36D5AA201
07C7FC90C8FCA7387FFFC080B5FC7EA2EA0007B3A8007FB512FCB612FEA36C14FC1F3479
B32C>I<387FFFE0B57EA37EEA0003B3B3A5007FB61280B712C0A36C158022337BB22C>
108 D<397FF01FE039FFF87FFC9038F9FFFE01FB7F6CB6FC00019038F03F80ECC01F0280
7FEC000F5B5BA25BB3267FFFE0B5FCB500F11480A36C01E0140029247FA32C>110
D<EB07FCEB1FFF017F13C048B512F048803907FC07FC390FF001FE48486C7E0180133F00
3F158090C7121F007EEC0FC0A348EC07E0A76C140F007E15C0A2007F141F6C15806D133F
6C6CEB7F006D5B6C6C485A3907FC07FC6CB55A6C5C6C6C13C0011F90C7FCEB07FC23247C
A32C>I<D87FFEEB3FC0B53801FFF0020713F8021F13FC6C5B39003F7FE1ECFF019138FC
00F84A13704A13005CA25C5CA391C8FCAF007FB512E0B67EA36C5C26247EA32C>114
D<3A7FFF01FFFCB514FE148314016C15FC3A03E0000F80A26D131F00011500A26D5B0000
143EA26D137E017C137CA2017E13FC013E5BA2EB3F01011F5BA21483010F5BA214C70107
5BA214EF01035BA214FF6D90C7FCA26D5A147C27247EA32C>118
D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Ff cmti10 10 45
/Ff 45 119 df<EE3FFC4BB51280923907E007C092391F8001E0DB3F0013F0037E13034B
1307A24A5A18E04A48EB038094C7FCA314075DA4140F5DA3010FB7FCA25F903A001F8000
7EA217FE023F5C92C7FCA216015F5C147E16035FA214FE4A13075FA30101140F5F4AECC1
C0A2161F1783010316805CA2EF870013074A5CEE0F8EEE079EEE03FC010FEC00F04A91C7
FCA35C131FA2001C90CAFC127E5BEAFE3E133C137CEAF878EA78F0EA3FE0EA0F80344C82
BA2F>12 D<150C151C153815F0EC01E0EC03C0EC0780EC0F00141E5C147C5C5C495A1303
495A5C130F49C7FCA2133EA25BA25BA2485AA212035B12075BA2120F5BA2121FA290C8FC
A25AA2123EA2127EA2127CA412FC5AAD1278A57EA3121C121EA2120E7EA26C7E6C7EA212
001E5274BD22>40 D<140C140E80EC0380A2EC01C015E0A2140015F0A21578A4157C153C
AB157CA715FCA215F8A21401A215F0A21403A215E0A21407A215C0140F1580A2141F1500
A2143EA25CA25CA2495AA2495A5C1307495A91C7FC5B133E133C5B5B485A12035B48C8FC
120E5A12785A12C01E527FBD22>I<EA03C0EA07F0120F121F13F8A313F0EA07B0EA0030
13701360A213E013C01201EA038013005A120E5A5A5A5A5A0D197A8819>44
D<120EEA3F80127F12FFA31300127E123C0909778819>46 D<1703EF0780170FA2EF1F00
5F173E5FA25FA24C5A16035F4C5AA24C5AA24CC7FCA2163E167E167C5EA24B5AA24B5A15
075E4B5AA24BC8FCA2153E157E157C5DA24A5AA24A5A14075D4A5AA24AC9FCA2143EA25C
14FC5C495AA2495AA2495A130F5C49CAFCA2133EA25B13FC5B485AA2485AA2485A120F5B
48CBFCA2123EA25AA25AA2127031537FBD2A>I<EB0780EB0FC0EB1FE0133FA314C01480
EB0E0090C7FCB2EA03C0487E487E121FA45B1207EA006013E05BA212015B120390C7FC5A
120E5A121812385A5A5A13347AA319>59 D<EE01C01603A21607160FA2161F83163FA216
7F16FF16EF150116CFED038FA2ED070FA2150E151E151C1538A203707FA2EDE007A2EC01
C014031580EC0700A2140EA25CA25C027FB5FCA291B6FC9139E00007F849481303A2495A
130791C7FC5B130E5BA25B1378137013F0EA03F8486C4A7EB56C48B512F0A3343C7BBB3E
>65 D<0107B612FCEFFF8018C0903B000FF0001FF04BEB07F81703021F15FC17014B14FE
A2023F1400A24B1301A2147F18FC92C7120318F84A140718F04AEC0FE0EF1FC00101ED3F
80EF7F004AEB01FEEE07F849B612E05F9139F80007F0EE01FC01076E7E177F4AEC3F80A2
010F16C0171F5CA2131F173F5CA2133FEF7F805C1800017F5D4C5A91C7485A5F49140FEE
1FE0494A5A00014AB45AB748C7FC16F816C037397BB83A>I<DB03FE130E92393FFF801E
92B5EAE03C913903FE01F0913A0FF000787CDA3FC0EB3CFC4AC7EA1FF802FE140FEB03FC
49481407494815F049481403495A5C49C813E05B485A5B000317C0485AA2485A1880485A
94C7FCA2485AA3127F5BA312FF90CBFCA41738A217784816707E17F06C5E16015F16036C
6C4A5A94C7FC001F150E6D141E000F5D6D5C6C6C495A6C6CEB03C0D801FEEB0F8027007F
807EC8FC6DB45A010F13E0010090C9FC373D74BA3B>I<0103B612FEEFFFC018F0903B00
07F8000FF84BEB03FCEF00FE020F157FF03F804B141F19C0021F150F19E05D1807143F19
F05DA2147FA292C8FCA25C180F5CA2130119E04A151FA2130319C04A153FA20107178018
7F4A1600A2010F16FEA24A4A5A60011F15034D5A4A5D4D5A013F4B5A173F4A4AC7FC17FC
017FEC03F84C5A91C7EA1FC04949B45A007F90B548C8FCB712F016803C397CB83F>I<01
07B8FCA3903A000FF000034BEB007F183E141F181E5DA2143FA25D181C147FA292380003
80A24A130718004A91C7FC5E13015E4A133E167E49B512FEA25EECF8000107147C163C4A
1338A2010F147818E04A13701701011F16C016004A14031880013F150718004A5CA2017F
151E173E91C8123C177C4915FC4C5A4914070001ED7FF0B8FCA25F38397BB838>I<0107
B712FEA3903A000FF000074B1300187C021F153CA25DA2143FA25D1838147FA292C8FCEE
03804A130718004A91C7FCA201015CA24A131E163E010314FE91B5FC5EA2903807F80016
7C4A1378A2130FA24A1370A2011F14F0A24A90C8FCA2133FA25CA2137FA291CAFCA25BA2
5B487EB6FCA337397BB836>I<0103B5D8F80FB512E0A390260007F8C7381FE0004B5DA2
020F153F615DA2021F157F96C7FC5DA2023F5D605DA2027F14016092C7FCA24A1403605C
A249B7FC60A202FCC712070103150F605CA20107151F605CA2010F153F605CA2011F157F
95C8FC5CA2013F5D5F5CA2017F14015F91C7FC491403007FD9FE01B512F8B55BA243397C
B83E>72 D<0103B512F8A390390007F8005DA2140FA25DA2141FA25DA2143FA25DA2147F
A292C7FCA25CA25CA21301A25CA21303A25CA21307A25CA2130FA25CA2131FA25CA2133F
A25CA2137FA291C8FC497EB6FCA25C25397CB820>I<0103B500F890387FFFE0A21AC090
260007F8C7380FFC004B15E061020F4BC7FC183E4B5C18F0021F4A5A4D5A4BEB0F804DC8
FC023F143C5F4B5B4C5A027FEB07C04CC9FCED001E5E4A5BED01FCECFE0315070101497E
151FECFC7C4B7E903903FDE07FDAFFC07F1580ED003F49488014F84A131F83130F160F4A
801607011F81A24A130383133F16014A80A2017F6E7EA291C8FC494A7F007F01FE011F13
FCB55CA243397CB840>75 D<0107B512FCA25E9026000FF8C7FC5D5D141FA25DA2143FA2
5DA2147FA292C8FCA25CA25CA21301A25CA21303A25CA21307A25CA2130F170C4A141CA2
011F153C17384A1478A2013F157017F04A14E01601017F140317C091C71207160F49EC1F
80163F4914FF000102071300B8FCA25E2E397BB834>I<902607FFF8923807FFF0614F13
E0D9000FEFF0004F5AA2021F167FF1EFC0141DDA1CFCEC01CF023C16DF9538039F800238
ED071FA20278ED0E3F97C7FC0270151CA202F04B5AF0707E14E0037E14E0010117FE4D48
5A02C0EC0380A20103ED0701610280140EA20107ED1C0305385B14006F137049160705E0
5B010EEC01C0A2011E913803800F61011CEC0700A2013C020E131F4C5C1338ED1FB80178
163F04F091C8FC01705CA201F04A5B187E00015DD807F816FEB500C09039007FFFFC151E
150E4C397AB84A>I<902603FFF891B512E0A281D90007923807F8006F6E5A61020F5E81
DA0E7F5DA2021E6D1307033F92C7FC141C82DA3C1F5C70130EEC380FA202786D131E0307
141C147082DAF003143C70133814E0150101016E1378030014705C8201036E13F0604A14
80163F010715C1041F5B91C7FC17E149EC0FE360010E15F31607011E15FF95C8FC011C80
A2013C805F1338160013785F01F8157CEA03FC267FFFE0143CB51538A243397CB83E>I<
ED03FE92383FFFC09238FC07F0913903E001F891390F80007C023FC77E027E8002F81580
4948EC0FC0EB07E04948EC07E0131F4A15F049C81203137E01FE16F8485AA2485AA2485A
A2120F5B001F16075B123FA34848ED0FF0A448C9EA1FE0A3EF3FC0A21880177F18005F5F
16015F6C4B5A4C5AA24C5A6C4B5A6D4A5A001F93C7FC6D147E000F5D6C6CEB03F06C6C49
5A6C6CEB0F806C6C013FC8FC90383F01FC90381FFFE0010190C9FC353D74BA40>I<0107
B612F817FF1880903B000FF0003FE04BEB0FF0EF03F8141FEF01FC5DA2023F15FEA25DA2
147FEF03FC92C7FCA24A15F817074A15F0EF0FE01301EF1FC04AEC3F80EFFE0001034A5A
EE0FF091B612C04CC7FCD907F8C9FCA25CA2130FA25CA2131FA25CA2133FA25CA2137FA2
91CAFCA25BA25B1201B512FCA337397BB838>I<0103B612F017FEEFFF80903B0007F800
3FC04BEB0FF01707020FEC03F8EF01FC5DA2021F15FEA25DA2143FEF03FC5DA2027FEC07
F818F092C7120F18E04AEC1FC0EF3F004A14FEEE01F80101EC0FE091B6128004FCC7FC91
38FC003F0103EC0F80834A6D7E8301071403A25C83010F14075F5CA2011F140FA25CA213
3F161F4AECE007A2017F160F180E91C7FC49020F131C007F01FE153CB5913807F0780403
13F0CAEAFFE0EF3F80383B7CB83D>82 D<92383FC00E913901FFF01C020713FC91391FC0
7E3C91393F001F7C027CEB0FF84A130749481303495A4948EB01F0A2495AA2011F15E091
C7FCA34915C0A36E90C7FCA2806D7E14FCECFF806D13F015FE6D6D7E6D14E0010080023F
7F14079138007FFC150F15031501A21500A2167C120EA3001E15FC5EA3003E4A5AA24B5A
A2007F4A5A4B5A6D49C7FC6D133ED8F9F013FC39F8FC03F839F07FFFE0D8E01F138026C0
03FCC8FC2F3D7ABA2F>I<0007B812E0A25AD9F800EB001F01C049EB07C0485AD9000114
03121E001C5C003C17801403123800785C00701607140700F01700485CA2140FC792C7FC
5DA2141FA25DA2143FA25DA2147FA292C9FCA25CA25CA21301A25CA21303A25CA21307A2
5CA2130FA25CEB3FF0007FB512F8B6FCA2333971B83B>I<B500F8903803FFFEA218FCD8
03FEC8EA7FC049ED3F000001163E173C17385FA25F16015F6D4A5AA200004BC7FC5E160E
5EA25EA25E5EA26D495A7F4B5A150793C8FC150EA25D153C15385D1480013F5B14815DEC
8380A20287C9FCA2148E149E149C14F8A26D5AA25C5CA25CA291CAFC131EA2373B6FB83E
>86 D<B5D8F80FB590381FFFF06102F018E0D807FEC7D87FE0903803FE00D803F8DA3F80
6D5AF100F0A24F5A621903621907047F92C7FC190E16FF4B5DA2DB03BF5C7F0001DA073F
5CA2030E5D83DB1C1F495A180303385D4EC8FC157003F0140E15E0DA01C05CA2DA03805C
A2DA07005CA2020E5D17C14A5DEFC3805C027802C7C9FC14704A14CE13FE6C6C4814DCA2
4A14F8A291C75B160F495D5F5B5F5B4992CAFCA249140E4C3B6FB853>I<B500F8903803
FFFEA3D803FEC8EA7FC00001EE3F00173E177800005E6D5D4C5A6D14036E495A94C7FC16
0E013F5C6E133C5E011F14706E5B4B5A010F13036E485A93C8FC150E01075BECF83C5D01
035B6E5AECFDC06DB45AA292C9FC5C6D5A1301A35C1303A35C1307A35C130FA35C131FA2
133F001FB57E5AA237396FB83E>89 D<14F8EB07FE90381F871C90383E03FE137CEBF801
120148486C5A485A120FEBC001001F5CA2EA3F801403007F5C1300A21407485C5AA2140F
5D48ECC1C0A2141F15831680143F1587007C017F1300ECFF076C485B9038038F8E391F0F
079E3907FE03FC3901F000F0222677A42A>97 D<133FEA1FFFA3C67E137EA313FE5BA312
015BA312035BA31207EBE0F8EBE7FE9038EF0F80390FFC07C013F89038F003E013E0D81F
C013F0A21380A2123F1300A214075A127EA2140F12FE4814E0A2141F15C05AEC3F80A215
005C147E5C387801F8007C5B383C03E0383E07C0381E1F80D80FFEC7FCEA01F01C3B77B9
26>I<147F903803FFC090380FC1E090381F0070017E13784913383901F801F83803F003
120713E0120FD81FC013F091C7FC485AA2127F90C8FCA35A5AA45AA3153015381578007C
14F0007EEB01E0003EEB03C0EC0F806CEB3E00380F81F83803FFE0C690C7FC1D2677A426
>I<ED01F815FFA3150316F0A21507A216E0A2150FA216C0A2151FA21680A2153FA202F8
1300EB07FE90381F877F90383E03FF017C5BEBF80112013803F00048485B120FEBC00112
1F5DEA3F801403127F01005BA214075A485CA2140FA248ECC1C0A2141F15C3ED8380143F
1587007C017F1300ECFF076C485B9038038F8E391F0F079E3907FE03FC3901F000F0253B
77B92A>I<147F903803FFC090380FC1E090383F00F0017E13785B485A485A485A120F49
13F8001F14F0383F8001EC07E0EC1F80397F81FF00EBFFF891C7FC90C8FC5A5AA55AA215
30007C14381578007E14F0003EEB01E0EC03C06CEB0F806CEB3E00380781F83803FFE0C6
90C7FC1D2677A426>I<ED07C0ED1FF0ED3E38ED7C3CEDF8FC15F9140115F1020313F8ED
F0F0160014075DA4140F5DA4141F5D010FB512C05B16809039003F800092C7FCA45C147E
A414FE5CA413015CA413035CA413075CA4130F5CA3131F5CA391C8FC5B121CEA7E3EA2EA
FE3C137C1378EAF8F01278EA3FC0EA0F80264C82BA19>I<EB03F0EA01FFA3EA00075CA3
130F5CA3131F5CA3133F91C8FCA35B90387E07F0EC1FFCEC783E9038FFE01F02C01380EC
800F1400485A16C05B49EB1F8012035BA2153F000715005BA25D000F147E5B15FE5D121F
D98001131C15F8163C003F01031338010013F0A216704814E0007E15F016E0EDE1C000FE
903801E38048903800FF000038143C263B7BB92A>104 D<EB01C0EB07E014F0130F14E0
1307EB038090C7FCAB13F0EA03FCEA071EEA0E1F121CA212385B1270A25BEAF07E12E013
FEC65AA212015B1203A25B12075BA2000F13E013C013C1001F13C01381A2EB83801303EB
0700A2130E6C5AEA07F8EA01E0143879B619>I<150E153F157FA3157E151C1500ABEC1F
80EC7FC0ECF1F0EB01C090380380F813071401130F130E131EEB1C03133C013813F0A2EB
0007A215E0A2140FA215C0A2141FA21580A2143FA21500A25CA2147EA214FEA25CA21301
A25CA213035C121C387E07E0A238FE0FC05C49C7FCEAF83EEA787CEA3FF0EA0FC0204883
B619>I<EB0FC0EA07FFA3EA001F1480A2133FA21400A25BA2137EA213FEA25BA21201A2
5BA21203A25BA21207A25BA2120FA25BA2121FA25BA2123FA290C7FCA25AA2EA7E0EA212
FE131EEAFC1CA2133C133812F81378EA7870EA7CE0121FEA0F80123B79B915>108
D<D801E001FEEB07F03C07F803FF801FFC3C0E3C0F07C0783E3C1E3E3C03E1E01F261C1F
78D9F3C013803C383FF001F7800F02E01400007801C013FE007018C002805B4A4848EB1F
80EAF07FD8E07E5CA200000207143F01FE1700495CA2030F5C0001177E495C18FE031F5C
120349DA8001131C18F8033F153C00070403133849020013F0A24B1570000F17E049017E
15F019E003FEECE1C0001FEE01E34949903800FF000007C70038143C3E2679A444>I<D8
01E013FE3A07F803FF803A0E3C0F07C03A1E3E3C03E0261C1F787F39383FF00114E00078
13C000708114804A485AEAF07FEAE07EA20000140701FE5C5BA2150F00015D5B151F5E12
034990383F8380160316070007027F130049137EA2160E000F147C49141E161C5E001FEC
3C7849EB1FE00007C7EA0780292679A42F>I<147F903803FFC090380FC1F090381F00F8
017E137C5B4848137E4848133E0007143F5B120F485AA2485A157F127F90C7FCA215FF5A
4814FEA2140115FC5AEC03F8A2EC07F015E0140F007C14C0007EEB1F80003EEB3F00147E
6C13F8380F83F03803FFC0C648C7FC202677A42A>I<3903C003F0390FF01FFC391E783C
0F381C7C703A3C3EE03F8038383FC0EB7F800078150000701300151CD8F07E90C7FCEAE0
FE5BA2120012015BA312035BA312075BA3120F5BA3121F5BA3123F90C9FC120E212679A4
23>114 D<14FE903807FF8090380F83C090383E00E04913F00178137001F813F0000113
0313F0A215E00003EB01C06DC7FC7FEBFFC06C13F814FE6C7F6D13807F010F13C0130014
3F141F140F123E127E00FE1480A348EB1F0012E06C133E00705B6C5B381E03E06CB45AD8
01FEC7FC1C267AA422>I<EB0380EB07C0130FA4131F1480A3133F1400A35B137E007FB5
FCA2B6FC3800FC00A312015BA312035BA312075BA3120F5BA3121FEB801CA2143C003F13
38EB0078147014F014E0EB01C0EA3E03381F0780380F0F00EA07FCEA01F0183579B31C>
I<13F8D803FEEB01C0D8078FEB03E0390E0F8007121E121C0038140F131F007815C01270
013F131F00F0130000E015805BD8007E133FA201FE14005B5D120149137EA215FE120349
EBFC0EA20201131E161C15F813E0163CD9F003133814070001ECF07091381EF8F03A00F8
3C78E090393FF03FC090390FC00F00272679A42D>I<01F0130ED803FC133FD8071EEB7F
80EA0E1F121C123C0038143F49131F0070140FA25BD8F07E140000E08013FEC6485B150E
12015B151E0003141C5BA2153C000714385B5DA35DA24A5A140300035C6D48C7FC000113
0E3800F83CEB7FF8EB0FC0212679A426>I E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fg cmr10 10 50
/Fg 50 122 df<EC0FF8EC7FFE903901F80780903907E001C090391F8000E090383F0007
017E497EA25BA2485A6F5AED018092C8FCA9ED03F0B7FCA33901F8000F1503B3AA486C49
7E267FFFE0B512C0A32A3B7FBA2E>12 D<EC0FFC91387FFF70903901F803F0903807E007
90381F800FEB3F00137EA25B150748481303ADB7FCA33901F80003B3AB486C497E267FFF
E0B512C0A32A3B7FBA2E>I<030C1303031E497EA2033E130FA2033C91C7FCA2037C5BA2
0378131EA303F8133EA24B133CA20201147CA24B1378A2020314F8A24B5BA30207130100
7FB91280BA12C0A26C1880C7271F0007C0C7FC021E5CA3023E130FA2023C91C8FCA2027C
5BA20278131EA302F8133E007FB91280BA12C0A26C1880280003E000F8C8FC4A5BA30107
1301A202805BA2010F1303A202005BA2491307A2011E5CA3013E130FA2013C91C9FCA201
7C5BA20178131EA20130130C3A4A7BB945>35 D<121C127FEAFF80A213C0A3127F121C12
00A412011380A2120313005A1206120E5A5A5A12600A1979B917>39
D<121C127FEAFF80A213C0A3127F121C1200A412011380A2120313005A1206120E5A5A5A
12600A19798817>44 D<B512FCA516057F941C>I<121C127FEAFF80A5EA7F00121C0909
798817>I<EB01C013031307131F13FFB5FCA2131F1200B3B3A8497E007FB512F0A31C38
79B72A>49 D<EB0FF0EB7FFE48B57E3903E03FE0390F000FF0000E6D7E486D7E486D7E12
3000706D7E126012FCB4EC7F807FA56CC7FC121CC8FCEDFF00A34A5A5D14035D4A5A5D14
0F4A5A4A5A92C7FC147C5C495A495A495A495A91C8FC011EEB01805B5B49130348481400
485A485A000EC75A000FB6FC5A5A485CB6FCA321387CB72A>I<EB03F8EB1FFF017F13C0
9038FC07E03903F803F048486C7E48486C7E49137E121F48487FA2007F158090C7FCA248
EC1FC0A616E0A56C143FA27F123F001F147FA26C6C13FF3907E001DF0003149F3801F003
3900FC0F1FD93FFC13C0EB07F090C7FC153F1680A316005D000F147E487E486C5BA24A5A
4A5A49485A6C48485A001C495A260F807FC7FC3807FFFC000113F038003FC0233A7DB72A
>57 D<121C127FEAFF80A5EA7F00121CC7FCB2121C127FEAFF80A5EA7F00121C092479A3
17>I<121C127FEAFF80A5EA7F00121CC7FCB2121C127F5A1380A4127F121D1201A41203
1300A25A1206A2120E5A121812385A1260093479A317>I<1538A3157CA315FEA34A7EA3
4A6C7EA202077FEC063FA2020E7FEC0C1FA2021C7FEC180FA202387FEC3007A202707FEC
6003A202C07F1501A2D901807F81A249C77F167FA20106810107B6FCA24981010CC7121F
A2496E7EA3496E7EA3496E7EA213E0707E1201486C81D80FFC02071380B56C90B512FEA3
373C7DBB3E>65 D<913A01FF800180020FEBE003027F13F8903A01FF807E07903A03FC00
0F0FD90FF0EB039F4948EB01DFD93F80EB00FF49C8127F01FE153F12014848151F484815
0FA248481507A2485A1703123F5B007F1601A35B00FF93C7FCAD127F6DED0180A3123F7F
001F160318006C7E5F6C7E17066C6C150E6C6C5D00001618017F15386D6C5CD91FE05C6D
6CEB03C0D903FCEB0F80902701FF803FC7FC9039007FFFFC020F13F002011380313D7BBA
3C>67 D<B812FCA30001903880000F6C90C71201EE007E173E171E170EA31706A3170783
16C0A394C7FCA31501A21503150F91B5FCA3EC000F15031501A21500A21860A318E093C7
12C0A41701A3EF0380A21707A2170F173F177F486D903807FF00B9FCA333397DB839>69
D<B812F8A30001903880001F6C90C71201EE00FC177C173C171CA2170CA4170E1706A2ED
0180A21700A41503A21507151F91B5FCA3EC001F15071503A21501A692C8FCAD4813C0B6
12C0A32F397DB836>I<B612C0A3C6EBC0006D5AB3B3AD497EB612C0A31A397EB81E>73
D<B649B5FCA3000101809038007FF06C90C8EA3F80053EC7FC173C17385F5F4C5A4C5A4C
C8FC160E5E5E5E5E4B5AED0780030EC9FC5D153E157E15FF5C4A7F4A6C7E140E4A6C7E4A
6C7E14704A6C7E4A6C7E14804A6C7E6F7EA26F7F707EA2707E707EA2707EA2707E707EA2
707E707F8484486D497FB6011FEBFF80A339397DB841>75 D<B612E0A3000101C0C8FC6C
90C9FCB3AD1718A517381730A31770A317F0A216011603160FEE1FE0486D13FFB8FCA32D
397DB834>I<B5933807FFF86E5DA20001F0FC002600DFC0ED1BF8A2D9CFE01533A3D9C7
F01563A3D9C3F815C3A2D9C1FCEC0183A3D9C0FEEC0303A2027F1406A36E6C130CA36E6C
1318A26E6C1330A36E6C1360A26E6C13C0A3913901FC0180A3913900FE0300A2ED7F06A3
ED3F8CA2ED1FD8A3ED0FF0A3486C6D5A487ED80FFC6D48497EB500C00203B512F8A2ED01
8045397DB84C>I<B5913807FFFE8080C69238007FE06EEC1F80D9DFF0EC0F001706EBCF
F8EBC7FCA2EBC3FEEBC1FFA201C07F6E7EA26E7E6E7E81140F6E7E8114036E7E168080ED
7FC016E0153FED1FF0ED0FF8A2ED07FCED03FEA2ED01FF6F1386A2EE7FC6EE3FE6A2EE1F
F6EE0FFEA216071603A216011600A2177E486C153E487ED80FFC151EB500C0140EA21706
37397DB83E>I<D90FF813C090383FFE0190B512813903F807E33907E000F74848137F48
48133F48C7121F003E140F007E1407A2007C140312FC1501A36C1400A37E6D14006C7E7F
13F86CB47E6C13F8ECFF806C14E06C14F86C14FEC680013F1480010714C0EB007F020713
E0EC007FED3FF0151F150FED07F8A200C01403A21501A37EA216F07E15036C15E06C1407
6C15C06C140F6DEB1F80D8FBF0EB3F00D8F0FE13FE39E03FFFF8010F13E0D8C00190C7FC
253D7CBA2E>83 D<003FB812E0A3D9C003EB001F273E0001FE130348EE01F00078160000
701770A300601730A400E01738481718A4C71600B3B0913807FF80011FB612E0A335397D
B83C>I<B500FC91387FFF80A30003018091380FFC006C90C8EA07E0715A6C705A6E1403
017F93C7FCA280013F1506A26E140E011F150C80010F5DA28001075DA26E147001031560
A26D6C5CA2806D4A5AA2ED8003027F91C8FCA291383FC006A215E0021F5BA2EDF01C020F
1318A26E6C5AA215FC02035BA2EDFEE002015BA26E6C5AA36FC9FCA3153EA2151CA3393B
7EB83E>86 D<EAFFF8A4EAF000B3B3B3B3A3EAFFF8A40D5378BD17>91
D<EAFFF8A4EA0078B3B3B3B3A3EAFFF8A40D537FBD17>93 D<EB1FE0EBFFFC3803E03F39
07000F80390F8007E0486C6C7E13E06E7EA26E7E6C5A6C5AC8FCA4147FEB07FFEB3FE0EB
FE00EA03F8EA0FF0EA1FC0123F485A90C7FC160C12FEA31401A26C13036CEB077C903980
063E18383FC01E3A0FE0781FF03A03FFF00FE03A007F8007C026277DA52A>97
D<EA03F012FFA3120F1203B0EC1FE0EC7FF89038F1E03E9039F3801F809039F7000FC001
FEEB07E049EB03F049EB01F85BED00FCA216FEA2167E167FAA167E16FEA216FC15016D14
F8ED03F07F01EEEB07E001C6EB0FC09039C7801F00903881E07E903800FFF8C7EA1FC028
3B7EB92E>I<EB03FC90381FFF8090387E03E03901F80070484813F83907E001FC380FC0
03A2EA1F80123F90380001F848EB00F01500A2127E12FEAA127E127FA26C14067F001F14
0E6D130C000F141C6C6C13386C6C13706C6C13E039007C07C090381FFF00EB07F81F277D
A525>I<ED0FC0EC03FFA3EC003F150FB0EB03F8EB1FFF90387E078F9038F801EF3903F0
007F4848133F4848131FA24848130F123F90C7FC5AA2127E12FEAA127E127FA27EA26C6C
131FA26C6C133F6C6C137F6C6CEBEFF03A01F801CFFF39007C078F90381FFE0FD907F813
C0283B7DB92E>I<EB07F8EB1FFF90387C0FC03901F803E03903F001F0D807E013F8380F
C0004848137CA248C7127E153E5A153F127E12FEA3B7FCA248C8FCA5127EA2127FA26C14
037F001F14076C6C13060007140E6D131CD801F013386C6C137090387E03E090381FFF80
903803FC0020277EA525>I<147E903803FF8090380FC1E0EB1F8790383F0FF0137EA213
FCA23901F803C091C7FCADB512FCA3D801F8C7FCB3AB487E387FFFF8A31C3B7FBA19>I<
ED03F090390FF00FF890393FFC3C3C9039F81F707C3901F00FE03903E007C03A07C003E0
10000FECF000A248486C7EA86C6C485AA200075C6C6C485A6D485A6D48C7FC38073FFC38
060FF0000EC9FCA4120FA213C06CB512C015F86C14FE6CECFF804815C03A0F80007FE048
C7EA0FF0003E140348140116F8481400A56C1401007C15F06CEC03E0003F1407D80F80EB
0F80D807E0EB3F003901FC01FC39007FFFF0010790C7FC26387EA52A>I<EA03F012FFA3
120F1203B0EC0FF0EC3FFCECF03F9039F1C01F809039F3800FC0EBF70013FE496D7EA25B
A35BB3A3486C497EB500C1B51280A3293A7EB92E>I<EA0380EA0FE0487EA56C5AEA0380
C8FCAAEA03F012FFA312071203B3AA487EB512C0A312387EB717>I<EB01C0EB07F0EB0F
F8A5EB07F0EB01C090C7FCAAEB01F813FFA313071301B3B3A2123C127E00FF13F01303A2
14E038FE07C0127C383C0F00EA0FFEEA03F8154984B719>I<EA03F012FFA3120F1203B1
913801FFFCA39138007FC01600157C15705D4A5A4A5A4AC7FC141E1438147814FC13F1EB
F3FEEBF73F01FE7FEBF81F496C7E8114076E7E6E7E811400157E157F811680ED1FC0486C
EB3FF0B500C0B5FCA3283A7EB92C>I<EA03F012FFA3120F1203B3B3AD487EB512C0A312
3A7EB917>I<2703F00FF0EB1FE000FFD93FFCEB7FF8913AF03F01E07E903BF1C01F8380
3F3D0FF3800FC7001F802603F70013CE01FE14DC49D907F8EB0FC0A2495CA3495CB3A348
6C496CEB1FE0B500C1B50083B5FCA340257EA445>I<3903F00FF000FFEB3FFCECF03F90
39F1C01F803A0FF3800FC03803F70013FE496D7EA25BA35BB3A3486C497EB500C1B51280
A329257EA42E>I<EB03FE90380FFF8090383E03E09038F800F84848137C48487F48487F
4848EB0F80001F15C090C712074815E0A2007EEC03F0A400FE15F8A9007E15F0A2007F14
076C15E0A26C6CEB0FC0000F15806D131F6C6CEB3F006C6C137EC66C13F890387E03F090
381FFFC0D903FEC7FC25277EA52A>I<3903F01FE000FFEB7FF89038F1E07E9039F3801F
803A0FF7000FC0D803FEEB07E049EB03F04914F849130116FC150016FEA3167FAA16FEA3
ED01FCA26DEB03F816F06D13076DEB0FE001F614C09039F7803F009038F1E07E9038F0FF
F8EC1FC091C8FCAB487EB512C0A328357EA42E>I<3807E01F00FFEB7FC09038E1E3E090
38E387F0380FE707EA03E613EE9038EC03E09038FC0080491300A45BB3A2487EB512F0A3
1C257EA421>114 D<EBFF03000313E7380F80FF381E003F487F487F00707F12F0A2807E
A27EB490C7FCEA7FE013FF6C13E06C13F86C7F00037FC67F01071380EB007F141F00C0EB
0FC01407A26C1303A37E15806C13077EEC0F00B4131E38F3C07C38E1FFF038C03F801A27
7DA521>I<1318A51338A31378A313F8120112031207001FB5FCB6FCA2D801F8C7FCB215
C0A93800FC011580EB7C03017E13006D5AEB0FFEEB01F81A347FB220>I<D803F0EB07E0
00FFEB01FFA3000FEB001F00031407B3A4150FA3151F12016D133F0000EC77F86D9038E7
FF8090383F03C790381FFF87903A03FC07E00029267EA42E>I<B538803FFEA33A0FF800
0FF06C48EB07E00003EC03C06D148000011500A26C6C1306A26D130E017E130CA26D5BA2
EC8038011F1330A26D6C5AA214E001075BA2903803F180A3D901FBC7FCA214FF6D5AA214
7CA31438A227257EA32C>I<B53A1FFFE03FFEA3260FF8009038000FF86C48017EEB03E0
18C00003023EEB0180A26C6C013FEB0300A36C6CEC8006156FA2017E9038EFC00C15C7A2
D93F016D5A15830281EBF038D91F831430150102C3EBF87090260FC6001360A2D907E66D
5A02EC137CA2D903FCEB7F804A133FA2010192C7FC4A7FA20100141E4A130E0260130C37
257EA33C>I<B538807FFFA33A03FE003FF00001EC1F80000092C7FC017E131C6D13186D
6C5AECC070010F5B6D6C5AECF180EB03FB6DB4C8FC6D5AA2147F804A7E8114CF903801C7
E090380383F090380703F8EB0601496C7E011C137E49137F01787F496D7E486C80000FEC
3FF0D8FFFE90B51280A329247FA32C>I<B538803FFEA33A0FF8000FF06C48EB07C00003
EC03806C7E16007F00001406A2017E5BA2137F6D5BA26D6C5AA2ECC070010F1360A26D6C
5AA214F101035BA2D901FBC7FCA214FF6D5AA2147CA31438A21430A214701460A25CA2EA
7C0100FE5B130391C8FC1306EAFC0EEA701C6C5AEA1FF0EA0FC027357EA32C>I
E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fh cmbx12 14.4 31
/Fh 31 119 df<EEFFFE031F9038FFCFC04AB7FC1407021FEBC00791387FFC00DAFFF05B
4901C05B495B4990C7FC495AA2495A83133F4A8083AFBAFCA526003FFCC71203B3B3A700
3FB5D8FC03B612C0A542547DD34B>13 D<157815FC14031407141F14FF130F0007B5FCB6
FCA2147F13F0EAF800C7FCB3B3B3A6007FB712FEA52F4E76CD43>49
D<EC3FFE0103B512E0010F14FC013F14FF90B712C048D9C07F7F2703FE000F13F8D807F8
01037FD80FE06D7F48486D7F48488001F01680486C6E13C07F486C6E13E07FA27013F0A5
6C5AA26C5AEA0FF0EA03C0C914E05EA218C05E1880A24C13005F4C5A4B5B5F4B5B5F4B5B
4B90C7FC4B5A5E4B5AED7FE04B5A4A5B4A48C8FC4A5A5D4A48EB01F04A5AEC3F804AC7FC
02FEEC03E0495A495A495A495AD91F80140749C8FC013E150F017FB7FC90B812C05A5A5A
5A5A5A5AB9FC1880A4344E79CD43>I<91380FFFC091B512FC0107ECFF80011F15E09026
3FF8077F9026FF800113FC4848C76C7ED803F86E7E491680D807FC8048B416C080486D15
E0A4805CA36C17C06C5B6C90C75AD801FC1680C9FC4C13005FA24C5A4B5B4B5B4B13C04B
5BDBFFFEC7FC91B512F816E016FCEEFF80DA000713E0030113F89238007FFE707E701380
7013C018E07013F0A218F8A27013FCA218FEA2EA03E0EA0FF8487E487E487EB57EA318FC
A25E18F891C7FC6C17F0495C6C4816E001F04A13C06C484A1380D80FF84A13006CB44A5A
6CD9F0075BC690B612F06D5D011F1580010302FCC7FCD9001F1380374F7ACD43>I<9326
01FFFCEC01C0047FD9FFC013030307B600F81307033F03FE131F92B8EA803F0203DAE003
EBC07F020F01FCC7383FF0FF023F01E0EC0FF94A01800203B5FC494848C9FC4901F88249
49824949824949824949824990CA7E494883A2484983485B1B7F485B481A3FA24849181F
A3485B1B0FA25AA298C7FC5CA2B5FCAE7EA280A2F307C07EA36C7FA21B0F6C6D1980A26C
1A1F6C7F1C006C6D606C6D187EA26D6C606D6D4C5A6D6D16036D6D4C5A6D6D4C5A6D01FC
4C5A6D6DEE7F806D6C6C6C4BC7FC6E01E0EC07FE020F01FEEC1FF80203903AFFE001FFF0
020091B612C0033F93C8FC030715FCDB007F14E0040101FCC9FC525479D261>67
D<BC1280A5D8000701F8C7000114C0F0001F19071901851A7F1A3F1A1FA2F20FE0A21A07
A31A03A318F81BF01A01A497C7FC1701A317031707170F177F92B6FCA59238F8007F170F
170717031701A317001B3EA31B7CA395C8FCA21BFCA21BF8A21A01A31A031BF01A071A0F
A21A1F1A3FF27FE0F101FF1907191F0603B5FCBCFCA21BC0A34F517CD058>69
D<BB12FEA5D8000701F8C700077FF0007F191F190785858586861B80A21A1FA31A0FA41B
C006F81307A497C7FCA31701A317031707170F177F92B6FCA59238F8007F170F17071703
1701A31700A795C9FCB3B812F8A54A517CD055>I<B812C0A5D8000701F8C7FCB3B3B3B2
B812C0A52A527CD132>73 D<93380FFFC00303B6FC031F15E092B712FC0203D9FC0013FF
020F01C0010F13C0023F90C7000313F0DA7FFC02007F494848ED7FFE4901E0ED1FFF4949
6F7F49496F7F4990C96C7F49854948707F4948707FA24849717E48864A83481B804A8348
1BC0A2481BE04A83A2481BF0A348497113F8A5B51AFCAF6C1BF86E5FA46C1BF0A26E5F6C
1BE0A36C6D4D13C0A26C6D4D1380A26C1B006C6D4D5A6E5E6C626D6C4C5B6D6D4B5B6D6D
4B5B6D6D4B5B6D6D4B5B6D6D4B90C7FC6D6D4B5A6D01FF02035B023F01E0011F13F0020F
01FC90B512C0020390B7C8FC020016FC031F15E0030392C9FCDB001F13E0565479D265>
79 D<BAFC19F819FF1AE086D8000701F0C7001F13FC060113FF726C13807313C0070F13
E01BF0857313F81BFCA27313FEA41BFFA81BFEA31BFC61A21BF84F13F04F13E0614F13C0
4F13004E485A061F5B92B812F01AC04FC7FC19E003F8CBFCB3AEB812C0A550527CD15C>
I<B912F0F0FF8019F819FF1AC0D8000701F0C714F0060F7F060113FE727F737F737F8573
7F87A2737FA387A863A2616363A24F5B4F5B4F90C8FC4F5A06035B060F13F095B512C092
B8C9FC19F819E019F89226F0000313FE9439007FFF80727F727F727F727F727F8684A286
84A787A71D1C75133EA38575137E73157C7513FC731401B86C6D9038F803F807039038FE
07F07390B512E0736C14C0080F1400CEEA7FFC5F537CD164>82 D<B700FE031FB512FEA5
D8001F01F0CA383FFE00F307F06D626F170F6D62811B1F6D6D601B3F6D97C7FC6F5F6D19
7E821BFE6E6D5E1A016E6D5E1A036E60701507A26E6D5E1A0F6E6D5E1A1F6E6070153FA2
6E6D93C8FC626E6E147E1AFE6F5E711301A26F6D5C19036F6D5C19076F5E71130FA26F6D
5C191F6F6D5C193F6F93C9FC715BA26FEC807E19FE706D5A18C1705C18E3705C18F318F7
70EBFFE0A2705CA2705CA37091CAFCA2705BA2715AA3715AA2715AA2715A715A5F537DD1
66>86 D<EC7FFF0107B512F0013F14FE90B77E48D9E00F7F2703FE000113F0486C6D7F6E
EB3FFC48826E131F83707FA36C496D7FA26C90C7FC6C5AC9FCA6037FB5FC020FB6FC91B7
FC01071487013FEBF0074913803901FFFC004813F0485B485B485B4890C7FC5A5BA2485A
A45EA26D5C007F151D163D6C6C02797F6C6D01F113F86C9026C003E1EBFFE06C9026F81F
C014F06C90B5487EC6ED001F011F01FC010713E0010101E090C8FC3C387CB641>97
D<EB3FF0B5FCA51203C6FCB3A4923801FFE0030F13FE033FEBFFC092B612F002F301017F
913AF7F8003FFEDAFFE0EB0FFF03806D7F92C76C7F4A6E7F4A824A6E7FA2727EA285A285
84A31A80AC1A00A44E5AA36118FF616E4A5BA26E4A5B6E4A5B6F495BDACFC04990C7FCDA
87F0EB7FFC913A03FE03FFF849C6B612E0496D148049011F01FCC8FC90C7000313C04154
7BD24B>I<913801FFF8021FEBFF8091B612F0010315FC010F9038C00FFE903A1FFE0001
FFD97FFC491380D9FFF05B4817C048495B5C5A485BA2486F138091C7FC486F1300705A48
92C8FC5BA312FFAD127F7FA27EA2EF03E06C7F17076C6D15C07E6E140F6CEE1F806C6DEC
3F006C6D147ED97FFE5C6D6CEB03F8010F9038E01FF0010390B55A01001580023F49C7FC
020113E033387CB63C>I<4DB47E0407B5FCA5EE001F1707B3A4913801FFE0021F13FC91
B6FC010315C7010F9038E03FE74990380007F7D97FFC0101B5FC49487F4849143F484980
485B83485B5A91C8FC5AA3485AA412FFAC127FA36C7EA37EA26C7F5F6C6D5C7E6C6D5C6C
6D49B5FC6D6C4914E0D93FFED90FEFEBFF80903A0FFFC07FCF6D90B5128F0101ECFE0FD9
003F13F8020301C049C7FC41547CD24B>I<913803FFC0023F13FC49B6FC010715C04901
817F903A3FFC007FF849486D7E49486D7E4849130F48496D7E48178048497F18C0488191
C7FC4817E0A248815B18F0A212FFA490B8FCA318E049CAFCA6127FA27F7EA218E06CEE01
F06E14037E6C6DEC07E0A26C6DEC0FC06C6D141F6C6DEC3F806D6CECFF00D91FFEEB03FE
903A0FFFC03FF8010390B55A010015C0021F49C7FC020113F034387CB63D>I<ED3FFC02
03B5FC020F14C0023F14E09139FFF81FF0499038C03FF849EB807F49903800FFFC495A49
5AA2495AA2EE7FF8495AEE3FF0EE0FC093C7FCAEB712E0A526007FF8C8FCB3B3A7007FB5
12FEA52E547CD329>I<DA3FFF14FF0103B5D8F00713C0010FDAFC1F13E0013FECFF7F90
267FFC0F9038FF9FF09026FFE001EBF83F48496C13E0484990387FF01F4890C7D83FF813
E0489338FC0FC0F0078048486E6CC7FCA2003F82A9001F5EA26C6C4A5AA26C5E6C6D495A
6C6D495A6C6D485BDAFC0F5B4890B6C8FCD803EF14FC01C314F02607C03F90C9FC91CBFC
A2120FA37FA213F813FE90B7FC6C16F817FF18C06C836C836C836D828448B9FC12074848
C700031480D81FF8EC003F4848150748486F13C083485A83A56D5D007F18806D5D003F18
006C6C4B5AD80FFEED1FFC6C6C6CEC7FF86C01E049485A6C01FE011F5B6C6CB71280010F
03FCC7FC010115E0D9000F01FCC8FC3C4F7CB543>I<EB3FF0B5FCA51203C6FCB3A4EE1F
FC93B512C0030314F0030F8092391FE07FFC92393F001FFE037C8003F07FDAF1E081ECF3
C0DAF7807F8502FFC7FC5CA25CA45CB3ACB6D8F807B612C0A542537BD24B>I<137F497E
000313E0487FA2487FA76C5BA26C5BC613806DC7FC90C8FCADEB3FF0B5FCA512017EB3B3
A6B612E0A51B547BD325>I<157FEDFF80020313E04A13F0A24A13F8A76E13F0A26E13E0
02001380ED7F0092C7FCADED1FF891B5FCA51401EC007FB3B3B1EA0780EA1FE0487E487E
486C13FF16F0A216E05C16C04A13806C4848130049485A003F495A000FB512F06C5C0001
148026001FFCC7FC256C87D329>I<EB3FF0B5FCA512017EB3B3B3B1B612F0A51C537BD2
25>108 D<D93FF0D91FFCEDFFE0B591B500C0010713FE030302F0011F6D7E030F6E017F
8092271FE07FFCD9FF037F922A3F001FFE01F8007F0003027C9126FF03E080C602F06DD9
0780137FDAF1E0038FC77FDAF3C0159EDAF7806D01BC143F07FC8102FFC75C4A5EA24A5E
A44A5EB3ACB6D8F807B6D8C03FB512FEA567367BB570>I<D93FF0EB1FFCB591B512C003
0314F0030F8092391FE07FFC92393F001FFE0003027C80C602F07FDAF1E081ECF3C0DAF7
807F8502FFC7FC5CA25CA45CB3ACB6D8F807B612C0A542367BB54B>I<913801FFE0021F
13FE91B612C0010315F0010F9038807FFC903A1FFC000FFED97FF86D6C7E49486D7F4849
6D7F48496D7F4A147F48834890C86C7EA24883A248486F7EA3007F1880A400FF18C0AC00
7F1880A3003F18006D5DA26C5FA26C5F6E147F6C5F6C6D4A5A6C6D495B6C6D495B6D6C49
5BD93FFE011F90C7FC903A0FFF807FFC6D90B55A010015C0023F91C8FC020113E03A387C
B643>I<90397FE003FEB590380FFF80033F13E04B13F09238FE1FF89139E1F83FFC0003
D9E3E013FEC6ECC07FECE78014EF150014EE02FEEB3FFC5CEE1FF8EE0FF04A90C7FCA55C
B3AAB612FCA52F367CB537>114 D<903903FFF00F013FEBFE1F90B7FC120348EB003FD8
0FF81307D81FE0130148487F4980127F90C87EA24881A27FA27F01F091C7FC13FCEBFFC0
6C13FF15F86C14FF16C06C15F06C816C816C81C681013F1580010F15C01300020714E0EC
003F030713F015010078EC007F00F8153F161F7E160FA27E17E07E6D141F17C07F6DEC3F
8001F8EC7F0001FEEB01FE9039FFC00FFC6DB55AD8FC1F14E0D8F807148048C601F8C7FC
2C387CB635>I<143EA6147EA414FEA21301A313031307A2130F131F133F13FF5A000F90
B6FCB8FCA426003FFEC8FCB3A9EE07C0AB011FEC0F8080A26DEC1F0015806DEBC03E6DEB
F0FC6DEBFFF86D6C5B021F5B020313802A4D7ECB34>I<D93FF8913801FFC0B50207B5FC
A50003ED001FC61607B3AE5FA35FA2017F5D173B177B6D6C14F3DC01E313F06D6CD907C3
EBFFC0903A0FFFC03F836D90B51203010114FE6D6C13F8020701E091C7FC42377BB54B>
I<B600F00107B5FCA5000101F8C8EA7FE06C6DED3F00A2017F163E6E157E013F167C6E15
FC6D5E6F13016D5E8117036D5E6F13076D5E6F130F6D5E6F131F6D93C7FC815F6E6C133E
177E023F147C6F13FC6E5C16816E5C16C3A26EEBE3E016E76E5C16FF6E5CA26E91C8FCA2
6F5AA36F5AA26F5AA26F5AA26F5A6F5A40367DB447>I E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fi cmr12 12 13
/Fi 13 117 df<121EEA7F8012FF13C0A213E0A3127FEA1E601200A413E013C0A3120113
80120313005A1206120E5A5A5A12600B1D78891B>44 D<143014F013011303131F13FFB5
FC13E713071200B3B3B0497E497E007FB6FCA3204278C131>49 D<ED0380A21507150FA2
151F153FA2157F15FFA25CEC03BF153F14071406140C141C141814301470146014C01301
1480EB03005B13065B131C13185B1370136013E0485A5B120390C7FC1206120E120C5A12
3812305A12E0B812C0A3C8383F8000ADEDFFE0027FEBFFC0A32A437DC231>52
D<14FF010713E0011F13F890387F80FC9038FC007E48487F4848EB1F804848EB0FC0000F
EC07E0485AED03F0485A16F8007F140190C713FCA25AA216FE1500A516FFA46C5CA36C7E
5D121F7F000F5C6C6C130E150C6C6C131C6C6C5BD8007C5B90383F01E090390FFF80FE90
3801FE0090C8FC150116FCA4ED03F8A216F0D80F801307486C14E0486C130F16C0ED1F80
A249EB3F0049137E001EC75A001C495A000F495A3907E01FE06CB51280C649C7FCEB1FF0
28447CC131>57 D<B612F0A3C6EBF0006D5A6D5AB3B3B3A4497E497EB612F0A31C447DC3
23>73 D<49B41303010FEBE007013F13F89039FE00FE0FD801F8131FD807E0EB079F49EB
03DF48486DB4FC48C8FC4881003E81127E82127C00FC81A282A37E82A27EA26C6C91C7FC
7F7FEA3FF813FE381FFFE06C13FE6CEBFFE06C14FC6C14FF6C15C0013F14F0010F800101
80D9001F7F14019138001FFF03031380816F13C0167F163F161F17E000C0150FA31607A3
7EA36C16C0160F7E17806C151F6C16006C5D6D147ED8FBC05CD8F9F0495AD8F07C495A90
393FC00FE0D8E00FB51280010149C7FC39C0003FF02B487BC536>83
D<EA01FC12FFA3120712031201B3EC03FC91380FFF8091383C07E091387001F89039FDE0
007E02807F01FFEC1F8091C713C049EC0FE049140717F0A2EE03F8A217FCA2160117FEAB
17FC1603A217F8A2EE07F0A26DEC0FE017C06D141F01FBEC3F80D9F380EB7E00D9E1C05B
9039E0F001F89039C03C07E09039801FFF80C7D803FCC7FC2F467DC436>98
D<EB01FE903807FFC090381F03F090387E00FC49137E48487F485A4848EB1F80000F15C0
49130F121F484814E01507A2007F15F090C7FCA25AA390B6FCA290C9FCA67EA27FA2123F
16306C7E1670000F15606D14E06C6C14C0000314016C6CEB03806C6CEB0700013E131E90
381F80F8903803FFE0010090C7FC242E7DAC2B>101 D<D801FC01FFEC1FE000FF010701
E0EBFFFC913B0F03F801E07F913C3C01FC07803F800007903C7000FE0E001FC0000349D9
7E1C130F2601FDC0D97F38804A143001FFDA3FF06D7E91C75BA2495DA3495DB3A8486C4A
6C497EB5D8F81FB50003B512E0A34B2C7DAB52>109 D<3901FC01FE00FF903807FFC091
381E07F091383801F8000701707F0003EBE0002601FDC07F5C01FF147F91C7FCA25BA35B
B3A8486CECFF80B5D8F83F13FEA32F2C7DAB36>I<3901FC03FC00FF90380FFF8091383C
07E091387001F83A07FDE000FE00030180137FD801FFEC3F8091C7EA1FC04915E049140F
17F0160717F8160317FCA3EE01FEABEE03FCA3EE07F8A217F0160F6D15E0EE1FC06D143F
17806EEB7E00D9FDC05B9039FCF003F891383C0FE091381FFF80DA03FCC7FC91C9FCAE48
7EB512F8A32F3F7DAB36>112 D<3903F803F000FFEB1FFCEC3C3EEC707F0007EBE0FF38
03F9C000015B13FBEC007E153C01FF13005BA45BB3A748B4FCB512FEA3202C7DAB26>
114 D<1306A5130EA4131EA3133E137EA213FE12011207001FB512F0B6FCA2C648C7FCB3
A4150CAA017E131C017F1318A26D133890381F8030ECC070903807E0E0903801FFC09038
007F001E3E7EBC26>116 D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fj cmr17 17.28 20
/Fj 20 121 df<120FEA3FC0EA7FE0EAFFF0A6EA7FE0EA3FC0EA0F00C7FCB3B3A2120FEA
3FC0EA7FE0EAFFF0A6EA7FE0EA3FC0EA0F000C3E74BD24>58 D<BC1280A4C601FCC81201
D93FF8DB001F13C0011F170319001A7F1A3F1A1F1A0F1A07A21A03A21BE01A01A41A00A6
1B701870A41B00A418F0A4170117031707170F177F91B7FCA402F8C7127F170F17071703
17011700A41870A31B0EA41B1C95C8FCA51B3C1B38A31B78A41BF0A31A01A21A031A07A2
F20FE01A1F1A7F1AFF1903013F171FD9FFFC0303B5FCBC12C0A44F6279E15A>69
D<B912C018FEF0FFC019F0C601FCC813FCD93FF8ED0FFF011F04037F06007FF13FF0737E
737E1907737E86731380A27313C0A31BE01A7FA21BF0A91BE0A21AFF1BC0A34F13801B00
614F5A624F5A4F5AF17FE04F5A060390C7FCF01FFE943801FFF891B812E096C8FC18F802
F8CCFCB3B3A4497E90B5FCB7FCA44C6279E15A>80 D<003FBC12F8A49126C000039038C0
000301FCC76C49EB007F01F0190F01C019074848F103FC90C81701007E1A00007C1B7CA3
00781B3CA400701B1CA600F01B1E481B0EA7C91800B3B3B3A54C7FA2041F13F84AB87EA4
57627CE160>84 D<B600FC057FB5FCA4C60280050F13F0D93FFECB000313804A953801FE
00011F62755A130F6E61010762806D4F5AA2816D4F5AA26F17076D97C7FC81027F180EA2
6F171E023F181C811B3C021F183881020F60A26F17F0020760811A016E60826E4D5AA270
15076E95C8FC82037F160EA282033F5E821A3C031F163882030F5EA27015F003075E8219
016F5E836F4B5AA27113076F93C9FC83047F140EA283043F5CA271133C041F143883040F
5CA27113F004075C831801705C188170EB8380A218C77091CAFC18E7EF7FEEA218FE715A
A3715AA2715AA3715AA3715AA260647FE163>86 D<EC3FF0903803FFFE010F6D7E90393F
C03FE090397E0007F801F86D7ED801E06D7E48486D7E48486E7E48C86C7E7F01F06E7E48
7E6D6E7EA3707EA36C5AEA03E0C9FCA6167FED7FFF020FB5FC91387FF807903801FF8090
3807FC00EB1FF0EB7FC0495AD803FEC7FC485A120F5B485A485AA2484817E0A312FF5BA2
160FA3161F6D141B007F153B16736D913971FC01C06C6C14E1001FEC01C1D80FFC903A07
80FE03806C6C903A0F00FF07002701FF807E6DB4FC27007FFFF86D5A011F01E0EB1FF801
0190C7EA07E03B417ABF42>97 D<4AB47E020F13F8023F13FE9139FF007F80D903FCEB07
E0D907F0EB01F0D91FE0EB007849488049488049C87E48485D4915FF00034B138048485C
A2485AA2485AA2003F6F130049EC007C94C7FC127FA35B12FFAD127F7FA4123F7FA2001F
EE01C07F000F16036D168012076C6C15076D160000015E6C6C151E6D6C5C6D6C5C6D6C5C
D90FF8495AD903FCEB07C0903A00FF803F8091263FFFFEC7FC020F13F80201138032417C
BF3A>99 D<EC03FE91381FFFE091B512F8903901FE03FE903A07F0007F8049486D7ED93F
C06D7E49C76C7E496E7E49140348488148481401000782491400000F8283485A1880123F
49153FA2007F17C0A35BA212FF90B8FCA30180CAFCA9127F7FA3123FA27F121FEF01C06C
7E17036C6C1680A26C6C15070001EE0F006D150E6C6C151E6D6C5C6D6C5C6D6C5CD907F0
EB03E0D903FC495A902700FF803FC7FC91383FFFFC020F13F00201138032417CBF3A>
101 D<F03F80DA03FC903801FFE091273FFFC00713F091B539F01FC1F8903B03FC03FC3E
03903A07F000FE784948EB7FE04948EB3FC04948011FEB01F049C76C6CC7FC01FE6E7EA2
48486E7EA2000382A2491401000782AA00035E6D1403A200015EA26C6C4A5AA2017F4A5A
6D6C495A6D6C495A496C49C8FCD937F013FE903973FC03FC0160B512F0D9E03F13C0DA03
FCC9FC4848CBFCA57FA27FA27F6C7E13FF91B512FE6DECFFF06D15FE6D6F7E6D16E08401
3F16FC01FEC700017FD803F8EC001FD807E0ED03FF4848030013804848167F003FEF3FC0
90CA121F127EF00FE012FE481707A66C170F007E18C0A2007F171F6C6CEE3F806C6CEE7F
00000F177ED807F04B5A6C6C4B5A6C6C4B5AD8007FED1FC0D93FE0ECFF80D90FFED90FFE
C7FC0101B612F0D9003F1480020101F0C8FC3D5E7DBF42>103 D<EB03C0EA07FFB5FCA4
1201EA007FA2133FB3AAEE7FE0923803FFFC030F13FFDB3F0013C00378EB1FE04B6D7EDA
C1C06D7EDAC3808002C7C7120302CE81170114DC14D802F86E7E5CA35CA35CB3B3496C4A
7F496C4A7FB6D8F003B612C0A442647DE349>I<133C13FF487F487FA66C5B6C90C7FC13
3C90C8FCB3A2EB03C0EA07FF127FA41201EA007FA2133FB3B3AC497E497EB612E0A41B5F
7DDE23>I<EB03C0EA07FFB5FCA41201EA007FA2133FB3AB0403B512F8A4040014809438
7FFC0018E06095C7FC177E5F17F04C5A4C5A4C5A4CC8FC163E5E5E4B5A4B5A4B5A4B5A15
1F4B7E4B7E15FF02C17F9138C3CFF8ECC7879138CF07FC9138FE03FEECFC0102F87F4A6C
7F4A137F4A80707E161F83707E160783707E160183707F177F84717E171F84717E84A284
496CEDFF80496C4A13E0B600F090B6FCA440647CE346>107 D<EB03C0EA07FFB5FCA412
01EA007FA2133FB3B3B3B3AD497E497EB612F0A41C647DE323>I<D903C0D9FFC0EC07FE
D807FF010301F891381FFFC0B5010F01FE027F13F0923D3F00FF8001F807FC0378903B3F
C003C001FEDAC1E090261FE00FC77E0001D9C3C090260FF01E6E7ED8007F49902607F81C
6E7E02C7C75CD93FCE6E6C486E7E02CC166002DC16E002D85E02F8DA01FF6F7E4A5EA24A
93C8FCA44A5DB3B3496C4A6C4B7E496C4A6D4A7EB6D8F007B6D8803FB512FCA4663F7CBE
6F>I<D903C0EB7FE0D807FF903803FFFCB5010F13FFDB3F0013C00378EB1FE04B6D7E00
01D9C1C06D7E27007FC3808002C7C71203D93FCE81170114DC14D802F86E7E5CA35CA35C
B3B3496C4A7F496C4A7FB6D8F003B612C0A4423F7DBE49>I<EDFF80020F13F8023F13FE
9139FF007F80D903FCEB1FE0D907F0EB07F0D90FC0EB01F8D93F80EB00FE49C8127F017E
81496F7E48486F7E00038349150700078348486F7EA2001F83491501A2003F83A348486F
7EA400FF1880AC007F1800A26D5DA2003F5FA36C6C4B5AA36C6C4B5A00075FA26C6C4B5A
6C6C4B5AA26C6C4B5A017F4BC7FC6D6C14FE6D6C495AD90FF0EB07F8D903FCEB1FE0D900
FFEB7F806EB5C8FC020F13F8020113C039417CBF42>I<D903C0EB7FC0D807FF903807FF
FCB5011F13FFDB7F0013C003F8EB1FF0DAC3E0EB07F80001D9C7806D7E26007FCFC76C7E
02DE6E7ED93FFC6F7E4A6F7E4A82181F4A82727E5C727EA2727EA3727EA41A8084AC4E13
00A54E5AA2611807A24E5A6E5E181F6E4B5A6E5E187F6E4B5A02DE4A90C7FC02CF4A5ADA
C780495ADAC3C0EB0FF0DAC1F0EB3FE0913AC07E01FF806FB448C8FC030F13F803001380
93CAFCB3A3497E497EB612F0A4415B7DBE49>I<9139FFE00180010FEBFC03017FEBFF07
3A01FF001FCFD803F8EB03EFD807E0EB01FF48487F4848147F48C8123F003E151F007E15
0F127CA200FC1507A316037EA27E7F6C7E6D91C7FC13F8EA3FFE381FFFF06CEBFF806C14
F86C14FF6C15C06C6C14F0011F80010714FED9007F7F02031480DA003F13C01503030013
E0167F00E0ED1FF0160F17F86C15071603A36C1501A37EA26C16F016037E17E06D14076D
EC0FC06D1580D8FDF0141FD8F8F8EC7F00013E14FC3AF01FC00FF80107B512E0D8E00114
8027C0003FF8C7FC2D417DBF34>115 D<1438A71478A414F8A31301A31303A21307130F
131FA2137F13FF1203000F90B6FCB8FCA3260007F8C8FCB3AE17E0AE6D6CEB01C0A31603
6D6C148016076D6C14006E6C5A91383FC01E91381FF07C6EB45A020313E09138007F802B
597FD733>I<007FB500C0010FB512E0A4C691C70003EBFC00D93FFE6E13E0D90FFC1680
7148C7FC01075E6D6C4A5A6D6C5D6D6D495A606E6C495A6E6C49C8FC6E6C130E171E6E6C
5B6E6C5B6E6C5B5F913801FF016EEB83C092387FC780033F90C9FC16EFED1FFE6F5A6F5A
826F7E6F7E5D834B7F92380F3FE0ED1E1F033C7F9238380FF892387807FCEDF003DA01E0
7F4A486C7E707F4A486D7E4AC7FC021E6E7E021C6E7E023C6E7E5C4A6E7E01016F7E4948
6E7E1307010F6F7F013F83D9FFF04A7F00076D4A13FCB56C020FEBFFF8A4453E80BD46>
120 D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fk cmcsc10 17.28 4
/Fk 4 109 df<942607FFE0157094B500FE15F0040FDAFFC01301047F15F04BB700FC13
0303079126800FFF1307031F9026F00001EBC00F037F01809038003FE0DBFFFCC8380FF0
1F020301F0923803F83F4A49ED00FC4A0180EE7E7F023F90CAEA3FFFDA7FFC834A488349
4983494983494983495B92CCFC491A7F495A4948193FA24948191F5A4A190F5A4A19075A
5C481B03A2485BA21C015A91CDFCA25A99C7FCA35B12FFB0127F7FA47E1DF0807EA36C7F
A26C1B016E1AE07E806C1B036E1AC06C1B076D7EF40F806D7E6D6CF11F007F6F183E6D6D
606D6D18FC6D6D606D6D4D5A6E6C4D5A6EB4EF0FC0020F6D4C5A6E01E0047FC7FC6E01F8
16FE020001FEED03FC6F6C6CEC0FF8031F01F0EC7FE00307903AFF800FFFC0030191B6C8
FC6F6C15FC040F15E0040092C9FC050713E05C6876E471>67 D<16074C7E4C7EA34C7EA3
4C7EA24C7EA34B7FA24B7F16CFA203077F1687A2DB0F077F82031F80ED1E01A2033E80ED
3C00A24B80177F03F8804B133FA20201814B131FA24A4880170F0207814B7FA2020F8292
C77EA2021E6E7FA2023E82023C80023FB7FC4A82A291B87E02F0C8123FA20101834A151F
A2494882180F0107834A81A2010F8491C97E5B86498249848001FF8400036D4B7F000F01
F0030F13FEB500FC92B612F8A44D4D7BCC58>97 D<DC7FF814380307B56C1378033F02E0
13F84AB612F802079039F007FE01021F90C7EAFF03DA3FFCEC1F87DAFFF0EC0FCF4901C0
EC03EF4949EC01FF4948C9FC4948167F4948163F4948161F017F170F495A48491607A248
4916035A91CA12015A5B001F1800A2123F5B1A78127FA34995C7FC12FFAE007F040FB612
F87FA3003FDC0003EBFE009538007FFC6D60001F183FA26C7EA27E807E6C7FA26C7F6D7E
6D7E131F6D6C167F6DB4FC6D6D15FF6D6D5C6D01F0EC03E7DA3FFCEC0FE36EB46CEB3FC1
02079039F003FF00020190B5481378DA003F02F81338030702C090C7FC9226007FFCC9FC
4D4E79CB5C>103 D<B712C0A400010280C9FC26007FFCCAFC133F5CB3B3A31978A419F8
19F0A51801A3180319E01807A2180F181F183F187FEF01FF017F150748486C027F13C0BA
FCA43D4A7AC94A>108 D E
%EndDVIPSBitmapFont
end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 600dpi
TeXDict begin
%%PaperSize: a4
%%EndSetup
%%Page: 1 1
1 0 bop 1130 416 a Fk(Cgal)42 b Fj(Extension)i(P)l(ac)l(k)-7
b(ages:)1304 599 y(The)44 b(V)-11 b(anilla)46 b(Example)1806
931 y Fi(Irene)1496 1218 y(Septem)m(b)s(er)33 b(14,)g(1999)71
1667 y Fh(1)135 b(In)l(tro)t(duction)71 1940 y Fg(Fla)n(v)n(ored)22
b(ob)5 b(jects)23 b(are)f(kno)n(wn)h(to)h(b)r(e)g(v)n(ery)e(useful)i
(in)g(computational)f(geometry)-7 b(,)23 b(esp)r(ecially)g(in)h
(industrial)f(appli-)71 2040 y(cations.)36 b(This)27
b(extension)g(pac)n(k)-5 b(age)25 b(allo)n(ws)h(one)h(to)g(create)f
(\015a)n(v)n(ored)f(ob)5 b(jects)26 b(and)h(pro)n(vides)f(an)h
(implemen)n(tation)71 2139 y(of)g(Irene's)g(Fla)n(v)n(or)f(Enhancemen)n
(t)h(algorithm)f([Ire99)o(])i(on)f(these)h(ob)5 b(jects.)71
2505 y Fh(2)135 b(Fla)l(v)l(ors)45 b(and)g(\015a)l(v)l(or)h(enhancemen)
l(t)71 2778 y Fg(#)p Ff(include)30 b Fe(<)p Ff(CEP/Vanilla/flavor.h)6
b Fe(>)71 2969 y Fg(The)32 b(follo)n(wing)g(en)n(umerated)f(t)n(yp)r(e)
i(is)f(pro)n(vided)f(in)i(the)g(header)e(\014le)i Fe(flavor.h)c
Fg(of)j(the)h(V)-7 b(anilla)32 b(pac)n(k)-5 b(age.)50
b(The)71 3069 y(functions)28 b(listed)g(here)f(are)f(precompiled)h(in)n
(to)h(the)g(library)e Fe(libVanill.a)d Fg(pro)n(vided)k(with)h(the)g
(pac)n(k)-5 b(age.)71 3285 y Ff(enum)29 b(Flavor)i Fd(f)e
Ff(VANILLA,)632 3384 y(CHOCOLATE)p 1174 3386 26 4 v 35
w(CHIP,)632 3484 y(MINT)p 864 3486 V 36 w(CHOCOLATE)p
1437 3486 V 35 w(CHIP,)632 3584 y(CHOCOLATE,)632 3683
y(STRAWBERRY,)632 3783 y(NEAPOLITAN,)632 3882 y(PEACH,)632
3982 y(ROCKY)p 947 3984 V 34 w(ROAD,)632 4082 y(PISTACHIO)8
b Fd(g)71 4397 y Ff(bool)312 b(valid)p 699 4399 V 37
w(flavor\()31 b(Flavor)h(f\))610 b Fg(is)27 b Ff(true)33
b Fg(if)28 b Ff(f)46 b Fg(is)28 b(a)f(v)-5 b(alid)28
b(\015a)n(v)n(or)d(and)j Ff(false)35 b Fg(otherwise.)71
4638 y Ff(Flavor)223 b(flavor)p 734 4640 V 37 w(enhance\()30
b(Flavor)i(f\))487 b Fg(implemen)n(ts)49 b(the)h(Fla)n(v)n(or)d
(Enhancemen)n(t)i(algorithm.)1932 4738 y(The)37 b(return)g(v)-5
b(alue)37 b(of)g(the)h(function)g(is)f(the)h(enhance-)1932
4837 y(men)n(t)28 b(of)f(\015a)n(v)n(or)f Ff(f)18 b Fg(.)71
5060 y Ff(ostream)6 b Fe(&)118 b Ff(ostream)6 b Fe(&)31
b Ff(os)f Fc(<)-14 b(<)22 b Ff(Flavor)31 b(f)506 b Fg(output)36
b(insertion)g(op)r(erator)e(for)i(\015a)n(v)n(ors.)60
b(Inserts)36 b(the)1932 5160 y(string)g(asso)r(ciated)g(with)i(the)g
(en)n(umeration)e Ff(f)55 b Fg(in)n(to)38 b Ff(os)1932
5260 y Fg(and)27 b(returns)g(the)h(mo)r(di\014ed)g(stream.)1893
5659 y(1)p eop
%%Page: 2 2
2 1 bop 71 59 a Ff(istream)6 b Fe(&)135 b Ff(istream)6
b Fe(&)31 b Ff(is)f Fc(>)-14 b(>)22 b Ff(Flavor)9 b Fe(&)31
b Ff(f)487 b Fg(input)28 b(extraction)f(op)r(erator)f(for)h(\015a)n(v)n
(ors.)35 b(Extracts)27 b(the)1932 159 y(next)37 b(string)g(from)g
Ff(is)45 b Fg(and)37 b(con)n(v)n(erts)f(it)i(to)f(the)h(corre-)1932
259 y(sp)r(onding)19 b(Fla)n(v)n(or)f(v)-5 b(alue.)35
b(If)20 b(the)g(string)g(do)r(es)f(not)h(matc)n(h)1932
358 y(an)n(y)30 b(of)i(the)g(v)-5 b(alid)32 b(\015a)n(v)n(or)d(names,)k
(the)f(v)-5 b(alue)31 b(of)h Ff(f)49 b Fg(do)r(es)1932
458 y(not)25 b(c)n(hange)f(and)h(the)g(stream)g Ff(is)32
b Fg(go)r(es)24 b(in)n(to)h(error)e(state.)71 804 y Fh(3)135
b(Reference)46 b(P)l(ages)g(for)f(V)-11 b(anilla)46 b(CEP)71
1126 y(Class)g(Flavored)p 946 1129 41 4 v 55 w(object)p
Fb(<)p Fh(O)p Fb(>)71 1494 y Fa(De\014nition)71 1684
y Fg(The)33 b(class)e Ff(Flavored)p 763 1686 26 4 v 37
w(object)8 b Fe(<)p Ff(O)g Fe(>)33 b Fg(is)f(a)g(templated)h(class)f
(that)h(is)g(deriv)n(ed)f(from)g(the)h(class)f(of)g(its)h(template)g
(ar-)71 1783 y(gumen)n(t.)58 b(It)35 b(adds)g(a)f(\015a)n(v)n(or)f(to)h
(the)h(ob)5 b(ject)35 b(and)g(pro)n(vides)e(mem)n(b)r(er)i(functions)g
(for)f(\015a)n(v)n(or)f(enhancemen)n(t)h(and)71 1883
y(for)29 b(c)n(hec)n(king)g(the)i(v)-5 b(alidit)n(y)30
b(of)g(the)g(\015a)n(v)n(or,)f(as)g(w)n(ell)h(as)f(functions)i(for)e
(setting)h(and)g(retrieving)f(the)i(\015a)n(v)n(or)d(of)i(the)71
1983 y(ob)5 b(ject.)71 2173 y(#)p Ff(include)30 b Fe(<)p
Ff(CEP/Vanilla/Flavored)p 1302 2175 V 40 w(object.h)6
b Fe(>)71 2458 y Fa(Creation)71 2672 y Ff(Flavored)p
388 2674 V 37 w(object)i Fe(<)p Ff(O)g Fe(>)59 b Ff(fo)5
b Fg(;)1033 b(an)27 b(un\015a)n(v)n(ored)f(empt)n(y)i(ob)5
b(ject)27 b Ff(fo)71 2910 y(Flavored)p 388 2912 V 37
w(object)8 b Fe(<)p Ff(O)g Fe(>)59 b Ff(fo)5 b(\()30
b(Flavor)i(f)18 b(\);)626 b(fo)34 b Fg(is)27 b(an)g(empt)n(y)h(ob)5
b(ject)27 b(with)i(\015a)n(v)n(or)c Ff(f)71 3148 y(Flavored)p
388 3150 V 37 w(object)8 b Fe(<)p Ff(O)g Fe(>)59 b Ff(fo)5
b(\()30 b(Object)g(o)5 b(\);)625 b(fo)34 b Fg(is)27 b(a)g(V)-9
b(ANILLA)29 b(ob)5 b(ject)27 b(with)h(v)-5 b(alue)27
b Ff(o)71 3385 y(Flavored)p 388 3387 V 37 w(object)8
b Fe(<)p Ff(O)g Fe(>)59 b Ff(fo)5 b(\()30 b(Object)g(o,)h(Flavor)g(f)18
b(\);)268 b(fo)34 b Fg(is)27 b(an)g(ob)5 b(ject)28 b(with)g(v)-5
b(alue)27 b Ff(o)34 b Fg(and)27 b(\015a)n(v)n(or)f Ff(f)71
3695 y Fa(Op)s(erations)71 3909 y Ff(void)213 b(fo)5
b(.set)p 633 3911 V 36 w(flavor\()32 b(Flavor)f(f\))331
b Fg(mak)n(es)27 b Ff(fo)34 b Fg(an)27 b(ob)5 b(ject)27
b(with)h(\015a)n(v)n(or)e Ff(f)1586 4008 y(Pr)l(e)l(c)l(ondition)p
Fg(:)38 b Ff(f)46 b Fg(m)n(ust)28 b(b)r(e)g(a)f(v)-5
b(alid)28 b(\015a)n(v)n(or)71 4233 y Ff(void)213 b(fo)5
b(.enhance)p 825 4235 V 38 w(flavor\(\))457 b Fg(enhances)27
b Ff(fo)5 b Fg('s)29 b(\015a)n(v)n(or)71 4471 y Ff(bool)217
b(fo)5 b(.is)p 592 4473 V 37 w(valid\(\))726 b Fg(determines)28
b(if)g Ff(fo)5 b Fg('s)28 b(\015a)n(v)n(or)e(is)h(v)-5
b(alid)71 4709 y Ff(Flavor)128 b(fo)5 b(.flavor\(\))787
b Fg(retriev)n(es)26 b Ff(fo)5 b Fg('s)29 b(\015a)n(v)n(or)71
5097 y Fh(References)71 5311 y Fg([Ire99])153 b(Irene.)36
b Ff(Flavor)31 b(Enhanc)l(ement)f(for)g(F)-6 b(un)29
b(and)h(Pr)l(o\014t)p Fg(.)37 b(Morgan-Kaufmann,)25 b(San)j(Mateo,)f
(CA,)h(1999.)1893 5659 y(2)p eop
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF

View File

@ -0,0 +1,46 @@
#ifndef FLAVORED_OBJECT_H
#define FLAVORED_OBJECT_H
#include <CEP/Vanilla/flavor.h>
template <class Object>
class Flavored_object : public Object
{
public:
Flavored_object()
{ }
Flavored_object(Flavor f) : _flavor(f)
{ }
Flavored_object(Object o) : Object(o), _flavor(VANILLA)
{ }
Flavored_object(Object o, Flavor f): Object(o), _flavor(f)
{ }
void set_flavor(Flavor f)
{
_flavor = f;
}
void enhance_flavor()
{
_flavor = flavor_enhance(_flavor);
}
bool is_valid() const
{
return valid_flavor(_flavor);
}
Flavor flavor() const
{
return _flavor;
}
private:
Flavor _flavor;
};
#endif // FLAVORED_OBJECT_H

View File

@ -0,0 +1,19 @@
#ifndef FLAVOR_H
#define FLAVOR_H
#include <CGAL/config.h>
#include <iostream>
enum Flavor {VANILLA, CHOCOLATE_CHIP, MINT_CHOCOLATE_CHIP, CHOCOLATE,
STRAWBERRY, NEAPOLITAN, PEACH, ROCKY_ROAD, PISTACHIO};
bool valid_flavor(Flavor f);
Flavor flavor_enhance(Flavor f);
std::ostream& operator<<(std::ostream& os, Flavor f);
std::istream& operator>>(std::istream& is, Flavor& f);
#endif // FLAVOR_H

View File

@ -0,0 +1,49 @@
# This is the makefile for compiling and installing the library libVanill.a
#---------------------------------------------------------------------#
# include platform specific settings
#---------------------------------------------------------------------#
# Choose the right include file from the <cgalroot>/make directory.
#CGAL_MAKEFILE =
include $(CGAL_MAKEFILE)
#---------------------------------------------------------------------#
# directory where CGAL is installed
#---------------------------------------------------------------------#
#CGAL_HOME=
#---------------------------------------------------------------------#
# installation program
#---------------------------------------------------------------------#
INSTALL = cp
INSTALL_FLAGS = -R
#---------------------------------------------------------------------#
# target entries
#---------------------------------------------------------------------#
library:
cd src; make
install:
$(INSTALL) $(INSTALL_FLAGS) include/* $(CGAL_HOME)/include
$(INSTALL) $(INSTALL_FLAGS) lib/* $(CGAL_HOME)/lib/$(CGAL_OS_COMPILER)
clean:
cd src; make clean
cd test_suite; make clean
really_clean:
cd src; make really_clean
cd test_suite; make really_clean
rm -f lib/libVanill.a
#---------------------------------------------------------------------#
# suffix rules
#---------------------------------------------------------------------#
.C.o:
$(CC) $(CXXFLAGS) -c $<

View File

@ -0,0 +1,64 @@
#include <CEP/Vanilla/flavor.h>
#include <LEDA/string.h>
// is f one of the valid flavors
bool valid_flavor(Flavor f)
{
return (VANILLA <= f && f <= PISTACHIO);
}
//
// implementation of the complicated flavor_enhancement algorithm of
// Irene, et al.
//
// Precondition: f is valid
//
Flavor flavor_enhance(Flavor f)
{
return f = (PISTACHIO == f) ? VANILLA : Flavor(f+1);
}
std::ostream& operator<<(std::ostream& os, Flavor f)
{
switch (f)
{
case VANILLA: os << "VANILLA"; break;
case CHOCOLATE_CHIP: os << "CHOCOLATE_CHIP"; break;
case MINT_CHOCOLATE_CHIP: os << "MINT_CHOCOLATE_CHIP"; break;
case CHOCOLATE: os << "CHOCOLATE"; break;
case STRAWBERRY: os << "STRAWBERRY"; break;
case NEAPOLITAN: os << "NEAPOLITAN"; break;
case PEACH: os << "PEACH"; break;
case ROCKY_ROAD: os << "ROCKY_ROAD"; break;
case PISTACHIO: os << "PISTACHIO"; break;
}
return os;
}
std::istream& operator>>(std::istream& is, Flavor& f)
{
leda_string name;
is >> name;
if (name == "VANILLA")
f = VANILLA;
else if (name == "CHOCOLATE_CHIP")
f = CHOCOLATE_CHIP;
else if (name == "MINT_CHOCOLATE_CHIP")
f = MINT_CHOCOLATE_CHIP;
else if (name == "CHOCOLATE")
f = CHOCOLATE;
else if (name == "STRAWBERRY")
f = STRAWBERRY;
else if (name == "NEAPOLITAN")
f = NEAPOLITAN;
else if (name == "PEACH")
f = PEACH;
else if (name == "ROCKY_ROAD")
f = ROCKY_ROAD;
else if (name == "PISTACHIO")
f = PISTACHIO;
else
is.clear(std::ios::badbit);
return is;
}

View File

@ -0,0 +1,54 @@
# This is the makefile for compiling the library libVanill.a
#---------------------------------------------------------------------#
# the library name
#---------------------------------------------------------------------#
LIB_NAME = libVanill.a
#---------------------------------------------------------------------#
# include platform specific settings
#---------------------------------------------------------------------#
# Choose the right include file from the <cgalroot>/make directory.
#CGAL_MAKEFILE =
include $(CGAL_MAKEFILE)
#---------------------------------------------------------------------#
# compiler flags
#---------------------------------------------------------------------#
#
CC = $(CGAL_CXX)
CXXFLAGS = \
-I../include \
$(CGAL_CXXFLAGS) \
-g
#---------------------------------------------------------------------#
# target entries
#---------------------------------------------------------------------#
LIB_OBJECTS = flavor.o
all: $(LIB_OBJECTS)
rm -f $(LIB_NAME)
ar rcv $(LIB_NAME) $(LIB_OBJECTS)
mv $(LIB_NAME) ../lib
flavor.o: \
../include/CEP/Vanilla/flavor.h
clean:
/bin/rm -f *.o \
core
really_clean: clean
#---------------------------------------------------------------------#
# suffix rules
#---------------------------------------------------------------------#
.C.o:
$(CC) $(CXXFLAGS) -c $<

View File

@ -0,0 +1,80 @@
# This is the makefile for compiling a CGAL application.
#---------------------------------------------------------------------#
# include platform specific settings
#---------------------------------------------------------------------#
# Choose the right include file from the <cgalroot>/make directory.
#CGAL_MAKEFILE =
include $(CGAL_MAKEFILE)
#---------------------------------------------------------------------#
# compiler flags
#---------------------------------------------------------------------#
#
CC = $(CGAL_CXX)
CXXFLAGS = \
-I../include \
$(CGAL_CXXFLAGS) \
-g
#---------------------------------------------------------------------#
# linker flags
#---------------------------------------------------------------------#
LDFLAGS = \
-L../lib -lVanill \
$(CGAL_WINDOW_LDFLAGS)
#---------------------------------------------------------------------#
# target entries
#---------------------------------------------------------------------#
TARGETS = vanilla_test1 vanilla_test2 vanilla_test3
TEST1_OBJECTS = vanilla_test1.o
TEST2_OBJECTS = vanilla_test2.o
TEST3_OBJECTS = vanilla_test3.o
all: $(TARGETS)
vanilla_test1 : $(TEST1_OBJECTS)
$(CC) -o vanilla_test1 $(TEST1_OBJECTS) $(LDFLAGS)
vanilla_test2 : $(TEST2_OBJECTS)
$(CC) -o vanilla_test2 $(TEST2_OBJECTS) $(LDFLAGS)
vanilla_test3 : $(TEST3_OBJECTS)
$(CC) -o vanilla_test3 $(TEST3_OBJECTS) $(LDFLAGS)
vanilla_test1.o: vanilla_test1.C\
../include/CEP/Vanilla/Flavored_object.h
vanilla_test2.o: vanilla_test2.C\
../include/CEP/Vanilla/Flavored_object.h
vanilla_test3.o: vanilla_test3.C\
../include/CEP/Vanilla/Flavored_object.h
flavor.o: \
../include/CEP/Vanilla/flavor.h
clean:
/bin/rm -f *.o \
core
really_clean: clean
/bin/rm -f *.out \
$(TARGETS)
#---------------------------------------------------------------------#
# suffix rules
#---------------------------------------------------------------------#
.C.o:
$(CC) $(CXXFLAGS) -c $<

View File

@ -0,0 +1,39 @@
#include <CGAL/basic.h>
#include <CEP/Vanilla/Flavored_object.h>
#include <CGAL/Cartesian.h>
#include <CGAL/Point_2.h>
#include <CGAL/Circle_2.h>
typedef double NT;
typedef CGAL::Cartesian<NT> R;
typedef CGAL::Circle_2<R> Circle;
typedef CGAL::Point_2<R> Center;
typedef Flavored_object<Circle> Scoop;
int main(int argc, char** argv)
{
Scoop ice_cream;
ice_cream.set_flavor(PISTACHIO);
if (! ice_cream.is_valid() || ice_cream.flavor() != PISTACHIO)
exit (1);
ice_cream.enhance_flavor();
if (! ice_cream.is_valid() || ice_cream.flavor() != VANILLA )
exit(1);
Scoop vanilla_scoop = Scoop(Circle(Center(3,2),8));
if (!vanilla_scoop.is_valid() || vanilla_scoop.flavor() != VANILLA)
exit (1);
Scoop chocolate_scoop(CHOCOLATE);
if (!chocolate_scoop.is_valid() || chocolate_scoop.flavor() != CHOCOLATE)
exit (1);
Scoop peach = Scoop(Circle(Center(0,0),16),PEACH);
if (!peach.is_valid() || peach.flavor() != PEACH)
exit (1);
exit (0);
}

View File

@ -0,0 +1,52 @@
#include <CGAL/basic.h>
#include <vector>
#include <algorithm>
#include <CEP/Vanilla/Flavored_object.h>
#include <CGAL/Homogeneous.h>
#include <CGAL/Point_2.h>
#include <CGAL/Random.h>
#include <CGAL/point_generators_2.h>
#include <CGAL/copy_n.h>
#include <CGAL/random_selection.h>
#include <CGAL/function_objects.h>
typedef double NT;
typedef CGAL::Homogeneous<NT> R;
typedef CGAL::Point_2<R> Point;
typedef CGAL::Creator_uniform_2<NT,Point> Creator;
typedef std::vector<Point> Points;
typedef Points::iterator Point_it;
typedef Flavored_object<Point> Flavored_point;
int main(int argc, char** argv)
{
Points points;
Point_it point_it;
CGAL::Random random;
int min_flavor = static_cast<int>(VANILLA);
int max_flavor = static_cast<int>(PISTACHIO);
points.reserve(100);
CGAL::Random_points_in_disc_2<Point,Creator> g(1.0);
CGAL::copy_n(g, 90, std::back_inserter(points));
CGAL::random_collinear_points_2(points.begin(), points.end(), 10,
std::back_inserter(points));
std::random_shuffle(points.begin(), points.end(), CGAL::default_random);
for (point_it = points.begin(); point_it != points.end() ; point_it++)
{
Flavored_point flav_pt(*point_it);
flav_pt.set_flavor(static_cast<Flavor>(random.get_int(min_flavor,
max_flavor+1)));
flav_pt.enhance_flavor();
if (! flav_pt.is_valid())
{
exit (1);
}
}
exit (0);
}

View File

@ -0,0 +1,40 @@
#include <CGAL/basic.h>
#include <iostream>
#include <fstream>
#include <CEP/Vanilla/Flavored_object.h>
int main(int argc, char** argv)
{
if (argc != 2)
{
std::cerr << "Usage: " << argv[0] << " <answer_file>" << std::endl;
exit(1);
}
std::ifstream answers(argv[1]);
if (!answers)
{
std::cerr << argv[1] << ": no such file or directory" << std::endl;
exit(1);
}
Flavor orig_f, f;
Flavor right_f;
std::cin >> orig_f;
f = orig_f;
do
{
answers >> right_f;
if (!answers || f != right_f)
{
std::cerr << f << " != " << right_f << std::endl;
exit(1);
}
f = flavor_enhance(f);
}
while (f != orig_f);
exit (0);
}

View File

@ -0,0 +1 @@
MINT_CHOCOLATE_CHIP

View File

@ -0,0 +1 @@
vanilla_test3.cout

View File

@ -0,0 +1,9 @@
MINT_CHOCOLATE_CHIP
CHOCOLATE
STRAWBERRY
NEAPOLITAN
PEACH
ROCKY_ROAD
PISTACHIO
VANILLA
CHOCOLATE_CHIP