
<!--
Copyright 2017-present Open Networking Foundation

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


<!DOCTYPE html>
<html lang="en" ng-app="vnaasgui">
<head>
  <meta charset="UTF-8">
  <title>vNaaS GUI</title>
  <link href="/xos/loader.css" rel="stylesheet">
  <link href="/xos/app.css" rel="stylesheet">
  <link href="./app/style/style.css" rel="stylesheet">
</head>
<body>
  <div ui-view></div>
  <script src="/xos/vendor.js"></script>
  <script src="/xos/app.js"></script>
  <script src="/xos/loader.js"></script>
  <script src="/xos/app.config.js"></script>
  <script src="/xos/style.config.js"></script>
  <script src="/mapconstants.js"></script>
</body>
</html>