<?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.

-->
<project>
  <output>
    <movie version="11"/>
    <movie disabled="False"/>
    <movie height="600"/>
    <movie fps="60"/>
    <movie background="#FFFFFF"/>
    <movie path="bin-debug/TreeExample.swf"/>
    <movie width="800"/>
    <movie input=""/>
  </output>
  &lt;!-- Other classes to be compiled into your SWF --&gt;
  <classpaths>
    <class path="src/main/royale"/>
  </classpaths>
  <moonshineResourcePaths></moonshineResourcePaths>
  <build>
    <option customSDK=""/>
    <option strict="True"/>
    <option accessible="False"/>
    <option useNetwork="True"/>
    <option allowSourcePathOverlap="False"/>
    <option useResourceBundleMetadata="True"/>
    <option benchmark="False"/>
    <option warnings="True"/>
    <option additional=""/>
    <option es="False"/>
    <option locale=""/>
    <option loadConfig=""/>
    <option linkReport=""/>
    <option optimize="False"/>
    <option verboseStackTraces="False"/>
    <option staticLinkRSL="False"/>
    <option showBindingWarnings="True"/>
    <option compilerConstants=""/>
    <option showDeprecationWarnings="True"/>
    <option antBuildPath="build/build.xml"/>
    <option showActionScriptWarnings="True"/>
    <option showUnusedTypeSelectorWarnings="True"/>
  </build>
  <includeLibraries></includeLibraries>
  <libraryPaths></libraryPaths>
  <externalLibraryPaths></externalLibraryPaths>
  <rslPaths></rslPaths>
  <intrinsics></intrinsics>
  <library></library>
  <compileTargets>
    <compile path="src/main/royale/TreeExample.mxml"/>
  </compileTargets>
  <hiddenPaths></hiddenPaths>
  <preBuildCommand>null</preBuildCommand>
  <postBuildCommand alwaysRun="False">null</postBuildCommand>
  <options>
    <option defaultBuildTargets=""/>
    <option testMovie=""/>
    <option testMovieCommand=""/>
    <option showHiddenPaths="False"/>
  </options>
  <moonshineRunCustomization>
    <option deviceSimulator="null"/>
    <option targetPlatform="2"/>
    <option launchMethod="Simulator"/>
    <option urlToLaunch=""/>
    <option projectType="2"/>
    <deviceSimulator>null</deviceSimulator>
    <certAndroid>null</certAndroid>
    <certIos>null</certIos>
    <certIosProvisioning>null</certIosProvisioning>
  </moonshineRunCustomization>
</project>