blob: 06a3c8c028fe349a47dc3b92c614b21537f03719 [file]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
--><html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>Apache log4cxx: TelnetAppender Class Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.6 -->
<div class="tabs">
<ul>
<li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li id="current"><a href="classes.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li><a href="classes.html"><span>Alphabetical&nbsp;List</span></a></li>
<li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
<li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
</ul></div>
<div class="nav">
<a class="el" href="namespacelog4cxx.html">log4cxx</a>::<a class="el" href="namespacelog4cxx_1_1net.html">net</a>::<a class="el" href="classlog4cxx_1_1net_1_1_telnet_appender.html">TelnetAppender</a></div>
<h1>TelnetAppender Class Reference</h1><!-- doxytag: class="log4cxx::net::TelnetAppender" --><!-- doxytag: inherits="log4cxx::AppenderSkeleton" -->Inherits <a class="el" href="classlog4cxx_1_1_appender_skeleton.html">AppenderSkeleton</a>.
<p>
<a href="classlog4cxx_1_1net_1_1_telnet_appender-members.html">List of all members.</a><hr><a name="_details"></a><h2>Detailed Description</h2>
The <a class="el" href="classlog4cxx_1_1net_1_1_telnet_appender.html">TelnetAppender</a> is a <a class="el" href="namespacelog4cxx.html">log4cxx</a> appender that specializes in writing to a read-only socket. The output is provided in a telnet-friendly way so that a log can be monitored over TCP/IP. Clients using telnet connect to the socket and receive log data. This is handy for remote monitoring, especially when monitoring a servlet.<p>
Here is a list of the available configuration options:<p>
<table border="1>" cellspacing="3" cellpadding="3">
<tr>
<td align="center>"><b>Name</b> </td><td align="center>"><b>Requirement</b> </td><td align="center>"><b>Description</b> </td><td align="center>"><b>Sample Value</b> <p>
</td></tr>
<tr>
<td>Port </td><td>optional </td><td>This parameter determines the port to use for announcing log events. The default port is 23 (telnet). </td><td>5875 </td></tr>
</table>
<p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlog4cxx_1_1net_1_1_telnet_appender.html#e0009150f0995397dc58daf340c320fb">TelnetAppender</a> ()</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlog4cxx_1_1net_1_1_telnet_appender.html#579e4db7eaf0d6cf617a1ffb7664dc0d">~TelnetAppender</a> ()</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlog4cxx_1_1net_1_1_telnet_appender.html#4312e727a9ea814779d2c9950dc3c73e">requiresLayout</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This appender requires a layout to format the text to the attached client(s). <a href="#4312e727a9ea814779d2c9950dc3c73e"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="namespacelog4cxx.html#d7ec98d27bca7666e23f27dd1fb181c8">LogString</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlog4cxx_1_1net_1_1_telnet_appender.html#7b5502ee1e14732e5c6817372f076497">getEncoding</a> () const </td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlog4cxx_1_1net_1_1_telnet_appender.html#d61a2dfe920558b5d2057d1ca8a8df3a">setEncoding</a> (const <a class="el" href="namespacelog4cxx.html#d7ec98d27bca7666e23f27dd1fb181c8">LogString</a> &amp;value)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlog4cxx_1_1net_1_1_telnet_appender.html#a3df68f8aae152299471992071e202f5">activateOptions</a> (<a class="el" href="classlog4cxx_1_1helpers_1_1_pool.html">log4cxx::helpers::Pool</a> &amp;p)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">all of the options have been set, create the socket handler and wait for connections. <a href="#a3df68f8aae152299471992071e202f5"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlog4cxx_1_1net_1_1_telnet_appender.html#ee5023c29cca9dc68164b22a01cb7c6e">setOption</a> (const <a class="el" href="namespacelog4cxx.html#d7ec98d27bca7666e23f27dd1fb181c8">LogString</a> &amp;option, const <a class="el" href="namespacelog4cxx.html#d7ec98d27bca7666e23f27dd1fb181c8">LogString</a> &amp;value)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set options. <a href="#ee5023c29cca9dc68164b22a01cb7c6e"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlog4cxx_1_1net_1_1_telnet_appender.html#5e4fc3488ccbe0511b7e7a1b3ca873cf">getPort</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns value of the <b>Port</b> option. <a href="#5e4fc3488ccbe0511b7e7a1b3ca873cf"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlog4cxx_1_1net_1_1_telnet_appender.html#ea5168a8793a0d18d65a94d84904a2fb">setPort</a> (int port1)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The <b>Port</b> option takes a positive integer representing the port where the server is waiting for connections. <a href="#ea5168a8793a0d18d65a94d84904a2fb"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlog4cxx_1_1net_1_1_telnet_appender.html#5ae591df94fc66ccb85cbb6565368bca">close</a> ()</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">shuts down the appender. <a href="#5ae591df94fc66ccb85cbb6565368bca"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlog4cxx_1_1net_1_1_telnet_appender.html#c0184656854a0362e99b46512b6a1761">append</a> (const <a class="el" href="classlog4cxx_1_1helpers_1_1_object_ptr_t.html">spi::LoggingEventPtr</a> &amp;event, <a class="el" href="classlog4cxx_1_1helpers_1_1_pool.html">log4cxx::helpers::Pool</a> &amp;p)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Handles a log event. <a href="#c0184656854a0362e99b46512b6a1761"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">class&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlog4cxx_1_1net_1_1_telnet_appender.html#a3a167a015ca337769b3873aba4e8fdb">SocketHandler</a></td></tr>
</table>
<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="e0009150f0995397dc58daf340c320fb"></a><!-- doxytag: member="log4cxx::net::TelnetAppender::TelnetAppender" ref="e0009150f0995397dc58daf340c320fb" args="()" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"><a class="el" href="classlog4cxx_1_1net_1_1_telnet_appender.html">TelnetAppender</a> </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="mdname1" valign="top" nowrap> </td>
<td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
</td>
</tr>
</table>
<a class="anchor" name="579e4db7eaf0d6cf617a1ffb7664dc0d"></a><!-- doxytag: member="log4cxx::net::TelnetAppender::~TelnetAppender" ref="579e4db7eaf0d6cf617a1ffb7664dc0d" args="()" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">~<a class="el" href="classlog4cxx_1_1net_1_1_telnet_appender.html">TelnetAppender</a> </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="mdname1" valign="top" nowrap> </td>
<td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
</td>
</tr>
</table>
<hr><h2>Member Function Documentation</h2>
<a class="anchor" name="a3df68f8aae152299471992071e202f5"></a><!-- doxytag: member="log4cxx::net::TelnetAppender::activateOptions" ref="a3df68f8aae152299471992071e202f5" args="(log4cxx::helpers::Pool &amp;p)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">void activateOptions </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top"><a class="el" href="classlog4cxx_1_1helpers_1_1_pool.html">log4cxx::helpers::Pool</a> &amp;&nbsp;</td>
<td class="mdname1" valign="top" nowrap> <em>p</em> </td>
<td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap><code> [virtual]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
all of the options have been set, create the socket handler and wait for connections.
<p>
<p>
Reimplemented from <a class="el" href="classlog4cxx_1_1_appender_skeleton.html#be1aa95ede9cc9d0609905154129c0ba">AppenderSkeleton</a>. </td>
</tr>
</table>
<a class="anchor" name="c0184656854a0362e99b46512b6a1761"></a><!-- doxytag: member="log4cxx::net::TelnetAppender::append" ref="c0184656854a0362e99b46512b6a1761" args="(const spi::LoggingEventPtr &amp;event, log4cxx::helpers::Pool &amp;p)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">virtual void append </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">const <a class="el" href="classlog4cxx_1_1helpers_1_1_object_ptr_t.html">spi::LoggingEventPtr</a> &amp;&nbsp;</td>
<td class="mdname" nowrap> <em>event</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap><a class="el" href="classlog4cxx_1_1helpers_1_1_pool.html">log4cxx::helpers::Pool</a> &amp;&nbsp;</td>
<td class="mdname" nowrap> <em>p</em></td>
</tr>
<tr>
<td class="md"></td>
<td class="md">)&nbsp;</td>
<td class="md" colspan="2"><code> [protected, virtual]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Handles a log event.
<p>
For this appender, that means writing the message to each connected client.
<p>
Implements <a class="el" href="classlog4cxx_1_1_appender_skeleton.html#4c08a91d859f636117f07463bb53fe41">AppenderSkeleton</a>. </td>
</tr>
</table>
<a class="anchor" name="5ae591df94fc66ccb85cbb6565368bca"></a><!-- doxytag: member="log4cxx::net::TelnetAppender::close" ref="5ae591df94fc66ccb85cbb6565368bca" args="()" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">void close </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="mdname1" valign="top" nowrap> </td>
<td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap><code> [virtual]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
shuts down the appender.
<p>
<p>
Implements <a class="el" href="classlog4cxx_1_1_appender.html#f6ee7eacbde6b379b68d954e44f6e549">Appender</a>. </td>
</tr>
</table>
<a class="anchor" name="7b5502ee1e14732e5c6817372f076497"></a><!-- doxytag: member="log4cxx::net::TelnetAppender::getEncoding" ref="7b5502ee1e14732e5c6817372f076497" args="() const " --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"><a class="el" href="namespacelog4cxx.html#d7ec98d27bca7666e23f27dd1fb181c8">LogString</a> getEncoding </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="mdname1" valign="top" nowrap> </td>
<td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap> const</td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
</td>
</tr>
</table>
<a class="anchor" name="5e4fc3488ccbe0511b7e7a1b3ca873cf"></a><!-- doxytag: member="log4cxx::net::TelnetAppender::getPort" ref="5e4fc3488ccbe0511b7e7a1b3ca873cf" args="() const " --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">int getPort </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="mdname1" valign="top" nowrap> </td>
<td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap> const<code> [inline]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Returns value of the <b>Port</b> option.
<p>
</td>
</tr>
</table>
<a class="anchor" name="4312e727a9ea814779d2c9950dc3c73e"></a><!-- doxytag: member="log4cxx::net::TelnetAppender::requiresLayout" ref="4312e727a9ea814779d2c9950dc3c73e" args="() const " --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">virtual bool requiresLayout </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="mdname1" valign="top" nowrap> </td>
<td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap> const<code> [inline, virtual]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
This appender requires a layout to format the text to the attached client(s).
<p>
<p>
Implements <a class="el" href="classlog4cxx_1_1_appender.html#1fa0a21a0f0a6ec3a9e92a98db9ffa85">Appender</a>. </td>
</tr>
</table>
<a class="anchor" name="d61a2dfe920558b5d2057d1ca8a8df3a"></a><!-- doxytag: member="log4cxx::net::TelnetAppender::setEncoding" ref="d61a2dfe920558b5d2057d1ca8a8df3a" args="(const LogString &amp;value)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">void setEncoding </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">const <a class="el" href="namespacelog4cxx.html#d7ec98d27bca7666e23f27dd1fb181c8">LogString</a> &amp;&nbsp;</td>
<td class="mdname1" valign="top" nowrap> <em>value</em> </td>
<td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
</td>
</tr>
</table>
<a class="anchor" name="ee5023c29cca9dc68164b22a01cb7c6e"></a><!-- doxytag: member="log4cxx::net::TelnetAppender::setOption" ref="ee5023c29cca9dc68164b22a01cb7c6e" args="(const LogString &amp;option, const LogString &amp;value)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">virtual void setOption </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">const <a class="el" href="namespacelog4cxx.html#d7ec98d27bca7666e23f27dd1fb181c8">LogString</a> &amp;&nbsp;</td>
<td class="mdname" nowrap> <em>option</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>const <a class="el" href="namespacelog4cxx.html#d7ec98d27bca7666e23f27dd1fb181c8">LogString</a> &amp;&nbsp;</td>
<td class="mdname" nowrap> <em>value</em></td>
</tr>
<tr>
<td class="md"></td>
<td class="md">)&nbsp;</td>
<td class="md" colspan="2"><code> [virtual]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Set options.
<p>
<p>
Reimplemented from <a class="el" href="classlog4cxx_1_1_appender_skeleton.html#ee5023c29cca9dc68164b22a01cb7c6e">AppenderSkeleton</a>. </td>
</tr>
</table>
<a class="anchor" name="ea5168a8793a0d18d65a94d84904a2fb"></a><!-- doxytag: member="log4cxx::net::TelnetAppender::setPort" ref="ea5168a8793a0d18d65a94d84904a2fb" args="(int port1)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">void setPort </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">int&nbsp;</td>
<td class="mdname1" valign="top" nowrap> <em>port1</em> </td>
<td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap><code> [inline]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
The <b>Port</b> option takes a positive integer representing the port where the server is waiting for connections.
<p>
</td>
</tr>
</table>
<hr><h2>Friends And Related Function Documentation</h2>
<a class="anchor" name="a3a167a015ca337769b3873aba4e8fdb"></a><!-- doxytag: member="log4cxx::net::TelnetAppender::SocketHandler" ref="a3a167a015ca337769b3873aba4e8fdb" args="" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">friend class SocketHandler<code> [friend]</code> </td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
</td>
</tr>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="telnetappender_8h.html">telnetappender.h</a></ul>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
</BODY>
</HTML>