<?xml version='1.0' ?>
<!--

 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.

-->

<Manifest>
    <Id>5rb676500n</Id>
    <Secret>93BA6FAC43ED18005711B434DCFC713C</Secret>
  <AppVersion>1.0.0</AppVersion>
  <ManifestVersion>1.1</ManifestVersion>
    <Privileges>
        <Privilege>
            <Name>LOCATION</Name>
        </Privilege>
        <Privilege>
            <Name>HTTP</Name>
        </Privilege>
        <Privilege>
            <Name>ADDRESSBOOK</Name>
        </Privilege>
        <Privilege>
            <Name>SYSTEM_SERVICE</Name>
        </Privilege>
        <Privilege>
            <Name>WEB_SERVICE</Name>
        </Privilege>
    </Privileges>
    <DeviceProfile>
        <APIVersion>1.2</APIVersion>
        <CPU>Cortex8</CPU>
        <Accelerator3D>OpenGL-ES1.1</Accelerator3D>
        <Accelerator3D>OpenGL-ES2.0</Accelerator3D>
        <ScreenSize>480x800</ScreenSize>
        <Connectivity>Bluetooth</Connectivity>
        <Connectivity>Wi-Fi</Connectivity>
        <Sensor>GPS</Sensor>
        <Sensor>Wi-Fi_and_cell-based_positioning</Sensor>
        <Sensor>Magnetic</Sensor>
        <Sensor>Proximity</Sensor>
        <Sensor>Accelerometer</Sensor>
        <Sensor>Tilt</Sensor>
        <UserInteraction>Vibration-effects</UserInteraction>
    </DeviceProfile>
</Manifest>
