diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..d6ddefa
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,16 @@
+# Normal private files
+build/
+dist/
+adaptor-config.properties
+cacerts.jks
+keys.jks
+adaptor.crt
+gsa.crt
+
+# IntelliJ files
+workspace/
+classes/
+.idea
+
+# NetBeans files
+nbproject/
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..9f309ff
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "lib/plexi"]
+	path = lib/plexi
+	url = https://code.google.com/p/plexi/
diff --git a/SiteData.spec.wsdl b/SiteData.spec.wsdl
new file mode 100644
index 0000000..b96b6f2
--- /dev/null
+++ b/SiteData.spec.wsdl
@@ -0,0 +1,1429 @@
+<?xml version="1.0" encoding="utf-8"?>
+<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://schemas.microsoft.com/sharepoint/soap/"
+xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" targetNamespace="http://schemas.microsoft.com/sharepoint/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+  <wsdl:types>
+    <s:schema elementFormDefault="qualified" targetNamespace="http://schemas.microsoft.com/sharepoint/soap/">
+      <s:element name="GetSiteAndWeb">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="1" maxOccurs="1" name="strUrl" type="s:string" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="GetSiteAndWebResponse">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="1" maxOccurs="1" name="GetSiteAndWebResult" type="s:unsignedInt" />
+            <s:element minOccurs="1" maxOccurs="1" name="strSite" type="s:string" />
+            <s:element minOccurs="1" maxOccurs="1" name="strWeb" type="s:string" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="GetSite">
+        <s:complexType />
+      </s:element>
+      <s:element name="GetSiteResponse">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="1" maxOccurs="1" name="GetSiteResult" type="s:unsignedInt" />
+            <s:element minOccurs="1" maxOccurs="1" name="sSiteMetadata" type="tns:_sSiteMetadata" />
+            <s:element minOccurs="0" maxOccurs="1" name="vWebs" type="tns:ArrayOf_sWebWithTime" />
+            <s:element minOccurs="0" maxOccurs="1" name="strUsers" type="s:string" />
+            <s:element minOccurs="1" maxOccurs="1" name="strGroups" type="s:string" />
+            <s:element minOccurs="1" maxOccurs="1" name="vGroups" type="tns:ArrayOfString" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:complexType name="_sSiteMetadata">
+        <s:sequence>
+          <s:element minOccurs="1" maxOccurs="1" name="LastModified" type="s:dateTime" />
+          <s:element minOccurs="1" maxOccurs="1" name="LastModifiedForceRecrawl" type="s:dateTime" />
+          <s:element minOccurs="1" maxOccurs="1" name="SmallSite" type="s:boolean" />
+          <s:element minOccurs="1" maxOccurs="1" name="PortalUrl" type="s:string" />
+          <s:element minOccurs="0" maxOccurs="1" name="UserProfileGUID" type="s:string" />
+          <s:element minOccurs="1" maxOccurs="1" name="ValidSecurityInfo" type="s:boolean" />
+        </s:sequence>
+      </s:complexType>
+      <s:complexType name="ArrayOf_sWebWithTime">
+        <s:sequence>
+          <s:element minOccurs="0" maxOccurs="unbounded" name="_sWebWithTime" type="tns:_sWebWithTime" />
+        </s:sequence>
+      </s:complexType>
+      <s:complexType name="_sWebWithTime">
+        <s:sequence>
+          <s:element minOccurs="1" maxOccurs="1" name="Url" type="s:string" />
+          <s:element minOccurs="1" maxOccurs="1" name="LastModified" type="s:dateTime" />
+        </s:sequence>
+      </s:complexType>
+      <s:complexType name="ArrayOfString">
+        <s:sequence>
+          <s:element minOccurs="0" maxOccurs="unbounded" name="string" nillable="true" type="s:string" />
+        </s:sequence>
+      </s:complexType>
+      <s:element name="GetWeb">
+        <s:complexType />
+      </s:element>
+      <s:element name="GetWebResponse">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="1" maxOccurs="1" name="GetWebResult" type="s:unsignedInt" />
+            <s:element minOccurs="1" maxOccurs="1" name="sWebMetadata" type="tns:_sWebMetadata" />
+            <s:element minOccurs="1" maxOccurs="1" name="vWebs" type="tns:ArrayOf_sWebWithTime" />
+            <s:element minOccurs="1" maxOccurs="1" name="vLists" type="tns:ArrayOf_sListWithTime" />
+            <s:element minOccurs="0" maxOccurs="1" name="vFPUrls" type="tns:ArrayOf_sFPUrl" />
+            <s:element minOccurs="0" maxOccurs="1" name="strRoles" type="s:string" />
+            <s:element minOccurs="0" maxOccurs="1" name="vRolesUsers" type="tns:ArrayOfString" />
+            <s:element minOccurs="0" maxOccurs="1" name="vRolesGroups" type="tns:ArrayOfString" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:complexType name="_sWebMetadata">
+        <s:sequence>
+          <s:element minOccurs="1" maxOccurs="1" name="WebID" type="s:string" />
+          <s:element minOccurs="1" maxOccurs="1" name="Title" type="s:string" />
+          <s:element minOccurs="1" maxOccurs="1" name="Description" type="s:string" />
+          <s:element minOccurs="1" maxOccurs="1" name="Author" type="s:string" />
+          <s:element minOccurs="1" maxOccurs="1" name="Language" type="s:unsignedInt" />
+          <s:element minOccurs="1" maxOccurs="1" name="LastModified" type="s:dateTime" />
+          <s:element minOccurs="1" maxOccurs="1" name="LastModifiedForceRecrawl" type="s:dateTime" />
+          <s:element minOccurs="0" maxOccurs="1" name="NoIndex" type="s:string" />
+          <s:element minOccurs="1" maxOccurs="1" name="ValidSecurityInfo" type="s:boolean" />
+          <s:element minOccurs="1" maxOccurs="1" name="InheritedSecurity" type="s:boolean" />
+          <s:element minOccurs="1" maxOccurs="1" name="AllowAnonymousAccess" type="s:boolean" />
+          <s:element minOccurs="1" maxOccurs="1" name="AnonymousViewListItems" type="s:boolean" />
+          <s:element minOccurs="1" maxOccurs="1" name="Permissions" type="s:string" />
+          <s:element minOccurs="1" maxOccurs="1" name="ExternalSecurity" type="s:boolean" />
+          <s:element minOccurs="0" maxOccurs="1" name="CategoryId" type="s:string" />
+          <s:element minOccurs="0" maxOccurs="1" name="CategoryName" type="s:string" />
+          <s:element minOccurs="0" maxOccurs="1" name="CategoryIdPath" type="s:string" />
+          <s:element minOccurs="1" maxOccurs="1" name="IsBucketWeb" type="s:boolean" />
+          <s:element minOccurs="1" maxOccurs="1" name="UsedInAutocat" type="s:boolean" />
+          <s:element minOccurs="0" maxOccurs="1" name="CategoryBucketID" type="s:string" />
+        </s:sequence>
+      </s:complexType>
+      <s:complexType name="ArrayOf_sListWithTime">
+        <s:sequence>
+          <s:element minOccurs="0" maxOccurs="unbounded" name="_sListWithTime" type="tns:_sListWithTime" />
+        </s:sequence>
+      </s:complexType>
+      <s:complexType name="_sListWithTime">
+        <s:sequence>
+          <s:element minOccurs="1" maxOccurs="1" name="InternalName" type="s:string" />
+          <s:element minOccurs="1" maxOccurs="1" name="LastModified" type="s:dateTime" />
+          <s:element minOccurs="1" maxOccurs="1" name="IsEmpty" type="s:boolean" />
+        </s:sequence>
+      </s:complexType>
+      <s:complexType name="ArrayOf_sFPUrl">
+        <s:sequence>
+          <s:element minOccurs="0" maxOccurs="unbounded" name="_sFPUrl" type="tns:_sFPUrl" />
+        </s:sequence>
+      </s:complexType>
+      <s:complexType name="_sFPUrl">
+        <s:sequence>
+          <s:element minOccurs="1" maxOccurs="1" name="Url" type="s:string" />
+          <s:element minOccurs="1" maxOccurs="1" name="LastModified" type="s:dateTime" />
+          <s:element minOccurs="1" maxOccurs="1" name="IsFolder" type="s:boolean" />
+        </s:sequence>
+      </s:complexType>
+      <s:element name="GetList">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="1" maxOccurs="1" name="strListName" type="s:string" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="GetListResponse">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="1" maxOccurs="1" name="GetListResult" type="s:unsignedInt" />
+            <s:element minOccurs="1" maxOccurs="1" name="sListMetadata" type="tns:_sListMetadata" />
+            <s:element minOccurs="1" maxOccurs="1" name="vProperties" type="tns:ArrayOf_sProperty" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:complexType name="_sListMetadata">
+        <s:sequence>
+          <s:element minOccurs="1" maxOccurs="1" name="Title" type="s:string" />
+          <s:element minOccurs="1" maxOccurs="1" name="Description" type="s:string" />
+          <s:element minOccurs="1" maxOccurs="1" name="BaseType" type="tns:ListBaseType" />
+          <s:element minOccurs="1" maxOccurs="1" name="BaseTemplate" type="tns:ListBaseTemplate" />
+          <s:element minOccurs="1" maxOccurs="1" name="DefaultViewUrl" type="s:string" />
+          <s:element minOccurs="1" maxOccurs="1" name="LastModified" type="s:dateTime" />
+          <s:element minOccurs="1" maxOccurs="1" name="LastModifiedForceRecrawl" type="s:dateTime" />
+          <s:element minOccurs="1" maxOccurs="1" name="Author" type="s:string" />
+          <s:element minOccurs="1" maxOccurs="1" name="ValidSecurityInfo" type="s:boolean" />
+          <s:element minOccurs="1" maxOccurs="1" name="InheritedSecurity" type="s:boolean" />
+          <s:element minOccurs="1" maxOccurs="1" name="AllowAnonymousAccess" type="s:boolean" />
+          <s:element minOccurs="1" maxOccurs="1" name="AnonymousViewListItems" type="s:boolean" />
+          <s:element minOccurs="1" maxOccurs="1" name="ReadSecurity" type="s:int" />
+          <s:element minOccurs="0" maxOccurs="1" name="Permissions" type="s:string" />
+        </s:sequence>
+      </s:complexType>
+      <s:simpleType name="ListBaseType">
+        <s:restriction base="s:string">
+          <s:enumeration value="UnspecifiedBaseType"/>
+          <s:enumeration value="GenericList"/>
+          <s:enumeration value="DocumentLibrary"/>
+          <s:enumeration value="Unused"/>
+          <s:enumeration value="DiscussionBoard"/>
+          <s:enumeration value="Survey"/>
+          <s:enumeration value="Issue"/>
+        </s:restriction>
+      </s:simpleType>
+      <s:simpleType name="ListBaseTemplate" >
+        <s:restriction base="s:string">
+        <s:enumeration value="InvalidType"/>
+        <s:enumeration value="GenericList"/>
+        <s:enumeration value="DocumentLibrary"/>
+        <s:enumeration value="Survey"/>
+        <s:enumeration value="Links"/>
+        <s:enumeration value="Announcements"/>
+        <s:enumeration value="Contacts"/>
+        <s:enumeration value="Events"/>
+        <s:enumeration value="Tasks"/>
+        <s:enumeration value="DiscussionBoard"/>
+        <s:enumeration value="PictureLibrary"/>
+        <s:enumeration value="DataSources"/>
+        <s:enumeration value="WebTemplateCatalog"/>
+        <s:enumeration value="UserInformation"/>
+        <s:enumeration value="WebPartCatalog"/>
+        <s:enumeration value="ListTemplateCatalog"/>
+        <s:enumeration value="XMLForm"/>
+        <s:enumeration value="MasterPageCatalog"/>
+        <s:enumeration value="NoCodeWorkflows"/>
+        <s:enumeration value="WorkflowProcess"/>
+        <s:enumeration value="WebPageLibrary"/>
+        <s:enumeration value="CustomGrid"/>
+        <s:enumeration value="DataConnectionLibrary"/>
+        <s:enumeration value="WorkflowHistory"/>
+        <s:enumeration value="GanttTasks"/>
+        <s:enumeration value="Meetings"/>
+        <s:enumeration value="Agenda"/>
+        <s:enumeration value="MeetingUser"/>
+        <s:enumeration value="Decision"/>
+        <s:enumeration value="MeetingObjective"/>
+        <s:enumeration value="TextBox"/>
+        <s:enumeration value="ThingsToBring"/>
+        <s:enumeration value="HomePageLibrary"/>
+        <s:enumeration value="Posts"/>
+        <s:enumeration value="Comments"/>
+        <s:enumeration value="Categories"/>
+        <s:enumeration value="IssueTracking"/>
+        <s:enumeration value="AdminTasks"/>
+        </s:restriction>
+      </s:simpleType>
+      <s:complexType name="ArrayOf_sProperty">
+        <s:sequence>
+          <s:element minOccurs="0" maxOccurs="unbounded" name="_sProperty" type="tns:_sProperty" />
+        </s:sequence>
+      </s:complexType>
+      <s:complexType name="_sProperty">
+        <s:sequence>
+          <s:element minOccurs="1" maxOccurs="1" name="Name" type="s:string" />
+          <s:element minOccurs="1" maxOccurs="1" name="Title" type="s:string" />
+          <s:element minOccurs="1" maxOccurs="1" name="Type" type="s:string" />
+        </s:sequence>
+      </s:complexType>
+      <s:element name="GetListItems">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="0" maxOccurs="1" name="strListName" type="s:string" />
+            <s:element minOccurs="0" maxOccurs="1" name="strQuery" type="s:string" />
+            <s:element minOccurs="0" maxOccurs="1" name="strViewFields" type="s:string" />
+            <s:element minOccurs="1" maxOccurs="1" name="uRowLimit" type="s:unsignedInt" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="GetListItemsResponse">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="1" maxOccurs="1" name="GetListItemsResult" type="s:string" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="EnumerateFolder">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="1" maxOccurs="1" name="strFolderUrl" type="s:string" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="EnumerateFolderResponse">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="1" maxOccurs="1" name="EnumerateFolderResult" type="s:unsignedInt" />
+            <s:element minOccurs="0" maxOccurs="1" name="vUrls" type="tns:ArrayOf_sFPUrl" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="GetAttachments">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="1" maxOccurs="1" name="strListName" type="s:string" />
+            <s:element minOccurs="1" maxOccurs="1" name="strItemId" type="s:string" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="GetAttachmentsResponse">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="1" maxOccurs="1" name="GetAttachmentsResult" type="s:unsignedInt" />
+            <s:element minOccurs="0" maxOccurs="1" name="vAttachments" type="tns:ArrayOfString" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="GetURLSegments">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="1" maxOccurs="1" name="strURL" type="s:string" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="GetURLSegmentsResponse">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="1" maxOccurs="1" name="GetURLSegmentsResult" type="s:boolean" />
+            <s:element minOccurs="0" maxOccurs="1" name="strWebID" type="s:string" />
+            <s:element minOccurs="0" maxOccurs="1" name="strBucketID" type="s:string" />
+            <s:element minOccurs="0" maxOccurs="1" name="strListID" type="s:string" />
+            <s:element minOccurs="0" maxOccurs="1" name="strItemID" type="s:string" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="GetListCollection">
+        <s:complexType />
+      </s:element>
+      <s:element name="GetListCollectionResponse">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="1" maxOccurs="1" name="GetListCollectionResult" type="s:unsignedInt" />
+            <s:element minOccurs="1" maxOccurs="1" name="vLists" type="tns:ArrayOf_sList" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:complexType name="ArrayOf_sList">
+        <s:sequence>
+          <s:element minOccurs="0" maxOccurs="unbounded" name="_sList" type="tns:_sList" />
+        </s:sequence>
+      </s:complexType>
+      <s:complexType name="_sList">
+        <s:sequence>
+          <s:element minOccurs="1" maxOccurs="1" name="InternalName" type="s:string" />
+          <s:element minOccurs="1" maxOccurs="1" name="Title" type="s:string" />
+          <s:element minOccurs="1" maxOccurs="1" name="Description" type="s:string" />
+          <s:element minOccurs="1" maxOccurs="1" name="BaseType"
+                     type="tns:ListBaseType" />
+          <s:element minOccurs="1" maxOccurs="1" name="BaseTemplate"
+                     type="tns:ListBaseTemplate" />
+          <s:element minOccurs="1" maxOccurs="1" name="DefaultViewUrl" type="s:string" />
+          <s:element minOccurs="1" maxOccurs="1" name="LastModified" type="s:string" />
+          <s:element minOccurs="0" maxOccurs="1" name="PermId" type="s:string" />
+          <s:element minOccurs="1" maxOccurs="1" name="InheritedSecurity"
+                     type="s:boolean" />
+          <s:element minOccurs="1" maxOccurs="1" name="AllowAnonymousAccess"
+                     type="s:boolean" />
+          <s:element minOccurs="1" maxOccurs="1" name="AnonymousViewListItems"
+                     type="s:boolean" />
+          <s:element minOccurs="1" maxOccurs="1" name="ReadSecurity" type="s:int" />
+        </s:sequence>
+      </s:complexType>
+
+      <s:element name="GetContent">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="1" maxOccurs="1" name="objectType" type="tns:ObjectType" />
+            <s:element minOccurs="0" maxOccurs="1" name="objectId" type="s:string" />
+            <s:element minOccurs="0" maxOccurs="1" name="folderUrl" type="s:string" />
+            <s:element minOccurs="0" maxOccurs="1" name="itemId" type="s:string" />
+            <s:element minOccurs="1" maxOccurs="1" name="retrieveChildItems" type="s:boolean" />
+            <s:element minOccurs="1" maxOccurs="1" name="securityOnly" type="s:boolean" />
+            <s:element minOccurs="0" maxOccurs="1" name="lastItemIdOnPage" type="s:string" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:simpleType name="ObjectType">
+        <s:restriction base="s:string">
+          <s:enumeration value="VirtualServer" />
+          <s:enumeration value="ContentDatabase" />
+          <s:enumeration value="SiteCollection" />
+          <s:enumeration value="Site" />
+          <s:enumeration value="List" />
+          <s:enumeration value="Folder" />
+          <s:enumeration value="ListItem" />
+          <s:enumeration value="ListItemAttachments" />
+        </s:restriction>
+      </s:simpleType>
+      <s:element name="GetContentResponse">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="1" maxOccurs="1" name="GetContentResult" type="s:string" />
+            <s:element minOccurs="0" maxOccurs="1" name="lastItemIdOnPage" type="s:string" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="GetSiteUrl">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="1" maxOccurs="1" name="Url" type="s:string" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="GetSiteUrlResponse">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="1" maxOccurs="1" name="GetSiteUrlResult" type="s:unsignedInt" />
+            <s:element minOccurs="1" maxOccurs="1" name="siteUrl" type="s:string" />
+            <s:element minOccurs="1" maxOccurs="1" name="siteId" type="s:string" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="GetChanges">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="0" maxOccurs="1" name="objectType" type="tns:ObjectType" />
+            <s:element minOccurs="0" maxOccurs="1" name="contentDatabaseId" type="s:string" />
+            <s:element minOccurs="1" maxOccurs="1" name="LastChangeId" type="s:string" />
+            <s:element minOccurs="0" maxOccurs="1" name="CurrentChangeId" type="s:string" />
+            <s:element minOccurs="0" maxOccurs="1" name="Timeout" type="s:int" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="GetChangesResponse">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="1" maxOccurs="1" name="GetChangesResult" type="s:string" />
+            <s:element minOccurs="1" maxOccurs="1" name="LastChangeId" type="s:string" />
+            <s:element minOccurs="1" maxOccurs="1" name="CurrentChangeId" type="s:string" />
+            <s:element minOccurs="1" maxOccurs="1" name="moreChanges" type="s:boolean" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:complexType name="ACL ">
+        <s:sequence>
+          <s:element name="permissions" type="tns:permissionsForACL"/>
+        </s:sequence>
+      </s:complexType>
+      <s:complexType name="ContentDatabaseMetadata">
+        <s:attribute name="ChangeId" type="s:string" use="required"/>
+        <s:attribute name="ID" type="s:string" use="required"/>
+      </s:complexType>
+      <s:complexType name="Field">
+        <s:attribute name="Name" type="s:string" use="required"/>
+        <s:attribute name="Type" type="s:string" use="required"/>
+        <s:attribute name="TypeAsString" type="s:string" use="optional"/>
+        <s:attribute name="Title" type="s:string" use="required"/>
+        <s:attribute name="IsSurveyQuestion" type="tns:TrueFalseType" use="optional"/>
+        <s:attribute name="ID" type="s:string" use="required"/>
+        <s:attribute name="SourceId" type="s:string" use="required"/>
+        <s:attribute name="Indexed" type="s:boolean" use="required"/>
+      </s:complexType>
+      <s:complexType name="GroupDescription">
+        <s:simpleContent>
+          <s:extension base="s:string">
+            <s:attribute name="ID" type="s:int" use="required"/>
+            <s:attribute name="Name" type="s:string" use="required"/>
+            <s:attribute name="Description" type="s:string" use="required"/>
+            <s:attribute name="OwnerID" type="s:int" use="required"/>
+            <s:attribute name="OwnerIsUser" type="tns:TrueFalseType" use="required"/>
+          </s:extension>
+        </s:simpleContent>
+      </s:complexType>
+<s:complexType name='GroupMembership'>
+  <s:sequence>
+    <s:element name='Group' maxOccurs='unbounded'>
+      <s:complexType>
+        <s:sequence>
+          <s:element name='Group' type='tns:GroupDescription'/>
+          <s:element name='Users' type='tns:Users'/>
+        </s:sequence>
+      </s:complexType>
+    </s:element>
+  </s:sequence>
+</s:complexType>
+      <s:complexType name="Groups">
+        <s:sequence>
+          <s:element minOccurs="0" maxOccurs="unbounded" name="Group" 
+           type="tns:GroupDescription"/>
+        </s:sequence>
+      </s:complexType>
+      <s:complexType name="ListMetadata">
+        <s:attribute name="ID" type="s:string" use="required"/>
+        <s:attribute name="Title" type="s:string" use="required"/>
+        <s:attribute name="Description" type="s:string" use="required"/>
+        <s:attribute name="DefaultViewUrl" type="s:string" use="required"/>
+        <s:attribute name="DefaultViewItemUrl" type="s:string" use="required"/>
+        <s:attribute name="DefaultTitle" type="s:string" use="required"/>
+        <s:attribute name="ScopeID" type="s:string"/>
+        <s:attribute name="RootFolder" type="s:string" use="required"/>
+        <s:attribute name="ReadSecurity" type="s:int" use="required"/>
+        <s:attribute name="NoIndex" type="tns:TrueFalseType" use="required"/>
+        <s:attribute name="BaseType" type="tns:ListBaseType" use="required"/>
+        <s:attribute name="BaseTemplate" type="tns:ListBaseTemplate" use="required"/>
+        <s:attribute name="Author" type="s:string" use="required"/>
+        <s:attribute name="AnonymousViewListItems" type="tns:TrueFalseType" use="required"/>
+        <s:attribute name="AnonymousPermMask" type="s:unsignedLong" use="required"/>
+        <s:attribute name="AnonymousPermMaskRaw" type="s:unsignedLong" use="required"/>
+        <s:attribute name="AllowAnonymousAccess" type="tns:TrueFalseType" use="required"/>
+        <s:attribute name="LastModified" type="s:string" use="required"/>
+        <s:attribute name="ItemCount" type="s:int" use="required"/>
+        <s:attribute name="CRC" type="s:int" use="required"/>
+      </s:complexType>
+      <s:complexType name="permission">
+        <s:attribute name="memberid" type="s:int" use="required"/>
+        <s:attribute name="mask" type="s:unsignedLong" use="required"/>
+      </s:complexType>
+      <s:complexType name="SPSiteMetadata">
+        <s:attribute name="SiteSubscriptionId" type="s:string"/>
+        <s:attribute name="URL" type="s:string" use="required"/>
+        <s:attribute name="ID" type="s:string" use="required"/>
+        <s:attribute name="LastModified" type="s:string" use="required"/>
+        <s:attribute name="PortalURL" type="s:string" use="required"/>
+        <s:attribute name="UserProfileGUID" type="s:string" use="required"/>
+        <s:attribute name="RootWebId" type="s:string" use="required"/>
+        <s:attribute name="ChangeId" type="s:string" use="required"/>
+        <s:attribute name="ContentDatabaseId" type="s:string" use="required" />
+      </s:complexType>
+      <s:complexType name="SPWebAppMetadata">
+        <s:attribute name="ID" type="s:string" use="optional"/>
+        <s:attribute name="Version" type="s:string" use="optional"/>
+        <s:attribute name="URL" type="s:string" use="required"/>
+        <s:attribute name="URLZone" type="s:string" use="optional"/>
+        <s:attribute name="URLIsHostHeader" type="tns:TrueFalseType" use="optional"/>
+      </s:complexType>
+      <s:complexType name="Users">
+        <s:sequence>
+          <s:element minOccurs="0" maxOccurs="unbounded" name="User" type="tns:UserDescription"/>
+        </s:sequence>
+      </s:complexType>
+      <s:complexType name="View">
+        <s:attribute name="URL" type="s:string" use="required"/>
+        <s:attribute name="Title" type="s:string" use="required"/>
+        <s:attribute name="ID" type="s:string" use="required"/>
+        <s:attribute name="AllowedInRoot" type="tns:TrueFalseType" use="optional"/>
+      </s:complexType>
+      <s:complexType name="WebMetadata">
+        <s:attribute name="URL" type="s:string" use="required"/>
+        <s:attribute name="LastModified" type="s:string" use="required"/>
+        <s:attribute name="Created" type="s:string" use="required"/>
+        <s:attribute name="ID" type="s:string" use="required"/>
+        <s:attribute name="Title" type="s:string" use="required"/>
+        <s:attribute name="Description" type="s:string" use="required"/>
+        <s:attribute name="LogoURL" type="s:string"/>
+        <s:attribute name="LogoDescription" type="s:string"/>
+        <s:attribute name="Author" type="s:string" use="required"/>
+        <s:attribute name="Language" type="s:unsignedShort" use="required"/>
+        <s:attribute name="CRC" type="s:unsignedInt" use="required"/>
+        <s:attribute name="NoIndex" type="s:string" use="required"/>
+        <s:attribute name="UseFormsForDisplay" type="tns:TrueFalseType" use="optional"/>
+        <s:attribute name="DefaultHomePage" type="s:string" use="required"/>
+        <s:attribute name="DefaultHomePageListId" type="s:string" use="optional"/>
+        <s:attribute name="DefaultHomePageItemId" type="s:integer" use="optional"/>
+        <s:attribute name="ExternalSecurity" type="tns:TrueFalseType" use="required"/>
+        <s:attribute name="ScopeID" type="s:string"/>
+        <s:attribute name="AllowAnonymousAccess" type="tns:TrueFalseType" use="required"/>
+        <s:attribute name="AnonymousViewListItems" type="tns:TrueFalseType" use="required"/>
+        <s:attribute name="AnonymousPermMask" type="s:unsignedLong" use="required"/>
+      </s:complexType>
+      <s:complexType name="Webs">
+        <s:sequence>
+          <s:element minOccurs="0" maxOccurs="unbounded" name="Web">
+            <s:complexType>
+              <s:attribute name="URL" type="s:string" use="required"/>
+              <s:attribute name="ID" type="s:string" use="required"/>
+              <s:attribute name="LastModified" type="s:string" use="required"/>
+            </s:complexType>
+          </s:element>
+        </s:sequence>
+      </s:complexType>
+      <s:element name="SPContentDatabase">
+       <s:complexType>
+        <s:sequence>
+          <s:element name="ContentDatabase">
+            <s:complexType>
+              <s:sequence>
+                <s:element name="Metadata" type="tns:ContentDatabaseMetadata"/>
+              </s:sequence>
+            </s:complexType>
+          </s:element>
+          <s:element ref="tns:SPSite" minOccurs="0" maxOccurs="unbounded"/>
+        </s:sequence>
+        <s:attribute name="ItemCount" type="s:int" use="required"/>
+        <s:attribute name="Change" type="s:string" use="required"/>
+       </s:complexType>
+      </s:element>
+      <s:element name="SPSite">
+       <s:complexType>
+        <s:sequence>
+       <s:element name="Messages" >
+         <s:complexType>
+           <s:sequence>
+             <s:element name="Message" type="tns:Message" minOccurs="0" maxOccurs="unbounded" />
+           </s:sequence>
+         </s:complexType>
+       </s:element>
+          <s:element name="Site" minOccurs="0">
+            <s:complexType>
+              <s:sequence>
+                <s:element name="Metadata" type="tns:SPSiteMetadata"/>
+                <s:element name="Groups" type="tns:GroupMembership"/>
+              </s:sequence>
+            </s:complexType>
+          </s:element>
+          <s:element ref="tns:SPWeb" minOccurs="0" maxOccurs="unbounded"/>
+        </s:sequence>
+        <s:attribute name="ItemCount" type="s:int" use="required"/>
+        <s:attribute name="Change" type="s:string" use="required"/>
+        <s:attribute name="UpdateSecurity" type="tns:TrueFalseType" use="optional"/>
+        <s:attribute name="Id" type="s:string" use="optional"/>
+        <s:attribute name="ParentId" type="s:string" use="optional"/>
+        <s:attribute name="InternalUrl" type="s:string" use="optional"/>
+        <s:attribute name="DisplayUrl" type="s:string" use="optional"/>
+        <s:attribute name="CRC" type="s:int" use="optional"/>
+        <s:attribute name="ServerUrl" type="s:string" use="optional"/>
+        <s:attribute name="SequenceNumber" type="s:string" use="optional"/>
+        <s:attribute name="PresentInFarm" type="tns:TrueFalseType" use="optional"/>
+       </s:complexType>
+      </s:element>
+   <s:complexType name="Message">
+      <s:sequence>
+        <s:element name="Exception" minOccurs="1" maxOccurs="1" type="s:string" >
+        </s:element>
+        <s:element name="ChangeInfo" minOccurs="1" maxOccurs="1">
+         <s:complexType>
+          <s:attribute name="SiteId" type="s:string" use="required" />
+          <s:attribute name="WebId" type="s:string" use="optional" />
+          <s:attribute name="ListId" type="s:string" use="optional" />
+          <s:attribute name="AlertId" type="s:string" use="optional" />
+          <s:attribute name="Id" type="s:string" use="optional" />
+          <s:attribute name="FieldId" type="s:string" use="optional" />
+          <s:attribute name="Url" type="s:string" use="optional" />
+          <s:attribute name="DocId" type="s:string" use="optional" />
+          <s:attribute name="UserId" type="s:string" use="optional" />
+          <s:attribute name="Activate" type="s:boolean" use="optional" />
+          <s:attribute name="IsSiteAdminChange" type="s:boolean" use="optional" />
+         </s:complexType>
+        </s:element>
+      </s:sequence>
+      <s:attribute name="ChangeToken" type="s:string" use="required" />
+      <s:attribute name="ChangeObject" type="tns:ChangeObject" use="required" />
+      <s:attribute name="ChangeType" type="tns:ChangeType" use="required" />
+    </s:complexType>
+    <s:element name="SPView">
+      <s:complexType>
+        <s:attribute name="ItemCount" type="s:int" use="required"/>
+        <s:attribute name="Change" type="s:string" use="required"/>
+        <s:attribute name="Id" type="s:string" use="optional"/>
+        <s:attribute name="ServerUrl" type="s:anyURI" use="optional"/>
+        <s:attribute name="DisplayUrl" type="s:string" use="optional"/>
+        <s:attribute name="ParentId" type="s:string" use="optional"/>
+        <s:attribute name="UpdateSecurity" type="tns:TrueFalseType" use="optional"/>
+        <s:attribute name="InternalUrl" type="tns:InternalUrl" use="optional"/>
+        <s:attribute name="CRC" type="s:int" use="optional"/>
+        <s:attribute name="SequenceNumber" type="s:string" use="optional"/>
+      </s:complexType>
+     </s:element>
+     <s:element name="SPWeb">
+       <s:complexType>
+        <s:sequence>
+          <s:element name="Web">
+            <s:complexType>
+              <s:sequence>
+                <s:element name="Metadata" minOccurs="0" type="tns:WebMetadata"/>
+                <s:element name="Users" minOccurs="0" type="tns:Users"/>
+                <s:element name="ACL" minOccurs="0" type="tns:ACL"/>
+                <s:element name="Webs" minOccurs="0" type="tns:Webs"/>
+                <s:element name="Lists" minOccurs="0" type="tns:Lists"/>
+              </s:sequence>
+            </s:complexType>
+          </s:element>
+          <s:choice maxOccurs="unbounded">
+            <s:element ref="tns:SPFolder"/>
+            <s:element ref="tns:SPList"/>
+            <s:element ref="tns:SPFile"/>
+          </s:choice>
+        </s:sequence>
+        <s:attribute name="ItemCount" type="s:int" use="required"/>
+        <s:attribute name="Change" type="s:string" use="required"/>
+        <s:attribute name="UpdateSecurity" type="tns:TrueFalseType" use="optional"/>
+        <s:attribute name="Id" type="s:string" use="optional"/>
+        <s:attribute name="ParentId" type="s:string" use="optional"/>
+        <s:attribute name="InternalUrl" type="s:string" use="optional"/>
+        <s:attribute name="DisplayUrl" type="s:string" use="optional"/>
+        <s:attribute name="CRC" type="s:int" use="optional"/>
+        <s:attribute name="ServerUrl" type="s:string" use="optional"/>
+        <s:attribute name="SequenceNumber" type="s:string" use="optional"/>
+      </s:complexType>
+    </s:element>
+      <s:element name="ContentDatabase">
+        <s:complexType>
+          <s:sequence>
+            <s:element name="Metadata" type="tns:ContentDatabaseMetadata" minOccurs="1" maxOccurs="1"/>
+            <s:element name="Sites" type="tns:Sites" minOccurs="0" maxOccurs="1"/>
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="FPFolder" type="tns:FolderData"/>
+      <s:element name="Item">
+        <s:complexType>
+          <s:sequence>
+            <s:element maxOccurs="unbounded" name="Attachment">
+              <s:complexType>
+                <s:attribute name="URL" type="s:string" use="required"/>
+              </s:complexType>
+            </s:element>
+          </s:sequence>
+          <s:attribute name="Count" type="s:unsignedInt" use="required"/>
+        </s:complexType>
+      </s:element>
+      <s:element name="List" type="tns:List"/>
+      <s:element name="Site">
+        <s:complexType>
+          <s:sequence>
+            <s:element name="Metadata" type="tns:SPSiteMetadata" minOccurs="1" maxOccurs="1"/>
+            <s:element name="Groups" type="tns:GroupMembership" minOccurs="1" maxOccurs="1"/>
+            <s:element name="Web" type="tns:Web" minOccurs="0" maxOccurs="1"/>
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="VirtualServer">
+        <s:complexType>
+          <s:sequence>
+            <s:element name="Metadata" type="tns:SPWebAppMetadata" minOccurs="1" maxOccurs="1"/>
+            <s:element name="ContentDatabases" type="tns:ContentDatabases" minOccurs="0" maxOccurs="1"/>
+            <s:element name="Policies" type="tns:Policies" minOccurs="0" maxOccurs="1"/>
+            <s:element name="Servers" minOccurs="0>
+              <s:complexType>
+                <s:sequence>
+                  <s:element name="Server" minOccurs="0 minOccurs="unbounded">
+                    <s:complexType>
+                      <s:attribute name="URL" type="s:string"/>
+                    </s:complexType>  
+                  </s:element>
+                </s:sequence>
+              </s:complexType>
+            </s:element>
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="Folder" type="tns:ItemData"/>
+      <s:complexType name="Web">
+          <s:sequence>
+            <s:element name="Metadata" type="tns:WebMetadata" minOccurs="1" maxOccurs="1"/>
+            <s:element name="Users" type="tns:Users" minOccurs="1" maxOccurs="1"/>
+            <s:element name="ACL" type="tns:ACL" minOccurs="1" maxOccurs="1"/>
+            <s:element name="Webs" type="tns:Webs" minOccurs="1" maxOccurs="1"/>
+            <s:element name="Lists" type="tns:Lists" minOccurs="1" maxOccurs="1"/>
+            <s:element name="FPFolder" type="tns:FolderData" minOccurs="0" maxOccurs="1"/>
+          </s:sequence>
+      </s:complexType>
+      <s:complexType name="ContentDatabases">
+        <s:sequence>
+          <s:element maxOccurs="unbounded" name="ContentDatabase">
+            <s:complexType>
+              <s:attribute name="ID" type="s:string" use="required"/>
+            </s:complexType>
+          </s:element>
+        </s:sequence>
+      </s:complexType>
+      <s:complexType name="Files">
+        <s:sequence>
+          <s:element name="File" minOccurs="0" maxOccurs="unbounded">
+            <s:complexType>
+              <s:attribute name="URL" type="s:string" use="required"/>
+              <s:attribute name="ID" type="s:string" use="required"/>
+              <s:attribute name="LastModified" type="s:string" use="required"/>
+            </s:complexType>
+          </s:element>
+        </s:sequence>
+      </s:complexType>
+      <s:complexType name="FolderData">
+        <s:sequence>
+          <s:element name="Folders" type="tns:Folders" minOccurs="0" maxOccurs="unbounded"/>
+          <s:element name="Files" type="tns:Files" minOccurs="0" maxOccurs="unbounded"/>
+        </s:sequence>
+      </s:complexType>
+      <s:complexType name="Folders">
+        <s:sequence>
+          <s:element name="Folder" maxOccurs="unbounded">
+            <s:complexType>
+              <s:attribute name="URL" type="s:string" use="required"/>
+              <s:attribute name="ID" type="s:string" use="required"/>
+              <s:attribute name="LastModified" type="s:string" use="required"/>
+            </s:complexType>
+          </s:element>
+        </s:sequence>
+      </s:complexType>
+      <s:complexType name="ItemData">
+        <s:sequence>
+          <s:element name="Metadata" type="tns:Metadata"/>
+          <s:element name="xml" type="xml"/>
+        </s:sequence>
+      </s:complexType>
+      <s:complexType name="Policies">
+        <s:sequence>
+          <s:element maxOccurs="unbounded" name="PolicyUser" type="tns:PolicyUser"/>
+        </s:sequence>
+        <s:attribute name="AnonymousGrantMask" type="s:unsignedLong" use="required"/>
+        <s:attribute name="AnonymousDenyMask" type="s:unsignedLong" use="required"/>
+      </s:complexType>
+      <s:complexType name="PolicyUser">
+        <s:attribute name="LoginName" type="s:string" use="required"/>
+        <s:attribute name="Sid" type="s:string" use="required"/>
+        <s:attribute name="GrantMask" type="s:unsignedLong" use="required"/>
+        <s:attribute name="DenyMask" type="s:unsignedLong" use="required"/>
+        <s:attribute name="BinaryIdentifier" type="s:string" use="optional" />
+        <s:attribute name="BinaryIdentifierType" type="s:string" use="optional" />
+      </s:complexType>
+      <s:complexType name="Sites">
+        <s:sequence>
+          <s:element maxOccurs="unbounded" name="Site">
+            <s:complexType>
+              <s:attribute name="URL" type="s:string" use="required"/>
+              <s:attribute name="ID" type="s:string" use="required"/>
+            </s:complexType>
+          </s:element>
+        </s:sequence>
+      </s:complexType>
+      <s:element name="GetChangesEx">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="1" maxOccurs="1" name="version" type="s:int"/>
+            <s:element minOccurs="1" maxOccurs="1" name="xmlInput" type="s:string"/>
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="GetChangesExRequest">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="1" maxOccurs="1" name="ObjectType" type="tns:ObjectType"/>
+            <s:element minOccurs="1" maxOccurs="1" name="ContentDatabaseId" type="s:string"/>
+            <s:element minOccurs="1" maxOccurs="1" name="StartChangeId" type="s:string"/>
+            <s:element minOccurs="0" maxOccurs="1" name="EndChangeId" type="s:string"/>
+      <s:element minOccurs="0" maxOccurs="1" name="IgnoreSecurityIfInherit" type="s:boolean" />
+      <s:element minOccurs="0" maxOccurs="1" name="GetMetadata" type="s:boolean" />
+      <s:element minOccurs="0" maxOccurs="1" name="RequestLoad" type="s:int" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="GetChangesExResponse">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="1" maxOccurs="1" name="GetChangesExResult" 
+             type="s:string" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:complexType name="Permissions">
+        <s:sequence>
+          <s:element name="Permission" type="tns:ListPermission" maxOccurs="unbounded"/>
+        </s:sequence>
+      </s:complexType>
+      <s:complexType name="ListPermission">
+        <s:attribute name="MemberID" type="s:int" use="required"/>
+        <s:attribute name="Mask" type="s:unsignedLong" use="required"/>
+        <s:attribute name="MemberIsUser" type="tns:TrueFalseType" use="required"/>
+        <s:attribute name="MemberGlobal" type="tns:TrueFalseType" use="required"/>
+        <s:attribute name="UserLogin" type="s:string"/>
+        <s:attribute name="GroupName" type="s:string"/>
+      </s:complexType>
+      <s:element name="Groups" type="tns:Groups"/>
+      <s:element name="Users" type="tns:Users"/>
+      <s:element name="Permissions">
+        <s:complexType>
+          <s:sequence>
+            <s:element maxOccurs="unbounded" name="Permission">
+              <s:complexType>
+                <s:attribute name="MemberID" type="s:int" use="required"/>
+                <s:attribute name="Mask" type="s:int" use="required"/>
+                <s:attribute name="MemberIsUser" type="tns:TrueFalseType" use="required"/>
+                <s:attribute name="MemberGlobal" type="tns:TrueFalseType" use="required"/>
+                <s:attribute name="RoleName" type="s:string" use="required"/>
+              </s:complexType>
+            </s:element>
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="Roles">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="0" maxOccurs="unbounded" name="Role">
+              <s:complexType>
+                <s:attribute name="ID" type="s:unsignedInt" use="required"/>
+                <s:attribute name="Name" type="s:string" use="required"/>
+                <s:attribute name="Description" type="s:string" use="required"/>
+                <s:attribute name="Order" type="s:unsignedInt" use="required"/>
+                <s:attribute name="Hidden" type="tns:TrueFalseType" use="required"/>
+                <s:attribute name="Type" type="s:string" use="required"/>
+                <s:attribute name="BasePermissions" type="s:string" use="required"/>
+              </s:complexType>
+            </s:element>
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:simpleType name="TrueFalseType">
+        <s:restriction base="s:string">
+        <s:enumeration value="True"/>
+        <s:enumeration value="False"/>
+        </s:restriction>
+      </s:simpleType>
+<s:simpleType name="ChangeType"  >
+        <s:restriction base="s:string">
+          <s:enumeration value="NoChange"/>
+          <s:enumeration value="Add"/>
+          <s:enumeration value="Update"/>
+          <s:enumeration value="Delete"/>
+          <s:enumeration value="Rename"/>
+          <s:enumeration value="MoveAway"/>
+          <s:enumeration value="MoveInto"/>
+          <s:enumeration value="Restore"/>
+          <s:enumeration value="RoleAdd"/>
+          <s:enumeration value="RoleDelete"/>
+          <s:enumeration value="RoleUpdate"/>
+          <s:enumeration value="AssignmentAdd"/>
+          <s:enumeration value="AssignmentDelete"/>
+          <s:enumeration value="MemberAdd"/>
+          <s:enumeration value="MemberDelete"/>
+          <s:enumeration value="SystemUpdate"/>
+          <s:enumeration value="Navigation"/>
+        </s:restriction>
+      </s:simpleType>
+
+      <s:simpleType name="ChangeObject"  >
+        <s:restriction base="s:string">
+          <s:enumeration value="Microsoft.SharePoint.SPChangeItem"/>
+          <s:enumeration value="Microsoft.SharePoint.SPChangeSite"/>
+          <s:enumeration value="Microsoft.SharePoint.SPChangeWeb"/>
+          <s:enumeration value="Microsoft.SharePoint.SPChangeList"/>
+          <s:enumeration value="Microsoft.SharePoint.SPChangeFile"/>
+          <s:enumeration value="Microsoft.SharePoint.SPChangeFolder"/>
+          <s:enumeration value="Microsoft.SharePoint.SPChangeAlert"/>
+          <s:enumeration value="Microsoft.SharePoint.SPChangeUser"/>
+          <s:enumeration value="Microsoft.SharePoint.SPChangeGroup"/>
+          <s:enumeration value="Microsoft.SharePoint.SPChangeContentType"/>
+          <s:enumeration value="Microsoft.SharePoint.SPChangeField"/>
+          <s:enumeration value="Microsoft.SharePoint.SPChangeSecurityPolicy"/>
+          <s:enumeration value="Microsoft.SharePoint.SPChangeView"/>
+        </s:restriction>
+      </s:simpleType>
+
+      <s:complexType name="Metadata">
+        <s:sequence>
+          <s:element name="scope">
+            <s:complexType>
+              <s:sequence>
+                <s:element name="permissions" type="tns:permissionsForACL" />
+              </s:sequence>
+              <s:attribute name="id" type="s:string" use="required" />
+            </s:complexType>
+          </s:element>
+        </s:sequence>
+      </s:complexType>
+
+      <s:complexType name='permissionsForACL'>
+        <s:sequence >
+          <s:element name='permission' type='tns:permission' maxOccurs='unbounded' />
+        </s:sequence>
+      </s:complexType>
+
+      <s:complexType name='UserDescription'>
+        <s:attribute name='Sid' type='s:string' use='required'/>
+        <s:attribute name='Name' type='s:string' use='required' />
+        <s:attribute name='LoginName' type='s:string' use='required' />
+        <s:attribute name='IsDomainGroup' type= 'tns:TrueFalseType' 
+         use='required'/>
+        <s:attribute name='Email' type='s:string' use='optional'/>
+        <s:attribute name='Notes' type='s:string' use='required' />
+        <s:attribute name='ID' type='s:int' use='required' />
+        <s:attribute name='IsSiteAdmin' type= 'tns:TrueFalseType' use='required'/>
+      </s:complexType>
+
+      <s:complexType name="Lists">
+        <s:sequence>
+          <s:element maxOccurs="unbounded" name="List" >
+            <s:complexType>
+              <s:attribute name="ID" type="s:string" use="required" />
+              <s:attribute name="LastModified" type="s:string" use="required" />
+              <s:attribute name="DefaultViewUrl" type="s:string" use="required" />
+            </s:complexType>
+          </s:element>
+        </s:sequence>
+      </s:complexType>
+
+      <s:element name='SPFile'>
+        <s:complexType>
+          <s:attribute name='ItemCount' type='s:int' use='required'/>
+          <s:attribute name='Change' type='s:string' use='required'/>
+          <s:attribute name="UpdateSecurity" type="tns:TrueFalseType" />
+          <s:attribute name="Id" type="s:string" />
+          <s:attribute name="ParentId" type="s:string" />
+          <s:attribute name="InternalUrl" type="s:string" />
+          <s:attribute name="DisplayUrl" type="s:string" />
+          <s:attribute name="Url" type="s:string" />
+          <s:attribute name="CRC" type="s:int" />
+          <s:attribute name="ServerUrl" type="s:string" />
+          <s:attribute name="SequenceNumber" type="s:string"/>
+        </s:complexType>
+      </s:element>
+
+      <s:element name='SPFolder'>
+        <s:complexType>
+          <s:attribute name='ItemCount' type='s:int' use='required'/>
+          <s:attribute name='Change' type='s:string' use='required'/>
+          <s:attribute name="UpdateSecurity" type="tns:TrueFalseType" />
+          <s:attribute name="Id" type="s:string" />
+          <s:attribute name="ParentId" type="s:string" />
+          <s:attribute name="InternalUrl" type="s:string" />
+          <s:attribute name="DisplayUrl" type="s:string" />
+          <s:attribute name="Url" type="s:string" />
+          <s:attribute name="CRC" type="s:int" />
+          <s:attribute name="ServerUrl" type="s:string" />
+          <s:attribute name="SequenceNumber" type="s:string"/>
+        </s:complexType>
+      </s:element>
+
+      <s:element name='SPList'>
+        <s:complexType>
+          <s:sequence >
+            <s:element ref='tns:List' minOccurs='0' />
+            <s:choice minOccurs='0' maxOccurs='unbounded'>
+              <s:element ref='tns:SPView' minOccurs='0' maxOccurs='unbounded'/>
+              <s:element ref='tns:SPListItem' minOccurs='0' maxOccurs='unbounded'/>
+            </s:choice>
+          </s:sequence>
+          <s:attribute name='ItemCount' type='s:int' use='required'/>
+          <s:attribute name='Change' type='s:string' use='required'/>
+          <s:attribute name="UpdateSecurity" type="tns:TrueFalseType" />
+          <s:attribute name="Id" type="s:string" />
+          <s:attribute name="ParentId" type="s:string" />
+          <s:attribute name="InternalUrl" type="s:string" />
+          <s:attribute name="DisplayUrl" type="s:string" />
+          <s:attribute name="CRC" type="s:int" />
+          <s:attribute name="ServerUrl" type="s:string" />
+          <s:attribute name="SequenceNumber" type="s:string" use="optional"/>
+        </s:complexType>
+      </s:element>
+
+      <s:complexType name="List">
+        <s:sequence>
+          <s:element name="Metadata" type="tns:ListMetadata"/>
+          <s:element name="ACL" type="tns:ACL" >
+
+          </s:element>
+          <s:element name="Views" type="tns:Views"/>
+          <s:element name="Schema" type="tns:Schema"/>
+        </s:sequence>
+      </s:complexType>
+
+      <s:complexType name='Views'>
+        <s:sequence >
+          <s:element name='View' type='tns:View' maxOccurs='unbounded'/>
+        </s:sequence>
+      </s:complexType>
+
+      <s:complexType name='Schema'>
+        <s:sequence >
+          <s:element name='Field' type='tns:Field' maxOccurs='unbounded' />
+        </s:sequence>
+      </s:complexType>
+
+      <s:element name='SPListItem'>
+        <s:complexType>
+          <s:sequence>
+            <s:element name='ListItem' >
+              <s:complexType >
+                <s:sequence >
+                  <s:element name='row' type='s:string' />
+                  <s:element name='permissions' type='tns:permissionsForACL' />
+                </s:sequence>
+              </s:complexType>
+            </s:element>
+          </s:sequence>
+          <s:attribute name="Change" type="s:string" use="required"/>
+          <s:attribute name="ItemCount" type="s:int" use="required" />
+          <s:attribute name="UpdateSecurity" type="tns:TrueFalseType" 
+           use="optional" />
+          <s:attribute name="ServerUrl" type="s:anyURI" use="optional" />
+          <s:attribute name="ParentId" type="s:string" use="optional" />
+          <s:attribute name="InternalUrl" type="s:string" use="optional"/>
+          <s:attribute name="Id" type="s:string" use="optional" />
+          <s:attribute name="DisplayUrl" type="s:string" use="optional" />
+          <s:attribute name="CRC" type="s:unsignedInt" use="optional"/>
+          <s:attribute name="Url" type="s:int" use="optional" />
+          <s:attribute name="SequenceNumber" type="s:string" use="optional"/>
+        </s:complexType>
+      </s:element>
+    </s:schema>
+  </wsdl:types>
+  <wsdl:message name="GetSiteAndWebSoapIn">
+    <wsdl:part name="parameters" element="tns:GetSiteAndWeb" />
+  </wsdl:message>
+  <wsdl:message name="GetSiteAndWebSoapOut">
+    <wsdl:part name="parameters" element="tns:GetSiteAndWebResponse" />
+  </wsdl:message>
+  <wsdl:message name="GetSiteSoapIn">
+    <wsdl:part name="parameters" element="tns:GetSite" />
+  </wsdl:message>
+  <wsdl:message name="GetSiteSoapOut">
+    <wsdl:part name="parameters" element="tns:GetSiteResponse" />
+  </wsdl:message>
+  <wsdl:message name="GetWebSoapIn">
+    <wsdl:part name="parameters" element="tns:GetWeb" />
+  </wsdl:message>
+  <wsdl:message name="GetWebSoapOut">
+    <wsdl:part name="parameters" element="tns:GetWebResponse" />
+  </wsdl:message>
+  <wsdl:message name="GetListSoapIn">
+    <wsdl:part name="parameters" element="tns:GetList" />
+  </wsdl:message>
+  <wsdl:message name="GetListSoapOut">
+    <wsdl:part name="parameters" element="tns:GetListResponse" />
+  </wsdl:message>
+  <wsdl:message name="GetListItemsSoapIn">
+    <wsdl:part name="parameters" element="tns:GetListItems" />
+  </wsdl:message>
+  <wsdl:message name="GetListItemsSoapOut">
+    <wsdl:part name="parameters" element="tns:GetListItemsResponse" />
+  </wsdl:message>
+  <wsdl:message name="EnumerateFolderSoapIn">
+    <wsdl:part name="parameters" element="tns:EnumerateFolder" />
+  </wsdl:message>
+  <wsdl:message name="EnumerateFolderSoapOut">
+    <wsdl:part name="parameters" element="tns:EnumerateFolderResponse" />
+  </wsdl:message>
+  <wsdl:message name="GetAttachmentsSoapIn">
+    <wsdl:part name="parameters" element="tns:GetAttachments" />
+  </wsdl:message>
+  <wsdl:message name="GetAttachmentsSoapOut">
+    <wsdl:part name="parameters" element="tns:GetAttachmentsResponse" />
+  </wsdl:message>
+  <wsdl:message name="GetURLSegmentsSoapIn">
+    <wsdl:part name="parameters" element="tns:GetURLSegments" />
+  </wsdl:message>
+  <wsdl:message name="GetURLSegmentsSoapOut">
+    <wsdl:part name="parameters" element="tns:GetURLSegmentsResponse" />
+  </wsdl:message>
+  <wsdl:message name="GetListCollectionSoapIn">
+    <wsdl:part name="parameters" element="tns:GetListCollection" />
+  </wsdl:message>
+  <wsdl:message name="GetListCollectionSoapOut">
+    <wsdl:part name="parameters" element="tns:GetListCollectionResponse" />
+  </wsdl:message>
+  <wsdl:message name="GetContentSoapIn">
+    <wsdl:part name="parameters" element="tns:GetContent" />
+  </wsdl:message>
+  <wsdl:message name="GetContentSoapOut">
+    <wsdl:part name="parameters" element="tns:GetContentResponse" />
+  </wsdl:message>
+  <wsdl:message name="GetSiteUrlSoapIn">
+    <wsdl:part name="parameters" element="tns:GetSiteUrl" />
+  </wsdl:message>
+  <wsdl:message name="GetSiteUrlSoapOut">
+    <wsdl:part name="parameters" element="tns:GetSiteUrlResponse" />
+  </wsdl:message>
+  <wsdl:message name="GetChangesSoapIn">
+    <wsdl:part name="parameters" element="tns:GetChanges" />
+  </wsdl:message>
+  <wsdl:message name="GetChangesSoapOut">
+    <wsdl:part name="parameters" element="tns:GetChangesResponse" />
+  </wsdl:message>
+  <wsdl:message name="GetChangesExSoapIn">
+    <wsdl:part name="parameters" element="tns:GetChangesEx" />
+  </wsdl:message>
+  <wsdl:message name="GetChangesExSoapOut">
+    <wsdl:part name="parameters" element="tns:GetChangesExResponse" />
+  </wsdl:message>
+  <wsdl:portType name="SiteDataSoap">
+    <wsdl:operation name="GetSiteAndWeb">
+      <wsdl:input message="tns:GetSiteAndWebSoapIn" />
+      <wsdl:output message="tns:GetSiteAndWebSoapOut" />
+    </wsdl:operation>
+    <wsdl:operation name="GetSite">
+      <wsdl:input message="tns:GetSiteSoapIn" />
+      <wsdl:output message="tns:GetSiteSoapOut" />
+    </wsdl:operation>
+    <wsdl:operation name="GetWeb">
+      <wsdl:input message="tns:GetWebSoapIn" />
+      <wsdl:output message="tns:GetWebSoapOut" />
+    </wsdl:operation>
+    <wsdl:operation name="GetList">
+      <wsdl:input message="tns:GetListSoapIn" />
+      <wsdl:output message="tns:GetListSoapOut" />
+    </wsdl:operation>
+    <wsdl:operation name="GetListItems">
+      <wsdl:input message="tns:GetListItemsSoapIn" />
+      <wsdl:output message="tns:GetListItemsSoapOut" />
+    </wsdl:operation>
+    <wsdl:operation name="EnumerateFolder">
+      <wsdl:input message="tns:EnumerateFolderSoapIn" />
+      <wsdl:output message="tns:EnumerateFolderSoapOut" />
+    </wsdl:operation>
+    <wsdl:operation name="GetAttachments">
+      <wsdl:input message="tns:GetAttachmentsSoapIn" />
+      <wsdl:output message="tns:GetAttachmentsSoapOut" />
+    </wsdl:operation>
+    <wsdl:operation name="GetURLSegments">
+      <wsdl:input message="tns:GetURLSegmentsSoapIn" />
+      <wsdl:output message="tns:GetURLSegmentsSoapOut" />
+    </wsdl:operation>
+    <wsdl:operation name="GetListCollection">
+      <wsdl:input message="tns:GetListCollectionSoapIn" />
+      <wsdl:output message="tns:GetListCollectionSoapOut" />
+    </wsdl:operation>
+    <wsdl:operation name="GetContent">
+      <wsdl:input message="tns:GetContentSoapIn" />
+      <wsdl:output message="tns:GetContentSoapOut" />
+    </wsdl:operation>
+    <wsdl:operation name="GetSiteUrl">
+      <wsdl:input message="tns:GetSiteUrlSoapIn" />
+      <wsdl:output message="tns:GetSiteUrlSoapOut" />
+    </wsdl:operation>
+    <wsdl:operation name="GetChanges">
+      <wsdl:input message="tns:GetChangesSoapIn" />
+      <wsdl:output message="tns:GetChangesSoapOut" />
+    </wsdl:operation>
+      <wsdl:operation name="GetChangesEx">
+        <wsdl:input message="tns:GetChangesExSoapIn" />
+        <wsdl:output message="tns:GetChangesExSoapOut" />
+      </wsdl:operation>
+  </wsdl:portType>
+  <wsdl:binding name="SiteDataSoap" type="tns:SiteDataSoap">
+    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
+    <wsdl:operation name="GetSiteAndWeb">
+      <soap:operation soapAction="http://schemas.microsoft.com/sharepoint/soap/GetSiteAndWeb" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetSite">
+      <soap:operation soapAction="http://schemas.microsoft.com/sharepoint/soap/GetSite" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetWeb">
+      <soap:operation soapAction="http://schemas.microsoft.com/sharepoint/soap/GetWeb" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetList">
+      <soap:operation soapAction="http://schemas.microsoft.com/sharepoint/soap/GetList" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetListItems">
+      <soap:operation soapAction="http://schemas.microsoft.com/sharepoint/soap/GetListItems" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="EnumerateFolder">
+      <soap:operation soapAction="http://schemas.microsoft.com/sharepoint/soap/EnumerateFolder" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetAttachments">
+      <soap:operation soapAction="http://schemas.microsoft.com/sharepoint/soap/GetAttachments" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetURLSegments">
+      <soap:operation soapAction="http://schemas.microsoft.com/sharepoint/soap/GetURLSegments" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetListCollection">
+      <soap:operation soapAction="http://schemas.microsoft.com/sharepoint/soap/GetListCollection" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetContent">
+      <soap:operation soapAction="http://schemas.microsoft.com/sharepoint/soap/GetContent" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetSiteUrl">
+      <soap:operation soapAction="http://schemas.microsoft.com/sharepoint/soap/GetSiteUrl" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetChanges">
+      <soap:operation soapAction="http://schemas.microsoft.com/sharepoint/soap/GetChanges" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetChangesEx">
+      <soap:operation soapAction="http://schemas.microsoft.com/sharepoint/soap/GetChangesEx" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+  </wsdl:binding>
+  <wsdl:binding name="SiteDataSoap12" type="tns:SiteDataSoap">
+    <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" />
+    <wsdl:operation name="GetSiteAndWeb">
+      <soap12:operation soapAction="http://schemas.microsoft.com/sharepoint/soap/GetSiteAndWeb" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetSite">
+      <soap12:operation soapAction="http://schemas.microsoft.com/sharepoint/soap/GetSite" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetWeb">
+      <soap12:operation soapAction="http://schemas.microsoft.com/sharepoint/soap/GetWeb" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetList">
+      <soap12:operation soapAction="http://schemas.microsoft.com/sharepoint/soap/GetList" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetListItems">
+      <soap12:operation soapAction="http://schemas.microsoft.com/sharepoint/soap/GetListItems" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="EnumerateFolder">
+      <soap12:operation soapAction="http://schemas.microsoft.com/sharepoint/soap/EnumerateFolder" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetAttachments">
+      <soap12:operation soapAction="http://schemas.microsoft.com/sharepoint/soap/GetAttachments" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetURLSegments">
+      <soap12:operation soapAction="http://schemas.microsoft.com/sharepoint/soap/GetURLSegments" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetListCollection">
+      <soap12:operation soapAction="http://schemas.microsoft.com/sharepoint/soap/GetListCollection" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetContent">
+      <soap12:operation soapAction="http://schemas.microsoft.com/sharepoint/soap/GetContent" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetSiteUrl">
+      <soap12:operation soapAction="http://schemas.microsoft.com/sharepoint/soap/GetSiteUrl" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetChanges">
+      <soap12:operation soapAction="http://schemas.microsoft.com/sharepoint/soap/GetChanges" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetChangesEx">
+      <soap12:operation soapAction="http://schemas.microsoft.com/sharepoint/soap/GetChangesEx" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+  </wsdl:binding >
+</wsdl:definitions>
diff --git a/SiteData.wsdl b/SiteData.wsdl
new file mode 100644
index 0000000..f571cd8
--- /dev/null
+++ b/SiteData.wsdl
@@ -0,0 +1,1442 @@
+<?xml version="1.0" encoding="utf-8"?>
+<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://schemas.microsoft.com/sharepoint/soap/"
+xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" targetNamespace="http://schemas.microsoft.com/sharepoint/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+  <wsdl:types>
+    <s:schema elementFormDefault="qualified" targetNamespace="http://schemas.microsoft.com/sharepoint/soap/">
+      <s:element name="GetSiteAndWeb">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="1" maxOccurs="1" name="strUrl" type="s:string" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="GetSiteAndWebResponse">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="1" maxOccurs="1" name="GetSiteAndWebResult" type="s:unsignedInt" />
+            <s:element minOccurs="1" maxOccurs="1" name="strSite" type="s:string" />
+            <s:element minOccurs="1" maxOccurs="1" name="strWeb" type="s:string" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="GetSite">
+        <s:complexType />
+      </s:element>
+      <s:element name="GetSiteResponse">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="1" maxOccurs="1" name="GetSiteResult" type="s:unsignedInt" />
+            <s:element minOccurs="1" maxOccurs="1" name="sSiteMetadata" type="tns:_sSiteMetadata" />
+            <s:element minOccurs="0" maxOccurs="1" name="vWebs" type="tns:ArrayOf_sWebWithTime" />
+            <s:element minOccurs="0" maxOccurs="1" name="strUsers" type="s:string" />
+            <s:element minOccurs="1" maxOccurs="1" name="strGroups" type="s:string" />
+            <s:element minOccurs="1" maxOccurs="1" name="vGroups" type="tns:ArrayOfString" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:complexType name="_sSiteMetadata">
+        <s:sequence>
+          <s:element minOccurs="1" maxOccurs="1" name="LastModified" type="s:dateTime" />
+          <s:element minOccurs="1" maxOccurs="1" name="LastModifiedForceRecrawl" type="s:dateTime" />
+          <s:element minOccurs="1" maxOccurs="1" name="SmallSite" type="s:boolean" />
+          <s:element minOccurs="1" maxOccurs="1" name="PortalUrl" type="s:string" />
+          <s:element minOccurs="0" maxOccurs="1" name="UserProfileGUID" type="s:string" />
+          <s:element minOccurs="1" maxOccurs="1" name="ValidSecurityInfo" type="s:boolean" />
+        </s:sequence>
+      </s:complexType>
+      <s:complexType name="ArrayOf_sWebWithTime">
+        <s:sequence>
+          <s:element minOccurs="0" maxOccurs="unbounded" name="_sWebWithTime" type="tns:_sWebWithTime" />
+        </s:sequence>
+      </s:complexType>
+      <s:complexType name="_sWebWithTime">
+        <s:sequence>
+          <s:element minOccurs="1" maxOccurs="1" name="Url" type="s:string" />
+          <s:element minOccurs="1" maxOccurs="1" name="LastModified" type="s:dateTime" />
+        </s:sequence>
+      </s:complexType>
+      <s:complexType name="ArrayOfString">
+        <s:sequence>
+          <s:element minOccurs="0" maxOccurs="unbounded" name="string" nillable="true" type="s:string" />
+        </s:sequence>
+      </s:complexType>
+      <s:element name="GetWeb">
+        <s:complexType />
+      </s:element>
+      <s:element name="GetWebResponse">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="1" maxOccurs="1" name="GetWebResult" type="s:unsignedInt" />
+            <s:element minOccurs="1" maxOccurs="1" name="sWebMetadata" type="tns:_sWebMetadata" />
+            <s:element minOccurs="1" maxOccurs="1" name="vWebs" type="tns:ArrayOf_sWebWithTime" />
+            <s:element minOccurs="1" maxOccurs="1" name="vLists" type="tns:ArrayOf_sListWithTime" />
+            <s:element minOccurs="0" maxOccurs="1" name="vFPUrls" type="tns:ArrayOf_sFPUrl" />
+            <s:element minOccurs="0" maxOccurs="1" name="strRoles" type="s:string" />
+            <s:element minOccurs="0" maxOccurs="1" name="vRolesUsers" type="tns:ArrayOfString" />
+            <s:element minOccurs="0" maxOccurs="1" name="vRolesGroups" type="tns:ArrayOfString" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:complexType name="_sWebMetadata">
+        <s:sequence>
+          <s:element minOccurs="1" maxOccurs="1" name="WebID" type="s:string" />
+          <s:element minOccurs="1" maxOccurs="1" name="Title" type="s:string" />
+          <s:element minOccurs="1" maxOccurs="1" name="Description" type="s:string" />
+          <s:element minOccurs="1" maxOccurs="1" name="Author" type="s:string" />
+          <s:element minOccurs="1" maxOccurs="1" name="Language" type="s:unsignedInt" />
+          <s:element minOccurs="1" maxOccurs="1" name="LastModified" type="s:dateTime" />
+          <s:element minOccurs="1" maxOccurs="1" name="LastModifiedForceRecrawl" type="s:dateTime" />
+          <s:element minOccurs="0" maxOccurs="1" name="NoIndex" type="s:string" />
+          <s:element minOccurs="1" maxOccurs="1" name="ValidSecurityInfo" type="s:boolean" />
+          <s:element minOccurs="1" maxOccurs="1" name="InheritedSecurity" type="s:boolean" />
+          <s:element minOccurs="1" maxOccurs="1" name="AllowAnonymousAccess" type="s:boolean" />
+          <s:element minOccurs="1" maxOccurs="1" name="AnonymousViewListItems" type="s:boolean" />
+          <s:element minOccurs="1" maxOccurs="1" name="Permissions" type="s:string" />
+          <s:element minOccurs="1" maxOccurs="1" name="ExternalSecurity" type="s:boolean" />
+          <s:element minOccurs="0" maxOccurs="1" name="CategoryId" type="s:string" />
+          <s:element minOccurs="0" maxOccurs="1" name="CategoryName" type="s:string" />
+          <s:element minOccurs="0" maxOccurs="1" name="CategoryIdPath" type="s:string" />
+          <s:element minOccurs="1" maxOccurs="1" name="IsBucketWeb" type="s:boolean" />
+          <s:element minOccurs="1" maxOccurs="1" name="UsedInAutocat" type="s:boolean" />
+          <s:element minOccurs="0" maxOccurs="1" name="CategoryBucketID" type="s:string" />
+        </s:sequence>
+      </s:complexType>
+      <s:complexType name="ArrayOf_sListWithTime">
+        <s:sequence>
+          <s:element minOccurs="0" maxOccurs="unbounded" name="_sListWithTime" type="tns:_sListWithTime" />
+        </s:sequence>
+      </s:complexType>
+      <s:complexType name="_sListWithTime">
+        <s:sequence>
+          <s:element minOccurs="1" maxOccurs="1" name="InternalName" type="s:string" />
+          <s:element minOccurs="1" maxOccurs="1" name="LastModified" type="s:dateTime" />
+          <s:element minOccurs="1" maxOccurs="1" name="IsEmpty" type="s:boolean" />
+        </s:sequence>
+      </s:complexType>
+      <s:complexType name="ArrayOf_sFPUrl">
+        <s:sequence>
+          <s:element minOccurs="0" maxOccurs="unbounded" name="_sFPUrl" type="tns:_sFPUrl" />
+        </s:sequence>
+      </s:complexType>
+      <s:complexType name="_sFPUrl">
+        <s:sequence>
+          <s:element minOccurs="1" maxOccurs="1" name="Url" type="s:string" />
+          <s:element minOccurs="1" maxOccurs="1" name="LastModified" type="s:dateTime" />
+          <s:element minOccurs="1" maxOccurs="1" name="IsFolder" type="s:boolean" />
+        </s:sequence>
+      </s:complexType>
+      <s:element name="GetList">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="1" maxOccurs="1" name="strListName" type="s:string" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="GetListResponse">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="1" maxOccurs="1" name="GetListResult" type="s:unsignedInt" />
+            <s:element minOccurs="1" maxOccurs="1" name="sListMetadata" type="tns:_sListMetadata" />
+            <s:element minOccurs="1" maxOccurs="1" name="vProperties" type="tns:ArrayOf_sProperty" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:complexType name="_sListMetadata">
+        <s:sequence>
+          <s:element minOccurs="1" maxOccurs="1" name="Title" type="s:string" />
+          <s:element minOccurs="1" maxOccurs="1" name="Description" type="s:string" />
+          <s:element minOccurs="1" maxOccurs="1" name="BaseType" type="tns:ListBaseType" />
+          <s:element minOccurs="1" maxOccurs="1" name="BaseTemplate" type="tns:ListBaseTemplate" />
+          <s:element minOccurs="1" maxOccurs="1" name="DefaultViewUrl" type="s:string" />
+          <s:element minOccurs="1" maxOccurs="1" name="LastModified" type="s:dateTime" />
+          <s:element minOccurs="1" maxOccurs="1" name="LastModifiedForceRecrawl" type="s:dateTime" />
+          <s:element minOccurs="1" maxOccurs="1" name="Author" type="s:string" />
+          <s:element minOccurs="1" maxOccurs="1" name="ValidSecurityInfo" type="s:boolean" />
+          <s:element minOccurs="1" maxOccurs="1" name="InheritedSecurity" type="s:boolean" />
+          <s:element minOccurs="1" maxOccurs="1" name="AllowAnonymousAccess" type="s:boolean" />
+          <s:element minOccurs="1" maxOccurs="1" name="AnonymousViewListItems" type="s:boolean" />
+          <s:element minOccurs="1" maxOccurs="1" name="ReadSecurity" type="s:int" />
+          <s:element minOccurs="0" maxOccurs="1" name="Permissions" type="s:string" />
+        </s:sequence>
+      </s:complexType>
+      <s:simpleType name="ListBaseType">
+        <s:restriction base="s:string">
+          <s:enumeration value="UnspecifiedBaseType"/>
+          <s:enumeration value="GenericList"/>
+          <s:enumeration value="DocumentLibrary"/>
+          <s:enumeration value="Unused"/>
+          <s:enumeration value="DiscussionBoard"/>
+          <s:enumeration value="Survey"/>
+          <s:enumeration value="Issue"/>
+        </s:restriction>
+      </s:simpleType>
+      <s:simpleType name="ListBaseTemplate" >
+        <s:restriction base="s:string">
+        <s:enumeration value="InvalidType"/>
+        <s:enumeration value="GenericList"/>
+        <s:enumeration value="DocumentLibrary"/>
+        <s:enumeration value="Survey"/>
+        <s:enumeration value="Links"/>
+        <s:enumeration value="Announcements"/>
+        <s:enumeration value="Contacts"/>
+        <s:enumeration value="Events"/>
+        <s:enumeration value="Tasks"/>
+        <s:enumeration value="DiscussionBoard"/>
+        <s:enumeration value="PictureLibrary"/>
+        <s:enumeration value="DataSources"/>
+        <s:enumeration value="WebTemplateCatalog"/>
+        <s:enumeration value="UserInformation"/>
+        <s:enumeration value="WebPartCatalog"/>
+        <s:enumeration value="ListTemplateCatalog"/>
+        <s:enumeration value="XMLForm"/>
+        <s:enumeration value="MasterPageCatalog"/>
+        <s:enumeration value="NoCodeWorkflows"/>
+        <s:enumeration value="WorkflowProcess"/>
+        <s:enumeration value="WebPageLibrary"/>
+        <s:enumeration value="CustomGrid"/>
+        <s:enumeration value="DataConnectionLibrary"/>
+        <s:enumeration value="WorkflowHistory"/>
+        <s:enumeration value="GanttTasks"/>
+        <s:enumeration value="Meetings"/>
+        <s:enumeration value="Agenda"/>
+        <s:enumeration value="MeetingUser"/>
+        <s:enumeration value="Decision"/>
+        <s:enumeration value="MeetingObjective"/>
+        <s:enumeration value="TextBox"/>
+        <s:enumeration value="ThingsToBring"/>
+        <s:enumeration value="HomePageLibrary"/>
+        <s:enumeration value="Posts"/>
+        <s:enumeration value="Comments"/>
+        <s:enumeration value="Categories"/>
+        <s:enumeration value="IssueTracking"/>
+        <s:enumeration value="AdminTasks"/>
+        </s:restriction>
+      </s:simpleType>
+      <s:complexType name="ArrayOf_sProperty">
+        <s:sequence>
+          <s:element minOccurs="0" maxOccurs="unbounded" name="_sProperty" type="tns:_sProperty" />
+        </s:sequence>
+      </s:complexType>
+      <s:complexType name="_sProperty">
+        <s:sequence>
+          <s:element minOccurs="1" maxOccurs="1" name="Name" type="s:string" />
+          <s:element minOccurs="1" maxOccurs="1" name="Title" type="s:string" />
+          <s:element minOccurs="1" maxOccurs="1" name="Type" type="s:string" />
+        </s:sequence>
+      </s:complexType>
+      <s:element name="GetListItems">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="0" maxOccurs="1" name="strListName" type="s:string" />
+            <s:element minOccurs="0" maxOccurs="1" name="strQuery" type="s:string" />
+            <s:element minOccurs="0" maxOccurs="1" name="strViewFields" type="s:string" />
+            <s:element minOccurs="1" maxOccurs="1" name="uRowLimit" type="s:unsignedInt" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="GetListItemsResponse">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="1" maxOccurs="1" name="GetListItemsResult" type="s:string" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="EnumerateFolder">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="1" maxOccurs="1" name="strFolderUrl" type="s:string" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="EnumerateFolderResponse">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="1" maxOccurs="1" name="EnumerateFolderResult" type="s:unsignedInt" />
+            <s:element minOccurs="0" maxOccurs="1" name="vUrls" type="tns:ArrayOf_sFPUrl" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="GetAttachments">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="1" maxOccurs="1" name="strListName" type="s:string" />
+            <s:element minOccurs="1" maxOccurs="1" name="strItemId" type="s:string" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="GetAttachmentsResponse">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="1" maxOccurs="1" name="GetAttachmentsResult" type="s:unsignedInt" />
+            <s:element minOccurs="0" maxOccurs="1" name="vAttachments" type="tns:ArrayOfString" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="GetURLSegments">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="1" maxOccurs="1" name="strURL" type="s:string" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="GetURLSegmentsResponse">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="1" maxOccurs="1" name="GetURLSegmentsResult" type="s:boolean" />
+            <s:element minOccurs="0" maxOccurs="1" name="strWebID" type="s:string" />
+            <s:element minOccurs="0" maxOccurs="1" name="strBucketID" type="s:string" />
+            <s:element minOccurs="0" maxOccurs="1" name="strListID" type="s:string" />
+            <s:element minOccurs="0" maxOccurs="1" name="strItemID" type="s:string" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="GetListCollection">
+        <s:complexType />
+      </s:element>
+      <s:element name="GetListCollectionResponse">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="1" maxOccurs="1" name="GetListCollectionResult" type="s:unsignedInt" />
+            <s:element minOccurs="1" maxOccurs="1" name="vLists" type="tns:ArrayOf_sList" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:complexType name="ArrayOf_sList">
+        <s:sequence>
+          <s:element minOccurs="0" maxOccurs="unbounded" name="_sList" type="tns:_sList" />
+        </s:sequence>
+      </s:complexType>
+      <s:complexType name="_sList">
+        <s:sequence>
+          <s:element minOccurs="1" maxOccurs="1" name="InternalName" type="s:string" />
+          <s:element minOccurs="1" maxOccurs="1" name="Title" type="s:string" />
+          <s:element minOccurs="1" maxOccurs="1" name="Description" type="s:string" />
+          <s:element minOccurs="1" maxOccurs="1" name="BaseType"
+                     type="tns:ListBaseType" />
+          <s:element minOccurs="1" maxOccurs="1" name="BaseTemplate"
+                     type="tns:ListBaseTemplate" />
+          <s:element minOccurs="1" maxOccurs="1" name="DefaultViewUrl" type="s:string" />
+          <s:element minOccurs="1" maxOccurs="1" name="LastModified" type="s:string" />
+          <s:element minOccurs="0" maxOccurs="1" name="PermId" type="s:string" />
+          <s:element minOccurs="1" maxOccurs="1" name="InheritedSecurity"
+                     type="s:boolean" />
+          <s:element minOccurs="1" maxOccurs="1" name="AllowAnonymousAccess"
+                     type="s:boolean" />
+          <s:element minOccurs="1" maxOccurs="1" name="AnonymousViewListItems"
+                     type="s:boolean" />
+          <s:element minOccurs="1" maxOccurs="1" name="ReadSecurity" type="s:int" />
+        </s:sequence>
+      </s:complexType>
+
+      <s:element name="GetContent">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="1" maxOccurs="1" name="objectType" type="tns:ObjectType" />
+            <s:element minOccurs="0" maxOccurs="1" name="objectId" type="s:string" />
+            <s:element minOccurs="0" maxOccurs="1" name="folderUrl" type="s:string" />
+            <s:element minOccurs="0" maxOccurs="1" name="itemId" type="s:string" />
+            <s:element minOccurs="1" maxOccurs="1" name="retrieveChildItems" type="s:boolean" />
+            <s:element minOccurs="1" maxOccurs="1" name="securityOnly" type="s:boolean" />
+            <s:element minOccurs="0" maxOccurs="1" name="lastItemIdOnPage" type="s:string" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:simpleType name="ObjectType">
+        <s:restriction base="s:string">
+          <s:enumeration value="VirtualServer" />
+          <s:enumeration value="ContentDatabase" />
+          <s:enumeration value="SiteCollection" />
+          <s:enumeration value="Site" />
+          <s:enumeration value="List" />
+          <s:enumeration value="Folder" />
+          <s:enumeration value="ListItem" />
+          <s:enumeration value="ListItemAttachments" />
+        </s:restriction>
+      </s:simpleType>
+      <s:element name="GetContentResponse">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="1" maxOccurs="1" name="GetContentResult" type="s:string" />
+            <s:element minOccurs="0" maxOccurs="1" name="lastItemIdOnPage" type="s:string" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="GetSiteUrl">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="1" maxOccurs="1" name="Url" type="s:string" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="GetSiteUrlResponse">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="1" maxOccurs="1" name="GetSiteUrlResult" type="s:unsignedInt" />
+            <s:element minOccurs="1" maxOccurs="1" name="siteUrl" type="s:string" />
+            <s:element minOccurs="1" maxOccurs="1" name="siteId" type="s:string" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="GetChanges">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="0" maxOccurs="1" name="objectType" type="tns:ObjectType" />
+            <s:element minOccurs="0" maxOccurs="1" name="contentDatabaseId" type="s:string" />
+            <s:element minOccurs="1" maxOccurs="1" name="LastChangeId" type="s:string" />
+            <s:element minOccurs="0" maxOccurs="1" name="CurrentChangeId" type="s:string" />
+            <s:element minOccurs="0" maxOccurs="1" name="Timeout" type="s:int" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="GetChangesResponse">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="1" maxOccurs="1" name="GetChangesResult" type="s:string" />
+            <s:element minOccurs="1" maxOccurs="1" name="LastChangeId" type="s:string" />
+            <s:element minOccurs="1" maxOccurs="1" name="CurrentChangeId" type="s:string" />
+            <s:element minOccurs="1" maxOccurs="1" name="moreChanges" type="s:boolean" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:complexType name="ACL">
+        <s:sequence>
+          <s:element name="permissions" type="tns:permissionsForACL"/>
+        </s:sequence>
+      </s:complexType>
+      <s:complexType name="ContentDatabaseMetadata">
+        <s:attribute name="ChangeId" type="s:string" use="required"/>
+        <s:attribute name="ID" type="s:string" use="required"/>
+      </s:complexType>
+      <s:complexType name="Field">
+        <s:attribute name="Name" type="s:string" use="required"/>
+        <s:attribute name="Type" type="s:string" use="required"/>
+        <s:attribute name="TypeAsString" type="s:string" use="optional"/>
+        <s:attribute name="Title" type="s:string" use="required"/>
+        <s:attribute name="IsSurveyQuestion" type="tns:TrueFalseType" use="optional"/>
+        <s:attribute name="ID" type="s:string" use="optional"/>
+        <s:attribute name="SourceId" type="s:string" use="optional"/>
+        <s:attribute name="Indexed" type="s:boolean" use="optional"/>
+      </s:complexType>
+      <s:complexType name="GroupDescription">
+        <s:simpleContent>
+          <s:extension base="s:string">
+            <s:attribute name="ID" type="s:int" use="required"/>
+            <s:attribute name="Name" type="s:string" use="required"/>
+            <s:attribute name="Description" type="s:string" use="required"/>
+            <s:attribute name="OwnerID" type="s:int" use="required"/>
+            <s:attribute name="OwnerIsUser" type="tns:TrueFalseType" use="required"/>
+          </s:extension>
+        </s:simpleContent>
+      </s:complexType>
+<s:complexType name='GroupMembership'>
+  <s:sequence>
+    <s:element name='Group' maxOccurs='unbounded'>
+      <s:complexType>
+        <s:sequence>
+          <s:element name='Group' type='tns:GroupDescription'/>
+          <s:element name='Users' type='tns:Users'/>
+        </s:sequence>
+      </s:complexType>
+    </s:element>
+  </s:sequence>
+</s:complexType>
+      <s:complexType name="Groups">
+        <s:sequence>
+          <s:element minOccurs="0" maxOccurs="unbounded" name="Group" 
+           type="tns:GroupDescription"/>
+        </s:sequence>
+      </s:complexType>
+      <s:complexType name="ListMetadata">
+        <s:attribute name="ID" type="s:string" use="required"/>
+        <s:attribute name="Title" type="s:string" use="required"/>
+        <s:attribute name="Description" type="s:string" use="required"/>
+        <s:attribute name="DefaultViewUrl" type="s:string" use="required"/>
+        <s:attribute name="DefaultViewItemUrl" type="s:string" use="required"/>
+        <s:attribute name="DefaultTitle" type="s:string" use="required"/>
+        <s:attribute name="ScopeID" type="s:string"/>
+        <s:attribute name="RootFolder" type="s:string" use="required"/>
+        <s:attribute name="ReadSecurity" type="s:int" use="required"/>
+        <s:attribute name="NoIndex" type="tns:TrueFalseType" use="required"/>
+        <s:attribute name="BaseType" type="tns:ListBaseType" use="required"/>
+        <s:attribute name="BaseTemplate" type="tns:ListBaseTemplate" use="required"/>
+        <s:attribute name="Author" type="s:string" use="required"/>
+        <s:attribute name="AnonymousViewListItems" type="tns:TrueFalseType" use="required"/>
+        <s:attribute name="AnonymousPermMask" type="s:unsignedLong" use="required"/>
+        <s:attribute name="AnonymousPermMaskRaw" type="s:unsignedLong" use="optional"/>
+        <s:attribute name="AllowAnonymousAccess" type="tns:TrueFalseType" use="required"/>
+        <s:attribute name="LastModified" type="s:string" use="required"/>
+        <s:attribute name="ItemCount" type="s:int" use="required"/>
+        <s:attribute name="CRC" type="s:unsignedInt" use="required"/>
+      </s:complexType>
+      <s:complexType name="permission">
+        <s:attribute name="memberid" type="s:int" use="required"/>
+        <s:attribute name="mask" type="s:unsignedLong" use="required"/>
+      </s:complexType>
+      <s:complexType name="SPSiteMetadata">
+        <s:attribute name="SiteSubscriptionId" type="s:string"/>
+        <s:attribute name="URL" type="s:string" use="required"/>
+        <s:attribute name="ID" type="s:string" use="required"/>
+        <s:attribute name="LastModified" type="s:string" use="required"/>
+        <s:attribute name="PortalURL" type="s:string" use="required"/>
+        <s:attribute name="UserProfileGUID" type="s:string" use="required"/>
+        <s:attribute name="RootWebId" type="s:string" use="required"/>
+        <s:attribute name="ChangeId" type="s:string" use="required"/>
+        <s:attribute name="ContentDatabaseId" type="s:string" use="required" />
+      </s:complexType>
+      <s:complexType name="SPWebAppMetadata">
+        <s:attribute name="ID" type="s:string" use="optional"/>
+        <s:attribute name="Version" type="s:string" use="optional"/>
+        <s:attribute name="URL" type="s:string" use="required"/>
+        <s:attribute name="URLZone" type="s:string" use="optional"/>
+        <s:attribute name="URLIsHostHeader" type="tns:TrueFalseType" use="optional"/>
+      </s:complexType>
+      <s:complexType name="Users">
+        <s:sequence>
+          <s:element minOccurs="0" maxOccurs="unbounded" name="User" type="tns:UserDescription"/>
+        </s:sequence>
+      </s:complexType>
+      <s:complexType name="View">
+        <s:attribute name="URL" type="s:string" use="required"/>
+        <s:attribute name="Title" type="s:string" use="required"/>
+        <s:attribute name="ID" type="s:string" use="required"/>
+        <s:attribute name="AllowedInRoot" type="tns:TrueFalseType" use="optional"/>
+      </s:complexType>
+      <s:complexType name="WebMetadata">
+        <s:attribute name="URL" type="s:string" use="required"/>
+        <s:attribute name="LastModified" type="s:string" use="required"/>
+        <s:attribute name="Created" type="s:string" use="required"/>
+        <s:attribute name="ID" type="s:string" use="required"/>
+        <s:attribute name="Title" type="s:string" use="required"/>
+        <s:attribute name="Description" type="s:string" use="required"/>
+        <s:attribute name="LogoURL" type="s:string"/>
+        <s:attribute name="LogoDescription" type="s:string"/>
+        <s:attribute name="Author" type="s:string" use="required"/>
+        <s:attribute name="Language" type="s:unsignedShort" use="required"/>
+        <s:attribute name="CRC" type="s:unsignedInt" use="required"/>
+        <s:attribute name="NoIndex" type="s:string" use="required"/>
+        <s:attribute name="UseFormsForDisplay" type="tns:TrueFalseType" use="optional"/>
+        <s:attribute name="DefaultHomePage" type="s:string" use="required"/>
+        <s:attribute name="DefaultHomePageListId" type="s:string" use="optional"/>
+        <s:attribute name="DefaultHomePageItemId" type="s:integer" use="optional"/>
+        <s:attribute name="ExternalSecurity" type="tns:TrueFalseType" use="required"/>
+        <s:attribute name="ScopeID" type="s:string"/>
+        <s:attribute name="AllowAnonymousAccess" type="tns:TrueFalseType" use="required"/>
+        <s:attribute name="AnonymousViewListItems" type="tns:TrueFalseType" use="required"/>
+        <s:attribute name="AnonymousPermMask" type="s:unsignedLong" use="required"/>
+      </s:complexType>
+      <s:complexType name="Webs">
+        <s:sequence>
+          <s:element minOccurs="0" maxOccurs="unbounded" name="Web">
+            <s:complexType>
+              <s:attribute name="URL" type="s:string" use="required"/>
+              <s:attribute name="ID" type="s:string" use="required"/>
+              <s:attribute name="LastModified" type="s:string" use="required"/>
+            </s:complexType>
+          </s:element>
+        </s:sequence>
+      </s:complexType>
+      <s:element name="SPContentDatabase">
+       <s:complexType>
+        <s:sequence>
+          <s:element name="ContentDatabase">
+            <s:complexType>
+              <s:sequence>
+                <s:element name="Metadata" type="tns:ContentDatabaseMetadata"/>
+              </s:sequence>
+            </s:complexType>
+          </s:element>
+          <s:element ref="tns:SPSite" minOccurs="0" maxOccurs="unbounded"/>
+        </s:sequence>
+        <s:attribute name="ItemCount" type="s:int" use="required"/>
+        <s:attribute name="Change" type="s:string" use="required"/>
+       </s:complexType>
+      </s:element>
+      <s:element name="SPSite">
+       <s:complexType>
+        <s:sequence>
+       <s:element name="Messages" >
+         <s:complexType>
+           <s:sequence>
+             <s:element name="Message" type="tns:Message" minOccurs="0" maxOccurs="unbounded" />
+           </s:sequence>
+         </s:complexType>
+       </s:element>
+          <s:element name="Site" minOccurs="0">
+            <s:complexType>
+              <s:sequence>
+                <s:element name="Metadata" type="tns:SPSiteMetadata"/>
+                <s:element name="Groups" type="tns:GroupMembership"/>
+              </s:sequence>
+            </s:complexType>
+          </s:element>
+          <s:element ref="tns:SPWeb" minOccurs="0" maxOccurs="unbounded"/>
+        </s:sequence>
+        <s:attribute name="ItemCount" type="s:int" use="required"/>
+        <s:attribute name="Change" type="s:string" use="required"/>
+        <s:attribute name="UpdateSecurity" type="tns:TrueFalseType" use="optional"/>
+        <s:attribute name="Id" type="s:string" use="optional"/>
+        <s:attribute name="ParentId" type="s:string" use="optional"/>
+        <s:attribute name="InternalUrl" type="s:string" use="optional"/>
+        <s:attribute name="DisplayUrl" type="s:string" use="optional"/>
+        <s:attribute name="CRC" type="s:int" use="optional"/>
+        <s:attribute name="ServerUrl" type="s:string" use="optional"/>
+        <s:attribute name="SequenceNumber" type="s:string" use="optional"/>
+        <s:attribute name="PresentInFarm" type="tns:TrueFalseType" use="optional"/>
+       </s:complexType>
+      </s:element>
+   <s:complexType name="Message">
+      <s:sequence>
+        <s:element name="Exception" minOccurs="1" maxOccurs="1" type="s:string" >
+        </s:element>
+        <s:element name="ChangeInfo" minOccurs="1" maxOccurs="1">
+         <s:complexType>
+          <s:attribute name="SiteId" type="s:string" use="required" />
+          <s:attribute name="WebId" type="s:string" use="optional" />
+          <s:attribute name="ListId" type="s:string" use="optional" />
+          <s:attribute name="AlertId" type="s:string" use="optional" />
+          <s:attribute name="Id" type="s:string" use="optional" />
+          <s:attribute name="FieldId" type="s:string" use="optional" />
+          <s:attribute name="Url" type="s:string" use="optional" />
+          <s:attribute name="DocId" type="s:string" use="optional" />
+          <s:attribute name="UserId" type="s:string" use="optional" />
+          <s:attribute name="Activate" type="s:boolean" use="optional" />
+          <s:attribute name="IsSiteAdminChange" type="s:boolean" use="optional" />
+         </s:complexType>
+        </s:element>
+      </s:sequence>
+      <s:attribute name="ChangeToken" type="s:string" use="required" />
+      <s:attribute name="ChangeObject" type="tns:ChangeObject" use="required" />
+      <s:attribute name="ChangeType" type="tns:ChangeType" use="required" />
+    </s:complexType>
+    <s:element name="SPView">
+      <s:complexType>
+        <s:attribute name="ItemCount" type="s:int" use="required"/>
+        <s:attribute name="Change" type="s:string" use="required"/>
+        <s:attribute name="Id" type="s:string" use="optional"/>
+        <s:attribute name="ServerUrl" type="s:anyURI" use="optional"/>
+        <s:attribute name="DisplayUrl" type="s:string" use="optional"/>
+        <s:attribute name="ParentId" type="s:string" use="optional"/>
+        <s:attribute name="UpdateSecurity" type="tns:TrueFalseType" use="optional"/>
+        <s:attribute name="InternalUrl" type="s:string" use="optional"/>
+        <s:attribute name="CRC" type="s:int" use="optional"/>
+        <s:attribute name="SequenceNumber" type="s:string" use="optional"/>
+      </s:complexType>
+     </s:element>
+     <s:element name="SPWeb">
+       <s:complexType>
+        <s:sequence>
+          <s:element name="Web">
+            <s:complexType>
+              <s:sequence>
+                <s:element name="Metadata" minOccurs="0" type="tns:WebMetadata"/>
+                <s:element name="Users" minOccurs="0" type="tns:Users"/>
+                <s:element name="ACL" minOccurs="0" type="tns:ACL"/>
+                <s:element name="Webs" minOccurs="0" type="tns:Webs"/>
+                <s:element name="Lists" minOccurs="0" type="tns:Lists"/>
+              </s:sequence>
+            </s:complexType>
+          </s:element>
+          <s:choice maxOccurs="unbounded">
+            <s:element ref="tns:SPFolder"/>
+            <s:element ref="tns:SPList"/>
+            <s:element ref="tns:SPFile"/>
+          </s:choice>
+        </s:sequence>
+        <s:attribute name="ItemCount" type="s:int" use="required"/>
+        <s:attribute name="Change" type="s:string" use="required"/>
+        <s:attribute name="UpdateSecurity" type="tns:TrueFalseType" use="optional"/>
+        <s:attribute name="Id" type="s:string" use="optional"/>
+        <s:attribute name="ParentId" type="s:string" use="optional"/>
+        <s:attribute name="InternalUrl" type="s:string" use="optional"/>
+        <s:attribute name="DisplayUrl" type="s:string" use="optional"/>
+        <s:attribute name="CRC" type="s:int" use="optional"/>
+        <s:attribute name="ServerUrl" type="s:string" use="optional"/>
+        <s:attribute name="SequenceNumber" type="s:string" use="optional"/>
+      </s:complexType>
+    </s:element>
+      <s:element name="ContentDatabase">
+        <s:complexType>
+          <s:sequence>
+            <s:element name="Metadata" type="tns:ContentDatabaseMetadata" minOccurs="1" maxOccurs="1"/>
+            <s:element name="Sites" type="tns:Sites" minOccurs="0" maxOccurs="1"/>
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="FPFolder" type="tns:FolderData"/>
+      <s:element name="Item">
+        <s:complexType>
+          <s:sequence>
+            <s:element maxOccurs="unbounded" name="Attachment">
+              <s:complexType>
+                <s:attribute name="URL" type="s:string" use="required"/>
+              </s:complexType>
+            </s:element>
+          </s:sequence>
+          <s:attribute name="Count" type="s:unsignedInt" use="required"/>
+        </s:complexType>
+      </s:element>
+      <s:element name="List" type="tns:List"/>
+      <s:element name="Site">
+        <s:complexType>
+          <s:sequence>
+            <s:element name="Metadata" type="tns:SPSiteMetadata" minOccurs="1" maxOccurs="1"/>
+            <s:element name="Groups" type="tns:GroupMembership" minOccurs="1" maxOccurs="1"/>
+            <s:element name="Web" type="tns:Web" minOccurs="0" maxOccurs="1"/>
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="VirtualServer">
+        <s:complexType>
+          <s:sequence>
+            <s:element name="Metadata" type="tns:SPWebAppMetadata" minOccurs="1" maxOccurs="1"/>
+            <s:element name="ContentDatabases" type="tns:ContentDatabases" minOccurs="0" maxOccurs="1"/>
+            <s:element name="Policies" type="tns:Policies" minOccurs="0" maxOccurs="1"/>
+            <s:element name="Servers" minOccurs="0">
+              <s:complexType>
+                <s:sequence>
+                  <s:element name="Server" minOccurs="0" maxOccurs="unbounded">
+                    <s:complexType>
+                      <s:attribute name="URL" type="s:string"/>
+                    </s:complexType>  
+                  </s:element>
+                </s:sequence>
+              </s:complexType>
+            </s:element>
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="Folder" type="tns:ItemData"/>
+      <s:complexType name="Web">
+          <s:sequence>
+            <s:element name="Metadata" type="tns:WebMetadata" minOccurs="1" maxOccurs="1"/>
+            <s:element name="Users" type="tns:Users" minOccurs="1" maxOccurs="1"/>
+            <s:element name="ACL" type="tns:ACL" minOccurs="1" maxOccurs="1"/>
+            <s:element name="Webs" type="tns:Webs" minOccurs="1" maxOccurs="1"/>
+            <s:element name="Lists" type="tns:Lists" minOccurs="1" maxOccurs="1"/>
+            <s:element name="FPFolder" type="tns:FolderData" minOccurs="0" maxOccurs="1"/>
+          </s:sequence>
+      </s:complexType>
+      <s:complexType name="ContentDatabases">
+        <s:sequence>
+          <s:element maxOccurs="unbounded" name="ContentDatabase">
+            <s:complexType>
+              <s:attribute name="ID" type="s:string" use="required"/>
+            </s:complexType>
+          </s:element>
+        </s:sequence>
+      </s:complexType>
+      <s:complexType name="Files">
+        <s:sequence>
+          <s:element name="File" minOccurs="0" maxOccurs="unbounded">
+            <s:complexType>
+              <s:attribute name="URL" type="s:string" use="required"/>
+              <s:attribute name="ID" type="s:string" use="required"/>
+              <s:attribute name="LastModified" type="s:string" use="required"/>
+            </s:complexType>
+          </s:element>
+        </s:sequence>
+      </s:complexType>
+      <s:complexType name="FolderData">
+        <s:sequence>
+          <s:element name="Folders" type="tns:Folders" minOccurs="0" maxOccurs="unbounded"/>
+          <s:element name="Files" type="tns:Files" minOccurs="0" maxOccurs="unbounded"/>
+        </s:sequence>
+      </s:complexType>
+      <s:complexType name="Folders">
+        <s:sequence>
+          <s:element name="Folder" minOccurs="0" maxOccurs="unbounded">
+            <s:complexType>
+              <s:attribute name="URL" type="s:string" use="required"/>
+              <s:attribute name="ID" type="s:string" use="required"/>
+              <s:attribute name="LastModified" type="s:string" use="required"/>
+            </s:complexType>
+          </s:element>
+        </s:sequence>
+      </s:complexType>
+      <s:complexType name="ItemData">
+        <s:sequence>
+          <s:element name="Metadata" type="tns:Metadata"/>
+          <s:element name="xml" type="tns:xml"/>
+        </s:sequence>
+      </s:complexType>
+      <s:complexType name="xml">
+        <s:sequence>
+          <s:any minOccurs="0" maxOccurs="unbounded"/>
+        </s:sequence>
+      </s:complexType>
+      <s:complexType name="Policies">
+        <s:sequence>
+          <s:element maxOccurs="unbounded" name="PolicyUser" type="tns:PolicyUser"/>
+        </s:sequence>
+        <s:attribute name="AnonymousGrantMask" type="s:unsignedLong" use="required"/>
+        <s:attribute name="AnonymousDenyMask" type="s:unsignedLong" use="required"/>
+      </s:complexType>
+      <s:complexType name="PolicyUser">
+        <s:attribute name="LoginName" type="s:string" use="required"/>
+        <s:attribute name="Sid" type="s:string" use="required"/>
+        <s:attribute name="GrantMask" type="s:unsignedLong" use="required"/>
+        <s:attribute name="DenyMask" type="s:unsignedLong" use="required"/>
+        <s:attribute name="BinaryIdentifier" type="s:string" use="optional" />
+        <s:attribute name="BinaryIdentifierType" type="s:string" use="optional" />
+      </s:complexType>
+      <s:complexType name="Sites">
+        <s:sequence>
+          <s:element maxOccurs="unbounded" name="Site">
+            <s:complexType>
+              <s:attribute name="URL" type="s:string" use="required"/>
+              <s:attribute name="ID" type="s:string" use="required"/>
+            </s:complexType>
+          </s:element>
+        </s:sequence>
+      </s:complexType>
+      <s:element name="GetChangesEx">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="1" maxOccurs="1" name="version" type="s:int"/>
+            <s:element minOccurs="1" maxOccurs="1" name="xmlInput" type="s:string"/>
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="GetChangesExRequest">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="1" maxOccurs="1" name="ObjectType" type="tns:ObjectType"/>
+            <s:element minOccurs="1" maxOccurs="1" name="ContentDatabaseId" type="s:string"/>
+            <s:element minOccurs="1" maxOccurs="1" name="StartChangeId" type="s:string"/>
+            <s:element minOccurs="0" maxOccurs="1" name="EndChangeId" type="s:string"/>
+      <s:element minOccurs="0" maxOccurs="1" name="IgnoreSecurityIfInherit" type="s:boolean" />
+      <s:element minOccurs="0" maxOccurs="1" name="GetMetadata" type="s:boolean" />
+      <s:element minOccurs="0" maxOccurs="1" name="RequestLoad" type="s:int" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="GetChangesExResponse">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="1" maxOccurs="1" name="GetChangesExResult" 
+             type="s:string" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:complexType name="Permissions">
+        <s:sequence>
+          <s:element name="Permission" type="tns:ListPermission" maxOccurs="unbounded"/>
+        </s:sequence>
+      </s:complexType>
+      <s:complexType name="ListPermission">
+        <s:attribute name="MemberID" type="s:int" use="required"/>
+        <s:attribute name="Mask" type="s:unsignedLong" use="required"/>
+        <s:attribute name="MemberIsUser" type="tns:TrueFalseType" use="required"/>
+        <s:attribute name="MemberGlobal" type="tns:TrueFalseType" use="required"/>
+        <s:attribute name="UserLogin" type="s:string"/>
+        <s:attribute name="GroupName" type="s:string"/>
+      </s:complexType>
+      <s:element name="Groups" type="tns:Groups"/>
+      <s:element name="Users" type="tns:Users"/>
+      <s:element name="Permissions">
+        <s:complexType>
+          <s:sequence>
+            <s:element maxOccurs="unbounded" name="Permission">
+              <s:complexType>
+                <s:attribute name="MemberID" type="s:int" use="required"/>
+                <s:attribute name="Mask" type="s:int" use="required"/>
+                <s:attribute name="MemberIsUser" type="tns:TrueFalseType" use="required"/>
+                <s:attribute name="MemberGlobal" type="tns:TrueFalseType" use="required"/>
+                <s:attribute name="RoleName" type="s:string" use="required"/>
+              </s:complexType>
+            </s:element>
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="Roles">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="0" maxOccurs="unbounded" name="Role">
+              <s:complexType>
+                <s:attribute name="ID" type="s:unsignedInt" use="required"/>
+                <s:attribute name="Name" type="s:string" use="required"/>
+                <s:attribute name="Description" type="s:string" use="required"/>
+                <s:attribute name="Order" type="s:unsignedInt" use="required"/>
+                <s:attribute name="Hidden" type="tns:TrueFalseType" use="required"/>
+                <s:attribute name="Type" type="s:string" use="required"/>
+                <s:attribute name="BasePermissions" type="s:string" use="required"/>
+              </s:complexType>
+            </s:element>
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:simpleType name="TrueFalseType">
+        <s:restriction base="s:string">
+        <s:enumeration value="True"/>
+        <s:enumeration value="False"/>
+        </s:restriction>
+      </s:simpleType>
+<s:simpleType name="ChangeType"  >
+        <s:restriction base="s:string">
+          <s:enumeration value="NoChange"/>
+          <s:enumeration value="Add"/>
+          <s:enumeration value="Update"/>
+          <s:enumeration value="Delete"/>
+          <s:enumeration value="Rename"/>
+          <s:enumeration value="MoveAway"/>
+          <s:enumeration value="MoveInto"/>
+          <s:enumeration value="Restore"/>
+          <s:enumeration value="RoleAdd"/>
+          <s:enumeration value="RoleDelete"/>
+          <s:enumeration value="RoleUpdate"/>
+          <s:enumeration value="AssignmentAdd"/>
+          <s:enumeration value="AssignmentDelete"/>
+          <s:enumeration value="MemberAdd"/>
+          <s:enumeration value="MemberDelete"/>
+          <s:enumeration value="SystemUpdate"/>
+          <s:enumeration value="Navigation"/>
+        </s:restriction>
+      </s:simpleType>
+
+      <s:simpleType name="ChangeObject"  >
+        <s:restriction base="s:string">
+          <s:enumeration value="Microsoft.SharePoint.SPChangeItem"/>
+          <s:enumeration value="Microsoft.SharePoint.SPChangeSite"/>
+          <s:enumeration value="Microsoft.SharePoint.SPChangeWeb"/>
+          <s:enumeration value="Microsoft.SharePoint.SPChangeList"/>
+          <s:enumeration value="Microsoft.SharePoint.SPChangeFile"/>
+          <s:enumeration value="Microsoft.SharePoint.SPChangeFolder"/>
+          <s:enumeration value="Microsoft.SharePoint.SPChangeAlert"/>
+          <s:enumeration value="Microsoft.SharePoint.SPChangeUser"/>
+          <s:enumeration value="Microsoft.SharePoint.SPChangeGroup"/>
+          <s:enumeration value="Microsoft.SharePoint.SPChangeContentType"/>
+          <s:enumeration value="Microsoft.SharePoint.SPChangeField"/>
+          <s:enumeration value="Microsoft.SharePoint.SPChangeSecurityPolicy"/>
+          <s:enumeration value="Microsoft.SharePoint.SPChangeView"/>
+        </s:restriction>
+      </s:simpleType>
+
+      <s:complexType name="Metadata">
+        <s:sequence>
+          <s:element name="scope">
+            <s:complexType>
+              <s:sequence>
+                <s:element name="permissions" type="tns:permissionsForACL" />
+              </s:sequence>
+              <s:attribute name="id" type="s:string" use="required" />
+            </s:complexType>
+          </s:element>
+        </s:sequence>
+      </s:complexType>
+
+      <s:complexType name='permissionsForACL'>
+        <s:sequence >
+          <s:element name='permission' type='tns:permission' maxOccurs='unbounded' />
+        </s:sequence>
+      </s:complexType>
+
+      <s:complexType name='UserDescription'>
+        <s:attribute name='Sid' type='s:string' use='required'/>
+        <s:attribute name='Name' type='s:string' use='required' />
+        <s:attribute name='LoginName' type='s:string' use='required' />
+        <s:attribute name='IsDomainGroup' type= 'tns:TrueFalseType' 
+         use='required'/>
+        <s:attribute name='Email' type='s:string' use='optional'/>
+        <s:attribute name='Notes' type='s:string' use='required' />
+        <s:attribute name='ID' type='s:int' use='required' />
+        <s:attribute name='IsSiteAdmin' type= 'tns:TrueFalseType' use='required'/>
+      </s:complexType>
+
+      <s:complexType name="Lists">
+        <s:sequence>
+          <s:element maxOccurs="unbounded" name="List" >
+            <s:complexType>
+              <s:attribute name="ID" type="s:string" use="required" />
+              <s:attribute name="LastModified" type="s:string" use="required" />
+              <s:attribute name="DefaultViewUrl" type="s:string" use="required" />
+            </s:complexType>
+          </s:element>
+        </s:sequence>
+      </s:complexType>
+
+      <s:element name='SPFile'>
+        <s:complexType>
+          <s:attribute name='ItemCount' type='s:int' use='required'/>
+          <s:attribute name='Change' type='s:string' use='required'/>
+          <s:attribute name="UpdateSecurity" type="tns:TrueFalseType" />
+          <s:attribute name="Id" type="s:string" />
+          <s:attribute name="ParentId" type="s:string" />
+          <s:attribute name="InternalUrl" type="s:string" />
+          <s:attribute name="DisplayUrl" type="s:string" />
+          <s:attribute name="Url" type="s:string" />
+          <s:attribute name="CRC" type="s:int" />
+          <s:attribute name="ServerUrl" type="s:string" />
+          <s:attribute name="SequenceNumber" type="s:string"/>
+        </s:complexType>
+      </s:element>
+
+      <s:element name='SPFolder'>
+        <s:complexType>
+          <s:attribute name='ItemCount' type='s:int' use='required'/>
+          <s:attribute name='Change' type='s:string' use='required'/>
+          <s:attribute name="UpdateSecurity" type="tns:TrueFalseType" />
+          <s:attribute name="Id" type="s:string" />
+          <s:attribute name="ParentId" type="s:string" />
+          <s:attribute name="InternalUrl" type="s:string" />
+          <s:attribute name="DisplayUrl" type="s:string" />
+          <s:attribute name="Url" type="s:string" />
+          <s:attribute name="CRC" type="s:int" />
+          <s:attribute name="ServerUrl" type="s:string" />
+          <s:attribute name="SequenceNumber" type="s:string"/>
+        </s:complexType>
+      </s:element>
+
+      <s:element name='SPList'>
+        <s:complexType>
+          <s:sequence >
+            <s:element ref='tns:List' minOccurs='0' />
+            <s:choice minOccurs='0' maxOccurs='unbounded'>
+              <s:element ref='tns:SPView' minOccurs='0' maxOccurs='unbounded'/>
+              <s:element ref='tns:SPListItem' minOccurs='0' maxOccurs='unbounded'/>
+            </s:choice>
+          </s:sequence>
+          <s:attribute name='ItemCount' type='s:int' use='required'/>
+          <s:attribute name='Change' type='s:string' use='required'/>
+          <s:attribute name="UpdateSecurity" type="tns:TrueFalseType" />
+          <s:attribute name="Id" type="s:string" />
+          <s:attribute name="ParentId" type="s:string" />
+          <s:attribute name="InternalUrl" type="s:string" />
+          <s:attribute name="DisplayUrl" type="s:string" />
+          <s:attribute name="CRC" type="s:int" />
+          <s:attribute name="ServerUrl" type="s:string" />
+          <s:attribute name="SequenceNumber" type="s:string" use="optional"/>
+        </s:complexType>
+      </s:element>
+
+      <s:complexType name="List">
+        <s:sequence>
+          <s:element name="Metadata" type="tns:ListMetadata"/>
+          <s:element name="ACL" type="tns:ACL" >
+
+          </s:element>
+          <s:element name="Views" type="tns:Views"/>
+          <s:element name="Schema" type="tns:Schema"/>
+        </s:sequence>
+      </s:complexType>
+
+      <s:complexType name='Views'>
+        <s:sequence >
+          <s:element name='View' type='tns:View' maxOccurs='unbounded'/>
+        </s:sequence>
+      </s:complexType>
+
+      <s:complexType name='Schema'>
+        <s:sequence >
+          <s:element name='Field' type='tns:Field' maxOccurs='unbounded' />
+        </s:sequence>
+      </s:complexType>
+
+      <s:element name='SPListItem'>
+        <s:complexType>
+          <s:sequence>
+            <s:element name='ListItem' >
+              <s:complexType >
+                <s:sequence >
+                  <s:element name='row' type='s:string' />
+                  <s:element name='permissions' type='tns:permissionsForACL' />
+                </s:sequence>
+              </s:complexType>
+            </s:element>
+          </s:sequence>
+          <s:attribute name="Change" type="s:string" use="required"/>
+          <s:attribute name="ItemCount" type="s:int" use="required" />
+          <s:attribute name="UpdateSecurity" type="tns:TrueFalseType" 
+           use="optional" />
+          <s:attribute name="ServerUrl" type="s:anyURI" use="optional" />
+          <s:attribute name="ParentId" type="s:string" use="optional" />
+          <s:attribute name="InternalUrl" type="s:string" use="optional"/>
+          <s:attribute name="Id" type="s:string" use="optional" />
+          <s:attribute name="DisplayUrl" type="s:string" use="optional" />
+          <s:attribute name="CRC" type="s:unsignedInt" use="optional"/>
+          <s:attribute name="Url" type="s:int" use="optional" />
+          <s:attribute name="SequenceNumber" type="s:string" use="optional"/>
+        </s:complexType>
+      </s:element>
+    </s:schema>
+  </wsdl:types>
+  <wsdl:message name="GetSiteAndWebSoapIn">
+    <wsdl:part name="parameters" element="tns:GetSiteAndWeb" />
+  </wsdl:message>
+  <wsdl:message name="GetSiteAndWebSoapOut">
+    <wsdl:part name="parameters" element="tns:GetSiteAndWebResponse" />
+  </wsdl:message>
+  <wsdl:message name="GetSiteSoapIn">
+    <wsdl:part name="parameters" element="tns:GetSite" />
+  </wsdl:message>
+  <wsdl:message name="GetSiteSoapOut">
+    <wsdl:part name="parameters" element="tns:GetSiteResponse" />
+  </wsdl:message>
+  <wsdl:message name="GetWebSoapIn">
+    <wsdl:part name="parameters" element="tns:GetWeb" />
+  </wsdl:message>
+  <wsdl:message name="GetWebSoapOut">
+    <wsdl:part name="parameters" element="tns:GetWebResponse" />
+  </wsdl:message>
+  <wsdl:message name="GetListSoapIn">
+    <wsdl:part name="parameters" element="tns:GetList" />
+  </wsdl:message>
+  <wsdl:message name="GetListSoapOut">
+    <wsdl:part name="parameters" element="tns:GetListResponse" />
+  </wsdl:message>
+  <wsdl:message name="GetListItemsSoapIn">
+    <wsdl:part name="parameters" element="tns:GetListItems" />
+  </wsdl:message>
+  <wsdl:message name="GetListItemsSoapOut">
+    <wsdl:part name="parameters" element="tns:GetListItemsResponse" />
+  </wsdl:message>
+  <wsdl:message name="EnumerateFolderSoapIn">
+    <wsdl:part name="parameters" element="tns:EnumerateFolder" />
+  </wsdl:message>
+  <wsdl:message name="EnumerateFolderSoapOut">
+    <wsdl:part name="parameters" element="tns:EnumerateFolderResponse" />
+  </wsdl:message>
+  <wsdl:message name="GetAttachmentsSoapIn">
+    <wsdl:part name="parameters" element="tns:GetAttachments" />
+  </wsdl:message>
+  <wsdl:message name="GetAttachmentsSoapOut">
+    <wsdl:part name="parameters" element="tns:GetAttachmentsResponse" />
+  </wsdl:message>
+  <wsdl:message name="GetURLSegmentsSoapIn">
+    <wsdl:part name="parameters" element="tns:GetURLSegments" />
+  </wsdl:message>
+  <wsdl:message name="GetURLSegmentsSoapOut">
+    <wsdl:part name="parameters" element="tns:GetURLSegmentsResponse" />
+  </wsdl:message>
+  <wsdl:message name="GetListCollectionSoapIn">
+    <wsdl:part name="parameters" element="tns:GetListCollection" />
+  </wsdl:message>
+  <wsdl:message name="GetListCollectionSoapOut">
+    <wsdl:part name="parameters" element="tns:GetListCollectionResponse" />
+  </wsdl:message>
+  <wsdl:message name="GetContentSoapIn">
+    <wsdl:part name="parameters" element="tns:GetContent" />
+  </wsdl:message>
+  <wsdl:message name="GetContentSoapOut">
+    <wsdl:part name="parameters" element="tns:GetContentResponse" />
+  </wsdl:message>
+  <wsdl:message name="GetSiteUrlSoapIn">
+    <wsdl:part name="parameters" element="tns:GetSiteUrl" />
+  </wsdl:message>
+  <wsdl:message name="GetSiteUrlSoapOut">
+    <wsdl:part name="parameters" element="tns:GetSiteUrlResponse" />
+  </wsdl:message>
+  <wsdl:message name="GetChangesSoapIn">
+    <wsdl:part name="parameters" element="tns:GetChanges" />
+  </wsdl:message>
+  <wsdl:message name="GetChangesSoapOut">
+    <wsdl:part name="parameters" element="tns:GetChangesResponse" />
+  </wsdl:message>
+  <wsdl:message name="GetChangesExSoapIn">
+    <wsdl:part name="parameters" element="tns:GetChangesEx" />
+  </wsdl:message>
+  <wsdl:message name="GetChangesExSoapOut">
+    <wsdl:part name="parameters" element="tns:GetChangesExResponse" />
+  </wsdl:message>
+  <wsdl:portType name="SiteDataSoap">
+    <wsdl:operation name="GetSiteAndWeb">
+      <wsdl:input message="tns:GetSiteAndWebSoapIn" />
+      <wsdl:output message="tns:GetSiteAndWebSoapOut" />
+    </wsdl:operation>
+    <wsdl:operation name="GetSite">
+      <wsdl:input message="tns:GetSiteSoapIn" />
+      <wsdl:output message="tns:GetSiteSoapOut" />
+    </wsdl:operation>
+    <wsdl:operation name="GetWeb">
+      <wsdl:input message="tns:GetWebSoapIn" />
+      <wsdl:output message="tns:GetWebSoapOut" />
+    </wsdl:operation>
+    <wsdl:operation name="GetList">
+      <wsdl:input message="tns:GetListSoapIn" />
+      <wsdl:output message="tns:GetListSoapOut" />
+    </wsdl:operation>
+    <wsdl:operation name="GetListItems">
+      <wsdl:input message="tns:GetListItemsSoapIn" />
+      <wsdl:output message="tns:GetListItemsSoapOut" />
+    </wsdl:operation>
+    <wsdl:operation name="EnumerateFolder">
+      <wsdl:input message="tns:EnumerateFolderSoapIn" />
+      <wsdl:output message="tns:EnumerateFolderSoapOut" />
+    </wsdl:operation>
+    <wsdl:operation name="GetAttachments">
+      <wsdl:input message="tns:GetAttachmentsSoapIn" />
+      <wsdl:output message="tns:GetAttachmentsSoapOut" />
+    </wsdl:operation>
+    <wsdl:operation name="GetURLSegments">
+      <wsdl:input message="tns:GetURLSegmentsSoapIn" />
+      <wsdl:output message="tns:GetURLSegmentsSoapOut" />
+    </wsdl:operation>
+    <wsdl:operation name="GetListCollection">
+      <wsdl:input message="tns:GetListCollectionSoapIn" />
+      <wsdl:output message="tns:GetListCollectionSoapOut" />
+    </wsdl:operation>
+    <wsdl:operation name="GetContent">
+      <wsdl:input message="tns:GetContentSoapIn" />
+      <wsdl:output message="tns:GetContentSoapOut" />
+    </wsdl:operation>
+    <wsdl:operation name="GetSiteUrl">
+      <wsdl:input message="tns:GetSiteUrlSoapIn" />
+      <wsdl:output message="tns:GetSiteUrlSoapOut" />
+    </wsdl:operation>
+    <wsdl:operation name="GetChanges">
+      <wsdl:input message="tns:GetChangesSoapIn" />
+      <wsdl:output message="tns:GetChangesSoapOut" />
+    </wsdl:operation>
+      <wsdl:operation name="GetChangesEx">
+        <wsdl:input message="tns:GetChangesExSoapIn" />
+        <wsdl:output message="tns:GetChangesExSoapOut" />
+      </wsdl:operation>
+  </wsdl:portType>
+  <wsdl:binding name="SiteDataSoap" type="tns:SiteDataSoap">
+    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
+    <wsdl:operation name="GetSiteAndWeb">
+      <soap:operation soapAction="http://schemas.microsoft.com/sharepoint/soap/GetSiteAndWeb" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetSite">
+      <soap:operation soapAction="http://schemas.microsoft.com/sharepoint/soap/GetSite" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetWeb">
+      <soap:operation soapAction="http://schemas.microsoft.com/sharepoint/soap/GetWeb" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetList">
+      <soap:operation soapAction="http://schemas.microsoft.com/sharepoint/soap/GetList" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetListItems">
+      <soap:operation soapAction="http://schemas.microsoft.com/sharepoint/soap/GetListItems" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="EnumerateFolder">
+      <soap:operation soapAction="http://schemas.microsoft.com/sharepoint/soap/EnumerateFolder" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetAttachments">
+      <soap:operation soapAction="http://schemas.microsoft.com/sharepoint/soap/GetAttachments" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetURLSegments">
+      <soap:operation soapAction="http://schemas.microsoft.com/sharepoint/soap/GetURLSegments" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetListCollection">
+      <soap:operation soapAction="http://schemas.microsoft.com/sharepoint/soap/GetListCollection" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetContent">
+      <soap:operation soapAction="http://schemas.microsoft.com/sharepoint/soap/GetContent" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetSiteUrl">
+      <soap:operation soapAction="http://schemas.microsoft.com/sharepoint/soap/GetSiteUrl" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetChanges">
+      <soap:operation soapAction="http://schemas.microsoft.com/sharepoint/soap/GetChanges" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetChangesEx">
+      <soap:operation soapAction="http://schemas.microsoft.com/sharepoint/soap/GetChangesEx" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+  </wsdl:binding>
+  <wsdl:binding name="SiteDataSoap12" type="tns:SiteDataSoap">
+    <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" />
+    <wsdl:operation name="GetSiteAndWeb">
+      <soap12:operation soapAction="http://schemas.microsoft.com/sharepoint/soap/GetSiteAndWeb" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetSite">
+      <soap12:operation soapAction="http://schemas.microsoft.com/sharepoint/soap/GetSite" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetWeb">
+      <soap12:operation soapAction="http://schemas.microsoft.com/sharepoint/soap/GetWeb" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetList">
+      <soap12:operation soapAction="http://schemas.microsoft.com/sharepoint/soap/GetList" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetListItems">
+      <soap12:operation soapAction="http://schemas.microsoft.com/sharepoint/soap/GetListItems" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="EnumerateFolder">
+      <soap12:operation soapAction="http://schemas.microsoft.com/sharepoint/soap/EnumerateFolder" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetAttachments">
+      <soap12:operation soapAction="http://schemas.microsoft.com/sharepoint/soap/GetAttachments" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetURLSegments">
+      <soap12:operation soapAction="http://schemas.microsoft.com/sharepoint/soap/GetURLSegments" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetListCollection">
+      <soap12:operation soapAction="http://schemas.microsoft.com/sharepoint/soap/GetListCollection" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetContent">
+      <soap12:operation soapAction="http://schemas.microsoft.com/sharepoint/soap/GetContent" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetSiteUrl">
+      <soap12:operation soapAction="http://schemas.microsoft.com/sharepoint/soap/GetSiteUrl" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetChanges">
+      <soap12:operation soapAction="http://schemas.microsoft.com/sharepoint/soap/GetChanges" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetChangesEx">
+      <soap12:operation soapAction="http://schemas.microsoft.com/sharepoint/soap/GetChangesEx" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+  </wsdl:binding >
+  <wsdl:service name="SiteData">
+    <wsdl:port name="SiteDataSoap" binding="tns:SiteDataSoap">
+      <soap:address location="http://entpoint05/_vti_bin/SiteData.asmx" />
+    </wsdl:port>
+    <wsdl:port name="SiteDataSoap12" binding="tns:SiteDataSoap12">
+      <soap12:address location="http://entpoint05/_vti_bin/SiteData.asmx" />
+    </wsdl:port>
+  </wsdl:service>
+</wsdl:definitions>
diff --git a/build.xml b/build.xml
new file mode 100644
index 0000000..4b98b82
--- /dev/null
+++ b/build.xml
@@ -0,0 +1,270 @@
+<project name="plexi.sharepoint" default="build" basedir=".">
+  <description>SharePoint Adaptor</description>
+  <property name="src.dir" location="src"/>
+  <property name="test.dir" location="test"/>
+  <property name="test.class" value="*Test"/>
+  <property name="build.dir" location="build"/>
+  <property name="generate.dir" location="${build.dir}/generate-src"/>
+  <property name="build-generate.dir" location="${build.dir}/generate"/>
+  <property name="build-src.dir" location="${build.dir}/src"/>
+  <property name="build-test.dir" location="${build.dir}/test"/>
+  <property name="build-instrument.dir" location="${build.dir}/instrument"/>
+  <property name="adaptor.clone.dir" location="lib/plexi"/>
+  <!-- Used for checking if adaptor.jar has been changed. -->
+  <property name="adaptor.jar.default"
+    value="${adaptor.clone.dir}/build/dist/adaptor/adaptor-withlib.jar"/>
+  <property name="adaptor.jar" value="${adaptor.jar.default}"/>
+  <property name="dist.dir" location="dist"/>
+  <property name="resource.dir" location="resources"/>
+  <property name="lib.dir" location="lib"/>
+  <property name="junit.jar" location="${lib.dir}/junit-4.8.2.jar"/>
+  <property name="adaptor.args" value=""/>
+  <property name="cobertura.dir" value="${basedir}/../cobertura/"/>
+  <!-- Adaptor suffix for distribution files. Useful for placing version numbers
+       on our jars. -->
+  <property name="adaptor.suffix" value=""/>
+
+  <path id="adaptor.build.classpath">
+    <pathelement location="${adaptor.jar}"/>
+    <fileset dir="${lib.dir}">
+      <include name="adaptor-withlib.jar"/>
+      <include name="axis2-kernel-1.6.1.jar"/>
+      <include name="axis2-transport-http-1.6.1.jar"/>
+      <include name="axis2-adb-1.6.1.jar"/>
+      <include name="axiom-api-1.2.12.jar"/>
+      <include name="commons-httpclient-3.1.jar"/>
+    </fileset>
+  </path>
+
+  <path id="adaptor.run.classpath">
+    <path refid="adaptor.build.classpath"/>
+    <path refid="generate.classpath"/>
+    <fileset dir="${lib.dir}">
+      <include name="XmlSchema-1.4.7.jar"/>
+      <include name="commons-logging-1.1.1.jar"/>
+      <include name="neethi-3.0.1.jar"/>
+      <include name="mail-1.4.jar"/>
+      <include name="httpcore-4.0.jar"/>
+      <include name="commons-codec-1.3.jar"/>
+      <include name="axiom-impl-1.2.12.jar"/>
+      <include name="axis2-transport-local-1.6.1.jar"/>
+    </fileset>
+  </path>
+
+  <path id="generate.classpath">
+    <fileset dir="${lib.dir}">
+      <include name="axis2-kernel-1.6.1.jar"/>
+      <include name="axis2-adb-1.6.1.jar"/>
+      <include name="axiom-api-1.2.12.jar"/>
+      <include name="wsdl4j-1.6.2.jar"/>
+    </fileset>
+  </path>
+
+  <path id="axis-codegen.classpath">
+    <fileset dir="${lib.dir}">
+      <include name="axis2-ant-plugin-1.6.1.jar"/>
+      <include name="axis2-kernel-1.6.1.jar"/>
+      <include name="axis2-codegen-1.6.1.jar"/>
+      <include name="axis2-adb-1.6.1.jar"/>
+      <include name="axis2-adb-codegen-1.6.1.jar"/>
+      <include name="wsdl4j-1.6.2.jar"/>
+      <include name="neethi-3.0.1.jar"/>
+      <include name="XmlSchema-1.4.7.jar"/>
+      <include name="commons-logging-1.1.1.jar"/>
+      <include name="axiom-api-1.2.12.jar"/>
+      <include name="axiom-impl-1.2.12.jar"/>
+    </fileset>
+  </path>
+
+  <taskdef name="codegen" classname="org.apache.axis2.tool.ant.AntCodegenTask"
+    classpathref="axis-codegen.classpath"/>
+
+  <path id="cobertura.classpath">
+    <fileset dir="${cobertura.dir}" erroronmissingdir="false">
+      <include name="cobertura.jar"/>
+      <include name="lib/**/*.jar"/>
+    </fileset>
+  </path>
+
+  <target name="-check-instrument-uptodate">
+    <uptodate property="instrument.uptodate"
+      targetfile="${build-instrument.dir}/cobertura.ser">
+      <srcfiles dir="${build-src.dir}"/>
+    </uptodate>
+  </target>
+
+  <target name="build"
+    depends="-real-build,-check-instrument-uptodate,clean-instrument"
+    description="Build source"/>
+
+  <target name="-plexi-check-submodule">
+    <condition property="plexi.is-not-submodule">
+      <not>
+        <equals arg1="${adaptor.jar.default}" arg2="${adaptor.jar}"/>
+      </not>
+    </condition>
+    <condition property="tmp.plexi.valid-setup">
+      <or>
+        <isset property="plexi.is-not-submodule"/>
+        <available file="${adaptor.clone.dir}/.git"/>
+      </or>
+    </condition>
+    <fail unless="tmp.plexi.valid-setup">Invalid setup:
+No lib/plexi submodule and using default adaptor.jar property.
+
+You need to run "git submodule init; git submodule update" to initialize the
+lib/plexi submodule or add the the command line argument
+-Dadaptor.jar=path/to/adaptor-withlib.jar to point to the adaptor library.
+    </fail>
+  </target>
+
+  <target name="-plexi-test-uptodate" depends="-plexi-check-submodule">
+    <condition property="plexi.uptodate">
+      <or>
+        <isset property="plexi.is-not-submodule"/>
+        <uptodate targetfile="${adaptor.jar}">
+          <srcfiles dir="${adaptor.clone.dir}"
+            excludes=".git/** build/** dist/** **.swp"/>
+        </uptodate>
+      </or>
+    </condition>
+  </target>
+
+  <target name="-plexi-build" depends="-plexi-test-uptodate"
+    unless="plexi.uptodate">
+    <echo message="Detected Plexi changes. Re-packaging Plexi..."/>
+    <ant antfile="${adaptor.clone.dir}/build.xml" dir="${adaptor.clone.dir}"
+      target="package" inheritAll="false"/>
+  </target>
+
+  <target name="-generate-test-uptodate">
+    <uptodate property="generate.uptodate" srcfile="SiteData.wsdl"
+      targetfile="${generate.dir}/src/com/google/enterprise/adaptor/sharepoint/SiteDataStub.java">
+    </uptodate>
+  </target>
+
+  <target name="-generate" depends="-generate-test-uptodate"
+    unless="generate.uptodate">
+    <delete dir="${generate.dir}"/>
+    <delete dir="${build-generate.dir}"/>
+    <mkdir dir="${generate.dir}"/>
+    <mkdir dir="${build-generate.dir}"/>
+
+    <codegen wsdlfilename="SiteData.wsdl" databindingName="adb"
+      output="${generate.dir}" syncOnly="true"
+      packageName="com.google.enterprise.adaptor.sharepoint"/>
+
+    <javac srcdir="${generate.dir}/src" destdir="${build-generate.dir}"
+      debug="true" includeantruntime="false" encoding="utf-8">
+      <classpath refid="generate.classpath"/>
+    </javac>
+  </target>
+
+  <target name="-real-build" depends="-plexi-build,-generate">
+    <mkdir dir="${build-src.dir}"/>
+
+    <javac srcdir="${src.dir}" destdir="${build-src.dir}" debug="true"
+      includeantruntime="false" encoding="utf-8">
+      <compilerarg value="-Xlint:unchecked"/>
+      <classpath refid="adaptor.build.classpath"/>
+      <classpath location="${build-generate.dir}"/>
+    </javac>
+
+    <mkdir dir="${build-test.dir}"/>
+    <!-- Compile JUnit helper -->
+    <javac srcdir="${lib.dir}" destdir="${build-test.dir}" debug="true"
+      includeantruntime="true" encoding="utf-8">
+      <compilerarg value="-Xlint:unchecked"/>
+      <classpath location="${junit.jar}"/>
+      <include name="JUnitLogFixFormatter.java"/>
+    </javac>
+
+    <!-- Compile tests, excluding example tests. -->
+    <javac srcdir="${test.dir}" destdir="${build-test.dir}" debug="true"
+      includeantruntime="false" encoding="utf-8">
+      <compilerarg value="-Xlint:unchecked"/>
+      <classpath refid="adaptorlib.build.classpath"/>
+      <classpath location="${build-src.dir}"/>
+      <classpath location="${junit.jar}"/>
+    </javac>
+  </target>
+
+  <target name="dist" description="Generate distribution binaries"
+    depends="clean,test,package"/>
+
+  <target name="package" description="Generate binaries" depends="build">
+    <property name="dist.staging.dir" value="${build.dir}/dist/staging"/>
+
+    <delete dir="${build.dir}/dist"/>
+    <delete dir="${dist.dir}"/>
+
+    <mkdir dir="${build.dir}/dist"/>
+    <mkdir dir="${build.dir}/dist/staging"/>
+    <mkdir dir="${dist.dir}"/>
+  </target>
+
+  <target name="clean" description="Remove build output">
+    <delete dir="${build.dir}"/>
+    <delete dir="${dist.dir}"/>
+  </target>
+
+  <target name="run" depends="build" description="Run default adaptor">
+    <java classpath="${build-src.dir}" fork="true"
+      classname="com.google.enterprise.adaptor.sharepoint.SharePointAdaptor">
+      <classpath refid="adaptor.run.classpath"/>
+      <classpath location="${build-generate.dir}"/>
+      <sysproperty key="java.util.logging.config.file"
+        value="logging.properties"/>
+      <sysproperty key="javax.net.ssl.keyStore" file="keys.jks"/>
+      <sysproperty key="javax.net.ssl.keyStoreType" value="jks"/>
+      <sysproperty key="javax.net.ssl.keyStorePassword" value="changeit"/>
+      <sysproperty key="javax.net.ssl.trustStore" file="cacerts.jks"/>
+      <sysproperty key="javax.net.ssl.trustStoreType" value="jks"/>
+      <sysproperty key="javax.net.ssl.trustStorePassword" value="changeit"/>
+      <arg line="${adaptor.args}"/>
+    </java>
+  </target>
+
+  <target name="coverage" depends="instrument,test,coverage-report"
+    description="Run instrumented tests and generate coverage report"/>
+
+  <target name="test" depends="build" description="Run JUnit tests">
+    <junit printsummary="yes" haltonfailure="yes" forkmode="once" fork="true"
+      dir="${basedir}" maxmemory="512m">
+      <sysproperty key="net.sourceforge.cobertura.datafile"
+        file="${build-instrument.dir}/cobertura.ser"/>
+      <classpath refid="adaptor.run.classpath"/>
+      <classpath refid="cobertura.classpath"/>
+      <classpath location="${junit.jar}"/>
+      <classpath location="${build-instrument.dir}"/>
+      <classpath location="${build-src.dir}"/>
+      <classpath location="${build-test.dir}"/>
+      <formatter type="plain" usefile="false"/>
+      <formatter classname="JUnitLogFixFormatter" usefile="false"/>
+      <batchtest>
+        <fileset dir="${test.dir}">
+          <include name="**/${test.class}.java"/>
+        </fileset>
+      </batchtest>
+    </junit>
+  </target>
+
+  <target name="instrument" depends="build" description="Instrument classes">
+    <taskdef classpathref="cobertura.classpath" resource="tasks.properties"/>
+    <cobertura-instrument datafile="${build-instrument.dir}/cobertura.ser"
+      todir="${build-instrument.dir}">
+      <fileset dir="${build-src.dir}"/>
+    </cobertura-instrument>
+  </target>
+
+  <target name="clean-instrument" unless="instrument.uptodate"
+    description="Delete instrumented classes">
+    <delete dir="${build-instrument.dir}"/>
+  </target>
+
+  <target name="coverage-report" description="Generates code coverage report">
+    <taskdef classpathref="cobertura.classpath" resource="tasks.properties"/>
+    <cobertura-report datafile="${build-instrument.dir}/cobertura.ser"
+      srcdir="${src.dir}" destdir="${build.dir}/coverage"/>
+  </target>
+</project>
diff --git a/lib/JUnitLogFixFormatter.java b/lib/JUnitLogFixFormatter.java
new file mode 100644
index 0000000..9920f3b
--- /dev/null
+++ b/lib/JUnitLogFixFormatter.java
@@ -0,0 +1,109 @@
+// Copyright 2011 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+import junit.framework.AssertionFailedError;
+import junit.framework.Test;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.taskdefs.optional.junit.JUnitResultFormatter;
+import org.apache.tools.ant.taskdefs.optional.junit.JUnitTest;
+
+import java.io.*;
+import java.util.*;
+import java.util.logging.*;
+
+/**
+ * Ant formatter for fixing logging output when runing multiple JUnit tests in
+ * the same JVM.
+ *
+ * <p>The default {@link ConsoleHandler} caches the value of {@code System.err}.
+ * The Ant task changes {@code System.err} after every test. Thus, only the
+ * first test gets logging logged when running JUnit tests from Ant. This
+ * formatter changes swaps out any ConsoleHandlers with new console handlers
+ * that have the correct {@code System.err} reference, and the swaps them back
+ * after the test is over.
+ */
+public class JUnitLogFixFormatter implements JUnitResultFormatter {
+  private List<ConsoleHandler> removedHandlers
+      = new ArrayList<ConsoleHandler>();
+  private List<ConsoleHandler> addedHandlers = new ArrayList<ConsoleHandler>();
+
+  @Override
+  public void startTestSuite(JUnitTest suite) throws BuildException {
+    if (removedHandlers.size() != 0) {
+      throw new IllegalStateException("removedHandlers must be empty");
+    }
+    if (addedHandlers.size() != 0) {
+      throw new IllegalStateException("addedHandlers must be empty");
+    }
+
+    Logger root = Logger.getLogger("");
+    for (Handler handler : root.getHandlers()) {
+      if (handler instanceof ConsoleHandler) {
+        removedHandlers.add((ConsoleHandler) handler);
+      }
+    }
+
+    for (ConsoleHandler oldHandler : removedHandlers) {
+      ConsoleHandler newHandler = new ConsoleHandler();
+      newHandler.setLevel(oldHandler.getLevel());
+      newHandler.setFilter(oldHandler.getFilter());
+      newHandler.setFormatter(oldHandler.getFormatter());
+      try {
+        newHandler.setEncoding(oldHandler.getEncoding());
+      } catch (UnsupportedEncodingException ex) {
+        throw new IllegalStateException(ex);
+      }
+      newHandler.setErrorManager(oldHandler.getErrorManager());
+      root.addHandler(newHandler);
+      addedHandlers.add(newHandler);
+      root.removeHandler(oldHandler);
+    }
+  }
+
+  @Override
+  public void endTestSuite(JUnitTest suite) throws BuildException {
+    Logger root = Logger.getLogger("");
+    for (ConsoleHandler handler : removedHandlers) {
+      root.addHandler(handler);
+    }
+    removedHandlers.clear();
+
+    for (ConsoleHandler handler : addedHandlers) {
+      root.removeHandler(handler);
+    }
+    addedHandlers.clear();
+  }
+
+  @Override
+  public void setOutput(OutputStream out) {}
+
+  @Override
+  public void setSystemError(String err) {}
+
+  @Override
+  public void setSystemOutput(String out) {}
+
+  @Override
+  public void addError(Test test, Throwable t) {}
+
+  @Override
+  public void addFailure(Test test, AssertionFailedError t) {}
+
+  @Override
+  public void endTest(Test test) {}
+
+  @Override
+  public void startTest(Test test) {}
+}
diff --git a/lib/XmlSchema-1.4.7.jar b/lib/XmlSchema-1.4.7.jar
new file mode 100644
index 0000000..79251c6
--- /dev/null
+++ b/lib/XmlSchema-1.4.7.jar
Binary files differ
diff --git a/lib/XmlSchema-LICENSE.txt b/lib/XmlSchema-LICENSE.txt
new file mode 100644
index 0000000..fef8c29
--- /dev/null
+++ b/lib/XmlSchema-LICENSE.txt
@@ -0,0 +1,202 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
diff --git a/lib/axiom-api-1.2.12.jar b/lib/axiom-api-1.2.12.jar
new file mode 100644
index 0000000..4ee047d
--- /dev/null
+++ b/lib/axiom-api-1.2.12.jar
Binary files differ
diff --git a/lib/axiom-api-LICENSE.txt b/lib/axiom-api-LICENSE.txt
new file mode 100644
index 0000000..57bc88a
--- /dev/null
+++ b/lib/axiom-api-LICENSE.txt
@@ -0,0 +1,202 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
diff --git a/lib/axiom-dom-1.2.12.jar b/lib/axiom-dom-1.2.12.jar
new file mode 100644
index 0000000..b2ff444
--- /dev/null
+++ b/lib/axiom-dom-1.2.12.jar
Binary files differ
diff --git a/lib/axiom-dom-LICENSE.txt b/lib/axiom-dom-LICENSE.txt
new file mode 100644
index 0000000..57bc88a
--- /dev/null
+++ b/lib/axiom-dom-LICENSE.txt
@@ -0,0 +1,202 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
diff --git a/lib/axiom-impl-1.2.12.jar b/lib/axiom-impl-1.2.12.jar
new file mode 100644
index 0000000..0929d8c
--- /dev/null
+++ b/lib/axiom-impl-1.2.12.jar
Binary files differ
diff --git a/lib/axiom-impl-LICENSE.txt b/lib/axiom-impl-LICENSE.txt
new file mode 100644
index 0000000..fef8c29
--- /dev/null
+++ b/lib/axiom-impl-LICENSE.txt
@@ -0,0 +1,202 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
diff --git a/lib/axis2-LICENSE.txt b/lib/axis2-LICENSE.txt
new file mode 100644
index 0000000..57bc88a
--- /dev/null
+++ b/lib/axis2-LICENSE.txt
@@ -0,0 +1,202 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
diff --git a/lib/axis2-adb-1.6.1.jar b/lib/axis2-adb-1.6.1.jar
new file mode 100644
index 0000000..b03accf
--- /dev/null
+++ b/lib/axis2-adb-1.6.1.jar
Binary files differ
diff --git a/lib/axis2-adb-codegen-1.6.1.jar b/lib/axis2-adb-codegen-1.6.1.jar
new file mode 100644
index 0000000..a0151e7
--- /dev/null
+++ b/lib/axis2-adb-codegen-1.6.1.jar
Binary files differ
diff --git a/lib/axis2-ant-plugin-1.6.1.jar b/lib/axis2-ant-plugin-1.6.1.jar
new file mode 100644
index 0000000..a7a1fd7
--- /dev/null
+++ b/lib/axis2-ant-plugin-1.6.1.jar
Binary files differ
diff --git a/lib/axis2-codegen-1.6.1.jar b/lib/axis2-codegen-1.6.1.jar
new file mode 100644
index 0000000..d6d8265
--- /dev/null
+++ b/lib/axis2-codegen-1.6.1.jar
Binary files differ
diff --git a/lib/axis2-kernel-1.6.1.jar b/lib/axis2-kernel-1.6.1.jar
new file mode 100644
index 0000000..461eda3
--- /dev/null
+++ b/lib/axis2-kernel-1.6.1.jar
Binary files differ
diff --git a/lib/axis2-transport-http-1.6.1.jar b/lib/axis2-transport-http-1.6.1.jar
new file mode 100644
index 0000000..552b4b1
--- /dev/null
+++ b/lib/axis2-transport-http-1.6.1.jar
Binary files differ
diff --git a/lib/axis2-transport-local-1.6.1.jar b/lib/axis2-transport-local-1.6.1.jar
new file mode 100644
index 0000000..0c0f052
--- /dev/null
+++ b/lib/axis2-transport-local-1.6.1.jar
Binary files differ
diff --git a/lib/commons-codec-1.3.jar b/lib/commons-codec-1.3.jar
new file mode 100644
index 0000000..957b675
--- /dev/null
+++ b/lib/commons-codec-1.3.jar
Binary files differ
diff --git a/lib/commons-codec-LICENSE.txt b/lib/commons-codec-LICENSE.txt
new file mode 100644
index 0000000..fef8c29
--- /dev/null
+++ b/lib/commons-codec-LICENSE.txt
@@ -0,0 +1,202 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
diff --git a/lib/commons-httpclient-3.1.jar b/lib/commons-httpclient-3.1.jar
new file mode 100644
index 0000000..7c59774
--- /dev/null
+++ b/lib/commons-httpclient-3.1.jar
Binary files differ
diff --git a/lib/commons-httpclient-LICENSE.txt b/lib/commons-httpclient-LICENSE.txt
new file mode 100644
index 0000000..fef8c29
--- /dev/null
+++ b/lib/commons-httpclient-LICENSE.txt
@@ -0,0 +1,202 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
diff --git a/lib/commons-logging-1.1.1.jar b/lib/commons-logging-1.1.1.jar
new file mode 100644
index 0000000..1deef14
--- /dev/null
+++ b/lib/commons-logging-1.1.1.jar
Binary files differ
diff --git a/lib/commons-logging-LICENSE.txt b/lib/commons-logging-LICENSE.txt
new file mode 100644
index 0000000..6b0b127
--- /dev/null
+++ b/lib/commons-logging-LICENSE.txt
@@ -0,0 +1,203 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
diff --git a/lib/httpcore-4.0.jar b/lib/httpcore-4.0.jar
new file mode 100644
index 0000000..37eb7d4
--- /dev/null
+++ b/lib/httpcore-4.0.jar
Binary files differ
diff --git a/lib/httpcore-LICENSE.txt b/lib/httpcore-LICENSE.txt
new file mode 100644
index 0000000..fef8c29
--- /dev/null
+++ b/lib/httpcore-LICENSE.txt
@@ -0,0 +1,202 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
diff --git a/lib/junit-4.8.2.jar b/lib/junit-4.8.2.jar
new file mode 100644
index 0000000..5b4bb84
--- /dev/null
+++ b/lib/junit-4.8.2.jar
Binary files differ
diff --git a/lib/mail-1.4.jar b/lib/mail-1.4.jar
new file mode 100644
index 0000000..fd4555b
--- /dev/null
+++ b/lib/mail-1.4.jar
Binary files differ
diff --git a/lib/mail-LICENSE.txt b/lib/mail-LICENSE.txt
new file mode 100644
index 0000000..55ce20a
--- /dev/null
+++ b/lib/mail-LICENSE.txt
@@ -0,0 +1,119 @@
+COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
+
+1. Definitions.
+
+1.1. Contributor means each individual or entity that creates or contributes to the creation of Modifications.
+
+1.2. Contributor Version means the combination of the Original Software, prior Modifications used by a Contributor (if any), and the Modifications made by that particular Contributor.
+
+1.3. Covered Software means (a) the Original Software, or (b) Modifications, or (c) the combination of files containing Original Software with files containing Modifications, in each case including portions thereof.
+
+1.4. Executable means the Covered Software in any form other than Source Code.
+
+1.5. Initial Developer means the individual or entity that first makes Original Software available under this License.
+
+1.6. Larger Work means a work which combines Covered Software or portions thereof with code not governed by the terms of this License.
+
+1.7. License means this document.
+
+1.8. Licensable means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently acquired, any and all of the rights conveyed herein.
+
+1.9. Modifications means the Source Code and Executable form of any of the following:
+
+A. Any file that results from an addition to, deletion from or modification of the contents of a file containing Original Software or previous Modifications;
+
+B. Any new file that contains any part of the Original Software or previous Modification; or
+
+C. Any new file that is contributed or otherwise made available under the terms of this License.
+
+1.10. Original Software means the Source Code and Executable form of computer software code that is originally released under this License.
+
+1.11. Patent Claims means any patent claim(s), now owned or hereafter acquired, including without limitation, method, process, and apparatus claims, in any patent Licensable by grantor.
+
+1.12. Source Code means (a) the common form of computer software code in which modifications are made and (b) associated documentation included in or with such code.
+
+1.13. You (or Your) means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, You includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, control means (a)�the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b)�ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity.
+
+2. License Grants.
+
+2.1. The Initial Developer Grant.
+Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, the Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license:
+(a) under intellectual property rights (other than patent or trademark) Licensable by Initial Developer, to use, reproduce, modify, display, perform, sublicense and distribute the Original Software (or portions thereof), with or without Modifications, and/or as part of a Larger Work; and
+(b) under Patent Claims infringed by the making, using or selling of Original Software, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Software (or portions thereof).
+(c) The licenses granted in Sections�2.1(a) and (b) are effective on the date Initial Developer first distributes or otherwise makes the Original Software available to a third party under the terms of this License.
+(d) Notwithstanding Section�2.1(b) above, no patent license is granted: (1)�for code that You delete from the Original Software, or (2)�for infringements caused by: (i)�the modification of the Original Software, or (ii)�the combination of the Original Software with other software or devices.
+
+2.2. Contributor Grant.
+Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license:
+(a) under intellectual property rights (other than patent or trademark) Licensable by Contributor to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof), either on an unmodified basis, with other Modifications, as Covered Software and/or as part of a Larger Work; and
+(b) under Patent Claims infringed by the making, using, or selling of Modifications made by that Contributor either alone and/or in combination with its Contributor Version (or portions of such combination), to make, use, sell, offer for sale, have made, and/or otherwise dispose of: (1)�Modifications made by that Contributor (or portions thereof); and (2)�the combination of Modifications made by that Contributor with its Contributor Version (or portions of such combination).
+(c) The licenses granted in Sections�2.2(a) and 2.2(b) are effective on the date Contributor first distributes or otherwise makes the Modifications available to a third party.
+(d) Notwithstanding Section�2.2(b) above, no patent license is granted: (1)�for any code that Contributor has deleted from the Contributor Version; (2)�for infringements caused by: (i)�third party modifications of Contributor Version, or (ii)�the combination of Modifications made by that Contributor with other software (except as part of the Contributor Version) or other devices; or (3)�under Patent Claims infringed by Covered Software in the absence of Modifications made by that Contributor.
+
+3. Distribution Obligations.
+
+3.1. Availability of Source Code.
+
+Any Covered Software that You distribute or otherwise make available in Executable form must also be made available in Source Code form and that Source Code form must be distributed only under the terms of this License. You must include a copy of this License with every copy of the Source Code form of the Covered Software You distribute or otherwise make available. You must inform recipients of any such Covered Software in Executable form as to how they can obtain such Covered Software in Source Code form in a reasonable manner on or through a medium customarily used for software exchange.
+
+3.2. Modifications.
+
+The Modifications that You create or to which You contribute are governed by the terms of this License. You represent that You believe Your Modifications are Your original creation(s) and/or You have sufficient rights to grant the rights conveyed by this License.
+
+3.3. Required Notices.
+You must include a notice in each of Your Modifications that identifies You as the Contributor of the Modification. You may not remove or alter any copyright, patent or trademark notices contained within the Covered Software, or any notices of licensing or any descriptive text giving attribution to any Contributor or the Initial Developer.
+
+3.4. Application of Additional Terms.
+You may not offer or impose any terms on any Covered Software in Source Code form that alters or restricts the applicable version of this License or the recipients rights hereunder. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Software. However, you may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear that any such warranty, support, indemnity or liability obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of warranty, support, indemnity or liability terms You offer.
+
+3.5. Distribution of Executable Versions.
+You may distribute the Executable form of the Covered Software under the terms of this License or under the terms of a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable form does not attempt to limit or alter the recipients rights in the Source Code form from the rights set forth in this License. If You distribute the Covered Software in Executable form under a different license, You must make it absolutely clear that any terms which differ from this License are offered by You alone, not by the Initial Developer or Contributor. You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of any such terms You offer.
+
+3.6. Larger Works.
+You may create a Larger Work by combining Covered Software with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Software.
+
+4. Versions of the License.
+
+4.1. New Versions.
+Sun Microsystems, Inc. is the initial license steward and may publish revised and/or new versions of this License from time to time. Each version will be given a distinguishing version number. Except as provided in Section 4.3, no one other than the license steward has the right to modify this License.
+
+4.2. Effect of New Versions.
+
+You may always continue to use, distribute or otherwise make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. If the Initial Developer includes a notice in the Original Software prohibiting it from being distributed or otherwise made available under any subsequent version of the License, You must distribute and make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. Otherwise, You may also choose to use, distribute or otherwise make the Covered Software available under the terms of any subsequent version of the License published by the license steward.
+4.3. Modified Versions.
+
+When You are an Initial Developer and You want to create a new license for Your Original Software, You may create and use a modified version of this License if You: (a)�rename the license and remove any references to the name of the license steward (except to note that the license differs from this License); and (b)�otherwise make it clear that the license contains terms which differ from this License.
+
+5. DISCLAIMER OF WARRANTY.
+
+COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN AS IS BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
+
+6. TERMINATION.
+
+6.1. This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive.
+
+6.2. If You assert a patent infringement claim (excluding declaratory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You assert such claim is referred to as Participant) alleging that the Participant Software (meaning the Contributor Version where the Participant is a Contributor or the Original Software where the Participant is the Initial Developer) directly or indirectly infringes any patent, then any and all rights granted directly or indirectly to You by such Participant, the Initial Developer (if the Initial Developer is not the Participant) and all Contributors under Sections�2.1 and/or 2.2 of this License shall, upon 60 days notice from Participant terminate prospectively and automatically at the expiration of such 60 day notice period, unless if within such 60 day period You withdraw Your claim with respect to the Participant Software against such Participant either unilaterally or pursuant to a written agreement with Participant.
+
+6.3. In the event of termination under Sections�6.1 or 6.2 above, all end user licenses that have been validly granted by You or any distributor hereunder prior to termination (excluding licenses granted to You by any distributor) shall survive termination.
+
+7. LIMITATION OF LIABILITY.
+
+UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTYS NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
+
+8. U.S. GOVERNMENT END USERS.
+
+The Covered Software is a commercial item, as that term is defined in 48�C.F.R.�2.101 (Oct. 1995), consisting of commercial computer software (as that term is defined at 48 C.F.R. �252.227-7014(a)(1)) and commercial computer software documentation as such terms are used in 48�C.F.R.�12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Software with only those rights set forth herein. This U.S. Government Rights clause is in lieu of, and supersedes, any other FAR, DFAR, or other clause or provision that addresses Government rights in computer software under this License.
+
+9. MISCELLANEOUS.
+
+This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by the law of the jurisdiction specified in a notice contained within the Original Software (except to the extent applicable law, if any, provides otherwise), excluding such jurisdictions conflict-of-law provisions. Any litigation relating to this License shall be subject to the jurisdiction of the courts located in the jurisdiction and venue specified in a notice contained within the Original Software, with the losing party responsible for costs, including, without limitation, court costs and reasonable attorneys fees and expenses. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not apply to this License. You agree that You alone are responsible for compliance with the United States export administration regulations (and the export control laws and regulation of any other countries) when You use, distribute or otherwise make available any Covered Software.
+
+10. RESPONSIBILITY FOR CLAIMS.
+
+As between Initial Developer and the Contributors, each party is responsible for claims and damages arising, directly or indirectly, out of its utilization of rights under this License and You agree to work with Initial Developer and Contributors to distribute such responsibility on an equitable basis. Nothing herein is intended or shall be deemed to constitute any admission of liability.
+
+NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL)
+The GlassFish code released under the CDDL shall be governed by the laws of the State of California (excluding conflict-of-law provisions). Any litigation relating to this License shall be subject to the jurisdiction of the Federal Courts of the Northern District of California and the state courts of the State of California, with venue lying in Santa Clara County, California. 
+
+
+
diff --git a/lib/neethi-3.0.1.jar b/lib/neethi-3.0.1.jar
new file mode 100644
index 0000000..a6c1b1a
--- /dev/null
+++ b/lib/neethi-3.0.1.jar
Binary files differ
diff --git a/lib/neethi-LICENSE.txt b/lib/neethi-LICENSE.txt
new file mode 100644
index 0000000..57bc88a
--- /dev/null
+++ b/lib/neethi-LICENSE.txt
@@ -0,0 +1,202 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
diff --git a/lib/plexi b/lib/plexi
new file mode 160000
index 0000000..a90492e
--- /dev/null
+++ b/lib/plexi
@@ -0,0 +1 @@
+Subproject commit a90492e5cc03a58f97aad3f5c5fbc5b6e35eb489
diff --git a/lib/wsdl4j-1.6.2.jar b/lib/wsdl4j-1.6.2.jar
new file mode 100644
index 0000000..b9ffc36
--- /dev/null
+++ b/lib/wsdl4j-1.6.2.jar
Binary files differ
diff --git a/lib/wsdl4j-LICENSE.txt b/lib/wsdl4j-LICENSE.txt
new file mode 100644
index 0000000..ffc4d1f
--- /dev/null
+++ b/lib/wsdl4j-LICENSE.txt
@@ -0,0 +1,88 @@
+Common Public License - v 1.0 
+
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. 
+
+
+1. DEFINITIONS 
+
+"Contribution" means: 
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+b) in the case of each subsequent Contributor:
+i) changes to the Program, and
+ii) additions to the Program;
+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program. 
+
+"Contributor" means any person or entity that distributes the Program. 
+
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program. 
+
+
+"Program" means the Contributions distributed in accordance with this Agreement. 
+
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors. 
+
+
+2. GRANT OF RIGHTS 
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form.
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder. 
+c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement. 
+3. REQUIREMENTS 
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that: 
+
+a) it complies with the terms and conditions of this Agreement; and
+b) its license agreement:
+i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose; 
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits; 
+iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and
+iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange. 
+When the Program is made available in source code form: 
+
+a) it must be made available under this Agreement; and 
+b) a copy of this Agreement must be included with each copy of the Program. 
+
+Contributors may not remove or alter any copyright notices contained within the Program. 
+
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution. 
+
+
+4. COMMERCIAL DISTRIBUTION 
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense. 
+
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages. 
+
+
+5. NO WARRANTY 
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement, including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations. 
+
+
+6. DISCLAIMER OF LIABILITY 
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 
+
+
+7. GENERAL 
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. 
+
+
+If Recipient institutes patent litigation against a Contributor with respect to a patent applicable to software (including a cross-claim or counterclaim in a lawsuit), then any patent licenses granted by that Contributor to such Recipient under this Agreement shall terminate as of the date such litigation is filed. In addition, if Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed. 
+
+
+All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive. 
+
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. IBM is the initial Agreement Steward. IBM may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved. 
+
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation. 
diff --git a/logging.properties b/logging.properties
new file mode 100644
index 0000000..499b7cd
--- /dev/null
+++ b/logging.properties
@@ -0,0 +1,7 @@
+handlers = java.util.logging.ConsoleHandler
+.level = FINE
+java.util.logging.ConsoleHandler.level = FINEST
+java.util.logging.ConsoleHandler.formatter = com.google.enterprise.adaptor.CustomFormatter
+# Uncomment if your terminal can't handle colors and the auto-detection
+# is incorrect.
+# com.google.enterprise.adaptor.CustomFormatter.useColor = false
diff --git a/src/com/google/enterprise/adaptor/sharepoint/SharePointAdaptor.java b/src/com/google/enterprise/adaptor/sharepoint/SharePointAdaptor.java
new file mode 100644
index 0000000..c97c288
--- /dev/null
+++ b/src/com/google/enterprise/adaptor/sharepoint/SharePointAdaptor.java
@@ -0,0 +1,490 @@
+// Copyright 2012 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.enterprise.adaptor.sharepoint;
+
+import com.google.enterprise.adaptor.AbstractAdaptor;
+import com.google.enterprise.adaptor.AdaptorContext;
+import com.google.enterprise.adaptor.Config;
+import com.google.enterprise.adaptor.DocId;
+import com.google.enterprise.adaptor.DocIdEncoder;
+import com.google.enterprise.adaptor.DocIdPusher;
+import com.google.enterprise.adaptor.IOHelper;
+import com.google.enterprise.adaptor.Request;
+import com.google.enterprise.adaptor.Response;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.transport.http.HTTPConstants;
+import org.apache.axis2.transport.http.HttpTransportProperties;
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.HttpStatus;
+import org.apache.commons.httpclient.Credentials;
+import org.apache.commons.httpclient.UsernamePasswordCredentials;
+import org.apache.commons.httpclient.auth.AuthScope;
+import org.apache.commons.httpclient.methods.GetMethod;
+
+import java.io.*;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.Arrays;
+import java.util.concurrent.*;
+
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamReader;
+
+/**
+ * SharePoint Adaptor for the GSA.
+ */
+public class SharePointAdaptor extends AbstractAdaptor {
+  private final ConcurrentMap<String, SiteDataClient> clients
+      = new ConcurrentSkipListMap<String, SiteDataClient>();
+  private final XMLInputFactory xmlInputFactory = XMLInputFactory.newFactory();
+  private final DocId virtualServerDocId = new DocId("");
+  private AdaptorContext context;
+
+  // Configuration-provided values.
+  private String virtualServer;
+  private String username;
+  private String password;
+
+  @Override
+  public void initConfig(Config config) {
+    config.addKey("sharepoint.server", null);
+    config.addKey("sharepoint.username", null);
+    config.addKey("sharepoint.password", null);
+  }
+
+  @Override
+  public void init(AdaptorContext context) {
+    this.context = context;
+    Config config = context.getConfig();
+    virtualServer = config.getValue("sharepoint.server");
+    username = config.getValue("sharepoint.username");
+    password = config.getValue("sharepoint.password");
+  }
+
+  @Override
+  public void getDocContent(Request request, Response response)
+      throws IOException {
+    try {
+      DocId id = request.getDocId();
+      SiteDataClient virtualServerClient = getSiteDataClient(virtualServer);
+      if (id.equals(virtualServerDocId)) {
+        virtualServerClient.getVirtualServerDocContent(request, response);
+      } else {
+        SiteDataClient client
+            = virtualServerClient.getClientForUrl(id.getUniqueId());
+        client.getDocContent(request, response);
+      }
+    } catch (RuntimeException ex) {
+      throw ex;
+    } catch (IOException ex) {
+      throw ex;
+    } catch (Exception ex) {
+      throw new IOException(ex);
+    }
+  }
+
+  @Override
+  public void getDocIds(DocIdPusher pusher) throws InterruptedException {
+    pusher.pushDocIds(Arrays.asList(virtualServerDocId));
+  }
+
+  private SiteDataClient getSiteDataClient(String site) throws AxisFault {
+    SiteDataClient client = clients.get(site);
+    if (client == null) {
+      client = new SiteDataClient(site);
+      clients.putIfAbsent(site, client);
+      client = clients.get(site);
+    }
+    return client;
+  }
+
+  public static void main(String[] args) throws Exception {
+    if (false) {
+      final String logPackage = "org.apache.commons.logging.";
+      System.setProperty(logPackage + "Log", logPackage + "impl.SimpleLog");
+      System.setProperty(logPackage + "simplelog.log.httpclient.wire", "debug");
+      System.setProperty(
+          logPackage + "simplelog.log.org.apache.commons.httpclient", "debug");
+    }
+    AbstractAdaptor.main(new SharePointAdaptor(), args);
+  }
+
+  private class SiteDataClient {
+    private static final boolean DEBUG = false;
+    private static final String XMLNS
+        = "http://schemas.microsoft.com/sharepoint/soap/";
+
+    private final SiteDataStub stub;
+    private final String siteUrl;
+
+    public SiteDataClient(String site) throws AxisFault {
+      if (!site.endsWith("/")) {
+        // Always end with a '/' for a cannonical form.
+        site = site + "/";
+      }
+      this.siteUrl = site;
+      this.stub = new SiteDataStub(site + "_vti_bin/SiteData.asmx");
+      HttpTransportProperties.Authenticator auth
+          = new HttpTransportProperties.Authenticator();
+      auth.setUsername(username);
+      auth.setPassword(password);
+      auth.setPreemptiveAuthentication(true);
+      Options options = stub._getServiceClient().getOptions();
+      options.setProperty(HTTPConstants.AUTHENTICATE, auth);
+      options.setProperty(HTTPConstants.REUSE_HTTP_CLIENT, true);
+    }
+
+    private void getDocContent(Request request, Response response)
+        throws Exception {
+      SiteDataStub.GetURLSegments urlRequest
+          = new SiteDataStub.GetURLSegments();
+      urlRequest.setStrURL(request.getDocId().getUniqueId());
+      SiteDataStub.GetURLSegmentsResponse urlResponse
+          = stub.getURLSegments(urlRequest);
+      if (!urlResponse.getGetURLSegmentsResult()) {
+        response.respondNotFound();
+        return;
+      }
+      if (urlResponse.getStrWebID() != null) {
+        getSiteDocContent(request, response, urlResponse.getStrWebID());
+      } else if (urlResponse.getStrItemID() != null) {
+        getListItemDocContent(request, response, urlResponse.getStrListID(),
+            urlResponse.getStrItemID());
+      } else if (urlResponse.getStrListID() != null) {
+        getListDocContent(request, response, urlResponse.getStrListID());
+      } else if (urlResponse.getStrBucketID() != null) {
+        response.respondNotFound();
+      } else {
+        // Assume it is a top-level site.
+        getSiteDocContent(request, response, urlResponse.getStrWebID());
+      }
+    }
+
+    public void callChangesContentDatabase() throws Exception {
+      System.out.println("                            ContentDatabase Changes");
+      SiteDataStub.GetChanges request = new SiteDataStub.GetChanges();
+      request.setObjectType(SiteDataStub.ObjectType.ContentDatabase);
+      request.setContentDatabaseId("{4fb7dea1-2912-4927-9eda-1ea2f0977cf8}");
+      request.setLastChangeId(
+          "1;0;4fb7dea1-2912-4927-9eda-1ea2f0977cf8;634704678460030000;261");
+      //request.setCurrentChangeId("");
+      request.setTimeout(2);
+      SiteDataStub.GetChangesResponse response = stub.getChanges(request);
+      System.out.println(response.getMoreChanges());
+      System.out.println(response.getCurrentChangeId());
+      System.out.println(response.getLastChangeId());
+      System.out.println(response.getGetChangesResult());
+    }
+
+    private String encodeUrl(String url) {
+      if (url.toLowerCase().startsWith("https://")
+          || url.toLowerCase().startsWith("http://")) {
+        // Leave as-is.
+      } else if (!url.startsWith("/")) {
+        url = siteUrl + url;
+      } else {
+        // Rip off everthing after the third slash (including the slash).
+        // Get http://example.com from http://example.com/some/folder.
+        String[] parts = siteUrl.split("/", 4);
+        url = parts[0] + "//" + parts[2] + url;
+      }
+      URI uri = context.getDocIdEncoder().encodeDocId(new DocId(url));
+      return uri.toASCIIString();
+    }
+
+    private String liUrl(String url) {
+      // TODO(ejona): Fix raw string concatenation.
+      return "<li><a href=\"" + encodeUrl(url) + "\">" + url + "</a></li>";
+    }
+
+    private void getVirtualServerDocContent(Request request, Response response)
+        throws Exception {
+      SiteDataStub.VirtualServer vs = getContentVirtualServer();
+      response.setContentType("text/html");
+      Writer writer = new OutputStreamWriter(response.getOutputStream());
+      writer.write("<!DOCTYPE html>\n"
+          + "<html><head>"
+          + "<title>VirtualServer " + vs.getMetadata().getURL() + "</title>"
+          + "</head>"
+          + "<body>"
+          + "<h1>VirtualServer " + vs.getMetadata().getURL() + "</h1>"
+          + "<p>Sites</p>"
+          + "<ul>");
+      if (vs.getContentDatabases() != null) {
+        DocIdEncoder encoder = context.getDocIdEncoder();
+        for (SiteDataStub.ContentDatabase_type0 cd_t0
+            : vs.getContentDatabases().getContentDatabase()) {
+          SiteDataStub.ContentDatabase cd
+            = getContentContentDatabase(cd_t0.getID());
+          if (cd.getSites() != null && cd.getSites().getSite() != null) {
+            for (SiteDataStub.Site_type0 site : cd.getSites().getSite()) {
+              writer.write(liUrl(site.getURL()));
+            }
+          }
+        }
+      }
+      writer.write("</ul></body></html>");
+      writer.flush();
+    }
+
+    private void getSiteDocContent(Request request, Response response,
+        String id) throws Exception {
+      SiteDataStub.Web w = getContentWeb(id);
+      response.setContentType("text/html");
+      Writer writer = new OutputStreamWriter(response.getOutputStream());
+      writer.write("<!DOCTYPE html>\n"
+          + "<html><head>"
+          + "<title>Site " + w.getMetadata().getTitle() + "</title>"
+          + "</head>"
+          + "<body>"
+          + "<h1>Site " + w.getMetadata().getTitle() + "</h1>");
+
+      // TODO: w.getMetadata().getNoIndex()
+      DocIdEncoder encoder = context.getDocIdEncoder();
+      if (w.getWebs() != null && w.getWebs().getWeb() != null) {
+        writer.write("<p>Sites</p><ul>");
+        for (SiteDataStub.Web_type0 web : w.getWebs().getWeb()) {
+          writer.write(liUrl(web.getURL()));
+        }
+        writer.write("</ul>");
+      }
+      if (w.getLists() != null && w.getLists().getList() != null) {
+        writer.write("<p>Lists</p><ul>");
+        for (SiteDataStub.List_type0 list : w.getLists().getList()) {
+          writer.write(liUrl(list.getDefaultViewUrl()));
+        }
+        writer.write("</ul>");
+      }
+      if (w.getFPFolder() != null) {
+        getFolderDataDocContent(writer, w.getFPFolder());
+      }
+      writer.write("</body></html>");
+      writer.flush();
+    }
+
+    private void getListDocContent(Request request, Response response,
+        String id) throws Exception {
+      SiteDataStub.List l = getContentList(id);
+      response.setContentType("text/html");
+      Writer writer = new OutputStreamWriter(response.getOutputStream());
+      writer.write("<!DOCTYPE html>\n"
+          + "<html><head>"
+          + "<title>List " + l.getMetadata().getTitle() + "</title>"
+          + "</head>"
+          + "<body>"
+          + "<h1>List " + l.getMetadata().getTitle() + "</h1>");
+      if ("DocumentLibrary".equals(l.getMetadata().getBaseType().getValue())) {
+        SiteDataStub.FPFolder f
+            = getContentFolder(l.getMetadata().getRootFolder());
+        getFolderDataDocContent(writer, f.getFPFolder());
+      } else {
+        writer.write("<p>List Items</p><ul>");
+        for (int i = 0; i < l.getMetadata().getItemCount(); i++) {
+          // TODO: determine URLs to provide.
+        }
+        writer.write("</ul>");
+      }
+      writer.write("</body></html>");
+      writer.flush();
+    }
+
+    private void getFolderDataDocContent(Writer writer,
+        SiteDataStub.FolderData f) throws IOException {
+      if (f.getFolders() != null) {
+        writer.write("<p>Folders</p><ul>");
+        for (SiteDataStub.Folders folders : f.getFolders()) {
+          if (folders.getFolder() != null) {
+            for (SiteDataStub.Folder_type0 folder : folders.getFolder()) {
+              writer.write(liUrl(folder.getURL()));
+            }
+          }
+        }
+        writer.write("</ul>");
+      }
+      if (f.getFiles() != null) {
+        writer.write("<p>Files</p><ul>");
+        for (SiteDataStub.Files files : f.getFiles()) {
+          if (files.getFile() != null) {
+            for (SiteDataStub.File_type0 file : files.getFile()) {
+              writer.write(liUrl(file.getURL()));
+            }
+          }
+        }
+        writer.write("</ul>");
+      }
+    }
+
+    private void recurseFile(String id, String url, String prefix)
+        throws Exception {
+      System.out.println(prefix + "File: " + url);
+      prefix += "  ";
+      System.out.println(prefix + "ID=" + id);
+    }
+
+    private void getListItemDocContent(Request request, Response response,
+        String listId, String itemId) throws Exception {
+      //SiteDataStub.ItemData i = getContentItem(listId, itemId);
+      HttpClient client = new HttpClient();
+      client.getParams().setAuthenticationPreemptive(true);
+      Credentials creds
+          = new UsernamePasswordCredentials(username, password);
+      client.getState().setCredentials(AuthScope.ANY, creds);
+      String url = request.getDocId().getUniqueId();
+      String[] parts = url.split("/", 4);
+      url = parts[0] + "/" + parts[1] + "/" + parts[2] + "/" +
+          new URI(null, null, parts[3], null).toASCIIString();
+      GetMethod method = new GetMethod(url);
+      int statusCode = client.executeMethod(method);
+      if (statusCode != HttpStatus.SC_OK) {
+        throw new RuntimeException("Got status code: " + statusCode);
+      }
+      InputStream is = method.getResponseBodyAsStream();
+      IOHelper.copyStream(is, response.getOutputStream());
+    }
+
+    private SiteDataStub.VirtualServer getContentVirtualServer()
+        throws Exception {
+      SiteDataStub.GetContent request = new SiteDataStub.GetContent();
+      request.setObjectType(SiteDataStub.ObjectType.VirtualServer);
+      request.setRetrieveChildItems(true);
+      request.setSecurityOnly(false);
+      SiteDataStub.GetContentResponse response = stub.getContent(request);
+      if (DEBUG) {
+        System.out.println("                            VirtualServer");
+        System.out.println(response.getLastItemIdOnPage());
+        System.out.println(response.getGetContentResult());
+      }
+      String xml = response.getGetContentResult();
+      xml = xml.replace("<VirtualServer>",
+          "<VirtualServer xmlns='" + XMLNS + "'>");
+      XMLStreamReader reader = xmlInputFactory.createXMLStreamReader(
+          new StringReader(xml));
+      return SiteDataStub.VirtualServer.Factory.parse(reader);
+    }
+
+    private SiteDataClient getClientForUrl(String url) throws Exception {
+      SiteDataStub.GetSiteUrl request = new SiteDataStub.GetSiteUrl();
+      request.setUrl(url);
+      SiteDataStub.GetSiteUrlResponse response = stub.getSiteUrl(request);
+      return getSiteDataClient(response.getSiteUrl());
+    }
+
+    private SiteDataStub.ContentDatabase getContentContentDatabase(String id)
+        throws Exception {
+      SiteDataStub.GetContent request = new SiteDataStub.GetContent();
+      request.setObjectType(SiteDataStub.ObjectType.ContentDatabase);
+      request.setRetrieveChildItems(true);
+      request.setSecurityOnly(false);
+      request.setObjectId(id);
+      SiteDataStub.GetContentResponse response = stub.getContent(request);
+      if (DEBUG) {
+        System.out.println("                            ContentDatabase");
+        System.out.println(response.getLastItemIdOnPage());
+        System.out.println(response.getGetContentResult());
+      }
+      String xml = response.getGetContentResult();
+      xml = xml.replace("<ContentDatabase>",
+          "<ContentDatabase xmlns='" + XMLNS + "'>");
+      XMLStreamReader reader = xmlInputFactory.createXMLStreamReader(
+          new StringReader(xml));
+      return SiteDataStub.ContentDatabase.Factory.parse(reader);
+    }
+
+    private SiteDataStub.Web getContentWeb(String id) throws Exception {
+      SiteDataStub.GetContent request = new SiteDataStub.GetContent();
+      request.setObjectType(SiteDataStub.ObjectType.Site);
+      request.setRetrieveChildItems(true);
+      request.setSecurityOnly(false);
+      request.setObjectId(id);
+      SiteDataStub.GetContentResponse response = stub.getContent(request);
+      if (DEBUG) {
+        System.out.println("                            Web");
+        System.out.println(id);
+        System.out.println(response.getLastItemIdOnPage());
+        System.out.println(response.getGetContentResult());
+      }
+      stub.getContent(request);
+      String xml = response.getGetContentResult();
+      xml = xml.replace("<Web>", "<Web xmlns='" + XMLNS + "'>");
+      XMLStreamReader reader = xmlInputFactory.createXMLStreamReader(
+          new StringReader(xml));
+      return SiteDataStub.Web.Factory.parse(reader);
+    }
+
+    private SiteDataStub.List getContentList(String id) throws Exception {
+      SiteDataStub.GetContent request = new SiteDataStub.GetContent();
+      request.setObjectType(SiteDataStub.ObjectType.List);
+      request.setRetrieveChildItems(true);
+      request.setSecurityOnly(false);
+      request.setObjectId(id);
+      SiteDataStub.GetContentResponse response = stub.getContent(request);
+      if (DEBUG) {
+        System.out.println("                            List");
+        System.out.println(response.getLastItemIdOnPage());
+        System.out.println(response.getGetContentResult());
+      }
+      String xml = response.getGetContentResult();
+      xml = xml.replace("<List>", "<List xmlns='" + XMLNS + "'>");
+      XMLStreamReader reader = xmlInputFactory.createXMLStreamReader(
+          new StringReader(xml));
+      return SiteDataStub.List.Factory.parse(reader);
+    }
+
+    private SiteDataStub.ItemData getContentItem(String listId, String itemId)
+        throws Exception {
+      SiteDataStub.GetContent request = new SiteDataStub.GetContent();
+      request.setObjectType(SiteDataStub.ObjectType.ListItem);
+      request.setRetrieveChildItems(true);
+      request.setSecurityOnly(false);
+      request.setObjectId(listId);
+      request.setFolderUrl("");
+      request.setItemId(itemId);
+      SiteDataStub.GetContentResponse response = stub.getContent(request);
+      if (DEBUG) {
+        System.out.println("                            ListItem");
+        System.out.println(response.getLastItemIdOnPage());
+        System.out.println(response.getGetContentResult());
+      }
+      String xml = response.getGetContentResult();
+      xml = xml.replace("<Item>", "<ItemData xmlns='" + XMLNS + "'>");
+      xml = xml.replace("</Item>", "</ItemData>");
+      XMLStreamReader reader = xmlInputFactory.createXMLStreamReader(
+          new StringReader(xml));
+      return SiteDataStub.ItemData.Factory.parse(reader);
+    }
+
+    private SiteDataStub.FPFolder getContentFolder(String url)
+        throws Exception {
+      SiteDataStub.GetContent request = new SiteDataStub.GetContent();
+      request.setObjectType(SiteDataStub.ObjectType.Folder);
+      request.setRetrieveChildItems(true);
+      request.setSecurityOnly(false);
+      request.setFolderUrl(url);
+      SiteDataStub.GetContentResponse response = stub.getContent(request);
+      if (DEBUG) {
+        System.out.println("                            Folder (Specific)");
+        System.out.println(response.getLastItemIdOnPage());
+        System.out.println(response.getGetContentResult());
+      }
+      String xml = response.getGetContentResult();
+      xml = xml.replace("<FPFolder>", "<FPFolder xmlns='" + XMLNS + "'>");
+      XMLStreamReader reader = xmlInputFactory.createXMLStreamReader(
+          new StringReader(xml));
+      return SiteDataStub.FPFolder.Factory.parse(reader);
+    }
+  }
+}
