[mapguide-commits] r9560 - in trunk/MgDev: . Common/MapGuideCommon/MapLayer Common/MapGuideCommon/Resources Common/MapGuideCommon/Services Common/Schema Doc/samples Doc/samples/ol2samples Doc/samples/ol2samples/assets Doc/samples/ol2samples/xyz Server/src/PostBuild Server/src/Services/Mapping Server/src/Services/Rendering Server/src/Services/Tile Server/src/UnitTesting UnitTest/TestData/Samples/Sheboygan UnitTest/TestData/Samples/Sheboygan/Library/Samples/Sheboygan/TileSets UnitTest/TestData/TileService Web/src/HttpHandler Web/src/localized Web/src/mapviewerjava Web/src/mapviewernet Web/src/mapviewerphp

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Tue Jun 25 04:20:14 PDT 2019


Author: jng
Date: 2019-06-25 04:20:14 -0700 (Tue, 25 Jun 2019)
New Revision: 9560

Added:
   trunk/MgDev/Common/Schema/RuntimeMap-4.0.0.xsd
   trunk/MgDev/Doc/samples/ol2samples/assets/legend_ol.js
   trunk/MgDev/Doc/samples/ol2samples/hybrid/
   trunk/MgDev/Doc/samples/ol2samples/xyz/index_ol.html
   trunk/MgDev/UnitTest/TestData/Samples/Sheboygan/Library/Samples/Sheboygan/TileSets/SheboyganXYZRetina.TileSetDefinition_CONTENT.xml
   trunk/MgDev/UnitTest/TestData/Samples/Sheboygan/Library/Samples/Sheboygan/TileSets/SheboyganXYZRetina.TileSetDefinition_HEADER.xml
   trunk/MgDev/UnitTest/TestData/TileService/UT_LinkedTileSetXYZ.mdf
Modified:
   trunk/MgDev/
   trunk/MgDev/Common/MapGuideCommon/MapLayer/Map.cpp
   trunk/MgDev/Common/MapGuideCommon/MapLayer/Map.h
   trunk/MgDev/Common/MapGuideCommon/Resources/mapguide_en.res
   trunk/MgDev/Common/MapGuideCommon/Services/ProxyRenderingService.cpp
   trunk/MgDev/Common/MapGuideCommon/Services/ProxyRenderingService.h
   trunk/MgDev/Common/MapGuideCommon/Services/RenderingDefs.h
   trunk/MgDev/Common/MapGuideCommon/Services/RenderingService.h
   trunk/MgDev/Common/MapGuideCommon/Services/TileDefs.h
   trunk/MgDev/Doc/samples/samples.php
   trunk/MgDev/Server/src/PostBuild/PostBuild.mak
   trunk/MgDev/Server/src/Services/Mapping/ServerMappingService.cpp
   trunk/MgDev/Server/src/Services/Rendering/OpRenderMetatileXYZ.cpp
   trunk/MgDev/Server/src/Services/Rendering/OpRenderTileXYZ.cpp
   trunk/MgDev/Server/src/Services/Rendering/RenderingOperationFactory.cpp
   trunk/MgDev/Server/src/Services/Rendering/ServerRenderingService.cpp
   trunk/MgDev/Server/src/Services/Rendering/ServerRenderingService.h
   trunk/MgDev/Server/src/Services/Rendering/ServerRenderingServiceBuild.cpp
   trunk/MgDev/Server/src/Services/Tile/ServerTileService.cpp
   trunk/MgDev/Server/src/Services/Tile/ServerTileService.h
   trunk/MgDev/Server/src/Services/Tile/TileCacheXYZProvider.cpp
   trunk/MgDev/Server/src/Services/Tile/TileCacheXYZProvider.h
   trunk/MgDev/Server/src/UnitTesting/TestMappingService.cpp
   trunk/MgDev/Server/src/UnitTesting/TestMappingService.h
   trunk/MgDev/Server/src/UnitTesting/TestRenderingService.cpp
   trunk/MgDev/Server/src/UnitTesting/TestRenderingService.h
   trunk/MgDev/Server/src/UnitTesting/TestTileService.cpp
   trunk/MgDev/UnitTest/TestData/Samples/Sheboygan/Library/Samples/Sheboygan/TileSets/SheboyganXYZ.TileSetDefinition_CONTENT.xml
   trunk/MgDev/UnitTest/TestData/Samples/Sheboygan/MgResourcePackageManifest.xml
   trunk/MgDev/Web/src/HttpHandler/XmlJsonConvert.cpp
   trunk/MgDev/Web/src/localized/en
   trunk/MgDev/Web/src/mapviewerjava/mapframe.jsp
   trunk/MgDev/Web/src/mapviewernet/mapframe.aspx
   trunk/MgDev/Web/src/mapviewerphp/mapframe.php
Log:
Merged revision(s) 9539-9559 from sandbox/jng/tiling_v3: Implement MapGuide RFC 173 - Tile Service Enhancements (Round 3)

Index: trunk/MgDev
===================================================================
--- trunk/MgDev	2019-06-22 08:42:36 UTC (rev 9559)
+++ trunk/MgDev	2019-06-25 11:20:14 UTC (rev 9560)

Property changes on: trunk/MgDev
___________________________________________________________________
Modified: svn:mergeinfo
## -26,6 +26,7 ##
 /sandbox/jng/simplify:8814-9141
 /sandbox/jng/tiling:8174-8208
 /sandbox/jng/tiling_v2:9490-9509
+/sandbox/jng/tiling_v3:9539-9559
 /sandbox/jng/utfgrid:9179-9212
 /sandbox/jng/v30:8212-8227
 /sandbox/jng/v4:9511-9519
Modified: trunk/MgDev/Common/MapGuideCommon/MapLayer/Map.cpp
===================================================================
--- trunk/MgDev/Common/MapGuideCommon/MapLayer/Map.cpp	2019-06-22 08:42:36 UTC (rev 9559)
+++ trunk/MgDev/Common/MapGuideCommon/MapLayer/Map.cpp	2019-06-25 11:20:14 UTC (rev 9560)
@@ -43,7 +43,8 @@
     m_unpackedLayersGroups(false),
     m_colorPalette(NULL),        // lazy instantiation
     m_watermarkUsage(Viewer),
-    m_tileSetId((MgResourceIdentifier*)NULL)
+    m_tileSetId((MgResourceIdentifier*)NULL),
+    m_tilePixelRatio(1)
 {
 }
 
@@ -57,7 +58,8 @@
     m_unpackedLayersGroups(false),
     m_colorPalette(NULL),        // lazy instantiation
     m_watermarkUsage(Viewer),
-    m_tileSetId((MgResourceIdentifier*)NULL)
+    m_tileSetId((MgResourceIdentifier*)NULL),
+    m_tilePixelRatio(1)
 {
     CHECKARGUMENTNULL(siteConnection, L"MgMap.MgMap");
 
@@ -216,6 +218,22 @@
 
         m_srs = GetCoordinateSystemFromTileSet(tdef.get(), true);
 
+        auto tsp = tdef->GetTileStoreParameters();
+        m_tileSetProvider = tsp->GetTileProvider();
+        auto parameters = tsp->GetParameters();
+        for (auto i = 0; i < parameters->GetCount(); i++)
+        {
+            auto nvp = parameters->GetAt(i);
+            if (nvp->GetName() == MG_TILE_PROVIDER_XYZ_PARAM_RETINASCALE)
+            {
+                m_tilePixelRatio = MgUtil::StringToInt32(nvp->GetValue());
+            }
+            else if (nvp->GetName() == MG_TILE_PROVIDER_COMMON_PARAM_TILEFORMAT)
+            {
+                m_tileFormat = nvp->GetValue();
+            }
+        }
+
         //If tile CS is not the same as map def CS, then the bounds of the map def need to be transformed
         if (m_srs != mdef->GetCoordinateSystem())
         {
@@ -622,6 +640,22 @@
     std::unique_ptr<MdfModel::TileSetDefinition> tdef(parser.DetachTileSetDefinition());
     assert(tdef.get() != NULL);
 
+    auto tsp = tdef->GetTileStoreParameters();
+    m_tileSetProvider = tsp->GetTileProvider();
+    auto parameters = tsp->GetParameters();
+    for (auto i = 0; i < parameters->GetCount(); i++)
+    {
+        auto nvp = parameters->GetAt(i);
+        if (nvp->GetName() == MG_TILE_PROVIDER_XYZ_PARAM_RETINASCALE)
+        {
+            m_tilePixelRatio = MgUtil::StringToInt32(nvp->GetValue());
+        }
+        else if (nvp->GetName() == MG_TILE_PROVIDER_COMMON_PARAM_TILEFORMAT)
+        {
+            m_tileFormat = nvp->GetValue();
+        }
+    }
+
     MgGeometryFactory gf;
 
     const Box2D& extent = tdef->GetExtents();
@@ -852,12 +886,6 @@
             }
         }
     }
-    else if (strict)
-    {
-        MgStringCollection args;
-        args.Add(storeParams->GetTileProvider());
-        throw new MgUnsupportedTileProviderException(L"MgMap.GetFiniteDisplayScalesFromTileSet", __LINE__, __WFILE__, &args, L"", NULL);
-    }
 }
 
 //////////////////////////////////////////////////////////////
@@ -1304,6 +1332,15 @@
     //tile set definition
     stream->WriteObject(m_tileSetId);
 
+    //tile set provider
+    stream->WriteString(m_tileSetProvider);
+
+    //tile format
+    stream->WriteString(m_tileFormat);
+
+    //tile pixel ratio
+    stream->WriteInt32(m_tilePixelRatio);
+
     // Serialize Layers and Groups as a blob.
     if (m_inSave)
     {
@@ -1428,6 +1465,15 @@
     //tile set definition
     m_tileSetId = (MgResourceIdentifier*)stream->GetObject();
 
+    //tile set provider
+    stream->GetString(m_tileSetProvider);
+
+    //tile format
+    stream->GetString(m_tileFormat);
+
+    //tile pixel ratio
+    stream->GetInt32(m_tilePixelRatio);
+
     //blob for layers and groups
     INT32 nBytes = 0;
     streamReader->GetInt32(nBytes);
@@ -1612,4 +1658,19 @@
 MgResourceIdentifier* MgMap::GetTileSetDefinition()
 {
     return SAFE_ADDREF((MgResourceIdentifier*)m_tileSetId);
+}
+
+STRING MgMap::GetTileSetProvider()
+{
+    return m_tileSetProvider;
+}
+
+STRING MgMap::GetTileFormat()
+{
+    return m_tileFormat;
+}
+
+INT32 MgMap::GetTilePixelRatio()
+{
+    return m_tilePixelRatio;
 }
\ No newline at end of file

Modified: trunk/MgDev/Common/MapGuideCommon/MapLayer/Map.h
===================================================================
--- trunk/MgDev/Common/MapGuideCommon/MapLayer/Map.h	2019-06-22 08:42:36 UTC (rev 9559)
+++ trunk/MgDev/Common/MapGuideCommon/MapLayer/Map.h	2019-06-25 11:20:14 UTC (rev 9560)
@@ -506,6 +506,70 @@
     /// to a Tile Set
     MgResourceIdentifier* GetTileSetDefinition();
 
+    //////////////////////////////////////////////////////////////////
+    /// \brief
+    /// Returns the provider name of the referenced tile set definition
+    ///
+    /// <!-- Syntax in .Net, Java, and PHP -->
+    /// \htmlinclude DotNetSyntaxTop.html
+    /// string GetTileSetProvider();
+    /// \htmlinclude SyntaxBottom.html
+    /// \htmlinclude JavaSyntaxTop.html
+    /// String GetTileSetProvider();
+    /// \htmlinclude SyntaxBottom.html
+    /// \htmlinclude PHPSyntaxTop.html
+    /// string GetTileSetProvider();
+    /// \htmlinclude SyntaxBottom.html
+    ///
+    /// \since 4.0
+    ///
+    /// \return
+    /// Returns the tile set provider name. Or an empty string if this map does not reference a tile set
+    STRING GetTileSetProvider();
+
+    //////////////////////////////////////////////////////////////////
+    /// \brief
+    /// Returns the tile pixel ratio for retina tiles. This is only 
+    /// applicable for XYZ tiles.
+    ///
+    /// <!-- Syntax in .Net, Java, and PHP -->
+    /// \htmlinclude DotNetSyntaxTop.html
+    /// int GetTilePixelRatio();
+    /// \htmlinclude SyntaxBottom.html
+    /// \htmlinclude JavaSyntaxTop.html
+    /// int GetTilePixelRatio();
+    /// \htmlinclude SyntaxBottom.html
+    /// \htmlinclude PHPSyntaxTop.html
+    /// int GetTilePixelRatio();
+    /// \htmlinclude SyntaxBottom.html
+    ///
+    /// \since 4.0
+    ///
+    /// \return
+    /// Returns the tile pixel ratio for retina tiles
+    INT32 GetTilePixelRatio();
+
+    //////////////////////////////////////////////////////////////////
+    /// \brief
+    /// Returns the tile content format for the tile set definition
+    ///
+    /// <!-- Syntax in .Net, Java, and PHP -->
+    /// \htmlinclude DotNetSyntaxTop.html
+    /// string GetTileFormat();
+    /// \htmlinclude SyntaxBottom.html
+    /// \htmlinclude JavaSyntaxTop.html
+    /// String GetTileFormat();
+    /// \htmlinclude SyntaxBottom.html
+    /// \htmlinclude PHPSyntaxTop.html
+    /// string GetTileFormat();
+    /// \htmlinclude SyntaxBottom.html
+    ///
+    /// \since 4.0
+    ///
+    /// \return
+    /// Returns the tile content format
+    STRING GetTileFormat();
+
 INTERNAL_API:
 
     //////////////////////////////////////////////////////////////////
@@ -787,6 +851,9 @@
     ColorStringList* m_colorPalette;
 
     INT32 m_watermarkUsage;
+    STRING m_tileSetProvider;
+    STRING m_tileFormat;
+    INT32 m_tilePixelRatio;
 };
 /// \}
 

Modified: trunk/MgDev/Common/MapGuideCommon/Resources/mapguide_en.res
===================================================================
--- trunk/MgDev/Common/MapGuideCommon/Resources/mapguide_en.res	2019-06-22 08:42:36 UTC (rev 9559)
+++ trunk/MgDev/Common/MapGuideCommon/Resources/mapguide_en.res	2019-06-25 11:20:14 UTC (rev 9560)
@@ -452,6 +452,7 @@
 MgTileProvider_Common_Property_TileExtentOffset_LocalizedName = Tile Extent Offset
 MgTileProvider_Common_Property_MetaTileFactor_LocalizedName = Meta-tiling factor
 MgTileProvider_Common_Property_MetaTileLockMethod_LocalizedName = Meta-tiling lock method
+MgTileProvider_XYZ_Property_RetinaScale_LocalizedName = Scaling factor for Retina Tiles
 
 
 # *****************************************************************************

Modified: trunk/MgDev/Common/MapGuideCommon/Services/ProxyRenderingService.cpp
===================================================================
--- trunk/MgDev/Common/MapGuideCommon/Services/ProxyRenderingService.cpp	2019-06-22 08:42:36 UTC (rev 9559)
+++ trunk/MgDev/Common/MapGuideCommon/Services/ProxyRenderingService.cpp	2019-06-25 11:20:14 UTC (rev 9560)
@@ -234,15 +234,16 @@
     INT32 z,
     INT32 dpi,
     CREFSTRING tileImageFormat,
-    double tileExtentOffset)
+    double tileExtentOffset,
+    INT32 retinaScale)
 {
     MgCommand cmd;
-    cmd.ExecuteCommand(m_connProp,                                      // Connection
+    cmd.ExecuteCommand(m_connProp,                      // Connection
         MgCommand::knObject,                            // Return type expected
         MgRenderingServiceOpId::RenderTileXYZ2,         // Command Code
-        8,                                              // No of arguments
+        9,                                              // No of arguments
         Rendering_Service,                              // Service Id
-        BUILD_VERSION(4,0,0),                         // Operation version
+        BUILD_VERSION(4,0,0),                           // Operation version
         MgCommand::knObject, map,                       // Argument#1
         MgCommand::knString, &baseMapLayerGroupName,    // Argument#2
         MgCommand::knInt32, x,                          // Argument#3
@@ -251,6 +252,7 @@
         MgCommand::knInt32, dpi,                        // Argument#6
         MgCommand::knString, &tileImageFormat,          // Argument#7
         MgCommand::knDouble, tileExtentOffset,          // Argument#8
+        MgCommand::knInt32, retinaScale,                // Argument#9
         MgCommand::knNone);                             // End of arguments
 
     SetWarning(cmd.GetWarningObject());
@@ -1379,15 +1381,16 @@
     INT32 dpi,
     CREFSTRING tileImageFormat,
     double tileExtentOffset,
-    INT32 metaTilingFactor)
+    INT32 metaTilingFactor,
+    INT32 retinaScale)
 {
     MgCommand cmd;
     cmd.ExecuteCommand(m_connProp,                      // Connection
         MgCommand::knObject,                            // Return type expected
-        MgRenderingServiceOpId::RenderTileXYZ2,         // Command Code
-        9,                                              // No of arguments
+        MgRenderingServiceOpId::RenderMetatileXYZ,      // Command Code
+        10,                                             // No of arguments
         Rendering_Service,                              // Service Id
-        BUILD_VERSION(4,0,0),                         // Operation version
+        BUILD_VERSION(4,0,0),                           // Operation version
         MgCommand::knObject, map,                       // Argument#1
         MgCommand::knString, &baseMapLayerGroupName,    // Argument#2
         MgCommand::knInt32, x,                          // Argument#3
@@ -1397,6 +1400,7 @@
         MgCommand::knString, &tileImageFormat,          // Argument#7
         MgCommand::knDouble, tileExtentOffset,          // Argument#8
         MgCommand::knInt32, metaTilingFactor,           // Argument#9
+        MgCommand::knInt32, retinaScale,                // Argument#10
         MgCommand::knNone);                             // End of arguments
 
     SetWarning(cmd.GetWarningObject());

Modified: trunk/MgDev/Common/MapGuideCommon/Services/ProxyRenderingService.h
===================================================================
--- trunk/MgDev/Common/MapGuideCommon/Services/ProxyRenderingService.h	2019-06-22 08:42:36 UTC (rev 9559)
+++ trunk/MgDev/Common/MapGuideCommon/Services/ProxyRenderingService.h	2019-06-25 11:20:14 UTC (rev 9560)
@@ -263,6 +263,8 @@
     /// Specifies the ratio by which the tile to be rendered should be "buffered out". The tile will be rendered at the specified width
     /// multiplied by the given ration, which will be cropped back to the original requested size after rendering. This is to improve
     /// label placement on rendered tiles by giving extra "breathing space" to label placement algorithms.
+    /// \param retinaScale
+    /// The scaling factor to apply for "retina" tiles
     ///
     /// \return
     /// A byte reader containing the rendered tile image.
@@ -276,7 +278,8 @@
         INT32 z,
         INT32 dpi,
         CREFSTRING tileImageFormat,
-        double tileExtentOffset);
+        double tileExtentOffset,
+        INT32 retinaScale);
 
     /////////////////////////////////////////////////////////////////
     /// \brief
@@ -1206,6 +1209,9 @@
     /// The meta-tiling factor. If less than or equal to 1, no meta-tiling is done and the returned meta-tile can be extracted
     /// as the orignally requested tile image. If greater than 1, a tile that is m times bigger than the requested tile is rendered
     /// (where m is the specified tiling factor) and the raw image frame buffer of this meta-tile is returned instead.
+    /// \param retinaScale
+    /// Input
+    /// The scaling factor to apply for "retina" tiles
     ///
     /// \return
     /// A meta-tile with sufficient information for the consumer to properly sub-divide this back into sub-tiles of the
@@ -1221,7 +1227,8 @@
         INT32 dpi,
         CREFSTRING tileImageFormat,
         double tileExtentOffset,
-        INT32 metaTilingFactor);
+        INT32 metaTilingFactor,
+        INT32 retinaScale);
 
     /////////////////////////////////////////////////////////////////
     /// \brief

Modified: trunk/MgDev/Common/MapGuideCommon/Services/RenderingDefs.h
===================================================================
--- trunk/MgDev/Common/MapGuideCommon/Services/RenderingDefs.h	2019-06-22 08:42:36 UTC (rev 9559)
+++ trunk/MgDev/Common/MapGuideCommon/Services/RenderingDefs.h	2019-06-25 11:20:14 UTC (rev 9560)
@@ -49,6 +49,7 @@
     static const int QueryFeatureProperties3    = 0x1111E915;
     static const int RenderMetatile             = 0x1111E916;
     static const int RenderTileFromMetaTile     = 0x1111E917;
+    static const int RenderMetatileXYZ          = 0x1111E918;
 };
 /// \endcond
 

Modified: trunk/MgDev/Common/MapGuideCommon/Services/RenderingService.h
===================================================================
--- trunk/MgDev/Common/MapGuideCommon/Services/RenderingService.h	2019-06-22 08:42:36 UTC (rev 9559)
+++ trunk/MgDev/Common/MapGuideCommon/Services/RenderingService.h	2019-06-25 11:20:14 UTC (rev 9560)
@@ -278,6 +278,8 @@
     /// Specifies the ratio by which the tile to be rendered should be "buffered out". The tile will be rendered at the specified width
     /// multiplied by the given ration, which will be cropped back to the original requested size after rendering. This is to improve
     /// label placement on rendered tiles by giving extra "breathing space" to label placement algorithms.
+    /// \param retinaScale
+    /// The scaling factor to apply for "retina" tiles
     ///
     /// \return
     /// A byte reader containing the rendered tile image.
@@ -291,7 +293,8 @@
         INT32 z,
         INT32 dpi,
         CREFSTRING tileImageFormat,
-        double tileExtentOffset) = 0;
+        double tileExtentOffset,
+        INT32 retinaScale) = 0;
 
     /////////////////////////////////////////////////////////////////
     /// \brief
@@ -1221,6 +1224,9 @@
     /// The meta-tiling factor. If less than or equal to 1, no meta-tiling is done and the returned meta-tile can be extracted
     /// as the orignally requested tile image. If greater than 1, a tile that is m times bigger than the requested tile is rendered
     /// (where m is the specified tiling factor) and the raw image frame buffer of this meta-tile is returned instead.
+    /// \param retinaScale
+    /// Input
+    /// The scaling factor to apply for "retina" tiles
     ///
     /// \return
     /// A meta-tile with sufficient information for the consumer to properly sub-divide this back into sub-tiles of the
@@ -1236,7 +1242,8 @@
         INT32 dpi,
         CREFSTRING tileImageFormat,
         double tileExtentOffset,
-        INT32 metaTilingFactor) = 0;
+        INT32 metaTilingFactor,
+        INT32 retinaScale) = 0;
 
 
     /////////////////////////////////////////////////////////////////

Modified: trunk/MgDev/Common/MapGuideCommon/Services/TileDefs.h
===================================================================
--- trunk/MgDev/Common/MapGuideCommon/Services/TileDefs.h	2019-06-22 08:42:36 UTC (rev 9559)
+++ trunk/MgDev/Common/MapGuideCommon/Services/TileDefs.h	2019-06-25 11:20:14 UTC (rev 9560)
@@ -69,6 +69,7 @@
 #define MG_TILE_PROVIDER_COMMON_PARAM_TILEEXTENTOFFSET   L"TileExtentOffset"
 #define MG_TILE_PROVIDER_COMMON_PARAM_METATILEFACTOR     L"MetaTileFactor"
 #define MG_TILE_PROVIDER_COMMON_PARAM_METATILELOCKMETHOD L"MetaTileLockMethod"
+#define MG_TILE_PROVIDER_XYZ_PARAM_RETINASCALE           L"RetinaScale"
 
 #define MG_METATILE_MAX_FACTOR 8
 

Copied: trunk/MgDev/Common/Schema/RuntimeMap-4.0.0.xsd (from rev 9559, sandbox/jng/tiling_v3/Common/Schema/RuntimeMap-4.0.0.xsd)
===================================================================
--- trunk/MgDev/Common/Schema/RuntimeMap-4.0.0.xsd	                        (rev 0)
+++ trunk/MgDev/Common/Schema/RuntimeMap-4.0.0.xsd	2019-06-25 11:20:14 UTC (rev 9560)
@@ -0,0 +1,324 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
+  <xs:element name="RuntimeMap">
+    <xs:annotation>
+      <xs:documentation>Describes information about a Runtime Map, so that client applications can interact with it</xs:documentation>
+    </xs:annotation>
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element name="SiteVersion" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>The MapGuide Site Version</xs:documentation>
+          </xs:annotation>
+        </xs:element>
+        <xs:element name="Name" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>The name of the runtime map. This is the value required for any mapagent operation that require a MAPNAME parameter</xs:documentation>
+          </xs:annotation>
+        </xs:element>
+        <xs:element name="MapDefinition" type="xs:string" minOccurs="0">
+          <xs:annotation>
+            <xs:documentation>The resource id of the Map Definition from which this runtime map was created from</xs:documentation>
+          </xs:annotation>
+        </xs:element>
+        <xs:element name="TileSetDefinition" type="xs:string" minOccurs="0">
+          <xs:annotation>
+            <xs:documentation>The resource id of the Tile Set Definition that this Map Definition is linked from. If this Map Definition does not link to a tile set, this element is omitted</xs:documentation>
+          </xs:annotation>
+        </xs:element>
+        <xs:element name="TileSetProvider" type="xs:string" minOccurs="0">
+          <xs:annotation>
+            <xs:documentation>The provider for the Tile Set Definition</xs:documentation>
+          </xs:annotation>
+        </xs:element>
+        <xs:element name="TileFormat" type="xs:string" minOccurs="0">
+          <xs:annotation>
+            <xs:documentation>The tile content format</xs:documentation>
+          </xs:annotation>
+        </xs:element>
+        <xs:element name="TilePixelRatio" type="xs:integer" minOccurs="0">
+          <xs:annotation>
+            <xs:documentation>The tile pixel ratio for retina tiles</xs:documentation>
+          </xs:annotation>
+        </xs:element>
+        <xs:element name="TileWidth" type="xs:integer" minOccurs="0">
+          <xs:annotation>
+            <xs:documentation>The tile width as defined by the settings in the Tile Set Definition. If this Map Definition does not link to a tile set, this element is omitted</xs:documentation>
+          </xs:annotation>
+        </xs:element>
+        <xs:element name="TileHeight" type="xs:integer" minOccurs="0">
+          <xs:annotation>
+            <xs:documentation>The tile height as defined by the settings in the Tile Set Definition. If this Map Definition does not link to a tile set, this element is omitted</xs:documentation>
+          </xs:annotation>
+        </xs:element>
+        <xs:element name="BackgroundColor" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>The map's background color in ARGB hex string format</xs:documentation>
+          </xs:annotation>
+        </xs:element>
+        <xs:element name="DisplayDpi" type="xs:integer">
+          <xs:annotation>
+            <xs:documentation>The number of dots per inch of the map display</xs:documentation>
+          </xs:annotation>
+        </xs:element>
+        <xs:element name="IconMimeType" type="xs:string" minOccurs="0">
+          <xs:annotation>
+            <xs:documentation>The mime type of all inline icons</xs:documentation>
+          </xs:annotation>
+        </xs:element>
+        <xs:element name="CoordinateSystem" type="CoordinateSystemType" />
+        <xs:element name="Extents" type="Envelope" />
+        <xs:element name="Group" type="RuntimeMapGroup" minOccurs="0" maxOccurs="unbounded" />
+        <xs:element name="Layer" type="RuntimeMapLayer" minOccurs="0" maxOccurs="unbounded" />
+        <xs:element name="FiniteDisplayScale" type="xs:double" minOccurs="0" maxOccurs="unbounded" />
+        <xs:attribute name="version" type="xs:string" use="required" fixed="3.0.0"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:complexType name="CoordinateSystemType">
+    <xs:annotation>
+      <xs:documentation>Describes the coordinate system of the runtime map</xs:documentation>
+    </xs:annotation>
+    <xs:sequence>
+      <xs:element name="Wkt" type="xs:string">
+        <xs:annotation>
+          <xs:documentation>The WKT string of the coordinate system</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="MentorCode" type="xs:string">
+        <xs:annotation>
+          <xs:documentation>The CS-Map code of the coordinate system</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="EpsgCode" type="xs:string">
+        <xs:annotation>
+          <xs:documentation>The EPSG code of the coordinate system</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="MetersPerUnit" type="xs:double">
+        <xs:annotation>
+          <xs:documentation>The meters-per-unit value of the coordinate system</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="RuntimeMapGroup">
+    <xs:annotation>
+      <xs:documentation>Describes a group of Runtime Map Layers</xs:documentation>
+    </xs:annotation>
+    <xs:sequence>
+      <xs:element name="Name" type="xs:string">
+        <xs:annotation>
+          <xs:documentation>The name of the group</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="Type" type="xs:integer">
+        <xs:annotation>
+          <xs:documentation>The type of this group. Can be tiled or dynamic. Uses the value of MgLayerGroupType</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="LegendLabel" type="xs:string">
+        <xs:annotation>
+          <xs:documentation>The group's legend label</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="ObjectId" type="xs:string">
+        <xs:annotation>
+          <xs:documentation>The group's unique id. Use this value for turning on/off this group in a GETDYNAMICMAPOVERLAYIMAGE request</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="ParentId" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation>The group's parent group id. Use this value for determining parent-child relationships when building a layer/group hierarchy</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="DisplayInLegend" type="xs:boolean">
+        <xs:annotation>
+          <xs:documentation>Indicates whether this group should be displayed in the legend</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="ExpandInLegend" type="xs:boolean">
+        <xs:annotation>
+          <xs:documentation>Indicates whether this group should be initially expanded in the legend</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="Visible" type="xs:boolean">
+        <xs:annotation>
+          <xs:documentation>Indicates whether this group is potentially visible. Note that this may be true even though the group is not visible. This will occur if one of the groups this group is organized within is not visible.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="ActuallyVisible" type="xs:boolean">
+        <xs:annotation>
+          <xs:documentation>Indicates the actual visibility of the group. The visibility depends on the visible property of the group, and the visible property of each group this group is organized within.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="RuntimeMapLayer">
+    <xs:annotation>
+      <xs:documentation>Describes a runtime instance of a Layer Definition</xs:documentation>
+    </xs:annotation>
+    <xs:sequence>
+      <xs:element name="Name" type="xs:string">
+        <xs:annotation>
+          <xs:documentation>The name of the layer</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="Type" type="xs:integer">
+        <xs:annotation>
+          <xs:documentation>The type of this layer. Can be tiled or dynamic. Uses the value of MgLayerType</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="LegendLabel" type="xs:string">
+        <xs:annotation>
+          <xs:documentation>The layer's legend label</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="ObjectId" type="xs:string">
+        <xs:annotation>
+          <xs:documentation>The layer's unique id. Use this value for turning on/off this layer in a GETDYNAMICMAPOVERLAYIMAGE request</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="ParentId" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation>The layer's parent group id. Use this value for determining parent-child relationships when building a layer/group hierarchy</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="DisplayInLegend" type="xs:boolean">
+        <xs:annotation>
+          <xs:documentation>Indicates whether this layer should be displayed in the legend</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="ExpandInLegend" type="xs:boolean">
+        <xs:annotation>
+          <xs:documentation>Indicates whether this layer should be initially expanded (if layer is themed) in the legend</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="Visible" type="xs:boolean">
+        <xs:annotation>
+          <xs:documentation>Indicates whether this layer is potentially visible. Note that this may be true even though the layer is not visible. This will occur if the visible flag of one of the groups this layer is organized within is not visible or when the current viewScale property of the map is outside the scale ranges defined for this layer.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="ActuallyVisible" type="xs:boolean">
+        <xs:annotation>
+          <xs:documentation>Indicates the actual visibility of the layer. The visibility depends on the visible property of the group, and the visible property of each group this group is organized within.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="LayerDefinition" type="xs:string">
+        <xs:annotation>
+          <xs:documentation>The Layer Definition from which this runtime layer was created from</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="FeatureSource" type="FeatureSourceInfo" minOccurs="0" />
+      <xs:element name="ScaleRange" type="ScaleRangeInfo" minOccurs="0" maxOccurs="unbounded" />
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="FeatureSourceInfo">
+    <xs:annotation>
+      <xs:documentation>Describe the Feature Source information for a runtime layer</xs:documentation>
+    </xs:annotation>
+    <xs:sequence>
+      <xs:element name="ResourceId" type="xs:string">
+        <xs:annotation>
+          <xs:documentation>The Feature Source resource id</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="ClassName" type="xs:string">
+        <xs:annotation>
+          <xs:documentation>The qualified FDO class name</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="Geometry" type="xs:string">
+        <xs:annotation>
+          <xs:documentation>The name of the default Geometry property</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="ScaleRangeInfo">
+    <xs:annotation>
+      <xs:documentation>Describes a scale range of the runtime layer</xs:documentation>
+    </xs:annotation>
+    <xs:sequence>
+      <xs:element name="MinScale" type="xs:double">
+        <xs:annotation>
+          <xs:documentation>The minimum scale of this scale range</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="MaxScale" type="xs:double">
+        <xs:annotation>
+          <xs:documentation>The maximum scale of this scale range</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="FeatureStyle" type="FeatureStyleInfo" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation>The feature style for a given geometry type. This is empty for drawing and raster layers</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="FeatureStyleInfo">
+    <xs:annotation>
+      <xs:documentation>Defines the style rules for a given geometry type</xs:documentation>
+    </xs:annotation>
+    <xs:sequence>
+      <xs:element name="Type" type="xs:integer">
+        <xs:annotation>
+          <xs:documentation>The geometry type that this rule is applicable to (1=point, 2=line, 3=area, 4=composite)</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="Rule" type="RuleInfo" minOccurs="0" maxOccurs="unbounded" />
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="RuleInfo">
+    <xs:annotation>
+      <xs:documentation>Describes a stylization rule in a layer's scale range</xs:documentation>
+    </xs:annotation>
+    <xs:sequence>
+      <xs:element name="LegendLabel" type="xs:string">
+        <xs:annotation>
+          <xs:documentation>The legend label for this rule</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="Filter" type="xs:string">
+        <xs:annotation>
+          <xs:documentation>The FDO filter that features must match in order for them to be stylized using this particular rule</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="Icon" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation>Defines the icon for this rule. The icon's image content is in base64 format</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="Envelope">
+    <xs:annotation>
+      <xs:documentation>Specifies an envelope (a rectangle) using two corner points.</xs:documentation>
+    </xs:annotation>
+    <xs:sequence>
+      <xs:element name="LowerLeftCoordinate">
+        <xs:annotation>
+          <xs:documentation>Specifies the lower left corner of the envelope.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="X" type="xs:double"/>
+            <xs:element name="Y" type="xs:double"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="UpperRightCoordinate">
+        <xs:annotation>
+          <xs:documentation>Specifies the upper right corner of the envelope.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="X" type="xs:double"/>
+            <xs:element name="Y" type="xs:double"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:sequence>
+  </xs:complexType>
+</xs:schema>
\ No newline at end of file

Copied: trunk/MgDev/Doc/samples/ol2samples/assets/legend_ol.js (from rev 9559, sandbox/jng/tiling_v3/Doc/samples/ol2samples/assets/legend_ol.js)
===================================================================
--- trunk/MgDev/Doc/samples/ol2samples/assets/legend_ol.js	                        (rev 0)
+++ trunk/MgDev/Doc/samples/ol2samples/assets/legend_ol.js	2019-06-25 11:20:14 UTC (rev 9560)
@@ -0,0 +1,241 @@
+//A simple legend to toggle MapGuide Layer visbility for a OpenLayers.Layer.MapGuide instance
+//
+//NOTE: Only tested with the Sheboygan dataset. Probably doesn't handle all corner cases that can be possible with a MapGuide Map Definition
+//NOTE: This uses the "clean" mapguide-rest JSON APIs which does not blindly array-ify every JSON property
+//Requires: OpenLayers, jQuery
+
+function Legend(options)
+{
+    var legendSelector = options.legendSelector;
+    this.map = options.map;
+    this.mgLayer = options.mgLayerOL;
+    this.mgTiledLayers = options.mgTiledLayers || {};
+    this.debug = false;
+
+    var rtMapInfo = options.runtimeMap;
+    this.dpi = rtMapInfo.RuntimeMap.DisplayDpi;
+    this.inPerUnit = rtMapInfo.RuntimeMap.CoordinateSystem.MetersPerUnit * 39.37;
+
+    this.iconMimeType = rtMapInfo.RuntimeMap.IconMimeType;
+    
+    this.stdIconRoot = options.stdIconRoot || "../../stdicons";
+    this.rootEl = $(legendSelector);
+    
+    var _self = this;
+    
+    this.map.getView().on("change:resolution", this.update, this);
+    
+    this.updateLayersAndGroups(rtMapInfo);
+    
+    //$("input.group-checkbox", this.rootEl).change(function() {
+    this.rootEl.on("change", "input.group-checkbox", function() {
+        var el = $(this);
+        var bShow = el.is(":checked");
+        if (el.attr("data-is-tiled") == "true") {
+            var name = el.attr("data-group-name");
+            if (typeof(_self.mgTiledLayers[name]) != 'undefined') {
+                _self.mgTiledLayers[name].setVisible(bShow);
+            }
+        } else {
+            var objId = el.val();
+            _self.showGroup(objId, bShow);
+        }
+    });
+    
+    //$("input.layer-checkbox", this.rootEl).change(function() {
+    this.rootEl.on("change", "input.layer-checkbox", function() {
+        var el = $(this);
+        var bShow = el.is(":checked");
+        var objId = el.val();
+        _self.showLayer(objId, bShow);
+    });
+    
+    this.req = {
+        showgroups: null,
+        showlayers: null,
+        hidegroups: null,
+        hidelayers: null
+    };
+}
+
+Legend.prototype.updateLayersAndGroups = function(rtMapInfo) {
+    this.mapInfo = rtMapInfo;
+    var groupElMap = {};
+    this.rootEl.empty();
+    if (rtMapInfo.RuntimeMap.Group) {
+        var remainingGroups = {};
+        //1st pass, un-parented groups
+        for (var i = 0; i < rtMapInfo.RuntimeMap.Group.length; i++) {
+            var group = rtMapInfo.RuntimeMap.Group[i];
+            if (group.ParentId) {
+                remainingGroups[group.ObjectId] = group;
+                continue;
+            }
+            var el = this.createGroupElement(group);
+            groupElMap[group.ObjectId] = el;
+            this.rootEl.append(el);
+        }
+        //2nd pass, parented groups
+        var itemCount = 0;
+        for (var objId in remainingGroups) {
+            itemCount++;
+        }
+        //Whittle down
+        while(itemCount > 0) {
+            var removeIds = [];
+            for (var objId in remainingGroups) {
+                var group = remainingGroups[objId];
+                //Do we have a parent?
+                if (typeof(groupElMap[group.ParentId]) != 'undefined') {
+                    var el = this.createGroupElement(group);
+                    groupElMap[group.ObjectId] = el;
+                    groupElMap[group.ParentId].find("ul.groupChildren").append(el);
+                    removeIds.push(group.ObjectId);
+                }
+            }
+            for (var i = 0; i < removeIds.length; i++) {
+                delete remainingGroups[removeIds[i]];
+            }
+        
+            itemCount = 0;
+            for (var objId in remainingGroups) {
+                itemCount++;
+            }
+        }
+    }
+    if (rtMapInfo.RuntimeMap.Layer) {
+        for (var i = 0; i < rtMapInfo.RuntimeMap.Layer.length; i++) {
+            var layer = rtMapInfo.RuntimeMap.Layer[i];
+            var els = this.createLayerElements(layer);
+            for (var j = 0; j < els.length; j++) {
+                if (layer.ParentId) {
+                    groupElMap[layer.ParentId].find("ul.groupChildren").append(els[j]);
+                } else {
+                    this.rootEl.append(els[j]);
+                }
+            }
+        }
+    }
+};
+
+Legend.prototype.resetRequest = function() {
+    this.req.showgroups = null;
+    this.req.showlayers = null;
+    this.req.hidegroups = null;
+    this.req.hidelayers = null;
+};
+
+Legend.prototype.refreshLayer = function() {
+    this.mgLayer.getSource().updateParams({ seq: (new Date()).getTime() });
+};
+
+Legend.prototype.updateMgLayer_ = function() {
+    //this.mgLayer.mergeNewParams(this.req);
+    this.mgLayer.getSource().updateParams(this.req);
+};
+
+Legend.prototype.showGroup = function(groupId, bShow) {
+    this.resetRequest();
+    if (bShow)
+        this.req.showgroups = groupId;
+    else
+        this.req.hidegroups = groupId;
+    this.updateMgLayer_();
+};
+
+Legend.prototype.showLayer = function(layerId, bShow) {
+    this.resetRequest();
+    if (bShow)
+        this.req.showlayers = layerId;
+    else
+        this.req.hidelayers = layerId;
+    this.updateMgLayer_();
+};
+
+Legend.prototype.getScale = function() {
+    return this.map.getView().getResolution() * this.dpi * this.inPerUnit;
+};
+
+Legend.prototype.update = function() {
+    var scale = this.getScale();
+    var nodes = $("li.layer-node");
+    nodes.each(function(i, e) {
+        var el = $(e);
+        var min = el.attr("data-layer-min-scale");
+        var max = el.attr("data-layer-max-scale");
+        if ((scale >= min && scale < max) || (scale >= min && max==="infinity")) {
+            if (el.is(":hidden"))
+                el.show();
+        } else {
+            if (el.is(":visible"))
+                el.hide();
+        }
+    });
+};
+
+Legend.prototype.createGroupElement = function(group) {
+    return $("<li><input type='checkbox' class='group-checkbox' data-is-tiled='" + (group.Type == 2 || group.Type == 3) + "' data-group-name='" + group.Name + "' value='" + group.ObjectId + "' " + ((group.Visible) ? "checked='checked'" : "") + " /><img src='" + this.stdIconRoot + "/lc_group.gif' /> " + group.LegendLabel + "<ul class='groupChildren'></ul></li>");
+};
+
+Legend.prototype.getIconUri = function(iconBase64) {
+    return "data:" + this.iconMimeType + ";base64," + iconBase64;
+};
+
+Legend.prototype.createLayerElements = function(layer) {
+    var icon = "legend-layer.png";
+    var label = layer.LegendLabel ? layer.LegendLabel : "";
+    var text = label;
+    var childHtml = "";
+    //This is using the first scale range and the first geometry type. To do this proper you'd find the matching scale range
+    //based on the current map's view scale. Then dynamically, toggle item visibility when the map scale
+    //changes
+    var els = [];
+    if (layer.ScaleRange) {
+        for (var i = 0; i < layer.ScaleRange.length; i++) {
+            var scaleRange = layer.ScaleRange[i];
+            if (scaleRange.FeatureStyle) {
+                if (this.debug)
+                    text = label + " (" + scaleRange.MinScale + " - " + scaleRange.MaxScale + ")";
+                var fts = scaleRange.FeatureStyle[0];
+                var ruleCount = fts.Rule.length;
+                if (ruleCount > 1) {
+                    icon = this.stdIconRoot + "/lc_theme.gif";
+                    childHtml = "<ul>";
+                    //Test compression
+                    var bCompressed = false;
+                    if (ruleCount > 3) {
+                        bCompressed = !(fts.Rule[1].Icon);
+                    }
+                    if (bCompressed) {
+                        childHtml += "<li><img src='" + this.getIconUri(fts.Rule.Icon) + "' /> " + (fts.Rule.LegendLabel ? fts.Rule.LegendLabel : "") + "</li>";
+                        childHtml += "<li>... (" + (ruleCount - 2) + " other theme rules)</li>";
+                        childHtml += "<li><img src='" + this.getIconUri(fts.Rule[ruleCount-1].Icon) + "' /> " + (fts.Rule[ruleCount-1].LegendLabel ? fts.Rule[ruleCount-1].LegendLabel : "") + "</li>";
+                    } else {
+                        for (var i = 0; i < ruleCount; i++) {
+                            var rule = fts.Rule[i];
+                            childHtml += "<li><img src='" + this.getIconUri(rule.Icon) + "' /> " + (rule.LegendLabel ? rule.LegendLabel : "") + "</li>";
+                        }
+                    }
+                    childHtml += "</ul>";
+                } else {
+                    icon = this.getIconUri(fts.Rule[0].Icon);
+                }
+                var chkBoxHtml = "";
+                if (layer.Type == 1) //Dynamic
+                    chkBoxHtml = "<input type='checkbox' class='layer-checkbox' value='" + layer.ObjectId + "' " + ((layer.Visible == true) ? "checked='checked'" : "") + " />";
+                els.push($("<li class='layer-node' data-layer-name='" + layer.Name + "' data-layer-selectable='" + layer.Selectable + "' data-layer-min-scale='" + scaleRange.MinScale + "' data-layer-max-scale='" + scaleRange.MaxScale + "'>" + chkBoxHtml + "<img src='" + icon + "' /> " + text + childHtml + "</li>"));
+            }
+        }
+    }
+    return els;
+};
+
+Legend.prototype.getSelectedLayerNames = function() {
+    var names = [];
+    $("li.layer-node:visible").each(function(i, e) {
+        var el = $(e);
+        if (el.data("layer-selectable") == true)
+            names.push(el.data("layer-name"));
+    });
+    return names;
+};
\ No newline at end of file

Copied: trunk/MgDev/Doc/samples/ol2samples/xyz/index_ol.html (from rev 9559, sandbox/jng/tiling_v3/Doc/samples/ol2samples/xyz/index_ol.html)
===================================================================
--- trunk/MgDev/Doc/samples/ol2samples/xyz/index_ol.html	                        (rev 0)
+++ trunk/MgDev/Doc/samples/ol2samples/xyz/index_ol.html	2019-06-25 11:20:14 UTC (rev 9560)
@@ -0,0 +1,74 @@
+<html>
+    <head>
+        <title>Sheboygan map as XYZ</title>
+        <link rel="stylesheet" href="../assets/ol.css" />
+        <style type="text/css">
+            #error { color: red; }
+            #wrap { width: 900; }
+            #map { width: 400; height: 300; float: left; border: 1px solid black; }
+            #main { margin-top: 50px; padding-top: 20px; }
+        </style>
+        <script type="text/javascript" src="../assets/ol-debug.js"></script>
+        <script type="text/javascript" src="../assets/jquery-1.10.2.min.js"></script>
+        <script type="text/javascript">
+
+        //This sample is assumed to be hosted at http://servername/mapguide/ol2samples/xyz/index_ol.html
+        var mapAgentUrl = "../../mapagent/mapagent.fcgi";
+
+        $(document).ready(function() {
+            //NOTE: Your map definition can be in any coordinate system as long as it it transformable to LL84
+            //
+            //But the ol3 tile layer must remain as EPSG:3857
+
+            var map = new ol.Map({
+              layers: [
+                new ol.layer.Tile({
+                  source: new ol.source.OSM({
+                    attributions: [
+                      new ol.Attribution({
+                        html: 'Tiles © <a href="http://www.openstreetmap.org/">' +
+                            'OpenStreetMap</a>'
+                      }),
+                      ol.source.OSM.ATTRIBUTION
+                    ],
+                    url: 'http://{a-c}.tile.openstreetmap.org/{z}/{x}/{y}.png'
+                  })
+                }),
+                new ol.layer.Tile({
+                  source: new ol.source.XYZ({
+                    url: mapAgentUrl + "?OPERATION=GETTILEIMAGE&VERSION=1.2.0&CLIENTAGENT=OpenLayers&USERNAME=Anonymous&MAPDEFINITION=Library://Samples/Sheboygan/TileSets/SheboyganXYZ.TileSetDefinition&BASEMAPLAYERGROUPNAME=Base+Layer+Group&TILECOL={y}&TILEROW={x}&SCALEINDEX={z}"
+                  })
+                })
+              ],
+              renderer: 'canvas',
+              target: document.getElementById('map'),
+              view: new ol.View({
+                center: ol.proj.transform([-87.7302542509315, 43.744459064634], 'EPSG:4326', 'EPSG:3857'),
+                minZoom: 10,
+                maxZoom: 19,
+                zoom: 12
+              })
+            });
+        });
+
+        </script>
+    </head>
+    <body>
+        <div id="main">
+            <div class="container">
+                <div class="alert alert-info">
+                    <p>This example demonstrates a Map Definition being consumed as a <strong>XYZ layer</strong> via the MapGuide REST API with <a href="http://openlayers.org/">OpenLayers 3</a>.</p>
+                    <p>An OpenStreetMap layer is included as a backdrop for context</p>
+                    <strong>For maximum visual fidelity, your Map Definition should be in WGS84.PseudoMercator</strong>
+                    <p>Sample not loading? <a href="../data/load.php">Check that the required resources have been loaded</a></p>
+                </div>
+                <div id="error">
+                </div>
+                <div id="wrap">
+                    <div id="map">
+                    </div>
+                </div>
+            </div>
+        </div>
+    </body>
+</html>

Modified: trunk/MgDev/Doc/samples/samples.php
===================================================================
--- trunk/MgDev/Doc/samples/samples.php	2019-06-22 08:42:36 UTC (rev 9559)
+++ trunk/MgDev/Doc/samples/samples.php	2019-06-25 11:20:14 UTC (rev 9560)
@@ -123,6 +123,8 @@
                 </ul>
                 <p class="sample-header">MapGuide with <a href="http://www.openlayers.org">OpenLayers</a></p>
                 <ul>
+                    <li><a href="ol2samples/hybrid/index.html">Open any map or tile set</a></li>
+                    <li><a href="ol2samples/xyz/index_ol.html">Sheboygan map as XYZ layer</a></li>
                     <li><a href="ol2samples/utfgrid/index.html">Sheboygan map as XYZ layer with UTFGrid interaction tiles</a></li>
                 </ul>
                 <? } ?>

Modified: trunk/MgDev/Server/src/PostBuild/PostBuild.mak
===================================================================
--- trunk/MgDev/Server/src/PostBuild/PostBuild.mak	2019-06-22 08:42:36 UTC (rev 9559)
+++ trunk/MgDev/Server/src/PostBuild/PostBuild.mak	2019-06-25 11:20:14 UTC (rev 9560)
@@ -170,6 +170,7 @@
         ..\..\bin\UnitTestFiles\UT_BaseMap_Metatiled.tsd \
         ..\..\bin\UnitTestFiles\UT_XYZ_Metatiled.tsd \
         ..\..\bin\UnitTestFiles\UT_LinkedTileSet.mdf \
+        ..\..\bin\UnitTestFiles\UT_LinkedTileSetXYZ.mdf \
         ..\..\bin\UnitTestFiles\UT_StylizationFuncs.mdf \
         ..\..\bin\UnitTestFiles\UT_Parcels.fs \
         ..\..\bin\UnitTestFiles\UT_Parcels.ldf \
@@ -450,6 +451,7 @@
         ..\..\bin\UnitTestFiles\UT_BaseMap_Metatiled.tsd \
         ..\..\bin\UnitTestFiles\UT_XYZ_Metatiled.tsd \
         ..\..\bin\UnitTestFiles\UT_LinkedTileSet.mdf \
+        ..\..\bin\UnitTestFiles\UT_LinkedTileSetXYZ.mdf \
         ..\..\bin\UnitTestFiles\UT_StylizationFuncs.mdf \
         ..\..\bin\UnitTestFiles\UT_Parcels.fs \
         ..\..\bin\UnitTestFiles\UT_Parcels.ldf \
@@ -730,6 +732,7 @@
           ..\..\bin\UnitTestFiles\UT_BaseMap_Metatiled.tsd \
           ..\..\bin\UnitTestFiles\UT_XYZ_Metatiled.tsd \
           ..\..\bin\UnitTestFiles\UT_LinkedTileSet.mdf \
+          ..\..\bin\UnitTestFiles\UT_LinkedTileSetXYZ.mdf \
           ..\..\bin\UnitTestFiles\UT_StylizationFuncs.mdf \
           ..\..\bin\UnitTestFiles\UT_Parcels.fs \
           ..\..\bin\UnitTestFiles\UT_Parcels.ldf \
@@ -1010,6 +1013,7 @@
           ..\..\bin\UnitTestFiles\UT_BaseMap_Metatiled.tsd \
           ..\..\bin\UnitTestFiles\UT_XYZ_Metatiled.tsd \
           ..\..\bin\UnitTestFiles\UT_LinkedTileSet.mdf \
+          ..\..\bin\UnitTestFiles\UT_LinkedTileSetXYZ.mdf \
           ..\..\bin\UnitTestFiles\UT_StylizationFuncs.mdf \
           ..\..\bin\UnitTestFiles\UT_Parcels.fs \
           ..\..\bin\UnitTestFiles\UT_Parcels.ldf \
@@ -1163,6 +1167,7 @@
     if EXIST ..\..\bin\UnitTestFiles\UT_BaseMap_Metatiled.tsd       del /F ..\..\bin\UnitTestFiles\UT_BaseMap_Metatiled.tsd
     if EXIST ..\..\bin\UnitTestFiles\UT_XYZ_Metatiled.tsd           del /F ..\..\bin\UnitTestFiles\UT_XYZ_Metatiled.tsd
     if EXIST ..\..\bin\UnitTestFiles\UT_LinkedTileSet.mdf           del /F ..\..\bin\UnitTestFiles\UT_LinkedTileSet.mdf
+    if EXIST ..\..\bin\UnitTestFiles\UT_LinkedTileSetXYZ.mdf        del /F ..\..\bin\UnitTestFiles\UT_LinkedTileSetXYZ.mdf
     if EXIST ..\..\bin\UnitTestFiles\UT_StylizationFuncs.mdf        del /F ..\..\bin\UnitTestFiles\UT_StylizationFuncs.mdf
     if EXIST ..\..\bin\UnitTestFiles\UT_Parcels.fs                  del /F ..\..\bin\UnitTestFiles\UT_Parcels.fs
     if EXIST ..\..\bin\UnitTestFiles\UT_Parcels.ldf                 del /F ..\..\bin\UnitTestFiles\UT_Parcels.ldf
@@ -1311,6 +1316,7 @@
     if EXIST ..\..\bin\UnitTestFiles\UT_BaseMap_Metatiled.tsd       del /F ..\..\bin\UnitTestFiles\UT_BaseMap_Metatiled.tsd
     if EXIST ..\..\bin\UnitTestFiles\UT_XYZ_Metatiled.tsd           del /F ..\..\bin\UnitTestFiles\UT_XYZ_Metatiled.tsd
     if EXIST ..\..\bin\UnitTestFiles\UT_LinkedTileSet.mdf           del /F ..\..\bin\UnitTestFiles\UT_LinkedTileSet.mdf
+    if EXIST ..\..\bin\UnitTestFiles\UT_LinkedTileSetXYZ.mdf        del /F ..\..\bin\UnitTestFiles\UT_LinkedTileSetXYZ.mdf
     if EXIST ..\..\bin\UnitTestFiles\UT_StylizationFuncs.mdf        del /F ..\..\bin\UnitTestFiles\UT_StylizationFuncs.mdf
     if EXIST ..\..\bin\UnitTestFiles\UT_Parcels.fs                  del /F ..\..\bin\UnitTestFiles\UT_Parcels.fs
     if EXIST ..\..\bin\UnitTestFiles\UT_Parcels.ldf                 del /F ..\..\bin\UnitTestFiles\UT_Parcels.ldf
@@ -1459,6 +1465,7 @@
     if EXIST ..\..\bin\UnitTestFiles\UT_BaseMap_Metatiled.tsd       del /F ..\..\bin\UnitTestFiles\UT_BaseMap_Metatiled.tsd
     if EXIST ..\..\bin\UnitTestFiles\UT_XYZ_Metatiled.tsd           del /F ..\..\bin\UnitTestFiles\UT_XYZ_Metatiled.tsd
     if EXIST ..\..\bin\UnitTestFiles\UT_LinkedTileSet.mdf           del /F ..\..\bin\UnitTestFiles\UT_LinkedTileSet.mdf
+    if EXIST ..\..\bin\UnitTestFiles\UT_LinkedTileSetXYZ.mdf        del /F ..\..\bin\UnitTestFiles\UT_LinkedTileSetXYZ.mdf
     if EXIST ..\..\bin\UnitTestFiles\UT_StylizationFuncs.mdf        del /F ..\..\bin\UnitTestFiles\UT_StylizationFuncs.mdf
     if EXIST ..\..\bin\UnitTestFiles\UT_Parcels.fs                  del /F ..\..\bin\UnitTestFiles\UT_Parcels.fs
     if EXIST ..\..\bin\UnitTestFiles\UT_Parcels.ldf                 del /F ..\..\bin\UnitTestFiles\UT_Parcels.ldf
@@ -1605,6 +1612,7 @@
     if EXIST ..\..\bin\UnitTestFiles\UT_BaseMap_Metatiled.tsd       del /F ..\..\bin\UnitTestFiles\UT_BaseMap_Metatiled.tsd
     if EXIST ..\..\bin\UnitTestFiles\UT_XYZ_Metatiled.tsd           del /F ..\..\bin\UnitTestFiles\UT_XYZ_Metatiled.tsd
     if EXIST ..\..\bin\UnitTestFiles\UT_LinkedTileSet.mdf           del /F ..\..\bin\UnitTestFiles\UT_LinkedTileSet.mdf
+    if EXIST ..\..\bin\UnitTestFiles\UT_LinkedTileSetXYZ.mdf        del /F ..\..\bin\UnitTestFiles\UT_LinkedTileSetXYZ.mdf
     if EXIST ..\..\bin\UnitTestFiles\UT_StylizationFuncs.mdf        del /F ..\..\bin\UnitTestFiles\UT_StylizationFuncs.mdf
     if EXIST ..\..\bin\UnitTestFiles\UT_Parcels.fs                  del /F ..\..\bin\UnitTestFiles\UT_Parcels.fs
     if EXIST ..\..\bin\UnitTestFiles\UT_Parcels.ldf                 del /F ..\..\bin\UnitTestFiles\UT_Parcels.ldf
@@ -1878,6 +1886,7 @@
         ..\..\bin\UnitTestFiles\UT_BaseMap_Metatiled.tsd \
         ..\..\bin\UnitTestFiles\UT_XYZ_Metatiled.tsd \
         ..\..\bin\UnitTestFiles\UT_LinkedTileSet.mdf \
+        ..\..\bin\UnitTestFiles\UT_LinkedTileSetXYZ.mdf \
         ..\..\bin\UnitTestFiles\UT_StylizationFuncs.mdf \
         ..\..\bin\UnitTestFiles\UT_Parcels.fs \
         ..\..\bin\UnitTestFiles\UT_Parcels.ldf \
@@ -2151,6 +2160,7 @@
         ..\..\bin\UnitTestFiles\UT_BaseMap_Metatiled.tsd \
         ..\..\bin\UnitTestFiles\UT_XYZ_Metatiled.tsd \
         ..\..\bin\UnitTestFiles\UT_LinkedTileSet.mdf \
+        ..\..\bin\UnitTestFiles\UT_LinkedTileSetXYZ.mdf \
         ..\..\bin\UnitTestFiles\UT_StylizationFuncs.mdf \
         ..\..\bin\UnitTestFiles\UT_Parcels.fs \
         ..\..\bin\UnitTestFiles\UT_Parcels.ldf \
@@ -2424,6 +2434,7 @@
           ..\..\bin\UnitTestFiles\UT_BaseMap_Metatiled.tsd \
           ..\..\bin\UnitTestFiles\UT_XYZ_Metatiled.tsd \
           ..\..\bin\UnitTestFiles\UT_LinkedTileSet.mdf \
+          ..\..\bin\UnitTestFiles\UT_LinkedTileSetXYZ.mdf \
           ..\..\bin\UnitTestFiles\UT_StylizationFuncs.mdf \
           ..\..\bin\UnitTestFiles\UT_Parcels.fs \
           ..\..\bin\UnitTestFiles\UT_Parcels.ldf \
@@ -2697,6 +2708,7 @@
           ..\..\bin\UnitTestFiles\UT_BaseMap_Metatiled.tsd \
           ..\..\bin\UnitTestFiles\UT_XYZ_Metatiled.tsd \
           ..\..\bin\UnitTestFiles\UT_LinkedTileSet.mdf \
+          ..\..\bin\UnitTestFiles\UT_LinkedTileSetXYZ.mdf \
           ..\..\bin\UnitTestFiles\UT_StylizationFuncs.mdf \
           ..\..\bin\UnitTestFiles\UT_Parcels.fs \
           ..\..\bin\UnitTestFiles\UT_Parcels.ldf \
@@ -2843,6 +2855,7 @@
     if EXIST ..\..\bin\UnitTestFiles\UT_BaseMap_Metatiled.tsd       del /F ..\..\bin\UnitTestFiles\UT_BaseMap_Metatiled.tsd
     if EXIST ..\..\bin\UnitTestFiles\UT_XYZ_Metatiled.tsd           del /F ..\..\bin\UnitTestFiles\UT_XYZ_Metatiled.tsd
     if EXIST ..\..\bin\UnitTestFiles\UT_LinkedTileSet.mdf           del /F ..\..\bin\UnitTestFiles\UT_LinkedTileSet.mdf
+    if EXIST ..\..\bin\UnitTestFiles\UT_LinkedTileSetXYZ.mdf        del /F ..\..\bin\UnitTestFiles\UT_LinkedTileSetXYZ.mdf
     if EXIST ..\..\bin\UnitTestFiles\UT_StylizationFuncs.mdf        del /F ..\..\bin\UnitTestFiles\UT_StylizationFuncs.mdf
     if EXIST ..\..\bin\UnitTestFiles\UT_Parcels.fs                  del /F ..\..\bin\UnitTestFiles\UT_Parcels.fs
     if EXIST ..\..\bin\UnitTestFiles\UT_Parcels.ldf                 del /F ..\..\bin\UnitTestFiles\UT_Parcels.ldf
@@ -2984,6 +2997,7 @@
     if EXIST ..\..\bin\UnitTestFiles\UT_BaseMap_Metatiled.tsd       del /F ..\..\bin\UnitTestFiles\UT_BaseMap_Metatiled.tsd
     if EXIST ..\..\bin\UnitTestFiles\UT_XYZ_Metatiled.tsd           del /F ..\..\bin\UnitTestFiles\UT_XYZ_Metatiled.tsd
     if EXIST ..\..\bin\UnitTestFiles\UT_LinkedTileSet.mdf           del /F ..\..\bin\UnitTestFiles\UT_LinkedTileSet.mdf
+    if EXIST ..\..\bin\UnitTestFiles\UT_LinkedTileSetXYZ.mdf        del /F ..\..\bin\UnitTestFiles\UT_LinkedTileSetXYZ.mdf
     if EXIST ..\..\bin\UnitTestFiles\UT_StylizationFuncs.mdf        del /F ..\..\bin\UnitTestFiles\UT_StylizationFuncs.mdf
     if EXIST ..\..\bin\UnitTestFiles\UT_Parcels.fs                  del /F ..\..\bin\UnitTestFiles\UT_Parcels.fs
     if EXIST ..\..\bin\UnitTestFiles\UT_Parcels.ldf                 del /F ..\..\bin\UnitTestFiles\UT_Parcels.ldf
@@ -3125,6 +3139,7 @@
     if EXIST ..\..\bin\UnitTestFiles\UT_BaseMap_Metatiled.tsd       del /F ..\..\bin\UnitTestFiles\UT_BaseMap_Metatiled.tsd
     if EXIST ..\..\bin\UnitTestFiles\UT_XYZ_Metatiled.tsd           del /F ..\..\bin\UnitTestFiles\UT_XYZ_Metatiled.tsd
     if EXIST ..\..\bin\UnitTestFiles\UT_LinkedTileSet.mdf           del /F ..\..\bin\UnitTestFiles\UT_LinkedTileSet.mdf
+    if EXIST ..\..\bin\UnitTestFiles\UT_LinkedTileSetXYZ.mdf        del /F ..\..\bin\UnitTestFiles\UT_LinkedTileSetXYZ.mdf
     if EXIST ..\..\bin\UnitTestFiles\UT_StylizationFuncs.mdf        del /F ..\..\bin\UnitTestFiles\UT_StylizationFuncs.mdf
     if EXIST ..\..\bin\UnitTestFiles\UT_Parcels.fs                  del /F ..\..\bin\UnitTestFiles\UT_Parcels.fs
     if EXIST ..\..\bin\UnitTestFiles\UT_Parcels.ldf                 del /F ..\..\bin\UnitTestFiles\UT_Parcels.ldf
@@ -3264,6 +3279,7 @@
     if EXIST ..\..\bin\UnitTestFiles\UT_BaseMap_Metatiled.tsd       del /F ..\..\bin\UnitTestFiles\UT_BaseMap_Metatiled.tsd
     if EXIST ..\..\bin\UnitTestFiles\UT_XYZ_Metatiled.tsd           del /F ..\..\bin\UnitTestFiles\UT_XYZ_Metatiled.tsd
     if EXIST ..\..\bin\UnitTestFiles\UT_LinkedTileSet.mdf           del /F ..\..\bin\UnitTestFiles\UT_LinkedTileSet.mdf
+    if EXIST ..\..\bin\UnitTestFiles\UT_LinkedTileSetXYZ.mdf        del /F ..\..\bin\UnitTestFiles\UT_LinkedTileSetXYZ.mdf
     if EXIST ..\..\bin\UnitTestFiles\UT_StylizationFuncs.mdf        del /F ..\..\bin\UnitTestFiles\UT_StylizationFuncs.mdf
     if EXIST ..\..\bin\UnitTestFiles\UT_Parcels.fs                  del /F ..\..\bin\UnitTestFiles\UT_Parcels.fs
     if EXIST ..\..\bin\UnitTestFiles\UT_Parcels.ldf                 del /F ..\..\bin\UnitTestFiles\UT_Parcels.ldf
@@ -3415,6 +3431,7 @@
 "..\..\..\UnitTest\TestData\TileService\UT_BaseMap_Metatiled.tsd" :
 "..\..\..\UnitTest\TestData\TileService\UT_XYZ_Metatiled.tsd" :
 "..\..\..\UnitTest\TestData\TileService\UT_LinkedTileSet.mdf" :
+"..\..\..\UnitTest\TestData\TileService\UT_LinkedTileSetXYZ.mdf" :
 "..\..\..\UnitTest\TestData\TileService\UT_StylizationFuncs.mdf" :
 "..\..\..\UnitTest\TestData\TileService\UT_Parcels.fs" :
 "..\..\..\UnitTest\TestData\TileService\UT_Parcels.ldf" :
@@ -3698,6 +3715,10 @@
     if NOT EXIST ..\..\bin\UnitTestFiles\nul mkdir ..\..\bin\UnitTestFiles
     if EXIST "..\..\..\UnitTest\TestData\TileService\UT_LinkedTileSet.mdf" xcopy /r /d /y "..\..\..\UnitTest\TestData\TileService\UT_LinkedTileSet.mdf" ..\..\bin\UnitTestFiles\
 
+..\..\bin\UnitTestFiles\UT_LinkedTileSetXYZ.mdf : "..\..\..\UnitTest\TestData\TileService\UT_LinkedTileSetXYZ.mdf"
+    if NOT EXIST ..\..\bin\UnitTestFiles\nul mkdir ..\..\bin\UnitTestFiles
+    if EXIST "..\..\..\UnitTest\TestData\TileService\UT_LinkedTileSetXYZ.mdf" xcopy /r /d /y "..\..\..\UnitTest\TestData\TileService\UT_LinkedTileSetXYZ.mdf" ..\..\bin\UnitTestFiles\
+
 ..\..\bin\UnitTestFiles\UT_StylizationFuncs.mdf : "..\..\..\UnitTest\TestData\TileService\UT_StylizationFuncs.mdf"
     if NOT EXIST ..\..\bin\UnitTestFiles\nul mkdir ..\..\bin\UnitTestFiles
     if EXIST "..\..\..\UnitTest\TestData\TileService\UT_StylizationFuncs.mdf" xcopy /r /d /y "..\..\..\UnitTest\TestData\TileService\UT_StylizationFuncs.mdf" ..\..\bin\UnitTestFiles\

Modified: trunk/MgDev/Server/src/Services/Mapping/ServerMappingService.cpp
===================================================================
--- trunk/MgDev/Server/src/Services/Mapping/ServerMappingService.cpp	2019-06-22 08:42:36 UTC (rev 9559)
+++ trunk/MgDev/Server/src/Services/Mapping/ServerMappingService.cpp	2019-06-25 11:20:14 UTC (rev 9560)
@@ -1249,8 +1249,11 @@
     std::string xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";  // NOXLATE
     if (schemaVersion == MG_API_VERSION(2, 6, 0))
         xml.append("<RuntimeMap xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"RuntimeMap-2.6.0.xsd\">\n");
+    else if (schemaVersion == MG_API_VERSION(3, 0, 0))
+        xml.append("<RuntimeMap xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"RuntimeMap-3.0.0.xsd\" version=\"3.0.0\">\n");
     else
-        xml.append("<RuntimeMap xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"RuntimeMap-3.0.0.xsd\" version=\"3.0.0\">\n");
+        xml.append("<RuntimeMap xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"RuntimeMap-4.0.0.xsd\" version=\"4.0.0\">\n");
+
     // ------------------------------ Site Version ----------------------------------//
     xml.append("<SiteVersion>");
     MgServerManager* serverMgr = MgServerManager::GetInstance();
@@ -1265,12 +1268,25 @@
     xml.append(MgUtil::WideCharToMultiByte(targetMapName));
     xml.append("</Name>\n");
     // ------------------------------ Map Definition ID --------------------------------- //
-    xml.append("<MapDefinition>");
-    xml.append(MgUtil::WideCharToMultiByte(mapDefinition->ToString()));
-    xml.append("</MapDefinition>\n");
-    //Write tile set definition if requesting a v3.0.0 response
-    if (NULL != (MgResourceIdentifier*)tileSetDefinition && schemaVersion == MG_API_VERSION(3, 0, 0))
+    if (schemaVersion >= MG_API_VERSION(4, 0, 0))
     {
+        //Map Definition may be null under this version
+        if (NULL != mapDefinition.p)
+        {
+            xml.append("<MapDefinition>");
+            xml.append(MgUtil::WideCharToMultiByte(mapDefinition->ToString()));
+            xml.append("</MapDefinition>\n");
+        }
+    }
+    else
+    {
+        xml.append("<MapDefinition>");
+        xml.append(MgUtil::WideCharToMultiByte(mapDefinition->ToString()));
+        xml.append("</MapDefinition>\n");
+    }
+    //Write tile set definition if requesting a v3.0.0 response or higher
+    if (NULL != (MgResourceIdentifier*)tileSetDefinition && schemaVersion >= MG_API_VERSION(3, 0, 0))
+    {
         if (m_svcTile == NULL)
             InitializeTileService();
 
@@ -1283,6 +1299,23 @@
         xml.append("<TileSetDefinition>");
         xml.append(MgUtil::WideCharToMultiByte(tileSetDefinition->ToString()));
         xml.append("</TileSetDefinition>\n");
+        // ------------------------------ Tile Set Provider --------------------------------- //
+        if (schemaVersion == MG_API_VERSION(4, 0, 0))
+        {
+            xml.append("<TileSetProvider>");
+            xml.append(MgUtil::WideCharToMultiByte(map->GetTileSetProvider()));
+            xml.append("</TileSetProvider>\n");
+
+            xml.append("<TileFormat>");
+            xml.append(MgUtil::WideCharToMultiByte(map->GetTileFormat()));
+            xml.append("</TileFormat>\n");
+
+            xml.append("<TilePixelRatio>");
+            std::string sPR;
+            MgUtil::Int32ToString(map->GetTilePixelRatio(), sPR);
+            xml.append(sPR);
+            xml.append("</TilePixelRatio>");
+        }
         // ------------------------------ Tile Width ---------------------------------- //
         xml.append("<TileWidth>");
         xml.append(sWidth);

Modified: trunk/MgDev/Server/src/Services/Rendering/OpRenderMetatileXYZ.cpp
===================================================================
--- trunk/MgDev/Server/src/Services/Rendering/OpRenderMetatileXYZ.cpp	2019-06-22 08:42:36 UTC (rev 9559)
+++ trunk/MgDev/Server/src/Services/Rendering/OpRenderMetatileXYZ.cpp	2019-06-25 11:20:14 UTC (rev 9560)
@@ -38,7 +38,7 @@
 
     ACE_ASSERT(m_stream != NULL);
 
-    if (8 == m_packet.m_NumArguments)
+    if (10 == m_packet.m_NumArguments)
     {
         Ptr<MgMap> map = (MgMap*)m_stream->GetObject();
         Ptr<MgResourceIdentifier> resource = map->GetResourceId();
@@ -68,6 +68,9 @@
         INT32 metaTilingFactor = 0;
         m_stream->GetInt32(metaTilingFactor);
 
+        INT32 retinaScale = 1;
+        m_stream->GetInt32(retinaScale);
+
         BeginExecution();
 
         MG_LOG_OPERATION_MESSAGE_PARAMETERS_START();
@@ -88,11 +91,13 @@
         MG_LOG_OPERATION_MESSAGE_ADD_DOUBLE(tileExtentOffset);
         MG_LOG_OPERATION_MESSAGE_ADD_SEPARATOR();
         MG_LOG_OPERATION_MESSAGE_ADD_INT32(metaTilingFactor);
+        MG_LOG_OPERATION_MESSAGE_ADD_SEPARATOR();
+        MG_LOG_OPERATION_MESSAGE_ADD_INT32(retinaScale);
         MG_LOG_OPERATION_MESSAGE_PARAMETERS_END();
 
         Validate();
 
-        Ptr<MgMetatile> metaTile = m_service->RenderMetatileXYZ(map, baseMapLayerGroupName, x, y, z, tileDpi, tileImageFormat, tileExtentOffset, metaTilingFactor);
+        Ptr<MgMetatile> metaTile = m_service->RenderMetatileXYZ(map, baseMapLayerGroupName, x, y, z, tileDpi, tileImageFormat, tileExtentOffset, metaTilingFactor, retinaScale);
 
         EndExecution(metaTile);
     }

Modified: trunk/MgDev/Server/src/Services/Rendering/OpRenderTileXYZ.cpp
===================================================================
--- trunk/MgDev/Server/src/Services/Rendering/OpRenderTileXYZ.cpp	2019-06-22 08:42:36 UTC (rev 9559)
+++ trunk/MgDev/Server/src/Services/Rendering/OpRenderTileXYZ.cpp	2019-06-25 11:20:14 UTC (rev 9560)
@@ -146,7 +146,7 @@
 
         EndExecution(byteReader);
     }
-    else if (8 == m_packet.m_NumArguments)
+    else if (9 == m_packet.m_NumArguments)
     {
         Ptr<MgMap> map = (MgMap*)m_stream->GetObject();
         Ptr<MgResourceIdentifier> resource = map->GetResourceId();
@@ -173,6 +173,9 @@
         double tileExtentOffset = 0.0;
         m_stream->GetDouble(tileExtentOffset);
 
+        INT32 retinaScale = 1;
+        m_stream->GetInt32(retinaScale);
+
         BeginExecution();
 
         MG_LOG_OPERATION_MESSAGE_PARAMETERS_START();
@@ -191,11 +194,13 @@
         MG_LOG_OPERATION_MESSAGE_ADD_STRING(tileImageFormat.c_str());
         MG_LOG_OPERATION_MESSAGE_ADD_SEPARATOR();
         MG_LOG_OPERATION_MESSAGE_ADD_DOUBLE(tileExtentOffset);
+        MG_LOG_OPERATION_MESSAGE_ADD_SEPARATOR();
+        MG_LOG_OPERATION_MESSAGE_ADD_INT32(retinaScale);
         MG_LOG_OPERATION_MESSAGE_PARAMETERS_END();
 
         Validate();
 
-        Ptr<MgByteReader> byteReader = m_service->RenderTileXYZ(map, baseMapLayerGroupName, x, y, z, tileDpi, tileImageFormat, tileExtentOffset);
+        Ptr<MgByteReader> byteReader = m_service->RenderTileXYZ(map, baseMapLayerGroupName, x, y, z, tileDpi, tileImageFormat, tileExtentOffset, retinaScale);
 
         EndExecution(byteReader);
     }

Modified: trunk/MgDev/Server/src/Services/Rendering/RenderingOperationFactory.cpp
===================================================================
--- trunk/MgDev/Server/src/Services/Rendering/RenderingOperationFactory.cpp	2019-06-22 08:42:36 UTC (rev 9559)
+++ trunk/MgDev/Server/src/Services/Rendering/RenderingOperationFactory.cpp	2019-06-25 11:20:14 UTC (rev 9560)
@@ -101,6 +101,7 @@
         switch (VERSION_NO_PHASE(operationVersion))
         {
         case VERSION_SUPPORTED(3,0):
+        case VERSION_SUPPORTED(4,0):
             handler.reset(new MgOpRenderTileXYZ());
             break;
         default:
@@ -119,6 +120,17 @@
                 L"MgRenderingOperationFactory.GetOperation", __LINE__, __WFILE__, NULL, L"", NULL);
         }
         break;
+    case MgRenderingServiceOpId::RenderMetatileXYZ:
+        switch (VERSION_NO_PHASE(operationVersion))
+        {
+        case VERSION_SUPPORTED(4,0):
+            handler.reset(new MgOpRenderMetatileXYZ());
+            break;
+        default:
+            throw new MgInvalidOperationVersionException(
+                L"MgRenderingOperationFactory.GetOperation", __LINE__, __WFILE__, NULL, L"", NULL);
+        }
+        break;
     case MgRenderingServiceOpId::RenderTileFromMetaTile:
         switch (VERSION_NO_PHASE(operationVersion))
         {

Modified: trunk/MgDev/Server/src/Services/Rendering/ServerRenderingService.cpp
===================================================================
--- trunk/MgDev/Server/src/Services/Rendering/ServerRenderingService.cpp	2019-06-22 08:42:36 UTC (rev 9559)
+++ trunk/MgDev/Server/src/Services/Rendering/ServerRenderingService.cpp	2019-06-25 11:20:14 UTC (rev 9560)
@@ -268,7 +268,7 @@
 
     MG_TRY()
 
-    ret = RenderTileXYZ(map, baseMapLayerGroupName, x, y, z, dpi, tileImageFormat, tileExtentOffset);
+    ret = RenderTileXYZ(map, baseMapLayerGroupName, x, y, z, dpi, tileImageFormat, tileExtentOffset, 1 /* retinaScale */);
 
     MG_CATCH_AND_THROW(L"MgServerRenderingService.RenderTileXYZ")
 
@@ -2233,7 +2233,8 @@
                                                       INT32 z,
                                                       INT32 dpi,
                                                       CREFSTRING tileImageFormat,
-                                                      double tileExtentOffset)
+                                                      double tileExtentOffset,
+                                                      INT32 retinaScale)
 {
     Ptr<MgByteReader> ret;
 
@@ -2240,10 +2241,10 @@
     MG_TRY()
 
     INT32 metaTilingFactor = 0;
-    Ptr<MgMetatile> metaTile = RenderMetatileXYZ(map, baseMapLayerGroupName, x, y, z, dpi, tileImageFormat, tileExtentOffset, metaTilingFactor);
+    Ptr<MgMetatile> metaTile = RenderMetatileXYZ(map, baseMapLayerGroupName, x, y, z, dpi, tileImageFormat, tileExtentOffset, metaTilingFactor, retinaScale);
 
-    _ASSERT(metaTile->GetRequestedWidth() == XYZ_TILE_WIDTH);
-    _ASSERT(metaTile->GetRequestedHeight() == XYZ_TILE_HEIGHT);
+    _ASSERT(metaTile->GetRequestedWidth() == (XYZ_TILE_WIDTH * std::max(retinaScale, 1)));
+    _ASSERT(metaTile->GetRequestedHeight() == (XYZ_TILE_HEIGHT * std::max(retinaScale, 1)));
     _ASSERT(metaTile->GetMetaTilingFactor() <= 1);
 
     ret = metaTile->GetImage();
@@ -2375,7 +2376,8 @@
                                                         INT32 dpi,
                                                         CREFSTRING tileImageFormat,
                                                         double tileExtentOffset,
-                                                        INT32 metaTilingFactor)
+                                                        INT32 metaTilingFactor,
+                                                        INT32 retinaScale)
 {
     Ptr<MgMetatile> ret;
 
@@ -2423,8 +2425,11 @@
     StylizationUtil::ParseColor(map->GetBackgroundColor(), bgColor);
     bgColor.alpha() = 0;
     
-    INT32 width = XYZ_TILE_WIDTH * std::max(metaTilingFactor, 1);
-    INT32 height = XYZ_TILE_HEIGHT * std::max(metaTilingFactor, 1);
+    INT32 xyzWidth = (XYZ_TILE_WIDTH * std::max(1, retinaScale));
+    INT32 xyzHeight = (XYZ_TILE_HEIGHT * std::max(1, retinaScale));
+
+    INT32 width = xyzWidth * std::max(metaTilingFactor, 1);
+    INT32 height = xyzHeight * std::max(metaTilingFactor, 1);
     INT32 drawWidth = width;
     INT32 drawHeight = height;
     double scale = 0.0;
@@ -2462,7 +2467,7 @@
         tile = RenderMapInternal(map, NULL, roLayers, dr.get(), drawWidth, drawHeight, drawWidth, drawHeight, format, scale, extent, true, true, false, NULL);
     else
         tile = RenderMapInternal(map, NULL, roLayers, dr.get(), drawWidth, drawHeight, width, height, format, scale, extent, true, true, false, NULL);
-    ret = new MgMetatile(tile, drawWidth, drawHeight, XYZ_TILE_WIDTH, XYZ_TILE_HEIGHT, tileImageFormat, metaTilingFactor);
+    ret = new MgMetatile(tile, drawWidth, drawHeight, xyzWidth, xyzHeight, tileImageFormat, metaTilingFactor);
 
     // restore the base group's visibility
     baseGroup->SetVisible(groupVisible);

Modified: trunk/MgDev/Server/src/Services/Rendering/ServerRenderingService.h
===================================================================
--- trunk/MgDev/Server/src/Services/Rendering/ServerRenderingService.h	2019-06-22 08:42:36 UTC (rev 9559)
+++ trunk/MgDev/Server/src/Services/Rendering/ServerRenderingService.h	2019-06-25 11:20:14 UTC (rev 9560)
@@ -90,7 +90,8 @@
                                         INT32 z,
                                         INT32 dpi,
                                         CREFSTRING tileImageFormat,
-                                        double tileExtentOffset);
+                                        double tileExtentOffset,
+                                        INT32 retinaScale);
 
     virtual MgByteReader* RenderTileUTFGrid(MgMap* map,
                                             CREFSTRING baseMapLayerGroupName,
@@ -284,7 +285,8 @@
                                           INT32 dpi,
                                           CREFSTRING tileImageFormat,
                                           double tileExtentOffset,
-                                          INT32 metaTilingFactor);
+                                          INT32 metaTilingFactor,
+                                          INT32 retinaScale);
 
     virtual MgByteReader* RenderTileFromMetaTile(MgMap* map, MgMetatile* metaTile, INT32 subTileX, INT32 subTileY);
 

Modified: trunk/MgDev/Server/src/Services/Rendering/ServerRenderingServiceBuild.cpp
===================================================================
--- trunk/MgDev/Server/src/Services/Rendering/ServerRenderingServiceBuild.cpp	2019-06-22 08:42:36 UTC (rev 9559)
+++ trunk/MgDev/Server/src/Services/Rendering/ServerRenderingServiceBuild.cpp	2019-06-25 11:20:14 UTC (rev 9560)
@@ -24,6 +24,7 @@
 #include "OpRenderMap.cpp"
 #include "OpRenderMapLegend.cpp"
 #include "OpRenderMetatile.cpp"
+#include "OpRenderMetatileXYZ.cpp"
 #include "OpRenderTileFromMetatile.cpp"
 #include "OpRenderTile.cpp"
 #include "OpRenderTileXYZ.cpp"

Modified: trunk/MgDev/Server/src/Services/Tile/ServerTileService.cpp
===================================================================
--- trunk/MgDev/Server/src/Services/Tile/ServerTileService.cpp	2019-06-22 08:42:36 UTC (rev 9559)
+++ trunk/MgDev/Server/src/Services/Tile/ServerTileService.cpp	2019-06-25 11:20:14 UTC (rev 9560)
@@ -147,6 +147,93 @@
     return ret;
 }
 
+void MgServerTileService::WriteCommonTileProviderProperties(std::string& xml)
+{
+    //Property: TilePath
+    xml.append("<ConnectionProperty Enumerable=\"false\" Protected=\"false\" Required=\"true\">\n");
+    xml.append("<Name>");
+    std::string mbTilePath;
+    MgUtil::WideCharToMultiByte(MG_TILE_PROVIDER_COMMON_PARAM_TILEPATH, mbTilePath);
+    xml.append(mbTilePath);
+    xml.append("</Name>\n");
+    xml.append("<LocalizedName>");
+    std::string mbLocName;
+    STRING wLocName = MgUtil::GetResourceMessage(MgResources::TileService, L"MgTileProvider_Common_Property_TilePath_LocalizedName");
+    MgUtil::WideCharToMultiByte(wLocName, mbLocName);
+    xml.append(mbLocName);
+    xml.append("</LocalizedName>\n");
+    xml.append("<DefaultValue>");
+    std::string mbDefaultTag;
+    MgUtil::WideCharToMultiByte(MgResourceTag::TileCachePath, mbDefaultTag);
+    xml.append(mbDefaultTag);
+    xml.append("</DefaultValue>\n");
+    xml.append("</ConnectionProperty>\n");
+
+    //Property: RenderOnly
+    xml.append("<ConnectionProperty Enumerable=\"false\" Protected=\"false\" Required=\"false\">\n");
+    xml.append("<Name>");
+    std::string mbRenderOnly;
+    MgUtil::WideCharToMultiByte(MG_TILE_PROVIDER_COMMON_PARAM_RENDERONLY, mbRenderOnly);
+    xml.append(mbRenderOnly);
+    xml.append("</Name>\n");
+    xml.append("<LocalizedName>");
+    std::string mbLocRenderOnly;
+    STRING wLocRenderOnly = MgUtil::GetResourceMessage(MgResources::TileService, L"MgTileProvider_Common_Property_RenderOnly_LocalizedName");
+    MgUtil::WideCharToMultiByte(wLocRenderOnly, mbLocRenderOnly);
+    xml.append(mbLocRenderOnly);
+    xml.append("</LocalizedName>\n");
+    xml.append("<DefaultValue>false</DefaultValue>\n");
+    xml.append("</ConnectionProperty>\n");
+
+    //Property: TileExtentOffset
+    xml.append("<ConnectionProperty Enumerable=\"false\" Protected=\"false\" Required=\"true\">\n");
+    xml.append("<Name>");
+    std::string mbTileExtentOffset;
+    MgUtil::WideCharToMultiByte(MG_TILE_PROVIDER_COMMON_PARAM_TILEEXTENTOFFSET, mbTileExtentOffset);
+    xml.append(mbTileExtentOffset);
+    xml.append("</Name>\n");
+    xml.append("<LocalizedName>");
+    std::string mbLocTileExtentOffset;
+    STRING wLocTileExtentOffset = MgUtil::GetResourceMessage(MgResources::TileService, L"MgTileProvider_Common_Property_TileExtentOffset_LocalizedName");
+    MgUtil::WideCharToMultiByte(wLocTileExtentOffset, mbLocTileExtentOffset);
+    xml.append(mbLocTileExtentOffset);
+    xml.append("</LocalizedName>\n");
+    xml.append("<DefaultValue></DefaultValue>\n");
+    xml.append("</ConnectionProperty>\n");
+
+    //Property: MetaTileFactor
+    xml.append("<ConnectionProperty Enumerable=\"false\" Protected=\"false\" Required=\"true\">\n");
+    xml.append("<Name>");
+    std::string mbMetaTileFactor;
+    MgUtil::WideCharToMultiByte(MG_TILE_PROVIDER_COMMON_PARAM_METATILEFACTOR, mbMetaTileFactor);
+    xml.append(mbMetaTileFactor);
+    xml.append("</Name>\n");
+    xml.append("<LocalizedName>");
+    std::string mbLocMetaTileFactor;
+    STRING wLocMetaTileFactor = MgUtil::GetResourceMessage(MgResources::TileService, L"MgTileProvider_Common_Property_MetaTileFactor_LocalizedName");
+    MgUtil::WideCharToMultiByte(wLocMetaTileFactor, mbLocMetaTileFactor);
+    xml.append(mbLocMetaTileFactor);
+    xml.append("</LocalizedName>\n");
+    xml.append("<DefaultValue></DefaultValue>\n");
+    xml.append("</ConnectionProperty>\n");
+
+    //Property: MetaTileLockMethod
+    xml.append("<ConnectionProperty Enumerable=\"false\" Protected=\"false\" Required=\"true\">\n");
+    xml.append("<Name>");
+    std::string mbMetaTileLockMethod;
+    MgUtil::WideCharToMultiByte(MG_TILE_PROVIDER_COMMON_PARAM_METATILELOCKMETHOD, mbMetaTileLockMethod);
+    xml.append(mbMetaTileLockMethod);
+    xml.append("</Name>\n");
+    xml.append("<LocalizedName>");
+    std::string mbLocMetaTileLockMethod;
+    STRING wLocMetaTileLockMethod = MgUtil::GetResourceMessage(MgResources::TileService, L"MgTileProvider_Common_Property_MetaTileLockMethod_LocalizedName");
+    MgUtil::WideCharToMultiByte(wLocMetaTileLockMethod, mbLocMetaTileLockMethod);
+    xml.append(mbLocMetaTileLockMethod);
+    xml.append("</LocalizedName>\n");
+    xml.append("<DefaultValue></DefaultValue>\n");
+    xml.append("</ConnectionProperty>\n");
+}
+
 MgByteReader* MgServerTileService::GetTileProviders()
 {
     Ptr<MgByteReader> ret;
@@ -180,27 +267,7 @@
         xml.append(mbDescription);
         xml.append("</Description>\n");
         xml.append("<ConnectionProperties>\n");
-    
-        //Property: TilePath
-        xml.append("<ConnectionProperty Enumerable=\"false\" Protected=\"false\" Required=\"true\">\n");
-        xml.append("<Name>");
-        std::string mbTilePath;
-        MgUtil::WideCharToMultiByte(MG_TILE_PROVIDER_COMMON_PARAM_TILEPATH, mbTilePath);
-        xml.append(mbTilePath);
-        xml.append("</Name>\n");
-        xml.append("<LocalizedName>");
-        std::string mbLocName;
-        STRING wLocName = MgUtil::GetResourceMessage(MgResources::TileService, L"MgTileProvider_Common_Property_TilePath_LocalizedName");
-        MgUtil::WideCharToMultiByte(wLocName, mbLocName);
-        xml.append(mbLocName);
-        xml.append("</LocalizedName>\n");
-        xml.append("<DefaultValue>");
-        std::string mbDefaultTag;
-        MgUtil::WideCharToMultiByte(MgResourceTag::TileCachePath, mbDefaultTag);
-        xml.append(mbDefaultTag);
-        xml.append("</DefaultValue>\n");
-        xml.append("</ConnectionProperty>\n");
-    
+
         //Property: TileWidth
         xml.append("<ConnectionProperty Enumerable=\"false\" Protected=\"false\" Required=\"true\">\n");
         xml.append("<Name>");
@@ -263,22 +330,6 @@
 
         xml.append("</ConnectionProperty>\n");
 
-        //Property: RenderOnly
-        xml.append("<ConnectionProperty Enumerable=\"false\" Protected=\"false\" Required=\"false\">\n");
-        xml.append("<Name>");
-        std::string mbRenderOnly;
-        MgUtil::WideCharToMultiByte(MG_TILE_PROVIDER_COMMON_PARAM_RENDERONLY, mbRenderOnly);
-        xml.append(mbRenderOnly);
-        xml.append("</Name>\n");
-        xml.append("<LocalizedName>");
-        std::string mbLocRenderOnly;
-        STRING wLocRenderOnly = MgUtil::GetResourceMessage(MgResources::TileService, L"MgTileProvider_Common_Property_RenderOnly_LocalizedName");
-        MgUtil::WideCharToMultiByte(wLocRenderOnly, mbLocRenderOnly);
-        xml.append(mbLocRenderOnly);
-        xml.append("</LocalizedName>\n");
-        xml.append("<DefaultValue>false</DefaultValue>\n");
-        xml.append("</ConnectionProperty>\n");
-
         //Property: CoordinateSystem
         xml.append("<ConnectionProperty Enumerable=\"false\" Protected=\"false\" Required=\"true\">\n");
         xml.append("<Name>");
@@ -311,54 +362,8 @@
         xml.append("<DefaultValue></DefaultValue>\n");
         xml.append("</ConnectionProperty>\n");
 
-        //Property: TileExtentOffset
-        xml.append("<ConnectionProperty Enumerable=\"false\" Protected=\"false\" Required=\"true\">\n");
-        xml.append("<Name>");
-        std::string mbTileExtentOffset;
-        MgUtil::WideCharToMultiByte(MG_TILE_PROVIDER_COMMON_PARAM_TILEEXTENTOFFSET, mbTileExtentOffset);
-        xml.append(mbTileExtentOffset);
-        xml.append("</Name>\n");
-        xml.append("<LocalizedName>");
-        std::string mbLocTileExtentOffset;
-        STRING wLocTileExtentOffset = MgUtil::GetResourceMessage(MgResources::TileService, L"MgTileProvider_Common_Property_TileExtentOffset_LocalizedName");
-        MgUtil::WideCharToMultiByte(wLocTileExtentOffset, mbLocTileExtentOffset);
-        xml.append(mbLocTileExtentOffset);
-        xml.append("</LocalizedName>\n");
-        xml.append("<DefaultValue></DefaultValue>\n");
-        xml.append("</ConnectionProperty>\n");
+        WriteCommonTileProviderProperties(xml);
 
-        //Property: MetaTileFactor
-        xml.append("<ConnectionProperty Enumerable=\"false\" Protected=\"false\" Required=\"true\">\n");
-        xml.append("<Name>");
-        std::string mbMetaTileFactor;
-        MgUtil::WideCharToMultiByte(MG_TILE_PROVIDER_COMMON_PARAM_METATILEFACTOR, mbMetaTileFactor);
-        xml.append(mbMetaTileFactor);
-        xml.append("</Name>\n");
-        xml.append("<LocalizedName>");
-        std::string mbLocMetaTileFactor;
-        STRING wLocMetaTileFactor = MgUtil::GetResourceMessage(MgResources::TileService, L"MgTileProvider_Common_Property_MetaTileFactor_LocalizedName");
-        MgUtil::WideCharToMultiByte(wLocMetaTileFactor, mbLocMetaTileFactor);
-        xml.append(mbLocMetaTileFactor);
-        xml.append("</LocalizedName>\n");
-        xml.append("<DefaultValue></DefaultValue>\n");
-        xml.append("</ConnectionProperty>\n");
-
-        //Property: MetaTileLockMethod
-        xml.append("<ConnectionProperty Enumerable=\"false\" Protected=\"false\" Required=\"true\">\n");
-        xml.append("<Name>");
-        std::string mbMetaTileLockMethod;
-        MgUtil::WideCharToMultiByte(MG_TILE_PROVIDER_COMMON_PARAM_METATILELOCKMETHOD, mbMetaTileLockMethod);
-        xml.append(mbMetaTileLockMethod);
-        xml.append("</Name>\n");
-        xml.append("<LocalizedName>");
-        std::string mbLocMetaTileLockMethod;
-        STRING wLocMetaTileLockMethod = MgUtil::GetResourceMessage(MgResources::TileService, L"MgTileProvider_Common_Property_MetaTileLockMethod_LocalizedName");
-        MgUtil::WideCharToMultiByte(wLocMetaTileLockMethod, mbLocMetaTileLockMethod);
-        xml.append(mbLocMetaTileLockMethod);
-        xml.append("</LocalizedName>\n");
-        xml.append("<DefaultValue></DefaultValue>\n");
-        xml.append("</ConnectionProperty>\n");
-
         xml.append("</ConnectionProperties>\n");
         xml.append("</TileProvider>\n");
     }
@@ -384,26 +389,6 @@
         xml.append(mbDescription);
         xml.append("</Description>\n");
         xml.append("<ConnectionProperties>\n");
-    
-        //Property: TilePath
-        xml.append("<ConnectionProperty Enumerable=\"false\" Protected=\"false\" Required=\"true\">\n");
-        xml.append("<Name>");
-        std::string mbTilePath;
-        MgUtil::WideCharToMultiByte(MG_TILE_PROVIDER_COMMON_PARAM_TILEPATH, mbTilePath);
-        xml.append(mbTilePath);
-        xml.append("</Name>\n");
-        xml.append("<LocalizedName>");
-        std::string mbLocName;
-        STRING wLocName = MgUtil::GetResourceMessage(MgResources::TileService, L"MgTileProvider_Common_Property_TilePath_LocalizedName");
-        MgUtil::WideCharToMultiByte(wLocName, mbLocName);
-        xml.append(mbLocName);
-        xml.append("</LocalizedName>\n");
-        xml.append("<DefaultValue>");
-        std::string mbDefaultTag;
-        MgUtil::WideCharToMultiByte(MgResourceTag::TileCachePath, mbDefaultTag);
-        xml.append(mbDefaultTag);
-        xml.append("</DefaultValue>\n");
-        xml.append("</ConnectionProperty>\n");
 
         //Property: TileFormat
         xml.append("<ConnectionProperty Enumerable=\"true\" Protected=\"false\" Required=\"true\">\n");
@@ -427,71 +412,24 @@
         xml.append("<Value>UTFGRID</Value>");
         xml.append("</ConnectionProperty>\n");
 
-        //Property: RenderOnly
-        xml.append("<ConnectionProperty Enumerable=\"false\" Protected=\"false\" Required=\"false\">\n");
-        xml.append("<Name>");
-        std::string mbRenderOnly;
-        MgUtil::WideCharToMultiByte(MG_TILE_PROVIDER_COMMON_PARAM_RENDERONLY, mbRenderOnly);
-        xml.append(mbRenderOnly);
-        xml.append("</Name>\n");
-        xml.append("<LocalizedName>");
-        std::string mbLocRenderOnly;
-        STRING wLocRenderOnly = MgUtil::GetResourceMessage(MgResources::TileService, L"MgTileProvider_Common_Property_RenderOnly_LocalizedName");
-        MgUtil::WideCharToMultiByte(wLocRenderOnly, mbLocRenderOnly);
-        xml.append(mbLocRenderOnly);
-        xml.append("</LocalizedName>\n");
-        xml.append("<DefaultValue>false</DefaultValue>\n");
-        xml.append("</ConnectionProperty>\n");
-
-        //Property: TileExtentOffset
+        //Property: RetinaScale
         xml.append("<ConnectionProperty Enumerable=\"false\" Protected=\"false\" Required=\"true\">\n");
         xml.append("<Name>");
-        std::string mbTileExtentOffset;
-        MgUtil::WideCharToMultiByte(MG_TILE_PROVIDER_COMMON_PARAM_TILEEXTENTOFFSET, mbTileExtentOffset);
-        xml.append(mbTileExtentOffset);
+        std::string mbRetinaScale;
+        MgUtil::WideCharToMultiByte(MG_TILE_PROVIDER_XYZ_PARAM_RETINASCALE, mbRetinaScale);
+        xml.append(mbRetinaScale);
         xml.append("</Name>\n");
         xml.append("<LocalizedName>");
-        std::string mbLocTileExtentOffset;
-        STRING wLocTileExtentOffset = MgUtil::GetResourceMessage(MgResources::TileService, L"MgTileProvider_Common_Property_TileExtentOffset_LocalizedName");
-        MgUtil::WideCharToMultiByte(wLocTileExtentOffset, mbLocTileExtentOffset);
-        xml.append(mbLocTileExtentOffset);
+        std::string mbLocRetinaScale;
+        STRING wLocRetinaScale = MgUtil::GetResourceMessage(MgResources::TileService, L"MgTileProvider_XYZ_Property_RetinaScale_LocalizedName");
+        MgUtil::WideCharToMultiByte(wLocRetinaScale, mbLocRetinaScale);
+        xml.append(mbLocRetinaScale);
         xml.append("</LocalizedName>\n");
         xml.append("<DefaultValue></DefaultValue>\n");
         xml.append("</ConnectionProperty>\n");
 
-        //Property: MetaTileFactor
-        xml.append("<ConnectionProperty Enumerable=\"false\" Protected=\"false\" Required=\"true\">\n");
-        xml.append("<Name>");
-        std::string mbMetaTileFactor;
-        MgUtil::WideCharToMultiByte(MG_TILE_PROVIDER_COMMON_PARAM_METATILEFACTOR, mbMetaTileFactor);
-        xml.append(mbMetaTileFactor);
-        xml.append("</Name>\n");
-        xml.append("<LocalizedName>");
-        std::string mbLocMetaTileFactor;
-        STRING wLocMetaTileFactor = MgUtil::GetResourceMessage(MgResources::TileService, L"MgTileProvider_Common_Property_MetaTileFactor_LocalizedName");
-        MgUtil::WideCharToMultiByte(wLocMetaTileFactor, mbLocMetaTileFactor);
-        xml.append(mbLocMetaTileFactor);
-        xml.append("</LocalizedName>\n");
-        xml.append("<DefaultValue></DefaultValue>\n");
-        xml.append("</ConnectionProperty>\n");
+        WriteCommonTileProviderProperties(xml);
 
-        //Property: MetaTileLockMethod
-        xml.append("<ConnectionProperty Enumerable=\"false\" Protected=\"false\" Required=\"true\">\n");
-        xml.append("<Name>");
-        std::string mbMetaTileLockMethod;
-        MgUtil::WideCharToMultiByte(MG_TILE_PROVIDER_COMMON_PARAM_METATILELOCKMETHOD, mbMetaTileLockMethod);
-        xml.append(mbMetaTileLockMethod);
-        xml.append("</Name>\n");
-        xml.append("<LocalizedName>");
-        std::string mbLocMetaTileLockMethod;
-        STRING wLocMetaTileLockMethod = MgUtil::GetResourceMessage(MgResources::TileService, L"MgTileProvider_Common_Property_MetaTileLockMethod_LocalizedName");
-        MgUtil::WideCharToMultiByte(wLocMetaTileLockMethod, mbLocMetaTileLockMethod);
-        xml.append(mbLocMetaTileLockMethod);
-        xml.append("</LocalizedName>\n");
-        xml.append("<DefaultValue></DefaultValue>\n");
-        xml.append("</ConnectionProperty>\n");
-
-
         xml.append("</ConnectionProperties>\n");
         xml.append("</TileProvider>\n");
     }
@@ -662,6 +600,7 @@
         bool bRenderOnly = false;
         INT32 metaTileFactor = 0;
         INT32 metaTileLockMethod = 0;
+        INT32 retinaScale = 1;
         for (INT32 i = 0; i < parameters->GetCount(); i++)
         {
             MdfModel::NameStringPair* pair = parameters->GetAt(i);
@@ -693,6 +632,10 @@
             {
                 metaTileLockMethod = MgUtil::StringToInt32(pair->GetValue());
             }
+            else if (pair->GetName() == MG_TILE_PROVIDER_XYZ_PARAM_RETINASCALE)
+            {
+                retinaScale = MgUtil::StringToInt32(pair->GetValue());
+            }
         }
 
         //If we find the cache path substitution tag, replace it with the default path from the configuration
@@ -701,7 +644,7 @@
             path = MgTileParameters::tileCachePath;
         }
 
-        cache = new MgTileCacheXYZProvider(tileSetId, path, format, bRenderOnly, tileExtentOffset, metaTileFactor, metaTileLockMethod);
+        cache = new MgTileCacheXYZProvider(tileSetId, path, format, bRenderOnly, tileExtentOffset, metaTileFactor, metaTileLockMethod, retinaScale);
     }
     else 
     {

Modified: trunk/MgDev/Server/src/Services/Tile/ServerTileService.h
===================================================================
--- trunk/MgDev/Server/src/Services/Tile/ServerTileService.h	2019-06-22 08:42:36 UTC (rev 9559)
+++ trunk/MgDev/Server/src/Services/Tile/ServerTileService.h	2019-06-25 11:20:14 UTC (rev 9560)
@@ -76,6 +76,8 @@
     void SetConnectionProperties(MgConnectionProperties* connProp);
 
 private:
+    void WriteCommonTileProviderProperties(std::string& xml);
+
     MgTileCache* GetTileCache(MgResourceIdentifier* resource);
     MgTileCache* GetTileCache(MgResourceIdentifier* tileSetId, MdfModel::TileSetDefinition* tileset);
 };

Modified: trunk/MgDev/Server/src/Services/Tile/TileCacheXYZProvider.cpp
===================================================================
--- trunk/MgDev/Server/src/Services/Tile/TileCacheXYZProvider.cpp	2019-06-22 08:42:36 UTC (rev 9559)
+++ trunk/MgDev/Server/src/Services/Tile/TileCacheXYZProvider.cpp	2019-06-25 11:20:14 UTC (rev 9560)
@@ -26,7 +26,8 @@
                                                bool bRenderOnly,
                                                double tileExtentOffset,
                                                INT32 metaTileFactor,
-                                               INT32 metaTileLockMethod)
+                                               INT32 metaTileLockMethod,
+                                               INT32 retinaScale)
 {
     m_tilesetId = SAFE_ADDREF(tileSetId);
     m_path = path;
@@ -35,6 +36,7 @@
     m_tileExtentOffset = tileExtentOffset;
     m_metaTileFactor = metaTileFactor;
     m_metaTileLockMethod = metaTileLockMethod;
+    m_retinaScale = retinaScale;
 }
 
 MgTileCacheXYZProvider::~MgTileCacheXYZProvider()
@@ -42,15 +44,20 @@
 
 }
 
+bool MgTileCacheXYZProvider::IsTileImageFormat()
+{
+    return m_format == L"UTFGRID";
+}
+
 MgByteReader* MgTileCacheXYZProvider::GetTile(CREFSTRING baseMapLayerGroupName,
-                                                  INT32 tileColumn,
-                                                  INT32 tileRow,
-                                                  INT32 scaleIndex)
+                                              INT32 tileColumn,
+                                              INT32 tileRow,
+                                              INT32 scaleIndex)
 {
     Ptr<MgByteReader> ret;
     MG_TRY()
 
-        if (m_metaTileFactor > 1)
+        if (IsTileImageFormat() && m_metaTileFactor > 1)
             ret = GetMetatileForResource(m_tilesetId, baseMapLayerGroupName, tileColumn, tileRow, scaleIndex);
         else
             ret = GetTileForResource(m_tilesetId, baseMapLayerGroupName, tileColumn, tileRow, scaleIndex);
@@ -84,7 +91,7 @@
         else //Assume it must be image-based at this point
         {
             // generate the tile
-            img = svcRendering->RenderTileXYZ(map, baseMapLayerGroupName, tileRow, tileColumn, scaleIndex, map->GetDisplayDpi(), m_format, m_tileExtentOffset);
+            img = svcRendering->RenderTileXYZ(map, baseMapLayerGroupName, tileRow, tileColumn, scaleIndex, map->GetDisplayDpi(), m_format, m_tileExtentOffset, m_retinaScale);
         }
         // cache the tile
         if (!m_renderOnly)
@@ -104,12 +111,12 @@
 
 INT32 MgTileCacheXYZProvider::GetDefaultTileSizeX()
 {
-    return 256; //Always
+    return 256 * m_retinaScale;
 }
 
 INT32 MgTileCacheXYZProvider::GetDefaultTileSizeY()
 {
-    return 256; //Always
+    return 256 * m_retinaScale;
 }
 
 STRING MgTileCacheXYZProvider::GetTileFormat()
@@ -404,9 +411,8 @@
             serviceMan->RequestService(MgServiceType::RenderingService));
         _ASSERT(NULL != svcRendering);
 
-        //Ptr<MgByteReader> metaTileBitMap = GetTile(metaTileName, map, scaleIndex, baseMapLayerGroupName, metaTileColumn, metaTileRow);
         INT32 tileDpi = map->GetDisplayDpi();
-        Ptr<MgMetatile> metaTile = svcRendering->RenderMetatileXYZ(map, baseMapLayerGroupName, metaTileRow, metaTileColumn, scaleIndex, tileDpi, m_format, m_tileExtentOffset, m_metaTileFactor);
+        Ptr<MgMetatile> metaTile = svcRendering->RenderMetatileXYZ(map, baseMapLayerGroupName, metaTileRow, metaTileColumn, scaleIndex, tileDpi, m_format, m_tileExtentOffset, m_metaTileFactor, m_retinaScale);
 #ifdef _DEBUG
         Ptr<MgByteReader> mtContent = metaTile->GetImage();
         INT32 metaTileLen = mtContent->GetLength();

Modified: trunk/MgDev/Server/src/Services/Tile/TileCacheXYZProvider.h
===================================================================
--- trunk/MgDev/Server/src/Services/Tile/TileCacheXYZProvider.h	2019-06-22 08:42:36 UTC (rev 9559)
+++ trunk/MgDev/Server/src/Services/Tile/TileCacheXYZProvider.h	2019-06-25 11:20:14 UTC (rev 9560)
@@ -28,7 +28,9 @@
                            bool bRenderOnly,
                            double tileExtentOffset,
                            INT32 metaTileFactor,
-                           INT32 metaTileLockMethod);
+                           INT32 metaTileLockMethod,
+                           INT32 retinaScale);
+
     virtual ~MgTileCacheXYZProvider();
 
     virtual MgByteReader* GetTile(CREFSTRING baseMapLayerGroupName,
@@ -59,6 +61,8 @@
     virtual STRING GetTileFileExtension();
 
 private:
+    bool IsTileImageFormat();
+
     // ---------------- Begin Metatile stuff --------------------- //
     MgByteReader* GetMetatileForResource(MgResourceIdentifier* resource,
         CREFSTRING baseMapLayerGroupName,
@@ -78,6 +82,7 @@
     double m_tileExtentOffset;
     INT32 m_metaTileFactor;
     INT32 m_metaTileLockMethod;
+    INT32 m_retinaScale;
 };
 
 #endif
\ No newline at end of file

Modified: trunk/MgDev/Server/src/UnitTesting/TestMappingService.cpp
===================================================================
--- trunk/MgDev/Server/src/UnitTesting/TestMappingService.cpp	2019-06-22 08:42:36 UTC (rev 9559)
+++ trunk/MgDev/Server/src/UnitTesting/TestMappingService.cpp	2019-06-25 11:20:14 UTC (rev 9560)
@@ -202,11 +202,21 @@
         Ptr<MgByteReader> mdfrdr2 = mdfsrc2->GetReader();
         m_svcResource->SetResource(mapres2, mdfrdr2, NULL);
 
+        Ptr<MgResourceIdentifier> mapres3 = new MgResourceIdentifier(L"Library://UnitTests/Maps/LinkedTileSetXYZ.MapDefinition");
+        Ptr<MgByteSource> mdfsrc3 = new MgByteSource(L"../UnitTestFiles/UT_LinkedTileSetXYZ.mdf", false);
+        Ptr<MgByteReader> mdfrdr3 = mdfsrc3->GetReader();
+        m_svcResource->SetResource(mapres3, mdfrdr3, NULL);
+
         Ptr<MgResourceIdentifier> tilesetres1 = new MgResourceIdentifier(L"Library://UnitTests/TileSets/Sheboygan.TileSetDefinition");
         Ptr<MgByteSource> tsdsrc1 = new MgByteSource(L"../UnitTestFiles/UT_BaseMap.tsd", false);
         Ptr<MgByteReader> tsdrdr1 = tsdsrc1->GetReader();
         m_svcResource->SetResource(tilesetres1, tsdrdr1, NULL);
 
+        Ptr<MgResourceIdentifier> tilesetres2 = new MgResourceIdentifier(L"Library://UnitTests/TileSets/XYZ.TileSetDefinition");
+        Ptr<MgByteSource> tsdsrc2 = new MgByteSource(L"../UnitTestFiles/UT_XYZ.tsd", false);
+        Ptr<MgByteReader> tsdrdr2 = tsdsrc2->GetReader();
+        m_svcResource->SetResource(tilesetres2, tsdrdr2, NULL);
+
         Ptr<MgByteSource> bsPackage = new MgByteSource(L"../UnitTestFiles/PlotHole.mgp", false);
         Ptr<MgByteReader> pkgReader = bsPackage->GetReader();
         m_svcResource->ApplyResourcePackage(pkgReader);
@@ -286,9 +296,15 @@
         Ptr<MgResourceIdentifier> mapres2 = new MgResourceIdentifier(L"Library://UnitTests/Maps/LinkedTileSet.MapDefinition");
         m_svcResource->DeleteResource(mapres2);
 
+        Ptr<MgResourceIdentifier> mapres3 = new MgResourceIdentifier(L"Library://UnitTests/Maps/LinkedTileSetXYZ.MapDefinition");
+        m_svcResource->DeleteResource(mapres3);
+
         Ptr<MgResourceIdentifier> tilesetres1 = new MgResourceIdentifier(L"Library://UnitTests/TileSets/Sheboygan.TileSetDefinition");
         m_svcResource->DeleteResource(tilesetres1);
 
+        Ptr<MgResourceIdentifier> tilesetres2 = new MgResourceIdentifier(L"Library://UnitTests/TileSets/XYZ.TileSetDefinition");
+        m_svcResource->DeleteResource(tilesetres2);
+
         Ptr<MgResourceIdentifier> plotHoleFolder = new MgResourceIdentifier(L"Library://UnitTests/PlotHole/");
         m_svcResource->DeleteResource(plotHoleFolder);
 
@@ -314,91 +330,121 @@
     ACE_DEBUG((LM_INFO, ACE_TEXT("\nMapping Service tests completed.\n\n")));
 }
 
-void TestMappingService::TestCase_CreateRuntimeMap()
+void TestMappingService::TestCase_CreateRuntimeMap(INT32 major, INT32 minor, INT32 rev)
 {
     try
     {
+        STRING suffix = L"_";
+        STRING s;
+        MgUtil::Int32ToString(major, s);
+        suffix += s;
+        suffix += L"_";
+        MgUtil::Int32ToString(minor, s);
+        suffix += s;
+        suffix += L"_";
+        MgUtil::Int32ToString(rev, s);
+        suffix += s;
+        auto schemaVersion = MG_API_VERSION(major, minor, rev);
+
         //make a runtime map
         Ptr<MgResourceIdentifier> mdfres = new MgResourceIdentifier(L"Library://UnitTests/Maps/Sheboygan.MapDefinition");
+        Ptr<MgResourceIdentifier> mdfLinkedRes = new MgResourceIdentifier(L"Library://UnitTests/Maps/LinkedTileSet.MapDefinition");
+        Ptr<MgResourceIdentifier> mdfLinkedXYZRes = new MgResourceIdentifier(L"Library://UnitTests/Maps/LinkedTileSetXYZ.MapDefinition");
         STRING format = MgImageFormats::Png;
         //call the API
-        Ptr<MgByteReader> rtMap = m_svcMapping->CreateRuntimeMap(mdfres, L"UnitTestSheboygan1", m_session, format, 16, 16, 0, 25);
+        Ptr<MgByteReader> rtMap = m_svcMapping->CreateRuntimeMap(mdfres, L"UnitTestSheboygan1", m_session, format, 16, 16, 0, 25, schemaVersion);
         Ptr<MgByteSink> sink = new MgByteSink(rtMap);
         sink->ToFile(L"../UnitTestFiles/RuntimeMapBarebones.xml");
 
-        rtMap = m_svcMapping->CreateRuntimeMap(mdfres, L"UnitTestSheboygan2", m_session, format, 16, 16, 1, 25);
+        rtMap = m_svcMapping->CreateRuntimeMap(mdfres, L"UnitTestSheboygan2", m_session, format, 16, 16, 1, 25, schemaVersion);
         sink = new MgByteSink(rtMap);
-        sink->ToFile(L"../UnitTestFiles/RuntimeMapLayersAndGroups.xml");
+        sink->ToFile(L"../UnitTestFiles/RuntimeMapLayersAndGroups" + suffix + L".xml");
 
-        rtMap = m_svcMapping->CreateRuntimeMap(mdfres, L"UnitTestSheboygan3", m_session, format, 16, 16, (1 | 2), 25);
+        rtMap = m_svcMapping->CreateRuntimeMap(mdfres, L"UnitTestSheboygan3", m_session, format, 16, 16, (1 | 2), 25, schemaVersion);
         sink = new MgByteSink(rtMap);
-        sink->ToFile(L"../UnitTestFiles/RuntimeMapLayersAndGroupsWithIconsPNG16x16.xml");
+        sink->ToFile(L"../UnitTestFiles/RuntimeMapLayersAndGroupsWithIconsPNG16x16" + suffix + L".xml");
 
-        rtMap = m_svcMapping->CreateRuntimeMap(mdfres, L"UnitTestSheboygan4", m_session, format, 16, 16, (1 | 2 | 4), 25);
+        rtMap = m_svcMapping->CreateRuntimeMap(mdfres, L"UnitTestSheboygan4", m_session, format, 16, 16, (1 | 2 | 4), 25, schemaVersion);
         sink = new MgByteSink(rtMap);
-        sink->ToFile(L"../UnitTestFiles/RuntimeMapLayersAndGroupsWithIconsAndFeatureSourcePNG16x16.xml");
+        sink->ToFile(L"../UnitTestFiles/RuntimeMapLayersAndGroupsWithIconsAndFeatureSourcePNG16x16" + suffix + L".xml");
 
-        rtMap = m_svcMapping->CreateRuntimeMap(mdfres, L"UnitTestSheboygan5", m_session, format, 32, 32, (1 | 2), 25);
+        rtMap = m_svcMapping->CreateRuntimeMap(mdfres, L"UnitTestSheboygan5", m_session, format, 32, 32, (1 | 2), 25, schemaVersion);
         sink = new MgByteSink(rtMap);
-        sink->ToFile(L"../UnitTestFiles/RuntimeMapLayersAndGroupsWithIconsPNG32x32.xml");
+        sink->ToFile(L"../UnitTestFiles/RuntimeMapLayersAndGroupsWithIconsPNG32x32" + suffix + L".xml");
 
-        rtMap = m_svcMapping->CreateRuntimeMap(mdfres, L"UnitTestSheboygan6", m_session, format, 32, 32, (1 | 2 | 4), 25);
+        rtMap = m_svcMapping->CreateRuntimeMap(mdfres, L"UnitTestSheboygan6", m_session, format, 32, 32, (1 | 2 | 4), 25, schemaVersion);
         sink = new MgByteSink(rtMap);
-        sink->ToFile(L"../UnitTestFiles/RuntimeMapLayersAndGroupsWithIconsAndFeatureSourcePNG32x32.xml");
+        sink->ToFile(L"../UnitTestFiles/RuntimeMapLayersAndGroupsWithIconsAndFeatureSourcePNG32x32" + suffix + L".xml");
 
         format = MgImageFormats::Gif;
 
-        rtMap = m_svcMapping->CreateRuntimeMap(mdfres, L"UnitTestSheboygan3", m_session, format, 16, 16, (1 | 2), 25);
+        rtMap = m_svcMapping->CreateRuntimeMap(mdfres, L"UnitTestSheboygan3", m_session, format, 16, 16, (1 | 2), 25, schemaVersion);
         sink = new MgByteSink(rtMap);
-        sink->ToFile(L"../UnitTestFiles/RuntimeMapLayersAndGroupsWithIconsGIF16x16.xml");
+        sink->ToFile(L"../UnitTestFiles/RuntimeMapLayersAndGroupsWithIconsGIF16x16" + suffix + L".xml");
 
-        rtMap = m_svcMapping->CreateRuntimeMap(mdfres, L"UnitTestSheboygan4", m_session, format, 16, 16, (1 | 2 | 4), 25);
+        rtMap = m_svcMapping->CreateRuntimeMap(mdfres, L"UnitTestSheboygan4", m_session, format, 16, 16, (1 | 2 | 4), 25, schemaVersion);
         sink = new MgByteSink(rtMap);
-        sink->ToFile(L"../UnitTestFiles/RuntimeMapLayersAndGroupsWithIconsAndFeatureSourceGIF16x16.xml");
+        sink->ToFile(L"../UnitTestFiles/RuntimeMapLayersAndGroupsWithIconsAndFeatureSourceGIF16x16" + suffix + L".xml");
 
-        rtMap = m_svcMapping->CreateRuntimeMap(mdfres, L"UnitTestSheboygan5", m_session, format, 32, 32, (1 | 2), 25);
+        rtMap = m_svcMapping->CreateRuntimeMap(mdfres, L"UnitTestSheboygan5", m_session, format, 32, 32, (1 | 2), 25, schemaVersion);
         sink = new MgByteSink(rtMap);
-        sink->ToFile(L"../UnitTestFiles/RuntimeMapLayersAndGroupsWithIconsGIF32x32.xml");
+        sink->ToFile(L"../UnitTestFiles/RuntimeMapLayersAndGroupsWithIconsGIF32x32" + suffix + L".xml");
 
-        rtMap = m_svcMapping->CreateRuntimeMap(mdfres, L"UnitTestSheboygan6", m_session, format, 32, 32, (1 | 2 | 4), 25);
+        rtMap = m_svcMapping->CreateRuntimeMap(mdfres, L"UnitTestSheboygan6", m_session, format, 32, 32, (1 | 2 | 4), 25, schemaVersion);
         sink = new MgByteSink(rtMap);
-        sink->ToFile(L"../UnitTestFiles/RuntimeMapLayersAndGroupsWithIconsAndFeatureSourceGIF32x32.xml");
+        sink->ToFile(L"../UnitTestFiles/RuntimeMapLayersAndGroupsWithIconsAndFeatureSourceGIF32x32" + suffix + L".xml");
 
         format = MgImageFormats::Jpeg;
 
-        rtMap = m_svcMapping->CreateRuntimeMap(mdfres, L"UnitTestSheboygan3", m_session, format, 16, 16, (1 | 2), 25);
+        rtMap = m_svcMapping->CreateRuntimeMap(mdfres, L"UnitTestSheboygan3", m_session, format, 16, 16, (1 | 2), 25, schemaVersion);
         sink = new MgByteSink(rtMap);
-        sink->ToFile(L"../UnitTestFiles/RuntimeMapLayersAndGroupsWithIconsJPEG16x16.xml");
+        sink->ToFile(L"../UnitTestFiles/RuntimeMapLayersAndGroupsWithIconsJPEG16x16" + suffix + L".xml");
 
-        rtMap = m_svcMapping->CreateRuntimeMap(mdfres, L"UnitTestSheboygan4", m_session, format, 16, 16, (1 | 2 | 4), 25);
+        rtMap = m_svcMapping->CreateRuntimeMap(mdfres, L"UnitTestSheboygan4", m_session, format, 16, 16, (1 | 2 | 4), 25, schemaVersion);
         sink = new MgByteSink(rtMap);
-        sink->ToFile(L"../UnitTestFiles/RuntimeMapLayersAndGroupsWithIconsAndFeatureSourceJPEG16x16.xml");
+        sink->ToFile(L"../UnitTestFiles/RuntimeMapLayersAndGroupsWithIconsAndFeatureSourceJPEG16x16" + suffix + L".xml");
 
-        rtMap = m_svcMapping->CreateRuntimeMap(mdfres, L"UnitTestSheboygan5", m_session, format, 32, 32, (1 | 2), 25);
+        rtMap = m_svcMapping->CreateRuntimeMap(mdfres, L"UnitTestSheboygan5", m_session, format, 32, 32, (1 | 2), 25, schemaVersion);
         sink = new MgByteSink(rtMap);
-        sink->ToFile(L"../UnitTestFiles/RuntimeMapLayersAndGroupsWithIconsJPEG32x32.xml");
+        sink->ToFile(L"../UnitTestFiles/RuntimeMapLayersAndGroupsWithIconsJPEG32x32" + suffix + L".xml");
 
-        rtMap = m_svcMapping->CreateRuntimeMap(mdfres, L"UnitTestSheboygan6", m_session, format, 32, 32, (1 | 2 | 4), 25);
+        rtMap = m_svcMapping->CreateRuntimeMap(mdfres, L"UnitTestSheboygan6", m_session, format, 32, 32, (1 | 2 | 4), 25, schemaVersion);
         sink = new MgByteSink(rtMap);
-        sink->ToFile(L"../UnitTestFiles/RuntimeMapLayersAndGroupsWithIconsAndFeatureSourceJPEG32x32.xml");
+        sink->ToFile(L"../UnitTestFiles/RuntimeMapLayersAndGroupsWithIconsAndFeatureSourceJPEG32x32" + suffix + L".xml");
 
         format = MgImageFormats::Png8;
 
-        rtMap = m_svcMapping->CreateRuntimeMap(mdfres, L"UnitTestSheboygan3", m_session, format, 16, 16, (1 | 2), 25);
+        rtMap = m_svcMapping->CreateRuntimeMap(mdfres, L"UnitTestSheboygan3", m_session, format, 16, 16, (1 | 2), 25, schemaVersion);
         sink = new MgByteSink(rtMap);
-        sink->ToFile(L"../UnitTestFiles/RuntimeMapLayersAndGroupsWithIconsPNG816x16.xml");
+        sink->ToFile(L"../UnitTestFiles/RuntimeMapLayersAndGroupsWithIconsPNG816x16" + suffix + L".xml");
 
-        rtMap = m_svcMapping->CreateRuntimeMap(mdfres, L"UnitTestSheboygan4", m_session, format, 16, 16, (1 | 2 | 4), 25);
+        rtMap = m_svcMapping->CreateRuntimeMap(mdfres, L"UnitTestSheboygan4", m_session, format, 16, 16, (1 | 2 | 4), 25, schemaVersion);
         sink = new MgByteSink(rtMap);
-        sink->ToFile(L"../UnitTestFiles/RuntimeMapLayersAndGroupsWithIconsAndFeatureSourcePNG816x16.xml");
+        sink->ToFile(L"../UnitTestFiles/RuntimeMapLayersAndGroupsWithIconsAndFeatureSourcePNG816x16" + suffix + L".xml");
 
-        rtMap = m_svcMapping->CreateRuntimeMap(mdfres, L"UnitTestSheboygan5", m_session, format, 32, 32, (1 | 2), 25);
+        rtMap = m_svcMapping->CreateRuntimeMap(mdfres, L"UnitTestSheboygan5", m_session, format, 32, 32, (1 | 2), 25, schemaVersion);
         sink = new MgByteSink(rtMap);
-        sink->ToFile(L"../UnitTestFiles/RuntimeMapLayersAndGroupsWithIconsPNG832x32.xml");
+        sink->ToFile(L"../UnitTestFiles/RuntimeMapLayersAndGroupsWithIconsPNG832x32" + suffix + L".xml");
 
-        rtMap = m_svcMapping->CreateRuntimeMap(mdfres, L"UnitTestSheboygan6", m_session, format, 32, 32, (1 | 2 | 4), 25);
+        rtMap = m_svcMapping->CreateRuntimeMap(mdfres, L"UnitTestSheboygan6", m_session, format, 32, 32, (1 | 2 | 4), 25, schemaVersion);
         sink = new MgByteSink(rtMap);
-        sink->ToFile(L"../UnitTestFiles/RuntimeMapLayersAndGroupsWithIconsAndFeatureSourcePNG832x32.xml");
+        sink->ToFile(L"../UnitTestFiles/RuntimeMapLayersAndGroupsWithIconsAndFeatureSourcePNG832x32" + suffix + L".xml");
+
+        if (schemaVersion >= MG_API_VERSION(4, 0, 0))
+        {
+            Ptr<MgResourceIdentifier> tsdRes = new MgResourceIdentifier(L"Library://UnitTests/TileSets/XYZ.TileSetDefinition");
+            rtMap = m_svcMapping->CreateRuntimeMap(tsdRes, L"UnitTestSheboygan7", m_session, format, 32, 32, (1 | 2 | 4), 25, schemaVersion);
+            sink = new MgByteSink(rtMap);
+            sink->ToFile(L"../UnitTestFiles/RuntimeMapFromTileSetLayersAndGroupsWithIconsAndFeatureSourcePNG832x32" + suffix + L".xml");
+
+            rtMap = m_svcMapping->CreateRuntimeMap(mdfLinkedRes, L"UnitTestSheboygan8", m_session, format, 32, 32, (1 | 2 | 4), 25, schemaVersion);
+            sink = new MgByteSink(rtMap);
+            sink->ToFile(L"../UnitTestFiles/RuntimeMapFromLinkedTileSetLayersAndGroupsWithIconsAndFeatureSourcePNG832x32" + suffix + L".xml");
+
+            rtMap = m_svcMapping->CreateRuntimeMap(mdfLinkedXYZRes, L"UnitTestSheboygan9", m_session, format, 32, 32, (1 | 2 | 4), 25, schemaVersion);
+            sink = new MgByteSink(rtMap);
+            sink->ToFile(L"../UnitTestFiles/RuntimeMapFromLinkedXYZTileSetLayersAndGroupsWithIconsAndFeatureSourcePNG832x32" + suffix + L".xml");
+        }
     }
     catch(MgException* e)
     {

Modified: trunk/MgDev/Server/src/UnitTesting/TestMappingService.h
===================================================================
--- trunk/MgDev/Server/src/UnitTesting/TestMappingService.h	2019-06-22 08:42:36 UTC (rev 9559)
+++ trunk/MgDev/Server/src/UnitTesting/TestMappingService.h	2019-06-25 11:20:14 UTC (rev 9560)
@@ -39,7 +39,9 @@
     CPPUNIT_TEST(TestCase_GetLegendImageCompositeConvenience);
     CPPUNIT_TEST(TestCase_GetLegendImageCompositeThemedConvenience);
     CPPUNIT_TEST(TestCase_GetLegendImagePointStyleWithConstRotationsConvenience);
-    CPPUNIT_TEST(TestCase_CreateRuntimeMap);
+    CPPUNIT_TEST(TestCase_CreateRuntimeMap260);
+    CPPUNIT_TEST(TestCase_CreateRuntimeMap300);
+    CPPUNIT_TEST(TestCase_CreateRuntimeMap400);
     CPPUNIT_TEST(TestCase_DescribeRuntimeMap);
     CPPUNIT_TEST(TestCase_CreateAndDescribeLinkedRuntimeMap);
     //CPPUNIT_TEST(TestCase_QueryFeaturesImageMap);
@@ -57,7 +59,10 @@
     void TestStart();
     void TestEnd();
 
-    void TestCase_CreateRuntimeMap();
+    void TestCase_CreateRuntimeMap(INT32 major, INT32 minor, INT32 rev);
+    void TestCase_CreateRuntimeMap260() { TestCase_CreateRuntimeMap(2, 6, 0); }
+    void TestCase_CreateRuntimeMap300() { TestCase_CreateRuntimeMap(3, 0, 0); }
+    void TestCase_CreateRuntimeMap400() { TestCase_CreateRuntimeMap(4, 0, 0); }
     void TestCase_DescribeRuntimeMap();
     void TestCase_SaveMap();
     void TestCase_GetPlot();

Modified: trunk/MgDev/Server/src/UnitTesting/TestRenderingService.cpp
===================================================================
--- trunk/MgDev/Server/src/UnitTesting/TestRenderingService.cpp	2019-06-22 08:42:36 UTC (rev 9559)
+++ trunk/MgDev/Server/src/UnitTesting/TestRenderingService.cpp	2019-06-25 11:20:14 UTC (rev 9560)
@@ -1759,21 +1759,30 @@
     }
 }
 
-void TestRenderingService::TestCase_RenderXYZMetatile(CREFSTRING imageFormat, CREFSTRING extension)
+void TestRenderingService::TestCase_RenderXYZMetatile(CREFSTRING imageFormat, CREFSTRING extension, INT32 retinaScale)
 {
     try
     {
+        STRING retinaSuffix = L"";
+        if (retinaScale > 1)
+        {
+            retinaSuffix = L"@";
+            STRING sRetina;
+            MgUtil::Int32ToString(retinaScale, sRetina);
+            retinaSuffix += sRetina;
+        }
+
         Ptr<MgMap> map = CreateTestTiledMap();
         map->SetViewScale(12500.0);
-        Ptr<MgByteReader> tile_16798_23891_baseline = m_svcRendering->RenderTileXYZ(map, L"BaseLayers", 16798, 23891, 16, MgTileParameters::tileDPI, imageFormat);
-        Ptr<MgByteReader> tile_16799_23891_baseline = m_svcRendering->RenderTileXYZ(map, L"BaseLayers", 16799, 23891, 16, MgTileParameters::tileDPI, imageFormat);
-        Ptr<MgByteReader> tile_16798_23892_baseline = m_svcRendering->RenderTileXYZ(map, L"BaseLayers", 16798, 23892, 16, MgTileParameters::tileDPI, imageFormat);
-        Ptr<MgByteReader> tile_16799_23892_baseline = m_svcRendering->RenderTileXYZ(map, L"BaseLayers", 16799, 23892, 16, MgTileParameters::tileDPI, imageFormat);
+        Ptr<MgByteReader> tile_16798_23891_baseline = m_svcRendering->RenderTileXYZ(map, L"BaseLayers", 16798, 23891, 16, MgTileParameters::tileDPI, imageFormat, MgConfigProperties::DefaultRenderingServicePropertyTileExtentOffset, retinaScale);
+        Ptr<MgByteReader> tile_16799_23891_baseline = m_svcRendering->RenderTileXYZ(map, L"BaseLayers", 16799, 23891, 16, MgTileParameters::tileDPI, imageFormat, MgConfigProperties::DefaultRenderingServicePropertyTileExtentOffset, retinaScale);
+        Ptr<MgByteReader> tile_16798_23892_baseline = m_svcRendering->RenderTileXYZ(map, L"BaseLayers", 16798, 23892, 16, MgTileParameters::tileDPI, imageFormat, MgConfigProperties::DefaultRenderingServicePropertyTileExtentOffset, retinaScale);
+        Ptr<MgByteReader> tile_16799_23892_baseline = m_svcRendering->RenderTileXYZ(map, L"BaseLayers", 16799, 23892, 16, MgTileParameters::tileDPI, imageFormat, MgConfigProperties::DefaultRenderingServicePropertyTileExtentOffset, retinaScale);
 
-        tile_16798_23891_baseline->ToFile(GetPath(L"../UnitTestFiles/RenderTileXYZ_16798_23891_16_Baseline", imageFormat, extension));
-        tile_16799_23891_baseline->ToFile(GetPath(L"../UnitTestFiles/RenderTileXYZ_16799_23891_16_Baseline", imageFormat, extension));
-        tile_16798_23892_baseline->ToFile(GetPath(L"../UnitTestFiles/RenderTileXYZ_16798_23892_16_Baseline", imageFormat, extension));
-        tile_16799_23892_baseline->ToFile(GetPath(L"../UnitTestFiles/RenderTileXYZ_16799_23892_16_Baseline", imageFormat, extension));
+        tile_16798_23891_baseline->ToFile(GetPath(L"../UnitTestFiles/RenderTileXYZ_16798_23891_16_Baseline" + retinaSuffix, imageFormat, extension));
+        tile_16799_23891_baseline->ToFile(GetPath(L"../UnitTestFiles/RenderTileXYZ_16799_23891_16_Baseline" + retinaSuffix, imageFormat, extension));
+        tile_16798_23892_baseline->ToFile(GetPath(L"../UnitTestFiles/RenderTileXYZ_16798_23892_16_Baseline" + retinaSuffix, imageFormat, extension));
+        tile_16799_23892_baseline->ToFile(GetPath(L"../UnitTestFiles/RenderTileXYZ_16799_23892_16_Baseline" + retinaSuffix, imageFormat, extension));
 
         MgRenderingService* renderSvc = dynamic_cast<MgRenderingService*>(m_svcRendering.p);
         CPPUNIT_ASSERT(NULL != renderSvc);
@@ -1780,7 +1789,7 @@
 
         // Render a 2x2 metatile which should cover the same tiles as the baseline test.
         INT32 metaTileFactor = 2;
-        Ptr<MgMetatile> metaTile = renderSvc->RenderMetatileXYZ(map, L"BaseLayers", 16798, 23891, 16, MgTileParameters::tileDPI, imageFormat, MgConfigProperties::DefaultRenderingServicePropertyTileExtentOffset, metaTileFactor);
+        Ptr<MgMetatile> metaTile = renderSvc->RenderMetatileXYZ(map, L"BaseLayers", 16798, 23891, 16, MgTileParameters::tileDPI, imageFormat, MgConfigProperties::DefaultRenderingServicePropertyTileExtentOffset, metaTileFactor, retinaScale);
         //metaTile->ToFile(L"../UnitTestFiles/RenderTileXYZ_Metatile at 16798_23891_16.png");
         //CPPUNIT_ASSERT(metaTile->IsRewindable());
         //metaTile->Rewind();
@@ -1789,10 +1798,10 @@
         Ptr<MgByteReader> tile_16798_23892 = renderSvc->RenderTileFromMetaTile(map, metaTile, 0, 1);
         Ptr<MgByteReader> tile_16799_23892 = renderSvc->RenderTileFromMetaTile(map, metaTile, 1, 1);
 
-        tile_16798_23891->ToFile(GetPath(L"../UnitTestFiles/RenderTileXYZ_16798_23891_16_Metatiled", imageFormat, extension));
-        tile_16799_23891->ToFile(GetPath(L"../UnitTestFiles/RenderTileXYZ_16799_23891_16_Metatiled", imageFormat, extension));
-        tile_16798_23892->ToFile(GetPath(L"../UnitTestFiles/RenderTileXYZ_16798_23892_16_Metatiled", imageFormat, extension));
-        tile_16799_23892->ToFile(GetPath(L"../UnitTestFiles/RenderTileXYZ_16799_23892_16_Metatiled", imageFormat, extension));
+        tile_16798_23891->ToFile(GetPath(L"../UnitTestFiles/RenderTileXYZ_16798_23891_16_Metatiled" + retinaSuffix, imageFormat, extension));
+        tile_16799_23891->ToFile(GetPath(L"../UnitTestFiles/RenderTileXYZ_16799_23891_16_Metatiled" + retinaSuffix, imageFormat, extension));
+        tile_16798_23892->ToFile(GetPath(L"../UnitTestFiles/RenderTileXYZ_16798_23892_16_Metatiled" + retinaSuffix, imageFormat, extension));
+        tile_16799_23892->ToFile(GetPath(L"../UnitTestFiles/RenderTileXYZ_16799_23892_16_Metatiled" + retinaSuffix, imageFormat, extension));
     }
     catch (MgException* e)
     {

Modified: trunk/MgDev/Server/src/UnitTesting/TestRenderingService.h
===================================================================
--- trunk/MgDev/Server/src/UnitTesting/TestRenderingService.h	2019-06-22 08:42:36 UTC (rev 9559)
+++ trunk/MgDev/Server/src/UnitTesting/TestRenderingService.h	2019-06-25 11:20:14 UTC (rev 9560)
@@ -29,6 +29,16 @@
     CPPUNIT_TEST(TestCase_RenderXYZMetatilePNG8);
     CPPUNIT_TEST(TestCase_RenderXYZMetatileJPG);
     CPPUNIT_TEST(TestCase_RenderXYZMetatileGIF);
+
+    CPPUNIT_TEST(TestCase_RenderXYZMetatilePNG_2x);
+    CPPUNIT_TEST(TestCase_RenderXYZMetatilePNG8_2x);
+    CPPUNIT_TEST(TestCase_RenderXYZMetatileJPG_2x);
+    CPPUNIT_TEST(TestCase_RenderXYZMetatileGIF_2x);
+
+    CPPUNIT_TEST(TestCase_RenderXYZMetatilePNG_4x);
+    CPPUNIT_TEST(TestCase_RenderXYZMetatilePNG8_4x);
+    CPPUNIT_TEST(TestCase_RenderXYZMetatileJPG_4x);
+    CPPUNIT_TEST(TestCase_RenderXYZMetatileGIF_4x);
     
     CPPUNIT_TEST(TestCase_RenderMetatilePNG);
     CPPUNIT_TEST(TestCase_RenderMetatilePNG8);
@@ -169,7 +179,7 @@
 
     void TestCase_QueryFeatures();
     void TestCase_RenderMetatile(CREFSTRING imageFormat, CREFSTRING extension);
-    void TestCase_RenderXYZMetatile(CREFSTRING imageFormat, CREFSTRING extension);
+    void TestCase_RenderXYZMetatile(CREFSTRING imageFormat, CREFSTRING extension, INT32 retinaScale);
     void TestCase_RenderTile(CREFSTRING imageFormat, CREFSTRING extension);
     void TestCase_RenderTileXYZ(CREFSTRING imageFormat, CREFSTRING extension);
 
@@ -318,11 +328,21 @@
     void TestCase_RenderMetatileJPG() { TestCase_RenderMetatile(L"JPG", L"jpg"); }
     void TestCase_RenderMetatileGIF() { TestCase_RenderMetatile(L"GIF", L"gif"); }
 
-    void TestCase_RenderXYZMetatilePNG() { TestCase_RenderXYZMetatile(L"PNG", L"png"); }
-    void TestCase_RenderXYZMetatilePNG8() { TestCase_RenderXYZMetatile(L"PNG8", L"png"); }
-    void TestCase_RenderXYZMetatileJPG() { TestCase_RenderXYZMetatile(L"JPG", L"jpg"); }
-    void TestCase_RenderXYZMetatileGIF() { TestCase_RenderXYZMetatile(L"GIF", L"gif"); }
+    void TestCase_RenderXYZMetatilePNG() { TestCase_RenderXYZMetatile(L"PNG", L"png", 1); }
+    void TestCase_RenderXYZMetatilePNG8() { TestCase_RenderXYZMetatile(L"PNG8", L"png", 1); }
+    void TestCase_RenderXYZMetatileJPG() { TestCase_RenderXYZMetatile(L"JPG", L"jpg", 1); }
+    void TestCase_RenderXYZMetatileGIF() { TestCase_RenderXYZMetatile(L"GIF", L"gif", 1); }
 
+    void TestCase_RenderXYZMetatilePNG_2x() { TestCase_RenderXYZMetatile(L"PNG", L"png", 2); }
+    void TestCase_RenderXYZMetatilePNG8_2x() { TestCase_RenderXYZMetatile(L"PNG8", L"png", 2); }
+    void TestCase_RenderXYZMetatileJPG_2x() { TestCase_RenderXYZMetatile(L"JPG", L"jpg", 2); }
+    void TestCase_RenderXYZMetatileGIF_2x() { TestCase_RenderXYZMetatile(L"GIF", L"gif", 2); }
+
+    void TestCase_RenderXYZMetatilePNG_4x() { TestCase_RenderXYZMetatile(L"PNG", L"png", 4); }
+    void TestCase_RenderXYZMetatilePNG8_4x() { TestCase_RenderXYZMetatile(L"PNG8", L"png", 4); }
+    void TestCase_RenderXYZMetatileJPG_4x() { TestCase_RenderXYZMetatile(L"JPG", L"jpg", 4); }
+    void TestCase_RenderXYZMetatileGIF_4x() { TestCase_RenderXYZMetatile(L"GIF", L"gif", 4); }
+
 private:
     MgMap* CreateTestMap();
     MgMap* CreateTestTiledMap();

Modified: trunk/MgDev/Server/src/UnitTesting/TestTileService.cpp
===================================================================
--- trunk/MgDev/Server/src/UnitTesting/TestTileService.cpp	2019-06-22 08:42:36 UTC (rev 9559)
+++ trunk/MgDev/Server/src/UnitTesting/TestTileService.cpp	2019-06-25 11:20:14 UTC (rev 9560)
@@ -1860,7 +1860,7 @@
         INT32 mtX = y;
         INT32 mtY = x;
 
-        Ptr<MgMetatile> metaTile = renderSvc->RenderMetatileXYZ(map, L"BaseLayers", mtX, mtY, z, MgTileParameters::tileDPI, MgImageFormats::Png, MgConfigProperties::DefaultRenderingServicePropertyTileExtentOffset, metaTileFactor);
+        Ptr<MgMetatile> metaTile = renderSvc->RenderMetatileXYZ(map, L"BaseLayers", mtX, mtY, z, MgTileParameters::tileDPI, MgImageFormats::Png, MgConfigProperties::DefaultRenderingServicePropertyTileExtentOffset, metaTileFactor, 1 /* retinaScale */);
         Ptr<MgByteReader> mtContent = metaTile->GetImage();
         INT64 metaTileLen = mtContent->GetLength();
         INT32 mtFactor = metaTile->GetMetaTilingFactor();

Modified: trunk/MgDev/UnitTest/TestData/Samples/Sheboygan/Library/Samples/Sheboygan/TileSets/SheboyganXYZ.TileSetDefinition_CONTENT.xml
===================================================================
--- trunk/MgDev/UnitTest/TestData/Samples/Sheboygan/Library/Samples/Sheboygan/TileSets/SheboyganXYZ.TileSetDefinition_CONTENT.xml	2019-06-22 08:42:36 UTC (rev 9559)
+++ trunk/MgDev/UnitTest/TestData/Samples/Sheboygan/Library/Samples/Sheboygan/TileSets/SheboyganXYZ.TileSetDefinition_CONTENT.xml	2019-06-25 11:20:14 UTC (rev 9560)
@@ -12,10 +12,10 @@
     </Parameter>
   </TileStoreParameters>
   <Extents>
-    <MinX>-87.79786601383196</MinX>
-    <MaxX>-87.66452777186925</MaxX>
-    <MinY>43.6868578621819</MinY>
-    <MaxY>43.8037962206133</MaxY>
+    <MinX>-9769953.6613122653</MinX>
+    <MaxX>-9762220.7994439267</MaxX>
+    <MinY>5417808.8801717851</MinY>
+    <MaxY>5434161.2241863841</MaxY>
   </Extents>
   <BaseMapLayerGroup>
     <Name>Base Layer Group</Name>

Copied: trunk/MgDev/UnitTest/TestData/Samples/Sheboygan/Library/Samples/Sheboygan/TileSets/SheboyganXYZRetina.TileSetDefinition_CONTENT.xml (from rev 9559, sandbox/jng/tiling_v3/UnitTest/TestData/Samples/Sheboygan/Library/Samples/Sheboygan/TileSets/SheboyganXYZRetina.TileSetDefinition_CONTENT.xml)
===================================================================
--- trunk/MgDev/UnitTest/TestData/Samples/Sheboygan/Library/Samples/Sheboygan/TileSets/SheboyganXYZRetina.TileSetDefinition_CONTENT.xml	                        (rev 0)
+++ trunk/MgDev/UnitTest/TestData/Samples/Sheboygan/Library/Samples/Sheboygan/TileSets/SheboyganXYZRetina.TileSetDefinition_CONTENT.xml	2019-06-25 11:20:14 UTC (rev 9560)
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<TileSetDefinition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:noNamespaceSchemaLocation="TileSetDefinition-3.0.0.xsd">
+  <TileStoreParameters>
+    <TileProvider>XYZ</TileProvider>
+    <Parameter>
+      <Name>TilePath</Name>
+      <Value>%MG_TILE_CACHE_PATH%</Value>
+    </Parameter>
+    <Parameter>
+      <Name>TileFormat</Name>
+      <Value>PNG</Value>
+    </Parameter>
+    <Parameter>
+      <Name>RetinaScale</Name>
+      <Value>2</Value>
+    </Parameter>
+  </TileStoreParameters>
+  <Extents>
+    <MinX>-9769953.6613122653</MinX>
+    <MaxX>-9762220.7994439267</MaxX>
+    <MinY>5417808.8801717851</MinY>
+    <MaxY>5434161.2241863841</MaxY>
+  </Extents>
+  <BaseMapLayerGroup>
+    <Name>Base Layer Group</Name>
+    <Visible>true</Visible>
+    <ShowInLegend>true</ShowInLegend>
+    <ExpandInLegend>true</ExpandInLegend>
+    <LegendLabel>Tiled Layers</LegendLabel>
+    <BaseMapLayer>
+      <Name>Roads</Name>
+      <ResourceId>Library://Samples/Sheboygan/Layers/Roads.LayerDefinition</ResourceId>
+      <Selectable>false</Selectable>
+      <ShowInLegend>true</ShowInLegend>
+      <LegendLabel>Roads</LegendLabel>
+      <ExpandInLegend>true</ExpandInLegend>
+    </BaseMapLayer>
+    <BaseMapLayer>
+      <Name>Districts</Name>
+      <ResourceId>Library://Samples/Sheboygan/Layers/Districts.LayerDefinition</ResourceId>
+      <Selectable>false</Selectable>
+      <ShowInLegend>true</ShowInLegend>
+      <LegendLabel>Districts</LegendLabel>
+      <ExpandInLegend>true</ExpandInLegend>
+    </BaseMapLayer>
+    <BaseMapLayer>
+      <Name>Buildings</Name>
+      <ResourceId>Library://Samples/Sheboygan/Layers/Buildings.LayerDefinition</ResourceId>
+      <Selectable>false</Selectable>
+      <ShowInLegend>true</ShowInLegend>
+      <LegendLabel>Buildings</LegendLabel>
+      <ExpandInLegend>true</ExpandInLegend>
+    </BaseMapLayer>
+    <BaseMapLayer>
+      <Name>Parcels</Name>
+      <ResourceId>Library://Samples/Sheboygan/Layers/Parcels.LayerDefinition</ResourceId>
+      <Selectable>true</Selectable>
+      <ShowInLegend>true</ShowInLegend>
+      <LegendLabel>Parcels</LegendLabel>
+      <ExpandInLegend>true</ExpandInLegend>
+    </BaseMapLayer>
+    <BaseMapLayer>
+      <Name>Islands</Name>
+      <ResourceId>Library://Samples/Sheboygan/Layers/Islands.LayerDefinition</ResourceId>
+      <Selectable>false</Selectable>
+      <ShowInLegend>true</ShowInLegend>
+      <LegendLabel>Islands</LegendLabel>
+      <ExpandInLegend>true</ExpandInLegend>
+    </BaseMapLayer>
+    <BaseMapLayer>
+      <Name>Hydrography</Name>
+      <ResourceId>Library://Samples/Sheboygan/Layers/Hydrography.LayerDefinition</ResourceId>
+      <Selectable>false</Selectable>
+      <ShowInLegend>true</ShowInLegend>
+      <LegendLabel>Hydrography</LegendLabel>
+      <ExpandInLegend>true</ExpandInLegend>
+    </BaseMapLayer>
+    <BaseMapLayer>
+      <Name>CityLimits</Name>
+      <ResourceId>Library://Samples/Sheboygan/Layers/CityLimits.LayerDefinition</ResourceId>
+      <Selectable>false</Selectable>
+      <ShowInLegend>true</ShowInLegend>
+      <LegendLabel>CityLimits</LegendLabel>
+      <ExpandInLegend>true</ExpandInLegend>
+    </BaseMapLayer>
+  </BaseMapLayerGroup>
+</TileSetDefinition>
\ No newline at end of file

Copied: trunk/MgDev/UnitTest/TestData/Samples/Sheboygan/Library/Samples/Sheboygan/TileSets/SheboyganXYZRetina.TileSetDefinition_HEADER.xml (from rev 9559, sandbox/jng/tiling_v3/UnitTest/TestData/Samples/Sheboygan/Library/Samples/Sheboygan/TileSets/SheboyganXYZRetina.TileSetDefinition_HEADER.xml)
===================================================================
--- trunk/MgDev/UnitTest/TestData/Samples/Sheboygan/Library/Samples/Sheboygan/TileSets/SheboyganXYZRetina.TileSetDefinition_HEADER.xml	                        (rev 0)
+++ trunk/MgDev/UnitTest/TestData/Samples/Sheboygan/Library/Samples/Sheboygan/TileSets/SheboyganXYZRetina.TileSetDefinition_HEADER.xml	2019-06-25 11:20:14 UTC (rev 9560)
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ResourceDocumentHeader xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="ResourceDocumentHeader-1.0.0.xsd">
+	<Security xsi:noNamespaceSchemaLocation="ResourceSecurity-1.0.0.xsd">
+		<Inherited>true</Inherited>
+	</Security>
+</ResourceDocumentHeader>
\ No newline at end of file

Modified: trunk/MgDev/UnitTest/TestData/Samples/Sheboygan/MgResourcePackageManifest.xml
===================================================================
--- trunk/MgDev/UnitTest/TestData/Samples/Sheboygan/MgResourcePackageManifest.xml	2019-06-22 08:42:36 UTC (rev 9559)
+++ trunk/MgDev/UnitTest/TestData/Samples/Sheboygan/MgResourcePackageManifest.xml	2019-06-25 11:20:14 UTC (rev 9560)
@@ -1,2409 +1 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
-<ResourcePackageManifest
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="ResourcePackageManifest-1.0.0.xsd">
-    <Operations>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/FlexibleLayouts/_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/FlexibleLayouts/</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/Layers/_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layers/</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/Maps/_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Maps/</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/MapsTiled/_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/MapsTiled/</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/Layouts/_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layouts/</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/Symbols/_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Symbols/</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/Data/_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Data/</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/Watermarks/_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Watermarks/</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/Layers_Advanced/_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layers_Advanced/</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/TileSets/_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/TileSets/</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layers/CityLimits.LayerDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/Layers/CityLimits.LayerDefinition_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/Layers/CityLimits.LayerDefinition_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layers/CityLimits.LayerDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layers/Buildings.LayerDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/Layers/Buildings.LayerDefinition_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/Layers/Buildings.LayerDefinition_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layers/Buildings.LayerDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layers/Hydrography.LayerDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/Layers/Hydrography.LayerDefinition_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/Layers/Hydrography.LayerDefinition_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layers/Hydrography.LayerDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layers/Islands.LayerDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/Layers/Islands.LayerDefinition_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/Layers/Islands.LayerDefinition_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layers/Islands.LayerDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layers/Parcels.LayerDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/Layers/Parcels.LayerDefinition_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/Layers/Parcels.LayerDefinition_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layers/Parcels.LayerDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layers/Tracks.LayerDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/Layers/Tracks.LayerDefinition_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/Layers/Tracks.LayerDefinition_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layers/Tracks.LayerDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layouts/SheboyganPhpTiled.WebLayout</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/Layouts/SheboyganPhpTiled.WebLayout_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/Layouts/SheboyganPhpTiled.WebLayout_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layouts/SheboyganPhpTiled.WebLayout</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layouts/SheboyganAspTiled.WebLayout</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/Layouts/SheboyganAspTiled.WebLayout_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/Layouts/SheboyganAspTiled.WebLayout_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layouts/SheboyganAspTiled.WebLayout</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layouts/SheboyganJspTiled.WebLayout</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/Layouts/SheboyganJspTiled.WebLayout_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/Layouts/SheboyganJspTiled.WebLayout_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layouts/SheboyganJspTiled.WebLayout</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layouts/SheboyganPhp.WebLayout</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/Layouts/SheboyganPhp.WebLayout_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/Layouts/SheboyganPhp.WebLayout_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layouts/SheboyganPhp.WebLayout</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layouts/SheboyganAsp.WebLayout</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/Layouts/SheboyganAsp.WebLayout_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/Layouts/SheboyganAsp.WebLayout_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layouts/SheboyganAsp.WebLayout</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layouts/SheboyganJsp.WebLayout</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/Layouts/SheboyganJsp.WebLayout_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/Layouts/SheboyganJsp.WebLayout_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layouts/SheboyganJsp.WebLayout</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layouts/SheboyganMap.PrintLayout</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/Layouts/SheboyganMap.PrintLayout_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/Layouts/SheboyganMap.PrintLayout_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layouts/SheboyganMap.PrintLayout</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Symbols/BasicSymbols.SymbolLibrary</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/Symbols/BasicSymbols.SymbolLibrary_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/Symbols/BasicSymbols.SymbolLibrary_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Symbols/BasicSymbols.SymbolLibrary</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCEDATA</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>DATA</Name>
-                    <Value>Library/Samples/Sheboygan/Symbols/BasicSymbols.SymbolLibrary_DATA_symbols.dwf</Value>
-                    <ContentType>model/vnd.dwf</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>DATALENGTH</Name>
-                    <Value>5594</Value>
-                </Parameter>
-                <Parameter>
-                    <Name>DATANAME</Name>
-                    <Value>symbols.dwf</Value>
-                </Parameter>
-                <Parameter>
-                    <Name>DATATYPE</Name>
-                    <Value>File</Value>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Symbols/BasicSymbols.SymbolLibrary</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Symbols/Logos.SymbolLibrary</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/Symbols/Logos.SymbolLibrary_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/Symbols/Logos.SymbolLibrary_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Symbols/Logos.SymbolLibrary</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCEDATA</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>DATA</Name>
-                    <Value>Library/Samples/Sheboygan/Symbols/Logos.SymbolLibrary_DATA_symbols.dwf</Value>
-                    <ContentType>model/vnd.dwf</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>DATALENGTH</Name>
-                    <Value>22760</Value>
-                </Parameter>
-                <Parameter>
-                    <Name>DATANAME</Name>
-                    <Value>symbols.dwf</Value>
-                </Parameter>
-                <Parameter>
-                    <Name>DATATYPE</Name>
-                    <Value>File</Value>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Symbols/Logos.SymbolLibrary</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Data/BuildingOutlines.FeatureSource</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/Data/BuildingOutlines.FeatureSource_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/Data/BuildingOutlines.FeatureSource_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Data/BuildingOutlines.FeatureSource</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCEDATA</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>DATA</Name>
-                    <Value>Library/Samples/Sheboygan/Data/BuildingOutlines.FeatureSource_DATA_BuildingOutlines.sdf</Value>
-                    <ContentType>application/octet-stream</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>DATALENGTH</Name>
-                    <Value>8038400</Value>
-                </Parameter>
-                <Parameter>
-                    <Name>DATANAME</Name>
-                    <Value>BuildingOutlines.sdf</Value>
-                </Parameter>
-                <Parameter>
-                    <Name>DATATYPE</Name>
-                    <Value>File</Value>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Data/BuildingOutlines.FeatureSource</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Data/CityLimits.FeatureSource</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/Data/CityLimits.FeatureSource_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/Data/CityLimits.FeatureSource_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Data/CityLimits.FeatureSource</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCEDATA</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>DATA</Name>
-                    <Value>Library/Samples/Sheboygan/Data/CityLimits.FeatureSource_DATA_CityLimits.sdf</Value>
-                    <ContentType>application/octet-stream</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>DATALENGTH</Name>
-                    <Value>307200</Value>
-                </Parameter>
-                <Parameter>
-                    <Name>DATANAME</Name>
-                    <Value>CityLimits.sdf</Value>
-                </Parameter>
-                <Parameter>
-                    <Name>DATATYPE</Name>
-                    <Value>File</Value>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Data/CityLimits.FeatureSource</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Data/HydrographicLines.FeatureSource</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/Data/HydrographicLines.FeatureSource_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/Data/HydrographicLines.FeatureSource_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Data/HydrographicLines.FeatureSource</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCEDATA</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>DATA</Name>
-                    <Value>Library/Samples/Sheboygan/Data/HydrographicLines.FeatureSource_DATA_HydrographicLines.sdf</Value>
-                    <ContentType>application/octet-stream</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>DATALENGTH</Name>
-                    <Value>768000</Value>
-                </Parameter>
-                <Parameter>
-                    <Name>DATANAME</Name>
-                    <Value>HydrographicLines.sdf</Value>
-                </Parameter>
-                <Parameter>
-                    <Name>DATATYPE</Name>
-                    <Value>File</Value>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Data/HydrographicLines.FeatureSource</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Data/HydrographicPolygons.FeatureSource</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/Data/HydrographicPolygons.FeatureSource_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/Data/HydrographicPolygons.FeatureSource_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Data/HydrographicPolygons.FeatureSource</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCEDATA</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>DATA</Name>
-                    <Value>Library/Samples/Sheboygan/Data/HydrographicPolygons.FeatureSource_DATA_HydrographicPolygons.sdf</Value>
-                    <ContentType>application/octet-stream</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>DATALENGTH</Name>
-                    <Value>512000</Value>
-                </Parameter>
-                <Parameter>
-                    <Name>DATANAME</Name>
-                    <Value>HydrographicPolygons.sdf</Value>
-                </Parameter>
-                <Parameter>
-                    <Name>DATATYPE</Name>
-                    <Value>File</Value>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Data/HydrographicPolygons.FeatureSource</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Data/Islands.FeatureSource</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/Data/Islands.FeatureSource_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/Data/Islands.FeatureSource_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Data/Islands.FeatureSource</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCEDATA</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>DATA</Name>
-                    <Value>Library/Samples/Sheboygan/Data/Islands.FeatureSource_DATA_Islands.sdf</Value>
-                    <ContentType>application/octet-stream</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>DATALENGTH</Name>
-                    <Value>307200</Value>
-                </Parameter>
-                <Parameter>
-                    <Name>DATANAME</Name>
-                    <Value>Islands.sdf</Value>
-                </Parameter>
-                <Parameter>
-                    <Name>DATATYPE</Name>
-                    <Value>File</Value>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Data/Islands.FeatureSource</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Data/LandUse.FeatureSource</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/Data/LandUse.FeatureSource_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/Data/LandUse.FeatureSource_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Data/LandUse.FeatureSource</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCEDATA</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>DATA</Name>
-                    <Value>Library/Samples/Sheboygan/Data/LandUse.FeatureSource_DATA_LandUse.sdf</Value>
-                    <ContentType>application/octet-stream</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>DATALENGTH</Name>
-                    <Value>1996800</Value>
-                </Parameter>
-                <Parameter>
-                    <Name>DATANAME</Name>
-                    <Value>LandUse.sdf</Value>
-                </Parameter>
-                <Parameter>
-                    <Name>DATATYPE</Name>
-                    <Value>File</Value>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Data/LandUse.FeatureSource</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Data/Parcels.FeatureSource</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/Data/Parcels.FeatureSource_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/Data/Parcels.FeatureSource_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Data/Parcels.FeatureSource</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCEDATA</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>DATA</Name>
-                    <Value>Library/Samples/Sheboygan/Data/Parcels.FeatureSource_DATA_Parcels.sdf</Value>
-                    <ContentType>application/octet-stream</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>DATALENGTH</Name>
-                    <Value>11929600</Value>
-                </Parameter>
-                <Parameter>
-                    <Name>DATANAME</Name>
-                    <Value>Parcels.sdf</Value>
-                </Parameter>
-                <Parameter>
-                    <Name>DATATYPE</Name>
-                    <Value>File</Value>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Data/Parcels.FeatureSource</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Data/Rail.FeatureSource</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/Data/Rail.FeatureSource_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/Data/Rail.FeatureSource_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Data/Rail.FeatureSource</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCEDATA</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>DATA</Name>
-                    <Value>Library/Samples/Sheboygan/Data/Rail.FeatureSource_DATA_Rail.sdf</Value>
-                    <ContentType>application/octet-stream</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>DATALENGTH</Name>
-                    <Value>870400</Value>
-                </Parameter>
-                <Parameter>
-                    <Name>DATANAME</Name>
-                    <Value>Rail.sdf</Value>
-                </Parameter>
-                <Parameter>
-                    <Name>DATATYPE</Name>
-                    <Value>File</Value>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Data/Rail.FeatureSource</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Data/RoadCenterLines.FeatureSource</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/Data/RoadCenterLines.FeatureSource_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/Data/RoadCenterLines.FeatureSource_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Data/RoadCenterLines.FeatureSource</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCEDATA</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>DATA</Name>
-                    <Value>Library/Samples/Sheboygan/Data/RoadCenterLines.FeatureSource_DATA_RoadCenterLines.sdf</Value>
-                    <ContentType>application/octet-stream</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>DATALENGTH</Name>
-                    <Value>665600</Value>
-                </Parameter>
-                <Parameter>
-                    <Name>DATANAME</Name>
-                    <Value>RoadCenterLines.sdf</Value>
-                </Parameter>
-                <Parameter>
-                    <Name>DATATYPE</Name>
-                    <Value>File</Value>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Data/RoadCenterLines.FeatureSource</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Data/Soils.FeatureSource</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/Data/Soils.FeatureSource_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/Data/Soils.FeatureSource_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Data/Soils.FeatureSource</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCEDATA</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>DATA</Name>
-                    <Value>Library/Samples/Sheboygan/Data/Soils.FeatureSource_DATA_Soils.sdf</Value>
-                    <ContentType>application/octet-stream</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>DATALENGTH</Name>
-                    <Value>4556800</Value>
-                </Parameter>
-                <Parameter>
-                    <Name>DATANAME</Name>
-                    <Value>Soils.sdf</Value>
-                </Parameter>
-                <Parameter>
-                    <Name>DATATYPE</Name>
-                    <Value>File</Value>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Data/Soils.FeatureSource</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Data/Trees.FeatureSource</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/Data/Trees.FeatureSource_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/Data/Trees.FeatureSource_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Data/Trees.FeatureSource</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCEDATA</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>DATA</Name>
-                    <Value>Library/Samples/Sheboygan/Data/Trees.FeatureSource_DATA_Trees.sdf</Value>
-                    <ContentType>application/octet-stream</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>DATALENGTH</Name>
-                    <Value>6656000</Value>
-                </Parameter>
-                <Parameter>
-                    <Name>DATANAME</Name>
-                    <Value>Trees.sdf</Value>
-                </Parameter>
-                <Parameter>
-                    <Name>DATATYPE</Name>
-                    <Value>File</Value>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Data/Trees.FeatureSource</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Data/VotingDistricts.FeatureSource</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/Data/VotingDistricts.FeatureSource_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/Data/VotingDistricts.FeatureSource_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Data/VotingDistricts.FeatureSource</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCEDATA</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>DATA</Name>
-                    <Value>Library/Samples/Sheboygan/Data/VotingDistricts.FeatureSource_DATA_VotingDistricts.sdf</Value>
-                    <ContentType>application/octet-stream</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>DATALENGTH</Name>
-                    <Value>307200</Value>
-                </Parameter>
-                <Parameter>
-                    <Name>DATANAME</Name>
-                    <Value>VotingDistricts.sdf</Value>
-                </Parameter>
-                <Parameter>
-                    <Name>DATATYPE</Name>
-                    <Value>File</Value>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Data/VotingDistricts.FeatureSource</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layers/Districts.LayerDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/Layers/Districts.LayerDefinition_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/Layers/Districts.LayerDefinition_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layers/Districts.LayerDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layers/Roads.LayerDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/Layers/Roads.LayerDefinition_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/Layers/Roads.LayerDefinition_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layers/Roads.LayerDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Watermarks/MapText.WatermarkDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/Watermarks/MapText.WatermarkDefinition_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/Watermarks/MapText.WatermarkDefinition_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Watermarks/MapText.WatermarkDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Watermarks/MapCommercialText.WatermarkDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/Watermarks/MapCommercialText.WatermarkDefinition_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/Watermarks/MapCommercialText.WatermarkDefinition_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Watermarks/MapCommercialText.WatermarkDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Watermarks/MapTiledText.WatermarkDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/Watermarks/MapTiledText.WatermarkDefinition_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/Watermarks/MapTiledText.WatermarkDefinition_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Watermarks/MapTiledText.WatermarkDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layouts/SheboyganV26.WebLayout</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/Layouts/SheboyganV26.WebLayout_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/Layouts/SheboyganV26.WebLayout_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layouts/SheboyganV26.WebLayout</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/FlexibleLayouts/SlateCommercial.ApplicationDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/FlexibleLayouts/SlateCommercial.ApplicationDefinition_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/FlexibleLayouts/SlateCommercial.ApplicationDefinition_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/FlexibleLayouts/SlateCommercial.ApplicationDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/FlexibleLayouts/Slate.ApplicationDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/FlexibleLayouts/Slate.ApplicationDefinition_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/FlexibleLayouts/Slate.ApplicationDefinition_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/FlexibleLayouts/Slate.ApplicationDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/FlexibleLayouts/TurquoiseYellow.ApplicationDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/FlexibleLayouts/TurquoiseYellow.ApplicationDefinition_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/FlexibleLayouts/TurquoiseYellow.ApplicationDefinition_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/FlexibleLayouts/TurquoiseYellow.ApplicationDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/FlexibleLayouts/Aqua.ApplicationDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/FlexibleLayouts/Aqua.ApplicationDefinition_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/FlexibleLayouts/Aqua.ApplicationDefinition_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/FlexibleLayouts/Aqua.ApplicationDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/FlexibleLayouts/LimeGold.ApplicationDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/FlexibleLayouts/LimeGold.ApplicationDefinition_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/FlexibleLayouts/LimeGold.ApplicationDefinition_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/FlexibleLayouts/LimeGold.ApplicationDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/FlexibleLayouts/Maroon.ApplicationDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/FlexibleLayouts/Maroon.ApplicationDefinition_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/FlexibleLayouts/Maroon.ApplicationDefinition_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/FlexibleLayouts/Maroon.ApplicationDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layers/Trees.LayerDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/Layers/Trees.LayerDefinition_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/Layers/Trees.LayerDefinition_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layers/Trees.LayerDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layers/Soils.LayerDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/Layers/Soils.LayerDefinition_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/Layers/Soils.LayerDefinition_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layers/Soils.LayerDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Maps/Sheboygan.MapDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/Maps/Sheboygan.MapDefinition_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/Maps/Sheboygan.MapDefinition_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Maps/Sheboygan.MapDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Maps/SheboyganCommercial.MapDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/Maps/SheboyganCommercial.MapDefinition_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/Maps/SheboyganCommercial.MapDefinition_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Maps/SheboyganCommercial.MapDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layers_Advanced/CityLimits.LayerDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/Layers_Advanced/CityLimits.LayerDefinition_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/Layers_Advanced/CityLimits.LayerDefinition_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layers_Advanced/CityLimits.LayerDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layers_Advanced/Hydrography.LayerDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/Layers_Advanced/Hydrography.LayerDefinition_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/Layers_Advanced/Hydrography.LayerDefinition_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layers_Advanced/Hydrography.LayerDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layers_Advanced/Islands.LayerDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/Layers_Advanced/Islands.LayerDefinition_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/Layers_Advanced/Islands.LayerDefinition_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layers_Advanced/Islands.LayerDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layers_Advanced/Roads.LayerDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/Layers_Advanced/Roads.LayerDefinition_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/Layers_Advanced/Roads.LayerDefinition_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layers_Advanced/Roads.LayerDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layers_Advanced/Soils.LayerDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/Layers_Advanced/Soils.LayerDefinition_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/Layers_Advanced/Soils.LayerDefinition_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layers_Advanced/Soils.LayerDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layers_Advanced/Tracks.LayerDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/Layers_Advanced/Tracks.LayerDefinition_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/Layers_Advanced/Tracks.LayerDefinition_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layers_Advanced/Tracks.LayerDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Symbols/Rail.SymbolDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/Symbols/Rail.SymbolDefinition_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/Symbols/Rail.SymbolDefinition_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Symbols/Rail.SymbolDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Symbols/Trees.SymbolDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/Symbols/Trees.SymbolDefinition_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/Symbols/Trees.SymbolDefinition_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Symbols/Trees.SymbolDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Maps/Sheboygan_Advanced.MapDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/Maps/Sheboygan_Advanced.MapDefinition_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/Maps/Sheboygan_Advanced.MapDefinition_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Maps/Sheboygan_Advanced.MapDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Watermarks/MapAdvancedText.WatermarkDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/Watermarks/MapAdvancedText.WatermarkDefinition_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/Watermarks/MapAdvancedText.WatermarkDefinition_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Watermarks/MapAdvancedText.WatermarkDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layers_Advanced/Parcels.LayerDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/Layers_Advanced/Parcels.LayerDefinition_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/Layers_Advanced/Parcels.LayerDefinition_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layers_Advanced/Parcels.LayerDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layers_Advanced/Trees.LayerDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/Layers_Advanced/Trees.LayerDefinition_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/Layers_Advanced/Trees.LayerDefinition_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layers_Advanced/Trees.LayerDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layers_Advanced/Buildings.LayerDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/Layers_Advanced/Buildings.LayerDefinition_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/Layers_Advanced/Buildings.LayerDefinition_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layers_Advanced/Buildings.LayerDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layers_Advanced/Districts.LayerDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/Layers_Advanced/Districts.LayerDefinition_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/Layers_Advanced/Districts.LayerDefinition_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layers_Advanced/Districts.LayerDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layouts/AdvancedStylization.WebLayout</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/Layouts/AdvancedStylization.WebLayout_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/Layouts/AdvancedStylization.WebLayout_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/Layouts/AdvancedStylization.WebLayout</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/TileSets/Sheboygan.TileSetDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/TileSets/Sheboygan.TileSetDefinition_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/TileSets/Sheboygan.TileSetDefinition_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/TileSets/Sheboygan.TileSetDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/TileSets/SheboyganXYZ.TileSetDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/TileSets/SheboyganXYZ.TileSetDefinition_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/TileSets/SheboyganXYZ.TileSetDefinition_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/TileSets/SheboyganXYZ.TileSetDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/MapsTiled/Sheboygan.MapDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/MapsTiled/Sheboygan.MapDefinition_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/MapsTiled/Sheboygan.MapDefinition_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/MapsTiled/Sheboygan.MapDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>DELETERESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/TileSets/SheboyganUTFGrid.TileSetDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-        <Operation>
-            <Name>SETRESOURCE</Name>
-            <Version>1.0.0</Version>
-            <Parameters>
-                <Parameter>
-                    <Name>CONTENT</Name>
-                    <Value>Library/Samples/Sheboygan/TileSets/SheboyganUTFGrid.TileSetDefinition_CONTENT.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>HEADER</Name>
-                    <Value>Library/Samples/Sheboygan/TileSets/SheboyganUTFGrid.TileSetDefinition_HEADER.xml</Value>
-                    <ContentType>text/xml</ContentType>
-                </Parameter>
-                <Parameter>
-                    <Name>RESOURCEID</Name>
-                    <Value>Library://Samples/Sheboygan/TileSets/SheboyganUTFGrid.TileSetDefinition</Value>
-                </Parameter>
-            </Parameters>
-        </Operation>
-    </Operations>
-</ResourcePackageManifest>
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?><ResourcePackageManifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="ResourcePackageManifest-1.0.0.xsd"><Operations><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>HEADER</Name><Value>Library/Samples/_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/FlexibleLayouts/_HEADER.xml</Value><Content
 Type>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/FlexibleLayouts/</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/Layers/_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Layers/</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/Maps/_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Maps/</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/MapsTiled/_HEADER.xml</Value><ContentType>
 text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/MapsTiled/</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/Layouts/_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Layouts/</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/Symbols/_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Symbols/</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/Data/_HEADER.xml</Value><ContentType>text/xml
 </ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Data/</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/Watermarks/_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Watermarks/</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/Layers_Advanced/_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Layers_Advanced/</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/TileSets/_HEADER.xml</Value><Content
 Type>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/TileSets/</Value></Parameter></Parameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Layers/CityLimits.LayerDefinition</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/Layers/CityLimits.LayerDefinition_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/Layers/CityLimits.LayerDefinition_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Layers/CityLimits.LayerDefinition</Value></Parameter></Parameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Version><Paramet
 ers><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Layers/Buildings.LayerDefinition</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/Layers/Buildings.LayerDefinition_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/Layers/Buildings.LayerDefinition_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Layers/Buildings.LayerDefinition</Value></Parameter></Parameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Layers/Hydrography.LayerDefinition</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><N
 ame>CONTENT</Name><Value>Library/Samples/Sheboygan/Layers/Hydrography.LayerDefinition_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/Layers/Hydrography.LayerDefinition_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Layers/Hydrography.LayerDefinition</Value></Parameter></Parameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Layers/Islands.LayerDefinition</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/Layers/Islands.LayerDefinition_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/Layers/Islands.LayerD
 efinition_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Layers/Islands.LayerDefinition</Value></Parameter></Parameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Layers/Parcels.LayerDefinition</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/Layers/Parcels.LayerDefinition_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/Layers/Parcels.LayerDefinition_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Layers/Parcels.LayerDefinition</Value></Parameter></Parameters></Operation><Operation><Name>DELETERE
 SOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Layers/Tracks.LayerDefinition</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/Layers/Tracks.LayerDefinition_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/Layers/Tracks.LayerDefinition_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Layers/Tracks.LayerDefinition</Value></Parameter></Parameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Layouts/SheboyganPhpTiled.WebLayout</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0<
 /Version><Parameters><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/Layouts/SheboyganPhpTiled.WebLayout_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/Layouts/SheboyganPhpTiled.WebLayout_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Layouts/SheboyganPhpTiled.WebLayout</Value></Parameter></Parameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Layouts/SheboyganAspTiled.WebLayout</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/Layouts/SheboyganAspTiled.WebLayout_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>
 Library/Samples/Sheboygan/Layouts/SheboyganAspTiled.WebLayout_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Layouts/SheboyganAspTiled.WebLayout</Value></Parameter></Parameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Layouts/SheboyganJspTiled.WebLayout</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/Layouts/SheboyganJspTiled.WebLayout_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/Layouts/SheboyganJspTiled.WebLayout_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Layouts/SheboyganJspTiled.We
 bLayout</Value></Parameter></Parameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Layouts/SheboyganPhp.WebLayout</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/Layouts/SheboyganPhp.WebLayout_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/Layouts/SheboyganPhp.WebLayout_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Layouts/SheboyganPhp.WebLayout</Value></Parameter></Parameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Layouts/SheboyganAsp.WebLayout</Value></Parameter
 ></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/Layouts/SheboyganAsp.WebLayout_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/Layouts/SheboyganAsp.WebLayout_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Layouts/SheboyganAsp.WebLayout</Value></Parameter></Parameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Layouts/SheboyganJsp.WebLayout</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/Layouts/SheboyganJsp.WebLayout_CONTENT.xml</Value><ContentType>text/xml</ContentTyp
 e></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/Layouts/SheboyganJsp.WebLayout_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Layouts/SheboyganJsp.WebLayout</Value></Parameter></Parameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Layouts/SheboyganMap.PrintLayout</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/Layouts/SheboyganMap.PrintLayout_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/Layouts/SheboyganMap.PrintLayout_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboy
 gan/Layouts/SheboyganMap.PrintLayout</Value></Parameter></Parameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Symbols/BasicSymbols.SymbolLibrary</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/Symbols/BasicSymbols.SymbolLibrary_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/Symbols/BasicSymbols.SymbolLibrary_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Symbols/BasicSymbols.SymbolLibrary</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCEDATA</Name><Version>1.0.0</Version><Parameters><Parameter><Name>DATA</Name><Value>Library/Samples/Sheboygan/Symbols/Bas
 icSymbols.SymbolLibrary_DATA_symbols.dwf</Value><ContentType>model/vnd.dwf</ContentType></Parameter><Parameter><Name>DATALENGTH</Name><Value>5594</Value></Parameter><Parameter><Name>DATANAME</Name><Value>symbols.dwf</Value></Parameter><Parameter><Name>DATATYPE</Name><Value>File</Value></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Symbols/BasicSymbols.SymbolLibrary</Value></Parameter></Parameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Symbols/Logos.SymbolLibrary</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/Symbols/Logos.SymbolLibrary_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/Symbols/Logos.SymbolLibrary_HEADER.xml</Valu
 e><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Symbols/Logos.SymbolLibrary</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCEDATA</Name><Version>1.0.0</Version><Parameters><Parameter><Name>DATA</Name><Value>Library/Samples/Sheboygan/Symbols/Logos.SymbolLibrary_DATA_symbols.dwf</Value><ContentType>model/vnd.dwf</ContentType></Parameter><Parameter><Name>DATALENGTH</Name><Value>22760</Value></Parameter><Parameter><Name>DATANAME</Name><Value>symbols.dwf</Value></Parameter><Parameter><Name>DATATYPE</Name><Value>File</Value></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Symbols/Logos.SymbolLibrary</Value></Parameter></Parameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Data/BuildingOutlines.FeatureSource</Value></Parameter></Parameters></Operation><Ope
 ration><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/Data/BuildingOutlines.FeatureSource_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/Data/BuildingOutlines.FeatureSource_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Data/BuildingOutlines.FeatureSource</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCEDATA</Name><Version>1.0.0</Version><Parameters><Parameter><Name>DATA</Name><Value>Library/Samples/Sheboygan/Data/BuildingOutlines.FeatureSource_DATA_BuildingOutlines.sdf</Value><ContentType>application/octet-stream</ContentType></Parameter><Parameter><Name>DATALENGTH</Name><Value>8038400</Value></Parameter><Parameter><Name>DATANAME</Name><Value>BuildingOutlines.sdf</Value></Parameter><Parameter><Name>DATATYPE</Name><Val
 ue>File</Value></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Data/BuildingOutlines.FeatureSource</Value></Parameter></Parameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Data/CityLimits.FeatureSource</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/Data/CityLimits.FeatureSource_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/Data/CityLimits.FeatureSource_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Data/CityLimits.FeatureSource</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCEDATA</Name><Version>1.0.0</Version><Paramete
 rs><Parameter><Name>DATA</Name><Value>Library/Samples/Sheboygan/Data/CityLimits.FeatureSource_DATA_CityLimits.sdf</Value><ContentType>application/octet-stream</ContentType></Parameter><Parameter><Name>DATALENGTH</Name><Value>307200</Value></Parameter><Parameter><Name>DATANAME</Name><Value>CityLimits.sdf</Value></Parameter><Parameter><Name>DATATYPE</Name><Value>File</Value></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Data/CityLimits.FeatureSource</Value></Parameter></Parameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Data/HydrographicLines.FeatureSource</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/Data/HydrographicLines.FeatureSource_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Para
 meter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/Data/HydrographicLines.FeatureSource_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Data/HydrographicLines.FeatureSource</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCEDATA</Name><Version>1.0.0</Version><Parameters><Parameter><Name>DATA</Name><Value>Library/Samples/Sheboygan/Data/HydrographicLines.FeatureSource_DATA_HydrographicLines.sdf</Value><ContentType>application/octet-stream</ContentType></Parameter><Parameter><Name>DATALENGTH</Name><Value>768000</Value></Parameter><Parameter><Name>DATANAME</Name><Value>HydrographicLines.sdf</Value></Parameter><Parameter><Name>DATATYPE</Name><Value>File</Value></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Data/HydrographicLines.FeatureSource</Value></Parameter></Parameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Ver
 sion><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Data/HydrographicPolygons.FeatureSource</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/Data/HydrographicPolygons.FeatureSource_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/Data/HydrographicPolygons.FeatureSource_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Data/HydrographicPolygons.FeatureSource</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCEDATA</Name><Version>1.0.0</Version><Parameters><Parameter><Name>DATA</Name><Value>Library/Samples/Sheboygan/Data/HydrographicPolygons.FeatureSource_DATA_HydrographicPolygons.sdf</Value><ContentType>application/octet-stream</ContentType><
 /Parameter><Parameter><Name>DATALENGTH</Name><Value>512000</Value></Parameter><Parameter><Name>DATANAME</Name><Value>HydrographicPolygons.sdf</Value></Parameter><Parameter><Name>DATATYPE</Name><Value>File</Value></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Data/HydrographicPolygons.FeatureSource</Value></Parameter></Parameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Data/Islands.FeatureSource</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/Data/Islands.FeatureSource_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/Data/Islands.FeatureSource_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOUR
 CEID</Name><Value>Library://Samples/Sheboygan/Data/Islands.FeatureSource</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCEDATA</Name><Version>1.0.0</Version><Parameters><Parameter><Name>DATA</Name><Value>Library/Samples/Sheboygan/Data/Islands.FeatureSource_DATA_Islands.sdf</Value><ContentType>application/octet-stream</ContentType></Parameter><Parameter><Name>DATALENGTH</Name><Value>307200</Value></Parameter><Parameter><Name>DATANAME</Name><Value>Islands.sdf</Value></Parameter><Parameter><Name>DATATYPE</Name><Value>File</Value></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Data/Islands.FeatureSource</Value></Parameter></Parameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Data/LandUse.FeatureSource</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Para
 meter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/Data/LandUse.FeatureSource_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/Data/LandUse.FeatureSource_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Data/LandUse.FeatureSource</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCEDATA</Name><Version>1.0.0</Version><Parameters><Parameter><Name>DATA</Name><Value>Library/Samples/Sheboygan/Data/LandUse.FeatureSource_DATA_LandUse.sdf</Value><ContentType>application/octet-stream</ContentType></Parameter><Parameter><Name>DATALENGTH</Name><Value>1996800</Value></Parameter><Parameter><Name>DATANAME</Name><Value>LandUse.sdf</Value></Parameter><Parameter><Name>DATATYPE</Name><Value>File</Value></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Data/LandUse.FeatureSource</Va
 lue></Parameter></Parameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Data/Parcels.FeatureSource</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/Data/Parcels.FeatureSource_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/Data/Parcels.FeatureSource_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Data/Parcels.FeatureSource</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCEDATA</Name><Version>1.0.0</Version><Parameters><Parameter><Name>DATA</Name><Value>Library/Samples/Sheboygan/Data/Parcels.FeatureSource_DATA_Parcels.sdf</Value><ContentType>application/octet-s
 tream</ContentType></Parameter><Parameter><Name>DATALENGTH</Name><Value>11929600</Value></Parameter><Parameter><Name>DATANAME</Name><Value>Parcels.sdf</Value></Parameter><Parameter><Name>DATATYPE</Name><Value>File</Value></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Data/Parcels.FeatureSource</Value></Parameter></Parameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Data/Rail.FeatureSource</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/Data/Rail.FeatureSource_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/Data/Rail.FeatureSource_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><V
 alue>Library://Samples/Sheboygan/Data/Rail.FeatureSource</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCEDATA</Name><Version>1.0.0</Version><Parameters><Parameter><Name>DATA</Name><Value>Library/Samples/Sheboygan/Data/Rail.FeatureSource_DATA_Rail.sdf</Value><ContentType>application/octet-stream</ContentType></Parameter><Parameter><Name>DATALENGTH</Name><Value>870400</Value></Parameter><Parameter><Name>DATANAME</Name><Value>Rail.sdf</Value></Parameter><Parameter><Name>DATATYPE</Name><Value>File</Value></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Data/Rail.FeatureSource</Value></Parameter></Parameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Data/RoadCenterLines.FeatureSource</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>CONTENT<
 /Name><Value>Library/Samples/Sheboygan/Data/RoadCenterLines.FeatureSource_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/Data/RoadCenterLines.FeatureSource_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Data/RoadCenterLines.FeatureSource</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCEDATA</Name><Version>1.0.0</Version><Parameters><Parameter><Name>DATA</Name><Value>Library/Samples/Sheboygan/Data/RoadCenterLines.FeatureSource_DATA_RoadCenterLines.sdf</Value><ContentType>application/octet-stream</ContentType></Parameter><Parameter><Name>DATALENGTH</Name><Value>665600</Value></Parameter><Parameter><Name>DATANAME</Name><Value>RoadCenterLines.sdf</Value></Parameter><Parameter><Name>DATATYPE</Name><Value>File</Value></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Dat
 a/RoadCenterLines.FeatureSource</Value></Parameter></Parameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Data/Soils.FeatureSource</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/Data/Soils.FeatureSource_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/Data/Soils.FeatureSource_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Data/Soils.FeatureSource</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCEDATA</Name><Version>1.0.0</Version><Parameters><Parameter><Name>DATA</Name><Value>Library/Samples/Sheboygan/Data/Soils.FeatureSource_DATA_Soils.sdf</Value><ContentT
 ype>application/octet-stream</ContentType></Parameter><Parameter><Name>DATALENGTH</Name><Value>4556800</Value></Parameter><Parameter><Name>DATANAME</Name><Value>Soils.sdf</Value></Parameter><Parameter><Name>DATATYPE</Name><Value>File</Value></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Data/Soils.FeatureSource</Value></Parameter></Parameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Data/Trees.FeatureSource</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/Data/Trees.FeatureSource_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/Data/Trees.FeatureSource_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Nam
 e>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Data/Trees.FeatureSource</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCEDATA</Name><Version>1.0.0</Version><Parameters><Parameter><Name>DATA</Name><Value>Library/Samples/Sheboygan/Data/Trees.FeatureSource_DATA_Trees.sdf</Value><ContentType>application/octet-stream</ContentType></Parameter><Parameter><Name>DATALENGTH</Name><Value>6656000</Value></Parameter><Parameter><Name>DATANAME</Name><Value>Trees.sdf</Value></Parameter><Parameter><Name>DATATYPE</Name><Value>File</Value></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Data/Trees.FeatureSource</Value></Parameter></Parameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Data/VotingDistricts.FeatureSource</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameter
 s><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/Data/VotingDistricts.FeatureSource_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/Data/VotingDistricts.FeatureSource_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Data/VotingDistricts.FeatureSource</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCEDATA</Name><Version>1.0.0</Version><Parameters><Parameter><Name>DATA</Name><Value>Library/Samples/Sheboygan/Data/VotingDistricts.FeatureSource_DATA_VotingDistricts.sdf</Value><ContentType>application/octet-stream</ContentType></Parameter><Parameter><Name>DATALENGTH</Name><Value>307200</Value></Parameter><Parameter><Name>DATANAME</Name><Value>VotingDistricts.sdf</Value></Parameter><Parameter><Name>DATATYPE</Name><Value>File</Value></Parameter><Parameter><Name>RESOURCEID</Name><Value>Libr
 ary://Samples/Sheboygan/Data/VotingDistricts.FeatureSource</Value></Parameter></Parameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Layers/Districts.LayerDefinition</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/Layers/Districts.LayerDefinition_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/Layers/Districts.LayerDefinition_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Layers/Districts.LayerDefinition</Value></Parameter></Parameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/
 Sheboygan/Layers/Roads.LayerDefinition</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/Layers/Roads.LayerDefinition_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/Layers/Roads.LayerDefinition_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Layers/Roads.LayerDefinition</Value></Parameter></Parameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Watermarks/MapText.WatermarkDefinition</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/Watermarks/MapText.Water
 markDefinition_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/Watermarks/MapText.WatermarkDefinition_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Watermarks/MapText.WatermarkDefinition</Value></Parameter></Parameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Watermarks/MapCommercialText.WatermarkDefinition</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/Watermarks/MapCommercialText.WatermarkDefinition_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/Watermarks/MapCommercialText.WatermarkDefinition
 _HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Watermarks/MapCommercialText.WatermarkDefinition</Value></Parameter></Parameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Watermarks/MapTiledText.WatermarkDefinition</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/Watermarks/MapTiledText.WatermarkDefinition_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/Watermarks/MapTiledText.WatermarkDefinition_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Watermarks/MapTiledText.WatermarkDefinition</Value><
 /Parameter></Parameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Layouts/SheboyganV26.WebLayout</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/Layouts/SheboyganV26.WebLayout_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/Layouts/SheboyganV26.WebLayout_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Layouts/SheboyganV26.WebLayout</Value></Parameter></Parameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/FlexibleLayouts/SlateCommercial.ApplicationDefinition</Value></Pa
 rameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/FlexibleLayouts/SlateCommercial.ApplicationDefinition_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/FlexibleLayouts/SlateCommercial.ApplicationDefinition_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/FlexibleLayouts/SlateCommercial.ApplicationDefinition</Value></Parameter></Parameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/FlexibleLayouts/Slate.ApplicationDefinition</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheb
 oygan/FlexibleLayouts/Slate.ApplicationDefinition_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/FlexibleLayouts/Slate.ApplicationDefinition_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/FlexibleLayouts/Slate.ApplicationDefinition</Value></Parameter></Parameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/FlexibleLayouts/TurquoiseYellow.ApplicationDefinition</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/FlexibleLayouts/TurquoiseYellow.ApplicationDefinition_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/She
 boygan/FlexibleLayouts/TurquoiseYellow.ApplicationDefinition_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/FlexibleLayouts/TurquoiseYellow.ApplicationDefinition</Value></Parameter></Parameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/FlexibleLayouts/Aqua.ApplicationDefinition</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/FlexibleLayouts/Aqua.ApplicationDefinition_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/FlexibleLayouts/Aqua.ApplicationDefinition_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/
 Sheboygan/FlexibleLayouts/Aqua.ApplicationDefinition</Value></Parameter></Parameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/FlexibleLayouts/LimeGold.ApplicationDefinition</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/FlexibleLayouts/LimeGold.ApplicationDefinition_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/FlexibleLayouts/LimeGold.ApplicationDefinition_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/FlexibleLayouts/LimeGold.ApplicationDefinition</Value></Parameter></Parameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Version><Parameters><Paramete
 r><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/FlexibleLayouts/Maroon.ApplicationDefinition</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/FlexibleLayouts/Maroon.ApplicationDefinition_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/FlexibleLayouts/Maroon.ApplicationDefinition_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/FlexibleLayouts/Maroon.ApplicationDefinition</Value></Parameter></Parameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Layers/Trees.LayerDefinition</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Vers
 ion><Parameters><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/Layers/Trees.LayerDefinition_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/Layers/Trees.LayerDefinition_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Layers/Trees.LayerDefinition</Value></Parameter></Parameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Layers/Soils.LayerDefinition</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/Layers/Soils.LayerDefinition_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/Layers/Soils.L
 ayerDefinition_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Layers/Soils.LayerDefinition</Value></Parameter></Parameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Maps/Sheboygan.MapDefinition</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/Maps/Sheboygan.MapDefinition_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/Maps/Sheboygan.MapDefinition_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Maps/Sheboygan.MapDefinition</Value></Parameter></Parameters></Operation><Operation><Name>DELETERESOURC
 E</Name><Version>1.0.0</Version><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Maps/SheboyganCommercial.MapDefinition</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/Maps/SheboyganCommercial.MapDefinition_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/Maps/SheboyganCommercial.MapDefinition_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Maps/SheboyganCommercial.MapDefinition</Value></Parameter></Parameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Layers_Advanced/CityLimits.LayerDefinition</Value></Parameter></Parameters></Operation><Operation><
 Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/Layers_Advanced/CityLimits.LayerDefinition_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/Layers_Advanced/CityLimits.LayerDefinition_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Layers_Advanced/CityLimits.LayerDefinition</Value></Parameter></Parameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Layers_Advanced/Hydrography.LayerDefinition</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/Layers_Advanced/Hydrography.LayerDefinition_CONTENT.xml</Value><ContentT
 ype>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/Layers_Advanced/Hydrography.LayerDefinition_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Layers_Advanced/Hydrography.LayerDefinition</Value></Parameter></Parameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Layers_Advanced/Islands.LayerDefinition</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/Layers_Advanced/Islands.LayerDefinition_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/Layers_Advanced/Islands.LayerDefinition_HEADER.xml</Value><ContentType>text/xml</ContentType></Para
 meter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Layers_Advanced/Islands.LayerDefinition</Value></Parameter></Parameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Layers_Advanced/Roads.LayerDefinition</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/Layers_Advanced/Roads.LayerDefinition_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/Layers_Advanced/Roads.LayerDefinition_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Layers_Advanced/Roads.LayerDefinition</Value></Parameter></Parameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Ver
 sion><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Layers_Advanced/Soils.LayerDefinition</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/Layers_Advanced/Soils.LayerDefinition_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/Layers_Advanced/Soils.LayerDefinition_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Layers_Advanced/Soils.LayerDefinition</Value></Parameter></Parameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Layers_Advanced/Tracks.LayerDefinition</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0
 .0</Version><Parameters><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/Layers_Advanced/Tracks.LayerDefinition_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/Layers_Advanced/Tracks.LayerDefinition_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Layers_Advanced/Tracks.LayerDefinition</Value></Parameter></Parameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Symbols/Rail.SymbolDefinition</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/Symbols/Rail.SymbolDefinition_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>
 Library/Samples/Sheboygan/Symbols/Rail.SymbolDefinition_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Symbols/Rail.SymbolDefinition</Value></Parameter></Parameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Symbols/Trees.SymbolDefinition</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/Symbols/Trees.SymbolDefinition_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/Symbols/Trees.SymbolDefinition_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Symbols/Trees.SymbolDefinition</Value></Parameter></Par
 ameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Maps/Sheboygan_Advanced.MapDefinition</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/Maps/Sheboygan_Advanced.MapDefinition_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/Maps/Sheboygan_Advanced.MapDefinition_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Maps/Sheboygan_Advanced.MapDefinition</Value></Parameter></Parameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Watermarks/MapAdvancedText.WatermarkDefinition</Value
 ></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/Watermarks/MapAdvancedText.WatermarkDefinition_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/Watermarks/MapAdvancedText.WatermarkDefinition_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Watermarks/MapAdvancedText.WatermarkDefinition</Value></Parameter></Parameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Layers_Advanced/Parcels.LayerDefinition</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/Layers_Advance
 d/Parcels.LayerDefinition_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/Layers_Advanced/Parcels.LayerDefinition_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Layers_Advanced/Parcels.LayerDefinition</Value></Parameter></Parameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Layers_Advanced/Trees.LayerDefinition</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/Layers_Advanced/Trees.LayerDefinition_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/Layers_Advanced/Trees.LayerDefinition_HEADER.xml</Value><
 ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Layers_Advanced/Trees.LayerDefinition</Value></Parameter></Parameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Layers_Advanced/Buildings.LayerDefinition</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/Layers_Advanced/Buildings.LayerDefinition_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/Layers_Advanced/Buildings.LayerDefinition_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Layers_Advanced/Buildings.LayerDefinition</Value></Parameter></Parameters></Operation><Op
 eration><Name>DELETERESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Layers_Advanced/Districts.LayerDefinition</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/Layers_Advanced/Districts.LayerDefinition_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/Layers_Advanced/Districts.LayerDefinition_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Layers_Advanced/Districts.LayerDefinition</Value></Parameter></Parameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Layouts/AdvancedStylization.WebLayout</Value></Parameter></P
 arameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/Layouts/AdvancedStylization.WebLayout_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/Layouts/AdvancedStylization.WebLayout_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/Layouts/AdvancedStylization.WebLayout</Value></Parameter></Parameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/TileSets/Sheboygan.TileSetDefinition</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/TileSets/Sheboygan.TileSetDefinition_CONTENT.xml</Value><Con
 tentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/TileSets/Sheboygan.TileSetDefinition_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/TileSets/Sheboygan.TileSetDefinition</Value></Parameter></Parameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/MapsTiled/Sheboygan.MapDefinition</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/MapsTiled/Sheboygan.MapDefinition_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/MapsTiled/Sheboygan.MapDefinition_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESO
 URCEID</Name><Value>Library://Samples/Sheboygan/MapsTiled/Sheboygan.MapDefinition</Value></Parameter></Parameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/TileSets/SheboyganUTFGrid.TileSetDefinition</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/TileSets/SheboyganUTFGrid.TileSetDefinition_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/TileSets/SheboyganUTFGrid.TileSetDefinition_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/TileSets/SheboyganUTFGrid.TileSetDefinition</Value></Parameter></Parameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Version><Par
 ameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/TileSets/SheboyganXYZ.TileSetDefinition</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/TileSets/SheboyganXYZ.TileSetDefinition_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/TileSets/SheboyganXYZ.TileSetDefinition_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/TileSets/SheboyganXYZ.TileSetDefinition</Value></Parameter></Parameters></Operation><Operation><Name>DELETERESOURCE</Name><Version>1.0.0</Version><Parameters><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/TileSets/SheboyganXYZRetina.TileSetDefinition</Value></Parameter></Parameters></Operation><Operation><Name>SETRESOURCE</Name><Versi
 on>1.0.0</Version><Parameters><Parameter><Name>CONTENT</Name><Value>Library/Samples/Sheboygan/TileSets/SheboyganXYZRetina.TileSetDefinition_CONTENT.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>HEADER</Name><Value>Library/Samples/Sheboygan/TileSets/SheboyganXYZRetina.TileSetDefinition_HEADER.xml</Value><ContentType>text/xml</ContentType></Parameter><Parameter><Name>RESOURCEID</Name><Value>Library://Samples/Sheboygan/TileSets/SheboyganXYZRetina.TileSetDefinition</Value></Parameter></Parameters></Operation></Operations></ResourcePackageManifest>
\ No newline at end of file

Copied: trunk/MgDev/UnitTest/TestData/TileService/UT_LinkedTileSetXYZ.mdf (from rev 9559, sandbox/jng/tiling_v3/UnitTest/TestData/TileService/UT_LinkedTileSetXYZ.mdf)
===================================================================
--- trunk/MgDev/UnitTest/TestData/TileService/UT_LinkedTileSetXYZ.mdf	                        (rev 0)
+++ trunk/MgDev/UnitTest/TestData/TileService/UT_LinkedTileSetXYZ.mdf	2019-06-25 11:20:14 UTC (rev 9560)
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<MapDefinition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="MapDefinition-3.0.0.xsd" version="3.0.0">
+  <Name>Base Map linked to Tile Set</Name>
+  <CoordinateSystem>PROJCS["WGS84.PseudoMercator",GEOGCS["LL84",DATUM["WGS84",SPHEROID["WGS84",6378137.000,298.25722293]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Popular Visualisation Pseudo Mercator"],PARAMETER["false_easting",0.000],PARAMETER["false_northing",0.000],PARAMETER["central_meridian",0.00000000000000],UNIT["Meter",1.00000000000000]]</CoordinateSystem>
+  <Extents>
+    <MinX>-9773613.7373958</MinX>
+    <MaxX>-9758770.5921973</MaxX>
+    <MinY>5417109.9090669</MinY>
+    <MaxY>5435129.2308673</MaxY>
+  </Extents>
+  <BackgroundColor>FFF7E1D2</BackgroundColor>
+  <MapLayer>
+    <Name>RoadCenterLines</Name>
+    <ResourceId>Library://UnitTests/Layers/RoadCenterLines.LayerDefinition</ResourceId>
+    <Selectable>false</Selectable>
+    <ShowInLegend>true</ShowInLegend>
+    <LegendLabel>Road CenterLines</LegendLabel>
+    <ExpandInLegend>false</ExpandInLegend>
+    <Visible>true</Visible>
+    <Group></Group>
+  </MapLayer>
+  <TileSetSource>
+    <ResourceId>Library://UnitTests/TileSets/XYZ.TileSetDefinition</ResourceId>
+  </TileSetSource>
+</MapDefinition>

Modified: trunk/MgDev/Web/src/HttpHandler/XmlJsonConvert.cpp
===================================================================
--- trunk/MgDev/Web/src/HttpHandler/XmlJsonConvert.cpp	2019-06-22 08:42:36 UTC (rev 9559)
+++ trunk/MgDev/Web/src/HttpHandler/XmlJsonConvert.cpp	2019-06-25 11:20:14 UTC (rev 9560)
@@ -827,6 +827,8 @@
     //RuntimeMap-3.0.0.xsd
     s_elementPathTypeMap["/RuntimeMap/TileWidth"] = XML_DATA_TYPE_NUM_INT;
     s_elementPathTypeMap["/RuntimeMap/TileHeight"] = XML_DATA_TYPE_NUM_INT;
+    //RuntimeMap-4.0.0.xsd
+    s_elementPathTypeMap["/RuntimeMap/TilePixelRatio"] = XML_DATA_TYPE_NUM_INT;
     //SiteInformation-1.0.0.xsd
     s_elementPathTypeMap["/SiteInformation/SiteServer/OperatingSystem/AvailablePhysicalMemory"] = XML_DATA_TYPE_NUM_INT;
     s_elementPathTypeMap["/SiteInformation/SiteServer/OperatingSystem/TotalPhysicalMemory"] = XML_DATA_TYPE_NUM_INT;

Modified: trunk/MgDev/Web/src/localized/en
===================================================================
--- trunk/MgDev/Web/src/localized/en	2019-06-22 08:42:36 UTC (rev 9559)
+++ trunk/MgDev/Web/src/localized/en	2019-06-25 11:20:14 UTC (rev 9560)
@@ -276,3 +276,6 @@
 # Multiple Property Processing
 SERVERERROR             = Server Error
 ERRORSTACKTRACE         = Stack Trace
+
+# Unsupported tile set
+ERR_UNSUPPORTED_TILESET = Unsupported tile set provider: {0}
\ No newline at end of file

Modified: trunk/MgDev/Web/src/mapviewerjava/mapframe.jsp
===================================================================
--- trunk/MgDev/Web/src/mapviewerjava/mapframe.jsp	2019-06-22 08:42:36 UTC (rev 9559)
+++ trunk/MgDev/Web/src/mapviewerjava/mapframe.jsp	2019-06-25 11:20:14 UTC (rev 9560)
@@ -75,6 +75,11 @@
     int tileSizeY = tileSrvc.GetDefaultTileSizeY();
     if (null != tileSetId)
     {
+        //Can't load map if it points to a non-default tile set provider
+        if (map.GetTileSetProvider() != "Default")
+        {
+            throw new RuntimeException(MessageFormat.format(MgLocalizer.GetString("ERR_UNSUPPORTED_TILESET", locale), new Object[] { map.GetTileSetProvider() }));
+        }
         //Overwrite the map definition with tile set id (this is for GETTILE requests) and
         //use size settings from that tile set
         mapDefinition = tileSetId.ToString();

Modified: trunk/MgDev/Web/src/mapviewernet/mapframe.aspx
===================================================================
--- trunk/MgDev/Web/src/mapviewernet/mapframe.aspx	2019-06-22 08:42:36 UTC (rev 9559)
+++ trunk/MgDev/Web/src/mapviewernet/mapframe.aspx	2019-06-25 11:20:14 UTC (rev 9560)
@@ -78,6 +78,11 @@
         int tileSizeY = tileSrvc.GetDefaultTileSizeY();
         if (null != tileSetId)
         {
+            //Can't load map if it points to a non-default tile set provider
+            if (map.GetTileSetProvider() != "Default")
+            {
+                throw new Exception(String.Format(MgLocalizer.GetString("ERR_UNSUPPORTED_TILESET", locale), new Object[] { map.GetTileSetProvider() }));
+            }
             //Overwrite the map definition with tile set id (this is for GETTILE requests) and
             //use size settings from that tile set
             mapDefinition = tileSetId.ToString();

Modified: trunk/MgDev/Web/src/mapviewerphp/mapframe.php
===================================================================
--- trunk/MgDev/Web/src/mapviewerphp/mapframe.php	2019-06-22 08:42:36 UTC (rev 9559)
+++ trunk/MgDev/Web/src/mapviewerphp/mapframe.php	2019-06-25 11:20:14 UTC (rev 9560)
@@ -68,6 +68,11 @@
     $tileSizeY = $tileSrvc->GetDefaultTileSizeY();
     if (NULL != $tileSetId)
     {
+        //Can't load map if it points to a non-default tile set provider
+        if ($map->GetTileSetProvider() != "Default")
+        {
+            throw new Exception(FormatMessage("ERR_UNSUPPORTED_TILESET", $locale, array($map->GetTileSetProvider())));
+        }
         //Overwrite the map definition with tile set id (this is for GETTILE requests) and
         //use size settings from that tile set
         $mapDefinition = $tileSetId->ToString();
@@ -152,6 +157,11 @@
     $errorMsg = EscapeForHtml($e->GetDetails());
     echo $errorMsg;
 }
+catch(Exception $e)
+{
+    $errorMsg = EscapeForHtml($e->getMessage());
+    echo $errorMsg;
+}
 
 //load ajax template code and format it
 function GetParameters($params)



More information about the mapguide-commits mailing list