<?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/AlertExample.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 showUnusedTypeSelectorWarnings="True"/>
    <option customSDK=""/>
    <option strict="True"/>
    <option accessible="False"/>
    <option useNetwork="True"/>
    <option allowSourcePathOverlap="False"/>
    <option useResourceBundleMetadata="True"/>
    <option additional=""/>
    <option benchmark="False"/>
    <option locale=""/>
    <option es="False"/>
    <option verboseStackTraces="False"/>
    <option loadConfig=""/>
    <option linkReport=""/>
    <option warnings="True"/>
    <option showActionScriptWarnings="True"/>
    <option staticLinkRSL="False"/>
    <option showBindingWarnings="True"/>
    <option compilerConstants=""/>
    <option optimize="False"/>
    <option showDeprecationWarnings="True"/>
    <option antBuildPath="build/build.xml"/>
  </build>
  <includeLibraries></includeLibraries>
  <libraryPaths></libraryPaths>
  <externalLibraryPaths></externalLibraryPaths>
  <rslPaths></rslPaths>
  <intrinsics></intrinsics>
  <library></library>
  <compileTargets>
    <compile path="src/main/royale/AlertExample.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 targetPlatform="2"/>
    <option deviceSimulator="null"/>
    <option projectType="2"/>
    <option launchMethod="Simulator"/>
    <option urlToLaunch=""/>
    <deviceSimulator>null</deviceSimulator>
    <certAndroid>null</certAndroid>
    <certIos>null</certIos>
    <certIosProvisioning>null</certIosProvisioning>
  </moonshineRunCustomization>
</project>