<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>SpotGnome.com - Programming</title>
    <link>http://www.spotgnome.com/</link>
    <description>Spot the web</description>
    <language>en-us</language>
    <copyright>Guy Levin</copyright>
    <lastBuildDate>Mon, 17 Mar 2008 08:33:41 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.2.8279.16125</generator>
    <managingEditor>guy@commerix.com</managingEditor>
    <webMaster>guy@commerix.com</webMaster>
    <item>
      <trackback:ping>http://www.spotgnome.com/Trackback.aspx?guid=0ba21ae4-1d36-40f1-9c92-7cc2f8f8b22f</trackback:ping>
      <pingback:server>http://www.spotgnome.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.spotgnome.com/PermaLink,guid,0ba21ae4-1d36-40f1-9c92-7cc2f8f8b22f.aspx</pingback:target>
      <dc:creator>Guy Levin</dc:creator>
      <wfw:comment>http://www.spotgnome.com/CommentView,guid,0ba21ae4-1d36-40f1-9c92-7cc2f8f8b22f.aspx</wfw:comment>
      <wfw:commentRss>http://www.spotgnome.com/SyndicationService.asmx/GetEntryCommentsRss?guid=0ba21ae4-1d36-40f1-9c92-7cc2f8f8b22f</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
If you've done any Ajax development then you know that much of the loading of data
is done in the background. This is great from a developers stand point, but from a
users stand point it can be confusing as to what is happening while the data is being
loaded. The solution to this is to show a loading indicator.
</p>
        <p>
A loading indicator is a great idea and a nice animated image that could be hidden
would be nice. However, if you are like most developers making a nice animated image
may not be your strongest point. Well, today while seeing what was getting bookmarked
on del.icio.us, using the <a href="http://www.ajaxonomy.com/deliciousspy">del.icio.us
Spy</a>, I found an interesting and simple service that makes it very easy to get
a nice looking loading indicator.
</p>
        <p>
        </p>
        <center>
          <a href="http://www.ajaxload.info/">
            <img src="http://www.ajaxonomy.com/files/loading.jpg" border="0" />
          </a>
        </center>
        <p>
        </p>
        <p>
The service is call Ajaxload and is very easy to use. You simply choose the loading
icon that you like and the background/foreground colors (you can even have the background
transparent). Then you just save it to your computer using the "Download It" button
and then you have your own customized loading indicator.
</p>
        <p>
You can go to the service by clicking <a href="http://www.ajaxload.info/">here</a>.
</p>
        <p>
If you have used this or a similar service I would love to hear about your experience
with it (you can leave a comment, or if you would like you can write a blog post about
it on this blog, using your free Ajaxonomy account). So, remember that your users
would love to see a loading indicator when it is appropriate.
</p>
        <img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=0ba21ae4-1d36-40f1-9c92-7cc2f8f8b22f" />
      </body>
      <title>Quick Ajax Loading Icons</title>
      <guid isPermaLink="false">http://www.spotgnome.com/PermaLink,guid,0ba21ae4-1d36-40f1-9c92-7cc2f8f8b22f.aspx</guid>
      <link>http://www.spotgnome.com/2008/03/17/QuickAjaxLoadingIcons.aspx</link>
      <pubDate>Mon, 17 Mar 2008 08:33:41 GMT</pubDate>
      <description>&lt;p&gt;
If you've done any Ajax development then you know that much of the loading of data
is done in the background. This is great from a developers stand point, but from a
users stand point it can be confusing as to what is happening while the data is being
loaded. The solution to this is to show a loading indicator.
&lt;/p&gt;
&lt;p&gt;
A loading indicator is a great idea and a nice animated image that could be hidden
would be nice. However, if you are like most developers making a nice animated image
may not be your strongest point. Well, today while seeing what was getting bookmarked
on del.icio.us, using the &lt;a href="http://www.ajaxonomy.com/deliciousspy"&gt;del.icio.us
Spy&lt;/a&gt;, I found an interesting and simple service that makes it very easy to get
a nice looking loading indicator.
&lt;/p&gt;
&lt;p&gt;
&lt;center&gt;&lt;a href="http://www.ajaxload.info/"&gt;&lt;img src="http://www.ajaxonomy.com/files/loading.jpg" border=0&gt;&lt;/a&gt;
&lt;/center&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
The service is call Ajaxload and is very easy to use. You simply choose the loading
icon that you like and the background/foreground colors (you can even have the background
transparent). Then you just save it to your computer using the "Download It" button
and then you have your own customized loading indicator.
&lt;/p&gt;
&lt;p&gt;
You can go to the service by clicking &lt;a href="http://www.ajaxload.info/"&gt;here&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
If you have used this or a similar service I would love to hear about your experience
with it (you can leave a comment, or if you would like you can write a blog post about
it on this blog, using your free Ajaxonomy account). So, remember that your users
would love to see a loading indicator when it is appropriate.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=0ba21ae4-1d36-40f1-9c92-7cc2f8f8b22f" /&gt;</description>
      <comments>http://www.spotgnome.com/CommentView,guid,0ba21ae4-1d36-40f1-9c92-7cc2f8f8b22f.aspx</comments>
      <category>AJAX</category>
      <category>Programming</category>
      <category>Web 2.0</category>
      <category>Web Design</category>
    </item>
    <item>
      <trackback:ping>http://www.spotgnome.com/Trackback.aspx?guid=2846a8c1-1380-4c86-a191-6f39bba56cba</trackback:ping>
      <pingback:server>http://www.spotgnome.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.spotgnome.com/PermaLink,guid,2846a8c1-1380-4c86-a191-6f39bba56cba.aspx</pingback:target>
      <dc:creator>Guy Levin</dc:creator>
      <wfw:comment>http://www.spotgnome.com/CommentView,guid,2846a8c1-1380-4c86-a191-6f39bba56cba.aspx</wfw:comment>
      <wfw:commentRss>http://www.spotgnome.com/SyndicationService.asmx/GetEntryCommentsRss?guid=2846a8c1-1380-4c86-a191-6f39bba56cba</wfw:commentRss>
      <title>Delegates in C#</title>
      <guid isPermaLink="false">http://www.spotgnome.com/PermaLink,guid,2846a8c1-1380-4c86-a191-6f39bba56cba.aspx</guid>
      <link>http://www.spotgnome.com/2008/03/10/DelegatesInC.aspx</link>
      <pubDate>Mon, 10 Mar 2008 08:28:46 GMT</pubDate>
      <description>&lt;p&gt;
&lt;font face="Verdana, Arial, Helvetica, sans-serif"&gt;This article discusses the delegate
type and how it can be used to point to methods in the application which can be invoked
at later time. This article demonstrates also the delegate ability to multicast and
delegate covariance.&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Verdana, Arial, Helvetica, sans-serif"&gt;A delegate is a type-safe object
that can point to another method (or possibly multiple methods) in the application,
which can be invoked at later time.&lt;br&gt;
&lt;br&gt;
&lt;a href="http://www.c-sharpcorner.com/UploadFile/Ashush/AsyncDelegates03032008144119PM/AsyncDelegates.aspx"&gt;Delegates
also can invoke methods Asynchronously&lt;/a&gt;.&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;A delegate type maintains three important pices of information :&lt;/strong&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;font face="Verdana, Arial, Helvetica, sans-serif"&gt;The name of the method on which
it make calls.&lt;br&gt;
&lt;/font&gt; 
&lt;li&gt;
&lt;font face="Verdana, Arial, Helvetica, sans-serif"&gt;Any argument (if any) of this method.&lt;br&gt;
&lt;/font&gt; 
&lt;li&gt;
&lt;font face="Verdana, Arial, Helvetica, sans-serif"&gt;The return value (if any) of this
method.&lt;/font&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;font face="Verdana, Arial, Helvetica, sans-serif"&gt; 
&lt;p&gt;
&lt;strong&gt;Defining a Delegate in C#&lt;br&gt;
&lt;/strong&gt;
&lt;br&gt;
when you want to create a delegate in C# you make use of delegate keyword.&lt;br&gt;
&lt;br&gt;
The name of your delegate can be whatever you desire. However, you must define the
delegate to match the signature of the method it will point to. fo example the following
delegate can point to any method taking two integers and returning an integer.&lt;br&gt;
&lt;br&gt;
public delegate int DelegateName(int x, int y);&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;A Delegate Usage Example&lt;/strong&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;namespace&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt; MyFirstDelegate&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;{&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: green"&gt;//This
delegate can point to any method,&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: green"&gt;//taking
two integers and returning an&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: green"&gt;//integer.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;delegate&lt;/span&gt; &lt;span style="COLOR: blue"&gt;int&lt;/span&gt; &lt;span style="COLOR: teal"&gt;MyDelegate&lt;/span&gt;(&lt;span style="COLOR: blue"&gt;int&lt;/span&gt; x, &lt;span style="COLOR: blue"&gt;int&lt;/span&gt; y);&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: green"&gt;//This
class contains methods that MyDelegate will point to.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;class&lt;/span&gt; &lt;span style="COLOR: teal"&gt;MyClass&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;static&lt;/span&gt; &lt;span style="COLOR: blue"&gt;int&lt;/span&gt; Add(&lt;span style="COLOR: blue"&gt;int&lt;/span&gt; x, &lt;span style="COLOR: blue"&gt;int&lt;/span&gt; y)&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;return&lt;/span&gt; x
+ y;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;static&lt;/span&gt; &lt;span style="COLOR: blue"&gt;int&lt;/span&gt; Multiply(&lt;span style="COLOR: blue"&gt;int&lt;/span&gt; x, &lt;span style="COLOR: blue"&gt;int&lt;/span&gt; y)&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;return&lt;/span&gt; x
* y;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;class&lt;/span&gt; &lt;span style="COLOR: teal"&gt;Program&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;static&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; Main(&lt;span style="COLOR: blue"&gt;string&lt;/span&gt;[]
args)&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: green"&gt;//Create
an Instance of MyDelegate&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: green"&gt;//that
points to MyClass.Add().&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: teal"&gt;MyDelegate&lt;/span&gt; del1
= &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: teal"&gt;MyDelegate&lt;/span&gt;(&lt;span style="COLOR: teal"&gt;MyClass&lt;/span&gt;.Add);&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: green"&gt;//Invoke
Add() method using the delegate.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;int&lt;/span&gt; addResult
= del1(5, 5);&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: teal"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="COLOR: maroon"&gt;"5
+ 5 = {0}\n"&lt;/span&gt;, addResult);&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: green"&gt;//Create
an Instance of MyDelegate&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: green"&gt;//that
points to MyClass.Multiply().&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: teal"&gt;MyDelegate&lt;/span&gt; del2
= &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: teal"&gt;MyDelegate&lt;/span&gt;(&lt;span style="COLOR: teal"&gt;MyClass&lt;/span&gt;.Multiply);&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: green"&gt;//Invoke
Multiply() method using the delegate.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;int&lt;/span&gt; multiplyResult
= del2(5, 5);&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: teal"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="COLOR: maroon"&gt;"5
X 5 = {0}"&lt;/span&gt;, multiplyResult);&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: teal"&gt;Console&lt;/span&gt;.ReadLine();&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br&gt;
&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;}&lt;br&gt;
&lt;br&gt;
&lt;/span&gt;
&lt;/font&gt;&lt;font face="Verdana, Arial, Helvetica, sans-serif"&gt;&lt;strong&gt;Delegate ability
to Multicast&lt;/strong&gt;
&lt;br&gt;
&lt;br&gt;
Delegate ability to multicast mean that a delegate object can maintain a list of methods
to call, rather than a single method 
&lt;br&gt;
if you want to add a method to the invocation list of a delegate object , you simply
make use of the overloaded += operator, and if you want to remove a method from the
invocation list you make use of the overloaded operator -= .&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;Note:&lt;/strong&gt;Multicast delegate must contain only methods that return void,
or you will get a run time exception.&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;A Multicast Delegate Example&lt;br&gt;
&lt;/strong&gt;
&lt;br&gt;
&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;namespace&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt; MyMulticastDelegate&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;{&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: green"&gt;//this
delegate will be used to call more than one 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: green"&gt;//method
at once&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;delegate&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; &lt;span style="COLOR: teal"&gt;MulticastDelegate&lt;/span&gt;(&lt;span style="COLOR: blue"&gt;int&lt;/span&gt; x, &lt;span style="COLOR: blue"&gt;int&lt;/span&gt; y);&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: green"&gt;//This
class contains methods that MyDelegate will point to.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;class&lt;/span&gt; &lt;span style="COLOR: teal"&gt;MyClass&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;static&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; Add(&lt;span style="COLOR: blue"&gt;int&lt;/span&gt; x, &lt;span style="COLOR: blue"&gt;int&lt;/span&gt; y)&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: teal"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="COLOR: maroon"&gt;"You
are in Add() Method"&lt;/span&gt;);&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: teal"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="COLOR: maroon"&gt;"{0}
+ {1} = {2}\n"&lt;/span&gt;, x, y, x + y);&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;static&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; Multiply(&lt;span style="COLOR: blue"&gt;int&lt;/span&gt; x, &lt;span style="COLOR: blue"&gt;int&lt;/span&gt; y)&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: teal"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="COLOR: maroon"&gt;"You
are in Multiply() Method"&lt;/span&gt;);&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: teal"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="COLOR: maroon"&gt;"{0}
X {1} = {2}"&lt;/span&gt;, x, y, x * y);&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;class&lt;/span&gt; &lt;span style="COLOR: teal"&gt;Program&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;static&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; Main(&lt;span style="COLOR: blue"&gt;string&lt;/span&gt;[]
args)&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: green"&gt;//Create
an Instance of MulticastDelegate&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: green"&gt;//that
points to MyClass.Add().&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: teal"&gt;MulticastDelegate&lt;/span&gt; del
= &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: teal"&gt;MulticastDelegate&lt;/span&gt;(&lt;span style="COLOR: teal"&gt;MyClass&lt;/span&gt;.Add);&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: green"&gt;//using
the same instance of MulticastDelegate&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: green"&gt;//to
call MyClass.Multibly() by adding it to it's 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: green"&gt;//invocation
list.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;del
+= &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: teal"&gt;MulticastDelegate&lt;/span&gt;(&lt;span style="COLOR: teal"&gt;MyClass&lt;/span&gt;.Multiply);&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: green"&gt;//Invoke
Add() and&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Multiply() methods using the
delegate.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: green"&gt;//Note
that these methods must have a void return vlue&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: teal"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="COLOR: maroon"&gt;"****calling
Add() and Multibly() Methods.****\n\n"&lt;/span&gt;);&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;del(5,
5);&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: green"&gt;//removing
the Add() method from the invocation list&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;del
-= &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: teal"&gt;MulticastDelegate&lt;/span&gt;(&lt;span style="COLOR: teal"&gt;MyClass&lt;/span&gt;.Add);&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: teal"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="COLOR: maroon"&gt;"\n\n****Add()
Method removed.****\n\n"&lt;/span&gt;);&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: green"&gt;//this
will invoke the Multibly() method only.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;del(5,
5);&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;}&lt;br&gt;
&lt;br&gt;
&lt;/span&gt;&lt;strong&gt;Delegate Covariance&lt;/strong&gt;
&lt;br&gt;
&lt;br&gt;
Assume you are designing a delegate that can point to methods returning a custom class
type:&lt;br&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;
&lt;br&gt;
//Define a delegate pointing to methods returning Employee types.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;public&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt; &lt;span style="COLOR: blue"&gt;delegate&lt;/span&gt; Employee &lt;span style="COLOR: teal"&gt;EmployeeDelegate&lt;/span&gt;();&lt;br&gt;
&lt;br&gt;
&lt;/span&gt;if you were to derive a new class from Employee Type named SalesEmployee and
wish to create a delegate type that can point to methods returning this class type
you would be required to define an entirely new delegate to do so&lt;br&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;//a
new&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;delegate pointing to methods returning
SalesEmployee types.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;public&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt; &lt;span style="COLOR: blue"&gt;delegate&lt;/span&gt; SalesEmployee &lt;span style="COLOR: teal"&gt;SalesEmployeeDelegate&lt;/span&gt;();&lt;br&gt;
&lt;br&gt;
&lt;/span&gt;&lt;strong&gt;Example&lt;br&gt;
&lt;/strong&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;namespace&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt; MyEmployeesDelegate&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;{&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: green"&gt;//Define
a delegate pointing to methods returning Employee types.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;delegate&lt;/span&gt; &lt;span style="COLOR: teal"&gt;Employee&lt;/span&gt; &lt;span style="COLOR: teal"&gt;EmployeeDelegate&lt;/span&gt;();&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: green"&gt;//a
new&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;delegate pointing to methods returning
SalesEmployee types.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;delegate&lt;/span&gt; &lt;span style="COLOR: teal"&gt;SalesEmployee&lt;/span&gt; &lt;span style="COLOR: teal"&gt;SalesEmployeeDelegate&lt;/span&gt;();&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;class&lt;/span&gt; &lt;span style="COLOR: teal"&gt;Program&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;static&lt;/span&gt; &lt;span style="COLOR: teal"&gt;Employee&lt;/span&gt; GetEmployee()&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;return&lt;/span&gt; &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: teal"&gt;Employee&lt;/span&gt;();&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;static&lt;/span&gt; &lt;span style="COLOR: teal"&gt;SalesEmployee&lt;/span&gt; GetSalesEmployee()&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;return&lt;/span&gt; &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: teal"&gt;SalesEmployee&lt;/span&gt;();&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;static&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; Main(&lt;span style="COLOR: blue"&gt;string&lt;/span&gt;[]
args)&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: teal"&gt;EmployeeDelegate&lt;/span&gt; empDel
= &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: teal"&gt;EmployeeDelegate&lt;/span&gt;(GetEmployee);&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: teal"&gt;Employee&lt;/span&gt; emp
= empDel();&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: teal"&gt;SalesEmployeeDelegate&lt;/span&gt; salesEmpDel
= &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: teal"&gt;SalesEmployeeDelegate&lt;/span&gt;(GetSalesEmployee);&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: teal"&gt;SalesEmployee&lt;/span&gt; emp2
= salesEmpDel();&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;class&lt;/span&gt; &lt;span style="COLOR: teal"&gt;Employee&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;protected&lt;/span&gt; &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; firstName;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;protected&lt;/span&gt; &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; lastName;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;protected&lt;/span&gt; &lt;span style="COLOR: blue"&gt;int&lt;/span&gt; Age;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; Employee()&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{
}&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; Employee(&lt;span style="COLOR: blue"&gt;string&lt;/span&gt; fName, &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; lName, &lt;span style="COLOR: blue"&gt;int&lt;/span&gt; age)&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;this&lt;/span&gt;.firstName
= fName;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;this&lt;/span&gt;.lastName
= lName;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;this&lt;/span&gt;.Age
= age;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;class&lt;/span&gt; &lt;span style="COLOR: teal"&gt;SalesEmployee&lt;/span&gt; : &lt;span style="COLOR: teal"&gt;Employee&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;protected&lt;/span&gt; &lt;span style="COLOR: blue"&gt;int&lt;/span&gt; salesNumber;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; SalesEmployee()&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{
}&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; SalesEmployee(&lt;span style="COLOR: blue"&gt;string&lt;/span&gt; fName, &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; lName, &lt;span style="COLOR: blue"&gt;int&lt;/span&gt; age, &lt;span style="COLOR: blue"&gt;int&lt;/span&gt; sNumber)&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;: &lt;span style="COLOR: blue"&gt;base&lt;/span&gt;(fName,
lName, age)&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;this&lt;/span&gt;.salesNumber
= sNumber;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;}&lt;br&gt;
&lt;br&gt;
&lt;/span&gt;It would be ideal to build a single delegate type that can point to methods
returning either Employee or SelesEmployee types.&lt;br&gt;
Covariance allows you to build a single delegate that can point to methods returning
class types related by classical inheritance.&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;Delegate Covariance Example&lt;br&gt;
&lt;/strong&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;namespace&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt; DelegateCovariance&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;{&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: green"&gt;//Define
a single delegate that may return an Employee 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: green"&gt;//
or SalesEmployee&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;delegate&lt;/span&gt; &lt;span style="COLOR: teal"&gt;Employee&lt;/span&gt; &lt;span style="COLOR: teal"&gt;EmployeeDelegate&lt;/span&gt;();&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;class&lt;/span&gt; &lt;span style="COLOR: teal"&gt;Program&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;static&lt;/span&gt; &lt;span style="COLOR: teal"&gt;Employee&lt;/span&gt; GetEmployee()&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;return&lt;/span&gt; &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: teal"&gt;Employee&lt;/span&gt;();&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;static&lt;/span&gt; &lt;span style="COLOR: teal"&gt;SalesEmployee&lt;/span&gt; GetSalesEmployee()&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;return&lt;/span&gt; &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: teal"&gt;SalesEmployee&lt;/span&gt;();&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;static&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; Main(&lt;span style="COLOR: blue"&gt;string&lt;/span&gt;[]
args)&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: teal"&gt;EmployeeDelegate&lt;/span&gt; emp
= &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: teal"&gt;EmployeeDelegate&lt;/span&gt;(GetEmployee);&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: teal"&gt;Employee&lt;/span&gt; emp1
= emp();&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: teal"&gt;EmployeeDelegate&lt;/span&gt; empB
= &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: teal"&gt;EmployeeDelegate&lt;/span&gt;(GetSalesEmployee);&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: green"&gt;//to
obtain a derived type you must perform an explicit cast.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: teal"&gt;SalesEmployee&lt;/span&gt; emp2
= (&lt;span style="COLOR: teal"&gt;SalesEmployee&lt;/span&gt;)empB();&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;class&lt;/span&gt; &lt;span style="COLOR: teal"&gt;Employee&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;protected&lt;/span&gt; &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; firstName;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;protected&lt;/span&gt; &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; lastName;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;protected&lt;/span&gt; &lt;span style="COLOR: blue"&gt;int&lt;/span&gt; Age;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; Employee()&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{
}&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; Employee(&lt;span style="COLOR: blue"&gt;string&lt;/span&gt; fName, &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; lName, &lt;span style="COLOR: blue"&gt;int&lt;/span&gt; age)&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;this&lt;/span&gt;.firstName
= fName;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;this&lt;/span&gt;.lastName
= lName;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;this&lt;/span&gt;.Age
= age;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;class&lt;/span&gt; &lt;span style="COLOR: teal"&gt;SalesEmployee&lt;/span&gt; : &lt;span style="COLOR: teal"&gt;Employee&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;protected&lt;/span&gt; &lt;span style="COLOR: blue"&gt;int&lt;/span&gt; salesNumber;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; SalesEmployee()&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{
}&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; SalesEmployee(&lt;span style="COLOR: blue"&gt;string&lt;/span&gt; fName, &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; lName, &lt;span style="COLOR: blue"&gt;int&lt;/span&gt; age, &lt;span style="COLOR: blue"&gt;int&lt;/span&gt; sNumber)&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;: &lt;span style="COLOR: blue"&gt;base&lt;/span&gt;(fName,
lName, age)&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;this&lt;/span&gt;.salesNumber
= sNumber;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;}&lt;br&gt;
&lt;br&gt;
&lt;/span&gt;
&lt;/font&gt;&lt;font face="Verdana, Arial, Helvetica, sans-serif"&gt;I&amp;nbsp;hope you are now
have a good idea with the creation and usage of delegates types.&lt;/font&gt;&gt;
&lt;img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=2846a8c1-1380-4c86-a191-6f39bba56cba" /&gt;</description>
      <comments>http://www.spotgnome.com/CommentView,guid,2846a8c1-1380-4c86-a191-6f39bba56cba.aspx</comments>
      <category>.Net</category>
      <category>AJAX</category>
      <category>Microsoft</category>
      <category>Programming</category>
      <category>C#</category>
    </item>
    <item>
      <trackback:ping>http://www.spotgnome.com/Trackback.aspx?guid=0f70de5d-c09d-43cd-90f4-8cca255a6b2e</trackback:ping>
      <pingback:server>http://www.spotgnome.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.spotgnome.com/PermaLink,guid,0f70de5d-c09d-43cd-90f4-8cca255a6b2e.aspx</pingback:target>
      <dc:creator>Guy Levin</dc:creator>
      <wfw:comment>http://www.spotgnome.com/CommentView,guid,0f70de5d-c09d-43cd-90f4-8cca255a6b2e.aspx</wfw:comment>
      <wfw:commentRss>http://www.spotgnome.com/SyndicationService.asmx/GetEntryCommentsRss?guid=0f70de5d-c09d-43cd-90f4-8cca255a6b2e</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
A common - and desirable - technique for constructing JavaScript-based web applications
is that of progressive enhancement: only providing capable browsers with the features
that they are capable of utilizing - but providing incapable browsers with an adequate,
albeit degraded, experience otherwise.
</p>
        <p>
This provides the best of both worlds: Users of modern browsers (the majority audience)
can get the best experience while those that are using incapable browsers (such as
most mobile devices) will still get an interface that suits them well.
</p>
        <p>
There's one thing, overriding in all of this, however: Progressive enhancement is
nearly only ever applied to the JavaScript functionality of web applications. Presumably
it's assumed that if a browser is capable of supporting the desired JavaScript features
of an application then it must, also, be capable of supporting the specific CSS styling
as well.
</p>
        <p>
One technique that has greatly interested me, as of late, is one employed by the <a href="http://www.filamentgroup.com/">Filament
Group</a> (a local design shop here in Boston): <a href="http://www.filamentgroup.com/lab/delivering_the_right_experience_to_the_right_device/">Progressive
CSS Enhancement</a>. The premise is that progressive enhancement is done with page
styling in mind, primarily, rather than from a purely-JavaScript perspective.
</p>
        <p>
This is particularly important for a couple reasons:
</p>
        <ul>
          <li>
It should be easy to degrade page styling in a manner that isn't reliant upon CSS
browser hacks - this technique makes it so. 
</li>
          <li>
Not all pages utilize heavy JavaScript (and, thus, progressive JavaScript enhancement
does not apply to them). 
</li>
        </ul>
        <p>
Their technique works as follows: You choose to provide the user with, either, the
enhanced or the decreased experience by default. In either case a basic script is
run which attempts to verify a couple CSS styling behaviors along with some basic
JavaScript functionality (just enough to be able to run the test).
</p>
        <p>
A couple of the CSS techniques that they test for:
</p>
        <ul>
          <li>
            <b>Box model:</b> make sure the width and padding of a div add up properly using offsetWidth. 
</li>
          <li>
            <b>Positioning:</b> position a div and check its positioning using offsetTop and offsetLeft. 
</li>
          <li>
            <b>Float:</b> float 2 divs next to each other and evaluate their offsetTop values
for equality. 
</li>
          <li>
            <b>Clear:</b> test to make sure a list item will clear beneath a preceding floated
list item. 
</li>
          <li>
            <b>Overflow:</b> wrap a tall div with a shorter div with overflow set to 'auto', and
test its offsetHeight. 
</li>
        </ul>
        <p>
With those in place you can pretty safely begin designing a useful CSS-based layout.
Note that the experience will only ever be upgraded if all of the tests pass - if
any fail then it simply won't continue. Obviously there'll still exist some browser
discrepancies (like in the differences in the box model between Internet Explorer
6 and most other browsers) but that's usually an acceptable level of hackage (meaning
that you won't have to deviate much from what you're already doing).
</p>
        <p>
The actual implementation is quite simple. It consists of a number of JavaScript-based
rules that test for behavior. For example the following rule tests for a working box
model:
</p>
        <div class="syntax_hilite">
          <div id="js-1">
            <div>
              <span style="FONT-WEIGHT: bold; COLOR: #003366">var</span> newDiv = document.<span style="COLOR: #006600">createElement</span><span style="FONT-WEIGHT: bold; COLOR: #008800">(</span><span style="COLOR: #3366cc">'div'</span><span style="FONT-WEIGHT: bold; COLOR: #008800">)</span>;<br />
document.<span style="COLOR: #006600">body</span>.<span style="COLOR: #006600">appendChild</span><span style="FONT-WEIGHT: bold; COLOR: #008800">(</span>newDiv<span style="FONT-WEIGHT: bold; COLOR: #008800">)</span>;<br />
newDiv.<span style="COLOR: #006600">style</span>.<span style="COLOR: #006600">visibility</span> = <span style="COLOR: #3366cc">'hidden'</span>;<br />
newDiv.<span style="COLOR: #006600">style</span>.<span style="COLOR: #006600">width</span> = <span style="COLOR: #3366cc">'20px'</span>;<br />
newDiv.<span style="COLOR: #006600">style</span>.<span style="COLOR: #006600">padding</span> = <span style="COLOR: #3366cc">'10px'</span>;<br /><span style="FONT-WEIGHT: bold; COLOR: #003366">var</span> divWidth = newDiv.<span style="COLOR: #006600">offsetWidth</span>;<br /><span style="FONT-WEIGHT: bold; COLOR: #000066">if</span><span style="FONT-WEIGHT: bold; COLOR: #008800">(</span>divWidth
!= <span style="COLOR: #cc0000">40</span><span style="FONT-WEIGHT: bold; COLOR: #008800">)</span><span style="FONT-WEIGHT: bold; COLOR: #008800">{</span>document.<span style="COLOR: #006600">body</span>.<span style="COLOR: #006600">removeChild</span><span style="FONT-WEIGHT: bold; COLOR: #008800">(</span>newDiv<span style="FONT-WEIGHT: bold; COLOR: #008800">)</span>; <span style="FONT-WEIGHT: bold; COLOR: #000066">return</span><span style="FONT-WEIGHT: bold; COLOR: #003366">false</span>;<span style="FONT-WEIGHT: bold; COLOR: #008800">}</span></div>
          </div>
        </div>
        <p>
That check, alone, is able to knock off a number of older browser whom aren't able
to successfully implement that CSS behavior. Currently all the rules are in a large
code block, which makes maintenance unwieldily. I think that this library could definitely
benefit from extensibility (being able to add/remove rules that you wish to honor).
</p>
        <p>
When it comes time to actually use this technique within your application there are
a number of strategies that you can use. However, for the sake of discussion here,
let's assume that you're sending, by default, the degraded experience to the client
(optionally upgrading if the browser is capable). Then you would be able to use these
two techniques:
</p>
        <ul>
          <li>
A class of "enhanced" is assigned to the body element to be used for optional CSS
scoping (such as: <code>body.enhanced {background: red;}</code>). 
</li>
          <li>
Any links to alternate stylesheets that have a class of "enhanced" will be enabled. 
</li>
        </ul>
        <p>
In this manner you can specify all of your stylesheets in your header with some disabled
(being alternate stylesheets) or with some CSS rules being only applied with the <code>body.enhanced</code> match.
</p>
        <p>
Their implementation also allows you to only execute JavaScript if all the rules pass
- however I'm not sure if that's an acceptable solution, in this situation. If you
want to verify that your desired JavaScript functionality is able to operate then
you should check for just that. However, in this case, we can get the other side of
the equation: Verifying that CSS works as you would expect it to, knowing that an
adequate experience can be provided.
</p>
        <p>
If you're curious as to which devices are supported by the default rules in the test
file you can view the <a href="http://www.filamentgroup.com/lab/delivering_the_right_experience_to_the_right_device/">result
matrix</a> on the tool's site.
</p>
        <p>
I definitely think that this technique has a lot of merit, especially in the realm
of mobile-accessible web sites. Since it's virtually impossible to design, and test,
your pages to work on such a large number of obscure platforms this degraded strategy
is really one that will help to benefit both you, and your users, in the long run. 
</p>
        <img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=0f70de5d-c09d-43cd-90f4-8cca255a6b2e" />
      </body>
      <title>Progressive CSS Enhancement</title>
      <guid isPermaLink="false">http://www.spotgnome.com/PermaLink,guid,0f70de5d-c09d-43cd-90f4-8cca255a6b2e.aspx</guid>
      <link>http://www.spotgnome.com/2008/03/09/ProgressiveCSSEnhancement.aspx</link>
      <pubDate>Sun, 09 Mar 2008 09:24:37 GMT</pubDate>
      <description>&lt;p&gt;
A common - and desirable - technique for constructing JavaScript-based web applications
is that of progressive enhancement: only providing capable browsers with the features
that they are capable of utilizing - but providing incapable browsers with an adequate,
albeit degraded, experience otherwise.
&lt;/p&gt;
&lt;p&gt;
This provides the best of both worlds: Users of modern browsers (the majority audience)
can get the best experience while those that are using incapable browsers (such as
most mobile devices) will still get an interface that suits them well.
&lt;/p&gt;
&lt;p&gt;
There's one thing, overriding in all of this, however: Progressive enhancement is
nearly only ever applied to the JavaScript functionality of web applications. Presumably
it's assumed that if a browser is capable of supporting the desired JavaScript features
of an application then it must, also, be capable of supporting the specific CSS styling
as well.
&lt;/p&gt;
&lt;p&gt;
One technique that has greatly interested me, as of late, is one employed by the &lt;a href="http://www.filamentgroup.com/"&gt;Filament
Group&lt;/a&gt; (a local design shop here in Boston): &lt;a href="http://www.filamentgroup.com/lab/delivering_the_right_experience_to_the_right_device/"&gt;Progressive
CSS Enhancement&lt;/a&gt;. The premise is that progressive enhancement is done with page
styling in mind, primarily, rather than from a purely-JavaScript perspective.
&lt;/p&gt;
&lt;p&gt;
This is particularly important for a couple reasons:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
It should be easy to degrade page styling in a manner that isn't reliant upon CSS
browser hacks - this technique makes it so. 
&lt;li&gt;
Not all pages utilize heavy JavaScript (and, thus, progressive JavaScript enhancement
does not apply to them). 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Their technique works as follows: You choose to provide the user with, either, the
enhanced or the decreased experience by default. In either case a basic script is
run which attempts to verify a couple CSS styling behaviors along with some basic
JavaScript functionality (just enough to be able to run the test).
&lt;/p&gt;
&lt;p&gt;
A couple of the CSS techniques that they test for:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;b&gt;Box model:&lt;/b&gt; make sure the width and padding of a div add up properly using offsetWidth. 
&lt;li&gt;
&lt;b&gt;Positioning:&lt;/b&gt; position a div and check its positioning using offsetTop and offsetLeft. 
&lt;li&gt;
&lt;b&gt;Float:&lt;/b&gt; float 2 divs next to each other and evaluate their offsetTop values
for equality. 
&lt;li&gt;
&lt;b&gt;Clear:&lt;/b&gt; test to make sure a list item will clear beneath a preceding floated
list item. 
&lt;li&gt;
&lt;b&gt;Overflow:&lt;/b&gt; wrap a tall div with a shorter div with overflow set to 'auto', and
test its offsetHeight. 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
With those in place you can pretty safely begin designing a useful CSS-based layout.
Note that the experience will only ever be upgraded if all of the tests pass - if
any fail then it simply won't continue. Obviously there'll still exist some browser
discrepancies (like in the differences in the box model between Internet Explorer
6 and most other browsers) but that's usually an acceptable level of hackage (meaning
that you won't have to deviate much from what you're already doing).
&lt;/p&gt;
&lt;p&gt;
The actual implementation is quite simple. It consists of a number of JavaScript-based
rules that test for behavior. For example the following rule tests for a working box
model:
&lt;/p&gt;
&lt;div class=syntax_hilite&gt;
&lt;div id=js-1&gt;
&lt;div&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #003366"&gt;var&lt;/span&gt; newDiv = document.&lt;span style="COLOR: #006600"&gt;createElement&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #008800"&gt;(&lt;/span&gt;&lt;span style="COLOR: #3366cc"&gt;'div'&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #008800"&gt;)&lt;/span&gt;;&lt;br&gt;
document.&lt;span style="COLOR: #006600"&gt;body&lt;/span&gt;.&lt;span style="COLOR: #006600"&gt;appendChild&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #008800"&gt;(&lt;/span&gt;newDiv&lt;span style="FONT-WEIGHT: bold; COLOR: #008800"&gt;)&lt;/span&gt;;&lt;br&gt;
newDiv.&lt;span style="COLOR: #006600"&gt;style&lt;/span&gt;.&lt;span style="COLOR: #006600"&gt;visibility&lt;/span&gt; = &lt;span style="COLOR: #3366cc"&gt;'hidden'&lt;/span&gt;;&lt;br&gt;
newDiv.&lt;span style="COLOR: #006600"&gt;style&lt;/span&gt;.&lt;span style="COLOR: #006600"&gt;width&lt;/span&gt; = &lt;span style="COLOR: #3366cc"&gt;'20px'&lt;/span&gt;;&lt;br&gt;
newDiv.&lt;span style="COLOR: #006600"&gt;style&lt;/span&gt;.&lt;span style="COLOR: #006600"&gt;padding&lt;/span&gt; = &lt;span style="COLOR: #3366cc"&gt;'10px'&lt;/span&gt;;&lt;br&gt;
&lt;span style="FONT-WEIGHT: bold; COLOR: #003366"&gt;var&lt;/span&gt; divWidth = newDiv.&lt;span style="COLOR: #006600"&gt;offsetWidth&lt;/span&gt;;&lt;br&gt;
&lt;span style="FONT-WEIGHT: bold; COLOR: #000066"&gt;if&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #008800"&gt;(&lt;/span&gt;divWidth
!= &lt;span style="COLOR: #cc0000"&gt;40&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #008800"&gt;)&lt;/span&gt; &lt;span style="FONT-WEIGHT: bold; COLOR: #008800"&gt;{&lt;/span&gt;document.&lt;span style="COLOR: #006600"&gt;body&lt;/span&gt;.&lt;span style="COLOR: #006600"&gt;removeChild&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #008800"&gt;(&lt;/span&gt;newDiv&lt;span style="FONT-WEIGHT: bold; COLOR: #008800"&gt;)&lt;/span&gt;; &lt;span style="FONT-WEIGHT: bold; COLOR: #000066"&gt;return&lt;/span&gt; &lt;span style="FONT-WEIGHT: bold; COLOR: #003366"&gt;false&lt;/span&gt;;&lt;span style="FONT-WEIGHT: bold; COLOR: #008800"&gt;}&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
That check, alone, is able to knock off a number of older browser whom aren't able
to successfully implement that CSS behavior. Currently all the rules are in a large
code block, which makes maintenance unwieldily. I think that this library could definitely
benefit from extensibility (being able to add/remove rules that you wish to honor).
&lt;/p&gt;
&lt;p&gt;
When it comes time to actually use this technique within your application there are
a number of strategies that you can use. However, for the sake of discussion here,
let's assume that you're sending, by default, the degraded experience to the client
(optionally upgrading if the browser is capable). Then you would be able to use these
two techniques:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
A class of "enhanced" is assigned to the body element to be used for optional CSS
scoping (such as: &lt;code&gt;body.enhanced {background: red;}&lt;/code&gt;). 
&lt;li&gt;
Any links to alternate stylesheets that have a class of "enhanced" will be enabled. 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
In this manner you can specify all of your stylesheets in your header with some disabled
(being alternate stylesheets) or with some CSS rules being only applied with the &lt;code&gt;body.enhanced&lt;/code&gt; match.
&lt;/p&gt;
&lt;p&gt;
Their implementation also allows you to only execute JavaScript if all the rules pass
- however I'm not sure if that's an acceptable solution, in this situation. If you
want to verify that your desired JavaScript functionality is able to operate then
you should check for just that. However, in this case, we can get the other side of
the equation: Verifying that CSS works as you would expect it to, knowing that an
adequate experience can be provided.
&lt;/p&gt;
&lt;p&gt;
If you're curious as to which devices are supported by the default rules in the test
file you can view the &lt;a href="http://www.filamentgroup.com/lab/delivering_the_right_experience_to_the_right_device/"&gt;result
matrix&lt;/a&gt; on the tool's site.
&lt;/p&gt;
&lt;p&gt;
I definitely think that this technique has a lot of merit, especially in the realm
of mobile-accessible web sites. Since it's virtually impossible to design, and test,
your pages to work on such a large number of obscure platforms this degraded strategy
is really one that will help to benefit both you, and your users, in the long run. 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=0f70de5d-c09d-43cd-90f4-8cca255a6b2e" /&gt;</description>
      <comments>http://www.spotgnome.com/CommentView,guid,0f70de5d-c09d-43cd-90f4-8cca255a6b2e.aspx</comments>
      <category>CSS</category>
      <category>Programming</category>
      <category>Web Design</category>
    </item>
    <item>
      <trackback:ping>http://www.spotgnome.com/Trackback.aspx?guid=460690d4-689e-4c82-b550-7c5223219568</trackback:ping>
      <pingback:server>http://www.spotgnome.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.spotgnome.com/PermaLink,guid,460690d4-689e-4c82-b550-7c5223219568.aspx</pingback:target>
      <dc:creator>Guy Levin</dc:creator>
      <wfw:comment>http://www.spotgnome.com/CommentView,guid,460690d4-689e-4c82-b550-7c5223219568.aspx</wfw:comment>
      <wfw:commentRss>http://www.spotgnome.com/SyndicationService.asmx/GetEntryCommentsRss?guid=460690d4-689e-4c82-b550-7c5223219568</wfw:commentRss>
      <title>Export Complete Database To Excel</title>
      <guid isPermaLink="false">http://www.spotgnome.com/PermaLink,guid,460690d4-689e-4c82-b550-7c5223219568.aspx</guid>
      <link>http://www.spotgnome.com/2008/03/07/ExportCompleteDatabaseToExcel.aspx</link>
      <pubDate>Fri, 07 Mar 2008 09:42:11 GMT</pubDate>
      <description>&lt;p&gt;
&lt;span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-ansi-language: EN-US"&gt;This
article explains how you can extract all Tables, including Data, to an Excel file.
Every Table will have it's own worksheet. The code does need an excel application
installed on the server, while it's using Office Interop.&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-ansi-language: EN-US"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;To
get this code to work, you need to add a reference to Excel.dll by using Add Reference
on the project and selecting Microsoft Excel 9.0 (or 10.0)&amp;nbsp;Object Library from
the COM tab on the Add Reference dialog.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-ansi-language: EN-US"&gt;And
then import the following namespace:&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;Imports&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #666666; FONT-FAMILY: 'Courier New'"&gt; System.Runtime.InteropServices.Marshal&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;div class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center" align=center&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; 
&lt;hr align=center width="100%" size=2&gt;
&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'; mso-ansi-language: EN-US"&gt;Now
add the following class to your project:&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;Private&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; &lt;span style="COLOR: blue"&gt;Sub&lt;/span&gt; create(&lt;span style="COLOR: blue"&gt;ByVal&lt;/span&gt; sDatabaseName &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;span style="COLOR: blue"&gt;String&lt;/span&gt;)&lt;br&gt;
&lt;span style="COLOR: blue"&gt;Dim&lt;/span&gt; dsTables &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; DataSet
= &lt;span style="COLOR: blue"&gt;New&lt;/span&gt; DataSet&lt;br&gt;
&lt;span style="COLOR: green"&gt;
&lt;br&gt;
'Get all Tables from database&lt;br&gt;
&lt;/span&gt;dsTables = getAllTables(sDatabaseName)&lt;br&gt;
&lt;span style="COLOR: green"&gt;'Create Excel Application, Workbook, and WorkSheets&lt;br&gt;
&lt;/span&gt;&lt;span style="COLOR: blue"&gt;Dim&lt;/span&gt; xlExcel &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;span style="COLOR: blue"&gt;New&lt;/span&gt; Excel.Application&lt;br&gt;
&lt;span style="COLOR: blue"&gt;Dim&lt;/span&gt; xlBooks &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; Excel.Workbooks&lt;br&gt;
&lt;span style="COLOR: blue"&gt;Dim&lt;/span&gt; xlBook &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; Excel.Workbook&lt;br&gt;
&lt;span style="COLOR: blue"&gt;Dim&lt;/span&gt; tblSheet &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; Excel.Worksheet&lt;br&gt;
&lt;span style="COLOR: blue"&gt;Dim&lt;/span&gt; xlCells &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; Excel.Range&lt;br&gt;
&lt;span style="COLOR: blue"&gt;Dim&lt;/span&gt; sFile &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;span style="COLOR: blue"&gt;String&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;'File
name for the excel file&lt;br&gt;
&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;sFile
= Server.MapPath(&lt;span style="COLOR: #a31515"&gt;"~\Sheets\"&lt;/span&gt; &amp;amp; sDatabaseName
&amp;amp; &lt;span style="COLOR: #a31515"&gt;"_data.xls"&lt;/span&gt;)&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;xlExcel.Visible
= &lt;span style="COLOR: blue"&gt;False&lt;/span&gt; : xlExcel.DisplayAlerts = &lt;span style="COLOR: blue"&gt;False&lt;br&gt;
&lt;/span&gt;xlBooks = xlExcel.Workbooks&lt;br&gt;
xlBook = xlBooks.Add&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;For&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; i &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Integer&lt;/span&gt; =
0 &lt;span style="COLOR: blue"&gt;To&lt;/span&gt; dsTables.Tables.Count - 1&lt;br&gt;
&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;tblSheet = xlBook.Worksheets.Add&lt;br&gt;
&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;tblSheet.Name = dsTables.Tables(i).TableName&lt;br&gt;
&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;xlCells = tblSheet.Cells&lt;br&gt;
&lt;span style="COLOR: green"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;'Fill
all cells with data 
&lt;br&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;GenerateExcelFile(dsTables.Tables(i),
xlCells) &lt;span style="COLOR: green"&gt;
&lt;br&gt;
&lt;/span&gt;&lt;span style="COLOR: blue"&gt;Next&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;'Remove
initial excel sheets. Within a try catch because the database 
&lt;br&gt;
'could be empty (a workbook without worksheets is not allowed)&lt;br&gt;
&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;Try&lt;br&gt;
&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Dim&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; SheetCount &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Integer&lt;/span&gt; =
xlExcel.Sheets.Count&lt;br&gt;
&lt;span style="COLOR: blue"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;CType&lt;/span&gt;(xlExcel.Sheets(SheetCount
- 0), Excel.Worksheet).Delete()&lt;br&gt;
&lt;span style="COLOR: blue"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;CType&lt;/span&gt;(xlExcel.Sheets(SheetCount
- 1), Excel.Worksheet).Delete()&lt;br&gt;
&lt;span style="COLOR: blue"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;CType&lt;/span&gt;(xlExcel.Sheets(SheetCount
- 2), Excel.Worksheet).Delete()&lt;br&gt;
&lt;span style="COLOR: blue"&gt;Catch&lt;/span&gt; ex &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; Exception&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;End&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; &lt;span style="COLOR: blue"&gt;Try&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;'Save
the excel file&lt;br&gt;
&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;xlBook.SaveAs(sFile)&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;'Make
sure all objects are disposed&lt;br&gt;
&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;xlBook.Close()&lt;br&gt;
xlExcel.Quit()&lt;br&gt;
ReleaseComObject(xlCells)&lt;br&gt;
ReleaseComObject(tblSheet)&lt;br&gt;
ReleaseComObject(xlBook)&lt;br&gt;
ReleaseComObject(xlBooks)&lt;br&gt;
ReleaseComObject(xlExcel)&lt;br&gt;
xlExcel = &lt;span style="COLOR: blue"&gt;Nothing&lt;br&gt;
&lt;/span&gt;xlBooks = &lt;span style="COLOR: blue"&gt;Nothing&lt;br&gt;
&lt;/span&gt;xlBook = &lt;span style="COLOR: blue"&gt;Nothing&lt;br&gt;
&lt;/span&gt;tblSheet = &lt;span style="COLOR: blue"&gt;Nothing&lt;br&gt;
&lt;/span&gt;xlCells = &lt;span style="COLOR: blue"&gt;Nothing&lt;br&gt;
&lt;/span&gt;&lt;span style="COLOR: green"&gt;'Let the Garbage Collector know it can get to work&lt;br&gt;
&lt;/span&gt;GC.Collect()&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;'Export
Excel for download&lt;br&gt;
&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;Try&lt;br&gt;
&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;HttpContext.Current.Response.ContentType
= &lt;span style="COLOR: #a31515"&gt;"application/octet-stream"&lt;br&gt;
&lt;/span&gt;HttpContext.Current.Response.AddHeader(&lt;span style="COLOR: #a31515"&gt;"Content-Disposition"&lt;/span&gt;, &lt;span style="COLOR: #a31515"&gt;"attachment;
filename="&lt;/span&gt; + System.IO.Path.GetFileName(sFile))&lt;br&gt;
HttpContext.Current.Response.Clear()&lt;br&gt;
HttpContext.Current.Response.WriteFile(sFile)&lt;br&gt;
HttpContext.Current.Response.End()&lt;br&gt;
&lt;span style="COLOR: blue"&gt;Catch&lt;/span&gt; ex &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; Exception&lt;br&gt;
&lt;span style="COLOR: green"&gt;'An exception will be thrown, but can just be ignored&lt;br&gt;
&lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Try&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;End&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; &lt;span style="COLOR: blue"&gt;Sub&lt;/span&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;div class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center" align=center&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt; 
&lt;hr align=center width="100%" size=2&gt;
&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'; mso-ansi-language: EN-US"&gt;To
generate the individual sheets, the following Sub is used:&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;Private&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;Sub&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; GenerateExcelFile(&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;ByRef&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; table &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;As&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; DataTable, &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;ByVal&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; xlCells &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;As&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; Excel.Range)&lt;br&gt;
&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;Dim&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; dr &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;As&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; DataRow,
ary() &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;As&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;Object&lt;br&gt;
Dim&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; iRow &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;As&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;Integer&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;,
iCol &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;As&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;Integer&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'; mso-ansi-language: EN-US"&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;'Output
Column Headers&lt;br&gt;
&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;For&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; iCol
= 0 &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;To&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; table.Columns.Count
- 1&lt;br&gt;
&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;xlCells(1, iCol + 1) = table.Columns(iCol).ToString&lt;br&gt;
&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;xlCells(1).EntireRow.Font.Bold
= &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;True&lt;br&gt;
Next&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;'Output
Data&lt;br&gt;
&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;For&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; iRow
= 0 &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;To&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; table.Rows.Count
- 1&lt;br&gt;
&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;dr = table.Rows.Item(iRow)&lt;br&gt;
&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;ary = dr.ItemArray&lt;br&gt;
&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;For&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; iCol
= 0 &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;To&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; UBound(ary)&lt;br&gt;
&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;xlCells(iRow
+ 2, iCol + 1) = ary(iCol).ToString&lt;br&gt;
&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Response.Write(ary(iCol).ToString
&amp;amp; vbTab)&lt;br&gt;
&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Next&lt;br&gt;
Next&lt;br&gt;
&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;xlCells.Columns.AutoFit()&lt;br&gt;
&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;End&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;Sub&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'; mso-ansi-language: EN-US"&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;div class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center" align=center&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt; 
&lt;hr align=center width="100%" size=2&gt;
&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'; mso-ansi-language: EN-US"&gt;And
now the trick to getting all tables and data from a database:&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;Public&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; database &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;as
String&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'; mso-ansi-language: EN-US"&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;Public&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;ReadOnly&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;Property&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; getAllTables(&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;ByVal &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;sDB &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;As
String&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;) &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;As&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; DataSet&lt;br&gt;
&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Get&lt;br&gt;
&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;database
= sDB&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;
&lt;br&gt;
&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: #0033ff; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;Dim&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; m_dshelp &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: #0033ff; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;As&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; DataSet
= &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;New&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; DataSet&lt;br&gt;
&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;getRequestedAllTables(m_dshelp)&lt;br&gt;
&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Return&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; m_dshelp&lt;br&gt;
&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;End&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;Get&lt;br&gt;
End&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;Property&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'; mso-ansi-language: EN-US"&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;div class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center" align=center&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt; 
&lt;hr align=center width="100%" size=2&gt;
&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;Private&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;Function&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; getRequestedAllTables(&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;ByRef&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; p_dataset &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;As&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; DataSet) &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;As&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;Boolean&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;'Retrieve
all tablenames from the database:&lt;br&gt;
&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;Dim&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; sSQL &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;As&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;String&lt;br&gt;
Dim&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; dsTables &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;As&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; DataSet
= &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;New&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; DataSet&lt;br&gt;
sSQL = &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;"SELECT
[TableName] = so.name, [RowCount] = MAX(si.rows) "&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; &amp;amp;
_&lt;br&gt;
&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;"FROM
sysobjects so, sysindexes si "&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; &amp;amp;
_&lt;br&gt;
&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;"WHERE
so.xtype = 'U' AND si.id = OBJECT_ID(so.name) AND si.rows &amp;gt; 0 "&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; &amp;amp;
_&lt;br&gt;
&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;"GROUP
BY so.name "&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; &amp;amp;
_&lt;br&gt;
&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;"ORDER
BY 2 DESC"&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'; mso-ansi-language: EN-US"&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;getData(sSQL, &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;"Tables"&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;,
dsTables)&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'; mso-ansi-language: EN-US"&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;'Loop
thrue all tables and do a SELECT *. Then add them to the dataset&lt;br&gt;
&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;For&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; i &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;As&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;Integer&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; =
0 &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;To&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; dsTables.Tables(0).Rows.Count
- 1&lt;br&gt;
&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;sSQL = &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;"SELECT
* FROM "&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; &amp;amp;
dsTables.Tables(0).Rows(i).Item(0)&lt;br&gt;
&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;getData(sSQL, dsTables.Tables(0).Rows(i).Item(0),
p_dataset)&lt;br&gt;
&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;Next&lt;br&gt;
End&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;Function&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'; mso-ansi-language: EN-US"&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;div class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center" align=center&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt; 
&lt;hr align=center width="100%" size=2&gt;
&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;Private
Function &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;getData&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;(ByVal &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;p_sql&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; As
String, ByVal &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;p_table&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; As
String, ByRef &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;pdataset&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; As
DataSet) As Boolean&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;Dim &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;objDataAdapter&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt; As &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;SqlDataAdapter&lt;br&gt;
&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;Dim &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;objcommand&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt; As &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;SqlCommand&lt;br&gt;
objcommand&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;=&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt; New &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;SqlCommand(p_sql,
getConnection)&lt;br&gt;
objDataAdapter =&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt; New &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;SqlDataAdapter(objcommand)&lt;br&gt;
objDataAdapter.Fill(pdataset, p_table)&lt;br&gt;
&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;End
Function&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;div class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center" align=center&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt; 
&lt;hr align=center width="100%" size=2&gt;
&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;Private&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;Function&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; getConnection() &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;As&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; SqlConnection&lt;br&gt;
&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: #0033ff; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;If&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; (ConfigurationManager.AppSettings("&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;SQLPW"&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;)
&amp;lt;&amp;gt;&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;""&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;)&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; Then&lt;br&gt;
&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;getConnection
=&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; New &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;SqlConnection(&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;"Server="&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;&amp;amp;
_&lt;br&gt;
&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;ConfigurationManager.AppSettings("&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;SQLserver"&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;)
&amp;amp;&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;";password="&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;&amp;amp;
_&lt;br&gt;
&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;ConfigurationManager.AppSettings(&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;"SQLPW"&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;)
&amp;amp;&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;";
user="&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;&amp;amp;
_&lt;br&gt;
&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;ConfigurationManager.AppSettings("&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;SQLUser"&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;)
&amp;amp;&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;";database="&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;&amp;amp;
database)&lt;br&gt;
&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;Else&lt;br&gt;
&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;getConnection
=&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; New &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;SqlConnection(&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;"Data
Source="&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;&amp;amp;
_&lt;br&gt;
&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;ConfigurationManager.AppSettings(&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;"SQLserver"&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;)
&amp;amp;&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;";Initial
Catalog="&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;&amp;amp;
_&lt;br&gt;
&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;database
&amp;amp;&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;";Integrated
Security=True"&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;)&lt;br&gt;
&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;End
If&lt;br&gt;
End Function&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=460690d4-689e-4c82-b550-7c5223219568" /&gt;</description>
      <comments>http://www.spotgnome.com/CommentView,guid,460690d4-689e-4c82-b550-7c5223219568.aspx</comments>
      <category>.Net</category>
      <category>Programming</category>
      <category>Visual Studio</category>
    </item>
    <item>
      <trackback:ping>http://www.spotgnome.com/Trackback.aspx?guid=52cec26c-2bfa-4a08-a36c-eae5c4d49b78</trackback:ping>
      <pingback:server>http://www.spotgnome.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.spotgnome.com/PermaLink,guid,52cec26c-2bfa-4a08-a36c-eae5c4d49b78.aspx</pingback:target>
      <dc:creator>Guy Levin</dc:creator>
      <wfw:comment>http://www.spotgnome.com/CommentView,guid,52cec26c-2bfa-4a08-a36c-eae5c4d49b78.aspx</wfw:comment>
      <wfw:commentRss>http://www.spotgnome.com/SyndicationService.asmx/GetEntryCommentsRss?guid=52cec26c-2bfa-4a08-a36c-eae5c4d49b78</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <ol class="article_ordered_list">
          <li>
If your site's content can be turned into a widget somehow, such as with an RSS feed
or just a mini version of your site (ex. the puzzles widget on this site) - do so
- and then submit your widget to all the major widget-oriented websites such as iGoogle,
Netvibes, Pageflakes, Facebook, Live, Widgetbox and Widgipedia - it will help drive
a LOT of traffic to your site - think of it as a great form of content syndication. 
<br /></li>
          <li>
Do NOT: have a public link exchange on your site, sign your site up on link farms
or on SEO directories - this will lower your rankings on Google a lot - take it from
experience.<br /></li>
          <li>
Though CSS can replicate the styling brought from these tags, search bots love them
- so they're worth using for SEO purposes: &lt;h1&gt; - &lt;h5&gt;, &lt;strong&gt;,
&lt;em&gt;.<br /></li>
          <li>
Make sure your site supports the big four: Internet Explorer 6+, Firefox 1.5+, Opera,
and Safari.<br /></li>
          <li>
Make sure your site fits down to a 1024 x 768 monitor resolution.<br /></li>
          <li>
Use the color wheel when creating layout themes. Try to keep your site layout down
to three distinct colors.<br /></li>
          <li>
Create a website shell (a.k.a. template), so that if you decide to make another website
down the road, it will be a lot quicker to make because you'll already have a framework
set up.<br /></li>
          <li>
Create a to-do list for your site so you don't forget anything as it grows bigger
- I like to jot sudden ideas I get down on it too.<br /></li>
          <li>
A successful website provides a service to its users - such as teaching (Wikipedia)
and/or social networking (Facebook).<br /></li>
          <li>
Whenever possible, use onmousedown instead of onclick - it's ~100ms faster.<br /></li>
          <li>
Use file compression for your javascript and web page files so that your pages load
faster - also if you can, put the script include tags at the bottom of your page -
this will give the illusion that your site loads faster because browsers usually comb
through an entire js file before continuing on with loading the rest of your page.<br /></li>
          <li>
If you have a rails site, I suggest checking out Mongrel and Monit for Mongrel (or <a title="God - Process and task monitoring done right" href="http://god.rubyforge.org/" target="_blank">God</a>)
if you are currently using Apache with FastCGI. You may notice your app is a lot faster
with Mongrel clustering than on FastCGI.<br /></li>
          <li>
This one is more of a for-your-health point, but our eyes naturally look slightly
downwards - so if your computer screen is straight in front of you at eye level or
higher, trying moving it down to neck or chest level - you may notice that your eyes
feel more relaxed -- (I learned this last point from an eye doctor and feel that it
helps me.) 
</li>
        </ol>
        <img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=52cec26c-2bfa-4a08-a36c-eae5c4d49b78" />
      </body>
      <title>13 Web Development Tips You Should Know</title>
      <guid isPermaLink="false">http://www.spotgnome.com/PermaLink,guid,52cec26c-2bfa-4a08-a36c-eae5c4d49b78.aspx</guid>
      <link>http://www.spotgnome.com/2008/03/04/13WebDevelopmentTipsYouShouldKnow.aspx</link>
      <pubDate>Tue, 04 Mar 2008 09:30:24 GMT</pubDate>
      <description>&lt;ol class=article_ordered_list&gt;
&lt;li&gt;
If your site's content can be turned into a widget somehow, such as with an RSS feed
or just a mini version of your site (ex. the puzzles widget on this site) - do so
- and then submit your widget to all the major widget-oriented websites such as iGoogle,
Netvibes, Pageflakes, Facebook, Live, Widgetbox and Widgipedia - it will help drive
a LOT of traffic to your site - think of it as a great form of content syndication. 
&lt;br&gt;
&lt;li&gt;
Do NOT: have a public link exchange on your site, sign your site up on link farms
or on SEO directories - this will lower your rankings on Google a lot - take it from
experience.&lt;br&gt;
&lt;li&gt;
Though CSS can replicate the styling brought from these tags, search bots love them
- so they're worth using for SEO purposes: &amp;lt;h1&amp;gt; - &amp;lt;h5&amp;gt;, &amp;lt;strong&amp;gt;,
&amp;lt;em&amp;gt;.&lt;br&gt;
&lt;li&gt;
Make sure your site supports the big four: Internet Explorer 6+, Firefox 1.5+, Opera,
and Safari.&lt;br&gt;
&lt;li&gt;
Make sure your site fits down to a 1024 x 768 monitor resolution.&lt;br&gt;
&lt;li&gt;
Use the color wheel when creating layout themes. Try to keep your site layout down
to three distinct colors.&lt;br&gt;
&lt;li&gt;
Create a website shell (a.k.a. template), so that if you decide to make another website
down the road, it will be a lot quicker to make because you'll already have a framework
set up.&lt;br&gt;
&lt;li&gt;
Create a to-do list for your site so you don't forget anything as it grows bigger
- I like to jot sudden ideas I get down on it too.&lt;br&gt;
&lt;li&gt;
A successful website provides a service to its users - such as teaching (Wikipedia)
and/or social networking (Facebook).&lt;br&gt;
&lt;li&gt;
Whenever possible, use onmousedown instead of onclick - it's ~100ms faster.&lt;br&gt;
&lt;li&gt;
Use file compression for your javascript and web page files so that your pages load
faster - also if you can, put the script include tags at the bottom of your page -
this will give the illusion that your site loads faster because browsers usually comb
through an entire js file before continuing on with loading the rest of your page.&lt;br&gt;
&lt;li&gt;
If you have a rails site, I suggest checking out Mongrel and Monit for Mongrel (or &lt;a title="God - Process and task monitoring done right" href="http://god.rubyforge.org/" target=_blank&gt;God&lt;/a&gt;)
if you are currently using Apache with FastCGI. You may notice your app is a lot faster
with Mongrel clustering than on FastCGI.&lt;br&gt;
&lt;li&gt;
This one is more of a for-your-health point, but our eyes naturally look slightly
downwards - so if your computer screen is straight in front of you at eye level or
higher, trying moving it down to neck or chest level - you may notice that your eyes
feel more relaxed -- (I learned this last point from an eye doctor and feel that it
helps me.) 
&lt;/li&gt;
&lt;/ol&gt;
&lt;img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=52cec26c-2bfa-4a08-a36c-eae5c4d49b78" /&gt;</description>
      <comments>http://www.spotgnome.com/CommentView,guid,52cec26c-2bfa-4a08-a36c-eae5c4d49b78.aspx</comments>
      <category>Programming</category>
      <category>Web Design</category>
    </item>
    <item>
      <trackback:ping>http://www.spotgnome.com/Trackback.aspx?guid=13a20cc6-ed14-47d4-8b25-66917cc96228</trackback:ping>
      <pingback:server>http://www.spotgnome.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.spotgnome.com/PermaLink,guid,13a20cc6-ed14-47d4-8b25-66917cc96228.aspx</pingback:target>
      <dc:creator>Guy Levin</dc:creator>
      <wfw:comment>http://www.spotgnome.com/CommentView,guid,13a20cc6-ed14-47d4-8b25-66917cc96228.aspx</wfw:comment>
      <wfw:commentRss>http://www.spotgnome.com/SyndicationService.asmx/GetEntryCommentsRss?guid=13a20cc6-ed14-47d4-8b25-66917cc96228</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Object oriented programming has been around for quite some time and was made popular
by C++ back in the day. Nowadays, even web scripting languages support the paradigm.
JavaScript does not have true OO but allows you to use the design pattern in your
code. Today, we will dive into using object oriented programming with the popular
JavaScript framework Prototype.
</p>
        <p>
Prototype makes it easy to declare your own objects by using the "Class.create()"
method:
</p>
        <div class="dp-highlighter">
          <div class="bar">
            <div class="tools">
              <a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">view
plain</a>
              <a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">copy
to clipboard</a>
              <a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">print</a>
              <a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">?</a>
            </div>
          </div>
          <ol class="dp-c">
            <li class="alt">
              <span>
                <span class="keyword">var</span>
                <span> sampleObject = Class.create();  </span>
              </span>
            </li>
          </ol>
        </div>
        <pre class="js" style="DISPLAY: none" name="code">var sampleObject = Class.create();
</pre>
        <p>
          <br />
Once you do that you can start writing your class specific methods and properties
inside the "prototype" object:
</p>
        <div class="dp-highlighter">
          <div class="bar">
            <div class="tools">
              <a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">view
plain</a>
              <a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">copy
to clipboard</a>
              <a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">print</a>
              <a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">?</a>
            </div>
          </div>
          <ol class="dp-c">
            <li class="alt">
              <span>
                <span>sampleObject.prototype = {   </span>
              </span>
            </li>
            <li class="">
              <span>}  </span>
            </li>
          </ol>
        </div>
        <pre class="js" style="DISPLAY: none" name="code">sampleObject.prototype = {
}
</pre>
        <p>
          <br />
To declare private properties you simply specify the name of the property followed
by a colon and the value:
</p>
        <div class="dp-highlighter">
          <div class="bar">
            <div class="tools">
              <a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">view
plain</a>
              <a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">copy
to clipboard</a>
              <a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">print</a>
              <a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">?</a>
            </div>
          </div>
          <ol class="dp-c">
            <li class="alt">
              <span>
                <span>sampleObject.prototype = {   </span>
              </span>
            </li>
            <li class="">
              <span>    linkIDs: [</span>
              <span class="string">'mainPageLink'</span>
              <span>, </span>
              <span class="string">'cdmScreenLink'</span>
              <span>, </span>
              <span class="string">'adminLink'</span>
              <span>, </span>
              <span class="string">'helpLink'</span>
              <span>],
  </span>
            </li>
            <li class="alt">
              <span>    statusMessage: </span>
              <span class="string">''</span>
              <span>,
  </span>
            </li>
            <li class="">
              <span>    currentLinkID: </span>
              <span class="string">'myLink'</span>
              <span>  </span>
            </li>
            <li class="alt">
              <span>}  </span>
            </li>
          </ol>
        </div>
        <pre class="js" style="DISPLAY: none" name="code">sampleObject.prototype = {
	linkIDs: ['mainPageLink', 'cdmScreenLink', 'adminLink', 'helpLink'],
	statusMessage: '',
	currentLinkID: 'myLink'
}
</pre>
        <p>
          <br />
The important thing to remember is that each property needs to be separated from the
next by a comma. As shown above, property values can be a array, a number, a string
but cannot be empty value. While:
</p>
        <div class="dp-highlighter">
          <div class="bar">
            <div class="tools">
              <a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">view
plain</a>
              <a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">copy
to clipboard</a>
              <a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">print</a>
              <a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">?</a>
            </div>
          </div>
          <ol class="dp-c">
            <li class="alt">
              <span>
                <span>currentLinkID: </span>
                <span class="string">'myLink'</span>
                <span>,  </span>
              </span>
            </li>
          </ol>
        </div>
        <pre class="js" style="DISPLAY: none" name="code">currentLinkID: 'myLink',
</pre>
        <p>
          <br />
is valid while
</p>
        <div class="dp-highlighter">
          <div class="bar">
            <div class="tools">
              <a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">view
plain</a>
              <a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">copy
to clipboard</a>
              <a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">print</a>
              <a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">?</a>
            </div>
          </div>
          <ol class="dp-c">
            <li class="alt">
              <span>
                <span>currentLinkID:,  </span>
              </span>
            </li>
          </ol>
        </div>
        <pre class="js" style="DISPLAY: none" name="code">currentLinkID:,
</pre>
        <p>
          <br />
is not.
</p>
        <p>
Declaring your own functions is not any different. Before we look into functions however,
there is one function that requires special attention: the "initialize" function:
</p>
        <div class="dp-highlighter">
          <div class="bar">
            <div class="tools">
              <a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">view
plain</a>
              <a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">copy
to clipboard</a>
              <a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">print</a>
              <a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">?</a>
            </div>
          </div>
          <ol class="dp-c">
            <li class="alt">
              <span>
                <span>initialize: </span>
                <span class="keyword">function</span>
                <span>() {
  </span>
              </span>
            </li>
            <li class="">
              <span>}  </span>
            </li>
          </ol>
        </div>
        <pre class="js" style="DISPLAY: none" name="code">initialize: function() {
}
</pre>
        <p>
          <br />
The initialize function is what JavaScript calls automatically when you create an
instance of your object. If you are familiar with OO, this function is the constructor
of your object. Any setup and initial requirements for using your object should be
done in here.
</p>
        <p>
So to get back to regular functions, they are declared in the format functionName:
function() {} as in:
</p>
        <div class="dp-highlighter">
          <div class="bar">
            <div class="tools">
              <a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">view
plain</a>
              <a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">copy
to clipboard</a>
              <a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">print</a>
              <a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">?</a>
            </div>
          </div>
          <ol class="dp-c">
            <li class="alt">
              <span>
                <span>doSomething: </span>
                <span class="keyword">function</span>
                <span>() {
  </span>
              </span>
            </li>
            <li class="">
              <span>}  </span>
            </li>
          </ol>
        </div>
        <pre class="js" style="DISPLAY: none" name="code">doSomething: function() {
}
</pre>
        <p>
          <br />
        </p>
        <p>
So far your object should like like this:
</p>
        <div class="dp-highlighter">
          <div class="bar">
            <div class="tools">
              <a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">view
plain</a>
              <a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">copy
to clipboard</a>
              <a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">print</a>
              <a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">?</a>
            </div>
          </div>
          <ol class="dp-c">
            <li class="alt">
              <span>
                <span class="keyword">var</span>
                <span> sampleObject = Class.create();
  </span>
              </span>
            </li>
            <li class="">
              <span>sampleObject.prototype = {   </span>
            </li>
            <li class="alt">
              <span>    linkIDs: [</span>
              <span class="string">'mainPageLink'</span>
              <span>, </span>
              <span class="string">'cdmScreenLink'</span>
              <span>, </span>
              <span class="string">'adminLink'</span>
              <span>, </span>
              <span class="string">'helpLink'</span>
              <span>],
  </span>
            </li>
            <li class="">
              <span>    statusMessage: </span>
              <span class="string">''</span>
              <span>,
  </span>
            </li>
            <li class="alt">
              <span>    currentLinkID: </span>
              <span class="string">'myLink'</span>
              <span>,
  </span>
            </li>
            <li class="">
              <span>    initialize: </span>
              <span class="keyword">function</span>
              <span>() {
  </span>
            </li>
            <li class="alt">
              <span>    },   </span>
            </li>
            <li class="">
              <span>    doSomething: </span>
              <span class="keyword">function</span>
              <span>() {
  </span>
            </li>
            <li class="alt">
              <span>    }   </span>
            </li>
            <li class="">
              <span>}  </span>
            </li>
          </ol>
        </div>
        <pre class="js" style="DISPLAY: none" name="code">var sampleObject = Class.create();
sampleObject.prototype = {
	linkIDs: ['mainPageLink', 'cdmScreenLink', 'adminLink', 'helpLink'],
	statusMessage: '',
	currentLinkID: 'myLink',
	initialize: function() {
	},
	doSomething: function() {
	}
}
</pre>
        <p>
          <br />
Big deal right, including that in your html page and/or a separate JavaScript file
does not do anything for you. The next step in making it of any use is to actually
create an instance of the object like so:
</p>
        <div class="dp-highlighter">
          <div class="bar">
            <div class="tools">
              <a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">view
plain</a>
              <a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">copy
to clipboard</a>
              <a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">print</a>
              <a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">?</a>
            </div>
          </div>
          <ol class="dp-c">
            <li class="alt">
              <span>
                <span class="keyword">var</span>
                <span> sampleObjectInstance = </span>
                <span class="keyword">new</span>
                <span> sampleObject();  </span>
              </span>
            </li>
          </ol>
        </div>
        <pre class="js" style="DISPLAY: none" name="code">var sampleObjectInstance = new sampleObject();
</pre>
        <p>
          <br />
Creating an instance of the object automatically calls all your code inside the "initialize"
function. Here, a good practice is to wrap the creation of your object inside the
windows load or dom:loaded (Prototype v1.6) event like:
</p>
        <div class="dp-highlighter">
          <div class="bar">
            <div class="tools">
              <a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">view
plain</a>
              <a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">copy
to clipboard</a>
              <a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">print</a>
              <a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">?</a>
            </div>
          </div>
          <ol class="dp-c">
            <li class="alt">
              <span>
                <span>Event.observe(window, </span>
                <span class="string">'load'</span>
                <span>, </span>
                <span class="keyword">function</span>
                <span>() {
  </span>
              </span>
            </li>
            <li class="">
              <span>    </span>
              <span class="keyword">var</span>
              <span> sampleObjectInstance = </span>
              <span class="keyword">new</span>
              <span> sampleObject();
  </span>
            </li>
            <li class="alt">
              <span>});  </span>
            </li>
          </ol>
        </div>
        <pre class="js" style="DISPLAY: none" name="code">Event.observe(window, 'load', function() {
	var sampleObjectInstance = new sampleObject();
});
</pre>
        <p>
          <br />
Or
</p>
        <div class="dp-highlighter">
          <div class="bar">
            <div class="tools">
              <a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">view
plain</a>
              <a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">copy
to clipboard</a>
              <a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">print</a>
              <a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">?</a>
            </div>
          </div>
          <ol class="dp-c">
            <li class="alt">
              <span>
                <span>document.observe(</span>
                <span class="string">"dom:loaded"</span>
                <span>, </span>
                <span class="keyword">function</span>
                <span>() {
  </span>
              </span>
            </li>
            <li class="">
              <span>    </span>
              <span class="keyword">var</span>
              <span> sampleObjectInstance = </span>
              <span class="keyword">new</span>
              <span> sampleObject();
  </span>
            </li>
            <li class="alt">
              <span>});  </span>
            </li>
          </ol>
        </div>
        <pre class="js" style="DISPLAY: none" name="code">document.observe("dom:loaded", function() {
	var sampleObjectInstance = new sampleObject();
});
</pre>
        <p>
          <br />
To expand on using properties inside your object, whenever you want to access a property
such as "currentLinkID", you have to prefix it with "this" as in:
</p>
        <div class="dp-highlighter">
          <div class="bar">
            <div class="tools">
              <a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">view
plain</a>
              <a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">copy
to clipboard</a>
              <a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">print</a>
              <a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">?</a>
            </div>
          </div>
          <ol class="dp-c">
            <li class="alt">
              <span>
                <span class="keyword">this</span>
                <span>.statusMessage = </span>
                <span class="string">'Who Am I?'</span>
                <span>;  </span>
              </span>
            </li>
          </ol>
        </div>
        <pre class="js" style="DISPLAY: none" name="code">this.statusMessage = 'Who Am I?';
</pre>
        <p>
          <br />
That is because inside your object's function, without "this", the code does not know
about the property. The same applies to using function so you cannot simply called
the "doSomething" function with:
</p>
        <div class="dp-highlighter">
          <div class="bar">
            <div class="tools">
              <a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">view
plain</a>
              <a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">copy
to clipboard</a>
              <a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">print</a>
              <a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">?</a>
            </div>
          </div>
          <ol class="dp-c">
            <li class="alt">
              <span>
                <span>doSomething();  </span>
              </span>
            </li>
          </ol>
        </div>
        <pre class="js" style="DISPLAY: none" name="code">doSomething();
</pre>
        <p>
          <br />
but instead if you have to use:
</p>
        <div class="dp-highlighter">
          <div class="bar">
            <div class="tools">
              <a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">view
plain</a>
              <a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">copy
to clipboard</a>
              <a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">print</a>
              <a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">?</a>
            </div>
          </div>
          <ol class="dp-c">
            <li class="alt">
              <span>
                <span class="keyword">this</span>
                <span>.doSomething();  </span>
              </span>
            </li>
          </ol>
        </div>
        <pre class="js" style="DISPLAY: none" name="code">this.doSomething();</pre>
        <p>
 
</p>
        <p>
          <br />
This can get a little more complicated when it comes to using event listeners inside
your code. Let me elaborate. To tie an event observer that will call the "doSomething"
function when a users clicks the link with ID 'myLink', you would usually do:
</p>
        <div class="dp-highlighter">
          <div class="bar">
            <div class="tools">
              <a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">view
plain</a>
              <a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">copy
to clipboard</a>
              <a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">print</a>
              <a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">?</a>
            </div>
          </div>
          <ol class="dp-c">
            <li class="alt">
              <span>
                <span>$(</span>
                <span class="keyword">this</span>
                <span>.currentLinkID).observe(</span>
                <span class="string">'click'</span>
                <span>, </span>
                <span class="keyword">this</span>
                <span>.doSomething);  </span>
              </span>
            </li>
          </ol>
        </div>
        <pre class="js" style="DISPLAY: none" name="code">$(this.currentLinkID).observe('click', this.doSomething);
</pre>
        <p>
          <br />
While that will work, if you try to access any class properties (such as "statusMessage")
inside the "doSomething" function, you will get "undefined" for their values. That
is because, again as pointed out above, the function is not aware that it belongs
to an object so it does not know that the object has properties. The remedy is simple,
simply append .bind(this) to the function when it is tied to the event as in:
</p>
        <div class="dp-highlighter">
          <div class="bar">
            <div class="tools">
              <a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">view
plain</a>
              <a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">copy
to clipboard</a>
              <a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">print</a>
              <a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">?</a>
            </div>
          </div>
          <ol class="dp-c">
            <li class="alt">
              <span>
                <span>$(</span>
                <span class="keyword">this</span>
                <span>.currentLinkID).observe(</span>
                <span class="string">'click'</span>
                <span>, </span>
                <span class="keyword">this</span>
                <span>.doSomething.bind(</span>
                <span class="keyword">this</span>
                <span>));  </span>
              </span>
            </li>
          </ol>
        </div>
        <pre class="js" style="DISPLAY: none" name="code">$(this.currentLinkID).observe('click', this.doSomething.bind(this));
</pre>
        <p>
          <br />
A similar approach needs to be applied when using the prototype built-in Ajax object.
If you want to tie your custom functions to the "onFailure", "onComplete" or "onSuccess"
functions, you need to use the "bindAsEventListener" function:
</p>
        <div class="dp-highlighter">
          <div class="bar">
            <div class="tools">
              <a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">view
plain</a>
              <a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">copy
to clipboard</a>
              <a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">print</a>
              <a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">?</a>
            </div>
          </div>
          <ol class="dp-c">
            <li class="alt">
              <span>
                <span>onSuccess: </span>
                <span class="keyword">this</span>
                <span>.showContent.bindAsEventListener(</span>
                <span class="keyword">this</span>
                <span>)  </span>
              </span>
            </li>
          </ol>
        </div>
        <pre class="js" style="DISPLAY: none" name="code">onSuccess: this.showContent.bindAsEventListener(this)
</pre>
        <p>
          <br />
"Bind" also needs to be used whenever you employ the "each" construct as described
in <a href="http://ajax.dzone.com/tips/using-bind-arrays-gotcha-under" target="_blank">Gotcha
with Prototype.Bind and Arrays</a></p>
        <p>
Below is the full class:
</p>
        <div class="dp-highlighter">
          <div class="bar">
            <div class="tools">
              <a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">view
plain</a>
              <a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">copy
to clipboard</a>
              <a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">print</a>
              <a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">?</a>
            </div>
          </div>
          <ol class="dp-c">
            <li class="alt">
              <span>
                <span class="keyword">var</span>
                <span> sampleObject = Class.create();
  </span>
              </span>
            </li>
            <li class="">
              <span>sampleObject.prototype = {   </span>
            </li>
            <li class="alt">
              <span>    linkIDs: [</span>
              <span class="string">'mainPageLink'</span>
              <span>, </span>
              <span class="string">'cdmScreenLink'</span>
              <span>, </span>
              <span class="string">'adminLink'</span>
              <span>, </span>
              <span class="string">'helpLink'</span>
              <span>],
  </span>
            </li>
            <li class="">
              <span>    statusMessage: </span>
              <span class="string">''</span>
              <span>,
  </span>
            </li>
            <li class="alt">
              <span>    currentLinkID: </span>
              <span class="string">'myLink'</span>
              <span>,
  </span>
            </li>
            <li class="">
              <span>    initialize: </span>
              <span class="keyword">function</span>
              <span>() {
  </span>
            </li>
            <li class="alt">
              <span>        </span>
              <span class="keyword">this</span>
              <span>.statusMessage = </span>
              <span class="string">'Who Am I?'</span>
              <span>;
  </span>
            </li>
            <li class="">
              <span>  </span>
            </li>
            <li class="alt">
              <span>        $(</span>
              <span class="keyword">this</span>
              <span>.currentLinkID).observe(</span>
              <span class="string">'click'</span>
              <span>, </span>
              <span class="keyword">this</span>
              <span>.doSomething.bind(</span>
              <span class="keyword">this</span>
              <span>));
  </span>
            </li>
            <li class="">
              <span>    },   </span>
            </li>
            <li class="alt">
              <span>    doSomething: </span>
              <span class="keyword">function</span>
              <span>() {
  </span>
            </li>
            <li class="">
              <span>        alert(</span>
              <span class="keyword">this</span>
              <span>.statusMessage);
  </span>
            </li>
            <li class="alt">
              <span>  </span>
            </li>
            <li class="">
              <span>        </span>
              <span class="keyword">new</span>
              <span> Ajax.Request(
  </span>
            </li>
            <li class="alt">
              <span>            $(</span>
              <span class="keyword">this</span>
              <span>.currentLinkID).href,
  </span>
            </li>
            <li class="">
              <span>            {   </span>
            </li>
            <li class="alt">
              <span>            method: </span>
              <span class="string">'get'</span>
              <span>,
  </span>
            </li>
            <li class="">
              <span>            onSuccess: </span>
              <span class="keyword">this</span>
              <span>.processContent.bindAsEventListener(</span>
              <span class="keyword">this</span>
              <span>),
  </span>
            </li>
            <li class="alt">
              <span>            evalScripts: </span>
              <span class="keyword">true</span>
              <span>  </span>
            </li>
            <li class="">
              <span>            }   </span>
            </li>
            <li class="alt">
              <span>        );   </span>
            </li>
            <li class="">
              <span>    },   </span>
            </li>
            <li class="alt">
              <span>    processContent: </span>
              <span class="keyword">function</span>
              <span>(request) {
  </span>
            </li>
            <li class="">
              <span>    }   </span>
            </li>
            <li class="alt">
              <span>}   </span>
            </li>
            <li class="">
              <span>  </span>
            </li>
            <li class="alt">
              <span>Event.observe(window, </span>
              <span class="string">'load'</span>
              <span>, </span>
              <span class="keyword">function</span>
              <span>() {
  </span>
            </li>
            <li class="">
              <span>    </span>
              <span class="keyword">var</span>
              <span> sampleObjectInstance = </span>
              <span class="keyword">new</span>
              <span> sampleObject();
  </span>
            </li>
            <li class="alt">
              <span>});  </span>
            </li>
          </ol>
        </div>
        <pre class="js" style="DISPLAY: none" name="code">var sampleObject = Class.create();
sampleObject.prototype = {
	linkIDs: ['mainPageLink', 'cdmScreenLink', 'adminLink', 'helpLink'],
	statusMessage: '',
	currentLinkID: 'myLink',
	initialize: function() {
		this.statusMessage = 'Who Am I?';

		$(this.currentLinkID).observe('click', this.doSomething.bind(this));
	},
	doSomething: function() {
		alert(this.statusMessage);

		new Ajax.Request(
			$(this.currentLinkID).href,
			{
			method: 'get',
			onSuccess: this.processContent.bindAsEventListener(this),
			evalScripts: true
			}
		);
	},
	processContent: function(request) {
	}
}

Event.observe(window, 'load', function() {
	var sampleObjectInstance = new sampleObject();
});
</pre>
        <p>
          <br />
To call the functions of the sampleObject from outside you would simply do:
</p>
        <div class="dp-highlighter">
          <div class="bar">
            <div class="tools">
              <a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">view
plain</a>
              <a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">copy
to clipboard</a>
              <a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">print</a>
              <a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">?</a>
            </div>
          </div>
          <ol class="dp-c">
            <li class="alt">
              <span>
                <span>sampleObjectInstance.doSomething();  </span>
              </span>
            </li>
          </ol>
        </div>
        <pre class="js" style="DISPLAY: none" name="code">sampleObjectInstance.doSomething();
</pre>
        <p>
While you can access it's properties with the syntax:
</p>
        <div class="dp-highlighter">
          <div class="bar">
            <div class="tools">
              <a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">view
plain</a>
              <a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">copy
to clipboard</a>
              <a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">print</a>
              <a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#">?</a>
            </div>
          </div>
          <ol class="dp-c">
            <li class="alt">
              <span>
                <span>alert(sampleObjectInstance.statusMessage);  </span>
              </span>
            </li>
          </ol>
        </div>
        <pre class="js" style="DISPLAY: none" name="code">alert(sampleObjectInstance.statusMessage);
</pre>
        <p>
          <br />
        </p>
        <p>
That concludes the basic guide to using object oriented programming with Prototype. 
</p>
        <img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=13a20cc6-ed14-47d4-8b25-66917cc96228" />
      </body>
      <title>Object Oriented Programming with Prototype.js</title>
      <guid isPermaLink="false">http://www.spotgnome.com/PermaLink,guid,13a20cc6-ed14-47d4-8b25-66917cc96228.aspx</guid>
      <link>http://www.spotgnome.com/2008/03/03/ObjectOrientedProgrammingWithPrototypejs.aspx</link>
      <pubDate>Mon, 03 Mar 2008 08:10:37 GMT</pubDate>
      <description>&lt;p&gt;
Object oriented programming has been around for quite some time and was made popular
by C++ back in the day. Nowadays, even web scripting languages support the paradigm.
JavaScript does not have true OO but allows you to use the design pattern in your
code. Today, we will dive into using object oriented programming with the popular
JavaScript framework Prototype.
&lt;/p&gt;
&lt;p&gt;
Prototype makes it easy to declare your own objects by using the "Class.create()"
method:
&lt;/p&gt;
&lt;div class=dp-highlighter&gt;
&lt;div class=bar&gt;
&lt;div class=tools&gt;&lt;a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;view
plain&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;copy
to clipboard&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;print&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;?&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ol class=dp-c&gt;
&lt;li class=alt&gt;
&lt;span&gt;&lt;span class=keyword&gt;var&lt;/span&gt;&lt;span&gt;&amp;nbsp;sampleObject&amp;nbsp;=&amp;nbsp;Class.create();&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;pre class=js style="DISPLAY: none" name="code"&gt;var sampleObject = Class.create();
&lt;/pre&gt;
&lt;p&gt;
&lt;br&gt;
Once you do that you can start writing your class specific methods and properties
inside the "prototype" object:
&lt;/p&gt;
&lt;div class=dp-highlighter&gt;
&lt;div class=bar&gt;
&lt;div class=tools&gt;&lt;a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;view
plain&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;copy
to clipboard&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;print&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;?&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ol class=dp-c&gt;
&lt;li class=alt&gt;
&lt;span&gt;&lt;span&gt;sampleObject.prototype&amp;nbsp;=&amp;nbsp;{ &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;
&lt;/li&gt;
&lt;li class=""&gt;
&lt;span&gt;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;pre class=js style="DISPLAY: none" name="code"&gt;sampleObject.prototype = {
}
&lt;/pre&gt;
&lt;p&gt;
&lt;br&gt;
To declare private properties you simply specify the name of the property followed
by a colon and the value:
&lt;/p&gt;
&lt;div class=dp-highlighter&gt;
&lt;div class=bar&gt;
&lt;div class=tools&gt;&lt;a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;view
plain&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;copy
to clipboard&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;print&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;?&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ol class=dp-c&gt;
&lt;li class=alt&gt;
&lt;span&gt;&lt;span&gt;sampleObject.prototype&amp;nbsp;=&amp;nbsp;{ &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;
&lt;/li&gt;
&lt;li class=""&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;linkIDs:&amp;nbsp;[&lt;/span&gt;&lt;span class=string&gt;'mainPageLink'&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class=string&gt;'cdmScreenLink'&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class=string&gt;'adminLink'&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class=string&gt;'helpLink'&lt;/span&gt;&lt;span&gt;],
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&gt;
&lt;/li&gt;
&lt;li class=alt&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;statusMessage:&amp;nbsp;&lt;/span&gt;&lt;span class=string&gt;''&lt;/span&gt;&lt;span&gt;,
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&gt;
&lt;/li&gt;
&lt;li class=""&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;currentLinkID:&amp;nbsp;&lt;/span&gt;&lt;span class=string&gt;'myLink'&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&gt;
&lt;/li&gt;
&lt;li class=alt&gt;
&lt;span&gt;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;pre class=js style="DISPLAY: none" name="code"&gt;sampleObject.prototype = {
	linkIDs: ['mainPageLink', 'cdmScreenLink', 'adminLink', 'helpLink'],
	statusMessage: '',
	currentLinkID: 'myLink'
}
&lt;/pre&gt;
&lt;p&gt;
&lt;br&gt;
The important thing to remember is that each property needs to be separated from the
next by a comma. As shown above, property values can be a array, a number, a string
but cannot be empty value. While:
&lt;/p&gt;
&lt;div class=dp-highlighter&gt;
&lt;div class=bar&gt;
&lt;div class=tools&gt;&lt;a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;view
plain&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;copy
to clipboard&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;print&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;?&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ol class=dp-c&gt;
&lt;li class=alt&gt;
&lt;span&gt;&lt;span&gt;currentLinkID:&amp;nbsp;&lt;/span&gt;&lt;span class=string&gt;'myLink'&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;pre class=js style="DISPLAY: none" name="code"&gt;currentLinkID: 'myLink',
&lt;/pre&gt;
&lt;p&gt;
&lt;br&gt;
is valid while
&lt;/p&gt;
&lt;div class=dp-highlighter&gt;
&lt;div class=bar&gt;
&lt;div class=tools&gt;&lt;a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;view
plain&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;copy
to clipboard&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;print&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;?&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ol class=dp-c&gt;
&lt;li class=alt&gt;
&lt;span&gt;&lt;span&gt;currentLinkID:,&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;pre class=js style="DISPLAY: none" name="code"&gt;currentLinkID:,
&lt;/pre&gt;
&lt;p&gt;
&lt;br&gt;
is not.
&lt;/p&gt;
&lt;p&gt;
Declaring your own functions is not any different. Before we look into functions however,
there is one function that requires special attention: the "initialize" function:
&lt;/p&gt;
&lt;div class=dp-highlighter&gt;
&lt;div class=bar&gt;
&lt;div class=tools&gt;&lt;a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;view
plain&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;copy
to clipboard&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;print&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;?&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ol class=dp-c&gt;
&lt;li class=alt&gt;
&lt;span&gt;&lt;span&gt;initialize:&amp;nbsp;&lt;/span&gt;&lt;span class=keyword&gt;function&lt;/span&gt;&lt;span&gt;()&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;
&lt;/li&gt;
&lt;li class=""&gt;
&lt;span&gt;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;pre class=js style="DISPLAY: none" name="code"&gt;initialize: function() {
}
&lt;/pre&gt;
&lt;p&gt;
&lt;br&gt;
The initialize function is what JavaScript calls automatically when you create an
instance of your object. If you are familiar with OO, this function is the constructor
of your object. Any setup and initial requirements for using your object should be
done in here.
&lt;/p&gt;
&lt;p&gt;
So to get back to regular functions, they are declared in the format functionName:
function() {} as in:
&lt;/p&gt;
&lt;div class=dp-highlighter&gt;
&lt;div class=bar&gt;
&lt;div class=tools&gt;&lt;a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;view
plain&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;copy
to clipboard&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;print&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;?&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ol class=dp-c&gt;
&lt;li class=alt&gt;
&lt;span&gt;&lt;span&gt;doSomething:&amp;nbsp;&lt;/span&gt;&lt;span class=keyword&gt;function&lt;/span&gt;&lt;span&gt;()&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;
&lt;/li&gt;
&lt;li class=""&gt;
&lt;span&gt;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;pre class=js style="DISPLAY: none" name="code"&gt;doSomething: function() {
}
&lt;/pre&gt;
&lt;p&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
So far your object should like like this:
&lt;/p&gt;
&lt;div class=dp-highlighter&gt;
&lt;div class=bar&gt;
&lt;div class=tools&gt;&lt;a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;view
plain&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;copy
to clipboard&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;print&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;?&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ol class=dp-c&gt;
&lt;li class=alt&gt;
&lt;span&gt;&lt;span class=keyword&gt;var&lt;/span&gt;&lt;span&gt;&amp;nbsp;sampleObject&amp;nbsp;=&amp;nbsp;Class.create();
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;
&lt;/li&gt;
&lt;li class=""&gt;
&lt;span&gt;sampleObject.prototype&amp;nbsp;=&amp;nbsp;{ &amp;nbsp;&amp;nbsp;&lt;/span&gt;
&lt;/li&gt;
&lt;li class=alt&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;linkIDs:&amp;nbsp;[&lt;/span&gt;&lt;span class=string&gt;'mainPageLink'&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class=string&gt;'cdmScreenLink'&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class=string&gt;'adminLink'&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class=string&gt;'helpLink'&lt;/span&gt;&lt;span&gt;],
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&gt;
&lt;/li&gt;
&lt;li class=""&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;statusMessage:&amp;nbsp;&lt;/span&gt;&lt;span class=string&gt;''&lt;/span&gt;&lt;span&gt;,
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&gt;
&lt;/li&gt;
&lt;li class=alt&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;currentLinkID:&amp;nbsp;&lt;/span&gt;&lt;span class=string&gt;'myLink'&lt;/span&gt;&lt;span&gt;,
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&gt;
&lt;/li&gt;
&lt;li class=""&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;initialize:&amp;nbsp;&lt;/span&gt;&lt;span class=keyword&gt;function&lt;/span&gt;&lt;span&gt;()&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&gt;
&lt;/li&gt;
&lt;li class=alt&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}, &amp;nbsp;&amp;nbsp;&lt;/span&gt;
&lt;/li&gt;
&lt;li class=""&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;doSomething:&amp;nbsp;&lt;/span&gt;&lt;span class=keyword&gt;function&lt;/span&gt;&lt;span&gt;()&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&gt;
&lt;/li&gt;
&lt;li class=alt&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &amp;nbsp;&amp;nbsp;&lt;/span&gt;
&lt;/li&gt;
&lt;li class=""&gt;
&lt;span&gt;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;pre class=js style="DISPLAY: none" name="code"&gt;var sampleObject = Class.create();
sampleObject.prototype = {
	linkIDs: ['mainPageLink', 'cdmScreenLink', 'adminLink', 'helpLink'],
	statusMessage: '',
	currentLinkID: 'myLink',
	initialize: function() {
	},
	doSomething: function() {
	}
}
&lt;/pre&gt;
&lt;p&gt;
&lt;br&gt;
Big deal right, including that in your html page and/or a separate JavaScript file
does not do anything for you. The next step in making it of any use is to actually
create an instance of the object like so:
&lt;/p&gt;
&lt;div class=dp-highlighter&gt;
&lt;div class=bar&gt;
&lt;div class=tools&gt;&lt;a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;view
plain&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;copy
to clipboard&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;print&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;?&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ol class=dp-c&gt;
&lt;li class=alt&gt;
&lt;span&gt;&lt;span class=keyword&gt;var&lt;/span&gt;&lt;span&gt;&amp;nbsp;sampleObjectInstance&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class=keyword&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;sampleObject();&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;pre class=js style="DISPLAY: none" name="code"&gt;var sampleObjectInstance = new sampleObject();
&lt;/pre&gt;
&lt;p&gt;
&lt;br&gt;
Creating an instance of the object automatically calls all your code inside the "initialize"
function. Here, a good practice is to wrap the creation of your object inside the
windows load or dom:loaded (Prototype v1.6) event like:
&lt;/p&gt;
&lt;div class=dp-highlighter&gt;
&lt;div class=bar&gt;
&lt;div class=tools&gt;&lt;a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;view
plain&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;copy
to clipboard&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;print&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;?&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ol class=dp-c&gt;
&lt;li class=alt&gt;
&lt;span&gt;&lt;span&gt;Event.observe(window,&amp;nbsp;&lt;/span&gt;&lt;span class=string&gt;'load'&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class=keyword&gt;function&lt;/span&gt;&lt;span&gt;()&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;
&lt;/li&gt;
&lt;li class=""&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=keyword&gt;var&lt;/span&gt;&lt;span&gt;&amp;nbsp;sampleObjectInstance&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class=keyword&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;sampleObject();
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&gt;
&lt;/li&gt;
&lt;li class=alt&gt;
&lt;span&gt;});&amp;nbsp;&amp;nbsp;&lt;/span&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;pre class=js style="DISPLAY: none" name="code"&gt;Event.observe(window, 'load', function() {
	var sampleObjectInstance = new sampleObject();
});
&lt;/pre&gt;
&lt;p&gt;
&lt;br&gt;
Or
&lt;/p&gt;
&lt;div class=dp-highlighter&gt;
&lt;div class=bar&gt;
&lt;div class=tools&gt;&lt;a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;view
plain&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;copy
to clipboard&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;print&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;?&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ol class=dp-c&gt;
&lt;li class=alt&gt;
&lt;span&gt;&lt;span&gt;document.observe(&lt;/span&gt;&lt;span class=string&gt;"dom:loaded"&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class=keyword&gt;function&lt;/span&gt;&lt;span&gt;()&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;
&lt;/li&gt;
&lt;li class=""&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=keyword&gt;var&lt;/span&gt;&lt;span&gt;&amp;nbsp;sampleObjectInstance&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class=keyword&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;sampleObject();
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&gt;
&lt;/li&gt;
&lt;li class=alt&gt;
&lt;span&gt;});&amp;nbsp;&amp;nbsp;&lt;/span&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;pre class=js style="DISPLAY: none" name="code"&gt;document.observe("dom:loaded", function() {
	var sampleObjectInstance = new sampleObject();
});
&lt;/pre&gt;
&lt;p&gt;
&lt;br&gt;
To expand on using properties inside your object, whenever you want to access a property
such as "currentLinkID", you have to prefix it with "this" as in:
&lt;/p&gt;
&lt;div class=dp-highlighter&gt;
&lt;div class=bar&gt;
&lt;div class=tools&gt;&lt;a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;view
plain&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;copy
to clipboard&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;print&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;?&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ol class=dp-c&gt;
&lt;li class=alt&gt;
&lt;span&gt;&lt;span class=keyword&gt;this&lt;/span&gt;&lt;span&gt;.statusMessage&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class=string&gt;'Who&amp;nbsp;Am&amp;nbsp;I?'&lt;/span&gt;&lt;span&gt;;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;pre class=js style="DISPLAY: none" name="code"&gt;this.statusMessage = 'Who Am I?';
&lt;/pre&gt;
&lt;p&gt;
&lt;br&gt;
That is because inside your object's function, without "this", the code does not know
about the property. The same applies to using function so you cannot simply called
the "doSomething" function with:
&lt;/p&gt;
&lt;div class=dp-highlighter&gt;
&lt;div class=bar&gt;
&lt;div class=tools&gt;&lt;a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;view
plain&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;copy
to clipboard&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;print&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;?&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ol class=dp-c&gt;
&lt;li class=alt&gt;
&lt;span&gt;&lt;span&gt;doSomething();&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;pre class=js style="DISPLAY: none" name="code"&gt;doSomething();
&lt;/pre&gt;
&lt;p&gt;
&lt;br&gt;
but instead if you have to use:
&lt;/p&gt;
&lt;div class=dp-highlighter&gt;
&lt;div class=bar&gt;
&lt;div class=tools&gt;&lt;a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;view
plain&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;copy
to clipboard&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;print&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;?&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ol class=dp-c&gt;
&lt;li class=alt&gt;
&lt;span&gt;&lt;span class=keyword&gt;this&lt;/span&gt;&lt;span&gt;.doSomething();&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;pre class=js style="DISPLAY: none" name="code"&gt;this.doSomething();&lt;/pre&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;
This can get a little more complicated when it comes to using event listeners inside
your code. Let me elaborate. To tie an event observer that will call the "doSomething"
function when a users clicks the link with ID 'myLink', you would usually do:
&lt;/p&gt;
&lt;div class=dp-highlighter&gt;
&lt;div class=bar&gt;
&lt;div class=tools&gt;&lt;a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;view
plain&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;copy
to clipboard&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;print&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;?&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ol class=dp-c&gt;
&lt;li class=alt&gt;
&lt;span&gt;&lt;span&gt;$(&lt;/span&gt;&lt;span class=keyword&gt;this&lt;/span&gt;&lt;span&gt;.currentLinkID).observe(&lt;/span&gt;&lt;span class=string&gt;'click'&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class=keyword&gt;this&lt;/span&gt;&lt;span&gt;.doSomething);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;pre class=js style="DISPLAY: none" name="code"&gt;$(this.currentLinkID).observe('click', this.doSomething);
&lt;/pre&gt;
&lt;p&gt;
&lt;br&gt;
While that will work, if you try to access any class properties (such as "statusMessage")
inside the "doSomething" function, you will get "undefined" for their values. That
is because, again as pointed out above, the function is not aware that it belongs
to an object so it does not know that the object has properties. The remedy is simple,
simply append .bind(this) to the function when it is tied to the event as in:
&lt;/p&gt;
&lt;div class=dp-highlighter&gt;
&lt;div class=bar&gt;
&lt;div class=tools&gt;&lt;a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;view
plain&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;copy
to clipboard&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;print&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;?&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ol class=dp-c&gt;
&lt;li class=alt&gt;
&lt;span&gt;&lt;span&gt;$(&lt;/span&gt;&lt;span class=keyword&gt;this&lt;/span&gt;&lt;span&gt;.currentLinkID).observe(&lt;/span&gt;&lt;span class=string&gt;'click'&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class=keyword&gt;this&lt;/span&gt;&lt;span&gt;.doSomething.bind(&lt;/span&gt;&lt;span class=keyword&gt;this&lt;/span&gt;&lt;span&gt;));&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;pre class=js style="DISPLAY: none" name="code"&gt;$(this.currentLinkID).observe('click', this.doSomething.bind(this));
&lt;/pre&gt;
&lt;p&gt;
&lt;br&gt;
A similar approach needs to be applied when using the prototype built-in Ajax object.
If you want to tie your custom functions to the "onFailure", "onComplete" or "onSuccess"
functions, you need to use the "bindAsEventListener" function:
&lt;/p&gt;
&lt;div class=dp-highlighter&gt;
&lt;div class=bar&gt;
&lt;div class=tools&gt;&lt;a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;view
plain&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;copy
to clipboard&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;print&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;?&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ol class=dp-c&gt;
&lt;li class=alt&gt;
&lt;span&gt;&lt;span&gt;onSuccess:&amp;nbsp;&lt;/span&gt;&lt;span class=keyword&gt;this&lt;/span&gt;&lt;span&gt;.showContent.bindAsEventListener(&lt;/span&gt;&lt;span class=keyword&gt;this&lt;/span&gt;&lt;span&gt;)&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;pre class=js style="DISPLAY: none" name="code"&gt;onSuccess: this.showContent.bindAsEventListener(this)
&lt;/pre&gt;
&lt;p&gt;
&lt;br&gt;
"Bind" also needs to be used whenever you employ the "each" construct as described
in &lt;a href="http://ajax.dzone.com/tips/using-bind-arrays-gotcha-under" target=_blank&gt;Gotcha
with Prototype.Bind and Arrays&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Below is the full class:
&lt;/p&gt;
&lt;div class=dp-highlighter&gt;
&lt;div class=bar&gt;
&lt;div class=tools&gt;&lt;a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;view
plain&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;copy
to clipboard&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;print&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;?&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ol class=dp-c&gt;
&lt;li class=alt&gt;
&lt;span&gt;&lt;span class=keyword&gt;var&lt;/span&gt;&lt;span&gt;&amp;nbsp;sampleObject&amp;nbsp;=&amp;nbsp;Class.create();
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;
&lt;/li&gt;
&lt;li class=""&gt;
&lt;span&gt;sampleObject.prototype&amp;nbsp;=&amp;nbsp;{ &amp;nbsp;&amp;nbsp;&lt;/span&gt;
&lt;/li&gt;
&lt;li class=alt&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;linkIDs:&amp;nbsp;[&lt;/span&gt;&lt;span class=string&gt;'mainPageLink'&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class=string&gt;'cdmScreenLink'&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class=string&gt;'adminLink'&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class=string&gt;'helpLink'&lt;/span&gt;&lt;span&gt;],
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&gt;
&lt;/li&gt;
&lt;li class=""&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;statusMessage:&amp;nbsp;&lt;/span&gt;&lt;span class=string&gt;''&lt;/span&gt;&lt;span&gt;,
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&gt;
&lt;/li&gt;
&lt;li class=alt&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;currentLinkID:&amp;nbsp;&lt;/span&gt;&lt;span class=string&gt;'myLink'&lt;/span&gt;&lt;span&gt;,
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&gt;
&lt;/li&gt;
&lt;li class=""&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;initialize:&amp;nbsp;&lt;/span&gt;&lt;span class=keyword&gt;function&lt;/span&gt;&lt;span&gt;()&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&gt;
&lt;/li&gt;
&lt;li class=alt&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=keyword&gt;this&lt;/span&gt;&lt;span&gt;.statusMessage&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class=string&gt;'Who&amp;nbsp;Am&amp;nbsp;I?'&lt;/span&gt;&lt;span&gt;;
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&gt;
&lt;/li&gt;
&lt;li class=""&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;
&lt;/li&gt;
&lt;li class=alt&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$(&lt;/span&gt;&lt;span class=keyword&gt;this&lt;/span&gt;&lt;span&gt;.currentLinkID).observe(&lt;/span&gt;&lt;span class=string&gt;'click'&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class=keyword&gt;this&lt;/span&gt;&lt;span&gt;.doSomething.bind(&lt;/span&gt;&lt;span class=keyword&gt;this&lt;/span&gt;&lt;span&gt;));
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&gt;
&lt;/li&gt;
&lt;li class=""&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}, &amp;nbsp;&amp;nbsp;&lt;/span&gt;
&lt;/li&gt;
&lt;li class=alt&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;doSomething:&amp;nbsp;&lt;/span&gt;&lt;span class=keyword&gt;function&lt;/span&gt;&lt;span&gt;()&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&gt;
&lt;/li&gt;
&lt;li class=""&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert(&lt;/span&gt;&lt;span class=keyword&gt;this&lt;/span&gt;&lt;span&gt;.statusMessage);
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&gt;
&lt;/li&gt;
&lt;li class=alt&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;
&lt;/li&gt;
&lt;li class=""&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=keyword&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;Ajax.Request(
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&gt;
&lt;/li&gt;
&lt;li class=alt&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$(&lt;/span&gt;&lt;span class=keyword&gt;this&lt;/span&gt;&lt;span&gt;.currentLinkID).href,
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&gt;
&lt;/li&gt;
&lt;li class=""&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &amp;nbsp;&amp;nbsp;&lt;/span&gt;
&lt;/li&gt;
&lt;li class=alt&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;method:&amp;nbsp;&lt;/span&gt;&lt;span class=string&gt;'get'&lt;/span&gt;&lt;span&gt;,
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&gt;
&lt;/li&gt;
&lt;li class=""&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;onSuccess:&amp;nbsp;&lt;/span&gt;&lt;span class=keyword&gt;this&lt;/span&gt;&lt;span&gt;.processContent.bindAsEventListener(&lt;/span&gt;&lt;span class=keyword&gt;this&lt;/span&gt;&lt;span&gt;),
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&gt;
&lt;/li&gt;
&lt;li class=alt&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;evalScripts:&amp;nbsp;&lt;/span&gt;&lt;span class=keyword&gt;true&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&gt;
&lt;/li&gt;
&lt;li class=""&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &amp;nbsp;&amp;nbsp;&lt;/span&gt;
&lt;/li&gt;
&lt;li class=alt&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;); &amp;nbsp;&amp;nbsp;&lt;/span&gt;
&lt;/li&gt;
&lt;li class=""&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}, &amp;nbsp;&amp;nbsp;&lt;/span&gt;
&lt;/li&gt;
&lt;li class=alt&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;processContent:&amp;nbsp;&lt;/span&gt;&lt;span class=keyword&gt;function&lt;/span&gt;&lt;span&gt;(request)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&gt;
&lt;/li&gt;
&lt;li class=""&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &amp;nbsp;&amp;nbsp;&lt;/span&gt;
&lt;/li&gt;
&lt;li class=alt&gt;
&lt;span&gt;} &amp;nbsp;&amp;nbsp;&lt;/span&gt;
&lt;/li&gt;
&lt;li class=""&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;
&lt;/li&gt;
&lt;li class=alt&gt;
&lt;span&gt;Event.observe(window,&amp;nbsp;&lt;/span&gt;&lt;span class=string&gt;'load'&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class=keyword&gt;function&lt;/span&gt;&lt;span&gt;()&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&gt;
&lt;/li&gt;
&lt;li class=""&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=keyword&gt;var&lt;/span&gt;&lt;span&gt;&amp;nbsp;sampleObjectInstance&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class=keyword&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;sampleObject();
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&gt;
&lt;/li&gt;
&lt;li class=alt&gt;
&lt;span&gt;});&amp;nbsp;&amp;nbsp;&lt;/span&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;pre class=js style="DISPLAY: none" name="code"&gt;var sampleObject = Class.create();
sampleObject.prototype = {
	linkIDs: ['mainPageLink', 'cdmScreenLink', 'adminLink', 'helpLink'],
	statusMessage: '',
	currentLinkID: 'myLink',
	initialize: function() {
		this.statusMessage = 'Who Am I?';

		$(this.currentLinkID).observe('click', this.doSomething.bind(this));
	},
	doSomething: function() {
		alert(this.statusMessage);

		new Ajax.Request(
			$(this.currentLinkID).href,
			{
			method: 'get',
			onSuccess: this.processContent.bindAsEventListener(this),
			evalScripts: true
			}
		);
	},
	processContent: function(request) {
	}
}

Event.observe(window, 'load', function() {
	var sampleObjectInstance = new sampleObject();
});
&lt;/pre&gt;
&lt;p&gt;
&lt;br&gt;
To call the functions of the sampleObject from outside you would simply do:
&lt;/p&gt;
&lt;div class=dp-highlighter&gt;
&lt;div class=bar&gt;
&lt;div class=tools&gt;&lt;a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;view
plain&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;copy
to clipboard&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;print&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;?&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ol class=dp-c&gt;
&lt;li class=alt&gt;
&lt;span&gt;&lt;span&gt;sampleObjectInstance.doSomething();&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;pre class=js style="DISPLAY: none" name="code"&gt;sampleObjectInstance.doSomething();
&lt;/pre&gt;
&lt;p&gt;
While you can access it's properties with the syntax:
&lt;/p&gt;
&lt;div class=dp-highlighter&gt;
&lt;div class=bar&gt;
&lt;div class=tools&gt;&lt;a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;view
plain&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;copy
to clipboard&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;print&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://ajax.dzone.com/news/object-oriented-programming-pr#"&gt;?&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ol class=dp-c&gt;
&lt;li class=alt&gt;
&lt;span&gt;&lt;span&gt;alert(sampleObjectInstance.statusMessage);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;pre class=js style="DISPLAY: none" name="code"&gt;alert(sampleObjectInstance.statusMessage);
&lt;/pre&gt;
&lt;p&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
That concludes the basic guide to using object oriented programming with Prototype. 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=13a20cc6-ed14-47d4-8b25-66917cc96228" /&gt;</description>
      <comments>http://www.spotgnome.com/CommentView,guid,13a20cc6-ed14-47d4-8b25-66917cc96228.aspx</comments>
      <category>AJAX</category>
      <category>Javascript</category>
      <category>Programming</category>
    </item>
    <item>
      <trackback:ping>http://www.spotgnome.com/Trackback.aspx?guid=599ed2f8-b1fb-4a41-9ecb-315e48a821b5</trackback:ping>
      <pingback:server>http://www.spotgnome.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.spotgnome.com/PermaLink,guid,599ed2f8-b1fb-4a41-9ecb-315e48a821b5.aspx</pingback:target>
      <dc:creator>Guy Levin</dc:creator>
      <wfw:comment>http://www.spotgnome.com/CommentView,guid,599ed2f8-b1fb-4a41-9ecb-315e48a821b5.aspx</wfw:comment>
      <wfw:commentRss>http://www.spotgnome.com/SyndicationService.asmx/GetEntryCommentsRss?guid=599ed2f8-b1fb-4a41-9ecb-315e48a821b5</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Over my course of .NET development, I have compiled a list of essential free tools
for .NET applications. This is not a the alpha or the omega of tools, just a short
list that I feel is essential. 
</p>
        <ol>
          <li>
            <h3>SharpDevelop
</h3>
            <a href="http://www.icsharpcode.net/OpenSource/SD/Download" target="_blank">http://www.icsharpcode.net/OpenSource/SD/Download</a>
            <br />
An open source IDE for .NET. Check out the full <a href="http://community.sharpdevelop.net/blogs/mattward/articles/FeatureTour.aspx" target="_blank">feature
tour</a>.<br /><img class="image image-img_assist_custom" height="360" src="http://dotnet.dzone.com/sites/all/files/images/sharpDevelop.img_assist_custom.png" width="500" /><br /><br /></li>
          <li>
            <h3>Visual Web Developer Express Edition
</h3>
            <a id="sqs9" title="http://www.microsoft.com/express/vwd" href="http://www.microsoft.com/express/vwd" target="_blank">http://www.microsoft.com/express/vwd</a>
            <br />
Stripped down version of Visual Studio that allows you to write .NET web applications.<br /><img class="image image-img_assist_custom" height="429" src="http://dotnet.dzone.com/sites/all/files/images/visualWebDeveloper.img_assist_custom.png" width="500" /><br /><br /></li>
          <li>
            <h3>TortoiseSVN
</h3>
            <a id="maik" title="http://tortoisesvn.net/downloads" href="http://tortoisesvn.net/downloads" target="_blank">http://tortoisesvn.net/downloads</a>
            <br />
There is no better Subversion client for Windows. You need this if you are going to
use VisualSVN with Visual Studio.<br /><img class="image image-img_assist_custom" height="377" src="http://dotnet.dzone.com/sites/all/files/images/tortoiseSVN.img_assist_custom.png" width="499" /><br /><br /></li>
          <li>
            <h3>NAnt
</h3>
            <a id="v7xq" title="http://nant.sourceforge.net" href="http://nant.sourceforge.net/" target="_blank">http://nant.sourceforge.net</a>
            <br />
.NET based automation tool that has many built in tasks but could be extended with
custom code written in any .NET language.<br /><img class="image image-img_assist_custom" height="249" src="http://dotnet.dzone.com/sites/all/files/images/nant.img_assist_custom.png" width="499" /><br /><br /></li>
          <li>
            <h3>Snippet Compiler
</h3>
            <a href="http://www.sliver.com/dotnet/SnippetCompiler">http://www.sliver.com/dotnet/SnippetCompiler</a>
            <br />
Snippet compiler is a small tool to write and execute small chunks of .NET code without
creating a Visual Studio project.<br /><img class="image image-img_assist_custom" height="535" src="http://dotnet.dzone.com/sites/all/files/images/snippetCompiler.img_assist_custom.png" width="500" /><br /><br /></li>
          <li>
            <h3>.NET Reflector
</h3>
            <a id="a:c9" title="http://www.aisto.com/roeder/dotnet" href="http://www.aisto.com/roeder/dotnet" target="_blank">http://www.aisto.com/roeder/dotnet</a>
            <br />
Reflector is the class browser, explorer, analyzer and documentation viewer for .NET.
Reflector allows to easily view, navigate, search, decompile and analyze .NET assemblies
in C#, Visual Basic and IL.<br /><img class="image image-img_assist_custom" height="377" src="http://dotnet.dzone.com/sites/all/files/images/netReflector.img_assist_custom.png" width="499" /><br /><br /></li>
          <li>
            <h3>Microsoft SQL Server Management Studio Express
</h3>
            <a id="wr-8" title="http://www.microsoft.com/downloads/details.aspx?FamilyID=c243a5ae-4bd1-4e3d-94b8-5a0f62bf7796&amp;displaylang=en" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=c243a5ae-4bd1-4e3d-94b8-5a0f62bf7796&amp;displaylang=en" target="_blank">http://www.microsoft.com/downloads/details.aspx?FamilyID=c243a5ae-4bd1-4e3d-94b8-5a0f62bf7796&amp;displaylang=en</a>
            <br />
Tool for database administration and development from Microsoft<br /><img class="image image-img_assist_custom" height="377" src="http://dotnet.dzone.com/sites/all/files/images/sqlServerManagementStudio.img_assist_custom.png" width="499" /><br /><br /></li>
          <li>
            <h3>Quest Comparison Suite for SQL Server
</h3>
            <a id="gm:y" title="http://www.quest.com/Comparison-Suite-for-SQL-Server" href="http://www.quest.com/Comparison-Suite-for-SQL-Server" target="_blank">http://www.quest.com/Comparison-Suite-for-SQL-Server</a>
            <br />
Compare and synchronize database schema and data<br /><img class="image image-img_assist_custom" height="375" src="http://dotnet.dzone.com/sites/all/files/images/questComparisonSuiteSQLServer.img_assist_custom.png" width="500" /><br /><br /></li>
          <li>
            <h3>XYPlorer
</h3>
            <a id="r2ti" title="http://www.xyplorer.com" href="http://www.xyplorer.com/" target="_blank">http://www.xyplorer.com</a>
            <br />
Awesome file manager. The older version is completely free.<br /><img class="image image-img_assist_custom" height="377" src="http://dotnet.dzone.com/sites/all/files/images/xyplorer.img_assist_custom.png" width="499" /><br /><br /></li>
          <li>
            <h3>Convert C# to VB.NET
</h3>
            <a id="scga" title="http://labs.developerfusion.co.uk/convert/csharp-to-vb.aspx" href="http://labs.developerfusion.co.uk/convert/csharp-to-vb.aspx" target="_blank">http://labs.developerfusion.co.uk/convert/csharp-to-vb.aspx</a>
            <br />
            <img class="image image-img_assist_custom" height="305" src="http://dotnet.dzone.com/sites/all/files/images/convertCSharpToVB.img_assist_custom.png" width="499" />
          </li>
          <li>
            <h3>NAnt Add-In
</h3>
            <a id="lb3t" title="http://www.netlogics.ch/devcenter/display/NLC/NAntAddin" href="http://www.netlogics.ch/devcenter/display/NLC/NAntAddin" target="_blank">http://www.netlogics.ch/devcenter/display/NLC/NAntAddin</a>
            <br />
Visual Studio add-in for NAnt integration<br /><img class="image image-_original" height="646" src="http://dotnet.dzone.com/sites/all/files/images/nantAddin.png" width="325" /><br /><br /></li>
          <li>
            <h3>NUnit Add-In
</h3>
            <a id="ovlg" title="http://www.netlogics.ch/devcenter/display/NLC/NUnitAddin" href="http://www.netlogics.ch/devcenter/display/NLC/NUnitAddin" target="_blank">http://www.netlogics.ch/devcenter/display/NLC/NUnitAddin</a>
            <br />
Visual Studio add-in for NUnit integration<br /><img class="image image-_original" height="640" src="http://dotnet.dzone.com/sites/all/files/images/nUnitAddin.png" width="434" /></li>
        </ol>
        <img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=599ed2f8-b1fb-4a41-9ecb-315e48a821b5" />
      </body>
      <title>12 Essential Free Tools for .NET Developers</title>
      <guid isPermaLink="false">http://www.spotgnome.com/PermaLink,guid,599ed2f8-b1fb-4a41-9ecb-315e48a821b5.aspx</guid>
      <link>http://www.spotgnome.com/2008/02/28/12EssentialFreeToolsForNETDevelopers.aspx</link>
      <pubDate>Thu, 28 Feb 2008 12:53:42 GMT</pubDate>
      <description>&lt;p&gt;
Over my course of .NET development, I have compiled a list of essential free tools
for .NET applications. This is not a the alpha or the omega of tools, just a short
list that I feel is essential. 
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;h3&gt;SharpDevelop
&lt;/h3&gt;
&lt;a href="http://www.icsharpcode.net/OpenSource/SD/Download" target=_blank&gt;http://www.icsharpcode.net/OpenSource/SD/Download&lt;/a&gt;
&lt;br&gt;
An open source IDE for .NET. Check out the full &lt;a href="http://community.sharpdevelop.net/blogs/mattward/articles/FeatureTour.aspx" target=_blank&gt;feature
tour&lt;/a&gt;.&lt;br&gt;
&lt;img class="image image-img_assist_custom" height=360 src="http://dotnet.dzone.com/sites/all/files/images/sharpDevelop.img_assist_custom.png" width=500&gt; 
&lt;br&gt;
&lt;br&gt;
&lt;li&gt;
&lt;h3&gt;Visual Web Developer Express Edition
&lt;/h3&gt;
&lt;a id=sqs9 title=http://www.microsoft.com/express/vwd href="http://www.microsoft.com/express/vwd" target=_blank&gt;http://www.microsoft.com/express/vwd&lt;/a&gt;
&lt;br&gt;
Stripped down version of Visual Studio that allows you to write .NET web applications.&lt;br&gt;
&lt;img class="image image-img_assist_custom" height=429 src="http://dotnet.dzone.com/sites/all/files/images/visualWebDeveloper.img_assist_custom.png" width=500&gt; 
&lt;br&gt;
&lt;br&gt;
&lt;li&gt;
&lt;h3&gt;TortoiseSVN
&lt;/h3&gt;
&lt;a id=maik title=http://tortoisesvn.net/downloads href="http://tortoisesvn.net/downloads" target=_blank&gt;http://tortoisesvn.net/downloads&lt;/a&gt;
&lt;br&gt;
There is no better Subversion client for Windows. You need this if you are going to
use VisualSVN with Visual Studio.&lt;br&gt;
&lt;img class="image image-img_assist_custom" height=377 src="http://dotnet.dzone.com/sites/all/files/images/tortoiseSVN.img_assist_custom.png" width=499&gt; 
&lt;br&gt;
&lt;br&gt;
&lt;li&gt;
&lt;h3&gt;NAnt
&lt;/h3&gt;
&lt;a id=v7xq title=http://nant.sourceforge.net href="http://nant.sourceforge.net/" target=_blank&gt;http://nant.sourceforge.net&lt;/a&gt;
&lt;br&gt;
.NET based automation tool that has many built in tasks but could be extended with
custom code written in any .NET language.&lt;br&gt;
&lt;img class="image image-img_assist_custom" height=249 src="http://dotnet.dzone.com/sites/all/files/images/nant.img_assist_custom.png" width=499&gt; 
&lt;br&gt;
&lt;br&gt;
&lt;li&gt;
&lt;h3&gt;Snippet Compiler
&lt;/h3&gt;
&lt;a href="http://www.sliver.com/dotnet/SnippetCompiler"&gt;http://www.sliver.com/dotnet/SnippetCompiler&lt;/a&gt;
&lt;br&gt;
Snippet compiler is a small tool to write and execute small chunks of .NET code without
creating a Visual Studio project.&lt;br&gt;
&lt;img class="image image-img_assist_custom" height=535 src="http://dotnet.dzone.com/sites/all/files/images/snippetCompiler.img_assist_custom.png" width=500&gt; 
&lt;br&gt;
&lt;br&gt;
&lt;li&gt;
&lt;h3&gt;.NET Reflector
&lt;/h3&gt;
&lt;a id=a:c9 title=http://www.aisto.com/roeder/dotnet href="http://www.aisto.com/roeder/dotnet" target=_blank&gt;http://www.aisto.com/roeder/dotnet&lt;/a&gt;
&lt;br&gt;
Reflector is the class browser, explorer, analyzer and documentation viewer for .NET.
Reflector allows to easily view, navigate, search, decompile and analyze .NET assemblies
in C#, Visual Basic and IL.&lt;br&gt;
&lt;img class="image image-img_assist_custom" height=377 src="http://dotnet.dzone.com/sites/all/files/images/netReflector.img_assist_custom.png" width=499&gt; 
&lt;br&gt;
&lt;br&gt;
&lt;li&gt;
&lt;h3&gt;Microsoft SQL Server Management Studio Express
&lt;/h3&gt;
&lt;a id=wr-8 title=http://www.microsoft.com/downloads/details.aspx?FamilyID=c243a5ae-4bd1-4e3d-94b8-5a0f62bf7796&amp;amp;displaylang=en href="http://www.microsoft.com/downloads/details.aspx?FamilyID=c243a5ae-4bd1-4e3d-94b8-5a0f62bf7796&amp;amp;displaylang=en" target=_blank&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=c243a5ae-4bd1-4e3d-94b8-5a0f62bf7796&amp;amp;displaylang=en&lt;/a&gt;
&lt;br&gt;
Tool for database administration and development from Microsoft&lt;br&gt;
&lt;img class="image image-img_assist_custom" height=377 src="http://dotnet.dzone.com/sites/all/files/images/sqlServerManagementStudio.img_assist_custom.png" width=499&gt; 
&lt;br&gt;
&lt;br&gt;
&lt;li&gt;
&lt;h3&gt;Quest Comparison Suite for SQL Server
&lt;/h3&gt;
&lt;a id=gm:y title=http://www.quest.com/Comparison-Suite-for-SQL-Server href="http://www.quest.com/Comparison-Suite-for-SQL-Server" target=_blank&gt;http://www.quest.com/Comparison-Suite-for-SQL-Server&lt;/a&gt;
&lt;br&gt;
Compare and synchronize database schema and data&lt;br&gt;
&lt;img class="image image-img_assist_custom" height=375 src="http://dotnet.dzone.com/sites/all/files/images/questComparisonSuiteSQLServer.img_assist_custom.png" width=500&gt; 
&lt;br&gt;
&lt;br&gt;
&lt;li&gt;
&lt;h3&gt;XYPlorer
&lt;/h3&gt;
&lt;a id=r2ti title=http://www.xyplorer.com href="http://www.xyplorer.com/" target=_blank&gt;http://www.xyplorer.com&lt;/a&gt;
&lt;br&gt;
Awesome file manager. The older version is completely free.&lt;br&gt;
&lt;img class="image image-img_assist_custom" height=377 src="http://dotnet.dzone.com/sites/all/files/images/xyplorer.img_assist_custom.png" width=499&gt; 
&lt;br&gt;
&lt;br&gt;
&lt;li&gt;
&lt;h3&gt;Convert C# to VB.NET
&lt;/h3&gt;
&lt;a id=scga title=http://labs.developerfusion.co.uk/convert/csharp-to-vb.aspx href="http://labs.developerfusion.co.uk/convert/csharp-to-vb.aspx" target=_blank&gt;http://labs.developerfusion.co.uk/convert/csharp-to-vb.aspx&lt;/a&gt;
&lt;br&gt;
&lt;img class="image image-img_assist_custom" height=305 src="http://dotnet.dzone.com/sites/all/files/images/convertCSharpToVB.img_assist_custom.png" width=499&gt; 
&lt;li&gt;
&lt;h3&gt;NAnt Add-In
&lt;/h3&gt;
&lt;a id=lb3t title=http://www.netlogics.ch/devcenter/display/NLC/NAntAddin href="http://www.netlogics.ch/devcenter/display/NLC/NAntAddin" target=_blank&gt;http://www.netlogics.ch/devcenter/display/NLC/NAntAddin&lt;/a&gt;
&lt;br&gt;
Visual Studio add-in for NAnt integration&lt;br&gt;
&lt;img class="image image-_original" height=646 src="http://dotnet.dzone.com/sites/all/files/images/nantAddin.png" width=325&gt; 
&lt;br&gt;
&lt;br&gt;
&lt;li&gt;
&lt;h3&gt;NUnit Add-In
&lt;/h3&gt;
&lt;a id=ovlg title=http://www.netlogics.ch/devcenter/display/NLC/NUnitAddin href="http://www.netlogics.ch/devcenter/display/NLC/NUnitAddin" target=_blank&gt;http://www.netlogics.ch/devcenter/display/NLC/NUnitAddin&lt;/a&gt;
&lt;br&gt;
Visual Studio add-in for NUnit integration&lt;br&gt;
&lt;img class="image image-_original" height=640 src="http://dotnet.dzone.com/sites/all/files/images/nUnitAddin.png" width=434&gt; 
&lt;/li&gt;
&lt;/ol&gt;
&lt;img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=599ed2f8-b1fb-4a41-9ecb-315e48a821b5" /&gt;</description>
      <comments>http://www.spotgnome.com/CommentView,guid,599ed2f8-b1fb-4a41-9ecb-315e48a821b5.aspx</comments>
      <category>.Net</category>
      <category>Microsoft</category>
      <category>Programming</category>
      <category>Visual Studio</category>
    </item>
    <item>
      <trackback:ping>http://www.spotgnome.com/Trackback.aspx?guid=eb7dc6b6-b1f0-4ccf-80a8-7f33efb4109d</trackback:ping>
      <pingback:server>http://www.spotgnome.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.spotgnome.com/PermaLink,guid,eb7dc6b6-b1f0-4ccf-80a8-7f33efb4109d.aspx</pingback:target>
      <dc:creator>Guy Levin</dc:creator>
      <wfw:comment>http://www.spotgnome.com/CommentView,guid,eb7dc6b6-b1f0-4ccf-80a8-7f33efb4109d.aspx</wfw:comment>
      <wfw:commentRss>http://www.spotgnome.com/SyndicationService.asmx/GetEntryCommentsRss?guid=eb7dc6b6-b1f0-4ccf-80a8-7f33efb4109d</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
At a fundamental level it's important to understand how JavaScript timers work. Often
times they behave unintuitively because of the single thread which they are in. Let's
start by examining the three functions that we have access to with which to construct
and manipulate timers.
</p>
        <ul>
          <li>
            <code>var id = setTimeout(fn, delay);</code> - Initiates a single timer which will
call the specified function after the delay. The function returns a unique ID with
which the timer can be canceled at a later time. 
</li>
          <li>
            <code>var id = setInterval(fn, delay);</code> - Similar to <code>setTimeout</code> but
continually calls the function (with a delay every time) until it is canceled. 
</li>
          <li>
            <code>clearInterval(id);</code> - Accepts a timer ID (returned by either of the aforementioned
functions) and stops the timer callback from occurring. 
</li>
        </ul>
        <p>
In order to understand how the timers work internally there's one important concept
that needs to be explored: timer delay is not guaranteed. Since all JavaScript in
a browser executes on a single thread asynchronous events (such as mouse clicks and
timers) are only run when there's been an opening in the execution. This is best demonstrated
with a diagram, like in the following:
</p>
        <p>
        </p>
        <center>
          <a href="http://ejohn.org/files/Timers.png">
            <img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" src="http://ejohn.org/files/427px-Timers.png" />
            <br />
(Click to view full size diagram)</a>
        </center>
        <p>
        </p>
        <p>
There's a lot of information in this figure to digest but understanding it completely
will give you a better realization of how asynchronous JavaScript execution works.
This diagram is one dimensional: vertically we have the (wall clock) time, in milliseconds.
The blue boxes represent portions of JavaScript being executed. For example the first
block of JavaScript executes for approximately 18ms, the mouse click block for approximately
11ms, and so on.
</p>
        <p>
Since JavaScript can only ever execute one piece of code at a time (due to its single-threaded
nature) each of these blocks of code are "blocking" the progress of other asynchronous
events. This means that when an asynchronous event occurs (like a mouse click, a timer
firing, or an XMLHttpRequest completing) it gets queued up to be executed later (how
this queueing actually occurs surely varies from browser-to-browser, so consider this
to be a simplification).
</p>
        <p>
To start with, within the first block of JavaScript, two timers are initiated: a 10ms <code>setTimeout</code> and
a 10ms <code>setInterval</code>. Due to where and when the timer was started it actually
fires before we actually complete the first block of code. Note, however, that it
does not execute immediately (it is incapable of doing that, because of the threading).
Instead that delayed function is queued in order to be executed at the next available
moment.
</p>
        <p>
Additionally, within this first JavaScript block we see a mouse click occur. The JavaScript
callbacks associated with this asynchronous event (we never know when a user may perform
an action, thus it's consider to be asynchronous) are unable to be executed immediately
thus, like the initial timer, it is queued to be executed later.
</p>
        <p>
After the initial block of JavaScript finishes executing the browser immediately asks
the question: What is waiting to be executed? In this case both a mouse click handler
and a timer callback are waiting. The browser then picks one (the mouse click callback)
and executes it immediately. The timer will wait until the next possible time, in
order to execute.
</p>
        <p>
Note that while mouse click handler is executing the first interval callback executes.
As with the timer its handler is queued for later execution. However, note that when
the interval is fired again (when the timer handler is executing) this time that handler
execution is dropped. If you were to queue up all interval callbacks when a large
block of code is executing the result would be a bunch of intervals executing with
no delay between them, upon completion. Instead browsers tend to simply wait until
no more interval handlers are queued (for the interval in question) before queuing
more.
</p>
        <p>
We can, in fact, see that this is the case when a third interval callback fires while
the interval, itself, is executing. This shows us an important fact: Intervals don't
care about what is currently executing, they will queue indiscriminately, even if
it means that the time between callbacks will be sacrificed.
</p>
        <p>
Finally, after the second interval callback is finished executing, we can see that
there's nothing left for the JavaScript engine to execute. This means that the browser
now waits for a new asynchronous event to occur. We get this at the 50ms mark when
the interval fires again. This time, however, there is nothing blocking its execution,
so it fires immediately.
</p>
        <p>
Let's take a look at an example to better illustrate the differences between <code>setTimeout</code> and <code>setInterval</code>.
</p>
        <div class="syntax_hilite">
          <div id="js-1">
            <div>  setTimeout<span style="FONT-WEIGHT: bold; COLOR: #008800">(</span><span style="FONT-WEIGHT: bold; COLOR: #003366">function</span><span style="FONT-WEIGHT: bold; COLOR: #008800">(</span><span style="FONT-WEIGHT: bold; COLOR: #008800">)</span><span style="FONT-WEIGHT: bold; COLOR: #008800">{</span><br />
    <span style="COLOR: #009900; FONT-STYLE: italic">/* Some long block
of code... */</span><br />
    setTimeout<span style="FONT-WEIGHT: bold; COLOR: #008800">(</span>arguments.<span style="COLOR: #006600">callee</span>, <span style="COLOR: #cc0000">10</span><span style="FONT-WEIGHT: bold; COLOR: #008800">)</span>;<br />
  <span style="FONT-WEIGHT: bold; COLOR: #008800">}</span>, <span style="COLOR: #cc0000">10</span><span style="FONT-WEIGHT: bold; COLOR: #008800">)</span>;<br />
  
<br />
  setInterval<span style="FONT-WEIGHT: bold; COLOR: #008800">(</span><span style="FONT-WEIGHT: bold; COLOR: #003366">function</span><span style="FONT-WEIGHT: bold; COLOR: #008800">(</span><span style="FONT-WEIGHT: bold; COLOR: #008800">)</span><span style="FONT-WEIGHT: bold; COLOR: #008800">{</span><br />
    <span style="COLOR: #009900; FONT-STYLE: italic">/* Some long block
of code... */</span><br />
  <span style="FONT-WEIGHT: bold; COLOR: #008800">}</span>, <span style="COLOR: #cc0000">10</span><span style="FONT-WEIGHT: bold; COLOR: #008800">)</span>;
</div>
          </div>
        </div>
        <p>
These two pieces of code may appear to be functionally equivalent, at first glance,
but they are not. Notably the <code>setTimeout</code> code will always have at least
a 10ms delay after the previous callback execution (it may end up being more, but
never less) whereas the <code>setInterval</code> will attempt to execute a callback
every 10ms regardless of when the last callback was executed.
</p>
        <p>
There's a lot that we've learned here, let's recap:
</p>
        <ul>
          <li>
JavaScript engines only have a single thread, forcing asynchronous events to queue
waiting for execution. 
</li>
          <li>
            <code>setTimeout</code> and <code>setInterval</code> are fundamentally different in
how they execute asynchronous code. 
</li>
          <li>
If a timer is blocked from immediately executing it will be delayed until the next
possible point of execution (which will be longer than the desired delay). 
</li>
          <li>
Intervals may execute back-to-back with no delay if they take long enough to execute
(longer than the specified delay). 
</li>
        </ul>
        <p>
All of this is incredibly important knowledge to build off of. Knowing how a JavaScript
engine works, especially with the large number of asynchronous events that typically
occur, makes for a great foundation when building an advanced piece of application
code.
</p>
        <img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=eb7dc6b6-b1f0-4ccf-80a8-7f33efb4109d" />
      </body>
      <title>How JavaScript Timers Work</title>
      <guid isPermaLink="false">http://www.spotgnome.com/PermaLink,guid,eb7dc6b6-b1f0-4ccf-80a8-7f33efb4109d.aspx</guid>
      <link>http://www.spotgnome.com/2008/02/25/HowJavaScriptTimersWork.aspx</link>
      <pubDate>Mon, 25 Feb 2008 15:01:18 GMT</pubDate>
      <description>&lt;p&gt;
At a fundamental level it's important to understand how JavaScript timers work. Often
times they behave unintuitively because of the single thread which they are in. Let's
start by examining the three functions that we have access to with which to construct
and manipulate timers.
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;var id = setTimeout(fn, delay);&lt;/code&gt; - Initiates a single timer which will
call the specified function after the delay. The function returns a unique ID with
which the timer can be canceled at a later time. 
&lt;li&gt;
&lt;code&gt;var id = setInterval(fn, delay);&lt;/code&gt; - Similar to &lt;code&gt;setTimeout&lt;/code&gt; but
continually calls the function (with a delay every time) until it is canceled. 
&lt;li&gt;
&lt;code&gt;clearInterval(id);&lt;/code&gt; - Accepts a timer ID (returned by either of the aforementioned
functions) and stops the timer callback from occurring. 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
In order to understand how the timers work internally there's one important concept
that needs to be explored: timer delay is not guaranteed. Since all JavaScript in
a browser executes on a single thread asynchronous events (such as mouse clicks and
timers) are only run when there's been an opening in the execution. This is best demonstrated
with a diagram, like in the following:
&lt;/p&gt;
&lt;p&gt;
&lt;center&gt;&lt;a href="http://ejohn.org/files/Timers.png"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" src="http://ejohn.org/files/427px-Timers.png"&gt;
&lt;br&gt;
(Click to view full size diagram)&lt;/a&gt;
&lt;/center&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
There's a lot of information in this figure to digest but understanding it completely
will give you a better realization of how asynchronous JavaScript execution works.
This diagram is one dimensional: vertically we have the (wall clock) time, in milliseconds.
The blue boxes represent portions of JavaScript being executed. For example the first
block of JavaScript executes for approximately 18ms, the mouse click block for approximately
11ms, and so on.
&lt;/p&gt;
&lt;p&gt;
Since JavaScript can only ever execute one piece of code at a time (due to its single-threaded
nature) each of these blocks of code are "blocking" the progress of other asynchronous
events. This means that when an asynchronous event occurs (like a mouse click, a timer
firing, or an XMLHttpRequest completing) it gets queued up to be executed later (how
this queueing actually occurs surely varies from browser-to-browser, so consider this
to be a simplification).
&lt;/p&gt;
&lt;p&gt;
To start with, within the first block of JavaScript, two timers are initiated: a 10ms &lt;code&gt;setTimeout&lt;/code&gt; and
a 10ms &lt;code&gt;setInterval&lt;/code&gt;. Due to where and when the timer was started it actually
fires before we actually complete the first block of code. Note, however, that it
does not execute immediately (it is incapable of doing that, because of the threading).
Instead that delayed function is queued in order to be executed at the next available
moment.
&lt;/p&gt;
&lt;p&gt;
Additionally, within this first JavaScript block we see a mouse click occur. The JavaScript
callbacks associated with this asynchronous event (we never know when a user may perform
an action, thus it's consider to be asynchronous) are unable to be executed immediately
thus, like the initial timer, it is queued to be executed later.
&lt;/p&gt;
&lt;p&gt;
After the initial block of JavaScript finishes executing the browser immediately asks
the question: What is waiting to be executed? In this case both a mouse click handler
and a timer callback are waiting. The browser then picks one (the mouse click callback)
and executes it immediately. The timer will wait until the next possible time, in
order to execute.
&lt;/p&gt;
&lt;p&gt;
Note that while mouse click handler is executing the first interval callback executes.
As with the timer its handler is queued for later execution. However, note that when
the interval is fired again (when the timer handler is executing) this time that handler
execution is dropped. If you were to queue up all interval callbacks when a large
block of code is executing the result would be a bunch of intervals executing with
no delay between them, upon completion. Instead browsers tend to simply wait until
no more interval handlers are queued (for the interval in question) before queuing
more.
&lt;/p&gt;
&lt;p&gt;
We can, in fact, see that this is the case when a third interval callback fires while
the interval, itself, is executing. This shows us an important fact: Intervals don't
care about what is currently executing, they will queue indiscriminately, even if
it means that the time between callbacks will be sacrificed.
&lt;/p&gt;
&lt;p&gt;
Finally, after the second interval callback is finished executing, we can see that
there's nothing left for the JavaScript engine to execute. This means that the browser
now waits for a new asynchronous event to occur. We get this at the 50ms mark when
the interval fires again. This time, however, there is nothing blocking its execution,
so it fires immediately.
&lt;/p&gt;
&lt;p&gt;
Let's take a look at an example to better illustrate the differences between &lt;code&gt;setTimeout&lt;/code&gt; and &lt;code&gt;setInterval&lt;/code&gt;.
&lt;/p&gt;
&lt;div class=syntax_hilite&gt;
&lt;div id=js-1&gt;
&lt;div&gt;&amp;nbsp; setTimeout&lt;span style="FONT-WEIGHT: bold; COLOR: #008800"&gt;(&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #003366"&gt;function&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #008800"&gt;(&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #008800"&gt;)&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #008800"&gt;{&lt;/span&gt;
&lt;br&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="COLOR: #009900; FONT-STYLE: italic"&gt;/* Some long block
of code... */&lt;/span&gt;
&lt;br&gt;
&amp;nbsp; &amp;nbsp; setTimeout&lt;span style="FONT-WEIGHT: bold; COLOR: #008800"&gt;(&lt;/span&gt;arguments.&lt;span style="COLOR: #006600"&gt;callee&lt;/span&gt;, &lt;span style="COLOR: #cc0000"&gt;10&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #008800"&gt;)&lt;/span&gt;;&lt;br&gt;
&amp;nbsp; &lt;span style="FONT-WEIGHT: bold; COLOR: #008800"&gt;}&lt;/span&gt;, &lt;span style="COLOR: #cc0000"&gt;10&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #008800"&gt;)&lt;/span&gt;;&lt;br&gt;
&amp;nbsp; 
&lt;br&gt;
&amp;nbsp; setInterval&lt;span style="FONT-WEIGHT: bold; COLOR: #008800"&gt;(&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #003366"&gt;function&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #008800"&gt;(&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #008800"&gt;)&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #008800"&gt;{&lt;/span&gt;
&lt;br&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="COLOR: #009900; FONT-STYLE: italic"&gt;/* Some long block
of code... */&lt;/span&gt;
&lt;br&gt;
&amp;nbsp; &lt;span style="FONT-WEIGHT: bold; COLOR: #008800"&gt;}&lt;/span&gt;, &lt;span style="COLOR: #cc0000"&gt;10&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #008800"&gt;)&lt;/span&gt;;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
These two pieces of code may appear to be functionally equivalent, at first glance,
but they are not. Notably the &lt;code&gt;setTimeout&lt;/code&gt; code will always have at least
a 10ms delay after the previous callback execution (it may end up being more, but
never less) whereas the &lt;code&gt;setInterval&lt;/code&gt; will attempt to execute a callback
every 10ms regardless of when the last callback was executed.
&lt;/p&gt;
&lt;p&gt;
There's a lot that we've learned here, let's recap:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
JavaScript engines only have a single thread, forcing asynchronous events to queue
waiting for execution. 
&lt;li&gt;
&lt;code&gt;setTimeout&lt;/code&gt; and &lt;code&gt;setInterval&lt;/code&gt; are fundamentally different in
how they execute asynchronous code. 
&lt;li&gt;
If a timer is blocked from immediately executing it will be delayed until the next
possible point of execution (which will be longer than the desired delay). 
&lt;li&gt;
Intervals may execute back-to-back with no delay if they take long enough to execute
(longer than the specified delay). 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
All of this is incredibly important knowledge to build off of. Knowing how a JavaScript
engine works, especially with the large number of asynchronous events that typically
occur, makes for a great foundation when building an advanced piece of application
code.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=eb7dc6b6-b1f0-4ccf-80a8-7f33efb4109d" /&gt;</description>
      <comments>http://www.spotgnome.com/CommentView,guid,eb7dc6b6-b1f0-4ccf-80a8-7f33efb4109d.aspx</comments>
      <category>Javascript</category>
      <category>Programming</category>
    </item>
    <item>
      <trackback:ping>http://www.spotgnome.com/Trackback.aspx?guid=159b94fa-6e7d-4821-89cc-e1539d7cdd3c</trackback:ping>
      <pingback:server>http://www.spotgnome.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.spotgnome.com/PermaLink,guid,159b94fa-6e7d-4821-89cc-e1539d7cdd3c.aspx</pingback:target>
      <dc:creator>Guy Levin</dc:creator>
      <wfw:comment>http://www.spotgnome.com/CommentView,guid,159b94fa-6e7d-4821-89cc-e1539d7cdd3c.aspx</wfw:comment>
      <wfw:commentRss>http://www.spotgnome.com/SyndicationService.asmx/GetEntryCommentsRss?guid=159b94fa-6e7d-4821-89cc-e1539d7cdd3c</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
You see it in Google search results and a lot of other sites that have good search
functionality. When you perform a search, your words or phrases are highlighted in
the search results making it easy for you to find the most relevant content.
</p>
        <p>
Today I’m going to show you a simple way to add this to your website or blog so your
users can find what they need in style. I think that this kind of thing should be
implemented more often for how easy it is to implement.
</p>
        <p>
Here we go!
</p>
        <h4>The JavaScript code:
</h4>
        <div class="dp-highlighter">
          <div class="bar">
            <div class="tools" style="WIDTH: 362px; HEIGHT: 16px">
              <a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://eriwen.com/#">
                <font color="#a0a0a0">view
plain</font>
              </a>
              <a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://eriwen.com/#">
                <font color="#a0a0a0">copy
to clipboard</font>
              </a>
              <a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://eriwen.com/#">
                <font color="#a0a0a0">print</font>
              </a>
              <a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://eriwen.com/#">
                <font color="#a0a0a0">?</font>
              </a>
            </div>
          </div>
          <ol class="dp-c">
            <li class="alt">
              <div class="alt" style="WIDTH: 333px; HEIGHT: 16px">
                <span class="keyword">
                  <strong>
                    <font color="#3399cc">function</font>
                  </strong>
                </span>
                <span> highlightOnLoad() {
  </span>
              </div>
            </li>
            <li class="">
              <div class="" style="WIDTH: 308px; HEIGHT: 16px">  <span class="comment"><font color="#33cc33">// Get search string </font></span><span>  </span></div>
            </li>
            <li class="alt">
              <div class="alt" style="WIDTH: 421px; HEIGHT: 16px">  <span class="keyword"><strong><font color="#3399cc">if</font></strong></span><span> (/s\=/.test(window.location.search)) {
  </span></div>
            </li>
            <li class="">
              <div class="" style="WIDTH: 325px; HEIGHT: 16px">    <span class="keyword"><strong><font color="#3399cc">var</font></strong></span><span> searchString = getSearchString();
  </span></div>
            </li>
            <li class="alt">
              <div class="alt" style="WIDTH: 414px; HEIGHT: 16px">    <span class="comment"><font color="#33cc33">// Starting node, parent to all nodes you want to search </font></span><span>  </span></div>
            </li>
            <li class="">
              <div class="" style="WIDTH: 469px; HEIGHT: 16px">    <span class="keyword"><strong><font color="#3399cc">var</font></strong></span><span> textContainerNode = document.getElementById(</span><span class="string"><font color="#9999ff">"content"</font></span><span>);
  </span></div>
            </li>
            <li class="alt">
              <div class="alt" style="WIDTH: 589px; HEIGHT: 15px">
                <p>
    <span class="comment"><font color="#33cc33">// The regex is the secret, it prevents text within tag declarations to be affected</font></span></p>
              </div>
            </li>
            <li class="">
              <div class="" style="WIDTH: 512px; HEIGHT: 16px">    <span class="keyword"><strong><font color="#3399cc">var</font></strong></span><span> regex = </span><span class="keyword"><strong><font color="#3399cc">new</font></strong></span><span> RegExp(</span><span class="string"><font color="#9999ff">"&gt;([^&lt;]*)?("</font></span><span>+searchString+</span><span class="string"><font color="#9999ff">")([^&gt;]*)?&lt;"</font></span><span>,</span><span class="string"><font color="#9999ff">"ig"</font></span><span>);
  </span></div>
            </li>
            <li class="alt">
              <div class="alt" style="WIDTH: 356px; HEIGHT: 32px">    highlightTextNodes(textContainerNode, regex);
  
</div>
            </li>
            <li class="">
              <div class="" style="WIDTH: 326px; HEIGHT: 16px">  }   
</div>
            </li>
            <li class="alt">
              <div class="alt" style="WIDTH: 249px; HEIGHT: 16px">}   
</div>
            </li>
            <li class="">
              <div class="" style="WIDTH: 145px; HEIGHT: 16px">
              </div>
            </li>
            <li class="alt">
              <div class="alt" style="WIDTH: 334px; HEIGHT: 16px">
                <span class="comment">
                  <font color="#33cc33">// Pull the search string out of the URL </font>
                </span>
                <span>  </span>
              </div>
            </li>
            <li class="">
              <div class="" style="WIDTH: 417px; HEIGHT: 16px">
                <span class="keyword">
                  <strong>
                    <font color="#3399cc">function</font>
                  </strong>
                </span>
                <span> getSearchString() {
  </span>
              </div>
            </li>
            <li class="alt">
              <div class="alt" style="WIDTH: 309px; HEIGHT: 16px">  <span class="comment"><font color="#33cc33">// Return sanitized search string if it exists </font></span><span>  </span></div>
            </li>
            <li class="">
              <div class="" style="WIDTH: 414px; HEIGHT: 16px">  <span class="keyword"><strong><font color="#3399cc">var</font></strong></span><span> rawSearchString = window.location.search.replace(/[a-zA-Z0-9\?\&amp;\=\%\#]+s\=(\w+)(\&amp;.*)?/,</span><span class="string"><font color="#9999ff">"$1"</font></span><span>);
  </span></div>
            </li>
            <li class="alt">
              <div class="alt" style="WIDTH: 320px; HEIGHT: 16px">  <span class="comment"><font color="#33cc33">// Replace '+' with '|' for regex </font></span><span>  </span></div>
            </li>
            <li class="">
              <div class="" style="WIDTH: 343px; HEIGHT: 16px">  <span class="keyword"><strong><font color="#3399cc">return</font></strong></span><span> rawSearchString.replace(/\+/g,</span><span class="string"><font color="#9999ff">"\|"</font></span><span>);
  </span></div>
            </li>
            <li class="alt">
              <div class="alt" style="WIDTH: 310px; HEIGHT: 16px">}   
</div>
            </li>
            <li class="">
              <div class="" style="WIDTH: 367px; HEIGHT: 16px">
              </div>
            </li>
            <li class="alt">
              <div class="alt" style="WIDTH: 337px; HEIGHT: 16px">
                <span class="keyword">
                  <strong>
                    <font color="#3399cc">function</font>
                  </strong>
                </span>
                <span> highlightTextNodes(element, regex) {
  </span>
              </div>
            </li>
            <li class="">
              <div class="" style="WIDTH: 350px; HEIGHT: 16px">  <span class="keyword"><strong><font color="#3399cc">var</font></strong></span><span> tempinnerHTML = element.innerHTML;
  </span></div>
            </li>
            <li class="alt">
              <div class="alt" style="WIDTH: 339px; HEIGHT: 16px">  <span class="comment"><font color="#33cc33">// Do regex replace </font></span><span>  </span></div>
            </li>
            <li class="">
              <div class="" style="WIDTH: 342px; HEIGHT: 16px">  element.innerHTML = tempinnerHTML.replace(regex,<span class="string"><font color="#9999ff">"&gt;$1&lt;span class='highlighted'&gt;$2&lt;/span&gt;$3&lt;"</font></span><span>);
  </span></div>
            </li>
            <li class="alt">
              <div class="alt" style="WIDTH: 379px; HEIGHT: 16px">}   
</div>
            </li>
            <li class="">
              <div class="" style="WIDTH: 252px; HEIGHT: 16px">
              </div>
            </li>
            <li class="alt">
              <div class="alt" style="WIDTH: 438px; HEIGHT: 48px">
                <p>
                  <span class="comment">
                    <font color="#33cc33">// Call this onload, I recommend using the function defined <br /></font>
                  </span>
                  <span class="comment">
                    <font color="#33cc33">// at: <a href="http://untruths.org/technology/javascript-windowonload/">http://untruths.org/technology/javascript-windowonload/</a></font>
                  </span>
                  <span>  </span>
                </p>
              </div>
            </li>
            <li class="">
              <div class="" style="WIDTH: 395px; HEIGHT: 16px">addOnLoad(highlightOnLoad());  
</div>
            </li>
          </ol>
        </div>
        <pre class="syntax-highlight:javascript" style="DISPLAY: none">function highlightOnLoad() {
  // Get search string
  if (/s\=/.test(window.location.search)) {
    var searchString = getSearchString();
    // Starting node, parent to all nodes you want to search
    var textContainerNode = document.getElementById("content");
    // The regex is the secret, it prevents text within tag declarations to be affected
    var regex = new RegExp("&gt;([^&lt;]*)?("+searchString+")([^&gt;]*)?&lt;","ig");
    highlightTextNodes(textContainerNode, regex);
  }
}

// Pull the search string out of the URL
function getSearchString() {
  // Return sanitized search string if it exists
  var rawSearchString = window.location.search.replace(/[a-zA-Z0-9\?\&amp;\=\%\#]+s\=(\w+)(\&amp;.*)?/,"$1");
  // Replace '+' with '|' for regex
  return rawSearchString.replace(/\+/g,"\|");
}

function highlightTextNodes(element, regex) {
  var tempinnerHTML = element.innerHTML;
  // Do regex replace
  element.innerHTML = tempinnerHTML.replace(regex,"&gt;$1&lt;span class='highlighted'&gt;$2&lt;/span&gt;$3&lt;");
}

// Call this onload, I recommend using the function defined at: http://untruths.org/technology/javascript-windowonload/
addOnLoad(highlightOnLoad());
</pre>
        <h4>Now, the CSS:
</h4>
        <div class="dp-highlighter">
          <div class="bar">
            <div class="tools" style="WIDTH: 455px">
              <a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://eriwen.com/#">
                <font color="#a0a0a0">view
plain</font>
              </a>
              <a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://eriwen.com/#">
                <font color="#a0a0a0">copy
to clipboard</font>
              </a>
              <a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://eriwen.com/#">
                <font color="#a0a0a0">print</font>
              </a>
              <a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://eriwen.com/#">
                <font color="#a0a0a0">?</font>
              </a>
            </div>
          </div>
          <ol class="dp-css">
            <li class="alt">
              <div class="alt" style="WIDTH: 455px">
                <span>span.highlighted {   </span>
              </div>
            </li>
            <li class="">
              <div class="" style="WIDTH: 455px">  <span class="keyword"><strong><font color="#3399cc">background-color</font></strong></span><span>: </span><span class="value">#161616</span><span>;
  </span></div>
            </li>
            <li class="alt">
              <div class="alt" style="WIDTH: 455px">  <span class="keyword"><strong><font color="#3399cc">font-weight</font></strong></span><span>: </span><span class="value">bold</span><span>;
  </span></div>
            </li>
            <li class="">
              <div class="" style="WIDTH: 455px">}  
</div>
            </li>
          </ol>
        </div>
        <pre class="syntax-highlight:css" style="DISPLAY: none">span.highlighted {
  background-color: #161616;
  font-weight: bold;
}
</pre>
        <h4>Code explanation
</h4>
        <p>
First, the <em>highlightOnLoad</em> function checks <em>window.location.search</em> to
see if we need to be running any of this stuff, then calls <em>getSearchString</em> to
get a sanitized search string so that nothing funky can happen if, say, the user searches
for ‘&lt;script&gt;’. You should really be sanitizing all search inputs at least on
the back-end anyway.
</p>
        <p>
Then, the <em>highlightTextNodes</em> function uses a regex replace on our textContainerNode’s
innerHTML. The regex verifies that the text is between a &gt; and a &lt; (and not
the other way around). Actually nice and simple!
</p>
        <h4>Caveats
</h4>
        <p>
This may end up being a bit slow if you are doing this on a LOT of text, but for my
blog text, it seems quite snappy to me. Also, the CSS does not bold text inside links,
but the background color is there to make it obvious.
</p>
        <img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=159b94fa-6e7d-4821-89cc-e1539d7cdd3c" />
      </body>
      <title>How to highlight search results with JavaScript and CSS</title>
      <guid isPermaLink="false">http://www.spotgnome.com/PermaLink,guid,159b94fa-6e7d-4821-89cc-e1539d7cdd3c.aspx</guid>
      <link>http://www.spotgnome.com/2008/02/13/HowToHighlightSearchResultsWithJavaScriptAndCSS.aspx</link>
      <pubDate>Wed, 13 Feb 2008 15:06:52 GMT</pubDate>
      <description>&lt;p&gt;
You see it in Google search results and a lot of other sites that have good search
functionality. When you perform a search, your words or phrases are highlighted in
the search results making it easy for you to find the most relevant content.
&lt;/p&gt;
&lt;p&gt;
Today I’m going to show you a simple way to add this to your website or blog so your
users can find what they need in style. I think that this kind of thing should be
implemented more often for how easy it is to implement.
&lt;/p&gt;
&lt;p&gt;
Here we go!
&lt;/p&gt;
&lt;h4&gt;The JavaScript code:
&lt;/h4&gt;
&lt;div class=dp-highlighter&gt;
&lt;div class=bar&gt;
&lt;div class=tools style="WIDTH: 362px; HEIGHT: 16px"&gt;&lt;a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://eriwen.com/#"&gt;&lt;font color=#a0a0a0&gt;view
plain&lt;/font&gt;&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://eriwen.com/#"&gt;&lt;font color=#a0a0a0&gt;copy
to clipboard&lt;/font&gt;&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://eriwen.com/#"&gt;&lt;font color=#a0a0a0&gt;print&lt;/font&gt;&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://eriwen.com/#"&gt;&lt;font color=#a0a0a0&gt;?&lt;/font&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ol class=dp-c&gt;
&lt;li class=alt&gt;
&lt;div class=alt style="WIDTH: 333px; HEIGHT: 16px"&gt;&lt;span class=keyword&gt;&lt;strong&gt;&lt;font color=#3399cc&gt;function&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;highlightOnLoad()&amp;nbsp;{
&amp;nbsp; &lt;/span&gt;
&lt;/div&gt;
&lt;li class=""&gt;
&lt;div class="" style="WIDTH: 308px; HEIGHT: 16px"&gt;&amp;nbsp;&amp;nbsp;&gt;&lt;span class=comment&gt;&lt;font color=#33cc33&gt;//&amp;nbsp;Get&amp;nbsp;search&amp;nbsp;string &lt;/font&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;
&lt;/div&gt;
&lt;li class=alt&gt;
&lt;div class=alt style="WIDTH: 421px; HEIGHT: 16px"&gt;&amp;nbsp;&amp;nbsp;&gt;&lt;span class=keyword&gt;&lt;strong&gt;&lt;font color=#3399cc&gt;if&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;(/s\=/.test(window.location.search))&amp;nbsp;{
&amp;nbsp; &lt;/span&gt;
&lt;/div&gt;
&lt;li class=""&gt;
&lt;div class="" style="WIDTH: 325px; HEIGHT: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&gt;&lt;span class=keyword&gt;&lt;strong&gt;&lt;font color=#3399cc&gt;var&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;searchString&amp;nbsp;=&amp;nbsp;getSearchString();
&amp;nbsp; &lt;/span&gt;
&lt;/div&gt;
&lt;li class=alt&gt;
&lt;div class=alt style="WIDTH: 414px; HEIGHT: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&gt;&lt;span class=comment&gt;&lt;font color=#33cc33&gt;//&amp;nbsp;Starting&amp;nbsp;node,&amp;nbsp;parent&amp;nbsp;to&amp;nbsp;all&amp;nbsp;nodes&amp;nbsp;you&amp;nbsp;want&amp;nbsp;to&amp;nbsp;search &lt;/font&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;
&lt;/div&gt;
&lt;li class=""&gt;
&lt;div class="" style="WIDTH: 469px; HEIGHT: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&gt;&lt;span class=keyword&gt;&lt;strong&gt;&lt;font color=#3399cc&gt;var&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;textContainerNode&amp;nbsp;=&amp;nbsp;document.getElementById(&lt;/span&gt;&lt;span class=string&gt;&lt;font color=#9999ff&gt;"content"&lt;/font&gt;&lt;/span&gt;&lt;span&gt;);
&amp;nbsp; &lt;/span&gt;
&lt;/div&gt;
&lt;li class=alt&gt;
&lt;div class=alt style="WIDTH: 589px; HEIGHT: 15px"&gt;
&lt;p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&gt;&lt;span class=comment&gt;&lt;font color=#33cc33&gt;//&amp;nbsp;The&amp;nbsp;regex&amp;nbsp;is&amp;nbsp;the&amp;nbsp;secret,&amp;nbsp;it&amp;nbsp;prevents&amp;nbsp;text&amp;nbsp;within&amp;nbsp;tag&amp;nbsp;declarations&amp;nbsp;to&amp;nbsp;be&amp;nbsp;affected&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;li class=""&gt;
&lt;div class="" style="WIDTH: 512px; HEIGHT: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&gt;&lt;span class=keyword&gt;&lt;strong&gt;&lt;font color=#3399cc&gt;var&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;regex&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class=keyword&gt;&lt;strong&gt;&lt;font color=#3399cc&gt;new&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;RegExp(&lt;/span&gt;&lt;span class=string&gt;&lt;font color=#9999ff&gt;"&amp;gt;([^&amp;lt;]*)?("&lt;/font&gt;&lt;/span&gt;&lt;span&gt;+searchString+&lt;/span&gt;&lt;span class=string&gt;&lt;font color=#9999ff&gt;")([^&amp;gt;]*)?&amp;lt;"&lt;/font&gt;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=string&gt;&lt;font color=#9999ff&gt;"ig"&lt;/font&gt;&lt;/span&gt;&lt;span&gt;);
&amp;nbsp; &lt;/span&gt;
&lt;/div&gt;
&lt;li class=alt&gt;
&lt;div class=alt style="WIDTH: 356px; HEIGHT: 32px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;highlightTextNodes(textContainerNode,&amp;nbsp;regex);
&amp;nbsp; 
&lt;/div&gt;
&lt;li class=""&gt;
&lt;div class="" style="WIDTH: 326px; HEIGHT: 16px"&gt;&amp;nbsp;&amp;nbsp;} &amp;nbsp; 
&lt;/div&gt;
&lt;li class=alt&gt;
&lt;div class=alt style="WIDTH: 249px; HEIGHT: 16px"&gt;} &amp;nbsp; 
&lt;/div&gt;
&lt;li class=""&gt;
&lt;div class="" style="WIDTH: 145px; HEIGHT: 16px"&gt;
&lt;/div&gt;
&lt;li class=alt&gt;
&lt;div class=alt style="WIDTH: 334px; HEIGHT: 16px"&gt;&gt;&lt;span class=comment&gt;&lt;font color=#33cc33&gt;//&amp;nbsp;Pull&amp;nbsp;the&amp;nbsp;search&amp;nbsp;string&amp;nbsp;out&amp;nbsp;of&amp;nbsp;the&amp;nbsp;URL &lt;/font&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;
&lt;/div&gt;
&lt;li class=""&gt;
&lt;div class="" style="WIDTH: 417px; HEIGHT: 16px"&gt;&gt;&lt;span class=keyword&gt;&lt;strong&gt;&lt;font color=#3399cc&gt;function&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;getSearchString()&amp;nbsp;{
&amp;nbsp; &lt;/span&gt;
&lt;/div&gt;
&lt;li class=alt&gt;
&lt;div class=alt style="WIDTH: 309px; HEIGHT: 16px"&gt;&amp;nbsp;&amp;nbsp;&gt;&lt;span class=comment&gt;&lt;font color=#33cc33&gt;//&amp;nbsp;Return&amp;nbsp;sanitized&amp;nbsp;search&amp;nbsp;string&amp;nbsp;if&amp;nbsp;it&amp;nbsp;exists &lt;/font&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;
&lt;/div&gt;
&lt;li class=""&gt;
&lt;div class="" style="WIDTH: 414px; HEIGHT: 16px"&gt;&amp;nbsp;&amp;nbsp;&gt;&lt;span class=keyword&gt;&lt;strong&gt;&lt;font color=#3399cc&gt;var&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;rawSearchString&amp;nbsp;=&amp;nbsp;window.location.search.replace(/[a-zA-Z0-9\?\&amp;amp;\=\%\#]+s\=(\w+)(\&amp;amp;.*)?/,&lt;/span&gt;&lt;span class=string&gt;&lt;font color=#9999ff&gt;"$1"&lt;/font&gt;&lt;/span&gt;&lt;span&gt;);
&amp;nbsp; &lt;/span&gt;
&lt;/div&gt;
&lt;li class=alt&gt;
&lt;div class=alt style="WIDTH: 320px; HEIGHT: 16px"&gt;&amp;nbsp;&amp;nbsp;&gt;&lt;span class=comment&gt;&lt;font color=#33cc33&gt;//&amp;nbsp;Replace&amp;nbsp;'+'&amp;nbsp;with&amp;nbsp;'|'&amp;nbsp;for&amp;nbsp;regex &lt;/font&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;
&lt;/div&gt;
&lt;li class=""&gt;
&lt;div class="" style="WIDTH: 343px; HEIGHT: 16px"&gt;&amp;nbsp;&amp;nbsp;&gt;&lt;span class=keyword&gt;&lt;strong&gt;&lt;font color=#3399cc&gt;return&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;rawSearchString.replace(/\+/g,&lt;/span&gt;&lt;span class=string&gt;&lt;font color=#9999ff&gt;"\|"&lt;/font&gt;&lt;/span&gt;&lt;span&gt;);
&amp;nbsp; &lt;/span&gt;
&lt;/div&gt;
&lt;li class=alt&gt;
&lt;div class=alt style="WIDTH: 310px; HEIGHT: 16px"&gt;} &amp;nbsp; 
&lt;/div&gt;
&lt;li class=""&gt;
&lt;div class="" style="WIDTH: 367px; HEIGHT: 16px"&gt;
&lt;/div&gt;
&lt;li class=alt&gt;
&lt;div class=alt style="WIDTH: 337px; HEIGHT: 16px"&gt;&gt;&lt;span class=keyword&gt;&lt;strong&gt;&lt;font color=#3399cc&gt;function&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;highlightTextNodes(element,&amp;nbsp;regex)&amp;nbsp;{
&amp;nbsp; &lt;/span&gt;
&lt;/div&gt;
&lt;li class=""&gt;
&lt;div class="" style="WIDTH: 350px; HEIGHT: 16px"&gt;&amp;nbsp;&amp;nbsp;&gt;&lt;span class=keyword&gt;&lt;strong&gt;&lt;font color=#3399cc&gt;var&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;tempinnerHTML&amp;nbsp;=&amp;nbsp;element.innerHTML;
&amp;nbsp; &lt;/span&gt;
&lt;/div&gt;
&lt;li class=alt&gt;
&lt;div class=alt style="WIDTH: 339px; HEIGHT: 16px"&gt;&amp;nbsp;&amp;nbsp;&gt;&lt;span class=comment&gt;&lt;font color=#33cc33&gt;//&amp;nbsp;Do&amp;nbsp;regex&amp;nbsp;replace &lt;/font&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;
&lt;/div&gt;
&lt;li class=""&gt;
&lt;div class="" style="WIDTH: 342px; HEIGHT: 16px"&gt;&amp;nbsp;&amp;nbsp;element.innerHTML&amp;nbsp;=&amp;nbsp;tempinnerHTML.replace(regex,&gt;&lt;span class=string&gt;&lt;font color=#9999ff&gt;"&amp;gt;$1&amp;lt;span&amp;nbsp;class='highlighted'&amp;gt;$2&amp;lt;/span&amp;gt;$3&amp;lt;"&lt;/font&gt;&lt;/span&gt;&lt;span&gt;);
&amp;nbsp; &lt;/span&gt;
&lt;/div&gt;
&lt;li class=alt&gt;
&lt;div class=alt style="WIDTH: 379px; HEIGHT: 16px"&gt;} &amp;nbsp; 
&lt;/div&gt;
&lt;li class=""&gt;
&lt;div class="" style="WIDTH: 252px; HEIGHT: 16px"&gt;
&lt;/div&gt;
&lt;li class=alt&gt;
&lt;div class=alt style="WIDTH: 438px; HEIGHT: 48px"&gt;
&lt;p&gt;
&gt;&lt;span class=comment&gt;&lt;font color=#33cc33&gt;//&amp;nbsp;Call&amp;nbsp;this&amp;nbsp;onload,&amp;nbsp;I&amp;nbsp;recommend&amp;nbsp;using&amp;nbsp;the&amp;nbsp;function&amp;nbsp;defined&amp;nbsp;&lt;br&gt;
&lt;/font&gt;&lt;/span&gt;&lt;span class=comment&gt;&lt;font color=#33cc33&gt;// at:&amp;nbsp;&lt;a href="http://untruths.org/technology/javascript-windowonload/"&gt;http://untruths.org/technology/javascript-windowonload/&lt;/a&gt; &lt;/font&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;li class=""&gt;
&lt;div class="" style="WIDTH: 395px; HEIGHT: 16px"&gt;addOnLoad(highlightOnLoad());&amp;nbsp; 
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;pre class=syntax-highlight:javascript style="DISPLAY: none"&gt;function highlightOnLoad() {
  // Get search string
  if (/s\=/.test(window.location.search)) {
    var searchString = getSearchString();
    // Starting node, parent to all nodes you want to search
    var textContainerNode = document.getElementById("content");
    // The regex is the secret, it prevents text within tag declarations to be affected
    var regex = new RegExp("&amp;gt;([^&amp;lt;]*)?("+searchString+")([^&amp;gt;]*)?&amp;lt;","ig");
    highlightTextNodes(textContainerNode, regex);
  }
}

// Pull the search string out of the URL
function getSearchString() {
  // Return sanitized search string if it exists
  var rawSearchString = window.location.search.replace(/[a-zA-Z0-9\?\&amp;amp;\=\%\#]+s\=(\w+)(\&amp;amp;.*)?/,"$1");
  // Replace '+' with '|' for regex
  return rawSearchString.replace(/\+/g,"\|");
}

function highlightTextNodes(element, regex) {
  var tempinnerHTML = element.innerHTML;
  // Do regex replace
  element.innerHTML = tempinnerHTML.replace(regex,"&amp;gt;$1&amp;lt;span class='highlighted'&amp;gt;$2&amp;lt;/span&amp;gt;$3&amp;lt;");
}

// Call this onload, I recommend using the function defined at: http://untruths.org/technology/javascript-windowonload/
addOnLoad(highlightOnLoad());
&lt;/pre&gt;
&lt;h4&gt;Now, the CSS:
&lt;/h4&gt;
&lt;div class=dp-highlighter&gt;
&lt;div class=bar&gt;
&lt;div class=tools style="WIDTH: 455px"&gt;&lt;a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://eriwen.com/#"&gt;&lt;font color=#a0a0a0&gt;view
plain&lt;/font&gt;&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://eriwen.com/#"&gt;&lt;font color=#a0a0a0&gt;copy
to clipboard&lt;/font&gt;&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://eriwen.com/#"&gt;&lt;font color=#a0a0a0&gt;print&lt;/font&gt;&lt;/a&gt;&lt;a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://eriwen.com/#"&gt;&lt;font color=#a0a0a0&gt;?&lt;/font&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ol class=dp-css&gt;
&lt;li class=alt&gt;
&lt;div class=alt style="WIDTH: 455px"&gt;&lt;span&gt;span.highlighted&amp;nbsp;{ &amp;nbsp; &lt;/span&gt;
&lt;/div&gt;
&lt;li class=""&gt;
&lt;div class="" style="WIDTH: 455px"&gt;&amp;nbsp;&amp;nbsp;&gt;&lt;span class=keyword&gt;&lt;strong&gt;&lt;font color=#3399cc&gt;background-color&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span&gt;:&amp;nbsp;&lt;/span&gt;&lt;span class=value&gt;#161616&lt;/span&gt;&lt;span&gt;;
&amp;nbsp; &lt;/span&gt;
&lt;/div&gt;
&lt;li class=alt&gt;
&lt;div class=alt style="WIDTH: 455px"&gt;&amp;nbsp;&amp;nbsp;&gt;&lt;span class=keyword&gt;&lt;strong&gt;&lt;font color=#3399cc&gt;font-weight&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span&gt;:&amp;nbsp;&lt;/span&gt;&lt;span class=value&gt;bold&lt;/span&gt;&lt;span&gt;;
&amp;nbsp; &lt;/span&gt;
&lt;/div&gt;
&lt;li class=""&gt;
&lt;div class="" style="WIDTH: 455px"&gt;}&amp;nbsp; 
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;pre class=syntax-highlight:css style="DISPLAY: none"&gt;span.highlighted {
  background-color: #161616;
  font-weight: bold;
}
&lt;/pre&gt;
&lt;h4&gt;Code explanation
&lt;/h4&gt;
&lt;p&gt;
First, the &lt;em&gt;highlightOnLoad&lt;/em&gt; function checks &lt;em&gt;window.location.search&lt;/em&gt; to
see if we need to be running any of this stuff, then calls &lt;em&gt;getSearchString&lt;/em&gt; to
get a sanitized search string so that nothing funky can happen if, say, the user searches
for ‘&amp;lt;script&amp;gt;’. You should really be sanitizing all search inputs at least on
the back-end anyway.
&lt;/p&gt;
&lt;p&gt;
Then, the &lt;em&gt;highlightTextNodes&lt;/em&gt; function uses a regex replace on our textContainerNode’s
innerHTML. The regex verifies that the text is between a &amp;gt; and a &amp;lt; (and not
the other way around). Actually nice and simple!
&lt;/p&gt;
&lt;h4&gt;Caveats
&lt;/h4&gt;
&lt;p&gt;
This may end up being a bit slow if you are doing this on a LOT of text, but for my
blog text, it seems quite snappy to me. Also, the CSS does not bold text inside links,
but the background color is there to make it obvious.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=159b94fa-6e7d-4821-89cc-e1539d7cdd3c" /&gt;</description>
      <comments>http://www.spotgnome.com/CommentView,guid,159b94fa-6e7d-4821-89cc-e1539d7cdd3c.aspx</comments>
      <category>CSS</category>
      <category>Javascript</category>
      <category>Programming</category>
    </item>
    <item>
      <trackback:ping>http://www.spotgnome.com/Trackback.aspx?guid=402cdb87-04b1-4129-add3-8516cd0ffcc4</trackback:ping>
      <pingback:server>http://www.spotgnome.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.spotgnome.com/PermaLink,guid,402cdb87-04b1-4129-add3-8516cd0ffcc4.aspx</pingback:target>
      <dc:creator>Guy Levin</dc:creator>
      <wfw:comment>http://www.spotgnome.com/CommentView,guid,402cdb87-04b1-4129-add3-8516cd0ffcc4.aspx</wfw:comment>
      <wfw:commentRss>http://www.spotgnome.com/SyndicationService.asmx/GetEntryCommentsRss?guid=402cdb87-04b1-4129-add3-8516cd0ffcc4</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
There are at least 5 ways to return data from one table which is not in another table.
Two of these are SQL Server 2005 and greater only. This is a post mostly for beginners
but hopefully everyone will get something out of it.
</p>
        <p>
Here are the 5 different ways
</p>
        <p>
NOT IN<br />
NOT EXISTS<br />
OUTER JOIN<br />
OUTER APPLY (2005+)<br />
EXCEPT (2005+)
</p>
        <p>
Let's see how this all works<br />
First create these two tables with the Celko approved naming convention.
</p>
        <p>
 
</p>
        <font color="#0000ff" size="2">
          <p>
CREATE
</p>
        </font>
        <font color="#000000" size="2">
        </font>
        <font color="#0000ff" size="2">TABLE</font>
        <font color="#000000" size="2"> #testnulls </font>
        <font color="#808080" size="2">(</font>
        <font color="#000000" size="2">ID </font>
        <font color="#0000ff" size="2">INT</font>
        <font color="#808080" size="2">)</font>
        <font size="2">
          <font color="#000000">
          </font>
        </font>
        <font color="#0000ff" size="2">
          <p>
INSERT
</p>
        </font>
        <font color="#000000" size="2">
        </font>
        <font color="#0000ff" size="2">INTO</font>
        <font color="#000000" size="2"> #testnulls </font>
        <font color="#0000ff" size="2">VALUES</font>
        <font color="#000000" size="2">
        </font>
        <font color="#808080" size="2">(</font>
        <font color="#000000" size="2">1</font>
        <font color="#808080" size="2">)</font>
        <font size="2">
          <font color="#000000">
          </font>
        </font>
        <font color="#0000ff" size="2">
          <p>
INSERT
</p>
        </font>
        <font color="#000000" size="2">
        </font>
        <font color="#0000ff" size="2">INTO</font>
        <font color="#000000" size="2"> #testnulls </font>
        <font color="#0000ff" size="2">VALUES</font>
        <font color="#000000" size="2">
        </font>
        <font color="#808080" size="2">(</font>
        <font color="#000000" size="2">2</font>
        <font color="#808080" size="2">)</font>
        <font size="2">
          <font color="#000000">
          </font>
        </font>
        <font color="#0000ff" size="2">
          <p>
INSERT
</p>
        </font>
        <font color="#000000" size="2">
        </font>
        <font color="#0000ff" size="2">INTO</font>
        <font color="#000000" size="2"> #testnulls </font>
        <font color="#0000ff" size="2">VALUES</font>
        <font color="#000000" size="2">
        </font>
        <font color="#808080" size="2">(null)</font>
        <font size="2">
          <font color="#000000">
          </font>
        </font>
        <font color="#0000ff" size="2">
          <p>
            <font color="#000000">
            </font> 
</p>
          <p>
CREATE
</p>
        </font>
        <font color="#000000" size="2">
        </font>
        <font color="#0000ff" size="2">TABLE</font>
        <font color="#000000" size="2"> #testjoin </font>
        <font color="#808080" size="2">(</font>
        <font color="#000000" size="2">ID </font>
        <font color="#0000ff" size="2">INT</font>
        <font color="#808080" size="2">)</font>
        <font size="2">
          <font color="#000000">
          </font>
        </font>
        <font color="#0000ff" size="2">
          <p>
INSERT
</p>
        </font>
        <font color="#000000" size="2">
        </font>
        <font color="#0000ff" size="2">INTO</font>
        <font color="#000000" size="2"> #testjoin </font>
        <font color="#0000ff" size="2">VALUES</font>
        <font color="#000000" size="2">
        </font>
        <font color="#808080" size="2">(</font>
        <font color="#000000" size="2">1</font>
        <font color="#808080" size="2">)</font>
        <font size="2">
          <font color="#000000">
          </font>
        </font>
        <font color="#0000ff" size="2">
          <p>
INSERT
</p>
        </font>
        <font color="#000000" size="2">
        </font>
        <font color="#0000ff" size="2">INTO</font>
        <font color="#000000" size="2"> #testjoin </font>
        <font color="#0000ff" size="2">VALUES</font>
        <font color="#000000" size="2">
        </font>
        <font color="#808080" size="2">(</font>
        <font color="#000000" size="2">3</font>
        <font color="#808080" size="2">)</font>
        <font size="2">
          <font color="#000000">
          </font>
        </font>
        <p>
          <strong>NOT IN</strong>
          <br />
Run the following Code
</p>
        <p>
 
</p>
        <font color="#0000ff" size="2">
          <p>
SELECT
</p>
        </font>
        <font color="#000000" size="2">
        </font>
        <font color="#808080" size="2">*</font>
        <font color="#000000" size="2">
        </font>
        <font color="#0000ff" size="2">FROM</font>
        <font color="#000000" size="2"> #testjoin </font>
        <font color="#0000ff" size="2">WHERE</font>
        <font color="#000000" size="2"> ID </font>
        <font color="#808080" size="2">NOT</font>
        <font color="#000000" size="2">
        </font>
        <font color="#808080" size="2">IN(</font>
        <font color="#0000ff" size="2">SELECT</font>
        <font color="#000000" size="2"> ID </font>
        <font color="#0000ff" size="2">FROM</font>
        <font color="#000000" size="2"> #testnulls</font>
        <font color="#808080" size="2">)</font>
        <font size="2">
          <font color="#000000">
          </font>
        </font>
        <p>
What happened? Nothing gets returned! The reason is because the subquery returns a
NULL and you can't compare a NULL to anything
</p>
        <p>
Now run this
</p>
        <font color="#0000ff" size="2">
          <p>
SELECT
</p>
        </font>
        <font color="#000000" size="2">
        </font>
        <font color="#808080" size="2">*</font>
        <font color="#000000" size="2">
        </font>
        <font color="#0000ff" size="2">FROM</font>
        <font size="2">
          <font color="#000000"> #testjoin </font>
        </font>
        <font color="#0000ff" size="2">
          <p>
WHERE
</p>
        </font>
        <font color="#000000" size="2"> ID </font>
        <font color="#808080" size="2">NOT</font>
        <font color="#000000" size="2">
        </font>
        <font color="#808080" size="2">IN(</font>
        <font color="#0000ff" size="2">SELECT</font>
        <font color="#000000" size="2"> ID </font>
        <font color="#0000ff" size="2">FROM</font>
        <font color="#000000" size="2"> #testnulls </font>
        <font color="#0000ff" size="2">WHERE</font>
        <font color="#000000" size="2"> ID </font>
        <font color="#808080" size="2">IS</font>
        <font color="#000000" size="2">
        </font>
        <font color="#808080" size="2">NOT</font>
        <font color="#000000" size="2">
        </font>
        <font color="#808080" size="2">NULL)</font>
        <font size="2">
          <font color="#000000">
          </font>
          <p>
          </p>
        </font>
        <font size="3">That worked because we eliminated the NULL values in the
subquery</font>
        <p>
This also works
</p>
        <font color="#0000ff" size="2">
          <p>
SELECT
</p>
        </font>
        <font color="#000000" size="2">
        </font>
        <font color="#808080" size="2">*</font>
        <font color="#000000" size="2">
        </font>
        <font color="#0000ff" size="2">FROM</font>
        <font size="2">
          <font color="#000000"> #testjoin
j</font>
        </font>
        <font color="#0000ff" size="2">
          <p>
WHERE
</p>
        </font>
        <font color="#000000" size="2"> j</font>
        <font color="#808080" size="2">.</font>
        <font color="#000000" size="2">ID </font>
        <font color="#808080" size="2">NOT</font>
        <font color="#000000" size="2">
        </font>
        <font color="#808080" size="2">IN(</font>
        <font color="#0000ff" size="2">SELECT</font>
        <font color="#000000" size="2"> ID </font>
        <font color="#0000ff" size="2">FROM</font>
        <font color="#000000" size="2"> #testnulls
n </font>
        <font color="#0000ff" size="2">WHERE</font>
        <font color="#000000" size="2"> n</font>
        <font color="#808080" size="2">.</font>
        <font color="#000000" size="2">ID </font>
        <font color="#808080" size="2">=</font>
        <font color="#000000" size="2"> j</font>
        <font color="#808080" size="2">.</font>
        <font color="#000000" size="2">ID</font>
        <font color="#808080" size="2">)</font>
        <font size="2">
          <font color="#000000">
          </font>
        </font>
        <p>
          <font color="#000000">
          </font> 
</p>
        <p>
          <br />
          <strong>NOT EXISTS</strong>
          <br />
NOT EXISTS doesn't have the problem that NOT IN has. Run the following code
</p>
        <p>
 
</p>
        <font color="#0000ff" size="2">
          <p>
SELECT
</p>
        </font>
        <font color="#000000" size="2">
        </font>
        <font color="#808080" size="2">*</font>
        <font color="#000000" size="2">
        </font>
        <font color="#0000ff" size="2">FROM</font>
        <font size="2">
          <font color="#000000"> #testjoin
j </font>
        </font>
        <font color="#0000ff" size="2">
          <p>
WHERE
</p>
        </font>
        <font color="#000000" size="2">
        </font>
        <font color="#808080" size="2">NOT</font>
        <font color="#000000" size="2">
        </font>
        <font color="#808080" size="2">EXISTS</font>
        <font color="#000000" size="2">
        </font>
        <font color="#808080" size="2">(</font>
        <font color="#0000ff" size="2">SELECT</font>
        <font size="2">
          <font color="#000000"> 1 </font>
        </font>
        <font color="#0000ff" size="2">
          <p>
FROM
</p>
        </font>
        <font size="2">
          <font color="#000000"> #testnulls n </font>
        </font>
        <font color="#0000ff" size="2">
          <p>
WHERE
</p>
        </font>
        <font color="#000000" size="2"> n</font>
        <font color="#808080" size="2">.</font>
        <font color="#000000" size="2">ID </font>
        <font color="#808080" size="2">=</font>
        <font color="#000000" size="2"> j</font>
        <font color="#808080" size="2">.</font>
        <font color="#000000" size="2">ID</font>
        <font color="#808080" size="2">)</font>
        <font size="2">
          <font color="#000000">
          </font>
          <p>
Everything worked 
</p>
        </font>
        <font color="#0000ff" size="2">as</font>
        <font size="2"> expected
</font>
        <p>
          <br />
          <strong>LEFT and RIGHT JOIN</strong>
          <br />
Plain vanilla LEFT and RIGHT JOINS
</p>
        <p>
 
</p>
        <font color="#0000ff" size="2">
          <p>
SELECT
</p>
        </font>
        <font color="#000000" size="2"> j</font>
        <font color="#808080" size="2">.*</font>
        <font color="#000000" size="2">
        </font>
        <font color="#0000ff" size="2">FROM</font>
        <font size="2">
          <font color="#000000"> #testjoin
j </font>
        </font>
        <font color="#808080" size="2">
          <p>
LEFT
</p>
        </font>
        <font color="#000000" size="2">
        </font>
        <font color="#808080" size="2">OUTER</font>
        <font color="#000000" size="2">
        </font>
        <font color="#808080" size="2">JOIN</font>
        <font color="#000000" size="2"> #testnulls
n </font>
        <font color="#0000ff" size="2">ON</font>
        <font color="#000000" size="2"> n</font>
        <font color="#808080" size="2">.</font>
        <font color="#000000" size="2">ID </font>
        <font color="#808080" size="2">=</font>
        <font color="#000000" size="2"> j</font>
        <font color="#808080" size="2">.</font>
        <font size="2">
          <font color="#000000">ID </font>
        </font>
        <font color="#0000ff" size="2">
          <p>
WHERE
</p>
        </font>
        <font color="#000000" size="2"> n</font>
        <font color="#808080" size="2">.</font>
        <font color="#000000" size="2">ID </font>
        <font color="#808080" size="2">IS</font>
        <font color="#000000" size="2">
        </font>
        <font color="#808080" size="2">NULL</font>
        <font color="#000000" size="2">
        </font>
        <p>
          <font size="2">With a RIGHT Join you just switch the tables around
</font>
        </p>
        <font color="#0000ff" size="2">
          <p>
SELECT
</p>
        </font>
        <font color="#000000" size="2"> j</font>
        <font color="#808080" size="2">.*</font>
        <font color="#000000" size="2">
        </font>
        <font color="#0000ff" size="2">FROM</font>
        <font size="2">
          <font color="#000000"> #testnulls
n </font>
        </font>
        <font color="#808080" size="2">
          <p>
RIGHT
</p>
        </font>
        <font color="#000000" size="2">
        </font>
        <font color="#808080" size="2">OUTER</font>
        <font color="#000000" size="2">
        </font>
        <font color="#808080" size="2">JOIN</font>
        <font color="#000000" size="2"> #testjoin
j </font>
        <font color="#0000ff" size="2">ON</font>
        <font color="#000000" size="2"> n</font>
        <font color="#808080" size="2">.</font>
        <font color="#000000" size="2">ID </font>
        <font color="#808080" size="2">=</font>
        <font color="#000000" size="2"> j</font>
        <font color="#808080" size="2">.</font>
        <font size="2">
          <font color="#000000">ID </font>
        </font>
        <font color="#0000ff" size="2">
          <p>
WHERE
</p>
        </font>
        <font color="#000000" size="2"> n</font>
        <font color="#808080" size="2">.</font>
        <font color="#000000" size="2">ID </font>
        <font color="#808080" size="2">IS</font>
        <font color="#000000" size="2">
        </font>
        <font color="#808080" size="2">NULL</font>
        <font color="#000000" size="2">
        </font>
        <p>
          <font color="#000000">
          </font>
          <font size="2"> 
</font>
        </p>
        <p>
And we can also do a full outer join
</p>
        <font color="#0000ff" size="2">
          <p>
SELECT
</p>
        </font>
        <font color="#000000" size="2"> j</font>
        <font color="#808080" size="2">.*</font>
        <font color="#000000" size="2">
        </font>
        <font color="#0000ff" size="2">FROM</font>
        <font size="2">
          <font color="#000000"> #testnulls
n </font>
        </font>
        <font color="#808080" size="2">
          <p>
FULL OUTER
</p>
        </font>
        <font color="#000000" size="2">
        </font>
        <font color="#808080" size="2">JOIN</font>
        <font color="#000000" size="2"> #testjoin
j </font>
        <font color="#0000ff" size="2">ON</font>
        <font color="#000000" size="2"> n</font>
        <font color="#808080" size="2">.</font>
        <font color="#000000" size="2">ID </font>
        <font color="#808080" size="2">=</font>
        <font color="#000000" size="2"> j</font>
        <font color="#808080" size="2">.</font>
        <font size="2">
          <font color="#000000">ID </font>
        </font>
        <font color="#0000ff" size="2">
          <p>
WHERE
</p>
        </font>
        <font color="#000000" size="2"> n</font>
        <font color="#808080" size="2">.</font>
        <font color="#000000" size="2">ID </font>
        <font color="#808080" size="2">IS</font>
        <font color="#000000" size="2">
        </font>
        <font color="#808080" size="2">NULL</font>
        <font size="2">
          <font color="#000000">
          </font>
        </font>
        <font color="#808080" size="2">
          <p>
AND
</p>
        </font>
        <font color="#000000" size="2"> j</font>
        <font color="#808080" size="2">.</font>
        <font color="#000000" size="2">ID </font>
        <font color="#808080" size="2">IS</font>
        <font color="#000000" size="2">
        </font>
        <font color="#808080" size="2">NOT</font>
        <font color="#000000" size="2">
        </font>
        <font color="#808080" size="2">NULL
<p></p></font>
        <br />
        <font color="#000000" size="3">You might wonder why we have LEFT and RIGHT Joins,
here is why:<br />
&lt;AttemptToBeFunny&gt;LEFT joins are for people who tend to vote for the democrats,
RIGHT joins are for people who tend to vote for Republicans. FULL Joins are for independents/undecided
people. &lt;/AttemptToBeFunny&gt;</font>
        <p>
You can be real silly and do a subquery LEFT join<br /><font color="#0000ff" size="2"> </font></p>
        <p>
          <font color="#0000ff" size="2">SELECT</font>
          <font size="2"> j</font>
          <font color="#808080" size="2">.*</font>
          <font size="2">
          </font>
          <font color="#0000ff" size="2">FROM</font>
          <font size="2"> #testjoin
j 
</font>
        </p>
        <font color="#808080" size="2">
          <p>
LEFT
</p>
        </font>
        <font color="#000000" size="2">
        </font>
        <font color="#808080" size="2">OUTER</font>
        <font color="#000000" size="2">
        </font>
        <font color="#808080" size="2">JOIN</font>
        <font color="#000000" size="2">
        </font>
        <font color="#808080" size="2">(</font>
        <font color="#0000ff" size="2">SELECT</font>
        <font color="#000000" size="2"> ID </font>
        <font color="#0000ff" size="2">FROM</font>
        <font color="#000000" size="2"> #testnulls </font>
        <font color="#808080" size="2">)</font>
        <font color="#000000" size="2"> n </font>
        <font color="#0000ff" size="2">ON</font>
        <font color="#000000" size="2"> n</font>
        <font color="#808080" size="2">.</font>
        <font color="#000000" size="2">ID </font>
        <font color="#808080" size="2">=</font>
        <font color="#000000" size="2"> j</font>
        <font color="#808080" size="2">.</font>
        <font size="2">
          <font color="#000000">ID </font>
        </font>
        <font color="#0000ff" size="2">
          <p>
WHERE
</p>
        </font>
        <font color="#000000" size="2"> n</font>
        <font color="#808080" size="2">.</font>
        <font color="#000000" size="2">ID </font>
        <font color="#808080" size="2">IS</font>
        <font color="#000000" size="2">
        </font>
        <font color="#808080" size="2">NULL</font>
        <font color="#000000" size="2">
        </font>
        <p>
          <font color="#000000">
            <font size="2"> 
</font>
          </font>
        </p>
        <p>
Now let's talk about SQL 2005 and up
</p>
        <p>
          <strong>OUTER APPLY (SQL 2005 +)</strong>
          <br />
OUTER APPLY is something that got added to SQL 2005
</p>
        <p>
          <font color="#0000ff" size="2">SELECT</font>
          <font size="2"> j</font>
          <font color="#808080" size="2">.*</font>
          <font size="2">
          </font>
          <font color="#0000ff" size="2">FROM</font>
          <font size="2"> #testjoin
j 
</font>
        </p>
        <font color="#808080" size="2">
          <p>
OUTER
</p>
        </font>
        <font color="#000000" size="2">
        </font>
        <font color="#808080" size="2">APPLY
<p>
(
</p></font>
        <font color="#0000ff" size="2">SELECT </font>
        <font color="#000000" size="2">id </font>
        <font color="#0000ff" size="2">FROM </font>
        <font size="2">
          <font color="#000000">#testnulls
n</font>
        </font>
        <font color="#0000ff" size="2">
          <p>
WHERE 
</p>
        </font>
        <font color="#000000" size="2">n</font>
        <font color="#808080" size="2">.</font>
        <font color="#000000" size="2">ID </font>
        <font color="#808080" size="2">=</font>
        <font color="#000000" size="2"> j</font>
        <font color="#808080" size="2">.</font>
        <font color="#000000" size="2">ID</font>
        <font color="#808080" size="2">)</font>
        <font size="2">
          <font color="#000000"> a</font>
        </font>
        <font color="#0000ff" size="2">
          <p>
WHERE
</p>
        </font>
        <font color="#000000" size="2"> a</font>
        <font color="#808080" size="2">.</font>
        <font color="#000000" size="2">ID </font>
        <font color="#808080" size="2">IS</font>
        <font color="#000000" size="2">
        </font>
        <font color="#808080" size="2">NULL</font>
        <font size="2">
          <font color="#000000">
          </font>
        </font>
        <p>
          <font color="#000000">
          </font> 
</p>
        <p>
          <strong>EXCEPT(SQL 2005 +)</strong>
          <br />
EXCEPT is something that got added to SQL 2005. It basically returns everything from
the top table which is not in the bottom table
</p>
        <p>
          <font color="#0000ff" size="2"> 
</font>
        </p>
        <p>
SELECT<font color="#000000" size="2"></font><font color="#808080" size="2">*</font><font color="#000000" size="2"></font><font color="#0000ff" size="2">FROM</font><font size="2"><font color="#000000"> #testjoin</font></font></p>
        <font color="#0000ff" size="2">
          <p>
EXCEPT
</p>
        </font>
        <font size="2">
          <font color="#000000">
          </font>
        </font>
        <font color="#0000ff" size="2">
          <p>
SELECT
</p>
        </font>
        <font color="#000000" size="2">
        </font>
        <font color="#808080" size="2">*</font>
        <font color="#000000" size="2">
        </font>
        <font color="#0000ff" size="2">FROM</font>
        <font size="2">
          <font color="#000000"> #testnulls </font>
        </font>
        <p>
          <br />
I am also mentioning INTERSECT since some people might not have seen it before. INTERSECT
returns what ever is in both tables(like a regular join)
</p>
        <p>
          <font color="#0000ff" size="2"> 
</font>
        </p>
        <p>
SELECT<font color="#000000" size="2"></font><font color="#808080" size="2">*</font><font color="#000000" size="2"></font><font color="#0000ff" size="2">FROM</font><font size="2"><font color="#000000"> #testjoin</font></font></p>
        <font color="#0000ff" size="2">
          <p>
INTERSECT
</p>
          <p>
SELECT
</p>
        </font>
        <font color="#000000" size="2">
        </font>
        <font color="#808080" size="2">*</font>
        <font color="#000000" size="2">
        </font>
        <font color="#0000ff" size="2">FROM</font>
        <font color="#000000" size="2"> #testnulls </font>
        <p>
          <font color="#000000" size="2">
          </font> 
</p>
        <p>
          <font size="2">So there you have it, most likely you already know all these types
of joins. If you learned something from this post that is a good thing also.</font>
        </p>
        <img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=402cdb87-04b1-4129-add3-8516cd0ffcc4" />
      </body>
      <title>Five Different Ways To Return Data From One Table Which Doesn't Exists In another Table</title>
      <guid isPermaLink="false">http://www.spotgnome.com/PermaLink,guid,402cdb87-04b1-4129-add3-8516cd0ffcc4.aspx</guid>
      <link>http://www.spotgnome.com/2008/02/12/FiveDifferentWaysToReturnDataFromOneTableWhichDoesntExistsInAnotherTable.aspx</link>
      <pubDate>Tue, 12 Feb 2008 15:05:36 GMT</pubDate>
      <description>&lt;p&gt;
There are at least 5 ways to return data from one table which is not in another table.
Two of these are SQL Server 2005 and greater only. This is a post mostly for beginners
but hopefully everyone will get something out of it.
&lt;/p&gt;
&lt;p&gt;
Here are the 5 different ways
&lt;/p&gt;
&lt;p&gt;
NOT IN&lt;br&gt;
NOT EXISTS&lt;br&gt;
OUTER JOIN&lt;br&gt;
OUTER APPLY (2005+)&lt;br&gt;
EXCEPT (2005+)
&lt;/p&gt;
&lt;p&gt;
Let's see how this all works&lt;br&gt;
First create these two tables with the Celko approved naming convention.
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;font color=#0000ff size=2&gt; 
&lt;p&gt;
CREATE
&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;TABLE&lt;/font&gt;&lt;font color=#000000 size=2&gt; #testnulls &lt;/font&gt;&lt;font color=#808080 size=2&gt;(&lt;/font&gt;&lt;font color=#000000 size=2&gt;ID &lt;/font&gt;&lt;font color=#0000ff size=2&gt;INT&lt;/font&gt;&lt;font color=#808080 size=2&gt;)&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#000000&gt; &lt;/font&gt;&gt;
&lt;/font&gt;&lt;font color=#0000ff size=2&gt; 
&lt;p&gt;
INSERT
&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;INTO&lt;/font&gt;&lt;font color=#000000 size=2&gt; #testnulls &lt;/font&gt;&lt;font color=#0000ff size=2&gt;VALUES&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#808080 size=2&gt;(&lt;/font&gt;&lt;font color=#000000 size=2&gt;1&lt;/font&gt;&lt;font color=#808080 size=2&gt;)&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#000000&gt; &lt;/font&gt;&gt;
&lt;/font&gt;&lt;font color=#0000ff size=2&gt; 
&lt;p&gt;
INSERT
&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;INTO&lt;/font&gt;&lt;font color=#000000 size=2&gt; #testnulls &lt;/font&gt;&lt;font color=#0000ff size=2&gt;VALUES&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#808080 size=2&gt;(&lt;/font&gt;&lt;font color=#000000 size=2&gt;2&lt;/font&gt;&lt;font color=#808080 size=2&gt;)&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#000000&gt; &lt;/font&gt;&gt;
&lt;/font&gt;&lt;font color=#0000ff size=2&gt; 
&lt;p&gt;
INSERT
&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;INTO&lt;/font&gt;&lt;font color=#000000 size=2&gt; #testnulls &lt;/font&gt;&lt;font color=#0000ff size=2&gt;VALUES&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#808080 size=2&gt;(null)&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#000000&gt; &lt;/font&gt;&gt;
&lt;/font&gt;&lt;font color=#0000ff size=2&gt; 
&lt;p&gt;
&lt;font color=#000000&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
CREATE
&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;TABLE&lt;/font&gt;&lt;font color=#000000 size=2&gt; #testjoin &lt;/font&gt;&lt;font color=#808080 size=2&gt;(&lt;/font&gt;&lt;font color=#000000 size=2&gt;ID &lt;/font&gt;&lt;font color=#0000ff size=2&gt;INT&lt;/font&gt;&lt;font color=#808080 size=2&gt;)&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#000000&gt; &lt;/font&gt;&gt;
&lt;/font&gt;&lt;font color=#0000ff size=2&gt; 
&lt;p&gt;
INSERT
&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;INTO&lt;/font&gt;&lt;font color=#000000 size=2&gt; #testjoin &lt;/font&gt;&lt;font color=#0000ff size=2&gt;VALUES&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#808080 size=2&gt;(&lt;/font&gt;&lt;font color=#000000 size=2&gt;1&lt;/font&gt;&lt;font color=#808080 size=2&gt;)&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#000000&gt; &lt;/font&gt;&gt;
&lt;/font&gt;&lt;font color=#0000ff size=2&gt; 
&lt;p&gt;
INSERT
&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;INTO&lt;/font&gt;&lt;font color=#000000 size=2&gt; #testjoin &lt;/font&gt;&lt;font color=#0000ff size=2&gt;VALUES&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#808080 size=2&gt;(&lt;/font&gt;&lt;font color=#000000 size=2&gt;3&lt;/font&gt;&lt;font color=#808080 size=2&gt;)&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#000000&gt; &lt;/font&gt;&gt;
&lt;/font&gt; 
&lt;p&gt;
&lt;strong&gt;NOT IN&lt;/strong&gt;
&lt;br&gt;
Run the following Code
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;font color=#0000ff size=2&gt; 
&lt;p&gt;
SELECT
&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#808080 size=2&gt;*&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;FROM&lt;/font&gt;&lt;font color=#000000 size=2&gt; #testjoin &lt;/font&gt;&lt;font color=#0000ff size=2&gt;WHERE&lt;/font&gt;&lt;font color=#000000 size=2&gt; ID &lt;/font&gt;&lt;font color=#808080 size=2&gt;NOT&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#808080 size=2&gt;IN(&lt;/font&gt;&lt;font color=#0000ff size=2&gt;SELECT&lt;/font&gt;&lt;font color=#000000 size=2&gt; ID &lt;/font&gt;&lt;font color=#0000ff size=2&gt;FROM&lt;/font&gt;&lt;font color=#000000 size=2&gt; #testnulls&lt;/font&gt;&lt;font color=#808080 size=2&gt;)&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#000000&gt; &lt;/font&gt;&gt;
&lt;/font&gt; 
&lt;p&gt;
What happened? Nothing gets returned! The reason is because the subquery returns a
NULL and you can't compare a NULL to anything
&lt;/p&gt;
&lt;p&gt;
Now run this
&lt;/p&gt;
&lt;font color=#0000ff size=2&gt; 
&lt;p&gt;
SELECT
&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#808080 size=2&gt;*&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;FROM&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#000000&gt; #testjoin &lt;/font&gt;&gt;
&lt;/font&gt;&lt;font color=#0000ff size=2&gt; 
&lt;p&gt;
WHERE
&lt;/font&gt;&lt;font color=#000000 size=2&gt; ID &lt;/font&gt;&lt;font color=#808080 size=2&gt;NOT&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#808080 size=2&gt;IN(&lt;/font&gt;&lt;font color=#0000ff size=2&gt;SELECT&lt;/font&gt;&lt;font color=#000000 size=2&gt; ID &lt;/font&gt;&lt;font color=#0000ff size=2&gt;FROM&lt;/font&gt;&lt;font color=#000000 size=2&gt; #testnulls &lt;/font&gt;&lt;font color=#0000ff size=2&gt;WHERE&lt;/font&gt;&lt;font color=#000000 size=2&gt; ID &lt;/font&gt;&lt;font color=#808080 size=2&gt;IS&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#808080 size=2&gt;NOT&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#808080 size=2&gt;NULL)&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#000000&gt; &lt;/font&gt;&gt;
&lt;p&gt;
&lt;/font&gt;&lt;font size=3&gt;That worked because we eliminated the NULL values in the subquery&lt;/font&gt;&gt;
&lt;p&gt;
This also works
&lt;/p&gt;
&lt;font color=#0000ff size=2&gt; 
&lt;p&gt;
SELECT
&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#808080 size=2&gt;*&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;FROM&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#000000&gt; #testjoin
j&lt;/font&gt;&gt;
&lt;/font&gt;&lt;font color=#0000ff size=2&gt; 
&lt;p&gt;
WHERE
&lt;/font&gt;&lt;font color=#000000 size=2&gt; j&lt;/font&gt;&lt;font color=#808080 size=2&gt;.&lt;/font&gt;&lt;font color=#000000 size=2&gt;ID &lt;/font&gt;&lt;font color=#808080 size=2&gt;NOT&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#808080 size=2&gt;IN(&lt;/font&gt;&lt;font color=#0000ff size=2&gt;SELECT&lt;/font&gt;&lt;font color=#000000 size=2&gt; ID &lt;/font&gt;&lt;font color=#0000ff size=2&gt;FROM&lt;/font&gt;&lt;font color=#000000 size=2&gt; #testnulls
n &lt;/font&gt;&lt;font color=#0000ff size=2&gt;WHERE&lt;/font&gt;&lt;font color=#000000 size=2&gt; n&lt;/font&gt;&lt;font color=#808080 size=2&gt;.&lt;/font&gt;&lt;font color=#000000 size=2&gt;ID &lt;/font&gt;&lt;font color=#808080 size=2&gt;=&lt;/font&gt;&lt;font color=#000000 size=2&gt; j&lt;/font&gt;&lt;font color=#808080 size=2&gt;.&lt;/font&gt;&lt;font color=#000000 size=2&gt;ID&lt;/font&gt;&lt;font color=#808080 size=2&gt;)&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#000000&gt; &lt;/font&gt;&gt;
&lt;/font&gt; 
&lt;p&gt;
&lt;font color=#000000&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;
&lt;strong&gt;NOT EXISTS&lt;/strong&gt;
&lt;br&gt;
NOT EXISTS doesn't have the problem that NOT IN has. Run the following code
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;font color=#0000ff size=2&gt; 
&lt;p&gt;
SELECT
&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#808080 size=2&gt;*&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;FROM&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#000000&gt; #testjoin
j &lt;/font&gt;&gt;
&lt;/font&gt;&lt;font color=#0000ff size=2&gt; 
&lt;p&gt;
WHERE
&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#808080 size=2&gt;NOT&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#808080 size=2&gt;EXISTS&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#808080 size=2&gt;(&lt;/font&gt;&lt;font color=#0000ff size=2&gt;SELECT&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#000000&gt; 1 &lt;/font&gt;&gt;
&lt;/font&gt;&lt;font color=#0000ff size=2&gt; 
&lt;p&gt;
FROM
&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#000000&gt; #testnulls n &lt;/font&gt;&gt;
&lt;/font&gt;&lt;font color=#0000ff size=2&gt; 
&lt;p&gt;
WHERE
&lt;/font&gt;&lt;font color=#000000 size=2&gt; n&lt;/font&gt;&lt;font color=#808080 size=2&gt;.&lt;/font&gt;&lt;font color=#000000 size=2&gt;ID &lt;/font&gt;&lt;font color=#808080 size=2&gt;=&lt;/font&gt;&lt;font color=#000000 size=2&gt; j&lt;/font&gt;&lt;font color=#808080 size=2&gt;.&lt;/font&gt;&lt;font color=#000000 size=2&gt;ID&lt;/font&gt;&lt;font color=#808080 size=2&gt;)&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#000000&gt; &lt;/font&gt;&gt;
&lt;p&gt;
Everything worked 
&lt;/font&gt;&lt;font color=#0000ff size=2&gt;as&lt;/font&gt;&lt;font size=2&gt; expected&gt;
&lt;/font&gt; 
&lt;p&gt;
&lt;br&gt;
&lt;strong&gt;LEFT and RIGHT JOIN&lt;/strong&gt;
&lt;br&gt;
Plain vanilla LEFT and RIGHT JOINS
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;font color=#0000ff size=2&gt; 
&lt;p&gt;
SELECT
&lt;/font&gt;&lt;font color=#000000 size=2&gt; j&lt;/font&gt;&lt;font color=#808080 size=2&gt;.*&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;FROM&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#000000&gt; #testjoin
j &lt;/font&gt;&gt;
&lt;/font&gt;&lt;font color=#808080 size=2&gt; 
&lt;p&gt;
LEFT
&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#808080 size=2&gt;OUTER&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#808080 size=2&gt;JOIN&lt;/font&gt;&lt;font color=#000000 size=2&gt; #testnulls
n &lt;/font&gt;&lt;font color=#0000ff size=2&gt;ON&lt;/font&gt;&lt;font color=#000000 size=2&gt; n&lt;/font&gt;&lt;font color=#808080 size=2&gt;.&lt;/font&gt;&lt;font color=#000000 size=2&gt;ID &lt;/font&gt;&lt;font color=#808080 size=2&gt;=&lt;/font&gt;&lt;font color=#000000 size=2&gt; j&lt;/font&gt;&lt;font color=#808080 size=2&gt;.&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#000000&gt;ID &lt;/font&gt;&gt;
&lt;/font&gt;&lt;font color=#0000ff size=2&gt; 
&lt;p&gt;
WHERE
&lt;/font&gt;&lt;font color=#000000 size=2&gt; n&lt;/font&gt;&lt;font color=#808080 size=2&gt;.&lt;/font&gt;&lt;font color=#000000 size=2&gt;ID &lt;/font&gt;&lt;font color=#808080 size=2&gt;IS&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#808080 size=2&gt;NULL&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&gt;
&lt;p&gt;
&lt;font size=2&gt;With a RIGHT Join you just switch the tables around
&lt;/p&gt;
&gt;&lt;font color=#0000ff size=2&gt; 
&lt;p&gt;
SELECT
&lt;/font&gt;&lt;font color=#000000 size=2&gt; j&lt;/font&gt;&lt;font color=#808080 size=2&gt;.*&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;FROM&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#000000&gt; #testnulls
n &lt;/font&gt;&gt;
&lt;/font&gt;&lt;font color=#808080 size=2&gt; 
&lt;p&gt;
RIGHT
&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#808080 size=2&gt;OUTER&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#808080 size=2&gt;JOIN&lt;/font&gt;&lt;font color=#000000 size=2&gt; #testjoin
j &lt;/font&gt;&lt;font color=#0000ff size=2&gt;ON&lt;/font&gt;&lt;font color=#000000 size=2&gt; n&lt;/font&gt;&lt;font color=#808080 size=2&gt;.&lt;/font&gt;&lt;font color=#000000 size=2&gt;ID &lt;/font&gt;&lt;font color=#808080 size=2&gt;=&lt;/font&gt;&lt;font color=#000000 size=2&gt; j&lt;/font&gt;&lt;font color=#808080 size=2&gt;.&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#000000&gt;ID &lt;/font&gt;&gt;
&lt;/font&gt;&lt;font color=#0000ff size=2&gt; 
&lt;p&gt;
WHERE
&lt;/font&gt;&lt;font color=#000000 size=2&gt; n&lt;/font&gt;&lt;font color=#808080 size=2&gt;.&lt;/font&gt;&lt;font color=#000000 size=2&gt;ID &lt;/font&gt;&lt;font color=#808080 size=2&gt;IS&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#808080 size=2&gt;NULL&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&gt;
&lt;p&gt;
&lt;font color=#000000&gt;&lt;/font&gt;&lt;font size=2&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
And we can also do a full outer join
&lt;/p&gt;
&gt;&lt;font color=#0000ff size=2&gt; 
&lt;p&gt;
SELECT
&lt;/font&gt;&lt;font color=#000000 size=2&gt; j&lt;/font&gt;&lt;font color=#808080 size=2&gt;.*&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;FROM&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#000000&gt; #testnulls
n &lt;/font&gt;&gt;
&lt;/font&gt;&lt;font color=#808080 size=2&gt; 
&lt;p&gt;
FULL OUTER
&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#808080 size=2&gt;JOIN&lt;/font&gt;&lt;font color=#000000 size=2&gt; #testjoin
j &lt;/font&gt;&lt;font color=#0000ff size=2&gt;ON&lt;/font&gt;&lt;font color=#000000 size=2&gt; n&lt;/font&gt;&lt;font color=#808080 size=2&gt;.&lt;/font&gt;&lt;font color=#000000 size=2&gt;ID &lt;/font&gt;&lt;font color=#808080 size=2&gt;=&lt;/font&gt;&lt;font color=#000000 size=2&gt; j&lt;/font&gt;&lt;font color=#808080 size=2&gt;.&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#000000&gt;ID &lt;/font&gt;&gt;
&lt;/font&gt;&lt;font color=#0000ff size=2&gt; 
&lt;p&gt;
WHERE
&lt;/font&gt;&lt;font color=#000000 size=2&gt; n&lt;/font&gt;&lt;font color=#808080 size=2&gt;.&lt;/font&gt;&lt;font color=#000000 size=2&gt;ID &lt;/font&gt;&lt;font color=#808080 size=2&gt;IS&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#808080 size=2&gt;NULL&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#000000&gt; &lt;/font&gt;&gt;
&lt;/font&gt;&lt;font color=#808080 size=2&gt; 
&lt;p&gt;
AND
&lt;/font&gt;&lt;font color=#000000 size=2&gt; j&lt;/font&gt;&lt;font color=#808080 size=2&gt;.&lt;/font&gt;&lt;font color=#000000 size=2&gt;ID &lt;/font&gt;&lt;font color=#808080 size=2&gt;IS&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#808080 size=2&gt;NOT&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#808080 size=2&gt;NULL&gt;
&lt;p&gt;
&lt;/font&gt;
&lt;br&gt;
&lt;font color=#000000 size=3&gt;You might wonder why we have LEFT and RIGHT Joins, here
is why:&lt;br&gt;
&amp;lt;AttemptToBeFunny&amp;gt;LEFT joins are for people who tend to vote for the democrats,
RIGHT joins are for people who tend to vote for Republicans. FULL Joins are for independents/undecided
people.&amp;nbsp;&amp;lt;/AttemptToBeFunny&amp;gt;&lt;/font&gt;&gt;
&lt;p&gt;
You can be real silly and do a subquery LEFT join&lt;br&gt;
&lt;font color=#0000ff size=2&gt;&amp;nbsp;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font color=#0000ff size=2&gt;SELECT&lt;/font&gt;&lt;font size=2&gt; j&lt;/font&gt;&lt;font color=#808080 size=2&gt;.*&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;FROM&lt;/font&gt;&lt;font size=2&gt; #testjoin
j 
&lt;/p&gt;
&gt;&lt;font color=#808080 size=2&gt; 
&lt;p&gt;
LEFT
&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#808080 size=2&gt;OUTER&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#808080 size=2&gt;JOIN&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#808080 size=2&gt;(&lt;/font&gt;&lt;font color=#0000ff size=2&gt;SELECT&lt;/font&gt;&lt;font color=#000000 size=2&gt; ID &lt;/font&gt;&lt;font color=#0000ff size=2&gt;FROM&lt;/font&gt;&lt;font color=#000000 size=2&gt; #testnulls &lt;/font&gt;&lt;font color=#808080 size=2&gt;)&lt;/font&gt;&lt;font color=#000000 size=2&gt; n &lt;/font&gt;&lt;font color=#0000ff size=2&gt;ON&lt;/font&gt;&lt;font color=#000000 size=2&gt; n&lt;/font&gt;&lt;font color=#808080 size=2&gt;.&lt;/font&gt;&lt;font color=#000000 size=2&gt;ID &lt;/font&gt;&lt;font color=#808080 size=2&gt;=&lt;/font&gt;&lt;font color=#000000 size=2&gt; j&lt;/font&gt;&lt;font color=#808080 size=2&gt;.&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#000000&gt;ID &lt;/font&gt;&gt;
&lt;/font&gt;&lt;font color=#0000ff size=2&gt; 
&lt;p&gt;
WHERE
&lt;/font&gt;&lt;font color=#000000 size=2&gt; n&lt;/font&gt;&lt;font color=#808080 size=2&gt;.&lt;/font&gt;&lt;font color=#000000 size=2&gt;ID &lt;/font&gt;&lt;font color=#808080 size=2&gt;IS&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#808080 size=2&gt;NULL&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&gt;
&lt;p&gt;
&lt;font color=#000000&gt;&lt;font size=2&gt;&amp;nbsp;
&lt;/p&gt;
&gt;&gt; 
&lt;p&gt;
Now let's talk about SQL 2005 and up
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;OUTER APPLY (SQL 2005 +)&lt;/strong&gt;
&lt;br&gt;
OUTER APPLY is something that got added to SQL 2005
&lt;/p&gt;
&lt;p&gt;
&lt;font color=#0000ff size=2&gt;SELECT&lt;/font&gt;&lt;font size=2&gt; j&lt;/font&gt;&lt;font color=#808080 size=2&gt;.*&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;FROM&lt;/font&gt;&lt;font size=2&gt; #testjoin
j 
&lt;/p&gt;
&gt;&lt;font color=#808080 size=2&gt; 
&lt;p&gt;
OUTER
&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#808080 size=2&gt;APPLY&gt;
&lt;p&gt;
(
&lt;/font&gt;&lt;font color=#0000ff size=2&gt;SELECT &lt;/font&gt;&lt;font color=#000000 size=2&gt;id &lt;/font&gt;&lt;font color=#0000ff size=2&gt;FROM &lt;/font&gt;&lt;font size=2&gt;&lt;font color=#000000&gt;#testnulls
n&lt;/font&gt;&gt;
&lt;/font&gt;&lt;font color=#0000ff size=2&gt; 
&lt;p&gt;
WHERE 
&lt;/font&gt;&lt;font color=#000000 size=2&gt;n&lt;/font&gt;&lt;font color=#808080 size=2&gt;.&lt;/font&gt;&lt;font color=#000000 size=2&gt;ID &lt;/font&gt;&lt;font color=#808080 size=2&gt;=&lt;/font&gt;&lt;font color=#000000 size=2&gt; j&lt;/font&gt;&lt;font color=#808080 size=2&gt;.&lt;/font&gt;&lt;font color=#000000 size=2&gt;ID&lt;/font&gt;&lt;font color=#808080 size=2&gt;)&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#000000&gt; a&lt;/font&gt;&gt;
&lt;/font&gt;&lt;font color=#0000ff size=2&gt; 
&lt;p&gt;
WHERE
&lt;/font&gt;&lt;font color=#000000 size=2&gt; a&lt;/font&gt;&lt;font color=#808080 size=2&gt;.&lt;/font&gt;&lt;font color=#000000 size=2&gt;ID &lt;/font&gt;&lt;font color=#808080 size=2&gt;IS&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#808080 size=2&gt;NULL&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#000000&gt; &lt;/font&gt;&gt;
&lt;/font&gt; 
&lt;p&gt;
&lt;font color=#000000&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;EXCEPT(SQL 2005 +)&lt;/strong&gt;
&lt;br&gt;
EXCEPT is something that got added to SQL 2005. It basically returns everything from
the top table which is not in the bottom table
&lt;/p&gt;
&lt;p&gt;
&lt;font color=#0000ff size=2&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
SELECT&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#808080 size=2&gt;*&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;FROM&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#000000&gt; #testjoin&lt;/font&gt;
&lt;/p&gt;
&gt;&lt;font color=#0000ff size=2&gt; 
&lt;p&gt;
EXCEPT
&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#000000&gt; &lt;/font&gt;&gt;
&lt;/font&gt;&lt;font color=#0000ff size=2&gt; 
&lt;p&gt;
SELECT
&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#808080 size=2&gt;*&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;FROM&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#000000&gt; #testnulls &lt;/font&gt;&gt;
&lt;/font&gt; 
&lt;p&gt;
&lt;br&gt;
I am also mentioning INTERSECT since some people might not have seen it before. INTERSECT
returns what ever is in both tables(like a regular join)
&lt;/p&gt;
&lt;p&gt;
&lt;font color=#0000ff size=2&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
SELECT&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#808080 size=2&gt;*&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;FROM&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#000000&gt; #testjoin&lt;/font&gt;
&lt;/p&gt;
&gt;&lt;font color=#0000ff size=2&gt; 
&lt;p&gt;
INTERSECT
&lt;/p&gt;
&lt;p&gt;
SELECT
&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#808080 size=2&gt;*&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;FROM&lt;/font&gt;&lt;font color=#000000 size=2&gt; #testnulls &lt;/font&gt;&gt;
&lt;p&gt;
&lt;font color=#000000 size=2&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;font size=2&gt;So there you have it, most likely you already know all these types of
joins. If you learned something from this post that is a good thing also.&lt;/font&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=402cdb87-04b1-4129-add3-8516cd0ffcc4" /&gt;</description>
      <comments>http://www.spotgnome.com/CommentView,guid,402cdb87-04b1-4129-add3-8516cd0ffcc4.aspx</comments>
      <category>Programming</category>
      <category>SQL</category>
    </item>
    <item>
      <trackback:ping>http://www.spotgnome.com/Trackback.aspx?guid=c672cf17-39dd-4abd-a263-6f0c78537daf</trackback:ping>
      <pingback:server>http://www.spotgnome.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.spotgnome.com/PermaLink,guid,c672cf17-39dd-4abd-a263-6f0c78537daf.aspx</pingback:target>
      <dc:creator>Guy Levin</dc:creator>
      <wfw:comment>http://www.spotgnome.com/CommentView,guid,c672cf17-39dd-4abd-a263-6f0c78537daf.aspx</wfw:comment>
      <wfw:commentRss>http://www.spotgnome.com/SyndicationService.asmx/GetEntryCommentsRss?guid=c672cf17-39dd-4abd-a263-6f0c78537daf</wfw:commentRss>
      <slash:comments>3</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
It was all going so smoothly. <a href="http://www.michaelckennedy.net/blog/ct.ashx?id=55a9b21e-ae85-4c24-a0b6-63dff4a6b491&amp;url=http%3a%2f%2fdevelop.com%2fus%2ftechnology%2fbio.aspx%3fid%3d52"><strong><font color="#355ea0">Jason
Whittington</font></strong></a>, <a href="http://www.michaelckennedy.net/blog/ct.ashx?id=55a9b21e-ae85-4c24-a0b6-63dff4a6b491&amp;url=http%3a%2f%2fdevelop.com%2fus%2ftechnology%2fbio.aspx%3fid%3d98"><strong><font color="#355ea0">Mark
Smith</font></strong></a> and I were teaching the big <a href="http://www.michaelckennedy.net/blog/ct.ashx?id=55a9b21e-ae85-4c24-a0b6-63dff4a6b491&amp;url=http%3a%2f%2fwww.develop.com"><strong><font color="#355ea0">DevelopMentor</font></strong></a> event
here in Los Angeles (<a href="http://www.michaelckennedy.net/blog/ct.ashx?id=55a9b21e-ae85-4c24-a0b6-63dff4a6b491&amp;url=http%3a%2f%2fwww.develop.com%2fus%2ftraining%2fcourse.aspx%3fid%3d273"><strong><font color="#355ea0">Guerrilla.NET</font></strong></a>)
when my presentation on the <a href="http://www.michaelckennedy.net/blog/ct.ashx?id=55a9b21e-ae85-4c24-a0b6-63dff4a6b491&amp;url=http%3a%2f%2fmsdn2.microsoft.com%2fen-us%2flibrary%2fsystem.threading.threadpool.aspx"><strong><font color="#355ea0">ThreadPool</font></strong></a> took
a nose dive. It started with a great joke involving Wilson (the volleyball from <a href="http://www.michaelckennedy.net/blog/ct.ashx?id=55a9b21e-ae85-4c24-a0b6-63dff4a6b491&amp;url=http%3a%2f%2fwww.imdb.com%2ftitle%2ftt0162222%2f"><i><strong><font color="#355ea0">Cast
Away</font></strong></i></a>). 
</p>
        <p>
Wilson and I built an application to compute a multiplication table where each computation
was (artificially) slow. To speed it up we threw it at the thread pool using <font face="Courier New"><b>delegate.BeginInvoke</b></font>.
We figured that the ThreadPool would allocate 25 or so threads and the table would
display quickly. Here's the expected output - pretty much the same thing we've seen
since about .NET 1.0: 
</p>
        <p>
    <img style="BORDER-RIGHT: rgb(0,0,0) thin solid; BORDER-TOP: rgb(0,0,0) thin solid; BORDER-LEFT: rgb(0,0,0) thin solid; BORDER-BOTTOM: rgb(0,0,0) thin solid" src="http://www.michaelckennedy.net/blog/content/binary/Matrix.png" /></p>
        <p>
Each color represents the thread that did that computation. 
</p>
        <p>
For the last 7 years, the behavior has been that as the ThreadPool was overloaded,
it would steadily start up new threads at the rate of one every 500 milliseconds until
it hits its upper limit (typically). Using Performance Monitor (perfmon) we can watch
the thread pool adding threads. It usually looks something like this: 
</p>
        <p>
    <img style="BORDER-RIGHT: rgb(0,0,0) thin solid; BORDER-TOP: rgb(0,0,0) thin solid; BORDER-LEFT: rgb(0,0,0) thin solid; BORDER-BOTTOM: rgb(0,0,0) thin solid" src="http://www.michaelckennedy.net/blog/content/binary/old_perfmon.png" /></p>
        <p>
Much to our surprise we saw completely different behavior. The thread pool added the
first 15 or so threads quickly (as expected) but then stalled. New threads were <i>not</i> created
every 500ms, instead they were added at increasingly long intervals. My demo took
almost <i>twice</i> as long to run as it had the last time I did this demo a few months
ago. 
</p>
        <p>
Jason, Mark, and I took this code, ported it back to .NET 1.1 and ran it side-by-side
with .NET 3.5 and here's what we saw (blue = 3.5, red = 1.1): 
</p>
        <p>
    <img style="BORDER-RIGHT: rgb(0,0,0) thin solid; BORDER-TOP: rgb(0,0,0) thin solid; BORDER-LEFT: rgb(0,0,0) thin solid; BORDER-BOTTOM: rgb(0,0,0) thin solid" src="http://www.michaelckennedy.net/blog/content/binary/perfmon.PNG" /></p>
        <p>
As of .NET 3.5 the upper limit of the ThreadPool was increased: <a href="http://www.michaelckennedy.net/blog/ct.ashx?id=55a9b21e-ae85-4c24-a0b6-63dff4a6b491&amp;url=http%3a%2f%2fwww.bluebytesoftware.com%2fblog%2f2007%2f03%2f05%2fWhyTheCLR20SP1sThreadpoolDefaultMaxThreadCountWasIncreasedTo250CPU.aspx"><strong><font color="#355ea0">Knew
that</font></strong></a>. 
</p>
        <p>
But, it appears that v3.5 of the CLR changes the policy for adding threads to the
thread pool. Rather than adding threads regularly when under load the thread pool
uses a logarithmic backoff. My colleague Jason Whittington remarked that this behavior
looked similar to the behavior of the thread pool in <a href="http://www.michaelckennedy.net/blog/ct.ashx?id=55a9b21e-ae85-4c24-a0b6-63dff4a6b491&amp;url=http%3a%2f%2fresearch.microsoft.com%2fsscli"><strong><font color="#355ea0">"Rotor"</font></strong></a> (the
shared-source version of the CLR). We speculated that this backoff algorithm makes
sense given the new 250-thread per CPU maximum - it would take a long time to reach
that if the runtime waits longer and longer to start a new thread. The 250-thread
limits makes it less likely that your application will deadlock the thread pool, and
the exponential backoff algorithm keeps the thread pool from creating too many threads
too quickly. 
</p>
        <p>
Why should you care? Usually you won't, but it could have dramatic impact if you count
on that behavior. For example, in our contrived case, <b>.NET 1.1 ran about twice
as fast as .NET 3.5 ( ! )</b>: 
</p>
        <p>
    <img style="BORDER-RIGHT: rgb(0,0,0) thin solid; BORDER-TOP: rgb(0,0,0) thin solid; BORDER-LEFT: rgb(0,0,0) thin solid; BORDER-BOTTOM: rgb(0,0,0) thin solid" src="http://www.michaelckennedy.net/blog/content/binary/console_trimmed.png" /></p>
        <p>
Here's the program and source code (trimmed down to run in both .NET 1.1 and 3.5). 
</p>
        <p>
    <a href="http://www.michaelckennedy.net/blog/ct.ashx?id=55a9b21e-ae85-4c24-a0b6-63dff4a6b491&amp;url=http%3a%2f%2fwww.michaelckennedy.net%2fblog%2fcontent%2fbinary%2fMath.zip"><strong><font color="#355ea0">Math.zip</font></strong></a> (6.38
KB) 
</p>
        <img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=c672cf17-39dd-4abd-a263-6f0c78537daf" />
      </body>
      <title>.NET 3.5 Brings Major (Undocumented) Changes to ThreadPool</title>
      <guid isPermaLink="false">http://www.spotgnome.com/PermaLink,guid,c672cf17-39dd-4abd-a263-6f0c78537daf.aspx</guid>
      <link>http://www.spotgnome.com/2008/02/10/NET35BringsMajorUndocumentedChangesToThreadPool.aspx</link>
      <pubDate>Sun, 10 Feb 2008 15:03:47 GMT</pubDate>
      <description>&lt;p&gt;
It was all going so smoothly. &lt;a href="http://www.michaelckennedy.net/blog/ct.ashx?id=55a9b21e-ae85-4c24-a0b6-63dff4a6b491&amp;amp;url=http%3a%2f%2fdevelop.com%2fus%2ftechnology%2fbio.aspx%3fid%3d52"&gt;&lt;strong&gt;&lt;font color=#355ea0&gt;Jason
Whittington&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt;, &lt;a href="http://www.michaelckennedy.net/blog/ct.ashx?id=55a9b21e-ae85-4c24-a0b6-63dff4a6b491&amp;amp;url=http%3a%2f%2fdevelop.com%2fus%2ftechnology%2fbio.aspx%3fid%3d98"&gt;&lt;strong&gt;&lt;font color=#355ea0&gt;Mark
Smith&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt; and I were teaching the big &lt;a href="http://www.michaelckennedy.net/blog/ct.ashx?id=55a9b21e-ae85-4c24-a0b6-63dff4a6b491&amp;amp;url=http%3a%2f%2fwww.develop.com"&gt;&lt;strong&gt;&lt;font color=#355ea0&gt;DevelopMentor&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt; event
here in Los Angeles (&lt;a href="http://www.michaelckennedy.net/blog/ct.ashx?id=55a9b21e-ae85-4c24-a0b6-63dff4a6b491&amp;amp;url=http%3a%2f%2fwww.develop.com%2fus%2ftraining%2fcourse.aspx%3fid%3d273"&gt;&lt;strong&gt;&lt;font color=#355ea0&gt;Guerrilla.NET&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt;)
when my presentation on the &lt;a href="http://www.michaelckennedy.net/blog/ct.ashx?id=55a9b21e-ae85-4c24-a0b6-63dff4a6b491&amp;amp;url=http%3a%2f%2fmsdn2.microsoft.com%2fen-us%2flibrary%2fsystem.threading.threadpool.aspx"&gt;&lt;strong&gt;&lt;font color=#355ea0&gt;ThreadPool&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt; took
a nose dive. It started with a great joke involving Wilson (the volleyball from &lt;a href="http://www.michaelckennedy.net/blog/ct.ashx?id=55a9b21e-ae85-4c24-a0b6-63dff4a6b491&amp;amp;url=http%3a%2f%2fwww.imdb.com%2ftitle%2ftt0162222%2f"&gt;&lt;i&gt;&lt;strong&gt;&lt;font color=#355ea0&gt;Cast
Away&lt;/font&gt;&lt;/strong&gt;&lt;/i&gt;&lt;/a&gt;). 
&lt;/p&gt;
&lt;p&gt;
Wilson and I built an application to compute a multiplication table where each computation
was (artificially) slow. To speed it up we threw it at the thread pool using &lt;font face="Courier New"&gt;&lt;b&gt;delegate.BeginInvoke&lt;/b&gt;&lt;/font&gt;.
We figured that the ThreadPool would allocate 25 or so threads and the table would
display quickly. Here's the expected output - pretty much the same thing we've seen
since about .NET 1.0: 
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;img style="BORDER-RIGHT: rgb(0,0,0) thin solid; BORDER-TOP: rgb(0,0,0) thin solid; BORDER-LEFT: rgb(0,0,0) thin solid; BORDER-BOTTOM: rgb(0,0,0) thin solid" src="http://www.michaelckennedy.net/blog/content/binary/Matrix.png"&gt; 
&lt;/p&gt;
&lt;p&gt;
Each color represents the thread that did that computation. 
&lt;/p&gt;
&lt;p&gt;
For the last 7 years, the behavior has been that as the ThreadPool was overloaded,
it would steadily start up new threads at the rate of one every 500 milliseconds until
it hits its upper limit (typically). Using Performance Monitor (perfmon) we can watch
the thread pool adding threads. It usually looks something like this: 
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;img style="BORDER-RIGHT: rgb(0,0,0) thin solid; BORDER-TOP: rgb(0,0,0) thin solid; BORDER-LEFT: rgb(0,0,0) thin solid; BORDER-BOTTOM: rgb(0,0,0) thin solid" src="http://www.michaelckennedy.net/blog/content/binary/old_perfmon.png"&gt; 
&lt;/p&gt;
&lt;p&gt;
Much to our surprise we saw completely different behavior. The thread pool added the
first 15 or so threads quickly (as expected) but then stalled. New threads were &lt;i&gt;not&lt;/i&gt; created
every 500ms, instead they were added at increasingly long intervals. My demo took
almost &lt;i&gt;twice&lt;/i&gt; as long to run as it had the last time I did this demo a few months
ago. 
&lt;/p&gt;
&lt;p&gt;
Jason, Mark, and I took this code, ported it back to .NET 1.1 and ran it side-by-side
with .NET 3.5 and here's what we saw (blue = 3.5, red = 1.1): 
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;img style="BORDER-RIGHT: rgb(0,0,0) thin solid; BORDER-TOP: rgb(0,0,0) thin solid; BORDER-LEFT: rgb(0,0,0) thin solid; BORDER-BOTTOM: rgb(0,0,0) thin solid" src="http://www.michaelckennedy.net/blog/content/binary/perfmon.PNG"&gt; 
&lt;/p&gt;
&lt;p&gt;
As of .NET 3.5 the upper limit of the ThreadPool was increased: &lt;a href="http://www.michaelckennedy.net/blog/ct.ashx?id=55a9b21e-ae85-4c24-a0b6-63dff4a6b491&amp;amp;url=http%3a%2f%2fwww.bluebytesoftware.com%2fblog%2f2007%2f03%2f05%2fWhyTheCLR20SP1sThreadpoolDefaultMaxThreadCountWasIncreasedTo250CPU.aspx"&gt;&lt;strong&gt;&lt;font color=#355ea0&gt;Knew
that&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
But, it appears that v3.5 of the CLR changes the policy for adding threads to the
thread pool. Rather than adding threads regularly when under load the thread pool
uses a logarithmic backoff. My colleague Jason Whittington remarked that this behavior
looked similar to the behavior of the thread pool in &lt;a href="http://www.michaelckennedy.net/blog/ct.ashx?id=55a9b21e-ae85-4c24-a0b6-63dff4a6b491&amp;amp;url=http%3a%2f%2fresearch.microsoft.com%2fsscli"&gt;&lt;strong&gt;&lt;font color=#355ea0&gt;"Rotor"&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt; (the
shared-source version of the CLR). We speculated that this backoff algorithm makes
sense given the new 250-thread per CPU maximum - it would take a long time to reach
that if the runtime waits longer and longer to start a new thread. The 250-thread
limits makes it less likely that your application will deadlock the thread pool, and
the exponential backoff algorithm keeps the thread pool from creating too many threads
too quickly. 
&lt;/p&gt;
&lt;p&gt;
Why should you care? Usually you won't, but it could have dramatic impact if you count
on that behavior. For example, in our contrived case, &lt;b&gt;.NET 1.1 ran about twice
as fast as .NET 3.5 ( ! )&lt;/b&gt;: 
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;img style="BORDER-RIGHT: rgb(0,0,0) thin solid; BORDER-TOP: rgb(0,0,0) thin solid; BORDER-LEFT: rgb(0,0,0) thin solid; BORDER-BOTTOM: rgb(0,0,0) thin solid" src="http://www.michaelckennedy.net/blog/content/binary/console_trimmed.png"&gt; 
&lt;/p&gt;
&lt;p&gt;
Here's the program and source code (trimmed down to run in both .NET 1.1 and 3.5). 
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.michaelckennedy.net/blog/ct.ashx?id=55a9b21e-ae85-4c24-a0b6-63dff4a6b491&amp;amp;url=http%3a%2f%2fwww.michaelckennedy.net%2fblog%2fcontent%2fbinary%2fMath.zip"&gt;&lt;strong&gt;&lt;font color=#355ea0&gt;Math.zip&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt; (6.38
KB) 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=c672cf17-39dd-4abd-a263-6f0c78537daf" /&gt;</description>
      <comments>http://www.spotgnome.com/CommentView,guid,c672cf17-39dd-4abd-a263-6f0c78537daf.aspx</comments>
      <category>.Net</category>
      <category>Programming</category>
      <category>Visual Studio</category>
    </item>
    <item>
      <trackback:ping>http://www.spotgnome.com/Trackback.aspx?guid=634476ba-1862-4d92-ae7c-be6119f19b25</trackback:ping>
      <pingback:server>http://www.spotgnome.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.spotgnome.com/PermaLink,guid,634476ba-1862-4d92-ae7c-be6119f19b25.aspx</pingback:target>
      <dc:creator>Guy Levin</dc:creator>
      <wfw:comment>http://www.spotgnome.com/CommentView,guid,634476ba-1862-4d92-ae7c-be6119f19b25.aspx</wfw:comment>
      <wfw:commentRss>http://www.spotgnome.com/SyndicationService.asmx/GetEntryCommentsRss?guid=634476ba-1862-4d92-ae7c-be6119f19b25</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Working as a team against a common database schema can be a real challenge. Some teams
prefer to have their local code connect to a centralized database, but this approach
can create many headaches. If I make a schema change to a shared database, but am
not ready to check in my code, that can break the site for another developer. For
a project like Subtext, it is just not feasible to have a central database. 
</p>
        <p>
Instead, I prefer to work on a local copy of the database and propagate changes via
versioned change scripts. That way, when I check in my code, I can let others know
which scripts to run on their local database when they get latest source code. Of
course this can be also be a big challenge as the number of scripts starts to grow
and developers are stuck bookkeeping which scripts they have run and which they haven’t. 
</p>
        <p>
That is why I always recommend to my teams that we script schema and data changes
in an <a title="An operation applied more than once is the same as if applied once" href="http://en.wikipedia.org/wiki/Idempotent" rel="external">idempotent</a> manner
whenever possible. That way, it is much easier to simply batch updates together in
a single file (per release for example) and a developer simply runs that single script
any time an update is made. 
</p>
        <p>
As an example, suppose we have a <code>Customer</code> table and we need to add a
column for the customer’s favorite color. I would script it like so: 
</p>
        <div class="dropshadow code">
          <div class="innerbox">
            <pre class="csharpcode">
              <span class="kwrd">IF</span>
              <span class="kwrd">NOT</span>
              <span class="kwrd">EXISTS</span> ( <span class="kwrd">SELECT</span> * <span class="kwrd">FROM</span> [information_schema].[columns] <span class="kwrd">WHERE</span> table_name
= <span class="str">'Customer'</span><span class="kwrd">AND</span> table_schema = <span class="str">'dbo'</span><span class="kwrd">AND</span> column_name
= <span class="str">'FavoriteColorId'</span> ) <span class="kwrd">BEGIN</span><span class="kwrd">ALTER</span><span class="kwrd">TABLE</span> [dbo].[Customer] <span class="kwrd">ADD</span> FavoriteColorId
int <span class="kwrd">END</span></pre>
          </div>
        </div>
        <p class="clear">
This script basically checks for the existence of the <code>FavoriteColorId</code> column
on the table <code>Customer</code> and if it doesn’t exist, it adds it. You can run
this script a million times, and it will only make the schema change once. 
</p>
        <p>
You’ll notice that I didn’t query against the system tables, instead choosing to lookup
the information in an INFORMATION_SCHEMA view named <em>Columns</em>. This is the
Microsoft recommendation as they reserve the right to change the system tables at
any time. The information views are part of the SQL-92 standard, so they are not likely
to change. 
</p>
        <p>
There are 20 schema views in all, listed below with their purpose (aggregated from
SQL Books). Note that in all cases, only data accessible to the user executing the
query against the information_schema views is returned. 
</p>
        <p>
          <table class="highlightTable">
            <tbody>
              <tr>
                <th>
Name</th>
                <th>
Returns</th>
              </tr>
              <tr class="alt">
                <td>
                  <font size="2">CHECK_CONSTRAINTS</font>
                </td>
                <td>
                  <font size="2">Check Constraints</font>
                </td>
              </tr>
              <tr>
                <td>
                  <font size="2">COLUMN_DOMAIN_USAGE</font>
                </td>
                <td>
                  <font size="2">Every column that has a user-defined data type.</font>
                </td>
              </tr>
              <tr class="alt">
                <td>
                  <font size="2">COLUMN_PRIVILEGES</font>
                </td>
                <td>
                  <font size="2">Every column with a privilege granted to or by the current user in
the current database.</font>
                </td>
              </tr>
              <tr>
                <td>
                  <font size="2">COLUMNS</font>
                </td>
                <td>
                  <font size="2">Lists every column in the system</font>
                </td>
              </tr>
              <tr class="alt">
                <td>
                  <font size="2">CONSTRAINT_COLUMN_USAGE</font>
                </td>
                <td>
                  <font size="2">Every column that has a constraint defined on it.</font>
                </td>
              </tr>
              <tr>
                <td>
                  <font size="2">CONSTRAINT_TABLE_USAGE</font>
                </td>
                <td>
                  <font size="2">Every table that has a constraint defined on it.</font>
                </td>
              </tr>
              <tr class="alt">
                <td>
                  <font size="2">DOMAIN_CONSTRAINTS</font>
                </td>
                <td>
                  <font size="2">Every user-defined data type with a rule bound to it.</font>
                </td>
              </tr>
              <tr>
                <td>
                  <font size="2">DOMAINS</font>
                </td>
                <td>
                  <font size="2">Every user-defined data type.</font>
                </td>
              </tr>
              <tr class="alt">
                <td>
                  <font size="2">KEY_COLUMN_USAGE</font>
                </td>
                <td>
                  <font size="2">Every column that is constrained as a key</font>
                </td>
              </tr>
              <tr>
                <td>
                  <font size="2">PARAMETERS</font>
                </td>
                <td>
                  <font size="2">Every parameter for every user-defined function or stored procedure
in the datbase. For functions this returns one row with return value information.</font>
                </td>
              </tr>
              <tr class="alt">
                <td>
                  <font size="2">REFERENTIAL_CONSTRAINTS</font>
                </td>
                <td>
                  <font size="2">Every foreign constraint in the system.</font>
                </td>
              </tr>
              <tr>
                <td>
                  <font size="2">ROUTINE_COLUMNS</font>
                </td>
                <td>
                  <font size="2">Every column returned by table-valued functions.</font>
                </td>
              </tr>
              <tr class="alt">
                <td>
                  <font size="2">ROUTINES</font>
                </td>
                <td>
                  <font size="2">Every stored procedure and function in the database.</font>
                </td>
              </tr>
              <tr>
                <td>
                  <font size="2">SCHEMATA</font>
                </td>
                <td>
                  <font size="2">Every database in the system.</font>
                </td>
              </tr>
              <tr class="alt">
                <td>
                  <font size="2">TABLE_CONSTRAINTS</font>
                </td>
                <td>
                  <font size="2">Every table constraint.</font>
                </td>
              </tr>
              <tr>
                <td>
                  <font size="2">TABLE_PRIVILEGES</font>
                </td>
                <td>
                  <font size="2">Every table privilege granted to or by the current user.</font>
                </td>
              </tr>
              <tr class="alt">
                <td>
                  <font size="2">TABLES</font>
                </td>
                <td>
                  <font size="2">Every table in the system.</font>
                </td>
              </tr>
              <tr>
                <td>
                  <font size="2">VIEW_COLUMN_USAGE</font>
                </td>
                <td>
                  <font size="2">Every column used in a view definition.</font>
                </td>
              </tr>
              <tr class="alt">
                <td>
                  <font size="2">VIEW_TABLE_USAGE</font>
                </td>
                <td>
                  <font size="2">Every table used in a view definition.</font>
                </td>
              </tr>
              <tr>
                <td>
                  <font size="2">VIEWS</font>
                </td>
                <td>
                  <font size="2">Every View</font>
                </td>
              </tr>
            </tbody>
          </table>
        </p>
        <p>
When selecting rows from these views, the table must be prefixed with <em>information_schema</em> as
in <em>SELECT * FROM information_schema.tables</em>. 
</p>
        <p>
Please note that the information schema views are based on a SQL-92 standard so some
of the terms used in these views are different than the terms in Microsoft SQL Server.
For example, in the example above, I set <code>table_schema = 'dbo'</code>. The term <em>schema</em> refers
to the owner of the database object. 
</p>
        <p>
Here is another code example in which I add a constraint to the <code>Customer</code> table. 
</p>
        <div class="dropshadow code">
          <div class="innerbox">
            <pre class="csharpcode">
              <span class="kwrd">IF</span>
              <span class="kwrd">NOT</span>
              <span class="kwrd">EXISTS</span>( <span class="kwrd">SELECT</span> * <span class="kwrd">FROM</span> [information_schema].[referential_constraints] <span class="kwrd">WHERE</span> constraint_name
= <span class="str">'FK_Customer_Color'</span><span class="kwrd">AND</span> constraint_schema
= <span class="str">'dbo'</span> ) <span class="kwrd">BEGIN</span><span class="kwrd">ALTER</span><span class="kwrd">TABLE</span> dbo.Customer <span class="kwrd">WITH</span><span class="kwrd">NOCHECK</span><span class="kwrd">ADD</span><span class="kwrd">CONSTRAINT</span> FK_Customer_Color <span class="kwrd">FOREIGN</span><span class="kwrd">KEY</span> (
FavoriteColorId ) <span class="kwrd">REFERENCES</span> dbo.Color ( Id ) END</pre>
          </div>
        </div>
        <p class="clear">
I generally don’t go to all this trouble for stored procedures, user defined functions,
and views. In those cases I will use Enterprise manager generate a full drop and create
script. When a stored procedure is dropped and re-created, you don’t lose data as
you would if you dropped and re-created a table that contained some data. 
</p>
        <p>
With this approach in hand, I can run an update script with new schema changes confident
that I any changes in the script that I have already applied will not be applied again.
The same approach works for lookup data as well. Simply check for the data’s existence
before inserting the data. It is a little bit more work up front, but it is worth
the trouble and schema changes happen less frequently than code or stored procedure
changes.
</p>
        <img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=634476ba-1862-4d92-ae7c-be6119f19b25" />
      </body>
      <title>Sql Change Scripts Using INFORMATION_SCHEMA Views</title>
      <guid isPermaLink="false">http://www.spotgnome.com/PermaLink,guid,634476ba-1862-4d92-ae7c-be6119f19b25.aspx</guid>
      <link>http://www.spotgnome.com/2008/02/05/SqlChangeScriptsUsingINFORMATIONSCHEMAViews.aspx</link>
      <pubDate>Tue, 05 Feb 2008 09:57:38 GMT</pubDate>
      <description>&lt;p&gt;
Working as a team against a common database schema can be a real challenge. Some teams
prefer to have their local code connect to a centralized database, but this approach
can create many headaches. If I make a schema change to a shared database, but am
not ready to check in my code, that can break the site for another developer. For
a project like Subtext, it is just not feasible to have a central database. 
&lt;/p&gt;
&lt;p&gt;
Instead, I prefer to work on a local copy of the database and propagate changes via
versioned change scripts. That way, when I check in my code, I can let others know
which scripts to run on their local database when they get latest source code. Of
course this can be also be a big challenge as the number of scripts starts to grow
and developers are stuck bookkeeping which scripts they have run and which they haven’t. 
&lt;/p&gt;
&lt;p&gt;
That is why I always recommend to my teams that we script schema and data changes
in an &lt;a title="An operation applied more than once is the same as if applied once" href="http://en.wikipedia.org/wiki/Idempotent" rel=external&gt;idempotent&lt;/a&gt; manner
whenever possible. That way, it is much easier to simply batch updates together in
a single file (per release for example) and a developer simply runs that single script
any time an update is made. 
&lt;/p&gt;
&lt;p&gt;
As an example, suppose we have a &lt;code&gt;Customer&lt;/code&gt; table and we need to add a
column for the customer’s favorite color. I would script it like so: 
&lt;/p&gt;
&lt;div class="dropshadow code"&gt;
&lt;div class=innerbox&gt;&lt;pre class=csharpcode&gt;&lt;span class=kwrd&gt;IF&lt;/span&gt; &lt;span class=kwrd&gt;NOT&lt;/span&gt; &lt;span class=kwrd&gt;EXISTS&lt;/span&gt; ( &lt;span class=kwrd&gt;SELECT&lt;/span&gt; * &lt;span class=kwrd&gt;FROM&lt;/span&gt; [information_schema].[columns] &lt;span class=kwrd&gt;WHERE&lt;/span&gt; table_name
= &lt;span class=str&gt;'Customer'&lt;/span&gt; &lt;span class=kwrd&gt;AND&lt;/span&gt; table_schema = &lt;span class=str&gt;'dbo'&lt;/span&gt; &lt;span class=kwrd&gt;AND&lt;/span&gt; column_name
= &lt;span class=str&gt;'FavoriteColorId'&lt;/span&gt; ) &lt;span class=kwrd&gt;BEGIN&lt;/span&gt; &lt;span class=kwrd&gt;ALTER&lt;/span&gt; &lt;span class=kwrd&gt;TABLE&lt;/span&gt; [dbo].[Customer] &lt;span class=kwrd&gt;ADD&lt;/span&gt; FavoriteColorId
int &lt;span class=kwrd&gt;END&lt;/span&gt; &lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p class=clear&gt;
This script basically checks for the existence of the &lt;code&gt;FavoriteColorId&lt;/code&gt; column
on the table &lt;code&gt;Customer&lt;/code&gt; and if it doesn’t exist, it adds it. You can run
this script a million times, and it will only make the schema change once. 
&lt;/p&gt;
&lt;p&gt;
You’ll notice that I didn’t query against the system tables, instead choosing to lookup
the information in an INFORMATION_SCHEMA view named &lt;em&gt;Columns&lt;/em&gt;. This is the
Microsoft recommendation as they reserve the right to change the system tables at
any time. The information views are part of the SQL-92 standard, so they are not likely
to change. 
&lt;/p&gt;
&lt;p&gt;
There are 20 schema views in all, listed below with their purpose (aggregated from
SQL Books). Note that in all cases, only data accessible to the user executing the
query against the information_schema views is returned. 
&lt;/p&gt;
&lt;p&gt;
&lt;table class=highlightTable&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;
Name&lt;/th&gt;
&lt;th&gt;
Returns&lt;/th&gt;
&lt;/tr&gt;
&lt;tr class=alt&gt;
&lt;td&gt;
&lt;font size=2&gt;CHECK_CONSTRAINTS&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;Check Constraints&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;font size=2&gt;COLUMN_DOMAIN_USAGE&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;Every column that has a user-defined data type.&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=alt&gt;
&lt;td&gt;
&lt;font size=2&gt;COLUMN_PRIVILEGES&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;Every column with a privilege granted to or by the current user in the
current database.&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;font size=2&gt;COLUMNS&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;Lists every column in the system&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=alt&gt;
&lt;td&gt;
&lt;font size=2&gt;CONSTRAINT_COLUMN_USAGE&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;Every column that has a constraint defined on it.&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;font size=2&gt;CONSTRAINT_TABLE_USAGE&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;Every table that has a constraint defined on it.&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=alt&gt;
&lt;td&gt;
&lt;font size=2&gt;DOMAIN_CONSTRAINTS&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;Every user-defined data type with a rule bound to it.&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;font size=2&gt;DOMAINS&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;Every user-defined data type.&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=alt&gt;
&lt;td&gt;
&lt;font size=2&gt;KEY_COLUMN_USAGE&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;Every column that is constrained as a key&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;font size=2&gt;PARAMETERS&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;Every parameter for every user-defined function or stored procedure in
the datbase. For functions this returns one row with return value information.&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=alt&gt;
&lt;td&gt;
&lt;font size=2&gt;REFERENTIAL_CONSTRAINTS&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;Every foreign constraint in the system.&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;font size=2&gt;ROUTINE_COLUMNS&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;Every column returned by table-valued functions.&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=alt&gt;
&lt;td&gt;
&lt;font size=2&gt;ROUTINES&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;Every stored procedure and function in the database.&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;font size=2&gt;SCHEMATA&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;Every database in the system.&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=alt&gt;
&lt;td&gt;
&lt;font size=2&gt;TABLE_CONSTRAINTS&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;Every table constraint.&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;font size=2&gt;TABLE_PRIVILEGES&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;Every table privilege granted to or by the current user.&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=alt&gt;
&lt;td&gt;
&lt;font size=2&gt;TABLES&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;Every table in the system.&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;font size=2&gt;VIEW_COLUMN_USAGE&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;Every column used in a view definition.&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=alt&gt;
&lt;td&gt;
&lt;font size=2&gt;VIEW_TABLE_USAGE&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;Every table used in a view definition.&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;font size=2&gt;VIEWS&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;Every View&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p&gt;
When selecting rows from these views, the table must be prefixed with &lt;em&gt;information_schema&lt;/em&gt; as
in &lt;em&gt;SELECT * FROM information_schema.tables&lt;/em&gt;. 
&lt;/p&gt;
&lt;p&gt;
Please note that the information schema views are based on a SQL-92 standard so some
of the terms used in these views are different than the terms in Microsoft SQL Server.
For example, in the example above, I set &lt;code&gt;table_schema = 'dbo'&lt;/code&gt;. The term &lt;em&gt;schema&lt;/em&gt; refers
to the owner of the database object. 
&lt;/p&gt;
&lt;p&gt;
Here is another code example in which I add a constraint to the &lt;code&gt;Customer&lt;/code&gt; table. 
&lt;/p&gt;
&lt;div class="dropshadow code"&gt;
&lt;div class=innerbox&gt;&lt;pre class=csharpcode&gt;&lt;span class=kwrd&gt;IF&lt;/span&gt; &lt;span class=kwrd&gt;NOT&lt;/span&gt; &lt;span class=kwrd&gt;EXISTS&lt;/span&gt;( &lt;span class=kwrd&gt;SELECT&lt;/span&gt; * &lt;span class=kwrd&gt;FROM&lt;/span&gt; [information_schema].[referential_constraints] &lt;span class=kwrd&gt;WHERE&lt;/span&gt; constraint_name
= &lt;span class=str&gt;'FK_Customer_Color'&lt;/span&gt; &lt;span class=kwrd&gt;AND&lt;/span&gt; constraint_schema
= &lt;span class=str&gt;'dbo'&lt;/span&gt; ) &lt;span class=kwrd&gt;BEGIN&lt;/span&gt; &lt;span class=kwrd&gt;ALTER&lt;/span&gt; &lt;span class=kwrd&gt;TABLE&lt;/span&gt; dbo.Customer &lt;span class=kwrd&gt;WITH&lt;/span&gt; &lt;span class=kwrd&gt;NOCHECK&lt;/span&gt; &lt;span class=kwrd&gt;ADD&lt;/span&gt; &lt;span class=kwrd&gt;CONSTRAINT&lt;/span&gt; FK_Customer_Color &lt;span class=kwrd&gt;FOREIGN&lt;/span&gt; &lt;span class=kwrd&gt;KEY&lt;/span&gt; (
FavoriteColorId ) &lt;span class=kwrd&gt;REFERENCES&lt;/span&gt; dbo.Color ( Id ) END&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p class=clear&gt;
I generally don’t go to all this trouble for stored procedures, user defined functions,
and views. In those cases I will use Enterprise manager generate a full drop and create
script. When a stored procedure is dropped and re-created, you don’t lose data as
you would if you dropped and re-created a table that contained some data. 
&lt;/p&gt;
&lt;p&gt;
With this approach in hand, I can run an update script with new schema changes confident
that I any changes in the script that I have already applied will not be applied again.
The same approach works for lookup data as well. Simply check for the data’s existence
before inserting the data. It is a little bit more work up front, but it is worth
the trouble and schema changes happen less frequently than code or stored procedure
changes.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=634476ba-1862-4d92-ae7c-be6119f19b25" /&gt;</description>
      <comments>http://www.spotgnome.com/CommentView,guid,634476ba-1862-4d92-ae7c-be6119f19b25.aspx</comments>
      <category>Programming</category>
      <category>SQL</category>
    </item>
    <item>
      <trackback:ping>http://www.spotgnome.com/Trackback.aspx?guid=629332a1-75da-4d40-8890-3c8568012089</trackback:ping>
      <pingback:server>http://www.spotgnome.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.spotgnome.com/PermaLink,guid,629332a1-75da-4d40-8890-3c8568012089.aspx</pingback:target>
      <dc:creator>Guy Levin</dc:creator>
      <wfw:comment>http://www.spotgnome.com/CommentView,guid,629332a1-75da-4d40-8890-3c8568012089.aspx</wfw:comment>
      <wfw:commentRss>http://www.spotgnome.com/SyndicationService.asmx/GetEntryCommentsRss?guid=629332a1-75da-4d40-8890-3c8568012089</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Some developers love working with relational databases, and other developers can't
stand to touch them. Either way - if your application uses a database, you have to
treat the database with some respect. The database is as much a part of an application
as the code and the models inside the software. 
</p>
        <p>
Here are three rules I've learned to live by over the years of working with relational
databases.<strong><br /></strong></p>
        <blockquote>
          <p>
            <strong>1. Never use a shared database server for development work. </strong>
          </p>
        </blockquote>
        <p>
          <img alt="Fossil!" src="http://www.odetocode.com/aimages/200801/013008_2309_ThreeRulesf1.jpg" align="right" />The
convenience of a shared database is tempting. All developers point their workstations
to a single database server where they can test and make schema changes. The shared
server functions as an authoritative source for the database schema, and schema changes
appear immediately to all team members. The shared database also serves as a central
repository for test data. 
</p>
        <p>
Like many conveniences in software development, a shared database is a tar pit waiting
to fossilize a project. Developers overwrite each other's changes. The changes I make
on the server break the code on your development machine. Remote development is slow
and difficult. 
</p>
        <p>
Avoid using a shared database at all costs, as they ultimately waste time and help
produce bugs.<strong><br /></strong></p>
        <blockquote>
          <p>
            <strong>2. Always Have a Single, Authoritative Source For Your Schema </strong>
          </p>
        </blockquote>
        <p>
Ideally, this single source will be your source control repository (see rule #3).
Consider the following conversation: 
</p>
        <p style="MARGIN-LEFT: 36pt">
Developer 1: It's time to push the app into testing. Do we copy the database from
Jack's machine, or Jill's machine? 
</p>
        <p style="MARGIN-LEFT: 36pt">
Developer 2: Ummmmmmmm, I don't remember which one is up to date. 
</p>
        <p style="MARGIN-LEFT: 36pt">
Developer 1: We're screwed. 
</p>
        <p>
Everyone should know where the official schema resides, <em>and</em> have a frictionless
experience in getting a fresh database setup. I should be able to walk up to a computer,
get the latest from source control, build, and run a simple tool to setup the database
(in many scenarios, the build process can even setup a database if none exists, so
the process is one step shorter). 
</p>
        <p>
        </p>
        <p>
          <em>How</em> you put your database into source control depends on your situation and
preferences. Any decent O/R mapping tool should be able to create a database given
the mappings you've defined in a project. You can also script out the database as
a set of one or more files full of SQL DDL commands. I generally prefer to keep database
views and programmatic features (including functions, triggers, and stored procedures)
as separate files - but more on this in a later post. 
<br /></p>
        <p>
        </p>
        <p>
There are plenty of tools to help. <a href="http://secretgeek.net/dbcontrol.asp">Leon
Bambrick has a long list</a> (albeit one year old list) of tools and articles that
can help, while Jeff Atwood <a href="http://www.codinghorror.com/blog/archives/000743.html">gushes
over the virtues</a> of Visual Studio for Database Professionals.<strong><br /></strong></p>
        <p>
          <strong>3. Always Version Your Database </strong>
        </p>
        <p>
        </p>
        <p>
There are many ways to version databases, but the common goal is to propagate changes
from development, to test, and ultimately to production in a controlled and consistent
manner. A second goal is to have the ability to recreate a database at any point in
time. This second goal is particularly important if you are shipping software to clients.
If someone finds a bug in build 20070612.1 of your application, you must be able to
recreate the application as it appeared in that build - database and all. 
</p>
        <p>
In a future post, I'll describe an approach I've used for database versioning that
has worked well for many years of commercial development. 
</p>
        <p>
In the meantime, if you are looking for more database rule, then Adam Cogan and SSW
maintain an <a href="http://www.ssw.com.au/ssw/Standards/Rules/RulesToBetterSQLServerDatabases.aspx"><em>excellent
list</em></a>. 
</p>
        <img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=629332a1-75da-4d40-8890-3c8568012089" />
      </body>
      <title>Three Rules For Database Work</title>
      <guid isPermaLink="false">http://www.spotgnome.com/PermaLink,guid,629332a1-75da-4d40-8890-3c8568012089.aspx</guid>
      <link>http://www.spotgnome.com/2008/02/05/ThreeRulesForDatabaseWork.aspx</link>
      <pubDate>Tue, 05 Feb 2008 09:35:24 GMT</pubDate>
      <description>&lt;p&gt;
Some developers love working with relational databases, and other developers can't
stand to touch them. Either way - if your application uses a database, you have to
treat the database with some respect. The database is as much a part of an application
as the code and the models inside the software. 
&lt;/p&gt;
&lt;p&gt;
Here are three rules I've learned to live by over the years of working with relational
databases.&lt;strong&gt;
&lt;br&gt;
&lt;/strong&gt;
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;strong&gt;1. Never use a shared database server for development work. &lt;/strong&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
&lt;img alt=Fossil! src="http://www.odetocode.com/aimages/200801/013008_2309_ThreeRulesf1.jpg" align=right&gt;The
convenience of a shared database is tempting. All developers point their workstations
to a single database server where they can test and make schema changes. The shared
server functions as an authoritative source for the database schema, and schema changes
appear immediately to all team members. The shared database also serves as a central
repository for test data. 
&lt;/p&gt;
&lt;p&gt;
Like many conveniences in software development, a shared database is a tar pit waiting
to fossilize a project. Developers overwrite each other's changes. The changes I make
on the server break the code on your development machine. Remote development is slow
and difficult. 
&lt;/p&gt;
&lt;p&gt;
Avoid using a shared database at all costs, as they ultimately waste time and help
produce bugs.&lt;strong&gt;
&lt;br&gt;
&lt;/strong&gt;
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;strong&gt;2. Always Have a Single, Authoritative Source For Your Schema &lt;/strong&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Ideally, this single source will be your source control repository (see rule #3).
Consider the following conversation: 
&lt;/p&gt;
&lt;p style="MARGIN-LEFT: 36pt"&gt;
Developer 1: It's time to push the app into testing. Do we copy the database from
Jack's machine, or Jill's machine? 
&lt;/p&gt;
&lt;p style="MARGIN-LEFT: 36pt"&gt;
Developer 2: Ummmmmmmm, I don't remember which one is up to date. 
&lt;/p&gt;
&lt;p style="MARGIN-LEFT: 36pt"&gt;
Developer 1: We're screwed. 
&lt;/p&gt;
&lt;p&gt;
Everyone should know where the official schema resides, &lt;em&gt;and&lt;/em&gt; have a frictionless
experience in getting a fresh database setup. I should be able to walk up to a computer,
get the latest from source control, build, and run a simple tool to setup the database
(in many scenarios, the build process can even setup a database if none exists, so
the process is one step shorter). 
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;How&lt;/em&gt; you put your database into source control depends on your situation and
preferences. Any decent O/R mapping tool should be able to create a database given
the mappings you've defined in a project. You can also script out the database as
a set of one or more files full of SQL DDL commands. I generally prefer to keep database
views and programmatic features (including functions, triggers, and stored procedures)
as separate files - but more on this in a later post. 
&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
There are plenty of tools to help. &lt;a href="http://secretgeek.net/dbcontrol.asp"&gt;Leon
Bambrick has a long list&lt;/a&gt; (albeit one year old list) of tools and articles that
can help, while Jeff Atwood &lt;a href="http://www.codinghorror.com/blog/archives/000743.html"&gt;gushes
over the virtues&lt;/a&gt; of Visual Studio for Database Professionals.&lt;strong&gt;
&lt;br&gt;
&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;3. Always Version Your Database &lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
There are many ways to version databases, but the common goal is to propagate changes
from development, to test, and ultimately to production in a controlled and consistent
manner. A second goal is to have the ability to recreate a database at any point in
time. This second goal is particularly important if you are shipping software to clients.
If someone finds a bug in build 20070612.1 of your application, you must be able to
recreate the application as it appeared in that build - database and all. 
&lt;/p&gt;
&lt;p&gt;
In a future post, I'll describe an approach I've used for database versioning that
has worked well for many years of commercial development. 
&lt;/p&gt;
&lt;p&gt;
In the meantime, if you are looking for more database rule, then Adam Cogan and SSW
maintain an &lt;a href="http://www.ssw.com.au/ssw/Standards/Rules/RulesToBetterSQLServerDatabases.aspx"&gt;&lt;em&gt;excellent
list&lt;/em&gt;&lt;/a&gt;. 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=629332a1-75da-4d40-8890-3c8568012089" /&gt;</description>
      <comments>http://www.spotgnome.com/CommentView,guid,629332a1-75da-4d40-8890-3c8568012089.aspx</comments>
      <category>Programming</category>
      <category>SQL</category>
    </item>
    <item>
      <trackback:ping>http://www.spotgnome.com/Trackback.aspx?guid=6f63986e-d357-4b5f-83e1-23ac986c1e98</trackback:ping>
      <pingback:server>http://www.spotgnome.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.spotgnome.com/PermaLink,guid,6f63986e-d357-4b5f-83e1-23ac986c1e98.aspx</pingback:target>
      <dc:creator>Guy Levin</dc:creator>
      <wfw:comment>http://www.spotgnome.com/CommentView,guid,6f63986e-d357-4b5f-83e1-23ac986c1e98.aspx</wfw:comment>
      <wfw:commentRss>http://www.spotgnome.com/SyndicationService.asmx/GetEntryCommentsRss?guid=6f63986e-d357-4b5f-83e1-23ac986c1e98</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I'm sure everyone's tired of hearing about C# 3.0 features like lambda expressions,
extension methods, anonymous types and so on.  Before you fall in love with the
new features, there are a few oldies-but-goodies that revolve around the "?" character. 
I use a couple of these to stump interviewees who proclaim themselves to be C# experts. 
These question marks can provide a much cleaner, terser syntax for some fairly common
C# usage patterns.
</p>
        <h3>Conditional operator
</h3>
        <p>
This one can be easy to abuse, but it provides a nice terseness to code that has conditional
assignments:
</p>
        <pre class="code">
          <span style="COLOR: blue">if </span>(hoursTraveled &gt; 0) speed
= distanceInMiles / hoursTraveled; <span style="COLOR: blue">else </span>speed = 0; </pre>
        <a href="http://11011.net/software/vspaste">
        </a>
        <p>
I'm trying to calculate speed, but clearly I don't want to get DivideByZeroException. 
Sometimes these types of assignments can add up, so I like to condense them down with
the <a href="http://msdn2.microsoft.com/en-us/library/aa691313(VS.71).aspx">C# conditional
operator</a>:
</p>
        <pre class="code">speed = hoursTraveled &gt; 0 ? distanceInMiles / hoursTraveled : 0;
</pre>
        <a href="http://11011.net/software/vspaste">
        </a>
        <p>
Now the conditional assignment can be written on a single line.
</p>
        <p>
I don't see this feature used very often, so there is a tradeoff in familiarity. 
If the conditional or assignment statements grow too large, it can start to hurt readability,
so just use your best judgement on this one.
</p>
        <h3>Nullable types
</h3>
        <p>
The release of the .NET Framework 2.0 brought along a little struct type that solved
a whole heap of problems.  Value types (<a href="http://msdn2.microsoft.com/en-us/library/ah19swz4.aspx">structs</a>)
can be used to represent types that don't care about referential identity.  For
example, if I have the number 2, and you have the number 2, they're the same number
no matter how many times we create it.
</p>
        <p>
Value types have another interesting aspect, they can never have a null value. 
The details behind this are exciting if you like things Jeffrey Richter style, full
of heap and stack knowledge, but in the end you just need to know that C# structs
can never be null.  This line does not compile:
</p>
        <pre class="code">
          <span style="COLOR: blue">int </span>i = <span style="COLOR: blue">null</span>;</pre>
        <a href="http://11011.net/software/vspaste">
        </a>
        <p>
But not every system in the world that deals with "int" recognizes this rule. 
Databases and XML schemas are two examples where "int" values can be null.  To
handle the impedance mismatch of real-world nulls and CLR-land value types, the Nullable&lt;T&gt;
generic value type was introduced.  By declaring a variable to be Nullable&lt;int&gt;,
I can now do this:
</p>
        <pre class="code">
          <span style="COLOR: #2b91af">Nullable</span>&lt;<span style="COLOR: blue">int</span>&gt;
i; i = <span style="COLOR: blue">null</span>; <span style="COLOR: #2b91af">Assert</span>.That(i.HasValue, <span style="COLOR: #2b91af">Is</span>.False);
i = 3; <span style="COLOR: #2b91af">Assert</span>.That(i.HasValue, <span style="COLOR: #2b91af">Is</span>.True); <span style="COLOR: #2b91af">Assert</span>.That(i.Value, <span style="COLOR: #2b91af">Is</span>.EqualTo(3)); <span style="COLOR: #2b91af">Assert</span>.That(i, <span style="COLOR: #2b91af">Is</span>.EqualTo(3)); </pre>
        <a href="http://11011.net/software/vspaste">
        </a>
        <p>
Note that I have no problems assigning int values to the Nullable&lt;int&gt; type,
as the <a href="http://lostechies.com/blogs/jimmy_bogard/archive/2007/12/03/dealing-with-primitive-obsession.aspx">appropriate
cast operators</a> have been defined.  Declaring a nullable type is fairly ugly
using the full generic notation, so C# has a nice shortcut:
</p>
        <pre class="code">
          <span style="COLOR: blue">int</span>? i; i = <span style="COLOR: blue">null</span>; </pre>
        <a href="http://11011.net/software/vspaste">
        </a>
        <p>
There's our friend the question mark.  It's telling us "I think this variable
is an int, but I'm not sure?".  This is just another compiler trick C# uses,
just like extension methods.  At compile time, "int?" is replaced with "Nullable&lt;int&gt;",
so it's really just a shorthand way of expressing nullable types.
</p>
        <p>
Before nullable types, I had to use a bunch of dirty tricks to represent nulls in
my entities, usually with magic numbers and values like "Double.NaN" or "DateTime.MinValue". 
Nullable types let me bridge the gap between the nullable and non-nullable worlds.
</p>
        <h3>Null coalescing operator
</h3>
        <p>
This is the one I love to stump the self-proclaimed experts with.  I draw this
on the whiteboard:
</p>
        <p>
??
</p>
        <p>
And ask them, "what does this operator do in C#?"  Usually I get the crickets,
but the special few can tell me about the <a href="http://msdn2.microsoft.com/en-us/library/ms173224.aspx">null
coalescing operator</a>.  The null coalescing operator is very similar to the
conditional operator, but with the conditional built-in.  I find myself doing
this quite a lot with nulls:
</p>
        <pre class="code">
          <span style="COLOR: blue">if </span>(category.Description == <span style="COLOR: blue">null</span>)
output = <span style="COLOR: #a31515">"&lt;Empty&gt;"</span>; <span style="COLOR: blue">else </span>output
= category.Description; </pre>
        <a href="http://11011.net/software/vspaste">
        </a>
        <p>
I have a value that could potentially be null, in this case the description of a category,
but I need to output that value to a friendly format.  Unfortunately, nulls aren't
always too friendly to end-users.  Let's try the conditional operator to see
how that cleans things up:
</p>
        <pre class="code">output = category.Description != <span style="COLOR: blue">null </span>?
category.Description : <span style="COLOR: #a31515">"&lt;Empty&gt;"</span>; </pre>
        <a href="http://11011.net/software/vspaste">
        </a>
        <p>
But these conditionals can get ugly, so I can use the "??" operator to provide an
even terser syntax:
</p>
        <pre class="code">output = category.Description ?? <span style="COLOR: #a31515">"&lt;Empty&gt;"</span>; </pre>
        <a href="http://11011.net/software/vspaste">
        </a>
        <p>
All of these representations are equivalent, but I like the short and sweet syntax
the "??" operator provides.  Someone not familiar with this operator might not
have any clue what the code does, so there is some level of risk involved.
</p>
        <p>
But I generally don't like to let a lack of knowledge with a built-in language feature
deter me from using it, especially if it can provide a much cleaner syntax.
</p>
        <h3>And as always...
</h3>
        <p>
If the syntax and usage these little question marks provide don't provide better readability
(solubility?), then don't put them in.  These features are there to help, not
to satisfy technical fetishes.  As always, keep in mind that your end goal is
better readability and better maintainability, not a checklist of features used.
</p>
        <img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=6f63986e-d357-4b5f-83e1-23ac986c1e98" />
      </body>
      <title>Some C# Obscurities</title>
      <guid isPermaLink="false">http://www.spotgnome.com/PermaLink,guid,6f63986e-d357-4b5f-83e1-23ac986c1e98.aspx</guid>
      <link>http://www.spotgnome.com/2008/02/03/SomeCObscurities.aspx</link>
      <pubDate>Sun, 03 Feb 2008 09:29:34 GMT</pubDate>
      <description>&lt;p&gt;
I'm sure everyone's tired of hearing about C# 3.0 features like lambda expressions,
extension methods, anonymous types and so on.&amp;nbsp; Before you fall in love with the
new features, there are a few oldies-but-goodies that revolve around the "?" character.&amp;nbsp;
I use a couple of these to stump interviewees who proclaim themselves to be C# experts.&amp;nbsp;
These question marks can provide a much cleaner, terser syntax for some fairly common
C# usage patterns.
&lt;/p&gt;
&lt;h3&gt;Conditional operator
&lt;/h3&gt;
&lt;p&gt;
This one can be easy to abuse, but it provides a nice terseness to code that has conditional
assignments:
&lt;/p&gt;
&lt;pre class=code&gt;&lt;span style="COLOR: blue"&gt;if &lt;/span&gt;(hoursTraveled &amp;gt; 0) speed =
distanceInMiles / hoursTraveled; &lt;span style="COLOR: blue"&gt;else &lt;/span&gt;speed = 0; &lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt; 
&lt;p&gt;
I'm trying to calculate speed, but clearly I don't want to get DivideByZeroException.&amp;nbsp;
Sometimes these types of assignments can add up, so I like to condense them down with
the &lt;a href="http://msdn2.microsoft.com/en-us/library/aa691313(VS.71).aspx"&gt;C# conditional
operator&lt;/a&gt;:
&lt;/p&gt;
&lt;pre class=code&gt;speed = hoursTraveled &amp;gt; 0 ? distanceInMiles / hoursTraveled : 0;
&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt; 
&lt;p&gt;
Now the conditional assignment can be written on a single line.
&lt;/p&gt;
&lt;p&gt;
I don't see this feature used very often, so there is a tradeoff in familiarity.&amp;nbsp;
If the conditional or assignment statements grow too large, it can start to hurt readability,
so just use your best judgement on this one.
&lt;/p&gt;
&lt;h3&gt;Nullable types
&lt;/h3&gt;
&lt;p&gt;
The release of the .NET Framework 2.0 brought along a little struct type that solved
a whole heap of problems.&amp;nbsp; Value types (&lt;a href="http://msdn2.microsoft.com/en-us/library/ah19swz4.aspx"&gt;structs&lt;/a&gt;)
can be used to represent types that don't care about referential identity.&amp;nbsp; For
example, if I have the number 2, and you have the number 2, they're the same number
no matter how many times we create it.
&lt;/p&gt;
&lt;p&gt;
Value types have another interesting aspect, they can never have a null value.&amp;nbsp;
The details behind this are exciting if you like things Jeffrey Richter style, full
of heap and stack knowledge, but in the end you just need to know that C# structs
can never be null.&amp;nbsp; This line does not compile:
&lt;/p&gt;
&lt;pre class=code&gt;&lt;span style="COLOR: blue"&gt;int &lt;/span&gt;i = &lt;span style="COLOR: blue"&gt;null&lt;/span&gt;;&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt; 
&lt;p&gt;
But not every system in the world that deals with "int" recognizes this rule.&amp;nbsp;
Databases and XML schemas are two examples where "int" values can be null.&amp;nbsp; To
handle the impedance mismatch of real-world nulls and CLR-land value types, the Nullable&amp;lt;T&amp;gt;
generic value type was introduced.&amp;nbsp; By declaring a variable to be Nullable&amp;lt;int&amp;gt;,
I can now do this:
&lt;/p&gt;
&lt;pre class=code&gt;&lt;span style="COLOR: #2b91af"&gt;Nullable&lt;/span&gt;&amp;lt;&lt;span style="COLOR: blue"&gt;int&lt;/span&gt;&amp;gt;
i; i = &lt;span style="COLOR: blue"&gt;null&lt;/span&gt;; &lt;span style="COLOR: #2b91af"&gt;Assert&lt;/span&gt;.That(i.HasValue, &lt;span style="COLOR: #2b91af"&gt;Is&lt;/span&gt;.False);
i = 3; &lt;span style="COLOR: #2b91af"&gt;Assert&lt;/span&gt;.That(i.HasValue, &lt;span style="COLOR: #2b91af"&gt;Is&lt;/span&gt;.True); &lt;span style="COLOR: #2b91af"&gt;Assert&lt;/span&gt;.That(i.Value, &lt;span style="COLOR: #2b91af"&gt;Is&lt;/span&gt;.EqualTo(3)); &lt;span style="COLOR: #2b91af"&gt;Assert&lt;/span&gt;.That(i, &lt;span style="COLOR: #2b91af"&gt;Is&lt;/span&gt;.EqualTo(3)); &lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt; 
&lt;p&gt;
Note that I have no problems assigning int values to the Nullable&amp;lt;int&amp;gt; type,
as the &lt;a href="http://lostechies.com/blogs/jimmy_bogard/archive/2007/12/03/dealing-with-primitive-obsession.aspx"&gt;appropriate
cast operators&lt;/a&gt; have been defined.&amp;nbsp; Declaring a nullable type is fairly ugly
using the full generic notation, so C# has a nice shortcut:
&lt;/p&gt;
&lt;pre class=code&gt;&lt;span style="COLOR: blue"&gt;int&lt;/span&gt;? i; i = &lt;span style="COLOR: blue"&gt;null&lt;/span&gt;; &lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt; 
&lt;p&gt;
There's our friend the question mark.&amp;nbsp; It's telling us "I think this variable
is an int, but I'm not sure?".&amp;nbsp; This is just another compiler trick C# uses,
just like extension methods.&amp;nbsp; At compile time, "int?" is replaced with "Nullable&amp;lt;int&amp;gt;",
so it's really just a shorthand way of expressing nullable types.
&lt;/p&gt;
&lt;p&gt;
Before nullable types, I had to use a bunch of dirty tricks to represent nulls in
my entities, usually with magic numbers and values like "Double.NaN" or "DateTime.MinValue".&amp;nbsp;
Nullable types let me bridge the gap between the nullable and non-nullable worlds.
&lt;/p&gt;
&lt;h3&gt;Null coalescing operator
&lt;/h3&gt;
&lt;p&gt;
This is the one I love to stump the self-proclaimed experts with.&amp;nbsp; I draw this
on the whiteboard:
&lt;/p&gt;
&lt;p&gt;
??
&lt;/p&gt;
&lt;p&gt;
And ask them, "what does this operator do in C#?"&amp;nbsp; Usually I get the crickets,
but the special few can tell me about the &lt;a href="http://msdn2.microsoft.com/en-us/library/ms173224.aspx"&gt;null
coalescing operator&lt;/a&gt;.&amp;nbsp; The null coalescing operator is very similar to the
conditional operator, but with the conditional built-in.&amp;nbsp; I find myself doing
this quite a lot with nulls:
&lt;/p&gt;
&lt;pre class=code&gt;&lt;span style="COLOR: blue"&gt;if &lt;/span&gt;(category.Description == &lt;span style="COLOR: blue"&gt;null&lt;/span&gt;)
output = &lt;span style="COLOR: #a31515"&gt;"&amp;lt;Empty&amp;gt;"&lt;/span&gt;; &lt;span style="COLOR: blue"&gt;else &lt;/span&gt;output
= category.Description; &lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt; 
&lt;p&gt;
I have a value that could potentially be null, in this case the description of a category,
but I need to output that value to a friendly format.&amp;nbsp; Unfortunately, nulls aren't
always too friendly to end-users.&amp;nbsp; Let's try the conditional operator to see
how that cleans things up:
&lt;/p&gt;
&lt;pre class=code&gt;output = category.Description != &lt;span style="COLOR: blue"&gt;null &lt;/span&gt;?
category.Description : &lt;span style="COLOR: #a31515"&gt;"&amp;lt;Empty&amp;gt;"&lt;/span&gt;; &lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt; 
&lt;p&gt;
But these conditionals can get ugly, so I can use the "??" operator to provide an
even terser syntax:
&lt;/p&gt;
&lt;pre class=code&gt;output = category.Description ?? &lt;span style="COLOR: #a31515"&gt;"&amp;lt;Empty&amp;gt;"&lt;/span&gt;; &lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt; 
&lt;p&gt;
All of these representations are equivalent, but I like the short and sweet syntax
the "??" operator provides.&amp;nbsp; Someone not familiar with this operator might not
have any clue what the code does, so there is some level of risk involved.
&lt;/p&gt;
&lt;p&gt;
But I generally don't like to let a lack of knowledge with a built-in language feature
deter me from using it, especially if it can provide a much cleaner syntax.
&lt;/p&gt;
&lt;h3&gt;And as always...
&lt;/h3&gt;
&lt;p&gt;
If the syntax and usage these little question marks provide don't provide better readability
(solubility?), then don't put them in.&amp;nbsp; These features are there to help, not
to satisfy technical fetishes.&amp;nbsp; As always, keep in mind that your end goal is
better readability and better maintainability, not a checklist of features used.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=6f63986e-d357-4b5f-83e1-23ac986c1e98" /&gt;</description>
      <comments>http://www.spotgnome.com/CommentView,guid,6f63986e-d357-4b5f-83e1-23ac986c1e98.aspx</comments>
      <category>Programming</category>
      <category>Visual Studio</category>
    </item>
    <item>
      <trackback:ping>http://www.spotgnome.com/Trackback.aspx?guid=f10027ea-aac9-4385-b465-e826446f9ac2</trackback:ping>
      <pingback:server>http://www.spotgnome.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.spotgnome.com/PermaLink,guid,f10027ea-aac9-4385-b465-e826446f9ac2.aspx</pingback:target>
      <dc:creator>Guy Levin</dc:creator>
      <wfw:comment>http://www.spotgnome.com/CommentView,guid,f10027ea-aac9-4385-b465-e826446f9ac2.aspx</wfw:comment>
      <wfw:commentRss>http://www.spotgnome.com/SyndicationService.asmx/GetEntryCommentsRss?guid=f10027ea-aac9-4385-b465-e826446f9ac2</wfw:commentRss>
      <title>A Study Of Ajax Performance Issues </title>
      <guid isPermaLink="false">http://www.spotgnome.com/PermaLink,guid,f10027ea-aac9-4385-b465-e826446f9ac2.aspx</guid>
      <link>http://www.spotgnome.com/2008/01/24/AStudyOfAjaxPerformanceIssues.aspx</link>
      <pubDate>Thu, 24 Jan 2008 12:43:45 GMT</pubDate>
      <description>&lt;div class=articleBody&gt;
&lt;p&gt;
&lt;span style="FONT-WEIGHT: bold"&gt;Introduction: &lt;/span&gt;
&lt;br&gt;
Ajax application performance largely depends on the performance of JavaScript execution
and browser DOM operations. I've heard various people saying various things about
Ajax performance. Some people say JavaScript is just too slow. Some people say that
the problem is not JavaScript but rather Browser DOM being too slow. Some people would
then argue that browser DOM operations are fine. The problem is Internet Explorer
that is unbelievably slow.&amp;nbsp; 
&lt;br&gt;
&amp;nbsp;&lt;br&gt;
What is the reality? Having heard enough but haven’t seen enough data to clearly justify
one argument against the other ones, I decided to take some time and do some study
in this area.&lt;br&gt;
&lt;br&gt;
&lt;span style="FONT-WEIGHT: bold"&gt;The Study: &lt;/span&gt;
&lt;br&gt;
Using the work produced by Robert Buffone at http://www.rockstarapps.com and a 2GB
RAM/1.66GHz Dual CPU Windows XP machine, a JavaScript performance study is conducted.
The results are shown in &lt;span style="FONT-WEIGHT: bold"&gt;Appendix 1&lt;/span&gt;:&lt;br&gt;
1.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Vertically, in each column, Appendix 1 shows how
a particular operation performs in comparison to other operations on the same browser.
Using an empty function call as the “base” for comparison, Appendix 1 shows the comparative
percentage of time that other operations consume relative to that of the base operation.
Note that for each browser, the time that most operations take is comparable to that
of an empty function call. However, certain operations are significantly more expensive,
some times even a few million percent more expensive, than the base empty function
call; 
&lt;br&gt;
2.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Horizontally, on each row, Appendix 1 shows how different
browsers perform with regard to the same operation. Safari typically outperforms FireFox
and FireFox outperforms Internet Explorer. However, there are exceptions that Internet
Explorer outperforms other browsers.&amp;nbsp; 
&lt;br&gt;
&lt;br&gt;
&lt;span style="FONT-WEIGHT: bold"&gt;What Are The Ajax Performance Issues?&lt;/span&gt;
&lt;br&gt;
What are noteworthy from the study are: 
&lt;br&gt;
a)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; JavaScript performance can be greatly enhanced via
better implementations, without API change or new standard. In the above comparison,
Safari generally beats Internet Explorer by a few hundred percent or even more in
terms of performance, which is fairly dramatic. 
&lt;br&gt;
b)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Internet Explorer really needs to enhance its JavaScript
runtime performance to make it on par with other browsers. The significantly lower
performance and the significant market share of Internet Explorer together create
a major challenge for Ajax performance. 
&lt;br&gt;
c)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; That being said, other browsers also have performance
bottlenecks. 
&lt;br&gt;
&lt;br&gt;
More specifically, here is a list of Ajax performance issues:&lt;br&gt;
1.&amp;nbsp;&amp;nbsp;&amp;nbsp; Array performance on all browsers in general&lt;br&gt;
2.&amp;nbsp;&amp;nbsp;&amp;nbsp; HTML DOM performance in general&lt;br&gt;
3.&amp;nbsp;&amp;nbsp;&amp;nbsp; Calculating Computed Box Model and Style&lt;br&gt;
4.&amp;nbsp;&amp;nbsp;&amp;nbsp; FireFox: “eval”, Object Creation and “in” Operation&lt;br&gt;
5.&amp;nbsp;&amp;nbsp;&amp;nbsp; “String” Manipulation Performance on IE&lt;br&gt;
6.&amp;nbsp;&amp;nbsp;&amp;nbsp; Safari: “pop” Operation Performance&lt;br&gt;
&lt;br&gt;
&lt;span style="FONT-WEIGHT: bold"&gt;1.&amp;nbsp;&amp;nbsp;&amp;nbsp; “Array” Is Slow on All Browsers&lt;/span&gt;
&lt;br&gt;
Array-related operations are expensive for all browsers. Comparing to other operations,
the same browser takes considerable more time for array-related operations. The differences
can be a few orders of magnitude some times. Specifically:&lt;br&gt;
1.&amp;nbsp;&amp;nbsp;&amp;nbsp; For IE7: “pop”, “push”, “shift”, “join” etc are all very expensive
that can take ten times or even a few hundred times longer to complete than other
operations;&lt;br&gt;
2.&amp;nbsp;&amp;nbsp;&amp;nbsp; For FireFox: “pop” and “push” operations perform fairly well
in comparison to other operations (“pop” and “push” operations cost 160% of the base
operation on FireFox. On IE, they cost 532% and 3523% of the base operation respectively).
“shift” and “join” are very expensive. The operation “creating an empty array using
‘new Array()’ constructor” costs 662% of the base operation while this number is only
119% and 145% on IE and Safari. This is related to the issue that it is very expensive
for FireFox to create new objects. Other browsers do not seem to have this problem. 
&lt;br&gt;
3.&amp;nbsp;&amp;nbsp;&amp;nbsp; For Safari, “pop”, “shift” and “join” are expensive operations. 
&lt;br&gt;
&lt;br&gt;
&lt;span style="FONT-WEIGHT: bold"&gt;2.&amp;nbsp; HTML DOM Operation Performance in General&lt;/span&gt;
&lt;br&gt;
All HTML DOM related JavaScript calls are significantly more expensive than most other
operations across all browsers. On Safari, DOM calls cost from a few hundred percent
to a few thousand percent of the base operations. On Internet Explorer, the cost can
be as higher as tens of thousands of percentage. Given that DOM operation is essential
to almost every browser-based application, improvement in this area can significantly
broaden the applicability of Ajax applications. 
&lt;br&gt;
&lt;br&gt;
&lt;span style="FONT-WEIGHT: bold"&gt;3. Calculating Computed Box Model and Computed Style &lt;/span&gt;
&lt;br&gt;
Getting computed box model calculations out of IE is not for the faint of optimization.
According to a post by Alex Russell at Dojo Foundation (see reference http://alex.dojotoolkit.org/?p=644),&amp;nbsp;
when they profiled Dojo widgets for Dojo 1.0, they noted very quickly that getting
box-model data out of the browser for any element is hugely costly on every browser,
but on IE the cost was not just big… it was enormous. Our best guess right now is
that the properties on the currentStyle property are re-calculated when they’re requested
from script and not cached in the bound object when layout happens. The resulting
performance penalty requires that developers nearly never manage layout in code, severely
constraining the layouts which are attempted by toolkits like Dojo. 
&lt;br&gt;
&lt;br&gt;
&lt;span style="FONT-WEIGHT: bold"&gt;Why Is This Important? &lt;/span&gt;
&lt;br&gt;
Current browsers provide limited support for layout management. A lot web sites use
“table” for managing layout, while some others use CSS for doing layout. Though both
table and CSS are capable of serving the purpose of layout, layout support is not
a first class citizen. There is not out-of-box support for common layout managers
(such as docking, border layout). There is no layout object and there is no programmatic
API for layout management. As a result, providing better layout management has been
a task undertaken by JavaScript toolkits. Calculating the computed box model and style
is essential for JavaScript toolkits to be able to manage layout. 
&lt;br&gt;
&lt;br style="FONT-WEIGHT: bold"&gt;
&lt;span style="FONT-WEIGHT: bold"&gt;4. FireFox Specific Performance Issues&lt;/span&gt;
&lt;br&gt;
Comparing to other browsers, FireFox performs very poorly for the following operations:&lt;br&gt;
1.&amp;nbsp;&amp;nbsp;&amp;nbsp; “eval” of object or function: These two operations take Safari
9.4ns and 22.7ns, IE7 172ns and 94ns. But they take FireFox 546ns and 749ns. 
&lt;br&gt;
2.&amp;nbsp;&amp;nbsp;&amp;nbsp; Object creation: Operations like “var myObject = new MyObject
(17, 250);” and “var slowCar = {m_tireSize:17, m_maxSpeed:250};” are very expensive
on FireFox comparing to other browsers. The differences between them are: 11.7ns and
8.6ns for IE7, 3.2ns and 2.4ns for Safari, 23.4ns and 23.4ns for FireFox which are
almost 10 times more expensive than Safari and a few times more expensive than IE7. 
&lt;br&gt;
3.&amp;nbsp;&amp;nbsp;&amp;nbsp; “in” operation: Operation “looping an array through ‘in’” takes
IE 10.3ns and Safari 7.8ns, but 62.8ns for FireFox. Again, a difference of almost
10 times. 
&lt;br&gt;
&lt;br&gt;
&lt;span style="FONT-WEIGHT: bold"&gt;5. IE Specific Performance Issues&lt;/span&gt;
&lt;br&gt;
IE performs worse than FireFox and Safari in general. Beyond the areas that all browsers
have problems, String manipulation deserves particular attention for IE. 
&lt;br&gt;
&lt;br&gt;
String compares and concatenation on IE6 are super bad. According to Robert Buffone,
“I left out IE 6 for the exercise because it is so bad on everything it would just
make every JavaScript coder extremely mad”. 
&lt;br&gt;
&lt;br&gt;
IE7 has made progress on this. But it still lags behind by a few hundred percent comparing
to other browsers. 
&lt;br&gt;
&lt;br&gt;
&lt;span style="FONT-WEIGHT: bold"&gt;Why is this important? &lt;/span&gt;
&lt;br&gt;
1.&amp;nbsp;&amp;nbsp;&amp;nbsp; Every application involves String manipulation. Part of the appeal
of Ajax is the benefit of leveraging client side processing power, which naturally
leads to a lot more String manipulations on the client side;&lt;br&gt;
2.&amp;nbsp;&amp;nbsp;&amp;nbsp; As pointed out by reference (http://alex.dojotoolkit.org/?p=644),
most non-trivial blocks of JavaScript code today rely on innerHTML to bootstrap some
new chunk of DOM in response to user action due in large part to the cross-browser
speed and size advantages of innerHTML vs. raw DOM methods for equivalent DOM structures.
Because building innerHTML is essentially String manipulation, the performance of
string manipulation heavily influences the performance of Ajax applications. 
&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;
&lt;strong&gt;6. Safari Specific Performance Issues&lt;/strong&gt;
&lt;br&gt;
Safari in general performs really well comparing to other browsers. The only operation
that Safari performs significantly worse than other browsers is “pop” method. In summary,
if every browser can match Safari’s performance, it would be a significant step forward
for web development.&lt;br&gt;
&lt;br&gt;
&lt;span style="FONT-WEIGHT: bold"&gt;Where Do We Go From Here?&lt;/span&gt;
&lt;br&gt;
Obviously, we would like to see browser vendors take a serious look into the following
issues and put them on their roadmap: 
&lt;br&gt;
1.&amp;nbsp;&amp;nbsp;&amp;nbsp; In all major browsers, performance with Array and HTML DOM needs
improvement in general. 
&lt;br&gt;
2.&amp;nbsp;&amp;nbsp;&amp;nbsp; Browsers need to provide API support for Computed Box Model and
Style; 
&lt;br&gt;
3.&amp;nbsp;&amp;nbsp;&amp;nbsp; FireFox needs to improve performance of “eval”, object creation
and “in” operation&lt;br&gt;
4.&amp;nbsp;&amp;nbsp;&amp;nbsp; Internet Explorer needs to improve performance in general to
be at least on par with other browsers. Beyond that, “String” manipulation on IE needs
continued improvements;&lt;br&gt;
5.&amp;nbsp;&amp;nbsp;&amp;nbsp; Safari: “pop” operation performance needs improvement&lt;br&gt;
6.&amp;nbsp;&amp;nbsp;&amp;nbsp; Just-in-time (JIT) compiler: This maybe a bigger task than an
incremental fix of some existing features, however, it is worthy of every penny.&amp;nbsp;
JIT will not only fix the String manipulation issue, it will enable JavaScript to
truly shine in matching the performance of native applications. The amount of client
side logic (aka, JavaScript code) needs to grow in order to accommodate the growth
of application complexity, for which JavaScript runtime performance problem can be
a major bottleneck. 
&lt;br&gt;
&lt;br&gt;
But how can we get browser vendors to listen to us? 
&lt;br&gt;
&lt;br&gt;
First of all, help make some noise! The community needs to come together and your
participation is crucial in making something happen. 
&lt;br&gt;
&lt;br&gt;
Secondly, let’s look around and get some coordinated acts together. At OpenAjax Alliance
(http://www.openajax.org), we are starting a task force called “Runtime Advocacy Task
Force”. At the OpenAjax 2007 September Member Meeting, the members of OpenAjax Alliance
discussed the challenges for future Ajax growth and adoption, in particular, issues
directly related to the various Ajax runtime environments. The collective wisdom was
that OpenAjax Alliance should do something in this area to help creating a better
Ajax eco-system. The work is still in its early stage, but watch for progress over
the next month or so. 
&lt;br&gt;
&lt;h3&gt;&lt;a name=_Toc188420260&gt;Appendix 1: Browser Performance Study and Comparison&lt;/a&gt; 
&lt;/h3&gt;
&lt;p class=MsoNormal&gt;
Testing setup: 
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN-LEFT: 0.25in; TEXT-INDENT: -0.25in"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Symbol"&gt;&lt;span&gt;·&lt;span style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Windows
XP SP2,&lt;span&gt;&amp;nbsp; &lt;/span&gt;DELL Latitude D820,&lt;span&gt;&amp;nbsp; &lt;/span&gt;2GB RAM, 1.66GHz
Dual CPU
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN-LEFT: 0.25in; TEXT-INDENT: -0.25in"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Symbol"&gt;&lt;span&gt;·&lt;span style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;IE
7.0.5730.11
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN-LEFT: 0.25in; TEXT-INDENT: -0.25in"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Symbol"&gt;&lt;span&gt;·&lt;span style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;FireFox
2.0.0.11
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN-LEFT: 0.25in; TEXT-INDENT: -0.25in"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Symbol"&gt;&lt;span&gt;·&lt;span style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Safari
3.0.2 (522.13.1)
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN-LEFT: 0.25in; TEXT-INDENT: -0.25in"&gt;
&lt;span class=apple-style-span&gt;&lt;span lang=FR style="FONT-SIZE: 10pt; FONT-FAMILY: Symbol"&gt;&lt;span&gt;·&lt;span style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang=FR&gt;Application: &lt;span class=apple-style-span&gt;&lt;span style="COLOR: black"&gt;&lt;a href="http://www.rockstarapps.com/samples/performance/"&gt;http://www.rockstarapps.com/samples/performance/&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;table class=MsoNormalTable style="MARGIN-LEFT: 4.65pt; WIDTH: 439pt; BORDER-COLLAPSE: collapse" cellspacing=0 cellpadding=0 width=585 border=0&gt;
&lt;tbody&gt;
&lt;tr style="HEIGHT: 13.5pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: rgb(153,51,0) 1pt solid; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(153,204,255) 0% 50%; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 13.5pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" valign=bottom nowrap width=235&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: rgb(153,51,0) 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: rgb(153,51,0) 1pt solid; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(153,204,255) 0% 50%; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: rgb(153,51,0) 1pt solid; WIDTH: 93pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: rgb(153,51,0) 1pt solid; HEIGHT: 13.5pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" valign=bottom nowrap width=124 colspan=2&gt;
&lt;p class=MsoNormal&gt;
&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Internet Explorer 7&lt;/span&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: rgb(153,51,0) 1pt solid; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(153,204,255) 0% 50%; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 85pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: 1pt solid; HEIGHT: 13.5pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" valign=bottom nowrap width=113 colspan=2&gt;
&lt;p class=MsoNormal&gt;
&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;FireFox&lt;/span&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: rgb(153,51,0) 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: rgb(153,51,0) 1pt solid; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(153,204,255) 0% 50%; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: rgb(153,51,0) 1pt solid; WIDTH: 85pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: rgb(153,51,0) 1pt solid; HEIGHT: 13.5pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" valign=bottom nowrap width=113 colspan=2&gt;
&lt;p class=MsoNormal&gt;
&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Safari &lt;/span&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 39pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(153,204,255) 0% 50%; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: 1pt solid; HEIGHT: 39pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Description&lt;/span&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(153,204,255) 0% 50%; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: 1pt solid; HEIGHT: 39pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Time
(ns)&lt;/span&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(153,204,255) 0% 50%; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: 1pt solid; HEIGHT: 39pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;%
of base &lt;/span&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(153,204,255) 0% 50%; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 38pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: 1pt solid; HEIGHT: 39pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Time
(ns)&lt;/span&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(153,204,255) 0% 50%; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: 1pt solid; HEIGHT: 39pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;%
of base &lt;/span&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(153,204,255) 0% 50%; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: 1pt solid; HEIGHT: 39pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Time
(ns)&lt;/span&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(153,204,255) 0% 50%; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: 1pt solid; HEIGHT: 39pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;%
of base &lt;/span&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 30pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 30pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;strong&gt;&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Normal
Empty function call (Base Operation)&lt;/span&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 30pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;4.7&lt;/span&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 30pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;100%&lt;/span&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 30pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;3.9&lt;/span&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 30pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;100%&lt;/span&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 30pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;1.6&lt;/span&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 30pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;100%&lt;/span&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(204,255,255) 0% 50%; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;strong&gt;&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Basic
Function Calls&lt;/span&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(204,255,255) 0% 50%; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(204,255,255) 0% 50%; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(204,255,255) 0% 50%; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(204,255,255) 0% 50%; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(204,255,255) 0% 50%; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(204,255,255) 0% 50%; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Function
call using function.call(this)&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;5.5&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;116%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;2.4&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;60%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;1.6&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;100%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Normal
Empty function using apply&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;5.5&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;117%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;7.0&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;179%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;2.4&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;152%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 30pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 30pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Normal
Empty function using apply with 3 parameters&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 30pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;7.0&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 30pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;149%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 30pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;7.1&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 30pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;181%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 30pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;2.4&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 30pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;152%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Eval
a function &lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;172.0&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;3660%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;546.0&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;14000%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;9.4&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;603%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Eval
an object &lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;94.0&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;2000%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;749.0&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;19205%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;22.7&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;1461%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15.75pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(204,255,255) 0% 50%; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15.75pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;strong&gt;&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Basic
Operations&lt;/span&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(204,255,255) 0% 50%; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15.75pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(204,255,255) 0% 50%; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15.75pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(204,255,255) 0% 50%; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15.75pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(204,255,255) 0% 50%; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15.75pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(204,255,255) 0% 50%; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15.75pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(204,255,255) 0% 50%; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15.75pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Access
Properties through a getter&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;13.3&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;282%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;6.3&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;160%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;5.5&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;352%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Access
Properties directly&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;4.7&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;100%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;3.2&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;81%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;2.4&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;152%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;&lt;?xml:namespace prefix = o /&gt;
&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;
&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Simple
string concatenation&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;4.7&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;100%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;2.3&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;59%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;1.6&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;100%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Simple
string compare&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;3.9&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;83%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;2.4&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;60%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;0.8&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;48%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Change
string to upper case&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;11.7&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;249%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;3.9&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;100%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;4.7&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;303%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Replace
string reg expression&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;12.5&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;266%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;7.1&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;181%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;9.4&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;603%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;String
concat with integer&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;7.1&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;150%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;4.7&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;119%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;2.4&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;152%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;String
concat with float&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;6.3&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;133%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;4.7&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;121%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;2.4&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;152%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 30pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 30pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Index
of Bob in string, not found, length = 71&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 30pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;6.3&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 30pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;133%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 30pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;6.3&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 30pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;160%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 30pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;2.4&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 30pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;152%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 30pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 30pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Match
of Bob in string, not found, length = 71&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 30pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;14.9&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 30pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;316%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 30pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;25.0&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 30pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;640%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 30pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;3.9&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 30pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;252%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;charAt(10)
in string&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;11.7&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;249%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;6.3&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;160%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;3.1&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;200%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;
&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;
&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Create
object constructor initialized&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;11.7&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;249%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;23.4&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;600%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;3.2&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;203%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;create
simple object&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;8.6&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;182%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;23.4&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;600%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;2.4&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;152%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;0%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;
&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;
&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Variable
declaration&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;4.0&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;84%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;2.3&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;59%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;0.8&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;48%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Multiple
variable declaration, multiple var&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;3.9&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;83%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;2.4&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;60%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;2.4&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;152%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Multiple
variable declaration single var&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;3.9&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;83%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;2.4&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;60%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;1.6&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;100%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Variable
declaration set to null&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;3.9&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;83%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;2.4&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;60%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;1.6&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;100%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;0%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;
&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;
&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Variable
assignment++&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;4.7&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;100%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;5.5&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;140%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;1.6&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;103%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Variable
assignment + 1&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;5.5&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;116%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;7.1&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;181%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;1.6&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;100%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=235&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;
&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;
&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Four
levels of property access&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;5.5&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;116%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;5.5&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;140%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;1.6&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;100%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Three
levels of property access&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;4.7&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;100%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;4.7&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;121%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;2.4&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;152%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Two
levels of property access&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;4.7&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;100%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;4.7&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;119%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;1.6&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;100%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;One
level of property access&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;3.9&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;83%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;4.7&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;121%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;1.6&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;103%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;0%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;
&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;
&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15.75pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15.75pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Using
the typeof function&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15.75pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;3.9&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15.75pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;83%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15.75pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;4.7&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15.75pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;119%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15.75pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;1.6&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15.75pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;100%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15.75pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(204,255,255) 0% 50%; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15.75pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" nowrap width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;strong&gt;&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Array
Operations &lt;/span&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(204,255,255) 0% 50%; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15.75pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(204,255,255) 0% 50%; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15.75pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(204,255,255) 0% 50%; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15.75pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(204,255,255) 0% 50%; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15.75pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(204,255,255) 0% 50%; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15.75pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(204,255,255) 0% 50%; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15.75pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Array
access&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;7.1&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;150%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;7.0&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;179%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;1.6&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;100%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Array
index value change&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;3.9&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;83%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;4.7&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;121%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;1.6&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;103%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Empty
Array index value change&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;8.6&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;183%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;8.6&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;221%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;6.3&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;403%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Empty
Array add three values&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;10.2&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;216%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;11.7&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;300%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;3.1&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;200%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Empty
Array with set size&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;11.0&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;233%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;11.0&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;281%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;3.2&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;203%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Empty
Array using constructor&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;9.4&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;199%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;25.8&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;662%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;2.3&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;148%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;
&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;
&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Push
element onto an Array &lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;25.0&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;532%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;6.3&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;160%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;1.5&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;98%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Pop
element of an Array &lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;165.6&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;3523%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;6.3&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;160%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;249.7&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;16112%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Push
element onto an Array &lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;6.2&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;132%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;7.1&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;181%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;1.4&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;92%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Shift
elements off the front of an Array &lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;2030.0&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;43191%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;5620.0&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;144103%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;1250.0&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;80645%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Join
the array into a string &lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;125000&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;2659574%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;47000&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;1205128%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;16000&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;1032258%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Push
element onto an Array &lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;7.1&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;150%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;7.0&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;179%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;3.9&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;252%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Sorting
of an Array &lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;93.0&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;1979%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;45.3&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;1162%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;32.9&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;2119%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;
&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;
&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Math.max(7.25,7.30)&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;5.5&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;116%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;4.7&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;121%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;3.9&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;252%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15.75pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15.75pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Math.min(7.25,7.30)&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15.75pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;5.5&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15.75pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;117%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15.75pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;4.7&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15.75pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;121%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15.75pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;3.2&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15.75pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;203%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15.75pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(204,255,255) 0% 50%; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15.75pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" nowrap width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;strong&gt;&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;HTML
DOM Operations &lt;/span&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(204,255,255) 0% 50%; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15.75pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(204,255,255) 0% 50%; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15.75pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(204,255,255) 0% 50%; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15.75pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(204,255,255) 0% 50%; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15.75pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(204,255,255) 0% 50%; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15.75pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(204,255,255) 0% 50%; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15.75pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Change
text using innerHTML &lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;469.0&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;9979%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;234.0&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;6000%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;109.0&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;7032%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Create
a text node on HTML Dom&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;1093.0&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;23255%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;156.0&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;4000%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;110.0&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;7097%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Change
the class name of an element &lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;422.0&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;8979%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;47.0&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;1205%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;109.0&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;7032%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;
&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;
&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;getElementById&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;86.8&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;1846%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;15.7&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;401%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;3.9&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;252%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;getElementsByTagName("div")&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;153.1&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;3257%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;18.0&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;462%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;5.5&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;352%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;getElementsByTagName("spa")&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;142.2&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;3024%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;18.8&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;481%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;5.5&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;355%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;getElementsByName&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;93.8&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;1995%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;44.6&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;1142%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;4.7&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;303%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;
&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;
&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;placeDiv.getAttribute("id") &lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;29.7&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;632%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;46.8&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;1200%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;5.5&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;352%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;placeDiv.attributes["id"]&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;31.3&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;665%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;225.0&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;5769%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;6.3&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;403%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;var
atts = placeDiv.attributes; atts["id"].name &lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;11.7&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;249%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;18.8&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;482%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;4.7&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;303%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15.75pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15.75pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;var
atts = placeDiv.attributes; atts.id.name &lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15.75pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;12.5&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15.75pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;266%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15.75pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;18.8&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15.75pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;482%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15.75pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;3.9&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15.75pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;252%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15.75pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(204,255,255) 0% 50%; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15.75pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;strong&gt;&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Try/Catch&lt;/span&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(204,255,255) 0% 50%; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15.75pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(204,255,255) 0% 50%; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15.75pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(204,255,255) 0% 50%; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15.75pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(204,255,255) 0% 50%; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15.75pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(204,255,255) 0% 50%; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15.75pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(204,255,255) 0% 50%; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15.75pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Function
call using function.call(this)&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;7.1&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;150%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;4.0&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;101%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;2.4&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;152%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Try
catch&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;7.1&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;150%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;6.3&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;160%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;5.5&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;352%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Try
catch with throw&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;17.2&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;365%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;7.8&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;200%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;5.5&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;355%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Try
catch finally&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;9.4&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;199%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;7.8&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;200%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;4.7&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;303%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15.75pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15.75pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Try
catch finally with throw&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15.75pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;16.5&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15.75pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;350%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15.75pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;11.0&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15.75pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;281%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15.75pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;6.3&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15.75pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;403%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(204,255,255) 0% 50%; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" nowrap width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;strong&gt;&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;If
statement and Date object &lt;/span&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(204,255,255) 0% 50%; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(204,255,255) 0% 50%; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(204,255,255) 0% 50%; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(204,255,255) 0% 50%; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(204,255,255) 0% 50%; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(204,255,255) 0% 50%; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Create
a date object&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;12.5&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;266%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;10.2&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;260%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;3.1&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;200%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Create
a date object and call getDate()&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;28.1&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;598%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;50.8&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;1303%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;10.2&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;658%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=235&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;
&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;
&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;The
switch statement&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;4.7&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;99%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;2.4&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;60%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;2.4&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;152%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;An
if statement&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;4.0&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;84%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;2.4&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;60%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;2.4&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;152%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=235&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;
&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;
&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Simple
if else &lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;4.1&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;86%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;2.2&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;56%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;1.9&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;121%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;turinary
operator &lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;3.9&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;83%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;2.3&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;60%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;2.0&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;131%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=235&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;
&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;
&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Compare
of matching string ==&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;4.7&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;100%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;7.1&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;181%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;2.4&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;152%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Compare
of matching string ===&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;4.7&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;100%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;7.0&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;179%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;2.4&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;152%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Compare
of non-matching string&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;4.7&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;100%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;3.9&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;100%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;2.4&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;152%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=235&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;
&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;
&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Compare&lt;span&gt;&amp;nbsp; &lt;/span&gt;TEST_INT
== 5 &lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;4.1&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;86%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;4.2&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;108%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;1.7&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;111%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Compare&lt;span&gt;&amp;nbsp; &lt;/span&gt;5
== 5&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;4.1&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;87%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;2.0&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;52%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;1.6&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;101%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15.75pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(204,255,255) 0% 50%; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15.75pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" nowrap width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;strong&gt;&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Looping
Performance Statistics &lt;/span&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(204,255,255) 0% 50%; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15.75pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(204,255,255) 0% 50%; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15.75pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(204,255,255) 0% 50%; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15.75pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(204,255,255) 0% 50%; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15.75pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(204,255,255) 0% 50%; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15.75pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; BACKGROUND: rgb(204,255,255) 0% 50%; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15.75pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Loop
through an array using in&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;10.3&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;219%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;62.8&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;1610%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;7.8&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;503%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Loop
through an array using for (i++)&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;6.3&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;133%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;10.6&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;273%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;3.4&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;222%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 30pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 30pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Loop
through an array using for (i &amp;lt; myArray.length)&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 30pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;6.2&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 30pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;133%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 30pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;10.9&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 30pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;281%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 30pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;3.1&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 30pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;201%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 30pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 30pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Loop
through an array using for (i = 0; i &amp;lt; len; i++)&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 30pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;5.0&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 30pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;106%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 30pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;4.7&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 30pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;120%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 30pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;4.1&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 30pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;262%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 30pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 30pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Loop
through an array using for (i = 0; i &amp;lt; len; i++)&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 30pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;5.3&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 30pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;113%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 30pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;5.0&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 30pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;128%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 30pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;4.1&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 30pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;262%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" width=235&gt;
&lt;p class=MsoNormal&gt;&lt;?xml:namespace prefix = st1 /&gt;
&lt;st1:place w:st="on"&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Loop&lt;/span&gt;
&lt;/st1:place&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt; through
an array using while {i++}&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;5.3&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;113%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 38pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;5.3&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="PADDING-RIGHT: 5.75pt; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; WIDTH: 47pt; PADDING-TOP: 0.7pt; HEIGHT: 15pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;136%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;4.7&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: medium none; HEIGHT: 15pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;302%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15.75pt"&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 176pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: 1pt solid; HEIGHT: 15.75pt" width=235&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 9pt; COLOR: rgb(51,51,51); FONT-FAMILY: 'Trebuchet MS'"&gt;Loop
through an array using while (i++ &amp;lt; len)&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 46pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: 1pt solid; HEIGHT: 15.75pt" nowrap width=61&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;5.0&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: 1pt solid; HEIGHT: 15.75pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;106%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 38pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: 1pt solid; HEIGHT: 15.75pt" nowrap width=51&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;5.0&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 47pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: 1pt solid; HEIGHT: 15.75pt" nowrap width=63&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;128%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: 1pt solid; WIDTH: 35pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: 1pt solid; HEIGHT: 15.75pt" nowrap width=47&gt;
&lt;p class=MsoNormal style="TEXT-ALIGN: right" align=right&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;4.4&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.75pt; BORDER-TOP: medium none; PADDING-LEFT: 5.75pt; PADDING-BOTTOM: 0.7pt; BORDER-LEFT: medium none; WIDTH: 50pt; PADDING-TOP: 0.7pt; BORDER-BOTTOM: 1pt solid; HEIGHT: 15.75pt" nowrap width=67&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;283%&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;!-- article --&gt;
&lt;!--
&lt;div class="articlePrintLink"&gt;&lt;a href="xx"&gt;&lt;img src="/_images/print.gif" border="0" width="20" height="20" alt="Print this article"&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="xx"&gt;Print Article&lt;/a&gt;&lt;/div&gt;
--&gt;&lt;img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=f10027ea-aac9-4385-b465-e826446f9ac2" /&gt;</description>
      <comments>http://www.spotgnome.com/CommentView,guid,f10027ea-aac9-4385-b465-e826446f9ac2.aspx</comments>
      <category>AJAX</category>
      <category>Programming</category>
    </item>
    <item>
      <trackback:ping>http://www.spotgnome.com/Trackback.aspx?guid=39486f2a-10a7-4602-be8e-f58f315966de</trackback:ping>
      <pingback:server>http://www.spotgnome.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.spotgnome.com/PermaLink,guid,39486f2a-10a7-4602-be8e-f58f315966de.aspx</pingback:target>
      <dc:creator>Guy Levin</dc:creator>
      <wfw:comment>http://www.spotgnome.com/CommentView,guid,39486f2a-10a7-4602-be8e-f58f315966de.aspx</wfw:comment>
      <wfw:commentRss>http://www.spotgnome.com/SyndicationService.asmx/GetEntryCommentsRss?guid=39486f2a-10a7-4602-be8e-f58f315966de</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Redesigning a website can be a very involved process, and it is important to properly
plan and consider the necessary factors that will make or break the redesign. Here
is a quick look at 21 factors that you should be contemplated.
</p>
        <p>
          <strong>1. What is the goal of the redesign?</strong>
        </p>
        <p>
What do you hope to accomplish? It’s always important to have a clear understanding
of your reasons and motivations as they should impact the decisions that you make
along the way. Without knowing these goals the project will lack direction and you
will likely wind up with a website that still doesn’t meet your needs.
</p>
        <p>
          <strong>2. Is this going to be just a minor upgrade or a complete overhaul?</strong>
        </p>
        <p>
A redesign could be anything from a minor facelift to an entirely new site. Obviously
the time, effort, and cost involved will vary, but first you should determine what
types of changes are required for you to meet your goals with the design. If a complete
redesign is done you will also want to consider to what extent the new design should
resemble the old design. If visitors are coming back to the site, chances are you
will want them to notice the new design without feeling like they’ve never been to
your site before.
</p>
        <p>
          <strong>3. What aspects of the current design are most effective?</strong>
        </p>
        <p>
Most likely there are some things about the current design that work very well, and
these may be aspects that you would like to keep or incorporate into the new design.
It’s a good idea to make a simple list of your likes and dislikes to help with decisions
on the new design.
</p>
        <p>
          <strong>4. What aspects of the current design are not effective?</strong>
        </p>
        <p>
Building on point #3, if you are redesigning the site you are bound to want to get
rid of some specific aspects of the website or the design. Are there some characteristics
of the design that do not accurately portray your business to new visitors?
</p>
        <p>
          <strong>5. Who are your target users?</strong>
        </p>
        <p>
During any design process you never want to lose focus on the visitors. By knowing
who you are targeting and how you can meet their needs, you will be on your way to
building an effective website. What style of design are your users going to like?
</p>
        <p>
          <strong>6. How can the website be more user-friendly?</strong>
        </p>
        <p>
Improving the functionality and usability of a website is always a good thing. It’s
pointless to spend time and money on a redesign that looks great but simply isn’t <a href="http://vandelaydesign.com/blog/design/developing-user-focused-websites/">user-friendly</a>.
</p>
        <p>
          <strong>7. Does the logo/branding need to be changed or updated?</strong>
        </p>
        <p>
Most likely the website will include some form of a logo or branding. Are these items
still up-to-date and will they function effectively with a new design? If your logo
is out-of-date and not attractive, a new design may not do much good if it is still
using the same old logo.
</p>
        <p>
          <strong>8. Should the color scheme change or remain the same?</strong>
        </p>
        <p>
In point #2 I mentioned that most of the time you will want to keep the website at
least looking familiar to repeat visitors. Using a similar <a href="http://vandelaydesign.com/blog/design/find-the-perfect-colors-for-your-website/">color
scheme</a> is one of the best ways to accomplish this. A lot of times it can be a
good idea to make some minor changes to the color scheme, such as changing shades
of colors or adding a few new colors, just to give the site a fresh look.
</p>
        <p>
          <strong>9. What screen resolutions are visitors using?</strong>
        </p>
        <p>
It’s important to know how your visitors are going to be viewing the site. A program
such as Google Analytics can easily give you this information. Obviously, a fixed-width
design should take into consideration the typical screen resolutions of visitors.
</p>
        <p>
          <strong>10. What connection speed are visitors using?</strong>
        </p>
        <p>
Knowing the connection speed will help you to know what types of elements you can
include in the design without causing hardships for the average visitor.
</p>
        <p>
          <strong>11. What should be the focal points of the design?</strong>
        </p>
        <p>
Every design is going to draw attention to certain parts of the page in one way or
another. By knowing what you want to emphasize you will have more control over what
gets attention from visitors. In a comment on a recent article, <a href="http://www.caroline-middlebrook.com/blog/">Caroline
Middlebrook</a> mentioned that in her redesign she used the area above blog posts
to feature some select content, such as a free e-book that she has written. Obviously,
in her case this is a <a href="http://vandelaydesign.com/blog/design/who-is-the-focal-point-of-your-design/">focal
point</a> that she wants visitors to notice.
</p>
        <p>
          <strong>12. How can the navigation be made more effective?</strong>
        </p>
        <p>
Navigation is one of the most critical elements of a site’s usability. If a significant
amount of content and/or pages have been added to the site since the last design,
it is possible that navigation is no longer optimal. Before designing think about
how visitors will want to move through the site, and make it as easy as possible for
them.
</p>
        <p>
          <strong>13. What will visitors want from the website?</strong>
        </p>
        <p>
Meeting the needs of visitors is important to the success of any website. Will visitors
be coming to the site looking for information? If so, make it easy to find the information
and make it a prominent part of the design. Will they be coming to the site to find
products? Will they be coming for some other reason? Anticipate what your visitors
will want and do your best to give it to them.
</p>
        <p>
          <strong>14. How can increased user interaction be incorporated?</strong>
        </p>
        <p>
The most successful websites are able to get visitors involved in one way or another.
Blogs are great for this purpose because they allow for comments and discussion. Other
possibilities are forums, games, user-generated content, polls, quizzes, etc. By making
the website more engaging to visitors you are more likely to get a high number of
repeat visitors.
</p>
        <p>
          <strong>15. Who will be doing the maintenance/updates?</strong>
        </p>
        <p>
Will you be the one doing routine maintenance and updates? Will someone else be doing
them? If multiple people will be using the website <a href="http://particletree.com/features/successful-strategies-for-commenting-code/">commenting
the code</a> becomes even more important. Code should always be kept as clean as possible,
but when others will be doing work on the site has a bigger impact.
</p>
        <p>
          <strong>16. Is a content management system (CMS) needed?</strong>
        </p>
        <p>
Many website owners now prefer to use a CMS, such as <a href="http://wordpress.org/">WordPress</a>,
so that the site can easily be updated without requiring a designer. Depending on
the amount and type of updates that are anticipated, a CMS may be a good, time-saving
decision.
</p>
        <p>
          <strong>17. How can SEO be improved?</strong>
        </p>
        <p>
Any time a website is being designed, search engines should be considered. The current
design may or may not be search engine-friendly, but the new one certainly should
be. Should the current page titles be kept, or could they be done more effectively?
How can internal linking be improved? Where can headers be used? This list could obviously
go on for a while.
</p>
        <p>
          <strong>18. What keywords and phrases are being targeted?</strong>
        </p>
        <p>
Of course, <a href="http://vandelaydesign.com/blog/marketing/30-keyword-tools-to-use-for-your-website/">keywords</a> should
be used in titles, headers, anchor text, alt tags, etc. Designing a website without
knowing what words and phrases you are targeting means that you are most likely targeting
none, at least not effectively. Don’t simply consider the search terms that are being
targeted with the current site, make sure that these are the most effective terms
to go after.
</p>
        <p>
          <strong>19. What pages and search terms are currently drawing traffic?</strong>
        </p>
        <p>
If there are pages on the site that are currently doing very well with search engines,
you’ll probably not want to make major changes to the content of those pages. This
can easily be overlooked during a redesign, but making excessive changes to pages
that are ranking well can kill the rankings. Likewise, what search terms are currently
producing traffic? Be sure that they are used in the new design.
</p>
        <p>
          <strong>20. What pages currently have inbound links?</strong>
        </p>
        <p>
Whatever pages on the site have a significant number of inbound links or are drawing
traffic through those links, you’ll want to make sure that any changes do not negatively
affect these links. If possible, use the same URL structure. If not, be sure to re-direct
visitors to the appropriate page.
</p>
        <p>
          <strong>21. What will make visitors want to come back?</strong>
        </p>
        <p>
Most likely you’ve considered how the new design can make a solid first impression,
but what is it about the website that will keep visitors coming back for more?
</p>
        <img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=39486f2a-10a7-4602-be8e-f58f315966de" />
      </body>
      <title>21 Factors To Consider Before A Redesign</title>
      <guid isPermaLink="false">http://www.spotgnome.com/PermaLink,guid,39486f2a-10a7-4602-be8e-f58f315966de.aspx</guid>
      <link>http://www.spotgnome.com/2008/01/23/21FactorsToConsiderBeforeARedesign.aspx</link>
      <pubDate>Wed, 23 Jan 2008 11:46:32 GMT</pubDate>
      <description>&lt;p&gt;
Redesigning a website can be a very involved process, and it is important to properly
plan and consider the necessary factors that will make or break the redesign. Here
is a quick look at 21 factors that you should be contemplated.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;1. What is the goal of the redesign?&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
What do you hope to accomplish? It’s always important to have a clear understanding
of your reasons and motivations as they should impact the decisions that you make
along the way. Without knowing these goals the project will lack direction and you
will likely wind up with a website that still doesn’t meet your needs.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;2. Is this going to be just a minor upgrade or a complete overhaul?&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
A redesign could be anything from a minor facelift to an entirely new site. Obviously
the time, effort, and cost involved will vary, but first you should determine what
types of changes are required for you to meet your goals with the design. If a complete
redesign is done you will also want to consider to what extent the new design should
resemble the old design. If visitors are coming back to the site, chances are you
will want them to notice the new design without feeling like they’ve never been to
your site before.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;3. What aspects of the current design are most effective?&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Most likely there are some things about the current design that work very well, and
these may be aspects that you would like to keep or incorporate into the new design.
It’s a good idea to make a simple list of your likes and dislikes to help with decisions
on the new design.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;4. What aspects of the current design are not effective?&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Building on point #3, if you are redesigning the site you are bound to want to get
rid of some specific aspects of the website or the design. Are there some characteristics
of the design that do not accurately portray your business to new visitors?
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;5. Who are your target users?&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
During any design process you never want to lose focus on the visitors. By knowing
who you are targeting and how you can meet their needs, you will be on your way to
building an effective website. What style of design are your users going to like?
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;6. How can the website be more user-friendly?&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Improving the functionality and usability of a website is always a good thing. It’s
pointless to spend time and money on a redesign that looks great but simply isn’t &lt;a href="http://vandelaydesign.com/blog/design/developing-user-focused-websites/"&gt;user-friendly&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;7. Does the logo/branding need to be changed or updated?&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Most likely the website will include some form of a logo or branding. Are these items
still up-to-date and will they function effectively with a new design? If your logo
is out-of-date and not attractive, a new design may not do much good if it is still
using the same old logo.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;8. Should the color scheme change or remain the same?&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
In point #2 I mentioned that most of the time you will want to keep the website at
least looking familiar to repeat visitors. Using a similar &lt;a href="http://vandelaydesign.com/blog/design/find-the-perfect-colors-for-your-website/"&gt;color
scheme&lt;/a&gt; is one of the best ways to accomplish this. A lot of times it can be a
good idea to make some minor changes to the color scheme, such as changing shades
of colors or adding a few new colors, just to give the site a fresh look.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;9. What screen resolutions are visitors using?&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
It’s important to know how your visitors are going to be viewing the site. A program
such as Google Analytics can easily give you this information. Obviously, a fixed-width
design should take into consideration the typical screen resolutions of visitors.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;10. What connection speed are visitors using?&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Knowing the connection speed will help you to know what types of elements you can
include in the design without causing hardships for the average visitor.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;11. What should be the focal points of the design?&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Every design is going to draw attention to certain parts of the page in one way or
another. By knowing what you want to emphasize you will have more control over what
gets attention from visitors. In a comment on a recent article, &lt;a href="http://www.caroline-middlebrook.com/blog/"&gt;Caroline
Middlebrook&lt;/a&gt; mentioned that in her redesign she used the area above blog posts
to feature some select content, such as a free e-book that she has written. Obviously,
in her case this is a &lt;a href="http://vandelaydesign.com/blog/design/who-is-the-focal-point-of-your-design/"&gt;focal
point&lt;/a&gt; that she wants visitors to notice.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;12. How can the navigation be made more effective?&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Navigation is one of the most critical elements of a site’s usability. If a significant
amount of content and/or pages have been added to the site since the last design,
it is possible that navigation is no longer optimal. Before designing think about
how visitors will want to move through the site, and make it as easy as possible for
them.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;13. What will visitors want from the website?&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Meeting the needs of visitors is important to the success of any website. Will visitors
be coming to the site looking for information? If so, make it easy to find the information
and make it a prominent part of the design. Will they be coming to the site to find
products? Will they be coming for some other reason? Anticipate what your visitors
will want and do your best to give it to them.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;14. How can increased user interaction be incorporated?&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The most successful websites are able to get visitors involved in one way or another.
Blogs are great for this purpose because they allow for comments and discussion. Other
possibilities are forums, games, user-generated content, polls, quizzes, etc. By making
the website more engaging to visitors you are more likely to get a high number of
repeat visitors.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;15. Who will be doing the maintenance/updates?&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Will you be the one doing routine maintenance and updates? Will someone else be doing
them? If multiple people will be using the website &lt;a href="http://particletree.com/features/successful-strategies-for-commenting-code/"&gt;commenting
the code&lt;/a&gt; becomes even more important. Code should always be kept as clean as possible,
but when others will be doing work on the site has a bigger impact.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;16. Is a content management system (CMS) needed?&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Many website owners now prefer to use a CMS, such as &lt;a href="http://wordpress.org/"&gt;WordPress&lt;/a&gt;,
so that the site can easily be updated without requiring a designer. Depending on
the amount and type of updates that are anticipated, a CMS may be a good, time-saving
decision.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;17. How can SEO be improved?&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Any time a website is being designed, search engines should be considered. The current
design may or may not be search engine-friendly, but the new one certainly should
be. Should the current page titles be kept, or could they be done more effectively?
How can internal linking be improved? Where can headers be used? This list could obviously
go on for a while.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;18. What keywords and phrases are being targeted?&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Of course, &lt;a href="http://vandelaydesign.com/blog/marketing/30-keyword-tools-to-use-for-your-website/"&gt;keywords&lt;/a&gt; should
be used in titles, headers, anchor text, alt tags, etc. Designing a website without
knowing what words and phrases you are targeting means that you are most likely targeting
none, at least not effectively. Don’t simply consider the search terms that are being
targeted with the current site, make sure that these are the most effective terms
to go after.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;19. What pages and search terms are currently drawing traffic?&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
If there are pages on the site that are currently doing very well with search engines,
you’ll probably not want to make major changes to the content of those pages. This
can easily be overlooked during a redesign, but making excessive changes to pages
that are ranking well can kill the rankings. Likewise, what search terms are currently
producing traffic? Be sure that they are used in the new design.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;20. What pages currently have inbound links?&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Whatever pages on the site have a significant number of inbound links or are drawing
traffic through those links, you’ll want to make sure that any changes do not negatively
affect these links. If possible, use the same URL structure. If not, be sure to re-direct
visitors to the appropriate page.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;21. What will make visitors want to come back?&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Most likely you’ve considered how the new design can make a solid first impression,
but what is it about the website that will keep visitors coming back for more?
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=39486f2a-10a7-4602-be8e-f58f315966de" /&gt;</description>
      <comments>http://www.spotgnome.com/CommentView,guid,39486f2a-10a7-4602-be8e-f58f315966de.aspx</comments>
      <category>.Net</category>
      <category>Design</category>
      <category>Programming</category>
      <category>Web Design</category>
    </item>
    <item>
      <trackback:ping>http://www.spotgnome.com/Trackback.aspx?guid=6eebbe6c-f867-416b-9a47-047959d1bdd7</trackback:ping>
      <pingback:server>http://www.spotgnome.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.spotgnome.com/PermaLink,guid,6eebbe6c-f867-416b-9a47-047959d1bdd7.aspx</pingback:target>
      <dc:creator>Guy Levin</dc:creator>
      <wfw:comment>http://www.spotgnome.com/CommentView,guid,6eebbe6c-f867-416b-9a47-047959d1bdd7.aspx</wfw:comment>
      <wfw:commentRss>http://www.spotgnome.com/SyndicationService.asmx/GetEntryCommentsRss?guid=6eebbe6c-f867-416b-9a47-047959d1bdd7</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <div class="descr">
          <img alt="Prototype 1.6+ cheat sheet" src="http://attic.scripteka.com/cheatsheet_sneakpeak.png" />
        </div>
        <div class="entry">
          <p style="MARGIN-TOP: 40px">
A long awaited <strong>Prototype cheat sheet</strong> - a full reference to a <strong>bleeding
edge 1.6.0.2</strong> is finally <a title="prototype (v1.6.0.2) cheat sheet " href="http://attic.scripteka.com/prototype_cheatsheet_1.6.0.2.pdf">here</a>.
I had no experience creating something like this before, so any bugs or suggestions
are very much appreciated. Couple of notes about notations:
</p>
          <ul>
            <li>
Modules are sorted in a somewhat logical order - those commonly used are mostly in
the left/center area, while deprecated/utility methods are all the way to the right 
</li>
            <li>
Method can be recognized by parentheses following it (anything that doesn’t have ones
is a property) 
</li>
            <li>
Deprecated items are marked red and have NO parentheses/arguments specified 
</li>
            <li>
Prototype extends quite few native objects’ prototypes with a set of convenient methods.
In such cases there’s an explicit note about it next to a module name - i.g. <code>stripScripts()</code> method
from “String (String.prototype)” can be called as <code>'foo'.stripScripts()</code></li>
            <li>
When a module is also a class, there’s a “(constructor)” note next to it - i.g. “Hash
(constructor)” means that it should be called as <code>new Hash()</code></li>
            <li>
There are few bonus items (such as those from Prototype.Browser) which are not yet
included in documentation 
</li>
          </ul>
          <p>
            <a title="prototype (v1.6.0.2) cheat sheet " href="http://attic.scripteka.com/prototype_cheatsheet_1.6.0.2.pdf">Download</a> and
Enjoy!
</p>
          <p>
            <strong>Update:</strong>
          </p>
          <p>
I have managed to choose the most retarded format for the cheat sheet - almost squared
- which was impossible to print or navigate.<br />
Sincere apologies.
</p>
          <p>
There is an updated version at the same address which also fixes few other annoyances:
</p>
          <ul>
            <li>
Ajax.Responders is now a separate section 
</li>
            <li>
Added missing Event.fire 
</li>
            <li>
Added Prototype.BrowserFeatures.XPath 
</li>
            <li>
Added simple “Dimensions/Offsets” diagram 
</li>
            <li>
Minor rearrangements 
</li>
          </ul>
        </div>
        <img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=6eebbe6c-f867-416b-9a47-047959d1bdd7" />
      </body>
      <title>Prototype.js Cheat Sheet</title>
      <guid isPermaLink="false">http://www.spotgnome.com/PermaLink,guid,6eebbe6c-f867-416b-9a47-047959d1bdd7.aspx</guid>
      <link>http://www.spotgnome.com/2008/01/22/PrototypejsCheatSheet.aspx</link>
      <pubDate>Tue, 22 Jan 2008 09:18:20 GMT</pubDate>
      <description>&lt;div class=descr&gt;&lt;img alt="Prototype 1.6+ cheat sheet" src="http://attic.scripteka.com/cheatsheet_sneakpeak.png"&gt;
&lt;/div&gt;
&lt;div class=entry&gt;
&lt;p style="MARGIN-TOP: 40px"&gt;
A long awaited &lt;strong&gt;Prototype cheat sheet&lt;/strong&gt; - a full reference to a &lt;strong&gt;bleeding
edge 1.6.0.2&lt;/strong&gt; is finally &lt;a title="prototype (v1.6.0.2) cheat sheet " href="http://attic.scripteka.com/prototype_cheatsheet_1.6.0.2.pdf"&gt;here&lt;/a&gt;.
I had no experience creating something like this before, so any bugs or suggestions
are very much appreciated. Couple of notes about notations:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Modules are sorted in a somewhat logical order - those commonly used are mostly in
the left/center area, while deprecated/utility methods are all the way to the right 
&lt;li&gt;
Method can be recognized by parentheses following it (anything that doesn’t have ones
is a property) 
&lt;li&gt;
Deprecated items are marked red and have NO parentheses/arguments specified 
&lt;li&gt;
Prototype extends quite few native objects’ prototypes with a set of convenient methods.
In such cases there’s an explicit note about it next to a module name - i.g. &lt;code&gt;stripScripts()&lt;/code&gt; method
from “String (String.prototype)” can be called as &lt;code&gt;'foo'.stripScripts()&lt;/code&gt; 
&lt;li&gt;
When a module is also a class, there’s a “(constructor)” note next to it - i.g. “Hash
(constructor)” means that it should be called as &lt;code&gt;new Hash()&lt;/code&gt; 
&lt;li&gt;
There are few bonus items (such as those from Prototype.Browser) which are not yet
included in documentation 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;a title="prototype (v1.6.0.2) cheat sheet " href="http://attic.scripteka.com/prototype_cheatsheet_1.6.0.2.pdf"&gt;Download&lt;/a&gt; and
Enjoy!
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Update:&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
I have managed to choose the most retarded format for the cheat sheet - almost squared
- which was impossible to print or navigate.&lt;br&gt;
Sincere apologies.
&lt;/p&gt;
&lt;p&gt;
There is an updated version at the same address which also fixes few other annoyances:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Ajax.Responders is now a separate section 
&lt;li&gt;
Added missing Event.fire 
&lt;li&gt;
Added Prototype.BrowserFeatures.XPath 
&lt;li&gt;
Added simple “Dimensions/Offsets” diagram 
&lt;li&gt;
Minor rearrangements 
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=6eebbe6c-f867-416b-9a47-047959d1bdd7" /&gt;</description>
      <comments>http://www.spotgnome.com/CommentView,guid,6eebbe6c-f867-416b-9a47-047959d1bdd7.aspx</comments>
      <category>AJAX</category>
      <category>Javascript</category>
      <category>Programming</category>
      <category>Visual Studio</category>
    </item>
    <item>
      <trackback:ping>http://www.spotgnome.com/Trackback.aspx?guid=c4604be4-55ce-425a-977c-bee6026fb79e</trackback:ping>
      <pingback:server>http://www.spotgnome.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.spotgnome.com/PermaLink,guid,c4604be4-55ce-425a-977c-bee6026fb79e.aspx</pingback:target>
      <dc:creator>Guy Levin</dc:creator>
      <wfw:comment>http://www.spotgnome.com/CommentView,guid,c4604be4-55ce-425a-977c-bee6026fb79e.aspx</wfw:comment>
      <wfw:commentRss>http://www.spotgnome.com/SyndicationService.asmx/GetEntryCommentsRss?guid=c4604be4-55ce-425a-977c-bee6026fb79e</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
If you are like me, you hate hand editing HTML and XML!  But unfortunately, as
a .NET Developer you often find yourself doing it, and if for no other reason, you
have to do it for parts of the Web.Config and Application.Config files. Last night,
I was googling for something, and just found this <a href="http://asphere.aspweb.cz/default.aspx" target="_blank"><font color="#fe0e0d">tool</font></a> from <a href="http://asphere.aspweb.cz/default.aspx" target="_blank"><font color="#fe0e0d">ASPhere</font></a> by
luck. It's really easy, nice, and looks great :)
</p>
        <p align="center">
          <a href="http://asphere.aspweb.cz/default.aspx" target="_blank">
            <img src="http://www.sheltonblog.com/images/FreeUtilityWeb.ConfigEditorwithagreatUI_E4FC/image.png" />
          </a>
        </p>
        <p>
Here you are the URL : <a title="http://asphere.aspweb.cz/default.aspx" href="http://asphere.aspweb.cz/default.aspx"><font color="#fe0e0d">http://asphere.aspweb.cz/default.aspx</font></a></p>
        <img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=c4604be4-55ce-425a-977c-bee6026fb79e" />
      </body>
      <title>Freeware Tool For Configuration Files (ASP.NET)</title>
      <guid isPermaLink="false">http://www.spotgnome.com/PermaLink,guid,c4604be4-55ce-425a-977c-bee6026fb79e.aspx</guid>
      <link>http://www.spotgnome.com/2008/01/21/FreewareToolForConfigurationFilesASPNET.aspx</link>
      <pubDate>Mon, 21 Jan 2008 11:42:53 GMT</pubDate>
      <description>&lt;p&gt;
If you are like me, you hate hand editing HTML and XML!&amp;nbsp; But unfortunately, as
a .NET Developer you often find yourself doing it, and if for no other reason, you
have to do it for parts of the Web.Config and Application.Config files. Last night,
I was googling for something, and just found this &lt;a href="http://asphere.aspweb.cz/default.aspx" target=_blank&gt;&lt;font color=#fe0e0d&gt;tool&lt;/font&gt;&lt;/a&gt; from &lt;a href="http://asphere.aspweb.cz/default.aspx" target=_blank&gt;&lt;font color=#fe0e0d&gt;ASPhere&lt;/font&gt;&lt;/a&gt; by
luck. It's really easy, nice, and looks great :)
&lt;/p&gt;
&lt;p align=center&gt;
&lt;a href="http://asphere.aspweb.cz/default.aspx" target=_blank&gt;&lt;img src="http://www.sheltonblog.com/images/FreeUtilityWeb.ConfigEditorwithagreatUI_E4FC/image.png"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Here you are the URL : &lt;a title=http://asphere.aspweb.cz/default.aspx href="http://asphere.aspweb.cz/default.aspx"&gt;&lt;font color=#fe0e0d&gt;http://asphere.aspweb.cz/default.aspx&lt;/font&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=c4604be4-55ce-425a-977c-bee6026fb79e" /&gt;</description>
      <comments>http://www.spotgnome.com/CommentView,guid,c4604be4-55ce-425a-977c-bee6026fb79e.aspx</comments>
      <category>.Net</category>
      <category>Programming</category>
      <category>Visual Studio</category>
    </item>
    <item>
      <trackback:ping>http://www.spotgnome.com/Trackback.aspx?guid=1d4e593b-d002-4f99-87ca-6c54d78846e9</trackback:ping>
      <pingback:server>http://www.spotgnome.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.spotgnome.com/PermaLink,guid,1d4e593b-d002-4f99-87ca-6c54d78846e9.aspx</pingback:target>
      <dc:creator>Guy Levin</dc:creator>
      <wfw:comment>http://www.spotgnome.com/CommentView,guid,1d4e593b-d002-4f99-87ca-6c54d78846e9.aspx</wfw:comment>
      <wfw:commentRss>http://www.spotgnome.com/SyndicationService.asmx/GetEntryCommentsRss?guid=1d4e593b-d002-4f99-87ca-6c54d78846e9</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Under the category of "you learn something new every day": While watching <a href="http://dnrtv.com/">dnrTV</a> this
morning, I saw something that I've never seen done in C# before.
</p>
        <div class="postcontent">
          <p>
I knew that it was possible to make an "alias" for a namespace in C#. For example,
if you have a complex namespace like MadProps.Windows.Controls (a contrived example)
that you don't want to add to your "using" list, but you don't want to have to retype
every time, you can use code like this to "alias" it:
</p>
          <pre class="code">
            <span style="COLOR: blue">using </span>MPControls = MadProps.Windows.Controls;</pre>
          <p>
That means that instead of typing "MadProps.Windows.Controls.TextBox" all through
your code, you can just type "MPControls.TextBox". Nice.
</p>
          <p>
What I learned this morning, however, is that you can do the same thing with types!
If you have a type name that's really complex (think generic types) you can create
an alias for them, too!
</p>
          <pre class="code">
            <span style="COLOR: blue">using </span>
            <span style="COLOR: #2b91af">MyDict </span>=
System.Collections.Generic.<span style="COLOR: #2b91af">Dictionary</span>&lt;<span style="COLOR: blue">int</span>, <span style="COLOR: #2b91af">MyLongClassName</span>&gt;;</pre>
          <p>
Now I can just declare a variable as type "MyDict" in code instead of retyping the
full dictionary definition!
</p>
          <p>
Granted the uses are limited. Unless it's a particularly nasty type name I think your
code readability would be best served by avoiding these sorts of aliases. However,
it's great to know that the feature exists.
</p>
        </div>
        <!-- google_ad_section_end -->
        <img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=1d4e593b-d002-4f99-87ca-6c54d78846e9" />
      </body>
      <title>Type Aliases in C#</title>
      <guid isPermaLink="false">http://www.spotgnome.com/PermaLink,guid,1d4e593b-d002-4f99-87ca-6c54d78846e9.aspx</guid>
      <link>http://www.spotgnome.com/2008/01/17/TypeAliasesInC.aspx</link>
      <pubDate>Thu, 17 Jan 2008 12:03:39 GMT</pubDate>
      <description>&lt;p&gt;
Under the category of "you learn something new every day": While watching &lt;a href="http://dnrtv.com/"&gt;dnrTV&lt;/a&gt; this
morning, I saw something that I've never seen done in C# before.
&lt;/p&gt;
&lt;div class=postcontent&gt;
&lt;p&gt;
I knew that it was possible to make an "alias" for a namespace in C#. For example,
if you have a complex namespace like MadProps.Windows.Controls (a contrived example)
that you don't want to add to your "using" list, but you don't want to have to retype
every time, you can use code like this to "alias" it:
&lt;/p&gt;
&lt;pre class=code&gt;&lt;span style="COLOR: blue"&gt;using &lt;/span&gt;MPControls = MadProps.Windows.Controls;&lt;/pre&gt;
&lt;p&gt;
That means that instead of typing "MadProps.Windows.Controls.TextBox" all through
your code, you can just type "MPControls.TextBox". Nice.
&lt;/p&gt;
&lt;p&gt;
What I learned this morning, however, is that you can do the same thing with types!
If you have a type name that's really complex (think generic types) you can create
an alias for them, too!
&lt;/p&gt;
&lt;pre class=code&gt;&lt;span style="COLOR: blue"&gt;using &lt;/span&gt;&lt;span style="COLOR: #2b91af"&gt;MyDict &lt;/span&gt;=
System.Collections.Generic.&lt;span style="COLOR: #2b91af"&gt;Dictionary&lt;/span&gt;&amp;lt;&lt;span style="COLOR: blue"&gt;int&lt;/span&gt;, &lt;span style="COLOR: #2b91af"&gt;MyLongClassName&lt;/span&gt;&amp;gt;;&lt;/pre&gt;
&lt;p&gt;
Now I can just declare a variable as type "MyDict" in code instead of retyping the
full dictionary definition!
&lt;/p&gt;
&lt;p&gt;
Granted the uses are limited. Unless it's a particularly nasty type name I think your
code readability would be best served by avoiding these sorts of aliases. However,
it's great to know that the feature exists.
&lt;/p&gt;
&lt;/div&gt;
&lt;!-- google_ad_section_end --&gt;&lt;img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=1d4e593b-d002-4f99-87ca-6c54d78846e9" /&gt;</description>
      <comments>http://www.spotgnome.com/CommentView,guid,1d4e593b-d002-4f99-87ca-6c54d78846e9.aspx</comments>
      <category>.Net</category>
      <category>Programming</category>
      <category>Visual Studio</category>
    </item>
    <item>
      <trackback:ping>http://www.spotgnome.com/Trackback.aspx?guid=460fbb50-e3dd-4dd5-99cd-c4071c0e022c</trackback:ping>
      <pingback:server>http://www.spotgnome.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.spotgnome.com/PermaLink,guid,460fbb50-e3dd-4dd5-99cd-c4071c0e022c.aspx</pingback:target>
      <dc:creator>Guy Levin</dc:creator>
      <wfw:comment>http://www.spotgnome.com/CommentView,guid,460fbb50-e3dd-4dd5-99cd-c4071c0e022c.aspx</wfw:comment>
      <wfw:commentRss>http://www.spotgnome.com/SyndicationService.asmx/GetEntryCommentsRss?guid=460fbb50-e3dd-4dd5-99cd-c4071c0e022c</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
For a long time I have been looking for a really easy way to create a cryptographically
random string in c#.  I knew it had to be simple but I just had not spend the
time to dig one up.  Specifically I was looking for a quick and easy way to get
a string that was acceptable for use as a Token for session use. 
</p>
        <p>
using System;<br />
using System.Security.Cryptography; 
</p>
        <p>
namespace ConsoleApplication1<br />
{<br />
   class Program<br />
   {<br />
   static void Main(string[] args)<br />
   {<br />
      byte[] random = new Byte[128]; //Tell it how long
you want it to be<br />
      RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();<br />
      rng.GetNonZeroBytes(random); <br />
      // The array is now filled with cryptographically
strong random bytes.
</p>
        <p>
      Console.WriteLine(System.Convert.ToBase64String(random));<br />
         Console.ReadKey();<br />
      }<br />
   }<br />
}
</p>
        <img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=460fbb50-e3dd-4dd5-99cd-c4071c0e022c" />
      </body>
      <title>Cryptographicly Random String In C# </title>
      <guid isPermaLink="false">http://www.spotgnome.com/PermaLink,guid,460fbb50-e3dd-4dd5-99cd-c4071c0e022c.aspx</guid>
      <link>http://www.spotgnome.com/2008/01/15/CryptographiclyRandomStringInC.aspx</link>
      <pubDate>Tue, 15 Jan 2008 12:56:38 GMT</pubDate>
      <description>&lt;p&gt;
For a long time I have been looking for a really easy way to create a cryptographically
random string in c#.&amp;nbsp; I knew it had to be simple but I just had not spend the
time to dig one up.&amp;nbsp; Specifically I was looking for a quick and easy way to get
a string that was acceptable for use as a Token for session use.&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
using System;&lt;br&gt;
using System.Security.Cryptography; 
&lt;/p&gt;
&lt;p&gt;
namespace ConsoleApplication1&lt;br&gt;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;class Program&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;static void Main(string[] args)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;byte[] random = new Byte[128]; //Tell it how long
you want it to be&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rng.GetNonZeroBytes(random);&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// The array is now filled with cryptographically
strong random bytes.
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(System.Convert.ToBase64String(random));&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.ReadKey();&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
}
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=460fbb50-e3dd-4dd5-99cd-c4071c0e022c" /&gt;</description>
      <comments>http://www.spotgnome.com/CommentView,guid,460fbb50-e3dd-4dd5-99cd-c4071c0e022c.aspx</comments>
      <category>.Net</category>
      <category>Programming</category>
      <category>Visual Studio</category>
    </item>
    <item>
      <trackback:ping>http://www.spotgnome.com/Trackback.aspx?guid=f6b8d80e-8f22-4fb9-bb31-65f6818bad80</trackback:ping>
      <pingback:server>http://www.spotgnome.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.spotgnome.com/PermaLink,guid,f6b8d80e-8f22-4fb9-bb31-65f6818bad80.aspx</pingback:target>
      <dc:creator>Guy Levin</dc:creator>
      <wfw:comment>http://www.spotgnome.com/CommentView,guid,f6b8d80e-8f22-4fb9-bb31-65f6818bad80.aspx</wfw:comment>
      <wfw:commentRss>http://www.spotgnome.com/SyndicationService.asmx/GetEntryCommentsRss?guid=f6b8d80e-8f22-4fb9-bb31-65f6818bad80</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
If you are looking for a ASP.NET Google Map Control, your search is now over.
</p>
        <p>
Jacob Reimers from <a href="http://www.reimers.dk/">http://www.reimers.dk/</a> offers
a great asp.net control in 2 flavors.
</p>
        <p>
The free version which lets you easily display a map with markers and/or lines and
a licensed version which gives you the full power of Google Maps.
</p>
        <p>
Download the free control, unzip it to your Bin folder in your web app and add a reference
to it.
</p>
        <p>
 
</p>
        <p>
          <strong>This is a sample asp.net page:</strong>
        </p>
        <p>
&lt;%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default"
%&gt; 
<br />
&lt;%@ Register Assembly="GoogleMap" Namespace="Reimers.Map" TagPrefix="Reimers" %&gt; 
<br />
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt; 
<br />
&lt;head runat="server"&gt; <br />
    &lt;title&gt;Google Map test&lt;/title&gt; 
<br />
&lt;/head&gt; 
<br />
&lt;body&gt; <br />
    &lt;form id="form1" runat="server"&gt; <br />
        &lt;div&gt; <br />
            &lt;reimers:googlemap
id="GMap" runat="server" width="349" height="354" onmarkerclick="GMap_MarkerClick" 
/&gt; <br />
        &lt;/div&gt; <br />
    &lt;/form&gt; 
<br />
  &lt;/body&gt; 
<br />
&lt;/html&gt; 
</p>
        <p>
        </p>
        <p>
          <strong>and the code behind:</strong>
        </p>
        <p>
        </p>
        <div style="FONT-SIZE: 10pt; BACKGROUND: white 0% 50%; COLOR: black; FONT-FAMILY: courier new; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">
          <p style="MARGIN: 0px">
            <span style="COLOR: blue">using</span> System;
</p>
          <p style="MARGIN: 0px">
            <span style="COLOR: blue">using</span> System.Web.UI;
</p>
          <p style="MARGIN: 0px">
            <span style="COLOR: blue">using</span> Reimers.Map;
</p>
          <p style="MARGIN: 0px">
 
</p>
          <p style="MARGIN: 0px">
            <span style="COLOR: blue">public</span>
            <span style="COLOR: blue">partial</span>
            <span style="COLOR: blue">class</span>
            <span style="COLOR: rgb(43,145,175)">_Default</span> : <span style="COLOR: rgb(43,145,175)">Page</span></p>
          <p style="MARGIN: 0px">
{
</p>
          <p style="MARGIN: 0px">
    <span style="COLOR: blue">protected</span><span style="COLOR: blue">void</span> Page_Load(<span style="COLOR: blue">object</span> sender, <span style="COLOR: rgb(43,145,175)">EventArgs</span> e)
</p>
          <p style="MARGIN: 0px">
    {
</p>
          <p style="MARGIN: 0px">
        GMap.GoogleKey = <span style="COLOR: rgb(163,21,21)">"Your
API Code here"</span>;
</p>
          <p style="MARGIN: 0px">
        GMap.MapType = <span style="COLOR: rgb(43,145,175)">MapType</span>.Map;
</p>
          <p style="MARGIN: 0px">
        GMap.TypeControl = <span style="COLOR: rgb(43,145,175)">MapTypeControl</span>.None;
</p>
          <p style="MARGIN: 0px">
        GMap.MapControl = <span style="COLOR: rgb(43,145,175)">ControlType</span>.Small;
</p>
          <p style="MARGIN: 0px">
 
</p>
          <p style="MARGIN: 0px">
        <span style="COLOR: rgb(43,145,175)">GoogleMarker</span> testMarker
= <span style="COLOR: blue">new</span><span style="COLOR: rgb(43,145,175)">GoogleMarker</span>(<span style="COLOR: rgb(163,21,21)">"newMarker"</span>, <span style="COLOR: blue">new</span><span style="COLOR: rgb(43,145,175)">GoogleLatLng</span>(43.611611,
-88.952931));
</p>
          <p style="MARGIN: 0px">
        testMarker.MarkerText = <span style="COLOR: rgb(163,21,21)">"Test
Marker"</span>;
</p>
          <p style="MARGIN: 0px">
        GMap.Markers.Add(testMarker);
</p>
          <p style="MARGIN: 0px">
 
</p>
          <p style="MARGIN: 0px">
        GMap.Latitude = testMarker.Latitude;
</p>
          <p style="MARGIN: 0px">
        GMap.Longitude = testMarker.Longitude;
</p>
          <p style="MARGIN: 0px">
        GMap.Zoom = 10;
</p>
          <p style="MARGIN: 0px">
    }
</p>
          <p style="MARGIN: 0px">
 
</p>
          <p style="MARGIN: 0px">
    <span style="COLOR: blue">protected</span><span style="COLOR: blue">void</span> GMap_MarkerClick(<span style="COLOR: rgb(43,145,175)">GoogleMap</span> GMap, <span style="COLOR: rgb(43,145,175)">GoogleMarker</span> Marker, <span style="COLOR: blue">ref</span><span style="COLOR: rgb(43,145,175)">String</span> MapCommand)
</p>
          <p style="MARGIN: 0px">
    {
</p>
          <p style="MARGIN: 0px">
        MapCommand = Marker.OpenInfoWindowHTML(GMap,
Marker.MarkerText);
</p>
          <p style="MARGIN: 0px">
    }
</p>
          <p style="MARGIN: 0px">
}
</p>
        </div>
        <img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=f6b8d80e-8f22-4fb9-bb31-65f6818bad80" />
      </body>
      <title>ASP.NET Google Map Control</title>
      <guid isPermaLink="false">http://www.spotgnome.com/PermaLink,guid,f6b8d80e-8f22-4fb9-bb31-65f6818bad80.aspx</guid>
      <link>http://www.spotgnome.com/2008/01/09/ASPNETGoogleMapControl.aspx</link>
      <pubDate>Wed, 09 Jan 2008 11:23:22 GMT</pubDate>
      <description>&lt;p&gt;
If you are looking for a ASP.NET Google Map Control, your search is now over.
&lt;/p&gt;
&lt;p&gt;
Jacob Reimers from &lt;a href="http://www.reimers.dk/"&gt;http://www.reimers.dk/&lt;/a&gt;&amp;nbsp;offers
a great asp.net control in 2 flavors.
&lt;/p&gt;
&lt;p&gt;
The free version which lets you easily display a map with markers and/or lines and
a licensed version which gives you the full power of Google Maps.
&lt;/p&gt;
&lt;p&gt;
Download the free control, unzip it to your Bin folder in your web app and add a reference
to it.
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;This is a sample asp.net page:&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;lt;%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default"
%&amp;gt; 
&lt;br&gt;
&amp;lt;%@ Register Assembly="GoogleMap" Namespace="Reimers.Map" TagPrefix="Reimers" %&amp;gt; 
&lt;br&gt;
&amp;lt;html xmlns="http://www.w3.org/1999/xhtml"&amp;gt; 
&lt;br&gt;
&amp;lt;head runat="server"&amp;gt;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;title&amp;gt;Google Map test&amp;lt;/title&amp;gt; 
&lt;br&gt;
&amp;lt;/head&amp;gt; 
&lt;br&gt;
&amp;lt;body&amp;gt;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;form id="form1" runat="server"&amp;gt;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div&amp;gt;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;reimers:googlemap
id="GMap" runat="server" width="349" height="354" onmarkerclick="GMap_MarkerClick"&amp;nbsp;
/&amp;gt;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/div&amp;gt;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/form&amp;gt; 
&lt;br&gt;
&amp;nbsp; &amp;lt;/body&amp;gt; 
&lt;br&gt;
&amp;lt;/html&amp;gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;and the code behind:&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;div style="FONT-SIZE: 10pt; BACKGROUND: white 0% 50%; COLOR: black; FONT-FAMILY: courier new; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial"&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: blue"&gt;using&lt;/span&gt; System;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: blue"&gt;using&lt;/span&gt; System.Web.UI;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: blue"&gt;using&lt;/span&gt; Reimers.Map;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;partial&lt;/span&gt; &lt;span style="COLOR: blue"&gt;class&lt;/span&gt; &lt;span style="COLOR: rgb(43,145,175)"&gt;_Default&lt;/span&gt; : &lt;span style="COLOR: rgb(43,145,175)"&gt;Page&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
{
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;protected&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; Page_Load(&lt;span style="COLOR: blue"&gt;object&lt;/span&gt; sender, &lt;span style="COLOR: rgb(43,145,175)"&gt;EventArgs&lt;/span&gt; e)
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GMap.GoogleKey = &lt;span style="COLOR: rgb(163,21,21)"&gt;"Your
API Code here"&lt;/span&gt;;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GMap.MapType = &lt;span style="COLOR: rgb(43,145,175)"&gt;MapType&lt;/span&gt;.Map;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GMap.TypeControl = &lt;span style="COLOR: rgb(43,145,175)"&gt;MapTypeControl&lt;/span&gt;.None;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GMap.MapControl = &lt;span style="COLOR: rgb(43,145,175)"&gt;ControlType&lt;/span&gt;.Small;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: rgb(43,145,175)"&gt;GoogleMarker&lt;/span&gt; testMarker
= &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: rgb(43,145,175)"&gt;GoogleMarker&lt;/span&gt;(&lt;span style="COLOR: rgb(163,21,21)"&gt;"newMarker"&lt;/span&gt;, &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: rgb(43,145,175)"&gt;GoogleLatLng&lt;/span&gt;(43.611611,
-88.952931));
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; testMarker.MarkerText = &lt;span style="COLOR: rgb(163,21,21)"&gt;"Test
Marker"&lt;/span&gt;;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GMap.Markers.Add(testMarker);
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GMap.Latitude = testMarker.Latitude;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GMap.Longitude = testMarker.Longitude;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GMap.Zoom = 10;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;protected&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; GMap_MarkerClick(&lt;span style="COLOR: rgb(43,145,175)"&gt;GoogleMap&lt;/span&gt; GMap, &lt;span style="COLOR: rgb(43,145,175)"&gt;GoogleMarker&lt;/span&gt; Marker, &lt;span style="COLOR: blue"&gt;ref&lt;/span&gt; &lt;span style="COLOR: rgb(43,145,175)"&gt;String&lt;/span&gt; MapCommand)
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MapCommand = Marker.OpenInfoWindowHTML(GMap,
Marker.MarkerText);
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
}
&lt;/p&gt;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=f6b8d80e-8f22-4fb9-bb31-65f6818bad80" /&gt;</description>
      <comments>http://www.spotgnome.com/CommentView,guid,f6b8d80e-8f22-4fb9-bb31-65f6818bad80.aspx</comments>
      <category>.Net</category>
      <category>Google</category>
      <category>Programming</category>
      <category>Visual Studio</category>
      <category>Web 2.0</category>
    </item>
    <item>
      <trackback:ping>http://www.spotgnome.com/Trackback.aspx?guid=5fc62032-d7bc-432a-8694-a007f79b1835</trackback:ping>
      <pingback:server>http://www.spotgnome.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.spotgnome.com/PermaLink,guid,5fc62032-d7bc-432a-8694-a007f79b1835.aspx</pingback:target>
      <dc:creator>Guy Levin</dc:creator>
      <wfw:comment>http://www.spotgnome.com/CommentView,guid,5fc62032-d7bc-432a-8694-a007f79b1835.aspx</wfw:comment>
      <wfw:commentRss>http://www.spotgnome.com/SyndicationService.asmx/GetEntryCommentsRss?guid=5fc62032-d7bc-432a-8694-a007f79b1835</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Sometimes we need to make some write to logs, trace, and maybe limit some features
during debug. It's good to know that in debug mode we have precompiler identifier <strong>DEBUG</strong> is
set. So, first of all you can try <strong>#if #endif</strong> construction. In my
opinion, it's not very good to use <strong>#if</strong> directive, especialy
if there is something better. 
</p>
        <p>
          <strong>Conditional attribute</strong>. It can be applied to any method that returns <strong>void</strong>.
Why void? Because the method call ignored if the condition is not fulfilled. The method
can be static or not. 
</p>
        <pre class="csharpcode">
          <font color="#006400">
            <strong>[Conditional(<span class="str">"DEBUG"</span>)]</strong>
          </font>
          <span class="kwrd">static</span>
          <span class="kwrd">void</span> DebugMethod()
{ } </pre>
        <p>
So, this is the best way to make some job in DEBUG configuration. Also, it can
be used to make different build configurations.
</p>
        <img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=5fc62032-d7bc-432a-8694-a007f79b1835" />
      </body>
      <title>Making Custom Actions During Debug</title>
      <guid isPermaLink="false">http://www.spotgnome.com/PermaLink,guid,5fc62032-d7bc-432a-8694-a007f79b1835.aspx</guid>
      <link>http://www.spotgnome.com/2008/01/09/MakingCustomActionsDuringDebug.aspx</link>
      <pubDate>Wed, 09 Jan 2008 11:18:13 GMT</pubDate>
      <description>&lt;p&gt;
Sometimes we need to make some write to logs, trace, and maybe limit some features
during debug. It's good to know that in debug mode we have precompiler identifier &lt;strong&gt;DEBUG&lt;/strong&gt; is
set. So, first of all you can try &lt;strong&gt;#if #endif&lt;/strong&gt; construction. In my
opinion, it's not very&amp;nbsp;good to use &lt;strong&gt;#if&lt;/strong&gt; directive,&amp;nbsp;especialy
if there is something better. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Conditional attribute&lt;/strong&gt;. It can be applied to any method that returns &lt;strong&gt;void&lt;/strong&gt;.
Why void? Because the method call ignored if the condition is not fulfilled. The method
can be static or not. 
&lt;/p&gt;
&lt;pre class=csharpcode&gt;&lt;font color=#006400&gt;&lt;strong&gt;[Conditional(&lt;span class=str&gt;"DEBUG"&lt;/span&gt;)]&lt;/strong&gt;&lt;/font&gt; &lt;span class=kwrd&gt;static&lt;/span&gt; &lt;span class=kwrd&gt;void&lt;/span&gt; DebugMethod()
{ } &lt;/pre&gt;
&lt;p&gt;
So, this is the best way to make some job in DEBUG configuration.&amp;nbsp;Also, it can
be used to make different build configurations.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=5fc62032-d7bc-432a-8694-a007f79b1835" /&gt;</description>
      <comments>http://www.spotgnome.com/CommentView,guid,5fc62032-d7bc-432a-8694-a007f79b1835.aspx</comments>
      <category>.Net</category>
      <category>Programming</category>
      <category>Visual Studio</category>
    </item>
    <item>
      <trackback:ping>http://www.spotgnome.com/Trackback.aspx?guid=fc734769-f8e4-4b38-9ced-ca8f9a9b469f</trackback:ping>
      <pingback:server>http://www.spotgnome.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.spotgnome.com/PermaLink,guid,fc734769-f8e4-4b38-9ced-ca8f9a9b469f.aspx</pingback:target>
      <dc:creator>Guy Levin</dc:creator>
      <wfw:comment>http://www.spotgnome.com/CommentView,guid,fc734769-f8e4-4b38-9ced-ca8f9a9b469f.aspx</wfw:comment>
      <wfw:commentRss>http://www.spotgnome.com/SyndicationService.asmx/GetEntryCommentsRss?guid=fc734769-f8e4-4b38-9ced-ca8f9a9b469f</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
JavaScript Libraries in particular have grown immensely in popularity, and the article
continues to be a great resource. However, it was apparent from how the Web development
community responded, that there was a single missing component. Designers and developers
wanted an at-a-glance comparison chart. I considered how to go about researching and
writing such a comparison, and shortly thereafter, I was contacted by Cody Lindley.
He let me know that he'd been working on such a chart. Here is that chart. <style type="text/css"><!--

#jsTable {margin:10px 0 30px 0;}
#jsTable tbody tr td {border-bottom:solid 1px #e2e2e2; border-right:solid 1px #e2e2e2; text-align:center; padding:5px;}

--></style><table id="jsTable" cellspacing="0" cellpadding="0" border="0"><tbody><tr style="BACKGROUND-COLOR: #e9e9e9"><td>
 </td><td align="left"></td><td><a href="http://www.robertnyman.com/domassistant/"><font size="2">DOM Assistant 2.5</font></a></td><td><a href="http://developer.yahoo.com/yui/"><font size="2">YUI 2.4.1 </font></a></td><td><a href="http://jquery.com/"><font size="2">jQuery 1.2 </font></a></td><td><a href="http://dojotoolkit.org/"><font size="2">Dojo 1.0 </font></a></td><td><a href="http://www.prototypejs.org/"><font size="2">Prototype 1.6 </font></a></td><td><a href="http://extjs.com/"><font size="2">EXT 2.0 </font></a></td><td><a href="http://mootools.net/"><font size="2">Mootools 1.11 </font></a></td></tr><tr><td><font size="2">1</font></td><td align="left"><div align="left"><font size="2">Official (complete!) documentation (API found on
domain) </font></div></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td></tr><tr><td><font size="2">2</font></td><td align="left"><div align="left"><font size="2">Official off-line documentation (off-line API found
on domain, included in download, and managed by Dev. team) </font></div></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td></tr><tr><td><font size="2">3</font></td><td align="left"><div align="left"><font size="2">Real code, with working live examples included <strong>in</strong> the
API (not just demo's/tutorials out side of the API) </font></div></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td></tr><tr><td><font size="2">4</font></td><td align="left"><div align="left"><font size="2">An official manual/book, <strong>not</strong> an
API, <strong>not</strong> tutorials, but a manual/book online or hardcopy</font></div></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td></tr><tr><td><font size="2">5</font></td><td align="left"><div align="left"><font size="2">Official real world demos included in download</font></div></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td></tr><tr><td><font size="2">6</font></td><td align="left"><div align="left"><font size="2">Modular by design (one file by design, or multiple) </font></div></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td></tr><tr><td><font size="2">7</font></td><td align="left"><div align="left"><font size="2">File size (KB) <strong>not</strong> minified, obfuscated,
or gzip (? = depends upon what you include) </font></div></td><td><font size="2">41.4</font></td><td><font size="2">29 - ? </font></td><td><font size="2">77.4 </font></td><td><font size="2">219 - ? </font></td><td><font size="2">121 </font></td><td><font size="2">29 - ? </font></td><td><font size="2">9k - ? </font></td></tr><tr><td><font size="2">8</font></td><td align="left"><div align="left"><font size="2">Official minified version (removing just comments
and spaces) </font></div></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /><br />
6 - ? </font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /><br />
44.6 </font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /><br />
7 - ? </font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td></tr><tr><td><font size="2">9</font></td><td align="left"><div align="left"><font size="2">Official packed/obfuscated version </font></div></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /><br />
21</font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /><br />
26.2 </font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /><br />
50 - ?</font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td></tr><tr><td><font size="2">10</font></td><td align="left"><div align="left"><font size="2">Official hosted minified version with gzip (free,
unlimited) </font></div></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td></tr><tr><td><font size="2">11</font></td><td align="left"><div align="left"><font size="2">Official widgets/UI toolkit </font></div></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td></tr><tr><td><font size="2">12</font></td><td align="left"><div align="left"><font size="2">SVN/CVS access </font></div></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td></tr><tr><td><font size="2">13</font></td><td align="left"><div align="left"><font size="2">Unit tested </font></div></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td></tr><tr><td><font size="2">14</font></td><td align="left"><div align="left"><font size="2">Public unit testing </font></div></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td></tr><tr><td><font size="2">15</font></td><td align="left"><div align="left"><font size="2">Open development </font></div></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td></tr><tr><td><font size="2">16</font></td><td align="left"><div align="left"><font size="2">100% Funded development (paid, full-time developers,
only focus)</font></div></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td></tr><tr><td><font size="2">17</font></td><td align="left"><div align="left"><font size="2">Official forum </font></div></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td></tr><tr><td><font size="2">18</font></td><td align="left"><div align="left"><font size="2">Official Mailing list</font></div></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td></tr><tr><td><font size="2">19</font></td><td align="left"><div align="left"><font size="2">Commercial support and training </font></div></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td></tr><tr style="BACKGROUND-COLOR: #e9e9e9"><td><font size="2"> </font></td><td align="left"><font size="2"></font></td><td><a href="http://www.robertnyman.com/domassistant/"><font size="2">DOM Assistant</font></a></td><td><a href="http://developer.yahoo.com/yui/"><font size="2">YUI 2.4.1 </font></a></td><td><a href="http://jquery.com/"><font size="2">jQuery 1.2 </font></a></td><td><a href="http://dojotoolkit.org/"><font size="2">Dojo 1.0 </font></a></td><td><a href="http://www.prototypejs.org/"><font size="2">Prototype 1.6 </font></a></td><td><a href="http://extjs.com/"><font size="2">EXT 2.0 </font></a></td><td><a href="http://mootools.net/"><font size="2">Mootools 1.11 </font></a></td></tr><tr><td><font size="2">20</font></td><td align="left"><div align="left"><font size="2">Official plug-in architecture (was the base code
designed and documented (documentation key) to facilitate open plug-in development
by the community) Similar to modular, but with a different intent. </font></div></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td></tr><tr><td><font size="2">21</font></td><td align="left"><div align="left"><font size="2">License type </font></div></td><td><font size="2">GNU</font></td><td><font size="2">BSD </font></td><td><font size="2">GPL / MIT </font></td><td><font size="2">AFL / BSD </font></td><td><font size="2">MIT </font></td><td><font size="2">LGPL </font></td><td><font size="2">MIT </font></td></tr><tr><td><font size="2">22</font></td><td align="left"><div align="left"><font size="2">Free for Commercial use </font></div></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td></tr><tr><td><font size="2"> </font></td><td align="left"><div align="left"><font size="2">Official support for Safari 1.3+</font></div></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td></tr><tr><td><font size="2"> </font></td><td align="left"><div align="left"><font size="2">Official support for Safari 2+ </font></div></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td></tr><tr><td><font size="2"> </font></td><td align="left"><div align="left"><font size="2">Official suppor for Safari 3+</font></div></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td></tr><tr><td><font size="2"> </font></td><td align="left"><div align="left"><font size="2">Official support for Opera 8+ Mac/Win</font></div></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td></tr><tr><td><font size="2"> </font></td><td align="left"><div align="left"><font size="2">Official support for Opera 9+ Mac/Win </font></div></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td></tr><tr><td><font size="2"> </font></td><td align="left"><div align="left"><font size="2">Official support for Firefox Mac/Win 1.5+ </font></div></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td></tr><tr><td><font size="2"> </font></td><td align="left"><div align="left"><font size="2">Official support for Firefox Mac/Win 2.0+ </font></div></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td></tr><tr><td><font size="2"> </font></td><td align="left"><div align="left"><font size="2">Official support for IE 7 </font></div></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td></tr><tr><td><font size="2"> </font></td><td align="left"><div align="left"><font size="2">Official support for IE 6 </font></div></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png" /></font></td></tr><tr><td><font size="2"> </font></td><td align="left"><div align="left"><font size="2">Official support for IE 5.5</font></div></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/3.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td></tr><tr><td><font size="2"> </font></td><td align="left"><div align="left"><font size="2">Official support for IE 5.0</font></div></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/2.png" /></font></td><td><font size="2"><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></font></td><td><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></td><td><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></td><td><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></td><td><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></td><td><img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png" /></td></tr></tbody></table></p>
        <p>
There are several factors to consider when compiling the necessary information for
this comparison. The first, and most important, is terminology. Even though there
are numerous features and functionalities for each JavaScript library that are similar,
they do not always fit neatly into predetermined headings. It remains imperative that
each library feature be weighted while keeping this in mind, and when appropriate,
read the full description that accompanies each heading. This is a fantastic starting
point for your own research and analysis.
</p>
        <p>
Although the groundwork has been laid, another factor to consider is that there is
still the effort to maintain an accurate comparison. Remember, this is a living document,
and you should use the chart whenever you begin a new project that requires a library.
After listening to developers who have used these libraries, we intend to make updates,
modifications, and maybe even a major overhaul. The intent is to facilitate discussion,
and to be the primary (most accurate) resource for determining which framework is
right for you, and right for the task you need to accomplish.
</p>
        <p>
Before the initial release, several of the programmers who are responsible for the
creation of these libraries were contacted, and their opinions will always be taken
into consideration. This helps us to maintain a balanced, unbiased opinion. The number
of options available to developers today can be daunting, and helping you to choose
the right tool should be done without any preconceived notions on our part. We will
not always be able to guarantee that each of the creators of these libraries agree
on our comparison criteria, but we will always take the steps necessary to listen
and cooperate.
</p>
        <p>
The final consideration is determining which libraries to include for comparison.
This is a little easier to determine, since the decision is driven from a set of closed
questions. Is the library licensed under an open-source license? Is there API documentation,
and how often is it updated? How mature is the library, and how often are updates
released? Is this a core library, or is it an extension/add-on/plugin to an existing
library? These are not the only questions to ask, but they are a few that can help
with the process of elimination.
</p>
        <img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=fc734769-f8e4-4b38-9ced-ca8f9a9b469f" />
      </body>
      <title>Comparison Of JavaScript Libraries</title>
      <guid isPermaLink="false">http://www.spotgnome.com/PermaLink,guid,fc734769-f8e4-4b38-9ced-ca8f9a9b469f.aspx</guid>
      <link>http://www.spotgnome.com/2008/01/06/ComparisonOfJavaScriptLibraries.aspx</link>
      <pubDate>Sun, 06 Jan 2008 09:34:06 GMT</pubDate>
      <description>&lt;p&gt;
JavaScript Libraries in particular have grown immensely in popularity, and the article
continues to be a great resource. However, it was apparent from how the Web development
community responded, that there was a single missing component. Designers and developers
wanted an at-a-glance comparison chart. I considered how to go about researching and
writing such a comparison, and shortly thereafter, I was contacted by Cody Lindley.
He let me know that he'd been working on such a chart. Here is that chart. &lt;style type=text/css&gt;
&lt;!--

#jsTable {margin:10px 0 30px 0;}
#jsTable tbody tr td {border-bottom:solid 1px #e2e2e2; border-right:solid 1px #e2e2e2; text-align:center; padding:5px;}

--&gt;
&lt;/style&gt;
&lt;table id=jsTable cellspacing=0 cellpadding=0 border=0&gt;
&lt;tbody&gt;
&lt;tr style="BACKGROUND-COLOR: #e9e9e9"&gt;
&lt;td&gt;
&amp;nbsp;&lt;/td&gt;
&lt;td align=left&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;a href="http://www.robertnyman.com/domassistant/"&gt;&lt;font size=2&gt;DOM Assistant 2.5&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;
&lt;a href="http://developer.yahoo.com/yui/"&gt;&lt;font size=2&gt;YUI 2.4.1 &lt;/font&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;
&lt;a href="http://jquery.com/"&gt;&lt;font size=2&gt;jQuery 1.2 &lt;/font&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;
&lt;a href="http://dojotoolkit.org/"&gt;&lt;font size=2&gt;Dojo 1.0 &lt;/font&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;
&lt;a href="http://www.prototypejs.org/"&gt;&lt;font size=2&gt;Prototype 1.6 &lt;/font&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;
&lt;a href="http://extjs.com/"&gt;&lt;font size=2&gt;EXT 2.0 &lt;/font&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;
&lt;a href="http://mootools.net/"&gt;&lt;font size=2&gt;Mootools 1.11 &lt;/font&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;font size=2&gt;1&lt;/font&gt;&lt;/td&gt;
&lt;td align=left&gt;
&lt;div align=left&gt;&lt;font size=2&gt;Official (complete!) documentation (API found on domain) &lt;/font&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/3.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;font size=2&gt;2&lt;/font&gt;&lt;/td&gt;
&lt;td align=left&gt;
&lt;div align=left&gt;&lt;font size=2&gt;Official off-line documentation (off-line API found on
domain, included in download, and managed by Dev. team) &lt;/font&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/2.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;font size=2&gt;3&lt;/font&gt;&lt;/td&gt;
&lt;td align=left&gt;
&lt;div align=left&gt;&lt;font size=2&gt;Real code, with working live examples included &lt;strong&gt;in&lt;/strong&gt; the
API (not just demo's/tutorials out side of the API) &lt;/font&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/2.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;font size=2&gt;4&lt;/font&gt;&lt;/td&gt;
&lt;td align=left&gt;
&lt;div align=left&gt;&lt;font size=2&gt;An official manual/book, &lt;strong&gt;not&lt;/strong&gt; an API, &lt;strong&gt;not&lt;/strong&gt; tutorials,
but a manual/book online or hardcopy&lt;/font&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/2.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;font size=2&gt;5&lt;/font&gt;&lt;/td&gt;
&lt;td align=left&gt;
&lt;div align=left&gt;&lt;font size=2&gt;Official real world demos included in download&lt;/font&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/2.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;font size=2&gt;6&lt;/font&gt;&lt;/td&gt;
&lt;td align=left&gt;
&lt;div align=left&gt;&lt;font size=2&gt;Modular by design (one file by design, or multiple) &lt;/font&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/3.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;font size=2&gt;7&lt;/font&gt;&lt;/td&gt;
&lt;td align=left&gt;
&lt;div align=left&gt;&lt;font size=2&gt;File size (KB) &lt;strong&gt;not&lt;/strong&gt; minified, obfuscated,
or gzip (? = depends upon what you include) &lt;/font&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;41.4&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;29 - ? &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;77.4 &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;219 - ? &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;121 &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;29 - ? &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;9k - ? &lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;font size=2&gt;8&lt;/font&gt;&lt;/td&gt;
&lt;td align=left&gt;
&lt;div align=left&gt;&lt;font size=2&gt;Official minified version (removing just comments and
spaces) &lt;/font&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/2.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; 
&lt;br&gt;
6 - ? &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; 
&lt;br&gt;
44.6 &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; 
&lt;br&gt;
7 - ? &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;font size=2&gt;9&lt;/font&gt;&lt;/td&gt;
&lt;td align=left&gt;
&lt;div align=left&gt;&lt;font size=2&gt;Official packed/obfuscated version &lt;/font&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; 
&lt;br&gt;
21&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; 
&lt;br&gt;
26.2 &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; 
&lt;br&gt;
50 - ?&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;font size=2&gt;10&lt;/font&gt;&lt;/td&gt;
&lt;td align=left&gt;
&lt;div align=left&gt;&lt;font size=2&gt;Official hosted minified version with gzip (free, unlimited) &lt;/font&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/2.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;font size=2&gt;11&lt;/font&gt;&lt;/td&gt;
&lt;td align=left&gt;
&lt;div align=left&gt;&lt;font size=2&gt;Official widgets/UI toolkit &lt;/font&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/2.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;font size=2&gt;12&lt;/font&gt;&lt;/td&gt;
&lt;td align=left&gt;
&lt;div align=left&gt;&lt;font size=2&gt;SVN/CVS access &lt;/font&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/2.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;font size=2&gt;13&lt;/font&gt;&lt;/td&gt;
&lt;td align=left&gt;
&lt;div align=left&gt;&lt;font size=2&gt;Unit tested &lt;/font&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/2.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;font size=2&gt;14&lt;/font&gt;&lt;/td&gt;
&lt;td align=left&gt;
&lt;div align=left&gt;&lt;font size=2&gt;Public unit testing &lt;/font&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/2.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;font size=2&gt;15&lt;/font&gt;&lt;/td&gt;
&lt;td align=left&gt;
&lt;div align=left&gt;&lt;font size=2&gt;Open development &lt;/font&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/2.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;font size=2&gt;16&lt;/font&gt;&lt;/td&gt;
&lt;td align=left&gt;
&lt;div align=left&gt;&lt;font size=2&gt;100% Funded development (paid, full-time developers,
only focus)&lt;/font&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/2.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;font size=2&gt;17&lt;/font&gt;&lt;/td&gt;
&lt;td align=left&gt;
&lt;div align=left&gt;&lt;font size=2&gt;Official forum &lt;/font&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/2.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;font size=2&gt;18&lt;/font&gt;&lt;/td&gt;
&lt;td align=left&gt;
&lt;div align=left&gt;&lt;font size=2&gt;Official Mailing list&lt;/font&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/2.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;font size=2&gt;19&lt;/font&gt;&lt;/td&gt;
&lt;td align=left&gt;
&lt;div align=left&gt;&lt;font size=2&gt;Commercial support and training &lt;/font&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/2.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="BACKGROUND-COLOR: #e9e9e9"&gt;
&lt;td&gt;
&lt;font size=2&gt;&amp;nbsp;&lt;/font&gt;&lt;/td&gt;
&lt;td align=left&gt;
&lt;font size=2&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;a href="http://www.robertnyman.com/domassistant/"&gt;&lt;font size=2&gt;DOM Assistant&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;
&lt;a href="http://developer.yahoo.com/yui/"&gt;&lt;font size=2&gt;YUI 2.4.1 &lt;/font&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;
&lt;a href="http://jquery.com/"&gt;&lt;font size=2&gt;jQuery 1.2 &lt;/font&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;
&lt;a href="http://dojotoolkit.org/"&gt;&lt;font size=2&gt;Dojo 1.0 &lt;/font&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;
&lt;a href="http://www.prototypejs.org/"&gt;&lt;font size=2&gt;Prototype 1.6 &lt;/font&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;
&lt;a href="http://extjs.com/"&gt;&lt;font size=2&gt;EXT 2.0 &lt;/font&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;
&lt;a href="http://mootools.net/"&gt;&lt;font size=2&gt;Mootools 1.11 &lt;/font&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;font size=2&gt;20&lt;/font&gt;&lt;/td&gt;
&lt;td align=left&gt;
&lt;div align=left&gt;&lt;font size=2&gt;Official plug-in architecture (was the base code designed
and documented (documentation key) to facilitate open plug-in development by the community)
Similar to modular, but with a different intent. &lt;/font&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/2.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;font size=2&gt;21&lt;/font&gt;&lt;/td&gt;
&lt;td align=left&gt;
&lt;div align=left&gt;&lt;font size=2&gt;License type &lt;/font&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;GNU&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;BSD &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;GPL / MIT &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;AFL / BSD &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;MIT &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;LGPL &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;MIT &lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;font size=2&gt;22&lt;/font&gt;&lt;/td&gt;
&lt;td align=left&gt;
&lt;div align=left&gt;&lt;font size=2&gt;Free for Commercial use &lt;/font&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/3.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;font size=2&gt;&amp;nbsp;&lt;/font&gt;&lt;/td&gt;
&lt;td align=left&gt;
&lt;div align=left&gt;&lt;font size=2&gt;Official support for Safari 1.3+&lt;/font&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/2.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;font size=2&gt;&amp;nbsp;&lt;/font&gt;&lt;/td&gt;
&lt;td align=left&gt;
&lt;div align=left&gt;&lt;font size=2&gt;Official support for Safari 2+ &lt;/font&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/3.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;font size=2&gt;&amp;nbsp;&lt;/font&gt;&lt;/td&gt;
&lt;td align=left&gt;
&lt;div align=left&gt;&lt;font size=2&gt;Official suppor for Safari 3+&lt;/font&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/3.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;font size=2&gt;&amp;nbsp;&lt;/font&gt;&lt;/td&gt;
&lt;td align=left&gt;
&lt;div align=left&gt;&lt;font size=2&gt;Official support for Opera 8+ Mac/Win&lt;/font&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/2.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;font size=2&gt;&amp;nbsp;&lt;/font&gt;&lt;/td&gt;
&lt;td align=left&gt;
&lt;div align=left&gt;&lt;font size=2&gt;Official support for Opera 9+ Mac/Win &lt;/font&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/3.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;font size=2&gt;&amp;nbsp;&lt;/font&gt;&lt;/td&gt;
&lt;td align=left&gt;
&lt;div align=left&gt;&lt;font size=2&gt;Official support for Firefox Mac/Win 1.5+ &lt;/font&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/3.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;font size=2&gt;&amp;nbsp;&lt;/font&gt;&lt;/td&gt;
&lt;td align=left&gt;
&lt;div align=left&gt;&lt;font size=2&gt;Official support for Firefox Mac/Win 2.0+ &lt;/font&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/3.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;font size=2&gt;&amp;nbsp;&lt;/font&gt;&lt;/td&gt;
&lt;td align=left&gt;
&lt;div align=left&gt;&lt;font size=2&gt;Official support for IE 7 &lt;/font&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/3.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;font size=2&gt;&amp;nbsp;&lt;/font&gt;&lt;/td&gt;
&lt;td align=left&gt;
&lt;div align=left&gt;&lt;font size=2&gt;Official support for IE 6 &lt;/font&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/3.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/3.png"&gt; &lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;font size=2&gt;&amp;nbsp;&lt;/font&gt;&lt;/td&gt;
&lt;td align=left&gt;
&lt;div align=left&gt;&lt;font size=2&gt;Official support for IE 5.5&lt;/font&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/3.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;font size=2&gt;&amp;nbsp;&lt;/font&gt;&lt;/td&gt;
&lt;td align=left&gt;
&lt;div align=left&gt;&lt;font size=2&gt;Official support for IE 5.0&lt;/font&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" alt="" src="http://javascriptant.com/images/2.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;font size=2&gt;&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;
&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt;&lt;/td&gt;
&lt;td&gt;
&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt;&lt;/td&gt;
&lt;td&gt;
&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt;&lt;/td&gt;
&lt;td&gt;
&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt;&lt;/td&gt;
&lt;td&gt;
&lt;img style="WIDTH: 16px; HEIGHT: 16px" src="http://javascriptant.com/images/2.png"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p&gt;
There are several factors to consider when compiling the necessary information for
this comparison. The first, and most important, is terminology. Even though there
are numerous features and functionalities for each JavaScript library that are similar,
they do not always fit neatly into predetermined headings. It remains imperative that
each library feature be weighted while keeping this in mind, and when appropriate,
read the full description that accompanies each heading. This is a fantastic starting
point for your own research and analysis.
&lt;/p&gt;
&lt;p&gt;
Although the groundwork has been laid, another factor to consider is that there is
still the effort to maintain an accurate comparison. Remember, this is a living document,
and you should use the chart whenever you begin a new project that requires a library.
After listening to developers who have used these libraries, we intend to make updates,
modifications, and maybe even a major overhaul. The intent is to facilitate discussion,
and to be the primary (most accurate) resource for determining which framework is
right for you, and right for the task you need to accomplish.
&lt;/p&gt;
&lt;p&gt;
Before the initial release, several of the programmers who are responsible for the
creation of these libraries were contacted, and their opinions will always be taken
into consideration. This helps us to maintain a balanced, unbiased opinion. The number
of options available to developers today can be daunting, and helping you to choose
the right tool should be done without any preconceived notions on our part. We will
not always be able to guarantee that each of the creators of these libraries agree
on our comparison criteria, but we will always take the steps necessary to listen
and cooperate.
&lt;/p&gt;
&lt;p&gt;
The final consideration is determining which libraries to include for comparison.
This is a little easier to determine, since the decision is driven from a set of closed
questions. Is the library licensed under an open-source license? Is there API documentation,
and how often is it updated? How mature is the library, and how often are updates
released? Is this a core library, or is it an extension/add-on/plugin to an existing
library? These are not the only questions to ask, but they are a few that can help
with the process of elimination.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=fc734769-f8e4-4b38-9ced-ca8f9a9b469f" /&gt;</description>
      <comments>http://www.spotgnome.com/CommentView,guid,fc734769-f8e4-4b38-9ced-ca8f9a9b469f.aspx</comments>
      <category>Javascript</category>
      <category>Programming</category>
    </item>
    <item>
      <trackback:ping>http://www.spotgnome.com/Trackback.aspx?guid=69b9f371-0c95-4c3c-961d-4e63446d60ef</trackback:ping>
      <pingback:server>http://www.spotgnome.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.spotgnome.com/PermaLink,guid,69b9f371-0c95-4c3c-961d-4e63446d60ef.aspx</pingback:target>
      <dc:creator>Guy Levin</dc:creator>
      <wfw:comment>http://www.spotgnome.com/CommentView,guid,69b9f371-0c95-4c3c-961d-4e63446d60ef.aspx</wfw:comment>
      <wfw:commentRss>http://www.spotgnome.com/SyndicationService.asmx/GetEntryCommentsRss?guid=69b9f371-0c95-4c3c-961d-4e63446d60ef</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
In 2007 I've worked with <strong>NUnitForms</strong>. It contains all major controls
testers and you can easily create your own ones for e.g. a Data Grid or a 3rd party
control. I had to create one for Janus GridEx and it wasn't really that hard. 
</p>
        <p>
A little reflection went a long way :) Lately, the whole project was at a standstill
for some time but now it seems it's revitalizing nicely with new people on board.
So if you haven't yet go take look. This is just one open source GUI testing platform
and I'm sure there are others... I haven't checked them out though.
</p>
        <p>
          <strong>Now to the big question: Is it worth it?  It depends...</strong>
        </p>
        <p>
I'm not a hardcore TDD practitioner but I like having repeatable unit tests. But having
automated GUI unit tests is in my opinion a waste of time. 
<br /><br />
Why? It simply isn't worth spending time writing them. You should have enough code
coverage with non GUI tests to find any bugs long before hitting the GUI. You might
want to be tempted to unit test control positions or visibility or some other property...
don't bother. 
<br /><br />
You'll spend your time better if you write more non GUI unit tests and check your
GUI by hand (eye).
</p>
        <p>
So what are they useful for? Well... I've used them for acceptance and integration
testing with great success.
</p>
        <p>
          <strong>Integration Tests...</strong>
        </p>
        <p>
... test how different parts of your application work together. These kinds of GUI
tests proved to be VERY useful and they are worth investing time in. They have a great
ROI (return on investment) once they're written. For example we had a large workflow
based application that was completely async in nature. It had a windows forms client
that could be deployed on multiple computers, all those clients connected to
a single server that hosted a few webservices for data modifications, retrieval and
some other stuff. 
</p>
        <p>
The whole app was also connected to Sharepoint server,  Exchange Server, SQL
Server, used InfoPath and a 3rd party software to export data from and into it. With
one single GUI integration test we could easily see if everything worked together
as it should. We mocked the InfoPath and 3rd party software but everything else ran
great. 
</p>
        <p>
The point of using GUI tests here is to see how and if your whole application works
with all parts integrated together from GUI interaction to Exchange connectivity.
Even the best non GUI integration tests simply don't do that. 
</p>
        <p>
          <strong>Acceptance Tests...</strong>
        </p>
        <p>
... test if your software is up to some specs usually defined by the business process.
They're in essence a black box test. You don't care what goes on inside the software
you just want to see if the output is correct for a certain input. In workflow based
processes this can be very useful since you know what the input and output parameters
are for your workflow. 
</p>
        <p>
For example you start the workflow in your app via NUnitForms, pressing "move in workflow"
buttons until the workflow end and then check if the output parameters have the correct
values. You can check for various different GUI parameters in this test along the
way but as I said above don't go overboard. I usually just check for visibility of
certain panels or grids... simple things like that.
</p>
        <p>
When I first started with GUI testing I thought it was a really big waste of time.
And to tell you the truth if you don't draw the line somewhere it is. I even had a
moment when I thought it was a good idea to test everything only with GUI tests. That
was so far over line I couldn't even see it anymore. Luckily that moment passed pretty
fast. Don't make the same mistake. If used wisely automated GUI tests are a big benefit.
</p>
        <img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=69b9f371-0c95-4c3c-961d-4e63446d60ef" />
      </body>
      <title>Automated GUI testing - Is it worth it?</title>
      <guid isPermaLink="false">http://www.spotgnome.com/PermaLink,guid,69b9f371-0c95-4c3c-961d-4e63446d60ef.aspx</guid>
      <link>http://www.spotgnome.com/2008/01/02/AutomatedGUITestingIsItWorthIt.aspx</link>
      <pubDate>Wed, 02 Jan 2008 09:39:05 GMT</pubDate>
      <description>&lt;p&gt;
In 2007 I've worked with &lt;strong&gt;NUnitForms&lt;/strong&gt;. It contains all major controls
testers and you can easily create your own ones for e.g. a Data Grid or a 3rd party
control. I had to create one for Janus GridEx and it wasn't really that hard. 
&lt;/p&gt;
&lt;p&gt;
A little reflection went a long way :) Lately, the whole project was at a standstill
for some time but now it seems it's revitalizing nicely with new people on board.
So if you haven't yet go take look. This is just one open source GUI testing platform
and I'm sure there are others... I haven't checked them out though.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Now to the big question: Is it worth it?&amp;nbsp; It depends...&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
I'm not a hardcore TDD practitioner but I like having repeatable unit tests. But having
automated GUI unit tests is in my opinion a waste of time. 
&lt;br&gt;
&lt;br&gt;
Why? It simply isn't worth spending time writing them. You should have enough code
coverage with non GUI tests to find any bugs long before hitting the GUI. You might
want to be tempted to unit test control positions or visibility or some other property...
don't bother. 
&lt;br&gt;
&lt;br&gt;
You'll spend your time better if you write more non GUI unit tests and check your
GUI by hand (eye).
&lt;/p&gt;
&lt;p&gt;
So what are they useful for? Well... I've used them for acceptance and integration
testing with great success.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Integration Tests...&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
... test how different parts of your application work together. These kinds of GUI
tests proved to be VERY useful and they are worth investing time in. They have a great
ROI (return on investment) once they're written. For example we had a large workflow
based application that was completely async in nature. It had a windows forms client
that could be deployed on&amp;nbsp;multiple computers, all those clients connected to
a single server that hosted a few webservices for data modifications, retrieval and
some other stuff. 
&lt;/p&gt;
&lt;p&gt;
The whole app was also connected to Sharepoint server,&amp;nbsp; Exchange Server, SQL
Server, used InfoPath and a 3rd party software to export data from and into it. With
one single GUI integration test we could easily see if everything worked together
as it should. We mocked the InfoPath and 3rd party software but everything else ran
great. 
&lt;/p&gt;
&lt;p&gt;
The point of using GUI tests here is to see how and if your whole application works
with all parts integrated together from GUI interaction to Exchange connectivity.
Even the best non GUI integration tests simply don't do that. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Acceptance Tests...&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
... test if your software is up to some specs usually defined by the business process.
They're in essence a black box test. You don't care what goes on inside the software
you just want to see if the output is correct for a certain input. In workflow based
processes this can be very useful since you know what the input and output parameters
are for your workflow. 
&lt;/p&gt;
&lt;p&gt;
For example you start the workflow in your app via NUnitForms, pressing "move in workflow"
buttons until the workflow end and then check if the output parameters have the correct
values. You can check for various different GUI parameters in this test along the
way but as I said above don't go overboard. I usually just check for visibility of
certain panels or grids... simple things like that.
&lt;/p&gt;
&lt;p&gt;
When I first started with GUI testing I thought it was a really big waste of time.
And to tell you the truth if you don't draw the line somewhere it is. I even had a
moment when I thought it was a good idea to test everything only with GUI tests. That
was so far over line I couldn't even see it anymore. Luckily that moment passed pretty
fast. Don't make the same mistake. If used wisely automated GUI tests are a big benefit.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=69b9f371-0c95-4c3c-961d-4e63446d60ef" /&gt;</description>
      <comments>http://www.spotgnome.com/CommentView,guid,69b9f371-0c95-4c3c-961d-4e63446d60ef.aspx</comments>
      <category>Programming</category>
      <category>Visual Studio</category>
    </item>
    <item>
      <trackback:ping>http://www.spotgnome.com/Trackback.aspx?guid=21a31223-2c2f-4c5e-a2e7-3bc76a7bc9b3</trackback:ping>
      <pingback:server>http://www.spotgnome.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.spotgnome.com/PermaLink,guid,21a31223-2c2f-4c5e-a2e7-3bc76a7bc9b3.aspx</pingback:target>
      <dc:creator>Guy Levin</dc:creator>
      <wfw:comment>http://www.spotgnome.com/CommentView,guid,21a31223-2c2f-4c5e-a2e7-3bc76a7bc9b3.aspx</wfw:comment>
      <wfw:commentRss>http://www.spotgnome.com/SyndicationService.asmx/GetEntryCommentsRss?guid=21a31223-2c2f-4c5e-a2e7-3bc76a7bc9b3</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <div class="postText">
          <p>
Partial methods are a new feature available in C# 3.0 that don't seem to get enough
credit. I think there was a lot of confusion early on about what partial methods were
and how they were used.
</p>
          <p>
Partial methods are intended to solve a major problem that is not only caused by code-generation
tools and also affects those same tools. For instance, you are writing a code-generation
tool but want to provide a way for the developers that are using your generated classes
to hook in to specific areas of the code. As such, you don't want them editing your
generated code since those customizations will be lost the next time the tool runs.
On the flip side of this scenario is the developer who needs to write the code that
hooks into those specific areas and doesn't want that code being lost the next time
the tool runs.
</p>
          <p>
Delegates are one solution to this type of problem. In the generated code, you declare
a delegate method that you then call at the appropriate areas. If no one has implemented
a concrete version of the delegate, the call will not do anything. However, if someone
has implemented am instance of that delegate then the call will run the code in that
instance. This sounds like a pretty good solution, and, until partial methods it really
was the only solution. The drawback is that the code for the delegate is always compiled
in to the runtime of your application and add to the runtime overhead of application
(granted, that overhead is minimal but it's still there).
</p>
          <p>
Partial classes helped with this problem by allowing the code-generation tools to
isolate the generated code in a partial class. This allowed the developer to add their
own methods to the class without fear that they would be overwritten the next time
the tool ran. However, it only helped partially. In order to accomplish our scenario,
you still needed to provide a delegate to allow the developer to hook into your process.
</p>
          <p>
If we take this a step further and look at partial methods, you will start to see
how they work and what the benefit is of using them. The following rules govern how
partials methods can be declared and used:
</p>
          <ol>
            <li>
Must be declared inside a partial class. 
</li>
            <li>
Must be declared as a <strong>void</strong> return type. 
</li>
            <li>
Must be declared with the <strong>partial</strong>. 
</li>
            <li>
Cannot be marked as <strong>extern</strong>. 
</li>
            <li>
Can be marked <strong>static</strong> or <strong>unsafe</strong>. 
</li>
            <li>
Can be generic. 
</li>
            <li>
Can have <strong>ref</strong> but not <strong>out</strong> parameters. 
</li>
            <li>
Cannot be referenced as a delegate until they are implemented 
</li>
            <li>
Cannot have access modifiers such as <strong>public</strong>, <strong>private</strong> or <strong>internal</strong>. 
</li>
            <li>
Cannot be declared as <strong>virtual</strong>. 
</li>
          </ol>
          <p>
Partial methods are implicitly marked as private. This means they cannot be called
from outside the partial class.
</p>
          <p>
Now that we have the rules out of the way, let's take a look at an example. This is
a completely contrived example, as you typically wouldn't declare both portions of
the partial class yourself.
</p>
          <div style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 8pt; PADDING-BOTTOM: 4px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 97.5%; CURSOR: text; MAX-HEIGHT: 800px; LINE-HEIGHT: 12pt; PADDING-TOP: 4px; BORDER-BOTTOM: gray 1px solid; FONT-FAMILY: consolas, 'Courier New', courier, monospace; HEIGHT: 463px; BACKGROUND-COLOR: #f4f4f4">
            <div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none">
              <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none">
                <span style="COLOR: #606060"> 1:</span>
                <span style="COLOR: #008000">//
This is the class that would normally have been autogenerated.</span>
              </pre>
              <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none">
                <span style="COLOR: #606060"> 2:</span>
                <span style="COLOR: #0000ff">public</span>
                <span style="COLOR: #0000ff">partial</span>
                <span style="COLOR: #0000ff">class</span> CustomTypedCollection</pre>
              <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none">
                <span style="COLOR: #606060"> 3:</span> {</pre>
              <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none">
                <span style="COLOR: #606060"> 4:</span>
                <span style="COLOR: #0000ff">partial</span>
                <span style="COLOR: #0000ff">void</span> BeforeAddingElement(CustomElement
element);</pre>
              <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none">
                <span style="COLOR: #606060"> 5:</span>  </pre>
              <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none">
                <span style="COLOR: #606060"> 6:</span>
                <span style="COLOR: #0000ff">public</span>
                <span style="COLOR: #0000ff">void</span> AddElement(CustomElement
element)</pre>
              <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none">
                <span style="COLOR: #606060"> 7:</span> {</pre>
              <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none">
                <span style="COLOR: #606060"> 8:</span> BeforeAddingElement();</pre>
              <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none">
                <span style="COLOR: #606060"> 9:</span> }</pre>
              <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none">
                <span style="COLOR: #606060"> 10:</span> }</pre>
              <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none">
                <span style="COLOR: #606060"> 11:</span>  </pre>
              <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none">
                <span style="COLOR: #606060"> 12:</span>
                <span style="COLOR: #0000ff">public</span>
                <span style="COLOR: #0000ff">partial</span>
                <span style="COLOR: #0000ff">class</span> CustomTypedCollection</pre>
              <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none">
                <span style="COLOR: #606060"> 13:</span> {</pre>
              <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none">
                <span style="COLOR: #606060"> 14:</span>
                <span style="COLOR: #0000ff">partial</span>
                <span style="COLOR: #0000ff">void</span> BeforeAddingElement(CustomElement
element)</pre>
              <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none">
                <span style="COLOR: #606060"> 15:</span> {</pre>
              <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none">
                <span style="COLOR: #606060"> 16:</span> Console.WriteLine(<span style="COLOR: #006080">"Element
"</span> + element + <span style="COLOR: #006080">" is being added."</span>);</pre>
              <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none">
                <span style="COLOR: #606060"> 17:</span> }</pre>
              <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none">
                <span style="COLOR: #606060"> 18:</span> }</pre>
              <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none">
                <span style="COLOR: #606060"> 19:</span>  </pre>
              <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none">
                <span style="COLOR: #606060"> 20:</span>
                <span style="COLOR: #0000ff">class</span> Program</pre>
              <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none">
                <span style="COLOR: #606060"> 21:</span> {</pre>
              <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none">
                <span style="COLOR: #606060"> 22:</span>
                <span style="COLOR: #0000ff">static</span>
                <span style="COLOR: #0000ff">void</span> Main(<span style="COLOR: #0000ff">string</span>[]
args)</pre>
              <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none">
                <span style="COLOR: #606060"> 23:</span> {</pre>
              <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none">
                <span style="COLOR: #606060"> 24:</span> CustomTypedCollection
c = <span style="COLOR: #0000ff">new</span> CustomTypedCollection();</pre>
              <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none">
                <span style="COLOR: #606060"> 25:</span> c.AddElemeent(<span style="COLOR: #0000ff">new</span> CustomElement());</pre>
              <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none">
                <span style="COLOR: #606060"> 26:</span> }</pre>
              <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none">
                <span style="COLOR: #606060"> 27:</span> }</pre>
            </div>
          </div>
          <p>
In this example, the code-generation tool declares a partial method BeforeAddingElement.
It is declared as just a function prototype with no implementation. Effectively, this
tells the developer that if they want to hook in to the AddElement process, they can
do so by declaring an implementation of the BeforeAddingElement method. If an implementation
is declared, the implementation and the call inside AddElement will be compiled in
to the runtime code. However, if no implementation is declared the call will be optimized
by the compiler and it will be entirely eliminated in the runtime code.
</p>
          <p>
This mechanism provides a lot of the same flexibility as delegates without the runtime
overhead. It also allows the developer to work with a much smaller implementation
of their portion of the partial class that contains only the few partial methods that
have been implemented.
</p>
        </div>
        <img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=21a31223-2c2f-4c5e-a2e7-3bc76a7bc9b3" />
      </body>
      <title>C# 3.0 - Partial Methods</title>
      <guid isPermaLink="false">http://www.spotgnome.com/PermaLink,guid,21a31223-2c2f-4c5e-a2e7-3bc76a7bc9b3.aspx</guid>
      <link>http://www.spotgnome.com/2007/12/27/C30PartialMethods.aspx</link>
      <pubDate>Thu, 27 Dec 2007 17:53:47 GMT</pubDate>
      <description>&lt;div class=postText&gt;
&lt;p&gt;
Partial methods are a new feature available in C# 3.0 that don't seem to get enough
credit. I think there was a lot of confusion early on about what partial methods were
and how they were used.
&lt;/p&gt;
&lt;p&gt;
Partial methods are intended to solve a major problem that is not only caused by code-generation
tools and also affects those same tools. For instance, you are writing a code-generation
tool but want to provide a way for the developers that are using your generated classes
to hook in to specific areas of the code. As such, you don't want them editing your
generated code since those customizations will be lost the next time the tool runs.
On the flip side of this scenario is the developer who needs to write the code that
hooks into those specific areas and doesn't want that code being lost the next time
the tool runs.
&lt;/p&gt;
&lt;p&gt;
Delegates are one solution to this type of problem. In the generated code, you declare
a delegate method that you then call at the appropriate areas. If no one has implemented
a concrete version of the delegate, the call will not do anything. However, if someone
has implemented am instance of that delegate then the call will run the code in that
instance. This sounds like a pretty good solution, and, until partial methods it really
was the only solution. The drawback is that the code for the delegate is always compiled
in to the runtime of your application and add to the runtime overhead of application
(granted, that overhead is minimal but it's still there).
&lt;/p&gt;
&lt;p&gt;
Partial classes helped with this problem by allowing the code-generation tools to
isolate the generated code in a partial class. This allowed the developer to add their
own methods to the class without fear that they would be overwritten the next time
the tool ran. However, it only helped partially. In order to accomplish our scenario,
you still needed to provide a delegate to allow the developer to hook into your process.
&lt;/p&gt;
&lt;p&gt;
If we take this a step further and look at partial methods, you will start to see
how they work and what the benefit is of using them. The following rules govern how
partials methods can be declared and used:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Must be declared inside a partial class. 
&lt;li&gt;
Must be declared as a &lt;strong&gt;void&lt;/strong&gt; return type. 
&lt;li&gt;
Must be declared with the &lt;strong&gt;partial&lt;/strong&gt;. 
&lt;li&gt;
Cannot be marked as &lt;strong&gt;extern&lt;/strong&gt;. 
&lt;li&gt;
Can be marked &lt;strong&gt;static&lt;/strong&gt; or &lt;strong&gt;unsafe&lt;/strong&gt;. 
&lt;li&gt;
Can be generic. 
&lt;li&gt;
Can have &lt;strong&gt;ref&lt;/strong&gt; but not &lt;strong&gt;out&lt;/strong&gt; parameters. 
&lt;li&gt;
Cannot be referenced as a delegate until they are implemented 
&lt;li&gt;
Cannot have access modifiers such as &lt;strong&gt;public&lt;/strong&gt;, &lt;strong&gt;private&lt;/strong&gt; or &lt;strong&gt;internal&lt;/strong&gt;. 
&lt;li&gt;
Cannot be declared as &lt;strong&gt;virtual&lt;/strong&gt;. 
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
Partial methods are implicitly marked as private. This means they cannot be called
from outside the partial class.
&lt;/p&gt;
&lt;p&gt;
Now that we have the rules out of the way, let's take a look at an example. This is
a completely contrived example, as you typically wouldn't declare both portions of
the partial class yourself.
&lt;/p&gt;
&lt;div style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 8pt; PADDING-BOTTOM: 4px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 97.5%; CURSOR: text; MAX-HEIGHT: 800px; LINE-HEIGHT: 12pt; PADDING-TOP: 4px; BORDER-BOTTOM: gray 1px solid; FONT-FAMILY: consolas, 'Courier New', courier, monospace; HEIGHT: 463px; BACKGROUND-COLOR: #f4f4f4"&gt;
&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;span style="COLOR: #606060"&gt; 1:&lt;/span&gt; &lt;span style="COLOR: #008000"&gt;//
This is the class that would normally have been autogenerated.&lt;/span&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;span style="COLOR: #606060"&gt; 2:&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;partial&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;class&lt;/span&gt; CustomTypedCollection&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;span style="COLOR: #606060"&gt; 3:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;span style="COLOR: #606060"&gt; 4:&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;partial&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt; BeforeAddingElement(CustomElement
element);&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;span style="COLOR: #606060"&gt; 5:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;span style="COLOR: #606060"&gt; 6:&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt; AddElement(CustomElement
element)&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;span style="COLOR: #606060"&gt; 7:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;span style="COLOR: #606060"&gt; 8:&lt;/span&gt; BeforeAddingElement();&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;span style="COLOR: #606060"&gt; 9:&lt;/span&gt; }&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;span style="COLOR: #606060"&gt; 10:&lt;/span&gt; }&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;span style="COLOR: #606060"&gt; 11:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;span style="COLOR: #606060"&gt; 12:&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;partial&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;class&lt;/span&gt; CustomTypedCollection&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;span style="COLOR: #606060"&gt; 13:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;span style="COLOR: #606060"&gt; 14:&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;partial&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt; BeforeAddingElement(CustomElement
element)&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;span style="COLOR: #606060"&gt; 15:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;span style="COLOR: #606060"&gt; 16:&lt;/span&gt; Console.WriteLine(&lt;span style="COLOR: #006080"&gt;"Element
"&lt;/span&gt; + element + &lt;span style="COLOR: #006080"&gt;" is being added."&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;span style="COLOR: #606060"&gt; 17:&lt;/span&gt; }&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;span style="COLOR: #606060"&gt; 18:&lt;/span&gt; }&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;span style="COLOR: #606060"&gt; 19:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;span style="COLOR: #606060"&gt; 20:&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;class&lt;/span&gt; Program&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;span style="COLOR: #606060"&gt; 21:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;span style="COLOR: #606060"&gt; 22:&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;static&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt; Main(&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;[]
args)&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;span style="COLOR: #606060"&gt; 23:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;span style="COLOR: #606060"&gt; 24:&lt;/span&gt; CustomTypedCollection
c = &lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt; CustomTypedCollection();&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;span style="COLOR: #606060"&gt; 25:&lt;/span&gt; c.AddElemeent(&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt; CustomElement());&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;span style="COLOR: #606060"&gt; 26:&lt;/span&gt; }&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;span style="COLOR: #606060"&gt; 27:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
In this example, the code-generation tool declares a partial method BeforeAddingElement.
It is declared as just a function prototype with no implementation. Effectively, this
tells the developer that if they want to hook in to the AddElement process, they can
do so by declaring an implementation of the BeforeAddingElement method. If an implementation
is declared, the implementation and the call inside AddElement will be compiled in
to the runtime code. However, if no implementation is declared the call will be optimized
by the compiler and it will be entirely eliminated in the runtime code.
&lt;/p&gt;
&lt;p&gt;
This mechanism provides a lot of the same flexibility as delegates without the runtime
overhead. It also allows the developer to work with a much smaller implementation
of their portion of the partial class that contains only the few partial methods that
have been implemented.
&lt;/p&gt;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=21a31223-2c2f-4c5e-a2e7-3bc76a7bc9b3" /&gt;</description>
      <comments>http://www.spotgnome.com/CommentView,guid,21a31223-2c2f-4c5e-a2e7-3bc76a7bc9b3.aspx</comments>
      <category>.Net</category>
      <category>Programming</category>
      <category>Visual Studio</category>
    </item>
    <item>
      <trackback:ping>http://www.spotgnome.com/Trackback.aspx?guid=d7b183d0-516b-48e9-ae1e-0f296a5b95ee</trackback:ping>
      <pingback:server>http://www.spotgnome.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.spotgnome.com/PermaLink,guid,d7b183d0-516b-48e9-ae1e-0f296a5b95ee.aspx</pingback:target>
      <dc:creator>Guy Levin</dc:creator>
      <wfw:comment>http://www.spotgnome.com/CommentView,guid,d7b183d0-516b-48e9-ae1e-0f296a5b95ee.aspx</wfw:comment>
      <wfw:commentRss>http://www.spotgnome.com/SyndicationService.asmx/GetEntryCommentsRss?guid=d7b183d0-516b-48e9-ae1e-0f296a5b95ee</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <strong>What does Assembla do?<br /></strong>
          <a href="http://www.Assembla.com">Assembla</a> provides tools and services
for building software quickly using global teams.
</p>
        <p>
          <strong>Is the service free?</strong>
          <br />
Yes, the online service is free for individuals and small groups. We make money when
we have larger groups that need premium tools, portfolios, and private servers.
</p>
        <blockquote>
          <strong>
            <font color="#006400">500MB of SVN for free…</font>
          </strong>
          <p>
          </p>
        </blockquote>
        <p>
I have been using Subversion for project work for some time now, and it seems that
most agree that it is the best Open Source solution available. I have enjoyed the
use of SVN provided by clients or employers, but only recently started considering
replacing my old local VSS server with a web-enabled SVN server of my own. My motivation
is to get code that I own off-site and have some redundancy along with improved accessibility.
I am also interested leveraging the benefits of the continual development and refinement
of SVN as an Open Source project. TortoiseSVN is a good example of that.
</p>
        <p>
I started by researching the requirements for installing SVN server. Installation
on a local Windows host seemed doable, but I wanted to install it on my web server.
Since my host doesn’t support applications, I’m on my own. I don’t even know what
OS the server is running. From what I’ve read, installing SVN on a site would be a
chore. Plus it would compete for space with site content. An alternative would be
to pay for a specialized SVN hosting service. Hard to justify the continual overhead
for that.
</p>
        <p>
So I Googled for free SVN. One result stood out as promising: Assembla. They give
away a 500mb SVN account with unlimited users and an integrated bug tracking setup
(Trac). For the quick, small projects I am looking to use it for, I can accept the
risk that Assembla flakes out as a business entity. Worst case I will still have my
latest build on my local. Assembla’s business model seems pretty sound to me anyway
- a successful freelance coder will eventuallly need more space if they get cosy using
the free service and will become a paying customer.
</p>
        <p>
          <strong>Here aro some of the Assembla tools:</strong>
        </p>
        <h2>
          <font size="2">Subversion</font>
        </h2>
        <div class="main-col-w">
          <div class="main-col">
            <div id="wiki-content">
              <p>
Subversion is the most popular centralized source code repository and version control
system.  Our subversion includes email alerts on commit, Trac code browsing,
and a post-commit hook to trigger.  And, we know that reliability is important
for subversion users, so we backup to failover servers in real time.  <a href="http://www.assembla.com/tour/svn">Learn
more</a>.
</p>
              <h3>
                <font size="2">Trac</font>
              </h3>
              <p>
Trac is a popular open source ticketing system, with the mission to "help developers
write great software while staying out of the way."   You can import and export
trac projects from Assembla.  We enhance trac with simplified team management,
HTML alerts (called "notifications" in trac), and hourly and weekly alert summaries. 
We support a few trac plugins, including XML-RPC for Eclipse integration.
</p>
              <h3>
                <font size="2">Scrum</font>
              </h3>
              <p>
The scrum tool collects reports from your team members in the stand-up meeting format: 
"What did I do, What will I do, What do I need."
</p>
              <h3>
                <font size="2">Chat</font>
              </h3>
              <p>
The chat tool provides a persistent chat room that you can use for daily meetings
or just to drop in.
</p>
            </div>
          </div>
        </div>
        <img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=d7b183d0-516b-48e9-ae1e-0f296a5b95ee" />
      </body>
      <title>Free Subversion Repository - Assembla</title>
      <guid isPermaLink="false">http://www.spotgnome.com/PermaLink,guid,d7b183d0-516b-48e9-ae1e-0f296a5b95ee.aspx</guid>
      <link>http://www.spotgnome.com/2007/12/26/FreeSubversionRepositoryAssembla.aspx</link>
      <pubDate>Wed, 26 Dec 2007 18:11:34 GMT</pubDate>
      <description>&lt;p&gt;
&lt;strong&gt;What does Assembla do?&lt;br&gt;
&lt;/strong&gt;&lt;a href="http://www.Assembla.com"&gt;Assembla&lt;/a&gt; provides tools and services
for building software quickly using global teams.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Is the service free?&lt;/strong&gt;
&lt;br&gt;
Yes, the online service is free for individuals and small groups. We make money when
we have larger groups that need premium tools, portfolios, and private servers.
&lt;/p&gt;
&lt;blockquote&gt;&lt;strong&gt;&lt;font color=#006400&gt;500MB of SVN for free…&lt;/font&gt;&lt;/strong&gt; 
&lt;p&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
I have been using Subversion for project work for some time now, and it seems that
most agree that it is the best Open Source solution available. I have enjoyed the
use of SVN provided by clients or employers, but only recently started considering
replacing my old local VSS server with a web-enabled SVN server of my own. My motivation
is to get code that I own off-site and have some redundancy along with improved accessibility.
I am also interested leveraging the benefits of the continual development and refinement
of SVN as an Open Source project. TortoiseSVN is a good example of that.
&lt;/p&gt;
&lt;p&gt;
I started by researching the requirements for installing SVN server. Installation
on a local Windows host seemed doable, but I wanted to install it on my web server.
Since my host doesn’t support applications, I’m on my own. I don’t even know what
OS the server is running. From what I’ve read, installing SVN on a site would be a
chore. Plus it would compete for space with site content. An alternative would be
to pay for a specialized SVN hosting service. Hard to justify the continual overhead
for that.
&lt;/p&gt;
&lt;p&gt;
So I Googled for free SVN. One result stood out as promising: Assembla. They give
away a 500mb SVN account with unlimited users and an integrated bug tracking setup
(Trac). For the quick, small projects I am looking to use it for, I can accept the
risk that Assembla flakes out as a business entity. Worst case I will still have my
latest build on my local. Assembla’s business model seems pretty sound to me anyway
- a successful freelance coder will eventuallly need more space if they get cosy using
the free service and will become a paying customer.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Here aro some of the Assembla tools:&lt;/strong&gt;
&lt;/p&gt;
&lt;h2&gt;&lt;font size=2&gt;Subversion&lt;/font&gt;
&lt;/h2&gt;
&lt;div class=main-col-w&gt;
&lt;div class=main-col&gt;
&lt;div id=wiki-content&gt;
&lt;p&gt;
Subversion is the most popular centralized source code repository and version control
system.&amp;nbsp; Our subversion includes email alerts on commit, Trac code browsing,
and a post-commit hook to trigger.&amp;nbsp; And, we know that reliability is important
for subversion users, so we backup to failover servers in real time.&amp;nbsp; &lt;a href="http://www.assembla.com/tour/svn"&gt;Learn
more&lt;/a&gt;.
&lt;/p&gt;
&lt;h3&gt;&lt;font size=2&gt;Trac&lt;/font&gt;
&lt;/h3&gt;
&lt;p&gt;
Trac is a popular open source ticketing system, with the mission to "help developers
write great software while staying out of the way." &amp;nbsp; You can import and export
trac projects from Assembla.&amp;nbsp; We enhance trac with simplified team management,
HTML alerts (called "notifications" in trac), and hourly and weekly alert summaries.&amp;nbsp;
We support a few trac plugins, including XML-RPC for Eclipse integration.
&lt;/p&gt;
&lt;h3&gt;&lt;font size=2&gt;Scrum&lt;/font&gt;
&lt;/h3&gt;
&lt;p&gt;
The scrum tool collects reports from your team members in the stand-up meeting format:&amp;nbsp;
"What did I do, What will I do, What do I need."
&lt;/p&gt;
&lt;h3&gt;&lt;font size=2&gt;Chat&lt;/font&gt;
&lt;/h3&gt;
&lt;p&gt;
The chat tool provides a persistent chat room that you can use for daily meetings
or just to drop in.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=d7b183d0-516b-48e9-ae1e-0f296a5b95ee" /&gt;</description>
      <comments>http://www.spotgnome.com/CommentView,guid,d7b183d0-516b-48e9-ae1e-0f296a5b95ee.aspx</comments>
      <category>Programming</category>
      <category>Project Management</category>
      <category>Site Reviews</category>
      <category>SVN</category>
      <category>Web 2.0</category>
    </item>
    <item>
      <trackback:ping>http://www.spotgnome.com/Trackback.aspx?guid=4ed286eb-30da-4bcf-8f73-53388979eef5</trackback:ping>
      <pingback:server>http://www.spotgnome.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.spotgnome.com/PermaLink,guid,4ed286eb-30da-4bcf-8f73-53388979eef5.aspx</pingback:target>
      <dc:creator>Guy Levin</dc:creator>
      <wfw:comment>http://www.spotgnome.com/CommentView,guid,4ed286eb-30da-4bcf-8f73-53388979eef5.aspx</wfw:comment>
      <wfw:commentRss>http://www.spotgnome.com/SyndicationService.asmx/GetEntryCommentsRss?guid=4ed286eb-30da-4bcf-8f73-53388979eef5</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Taken From: <strong><font color="#8a98a2" size="1"><a href="http://www.techdune.com/2007/10/05/20-ie-add-ons-for-web-developers-designers/">TechDune</a></font></strong></p>
        <p>
          <a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_sTeITsM1WVM/Rt33cTNlC3I/AAAAAAAAAKc/Tvf46FO4u9U/s1600-h/134817119_0d51b993ff_m.jpg">
            <img id="BLOGGER_PHOTO_ID_5106509618073635698" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: pointer; TEXT-ALIGN: center" src="http://bp1.blogger.com/_sTeITsM1WVM/Rt33cTNlC3I/AAAAAAAAAKc/Tvf46FO4u9U/s400/134817119_0d51b993ff_m.jpg" border="0" />
          </a>
        </p>
        <p>
Internet Explorer has cool add-ons which make the job of website designers and developers
much easier. Here is my list of 20+ excellent Firefox add-ons that every web developer
and designer should know about.
</p>
        <p>
          <span id="more-18">
          </span>
          <br />
          <a href="http://www.windowsmarketplace.com/trackclick.aspx?u=http%3a%2f%2fdw.com.com%2fredir%3f%26destUrl%3dhttp%253A%252F%252Fwww.microsoft.com%252Fdownloads%252Fdetails.aspx%253FFamilyID%253De59c3964-672d-4511-bb3e-2d5e1db91038%2526displaylang%253Den%26edId%3d1046%26lop%3dfeed.dl%26siteId%3d4%26part%3dieaddons%26pid%3d10529731%26subj%3diefeed&amp;p=2695980:1:0&amp;hsv=NRySY6SWr0ogkJhMt4JE85R%2fNeA%3d">
            <font color="#00a0e3">Internet
Explorer Developer Toolbar</font>
          </a>
          <br />
Variety of tools for quickly creating, understanding, and troubleshooting Web pages.
</p>
        <p>
          <a href="http://www.windowsmarketplace.com/details.aspx?view=info&amp;itemid=1014567">
            <font color="#00a0e3">IE
Watch</font>
          </a>
          <br />
Allows you to view and analyze HTTP/HTTPS headers, Cookies, GET queries and POST data.
</p>
        <p>
          <a href="http://www.windowsmarketplace.com/trackclick.aspx?u=http%3a%2f%2fdw.com.com%2fredir%3f%26destUrl%3dhttp%253A%252F%252Fsoftware-files.download.com%252Fsd%252FDZjQOUfnCG7-WUf-V9NChryO7BLKN1A7vI7sEso3UDu8juwSyjdQO3pccrANBw2OzVawgGmtNQjvqukbCf6MadiP076exLtM%252Fsoftware%252F10601535%252F10584819%252F1046%252FIEWebDeveloperV2.exe%253F%2526lop%253Dfeed.dl%2526subj%253Diefeed%2526part%253Dieaddons%2526pid%253D10601535%2526psid%253D10584819%2526ontid%253D12775%2526siteId%253D4%2526edId%253D1046%26edId%3d1046%26lop%3dfeed.dl%26siteId%3d4%26part%3dieaddons%26pid%3d10601535%26subj%3diefeed&amp;p=3127970:1:0&amp;hsv=shiZU%2b0Q8fjS%2bCf%2fcsUEtCf3fFc%3d">
            <font color="#00a0e3">IE
Web Developer</font>
          </a>
          <br />
Allows you to inspect and edit the live HTML DOM, evaluate expressions and display
error messages, explore source code of Web page and monitor DHTML Event and HTTP Traffic.
</p>
        <p>
          <a href="http://www.windowsmarketplace.com/trackclick.aspx?u=http%3a%2f%2fdw.com.com%2fredir%3f%26destUrl%3dhttp%253A%252F%252Fsoftware-files.download.com%252Fsd%252F1q40KuIQsyLUwAxbsuU3by2z-5fr5fhaLbP7l-vl-Fots_uX6-X4WtT_Axq18Xqm8xWbp3EMGxwA87h6LIl3oKJ32md1i6Xr%252Fsoftware%252F10632366%252F10632365%252F1046%252Fiespy_setup.exe%253F%2526lop%253Dfeed.dl%2526subj%253Diefeed%2526part%253Dieaddons%2526pid%253D10632366%2526psid%253D10632365%2526ontid%253D12775%2526siteId%253D4%2526edId%253D1046%26edId%3d1046%26lop%3dfeed.dl%26siteId%3d4%26part%3dieaddons%26pid%3d10632366%26subj%3diefeed&amp;p=3342921:1:0&amp;hsv=A9Rt4BWQYYhydGIdZwktPTWjr68%3d">
            <font color="#00a0e3">IESpy</font>
          </a>
          <br />
Allows one to inspect or manipulate the DOM of any IE Web browser control.<br /><span style="FONT-WEIGHT: bold"><br /></span><a href="http://www.windowsmarketplace.com/trackclick.aspx?u=http%3a%2f%2fdw.com.com%2fredir%3f%26destUrl%3dhttp%253A%252F%252Fsoftware-files.download.com%252Fsd%252FEQWQwH4_NBeRLeuH1e_Uynmdak8fOiqseZ1qTx86Kqx5nWpPHzoqrKxu4GcfDZ6ADFVJWJMRWfzcf-6EVgGY-u2AJwVNZGkM%252Fsoftware%252F10637792%252F10323909%252F1046%252Finstall.exe%253F%2526lop%253Dfeed.dl%2526subj%253Diefeed%2526part%253Dieaddons%2526pid%253D10637792%2526psid%253D10323909%2526ontid%253D12775%2526siteId%253D4%2526edId%253D1046%26edId%3d1046%26lop%3dfeed.dl%26siteId%3d4%26part%3dieaddons%26pid%3d10637792%26subj%3diefeed&amp;p=1092994:1:0&amp;hsv=%2fd3N2%2fdSL3XqxdHTe%2bpfLUOTsTs%3d"><font color="#00a0e3">DebugBar</font></a><br />
Brings new services to surfers and professionals. Surfers: zoom, direct Web search,
e-mail page screenshots, and color picker. Developers: view HTML code, cookies, JavaScript,
HTTP/HTTPS headers, and miscellaneous information.
</p>
        <p>
          <a href="http://www.windowsmarketplace.com/trackclick.aspx?u=http%3a%2f%2fdw.com.com%2fredir%3f%26destUrl%3dhttp%253A%252F%252Fsoftware-files.download.com%252Fsd%252FCzb_1gJZnfqyeco5d3ZXxfL5f9abE9Pk8vl_1psT0-Ty-X_WmxPT5ErLhqSR8s51VvPrS9eEq9_GgGOoI9smE_yqZcOF31Qo%252Fsoftware%252F10628498%252F10628499%252F1046%252FMSJavWU_8073687b82d41db93f4c2a04af2b34d.exe%253F%2526lop%253Dfeed.dl%2526subj%253Diefeed%2526part%253Dieaddons%2526pid%253D10628498%2526psid%253D10628499%2526ontid%253D12775%2526siteId%253D4%2526edId%253D1046%26edId%3d1046%26lop%3dfeed.dl%26siteId%3d4%26part%3dieaddons%26pid%3d10628498%26subj%3diefeed&amp;p=3389863:1:0&amp;hsv=iavg%2brJBB%2fv%2fRQeeOBx%2fBJNDyG8%3d">
            <font color="#00a0e3">Virtual
Machine</font>
          </a>
          <br />
Allows you to view java applets on Web pages.
</p>
        <p>
          <a href="http://www.windowsmarketplace.com/trackclick.aspx?u=http%3a%2f%2fdw.com.com%2fredir%3f%26destUrl%3dhttp%253A%252F%252Fsoftware-files.download.com%252Fsd%252F64Z6W_iuQcN38LF6O3pQaOqN9JpsM-eg6o30mmwz56DqjfSabDPnoMPr3WYixQ8kcOcoOlK35Qf7B-omlEpnm1p2ltgM_hz6%252Fsoftware%252F10697995%252F10529724%252F1046%252FFiddlerSetup.exe%253F%2526lop%253Dfeed.dl%2526subj%253Diefeed%2526part%253Dieaddons%2526pid%253D10697995%2526psid%253D10529724%2526ontid%253D12775%2526siteId%253D4%2526edId%253D1046%26edId%3d1046%26lop%3dfeed.dl%26siteId%3d4%26part%3dieaddons%26pid%3d10697995%26subj%3diefeed&amp;p=2695979:1:0&amp;hsv=SX71LyS%2bss3FSp7dn4y2nYj2Yv8%3d">
            <font color="#00a0e3">Microsoft
Fiddler</font>
          </a>
          <br />
Logs all HTTP traffic between your computer and the Internet.
</p>
        <p>
          <a href="http://www.windowsmarketplace.com/trackclick.aspx?u=http%3a%2f%2fdw.com.com%2fredir%3f%26destUrl%3dhttp%253A%252F%252Fsoftware-files.download.com%252Fsd%252F5Egiicl5TOIp77QipiRoUnRdB2KQM6x9dF0HYpAzrH10XQdikDOsfZaFILTik97H1WrJBAx5qHcRaTqRR6-_BT2qiBGGvzwk%252Fsoftware%252F10637589%252F10637588%252F1046%252Fsetuptangram.zip%253F%2526lop%253Dfeed.dl%2526subj%253Diefeed%2526part%253Dieaddons%2526pid%253D10637589%2526psid%253D10637588%2526ontid%253D12775%2526siteId%253D4%2526edId%253D1046%26edId%3d1046%26lop%3dfeed.dl%26siteId%3d4%26part%3dieaddons%26pid%3d10637589%26subj%3diefeed&amp;p=3356105:1:0&amp;hsv=pdfUHGKyFGqAduhT3JhtasxcDH4%3d">
            <font color="#00a0e3">Tangram
Xtml Designer</font>
          </a>
          <br />
Visual designer for IE Band Object, activeX Control and .NET user control.
</p>
        <p>
          <a href="http://www.windowsmarketplace.com/trackclick.aspx?u=http%3a%2f%2fdw.com.com%2fredir%3f%26destUrl%3dhttp%253A%252F%252Fsoftware-files.download.com%252Fsd%252F1LfCQ8qi9dea9bfUan0l8QC-vfNc3W2VAL6981zdbZUAvr3zXN1tlcywOhV12ODOYMTMfjP5DWPoWtg5aHIrFY4e4s8RUuyH%252Fsoftware%252F10721798%252F10078399%252F1046%252Fhttpwatch.exe%253F%2526lop%253Dfeed.dl%2526subj%253Diefeed%2526part%253Dieaddons%2526pid%253D10721798%2526psid%253D10078399%2526ontid%253D12775%2526siteId%253D4%2526edId%253D1046%26edId%3d1046%26lop%3dfeed.dl%26siteId%3d4%26part%3dieaddons%26pid%3d10721798%26subj%3diefeed&amp;p=2596029:1:0&amp;hsv=SvcI1vPzqpNe1oXBUx99o5d3Eu8%3d">
            <font color="#00a0e3">Http
Watch</font>
          </a>
          <br />
HttpWatch shows you HTTP and HTTPS traffic from within IE allowing you to quickly
debug, fix and optimize your Web site.
</p>
        <p>
          <a href="http://www.windowsmarketplace.com/trackclick.aspx?u=http%3a%2f%2fdw.com.com%2fredir%3f%26destUrl%3dhttp%253A%252F%252Fsoftware-files.download.com%252Fsd%252FfCoPnsI3BOnT2sAiqaaKzXZ4cmhEW1TydnhyaERbVPJ2eHJoRFtU8nNKP_NKwWmfohyNlHbiO8lRFxgKMNNzrd61eT8Co8CL%252Fsoftware%252F10607501%252F10605652%252F1046%252FEmbeddedWB_D2005_Version_14.61.zip%253F%2526lop%253Dfeed.dl%2526subj%253Diefeed%2526part%253Dieaddons%2526pid%253D10607501%2526psid%253D10605652%2526ontid%253D12775%2526siteId%253D4%2526edId%253D1046%26edId%3d1046%26lop%3dfeed.dl%26siteId%3d4%26part%3dieaddons%26pid%3d10607501%26subj%3diefeed&amp;p=3185425:1:0&amp;hsv=Nsru5LJHxmV42sHtH%2fomx5WpUno%3d">
            <font color="#00a0e3">Embedded
Web Browser</font>
          </a>
          <br />
The package contains all the programmer need to extend the development of a Web browser.
</p>
        <p>
          <a href="http://www.windowsmarketplace.com/trackclick.aspx?u=http%3a%2f%2fdw.com.com%2fredir%3f%26destUrl%3dhttp%253A%252F%252Fsoftware-files.download.com%252Fsd%252FdF1_rugh847hsm-d8v5WaaDgMLbCbGnloOAwtsJsaeWg4DC2wmxp5YFwtcQ2QEopCf5WaN0NEKMn0lB1HYfrhLcPDX9OGP2H%252Fsoftware%252F10636043%252F10539663%252F1046%252FCGToolbar.exe%253F%2526lop%253Dfeed.dl%2526subj%253Diefeed%2526part%253Dieaddons%2526pid%253D10636043%2526psid%253D10539663%2526ontid%253D12782%2526siteId%253D4%2526edId%253D1046%26edId%3d1046%26lop%3dfeed.dl%26siteId%3d4%26part%3dieaddons%26pid%3d10636043%26subj%3diefeed&amp;p=2752770:1:0&amp;hsv=rKcpaBuqnvW8a1r5kDG8riooCjo%3d">
            <font color="#00a0e3">CGToolbar</font>
          </a>
          <br />
Must have tool for CG Artists, Animators, VFX and 3d professionals.
</p>
        <p>
          <a href="http://www.windowsmarketplace.com/trackclick.aspx?u=http%3a%2f%2fdw.com.com%2fredir%3f%26destUrl%3dhttp%253A%252F%252Fsoftware-files.download.com%252Fsd%252FUjxOHUwyNK85OQN-h1cPUzLobizcvxg0MuhuLNy_GDQy6G4s3L8YNJPr7qlf_gqEpSOoYIwaxZlF3KVoD5NeBnZyKg0ZtR92%252Fsoftware%252F10577783%252F10297190%252F1046%252Fsitestudio6_en_pro_dl.exe%253F%2526lop%253Dfeed.dl%2526subj%253Diefeed%2526part%253Dieaddons%2526pid%253D10577783%2526psid%253D10297190%2526ontid%253D2048%2526siteId%253D4%2526edId%253D1046%26edId%3d1046%26lop%3dfeed.dl%26siteId%3d4%26part%3dieaddons%26pid%3d10577783%26subj%3diefeed&amp;p=1175872:1:0&amp;hsv=PPnF%2bN78qjKiYPmHY3rch0Qk7ek%3d">
            <font color="#00a0e3">Site
Studio 6</font>
          </a>
          <br />
Build rich content Web sites, with no HTML skills required.
</p>
        <p>
          <a href="http://www.windowsmarketplace.com/trackclick.aspx?u=http%3a%2f%2fdw.com.com%2fredir%3f%26destUrl%3dhttp%253A%252F%252Fsoftware-files.download.com%252Fsd%252Fq5FoGIa8tv_uTLb7f6YTDp9borQcfFdKn1uitBx8V0qfW6K0HHxXShmncobgbgV0KJ2d_2gJ8NpuA6o-uEUDhT_VUapwU7NS%252Fsoftware%252F8355401%252F10071084%252F1046%252Fvf41031na.exe%253F%2526lop%253Dfeed.dl%2526subj%253Diefeed%2526part%253Dieaddons%2526pid%253D8355401%2526psid%253D10071084%2526ontid%253D2402%2526siteId%253D4%2526edId%253D1046%26edId%3d1046%26lop%3dfeed.dl%26siteId%3d4%26part%3dieaddons%26pid%3d8355401%26subj%3diefeed&amp;p=2208:1:0&amp;hsv=vKtrXksuUJS17T0O0mrxxbhPMDk%3d">
            <font color="#00a0e3">Haptek
Player</font>
          </a>
          <br />
An ActiveX control and Netscape Navigator Plugin that allows any webpage or application
(with ActiveX support) to include Haptek’s Autonomous characters.<br /><a href="http://www.windowsmarketplace.com/trackclick.aspx?u=http%3a%2f%2fdw.com.com%2fredir%3f%26destUrl%3dhttp%253A%252F%252Fsoftware-files.download.com%252Fsd%252Fvht_YSGMDab86z0jcKJoDRz6iajJoWnWHPqJqMmhadYc-omoyaFp1pB4GXT7A9poSwLT6znrBuuTmJ8aQm2q4useW7oZB2jt%252Fsoftware%252F10703431%252F10066500%252F1046%252Ffhsetup.exe%253F%2526lop%253Dfeed.dl%2526subj%253Diefeed%2526part%253Dieaddons%2526pid%253D10703431%2526psid%253D10066500%2526ontid%253D12782%2526siteId%253D4%2526edId%253D1046%26edId%3d1046%26lop%3dfeed.dl%26siteId%3d4%26part%3dieaddons%26pid%3d10703431%26subj%3diefeed&amp;p=4152:1:0&amp;hsv=QOA5Iapcf3PFfg%2bS8Fbs8i2kHsg%3d"><br /><font color="#00a0e3">Flash2X Flash Hunter</font></a><br />
Save Flash movies from web pages.
</p>
        <p>
          <a href="http://www.windowsmarketplace.com/trackclick.aspx?u=http%3a%2f%2fdw.com.com%2fredir%3f%26destUrl%3dhttp%253A%252F%252Fsoftware-files.download.com%252Fsd%252FxnjgQplEBzJGMXemqEI7eITHWMpNTwWFhMdYyk1PBYWEx1jKTU8FhUqyEVTh2hwDo7Jp15ISzEMKxb_nl3033I47g-FPdx59%252Fsoftware%252F10579086%252F10515220%252F1046%252Fimacros-setup.exe%253F%2526lop%253Dfeed.dl%2526subj%253Diefeed%2526part%253Dieaddons%2526pid%253D10579086%2526psid%253D10515220%2526ontid%253D2068%2526siteId%253D4%2526edId%253D1046%26edId%3d1046%26lop%3dfeed.dl%26siteId%3d4%26part%3dieaddons%26pid%3d10579086%26subj%3diefeed&amp;p=2614139:1:0&amp;hsv=V8SIwHgnqc1iJ4QxMGsohd51Glw%3d">
            <font color="#00a0e3">iOpus
iMacros</font>
          </a>
          <br />
Check the same sites every day,data upload, online marketing and functional testing
and regression testing Web sites:
</p>
        <p>
          <a href="http://www.windowsmarketplace.com/trackclick.aspx?u=http%3a%2f%2fdw.com.com%2fredir%3f%26destUrl%3dhttp%253A%252F%252Fsoftware-files.download.com%252Fsd%252FoYIsJkNnMNtVWHRXUTByTPHSNU5RxqYD8dI1TlHGpgPx0jVOUcamA2sADEatgweRTStm0EZXa4aK3Ad72yPkYLR2jiJOeYv7%252Fsoftware%252F10678430%252F10467247%252F1046%252FRadToolbar_1_5_0_trial.exe%253F%2526lop%253Dfeed.dl%2526subj%253Diefeed%2526part%253Dieaddons%2526pid%253D10678430%2526psid%253D10467247%2526ontid%253D2070%2526siteId%253D4%2526edId%253D1046%26edId%3d1046%26lop%3dfeed.dl%26siteId%3d4%26part%3dieaddons%26pid%3d10678430%26subj%3diefeed&amp;p=3136786:1:0&amp;hsv=kcsd5sy2aCXPtzufTsmf3MlhxvU%3d">
            <font color="#00a0e3">Telerik
RadToolBar</font>
          </a>
          <br />
A flexible component for implementation of tool and button strips, needed in most
web applications.
</p>
        <p>
          <a href="http://www.windowsmarketplace.com/trackclick.aspx?u=http%3a%2f%2fdw.com.com%2fredir%3f%26destUrl%3dhttp%253A%252F%252Fsoftware-files.download.com%252Fsd%252FOGvXCe7_PlYIQUfpc5eDIZ8FKj_h9XqgnwUqP-H1eqCfBSo_4fV6oD6MAGvpscBuR13K2YzCvAkcJQoSLvzJwp0YLpww82kV%252Fsoftware%252F10593876%252F10002835%252F1046%252Fuedit32.zip%253F%2526lop%253Dfeed.dl%2526subj%253Diefeed%2526part%253Dieaddons%2526pid%253D10593876%2526psid%253D10002835%2526ontid%253D2352%2526siteId%253D4%2526edId%253D1046%26edId%3d1046%26lop%3dfeed.dl%26siteId%3d4%26part%3dieaddons%26pid%3d10593876%26subj%3diefeed&amp;p=1444018:1:0&amp;hsv=vXg1NKmmtc%2fGHhMfNSHpsS%2bRPTs%3d">
            <font color="#00a0e3">UltraEdit-32</font>
          </a>
          <br />
Powerful Text, HEX, HTML, PHP and Programmer’s Editor.
</p>
        <p>
          <a href="http://www.windowsmarketplace.com/trackclick.aspx?u=http%3a%2f%2fdw.com.com%2fredir%3f%26destUrl%3dhttp%253A%252F%252Fsoftware-files.download.com%252Fsd%252Fp0XzbRV-D0GrMGzfvWBYLXj0phgPIF03ePSmGA8gXTd49KYYDyBdNy0NnVHbFmSYoktu-fSPXXQoQDeWHDpt5VEJiW4m9qvs%252Fsoftware%252F10702915%252F10492423%252F1046%252Fpost2blog.zip%253F%2526lop%253Dfeed.dl%2526subj%253Diefeed%2526part%253Dieaddons%2526pid%253D10702915%2526psid%253D10492423%2526ontid%253D12945%2526siteId%253D4%2526edId%253D1046%26edId%3d1046%26lop%3dfeed.dl%26siteId%3d4%26part%3dieaddons%26pid%3d10702915%26subj%3diefeed&amp;p=2428315:1:0&amp;hsv=agfVI7zRyiaA5Af9TbJF5GiRFRk%3d">
            <font color="#00a0e3">Bytescout
Post2Blog</font>
          </a>
          <br />
Freeware powerful blog editor for WordPress, Typepad, MovableType and other blogs.
</p>
        <p>
          <a href="http://www.windowsmarketplace.com/trackclick.aspx?u=http%3a%2f%2fdw.com.com%2fredir%3f%26destUrl%3dhttp%253A%252F%252Fsoftware-files.download.com%252Fsd%252F56fn4rMAQvI5ldTk4QAhGDn6y35XxlGsOfrLflfGUaw5-st-V8ZRrMpI6wmVHtBTGZ9RSfw0fcrO1eJr9wCQbR3KC0-nykpF%252Fsoftware%252F10256717%252F10256716%252F1046%252Fsearchmonster.zip%253F%2526lop%253Dfeed.dl%2526subj%253Diefeed%2526part%253Dieaddons%2526pid%253D10256717%2526psid%253D10256716%2526ontid%253D12775%2526siteId%253D4%2526edId%253D1046%26edId%3d1046%26lop%3dfeed.dl%26siteId%3d4%26part%3dieaddons%26pid%3d10256717%26subj%3diefeed&amp;p=15638:1:0&amp;hsv=JD1nk1SAB0oXBl2g7Et5UCCerwQ%3d">
            <font color="#00a0e3">Search
Monster</font>
          </a>
          <br />
Free Flash Web Directory &amp; Internet Search Engine is the Flash-remoting Web directory
instant content for you Web site.
</p>
        <p>
          <a href="http://www.windowsmarketplace.com/trackclick.aspx?u=http%3a%2f%2fdw.com.com%2fredir%3f%26destUrl%3dhttp%253A%252F%252Fppd-files.download.com%252Fsd%252F0TJ0mCmV91es3m-G0WJr6sluwJBdHT5hyW7AkF0dPmHJbsCQXR0-YQCgwY0sv0GhZHElD_Hm5n642auK6zciEyGGZGUIUo0c%252Fsoftware%252F10636341%252F10548985%252F1046%252FZendStudio-5_5_0.exe%253F%2526lop%253Dfeed.dl%2526subj%253Diefeed%2526part%253Dieaddons%2526pid%253D10636341%2526psid%253D10548985%2526ontid%253D7957%2526siteId%253D4%2526edId%253D1046%26edId%3d1046%26lop%3dfeed.dl%26siteId%3d4%26part%3dieaddons%26pid%3d10636341%26subj%3diefeed&amp;p=2805822:1:0&amp;hsv=zvCRcYBiCivHn4WqKBGixvj%2b4uM%3d">
            <font color="#00a0e3">Zend
Studio</font>
          </a>
          <br />
Encompasses all the development components necessary for the full PHP application.
</p>
        <p>
          <a href="http://www.windowsmarketplace.com/details.aspx?view=info&amp;itemid=2630257">
            <font color="#00a0e3">DbaBar</font>
          </a>
          <br />
Integrated toolbar enabling Oracle Database Administrators to browse their databases
from within Internet Explorer within minutes after installation.
</p>
        <p>
          <a href="http://www.windowsmarketplace.com/trackclick.aspx?u=http%3a%2f%2fdw.com.com%2fredir%3f%26destUrl%3dhttp%253A%252F%252Fsoftware-files.download.com%252Fsd%252FSTHOhVFgt4QdpxVKfAHlQGNdZsey-8gQY11mx7L7yBBjXWbHsvvIEF83NFBhwiIFPb9GKVmnhsAmhBgQbM9eAPqM067B8vmq%252Fsoftware%252F10606837%252F10341955%252F1046%252Fbar275.exe%253F%2526lop%253Dfeed.dl%2526subj%253Diefeed%2526part%253Dieaddons%2526pid%253D10606837%2526psid%253D10341955%2526ontid%253D12775%2526siteId%253D4%2526edId%253D1046%26edId%3d1046%26lop%3dfeed.dl%26siteId%3d4%26part%3dieaddons%26pid%3d10606837%26subj%3diefeed&amp;p=2630257:1:0&amp;hsv=I00GKWFubrkF7eG8%2bUm%2fTLCPFEE%3d">
            <font color="#00a0e3">Explorer
Toolbar Maker</font>
          </a>
          <br />
lets you create your own Explorer bar from any HTML page, picture, Macromedia Flash
file, or Microsoft Office document.
</p>
        <img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=4ed286eb-30da-4bcf-8f73-53388979eef5" />
      </body>
      <title>20+ IE Add-ons For Web Developers &amp; Designers</title>
      <guid isPermaLink="false">http://www.spotgnome.com/PermaLink,guid,4ed286eb-30da-4bcf-8f73-53388979eef5.aspx</guid>
      <link>http://www.spotgnome.com/2007/12/23/20IEAddonsForWebDevelopersDesigners.aspx</link>
      <pubDate>Sun, 23 Dec 2007 11:40:15 GMT</pubDate>
      <description>&lt;p&gt;
Taken From: &lt;strong&gt;&lt;font color=#8a98a2 size=1&gt;&lt;a href="http://www.techdune.com/2007/10/05/20-ie-add-ons-for-web-developers-designers/"&gt;TechDune&lt;/a&gt;&lt;/font&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_sTeITsM1WVM/Rt33cTNlC3I/AAAAAAAAAKc/Tvf46FO4u9U/s1600-h/134817119_0d51b993ff_m.jpg"&gt;&lt;img id=BLOGGER_PHOTO_ID_5106509618073635698 style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: pointer; TEXT-ALIGN: center" src="http://bp1.blogger.com/_sTeITsM1WVM/Rt33cTNlC3I/AAAAAAAAAKc/Tvf46FO4u9U/s400/134817119_0d51b993ff_m.jpg" border=0&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Internet Explorer has cool add-ons which make the job of website designers and developers
much easier. Here is my list of 20+ excellent Firefox add-ons that every web developer
and designer should know about.
&lt;/p&gt;
&lt;p&gt;
&lt;span id=more-18&gt;&lt;/span&gt;
&lt;br&gt;
&lt;a href="http://www.windowsmarketplace.com/trackclick.aspx?u=http%3a%2f%2fdw.com.com%2fredir%3f%26destUrl%3dhttp%253A%252F%252Fwww.microsoft.com%252Fdownloads%252Fdetails.aspx%253FFamilyID%253De59c3964-672d-4511-bb3e-2d5e1db91038%2526displaylang%253Den%26edId%3d1046%26lop%3dfeed.dl%26siteId%3d4%26part%3dieaddons%26pid%3d10529731%26subj%3diefeed&amp;amp;p=2695980:1:0&amp;amp;hsv=NRySY6SWr0ogkJhMt4JE85R%2fNeA%3d"&gt;&lt;font color=#00a0e3&gt;Internet
Explorer Developer Toolbar&lt;/font&gt;&lt;/a&gt;
&lt;br&gt;
Variety of tools for quickly creating, understanding, and troubleshooting Web pages.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.windowsmarketplace.com/details.aspx?view=info&amp;amp;itemid=1014567"&gt;&lt;font color=#00a0e3&gt;IE
Watch&lt;/font&gt;&lt;/a&gt;
&lt;br&gt;
Allows you to view and analyze HTTP/HTTPS headers, Cookies, GET queries and POST data.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.windowsmarketplace.com/trackclick.aspx?u=http%3a%2f%2fdw.com.com%2fredir%3f%26destUrl%3dhttp%253A%252F%252Fsoftware-files.download.com%252Fsd%252FDZjQOUfnCG7-WUf-V9NChryO7BLKN1A7vI7sEso3UDu8juwSyjdQO3pccrANBw2OzVawgGmtNQjvqukbCf6MadiP076exLtM%252Fsoftware%252F10601535%252F10584819%252F1046%252FIEWebDeveloperV2.exe%253F%2526lop%253Dfeed.dl%2526subj%253Diefeed%2526part%253Dieaddons%2526pid%253D10601535%2526psid%253D10584819%2526ontid%253D12775%2526siteId%253D4%2526edId%253D1046%26edId%3d1046%26lop%3dfeed.dl%26siteId%3d4%26part%3dieaddons%26pid%3d10601535%26subj%3diefeed&amp;amp;p=3127970:1:0&amp;amp;hsv=shiZU%2b0Q8fjS%2bCf%2fcsUEtCf3fFc%3d"&gt;&lt;font color=#00a0e3&gt;IE
Web Developer&lt;/font&gt;&lt;/a&gt;
&lt;br&gt;
Allows you to inspect and edit the live HTML DOM, evaluate expressions and display
error messages, explore source code of Web page and monitor DHTML Event and HTTP Traffic.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.windowsmarketplace.com/trackclick.aspx?u=http%3a%2f%2fdw.com.com%2fredir%3f%26destUrl%3dhttp%253A%252F%252Fsoftware-files.download.com%252Fsd%252F1q40KuIQsyLUwAxbsuU3by2z-5fr5fhaLbP7l-vl-Fots_uX6-X4WtT_Axq18Xqm8xWbp3EMGxwA87h6LIl3oKJ32md1i6Xr%252Fsoftware%252F10632366%252F10632365%252F1046%252Fiespy_setup.exe%253F%2526lop%253Dfeed.dl%2526subj%253Diefeed%2526part%253Dieaddons%2526pid%253D10632366%2526psid%253D10632365%2526ontid%253D12775%2526siteId%253D4%2526edId%253D1046%26edId%3d1046%26lop%3dfeed.dl%26siteId%3d4%26part%3dieaddons%26pid%3d10632366%26subj%3diefeed&amp;amp;p=3342921:1:0&amp;amp;hsv=A9Rt4BWQYYhydGIdZwktPTWjr68%3d"&gt;&lt;font color=#00a0e3&gt;IESpy&lt;/font&gt;&lt;/a&gt;
&lt;br&gt;
Allows one to inspect or manipulate the DOM of any IE Web browser control.&lt;br&gt;
&lt;span style="FONT-WEIGHT: bold"&gt;
&lt;br&gt;
&lt;/span&gt;&lt;a href="http://www.windowsmarketplace.com/trackclick.aspx?u=http%3a%2f%2fdw.com.com%2fredir%3f%26destUrl%3dhttp%253A%252F%252Fsoftware-files.download.com%252Fsd%252FEQWQwH4_NBeRLeuH1e_Uynmdak8fOiqseZ1qTx86Kqx5nWpPHzoqrKxu4GcfDZ6ADFVJWJMRWfzcf-6EVgGY-u2AJwVNZGkM%252Fsoftware%252F10637792%252F10323909%252F1046%252Finstall.exe%253F%2526lop%253Dfeed.dl%2526subj%253Diefeed%2526part%253Dieaddons%2526pid%253D10637792%2526psid%253D10323909%2526ontid%253D12775%2526siteId%253D4%2526edId%253D1046%26edId%3d1046%26lop%3dfeed.dl%26siteId%3d4%26part%3dieaddons%26pid%3d10637792%26subj%3diefeed&amp;amp;p=1092994:1:0&amp;amp;hsv=%2fd3N2%2fdSL3XqxdHTe%2bpfLUOTsTs%3d"&gt;&lt;font color=#00a0e3&gt;DebugBar&lt;/font&gt;&lt;/a&gt;
&lt;br&gt;
Brings new services to surfers and professionals. Surfers: zoom, direct Web search,
e-mail page screenshots, and color picker. Developers: view HTML code, cookies, JavaScript,
HTTP/HTTPS headers, and miscellaneous information.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.windowsmarketplace.com/trackclick.aspx?u=http%3a%2f%2fdw.com.com%2fredir%3f%26destUrl%3dhttp%253A%252F%252Fsoftware-files.download.com%252Fsd%252FCzb_1gJZnfqyeco5d3ZXxfL5f9abE9Pk8vl_1psT0-Ty-X_WmxPT5ErLhqSR8s51VvPrS9eEq9_GgGOoI9smE_yqZcOF31Qo%252Fsoftware%252F10628498%252F10628499%252F1046%252FMSJavWU_8073687b82d41db93f4c2a04af2b34d.exe%253F%2526lop%253Dfeed.dl%2526subj%253Diefeed%2526part%253Dieaddons%2526pid%253D10628498%2526psid%253D10628499%2526ontid%253D12775%2526siteId%253D4%2526edId%253D1046%26edId%3d1046%26lop%3dfeed.dl%26siteId%3d4%26part%3dieaddons%26pid%3d10628498%26subj%3diefeed&amp;amp;p=3389863:1:0&amp;amp;hsv=iavg%2brJBB%2fv%2fRQeeOBx%2fBJNDyG8%3d"&gt;&lt;font color=#00a0e3&gt;Virtual
Machine&lt;/font&gt;&lt;/a&gt;
&lt;br&gt;
Allows you to view java applets on Web pages.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.windowsmarketplace.com/trackclick.aspx?u=http%3a%2f%2fdw.com.com%2fredir%3f%26destUrl%3dhttp%253A%252F%252Fsoftware-files.download.com%252Fsd%252F64Z6W_iuQcN38LF6O3pQaOqN9JpsM-eg6o30mmwz56DqjfSabDPnoMPr3WYixQ8kcOcoOlK35Qf7B-omlEpnm1p2ltgM_hz6%252Fsoftware%252F10697995%252F10529724%252F1046%252FFiddlerSetup.exe%253F%2526lop%253Dfeed.dl%2526subj%253Diefeed%2526part%253Dieaddons%2526pid%253D10697995%2526psid%253D10529724%2526ontid%253D12775%2526siteId%253D4%2526edId%253D1046%26edId%3d1046%26lop%3dfeed.dl%26siteId%3d4%26part%3dieaddons%26pid%3d10697995%26subj%3diefeed&amp;amp;p=2695979:1:0&amp;amp;hsv=SX71LyS%2bss3FSp7dn4y2nYj2Yv8%3d"&gt;&lt;font color=#00a0e3&gt;Microsoft
Fiddler&lt;/font&gt;&lt;/a&gt;
&lt;br&gt;
Logs all HTTP traffic between your computer and the Internet.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.windowsmarketplace.com/trackclick.aspx?u=http%3a%2f%2fdw.com.com%2fredir%3f%26destUrl%3dhttp%253A%252F%252Fsoftware-files.download.com%252Fsd%252F5Egiicl5TOIp77QipiRoUnRdB2KQM6x9dF0HYpAzrH10XQdikDOsfZaFILTik97H1WrJBAx5qHcRaTqRR6-_BT2qiBGGvzwk%252Fsoftware%252F10637589%252F10637588%252F1046%252Fsetuptangram.zip%253F%2526lop%253Dfeed.dl%2526subj%253Diefeed%2526part%253Dieaddons%2526pid%253D10637589%2526psid%253D10637588%2526ontid%253D12775%2526siteId%253D4%2526edId%253D1046%26edId%3d1046%26lop%3dfeed.dl%26siteId%3d4%26part%3dieaddons%26pid%3d10637589%26subj%3diefeed&amp;amp;p=3356105:1:0&amp;amp;hsv=pdfUHGKyFGqAduhT3JhtasxcDH4%3d"&gt;&lt;font color=#00a0e3&gt;Tangram
Xtml Designer&lt;/font&gt;&lt;/a&gt;
&lt;br&gt;
Visual designer for IE Band Object, activeX Control and .NET user control.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.windowsmarketplace.com/trackclick.aspx?u=http%3a%2f%2fdw.com.com%2fredir%3f%26destUrl%3dhttp%253A%252F%252Fsoftware-files.download.com%252Fsd%252F1LfCQ8qi9dea9bfUan0l8QC-vfNc3W2VAL6981zdbZUAvr3zXN1tlcywOhV12ODOYMTMfjP5DWPoWtg5aHIrFY4e4s8RUuyH%252Fsoftware%252F10721798%252F10078399%252F1046%252Fhttpwatch.exe%253F%2526lop%253Dfeed.dl%2526subj%253Diefeed%2526part%253Dieaddons%2526pid%253D10721798%2526psid%253D10078399%2526ontid%253D12775%2526siteId%253D4%2526edId%253D1046%26edId%3d1046%26lop%3dfeed.dl%26siteId%3d4%26part%3dieaddons%26pid%3d10721798%26subj%3diefeed&amp;amp;p=2596029:1:0&amp;amp;hsv=SvcI1vPzqpNe1oXBUx99o5d3Eu8%3d"&gt;&lt;font color=#00a0e3&gt;Http
Watch&lt;/font&gt;&lt;/a&gt;
&lt;br&gt;
HttpWatch shows you HTTP and HTTPS traffic from within IE allowing you to quickly
debug, fix and optimize your Web site.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.windowsmarketplace.com/trackclick.aspx?u=http%3a%2f%2fdw.com.com%2fredir%3f%26destUrl%3dhttp%253A%252F%252Fsoftware-files.download.com%252Fsd%252FfCoPnsI3BOnT2sAiqaaKzXZ4cmhEW1TydnhyaERbVPJ2eHJoRFtU8nNKP_NKwWmfohyNlHbiO8lRFxgKMNNzrd61eT8Co8CL%252Fsoftware%252F10607501%252F10605652%252F1046%252FEmbeddedWB_D2005_Version_14.61.zip%253F%2526lop%253Dfeed.dl%2526subj%253Diefeed%2526part%253Dieaddons%2526pid%253D10607501%2526psid%253D10605652%2526ontid%253D12775%2526siteId%253D4%2526edId%253D1046%26edId%3d1046%26lop%3dfeed.dl%26siteId%3d4%26part%3dieaddons%26pid%3d10607501%26subj%3diefeed&amp;amp;p=3185425:1:0&amp;amp;hsv=Nsru5LJHxmV42sHtH%2fomx5WpUno%3d"&gt;&lt;font color=#00a0e3&gt;Embedded
Web Browser&lt;/font&gt;&lt;/a&gt;
&lt;br&gt;
The package contains all the programmer need to extend the development of a Web browser.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.windowsmarketplace.com/trackclick.aspx?u=http%3a%2f%2fdw.com.com%2fredir%3f%26destUrl%3dhttp%253A%252F%252Fsoftware-files.download.com%252Fsd%252FdF1_rugh847hsm-d8v5WaaDgMLbCbGnloOAwtsJsaeWg4DC2wmxp5YFwtcQ2QEopCf5WaN0NEKMn0lB1HYfrhLcPDX9OGP2H%252Fsoftware%252F10636043%252F10539663%252F1046%252FCGToolbar.exe%253F%2526lop%253Dfeed.dl%2526subj%253Diefeed%2526part%253Dieaddons%2526pid%253D10636043%2526psid%253D10539663%2526ontid%253D12782%2526siteId%253D4%2526edId%253D1046%26edId%3d1046%26lop%3dfeed.dl%26siteId%3d4%26part%3dieaddons%26pid%3d10636043%26subj%3diefeed&amp;amp;p=2752770:1:0&amp;amp;hsv=rKcpaBuqnvW8a1r5kDG8riooCjo%3d"&gt;&lt;font color=#00a0e3&gt;CGToolbar&lt;/font&gt;&lt;/a&gt;
&lt;br&gt;
Must have tool for CG Artists, Animators, VFX and 3d professionals.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.windowsmarketplace.com/trackclick.aspx?u=http%3a%2f%2fdw.com.com%2fredir%3f%26destUrl%3dhttp%253A%252F%252Fsoftware-files.download.com%252Fsd%252FUjxOHUwyNK85OQN-h1cPUzLobizcvxg0MuhuLNy_GDQy6G4s3L8YNJPr7qlf_gqEpSOoYIwaxZlF3KVoD5NeBnZyKg0ZtR92%252Fsoftware%252F10577783%252F10297190%252F1046%252Fsitestudio6_en_pro_dl.exe%253F%2526lop%253Dfeed.dl%2526subj%253Diefeed%2526part%253Dieaddons%2526pid%253D10577783%2526psid%253D10297190%2526ontid%253D2048%2526siteId%253D4%2526edId%253D1046%26edId%3d1046%26lop%3dfeed.dl%26siteId%3d4%26part%3dieaddons%26pid%3d10577783%26subj%3diefeed&amp;amp;p=1175872:1:0&amp;amp;hsv=PPnF%2bN78qjKiYPmHY3rch0Qk7ek%3d"&gt;&lt;font color=#00a0e3&gt;Site
Studio 6&lt;/font&gt;&lt;/a&gt;
&lt;br&gt;
Build rich content Web sites, with no HTML skills required.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.windowsmarketplace.com/trackclick.aspx?u=http%3a%2f%2fdw.com.com%2fredir%3f%26destUrl%3dhttp%253A%252F%252Fsoftware-files.download.com%252Fsd%252Fq5FoGIa8tv_uTLb7f6YTDp9borQcfFdKn1uitBx8V0qfW6K0HHxXShmncobgbgV0KJ2d_2gJ8NpuA6o-uEUDhT_VUapwU7NS%252Fsoftware%252F8355401%252F10071084%252F1046%252Fvf41031na.exe%253F%2526lop%253Dfeed.dl%2526subj%253Diefeed%2526part%253Dieaddons%2526pid%253D8355401%2526psid%253D10071084%2526ontid%253D2402%2526siteId%253D4%2526edId%253D1046%26edId%3d1046%26lop%3dfeed.dl%26siteId%3d4%26part%3dieaddons%26pid%3d8355401%26subj%3diefeed&amp;amp;p=2208:1:0&amp;amp;hsv=vKtrXksuUJS17T0O0mrxxbhPMDk%3d"&gt;&lt;font color=#00a0e3&gt;Haptek
Player&lt;/font&gt;&lt;/a&gt;
&lt;br&gt;
An ActiveX control and Netscape Navigator Plugin that allows any webpage or application
(with ActiveX support) to include Haptek’s Autonomous characters.&lt;br&gt;
&lt;a href="http://www.windowsmarketplace.com/trackclick.aspx?u=http%3a%2f%2fdw.com.com%2fredir%3f%26destUrl%3dhttp%253A%252F%252Fsoftware-files.download.com%252Fsd%252Fvht_YSGMDab86z0jcKJoDRz6iajJoWnWHPqJqMmhadYc-omoyaFp1pB4GXT7A9poSwLT6znrBuuTmJ8aQm2q4useW7oZB2jt%252Fsoftware%252F10703431%252F10066500%252F1046%252Ffhsetup.exe%253F%2526lop%253Dfeed.dl%2526subj%253Diefeed%2526part%253Dieaddons%2526pid%253D10703431%2526psid%253D10066500%2526ontid%253D12782%2526siteId%253D4%2526edId%253D1046%26edId%3d1046%26lop%3dfeed.dl%26siteId%3d4%26part%3dieaddons%26pid%3d10703431%26subj%3diefeed&amp;amp;p=4152:1:0&amp;amp;hsv=QOA5Iapcf3PFfg%2bS8Fbs8i2kHsg%3d"&gt;
&lt;br&gt;
&lt;font color=#00a0e3&gt;Flash2X Flash Hunter&lt;/font&gt;&lt;/a&gt;
&lt;br&gt;
Save Flash movies from web pages.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.windowsmarketplace.com/trackclick.aspx?u=http%3a%2f%2fdw.com.com%2fredir%3f%26destUrl%3dhttp%253A%252F%252Fsoftware-files.download.com%252Fsd%252FxnjgQplEBzJGMXemqEI7eITHWMpNTwWFhMdYyk1PBYWEx1jKTU8FhUqyEVTh2hwDo7Jp15ISzEMKxb_nl3033I47g-FPdx59%252Fsoftware%252F10579086%252F10515220%252F1046%252Fimacros-setup.exe%253F%2526lop%253Dfeed.dl%2526subj%253Diefeed%2526part%253Dieaddons%2526pid%253D10579086%2526psid%253D10515220%2526ontid%253D2068%2526siteId%253D4%2526edId%253D1046%26edId%3d1046%26lop%3dfeed.dl%26siteId%3d4%26part%3dieaddons%26pid%3d10579086%26subj%3diefeed&amp;amp;p=2614139:1:0&amp;amp;hsv=V8SIwHgnqc1iJ4QxMGsohd51Glw%3d"&gt;&lt;font color=#00a0e3&gt;iOpus
iMacros&lt;/font&gt;&lt;/a&gt;
&lt;br&gt;
Check the same sites every day,data upload, online marketing and functional testing
and regression testing Web sites:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.windowsmarketplace.com/trackclick.aspx?u=http%3a%2f%2fdw.com.com%2fredir%3f%26destUrl%3dhttp%253A%252F%252Fsoftware-files.download.com%252Fsd%252FoYIsJkNnMNtVWHRXUTByTPHSNU5RxqYD8dI1TlHGpgPx0jVOUcamA2sADEatgweRTStm0EZXa4aK3Ad72yPkYLR2jiJOeYv7%252Fsoftware%252F10678430%252F10467247%252F1046%252FRadToolbar_1_5_0_trial.exe%253F%2526lop%253Dfeed.dl%2526subj%253Diefeed%2526part%253Dieaddons%2526pid%253D10678430%2526psid%253D10467247%2526ontid%253D2070%2526siteId%253D4%2526edId%253D1046%26edId%3d1046%26lop%3dfeed.dl%26siteId%3d4%26part%3dieaddons%26pid%3d10678430%26subj%3diefeed&amp;amp;p=3136786:1:0&amp;amp;hsv=kcsd5sy2aCXPtzufTsmf3MlhxvU%3d"&gt;&lt;font color=#00a0e3&gt;Telerik
RadToolBar&lt;/font&gt;&lt;/a&gt;
&lt;br&gt;
A flexible component for implementation of tool and button strips, needed in most
web applications.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.windowsmarketplace.com/trackclick.aspx?u=http%3a%2f%2fdw.com.com%2fredir%3f%26destUrl%3dhttp%253A%252F%252Fsoftware-files.download.com%252Fsd%252FOGvXCe7_PlYIQUfpc5eDIZ8FKj_h9XqgnwUqP-H1eqCfBSo_4fV6oD6MAGvpscBuR13K2YzCvAkcJQoSLvzJwp0YLpww82kV%252Fsoftware%252F10593876%252F10002835%252F1046%252Fuedit32.zip%253F%2526lop%253Dfeed.dl%2526subj%253Diefeed%2526part%253Dieaddons%2526pid%253D10593876%2526psid%253D10002835%2526ontid%253D2352%2526siteId%253D4%2526edId%253D1046%26edId%3d1046%26lop%3dfeed.dl%26siteId%3d4%26part%3dieaddons%26pid%3d10593876%26subj%3diefeed&amp;amp;p=1444018:1:0&amp;amp;hsv=vXg1NKmmtc%2fGHhMfNSHpsS%2bRPTs%3d"&gt;&lt;font color=#00a0e3&gt;UltraEdit-32&lt;/font&gt;&lt;/a&gt;
&lt;br&gt;
Powerful Text, HEX, HTML, PHP and Programmer’s Editor.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.windowsmarketplace.com/trackclick.aspx?u=http%3a%2f%2fdw.com.com%2fredir%3f%26destUrl%3dhttp%253A%252F%252Fsoftware-files.download.com%252Fsd%252Fp0XzbRV-D0GrMGzfvWBYLXj0phgPIF03ePSmGA8gXTd49KYYDyBdNy0NnVHbFmSYoktu-fSPXXQoQDeWHDpt5VEJiW4m9qvs%252Fsoftware%252F10702915%252F10492423%252F1046%252Fpost2blog.zip%253F%2526lop%253Dfeed.dl%2526subj%253Diefeed%2526part%253Dieaddons%2526pid%253D10702915%2526psid%253D10492423%2526ontid%253D12945%2526siteId%253D4%2526edId%253D1046%26edId%3d1046%26lop%3dfeed.dl%26siteId%3d4%26part%3dieaddons%26pid%3d10702915%26subj%3diefeed&amp;amp;p=2428315:1:0&amp;amp;hsv=agfVI7zRyiaA5Af9TbJF5GiRFRk%3d"&gt;&lt;font color=#00a0e3&gt;Bytescout
Post2Blog&lt;/font&gt;&lt;/a&gt;
&lt;br&gt;
Freeware powerful blog editor for WordPress, Typepad, MovableType and other blogs.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.windowsmarketplace.com/trackclick.aspx?u=http%3a%2f%2fdw.com.com%2fredir%3f%26destUrl%3dhttp%253A%252F%252Fsoftware-files.download.com%252Fsd%252F56fn4rMAQvI5ldTk4QAhGDn6y35XxlGsOfrLflfGUaw5-st-V8ZRrMpI6wmVHtBTGZ9RSfw0fcrO1eJr9wCQbR3KC0-nykpF%252Fsoftware%252F10256717%252F10256716%252F1046%252Fsearchmonster.zip%253F%2526lop%253Dfeed.dl%2526subj%253Diefeed%2526part%253Dieaddons%2526pid%253D10256717%2526psid%253D10256716%2526ontid%253D12775%2526siteId%253D4%2526edId%253D1046%26edId%3d1046%26lop%3dfeed.dl%26siteId%3d4%26part%3dieaddons%26pid%3d10256717%26subj%3diefeed&amp;amp;p=15638:1:0&amp;amp;hsv=JD1nk1SAB0oXBl2g7Et5UCCerwQ%3d"&gt;&lt;font color=#00a0e3&gt;Search
Monster&lt;/font&gt;&lt;/a&gt;
&lt;br&gt;
Free Flash Web Directory &amp;amp; Internet Search Engine is the Flash-remoting Web directory
instant content for you Web site.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.windowsmarketplace.com/trackclick.aspx?u=http%3a%2f%2fdw.com.com%2fredir%3f%26destUrl%3dhttp%253A%252F%252Fppd-files.download.com%252Fsd%252F0TJ0mCmV91es3m-G0WJr6sluwJBdHT5hyW7AkF0dPmHJbsCQXR0-YQCgwY0sv0GhZHElD_Hm5n642auK6zciEyGGZGUIUo0c%252Fsoftware%252F10636341%252F10548985%252F1046%252FZendStudio-5_5_0.exe%253F%2526lop%253Dfeed.dl%2526subj%253Diefeed%2526part%253Dieaddons%2526pid%253D10636341%2526psid%253D10548985%2526ontid%253D7957%2526siteId%253D4%2526edId%253D1046%26edId%3d1046%26lop%3dfeed.dl%26siteId%3d4%26part%3dieaddons%26pid%3d10636341%26subj%3diefeed&amp;amp;p=2805822:1:0&amp;amp;hsv=zvCRcYBiCivHn4WqKBGixvj%2b4uM%3d"&gt;&lt;font color=#00a0e3&gt;Zend
Studio&lt;/font&gt;&lt;/a&gt;
&lt;br&gt;
Encompasses all the development components necessary for the full PHP application.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.windowsmarketplace.com/details.aspx?view=info&amp;amp;itemid=2630257"&gt;&lt;font color=#00a0e3&gt;DbaBar&lt;/font&gt;&lt;/a&gt;
&lt;br&gt;
Integrated toolbar enabling Oracle Database Administrators to browse their databases
from within Internet Explorer within minutes after installation.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.windowsmarketplace.com/trackclick.aspx?u=http%3a%2f%2fdw.com.com%2fredir%3f%26destUrl%3dhttp%253A%252F%252Fsoftware-files.download.com%252Fsd%252FSTHOhVFgt4QdpxVKfAHlQGNdZsey-8gQY11mx7L7yBBjXWbHsvvIEF83NFBhwiIFPb9GKVmnhsAmhBgQbM9eAPqM067B8vmq%252Fsoftware%252F10606837%252F10341955%252F1046%252Fbar275.exe%253F%2526lop%253Dfeed.dl%2526subj%253Diefeed%2526part%253Dieaddons%2526pid%253D10606837%2526psid%253D10341955%2526ontid%253D12775%2526siteId%253D4%2526edId%253D1046%26edId%3d1046%26lop%3dfeed.dl%26siteId%3d4%26part%3dieaddons%26pid%3d10606837%26subj%3diefeed&amp;amp;p=2630257:1:0&amp;amp;hsv=I00GKWFubrkF7eG8%2bUm%2fTLCPFEE%3d"&gt;&lt;font color=#00a0e3&gt;Explorer
Toolbar Maker&lt;/font&gt;&lt;/a&gt;
&lt;br&gt;
lets you create your own Explorer bar from any HTML page, picture, Macromedia Flash
file, or Microsoft Office document.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=4ed286eb-30da-4bcf-8f73-53388979eef5" /&gt;</description>
      <comments>http://www.spotgnome.com/CommentView,guid,4ed286eb-30da-4bcf-8f73-53388979eef5.aspx</comments>
      <category>CSS</category>
      <category>Design</category>
      <category>Javascript</category>
      <category>Programming</category>
    </item>
    <item>
      <trackback:ping>http://www.spotgnome.com/Trackback.aspx?guid=7adf8941-ce6a-4227-af1a-9c2526b3e12e</trackback:ping>
      <pingback:server>http://www.spotgnome.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.spotgnome.com/PermaLink,guid,7adf8941-ce6a-4227-af1a-9c2526b3e12e.aspx</pingback:target>
      <dc:creator>Guy Levin</dc:creator>
      <wfw:comment>http://www.spotgnome.com/CommentView,guid,7adf8941-ce6a-4227-af1a-9c2526b3e12e.aspx</wfw:comment>
      <wfw:commentRss>http://www.spotgnome.com/SyndicationService.asmx/GetEntryCommentsRss?guid=7adf8941-ce6a-4227-af1a-9c2526b3e12e</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Let’s say you want to change the color of your links on just your contact page to
red. They are blue on every other page, but it just makes sense for them to be red
on your contact page (for some reason). There are a couple ways you could go about this. 
</p>
        <ul>
          <li>
            <strong>You could declare a separate stylesheet for your contact page.</strong>
            <br />
This isn’t ideal, because it’s redundant. If you make any other changes, you’ll always
have to make them both on the main stylesheet and the contact page stylesheet. 
<br />
   
</li>
          <li>
            <strong>You could give all those links a unique class on that page.</strong>
            <br />
This isn’t ideal, because it isn’t very semantic and it’s also redundant. Why apply
a class to every single link on the page when they really aren’t any different from
links elsewhere on the site, contextually speaking? 
<br />
   
</li>
          <li>
            <strong>The best solution is to give your the body a unique ID</strong>. 
<br />
This solves the problem perfectly. You can use the same stylesheet and target just
the links you want to with a single CSS selector. 
<br />
   
</li>
        </ul>
        <p>
Simple, literally just apply the ID to the body tag:
</p>
        <pre>
          <code> ... &lt;/head&gt; &lt;body id="contact-page"&gt; ...</code>
        </pre>
        <p>
Now for our example of making all links on the contact page red instead of blue, just
use some CSS like this:
</p>
        <pre>
          <code>a { color: blue; } #contact-page a { color: red; }</code>
        </pre>
        <img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=7adf8941-ce6a-4227-af1a-9c2526b3e12e" />
      </body>
      <title>Give Your Body An ID For Better Css Use</title>
      <guid isPermaLink="false">http://www.spotgnome.com/PermaLink,guid,7adf8941-ce6a-4227-af1a-9c2526b3e12e.aspx</guid>
      <link>http://www.spotgnome.com/2007/12/20/GiveYourBodyAnIDForBetterCssUse.aspx</link>
      <pubDate>Thu, 20 Dec 2007 16:45:41 GMT</pubDate>
      <description>&lt;p&gt;
Let’s say you want to change the color of your links on just your contact page to
red. They are blue on every other page, but it just makes sense for them to be red
on your contact page (for some reason). There are a couple ways you could go about&amp;nbsp;this. 
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;You could declare a separate stylesheet for your contact page.&lt;/strong&gt; 
&lt;br&gt;
This isn’t ideal, because it’s redundant. If you make any other changes, you’ll always
have to make them both on the main stylesheet and the contact page&amp;nbsp;stylesheet. 
&lt;br&gt;
&amp;nbsp;&amp;nbsp; 
&lt;li&gt;
&lt;strong&gt;You could give all those links a unique class on that page.&lt;/strong&gt; 
&lt;br&gt;
This isn’t ideal, because it isn’t very semantic and it’s also redundant. Why apply
a class to every single link on the page when they really aren’t any different from
links elsewhere on the site, contextually&amp;nbsp;speaking? 
&lt;br&gt;
&amp;nbsp;&amp;nbsp; 
&lt;li&gt;
&lt;strong&gt;The best solution is to give your the body a unique ID&lt;/strong&gt;. 
&lt;br&gt;
This solves the problem perfectly. You can use the same stylesheet and target just
the links you want to with a single CSS&amp;nbsp;selector. 
&lt;br&gt;
&amp;nbsp;&amp;nbsp; 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Simple, literally just apply the ID to the body&amp;nbsp;tag:
&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; ... &amp;lt;/head&amp;gt; &amp;lt;body id="contact-page"&amp;gt; ...&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
Now for our example of making all links on the contact page red instead of blue, just
use some CSS like&amp;nbsp;this:
&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;a { color: blue; } #contact-page a { color: red; }&lt;/code&gt;&lt;/pre&gt;&lt;img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=7adf8941-ce6a-4227-af1a-9c2526b3e12e" /&gt;</description>
      <comments>http://www.spotgnome.com/CommentView,guid,7adf8941-ce6a-4227-af1a-9c2526b3e12e.aspx</comments>
      <category>CSS</category>
      <category>Design</category>
      <category>Programming</category>
    </item>
    <item>
      <trackback:ping>http://www.spotgnome.com/Trackback.aspx?guid=ae45c74a-f683-45fe-82f1-328f039630a4</trackback:ping>
      <pingback:server>http://www.spotgnome.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.spotgnome.com/PermaLink,guid,ae45c74a-f683-45fe-82f1-328f039630a4.aspx</pingback:target>
      <dc:creator>Guy Levin</dc:creator>
      <wfw:comment>http://www.spotgnome.com/CommentView,guid,ae45c74a-f683-45fe-82f1-328f039630a4.aspx</wfw:comment>
      <wfw:commentRss>http://www.spotgnome.com/SyndicationService.asmx/GetEntryCommentsRss?guid=ae45c74a-f683-45fe-82f1-328f039630a4</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
If you want to store configuration information in a XML file, you can easily use serialization
to assist you. Instead of using XPath or DOM, and have some code to maintain, simply
use the XmlSerializer to retrieve information.
</p>
        <p>
Here's an example of a XML file:
</p>
        <div id="xml-1">
          <div class="xml">
            <ol>
              <li style="FONT-WEIGHT: normal; COLOR: #3a6a8b; FONT-STYLE: normal; FONT-FAMILY: 'Courier New', Courier, monospace">
                <div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace">
                  <span style="COLOR: #009900">
                    <span style="FONT-WEIGHT: bold; COLOR: black">&lt;</span>?xml <span style="COLOR: #000066">version</span>=<span style="COLOR: #ff0000">"1.0"</span><span style="COLOR: #000066">encoding</span>=<span style="COLOR: #ff0000">"utf-8"</span>?<span style="FONT-WEIGHT: bold; COLOR: black">&gt;</span></span>
                </div>
              </li>
              <li style="FONT-WEIGHT: bold; COLOR: #26536a">
                <div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace">
                  <span style="COLOR: #009900">
                    <span style="FONT-WEIGHT: bold; COLOR: black">&lt;DatabaseConfig<span style="FONT-WEIGHT: bold; COLOR: black">&gt;</span></span>
                  </span>
                </div>
              </li>
              <li style="FONT-WEIGHT: normal; COLOR: #3a6a8b; FONT-STYLE: normal; FONT-FAMILY: 'Courier New', Courier, monospace">
                <div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace">  <span style="COLOR: #009900"><span style="FONT-WEIGHT: bold; COLOR: black">&lt;Data<span style="FONT-WEIGHT: bold; COLOR: black">&gt;</span></span></span></div>
              </li>
              <li style="FONT-WEIGHT: bold; COLOR: #26536a">
                <div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"> 
  <span style="COLOR: #009900"><span style="FONT-WEIGHT: bold; COLOR: black">&lt;DatabaseConfigData</span></span></div>
              </li>
              <li style="FONT-WEIGHT: normal; COLOR: #3a6a8b; FONT-STYLE: normal; FONT-FAMILY: 'Courier New', Courier, monospace">
                <div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"> 
    <span style="COLOR: #000066">File</span>=<span style="COLOR: #ff0000">"Data/Principal.xml"</span></div>
              </li>
              <li style="FONT-WEIGHT: bold; COLOR: #26536a">
                <div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"> 
    <span style="COLOR: #000066">EntityName</span>=<span style="COLOR: #ff0000">"Principal"</span></div>
              </li>
              <li style="FONT-WEIGHT: normal; COLOR: #3a6a8b; FONT-STYLE: normal; FONT-FAMILY: 'Courier New', Courier, monospace">
                <div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"> 
    <span style="COLOR: #000066">Format</span>=<span style="COLOR: #ff0000">"Xml"</span><span style="FONT-WEIGHT: bold; COLOR: black">/&gt;</span></div>
              </li>
              <li style="FONT-WEIGHT: bold; COLOR: #26536a">
                <div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"> 
  <span style="COLOR: #009900"><span style="FONT-WEIGHT: bold; COLOR: black">&lt;DatabaseConfigData</span></span></div>
              </li>
              <li style="FONT-WEIGHT: normal; COLOR: #3a6a8b; FONT-STYLE: normal; FONT-FAMILY: 'Courier New', Courier, monospace">
                <div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"> 
    <span style="COLOR: #000066">File</span>=<span style="COLOR: #ff0000">"Data/Role.xml"</span></div>
              </li>
              <li style="FONT-WEIGHT: bold; COLOR: #26536a">
                <div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"> 
    <span style="COLOR: #000066">EntityName</span>=<span style="COLOR: #ff0000">"Role"</span></div>
              </li>
              <li style="FONT-WEIGHT: normal; COLOR: #3a6a8b; FONT-STYLE: normal; FONT-FAMILY: 'Courier New', Courier, monospace">
                <div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"> 
    <span style="COLOR: #000066">Format</span>=<span style="COLOR: #ff0000">"Xml"</span><span style="FONT-WEIGHT: bold; COLOR: black">/&gt;</span></div>
              </li>
              <li style="FONT-WEIGHT: bold; COLOR: #26536a">
                <div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace">  <span style="COLOR: #009900"><span style="FONT-WEIGHT: bold; COLOR: black">&lt;/Data<span style="FONT-WEIGHT: bold; COLOR: black">&gt;</span></span></span></div>
              </li>
              <li style="FONT-WEIGHT: normal; COLOR: #3a6a8b; FONT-STYLE: normal; FONT-FAMILY: 'Courier New', Courier, monospace">
                <div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace">
                  <span style="COLOR: #009900">
                    <span style="FONT-WEIGHT: bold; COLOR: black">&lt;/DatabaseConfig<span style="FONT-WEIGHT: bold; COLOR: black">&gt;</span></span>
                  </span>
                </div>
              </li>
            </ol>
          </div>
          <p style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace">
            <font face="Verdana">
            </font> 
</p>
          <p style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace">
            <font face="Verdana">And if you have the following classes (<span class="langName"><strong><font color="#000000">C#):</font></strong></span></font>
          </p>
          <div class="csharp">
            <ol>
              <li style="FONT-WEIGHT: normal; COLOR: #3a6a8b; FONT-STYLE: normal; FONT-FAMILY: 'Courier New', Courier, monospace">
                <div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace">
                  <span style="COLOR: #0600ff">public</span>
                  <span style="COLOR: #ff0000">class</span> DatabaseConfig 
</div>
              </li>
              <li style="FONT-WEIGHT: normal; COLOR: #3a6a8b; FONT-STYLE: normal; FONT-FAMILY: 'Courier New', Courier, monospace">
                <div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace">
                  <span style="COLOR: #000000">{</span>
                </div>
              </li>
              <li style="FONT-WEIGHT: bold; COLOR: #26536a">
                <div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"> 
  <span style="COLOR: #0600ff">public</span> DatabaseConfigData<span style="COLOR: #000000">[</span><span style="COLOR: #000000">]</span> Data <span style="COLOR: #000000">{</span> get;
set; <span style="COLOR: #000000">}</span></div>
              </li>
              <li style="FONT-WEIGHT: normal; COLOR: #3a6a8b; FONT-STYLE: normal; FONT-FAMILY: 'Courier New', Courier, monospace">
                <div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace">
                  <span style="COLOR: #000000">}</span>;
</div>
              </li>
              <li style="FONT-WEIGHT: bold; COLOR: #26536a">
                <div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"> 
</div>
              </li>
              <li style="FONT-WEIGHT: normal; COLOR: #3a6a8b; FONT-STYLE: normal; FONT-FAMILY: 'Courier New', Courier, monospace">
                <div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace">
                  <span style="COLOR: #0600ff">public</span>
                  <span style="COLOR: #ff0000">class</span> DatabaseConfigData 
</div>
              </li>
              <li style="FONT-WEIGHT: normal; COLOR: #3a6a8b; FONT-STYLE: normal; FONT-FAMILY: 'Courier New', Courier, monospace">
                <div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace">
                  <span style="COLOR: #000000">{</span>
                </div>
              </li>
              <li style="FONT-WEIGHT: bold; COLOR: #26536a">
                <div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"> 
  <span style="COLOR: #000000">[</span><span style="COLOR: #000000">System</span>.<span style="COLOR: #0000ff">Xml</span>.<span style="COLOR: #0000ff">Serialization</span>.<span style="COLOR: #0000ff">XmlAttribute</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">]</span></div>
              </li>
              <li style="FONT-WEIGHT: normal; COLOR: #3a6a8b; FONT-STYLE: normal; FONT-FAMILY: 'Courier New', Courier, monospace">
                <div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"> 
  <span style="COLOR: #0600ff">public</span><span style="COLOR: #ff0000">string</span> File <span style="COLOR: #000000">{</span> get;
set; <span style="COLOR: #000000">}</span></div>
              </li>
              <li style="FONT-WEIGHT: bold; COLOR: #26536a">
                <div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"> 
</div>
              </li>
              <li style="FONT-WEIGHT: normal; COLOR: #3a6a8b; FONT-STYLE: normal; FONT-FAMILY: 'Courier New', Courier, monospace">
                <div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"> 
  <span style="COLOR: #000000">[</span><span style="COLOR: #000000">System</span>.<span style="COLOR: #0000ff">Xml</span>.<span style="COLOR: #0000ff">Serialization</span>.<span style="COLOR: #0000ff">XmlAttribute</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">]</span></div>
              </li>
              <li style="FONT-WEIGHT: bold; COLOR: #26536a">
                <div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"> 
  <span style="COLOR: #0600ff">public</span><span style="COLOR: #ff0000">string</span> EntityName <span style="COLOR: #000000">{</span> get;
set; <span style="COLOR: #000000">}</span></div>
              </li>
              <li style="FONT-WEIGHT: normal; COLOR: #3a6a8b; FONT-STYLE: normal; FONT-FAMILY: 'Courier New', Courier, monospace">
                <div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"> 
</div>
              </li>
              <li style="FONT-WEIGHT: bold; COLOR: #26536a">
                <div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"> 
  <span style="COLOR: #000000">[</span><span style="COLOR: #000000">System</span>.<span style="COLOR: #0000ff">Xml</span>.<span style="COLOR: #0000ff">Serialization</span>.<span style="COLOR: #0000ff">XmlAttribute</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">]</span></div>
              </li>
              <li style="FONT-WEIGHT: normal; COLOR: #3a6a8b; FONT-STYLE: normal; FONT-FAMILY: 'Courier New', Courier, monospace">
                <div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"> 
  <span style="COLOR: #0600ff">public</span><span style="COLOR: #ff0000">string</span> Format <span style="COLOR: #000000">{</span> get;
set; <span style="COLOR: #000000">}</span></div>
              </li>
              <li style="FONT-WEIGHT: bold; COLOR: #26536a">
                <div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace">
                  <span style="COLOR: #000000">}</span>; 
</div>
              </li>
            </ol>
          </div>
          <p style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace">
            <font face="Verdana">
            </font> 
</p>
          <p style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace">
            <font face="Verdana">All you have to do to load the XML information into the <code>DatabaseConfig</code> class
is (C#):</font>
          </p>
          <div>
            <ol>
              <li style="FONT-WEIGHT: normal; COLOR: #3a6a8b; FONT-STYLE: normal; FONT-FAMILY: 'Courier New', Courier, monospace">
                <div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace">DatabaseConfig
GetDatabaseConfig<span style="COLOR: #000000">(</span><span style="COLOR: #ff0000">string</span> file<span style="COLOR: #000000">)</span></div>
              </li>
              <li style="FONT-WEIGHT: bold; COLOR: #26536a">
                <div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace">
                  <span style="COLOR: #000000">{</span>
                </div>
              </li>
              <li style="FONT-WEIGHT: normal; COLOR: #3a6a8b; FONT-STYLE: normal; FONT-FAMILY: 'Courier New', Courier, monospace">
                <div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"> 
  XmlSerializer serializer = 
</div>
              </li>
              <li style="FONT-WEIGHT: bold; COLOR: #26536a">
                <div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"> 
      <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span style="COLOR: #008000">new</span></a> XmlSerializer<span style="COLOR: #000000">(</span><a href="http://www.google.com/search?q=typeof+msdn.microsoft.com"><span style="COLOR: #008000">typeof</span></a><span style="COLOR: #000000">(</span>DatabaseConfig<span style="COLOR: #000000">)</span><span style="COLOR: #000000">)</span>;
</div>
              </li>
              <li style="FONT-WEIGHT: normal; COLOR: #3a6a8b; FONT-STYLE: normal; FONT-FAMILY: 'Courier New', Courier, monospace">
                <div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"> 
  <span style="COLOR: #0600ff">using</span><span style="COLOR: #000000">(</span>StreamReader
reader = <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span style="COLOR: #008000">new</span></a> StreamReader<span style="COLOR: #000000">(</span>file<span style="COLOR: #000000">)</span><span style="COLOR: #000000">)</span></div>
              </li>
              <li style="FONT-WEIGHT: normal; COLOR: #3a6a8b; FONT-STYLE: normal; FONT-FAMILY: 'Courier New', Courier, monospace">
                <div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace">    <span style="COLOR: #000000">{</span></div>
              </li>
              <li style="FONT-WEIGHT: bold; COLOR: #26536a">
                <div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"> 
      <span style="COLOR: #ff0000">object</span> obj = serializer.<span style="COLOR: #0000ff">Deserialize</span><span style="COLOR: #000000">(</span>reader<span style="COLOR: #000000">)</span>;
</div>
              </li>
              <li style="FONT-WEIGHT: normal; COLOR: #3a6a8b; FONT-STYLE: normal; FONT-FAMILY: 'Courier New', Courier, monospace">
                <div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"> 
      <span style="COLOR: #0600ff">return</span><span style="COLOR: #000000">(</span>DatabaseConfig<span style="COLOR: #000000">)</span>obj;
</div>
              </li>
              <li style="FONT-WEIGHT: bold; COLOR: #26536a">
                <div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"> 
  <span style="COLOR: #000000">}</span></div>
              </li>
              <li style="FONT-WEIGHT: normal; COLOR: #3a6a8b; FONT-STYLE: normal; FONT-FAMILY: 'Courier New', Courier, monospace">
                <div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace">
                  <span style="COLOR: #000000">}</span>
                </div>
              </li>
            </ol>
          </div>
          <p style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace">
            <font face="Verdana">There are a few issues you have to handle when using XML
Serialization, wich you can see at my earlier posts about <a href="http://www.spotgnome.com/CategoryView,category,XML.aspx">XML</a>, <a href="http://www.spotgnome.com/CategoryView,category,XSD.aspx">XSD</a> and <a href="http://www.spotgnome.com/CategoryView,category,Serialization.aspx">Serialization</a>.</font>
          </p>
        </div>
        <img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=ae45c74a-f683-45fe-82f1-328f039630a4" />
      </body>
      <title>XML Configuration Files Using Serialization</title>
      <guid isPermaLink="false">http://www.spotgnome.com/PermaLink,guid,ae45c74a-f683-45fe-82f1-328f039630a4.aspx</guid>
      <link>http://www.spotgnome.com/2007/12/20/XMLConfigurationFilesUsingSerialization.aspx</link>
      <pubDate>Thu, 20 Dec 2007 16:35:13 GMT</pubDate>
      <description>&lt;p&gt;
If you want to store configuration information in a XML file, you can easily use serialization
to assist you. Instead of using XPath or DOM, and have some code to maintain, simply
use the XmlSerializer to retrieve information.
&lt;/p&gt;
&lt;p&gt;
Here's an example of a XML file:
&lt;/p&gt;
&lt;div id=xml-1&gt;
&lt;div class=xml&gt;
&lt;ol&gt;
&lt;li style="FONT-WEIGHT: normal; COLOR: #3a6a8b; FONT-STYLE: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;
&lt;div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;&lt;span style="COLOR: #009900"&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: black"&gt;&amp;lt;&lt;/span&gt;?xml &lt;span style="COLOR: #000066"&gt;version&lt;/span&gt;=&lt;span style="COLOR: #ff0000"&gt;"1.0"&lt;/span&gt; &lt;span style="COLOR: #000066"&gt;encoding&lt;/span&gt;=&lt;span style="COLOR: #ff0000"&gt;"utf-8"&lt;/span&gt;?&lt;span style="FONT-WEIGHT: bold; COLOR: black"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;li style="FONT-WEIGHT: bold; COLOR: #26536a"&gt;
&lt;div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;&lt;span style="COLOR: #009900"&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: black"&gt;&amp;lt;DatabaseConfig&lt;span style="FONT-WEIGHT: bold; COLOR: black"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;li style="FONT-WEIGHT: normal; COLOR: #3a6a8b; FONT-STYLE: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;
&lt;div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;&amp;nbsp; &lt;span style="COLOR: #009900"&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: black"&gt;&amp;lt;Data&lt;span style="FONT-WEIGHT: bold; COLOR: black"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;li style="FONT-WEIGHT: bold; COLOR: #26536a"&gt;
&lt;div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;&amp;nbsp;
&amp;nbsp; &lt;span style="COLOR: #009900"&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: black"&gt;&amp;lt;DatabaseConfigData&lt;/span&gt; 
&lt;/div&gt;
&lt;li style="FONT-WEIGHT: normal; COLOR: #3a6a8b; FONT-STYLE: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;
&lt;div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &lt;span style="COLOR: #000066"&gt;File&lt;/span&gt;=&lt;span style="COLOR: #ff0000"&gt;"Data/Principal.xml"&lt;/span&gt; 
&lt;/div&gt;
&lt;li style="FONT-WEIGHT: bold; COLOR: #26536a"&gt;
&lt;div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &lt;span style="COLOR: #000066"&gt;EntityName&lt;/span&gt;=&lt;span style="COLOR: #ff0000"&gt;"Principal"&lt;/span&gt; 
&lt;/div&gt;
&lt;li style="FONT-WEIGHT: normal; COLOR: #3a6a8b; FONT-STYLE: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;
&lt;div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &lt;span style="COLOR: #000066"&gt;Format&lt;/span&gt;=&lt;span style="COLOR: #ff0000"&gt;"Xml"&lt;/span&gt; &lt;span style="FONT-WEIGHT: bold; COLOR: black"&gt;/&amp;gt;&lt;/span&gt;&gt;
&lt;/div&gt;
&lt;li style="FONT-WEIGHT: bold; COLOR: #26536a"&gt;
&lt;div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;&amp;nbsp;
&amp;nbsp; &lt;span style="COLOR: #009900"&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: black"&gt;&amp;lt;DatabaseConfigData&lt;/span&gt; 
&lt;/div&gt;
&lt;li style="FONT-WEIGHT: normal; COLOR: #3a6a8b; FONT-STYLE: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;
&lt;div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &lt;span style="COLOR: #000066"&gt;File&lt;/span&gt;=&lt;span style="COLOR: #ff0000"&gt;"Data/Role.xml"&lt;/span&gt; 
&lt;/div&gt;
&lt;li style="FONT-WEIGHT: bold; COLOR: #26536a"&gt;
&lt;div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &lt;span style="COLOR: #000066"&gt;EntityName&lt;/span&gt;=&lt;span style="COLOR: #ff0000"&gt;"Role"&lt;/span&gt; 
&lt;/div&gt;
&lt;li style="FONT-WEIGHT: normal; COLOR: #3a6a8b; FONT-STYLE: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;
&lt;div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &lt;span style="COLOR: #000066"&gt;Format&lt;/span&gt;=&lt;span style="COLOR: #ff0000"&gt;"Xml"&lt;/span&gt; &lt;span style="FONT-WEIGHT: bold; COLOR: black"&gt;/&amp;gt;&lt;/span&gt;&gt;
&lt;/div&gt;
&lt;li style="FONT-WEIGHT: bold; COLOR: #26536a"&gt;
&lt;div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;&amp;nbsp; &lt;span style="COLOR: #009900"&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: black"&gt;&amp;lt;/Data&lt;span style="FONT-WEIGHT: bold; COLOR: black"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;li style="FONT-WEIGHT: normal; COLOR: #3a6a8b; FONT-STYLE: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;
&lt;div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;&lt;span style="COLOR: #009900"&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: black"&gt;&amp;lt;/DatabaseConfig&lt;span style="FONT-WEIGHT: bold; COLOR: black"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; 
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;
&lt;font face=Verdana&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;
&lt;font face=Verdana&gt;And if you have the following classes (&lt;span class=langName&gt;&lt;strong&gt;&lt;font color=#000000&gt;C#):&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt; &lt;/font&gt;
&lt;/p&gt;
&lt;div class=csharp&gt;
&lt;ol&gt;
&lt;li style="FONT-WEIGHT: normal; COLOR: #3a6a8b; FONT-STYLE: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;
&lt;div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;&lt;span style="COLOR: #0600ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #ff0000"&gt;class&lt;/span&gt; DatabaseConfig 
&lt;/div&gt;
&lt;li style="FONT-WEIGHT: normal; COLOR: #3a6a8b; FONT-STYLE: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;
&lt;div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;&lt;span style="COLOR: #000000"&gt;{&lt;/span&gt;
&lt;/div&gt;
&lt;li style="FONT-WEIGHT: bold; COLOR: #26536a"&gt;
&lt;div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;&amp;nbsp;
&amp;nbsp; &lt;span style="COLOR: #0600ff"&gt;public&lt;/span&gt; DatabaseConfigData&lt;span style="COLOR: #000000"&gt;[&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;]&lt;/span&gt; Data &lt;span style="COLOR: #000000"&gt;{&lt;/span&gt; get;
set; &lt;span style="COLOR: #000000"&gt;}&lt;/span&gt;
&lt;/div&gt;
&lt;li style="FONT-WEIGHT: normal; COLOR: #3a6a8b; FONT-STYLE: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;
&lt;div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;&lt;span style="COLOR: #000000"&gt;}&lt;/span&gt;;
&lt;/div&gt;
&lt;li style="FONT-WEIGHT: bold; COLOR: #26536a"&gt;
&lt;div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;&amp;nbsp;
&lt;/div&gt;
&lt;li style="FONT-WEIGHT: normal; COLOR: #3a6a8b; FONT-STYLE: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;
&lt;div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;&lt;span style="COLOR: #0600ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #ff0000"&gt;class&lt;/span&gt; DatabaseConfigData 
&lt;/div&gt;
&lt;li style="FONT-WEIGHT: normal; COLOR: #3a6a8b; FONT-STYLE: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;
&lt;div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;&lt;span style="COLOR: #000000"&gt;{&lt;/span&gt;
&lt;/div&gt;
&lt;li style="FONT-WEIGHT: bold; COLOR: #26536a"&gt;
&lt;div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;&amp;nbsp;
&amp;nbsp; &lt;span style="COLOR: #000000"&gt;[&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;System&lt;/span&gt;.&lt;span style="COLOR: #0000ff"&gt;Xml&lt;/span&gt;.&lt;span style="COLOR: #0000ff"&gt;Serialization&lt;/span&gt;.&lt;span style="COLOR: #0000ff"&gt;XmlAttribute&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;]&lt;/span&gt;
&lt;/div&gt;
&lt;li style="FONT-WEIGHT: normal; COLOR: #3a6a8b; FONT-STYLE: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;
&lt;div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;&amp;nbsp;
&amp;nbsp; &lt;span style="COLOR: #0600ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #ff0000"&gt;string&lt;/span&gt; File &lt;span style="COLOR: #000000"&gt;{&lt;/span&gt; get;
set; &lt;span style="COLOR: #000000"&gt;}&lt;/span&gt;
&lt;/div&gt;
&lt;li style="FONT-WEIGHT: bold; COLOR: #26536a"&gt;
&lt;div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;&amp;nbsp;
&lt;/div&gt;
&lt;li style="FONT-WEIGHT: normal; COLOR: #3a6a8b; FONT-STYLE: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;
&lt;div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;&amp;nbsp;
&amp;nbsp; &lt;span style="COLOR: #000000"&gt;[&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;System&lt;/span&gt;.&lt;span style="COLOR: #0000ff"&gt;Xml&lt;/span&gt;.&lt;span style="COLOR: #0000ff"&gt;Serialization&lt;/span&gt;.&lt;span style="COLOR: #0000ff"&gt;XmlAttribute&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;]&lt;/span&gt;
&lt;/div&gt;
&lt;li style="FONT-WEIGHT: bold; COLOR: #26536a"&gt;
&lt;div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;&amp;nbsp;
&amp;nbsp; &lt;span style="COLOR: #0600ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #ff0000"&gt;string&lt;/span&gt; EntityName &lt;span style="COLOR: #000000"&gt;{&lt;/span&gt; get;
set; &lt;span style="COLOR: #000000"&gt;}&lt;/span&gt;
&lt;/div&gt;
&lt;li style="FONT-WEIGHT: normal; COLOR: #3a6a8b; FONT-STYLE: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;
&lt;div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;&amp;nbsp;
&lt;/div&gt;
&lt;li style="FONT-WEIGHT: bold; COLOR: #26536a"&gt;
&lt;div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;&amp;nbsp;
&amp;nbsp; &lt;span style="COLOR: #000000"&gt;[&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;System&lt;/span&gt;.&lt;span style="COLOR: #0000ff"&gt;Xml&lt;/span&gt;.&lt;span style="COLOR: #0000ff"&gt;Serialization&lt;/span&gt;.&lt;span style="COLOR: #0000ff"&gt;XmlAttribute&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;]&lt;/span&gt;
&lt;/div&gt;
&lt;li style="FONT-WEIGHT: normal; COLOR: #3a6a8b; FONT-STYLE: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;
&lt;div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;&amp;nbsp;
&amp;nbsp; &lt;span style="COLOR: #0600ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #ff0000"&gt;string&lt;/span&gt; Format &lt;span style="COLOR: #000000"&gt;{&lt;/span&gt; get;
set; &lt;span style="COLOR: #000000"&gt;}&lt;/span&gt;
&lt;/div&gt;
&lt;li style="FONT-WEIGHT: bold; COLOR: #26536a"&gt;
&lt;div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;&lt;span style="COLOR: #000000"&gt;}&lt;/span&gt;; 
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;
&lt;font face=Verdana&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;
&lt;font face=Verdana&gt;All you have to do to load the XML information into the &lt;code&gt;DatabaseConfig&lt;/code&gt; class
is (C#):&lt;/font&gt;
&lt;/p&gt;
&lt;div&gt;
&lt;ol&gt;
&lt;li style="FONT-WEIGHT: normal; COLOR: #3a6a8b; FONT-STYLE: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;
&lt;div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;DatabaseConfig
GetDatabaseConfig&lt;span style="COLOR: #000000"&gt;(&lt;/span&gt;&lt;span style="COLOR: #ff0000"&gt;string&lt;/span&gt; file&lt;span style="COLOR: #000000"&gt;)&lt;/span&gt;
&lt;/div&gt;
&lt;li style="FONT-WEIGHT: bold; COLOR: #26536a"&gt;
&lt;div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;&lt;span style="COLOR: #000000"&gt;{&lt;/span&gt;
&lt;/div&gt;
&lt;li style="FONT-WEIGHT: normal; COLOR: #3a6a8b; FONT-STYLE: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;
&lt;div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;&amp;nbsp;
&amp;nbsp; XmlSerializer serializer = 
&lt;/div&gt;
&lt;li style="FONT-WEIGHT: bold; COLOR: #26536a"&gt;
&lt;div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href="http://www.google.com/search?q=new+msdn.microsoft.com"&gt;&lt;span style="COLOR: #008000"&gt;new&lt;/span&gt;&lt;/a&gt; XmlSerializer&lt;span style="COLOR: #000000"&gt;(&lt;/span&gt;&lt;a href="http://www.google.com/search?q=typeof+msdn.microsoft.com"&gt;&lt;span style="COLOR: #008000"&gt;typeof&lt;/span&gt;&lt;/a&gt;&lt;span style="COLOR: #000000"&gt;(&lt;/span&gt;DatabaseConfig&lt;span style="COLOR: #000000"&gt;)&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&lt;/span&gt;;
&lt;/div&gt;
&lt;li style="FONT-WEIGHT: normal; COLOR: #3a6a8b; FONT-STYLE: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;
&lt;div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;&amp;nbsp;
&amp;nbsp; &lt;span style="COLOR: #0600ff"&gt;using&lt;/span&gt; &lt;span style="COLOR: #000000"&gt;(&lt;/span&gt;StreamReader
reader = &lt;a href="http://www.google.com/search?q=new+msdn.microsoft.com"&gt;&lt;span style="COLOR: #008000"&gt;new&lt;/span&gt;&lt;/a&gt; StreamReader&lt;span style="COLOR: #000000"&gt;(&lt;/span&gt;file&lt;span style="COLOR: #000000"&gt;)&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&lt;/span&gt; 
&lt;/div&gt;
&lt;li style="FONT-WEIGHT: normal; COLOR: #3a6a8b; FONT-STYLE: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;
&lt;div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: #000000"&gt;{&lt;/span&gt;
&lt;/div&gt;
&lt;li style="FONT-WEIGHT: bold; COLOR: #26536a"&gt;
&lt;div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="COLOR: #ff0000"&gt;object&lt;/span&gt; obj = serializer.&lt;span style="COLOR: #0000ff"&gt;Deserialize&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&lt;/span&gt;reader&lt;span style="COLOR: #000000"&gt;)&lt;/span&gt;;
&lt;/div&gt;
&lt;li style="FONT-WEIGHT: normal; COLOR: #3a6a8b; FONT-STYLE: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;
&lt;div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="COLOR: #0600ff"&gt;return&lt;/span&gt; &lt;span style="COLOR: #000000"&gt;(&lt;/span&gt;DatabaseConfig&lt;span style="COLOR: #000000"&gt;)&lt;/span&gt;obj;
&lt;/div&gt;
&lt;li style="FONT-WEIGHT: bold; COLOR: #26536a"&gt;
&lt;div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;&amp;nbsp;
&amp;nbsp; &lt;span style="COLOR: #000000"&gt;}&lt;/span&gt;
&lt;/div&gt;
&lt;li style="FONT-WEIGHT: normal; COLOR: #3a6a8b; FONT-STYLE: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;
&lt;div style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;&lt;span style="COLOR: #000000"&gt;}&lt;/span&gt; 
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p style="FONT-WEIGHT: normal; FONT-FAMILY: 'Courier New', Courier, monospace"&gt;
&lt;font face=Verdana&gt;There are a few&amp;nbsp;issues you have to handle when using XML Serialization,
wich you can see at my earlier posts about &lt;a href="http://www.spotgnome.com/CategoryView,category,XML.aspx"&gt;XML&lt;/a&gt;,&amp;nbsp;&lt;a href="http://www.spotgnome.com/CategoryView,category,XSD.aspx"&gt;XSD&lt;/a&gt; and &lt;a href="http://www.spotgnome.com/CategoryView,category,Serialization.aspx"&gt;Serialization&lt;/a&gt;.&lt;/font&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=ae45c74a-f683-45fe-82f1-328f039630a4" /&gt;</description>
      <comments>http://www.spotgnome.com/CommentView,guid,ae45c74a-f683-45fe-82f1-328f039630a4.aspx</comments>
      <category>.Net</category>
      <category>Programming</category>
      <category>Serialization</category>
      <category>XML</category>
    </item>
    <item>
      <trackback:ping>http://www.spotgnome.com/Trackback.aspx?guid=2bfd4df4-f161-42e7-859c-153596d20c33</trackback:ping>
      <pingback:server>http://www.spotgnome.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.spotgnome.com/PermaLink,guid,2bfd4df4-f161-42e7-859c-153596d20c33.aspx</pingback:target>
      <dc:creator>Guy Levin</dc:creator>
      <wfw:comment>http://www.spotgnome.com/CommentView,guid,2bfd4df4-f161-42e7-859c-153596d20c33.aspx</wfw:comment>
      <wfw:commentRss>http://www.spotgnome.com/SyndicationService.asmx/GetEntryCommentsRss?guid=2bfd4df4-f161-42e7-859c-153596d20c33</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p class="entry-header">
The good folks at Ajaxian.com and I just completed our third annual survey of Ajax
tools usage.  The raw data is free for everyone <a href="http://www.surveymonkey.com/sr.aspx?sm=fXLiKcnKlD6cO5bRe961aBB6NCCWytRyY3rParAYmwA_3d">here</a> -
you should be able to slice it and dice it anyway you see fit.  The top 10 Ajax
toolkits in 2007 are:
</p>
        <div class="entry-content">
          <div class="entry-body">
            <p>
              <img title="Dec2007top10_2" style="FLOAT: left; MARGIN: 0px 5px 5px 0px" alt="Dec2007top10_2" src="http://rmh.blogs.com/photos/uncategorized/2007/12/14/dec2007top10_2.gif" border="0" />
            </p>
            <p>
You can check out the top 10 Ajax toolkits from 2006 and 2005 at the end of this blog. 
</p>
            <p>
What is interesting about the Ajax market is that it's more diversified in 2007 than
it was in 2005 - the number  of toolkits keep growing and jostling position in
terms of usage.  Right now there are 241 Ajax toolkits and related libraries
listed in the survey. There were about three dozen in 2005 and 170 in 2006. 
The number of options is growing.
</p>
            <p>
That's brings up another point: The survey is not limited to Ajax frameworks and toolkits,
it also includes some JavaScript libraries commonly used in Ajax development. All
of the entries were derived from <a href="http://Ajaxpatterns.org">Ajaxpatterns.org</a> as
well as past surveys. There are probably quite a few of these frameworks that have
been abandoned and others that were missed, so its not a perfect record of available
Ajax toolkits and libraries today.
</p>
            <p>
Prototype and Script.aculo.us are the only toolkits to maintain a lead over the past
three years.  However, over all there are no clear winners or losers as even
the strongest incumbents (i.e., Prototype and Script.aculo.us) are starting too loose
ground. Some frameworks initially popular have faded nearly completely out of the
market (i.e., xajax and Rico ) while others have have sprung out of nowhere to become
leading tookits (i.e., jQuery and Ext JS).    The changes over the past
three years are easy to see in the stack chart at the end of this blog, which shows
the market share of the most popular toolkits - notice how they grow and shrink in
market share. That means that the market remains immature. 
</p>
            <p>
What is astonishing is the nearly complete lack of commercial Ajax frameworks. Backbase
has had a lot of success making a comeback after loosing some market share in 2006,
but other commercial Ajax frameworks have not been so lucky.  
</p>
            <p>
Spry is growing quickly and may be in the top 10 next year. Spry was left out of the
survey for the first day or so and then added in as it was the most popular write
in toolkit.  It may have faired better if it was an option from the start. I
added up all the write-ins for Spry with picks after the survey was adjusted. The
numbers are not great - Spry has about 4% of the market right now 
</p>
            <p>
The number of responses were much higher this year (2,619) compared to 2006 (865)
and 2005 (763).   The increase is enough to say that Ajaxian.com has become
more popular and so has Ajax but you can't go much beyond that. In addition, the entire
survey has to be taken with a large licking-block of salt. It's not scientific and
probably breaks about 100 rules for best practices when doing a survey.  However,
given the limitations of the survey and the surveyor (that's me), it still provides
valuable insight to the Ajax toolkit market in general.
</p>
          </div>
        </div>
        <img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=2bfd4df4-f161-42e7-859c-153596d20c33" />
      </body>
      <title>Ajax Tools Usage Survey - December 2007</title>
      <guid isPermaLink="false">http://www.spotgnome.com/PermaLink,guid,2bfd4df4-f161-42e7-859c-153596d20c33.aspx</guid>
      <link>http://www.spotgnome.com/2007/12/19/AjaxToolsUsageSurveyDecember2007.aspx</link>
      <pubDate>Wed, 19 Dec 2007 08:52:22 GMT</pubDate>
      <description>&lt;p class=entry-header&gt;
The good folks at Ajaxian.com and I just completed our third annual survey of Ajax
tools usage.&amp;nbsp; The raw data is free for everyone &lt;a href="http://www.surveymonkey.com/sr.aspx?sm=fXLiKcnKlD6cO5bRe961aBB6NCCWytRyY3rParAYmwA_3d"&gt;here&lt;/a&gt; -
you should be able to slice it and dice it anyway you see fit.&amp;nbsp; The top 10 Ajax
toolkits in 2007 are:
&lt;/p&gt;
&lt;div class=entry-content&gt;
&lt;div class=entry-body&gt;
&lt;p&gt;
&lt;img title=Dec2007top10_2 style="FLOAT: left; MARGIN: 0px 5px 5px 0px" alt=Dec2007top10_2 src="http://rmh.blogs.com/photos/uncategorized/2007/12/14/dec2007top10_2.gif" border=0&gt; 
&lt;/p&gt;
&lt;p&gt;
You can check out the top 10 Ajax toolkits from 2006 and 2005 at the end of this blog. 
&lt;/p&gt;
&lt;p&gt;
What is interesting about the Ajax market is that it's more diversified in 2007 than
it was in 2005 - the number&amp;nbsp; of toolkits keep growing and jostling position in
terms of usage.&amp;nbsp; Right now there are 241 Ajax toolkits and related libraries
listed in the survey. There were about three dozen in 2005 and 170 in 2006.&amp;nbsp;
The number of options is growing.
&lt;/p&gt;
&lt;p&gt;
That's brings up another point: The survey is not limited to Ajax frameworks and toolkits,
it also includes some JavaScript libraries commonly used in Ajax development. All
of the entries were derived from&amp;nbsp;&lt;a href="http://Ajaxpatterns.org"&gt;Ajaxpatterns.org&lt;/a&gt; as
well as past surveys. There are probably quite a few of these frameworks that have
been abandoned and others that were missed, so its not a perfect record of available
Ajax toolkits and libraries today.
&lt;/p&gt;
&lt;p&gt;
Prototype and Script.aculo.us are the only toolkits to maintain a lead over the past
three years.&amp;nbsp; However, over all there are no clear winners or losers as even
the strongest incumbents (i.e., Prototype and Script.aculo.us) are starting too loose
ground. Some frameworks initially popular have faded nearly completely out of the
market (i.e., xajax and Rico ) while others have have sprung out of nowhere to become
leading tookits (i.e., jQuery and Ext JS).&amp;nbsp; &amp;nbsp; The changes over the past
three years are easy to see in the stack chart at the end of this blog, which shows
the market share of the most popular toolkits - notice how they grow and shrink in
market share. That means that the market remains immature. 
&lt;/p&gt;
&lt;p&gt;
What is astonishing is the nearly complete lack of commercial Ajax frameworks. Backbase
has had a lot of success making a comeback after loosing some market share in 2006,
but other commercial Ajax frameworks have not been so lucky.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
Spry is growing quickly and may be in the top 10 next year. Spry was left out of the
survey for the first day or so and then added in as it was the most popular write
in toolkit.&amp;nbsp; It may have faired better if it was an option from the start. I
added up all the write-ins for Spry with picks after the survey was adjusted. The
numbers are not great - Spry has about 4% of the market right now 
&lt;/p&gt;
&lt;p&gt;
The number of responses were much higher this year (2,619) compared to 2006 (865)
and 2005 (763).&amp;nbsp; &amp;nbsp;The increase is enough to say that Ajaxian.com has become
more popular and so has Ajax but you can't go much beyond that. In addition, the entire
survey has to be taken with a large licking-block of salt. It's not scientific and
probably breaks about 100 rules for best practices when doing a survey.&amp;nbsp; However,
given the limitations of the survey and the surveyor (that's me), it still provides
valuable insight to the Ajax toolkit market in general.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=2bfd4df4-f161-42e7-859c-153596d20c33" /&gt;</description>
      <comments>http://www.spotgnome.com/CommentView,guid,2bfd4df4-f161-42e7-859c-153596d20c33.aspx</comments>
      <category>Programming</category>
    </item>
    <item>
      <trackback:ping>http://www.spotgnome.com/Trackback.aspx?guid=ecf1047a-7ea7-46e8-b8f0-29fe4d6c77c3</trackback:ping>
      <pingback:server>http://www.spotgnome.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.spotgnome.com/PermaLink,guid,ecf1047a-7ea7-46e8-b8f0-29fe4d6c77c3.aspx</pingback:target>
      <dc:creator>Guy Levin</dc:creator>
      <wfw:comment>http://www.spotgnome.com/CommentView,guid,ecf1047a-7ea7-46e8-b8f0-29fe4d6c77c3.aspx</wfw:comment>
      <wfw:commentRss>http://www.spotgnome.com/SyndicationService.asmx/GetEntryCommentsRss?guid=ecf1047a-7ea7-46e8-b8f0-29fe4d6c77c3</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p class="big">
          <strong>Which .NET Framework Data Provider to Use?</strong>
        </p>
        <p class="big">
To achieve the best performance for your application, use the .NET Framework data
provider that is most appropriate for your data source. There are a number of data
provider options for use in your applications. The following table provides information
about the available data providers and which data sources a data provider is most
appropriate for. 
</p>
        <blockquote>
          <table id="AutoNumber1" style="BORDER-COLLAPSE: collapse" bordercolor="#111111" cellspacing="4" cellpadding="2" width="98%" border="1">
            <tbody>
              <tr>
                <td valign="top" width="33%">
                  <p>
                    <font size="2">
                      <strong>Provider</strong>
                    </font>
                  </p>
                </td>
                <td valign="top" width="67%">
                  <p>
                    <font size="2">
                      <strong>Details </strong>
                    </font>
                  </p>
                </td>
              </tr>
              <tr>
                <td valign="top" width="33%">
                  <p>
                    <font size="1">SQL Server .NET Data Provider </font>
                  </p>
                </td>
                <td valign="top" width="67%">
                  <p class="normal">
                    <font size="1">Found in the <b>System.Data.SqlClient</b> namespace. </font>
                  </p>
                  <p class="normal">
                    <font size="1">Recommended for middle-tier applications using Microsoft SQL Server
version 7.0 or later. </font>
                  </p>
                  <p class="normal">
                    <font size="1">Recommended for single-tier applications using the Microsoft Data Engine
(MSDE) or Microsoft SQL Server 7.0 or later. </font>
                  </p>
                </td>
              </tr>
              <tr>
                <td valign="top" width="33%">
                  <p>
                    <font size="1">OLE DB .NET Data Provider </font>
                  </p>
                </td>
                <td valign="top" width="67%">
                  <p class="normal">
                    <font size="1">Found in the <b>System.Data.OleDb</b> namespace. </font>
                  </p>
                  <p class="normal">
                    <font size="1">Recommended for middle-tier applications using Microsoft SQL Server
6.5 or earlier, or any OLE DB provider that supports the OLE DB interfaces listed
in OLE DB Interfaces Used by the OLE DB .NET Data Provider in the .NET Framework SDK. </font>
                  </p>
                  <p class="normal">
                    <font size="1">For Microsoft SQL Server 7.0 or later, the .NET Framework Data Provider
for SQL Server is recommended. </font>
                  </p>
                  <p class="normal">
                    <font size="1">Recommended for single-tier applications using a Microsoft® Access
database. Use of an Access database for a middle-tier application is not recommended. </font>
                  </p>
                </td>
              </tr>
              <tr>
                <td valign="top" width="33%">
                  <p>
                    <font size="1">ODBC .NET Data Provider </font>
                  </p>
                </td>
                <td valign="top" width="67%">
                  <p class="normal">
                    <font size="1">Found in the <b>Microsoft.Data.Odbc</b> namespace. </font>
                  </p>
                  <p class="normal">
                    <font size="1">The ODBC .NET Data Provider is available for </font>
                    <a href="http://msdn.microsoft.com/downloads/default.asp?URL=/code/sample.asp?url=/MSDN-FILES/027/001/668/msdncompositedoc.xml">
                      <font size="1">download</font>
                    </a>
                    <font size="1">. </font>
                  </p>
                  <p class="normal">
                    <font size="1">Provides access to data sources that are connected to using an ODBC
driver. </font>
                  </p>
                </td>
              </tr>
              <tr>
                <td valign="top" width="33%">
                  <p>
                    <font size="1">Oracle .NET Data Provider </font>
                  </p>
                </td>
                <td valign="top" width="67%">
                  <p>
                    <font size="1">Found in the <b>System.Data.OracleClient</b> namespace. </font>
                  </p>
                  <p>
                    <font size="1">The .NET Framework Data Provider for Oracle, unlike the Microsoft OLE
DB provider for Oracle, also supports new Oracle 9i datatypes, as well as ref cursors
(useful for running Oracle stored procedures that return result sets). This provider,
System.Data.OracleClient, is similar to the .NET Framework Data Provider for SQL Server,
System.Data.SqlClient. </font>
                  </p>
                  <p>
                    <font size="1">The Oracle .NET Data Provider is available for </font>
                    <a href="http://msdn.microsoft.com/downloads/default.asp?url=/downloads/sample.asp?url=/msdn-files/027/001/940/msdncompositedoc.xml" target="_top">
                      <font size="1">download</font>
                    </a>
                  </p>
                </td>
              </tr>
            </tbody>
          </table>
        </blockquote>
        <strong>
          <p>
            <br />
          </p>
        </strong>The fastest database read mechanism will be ADO.NET Data Readers, as
opposed to Data Sets.
<img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=ecf1047a-7ea7-46e8-b8f0-29fe4d6c77c3" /></body>
      <title>Using .NET Framework Data Providers</title>
      <guid isPermaLink="false">http://www.spotgnome.com/PermaLink,guid,ecf1047a-7ea7-46e8-b8f0-29fe4d6c77c3.aspx</guid>
      <link>http://www.spotgnome.com/2007/12/19/UsingNETFrameworkDataProviders.aspx</link>
      <pubDate>Wed, 19 Dec 2007 07:40:12 GMT</pubDate>
      <description>&lt;p class=big&gt;
&lt;strong&gt;Which .NET Framework Data Provider to Use?&lt;/strong&gt; 
&lt;/p&gt;
&lt;p class=big&gt;
To achieve the best performance for your application, use the .NET Framework data
provider that is most appropriate for your data source. There are a number of data
provider options for use in your applications. The following table provides information
about the available data providers and which data sources a data provider is most
appropriate for. 
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;table id=AutoNumber1 style="BORDER-COLLAPSE: collapse" bordercolor=#111111 cellspacing=4 cellpadding=2 width="98%" border=1&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=top width="33%"&gt;
&lt;p&gt;
&lt;font size=2&gt;&lt;strong&gt;Provider&lt;/strong&gt; &lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=top width="67%"&gt;
&lt;p&gt;
&lt;font size=2&gt;&lt;strong&gt;Details &lt;/strong&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign=top width="33%"&gt;
&lt;p&gt;
&lt;font size=1&gt;SQL Server .NET Data Provider &lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=top width="67%"&gt;
&lt;p class=normal&gt;
&lt;font size=1&gt;Found in the &lt;b&gt;System.Data.SqlClient&lt;/b&gt; namespace. &lt;/font&gt;
&lt;/p&gt;
&lt;p class=normal&gt;
&lt;font size=1&gt;Recommended for middle-tier applications using Microsoft SQL Server version
7.0 or later. &lt;/font&gt;
&lt;/p&gt;
&lt;p class=normal&gt;
&lt;font size=1&gt;Recommended for single-tier applications using the Microsoft Data Engine
(MSDE) or Microsoft SQL Server 7.0 or later. &lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign=top width="33%"&gt;
&lt;p&gt;
&lt;font size=1&gt;OLE DB .NET Data Provider &lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=top width="67%"&gt;
&lt;p class=normal&gt;
&lt;font size=1&gt;Found in the &lt;b&gt;System.Data.OleDb&lt;/b&gt; namespace. &lt;/font&gt;
&lt;/p&gt;
&lt;p class=normal&gt;
&lt;font size=1&gt;Recommended for middle-tier applications using Microsoft SQL Server 6.5
or earlier, or any OLE DB provider that supports the OLE DB interfaces listed in OLE
DB Interfaces Used by the OLE DB .NET Data Provider in the .NET Framework SDK. &lt;/font&gt;
&lt;/p&gt;
&lt;p class=normal&gt;
&lt;font size=1&gt;For Microsoft SQL Server 7.0 or later, the .NET Framework Data Provider
for SQL Server is recommended. &lt;/font&gt;
&lt;/p&gt;
&lt;p class=normal&gt;
&lt;font size=1&gt;Recommended for single-tier applications using a Microsoft® Access database.
Use of an Access database for a middle-tier application is not recommended. &lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign=top width="33%"&gt;
&lt;p&gt;
&lt;font size=1&gt;ODBC .NET Data Provider &lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=top width="67%"&gt;
&lt;p class=normal&gt;
&lt;font size=1&gt;Found in the &lt;b&gt;Microsoft.Data.Odbc&lt;/b&gt; namespace. &lt;/font&gt;
&lt;/p&gt;
&lt;p class=normal&gt;
&lt;font size=1&gt;The ODBC .NET Data Provider is available for &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/downloads/default.asp?URL=/code/sample.asp?url=/MSDN-FILES/027/001/668/msdncompositedoc.xml"&gt;&lt;font size=1&gt;download&lt;/font&gt;&lt;/a&gt;&lt;font size=1&gt;. &lt;/font&gt;
&lt;/p&gt;
&lt;p class=normal&gt;
&lt;font size=1&gt;Provides access to data sources that are connected to using an ODBC driver. &lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign=top width="33%"&gt;
&lt;p&gt;
&lt;font size=1&gt;Oracle .NET Data Provider&gt; &lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=top width="67%"&gt;
&lt;p&gt;
&lt;font size=1&gt;Found in the &lt;b&gt;System.Data.OracleClient&lt;/b&gt; namespace. &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size=1&gt;The .NET Framework Data Provider for Oracle, unlike the Microsoft OLE
DB provider for Oracle, also supports new Oracle 9i datatypes, as well as ref cursors
(useful for running Oracle stored procedures that return result sets). This provider,
System.Data.OracleClient, is similar to the .NET Framework Data Provider for SQL Server,
System.Data.SqlClient. &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size=1&gt;The Oracle .NET Data Provider is available for &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/downloads/default.asp?url=/downloads/sample.asp?url=/msdn-files/027/001/940/msdncompositedoc.xml" target=_top&gt;&lt;font size=1&gt;download&lt;/font&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/blockquote&gt;&lt;strong&gt; 
&lt;p&gt;
&lt;br&gt;
&lt;/strong&gt;The fastest database read mechanism will be ADO.NET Data Readers, as opposed
to Data Sets.&gt;
&lt;img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=ecf1047a-7ea7-46e8-b8f0-29fe4d6c77c3" /&gt;</description>
      <comments>http://www.spotgnome.com/CommentView,guid,ecf1047a-7ea7-46e8-b8f0-29fe4d6c77c3.aspx</comments>
      <category>.Net</category>
      <category>Programming</category>
      <category>Visual Studio</category>
    </item>
    <item>
      <trackback:ping>http://www.spotgnome.com/Trackback.aspx?guid=f16abfe8-5c83-475b-8e77-544ef1199aa9</trackback:ping>
      <pingback:server>http://www.spotgnome.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.spotgnome.com/PermaLink,guid,f16abfe8-5c83-475b-8e77-544ef1199aa9.aspx</pingback:target>
      <dc:creator>Guy Levin</dc:creator>
      <wfw:comment>http://www.spotgnome.com/CommentView,guid,f16abfe8-5c83-475b-8e77-544ef1199aa9.aspx</wfw:comment>
      <wfw:commentRss>http://www.spotgnome.com/SyndicationService.asmx/GetEntryCommentsRss?guid=f16abfe8-5c83-475b-8e77-544ef1199aa9</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Web design is simpler than ever, and that's a good thing. web 2.0 design means
focused, clean and simple design that is all about the content.
</p>
        <h3>
          <font size="2">Why simplicity is good?</font>
        </h3>
        <ol>
          <li>
Web sites have goals and all web pages have purposes. 
</li>
          <li>
Users' attention is a finite resource. 
</li>
          <li>
It's the designer's job to help users to find what they want (or to notice what the
site wants them to notice) 
</li>
          <li>
            <em>Stuff</em> on the screen attracts the eye. The more stuff there is, the more different
things there are to notice, and the less likely a user is to notice the important
stuff. 
</li>
          <li>
So we need to enable certain communication, and we also need to minimise noise. That
means we need to find a solution that's does its stuff with as little as possible.
That's economy, or simplicity. 
</li>
        </ol>
        <h4>
          <font size="2">How?</font>
        </h4>
        <p>
There are two important aspects to achieving success with simplicity: 
</p>
        <ol>
          <li>
Remove unnecessary components, without sacrificing effectiveness. 
</li>
          <li>
Try out alternative solutions that achieve the same result more simply.</li>
        </ol>
        <p>
          <strong>Whenever you're designing, take it as a discipline consciously to remove all
unnecessary visual elements.</strong>
        </p>
        <p>
Concentrate particularly on areas of the layout that are less relevant to the purpose
of a page, because visual activity in these areas will distract attention from the
key content and navigation. 
</p>
        <p>
Use visual detail - whether lines, words, shapes, colour - to communicate the relevant
information, not just to decorate.
</p>
        <img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=f16abfe8-5c83-475b-8e77-544ef1199aa9" />
      </body>
      <title>Web 2.0 Design - Simplicity</title>
      <guid isPermaLink="false">http://www.spotgnome.com/PermaLink,guid,f16abfe8-5c83-475b-8e77-544ef1199aa9.aspx</guid>
      <link>http://www.spotgnome.com/2007/12/18/Web20DesignSimplicity.aspx</link>
      <pubDate>Tue, 18 Dec 2007 08:38:00 GMT</pubDate>
      <description>&lt;p&gt;
Web design is simpler than ever, and that's a good thing.&amp;nbsp;web 2.0 design means
focused, clean and simple design that is all&amp;nbsp;about the content.
&lt;/p&gt;
&lt;h3&gt;&lt;font size=2&gt;Why simplicity is good?&lt;/font&gt;
&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
Web sites have goals and all web pages have purposes. 
&lt;li&gt;
Users' attention is a finite resource. 
&lt;li&gt;
It's the designer's job to help users to find what they want (or to notice what the
site wants them to notice) 
&lt;li&gt;
&lt;em&gt;Stuff&lt;/em&gt; on the screen attracts the eye. The more stuff there is, the more different
things there are to notice, and the less likely a user is to notice the important
stuff. 
&lt;li&gt;
So we need to enable certain communication, and we also need to minimise noise. That
means we need to find a solution that's does its stuff with as little as possible.
That's economy, or simplicity. 
&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;&lt;font size=2&gt;How?&lt;/font&gt;
&lt;/h4&gt;
&lt;p&gt;
There are two important aspects to achieving success with simplicity: 
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Remove unnecessary components, without sacrificing effectiveness. 
&lt;li&gt;
Try out alternative solutions that achieve the same result more simply.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
&lt;strong&gt;Whenever you're designing, take it as a discipline consciously to remove all
unnecessary visual elements.&lt;/strong&gt; 
&lt;/p&gt;
&lt;p&gt;
Concentrate particularly on areas of the layout that are less relevant to the purpose
of a page, because visual activity in these areas will distract attention from the
key content and navigation. 
&lt;/p&gt;
&lt;p&gt;
Use visual detail - whether lines, words, shapes, colour - to communicate the relevant
information, not just to decorate.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=f16abfe8-5c83-475b-8e77-544ef1199aa9" /&gt;</description>
      <comments>http://www.spotgnome.com/CommentView,guid,f16abfe8-5c83-475b-8e77-544ef1199aa9.aspx</comments>
      <category>CSS</category>
      <category>Programming</category>
      <category>Web 2.0</category>
      <category>Design</category>
    </item>
    <item>
      <trackback:ping>http://www.spotgnome.com/Trackback.aspx?guid=4273beeb-aed7-4150-9785-01b9dc3573de</trackback:ping>
      <pingback:server>http://www.spotgnome.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.spotgnome.com/PermaLink,guid,4273beeb-aed7-4150-9785-01b9dc3573de.aspx</pingback:target>
      <dc:creator>Guy Levin</dc:creator>
      <wfw:comment>http://www.spotgnome.com/CommentView,guid,4273beeb-aed7-4150-9785-01b9dc3573de.aspx</wfw:comment>
      <wfw:commentRss>http://www.spotgnome.com/SyndicationService.asmx/GetEntryCommentsRss?guid=4273beeb-aed7-4150-9785-01b9dc3573de</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
When it comes to designing and developing a web site the load time is one consideration
that is often ignored, or is an afterthought once the majority of the design and structure
is in place.  While high-speed internet connections are becoming increasingly
common there are still a significant portion of web users out there with 56k connections,
and even those <em>with</em> broadband connections aren't guaranteed to have a fast
connection to <u>your</u> particular server.  Every second that a user has to
wait to download your content is increasing the chance of that user deciding to move
on. 
</p>
        <p>
Attempting to reduce the size of a web page is usually restricted to compressing larger
images and optimizing them for web use.  This is a necessary step to managing
page size, but there is another important factor that can significantly reduce the
size of a page to improve download times.  Getting rid of that code bloat means
less actual bytes to be downloaded by clients, as well as captilizing on what the
client has already downloaded.  Unfortunately this is an option that tends to
be ignored due to the perceived loss of time spent combing through markup to cut out
the chaff, despite the fact that clean, efficient markup with well-planned style definitions
will save countless hours when it comes to upkeep and maintenance. 
</p>
        <p>
To demonstrate the difference between a bloated page and one with efficient markup
I created two basic pages. One uses tables, font tags, HTML style attributes
and so forth to control the structure and look of the page, while the other uses minimal
markup with an external stylesheet. 
</p>
        <p>
          <strong>1)</strong>
          <strong>Bloated Page</strong>
        </p>
        <div class="code">
          <font size="1">
            <font color="#000080">
              <span class="kwrd">&lt;!</span>
              <span class="html">DOCTYPE</span>
              <span class="attr">HTML</span>
              <span class="attr">PUBLIC</span>
              <span class="kwrd">"-//W3C//DTD
HTML 4.01 Transitional//EN"</span>
              <span class="kwrd">"http://www.w3.org/TR/html4/loose.dtd"</span>
              <span class="kwrd">&gt;</span>
              <br />
              <span class="kwrd">&lt;</span>
              <span class="html">html</span>
              <span class="kwrd">&gt;</span>
              <br />
              <span class="kwrd">&lt;</span>
              <span class="html">head</span>
              <span class="kwrd">&gt;</span>
              <br />
              <span class="kwrd">&lt;</span>
              <span class="html">meta</span>
              <span class="attr">http-equiv</span>
              <span class="kwrd">="Content-Type"</span>
              <span class="attr">content</span>
              <span class="kwrd">="text/html;
charset=utf-8"</span>
              <span class="kwrd">&gt;</span>
              <br />
              <span class="kwrd">&lt;</span>
              <span class="html">title</span>
              <span class="kwrd">&gt;</span>This
Tag Soup Is Really Thick<span class="kwrd">&lt;/</span><span class="html">title</span><span class="kwrd">&gt;</span><br /><span class="kwrd">&lt;</span><span class="html">meta</span><span class="attr">name</span><span class="kwrd">="description"</span><span class="attr">content</span><span class="kwrd">="The
end result of lazy web page design resulting in a bloated mess of HTML."</span><span class="kwrd">&gt;</span><br /><span class="kwrd">&lt;</span><span class="html">meta</span><span class="attr">name</span><span class="kwrd">="keywords"</span><span class="attr">content</span><span class="kwrd">="tag
soup, messy html, bloated html"</span><span class="kwrd">&gt;</span><br /><span class="kwrd">&lt;/</span><span class="html">head</span><span class="kwrd">&gt;</span><br /><span class="kwrd">&lt;</span><span class="html">body</span><span class="kwrd">&gt;</span><br /><span class="kwrd">&lt;</span><span class="html">center</span><span class="kwrd">&gt;</span><br />
  <span class="kwrd">&lt;</span><span class="html">table</span><span class="attr">width</span>=<span class="attr">700</span><span class="attr">height</span>=<span class="attr">800</span><span class="attr">bgcolor</span><span class="kwrd">="gainsboro"</span><span class="attr">border</span>=<span class="attr">0</span><span class="attr">cellpadding</span>=<span class="attr">0</span><span class="attr">cellspacing</span>=<span class="attr">0</span><span class="kwrd">&gt;</span><br />
    <span class="kwrd">&lt;</span><span class="html">tr</span><span class="kwrd">&gt;</span><br />
      <span class="kwrd">&lt;</span><span class="html">td</span><span class="attr">valign</span>=<span class="attr">top</span><span class="attr">width</span>=<span class="attr">150</span><span class="kwrd">&gt;&lt;</span><span class="html">table</span><span class="attr">align</span>=<span class="attr">center</span><span class="attr">border</span>=<span class="attr">0</span><span class="attr">cellpadding</span>=<span class="attr">0</span><span class="attr">cellspacing</span>=<span class="attr">0</span><span class="kwrd">&gt;</span><br />
          <span class="kwrd">&lt;</span><span class="html">tr</span><span class="kwrd">&gt;</span><br />
            <span class="kwrd">&lt;</span><span class="html">td</span><span class="attr">align</span><span class="kwrd">="left"</span><span class="kwrd">&gt;&lt;</span><span class="html">a</span><span class="attr">href</span><span class="kwrd">="#home"</span><span class="attr">title</span><span class="kwrd">="Not
a real link"</span><span class="kwrd">&gt;&lt;</span><span class="html">font</span><span class="attr">color</span><span class="kwrd">="#4FB322"</span><span class="attr">size</span><span class="kwrd">="3"</span></font>
          </font>
        </div>
        <div class="code">
          <font size="1">
            <font color="#000080">
              <span class="kwrd">
              </span>             <span class="attr">face</span><span class="kwrd">="Geneva,
Arial, Helvetica, sans-serif"</span><span class="kwrd">&gt;</span>Home Page<span class="kwrd">&lt;/</span><span class="html">font</span><span class="kwrd">&gt;&lt;/</span><span class="html">a</span><span class="kwrd">&gt;&lt;/</span><span class="html">td</span><span class="kwrd">&gt;</span><br />
          <span class="kwrd">&lt;/</span><span class="html">tr</span><span class="kwrd">&gt;</span><br />
          <span class="kwrd">&lt;</span><span class="html">tr</span><span class="kwrd">&gt;</span><br />
            <span class="kwrd">&lt;</span><span class="html">td</span><span class="attr">align</span><span class="kwrd">="left"</span><span class="kwrd">&gt;&lt;</span><span class="html">a</span><span class="attr">href</span><span class="kwrd">="#about"</span><span class="attr">title</span><span class="kwrd">="Not
a real link"</span><span class="kwrd">&gt;&lt;</span><span class="html">font</span><span class="attr">color</span><span class="kwrd">="#4FB322"</span><span class="attr">size</span><span class="kwrd">="3"</span><span class="attr"></span></font>
          </font>
        </div>
        <div class="code">
          <font size="1">
            <font color="#000080">
              <span class="attr">            face</span>
              <span class="kwrd">="Geneva,
Arial, Helvetica, sans-serif"</span>
              <span class="kwrd">&gt;</span>About Me<span class="kwrd">&lt;/</span><span class="html">font</span><span class="kwrd">&gt;&lt;/</span><span class="html">a</span><span class="kwrd">&gt;&lt;/</span><span class="html">td</span><span class="kwrd">&gt;</span><br />
          <span class="kwrd">&lt;/</span><span class="html">tr</span><span class="kwrd">&gt;</span><br />
          <span class="kwrd">&lt;</span><span class="html">tr</span><span class="kwrd">&gt;</span><br />
            <span class="kwrd">&lt;</span><span class="html">td</span><span class="attr">align</span><span class="kwrd">="left"</span><span class="kwrd">&gt;&lt;</span><span class="html">a</span><span class="attr">href</span><span class="kwrd">="#links"</span><span class="attr">title</span><span class="kwrd">="Not
a real link"</span><span class="kwrd">&gt;&lt;</span><span class="html">font</span><span class="attr">color</span><span class="kwrd">="#4FB322"</span><span class="attr">size</span><span class="kwrd">="3"</span><span class="attr"></span></font>
          </font>
        </div>
        <div class="code">
          <font size="1">
            <font color="#000080">
              <span class="attr">            face</span>
              <span class="kwrd">="Geneva,
Arial, Helvetica, sans-serif"</span>
              <span class="kwrd">&gt;</span>Links<span class="kwrd">&lt;/</span><span class="html">font</span><span class="kwrd">&gt;&lt;/</span><span class="html">a</span><span class="kwrd">&gt;&lt;/</span><span class="html">td</span><span class="kwrd">&gt;</span><br />
          <span class="kwrd">&lt;/</span><span class="html">tr</span><span class="kwrd">&gt;</span><br />
        <span class="kwrd">&lt;/</span><span class="html">table</span><span class="kwrd">&gt;&lt;/</span><span class="html">td</span><span class="kwrd">&gt;</span><br />
      <span class="kwrd">&lt;</span><span class="html">td</span><span class="attr">valign</span>=<span class="attr">top</span><span class="kwrd">&gt;&lt;</span><span class="html">table</span><span class="kwrd">&gt;</span><br />
          <span class="kwrd">&lt;</span><span class="html">tr</span><span class="kwrd">&gt;</span><br />
            <span class="kwrd">&lt;</span><span class="html">td</span><span class="attr">align</span><span class="kwrd">="center"</span><span class="attr">height</span>=<span class="attr">64</span><span class="kwrd">&gt;&lt;</span><span class="html">h1</span><span class="kwrd">&gt;&lt;</span><span class="html">font</span><span class="attr">color</span><span class="kwrd">="red"</span><span class="attr">face</span><span class="kwrd">="Geneva,
Arial, Helvetica, sans-</span></font>
          </font>
        </div>
        <div class="code">
          <font size="1">
            <font color="#000080">
              <span class="kwrd">            serif"</span>
              <span class="kwrd">&gt;</span>Welcome
to My Site!<span class="kwrd">&lt;/</span><span class="html">font</span><span class="kwrd">&gt;&lt;/</span><span class="html">h1</span><span class="kwrd">&gt;&lt;/</span><span class="html">td</span><span class="kwrd">&gt;</span><br />
          <span class="kwrd">&lt;/</span><span class="html">tr</span><span class="kwrd">&gt;</span><br />
          <span class="kwrd">&lt;</span><span class="html">tr</span><span class="kwrd">&gt;</span><br />
            <span class="kwrd">&lt;</span><span class="html">td</span><span class="attr">align</span><span class="kwrd">="left"</span><span class="kwrd">&gt;&lt;</span><span class="html">font</span><span class="attr">color</span><span class="kwrd">="#FFFFFF"</span><span class="attr">size</span><span class="kwrd">="3"</span><span class="attr">face</span><span class="kwrd">="Geneva,
Arial, Helvetica, sans-</span></font>
          </font>
        </div>
        <div class="code">
          <font size="1">
            <font color="#000080">
              <span class="kwrd">             serif"</span>
              <span class="kwrd">&gt;</span>Isn<span class="attr">&amp;acute;</span>t
it surprisingly ugly and bland?<span class="kwrd">&lt;/</span><span class="html">font</span><span class="kwrd">&gt;&lt;/</span><span class="html">td</span><span class="kwrd">&gt;</span><br />
          <span class="kwrd">&lt;/</span><span class="html">tr</span><span class="kwrd">&gt;</span><br />
          <span class="kwrd">&lt;</span><span class="html">tr</span><span class="kwrd">&gt;</span><br />
            <span class="kwrd">&lt;</span><span class="html">td</span><span class="attr">align</span><span class="kwrd">="left"</span><span class="kwrd">&gt;&lt;</span><span class="html">font</span><span class="attr">color</span><span class="kwrd">="#FFFFFF"</span><span class="attr">size</span><span class="kwrd">="3"</span><span class="attr">face</span><span class="kwrd">="Geneva,
Arial, Helvetica, sans-serif"</span><span class="kwrd">&gt;</span>Lorem ipsum dolor
sit amet, consectetuer adipiscing elit. Fusce est. Maecenas pharetra nibh vel turpis
molestie gravida. Integer convallis odio eu nulla. Vivamus eget turpis eu neque dignissim
dignissim. Fusce vel erat ut turpis pharetra molestie. Cras sollicitudin consequat
sem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia
Curae; Maecenas augue diam, sagittis eget, cursus at, vulputate at, nisl. Etiam scelerisque
molestie nibh. Suspendisse ornare dignissim enim. Sed posuere nunc a lectus. Vestibulum
luctus, nibh feugiat convallis ornare, lorem neque volutpat risus, a dapibus odio
justo at erat. Donec vel lacus id urna luctus tincidunt. Morbi nunc. Donec fringilla
sapien nec lectus. Duis at felis a leo porta tempor.<span class="kwrd">&lt;/</span><span class="html">font</span><span class="kwrd">&gt;&lt;/</span><span class="html">td</span><span class="kwrd">&gt;</span><br />
          <span class="kwrd">&lt;/</span><span class="html">tr</span><span class="kwrd">&gt;</span><br />
          <span class="kwrd">&lt;</span><span class="html">tr</span><span class="kwrd">&gt;</span><br />
            <span class="kwrd">&lt;</span><span class="html">td</span><span class="attr">align</span><span class="kwrd">="left"</span><span class="kwrd">&gt;&lt;</span><span class="html">font</span><span class="attr">color</span><span class="kwrd">="#FFFFFF"</span><span class="attr">size</span><span class="kwrd">="3"</span><span class="attr">face</span><span class="kwrd">="Geneva,
Arial, Helvetica, sans-serif"</span><span class="kwrd">&gt;</span>Maecenas malesuada
felis id mauris. Ut nibh eros, vestibulum nec, ornare sollicitudin, hendrerit et,
ligula. Suspendisse tellus elit, rutrum ut, tempor eget, porta bibendum, magna. Nunc
sem dolor, pharetra ut, fermentum in, consequat vitae, velit. Vestibulum in ipsum.
Phasellus erat. Sed eget turpis tristique eros cursus gravida. Vestibulum quis pede
a libero elementum varius. Nullam feugiat accumsan enim. Aenean nec mi. Vestibulum
ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae;<span class="kwrd">&lt;/</span><span class="html">font</span><span class="kwrd">&gt;&lt;/</span><span class="html">td</span><span class="kwrd">&gt;</span><br />
          <span class="kwrd">&lt;/</span><span class="html">tr</span><span class="kwrd">&gt;</span><br />
          <span class="kwrd">&lt;</span><span class="html">tr</span><span class="kwrd">&gt;</span><br />
            <span class="kwrd">&lt;</span><span class="html">td</span><span class="attr">align</span><span class="kwrd">="left"</span><span class="kwrd">&gt;&lt;</span><span class="html">font</span><span class="attr">color</span><span class="kwrd">="#FFFFFF"</span><span class="attr">size</span><span class="kwrd">="3"</span><span class="attr">face</span><span class="kwrd">="Geneva,
Arial, Helvetica, sans-serif"</span><span class="kwrd">&gt;</span>Aenean vel neque
ac orci sagittis tristique. Phasellus cursus quam a mauris. Donec posuere pede a nisl.
Curabitur nec ligula eu nibh accumsan sagittis. Integer lacinia. Class aptent taciti
sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Praesent tortor
dolor, pellentesque eget, fermentum vel, mollis ut, erat. Nullam mollis. Cras rhoncus
tellus ut neque. Pellentesque sed ante.<span class="kwrd">&lt;/</span><span class="html">font</span><span class="kwrd">&gt;&lt;/</span><span class="html">td</span><span class="kwrd">&gt;</span><br />
          <span class="kwrd">&lt;/</span><span class="html">tr</span><span class="kwrd">&gt;</span><br />
          <span class="kwrd">&lt;</span><span class="html">tr</span><span class="attr">align</span><span class="kwrd">="left"</span><span class="kwrd">&gt;</span><br />
            <span class="kwrd">&lt;</span><span class="html">td</span><span class="kwrd">&gt;&lt;</span><span class="html">font</span><span class="attr">color</span><span class="kwrd">="#FFFFFF"</span><span class="attr">size</span><span class="kwrd">="3"</span><span class="attr">face</span><span class="kwrd">="Geneva,
Arial, Helvetica, sans-serif"</span><span class="kwrd">&gt;</span>Donec at nunc. Nulla
elementum porta elit. Donec bibendum. Fusce elit ligula, gravida et, tincidunt et,
aliquam sit amet, metus. Nulla id magna. Fusce quis eros. Sed eget justo. Vivamus
dictum interdum quam. Curabitur malesuada. Proin id metus. Curabitur feugiat. Nunc
in turpis. Cras lobortis lobortis felis. Pellentesque habitant morbi tristique senectus
et netus et malesuada fames ac turpis egestas. Mauris imperdiet aliquet ante. Lorem
ipsum dolor sit amet, consectetuer adipiscing elit.<span class="kwrd">&lt;/</span><span class="html">font</span><span class="kwrd">&gt;&lt;/</span><span class="html">td</span><span class="kwrd">&gt;</span><br />
          <span class="kwrd">&lt;/</span><span class="html">tr</span><span class="kwrd">&gt;</span><br />
          <span class="kwrd">&lt;</span><span class="html">tr</span><span class="attr">align</span><span class="kwrd">="left"</span><span class="kwrd">&gt;</span><br />
            <span class="kwrd">&lt;</span><span class="html">td</span><span class="kwrd">&gt;&lt;</span><span class="html">font</span><span class="attr">color</span><span class="kwrd">="#FFFFFF"</span><span class="attr">size</span><span class="kwrd">="3"</span><span class="attr">face</span><span class="kwrd">="Geneva,
Arial, Helvetica, sans-serif"</span><span class="kwrd">&gt;</span>Etiam tristique
mauris at nibh sodales pretium. In lorem eros, laoreet eget, rhoncus et, lacinia nec,
pede. Fusce a quam. Pellentesque vitae lacus. Vivamus commodo. Morbi euismod, ipsum
id consectetuer ornare, nisi sem suscipit pede, vel dictum purus mauris eu leo. Proin
sodales. Aliquam in pede nec eros aliquet adipiscing. Nulla a purus sed risus ullamcorper
tempus. Nunc neque magna, fringilla quis, ullamcorper vitae, placerat sed, orci. Pellentesque
habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum
ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae;<span class="kwrd">&lt;/</span><span class="html">font</span><span class="kwrd">&gt;&lt;/</span><span class="html">td</span><span class="kwrd">&gt;</span><br />
          <span class="kwrd">&lt;/</span><span class="html">tr</span><span class="kwrd">&gt;</span><br />
        <span class="kwrd">&lt;/</span><span class="html">table</span><span class="kwrd">&gt;&lt;/</span><span class="html">td</span><span class="kwrd">&gt;</span><br />
    <span class="kwrd">&lt;/</span><span class="html">tr</span><span class="kwrd">&gt;</span><br />
  <span class="kwrd">&lt;/</span><span class="html">table</span><span class="kwrd">&gt;</span><br /><span class="kwrd">&lt;/</span><span class="html">center</span><span class="kwrd">&gt;</span><br /><span class="kwrd">&lt;/</span><span class="html">body</span><span class="kwrd">&gt;</span><br /><span class="kwrd">&lt;/</span><span class="html">html</span><span class="kwrd">&gt;</span></font>
          </font>
        </div>
        <p>
          <strong>
          </strong> 
</p>
        <p>
          <strong>2)</strong>
          <strong>Cleaned Page</strong>
        </p>
        <div class="code">
          <em>
            <font size="1">
              <font color="#000080">
                <span class="kwrd">&lt;!</span>
                <span class="html">DOCTYPE</span>
                <span class="attr">HTML</span>
                <span class="attr">PUBLIC</span>
                <span class="kwrd">"-//W3C//DTD
HTML 4.01 Transitional//EN"</span>
                <span class="kwrd">"http://www.w3.org/TR/html4/loose.dtd"</span>
                <span class="kwrd">&gt;</span>
                <br />
                <span class="kwrd">&lt;</span>
                <span class="html">html</span>
                <span class="kwrd">&gt;</span>
                <br />
  <span class="kwrd">&lt;</span><span class="html">head</span><span class="kwrd">&gt;</span><br />
    <span class="kwrd">&lt;</span><span class="html">meta</span><span class="attr">http-equiv</span><span class="kwrd">="Content-Type"</span><span class="attr">content</span><span class="kwrd">="text/html;
charset=utf-8"</span><span class="kwrd">&gt;</span><br />
    <span class="kwrd">&lt;</span><span class="html">title</span><span class="kwrd">&gt;</span>Less
Markup, More Content<span class="kwrd">&lt;/</span><span class="html">title</span><span class="kwrd">&gt;</span><br />
    <span class="kwrd">&lt;</span><span class="html">meta</span><span class="attr">name</span><span class="kwrd">="description"</span><span class="attr">content</span><span class="kwrd">="The
end result of lazy web page design resulting in a bloated mess of HTML."</span><span class="kwrd">&gt;</span><br />
    <span class="kwrd">&lt;</span><span class="html">meta</span><span class="attr">name</span><span class="kwrd">="keywords"</span><span class="attr">content</span><span class="kwrd">="tag
soup, messy html, bloated html"</span><span class="kwrd">&gt;</span><br />
    <span class="kwrd">&lt;</span><span class="html">link</span><span class="attr">href</span><span class="kwrd">="style.css"</span><span class="attr">rel</span><span class="kwrd">="stylesheet"</span><span class="attr">type</span><span class="kwrd">="text/css"</span><span class="kwrd">&gt;</span><br />
  <span class="kwrd">&lt;/</span><span class="html">head</span><span class="kwrd">&gt;</span><br />
  <span class="kwrd">&lt;</span><span class="html">body</span><span class="kwrd">&gt;</span><br />
    <span class="kwrd">&lt;</span><span class="html">div</span><span class="attr">class</span><span class="kwrd">="content"</span><span class="kwrd">&gt;</span><br />
      <span class="kwrd">&lt;</span><span class="html">ul</span><span class="attr">class</span><span class="kwrd">="menu"</span><span class="kwrd">&gt;</span><br />
        <span class="kwrd">&lt;</span><span class="html">li</span><span class="kwrd">&gt;&lt;</span><span class="html">a</span><span class="attr">href</span><span class="kwrd">="#home"</span><span class="attr">title</span><span class="kwrd">="Not
a real link"</span><span class="kwrd">&gt;</span>Home Page<span class="kwrd">&lt;/</span><span class="html">a</span><span class="kwrd">&gt;&lt;/</span><span class="html">li</span><span class="kwrd">&gt;</span><br />
        <span class="kwrd">&lt;</span><span class="html">li</span><span class="kwrd">&gt;&lt;</span><span class="html">a</span><span class="attr">href</span><span class="kwrd">="#home"</span><span class="attr">title</span><span class="kwrd">="Not
a real link"</span><span class="kwrd">&gt;</span>About Me<span class="kwrd">&lt;/</span><span class="html">a</span><span class="kwrd">&gt;&lt;/</span><span class="html">li</span><span class="kwrd">&gt;</span><br />
        <span class="kwrd">&lt;</span><span class="html">li</span><span class="kwrd">&gt;&lt;</span><span class="html">a</span><span class="attr">href</span><span class="kwrd">="#home"</span><span class="attr">title</span><span class="kwrd">="Not
a real link"</span><span class="kwrd">&gt;</span>Links<span class="kwrd">&lt;/</span><span class="html">a</span><span class="kwrd">&gt;&lt;/</span><span class="html">li</span><span class="kwrd">&gt;</span><br />
      <span class="kwrd">&lt;/</span><span class="html">ul</span><span class="kwrd">&gt;</span><br />
      <span class="kwrd">&lt;</span><span class="html">h1</span><span class="kwrd">&gt;</span>Welcome
To My Site!<span class="kwrd">&lt;/</span><span class="html">h1</span><span class="kwrd">&gt;</span><br />
      <span class="kwrd">&lt;</span><span class="html">p</span><span class="kwrd">&gt;</span>Isn<span class="attr">&amp;acute;</span>t
it suprisingly ugly and bland?<span class="kwrd">&lt;/</span><span class="html">p</span><span class="kwrd">&gt;</span><br />
      <span class="kwrd">&lt;</span><span class="html">p</span><span class="kwrd">&gt;</span>Lorem
ipsum dolor sit amet, consectetuer adipiscing elit. Fusce est.  Maecenas pharetra
nibh vel turpis molestie gravida. Integer convallis  odio eu nulla. Vivamus eget
turpis eu neque dignissim dignissim. Fusce  vel erat ut turpis pharetra molestie.
Cras sollicitudin consequat sem.  Vestibulum ante ipsum primis in faucibus orci
luctus et ultrices  posuere cubiliaCurae; Maecenas augue diam, sagittis eget,
cursus at,  vulputate at, nisl. Etiam scelerisque molestie nibh. Suspendisse
ornare  dignissim enim. Sed posuere nunc a lectus. Vestibulum luctus, nibh 
feugiat convallis ornare, lorem neque volutpat risus, a dapibus odio  justo at
erat. Donec vel lacus id urna luctus tincidunt. Morbi nunc.  Donec fringilla
sapien nec lectus. Duis at felis a leo porta tempor. <span class="kwrd">&lt;/</span><span class="html">p</span><span class="kwrd">&gt;</span><br />
      <span class="kwrd">&lt;</span><span class="html">p</span><span class="kwrd">&gt;</span>Maecenas
malesuada felis id mauris. Ut nibh eros, vestibulum nec,  ornare sollicitudin,
hendrerit et, ligula. Suspendisse tellus elit,  rutrum ut, tempor eget, porta
bibendum, magna. Nunc sem dolor, pharetra  ut, fermentum in, consequat vitae,
velit. Vestibulum in ipsum.  Phasellus erat. Sed eget turpis tristique eros cursus
gravida.  Vestibulum quis pede a libero elementum varius. Nullam feugiat accumsan 
enim. Aenean nec mi. Vestibulum ante ipsum primis in faucibus orci  luctus et
ultrices posuere cubilia Curae; <span class="kwrd">&lt;/</span><span class="html">p</span><span class="kwrd">&gt;</span><br />
      <span class="kwrd">&lt;</span><span class="html">p</span><span class="kwrd">&gt;</span>Aenean
vel neque ac orci sagittis tristique. Phasellus cursus quam a  mauris. Donec
posuere pede a nisl. Curabitur nec ligula eu nibh  accumsan sagittis. Integer
lacinia. Class aptent taciti sociosqu ad  litora torquent per conubia nostra,
per inceptos hymenaeos. Praesent  tortor dolor, pellentesque eget, fermentum
vel, mollis ut, erat. Nullam  mollis. Cras rhoncus tellus ut neque. Pellentesque
sed ante. <span class="kwrd">&lt;/</span><span class="html">p</span><span class="kwrd">&gt;</span><br />
      <span class="kwrd">&lt;</span><span class="html">p</span><span class="kwrd">&gt;</span>Donec
at nunc. Nulla elementum porta elit. Donec bibendum. Fusce  elit ligula, gravida
et, tincidunt et, aliquam sit amet, metus. Nulla  id magna. Fusce quis eros.
Sed eget justo. Vivamus dictum interdum  quam. Curabitur malesuada. Proin id
metus. Curabitur feugiat. Nunc in  turpis. Cras lobortis lobortis felis. Pellentesque
habitant morbi  tristique senectus et netus et malesuada fames ac turpis egestas. 
Mauris imperdiet aliquet ante. Lorem ipsum dolor sit amet, consectetuer  adipiscing
elit. <span class="kwrd">&lt;/</span><span class="html">p</span><span class="kwrd">&gt;</span><br />
      <span class="kwrd">&lt;</span><span class="html">p</span><span class="kwrd">&gt;</span>Etiam
tristique mauris at nibh sodales pretium. In lorem eros,  laoreet eget, rhoncus
et, lacinia nec, pede. Fusce a quam. Pellentesque  vitae lacus. Vivamus commodo.
Morbi euismod, ipsum id consectetuer  ornare, nisi sem suscipit pede, vel dictum
purus mauris eu leo. Proin  sodales. Aliquam in pede nec eros aliquet adipiscing.
Nulla a purus sed  risus ullamcorper tempus. Nunc neque magna, fringilla quis,
ullamcorper  vitae, placerat sed, orci. Pellentesque habitant morbi tristique 
senectus et netus et malesuada fames ac turpis egestas. Vestibulum ante  ipsum
primis in faucibus orci luctus et ultrices posuere cubilia Curae; <span class="kwrd">&lt;/</span><span class="html">p</span><span class="kwrd">&gt;</span><br />
    <span class="kwrd">&lt;/</span><span class="html">div</span><span class="kwrd">&gt;</span><br />
  <span class="kwrd">&lt;/</span><span class="html">body</span><span class="kwrd">&gt;</span><br /><span class="kwrd">&lt;/</span><span class="html">html</span><span class="kwrd">&gt;</span></font>
            </font>
          </em>
        </div>
        <div class="code">
          <em>
          </em> 
</div>
        <div class="code">
          <em>
          </em> 
</div>
        <div class="code">
          <em>
            <strong>External Style Sheet</strong>
          </em>
        </div>
        <div class="code"> 
</div>
        <div class="code">
          <em>
            <font color="#000080" size="1">@charset "utf-8";<br />
body{font:13pt Geneva, Arial, Helvetica, sans-serif;}<br />
.menu{float:left;height:800px;list-style-type:none;width:150px;}<br />
.menu a, .menu a:visited{color:#4FB322;}<br />
.content{background:gainsboro;color:white;margin:auto;position:relative;width:700px;}<br />
h1{color:red;line-height:64px;text-align:center;}<br />
p{margin:4px;}</font>
          </em>
        </div>
        <div class="code">
          <em>
            <font color="#000080" size="1">
            </font>
          </em> 
</div>
        <p>
Even in this basic example you can see a fairly dramatic improvement when the excess
HTML is trimmed and CSS is used to control style.  The original page is 51 lines,
where the cleaned page is only 26 lines, plus 7 lines in the style sheet.  The
cleaned page is a third the size of the original (counting the style sheet), and more
realistically is actually half the size because the style sheet would be cached by
most client browsers and wouldn't be downloaded for every page request.  As far
as raw kilobytes it's a difference of 6KB to 4KB, which isn't a particularly exciting
difference in this case, but one that is quickly magnified as the length of the page
increases.  This is especially true with dynamic applications that pull content
from a database, most importantly content such as product listings that utilize the
same markup and are repeated multiple times. Fortunately in the case of dynamic pages
involving looping procedures that output the same markup with different content, cutting
down the bloat can be as easy as a few modifications to those procedures. 
</p>
        <p>
Furthermore if you wanted to change, for instance, the font color or the line-height
in the original, you would have to modify every font tag and table cell to accomplish
that.  Implementing those changes in the second example requires a single modification
to the style-sheet.  The time-saved here is once again significantly amplified
when considered in a situation with multiple pages (in many cases this can be hundreds
or even thousands). 
</p>
        <p>
When all is said and done, this isn't meant to be a be-all end-all guide for optimizing
your markup because I could write a book and still not cover it all.  Rather
it was meant to highlight an aspect of web page performance and optimization that
is usually swept under the rug in favour of those that are more directly appreciable
such as eye-candy and new features.  While clean markup might not be as "glamourous"
as other aspects of web development, it is an important aspect to keeping load time
in check and a crucial factor in reducing them amount of time spent maintaining and
updating.
</p>
        <img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=4273beeb-aed7-4150-9785-01b9dc3573de" />
      </body>
      <title>How To Cut Your HTML Size In Half</title>
      <guid isPermaLink="false">http://www.spotgnome.com/PermaLink,guid,4273beeb-aed7-4150-9785-01b9dc3573de.aspx</guid>
      <link>http://www.spotgnome.com/2007/12/18/HowToCutYourHTMLSizeInHalf.aspx</link>
      <pubDate>Tue, 18 Dec 2007 08:24:34 GMT</pubDate>
      <description>&lt;p&gt;
When it comes to designing and developing a web site the load time is one consideration
that is often ignored, or is an afterthought once the majority of the design and structure
is in place.&amp;nbsp; While high-speed internet connections are becoming increasingly
common there are still a significant portion of web users out there with 56k connections,
and even those &lt;em&gt;with&lt;/em&gt; broadband connections aren't guaranteed to have a fast
connection to &lt;u&gt;your&lt;/u&gt; particular server.&amp;nbsp; Every second that a user has to
wait to download your content is increasing the chance of that user deciding to move
on. 
&lt;/p&gt;
&lt;p&gt;
Attempting to reduce the size of a web page is usually restricted to compressing larger
images and optimizing them for web use.&amp;nbsp; This is a necessary step to managing
page size, but there is another important factor that can significantly reduce the
size of a page to improve download times.&amp;nbsp; Getting rid of that code bloat means
less actual bytes to be downloaded by clients, as well as captilizing on what the
client has already downloaded.&amp;nbsp; Unfortunately this is an option that tends to
be ignored due to the perceived loss of time spent combing through markup to cut out
the chaff, despite the fact that clean, efficient markup with well-planned style definitions
will save countless hours when it comes to upkeep and maintenance. 
&lt;/p&gt;
&lt;p&gt;
To demonstrate the difference between a bloated page and one with efficient markup
I created two basic pages.&amp;nbsp;One uses tables, font tags, HTML style attributes
and so forth to control the structure and look of the page, while the other uses minimal
markup with an external stylesheet. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;1)&lt;/strong&gt; &lt;strong&gt;Bloated Page&lt;/strong&gt; 
&lt;/p&gt;
&lt;div class=code&gt;&lt;font size=1&gt;&lt;font color=#000080&gt;&lt;span class=kwrd&gt;&amp;lt;!&lt;/span&gt;&lt;span class=html&gt;DOCTYPE&lt;/span&gt; &lt;span class=attr&gt;HTML&lt;/span&gt; &lt;span class=attr&gt;PUBLIC&lt;/span&gt; &lt;span class=kwrd&gt;"-//W3C//DTD
HTML 4.01 Transitional//EN"&lt;/span&gt; &lt;span class=kwrd&gt;"http://www.w3.org/TR/html4/loose.dtd"&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;html&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;head&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;meta&lt;/span&gt; &lt;span class=attr&gt;http-equiv&lt;/span&gt;&lt;span class=kwrd&gt;="Content-Type"&lt;/span&gt; &lt;span class=attr&gt;content&lt;/span&gt;&lt;span class=kwrd&gt;="text/html;
charset=utf-8"&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;title&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;This
Tag Soup Is Really Thick&lt;span class=kwrd&gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;title&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;meta&lt;/span&gt; &lt;span class=attr&gt;name&lt;/span&gt;&lt;span class=kwrd&gt;="description"&lt;/span&gt; &lt;span class=attr&gt;content&lt;/span&gt;&lt;span class=kwrd&gt;="The
end result of lazy web page design resulting in a bloated mess of HTML."&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;meta&lt;/span&gt; &lt;span class=attr&gt;name&lt;/span&gt;&lt;span class=kwrd&gt;="keywords"&lt;/span&gt; &lt;span class=attr&gt;content&lt;/span&gt;&lt;span class=kwrd&gt;="tag
soup, messy html, bloated html"&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;span class=kwrd&gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;head&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;body&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;center&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;table&lt;/span&gt; &lt;span class=attr&gt;width&lt;/span&gt;=&lt;span class=attr&gt;700&lt;/span&gt; &lt;span class=attr&gt;height&lt;/span&gt;=&lt;span class=attr&gt;800&lt;/span&gt; &lt;span class=attr&gt;bgcolor&lt;/span&gt;&lt;span class=kwrd&gt;="gainsboro"&lt;/span&gt; &lt;span class=attr&gt;border&lt;/span&gt;=&lt;span class=attr&gt;0&lt;/span&gt; &lt;span class=attr&gt;cellpadding&lt;/span&gt;=&lt;span class=attr&gt;0&lt;/span&gt; &lt;span class=attr&gt;cellspacing&lt;/span&gt;=&lt;span class=attr&gt;0&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;tr&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;td&lt;/span&gt; &lt;span class=attr&gt;valign&lt;/span&gt;=&lt;span class=attr&gt;top&lt;/span&gt; &lt;span class=attr&gt;width&lt;/span&gt;=&lt;span class=attr&gt;150&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;table&lt;/span&gt; &lt;span class=attr&gt;align&lt;/span&gt;=&lt;span class=attr&gt;center&lt;/span&gt; &lt;span class=attr&gt;border&lt;/span&gt;=&lt;span class=attr&gt;0&lt;/span&gt; &lt;span class=attr&gt;cellpadding&lt;/span&gt;=&lt;span class=attr&gt;0&lt;/span&gt; &lt;span class=attr&gt;cellspacing&lt;/span&gt;=&lt;span class=attr&gt;0&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;tr&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;td&lt;/span&gt; &lt;span class=attr&gt;align&lt;/span&gt;&lt;span class=kwrd&gt;="left"&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;a&lt;/span&gt; &lt;span class=attr&gt;href&lt;/span&gt;&lt;span class=kwrd&gt;="#home"&lt;/span&gt; &lt;span class=attr&gt;title&lt;/span&gt;&lt;span class=kwrd&gt;="Not
a real link"&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;font&lt;/span&gt; &lt;span class=attr&gt;color&lt;/span&gt;&lt;span class=kwrd&gt;="#4FB322"&lt;/span&gt; &lt;span class=attr&gt;size&lt;/span&gt;&lt;span class=kwrd&gt;="3"&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/div&gt;
&lt;div class=code&gt;&lt;font size=1&gt;&lt;font color=#000080&gt;&lt;span class=kwrd&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=attr&gt;face&lt;/span&gt;&lt;span class=kwrd&gt;="Geneva,
Arial, Helvetica, sans-serif"&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;Home Page&lt;span class=kwrd&gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;font&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;a&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;td&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;tr&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;tr&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;td&lt;/span&gt; &lt;span class=attr&gt;align&lt;/span&gt;&lt;span class=kwrd&gt;="left"&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;a&lt;/span&gt; &lt;span class=attr&gt;href&lt;/span&gt;&lt;span class=kwrd&gt;="#about"&lt;/span&gt; &lt;span class=attr&gt;title&lt;/span&gt;&lt;span class=kwrd&gt;="Not
a real link"&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;font&lt;/span&gt; &lt;span class=attr&gt;color&lt;/span&gt;&lt;span class=kwrd&gt;="#4FB322"&lt;/span&gt; &lt;span class=attr&gt;size&lt;/span&gt;&lt;span class=kwrd&gt;="3"&lt;/span&gt; &lt;span class=attr&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/div&gt;
&lt;div class=code&gt;&lt;font size=1&gt;&lt;font color=#000080&gt;&lt;span class=attr&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;face&lt;/span&gt;&lt;span class=kwrd&gt;="Geneva,
Arial, Helvetica, sans-serif"&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;About Me&lt;span class=kwrd&gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;font&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;a&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;td&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;tr&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;tr&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;td&lt;/span&gt; &lt;span class=attr&gt;align&lt;/span&gt;&lt;span class=kwrd&gt;="left"&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;a&lt;/span&gt; &lt;span class=attr&gt;href&lt;/span&gt;&lt;span class=kwrd&gt;="#links"&lt;/span&gt; &lt;span class=attr&gt;title&lt;/span&gt;&lt;span class=kwrd&gt;="Not
a real link"&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;font&lt;/span&gt; &lt;span class=attr&gt;color&lt;/span&gt;&lt;span class=kwrd&gt;="#4FB322"&lt;/span&gt; &lt;span class=attr&gt;size&lt;/span&gt;&lt;span class=kwrd&gt;="3"&lt;/span&gt; &lt;span class=attr&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/div&gt;
&lt;div class=code&gt;&lt;font size=1&gt;&lt;font color=#000080&gt;&lt;span class=attr&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;face&lt;/span&gt;&lt;span class=kwrd&gt;="Geneva,
Arial, Helvetica, sans-serif"&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;Links&lt;span class=kwrd&gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;font&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;a&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;td&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;tr&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;table&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;td&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;td&lt;/span&gt; &lt;span class=attr&gt;valign&lt;/span&gt;=&lt;span class=attr&gt;top&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;table&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;tr&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;td&lt;/span&gt; &lt;span class=attr&gt;align&lt;/span&gt;&lt;span class=kwrd&gt;="center"&lt;/span&gt; &lt;span class=attr&gt;height&lt;/span&gt;=&lt;span class=attr&gt;64&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;h1&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;font&lt;/span&gt; &lt;span class=attr&gt;color&lt;/span&gt;&lt;span class=kwrd&gt;="red"&lt;/span&gt; &lt;span class=attr&gt;face&lt;/span&gt;&lt;span class=kwrd&gt;="Geneva,
Arial, Helvetica, sans-&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/div&gt;
&lt;div class=code&gt;&lt;font size=1&gt;&lt;font color=#000080&gt;&lt;span class=kwrd&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;serif"&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;Welcome
to My Site!&lt;span class=kwrd&gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;font&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;h1&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;td&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;tr&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;tr&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;td&lt;/span&gt; &lt;span class=attr&gt;align&lt;/span&gt;&lt;span class=kwrd&gt;="left"&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;font&lt;/span&gt; &lt;span class=attr&gt;color&lt;/span&gt;&lt;span class=kwrd&gt;="#FFFFFF"&lt;/span&gt; &lt;span class=attr&gt;size&lt;/span&gt;&lt;span class=kwrd&gt;="3"&lt;/span&gt; &lt;span class=attr&gt;face&lt;/span&gt;&lt;span class=kwrd&gt;="Geneva,
Arial, Helvetica, sans-&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/div&gt;
&lt;div class=code&gt;&lt;font size=1&gt;&lt;font color=#000080&gt;&lt;span class=kwrd&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;serif"&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;Isn&lt;span class=attr&gt;&amp;amp;acute;&lt;/span&gt;t
it surprisingly ugly and bland?&lt;span class=kwrd&gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;font&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;td&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;tr&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;tr&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;td&lt;/span&gt; &lt;span class=attr&gt;align&lt;/span&gt;&lt;span class=kwrd&gt;="left"&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;font&lt;/span&gt; &lt;span class=attr&gt;color&lt;/span&gt;&lt;span class=kwrd&gt;="#FFFFFF"&lt;/span&gt; &lt;span class=attr&gt;size&lt;/span&gt;&lt;span class=kwrd&gt;="3"&lt;/span&gt; &lt;span class=attr&gt;face&lt;/span&gt;&lt;span class=kwrd&gt;="Geneva,
Arial, Helvetica, sans-serif"&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;Lorem ipsum dolor
sit amet, consectetuer adipiscing elit. Fusce est. Maecenas pharetra nibh vel turpis
molestie gravida. Integer convallis odio eu nulla. Vivamus eget turpis eu neque dignissim
dignissim. Fusce vel erat ut turpis pharetra molestie. Cras sollicitudin consequat
sem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia
Curae; Maecenas augue diam, sagittis eget, cursus at, vulputate at, nisl. Etiam scelerisque
molestie nibh. Suspendisse ornare dignissim enim. Sed posuere nunc a lectus. Vestibulum
luctus, nibh feugiat convallis ornare, lorem neque volutpat risus, a dapibus odio
justo at erat. Donec vel lacus id urna luctus tincidunt. Morbi nunc. Donec fringilla
sapien nec lectus. Duis at felis a leo porta tempor.&lt;span class=kwrd&gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;font&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;td&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;tr&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;tr&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;td&lt;/span&gt; &lt;span class=attr&gt;align&lt;/span&gt;&lt;span class=kwrd&gt;="left"&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;font&lt;/span&gt; &lt;span class=attr&gt;color&lt;/span&gt;&lt;span class=kwrd&gt;="#FFFFFF"&lt;/span&gt; &lt;span class=attr&gt;size&lt;/span&gt;&lt;span class=kwrd&gt;="3"&lt;/span&gt; &lt;span class=attr&gt;face&lt;/span&gt;&lt;span class=kwrd&gt;="Geneva,
Arial, Helvetica, sans-serif"&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;Maecenas malesuada
felis id mauris. Ut nibh eros, vestibulum nec, ornare sollicitudin, hendrerit et,
ligula. Suspendisse tellus elit, rutrum ut, tempor eget, porta bibendum, magna. Nunc
sem dolor, pharetra ut, fermentum in, consequat vitae, velit. Vestibulum in ipsum.
Phasellus erat. Sed eget turpis tristique eros cursus gravida. Vestibulum quis pede
a libero elementum varius. Nullam feugiat accumsan enim. Aenean nec mi. Vestibulum
ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae;&lt;span class=kwrd&gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;font&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;td&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;tr&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;tr&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;td&lt;/span&gt; &lt;span class=attr&gt;align&lt;/span&gt;&lt;span class=kwrd&gt;="left"&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;font&lt;/span&gt; &lt;span class=attr&gt;color&lt;/span&gt;&lt;span class=kwrd&gt;="#FFFFFF"&lt;/span&gt; &lt;span class=attr&gt;size&lt;/span&gt;&lt;span class=kwrd&gt;="3"&lt;/span&gt; &lt;span class=attr&gt;face&lt;/span&gt;&lt;span class=kwrd&gt;="Geneva,
Arial, Helvetica, sans-serif"&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;Aenean vel neque ac
orci sagittis tristique. Phasellus cursus quam a mauris. Donec posuere pede a nisl.
Curabitur nec ligula eu nibh accumsan sagittis. Integer lacinia. Class aptent taciti
sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Praesent tortor
dolor, pellentesque eget, fermentum vel, mollis ut, erat. Nullam mollis. Cras rhoncus
tellus ut neque. Pellentesque sed ante.&lt;span class=kwrd&gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;font&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;td&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;tr&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;tr&lt;/span&gt; &lt;span class=attr&gt;align&lt;/span&gt;&lt;span class=kwrd&gt;="left"&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;td&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;font&lt;/span&gt; &lt;span class=attr&gt;color&lt;/span&gt;&lt;span class=kwrd&gt;="#FFFFFF"&lt;/span&gt; &lt;span class=attr&gt;size&lt;/span&gt;&lt;span class=kwrd&gt;="3"&lt;/span&gt; &lt;span class=attr&gt;face&lt;/span&gt;&lt;span class=kwrd&gt;="Geneva,
Arial, Helvetica, sans-serif"&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;Donec at nunc. Nulla
elementum porta elit. Donec bibendum. Fusce elit ligula, gravida et, tincidunt et,
aliquam sit amet, metus. Nulla id magna. Fusce quis eros. Sed eget justo. Vivamus
dictum interdum quam. Curabitur malesuada. Proin id metus. Curabitur feugiat. Nunc
in turpis. Cras lobortis lobortis felis. Pellentesque habitant morbi tristique senectus
et netus et malesuada fames ac turpis egestas. Mauris imperdiet aliquet ante. Lorem
ipsum dolor sit amet, consectetuer adipiscing elit.&lt;span class=kwrd&gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;font&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;td&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;tr&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;tr&lt;/span&gt; &lt;span class=attr&gt;align&lt;/span&gt;&lt;span class=kwrd&gt;="left"&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;td&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;font&lt;/span&gt; &lt;span class=attr&gt;color&lt;/span&gt;&lt;span class=kwrd&gt;="#FFFFFF"&lt;/span&gt; &lt;span class=attr&gt;size&lt;/span&gt;&lt;span class=kwrd&gt;="3"&lt;/span&gt; &lt;span class=attr&gt;face&lt;/span&gt;&lt;span class=kwrd&gt;="Geneva,
Arial, Helvetica, sans-serif"&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;Etiam tristique mauris
at nibh sodales pretium. In lorem eros, laoreet eget, rhoncus et, lacinia nec, pede.
Fusce a quam. Pellentesque vitae lacus. Vivamus commodo. Morbi euismod, ipsum id consectetuer
ornare, nisi sem suscipit pede, vel dictum purus mauris eu leo. Proin sodales. Aliquam
in pede nec eros aliquet adipiscing. Nulla a purus sed risus ullamcorper tempus. Nunc
neque magna, fringilla quis, ullamcorper vitae, placerat sed, orci. Pellentesque habitant
morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum
ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae;&lt;span class=kwrd&gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;font&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;td&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;tr&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;table&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;td&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;tr&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;table&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;span class=kwrd&gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;center&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;span class=kwrd&gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;body&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;span class=kwrd&gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;html&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;2)&lt;/strong&gt; &lt;strong&gt;Cleaned Page&lt;/strong&gt; 
&lt;/p&gt;
&lt;div class=code&gt;&lt;em&gt;&lt;font size=1&gt;&lt;font color=#000080&gt;&lt;span class=kwrd&gt;&amp;lt;!&lt;/span&gt;&lt;span class=html&gt;DOCTYPE&lt;/span&gt; &lt;span class=attr&gt;HTML&lt;/span&gt; &lt;span class=attr&gt;PUBLIC&lt;/span&gt; &lt;span class=kwrd&gt;"-//W3C//DTD
HTML 4.01 Transitional//EN"&lt;/span&gt; &lt;span class=kwrd&gt;"http://www.w3.org/TR/html4/loose.dtd"&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;html&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;head&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;meta&lt;/span&gt; &lt;span class=attr&gt;http-equiv&lt;/span&gt;&lt;span class=kwrd&gt;="Content-Type"&lt;/span&gt; &lt;span class=attr&gt;content&lt;/span&gt;&lt;span class=kwrd&gt;="text/html;
charset=utf-8"&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;title&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;Less
Markup, More Content&lt;span class=kwrd&gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;title&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;meta&lt;/span&gt; &lt;span class=attr&gt;name&lt;/span&gt;&lt;span class=kwrd&gt;="description"&lt;/span&gt; &lt;span class=attr&gt;content&lt;/span&gt;&lt;span class=kwrd&gt;="The
end result of lazy web page design resulting in a bloated mess of HTML."&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;meta&lt;/span&gt; &lt;span class=attr&gt;name&lt;/span&gt;&lt;span class=kwrd&gt;="keywords"&lt;/span&gt; &lt;span class=attr&gt;content&lt;/span&gt;&lt;span class=kwrd&gt;="tag
soup, messy html, bloated html"&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;link&lt;/span&gt; &lt;span class=attr&gt;href&lt;/span&gt;&lt;span class=kwrd&gt;="style.css"&lt;/span&gt; &lt;span class=attr&gt;rel&lt;/span&gt;&lt;span class=kwrd&gt;="stylesheet"&lt;/span&gt; &lt;span class=attr&gt;type&lt;/span&gt;&lt;span class=kwrd&gt;="text/css"&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;head&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;body&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;div&lt;/span&gt; &lt;span class=attr&gt;class&lt;/span&gt;&lt;span class=kwrd&gt;="content"&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;ul&lt;/span&gt; &lt;span class=attr&gt;class&lt;/span&gt;&lt;span class=kwrd&gt;="menu"&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;li&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;a&lt;/span&gt; &lt;span class=attr&gt;href&lt;/span&gt;&lt;span class=kwrd&gt;="#home"&lt;/span&gt; &lt;span class=attr&gt;title&lt;/span&gt;&lt;span class=kwrd&gt;="Not
a real link"&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;Home Page&lt;span class=kwrd&gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;a&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;li&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;li&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;a&lt;/span&gt; &lt;span class=attr&gt;href&lt;/span&gt;&lt;span class=kwrd&gt;="#home"&lt;/span&gt; &lt;span class=attr&gt;title&lt;/span&gt;&lt;span class=kwrd&gt;="Not
a real link"&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;About Me&lt;span class=kwrd&gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;a&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;li&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;li&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;a&lt;/span&gt; &lt;span class=attr&gt;href&lt;/span&gt;&lt;span class=kwrd&gt;="#home"&lt;/span&gt; &lt;span class=attr&gt;title&lt;/span&gt;&lt;span class=kwrd&gt;="Not
a real link"&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;Links&lt;span class=kwrd&gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;a&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;li&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;ul&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;h1&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;Welcome
To My Site!&lt;span class=kwrd&gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;h1&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;p&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;Isn&lt;span class=attr&gt;&amp;amp;acute;&lt;/span&gt;t
it suprisingly ugly and bland?&lt;span class=kwrd&gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;p&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;p&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;Lorem
ipsum dolor sit amet, consectetuer adipiscing elit. Fusce est.&amp;nbsp; Maecenas pharetra
nibh vel turpis molestie gravida. Integer convallis&amp;nbsp; odio eu nulla. Vivamus eget
turpis eu neque dignissim dignissim. Fusce&amp;nbsp; vel erat ut turpis pharetra molestie.
Cras sollicitudin consequat sem.&amp;nbsp; Vestibulum ante ipsum primis in faucibus orci
luctus et ultrices&amp;nbsp; posuere cubiliaCurae; Maecenas augue diam, sagittis eget,
cursus at,&amp;nbsp; vulputate at, nisl. Etiam scelerisque molestie nibh. Suspendisse
ornare&amp;nbsp; dignissim enim. Sed posuere nunc a lectus. Vestibulum luctus, nibh&amp;nbsp;
feugiat convallis ornare, lorem neque volutpat risus, a dapibus odio&amp;nbsp; justo at
erat. Donec vel lacus id urna luctus tincidunt. Morbi nunc.&amp;nbsp; Donec fringilla
sapien nec lectus. Duis at felis a leo porta tempor. &lt;span class=kwrd&gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;p&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;p&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;Maecenas
malesuada felis id mauris. Ut nibh eros, vestibulum nec,&amp;nbsp; ornare sollicitudin,
hendrerit et, ligula. Suspendisse tellus elit,&amp;nbsp; rutrum ut, tempor eget, porta
bibendum, magna. Nunc sem dolor, pharetra&amp;nbsp; ut, fermentum in, consequat vitae,
velit. Vestibulum in ipsum.&amp;nbsp; Phasellus erat. Sed eget turpis tristique eros cursus
gravida.&amp;nbsp; Vestibulum quis pede a libero elementum varius. Nullam feugiat accumsan&amp;nbsp;
enim. Aenean nec mi. Vestibulum ante ipsum primis in faucibus orci&amp;nbsp; luctus et
ultrices posuere cubilia Curae; &lt;span class=kwrd&gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;p&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;p&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;Aenean
vel neque ac orci sagittis tristique. Phasellus cursus quam a&amp;nbsp; mauris. Donec
posuere pede a nisl. Curabitur nec ligula eu nibh&amp;nbsp; accumsan sagittis. Integer
lacinia. Class aptent taciti sociosqu ad&amp;nbsp; litora torquent per conubia nostra,
per inceptos hymenaeos. Praesent&amp;nbsp; tortor dolor, pellentesque eget, fermentum
vel, mollis ut, erat. Nullam&amp;nbsp; mollis. Cras rhoncus tellus ut neque. Pellentesque
sed ante. &lt;span class=kwrd&gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;p&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;p&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;Donec
at nunc. Nulla elementum porta elit. Donec bibendum. Fusce&amp;nbsp; elit ligula, gravida
et, tincidunt et, aliquam sit amet, metus. Nulla&amp;nbsp; id magna. Fusce quis eros.
Sed eget justo. Vivamus dictum interdum&amp;nbsp; quam. Curabitur malesuada. Proin id
metus. Curabitur feugiat. Nunc in&amp;nbsp; turpis. Cras lobortis lobortis felis. Pellentesque
habitant morbi&amp;nbsp; tristique senectus et netus et malesuada fames ac turpis egestas.&amp;nbsp;
Mauris imperdiet aliquet ante. Lorem ipsum dolor sit amet, consectetuer&amp;nbsp; adipiscing
elit. &lt;span class=kwrd&gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;p&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;p&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;Etiam
tristique mauris at nibh sodales pretium. In lorem eros,&amp;nbsp; laoreet eget, rhoncus
et, lacinia nec, pede. Fusce a quam. Pellentesque&amp;nbsp; vitae lacus. Vivamus commodo.
Morbi euismod, ipsum id consectetuer&amp;nbsp; ornare, nisi sem suscipit pede, vel dictum
purus mauris eu leo. Proin&amp;nbsp; sodales. Aliquam in pede nec eros aliquet adipiscing.
Nulla a purus sed&amp;nbsp; risus ullamcorper tempus. Nunc neque magna, fringilla quis,
ullamcorper&amp;nbsp; vitae, placerat sed, orci. Pellentesque habitant morbi tristique&amp;nbsp;
senectus et netus et malesuada fames ac turpis egestas. Vestibulum ante&amp;nbsp; ipsum
primis in faucibus orci luctus et ultrices posuere cubilia Curae; &lt;span class=kwrd&gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;p&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;div&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp; &lt;span class=kwrd&gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;body&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;span class=kwrd&gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;html&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/em&gt;
&lt;/div&gt;
&lt;div class=code&gt;&lt;em&gt;&lt;/em&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div class=code&gt;&lt;em&gt;&lt;/em&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div class=code&gt;&lt;em&gt;&lt;strong&gt;External Style Sheet&lt;/strong&gt;&lt;/em&gt; 
&lt;/div&gt;
&lt;div class=code&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div class=code&gt;&lt;em&gt;&lt;font color=#000080 size=1&gt;@charset "utf-8";&lt;br&gt;
body{font:13pt Geneva, Arial, Helvetica, sans-serif;}&lt;br&gt;
.menu{float:left;height:800px;list-style-type:none;width:150px;}&lt;br&gt;
.menu a, .menu a:visited{color:#4FB322;}&lt;br&gt;
.content{background:gainsboro;color:white;margin:auto;position:relative;width:700px;}&lt;br&gt;
h1{color:red;line-height:64px;text-align:center;}&lt;br&gt;
p{margin:4px;}&lt;/font&gt;&lt;/em&gt;
&lt;/div&gt;
&lt;div class=code&gt;&lt;em&gt;&lt;font color=#000080 size=1&gt;&lt;/font&gt;&lt;/em&gt;&amp;nbsp;
&lt;/div&gt;
&lt;p&gt;
Even in this basic example you can see a fairly dramatic improvement when the excess
HTML is trimmed and CSS is used to control style.&amp;nbsp; The original page is 51 lines,
where the cleaned page is only 26 lines, plus 7 lines in the style sheet.&amp;nbsp; The
cleaned page is a third the size of the original (counting the style sheet), and more
realistically is actually half the size because the style sheet would be cached by
most client browsers and wouldn't be downloaded for every page request.&amp;nbsp; As far
as raw kilobytes it's a difference of 6KB to 4KB, which isn't a particularly exciting
difference in this case, but one that is quickly magnified as the length of the page
increases.&amp;nbsp; This is especially true with dynamic applications that pull content
from a database, most importantly content such as product listings that utilize the
same markup and are repeated multiple times. Fortunately in the case of dynamic pages
involving looping procedures that output the same markup with different content, cutting
down the bloat can be as easy as a few modifications to those procedures. 
&lt;/p&gt;
&lt;p&gt;
Furthermore if you wanted to change, for instance, the font color or the line-height
in the original, you would have to modify every font tag and table cell to accomplish
that.&amp;nbsp; Implementing those changes in the second example requires a single modification
to the style-sheet.&amp;nbsp; The time-saved here is once again significantly amplified
when considered in a situation with multiple pages (in many cases this can be hundreds
or even thousands). 
&lt;/p&gt;
&lt;p&gt;
When all is said and done, this isn't meant to be a be-all end-all guide for optimizing
your markup because I could write a book and still not cover it all.&amp;nbsp; Rather
it was meant to highlight an aspect of web page performance and optimization that
is usually swept under the rug in favour of those that are more directly appreciable
such as eye-candy and new features.&amp;nbsp; While clean markup might not be as "glamourous"
as other aspects of web development, it is an important aspect to keeping load time
in check and a crucial factor in reducing them amount of time spent maintaining and
updating.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=4273beeb-aed7-4150-9785-01b9dc3573de" /&gt;</description>
      <comments>http://www.spotgnome.com/CommentView,guid,4273beeb-aed7-4150-9785-01b9dc3573de.aspx</comments>
      <category>CSS</category>
      <category>Programming</category>
    </item>
    <item>
      <trackback:ping>http://www.spotgnome.com/Trackback.aspx?guid=ae3097f1-e048-45fc-95ea-161e209b6f0e</trackback:ping>
      <pingback:server>http://www.spotgnome.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.spotgnome.com/PermaLink,guid,ae3097f1-e048-45fc-95ea-161e209b6f0e.aspx</pingback:target>
      <dc:creator>Guy Levin</dc:creator>
      <wfw:comment>http://www.spotgnome.com/CommentView,guid,ae3097f1-e048-45fc-95ea-161e209b6f0e.aspx</wfw:comment>
      <wfw:commentRss>http://www.spotgnome.com/SyndicationService.asmx/GetEntryCommentsRss?guid=ae3097f1-e048-45fc-95ea-161e209b6f0e</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
PDFsharp is the Open Source library that easily creates PDF documents from any .NET
language.<br /><br />
The same drawing routines can be used to create PDF documents, draw on the screen,
or send output to any printer.
</p>
        <p>
Here are just a few highlights: 
</p>
        <ul>
          <li>
Creates PDF documents on the fly from any .Net language 
</li>
          <li>
Easy to understand object model to compose documents 
</li>
          <li>
One source code for drawing on a PDF page as well as in a window or on the printer 
</li>
          <li>
Modify, merge, and split existing PDF files 
</li>
          <li>
Images with transparency (color mask, monochrome mask, alpha mask) 
</li>
          <li>
Newly designed from scratch and written entirely in C# 
</li>
          <li>
The graphical classes go well with .Net 
</li>
          <li>
Includes MigraDoc Lite for high level text layouting (you can use both PDFsharp and
MigraDoc Lite in one document)</li>
        </ul>
        <p>
          <table class="contentpaneopen">
            <tbody>
              <tr>
                <td class="contentheading" width="100%">
                  <font size="2">
                    <strong>Hello World Sample </strong>
                  </font>
                </td>
              </tr>
            </tbody>
          </table>
          <table class="contentpaneopen">
            <tbody>
              <tr>
                <td valign="top" colspan="2">
                  <p>
                    <font size="2">This sample shows how to create a PDF document, add a page, draw some
text, and save it to disk.</font>
                  </p>
                  <pre class="csharp">
                    <span style="COLOR: #008000">// Create a new PDF document</span> PdfDocument
document = <span style="COLOR: #0600ff">new</span> PdfDocument<span style="COLOR: #000000">(</span><span style="COLOR: #000000">)</span>;
  <span style="COLOR: #008000">// Create an empty page</span> PdfPage page =
document.<span style="COLOR: #000000">AddPage</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">)</span>;
  <span style="COLOR: #008000">// Get an XGraphics object for drawing</span> XGraphics
gfx = XGraphics.<span style="COLOR: #000000">FromPdfPage</span><span style="COLOR: #000000">(</span>page<span style="COLOR: #000000">)</span>;
  <span style="COLOR: #008000">// Create a font</span> XFont font = <span style="COLOR: #0600ff">new</span> XFont<span style="COLOR: #000000">(</span><span style="COLOR: #808080">"Verdana"</span>, <span style="COLOR: #000000">20</span>,
XFontStyle.<span style="COLOR: #000000">Bold</span><span style="COLOR: #000000">)</span>;
  <span style="COLOR: #008000">// Draw the text</span> gfx.<span style="COLOR: #000000">DrawString</span><span style="COLOR: #000000">(</span><span style="COLOR: #808080">"Hello,
World!"</span>, font, XBrushes.<span style="COLOR: #000000">Black</span>, <span style="COLOR: #0600ff">new</span> XRect<span style="COLOR: #000000">(</span><span style="COLOR: #000000">0</span>, <span style="COLOR: #000000">0</span>,
page.<span style="COLOR: #000000">Width</span>, page.<span style="COLOR: #000000">Height</span><span style="COLOR: #000000">)</span>,
XStringFormat.<span style="COLOR: #000000">Center</span><span style="COLOR: #000000">)</span>;
  <span style="COLOR: #008000">// Save the document...</span><span style="COLOR: #0600ff">string</span> filename
= <span style="COLOR: #808080">"HelloWorld.pdf"</span>; document.<span style="COLOR: #000000">Save</span><span style="COLOR: #000000">(</span>filename<span style="COLOR: #000000">)</span>; <span style="COLOR: #008000">//
...and start a viewer.</span> Process.<span style="COLOR: #000000">Start</span><span style="COLOR: #000000">(</span>filename<span style="COLOR: #000000">)</span>;</pre>
                  <pre class="csharp">The result is this:</pre>
                </td>
              </tr>
            </tbody>
          </table>
          <a href="http://www.spotgnome.com/content/binary/HelloWorld.pdf">HelloWorld.pdf (2.41
KB)</a>
        </p>
        <img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=ae3097f1-e048-45fc-95ea-161e209b6f0e" />
      </body>
      <title>PDFsharp - A .NET Library For Processing And Creating PDF </title>
      <guid isPermaLink="false">http://www.spotgnome.com/PermaLink,guid,ae3097f1-e048-45fc-95ea-161e209b6f0e.aspx</guid>
      <link>http://www.spotgnome.com/2007/12/15/PDFsharpANETLibraryForProcessingAndCreatingPDF.aspx</link>
      <pubDate>Sat, 15 Dec 2007 08:59:35 GMT</pubDate>
      <description>&lt;p&gt;
PDFsharp is the Open Source library that easily creates PDF documents from any .NET
language.&lt;br&gt;
&lt;br&gt;
The same drawing routines can be used to create PDF documents, draw on the screen,
or send output to any printer.
&lt;/p&gt;
&lt;p&gt;
Here are just a few highlights: 
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Creates PDF documents on the fly from any .Net language 
&lt;li&gt;
Easy to understand object model to compose documents 
&lt;li&gt;
One source code for drawing on a PDF page as well as in a window or on the printer 
&lt;li&gt;
Modify, merge, and split existing PDF files 
&lt;li&gt;
Images with transparency (color mask, monochrome mask, alpha mask) 
&lt;li&gt;
Newly designed from scratch and written entirely in C# 
&lt;li&gt;
The graphical classes go well with .Net 
&lt;li&gt;
Includes MigraDoc Lite for high level text layouting (you can use both PDFsharp and
MigraDoc Lite in one document)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;table class=contentpaneopen&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class=contentheading width="100%"&gt;
&lt;font size=2&gt;&lt;strong&gt;Hello World Sample &lt;/strong&gt;&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class=contentpaneopen&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=top colspan=2&gt;
&lt;p&gt;
&lt;font size=2&gt;This sample shows how to create a PDF document, add a page, draw some
text, and save it to disk.&lt;/font&gt;
&lt;/p&gt;
&lt;pre class=csharp&gt;&lt;span style="COLOR: #008000"&gt;// Create a new PDF document&lt;/span&gt; PdfDocument
document = &lt;span style="COLOR: #0600ff"&gt;new&lt;/span&gt; PdfDocument&lt;span style="COLOR: #000000"&gt;(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&lt;/span&gt;;
&amp;nbsp; &lt;span style="COLOR: #008000"&gt;// Create an empty page&lt;/span&gt; PdfPage page =
document.&lt;span style="COLOR: #000000"&gt;AddPage&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&lt;/span&gt;;
&amp;nbsp; &lt;span style="COLOR: #008000"&gt;// Get an XGraphics object for drawing&lt;/span&gt; XGraphics
gfx = XGraphics.&lt;span style="COLOR: #000000"&gt;FromPdfPage&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&lt;/span&gt;page&lt;span style="COLOR: #000000"&gt;)&lt;/span&gt;;
&amp;nbsp; &lt;span style="COLOR: #008000"&gt;// Create a font&lt;/span&gt; XFont font = &lt;span style="COLOR: #0600ff"&gt;new&lt;/span&gt; XFont&lt;span style="COLOR: #000000"&gt;(&lt;/span&gt;&lt;span style="COLOR: #808080"&gt;"Verdana"&lt;/span&gt;, &lt;span style="COLOR: #000000"&gt;20&lt;/span&gt;,
XFontStyle.&lt;span style="COLOR: #000000"&gt;Bold&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&lt;/span&gt;;
&amp;nbsp; &lt;span style="COLOR: #008000"&gt;// Draw the text&lt;/span&gt; gfx.&lt;span style="COLOR: #000000"&gt;DrawString&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&lt;/span&gt;&lt;span style="COLOR: #808080"&gt;"Hello,
World!"&lt;/span&gt;, font, XBrushes.&lt;span style="COLOR: #000000"&gt;Black&lt;/span&gt;, &lt;span style="COLOR: #0600ff"&gt;new&lt;/span&gt; XRect&lt;span style="COLOR: #000000"&gt;(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;, &lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;,
page.&lt;span style="COLOR: #000000"&gt;Width&lt;/span&gt;, page.&lt;span style="COLOR: #000000"&gt;Height&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&lt;/span&gt;,
XStringFormat.&lt;span style="COLOR: #000000"&gt;Center&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&lt;/span&gt;;
&amp;nbsp; &lt;span style="COLOR: #008000"&gt;// Save the document...&lt;/span&gt; &lt;span style="COLOR: #0600ff"&gt;string&lt;/span&gt; filename
= &lt;span style="COLOR: #808080"&gt;"HelloWorld.pdf"&lt;/span&gt;; document.&lt;span style="COLOR: #000000"&gt;Save&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&lt;/span&gt;filename&lt;span style="COLOR: #000000"&gt;)&lt;/span&gt;; &lt;span style="COLOR: #008000"&gt;//
...and start a viewer.&lt;/span&gt; Process.&lt;span style="COLOR: #000000"&gt;Start&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&lt;/span&gt;filename&lt;span style="COLOR: #000000"&gt;)&lt;/span&gt;;&lt;/pre&gt;&lt;pre class=csharp&gt;The result is this:&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;a href="http://www.spotgnome.com/content/binary/HelloWorld.pdf"&gt;HelloWorld.pdf (2.41
KB)&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=ae3097f1-e048-45fc-95ea-161e209b6f0e" /&gt;</description>
      <comments>http://www.spotgnome.com/CommentView,guid,ae3097f1-e048-45fc-95ea-161e209b6f0e.aspx</comments>
      <category>.Net</category>
      <category>Programming</category>
    </item>
    <item>
      <trackback:ping>http://www.spotgnome.com/Trackback.aspx?guid=4a488ad8-50bd-4854-bb28-30ffe78c07b5</trackback:ping>
      <pingback:server>http://www.spotgnome.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.spotgnome.com/PermaLink,guid,4a488ad8-50bd-4854-bb28-30ffe78c07b5.aspx</pingback:target>
      <dc:creator>Guy Levin</dc:creator>
      <wfw:comment>http://www.spotgnome.com/CommentView,guid,4a488ad8-50bd-4854-bb28-30ffe78c07b5.aspx</wfw:comment>
      <wfw:commentRss>http://www.spotgnome.com/SyndicationService.asmx/GetEntryCommentsRss?guid=4a488ad8-50bd-4854-bb28-30ffe78c07b5</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Today, <a href="http://code.google.com/apis/chart">Google released their Chart
API</a>. Basically, the Google Chart API allows you to dynamically generate charts
for use in your web applications. All you do is pass your data in the querystring
and an image is returned. This isn't really a service to get too excited about, but
it is pretty simple to use and it's Free.
</p>
        <p>
          <strong>Here is a bit about this:</strong>
        </p>
        <p>
          <a id="content" name="content">
          </a>The Google Chart API lets you dynamically generate
charts. To see the Chart API in action, open up a browser window and copy the following
URL into it:
</p>
        <p>
          <code>http://chart.apis.google.com/chart?cht=p3&amp;chd=s:hW&amp;chs=250x100&amp;chl=Hello|World</code>
        </p>
        <p>
Press the Enter or Return key and - presto! - you should see the following image:
</p>
        <p>
          <img alt="Yellow line chart" src="http://chart.apis.google.com/chart?cht=p3&amp;chd=s:hW&amp;chs=250x100&amp;chl=Hello|World" border="0" />
        </p>
        <p>
I decided to code up a small ASP.NET Server Control that uses the Google Chart API
to put simple line graph charts on a page.
</p>
        <p>
          <strong>How to use this control:</strong>
        </p>
        <p>
Put the Chart control on the page:
</p>
        <p>
          <font color="#0000ff">&lt;</font>
          <font color="#a31515">GoogleAPI</font>
          <font color="#0000ff">:</font>
          <font color="#a31515">Chart</font>
          <font color="#ff0000">runat</font>
          <font color="#0000ff">="server"</font>
          <font color="#ff0000">id</font>
          <font color="#0000ff">="Chart1"</font> <br /><font color="#ff0000">   Width</font><font color="#0000ff">="200"</font><font color="#ff0000">Height</font><font color="#0000ff">="150"</font><font color="#ff0000">LineColor</font><font color="#0000ff">="ff0000"<br /></font><font color="#ff0000">   BackgroundColor</font><font color="#0000ff">="efefef"<br /></font><font color="#ff0000">   ToolTip</font><font color="#0000ff">="Hello
World"&gt;<br /></font><font color="#0000ff">&lt;/</font><font color="#a31515">GoogleAPI</font><font color="#0000ff">:</font><font color="#a31515">Chart</font><font color="#0000ff">&gt;</font></p>
        <p>
          <strong>In the page load event define the values to be charted:</strong>
        </p>
        <font color="#0000ff">
          <p>
Chart1.MaxValue = 60;<br /><br />
Chart1.Values.Clear();<br /><br />
Chart1.Values.Add(<font color="#a31515">"Jan"</font>, 10);<br />
Chart1.Values.Add(<font color="#a31515">"Feb"</font>, 20);<br />
Chart1.Values.Add(<font color="#a31515">"Mar"</font>, 30);<br />
Chart1.Values.Add(<font color="#a31515">"Apr"</font>, 50);<br />
Chart1.Values.Add(<font color="#a31515">"May"</font>, 5);<br />
Chart1.YAxisLabels.Add(<font color="#a31515">"0 Kb"</font>);<br />
Chart1.YAxisLabels.Add(<font color="#a31515">"25+ Kb"</font>);<br />
Chart1.YAxisLabels.Add(<font color="#a31515">"50+ Kb"</font>);
</p>
        </font>
        <p>
And, that's all you have to do to put a Chart on your page using the control.
</p>
        <p>
The result is this:
</p>
        <p>
          <img src="http://www.spotgnome.com/content/binary/chart.png" border="0" />
        </p>
        <p>
Download the example / source code here: <a href="http://www.spotgnome.com/content/binary/GoogleChartAPI.rar">GoogleChartAPI.rar
(3.33 KB)</a></p>
        <img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=4a488ad8-50bd-4854-bb28-30ffe78c07b5" />
      </body>
      <title>Google Charts API: an ASP.NET 2.0 Server Control </title>
      <guid isPermaLink="false">http://www.spotgnome.com/PermaLink,guid,4a488ad8-50bd-4854-bb28-30ffe78c07b5.aspx</guid>
      <link>http://www.spotgnome.com/2007/12/10/GoogleChartsAPIAnASPNET20ServerControl.aspx</link>
      <pubDate>Mon, 10 Dec 2007 14:21:29 GMT</pubDate>
      <description>&lt;p&gt;
Today,&amp;nbsp;&lt;a href="http://code.google.com/apis/chart"&gt;Google released their Chart
API&lt;/a&gt;. Basically, the Google Chart API allows you to dynamically generate charts
for use in your web applications. All you do is pass your data in the querystring
and an image is returned. This isn't really a service to get too excited about, but
it is pretty simple to use and it's Free.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Here is a bit about this:&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a id=content name=content&gt;&lt;/a&gt;The Google Chart API lets you dynamically generate
charts. To see the Chart API in action, open up a browser window and copy the following
URL into it:
&lt;/p&gt;
&lt;p&gt;
&lt;code&gt;http://chart.apis.google.com/chart?cht=p3&amp;amp;chd=s:hW&amp;amp;chs=250x100&amp;amp;chl=Hello|World&lt;/code&gt;
&lt;/p&gt;
&lt;p&gt;
Press the Enter or Return key and - presto! - you should see the following image:
&lt;/p&gt;
&lt;p&gt;
&lt;img alt="Yellow line chart" src="http://chart.apis.google.com/chart?cht=p3&amp;amp;chd=s:hW&amp;amp;chs=250x100&amp;amp;chl=Hello|World" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
I decided to code up a small ASP.NET Server Control that uses the Google Chart API
to put simple line graph charts on a page.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;How to use this control:&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Put the Chart control on the page:
&lt;/p&gt;
&lt;p&gt;
&lt;font color=#0000ff&gt;&amp;lt;&lt;/font&gt;&lt;font color=#a31515&gt;GoogleAPI&lt;/font&gt;&lt;font color=#0000ff&gt;:&lt;/font&gt;&lt;font color=#a31515&gt;Chart&lt;/font&gt; &lt;font color=#ff0000&gt;runat&lt;/font&gt;&lt;font color=#0000ff&gt;="server"&lt;/font&gt; &lt;font color=#ff0000&gt;id&lt;/font&gt;&lt;font color=#0000ff&gt;="Chart1"&lt;/font&gt;&amp;nbsp;&lt;br&gt;
&lt;font color=#ff0000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Width&lt;/font&gt;&lt;font color=#0000ff&gt;="200"&lt;/font&gt; &lt;font color=#ff0000&gt;Height&lt;/font&gt;&lt;font color=#0000ff&gt;="150"&lt;/font&gt; &lt;font color=#ff0000&gt;LineColor&lt;/font&gt;&lt;font color=#0000ff&gt;="ff0000"&lt;br&gt;
&lt;/font&gt;&lt;font color=#ff0000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;BackgroundColor&lt;/font&gt;&lt;font color=#0000ff&gt;="efefef"&lt;br&gt;
&lt;/font&gt;&lt;font color=#ff0000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ToolTip&lt;/font&gt;&lt;font color=#0000ff&gt;="Hello
World"&amp;gt;&lt;br&gt;
&lt;/font&gt;&lt;font color=#0000ff&gt;&amp;lt;/&lt;/font&gt;&lt;font color=#a31515&gt;GoogleAPI&lt;/font&gt;&lt;font color=#0000ff&gt;:&lt;/font&gt;&lt;font color=#a31515&gt;Chart&lt;/font&gt;&lt;font color=#0000ff&gt;&amp;gt;&lt;/font&gt;&gt;&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;In the page load event define the values to be charted:&lt;/strong&gt;
&lt;/p&gt;
&lt;font color=#0000ff&gt; 
&lt;p&gt;
Chart1.MaxValue = 60;&lt;br&gt;
&lt;br&gt;
Chart1.Values.Clear();&lt;br&gt;
&lt;br&gt;
Chart1.Values.Add(&lt;font color=#a31515&gt;"Jan"&lt;/font&gt;, 10);&lt;br&gt;
Chart1.Values.Add(&lt;font color=#a31515&gt;"Feb"&lt;/font&gt;, 20);&lt;br&gt;
Chart1.Values.Add(&lt;font color=#a31515&gt;"Mar"&lt;/font&gt;, 30);&lt;br&gt;
Chart1.Values.Add(&lt;font color=#a31515&gt;"Apr"&lt;/font&gt;, 50);&lt;br&gt;
Chart1.Values.Add(&lt;font color=#a31515&gt;"May"&lt;/font&gt;, 5);&lt;br&gt;
Chart1.YAxisLabels.Add(&lt;font color=#a31515&gt;"0 Kb"&lt;/font&gt;);&lt;br&gt;
Chart1.YAxisLabels.Add(&lt;font color=#a31515&gt;"25+ Kb"&lt;/font&gt;);&lt;br&gt;
Chart1.YAxisLabels.Add(&lt;font color=#a31515&gt;"50+ Kb"&lt;/font&gt;);
&lt;/p&gt;
&lt;/font&gt;&gt; 
&lt;p&gt;
And, that's all you have to do to put a Chart on your page using the&amp;nbsp;control.
&lt;/p&gt;
&lt;p&gt;
The result is this:
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://www.spotgnome.com/content/binary/chart.png" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
Download the example / source code here: &lt;a href="http://www.spotgnome.com/content/binary/GoogleChartAPI.rar"&gt;GoogleChartAPI.rar
(3.33 KB)&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=4a488ad8-50bd-4854-bb28-30ffe78c07b5" /&gt;</description>
      <comments>http://www.spotgnome.com/CommentView,guid,4a488ad8-50bd-4854-bb28-30ffe78c07b5.aspx</comments>
      <category>.Net</category>
      <category>Google</category>
      <category>Programming</category>
      <category>Visual Studio</category>
    </item>
    <item>
      <trackback:ping>http://www.spotgnome.com/Trackback.aspx?guid=b0644c96-2b2f-475c-ad8c-2866aea2bd43</trackback:ping>
      <pingback:server>http://www.spotgnome.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.spotgnome.com/PermaLink,guid,b0644c96-2b2f-475c-ad8c-2866aea2bd43.aspx</pingback:target>
      <dc:creator>Guy Levin</dc:creator>
      <wfw:comment>http://www.spotgnome.com/CommentView,guid,b0644c96-2b2f-475c-ad8c-2866aea2bd43.aspx</wfw:comment>
      <wfw:commentRss>http://www.spotgnome.com/SyndicationService.asmx/GetEntryCommentsRss?guid=b0644c96-2b2f-475c-ad8c-2866aea2bd43</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Last week (december 5th) Microsoft announced the <a href="http://labs.live.com/volta/"><font color="#3399cc">Volta
technology preview</font></a>, a developer toolset for building multi-tier web applications
using existing and familiar tools, techniques and patterns. 
</p>
        <p>
Volta’s declarative tier-splitting enables developers to postpone architectural decisions
about distribution until the last possible responsible moment. Also, thanks to a shared
programming model across multiple-tiers, Volta enables new end-to-end profiling and
testing for higher levels of application performance, robustness, and reliability.
In effect, Volta extends the .NET platform to further enable the development of software+services
applications, using existing and familiar tools and techniques.
</p>
        <p>
You architect and build your application as a .NET client application, assigning the
portions of the application that run on the server tier and client tier late in the
development process. 
</p>
        <p>
After tier assignments, Volta's deep integration with Visual Studio debugger and testing
infrastructure dramatically improves the deployment experience for developers. 
</p>
        <ul>
          <li>
Volta automatically creates communication, serialization, and remoting code. Developers
simply write custom attributes on classes or methods to tell Volta the tier on which
to run them. 
</li>
          <li>
Developers may base tier assignments on any criteria, such as load management, performance,
or location of critical assets and capabilities. Because Volta automates the hidden
plumbing code, it is easy for developers to experiment with varying assignments of
classes and methods to tiers. 
</li>
          <li>
Developers can use all the .NET languages, libraries, and tools they already know,
including debuggers, profilers, test generators, refactoring, and code analysis tools. 
</li>
        </ul>
        <p>
Volta offers deep integration with Visual Studio 2008, including debuggers, profilers,
and testing frameworks. Developers can step through code seamlessly from one tier
to another, can set breakpoints on any tier, and trace flows of control across distributed
systems. 
</p>
        <p>
          <strong>What do you need to use Volta? </strong>
        </p>
        <div class="faq-a">The Volta developer toolset requires <strong>Visual Studio 2008
and the .NET Framework 3.5</strong> for writing and building applications. Volta applications
run virtually anywhere, even where an MSIL runtime is not available. A Volta client-side
application can run in most standards-compliant browsers, but can also be targetted
also take advantage of MSIL runtimes like the .NET CLR. 
</div>
        <div class="faq-a"> 
</div>
        <div class="faq-a">All this sounds great, except the requirements that are trying
to enforce the developers to use Visual Studio 2008 and the new .NET Framework 3.5.
</div>
        <div class="faq-a"> 
</div>
        <div class="faq-a">I wonder why the long wait for this release? And why it does not
compatible with .NET Framework 2.0?
</div>
        <div class="faq-a"> 
</div>
        <div class="faq-a">
          <strong>BTW, It is just me or the Volta logo reminds firefox logo
a bit:</strong>
        </div>
        <div class="faq-a"> 
</div>
        <p>
          <img src="http://www.spotgnome.com/content/binary/logo-volta.png" border="0" />  <font size="6"><strong>&lt;-
VS -&gt;</strong></font>    <img src="http://www.spotgnome.com/content/binary/firefox-logo-64x64.png" border="0" /></p>
        <img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=b0644c96-2b2f-475c-ad8c-2866aea2bd43" />
      </body>
      <title>Microsoft Volta Technology</title>
      <guid isPermaLink="false">http://www.spotgnome.com/PermaLink,guid,b0644c96-2b2f-475c-ad8c-2866aea2bd43.aspx</guid>
      <link>http://www.spotgnome.com/2007/12/09/MicrosoftVoltaTechnology.aspx</link>
      <pubDate>Sun, 09 Dec 2007 12:41:46 GMT</pubDate>
      <description>&lt;p&gt;
Last week (december 5th)&amp;nbsp;Microsoft&amp;nbsp;announced the &lt;a href="http://labs.live.com/volta/"&gt;&lt;font color=#3399cc&gt;Volta
technology preview&lt;/font&gt;&lt;/a&gt;, a developer toolset for building multi-tier web applications
using existing and familiar tools, techniques and patterns. 
&lt;/p&gt;
&lt;p&gt;
Volta’s declarative tier-splitting enables developers to postpone architectural decisions
about distribution until the last possible responsible moment. Also, thanks to a shared
programming model across multiple-tiers, Volta enables new end-to-end profiling and
testing for higher levels of application performance, robustness, and reliability.
In effect, Volta extends the .NET platform to further enable the development of software+services
applications, using existing and familiar tools and techniques.
&lt;/p&gt;
&lt;p&gt;
You architect and build your application as a .NET client application, assigning the
portions of the application that run on the server tier and client tier late in the
development process. 
&lt;/p&gt;
&lt;p&gt;
After tier assignments, Volta's deep integration with Visual Studio debugger and testing
infrastructure dramatically improves the deployment experience for developers. 
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Volta automatically creates communication, serialization, and remoting code. Developers
simply write custom attributes on classes or methods to tell Volta the tier on which
to run them. 
&lt;li&gt;
Developers may base tier assignments on any criteria, such as load management, performance,
or location of critical assets and capabilities. Because Volta automates the hidden
plumbing code, it is easy for developers to experiment with varying assignments of
classes and methods to tiers. 
&lt;li&gt;
Developers can use all the .NET languages, libraries, and tools they already know,
including debuggers, profilers, test generators, refactoring, and code analysis tools. 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Volta offers deep integration with Visual Studio 2008, including debuggers, profilers,
and testing frameworks. Developers can step through code seamlessly from one tier
to another, can set breakpoints on any tier, and trace flows of control across distributed
systems. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;What do you need to use Volta? &lt;/strong&gt;
&lt;/p&gt;
&lt;div class=faq-a&gt;The Volta developer toolset requires &lt;strong&gt;Visual Studio 2008 and
the .NET Framework 3.5&lt;/strong&gt; for writing and building applications. Volta applications
run virtually anywhere, even where an MSIL runtime is not available. A Volta client-side
application can run in most standards-compliant browsers, but can also be targetted
also take advantage of MSIL runtimes like the .NET CLR. 
&lt;/div&gt;
&lt;div class=faq-a&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div class=faq-a&gt;All this sounds great, except the requirements that are trying to
enforce the developers to use Visual Studio 2008 and the new .NET Framework 3.5.
&lt;/div&gt;
&lt;div class=faq-a&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div class=faq-a&gt;I wonder why the long wait for this release? And why it does not
compatible with .NET Framework 2.0?
&lt;/div&gt;
&lt;div class=faq-a&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div class=faq-a&gt;&lt;strong&gt;BTW, It is just me or the Volta logo reminds firefox logo
a bit:&lt;/strong&gt;
&lt;/div&gt;
&lt;div class=faq-a&gt;&amp;nbsp;
&lt;/div&gt;
&lt;p&gt;
&lt;img src="http://www.spotgnome.com/content/binary/logo-volta.png" border=0&gt;&amp;nbsp;&amp;nbsp;&lt;font size=6&gt;&lt;strong&gt;&amp;lt;-
VS -&amp;gt;&lt;/strong&gt;&lt;/font&gt;&amp;nbsp; &amp;nbsp; &lt;img src="http://www.spotgnome.com/content/binary/firefox-logo-64x64.png" border=0&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=b0644c96-2b2f-475c-ad8c-2866aea2bd43" /&gt;</description>
      <comments>http://www.spotgnome.com/CommentView,guid,b0644c96-2b2f-475c-ad8c-2866aea2bd43.aspx</comments>
      <category>.Net</category>
      <category>Microsoft</category>
      <category>Programming</category>
      <category>Visual Studio</category>
      <category>Volta</category>
    </item>
    <item>
      <trackback:ping>http://www.spotgnome.com/Trackback.aspx?guid=bdcf14ad-29e0-444c-af25-5a7b70be84d1</trackback:ping>
      <pingback:server>http://www.spotgnome.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.spotgnome.com/PermaLink,guid,bdcf14ad-29e0-444c-af25-5a7b70be84d1.aspx</pingback:target>
      <dc:creator>Guy Levin</dc:creator>
      <wfw:comment>http://www.spotgnome.com/CommentView,guid,bdcf14ad-29e0-444c-af25-5a7b70be84d1.aspx</wfw:comment>
      <wfw:commentRss>http://www.spotgnome.com/SyndicationService.asmx/GetEntryCommentsRss?guid=bdcf14ad-29e0-444c-af25-5a7b70be84d1</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
There's no Gphone just yet, but Google does want a big piece of your cell phone. In
November 2007, the company announced its Android mobile operating system, and 34 companies
are on board to develop applications for the cell-phone platform as part of the Open
Handset Alliance. The open software platform is hoped to go head-to-head with smartphone
software from RIM, Apple, Microsoft, Nokia, and Palm. Will Google be your next mobile
OS? 
</p>
        <p>
          <img src="http://www.spotgnome.com/content/binary/hed_gphone.jpg" border="0" />
        </p>
        <p>
What's that all mean? The big motivation for Google is that it will likely have its
applications such as Gmail and Google Docs &amp; Spreadsheets automatically built
into a major share of new cell phones in the burgeoning market.
</p>
        <p>
What's interesting and exciting is that the platform--likely based on Linux--will
be open to all third-party developers. With any luck, that means that consumers will
finally be able to choose exactly which software apps they want to use on their cell
phones.
</p>
        <p>
Google CEO Eric Schmidt claims that "as a result of this platform you'll be able to
do amazing things with your mobile devices that you've never thought of." We'll get
a first peek at the possibilities for programmers with an early look at a software
development kit for Google Android next week.
</p>
        <p>
 
</p>
        <p align="center">
          <img src="http://www.spotgnome.com/content/binary/gemulator_440.jpg" border="0" />
        </p>
        <img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=bdcf14ad-29e0-444c-af25-5a7b70be84d1" />
      </body>
      <title>Google Android - New Mobile OS</title>
      <guid isPermaLink="false">http://www.spotgnome.com/PermaLink,guid,bdcf14ad-29e0-444c-af25-5a7b70be84d1.aspx</guid>
      <link>http://www.spotgnome.com/2007/12/06/GoogleAndroidNewMobileOS.aspx</link>
      <pubDate>Thu, 06 Dec 2007 12:16:21 GMT</pubDate>
      <description>&lt;p&gt;
There's no Gphone just yet, but Google does want a big piece of your cell phone. In
November 2007, the company announced its Android mobile operating system, and 34 companies
are on board to develop applications for the cell-phone platform as part of the Open
Handset Alliance. The open software platform is hoped to go head-to-head with smartphone
software from RIM, Apple, Microsoft, Nokia, and Palm. Will Google be your next mobile
OS? 
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://www.spotgnome.com/content/binary/hed_gphone.jpg" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
What's that all mean? The big motivation for Google is that it will likely have its
applications such as Gmail and Google Docs &amp;amp; Spreadsheets automatically built
into a major share of new cell phones in the burgeoning market.
&lt;/p&gt;
&lt;p&gt;
What's interesting and exciting is that the platform--likely based on Linux--will
be open to all third-party developers. With any luck, that means that consumers will
finally be able to choose exactly which software apps they want to use on their cell
phones.
&lt;/p&gt;
&lt;p&gt;
Google CEO Eric Schmidt claims that "as a result of this platform you'll be able to
do amazing things with your mobile devices that you've never thought of." We'll get
a first peek at the possibilities for programmers with an early look at a software
development kit for Google Android next week.
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p align=center&gt;
&lt;img src="http://www.spotgnome.com/content/binary/gemulator_440.jpg" border=0&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=bdcf14ad-29e0-444c-af25-5a7b70be84d1" /&gt;</description>
      <comments>http://www.spotgnome.com/CommentView,guid,bdcf14ad-29e0-444c-af25-5a7b70be84d1.aspx</comments>
      <category>Google</category>
      <category>Programming</category>
    </item>
    <item>
      <trackback:ping>http://www.spotgnome.com/Trackback.aspx?guid=f5a94850-628c-47c3-a892-dadfa02ee9f1</trackback:ping>
      <pingback:server>http://www.spotgnome.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.spotgnome.com/PermaLink,guid,f5a94850-628c-47c3-a892-dadfa02ee9f1.aspx</pingback:target>
      <dc:creator>Guy Levin</dc:creator>
      <wfw:comment>http://www.spotgnome.com/CommentView,guid,f5a94850-628c-47c3-a892-dadfa02ee9f1.aspx</wfw:comment>
      <wfw:commentRss>http://www.spotgnome.com/SyndicationService.asmx/GetEntryCommentsRss?guid=f5a94850-628c-47c3-a892-dadfa02ee9f1</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
This is one of those "Yeah I've always seen people use it differently but I don't
know why!" questions. 
</p>
        <p>
Re-throwing exceptions can be misused, although it may not cause any harm to your
application - there are multiple ways of re-throwing an exception, most likely for
the purpose of bubbling it up to a higher level.
</p>
        <p>
Lets look at how many ways we can use <a href="http://msdn2.microsoft.com/en-us/library/1ah5wsex(VS.80).aspx">throw</a>: 
</p>
        <ol>
        </ol>
        <ol>
          <li>
throw 
</li>
          <li>
throw ex 
</li>
          <li>
throw new Exception(); </li>
        </ol>
        <p>
You should not use #3 except if you are throwing a specific exception other that the
one that was fired such as a custom exception. To re-throw an exception in .NET your
best option is #1 instead of #2 and that is simply because of how they stack
up in the <strong><u>stack trace</u></strong>. Lets take a look at the stack trace
for both instances using the following snippet.
</p>
        <p>
 
</p>
        <pre class="code">
          <span style="COLOR: rgb(0,0,255)">protected</span>
          <span style="COLOR: rgb(0,0,255)">void</span> Page_Load(<span style="COLOR: rgb(0,0,255)">object</span> sender, <span style="COLOR: rgb(43,145,175)">EventArgs</span> e)
{ <span style="COLOR: rgb(0,0,255)">try </span> { DoMath(); } <span style="COLOR: rgb(0,0,255)">catch</span>(<span style="COLOR: rgb(43,145,175)">Exception</span> ex)
{ <span style="COLOR: rgb(0,0,255)">throw</span> ex; } } <span style="COLOR: rgb(128,128,128)">///</span><span style="COLOR: rgb(0,128,0)"></span><span style="COLOR: rgb(128,128,128)">&lt;summary&gt; </span><span style="COLOR: rgb(128,128,128)">///</span><span style="COLOR: rgb(0,128,0)"> A
method that simply calls another method. </span><span style="COLOR: rgb(128,128,128)">///</span><span style="COLOR: rgb(0,128,0)"></span><span style="COLOR: rgb(128,128,128)">&lt;/summary&gt; </span><span style="COLOR: rgb(128,128,128)">///</span><span style="COLOR: rgb(0,128,0)"></span><span style="COLOR: rgb(128,128,128)">&lt;remarks&gt; </span><span style="COLOR: rgb(128,128,128)">///</span><span style="COLOR: rgb(0,128,0)"> Just
a helper to show stack trace </span><span style="COLOR: rgb(128,128,128)">///</span><span style="COLOR: rgb(0,128,0)"></span><span style="COLOR: rgb(128,128,128)">&lt;/remarks&gt; </span><span style="COLOR: rgb(0,0,255)">private</span><span style="COLOR: rgb(0,0,255)">void</span> DoMath()
{ MethodWithError(); } <span style="COLOR: rgb(128,128,128)">///</span><span style="COLOR: rgb(0,128,0)"></span><span style="COLOR: rgb(128,128,128)">&lt;summary&gt; </span><span style="COLOR: rgb(128,128,128)">///</span><span style="COLOR: rgb(0,128,0)"> This
method will throw an error </span><span style="COLOR: rgb(128,128,128)">///</span><span style="COLOR: rgb(0,128,0)"></span><span style="COLOR: rgb(128,128,128)">&lt;/summary&gt; </span><span style="COLOR: rgb(0,0,255)">private</span><span style="COLOR: rgb(0,0,255)">void</span> MethodWithError()
{ <span style="COLOR: rgb(0,0,255)">throw</span><span style="COLOR: rgb(0,0,255)">new</span><span style="COLOR: rgb(43,145,175)">Exception</span>(<span style="COLOR: rgb(163,21,21)">"Generic
exception"</span>); }</pre>
        <p>
 
</p>
        <p>
The stack trace looks like this:
</p>
        <pre>
          <font color="#808080">[Exception: Generic exception] throwerror.Page_Load(Object
sender, EventArgs e) </font>
        </pre>
        <pre>
          <font color="#808080">in d:\My Websites\demoweb\throwerror.aspx.cs:22
System.Web.Util.CalliHelper.EventArgFunctionCaller</font>
        </pre>
        <pre>
          <font color="#808080">(IntPtr
fp, Object o, Object t, EventArgs e) +15 System.Web.Util.CalliEventHandlerDelegateProxy.Callback</font>
        </pre>
        <pre>
          <font color="#808080">(Object
sender, EventArgs e) +34 System.Web.UI.Control.OnLoad(EventArgs e) +99 System.Web.UI.Control.LoadRecursive()
+47 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, </font>
        </pre>
        <pre>
          <font color="#808080">Boolean
includeStagesAfterAsyncPoint) +1061</font>
        </pre>
        <p>
 
</p>
        <p>
However, if I replace "<strong>throw ex;"</strong> with just "<strong>throw;",</strong> here
is the new stack trace.
</p>
        <p>
          <font color="#808080">[Exception: Generic exception]<br />
   throwerror.MethodWithError() in d:\My Websites\demoweb\throwerror.aspx.cs:42<br />
   throwerror.DoMath() in d:\My Websites\demoweb\throwerror.aspx.cs:34<br />
   throwerror.Page_Load(Object sender, EventArgs e) in d:\My Websites\demoweb\throwerror.aspx.cs:22<br />
   System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object
o, Object t, EventArgs e) +15<br />
   System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender,
EventArgs e) +34<br />
   System.Web.UI.Control.OnLoad(EventArgs e) +99<br />
   System.Web.UI.Control.LoadRecursive() +47<br />
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint,
Boolean includeStagesAfterAsyncPoint) +1061</font>
        </p>
        <p>
 
</p>
        <p>
          <em>Its all about the details.</em> Obviously, using just "<strong>throw;</strong>"
gives us much more details - so use "<strong><u>throw</u></strong>" to <strong><u>re-throw</u></strong> an
error.
</p>
        <img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=f5a94850-628c-47c3-a892-dadfa02ee9f1" />
      </body>
      <title>Re-Throwing An Exception</title>
      <guid isPermaLink="false">http://www.spotgnome.com/PermaLink,guid,f5a94850-628c-47c3-a892-dadfa02ee9f1.aspx</guid>
      <link>http://www.spotgnome.com/2007/12/04/ReThrowingAnException.aspx</link>
      <pubDate>Tue, 04 Dec 2007 15:10:06 GMT</pubDate>
      <description>&lt;p&gt;
This is one of those "Yeah I've always seen people use it differently but I don't
know why!" questions. 
&lt;/p&gt;
&lt;p&gt;
Re-throwing exceptions can be misused, although it may not cause any harm to your
application - there are multiple ways of re-throwing an exception, most likely for
the purpose of bubbling it up to a higher level.
&lt;/p&gt;
&lt;p&gt;
Lets look at how many ways we can use &lt;a href="http://msdn2.microsoft.com/en-us/library/1ah5wsex(VS.80).aspx"&gt;throw&lt;/a&gt;: 
&lt;/p&gt;
&lt;ol&gt;
&lt;ol&gt;
&lt;li&gt;
throw 
&lt;li&gt;
throw ex 
&lt;li&gt;
throw new Exception();&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&gt;
&lt;p&gt;
You should not use #3 except if you are throwing a specific exception other that the
one that was fired such as a custom exception. To re-throw an exception in .NET your
best option is #1 instead of #2 and that is simply because of how&amp;nbsp;they stack
up in the &lt;strong&gt;&lt;u&gt;stack trace&lt;/u&gt;&lt;/strong&gt;. Lets take a look at the stack trace
for both instances using the following snippet.
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;pre class=code&gt;    &lt;span style="COLOR: rgb(0,0,255)"&gt;protected&lt;/span&gt; &lt;span style="COLOR: rgb(0,0,255)"&gt;void&lt;/span&gt; Page_Load(&lt;span style="COLOR: rgb(0,0,255)"&gt;object&lt;/span&gt; sender, &lt;span style="COLOR: rgb(43,145,175)"&gt;EventArgs&lt;/span&gt; e)
{ &lt;span style="COLOR: rgb(0,0,255)"&gt;try &lt;/span&gt; { DoMath(); } &lt;span style="COLOR: rgb(0,0,255)"&gt;catch&lt;/span&gt;(&lt;span style="COLOR: rgb(43,145,175)"&gt;Exception&lt;/span&gt; ex)
{ &lt;span style="COLOR: rgb(0,0,255)"&gt;throw&lt;/span&gt; ex; } } &lt;span style="COLOR: rgb(128,128,128)"&gt;///&lt;/span&gt;&lt;span style="COLOR: rgb(0,128,0)"&gt; &lt;/span&gt;&lt;span style="COLOR: rgb(128,128,128)"&gt;&amp;lt;summary&amp;gt; &lt;/span&gt; &lt;span style="COLOR: rgb(128,128,128)"&gt;///&lt;/span&gt;&lt;span style="COLOR: rgb(0,128,0)"&gt; A
method that simply calls another method. &lt;/span&gt; &lt;span style="COLOR: rgb(128,128,128)"&gt;///&lt;/span&gt;&lt;span style="COLOR: rgb(0,128,0)"&gt; &lt;/span&gt;&lt;span style="COLOR: rgb(128,128,128)"&gt;&amp;lt;/summary&amp;gt; &lt;/span&gt; &lt;span style="COLOR: rgb(128,128,128)"&gt;///&lt;/span&gt;&lt;span style="COLOR: rgb(0,128,0)"&gt; &lt;/span&gt;&lt;span style="COLOR: rgb(128,128,128)"&gt;&amp;lt;remarks&amp;gt; &lt;/span&gt; &lt;span style="COLOR: rgb(128,128,128)"&gt;///&lt;/span&gt;&lt;span style="COLOR: rgb(0,128,0)"&gt; Just
a helper to show stack trace &lt;/span&gt; &lt;span style="COLOR: rgb(128,128,128)"&gt;///&lt;/span&gt;&lt;span style="COLOR: rgb(0,128,0)"&gt; &lt;/span&gt;&lt;span style="COLOR: rgb(128,128,128)"&gt;&amp;lt;/remarks&amp;gt; &lt;/span&gt; &lt;span style="COLOR: rgb(0,0,255)"&gt;private&lt;/span&gt; &lt;span style="COLOR: rgb(0,0,255)"&gt;void&lt;/span&gt; DoMath()
{ MethodWithError(); } &lt;span style="COLOR: rgb(128,128,128)"&gt;///&lt;/span&gt;&lt;span style="COLOR: rgb(0,128,0)"&gt; &lt;/span&gt;&lt;span style="COLOR: rgb(128,128,128)"&gt;&amp;lt;summary&amp;gt; &lt;/span&gt; &lt;span style="COLOR: rgb(128,128,128)"&gt;///&lt;/span&gt;&lt;span style="COLOR: rgb(0,128,0)"&gt; This
method will throw an error &lt;/span&gt; &lt;span style="COLOR: rgb(128,128,128)"&gt;///&lt;/span&gt;&lt;span style="COLOR: rgb(0,128,0)"&gt; &lt;/span&gt;&lt;span style="COLOR: rgb(128,128,128)"&gt;&amp;lt;/summary&amp;gt; &lt;/span&gt; &lt;span style="COLOR: rgb(0,0,255)"&gt;private&lt;/span&gt; &lt;span style="COLOR: rgb(0,0,255)"&gt;void&lt;/span&gt; MethodWithError()
{ &lt;span style="COLOR: rgb(0,0,255)"&gt;throw&lt;/span&gt; &lt;span style="COLOR: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="COLOR: rgb(43,145,175)"&gt;Exception&lt;/span&gt;(&lt;span style="COLOR: rgb(163,21,21)"&gt;"Generic
exception"&lt;/span&gt;); }&lt;/pre&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
The stack trace looks like this:
&lt;/p&gt;
&lt;pre&gt;&lt;font color=#808080&gt;[Exception: Generic exception] throwerror.Page_Load(Object
sender, EventArgs e) &lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font color=#808080&gt;in d:\My Websites\demoweb\throwerror.aspx.cs:22
System.Web.Util.CalliHelper.EventArgFunctionCaller&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font color=#808080&gt;(IntPtr
fp, Object o, Object t, EventArgs e) +15 System.Web.Util.CalliEventHandlerDelegateProxy.Callback&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font color=#808080&gt;(Object
sender, EventArgs e) +34 System.Web.UI.Control.OnLoad(EventArgs e) +99 System.Web.UI.Control.LoadRecursive()
+47 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, &lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font color=#808080&gt;Boolean
includeStagesAfterAsyncPoint) +1061&lt;/font&gt;&lt;/pre&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
However, if I replace "&lt;strong&gt;throw ex;"&lt;/strong&gt; with just "&lt;strong&gt;throw;",&lt;/strong&gt; here
is the new stack trace.
&lt;/p&gt;
&lt;p&gt;
&lt;font color=#808080&gt;[Exception: Generic exception]&lt;br&gt;
&amp;nbsp;&amp;nbsp; throwerror.MethodWithError() in d:\My Websites\demoweb\throwerror.aspx.cs:42&lt;br&gt;
&amp;nbsp;&amp;nbsp; throwerror.DoMath() in d:\My Websites\demoweb\throwerror.aspx.cs:34&lt;br&gt;
&amp;nbsp;&amp;nbsp; throwerror.Page_Load(Object sender, EventArgs e) in d:\My Websites\demoweb\throwerror.aspx.cs:22&lt;br&gt;
&amp;nbsp;&amp;nbsp; System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object
o, Object t, EventArgs e) +15&lt;br&gt;
&amp;nbsp;&amp;nbsp; System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender,
EventArgs e) +34&lt;br&gt;
&amp;nbsp;&amp;nbsp; System.Web.UI.Control.OnLoad(EventArgs e) +99&lt;br&gt;
&amp;nbsp;&amp;nbsp; System.Web.UI.Control.LoadRecursive() +47&lt;br&gt;
&amp;nbsp;&amp;nbsp; System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint,
Boolean includeStagesAfterAsyncPoint) +1061&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;Its all about the details.&lt;/em&gt; Obviously, using just "&lt;strong&gt;throw;&lt;/strong&gt;"
gives us much more details - so use "&lt;strong&gt;&lt;u&gt;throw&lt;/u&gt;&lt;/strong&gt;" to &lt;strong&gt;&lt;u&gt;re-throw&lt;/u&gt;&lt;/strong&gt; an
error.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.spotgnome.com/aggbug.ashx?id=f5a94850-628c-47c3-a892-dadfa02ee9f1" /&gt;</description>
      <comments>http://www.spotgnome.com/CommentView,guid,f5a94850-628c-47c3-a892-dadfa02ee9f1.aspx</comments>
      <category>.Net</category>
      <category>Visual Studio</category>
      <category>Programming</category>
    </item>
  </channel>
</rss>