<?xml version="1.0" encoding="UTF-8"?>

<!--
   Licensed to the Apache Software Foundation (ASF) under one
   or more contributor license agreements.  See the NOTICE file
   distributed with this work for additional information
   regarding copyright ownership.  The ASF licenses this file
   to you under the Apache License, Version 2.0 (the
   "License"); you may not use this file except in compliance
   with the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing,
   software distributed under the License is distributed on an
   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
   KIND, either express or implied.  See the License for the
   specific language governing permissions and limitations
   under the License.    
-->

<!-- set the basedir value to point to the top level of the project -->

<project name="FsVariables User Guide" default="all" basedir=".">
  
  <property name="book_name" value="FsVariablesUserGuide"/>
  <property name="artifactId" value="FsVariables"/>
	
  <import file="${basedir}/../SandboxDocs/sandbox_build.xml"/>  
  
</project>
