Full Code of gobijan/maverix for AI

master 5c829fba503a cached
319 files
3.7 MB
993.9k tokens
526 symbols
1 requests
Download .txt
Showing preview only (3,976K chars total). Download the full file or copy to clipboard to get everything.
Repository: gobijan/maverix
Branch: master
Commit: 5c829fba503a
Files: 319
Total size: 3.7 MB

Directory structure:
gitextract_raduybzh/

├── README.md
└── maverix-theme/
    ├── app/
    │   ├── img/
    │   │   └── .gitkeep
    │   ├── js/
    │   │   ├── app.js
    │   │   ├── controllers.js
    │   │   ├── directives.js
    │   │   ├── filters.js
    │   │   └── services.js
    │   └── partials/
    │       ├── .gitkeep
    │       ├── charts.html
    │       ├── controls.html
    │       ├── forms.html
    │       ├── icons.html
    │       ├── maverix.html
    │       ├── modals.html
    │       ├── partial1.html
    │       ├── partial2.html
    │       ├── tables.html
    │       └── type.html
    ├── bower_components/
    │   ├── angular/
    │   │   ├── .bower.json
    │   │   ├── README.md
    │   │   ├── angular-csp.css
    │   │   ├── angular.js
    │   │   ├── angular.min.js.gzip
    │   │   └── bower.json
    │   ├── angular-route/
    │   │   ├── .bower.json
    │   │   ├── README.md
    │   │   ├── angular-route.js
    │   │   └── bower.json
    │   ├── bootstrap/
    │   │   ├── .bower.json
    │   │   ├── Gruntfile.js
    │   │   ├── LICENSE
    │   │   ├── README.md
    │   │   ├── bower.json
    │   │   ├── dist/
    │   │   │   ├── css/
    │   │   │   │   ├── bootstrap-theme.css
    │   │   │   │   └── bootstrap.css
    │   │   │   └── js/
    │   │   │       └── bootstrap.js
    │   │   ├── grunt/
    │   │   │   ├── bs-glyphicons-data-generator.js
    │   │   │   ├── bs-lessdoc-parser.js
    │   │   │   ├── bs-raw-files-generator.js
    │   │   │   └── shrinkwrap.js
    │   │   ├── js/
    │   │   │   ├── affix.js
    │   │   │   ├── alert.js
    │   │   │   ├── button.js
    │   │   │   ├── carousel.js
    │   │   │   ├── collapse.js
    │   │   │   ├── dropdown.js
    │   │   │   ├── modal.js
    │   │   │   ├── popover.js
    │   │   │   ├── scrollspy.js
    │   │   │   ├── tab.js
    │   │   │   ├── tooltip.js
    │   │   │   └── transition.js
    │   │   ├── less/
    │   │   │   ├── alerts.less
    │   │   │   ├── badges.less
    │   │   │   ├── bootstrap.css
    │   │   │   ├── bootstrap.less
    │   │   │   ├── breadcrumbs.less
    │   │   │   ├── button-groups.less
    │   │   │   ├── buttons.less
    │   │   │   ├── carousel.less
    │   │   │   ├── close.less
    │   │   │   ├── code.less
    │   │   │   ├── component-animations.less
    │   │   │   ├── dropdowns.less
    │   │   │   ├── forms.less
    │   │   │   ├── glyphicons.less
    │   │   │   ├── grid.less
    │   │   │   ├── input-groups.less
    │   │   │   ├── jumbotron.less
    │   │   │   ├── labels.less
    │   │   │   ├── list-group.less
    │   │   │   ├── media.css
    │   │   │   ├── media.less
    │   │   │   ├── mixins.css
    │   │   │   ├── mixins.less
    │   │   │   ├── modals.less
    │   │   │   ├── navbar.less
    │   │   │   ├── navs.less
    │   │   │   ├── normalize.css
    │   │   │   ├── normalize.less
    │   │   │   ├── pager.less
    │   │   │   ├── pagination.less
    │   │   │   ├── panels.less
    │   │   │   ├── popovers.less
    │   │   │   ├── print.css
    │   │   │   ├── print.less
    │   │   │   ├── progress-bars.less
    │   │   │   ├── responsive-utilities.less
    │   │   │   ├── scaffolding.less
    │   │   │   ├── tables.less
    │   │   │   ├── theme.css
    │   │   │   ├── theme.less
    │   │   │   ├── thumbnails.less
    │   │   │   ├── tooltip.less
    │   │   │   ├── type.less
    │   │   │   ├── utilities.less
    │   │   │   ├── variables-orig.css
    │   │   │   ├── variables-orig.less
    │   │   │   ├── variables.css
    │   │   │   ├── variables.less
    │   │   │   └── wells.less
    │   │   ├── package.json
    │   │   └── test-infra/
    │   │       ├── README.md
    │   │       ├── npm-shrinkwrap.canonical.json
    │   │       ├── requirements.txt
    │   │       ├── s3_cache.py
    │   │       ├── sauce_browsers.yml
    │   │       └── uncached-npm-install.sh
    │   ├── css-toggle-switch/
    │   │   ├── .bower.json
    │   │   ├── .bowerrc
    │   │   ├── .travis.yml
    │   │   ├── LICENSE.txt
    │   │   ├── README.md
    │   │   ├── bower.json
    │   │   ├── dist/
    │   │   │   └── toggle-switch.css
    │   │   ├── src/
    │   │   │   ├── toggle-switch.css
    │   │   │   ├── toggle-switch.less
    │   │   │   └── toggle-switch.scss
    │   │   └── test/
    │   │       └── tests.js
    │   ├── entypo/
    │   │   ├── .bower.json
    │   │   ├── .gitignore
    │   │   ├── .gitmodules
    │   │   ├── DEVELOPMENT.md
    │   │   ├── Makefile
    │   │   ├── README.md
    │   │   ├── config.yml
    │   │   ├── font/
    │   │   │   ├── demo.html
    │   │   │   └── entypo.css
    │   │   └── src/
    │   │       ├── demo/
    │   │       │   ├── README.md
    │   │       │   ├── bootstrap.styl
    │   │       │   ├── demo.codes.jade
    │   │       │   └── demo.jade
    │   │       └── original/
    │   │           └── README.md
    │   ├── flot/
    │   │   ├── .bower.json
    │   │   ├── .gitignore
    │   │   ├── .travis.yml
    │   │   ├── API.md
    │   │   ├── CONTRIBUTING.md
    │   │   ├── FAQ.md
    │   │   ├── LICENSE.txt
    │   │   ├── Makefile
    │   │   ├── NEWS.md
    │   │   ├── PLUGINS.md
    │   │   ├── README.md
    │   │   ├── component.json
    │   │   ├── examples/
    │   │   │   ├── ajax/
    │   │   │   │   ├── data-eu-gdp-growth-1.json
    │   │   │   │   ├── data-eu-gdp-growth-2.json
    │   │   │   │   ├── data-eu-gdp-growth-3.json
    │   │   │   │   ├── data-eu-gdp-growth-4.json
    │   │   │   │   ├── data-eu-gdp-growth-5.json
    │   │   │   │   ├── data-eu-gdp-growth.json
    │   │   │   │   ├── data-japan-gdp-growth.json
    │   │   │   │   ├── data-usa-gdp-growth.json
    │   │   │   │   └── index.html
    │   │   │   ├── annotating/
    │   │   │   │   └── index.html
    │   │   │   ├── axes-interacting/
    │   │   │   │   └── index.html
    │   │   │   ├── axes-multiple/
    │   │   │   │   └── index.html
    │   │   │   ├── axes-time/
    │   │   │   │   └── index.html
    │   │   │   ├── axes-time-zones/
    │   │   │   │   ├── date.js
    │   │   │   │   ├── index.html
    │   │   │   │   └── tz/
    │   │   │   │       ├── africa
    │   │   │   │       ├── antarctica
    │   │   │   │       ├── asia
    │   │   │   │       ├── australasia
    │   │   │   │       ├── backward
    │   │   │   │       ├── etcetera
    │   │   │   │       ├── europe
    │   │   │   │       ├── factory
    │   │   │   │       ├── iso3166.tab
    │   │   │   │       ├── leapseconds
    │   │   │   │       ├── northamerica
    │   │   │   │       ├── pacificnew
    │   │   │   │       ├── solar87
    │   │   │   │       ├── solar88
    │   │   │   │       ├── solar89
    │   │   │   │       ├── southamerica
    │   │   │   │       ├── systemv
    │   │   │   │       ├── yearistype.sh
    │   │   │   │       └── zone.tab
    │   │   │   ├── basic-options/
    │   │   │   │   └── index.html
    │   │   │   ├── basic-usage/
    │   │   │   │   └── index.html
    │   │   │   ├── canvas/
    │   │   │   │   └── index.html
    │   │   │   ├── categories/
    │   │   │   │   └── index.html
    │   │   │   ├── examples.css
    │   │   │   ├── image/
    │   │   │   │   └── index.html
    │   │   │   ├── index.html
    │   │   │   ├── interacting/
    │   │   │   │   └── index.html
    │   │   │   ├── navigate/
    │   │   │   │   └── index.html
    │   │   │   ├── percentiles/
    │   │   │   │   └── index.html
    │   │   │   ├── realtime/
    │   │   │   │   └── index.html
    │   │   │   ├── resize/
    │   │   │   │   └── index.html
    │   │   │   ├── selection/
    │   │   │   │   └── index.html
    │   │   │   ├── series-errorbars/
    │   │   │   │   └── index.html
    │   │   │   ├── series-pie/
    │   │   │   │   └── index.html
    │   │   │   ├── series-toggle/
    │   │   │   │   └── index.html
    │   │   │   ├── series-types/
    │   │   │   │   └── index.html
    │   │   │   ├── stacking/
    │   │   │   │   └── index.html
    │   │   │   ├── symbols/
    │   │   │   │   └── index.html
    │   │   │   ├── threshold/
    │   │   │   │   └── index.html
    │   │   │   ├── tracking/
    │   │   │   │   └── index.html
    │   │   │   ├── visitors/
    │   │   │   │   └── index.html
    │   │   │   └── zooming/
    │   │   │       └── index.html
    │   │   ├── excanvas.js
    │   │   ├── excanvas.min.js
    │   │   ├── flot.jquery.json
    │   │   ├── jquery.colorhelpers.js
    │   │   ├── jquery.flot.canvas.js
    │   │   ├── jquery.flot.categories.js
    │   │   ├── jquery.flot.crosshair.js
    │   │   ├── jquery.flot.errorbars.js
    │   │   ├── jquery.flot.fillbetween.js
    │   │   ├── jquery.flot.image.js
    │   │   ├── jquery.flot.js
    │   │   ├── jquery.flot.navigate.js
    │   │   ├── jquery.flot.pie.js
    │   │   ├── jquery.flot.resize.js
    │   │   ├── jquery.flot.selection.js
    │   │   ├── jquery.flot.stack.js
    │   │   ├── jquery.flot.symbol.js
    │   │   ├── jquery.flot.threshold.js
    │   │   ├── jquery.flot.time.js
    │   │   ├── jquery.js
    │   │   └── package.json
    │   ├── jquery/
    │   │   ├── .bower.json
    │   │   ├── MIT-LICENSE.txt
    │   │   ├── bower.json
    │   │   ├── dist/
    │   │   │   └── jquery.js
    │   │   └── src/
    │   │       ├── ajax/
    │   │       │   ├── jsonp.js
    │   │       │   ├── load.js
    │   │       │   ├── parseJSON.js
    │   │       │   ├── parseXML.js
    │   │       │   ├── script.js
    │   │       │   ├── var/
    │   │       │   │   ├── nonce.js
    │   │       │   │   └── rquery.js
    │   │       │   └── xhr.js
    │   │       ├── ajax.js
    │   │       ├── attributes/
    │   │       │   ├── attr.js
    │   │       │   ├── classes.js
    │   │       │   ├── prop.js
    │   │       │   ├── support.js
    │   │       │   └── val.js
    │   │       ├── attributes.js
    │   │       ├── callbacks.js
    │   │       ├── core/
    │   │       │   ├── access.js
    │   │       │   ├── init.js
    │   │       │   ├── parseHTML.js
    │   │       │   ├── ready.js
    │   │       │   └── var/
    │   │       │       └── rsingleTag.js
    │   │       ├── core.js
    │   │       ├── css/
    │   │       │   ├── addGetHookIf.js
    │   │       │   ├── curCSS.js
    │   │       │   ├── defaultDisplay.js
    │   │       │   ├── hiddenVisibleSelectors.js
    │   │       │   ├── support.js
    │   │       │   ├── swap.js
    │   │       │   └── var/
    │   │       │       ├── cssExpand.js
    │   │       │       ├── getStyles.js
    │   │       │       ├── isHidden.js
    │   │       │       ├── rmargin.js
    │   │       │       └── rnumnonpx.js
    │   │       ├── css.js
    │   │       ├── data/
    │   │       │   ├── Data.js
    │   │       │   ├── accepts.js
    │   │       │   └── var/
    │   │       │       ├── data_priv.js
    │   │       │       └── data_user.js
    │   │       ├── data.js
    │   │       ├── deferred.js
    │   │       ├── deprecated.js
    │   │       ├── dimensions.js
    │   │       ├── effects/
    │   │       │   ├── Tween.js
    │   │       │   └── animatedSelector.js
    │   │       ├── effects.js
    │   │       ├── event/
    │   │       │   ├── alias.js
    │   │       │   └── support.js
    │   │       ├── event.js
    │   │       ├── exports/
    │   │       │   ├── amd.js
    │   │       │   └── global.js
    │   │       ├── intro.js
    │   │       ├── jquery.js
    │   │       ├── manipulation/
    │   │       │   ├── _evalUrl.js
    │   │       │   ├── support.js
    │   │       │   └── var/
    │   │       │       └── rcheckableType.js
    │   │       ├── manipulation.js
    │   │       ├── offset.js
    │   │       ├── outro.js
    │   │       ├── queue/
    │   │       │   └── delay.js
    │   │       ├── queue.js
    │   │       ├── selector-native.js
    │   │       ├── selector-sizzle.js
    │   │       ├── selector.js
    │   │       ├── serialize.js
    │   │       ├── sizzle/
    │   │       │   └── dist/
    │   │       │       └── sizzle.js
    │   │       ├── traversing/
    │   │       │   ├── findFilter.js
    │   │       │   └── var/
    │   │       │       └── rneedsContext.js
    │   │       ├── traversing.js
    │   │       ├── var/
    │   │       │   ├── arr.js
    │   │       │   ├── class2type.js
    │   │       │   ├── concat.js
    │   │       │   ├── hasOwn.js
    │   │       │   ├── indexOf.js
    │   │       │   ├── pnum.js
    │   │       │   ├── push.js
    │   │       │   ├── rnotwhite.js
    │   │       │   ├── slice.js
    │   │       │   ├── strundefined.js
    │   │       │   ├── support.js
    │   │       │   └── toString.js
    │   │       └── wrap.js
    │   └── rangeslider.js/
    │       ├── .bower.json
    │       ├── LICENSE-MIT.txt
    │       ├── README.md
    │       └── dist/
    │           ├── rangeslider.css
    │           └── rangeslider.js
    ├── css/
    │   ├── maverix.css
    │   └── maverix.less
    ├── img/
    │   └── iconset-addictive-flavour-set/
    │       ├── motivation behind the design.txt
    │       └── readme.txt
    ├── index.html
    └── readme.md

================================================
FILE CONTENTS
================================================

================================================
FILE: README.md
================================================
Maverix
=======

![Maverix](http://screenisland.com/maverix/maverix.png)

### Demo (Use Webkit or Blink Rendering Engine)
http://screenisland.com/maverix/

### What is Maverix?

Maverix is a maccish bootstrap theme and application boilerplate. It gives your web-apps a native look and feel and bundles AngularJS and other components such as jQuery, Flot and rangeslider.js

It is perfect to be used for apps that are based on HTML App Containers such as:

- [MacGap](https://github.com/maccman/macgap)
- [Node-Webkit](https://github.com/rogerwang/node-webkit)
- [Github Atom Shell](https://github.com/atom/atom-shell)
- [Adobe Brackets Shell](https://github.com/adobe/brackets-shell)

### Design Decisions
Closest possible to native
All controls and Elements are carefully designed to perfectly fit into the native mac environment.

#### Non Responsive (for now...)
Desktop Apps don't need to run on thousands of different devices and viewports. You are the master of setting a minimum-viewport and the app won't get smaller than this. If you are using Maverix Theme in a traditional web-app it is also okay for Admin Backends that don't need responsive layout.

#### Built on Bootstrap and Less
Twitters Bootstrap comes bundled with tons of useful styles and add ons and allows beginners and masters to get started quickly (grid positioning, etc.). The maverix styles are enhancing bootstrap and are written in less.css

#### Webkit first
Maverix Theme is primarily made to enable app container based web-apps to look like native OS X Apps. So webkit is the primary engine when releasing new components. However this doesn't mean that other browsers are totally unsupported. Maverix Theme is tested on Safari, Firefox and Chrome on OS X.

#### Bundled with AngularJS
AngularJS is one of the best Javascript App Frameworks available today and so Maverix Theme comes bundled with AngularJS including fully working routing to get you started fast. Anyways, AngularJS usage is optional.

### Roadmap
- Bugfix requests are priority one.
- New Features will be added as far as they make sense.
- If demand is high for responsive design I will add it.

### Bugs
Use the [Maverix Github Issue Tracker](https://github.com/tschundeee/maverix/issues).
You can also reach out to me at [b.rahnema@gmail.com](mailto:b.rahnema@gmail.com?subject=Maverix)

### Feedback
Feedback is always welcome.

### License
The MIT License (MIT)

Copyright (c) 2016 Bijan Rahnema

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.


================================================
FILE: maverix-theme/app/img/.gitkeep
================================================


================================================
FILE: maverix-theme/app/js/app.js
================================================
'use strict';


// Declare app level module which depends on filters, and services
angular.module('myApp', [
    'ngRoute',
    'myApp.filters',
    'myApp.services',
    'myApp.directives',
    'myApp.controllers'
]).
    config(['$routeProvider', function ($routeProvider) {
        $routeProvider.when('/maverix', {templateUrl: 'app/partials/maverix.html', controller: 'MaverixCtrl'});
        $routeProvider.when('/tables', {templateUrl: 'app/partials/tables.html', controller: 'TablesCtrl'});
        $routeProvider.when('/modals', {templateUrl: 'app/partials/modals.html', controller: 'ModalsCtrl'});
        $routeProvider.when('/controls', {templateUrl: 'app/partials/controls.html', controller: 'ControlsCtrl'});
        $routeProvider.when('/icons', {templateUrl: 'app/partials/icons.html', controller: 'IconsCtrl'});
        $routeProvider.when('/type', {templateUrl: 'app/partials/type.html', controller: 'TypeCtrl'});
        $routeProvider.when('/charts', {templateUrl: 'app/partials/charts.html', controller: 'ChartCtrl'});
        $routeProvider.when('/forms', {templateUrl: 'app/partials/forms.html', controller: 'FormsCtrl'});
        $routeProvider.when('/view1', {templateUrl: 'app/partials/partial1.html', controller: 'MyCtrl1'});
        $routeProvider.when('/view2', {templateUrl: 'app/partials/partial2.html', controller: 'MyCtrl2'});
        $routeProvider.otherwise({redirectTo: '/view1'});
    }]);


================================================
FILE: maverix-theme/app/js/controllers.js
================================================
'use strict';

/* Controllers */

angular.module('myApp.controllers', [])
    .controller('MaverixCtrl', ['$scope', function ($scope) {
        $scope.$parent.title = "Maverix Theme Guide";
        $scope.$parent.img = "img/iconset-addictive-flavour-set/png/screen_rulers_glossy.png";
        $scope.$parent.showTopToggle = false;
    }])
    .controller('ChartCtrl', ['$scope', function ($scope) {
        $scope.$parent.title = "Charts";
        $scope.$parent.img = "img/iconset-addictive-flavour-set/png/chart.png";
        $scope.$parent.showTopToggle = false;
    }])
    .controller('TypeCtrl', ['$scope', function ($scope) {
        $scope.$parent.title = "Typography";
        $scope.$parent.img = "img/iconset-addictive-flavour-set/png/cutting_pad.png";
        $scope.$parent.showTopToggle = false;
    }])
    .controller('IconsCtrl', ['$scope', function ($scope) {
        $scope.$parent.title = "Icons";
        $scope.$parent.img = "img/iconset-addictive-flavour-set/png/box_address.png";
        $scope.$parent.showTopToggle = false;
    }])
    .controller('TablesCtrl', ['$scope', function ($scope) {
        $scope.$parent.title = "Tables";
        $scope.$parent.img = "img/iconset-addictive-flavour-set/png/document-plaid-pen.png";
        $scope.$parent.showTopToggle = false;
    }])
    .controller('ModalsCtrl', ['$scope', function ($scope) {
        $scope.$parent.title = "Modals";
        $scope.$parent.img = "img/iconset-addictive-flavour-set/png/fullscreen.png";
        $scope.$parent.showTopToggle = false;
    }])
    .controller('ControlsCtrl', ['$scope', function ($scope) {
        $scope.$parent.title = "Controls";
        $scope.$parent.img = "img/iconset-addictive-flavour-set/png/button_blue_add.png";
        $scope.$parent.showTopToggle = false;
    }])
    .controller('FormsCtrl', ['$scope', function ($scope) {
        $scope.$parent.title = "Forms";
        $scope.$parent.img = "img/iconset-addictive-flavour-set/png/tablet.png";
        $scope.$parent.showTopToggle = false;

    }])
    .controller('MyCtrl1', ['$scope', function ($scope) {
        $scope.$parent.title = "Maverix Theme";
        $scope.$parent.img = "img/iconset-addictive-flavour-set/png/screen_aqua_glossy.png";
        $scope.$parent.showTopToggle = true;

    }])
    .controller('MyCtrl2', ['$scope', function ($scope) {
        $scope.$parent.title = "Warnings";
        $scope.$parent.img = "img/iconset-addictive-flavour-set/png/moleskine_black.png";
        $scope.$parent.showTopToggle = false;
    }])
    .controller('AppCtrl', ['$scope', '$location', function ($scope, $location) {
        $scope.isActive = function (viewLocation) {
            return viewLocation === $location.path();
        };

        $scope.title = "Maverix Theme";
        $scope.subNav1 = 0;
        $scope.img = "img/iconset-addictive-flavour-set/png/screen_aqua_glossy.png";
        $scope.showTopToggle = false;
    }]);


================================================
FILE: maverix-theme/app/js/directives.js
================================================
'use strict';

/* Directives */


angular.module('myApp.directives', []).
  directive('appVersion', ['version', function(version) {
    return function(scope, elm, attrs) {
      elm.text(version);
    };
  }]);


================================================
FILE: maverix-theme/app/js/filters.js
================================================
'use strict';

/* Filters */

angular.module('myApp.filters', []).
  filter('interpolate', ['version', function(version) {
    return function(text) {
      return String(text).replace(/\%VERSION\%/mg, version);
    };
  }]);


================================================
FILE: maverix-theme/app/js/services.js
================================================
'use strict';

/* Services */


// Demonstrate how to register services
// In this case it is a simple value service.
var myModule = angular.module('myApp.services', []).
    value('version', '0.1');

================================================
FILE: maverix-theme/app/partials/.gitkeep
================================================


================================================
FILE: maverix-theme/app/partials/charts.html
================================================
<div class="row">
    <div class="col-md-12">
        <h2>Charts</h2>

        <div id="placeholder" class="demo-placeholder" style="width: 600px; height: 300px;"></div>

        <hr/>

        <div id="piechart" class="demo-placeholder" style="width: 600px; height: 300px;"></div>

        <p class="indent">Maverix Theme is integrated with the awesome <a href="http://www.flotcharts.org"
                                                                          target="_blank">Flot
            Charts</a> Library. <a class="btn btn-help" href="https://github.com/flot/flot/blob/master/API.md"
                                   target="_blank"><span class="entypo-help"></span></a></p>
    </div>
</div>

<script>


    // We use an inline data source in the example, usually data would
    // be fetched from a server

    var data = [],
            totalPoints = 300;

    function getRandomData() {

        if (data.length > 0)
            data = data.slice(1);

        // Do a random walk

        while (data.length < totalPoints) {

            var prev = data.length > 0 ? data[data.length - 1] : 50,
                    y = prev + Math.random() * 10 - 5;

            if (y < 0) {
                y = 0;
            } else if (y > 100) {
                y = 100;
            }

            data.push(y);
        }

        // Zip the generated y values with the x values

        var res = [];
        for (var i = 0; i < data.length; ++i) {
            res.push([i, data[i]])
        }

        return res;
    }

    // Set up the control widget

    var updateInterval = 24;

    var plot = $.plot("#placeholder", [ getRandomData() ], {
        series: {
            shadowSize: 0,	// Drawing is faster without shadows
            color: "#77B1DE"
        },
        yaxis: {
            min: 0,
            max: 100
        },
        xaxis: {
            show: false
        },
        grid: {
            backgroundColor: "#F5F5F5",
            borderWidth: 1,
            borderColor: "#E0E0E0"
        }
    });

    function update() {

        plot.setData([getRandomData()]);

        // Since the axes don't change, we don't need to call plot.setupGrid()

        plot.draw();
        clearTimeout(update);
        setTimeout(update, updateInterval);
    }

    update();
</script>



<script>

    var pieData = [],
            series = Math.floor(Math.random() * 6) + 3;

    for (var i = 0; i < series; i++) {
        pieData[i] = {
            label: "Series" + (i + 1),
            data: Math.floor(Math.random() * 100) + 1
        }
    }


    $.plot('#piechart', pieData, {
        series: {
            pie: {
                show: true
            }
        },
        grid: {
            hoverable: true,
            clickable: true
        }
    });
</script>

================================================
FILE: maverix-theme/app/partials/controls.html
================================================
<div class="row">
    <div class="col-sm-12">

    <h2>Rangeslider</h2>

    <p>
        <input type="range"/>
        <script>
            $('input[type="range"]').rangeslider({
                // Feature detection
                polyfill: false
            });
        </script>
    </p>

    <h2>Toolbar + Buttons</h2>

    <div class="toolbar">
        <div style="float: left"><a class="toolbar-button" href=""><span class="entypo-plus"></span></a>
            <a class="toolbar-button" href=""><span class="entypo-minus"></span></a>
            <a class="toolbar-button" href="">Close</a></div>
        <div style="float: right">
                <span class="search-input">
                    <input type="search" placeholder="Webkit Search" results="5"/>
                </span>
        </div>

    </div>
    <hr/>
    <div class="toolbar">
        <div style="float: left"><a class="toolbar-button" href=""><span class="entypo-plus"></span></a>
            <a class="toolbar-button" href=""><span class="entypo-minus"></span></a>
            <a class="toolbar-button" href="">Close</a></div>
        <div style="float: right">
                <span class="search-input">
                    <span class="entypo-search"></span>
                    <input type="text" class="mvx-search" placeholder="Non Webkit Search"/>
                </span>
        </div>

    </div>

    <hr/>

    <h2>Tweaked Native Webkit Search Input (Don't use on non webkit.)</h2>
    <input type="search" results="5"/>

    <hr/>
    <h2>Cross Browser Search Input</h2>
        <span class="search-input">
            <span class="entypo-search"></span>
            <input type="text" class="mvx-search" placeholder="Filter Warnings"/>
        </span>


        <h2>Webkit Default Button</h2>
        <button>Default Webkit Button</button>

    <h2>Toggles</h2>

    <div class="osx-switch">
        <span class="osx-switch-label osx-switch-label-active">ON</span>
        <span class="osx-switch-label osx-switch-label-inactive">OFF</span>
        <label class="switch-light switch-candy" onclick="">
            <input type="checkbox">
            <a></a>
        </label>
    </div>

    <div class="ui-switch on">
        <div class="toggler"></div>
    </div>
    <div class="ui-label">UI Label</div>
    <script>
        $(".ui-switch").click(function (e) {
            $(this).toggleClass("on");
        });
    </script>

    <hr/>
    <h2>State Indicators</h2>
    <span class="on-badge"></span> Online Badge<br>
    <span class="off-badge"></span> Offline Badge


    <hr/>

        <h2>Aqua Buttons</h2>

        <p class="indent">
            <a class="btn btn-default">Standard</a>
            <a class="btn btn-primary">Primary</a>
            <a class="btn disabled">Disabled</a>
        </p>
        <hr/>

        <h2>Small Aqua Buttons</h2>

        <p class="indent">
            <a class="btn btn-capsule">Uninstall</a>
            <a class="btn btn-capsule disabled">Uninstall</a>
            <a class="btn btn-sm">Small Button ...</a>
            <a class="btn btn-sm disabled">Small Button ...</a>
        </p>
        <hr/>

        <h2>Help Button</h2>

        <p class="indent">
            <!--<pre>&lt;a class="btn btn-help" href=""&gt;&lt;span class="entypo-help"&gt;&lt;/span&gt;&lt;/a&gt;</pre>-->
            <a class="btn btn-help" href=""><span class="entypo-help"></span></a>
        </p>
        <hr/>

        <h2>Modern Buttons</h2>

        <p class="indent">
            <a class="btn btn-modern">Modern</a>
            <a class="btn btn-modern disabled">Modern Disabled</a>
            <a class="btn btn-modern btn-lg">Modern Large</a>
            <a class="btn btn-modern btn-lg disabled">Modern Large Disabled</a>
            <a class="btn btn-modern btn-sm">Modern Small</a>


        </p>
        <hr/>
        <h2>Buttons on Grey</h2>

        <div class="grey-bg" style="text-align: right; padding: 10px">
            <a href="" class="btn btn-on-grey">Abbrechen</a>
            <a href="" class="btn btn-on-grey">OK</a>
        </div>

        <hr/>
        <h2>Button Group</h2>

        <div class="btn-group">
            <button type="button" class="btn btn-default">Left</button>
            <button type="button" class="btn btn-default">Middle</button>
            <button type="button" class="btn btn-default">Right</button>
        </div>


        <div class="btn-group-vertical">
            <button type="button" class="btn btn-default">Top</button>
            <button type="button" class="btn btn-default">Middle</button>
            <button type="button" class="btn btn-default">Bottom</button>
        </div>

        <div class="btn-group">
            <button type="button" class="btn btn-default">1</button>
            <button type="button" class="btn btn-default">2</button>

            <div class="btn-group">
                <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
                    Dropdown
                    <span class="caret"></span>
                </button>
                <ul class="dropdown-menu">
                    <li><a href="#">Dropdown link</a></li>
                    <li><a href="#">Dropdown link</a></li>
                </ul>
            </div>
        </div>

        <!-- Single button -->
        <div class="btn-group">
            <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
                Action <span class="caret"></span>
            </button>
            <ul class="dropdown-menu" role="menu">
                <li><a href="#">Action</a></li>
                <li><a href="#">Another action</a></li>
                <li><a href="#">Something else here</a></li>
                <li class="divider"></li>
                <li><a href="#">Separated link</a></li>
            </ul>
        </div>

        <!-- Split button -->
        <div class="btn-group">
            <button type="button" class="btn btn-default">Action</button>
            <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
                <span class="caret"></span>
                <span class="sr-only">Toggle Dropdown</span>
            </button>
            <ul class="dropdown-menu" role="menu">
                <li><a href="#">Action</a></li>
                <li><a href="#">Another action</a></li>
                <li><a href="#">Something else here</a></li>
                <li class="divider"></li>
                <li><a href="#">Separated link</a></li>
            </ul>
        </div>

        <div class="dropdown btn-group">
            <a class="btn dropdown-toggle" data-toggle="dropdown" href="">
                <span class="entypo-cog"></span>
                <span class="caret"></span>
            </a>
            <ul class="dropdown-menu">
                <li class="disabled"><a href="">Show Warning Details</a></li>
                <li><a href="">Clear Warnings</a></li>
            </ul>
        </div>

        <div class="btn-group">
            <button type="button" class="btn btn-modern"><span class="entypo-plus"></span></button>
            <button type="button" class="btn btn-modern"><span class="entypo-minus"></span></button>
        </div>

        <hr/>


    </div>
</div>


================================================
FILE: maverix-theme/app/partials/forms.html
================================================
<div class="row">
    <div class="col-md-12">
        <form role="form">
            <div class="form-group">
                <label for="exampleInputName1">Email address</label>
                <input type="text" class="form-control" id="exampleInputName1" placeholder="Enter Your Name">
            </div>

            <div class="form-group">
                <label for="exampleInputEmail1">Email address</label>
                <input type="email" class="form-control" id="exampleInputEmail1" placeholder="Enter email">
            </div>
            <div class="form-group">
                <label for="exampleInputPassword1">Password</label>
                <input type="password" class="form-control" id="exampleInputPassword1" placeholder="Password">
            </div>
            <div class="form-group">
                <label for="exampleInputFile">File input</label>
                <input type="file" id="exampleInputFile">

                <p class="help-block">Example block-level help text here.</p>
            </div>
            <div class="form-group">
                <label>Textarea</label><br>
                <textarea cols="50" rows="10"></textarea>

                <p class="help-block">Example block-level help text here.</p>
            </div>
            <div class="form-group">
                <label>Default Select:</label>
                <select>
                    <option>Option A</option>
                    <option>Option B</option>
                </select>

                <p class="help-block">This is the default Select.</p>
            </div>
            <div class="form-group">
                <label>Large Select:</label>
                <select class="select-large">
                    <option>Option A</option>
                    <option>Option B</option>
                </select>

                <p class="help-block">This Select Style modifies the Default Select and makes it larger (Looks on Webkit).</p>
            </div>

            <div class="checkbox">
                <label>
                    <input type="checkbox"> Check me out
                </label>
            </div>
            <input type="submit" value="Submit"/>

        </form>
    </div>
</div>

================================================
FILE: maverix-theme/app/partials/icons.html
================================================
<h2>PNG Icons</h2>
<img src="img/iconset-addictive-flavour-set/preview_af_1.jpg" width="600px" alt=""/>
<p>These awesome icons designed by Oliver Twardowski (<a href="http://www.addictedtocoffee.de">http://www.addictedtocoffee.de</a>,
    <a href="https://twitter.com/ot">@ot</a> on Twitter) are a perfect match for Maverix Theme.
    The link to these Icons is <a href="http://www.smashingmagazine.com/2010/04/15/the-ultimate-free-web-designer-s-icon-set-750-icons-incl-psd-sources/">http://www.smashingmagazine.com/2010/04/15/the-ultimate-free-web-designer-s-icon-set-750-icons-incl-psd-sources/</a>
</p>
<hr/>

<h2>Entypo</h2>
<p>Maverix Theme comes makes use of the very mac like <a href="http://www.entypo.com">entypo iconset</a>.</p>
<ul class="entypo-ul list-unstyled">
<li class="entypo-address" data-text="address"></li>
<li class="entypo-adjust" data-text="adjust"></li>
<li class="entypo-air" data-text="air"></li>
<li class="entypo-alert" data-text="alert"></li>
<li class="entypo-archive" data-text="archive"></li>
<li class="entypo-arrow-combo" data-text="arrow-combo"></li>
<li class="entypo-arrows-ccw" data-text="arrows-ccw"></li>
<li class="entypo-attach" data-text="attach"></li>
<li class="entypo-attention" data-text="attention"></li>
<li class="entypo-back" data-text="back"></li>
<li class="entypo-back-in-time" data-text="back-in-time"></li>
<li class="entypo-bag" data-text="bag"></li>
<li class="entypo-basket" data-text="basket"></li>
<li class="entypo-battery" data-text="battery"></li>
<li class="entypo-behance" data-text="behance"></li>
<li class="entypo-bell" data-text="bell"></li>
<li class="entypo-block" data-text="block"></li>
<li class="entypo-book" data-text="book"></li>
<li class="entypo-book-open" data-text="book-open"></li>
<li class="entypo-bookmark" data-text="bookmark"></li>
<li class="entypo-bookmarks" data-text="bookmarks"></li>
<li class="entypo-box" data-text="box"></li>
<li class="entypo-briefcase" data-text="briefcase"></li>
<li class="entypo-brush" data-text="brush"></li>
<li class="entypo-bucket" data-text="bucket"></li>
<li class="entypo-calendar" data-text="calendar"></li>
<li class="entypo-camera" data-text="camera"></li>
<li class="entypo-cancel" data-text="cancel"></li>
<li class="entypo-cancel-circled" data-text="cancel-circled"></li>
<li class="entypo-cancel-squared" data-text="cancel-squared"></li>
<li class="entypo-cc" data-text="cc"></li>
<li class="entypo-cc-by" data-text="cc-by"></li>
<li class="entypo-cc-nc" data-text="cc-nc"></li>
<li class="entypo-cc-nc-eu" data-text="cc-nc-eu"></li>
<li class="entypo-cc-nc-jp" data-text="cc-nc-jp"></li>
<li class="entypo-cc-nd" data-text="cc-nd"></li>
<li class="entypo-cc-pd" data-text="cc-pd"></li>
<li class="entypo-cc-remix" data-text="cc-remix"></li>
<li class="entypo-cc-sa" data-text="cc-sa"></li>
<li class="entypo-cc-share" data-text="cc-share"></li>
<li class="entypo-cc-zero" data-text="cc-zero"></li>
<li class="entypo-ccw" data-text="ccw"></li>
<li class="entypo-cd" data-text="cd"></li>
<li class="entypo-chart-area" data-text="chart-area"></li>
<li class="entypo-chart-bar" data-text="chart-bar"></li>
<li class="entypo-chart-line" data-text="chart-line"></li>
<li class="entypo-chart-pie" data-text="chart-pie"></li>
<li class="entypo-chat" data-text="chat"></li>
<li class="entypo-check" data-text="check"></li>
<li class="entypo-clipboard" data-text="clipboard"></li>
<li class="entypo-clock" data-text="clock"></li>
<li class="entypo-cloud" data-text="cloud"></li>
<li class="entypo-cloud-thunder" data-text="cloud-thunder"></li>
<li class="entypo-code" data-text="code"></li>
<li class="entypo-cog" data-text="cog"></li>
<li class="entypo-comment" data-text="comment"></li>
<li class="entypo-compass" data-text="compass"></li>
<li class="entypo-credit-card" data-text="credit-card"></li>
<li class="entypo-cup" data-text="cup"></li>
<li class="entypo-cw" data-text="cw"></li>
<li class="entypo-database" data-text="database"></li>
<li class="entypo-db-shape" data-text="db-shape"></li>
<li class="entypo-direction" data-text="direction"></li>
<li class="entypo-doc" data-text="doc"></li>
<li class="entypo-doc-landscape" data-text="doc-landscape"></li>
<li class="entypo-doc-text" data-text="doc-text"></li>
<li class="entypo-doc-text-inv" data-text="doc-text-inv"></li>
<li class="entypo-docs" data-text="docs"></li>
<li class="entypo-dot" data-text="dot"></li>
<li class="entypo-dot-2" data-text="dot-2"></li>
<li class="entypo-dot-3" data-text="dot-3"></li>
<li class="entypo-down" data-text="down"></li>
<li class="entypo-down-bold" data-text="down-bold"></li>
<li class="entypo-down-circled" data-text="down-circled"></li>
<li class="entypo-down-dir" data-text="down-dir"></li>
<li class="entypo-down-open" data-text="down-open"></li>
<li class="entypo-down-open-big" data-text="down-open-big"></li>
<li class="entypo-down-open-mini" data-text="down-open-mini"></li>
<li class="entypo-down-thin" data-text="down-thin"></li>
<li class="entypo-download" data-text="download"></li>
<li class="entypo-dribbble" data-text="dribbble"></li>
<li class="entypo-dribbble-circled" data-text="dribbble-circled"></li>
<li class="entypo-drive" data-text="drive"></li>
<li class="entypo-dropbox" data-text="dropbox"></li>
<li class="entypo-droplet" data-text="droplet"></li>
<li class="entypo-erase" data-text="erase"></li>
<li class="entypo-evernote" data-text="evernote"></li>
<li class="entypo-export" data-text="export"></li>
<li class="entypo-eye" data-text="eye"></li>
<li class="entypo-facebook" data-text="facebook"></li>
<li class="entypo-facebook-circled" data-text="facebook-circled"></li>
<li class="entypo-facebook-squared" data-text="facebook-squared"></li>
<li class="entypo-fast-backward" data-text="fast-backward"></li>
<li class="entypo-fast-forward" data-text="fast-forward"></li>
<li class="entypo-feather" data-text="feather"></li>
<li class="entypo-flag" data-text="flag"></li>
<li class="entypo-flash" data-text="flash"></li>
<li class="entypo-flashlight" data-text="flashlight"></li>
<li class="entypo-flattr" data-text="flattr"></li>
<li class="entypo-flickr" data-text="flickr"></li>
<li class="entypo-flickr-circled" data-text="flickr-circled"></li>
<li class="entypo-flight" data-text="flight"></li>
<li class="entypo-floppy" data-text="floppy"></li>
<li class="entypo-flow-branch" data-text="flow-branch"></li>
<li class="entypo-flow-cascade" data-text="flow-cascade"></li>
<li class="entypo-flow-line" data-text="flow-line"></li>
<li class="entypo-flow-parallel" data-text="flow-parallel"></li>
<li class="entypo-flow-tree" data-text="flow-tree"></li>
<li class="entypo-folder" data-text="folder"></li>
<li class="entypo-forward active" data-text="forward"></li>
<li class="entypo-gauge" data-text="gauge"></li>
<li class="entypo-github" data-text="github"></li>
<li class="entypo-github-circled" data-text="github-circled"></li>
<li class="entypo-globe" data-text="globe"></li>
<li class="entypo-google-circles" data-text="google-circles"></li>
<li class="entypo-gplus" data-text="gplus"></li>
<li class="entypo-gplus-circled" data-text="gplus-circled"></li>
<li class="entypo-graduation-cap" data-text="graduation-cap"></li>
<li class="entypo-heart" data-text="heart"></li>
<li class="entypo-heart-empty" data-text="heart-empty"></li>
<li class="entypo-help" data-text="help"></li>
<li class="entypo-help-circled" data-text="help-circled"></li>
<li class="entypo-home" data-text="home"></li>
<li class="entypo-hourglass" data-text="hourglass"></li>
<li class="entypo-inbox" data-text="inbox"></li>
<li class="entypo-infinity" data-text="infinity"></li>
<li class="entypo-info" data-text="info"></li>
<li class="entypo-info-circled" data-text="info-circled"></li>
<li class="entypo-instagrem" data-text="instagrem"></li>
<li class="entypo-install" data-text="install"></li>
<li class="entypo-key" data-text="key"></li>
<li class="entypo-keyboard" data-text="keyboard"></li>
<li class="entypo-lamp" data-text="lamp"></li>
<li class="entypo-language" data-text="language"></li>
<li class="entypo-lastfm" data-text="lastfm"></li>
<li class="entypo-lastfm-circled" data-text="lastfm-circled"></li>
<li class="entypo-layout" data-text="layout"></li>
<li class="entypo-leaf" data-text="leaf"></li>
<li class="entypo-left" data-text="left"></li>
<li class="entypo-left-bold" data-text="left-bold"></li>
<li class="entypo-left-circled" data-text="left-circled"></li>
<li class="entypo-left-dir" data-text="left-dir"></li>
<li class="entypo-left-open" data-text="left-open"></li>
<li class="entypo-left-open-big" data-text="left-open-big"></li>
<li class="entypo-left-open-mini" data-text="left-open-mini"></li>
<li class="entypo-left-thin" data-text="left-thin"></li>
<li class="entypo-level-down" data-text="level-down"></li>
<li class="entypo-level-up" data-text="level-up"></li>
<li class="entypo-lifebuoy" data-text="lifebuoy"></li>
<li class="entypo-light-down" data-text="light-down"></li>
<li class="entypo-light-up" data-text="light-up"></li>
<li class="entypo-link" data-text="link"></li>
<li class="entypo-linkedin" data-text="linkedin"></li>
<li class="entypo-linkedin-circled" data-text="linkedin-circled"></li>
<li class="entypo-list" data-text="list"></li>
<li class="entypo-list-add" data-text="list-add"></li>
<li class="entypo-location" data-text="location"></li>
<li class="entypo-lock" data-text="lock"></li>
<li class="entypo-lock-open" data-text="lock-open"></li>
<li class="entypo-login" data-text="login"></li>
<li class="entypo-logo-db" data-text="logo-db"></li>
<li class="entypo-logout" data-text="logout"></li>
<li class="entypo-loop" data-text="loop"></li>
<li class="entypo-magnet" data-text="magnet"></li>
<li class="entypo-mail" data-text="mail"></li>
<li class="entypo-map" data-text="map"></li>
<li class="entypo-megaphone" data-text="megaphone"></li>
<li class="entypo-menu" data-text="menu"></li>
<li class="entypo-mic" data-text="mic"></li>
<li class="entypo-minus" data-text="minus"></li>
<li class="entypo-minus-circled" data-text="minus-circled"></li>
<li class="entypo-minus-squared" data-text="minus-squared"></li>
<li class="entypo-mixi" data-text="mixi"></li>
<li class="entypo-mobile" data-text="mobile"></li>
<li class="entypo-monitor" data-text="monitor"></li>
<li class="entypo-moon" data-text="moon"></li>
<li class="entypo-mouse" data-text="mouse"></li>
<li class="entypo-music" data-text="music"></li>
<li class="entypo-mute" data-text="mute"></li>
<li class="entypo-network" data-text="network"></li>
<li class="entypo-newspaper" data-text="newspaper"></li>
<li class="entypo-note" data-text="note"></li>
<li class="entypo-note-beamed" data-text="note-beamed"></li>
<li class="entypo-palette" data-text="palette"></li>
<li class="entypo-paper-plane" data-text="paper-plane"></li>
<li class="entypo-pause" data-text="pause"></li>
<li class="entypo-paypal" data-text="paypal"></li>
<li class="entypo-pencil" data-text="pencil"></li>
<li class="entypo-phone" data-text="phone"></li>
<li class="entypo-picasa" data-text="picasa"></li>
<li class="entypo-picture" data-text="picture"></li>
<li class="entypo-pinterest" data-text="pinterest"></li>
<li class="entypo-pinterest-circled" data-text="pinterest-circled"></li>
<li class="entypo-play" data-text="play"></li>
<li class="entypo-plus" data-text="plus"></li>
<li class="entypo-plus-circled" data-text="plus-circled"></li>
<li class="entypo-plus-squared" data-text="plus-squared"></li>
<li class="entypo-popup" data-text="popup"></li>
<li class="entypo-print" data-text="print"></li>
<li class="entypo-progress-0" data-text="progress-0"></li>
<li class="entypo-progress-1" data-text="progress-1"></li>
<li class="entypo-progress-2" data-text="progress-2"></li>
<li class="entypo-progress-3" data-text="progress-3"></li>
<li class="entypo-publish" data-text="publish"></li>
<li class="entypo-qq" data-text="qq"></li>
<li class="entypo-quote" data-text="quote"></li>
<li class="entypo-rdio" data-text="rdio"></li>
<li class="entypo-rdio-circled" data-text="rdio-circled"></li>
<li class="entypo-record" data-text="record"></li>
<li class="entypo-renren" data-text="renren"></li>
<li class="entypo-reply" data-text="reply"></li>
<li class="entypo-reply-all" data-text="reply-all"></li>
<li class="entypo-resize-full" data-text="resize-full"></li>
<li class="entypo-resize-small" data-text="resize-small"></li>
<li class="entypo-retweet" data-text="retweet"></li>
<li class="entypo-right" data-text="right"></li>
<li class="entypo-right-bold" data-text="right-bold"></li>
<li class="entypo-right-circled" data-text="right-circled"></li>
<li class="entypo-right-dir" data-text="right-dir"></li>
<li class="entypo-right-open" data-text="right-open"></li>
<li class="entypo-right-open-big" data-text="right-open-big"></li>
<li class="entypo-right-open-mini" data-text="right-open-mini"></li>
<li class="entypo-right-thin" data-text="right-thin"></li>
<li class="entypo-rocket" data-text="rocket"></li>
<li class="entypo-rss" data-text="rss"></li>
<li class="entypo-search" data-text="search"></li>
<li class="entypo-share" data-text="share"></li>
<li class="entypo-shareable" data-text="shareable"></li>
<li class="entypo-shuffle" data-text="shuffle"></li>
<li class="entypo-signal" data-text="signal"></li>
<li class="entypo-sina-weibo" data-text="sina-weibo"></li>
<li class="entypo-skype" data-text="skype"></li>
<li class="entypo-skype-circled" data-text="skype-circled"></li>
<li class="entypo-smashing" data-text="smashing"></li>
<li class="entypo-sound" data-text="sound"></li>
<li class="entypo-soundcloud" data-text="soundcloud"></li>
<li class="entypo-spotify" data-text="spotify"></li>
<li class="entypo-spotify-circled" data-text="spotify-circled"></li>
<li class="entypo-star" data-text="star"></li>
<li class="entypo-star-empty" data-text="star-empty"></li>
<li class="entypo-stop" data-text="stop"></li>
<li class="entypo-stumbleupon" data-text="stumbleupon"></li>
<li class="entypo-stumbleupon-circled" data-text="stumbleupon-circled"></li>
<li class="entypo-suitcase" data-text="suitcase"></li>
<li class="entypo-sweden" data-text="sweden"></li>
<li class="entypo-switch" data-text="switch"></li>
<li class="entypo-tag" data-text="tag"></li>
<li class="entypo-tape" data-text="tape"></li>
<li class="entypo-target" data-text="target"></li>
<li class="entypo-thermometer" data-text="thermometer"></li>
<li class="entypo-thumbs-down" data-text="thumbs-down"></li>
<li class="entypo-thumbs-up" data-text="thumbs-up"></li>
<li class="entypo-ticket" data-text="ticket"></li>
<li class="entypo-to-end" data-text="to-end"></li>
<li class="entypo-to-start" data-text="to-start"></li>
<li class="entypo-tools" data-text="tools"></li>
<li class="entypo-traffic-cone" data-text="traffic-cone"></li>
<li class="entypo-trash" data-text="trash"></li>
<li class="entypo-trophy" data-text="trophy"></li>
<li class="entypo-tumblr" data-text="tumblr"></li>
<li class="entypo-tumblr-circled" data-text="tumblr-circled"></li>
<li class="entypo-twitter" data-text="twitter"></li>
<li class="entypo-twitter-circled" data-text="twitter-circled"></li>
<li class="entypo-up" data-text="up"></li>
<li class="entypo-up-bold" data-text="up-bold"></li>
<li class="entypo-up-circled" data-text="up-circled"></li>
<li class="entypo-up-dir" data-text="up-dir"></li>
<li class="entypo-up-open" data-text="up-open"></li>
<li class="entypo-up-open-big" data-text="up-open-big"></li>
<li class="entypo-up-open-mini" data-text="up-open-mini"></li>
<li class="entypo-up-thin" data-text="up-thin"></li>
<li class="entypo-upload" data-text="upload"></li>
<li class="entypo-upload-cloud" data-text="upload-cloud"></li>
<li class="entypo-user" data-text="user"></li>
<li class="entypo-user-add" data-text="user-add"></li>
<li class="entypo-users" data-text="users"></li>
<li class="entypo-vcard" data-text="vcard"></li>
<li class="entypo-video" data-text="video"></li>
<li class="entypo-vimeo" data-text="vimeo"></li>
<li class="entypo-vimeo-circled" data-text="vimeo-circled"></li>
<li class="entypo-vkontakte" data-text="vkontakte"></li>
<li class="entypo-volume" data-text="volume"></li>
<li class="entypo-water" data-text="water"></li>
<li class="entypo-window" data-text="window"></li>
</ul>
<hr/>

<h2>OS X / iOS ONLY</h2>
<p>If your target audience is strictly Mac/iOS you can make use of Apples "Apple Color Emoji" Font. On a Mac with Safari you will
    see lots of Icons here:</p>
<div class="emoji-font">
↖
↗
↘
↙
⏩
⏪
▶
◀
☀
☁
☎
☔
☕
☝
☺
♈
♉
♊
♋
♌
♍
♎
♏
♐
♑
♒
♓
♠
♣
♥
♦
♨
♿
⚠
⚡
⚽
⚾
⛄
⛎
⛪
⛲
⛳
⛵
⛺
⛽
✂
✈
✊
✋
✌
✨
✳
✴
❌
❎
❓
❔
❕
❗
❤
➡
➿
⬅
⬆
⬇
⭐
⭕
〽
㊗
㊙

🀄
🅰
🅱
🅾
🅿
🆎
🆒
🆔
🆕
🆗
🆙
🆚
🈁
🈂
🈚
🈯
🈳
🈵
🈶
🈷
🈸
🈹
🈺
🉐
🌀
🌂
🌃
🌄
🌅
🌆
🌇
🌈
🌊
🌙
🌟
🌴
🌵
🌷
🌸
🌹
🌺
🌻
🌾
🍀
🍁
🍂
🍃
🍅
🍆
🍉
🍊
🍎
🍓
🍔
🍘
🍙
🍚
🍛
🍜
🍝
🍞
🍟
🍡
🍢
🍣
🍦
🍧
🍰
🍱
🍲
🍳
🍴
🍵
🍶
🍸
🍺
🍻
🎀
🎁
🎂
🎃
🎄
🎅
🎆
🎇
🎈
🎉
🎌
🎍
🎎
🎏
🎐
🎑
🎒
🎓
🎡
🎢
🎤
🎥
🎦
🎧
🎨
🎩
🎫
🎬
🎯
🎰
🎱
🎵
🎶
🎷
🎸
🎺
🎾
🎿
🏀
🏁
🏃
🏄
🏆
🏈
🏊
🏠
🏢
🏣
🏥
🏦
🏧
🏨
🏩
🏪
🏫
🏬
🏭
🏯
🏰
🐍
🐎
🐑
🐒
🐔
🐗
🐘
🐙
🐚
🐛
🐟
🐠
🐤
🐦
🐧
🐨
🐫
🐬
🐭
🐮
🐯
🐰
🐱
🐳
🐴
🐵
🐶
🐷
🐸
🐹
🐺
🐻
👀
👂
👃
👄
👆
👇
👈
👉
👊
👋
👌
👍
👎
👏
👐
👑
👒
👔
👕
👗
👘
👙
👜
👟
👠
👡
👢
👣
👦
👧
👨
👩
👫
👮
👯
👱
👲
👳
👴
👵
👶
👷
👸
👻
👼
👽
👾
👿
💀
💁
💂
💃
💄
💅
💆
💇
💈
💉
💊
💋
💍
💎
💏
💐
💑
💒
💓
💔
💗
💘
💙
💚
💛
💜
💝
💟
💡
💢
💣
💤
💦
💨
💩
💪
💰
💱
💹
💺
💻
💼
💽
💿
📀
📖
📝
📠
📡
📢
📣
📩
📫
📮
📱
📲
📳
📴
📶
📷
📺
📻
📼
🔊
🔍
🔑
🔒
🔓
🔔
🔝
🔞
🔥
🔨
🔫
🔯
🔰
🔱
🔲
🔳
🔴
🕐
🕑
🕒
🕓
🕔
🕕
🕖
🕗
🕘
🕙
🕚
🕛
🗻
🗼
🗽
😁
😂
😃
😄
😉
😊
😌
😍
😏
😒
😓
😔
😖
😘
😚
😜
😝
😞
😠
😡
😢
😣
😥
😨
😪
😭
😰
😱
😲
😳
😷
🙅
🙆
🙇
🙌
🙏
🚀
🚃
🚄
🚅
🚇
🚉
🚌
🚏
🚑
🚒
🚓
🚕
🚗
🚙
🚚
🚢
🚤
🚥
🚧
🚬
🚭
🚲
🚶
🚹
🚺
🚻
🚼
🚽
🚾
🛀
⏫
⏬
⏰
⏳
✅
➕
➖
➗
➰
🃏
🆑
🆓
🆖
🆘
🇦
🇧
🇨
🇩
🇪
🇫
🇬
🇭
🇮
🇯
🇰
🇱
🇲
🇳
🇴
🇵
🇶
🇷
🇸
🇹
🇺
🇻
🇼
🇽
🇾
🇿
🈲
🈴
🉑
🌁
🌉
🌋
🌌
🌏
🌑
🌓
🌔
🌕
🌛
🌠
🌰
🌱
🌼
🌽
🌿
🍄
🍇
🍈
🍌
🍍
🍏
🍑
🍒
🍕
🍖
🍗
🍠
🍤
🍥
🍨
🍩
🍪
🍫
🍬
🍭
🍮
🍯
🍷
🍹
🎊
🎋
🎠
🎣
🎪
🎭
🎮
🎲
🎳
🎴
🎹
🎻
🎼
🎽
🏂
🏡
🏮
🐌
🐜
🐝
🐞
🐡
🐢
🐣
🐥
🐩
🐲
🐼
🐽
🐾
👅
👓
👖
👚
👛
👝
👞
👤
👪
👰
👹
👺
💌
💕
💖
💞
💠
💥
💧
💫
💬
💮
💯
💲
💳
💴
💵
💸
💾
📁
📂
📃
📄
📅
📆
📇
📈
📉
📊
📋
📌
📍
📎
📏
📐
📑
📒
📓
📔
📕
📗
📘
📙
📚
📛
📜
📞
📟
📤
📥
📦
📧
📨
📪
📰
📹
🔃
🔋
🔌
🔎
🔏
🔐
🔖
🔗
🔘
🔙
🔚
🔛
🔜
🔟
🔠
🔡
🔢
🔣
🔤
🔦
🔧
🔩
🔪
🔮
🔵
🔶
🔷
🔸
🔹
🔼
🔽
🗾
🗿
😅
😆
😋
😤
😩
😫
😵
😸
😹
😺
😻
😼
😽
😾
😿
🙀
🙈
🙉
🙊
🙋
🙍
🙎
🚨
🚩
🚪
🚫
👥
</div>

================================================
FILE: maverix-theme/app/partials/maverix.html
================================================
<div class="row">
    <div class="col-sm-12">
        <h2>What is Maverix?</h2>

        <p class="indent">Maverix is a maccish bootstrap theme and application boilerplate. It gives your web-apps a
            native look and feel and bundles
            <a href="https://angularjs.org/">AngularJS</a> and other components such as <a href="http://jquery.com/">jQuery</a>,
            <a href="http://www.flotcharts.org/">Flot</a> and <a href="http://andreruffert.github.io/rangeslider.js/">rangeslider.js</a>
        </p>

        <p class="indent">It is perfect to be used for apps that are based on HTML App Containers such as:
        <ul>
            <li><a href="https://github.com/maccman/macgap">MacGap</a></li>
            <li><a href="https://github.com/rogerwang/node-webkit">Node-Webkit</a></li>
            <li><a href="https://github.com/atom/atom-shell">Github Atom Shell</a></li>
            <li><a href="https://github.com/adobe/brackets-shell">Adobe Brackets Shell</a></li>
        </ul>
        </p>
        <hr/>
        <h2>Design Decisions</h2>

        <div class="indent">
            <h3>Closest possible to native</h3>


            <p>All controls and Elements are carefully designed to perfectly fit into the native mac environment.</p>

            <h3>Non Responsive (for now...)</h3>

            <p>Desktop Apps don't need to run on thousands of different devices and
                viewports. You are the master of setting a minimum-viewport and the app won't get smaller than this. If
                you
                are
                using Maverix Theme in a traditional web-app it is also okay for Admin Backends that don't need
                responsive
                layout.
            </p>

            <h3>Built on Bootstrap and Less</h3>

            <p>Twitters Bootstrap comes bundled with tons of useful styles and add ons and
                allows beginners and masters to get started quickly (grid positioning, etc.). The maverix styles are
                enhancing bootstrap and are written in
                <a href="http://lesscss.org/">less.css</a>
            </p>

            <h3>Webkit first</h3>

            <p>
                Maverix Theme is primarily made to enable app container based web-apps to look like native OS X Apps.
                So webkit is the primary engine when releasing new components. However this doesn't mean that other
                browsers
                are totally unsupported. Maverix Theme is tested on Safari, Firefox and Chrome on OS X.
            </p>
            <hr/>
        </div>
        <h2>Bundled with AngularJS</h2>

        <p class="indent"><a href="https://angularjs.org/">AngularJS</a> is one of the best Javascript App Frameworks
            available today and so Maverix Theme comes bundled with AngularJS including fully working routing to get you
            started fast. Anyways, AngularJS usage is optional.</p>

        <hr/>
        <h2>Roadmap</h2>

        <p class="indent">
        <ul>
            <li>Bugfix requests are priority one.</li>
            <li>New Features will be added as far as they make sense.</li>
            <li>If demand is high for responsive design I will add it.</li>
        </ul>
        </p>

        <hr/>
        <h2>Bugs & Feature Requests</h2>
        <p class="indent">Use the <a href="https://github.com/tschundeee/maverix/issues">Maverix Github Issue Tracker</a>.
            You can also reach out to me via Mail <a href="mailto:b.rahnema@gmail.com?subject=Maverix">b.rahnema@gmail.com</a> or Twitter
                <a href="https://twitter.com/tschundeee">@tschundeee</a></p>
        <hr/>
        <h2>Feedback</h2>
        <p class="indent">
            Feedback is always welcome.
        </p>
    </div>
</div>

================================================
FILE: maverix-theme/app/partials/modals.html
================================================
<!-- Button trigger modal -->
        <div class="text-center">
            <button class="btn btn-default" data-toggle="modal" data-target="#myModal">
                Launch demo modal
            </button>

        </div>

<!-- Modal -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
                <h4 class="modal-title" id="myModalLabel"><span class="entypo-users"></span> Modal title</h4>
                <span class="modal-subtitle">This is a Modal Subtitle</span>
            </div>
            <div class="modal-body">
                <h2>Content</h2>
                <div class="table-cell">
                    <table class="table-maverix table-maverix-small">
                        <tr>
                            <td class="td-icon"><span class="entypo-users"></span></td>
                            <td>Everyone</td>
                            <td class="text-right">
                                <select class="on-white-select">
                                    <option selected>No Access</option>
                                    <option>Read</option>
                                    <option>Read & Write</option>
                                </select>
                                <span class="entypo-arrow-combo"></span>
                            </td>
                        </tr>
                        <tr class="selected">
                            <td class="td-icon"><span class="entypo-user"></span></td>
                            <td>Admin</td>
                            <td class="text-right">
                                <select class="on-white-select">
                                    <option>No Access</option>
                                    <option>Read</option>
                                    <option selected>Read & Write</option>
                                </select>
                                <span class="entypo-arrow-combo"></span>
                            </td>

                        </tr>
                        <tr>
                            <td class="td-icon"><span class="entypo-network"></span></td>
                            <td>Staff</td>
                            <td class="text-right">
                                <select class="on-white-select">
                                    <option>No Access</option>
                                    <option selected>Read</option>
                                    <option>Read & Write</option>
                                </select>
                                <span class="entypo-arrow-combo"></span>
                            </td>
                        </tr>
                    </table>
                </div>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-on-grey" data-dismiss="modal">Close</button>
                <button type="button" class="btn btn-on-grey" data-dismiss="modal">OK</button>
            </div>
        </div>
    </div>
</div>



================================================
FILE: maverix-theme/app/partials/partial1.html
================================================
<div class="sub-nav">
    <ul>
        <li ng-class="{selected : $parent.subNav1 === 0}"><a href="" ng-click="$parent.subNav1 = 0">Overview</a></li>
        <li ng-class="{selected : $parent.subNav1 === 1}"><a href="" ng-click="$parent.subNav1 = 1">Settings</a></li>
        <li ng-class="{selected : $parent.subNav1 === 2}"><a href="" ng-click="$parent.subNav1 = 2">Memory</a></li>
    </ul>
</div>

<div class="sub-nav-content-container">
    <div ng-show="$parent.subNav1 === 0">

        <h2>Access</h2>

        <table class="table-content-block">
            <tr>
                <td class="td-label">Hostname:</td>
                <td><span class="on-badge"></span></td>
                <td>maverix.local<br>
                    <span class="nfo">
                        Here you'll find Access Information to this Server over the Internet.
                    </span>
                </td>
                <td class="td-actions">
                    <button>Edit ...</button>
                </td>
            </tr>

            <tr>
                <td class="td-label">Computername:</td>
                <td><span class="on-badge"></span></td>
                <td>maverix<br>
                    <span class="nfo">
                        Your Server is reachable under this address in the local network. <a href=""><span
                            class="entypo-right maverix-circle"></span></a>
                    </span>
                </td>
                <td class="td-actions">
                    <button>Edit ...</button>
                </td>
            </tr>

        </table>


        <h2>Server</h2>
        <table class="table-content-block">
            <tr>
                <td class="td-label">Active for:</td>
                <td>25 Days, 3 Hours, 49 Minutes</td>
            </tr>
            <tr>
                <td class="td-label">Theme:</td>
                <td>Maverix Bootstrap (Version 1.0.0)</td>
            </tr>

            <tr>
                <td class="td-label">Author:</td>
                <td>Bijan Rahnema <a href="mailto:b.rahnema@gmail.com">b.rahnema@gmail.com</a></td>
            </tr>

        </table>

        <h2>Networks</h2>
        <table class="table-content-block">
            <tr>
                <td class="td-label">Wrapbootstrap:</td>
                <td>Maverix Theme</td>
            </tr>

        </table>

    </div>


    <div ng-show="$parent.subNav1 === 1">
        <h2>Settings</h2>

        <ul class="list-unstyled indent">
            <li>
                <input type="checkbox"> Allow Remote Access via SSH for
                <select>
                    <option>Administrators</option>
                    <option>All Users</option>
                </select>
            </li>
            <li>
                <input type="checkbox"> Activate Screen Sharing and Remote Access
            </li>
            <li>
                <input type="checkbox"> Allow Remote Administration through Server
            </li>
            <li>
                <input type="checkbox"> Allow Push Notifications
            </li>
        </ul>

    </div>

    <div ng-show="$parent.subNav1 === 2">
        <div class="row">
            <div class="col-md-12">
                <h2>Memory Usage</h2>
                <div class="demo-container">
                    <div id="placeholder" class="demo-placeholder" style="width: 600px; height: 300px;"></div>
                </div>
            </div>
        </div>

        <script>




                // We use an inline data source in the example, usually data would
                // be fetched from a server

                var data = [],
                        totalPoints = 300;

                function getRandomData() {

                    if (data.length > 0)
                        data = data.slice(1);

                    // Do a random walk

                    while (data.length < totalPoints) {

                        var prev = data.length > 0 ? data[data.length - 1] : 50,
                                y = prev + Math.random() * 10 - 5;

                        if (y < 0) {
                            y = 0;
                        } else if (y > 100) {
                            y = 100;
                        }

                        data.push(y);
                    }

                    // Zip the generated y values with the x values

                    var res = [];
                    for (var i = 0; i < data.length; ++i) {
                        res.push([i, data[i]])
                    }

                    return res;
                }

                // Set up the control widget

                var updateInterval = 24;

                var plot = $.plot("#placeholder", [ getRandomData() ], {
                    series: {
                        shadowSize: 0,	// Drawing is faster without shadows
                        color: "#77B1DE"
                    },
                    yaxis: {
                        min: 0,
                        max: 100
                    },
                    xaxis: {
                        show: false
                    },
                    grid: {
                        backgroundColor: "#F5F5F5",
                        borderWidth: 1,
                        borderColor: "#E0E0E0"
                    }
                });

                function update() {

                    plot.setData([getRandomData()]);

                    // Since the axes don't change, we don't need to call plot.setupGrid()

                    plot.draw();
                    clearTimeout(update);
                    setTimeout(update, updateInterval);
                }

               update();
        </script>



            <p class="indent">Maverix Theme is integrated with the awesome <a href="http://www.flotcharts.org" target="_blank">Flot Charts</a> Library. <a class="btn btn-help" href="https://github.com/flot/flot/blob/master/API.md" target="_blank"><span class="entypo-help"></span></a></p>





    </div>
</div>



================================================
FILE: maverix-theme/app/partials/partial2.html
================================================
<div class="row">
    <div class="col-sm-12">
        <div class="table-cell" style="height: 500px">
            <table class="table table-maverix table-maverix-large">
                <tr>
                    <td class="td-icon"><span class="entypo-attention"></span></td>
                    <td><p class="info-main">Server did not react.</p>

                        <p class="info-sub">15.04.14 23:14</p></td>
                </tr>
                <tr>
                    <td class="td-icon"><span class="entypo-attention"></span></td>
                    <td><p class="info-main">Server did not react.</p>

                        <p class="info-sub">15.04.14 23:14</p></td>
                </tr>
                <tr>
                    <td class="td-icon"><span class="entypo-attention"></span></td>
                    <td><p class="info-main">Server did not react.</p>

                        <p class="info-sub">15.04.14 23:14</p></td>
                </tr>
                <tr>
                    <td class="td-icon"><span class="entypo-attention"></span></td>
                    <td><p class="info-main">Server did not react.</p>

                        <p class="info-sub">15.04.14 23:14</p></td>
                </tr>
                <tr>
                    <td>
                        <div class="placeholder"></div>
                    </td>
                    <td></td>
                </tr>
                <tr>
                    <td>
                        <div class="placeholder"></div>
                    </td>
                    <td></td>
                </tr>
                <tr>
                    <td>
                        <div class="placeholder"></div>
                    </td>
                    <td></td>
                </tr>
                <tr>
                    <td>
                        <div class="placeholder"></div>
                    </td>
                    <td></td>
                </tr>
                <tr>
                    <td>
                        <div class="placeholder"></div>
                    </td>
                    <td></td>
                </tr>
                <tr>
                    <td>
                        <div class="placeholder"></div>
                    </td>
                    <td></td>
                </tr>
                <tr>
                    <td>
                        <div class="placeholder"></div>
                    </td>
                    <td></td>
                </tr>
                <tr>
                    <td>
                        <div class="placeholder"></div>
                    </td>
                    <td></td>
                </tr>
                <tr>
                    <td>
                        <div class="placeholder"></div>
                    </td>
                    <td></td>
                </tr>
            </table>
        </div>
    </div>

</div>

<div class="row">
    <div class="col-sm-2">

        <div class="dropdown btn-group">
            <a class="btn dropdown-toggle" data-toggle="dropdown" href="">
                <span class="entypo-cog"></span>
                <span class="caret"></span>
            </a>
            <ul class="dropdown-menu">
                <li class="disabled"><a href="">Show Warning Details</a></li>
                <li><a href="">Clear Warnings</a></li>
            </ul>
        </div>

    </div>
    <div class="col-sm-10 text-right"><span class="search-input"><span class="entypo-search"></span><input type="text" class="mvx-search"
                                                                                                           placeholder="Filter Warnings"/></span>
        <a class="btn btn-help" href="" style="margin-left: 10px"><span class="entypo-help"></span></a>
    </div>

</div>

================================================
FILE: maverix-theme/app/partials/tables.html
================================================
<div class="row content-block">
    <div class="col-sm-12">
        <h2>Table Small</h2>

        <div class="table-cell">
            <table class="table-maverix table-maverix-small">
                <tr>
                    <td class="td-icon"><span class="entypo-users"></span></td>
                    <td>Everyone</td>
                    <td class="text-right">
                        <select class="on-white-select">
                            <option selected>No Access</option>
                            <option>Read</option>
                            <option>Read & Write</option>
                        </select>
                        <span class="entypo-arrow-combo"></span>
                    </td>
                </tr>
                <tr class="selected">
                    <td class="td-icon"><span class="entypo-user"></span></td>
                    <td>Admin</td>
                    <td class="text-right">
                        <select class="on-white-select">
                            <option>No Access</option>
                            <option>Read</option>
                            <option selected>Read & Write</option>
                        </select>
                        <span class="entypo-arrow-combo"></span>
                    </td>

                </tr>
                <tr>
                    <td class="td-icon"><span class="entypo-network"></span></td>
                    <td>Staff</td>
                    <td class="text-right">
                        <select>
                            <option>No Access</option>
                            <option selected>Standard Select for non Webkit Browser</option>
                            <option>Read & Write</option>
                        </select>
                    </td>
                </tr>
            </table>
        </div>
    </div>
</div>

<div class="row">
    <div class="col-sm-12">
        <h2>Table Large</h2>

        <div class="table-cell" style="height: 300px">
            <table class="table table-maverix table-maverix-large">
                <tr>
                    <td class="td-icon"><span class="entypo-attention"></span></td>
                    <td><p class="info-main">Server did not react.</p>

                        <p class="info-sub">15.04.14 23:14</p></td>
                </tr>
                <tr class="selected">
                    <td class="td-icon"><span class="entypo-attention"></span></td>
                    <td><p class="info-main">Server did not react.</p>

                        <p class="info-sub">15.04.14 23:14</p></td>
                </tr>
                <tr>
                    <td class="td-icon"><span class="entypo-attention"></span></td>
                    <td><p class="info-main">Server did not react.</p>

                        <p class="info-sub">15.04.14 23:14</p></td>
                </tr>
                <tr>
                    <td class="td-icon"><span class="entypo-attention"></span></td>
                    <td><p class="info-main">Server did not react.</p>

                        <p class="info-sub">15.04.14 23:14</p></td>
                </tr>
                <tr>
                    <td>
                        <div class="placeholder"></div>
                    </td>
                    <td></td>
                </tr>
                <tr>
                    <td>
                        <div class="placeholder"></div>
                    </td>
                    <td></td>
                </tr>
                <tr>
                    <td>
                        <div class="placeholder"></div>
                    </td>
                    <td></td>
                </tr>
                <tr>
                    <td>
                        <div class="placeholder"></div>
                    </td>
                    <td></td>
                </tr>
            </table>
        </div>
    </div>

</div>

<div class="row content-block">
    <div class="col-sm-2">

        <div class="dropdown btn-group">
            <a class="btn dropdown-toggle" data-toggle="dropdown" href="">
                <span class="entypo-cog"></span>
                <span class="caret"></span>
            </a>
            <ul class="dropdown-menu">
                <li class="disabled"><a href="">Show Warning Details</a></li>
                <li><a href="">Clear Warnings</a></li>
            </ul>
        </div>

    </div>
    <div class="col-sm-10 text-right"><span class="search-input"><span class="entypo-search"></span><input type="text" class="mvx-search"
                                                                                                           placeholder="Filter Warnings"/></span>
        <a class="btn btn-help" href="" style="margin-left: 10px"><span class="entypo-help"></span></a>
    </div>

</div>

<div class="row content-block">
    <div class="col-sm-12">
        <hr/>
        <h2>Content Block Table</h2>

        <table class="table-content-block">
            <tr>
                <td class="td-label">Hostname:</td>
                <td><span class="on-badge"></span></td>
                <td>maverix.local<br>
                    <span class="nfo">
                        Here you'll find Access Information to this Server over the Internet.
                    </span>
                </td>
                <td class="td-actions">
                    <button>Edit ...</button>
                </td>
            </tr>

            <tr>
                <td class="td-label">Computername:</td>
                <td><span class="on-badge"></span></td>
                <td>maverix<br>
                    <span class="nfo">
                        Your Server is reachable under this address in the local network. <a href=""><span
                            class="entypo-right maverix-circle"></span></a>
                    </span>
                </td>
                <td class="td-actions">
                    <button>Edit ...</button>
                </td>
            </tr>

        </table>
        <hr/>
    </div>
</div>

================================================
FILE: maverix-theme/app/partials/type.html
================================================
<h1>Heading One</h1>
<p>The Heading One style should be used rarely and only on specifically crafted pages. Make Sure it fits well if you
    decide to make use of it ;).</p>
<h2>Heading Two</h2>
<p>Headind Two is the default heading for this Theme. If you only present text after Heading Two you can also add an
    ".indent" class to the text container(e.g. p-tag).</p>
<h2>This looks like this</h2>
<p class="indent">This text is intended and looks awesome below a Heading Two.</p>
<hr/>
<h3>Heading Three</h3>
<p>Use heading three only if necessary and only to add some extra grouping below a Heading Two. Usually it fits better
    to use nav-tabs to for grouping and then make use of Heading Twos.</p>

================================================
FILE: maverix-theme/bower_components/angular/.bower.json
================================================
{
  "name": "angular",
  "version": "1.2.16",
  "main": "./angular.js",
  "dependencies": {},
  "homepage": "https://github.com/angular/bower-angular",
  "_release": "1.2.16",
  "_resolution": {
    "type": "version",
    "tag": "v1.2.16",
    "commit": "7ae38b4a0cfced157e3486a0d6e2d299601723bb"
  },
  "_source": "git://github.com/angular/bower-angular.git",
  "_target": "~1.2.16",
  "_originalSource": "angular",
  "_direct": true
}

================================================
FILE: maverix-theme/bower_components/angular/README.md
================================================
# bower-angular

This repo is for distribution on `bower`. The source for this module is in the
[main AngularJS repo](https://github.com/angular/angular.js).
Please file issues and pull requests against that repo.

## Install

Install with `bower`:

```shell
bower install angular
```

Add a `<script>` to your `index.html`:

```html
<script src="/bower_components/angular/angular.js"></script>
```

## Documentation

Documentation is available on the
[AngularJS docs site](http://docs.angularjs.org/).

## License

The MIT License

Copyright (c) 2010-2012 Google, Inc. http://angularjs.org

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.


================================================
FILE: maverix-theme/bower_components/angular/angular-csp.css
================================================
/* Include this file in your html if you are using the CSP mode. */

@charset "UTF-8";

[ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak],
.ng-cloak, .x-ng-cloak,
.ng-hide {
  display: none !important;
}

ng\:form {
  display: block;
}

.ng-animate-block-transitions {
  transition:0s all!important;
  -webkit-transition:0s all!important;
}


================================================
FILE: maverix-theme/bower_components/angular/angular.js
================================================
/**
 * @license AngularJS v1.2.16
 * (c) 2010-2014 Google, Inc. http://angularjs.org
 * License: MIT
 */
(function(window, document, undefined) {'use strict';

/**
 * @description
 *
 * This object provides a utility for producing rich Error messages within
 * Angular. It can be called as follows:
 *
 * var exampleMinErr = minErr('example');
 * throw exampleMinErr('one', 'This {0} is {1}', foo, bar);
 *
 * The above creates an instance of minErr in the example namespace. The
 * resulting error will have a namespaced error code of example.one.  The
 * resulting error will replace {0} with the value of foo, and {1} with the
 * value of bar. The object is not restricted in the number of arguments it can
 * take.
 *
 * If fewer arguments are specified than necessary for interpolation, the extra
 * interpolation markers will be preserved in the final string.
 *
 * Since data will be parsed statically during a build step, some restrictions
 * are applied with respect to how minErr instances are created and called.
 * Instances should have names of the form namespaceMinErr for a minErr created
 * using minErr('namespace') . Error codes, namespaces and template strings
 * should all be static strings, not variables or general expressions.
 *
 * @param {string} module The namespace to use for the new minErr instance.
 * @returns {function(code:string, template:string, ...templateArgs): Error} minErr instance
 */

function minErr(module) {
  return function () {
    var code = arguments[0],
      prefix = '[' + (module ? module + ':' : '') + code + '] ',
      template = arguments[1],
      templateArgs = arguments,
      stringify = function (obj) {
        if (typeof obj === 'function') {
          return obj.toString().replace(/ \{[\s\S]*$/, '');
        } else if (typeof obj === 'undefined') {
          return 'undefined';
        } else if (typeof obj !== 'string') {
          return JSON.stringify(obj);
        }
        return obj;
      },
      message, i;

    message = prefix + template.replace(/\{\d+\}/g, function (match) {
      var index = +match.slice(1, -1), arg;

      if (index + 2 < templateArgs.length) {
        arg = templateArgs[index + 2];
        if (typeof arg === 'function') {
          return arg.toString().replace(/ ?\{[\s\S]*$/, '');
        } else if (typeof arg === 'undefined') {
          return 'undefined';
        } else if (typeof arg !== 'string') {
          return toJson(arg);
        }
        return arg;
      }
      return match;
    });

    message = message + '\nhttp://errors.angularjs.org/1.2.16/' +
      (module ? module + '/' : '') + code;
    for (i = 2; i < arguments.length; i++) {
      message = message + (i == 2 ? '?' : '&') + 'p' + (i-2) + '=' +
        encodeURIComponent(stringify(arguments[i]));
    }

    return new Error(message);
  };
}

/* We need to tell jshint what variables are being exported */
/* global
    -angular,
    -msie,
    -jqLite,
    -jQuery,
    -slice,
    -push,
    -toString,
    -ngMinErr,
    -_angular,
    -angularModule,
    -nodeName_,
    -uid,

    -lowercase,
    -uppercase,
    -manualLowercase,
    -manualUppercase,
    -nodeName_,
    -isArrayLike,
    -forEach,
    -sortedKeys,
    -forEachSorted,
    -reverseParams,
    -nextUid,
    -setHashKey,
    -extend,
    -int,
    -inherit,
    -noop,
    -identity,
    -valueFn,
    -isUndefined,
    -isDefined,
    -isObject,
    -isString,
    -isNumber,
    -isDate,
    -isArray,
    -isFunction,
    -isRegExp,
    -isWindow,
    -isScope,
    -isFile,
    -isBlob,
    -isBoolean,
    -trim,
    -isElement,
    -makeMap,
    -map,
    -size,
    -includes,
    -indexOf,
    -arrayRemove,
    -isLeafNode,
    -copy,
    -shallowCopy,
    -equals,
    -csp,
    -concat,
    -sliceArgs,
    -bind,
    -toJsonReplacer,
    -toJson,
    -fromJson,
    -toBoolean,
    -startingTag,
    -tryDecodeURIComponent,
    -parseKeyValue,
    -toKeyValue,
    -encodeUriSegment,
    -encodeUriQuery,
    -angularInit,
    -bootstrap,
    -snake_case,
    -bindJQuery,
    -assertArg,
    -assertArgFn,
    -assertNotHasOwnProperty,
    -getter,
    -getBlockElements,
    -hasOwnProperty,

*/

////////////////////////////////////

/**
 * @ngdoc module
 * @name ng
 * @module ng
 * @description
 *
 * # ng (core module)
 * The ng module is loaded by default when an AngularJS application is started. The module itself
 * contains the essential components for an AngularJS application to function. The table below
 * lists a high level breakdown of each of the services/factories, filters, directives and testing
 * components available within this core module.
 *
 * <div doc-module-components="ng"></div>
 */

/**
 * @ngdoc function
 * @name angular.lowercase
 * @module ng
 * @function
 *
 * @description Converts the specified string to lowercase.
 * @param {string} string String to be converted to lowercase.
 * @returns {string} Lowercased string.
 */
var lowercase = function(string){return isString(string) ? string.toLowerCase() : string;};
var hasOwnProperty = Object.prototype.hasOwnProperty;

/**
 * @ngdoc function
 * @name angular.uppercase
 * @module ng
 * @function
 *
 * @description Converts the specified string to uppercase.
 * @param {string} string String to be converted to uppercase.
 * @returns {string} Uppercased string.
 */
var uppercase = function(string){return isString(string) ? string.toUpperCase() : string;};


var manualLowercase = function(s) {
  /* jshint bitwise: false */
  return isString(s)
      ? s.replace(/[A-Z]/g, function(ch) {return String.fromCharCode(ch.charCodeAt(0) | 32);})
      : s;
};
var manualUppercase = function(s) {
  /* jshint bitwise: false */
  return isString(s)
      ? s.replace(/[a-z]/g, function(ch) {return String.fromCharCode(ch.charCodeAt(0) & ~32);})
      : s;
};


// String#toLowerCase and String#toUpperCase don't produce correct results in browsers with Turkish
// locale, for this reason we need to detect this case and redefine lowercase/uppercase methods
// with correct but slower alternatives.
if ('i' !== 'I'.toLowerCase()) {
  lowercase = manualLowercase;
  uppercase = manualUppercase;
}


var /** holds major version number for IE or NaN for real browsers */
    msie,
    jqLite,           // delay binding since jQuery could be loaded after us.
    jQuery,           // delay binding
    slice             = [].slice,
    push              = [].push,
    toString          = Object.prototype.toString,
    ngMinErr          = minErr('ng'),


    _angular          = window.angular,
    /** @name angular */
    angular           = window.angular || (window.angular = {}),
    angularModule,
    nodeName_,
    uid               = ['0', '0', '0'];

/**
 * IE 11 changed the format of the UserAgent string.
 * See http://msdn.microsoft.com/en-us/library/ms537503.aspx
 */
msie = int((/msie (\d+)/.exec(lowercase(navigator.userAgent)) || [])[1]);
if (isNaN(msie)) {
  msie = int((/trident\/.*; rv:(\d+)/.exec(lowercase(navigator.userAgent)) || [])[1]);
}


/**
 * @private
 * @param {*} obj
 * @return {boolean} Returns true if `obj` is an array or array-like object (NodeList, Arguments,
 *                   String ...)
 */
function isArrayLike(obj) {
  if (obj == null || isWindow(obj)) {
    return false;
  }

  var length = obj.length;

  if (obj.nodeType === 1 && length) {
    return true;
  }

  return isString(obj) || isArray(obj) || length === 0 ||
         typeof length === 'number' && length > 0 && (length - 1) in obj;
}

/**
 * @ngdoc function
 * @name angular.forEach
 * @module ng
 * @function
 *
 * @description
 * Invokes the `iterator` function once for each item in `obj` collection, which can be either an
 * object or an array. The `iterator` function is invoked with `iterator(value, key)`, where `value`
 * is the value of an object property or an array element and `key` is the object property key or
 * array element index. Specifying a `context` for the function is optional.
 *
 * It is worth noting that `.forEach` does not iterate over inherited properties because it filters
 * using the `hasOwnProperty` method.
 *
   ```js
     var values = {name: 'misko', gender: 'male'};
     var log = [];
     angular.forEach(values, function(value, key){
       this.push(key + ': ' + value);
     }, log);
     expect(log).toEqual(['name: misko', 'gender: male']);
   ```
 *
 * @param {Object|Array} obj Object to iterate over.
 * @param {Function} iterator Iterator function.
 * @param {Object=} context Object to become context (`this`) for the iterator function.
 * @returns {Object|Array} Reference to `obj`.
 */
function forEach(obj, iterator, context) {
  var key;
  if (obj) {
    if (isFunction(obj)){
      for (key in obj) {
        // Need to check if hasOwnProperty exists,
        // as on IE8 the result of querySelectorAll is an object without a hasOwnProperty function
        if (key != 'prototype' && key != 'length' && key != 'name' && (!obj.hasOwnProperty || obj.hasOwnProperty(key))) {
          iterator.call(context, obj[key], key);
        }
      }
    } else if (obj.forEach && obj.forEach !== forEach) {
      obj.forEach(iterator, context);
    } else if (isArrayLike(obj)) {
      for (key = 0; key < obj.length; key++)
        iterator.call(context, obj[key], key);
    } else {
      for (key in obj) {
        if (obj.hasOwnProperty(key)) {
          iterator.call(context, obj[key], key);
        }
      }
    }
  }
  return obj;
}

function sortedKeys(obj) {
  var keys = [];
  for (var key in obj) {
    if (obj.hasOwnProperty(key)) {
      keys.push(key);
    }
  }
  return keys.sort();
}

function forEachSorted(obj, iterator, context) {
  var keys = sortedKeys(obj);
  for ( var i = 0; i < keys.length; i++) {
    iterator.call(context, obj[keys[i]], keys[i]);
  }
  return keys;
}


/**
 * when using forEach the params are value, key, but it is often useful to have key, value.
 * @param {function(string, *)} iteratorFn
 * @returns {function(*, string)}
 */
function reverseParams(iteratorFn) {
  return function(value, key) { iteratorFn(key, value); };
}

/**
 * A consistent way of creating unique IDs in angular. The ID is a sequence of alpha numeric
 * characters such as '012ABC'. The reason why we are not using simply a number counter is that
 * the number string gets longer over time, and it can also overflow, where as the nextId
 * will grow much slower, it is a string, and it will never overflow.
 *
 * @returns {string} an unique alpha-numeric string
 */
function nextUid() {
  var index = uid.length;
  var digit;

  while(index) {
    index--;
    digit = uid[index].charCodeAt(0);
    if (digit == 57 /*'9'*/) {
      uid[index] = 'A';
      return uid.join('');
    }
    if (digit == 90  /*'Z'*/) {
      uid[index] = '0';
    } else {
      uid[index] = String.fromCharCode(digit + 1);
      return uid.join('');
    }
  }
  uid.unshift('0');
  return uid.join('');
}


/**
 * Set or clear the hashkey for an object.
 * @param obj object
 * @param h the hashkey (!truthy to delete the hashkey)
 */
function setHashKey(obj, h) {
  if (h) {
    obj.$$hashKey = h;
  }
  else {
    delete obj.$$hashKey;
  }
}

/**
 * @ngdoc function
 * @name angular.extend
 * @module ng
 * @function
 *
 * @description
 * Extends the destination object `dst` by copying all of the properties from the `src` object(s)
 * to `dst`. You can specify multiple `src` objects.
 *
 * @param {Object} dst Destination object.
 * @param {...Object} src Source object(s).
 * @returns {Object} Reference to `dst`.
 */
function extend(dst) {
  var h = dst.$$hashKey;
  forEach(arguments, function(obj){
    if (obj !== dst) {
      forEach(obj, function(value, key){
        dst[key] = value;
      });
    }
  });

  setHashKey(dst,h);
  return dst;
}

function int(str) {
  return parseInt(str, 10);
}


function inherit(parent, extra) {
  return extend(new (extend(function() {}, {prototype:parent}))(), extra);
}

/**
 * @ngdoc function
 * @name angular.noop
 * @module ng
 * @function
 *
 * @description
 * A function that performs no operations. This function can be useful when writing code in the
 * functional style.
   ```js
     function foo(callback) {
       var result = calculateResult();
       (callback || angular.noop)(result);
     }
   ```
 */
function noop() {}
noop.$inject = [];


/**
 * @ngdoc function
 * @name angular.identity
 * @module ng
 * @function
 *
 * @description
 * A function that returns its first argument. This function is useful when writing code in the
 * functional style.
 *
   ```js
     function transformer(transformationFn, value) {
       return (transformationFn || angular.identity)(value);
     };
   ```
 */
function identity($) {return $;}
identity.$inject = [];


function valueFn(value) {return function() {return value;};}

/**
 * @ngdoc function
 * @name angular.isUndefined
 * @module ng
 * @function
 *
 * @description
 * Determines if a reference is undefined.
 *
 * @param {*} value Reference to check.
 * @returns {boolean} True if `value` is undefined.
 */
function isUndefined(value){return typeof value === 'undefined';}


/**
 * @ngdoc function
 * @name angular.isDefined
 * @module ng
 * @function
 *
 * @description
 * Determines if a reference is defined.
 *
 * @param {*} value Reference to check.
 * @returns {boolean} True if `value` is defined.
 */
function isDefined(value){return typeof value !== 'undefined';}


/**
 * @ngdoc function
 * @name angular.isObject
 * @module ng
 * @function
 *
 * @description
 * Determines if a reference is an `Object`. Unlike `typeof` in JavaScript, `null`s are not
 * considered to be objects. Note that JavaScript arrays are objects.
 *
 * @param {*} value Reference to check.
 * @returns {boolean} True if `value` is an `Object` but not `null`.
 */
function isObject(value){return value != null && typeof value === 'object';}


/**
 * @ngdoc function
 * @name angular.isString
 * @module ng
 * @function
 *
 * @description
 * Determines if a reference is a `String`.
 *
 * @param {*} value Reference to check.
 * @returns {boolean} True if `value` is a `String`.
 */
function isString(value){return typeof value === 'string';}


/**
 * @ngdoc function
 * @name angular.isNumber
 * @module ng
 * @function
 *
 * @description
 * Determines if a reference is a `Number`.
 *
 * @param {*} value Reference to check.
 * @returns {boolean} True if `value` is a `Number`.
 */
function isNumber(value){return typeof value === 'number';}


/**
 * @ngdoc function
 * @name angular.isDate
 * @module ng
 * @function
 *
 * @description
 * Determines if a value is a date.
 *
 * @param {*} value Reference to check.
 * @returns {boolean} True if `value` is a `Date`.
 */
function isDate(value){
  return toString.call(value) === '[object Date]';
}


/**
 * @ngdoc function
 * @name angular.isArray
 * @module ng
 * @function
 *
 * @description
 * Determines if a reference is an `Array`.
 *
 * @param {*} value Reference to check.
 * @returns {boolean} True if `value` is an `Array`.
 */
function isArray(value) {
  return toString.call(value) === '[object Array]';
}


/**
 * @ngdoc function
 * @name angular.isFunction
 * @module ng
 * @function
 *
 * @description
 * Determines if a reference is a `Function`.
 *
 * @param {*} value Reference to check.
 * @returns {boolean} True if `value` is a `Function`.
 */
function isFunction(value){return typeof value === 'function';}


/**
 * Determines if a value is a regular expression object.
 *
 * @private
 * @param {*} value Reference to check.
 * @returns {boolean} True if `value` is a `RegExp`.
 */
function isRegExp(value) {
  return toString.call(value) === '[object RegExp]';
}


/**
 * Checks if `obj` is a window object.
 *
 * @private
 * @param {*} obj Object to check
 * @returns {boolean} True if `obj` is a window obj.
 */
function isWindow(obj) {
  return obj && obj.document && obj.location && obj.alert && obj.setInterval;
}


function isScope(obj) {
  return obj && obj.$evalAsync && obj.$watch;
}


function isFile(obj) {
  return toString.call(obj) === '[object File]';
}


function isBlob(obj) {
  return toString.call(obj) === '[object Blob]';
}


function isBoolean(value) {
  return typeof value === 'boolean';
}


var trim = (function() {
  // native trim is way faster: http://jsperf.com/angular-trim-test
  // but IE doesn't have it... :-(
  // TODO: we should move this into IE/ES5 polyfill
  if (!String.prototype.trim) {
    return function(value) {
      return isString(value) ? value.replace(/^\s\s*/, '').replace(/\s\s*$/, '') : value;
    };
  }
  return function(value) {
    return isString(value) ? value.trim() : value;
  };
})();


/**
 * @ngdoc function
 * @name angular.isElement
 * @module ng
 * @function
 *
 * @description
 * Determines if a reference is a DOM element (or wrapped jQuery element).
 *
 * @param {*} value Reference to check.
 * @returns {boolean} True if `value` is a DOM element (or wrapped jQuery element).
 */
function isElement(node) {
  return !!(node &&
    (node.nodeName  // we are a direct element
    || (node.prop && node.attr && node.find)));  // we have an on and find method part of jQuery API
}

/**
 * @param str 'key1,key2,...'
 * @returns {object} in the form of {key1:true, key2:true, ...}
 */
function makeMap(str){
  var obj = {}, items = str.split(","), i;
  for ( i = 0; i < items.length; i++ )
    obj[ items[i] ] = true;
  return obj;
}


if (msie < 9) {
  nodeName_ = function(element) {
    element = element.nodeName ? element : element[0];
    return (element.scopeName && element.scopeName != 'HTML')
      ? uppercase(element.scopeName + ':' + element.nodeName) : element.nodeName;
  };
} else {
  nodeName_ = function(element) {
    return element.nodeName ? element.nodeName : element[0].nodeName;
  };
}


function map(obj, iterator, context) {
  var results = [];
  forEach(obj, function(value, index, list) {
    results.push(iterator.call(context, value, index, list));
  });
  return results;
}


/**
 * @description
 * Determines the number of elements in an array, the number of properties an object has, or
 * the length of a string.
 *
 * Note: This function is used to augment the Object type in Angular expressions. See
 * {@link angular.Object} for more information about Angular arrays.
 *
 * @param {Object|Array|string} obj Object, array, or string to inspect.
 * @param {boolean} [ownPropsOnly=false] Count only "own" properties in an object
 * @returns {number} The size of `obj` or `0` if `obj` is neither an object nor an array.
 */
function size(obj, ownPropsOnly) {
  var count = 0, key;

  if (isArray(obj) || isString(obj)) {
    return obj.length;
  } else if (isObject(obj)){
    for (key in obj)
      if (!ownPropsOnly || obj.hasOwnProperty(key))
        count++;
  }

  return count;
}


function includes(array, obj) {
  return indexOf(array, obj) != -1;
}

function indexOf(array, obj) {
  if (array.indexOf) return array.indexOf(obj);

  for (var i = 0; i < array.length; i++) {
    if (obj === array[i]) return i;
  }
  return -1;
}

function arrayRemove(array, value) {
  var index = indexOf(array, value);
  if (index >=0)
    array.splice(index, 1);
  return value;
}

function isLeafNode (node) {
  if (node) {
    switch (node.nodeName) {
    case "OPTION":
    case "PRE":
    case "TITLE":
      return true;
    }
  }
  return false;
}

/**
 * @ngdoc function
 * @name angular.copy
 * @module ng
 * @function
 *
 * @description
 * Creates a deep copy of `source`, which should be an object or an array.
 *
 * * If no destination is supplied, a copy of the object or array is created.
 * * If a destination is provided, all of its elements (for array) or properties (for objects)
 *   are deleted and then all elements/properties from the source are copied to it.
 * * If `source` is not an object or array (inc. `null` and `undefined`), `source` is returned.
 * * If `source` is identical to 'destination' an exception will be thrown.
 *
 * @param {*} source The source that will be used to make a copy.
 *                   Can be any type, including primitives, `null`, and `undefined`.
 * @param {(Object|Array)=} destination Destination into which the source is copied. If
 *     provided, must be of the same type as `source`.
 * @returns {*} The copy or updated `destination`, if `destination` was specified.
 *
 * @example
 <example>
 <file name="index.html">
 <div ng-controller="Controller">
 <form novalidate class="simple-form">
 Name: <input type="text" ng-model="user.name" /><br />
 E-mail: <input type="email" ng-model="user.email" /><br />
 Gender: <input type="radio" ng-model="user.gender" value="male" />male
 <input type="radio" ng-model="user.gender" value="female" />female<br />
 <button ng-click="reset()">RESET</button>
 <button ng-click="update(user)">SAVE</button>
 </form>
 <pre>form = {{user | json}}</pre>
 <pre>master = {{master | json}}</pre>
 </div>

 <script>
 function Controller($scope) {
    $scope.master= {};

    $scope.update = function(user) {
      // Example with 1 argument
      $scope.master= angular.copy(user);
    };

    $scope.reset = function() {
      // Example with 2 arguments
      angular.copy($scope.master, $scope.user);
    };

    $scope.reset();
  }
 </script>
 </file>
 </example>
 */
function copy(source, destination){
  if (isWindow(source) || isScope(source)) {
    throw ngMinErr('cpws',
      "Can't copy! Making copies of Window or Scope instances is not supported.");
  }

  if (!destination) {
    destination = source;
    if (source) {
      if (isArray(source)) {
        destination = copy(source, []);
      } else if (isDate(source)) {
        destination = new Date(source.getTime());
      } else if (isRegExp(source)) {
        destination = new RegExp(source.source);
      } else if (isObject(source)) {
        destination = copy(source, {});
      }
    }
  } else {
    if (source === destination) throw ngMinErr('cpi',
      "Can't copy! Source and destination are identical.");
    if (isArray(source)) {
      destination.length = 0;
      for ( var i = 0; i < source.length; i++) {
        destination.push(copy(source[i]));
      }
    } else {
      var h = destination.$$hashKey;
      forEach(destination, function(value, key){
        delete destination[key];
      });
      for ( var key in source) {
        destination[key] = copy(source[key]);
      }
      setHashKey(destination,h);
    }
  }
  return destination;
}

/**
 * Create a shallow copy of an object
 */
function shallowCopy(src, dst) {
  dst = dst || {};

  for(var key in src) {
    // shallowCopy is only ever called by $compile nodeLinkFn, which has control over src
    // so we don't need to worry about using our custom hasOwnProperty here
    if (src.hasOwnProperty(key) && !(key.charAt(0) === '$' && key.charAt(1) === '$')) {
      dst[key] = src[key];
    }
  }

  return dst;
}


/**
 * @ngdoc function
 * @name angular.equals
 * @module ng
 * @function
 *
 * @description
 * Determines if two objects or two values are equivalent. Supports value types, regular
 * expressions, arrays and objects.
 *
 * Two objects or values are considered equivalent if at least one of the following is true:
 *
 * * Both objects or values pass `===` comparison.
 * * Both objects or values are of the same type and all of their properties are equal by
 *   comparing them with `angular.equals`.
 * * Both values are NaN. (In JavaScript, NaN == NaN => false. But we consider two NaN as equal)
 * * Both values represent the same regular expression (In JavasScript,
 *   /abc/ == /abc/ => false. But we consider two regular expressions as equal when their textual
 *   representation matches).
 *
 * During a property comparison, properties of `function` type and properties with names
 * that begin with `$` are ignored.
 *
 * Scope and DOMWindow objects are being compared only by identify (`===`).
 *
 * @param {*} o1 Object or value to compare.
 * @param {*} o2 Object or value to compare.
 * @returns {boolean} True if arguments are equal.
 */
function equals(o1, o2) {
  if (o1 === o2) return true;
  if (o1 === null || o2 === null) return false;
  if (o1 !== o1 && o2 !== o2) return true; // NaN === NaN
  var t1 = typeof o1, t2 = typeof o2, length, key, keySet;
  if (t1 == t2) {
    if (t1 == 'object') {
      if (isArray(o1)) {
        if (!isArray(o2)) return false;
        if ((length = o1.length) == o2.length) {
          for(key=0; key<length; key++) {
            if (!equals(o1[key], o2[key])) return false;
          }
          return true;
        }
      } else if (isDate(o1)) {
        return isDate(o2) && o1.getTime() == o2.getTime();
      } else if (isRegExp(o1) && isRegExp(o2)) {
        return o1.toString() == o2.toString();
      } else {
        if (isScope(o1) || isScope(o2) || isWindow(o1) || isWindow(o2) || isArray(o2)) return false;
        keySet = {};
        for(key in o1) {
          if (key.charAt(0) === '$' || isFunction(o1[key])) continue;
          if (!equals(o1[key], o2[key])) return false;
          keySet[key] = true;
        }
        for(key in o2) {
          if (!keySet.hasOwnProperty(key) &&
              key.charAt(0) !== '$' &&
              o2[key] !== undefined &&
              !isFunction(o2[key])) return false;
        }
        return true;
      }
    }
  }
  return false;
}


function csp() {
  return (document.securityPolicy && document.securityPolicy.isActive) ||
      (document.querySelector &&
      !!(document.querySelector('[ng-csp]') || document.querySelector('[data-ng-csp]')));
}


function concat(array1, array2, index) {
  return array1.concat(slice.call(array2, index));
}

function sliceArgs(args, startIndex) {
  return slice.call(args, startIndex || 0);
}


/* jshint -W101 */
/**
 * @ngdoc function
 * @name angular.bind
 * @module ng
 * @function
 *
 * @description
 * Returns a function which calls function `fn` bound to `self` (`self` becomes the `this` for
 * `fn`). You can supply optional `args` that are prebound to the function. This feature is also
 * known as [partial application](http://en.wikipedia.org/wiki/Partial_application), as
 * distinguished from [function currying](http://en.wikipedia.org/wiki/Currying#Contrast_with_partial_function_application).
 *
 * @param {Object} self Context which `fn` should be evaluated in.
 * @param {function()} fn Function to be bound.
 * @param {...*} args Optional arguments to be prebound to the `fn` function call.
 * @returns {function()} Function that wraps the `fn` with all the specified bindings.
 */
/* jshint +W101 */
function bind(self, fn) {
  var curryArgs = arguments.length > 2 ? sliceArgs(arguments, 2) : [];
  if (isFunction(fn) && !(fn instanceof RegExp)) {
    return curryArgs.length
      ? function() {
          return arguments.length
            ? fn.apply(self, curryArgs.concat(slice.call(arguments, 0)))
            : fn.apply(self, curryArgs);
        }
      : function() {
          return arguments.length
            ? fn.apply(self, arguments)
            : fn.call(self);
        };
  } else {
    // in IE, native methods are not functions so they cannot be bound (note: they don't need to be)
    return fn;
  }
}


function toJsonReplacer(key, value) {
  var val = value;

  if (typeof key === 'string' && key.charAt(0) === '$') {
    val = undefined;
  } else if (isWindow(value)) {
    val = '$WINDOW';
  } else if (value &&  document === value) {
    val = '$DOCUMENT';
  } else if (isScope(value)) {
    val = '$SCOPE';
  }

  return val;
}


/**
 * @ngdoc function
 * @name angular.toJson
 * @module ng
 * @function
 *
 * @description
 * Serializes input into a JSON-formatted string. Properties with leading $ characters will be
 * stripped since angular uses this notation internally.
 *
 * @param {Object|Array|Date|string|number} obj Input to be serialized into JSON.
 * @param {boolean=} pretty If set to true, the JSON output will contain newlines and whitespace.
 * @returns {string|undefined} JSON-ified string representing `obj`.
 */
function toJson(obj, pretty) {
  if (typeof obj === 'undefined') return undefined;
  return JSON.stringify(obj, toJsonReplacer, pretty ? '  ' : null);
}


/**
 * @ngdoc function
 * @name angular.fromJson
 * @module ng
 * @function
 *
 * @description
 * Deserializes a JSON string.
 *
 * @param {string} json JSON string to deserialize.
 * @returns {Object|Array|string|number} Deserialized thingy.
 */
function fromJson(json) {
  return isString(json)
      ? JSON.parse(json)
      : json;
}


function toBoolean(value) {
  if (typeof value === 'function') {
    value = true;
  } else if (value && value.length !== 0) {
    var v = lowercase("" + value);
    value = !(v == 'f' || v == '0' || v == 'false' || v == 'no' || v == 'n' || v == '[]');
  } else {
    value = false;
  }
  return value;
}

/**
 * @returns {string} Returns the string representation of the element.
 */
function startingTag(element) {
  element = jqLite(element).clone();
  try {
    // turns out IE does not let you set .html() on elements which
    // are not allowed to have children. So we just ignore it.
    element.empty();
  } catch(e) {}
  // As Per DOM Standards
  var TEXT_NODE = 3;
  var elemHtml = jqLite('<div>').append(element).html();
  try {
    return element[0].nodeType === TEXT_NODE ? lowercase(elemHtml) :
        elemHtml.
          match(/^(<[^>]+>)/)[1].
          replace(/^<([\w\-]+)/, function(match, nodeName) { return '<' + lowercase(nodeName); });
  } catch(e) {
    return lowercase(elemHtml);
  }

}


/////////////////////////////////////////////////

/**
 * Tries to decode the URI component without throwing an exception.
 *
 * @private
 * @param str value potential URI component to check.
 * @returns {boolean} True if `value` can be decoded
 * with the decodeURIComponent function.
 */
function tryDecodeURIComponent(value) {
  try {
    return decodeURIComponent(value);
  } catch(e) {
    // Ignore any invalid uri component
  }
}


/**
 * Parses an escaped url query string into key-value pairs.
 * @returns {Object.<string,boolean|Array>}
 */
function parseKeyValue(/**string*/keyValue) {
  var obj = {}, key_value, key;
  forEach((keyValue || "").split('&'), function(keyValue){
    if ( keyValue ) {
      key_value = keyValue.split('=');
      key = tryDecodeURIComponent(key_value[0]);
      if ( isDefined(key) ) {
        var val = isDefined(key_value[1]) ? tryDecodeURIComponent(key_value[1]) : true;
        if (!obj[key]) {
          obj[key] = val;
        } else if(isArray(obj[key])) {
          obj[key].push(val);
        } else {
          obj[key] = [obj[key],val];
        }
      }
    }
  });
  return obj;
}

function toKeyValue(obj) {
  var parts = [];
  forEach(obj, function(value, key) {
    if (isArray(value)) {
      forEach(value, function(arrayValue) {
        parts.push(encodeUriQuery(key, true) +
                   (arrayValue === true ? '' : '=' + encodeUriQuery(arrayValue, true)));
      });
    } else {
    parts.push(encodeUriQuery(key, true) +
               (value === true ? '' : '=' + encodeUriQuery(value, true)));
    }
  });
  return parts.length ? parts.join('&') : '';
}


/**
 * We need our custom method because encodeURIComponent is too aggressive and doesn't follow
 * http://www.ietf.org/rfc/rfc3986.txt with regards to the character set (pchar) allowed in path
 * segments:
 *    segment       = *pchar
 *    pchar         = unreserved / pct-encoded / sub-delims / ":" / "@"
 *    pct-encoded   = "%" HEXDIG HEXDIG
 *    unreserved    = ALPHA / DIGIT / "-" / "." / "_" / "~"
 *    sub-delims    = "!" / "$" / "&" / "'" / "(" / ")"
 *                     / "*" / "+" / "," / ";" / "="
 */
function encodeUriSegment(val) {
  return encodeUriQuery(val, true).
             replace(/%26/gi, '&').
             replace(/%3D/gi, '=').
             replace(/%2B/gi, '+');
}


/**
 * This method is intended for encoding *key* or *value* parts of query component. We need a custom
 * method because encodeURIComponent is too aggressive and encodes stuff that doesn't have to be
 * encoded per http://tools.ietf.org/html/rfc3986:
 *    query       = *( pchar / "/" / "?" )
 *    pchar         = unreserved / pct-encoded / sub-delims / ":" / "@"
 *    unreserved    = ALPHA / DIGIT / "-" / "." / "_" / "~"
 *    pct-encoded   = "%" HEXDIG HEXDIG
 *    sub-delims    = "!" / "$" / "&" / "'" / "(" / ")"
 *                     / "*" / "+" / "," / ";" / "="
 */
function encodeUriQuery(val, pctEncodeSpaces) {
  return encodeURIComponent(val).
             replace(/%40/gi, '@').
             replace(/%3A/gi, ':').
             replace(/%24/g, '$').
             replace(/%2C/gi, ',').
             replace(/%20/g, (pctEncodeSpaces ? '%20' : '+'));
}


/**
 * @ngdoc directive
 * @name ngApp
 * @module ng
 *
 * @element ANY
 * @param {angular.Module} ngApp an optional application
 *   {@link angular.module module} name to load.
 *
 * @description
 *
 * Use this directive to **auto-bootstrap** an AngularJS application. The `ngApp` directive
 * designates the **root element** of the application and is typically placed near the root element
 * of the page - e.g. on the `<body>` or `<html>` tags.
 *
 * Only one AngularJS application can be auto-bootstrapped per HTML document. The first `ngApp`
 * found in the document will be used to define the root element to auto-bootstrap as an
 * application. To run multiple applications in an HTML document you must manually bootstrap them using
 * {@link angular.bootstrap} instead. AngularJS applications cannot be nested within each other.
 *
 * You can specify an **AngularJS module** to be used as the root module for the application.  This
 * module will be loaded into the {@link auto.$injector} when the application is bootstrapped and
 * should contain the application code needed or have dependencies on other modules that will
 * contain the code. See {@link angular.module} for more information.
 *
 * In the example below if the `ngApp` directive were not placed on the `html` element then the
 * document would not be compiled, the `AppController` would not be instantiated and the `{{ a+b }}`
 * would not be resolved to `3`.
 *
 * `ngApp` is the easiest, and most common, way to bootstrap an application.
 *
 <example module="ngAppDemo">
   <file name="index.html">
   <div ng-controller="ngAppDemoController">
     I can add: {{a}} + {{b}} =  {{ a+b }}
   </div>
   </file>
   <file name="script.js">
   angular.module('ngAppDemo', []).controller('ngAppDemoController', function($scope) {
     $scope.a = 1;
     $scope.b = 2;
   });
   </file>
 </example>
 *
 */
function angularInit(element, bootstrap) {
  var elements = [element],
      appElement,
      module,
      names = ['ng:app', 'ng-app', 'x-ng-app', 'data-ng-app'],
      NG_APP_CLASS_REGEXP = /\sng[:\-]app(:\s*([\w\d_]+);?)?\s/;

  function append(element) {
    element && elements.push(element);
  }

  forEach(names, function(name) {
    names[name] = true;
    append(document.getElementById(name));
    name = name.replace(':', '\\:');
    if (element.querySelectorAll) {
      forEach(element.querySelectorAll('.' + name), append);
      forEach(element.querySelectorAll('.' + name + '\\:'), append);
      forEach(element.querySelectorAll('[' + name + ']'), append);
    }
  });

  forEach(elements, function(element) {
    if (!appElement) {
      var className = ' ' + element.className + ' ';
      var match = NG_APP_CLASS_REGEXP.exec(className);
      if (match) {
        appElement = element;
        module = (match[2] || '').replace(/\s+/g, ',');
      } else {
        forEach(element.attributes, function(attr) {
          if (!appElement && names[attr.name]) {
            appElement = element;
            module = attr.value;
          }
        });
      }
    }
  });
  if (appElement) {
    bootstrap(appElement, module ? [module] : []);
  }
}

/**
 * @ngdoc function
 * @name angular.bootstrap
 * @module ng
 * @description
 * Use this function to manually start up angular application.
 *
 * See: {@link guide/bootstrap Bootstrap}
 *
 * Note that ngScenario-based end-to-end tests cannot use this function to bootstrap manually.
 * They must use {@link ng.directive:ngApp ngApp}.
 *
 * Angular will detect if it has been loaded into the browser more than once and only allow the
 * first loaded script to be bootstrapped and will report a warning to the browser console for
 * each of the subsequent scripts.   This prevents strange results in applications, where otherwise
 * multiple instances of Angular try to work on the DOM.
 *
 * <example name="multi-bootstrap" module="multi-bootstrap">
 * <file name="index.html">
 * <script src="../../../angular.js"></script>
 * <div ng-controller="BrokenTable">
 *   <table>
 *   <tr>
 *     <th ng-repeat="heading in headings">{{heading}}</th>
 *   </tr>
 *   <tr ng-repeat="filling in fillings">
 *     <td ng-repeat="fill in filling">{{fill}}</td>
 *   </tr>
 * </table>
 * </div>
 * </file>
 * <file name="controller.js">
 * var app = angular.module('multi-bootstrap', [])
 *
 * .controller('BrokenTable', function($scope) {
 *     $scope.headings = ['One', 'Two', 'Three'];
 *     $scope.fillings = [[1, 2, 3], ['A', 'B', 'C'], [7, 8, 9]];
 * });
 * </file>
 * <file name="protractor.js" type="protractor">
 * it('should only insert one table cell for each item in $scope.fillings', function() {
 *  expect(element.all(by.css('td')).count())
 *      .toBe(9);
 * });
 * </file>
 * </example>
 *
 * @param {DOMElement} element DOM element which is the root of angular application.
 * @param {Array<String|Function|Array>=} modules an array of modules to load into the application.
 *     Each item in the array should be the name of a predefined module or a (DI annotated)
 *     function that will be invoked by the injector as a run block.
 *     See: {@link angular.module modules}
 * @returns {auto.$injector} Returns the newly created injector for this app.
 */
function bootstrap(element, modules) {
  var doBootstrap = function() {
    element = jqLite(element);

    if (element.injector()) {
      var tag = (element[0] === document) ? 'document' : startingTag(element);
      throw ngMinErr('btstrpd', "App Already Bootstrapped with this Element '{0}'", tag);
    }

    modules = modules || [];
    modules.unshift(['$provide', function($provide) {
      $provide.value('$rootElement', element);
    }]);
    modules.unshift('ng');
    var injector = createInjector(modules);
    injector.invoke(['$rootScope', '$rootElement', '$compile', '$injector', '$animate',
       function(scope, element, compile, injector, animate) {
        scope.$apply(function() {
          element.data('$injector', injector);
          compile(element)(scope);
        });
      }]
    );
    return injector;
  };

  var NG_DEFER_BOOTSTRAP = /^NG_DEFER_BOOTSTRAP!/;

  if (window && !NG_DEFER_BOOTSTRAP.test(window.name)) {
    return doBootstrap();
  }

  window.name = window.name.replace(NG_DEFER_BOOTSTRAP, '');
  angular.resumeBootstrap = function(extraModules) {
    forEach(extraModules, function(module) {
      modules.push(module);
    });
    doBootstrap();
  };
}

var SNAKE_CASE_REGEXP = /[A-Z]/g;
function snake_case(name, separator){
  separator = separator || '_';
  return name.replace(SNAKE_CASE_REGEXP, function(letter, pos) {
    return (pos ? separator : '') + letter.toLowerCase();
  });
}

function bindJQuery() {
  // bind to jQuery if present;
  jQuery = window.jQuery;
  // reset to jQuery or default to us.
  if (jQuery) {
    jqLite = jQuery;
    extend(jQuery.fn, {
      scope: JQLitePrototype.scope,
      isolateScope: JQLitePrototype.isolateScope,
      controller: JQLitePrototype.controller,
      injector: JQLitePrototype.injector,
      inheritedData: JQLitePrototype.inheritedData
    });
    // Method signature:
    //     jqLitePatchJQueryRemove(name, dispatchThis, filterElems, getterIfNoArguments)
    jqLitePatchJQueryRemove('remove', true, true, false);
    jqLitePatchJQueryRemove('empty', false, false, false);
    jqLitePatchJQueryRemove('html', false, false, true);
  } else {
    jqLite = JQLite;
  }
  angular.element = jqLite;
}

/**
 * throw error if the argument is falsy.
 */
function assertArg(arg, name, reason) {
  if (!arg) {
    throw ngMinErr('areq', "Argument '{0}' is {1}", (name || '?'), (reason || "required"));
  }
  return arg;
}

function assertArgFn(arg, name, acceptArrayAnnotation) {
  if (acceptArrayAnnotation && isArray(arg)) {
      arg = arg[arg.length - 1];
  }

  assertArg(isFunction(arg), name, 'not a function, got ' +
      (arg && typeof arg == 'object' ? arg.constructor.name || 'Object' : typeof arg));
  return arg;
}

/**
 * throw error if the name given is hasOwnProperty
 * @param  {String} name    the name to test
 * @param  {String} context the context in which the name is used, such as module or directive
 */
function assertNotHasOwnProperty(name, context) {
  if (name === 'hasOwnProperty') {
    throw ngMinErr('badname', "hasOwnProperty is not a valid {0} name", context);
  }
}

/**
 * Return the value accessible from the object by path. Any undefined traversals are ignored
 * @param {Object} obj starting object
 * @param {String} path path to traverse
 * @param {boolean} [bindFnToScope=true]
 * @returns {Object} value as accessible by path
 */
//TODO(misko): this function needs to be removed
function getter(obj, path, bindFnToScope) {
  if (!path) return obj;
  var keys = path.split('.');
  var key;
  var lastInstance = obj;
  var len = keys.length;

  for (var i = 0; i < len; i++) {
    key = keys[i];
    if (obj) {
      obj = (lastInstance = obj)[key];
    }
  }
  if (!bindFnToScope && isFunction(obj)) {
    return bind(lastInstance, obj);
  }
  return obj;
}

/**
 * Return the DOM siblings between the first and last node in the given array.
 * @param {Array} array like object
 * @returns {DOMElement} object containing the elements
 */
function getBlockElements(nodes) {
  var startNode = nodes[0],
      endNode = nodes[nodes.length - 1];
  if (startNode === endNode) {
    return jqLite(startNode);
  }

  var element = startNode;
  var elements = [element];

  do {
    element = element.nextSibling;
    if (!element) break;
    elements.push(element);
  } while (element !== endNode);

  return jqLite(elements);
}

/**
 * @ngdoc type
 * @name angular.Module
 * @module ng
 * @description
 *
 * Interface for configuring angular {@link angular.module modules}.
 */

function setupModuleLoader(window) {

  var $injectorMinErr = minErr('$injector');
  var ngMinErr = minErr('ng');

  function ensure(obj, name, factory) {
    return obj[name] || (obj[name] = factory());
  }

  var angular = ensure(window, 'angular', Object);

  // We need to expose `angular.$$minErr` to modules such as `ngResource` that reference it during bootstrap
  angular.$$minErr = angular.$$minErr || minErr;

  return ensure(angular, 'module', function() {
    /** @type {Object.<string, angular.Module>} */
    var modules = {};

    /**
     * @ngdoc function
     * @name angular.module
     * @module ng
     * @description
     *
     * The `angular.module` is a global place for creating, registering and retrieving Angular
     * modules.
     * All modules (angular core or 3rd party) that should be available to an application must be
     * registered using this mechanism.
     *
     * When passed two or more arguments, a new module is created.  If passed only one argument, an
     * existing module (the name passed as the first argument to `module`) is retrieved.
     *
     *
     * # Module
     *
     * A module is a collection of services, directives, filters, and configuration information.
     * `angular.module` is used to configure the {@link auto.$injector $injector}.
     *
     * ```js
     * // Create a new module
     * var myModule = angular.module('myModule', []);
     *
     * // register a new service
     * myModule.value('appName', 'MyCoolApp');
     *
     * // configure existing services inside initialization blocks.
     * myModule.config(['$locationProvider', function($locationProvider) {
     *   // Configure existing providers
     *   $locationProvider.hashPrefix('!');
     * }]);
     * ```
     *
     * Then you can create an injector and load your modules like this:
     *
     * ```js
     * var injector = angular.injector(['ng', 'myModule'])
     * ```
     *
     * However it's more likely that you'll just use
     * {@link ng.directive:ngApp ngApp} or
     * {@link angular.bootstrap} to simplify this process for you.
     *
     * @param {!string} name The name of the module to create or retrieve.
<<<<<* @param {!Array.<string>=} requires If specified then new module is being created. If
>>>>>*        unspecified then the module is being retrieved for further configuration.
     * @param {Function} configFn Optional configuration function for the module. Same as
     *        {@link angular.Module#config Module#config()}.
     * @returns {module} new module with the {@link angular.Module} api.
     */
    return function module(name, requires, configFn) {
      var assertNotHasOwnProperty = function(name, context) {
        if (name === 'hasOwnProperty') {
          throw ngMinErr('badname', 'hasOwnProperty is not a valid {0} name', context);
        }
      };

      assertNotHasOwnProperty(name, 'module');
      if (requires && modules.hasOwnProperty(name)) {
        modules[name] = null;
      }
      return ensure(modules, name, function() {
        if (!requires) {
          throw $injectorMinErr('nomod', "Module '{0}' is not available! You either misspelled " +
             "the module name or forgot to load it. If registering a module ensure that you " +
             "specify the dependencies as the second argument.", name);
        }

        /** @type {!Array.<Array.<*>>} */
        var invokeQueue = [];

        /** @type {!Array.<Function>} */
        var runBlocks = [];

        var config = invokeLater('$injector', 'invoke');

        /** @type {angular.Module} */
        var moduleInstance = {
          // Private state
          _invokeQueue: invokeQueue,
          _runBlocks: runBlocks,

          /**
           * @ngdoc property
           * @name angular.Module#requires
           * @module ng
           * @returns {Array.<string>} List of module names which must be loaded before this module.
           * @description
           * Holds the list of modules which the injector will load before the current module is
           * loaded.
           */
          requires: requires,

          /**
           * @ngdoc property
           * @name angular.Module#name
           * @module ng
           * @returns {string} Name of the module.
           * @description
           */
          name: name,


          /**
           * @ngdoc method
           * @name angular.Module#provider
           * @module ng
           * @param {string} name service name
           * @param {Function} providerType Construction function for creating new instance of the
           *                                service.
           * @description
           * See {@link auto.$provide#provider $provide.provider()}.
           */
          provider: invokeLater('$provide', 'provider'),

          /**
           * @ngdoc method
           * @name angular.Module#factory
           * @module ng
           * @param {string} name service name
           * @param {Function} providerFunction Function for creating new instance of the service.
           * @description
           * See {@link auto.$provide#factory $provide.factory()}.
           */
          factory: invokeLater('$provide', 'factory'),

          /**
           * @ngdoc method
           * @name angular.Module#service
           * @module ng
           * @param {string} name service name
           * @param {Function} constructor A constructor function that will be instantiated.
           * @description
           * See {@link auto.$provide#service $provide.service()}.
           */
          service: invokeLater('$provide', 'service'),

          /**
           * @ngdoc method
           * @name angular.Module#value
           * @module ng
           * @param {string} name service name
           * @param {*} object Service instance object.
           * @description
           * See {@link auto.$provide#value $provide.value()}.
           */
          value: invokeLater('$provide', 'value'),

          /**
           * @ngdoc method
           * @name angular.Module#constant
           * @module ng
           * @param {string} name constant name
           * @param {*} object Constant value.
           * @description
           * Because the constant are fixed, they get applied before other provide methods.
           * See {@link auto.$provide#constant $provide.constant()}.
           */
          constant: invokeLater('$provide', 'constant', 'unshift'),

          /**
           * @ngdoc method
           * @name angular.Module#animation
           * @module ng
           * @param {string} name animation name
           * @param {Function} animationFactory Factory function for creating new instance of an
           *                                    animation.
           * @description
           *
           * **NOTE**: animations take effect only if the **ngAnimate** module is loaded.
           *
           *
           * Defines an animation hook that can be later used with
           * {@link ngAnimate.$animate $animate} service and directives that use this service.
           *
           * ```js
           * module.animation('.animation-name', function($inject1, $inject2) {
           *   return {
           *     eventName : function(element, done) {
           *       //code to run the animation
           *       //once complete, then run done()
           *       return function cancellationFunction(element) {
           *         //code to cancel the animation
           *       }
           *     }
           *   }
           * })
           * ```
           *
           * See {@link ngAnimate.$animateProvider#register $animateProvider.register()} and
           * {@link ngAnimate ngAnimate module} for more information.
           */
          animation: invokeLater('$animateProvider', 'register'),

          /**
           * @ngdoc method
           * @name angular.Module#filter
           * @module ng
           * @param {string} name Filter name.
           * @param {Function} filterFactory Factory function for creating new instance of filter.
           * @description
           * See {@link ng.$filterProvider#register $filterProvider.register()}.
           */
          filter: invokeLater('$filterProvider', 'register'),

          /**
           * @ngdoc method
           * @name angular.Module#controller
           * @module ng
           * @param {string|Object} name Controller name, or an object map of controllers where the
           *    keys are the names and the values are the constructors.
           * @param {Function} constructor Controller constructor function.
           * @description
           * See {@link ng.$controllerProvider#register $controllerProvider.register()}.
           */
          controller: invokeLater('$controllerProvider', 'register'),

          /**
           * @ngdoc method
           * @name angular.Module#directive
           * @module ng
           * @param {string|Object} name Directive name, or an object map of directives where the
           *    keys are the names and the values are the factories.
           * @param {Function} directiveFactory Factory function for creating new instance of
           * directives.
           * @description
           * See {@link ng.$compileProvider#directive $compileProvider.directive()}.
           */
          directive: invokeLater('$compileProvider', 'directive'),

          /**
           * @ngdoc method
           * @name angular.Module#config
           * @module ng
           * @param {Function} configFn Execute this function on module load. Useful for service
           *    configuration.
           * @description
           * Use this method to register work which needs to be performed on module loading.
           */
          config: config,

          /**
           * @ngdoc method
           * @name angular.Module#run
           * @module ng
           * @param {Function} initializationFn Execute this function after injector creation.
           *    Useful for application initialization.
           * @description
           * Use this method to register work which should be performed when the injector is done
           * loading all modules.
           */
          run: function(block) {
            runBlocks.push(block);
            return this;
          }
        };

        if (configFn) {
          config(configFn);
        }

        return  moduleInstance;

        /**
         * @param {string} provider
         * @param {string} method
         * @param {String=} insertMethod
         * @returns {angular.Module}
         */
        function invokeLater(provider, method, insertMethod) {
          return function() {
            invokeQueue[insertMethod || 'push']([provider, method, arguments]);
            return moduleInstance;
          };
        }
      });
    };
  });

}

/* global
    angularModule: true,
    version: true,

    $LocaleProvider,
    $CompileProvider,

    htmlAnchorDirective,
    inputDirective,
    inputDirective,
    formDirective,
    scriptDirective,
    selectDirective,
    styleDirective,
    optionDirective,
    ngBindDirective,
    ngBindHtmlDirective,
    ngBindTemplateDirective,
    ngClassDirective,
    ngClassEvenDirective,
    ngClassOddDirective,
    ngCspDirective,
    ngCloakDirective,
    ngControllerDirective,
    ngFormDirective,
    ngHideDirective,
    ngIfDirective,
    ngIncludeDirective,
    ngIncludeFillContentDirective,
    ngInitDirective,
    ngNonBindableDirective,
    ngPluralizeDirective,
    ngRepeatDirective,
    ngShowDirective,
    ngStyleDirective,
    ngSwitchDirective,
    ngSwitchWhenDirective,
    ngSwitchDefaultDirective,
    ngOptionsDirective,
    ngTranscludeDirective,
    ngModelDirective,
    ngListDirective,
    ngChangeDirective,
    requiredDirective,
    requiredDirective,
    ngValueDirective,
    ngAttributeAliasDirectives,
    ngEventDirectives,

    $AnchorScrollProvider,
    $AnimateProvider,
    $BrowserProvider,
    $CacheFactoryProvider,
    $ControllerProvider,
    $DocumentProvider,
    $ExceptionHandlerProvider,
    $FilterProvider,
    $InterpolateProvider,
    $IntervalProvider,
    $HttpProvider,
    $HttpBackendProvider,
    $LocationProvider,
    $LogProvider,
    $ParseProvider,
    $RootScopeProvider,
    $QProvider,
    $$SanitizeUriProvider,
    $SceProvider,
    $SceDelegateProvider,
    $SnifferProvider,
    $TemplateCacheProvider,
    $TimeoutProvider,
    $$RAFProvider,
    $$AsyncCallbackProvider,
    $WindowProvider
*/


/**
 * @ngdoc object
 * @name angular.version
 * @module ng
 * @description
 * An object that contains information about the current AngularJS version. This object has the
 * following properties:
 *
 * - `full` – `{string}` – Full version string, such as "0.9.18".
 * - `major` – `{number}` – Major version number, such as "0".
 * - `minor` – `{number}` – Minor version number, such as "9".
 * - `dot` – `{number}` – Dot version number, such as "18".
 * - `codeName` – `{string}` – Code name of the release, such as "jiggling-armfat".
 */
var version = {
  full: '1.2.16',    // all of these placeholder strings will be replaced by grunt's
  major: 1,    // package task
  minor: 2,
  dot: 16,
  codeName: 'badger-enumeration'
};


function publishExternalAPI(angular){
  extend(angular, {
    'bootstrap': bootstrap,
    'copy': copy,
    'extend': extend,
    'equals': equals,
    'element': jqLite,
    'forEach': forEach,
    'injector': createInjector,
    'noop':noop,
    'bind':bind,
    'toJson': toJson,
    'fromJson': fromJson,
    'identity':identity,
    'isUndefined': isUndefined,
    'isDefined': isDefined,
    'isString': isString,
    'isFunction': isFunction,
    'isObject': isObject,
    'isNumber': isNumber,
    'isElement': isElement,
    'isArray': isArray,
    'version': version,
    'isDate': isDate,
    'lowercase': lowercase,
    'uppercase': uppercase,
    'callbacks': {counter: 0},
    '$$minErr': minErr,
    '$$csp': csp
  });

  angularModule = setupModuleLoader(window);
  try {
    angularModule('ngLocale');
  } catch (e) {
    angularModule('ngLocale', []).provider('$locale', $LocaleProvider);
  }

  angularModule('ng', ['ngLocale'], ['$provide',
    function ngModule($provide) {
      // $$sanitizeUriProvider needs to be before $compileProvider as it is used by it.
      $provide.provider({
        $$sanitizeUri: $$SanitizeUriProvider
      });
      $provide.provider('$compile', $CompileProvider).
        directive({
            a: htmlAnchorDirective,
            input: inputDirective,
            textarea: inputDirective,
            form: formDirective,
            script: scriptDirective,
            select: selectDirective,
            style: styleDirective,
            option: optionDirective,
            ngBind: ngBindDirective,
            ngBindHtml: ngBindHtmlDirective,
            ngBindTemplate: ngBindTemplateDirective,
            ngClass: ngClassDirective,
            ngClassEven: ngClassEvenDirective,
            ngClassOdd: ngClassOddDirective,
            ngCloak: ngCloakDirective,
            ngController: ngControllerDirective,
            ngForm: ngFormDirective,
            ngHide: ngHideDirective,
            ngIf: ngIfDirective,
            ngInclude: ngIncludeDirective,
            ngInit: ngInitDirective,
            ngNonBindable: ngNonBindableDirective,
            ngPluralize: ngPluralizeDirective,
            ngRepeat: ngRepeatDirective,
            ngShow: ngShowDirective,
            ngStyle: ngStyleDirective,
            ngSwitch: ngSwitchDirective,
            ngSwitchWhen: ngSwitchWhenDirective,
            ngSwitchDefault: ngSwitchDefaultDirective,
            ngOptions: ngOptionsDirective,
            ngTransclude: ngTranscludeDirective,
            ngModel: ngModelDirective,
            ngList: ngListDirective,
            ngChange: ngChangeDirective,
            required: requiredDirective,
            ngRequired: requiredDirective,
            ngValue: ngValueDirective
        }).
        directive({
          ngInclude: ngIncludeFillContentDirective
        }).
        directive(ngAttributeAliasDirectives).
        directive(ngEventDirectives);
      $provide.provider({
        $anchorScroll: $AnchorScrollProvider,
        $animate: $AnimateProvider,
        $browser: $BrowserProvider,
        $cacheFactory: $CacheFactoryProvider,
        $controller: $ControllerProvider,
        $document: $DocumentProvider,
        $exceptionHandler: $ExceptionHandlerProvider,
        $filter: $FilterProvider,
        $interpolate: $InterpolateProvider,
        $interval: $IntervalProvider,
        $http: $HttpProvider,
        $httpBackend: $HttpBackendProvider,
        $location: $LocationProvider,
        $log: $LogProvider,
        $parse: $ParseProvider,
        $rootScope: $RootScopeProvider,
        $q: $QProvider,
        $sce: $SceProvider,
        $sceDelegate: $SceDelegateProvider,
        $sniffer: $SnifferProvider,
        $templateCache: $TemplateCacheProvider,
        $timeout: $TimeoutProvider,
        $window: $WindowProvider,
        $$rAF: $$RAFProvider,
        $$asyncCallback : $$AsyncCallbackProvider
      });
    }
  ]);
}

/* global

  -JQLitePrototype,
  -addEventListenerFn,
  -removeEventListenerFn,
  -BOOLEAN_ATTR
*/

//////////////////////////////////
//JQLite
//////////////////////////////////

/**
 * @ngdoc function
 * @name angular.element
 * @module ng
 * @function
 *
 * @description
 * Wraps a raw DOM element or HTML string as a [jQuery](http://jquery.com) element.
 *
 * If jQuery is available, `angular.element` is an alias for the
 * [jQuery](http://api.jquery.com/jQuery/) function. If jQuery is not available, `angular.element`
 * delegates to Angular's built-in subset of jQuery, called "jQuery lite" or "jqLite."
 *
 * <div class="alert alert-success">jqLite is a tiny, API-compatible subset of jQuery that allows
 * Angular to manipulate the DOM in a cross-browser compatible way. **jqLite** implements only the most
 * commonly needed functionality with the goal of having a very small footprint.</div>
 *
 * To use jQuery, simply load it before `DOMContentLoaded` event fired.
 *
 * <div class="alert">**Note:** all element references in Angular are always wrapped with jQuery or
 * jqLite; they are never raw DOM references.</div>
 *
 * ## Angular's jqLite
 * jqLite provides only the following jQuery methods:
 *
 * - [`addClass()`](http://api.jquery.com/addClass/)
 * - [`after()`](http://api.jquery.com/after/)
 * - [`append()`](http://api.jquery.com/append/)
 * - [`attr()`](http://api.jquery.com/attr/)
 * - [`bind()`](http://api.jquery.com/bind/) - Does not support namespaces, selectors or eventData
 * - [`children()`](http://api.jquery.com/children/) - Does not support selectors
 * - [`clone()`](http://api.jquery.com/clone/)
 * - [`contents()`](http://api.jquery.com/contents/)
 * - [`css()`](http://api.jquery.com/css/)
 * - [`data()`](http://api.jquery.com/data/)
 * - [`empty()`](http://api.jquery.com/empty/)
 * - [`eq()`](http://api.jquery.com/eq/)
 * - [`find()`](http://api.jquery.com/find/) - Limited to lookups by tag name
 * - [`hasClass()`](http://api.jquery.com/hasClass/)
 * - [`html()`](http://api.jquery.com/html/)
 * - [`next()`](http://api.jquery.com/next/) - Does not support selectors
 * - [`on()`](http://api.jquery.com/on/) - Does not support namespaces, selectors or eventData
 * - [`off()`](http://api.jquery.com/off/) - Does not support namespaces or selectors
 * - [`one()`](http://api.jquery.com/one/) - Does not support namespaces or selectors
 * - [`parent()`](http://api.jquery.com/parent/) - Does not support selectors
 * - [`prepend()`](http://api.jquery.com/prepend/)
 * - [`prop()`](http://api.jquery.com/prop/)
 * - [`ready()`](http://api.jquery.com/ready/)
 * - [`remove()`](http://api.jquery.com/remove/)
 * - [`removeAttr()`](http://api.jquery.com/removeAttr/)
 * - [`removeClass()`](http://api.jquery.com/removeClass/)
 * - [`removeData()`](http://api.jquery.com/removeData/)
 * - [`replaceWith()`](http://api.jquery.com/replaceWith/)
 * - [`text()`](http://api.jquery.com/text/)
 * - [`toggleClass()`](http://api.jquery.com/toggleClass/)
 * - [`triggerHandler()`](http://api.jquery.com/triggerHandler/) - Passes a dummy event object to handlers.
 * - [`unbind()`](http://api.jquery.com/unbind/) - Does not support namespaces
 * - [`val()`](http://api.jquery.com/val/)
 * - [`wrap()`](http://api.jquery.com/wrap/)
 *
 * ## jQuery/jqLite Extras
 * Angular also provides the following additional methods and events to both jQuery and jqLite:
 *
 * ### Events
 * - `$destroy` - AngularJS intercepts all jqLite/jQuery's DOM destruction apis and fires this event
 *    on all DOM nodes being removed.  This can be used to clean up any 3rd party bindings to the DOM
 *    element before it is removed.
 *
 * ### Methods
 * - `controller(name)` - retrieves the controller of the current element or its parent. By default
 *   retrieves controller associated with the `ngController` directive. If `name` is provided as
 *   camelCase directive name, then the controller for this directive will be retrieved (e.g.
 *   `'ngModel'`).
 * - `injector()` - retrieves the injector of the current element or its parent.
 * - `scope()` - retrieves the {@link ng.$rootScope.Scope scope} of the current
 *   element or its parent.
 * - `isolateScope()` - retrieves an isolate {@link ng.$rootScope.Scope scope} if one is attached directly to the
 *   current element. This getter should be used only on elements that contain a directive which starts a new isolate
 *   scope. Calling `scope()` on this element always returns the original non-isolate scope.
 * - `inheritedData()` - same as `data()`, but walks up the DOM until a value is found or the top
 *   parent element is reached.
 *
 * @param {string|DOMElement} element HTML string or DOMElement to be wrapped into jQuery.
 * @returns {Object} jQuery object.
 */

var jqCache = JQLite.cache = {},
    jqName = JQLite.expando = 'ng-' + new Date().getTime(),
    jqId = 1,
    addEventListenerFn = (window.document.addEventListener
      ? function(element, type, fn) {element.addEventListener(type, fn, false);}
      : function(element, type, fn) {element.attachEvent('on' + type, fn);}),
    removeEventListenerFn = (window.document.removeEventListener
      ? function(element, type, fn) {element.removeEventListener(type, fn, false); }
      : function(element, type, fn) {element.detachEvent('on' + type, fn); });

/*
 * !!! This is an undocumented "private" function !!!
 */
var jqData = JQLite._data = function(node) {
  //jQuery always returns an object on cache miss
  return this.cache[node[this.expando]] || {};
};

function jqNextId() { return ++jqId; }


var SPECIAL_CHARS_REGEXP = /([\:\-\_]+(.))/g;
var MOZ_HACK_REGEXP = /^moz([A-Z])/;
var jqLiteMinErr = minErr('jqLite');

/**
 * Converts snake_case to camelCase.
 * Also there is special case for Moz prefix starting with upper case letter.
 * @param name Name to normalize
 */
function camelCase(name) {
  return name.
    replace(SPECIAL_CHARS_REGEXP, function(_, separator, letter, offset) {
      return offset ? letter.toUpperCase() : letter;
    }).
    replace(MOZ_HACK_REGEXP, 'Moz$1');
}

/////////////////////////////////////////////
// jQuery mutation patch
//
// In conjunction with bindJQuery intercepts all jQuery's DOM destruction apis and fires a
// $destroy event on all DOM nodes being removed.
//
/////////////////////////////////////////////

function jqLitePatchJQueryRemove(name, dispatchThis, filterElems, getterIfNoArguments) {
  var originalJqFn = jQuery.fn[name];
  originalJqFn = originalJqFn.$original || originalJqFn;
  removePatch.$original = originalJqFn;
  jQuery.fn[name] = removePatch;

  function removePatch(param) {
    // jshint -W040
    var list = filterElems && param ? [this.filter(param)] : [this],
        fireEvent = dispatchThis,
        set, setIndex, setLength,
        element, childIndex, childLength, children;

    if (!getterIfNoArguments || param != null) {
      while(list.length) {
        set = list.shift();
        for(setIndex = 0, setLength = set.length; setIndex < setLength; setIndex++) {
          element = jqLite(set[setIndex]);
          if (fireEvent) {
            element.triggerHandler('$destroy');
          } else {
            fireEvent = !fireEvent;
          }
          for(childIndex = 0, childLength = (children = element.children()).length;
              childIndex < childLength;
              childIndex++) {
            list.push(jQuery(children[childIndex]));
          }
        }
      }
    }
    return originalJqFn.apply(this, arguments);
  }
}

var SINGLE_TAG_REGEXP = /^<(\w+)\s*\/?>(?:<\/\1>|)$/;
var HTML_REGEXP = /<|&#?\w+;/;
var TAG_NAME_REGEXP = /<([\w:]+)/;
var XHTML_TAG_REGEXP = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi;

var wrapMap = {
  'option': [1, '<select multiple="multiple">', '</select>'],

  'thead': [1, '<table>', '</table>'],
  'col': [2, '<table><colgroup>', '</colgroup></table>'],
  'tr': [2, '<table><tbody>', '</tbody></table>'],
  'td': [3, '<table><tbody><tr>', '</tr></tbody></table>'],
  '_default': [0, "", ""]
};

wrapMap.optgroup = wrapMap.option;
wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
wrapMap.th = wrapMap.td;

function jqLiteIsTextNode(html) {
  return !HTML_REGEXP.test(html);
}

function jqLiteBuildFragment(html, context) {
  var elem, tmp, tag, wrap,
      fragment = context.createDocumentFragment(),
      nodes = [], i, j, jj;

  if (jqLiteIsTextNode(html)) {
    // Convert non-html into a text node
    nodes.push(context.createTextNode(html));
  } else {
    tmp = fragment.appendChild(context.createElement('div'));
    // Convert html into DOM nodes
    tag = (TAG_NAME_REGEXP.exec(html) || ["", ""])[1].toLowerCase();
    wrap = wrapMap[tag] || wrapMap._default;
    tmp.innerHTML = '<div>&#160;</div>' +
      wrap[1] + html.replace(XHTML_TAG_REGEXP, "<$1></$2>") + wrap[2];
    tmp.removeChild(tmp.firstChild);

    // Descend through wrappers to the right content
    i = wrap[0];
    while (i--) {
      tmp = tmp.lastChild;
    }

    for (j=0, jj=tmp.childNodes.length; j<jj; ++j) nodes.push(tmp.childNodes[j]);

    tmp = fragment.firstChild;
    tmp.textContent = "";
  }

  // Remove wrapper from fragment
  fragment.textContent = "";
  fragment.innerHTML = ""; // Clear inner HTML
  return nodes;
}

function jqLiteParseHTML(html, context) {
  context = context || document;
  var parsed;

  if ((parsed = SINGLE_TAG_REGEXP.exec(html))) {
    return [context.createElement(parsed[1])];
  }

  return jqLiteBuildFragment(html, context);
}

/////////////////////////////////////////////
function JQLite(element) {
  if (element instanceof JQLite) {
    return element;
  }
  if (isString(element)) {
    element = trim(element);
  }
  if (!(this instanceof JQLite)) {
    if (isString(element) && element.charAt(0) != '<') {
      throw jqLiteMinErr('nosel', 'Looking up elements via selectors is not supported by jqLite! See: http://docs.angularjs.org/api/angular.element');
    }
    return new JQLite(element);
  }

  if (isString(element)) {
    jqLiteAddNodes(this, jqLiteParseHTML(element));
    var fragment = jqLite(document.createDocumentFragment());
    fragment.append(this);
  } else {
    jqLiteAddNodes(this, element);
  }
}

function jqLiteClone(element) {
  return element.cloneNode(true);
}

function jqLiteDealoc(element){
  jqLiteRemoveData(element);
  for ( var i = 0, children = element.childNodes || []; i < children.length; i++) {
    jqLiteDealoc(children[i]);
  }
}

function jqLiteOff(element, type, fn, unsupported) {
  if (isDefined(unsupported)) throw jqLiteMinErr('offargs', 'jqLite#off() does not support the `selector` argument');

  var events = jqLiteExpandoStore(element, 'events'),
      handle = jqLiteExpandoStore(element, 'handle');

  if (!handle) return; //no listeners registered

  if (isUndefined(type)) {
    forEach(events, function(eventHandler, type) {
      removeEventListenerFn(element, type, eventHandler);
      delete events[type];
    });
  } else {
    forEach(type.split(' '), function(type) {
      if (isUndefined(fn)) {
        removeEventListenerFn(element, type, events[type]);
        delete events[type];
      } else {
        arrayRemove(events[type] || [], fn);
      }
    });
  }
}

function jqLiteRemoveData(element, name) {
  var expandoId = element[jqName],
      expandoStore = jqCache[expandoId];

  if (expandoStore) {
    if (name) {
      delete jqCache[expandoId].data[name];
      return;
    }

    if (expandoStore.handle) {
      expandoStore.events.$destroy && expandoStore.handle({}, '$destroy');
      jqLiteOff(element);
    }
    delete jqCache[expandoId];
    element[jqName] = undefined; // ie does not allow deletion of attributes on elements.
  }
}

function jqLiteExpandoStore(element, key, value) {
  var expandoId = element[jqName],
      expandoStore = jqCache[expandoId || -1];

  if (isDefined(value)) {
    if (!expandoStore) {
      element[jqName] = expandoId = jqNextId();
      expandoStore = jqCache[expandoId] = {};
    }
    expandoStore[key] = value;
  } else {
    return expandoStore && expandoStore[key];
  }
}

function jqLiteData(element, key, value) {
  var data = jqLiteExpandoStore(element, 'data'),
      isSetter = isDefined(value),
      keyDefined = !isSetter && isDefined(key),
      isSimpleGetter = keyDefined && !isObject(key);

  if (!data && !isSimpleGetter) {
    jqLiteExpandoStore(element, 'data', data = {});
  }

  if (isSetter) {
    data[key] = value;
  } else {
    if (keyDefined) {
      if (isSimpleGetter) {
        // don't create data in this case.
        return data && data[key];
      } else {
        extend(data, key);
      }
    } else {
      return data;
    }
  }
}

function jqLiteHasClass(element, selector) {
  if (!element.getAttribute) return false;
  return ((" " + (element.getAttribute('class') || '') + " ").replace(/[\n\t]/g, " ").
      indexOf( " " + selector + " " ) > -1);
}

function jqLiteRemoveClass(element, cssClasses) {
  if (cssClasses && element.setAttribute) {
    forEach(cssClasses.split(' '), function(cssClass) {
      element.setAttribute('class', trim(
          (" " + (element.getAttribute('class') || '') + " ")
          .replace(/[\n\t]/g, " ")
          .replace(" " + trim(cssClass) + " ", " "))
      );
    });
  }
}

function jqLiteAddClass(element, cssClasses) {
  if (cssClasses && element.setAttribute) {
    var existingClasses = (' ' + (element.getAttribute('class') || '') + ' ')
                            .replace(/[\n\t]/g, " ");

    forEach(cssClasses.split(' '), function(cssClass) {
      cssClass = trim(cssClass);
      if (existingClasses.indexOf(' ' + cssClass + ' ') === -1) {
        existingClasses += cssClass + ' ';
      }
    });

    element.setAttribute('class', trim(existingClasses));
  }
}

function jqLiteAddNodes(root, elements) {
  if (elements) {
    elements = (!elements.nodeName && isDefined(elements.length) && !isWindow(elements))
      ? elements
      : [ elements ];
    for(var i=0; i < elements.length; i++) {
      root.push(elements[i]);
    }
  }
}

function jqLiteController(element, name) {
  return jqLiteInheritedData(element, '$' + (name || 'ngController' ) + 'Controller');
}

function jqLiteInheritedData(element, name, value) {
  element = jqLite(element);

  // if element is the document object work with the html element instead
  // this makes $(document).scope() possible
  if(element[0].nodeType == 9) {
    element = element.find('html');
  }
  var names = isArray(name) ? name : [name];

  while (element.length) {
    var node = element[0];
    for (var i = 0, ii = names.length; i < ii; i++) {
      if ((value = element.data(names[i])) !== undefined) return value;
    }

    // If dealing with a document fragment node with a host element, and no parent, use the host
    // element as the parent. This enables directives within a Shadow DOM or polyfilled Shadow DOM
    // to lookup parent controllers.
    element = jqLite(node.parentNode || (node.nodeType === 11 && node.host));
  }
}

function jqLiteEmpty(element) {
  for (var i = 0, childNodes = element.childNodes; i < childNodes.length; i++) {
    jqLiteDealoc(childNodes[i]);
  }
  while (element.firstChild) {
    element.removeChild(element.firstChild);
  }
}

//////////////////////////////////////////
// Functions which are declared directly.
//////////////////////////////////////////
var JQLitePrototype = JQLite.prototype = {
  ready: function(fn) {
    var fired = false;

    function trigger() {
      if (fired) return;
      fired = true;
      fn();
    }

    // check if document already is loaded
    if (document.readyState === 'complete'){
      setTimeout(trigger);
    } else {
      this.on('DOMContentLoaded', trigger); // works for modern browsers and IE9
      // we can not use jqLite since we are not done loading and jQuery could be loaded later.
      // jshint -W064
      JQLite(window).on('load', trigger); // fallback to window.onload for others
      // jshint +W064
    }
  },
  toString: function() {
    var value = [];
    forEach(this, function(e){ value.push('' + e);});
    return '[' + value.join(', ') + ']';
  },

  eq: function(index) {
      return (index >= 0) ? jqLite(this[index]) : jqLite(this[this.length + index]);
  },

  length: 0,
  push: push,
  sort: [].sort,
  splice: [].splice
};

//////////////////////////////////////////
// Functions iterating getter/setters.
// these functions return self on setter and
// value on get.
//////////////////////////////////////////
var BOOLEAN_ATTR = {};
forEach('multiple,selected,checked,disabled,readOnly,required,open'.split(','), function(value) {
  BOOLEAN_ATTR[lowercase(value)] = value;
});
var BOOLEAN_ELEMENTS = {};
forEach('input,select,option,textarea,button,form,details'.split(','), function(value) {
  BOOLEAN_ELEMENTS[uppercase(value)] = true;
});

function getBooleanAttrName(element, name) {
  // check dom last since we will most likely fail on name
  var booleanAttr = BOOLEAN_ATTR[name.toLowerCase()];

  // booleanAttr is here twice to minimize DOM access
  return booleanAttr && BOOLEAN_ELEMENTS[element.nodeName] && booleanAttr;
}

forEach({
  data: jqLiteData,
  inheritedData: jqLiteInheritedData,

  scope: function(element) {
    // Can't use jqLiteData here directly so we stay compatible with jQuery!
    return jqLite(element).data('$scope') || jqLiteInheritedData(element.parentNode || element, ['$isolateScope', '$scope']);
  },

  isolateScope: function(element) {
    // Can't use jqLiteData here directly so we stay compatible with jQuery!
    return jqLite(element).data('$isolateScope') || jqLite(element).data('$isolateScopeNoTemplate');
  },

  controller: jqLiteController,

  injector: function(element) {
    return jqLiteInheritedData(element, '$injector');
  },

  removeAttr: function(element,name) {
    element.removeAttribute(name);
  },

  hasClass: jqLiteHasClass,

  css: function(element, name, value) {
    name = camelCase(name);

    if (isDefined(value)) {
      element.style[name] = value;
    } else {
      var val;

      if (msie <= 8) {
        // this is some IE specific weirdness that jQuery 1.6.4 does not sure why
        val = element.currentStyle && element.currentStyle[name];
        if (val === '') val = 'auto';
      }

      val = val || element.style[name];

      if (msie <= 8) {
        // jquery weirdness :-/
        val = (val === '') ? undefined : val;
      }

      return  val;
    }
  },

  attr: function(element, name, value){
    var lowercasedName = lowercase(name);
    if (BOOLEAN_ATTR[lowercasedName]) {
      if (isDefined(value)) {
        if (!!value) {
          element[name] = true;
          element.setAttribute(name, lowercasedName);
        } else {
          element[name] = false;
          element.removeAttribute(lowercasedName);
        }
      } else {
        return (element[name] ||
                 (element.attributes.getNamedItem(name)|| noop).specified)
               ? lowercasedName
               : undefined;
      }
    } else if (isDefined(value)) {
      element.setAttribute(name, value);
    } else if (element.getAttribute) {
      // the extra argument "2" is to get the right thing for a.href in IE, see jQuery code
      // some elements (e.g. Document) don't have get attribute, so return undefined
      var ret = element.getAttribute(name, 2);
      // normalize non-existing attributes to undefined (as jQuery)
      return ret === null ? undefined : ret;
    }
  },

  prop: function(element, name, value) {
    if (isDefined(value)) {
      element[name] = value;
    } else {
      return element[name];
    }
  },

  text: (function() {
    var NODE_TYPE_TEXT_PROPERTY = [];
    if (msie < 9) {
      NODE_TYPE_TEXT_PROPERTY[1] = 'innerText';    /** Element **/
      NODE_TYPE_TEXT_PROPERTY[3] = 'nodeValue';    /** Text **/
    } else {
      NODE_TYPE_TEXT_PROPERTY[1] =                 /** Element **/
      NODE_TYPE_TEXT_PROPERTY[3] = 'textContent';  /** Text **/
    }
    getText.$dv = '';
    return getText;

    function getText(element, value) {
      var textProp = NODE_TYPE_TEXT_PROPERTY[element.nodeType];
      if (isUndefined(value)) {
        return textProp ? element[textProp] : '';
      }
      element[textProp] = value;
    }
  })(),

  val: function(element, value) {
    if (isUndefined(value)) {
      if (nodeName_(element) === 'SELECT' && element.multiple) {
        var result = [];
        forEach(element.options, function (option) {
          if (option.selected) {
            result.push(option.value || option.text);
          }
        });
        return result.length === 0 ? null : result;
      }
      return element.value;
    }
    element.value = value;
  },

  html: function(element, value) {
    if (isUndefined(value)) {
      return element.innerHTML;
    }
    for (var i = 0, childNodes = element.childNodes; i < childNodes.length; i++) {
      jqLiteDealoc(childNodes[i]);
    }
    element.innerHTML = value;
  },

  empty: jqLiteEmpty
}, function(fn, name){
  /**
   * Properties: writes return selection, reads return first value
   */
  JQLite.prototype[name] = function(arg1, arg2) {
    var i, key;

    // jqLiteHasClass has only two arguments, but is a getter-only fn, so we need to special-case it
    // in a way that survives minification.
    // jqLiteEmpty takes no arguments but is a setter.
    if (fn !== jqLiteEmpty &&
        (((fn.length == 2 && (fn !== jqLiteHasClass && fn !== jqLiteController)) ? arg1 : arg2) === undefined)) {
      if (isObject(arg1)) {

        // we are a write, but the object properties are the key/values
        for (i = 0; i < this.length; i++) {
          if (fn === jqLiteData) {
            // data() takes the whole object in jQuery
            fn(this[i], arg1);
          } else {
            for (key in arg1) {
              fn(this[i], key, arg1[key]);
            }
          }
        }
        // return self for chaining
        return this;
      } else {
        // we are a read, so read the first child.
        var value = fn.$dv;
        // Only if we have $dv do we iterate over all, otherwise it is just the first element.
        var jj = (value === undefined) ? Math.min(this.length, 1) : this.length;
        for (var j = 0; j < jj; j++) {
          var nodeValue = fn(this[j], arg1, arg2);
          value = value ? value + nodeValue : nodeValue;
        }
        return value;
      }
    } else {
      // we are a write, so apply to all children
      for (i = 0; i < this.length; i++) {
        fn(this[i], arg1, arg2);
      }
      // return self for chaining
      return this;
    }
  };
});

function createEventHandler(element, events) {
  var eventHandler = function (event, type) {
    if (!event.preventDefault) {
      event.preventDefault = function() {
        event.returnValue = false; //ie
      };
    }

    if (!event.stopPropagation) {
      event.stopPropagation = function() {
        event.cancelBubble = true; //ie
      };
    }

    if (!event.target) {
      event.target = event.srcElement || document;
    }

    if (isUndefined(event.defaultPrevented)) {
      var prevent = event.preventDefault;
      event.preventDefault = function() {
        event.defaultPrevented = true;
        prevent.call(event);
      };
      event.defaultPrevented = false;
    }

    event.isDefaultPrevented = function() {
      return event.defaultPrevented || event.returnValue === false;
    };

    // Copy event handlers in case event handlers array is modified during execution.
    var eventHandlersCopy = shallowCopy(events[type || event.type] || []);

    forEach(eventHandlersCopy, function(fn) {
      fn.call(element, event);
    });

    // Remove monkey-patched methods (IE),
    // as they would cause memory leaks in IE8.
    if (msie <= 8) {
      // IE7/8 does not allow to delete property on native object
      event.preventDefault = null;
      event.stopPropagation = null;
      event.isDefaultPrevented = null;
    } else {
      // It shouldn't affect normal browsers (native methods are defined on prototype).
      delete event.preventDefault;
      delete event.stopPropagation;
      delete event.isDefaultPrevented;
    }
  };
  eventHandler.elem = element;
  return eventHandler;
}

//////////////////////////////////////////
// Functions iterating traversal.
// These functions chain results into a single
// selector.
//////////////////////////////////////////
forEach({
  removeData: jqLiteRemoveData,

  dealoc: jqLiteDealoc,

  on: function onFn(element, type, fn, unsupported){
    if (isDefined(unsupported)) throw jqLiteMinErr('onargs', 'jqLite#on() does not support the `selector` or `eventData` parameters');

    var events = jqLiteExpandoStore(element, 'events'),
        handle = jqLiteExpandoStore(element, 'handle');

    if (!events) jqLiteExpandoStore(element, 'events', events = {});
    if (!handle) jqLiteExpandoStore(element, 'handle', handle = createEventHandler(element, events));

    forEach(type.split(' '), function(type){
      var eventFns = events[type];

      if (!eventFns) {
        if (type == 'mouseenter' || type == 'mouseleave') {
          var contains = document.body.contains || document.body.compareDocumentPosition ?
          function( a, b ) {
            // jshint bitwise: false
            var adown = a.nodeType === 9 ? a.documentElement : a,
            bup = b && b.parentNode;
            return a === bup || !!( bup && bup.nodeType === 1 && (
              adown.contains ?
              adown.contains( bup ) :
              a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
              ));
            } :
            function( a, b ) {
              if ( b ) {
                while ( (b = b.parentNode) ) {
                  if ( b === a ) {
                    return true;
                  }
                }
              }
              return false;
            };

          events[type] = [];

          // Refer to jQuery's implementation of mouseenter & mouseleave
          // Read about mouseenter and mouseleave:
          // http://www.quirksmode.org/js/events_mouse.html#link8
          var eventmap = { mouseleave : "mouseout", mouseenter : "mouseover"};

          onFn(element, eventmap[type], function(event) {
            var target = this, related = event.relatedTarget;
            // For mousenter/leave call the handler if related is outside the target.
            // NB: No relatedTarget if the mouse left/entered the browser window
            if ( !related || (related !== target && !contains(target, related)) ){
              handle(event, type);
            }
          });

        } else {
          addEventListenerFn(element, type, handle);
          events[type] = [];
        }
        eventFns = events[type];
      }
      eventFns.push(fn);
    });
  },

  off: jqLiteOff,

  one: function(element, type, fn) {
    element = jqLite(element);

    //add the listener twice so that when it is called
    //you can remove the original function and still be
    //able to call element.off(ev, fn) normally
    element.on(type, function onFn() {
      element.off(type, fn);
      element.off(type, onFn);
    });
    element.on(type, fn);
  },

  replaceWith: function(element, replaceNode) {
    var index, parent = element.parentNode;
    jqLiteDealoc(element);
    forEach(new JQLite(replaceNode), function(node){
      if (index) {
        parent.insertBefore(node, index.nextSibling);
      } else {
        parent.replaceChild(node, element);
      }
      index = node;
    });
  },

  children: function(element) {
    var children = [];
    forEach(element.childNodes, function(element){
      if (element.nodeType === 1)
        children.push(element);
    });
    return children;
  },

  contents: function(element) {
    return element.contentDocument || element.childNodes || [];
  },

  append: function(element, node) {
    forEach(new JQLite(node), function(child){
      if (element.nodeType === 1 || element.nodeType === 11) {
        element.appendChild(child);
      }
    });
  },

  prepend: function(element, node) {
    if (element.nodeType === 1) {
      var index = element.firstChild;
      forEach(new JQLite(node), function(child){
        element.insertBefore(child, index);
      });
    }
  },

  wrap: function(element, wrapNode) {
    wrapNode = jqLite(wrapNode)[0];
    var parent = element.parentNode;
    if (parent) {
      parent.replaceChild(wrapNode, element);
    }
    wrapNode.appendChild(element);
  },

  remove: function(element) {
    jqLiteDealoc(element);
    var parent = element.parentNode;
    if (parent) parent.removeChild(element);
  },

  after: function(element, newElement) {
    var index = element, parent = element.parentNode;
    forEach(new JQLite(newElement), function(node){
      parent.insertBefore(node, index.nextSibling);
      index = node;
    });
  },

  addClass: jqLiteAddClass,
  removeClass: jqLiteRemoveClass,

  toggleClass: function(element, selector, condition) {
    if (selector) {
      forEach(selector.split(' '), function(className){
        var classCondition = condition;
        if (isUndefined(classCondition)) {
          classCondition = !jqLiteHasClass(element, className);
        }
        (classCondition ? jqLiteAddClass : jqLiteRemoveClass)(element, className);
      });
    }
  },

  parent: function(element) {
    var parent = element.parentNode;
    return parent && parent.nodeType !== 11 ? parent : null;
  },

  next: function(element) {
    if (element.nextElementSibling) {
      return element.nextElementSibling;
    }

    // IE8 doesn't have nextElementSibling
    var elm = element.nextSibling;
    while (elm != null && elm.nodeType !== 1) {
      elm = elm.nextSibling;
    }
    return elm;
  },

  find: function(element, selector) {
    if (element.getElementsByTagName) {
      return element.getElementsByTagName(selector);
    } else {
      return [];
    }
  },

  clone: jqLiteClone,

  triggerHandler: function(element, eventName, eventData) {
    var eventFns = (jqLiteExpandoStore(element, 'events') || {})[eventName];

    eventData = eventData || [];

    var event = [{
      preventDefault: noop,
      stopPropagation: noop
    }];

    forEach(eventFns, function(fn) {
      fn.apply(element, event.concat(eventData));
    });
  }
}, function(fn, name){
  /**
   * chaining functions
   */
  JQLite.prototype[name] = function(arg1, arg2, arg3) {
    var value;
    for(var i=0; i < this.length; i++) {
      if (isUndefined(value)) {
        value = fn(this[i], arg1, arg2, arg3);
        if (isDefined(value)) {
          // any function which returns a value needs to be wrapped
          value = jqLite(value);
        }
      } else {
        jqLiteAddNodes(value, fn(this[i], arg1, arg2, arg3));
      }
    }
    return isDefined(value) ? value : this;
  };

  // bind legacy bind/unbind to on/off
  JQLite.prototype.bind = JQLite.prototype.on;
  JQLite.prototype.unbind = JQLite.prototype.off;
});

/**
 * Computes a hash of an 'obj'.
 * Hash of a:
 *  string is string
 *  number is number as string
 *  object is either result of calling $$hashKey function on the object or uniquely generated id,
 *         that is also assigned to the $$hashKey property of the object.
 *
 * @param obj
 * @returns {string} hash string such that the same input will have the same hash string.
 *         The resulting string key is in 'type:hashKey' format.
 */
function hashKey(obj) {
  var objType = typeof obj,
      key;

  if (objType == 'object' && obj !== null) {
    if (typeof (key = obj.$$hashKey) == 'function') {
      // must invoke on object to keep the right this
      key = obj.$$hashKey();
    } else if (key === undefined) {
      key = obj.$$hashKey = nextUid();
    }
  } else {
    key = obj;
  }

  return objType + ':' + key;
}

/**
 * HashMap which can use objects as keys
 */
function HashMap(array){
  forEach(array, this.put, this);
}
HashMap.prototype = {
  /**
   * Store key value pair
   * @param key key to store can be any type
   * @param value value to store can be any type
   */
  put: function(key, value) {
    this[hashKey(key)] = value;
  },

  /**
   * @param key
   * @returns {Object} the value for the key
   */
  get: function(key) {
    return this[hashKey(key)];
  },

  /**
   * Remove the key/value pair
   * @param key
   */
  remove: function(key) {
    var value = this[key = hashKey(key)];
    delete this[key];
    return value;
  }
};

/**
 * @ngdoc function
 * @module ng
 * @name angular.injector
 * @function
 *
 * @description
 * Creates an injector function that can be used for retrieving services as well as for
 * dependency injection (see {@link guide/di dependency injection}).
 *

 * @param {Array.<string|Function>} modules A list of module functions or their aliases. See
 *        {@link angular.module}. The `ng` module must be explicitly added.
 * @returns {function()} Injector function. See {@link auto.$injector $injector}.
 *
 * @example
 * Typical usage
 * ```js
 *   // create an injector
 *   var $injector = angular.injector(['ng']);
 *
 *   // use the injector to kick off your application
 *   // use the type inference to auto inject arguments, or use implicit injection
 *   $injector.invoke(function($rootScope, $compile, $document){
 *     $compile($document)($rootScope);
 *     $rootScope.$digest();
 *   });
 * ```
 *
 * Sometimes you want to get access to the injector of a currently running Angular app
 * from outside Angular. Perhaps, you want to inject and compile some markup after the
 * application has been bootstrapped. You can do this using extra `injector()` added
 * to JQuery/jqLite elements. See {@link angular.element}.
 *
 * *This is fairly rare but could be the case if a third party library is injecting the
 * markup.*
 *
 * In the following example a new block of HTML containing a `ng-controller`
 * directive is added to the end of the document body by JQuery. We then compile and link
 * it into the current AngularJS scope.
 *
 * ```js
 * var $div = $('<div ng-controller="MyCtrl">{{content.label}}</div>');
 * $(document.body).append($div);
 *
 * angular.element(document).injector().invoke(function($compile) {
 *   var scope = angular.element($div).scope();
 *   $compile($div)(scope);
 * });
 * ```
 */


/**
 * @ngdoc module
 * @name auto
 * @description
 *
 * Implicit module which gets automatically added to each {@link auto.$injector $injector}.
 */

var FN_ARGS = /^function\s*[^\(]*\(\s*([^\)]*)\)/m;
var FN_ARG_SPLIT = /,/;
var FN_ARG = /^\s*(_?)(\S+?)\1\s*$/;
var STRIP_COMMENTS = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg;
var $injectorMinErr = minErr('$injector');
function annotate(fn) {
  var $inject,
      fnText,
      argDecl,
      last;

  if (typeof fn == 'function') {
    if (!($inject = fn.$inject)) {
      $inject = [];
      if (fn.length) {
        fnText = fn.toString().replace(STRIP_COMMENTS, '');
        argDecl = fnText.match(FN_ARGS);
        forEach(argDecl[1].split(FN_ARG_SPLIT), function(arg){
          arg.replace(FN_ARG, function(all, underscore, name){
            $inject.push(name);
          });
        });
      }
      fn.$inject = $inject;
    }
  } else if (isArray(fn)) {
    last = fn.length - 1;
    assertArgFn(fn[last], 'fn');
    $inject = fn.slice(0, last);
  } else {
    assertArgFn(fn, 'fn', true);
  }
  return $inject;
}

///////////////////////////////////////

/**
 * @ngdoc service
 * @name $injector
 * @function
 *
 * @description
 *
 * `$injector` is used to retrieve object instances as defined by
 * {@link auto.$provide provider}, instantiate types, invoke methods,
 * and load modules.
 *
 * The following always holds true:
 *
 * ```js
 *   var $injector = angular.injector();
 *   expect($injector.get('$injector')).toBe($injector);
 *   expect($injector.invoke(function($injector){
 *     return $injector;
 *   }).toBe($injector);
 * ```
 *
 * # Injection Function Annotation
 *
 * JavaScript does not have annotations, and annotations are needed for dependency injection. The
 * following are all valid ways of annotating function with injection arguments and are equivalent.
 *
 * ```js
 *   // inferred (only works if code not minified/obfuscated)
 *   $injector.invoke(function(serviceA){});
 *
 *   // annotated
 *   function explicit(serviceA) {};
 *   explicit.$inject = ['serviceA'];
 *   $injector.invoke(explicit);
 *
 *   // inline
 *   $injector.invoke(['serviceA', function(serviceA){}]);
 * ```
 *
 * ## Inference
 *
 * In JavaScript calling `toString()` on a function returns the function definition. The definition
 * can then be parsed and the function arguments can be extracted. *NOTE:* This does not work with
 * minification, and obfuscation tools since these tools change the argument names.
 *
 * ## `$inject` Annotation
 * By adding a `$inject` property onto a function the injection parameters can be specified.
 *
 * ## Inline
 * As an array of injection names, where the last item in the array is the function to call.
 */

/**
 * @ngdoc method
 * @name $injector#get
 *
 * @description
 * Return an instance of the service.
 *
 * @param {string} name The name of the instance to retrieve.
 * @return {*} The instance.
 */

/**
 * @ngdoc method
 * @name $injector#invoke
 *
 * @description
 * Invoke the method and supply the method arguments from the `$injector`.
 *
 * @param {!Function} fn The function to invoke. Function parameters are injected according to the
 *   {@link guide/di $inject Annotation} rules.
 * @param {Object=} self The `this` for the invoked method.
 * @param {Object=} locals Optional object. If preset then any argument names are read from this
 *                         object first, before the `$injector` is consulted.
 * @returns {*} the value returned by the invoked `fn` function.
 */

/**
 * @ngdoc method
 * @name $injector#has
 *
 * @description
 * Allows the user to query if the particular service exist.
 *
 * @param {string} Name of the service to query.
 * @returns {boolean} returns true if injector has given service.
 */

/**
 * @ngdoc method
 * @name $injector#instantiate
 * @description
 * Create a new instance of JS type. The method takes a constructor function invokes the new
 * operator and supplies all of the arguments to the constructor function as specified by the
 * constructor annotation.
 *
 * @param {Function} Type Annotated constructor function.
 * @param {Object=} locals Optional object. If preset then any argument names are read from this
 * object first, before the `$injector` is consulted.
 * @returns {Object} new instance of `Type`.
 */

/**
 * @ngdoc method
 * @name $injector#annotate
 *
 * @description
 * Returns an array of service names which the function is requesting for injection. This API is
 * used by the injector to determine which services need to be injected into the function when the
 * function is invoked. There are three ways in which the function can be annotated with the needed
 * dependencies.
 *
 * # Argument names
 *
 * The simplest form is to extract the dependencies from the arguments of the function. This is done
 * by converting the function into a string using `toString()` method and extracting the argument
 * names.
 * ```js
 *   // Given
 *   function MyController($scope, $route) {
 *     // ...
 *   }
 *
 *   // Then
 *   expect(injector.annotate(MyController)).toEqual(['$scope', '$route']);
 * ```
 *
 * This method does not work with code minification / obfuscation. For this reason the following
 * annotation strategies are supported.
 *
 * # The `$inject` property
 *
 * If a function has an `$inject` property and its value is an array of strings, then the strings
 * represent names of services to be injected into the function.
 * ```js
 *   // Given
 *   var MyController = function(obfuscatedScope, obfuscatedRoute) {
 *     // ...
 *   }
 *   // Define function dependencies
 *   MyController['$inject'] = ['$scope', '$route'];
 *
 *   // Then
 *   expect(injector.annotate(MyController)).toEqual(['$scope', '$route']);
 * ```
 *
 * # The array notation
 *
 * It is often desirable to inline Injected functions and that's when setting the `$inject` property
 * is very inconvenient. In these situations using the array notation to specify the dependencies in
 * a way that survives minification is a better choice:
 *
 * ```js
 *   // We wish to write this (not minification / obfuscation safe)
 *   injector.invoke(function($compile, $rootScope) {
 *     // ...
 *   });
 *
 *   // We are forced to write break inlining
 *   var tmpFn = function(obfuscatedCompile, obfuscatedRootScope) {
 *     // ...
 *   };
 *   tmpFn.$inject = ['$compile', '$rootScope'];
 *   injector.invoke(tmpFn);
 *
 *   // To better support inline function the inline annotation is supported
 *   injector.invoke(['$compile', '$rootScope', function(obfCompile, obfRootScope) {
 *     // ...
 *   }]);
 *
 *   // Therefore
 *   expect(injector.annotate(
 *      ['$compile', '$rootScope', function(obfus_$compile, obfus_$rootScope) {}])
 *    ).toEqual(['$compile', '$rootScope']);
 * ```
 *
 * @param {Function|Array.<string|Function>} fn Function for which dependent service names need to
 * be retrieved as described above.
 *
 * @returns {Array.<string>} The names of the services which the function requires.
 */




/**
 * @ngdoc object
 * @name $provide
 *
 * @description
 *
 * The {@link auto.$provide $provide} service has a number of methods for registering components
 * with the {@link auto.$injector $injector}. Many of these functions are also exposed on
 * {@link angular.Module}.
 *
 * An Angular **service** is a singleton object created by a **service factory**.  These **service
 * factories** are functions which, in turn, are created by a **service provider**.
 * The **service providers** are constructor functions. When instantiated they must contain a
 * property called `$get`, which holds the **service factory** function.
 *
 * When you request a service, the {@link auto.$injector $injector} is responsible for finding the
 * correct **service provider**, instantiating it and then calling its `$get` **service factory**
 * function to get the instance of the **service**.
 *
 * Often services have no configuration options and there is no need to add methods to the service
 * provider.  The provider will be no more than a constructor function with a `$get` property. For
 * these cases the {@link auto.$provide $provide} service has additional helper methods to register
 * services without specifying a provider.
 *
 * * {@link auto.$provide#provider provider(provider)} - registers a **service provider** with the
 *     {@link auto.$injector $injector}
 * * {@link auto.$provide#constant constant(obj)} - registers a value/object that can be accessed by
 *     providers and services.
 * * {@link auto.$provide#value value(obj)} - registers a value/object that can only be accessed by
 *     services, not providers.
 * * {@link auto.$provide#factory factory(fn)} - registers a service **factory function**, `fn`,
 *     that will be wrapped in a **service provider** object, whose `$get` property will contain the
 *     given factory function.
 * * {@link auto.$provide#service service(class)} - registers a **constructor function**, `class`
 *     that will be wrapped in a **service provider** object, whose `$get` property will instantiate
 *      a new object using the given constructor function.
 *
 * See the individual methods for more information and examples.
 */

/**
 * @ngdoc method
 * @name $provide#provider
 * @description
 *
 * Register a **provider function** with the {@link auto.$injector $injector}. Provider functions
 * are constructor functions, whose instances are responsible for "providing" a factory for a
 * service.
 *
 * Service provider names start with the name of the service they provide followed by `Provider`.
 * For example, the {@link ng.$log $log} service has a provider called
 * {@link ng.$logProvider $logProvider}.
 *
 * Service provider objects can have additional methods which allow configuration of the provider
 * and its service. Importantly, you can configure what kind of service is created by the `$get`
 * method, or how that service will act. For example, the {@link ng.$logProvider $logProvider} has a
 * method {@link ng.$logProvider#debugEnabled debugEnabled}
 * which lets you specify whether the {@link ng.$log $log} service will log debug messages to the
 * console or not.
 *
 * @param {string} name The name of the instance. NOTE: the provider will be available under `name +
                        'Provider'` key.
 * @param {(Object|function())} provider If the provider is:
 *
 *   - `Object`: then it should have a `$get` method. The `$get` method will be invoked using
 *     {@link auto.$injector#invoke $injector.invoke()} when an instance needs to be created.
 *   - `Constructor`: a new instance of the provider will be created using
 *     {@link auto.$injector#instantiate $injector.instantiate()}, then treated as `object`.
 *
 * @returns {Object} registered provider instance

 * @example
 *
 * The following example shows how to create a simple event tracking service and register it using
 * {@link auto.$provide#provider $provide.provider()}.
 *
 * ```js
 *  // Define the eventTracker provider
 *  function EventTrackerProvider() {
 *    var trackingUrl = '/track';
 *
 *    // A provider method for configuring where the tracked events should been saved
 *    this.setTrackingUrl = function(url) {
 *      trackingUrl = url;
 *    };
 *
 *    // The service factory function
 *    this.$get = ['$http', function($http) {
 *      var trackedEvents = {};
 *      return {
 *        // Call this to track an event
 *        event: function(event) {
 *          var count = trackedEvents[event] || 0;
 *          count += 1;
 *          trackedEvents[event] = count;
 *          return count;
 *        },
 *        // Call this to save the tracked events to the trackingUrl
 *        save: function() {
 *          $http.post(trackingUrl, trackedEvents);
 *        }
 *      };
 *    }];
 *  }
 *
 *  describe('eventTracker', function() {
 *    var postSpy;
 *
 *    beforeEach(module(function($provide) {
 *      // Register the eventTracker provider
 *      $provide.provider('eventTracker', EventTrackerProvider);
 *    }));
 *
 *    beforeEach(module(function(eventTrackerProvider) {
 *      // Configure eventTracker provider
 *      eventTrackerProvider.setTrackingUrl('/custom-track');
 *    }));
 *
 *    it('tracks events', inject(function(eventTracker) {
 *      expect(eventTracker.event('login')).toEqual(1);
 *      expect(eventTracker.event('login')).toEqual(2);
 *    }));
 *
 *    it('saves to the tracking url', inject(function(eventTracker, $http) {
 *      postSpy = spyOn($http, 'post');
 *      eventTracker.event('login');
 *      eventTracker.save();
 *      expect(postSpy).toHaveBeenCalled();
 *      expect(postSpy.mostRecentCall.args[0]).not.toEqual('/track');
 *      expect(postSpy.mostRecentCall.args[0]).toEqual('/custom-track');
 *      expect(postSpy.mostRecentCall.args[1]).toEqual({ 'login': 1 });
 *    }));
 *  });
 * ```
 */

/**
 * @ngdoc method
 * @name $provide#factory
 * @description
 *
 * Register a **service factory**, which will be called to return the service instance.
 * This is short for registering a service where its provider consists of only a `$get` property,
 * which is the given service factory function.
 * You should use {@link auto.$provide#factory $provide.factory(getFn)} if you do not need to
 * configure your service in a provider.
 *
 * @param {string} name The name of the instance.
 * @param {function()} $getFn The $getFn for the instance creation. Internally this is a short hand
 *                            for `$provide.provider(name, {$get: $getFn})`.
 * @returns {Object} registered provider instance
 *
 * @example
 * Here is an example of registering a service
 * ```js
 *   $provide.factory('ping', ['$http', function($http) {
 *     return function ping() {
 *       return $http.send('/ping');
 *     };
 *   }]);
 * ```
 * You would then inject and use this service like this:
 * ```js
 *   someModule.controller('Ctrl', ['ping', function(ping) {
 *     ping();
 *   }]);
 * ```
 */


/**
 * @ngdoc method
 * @name $provide#service
 * @description
 *
 * Register a **service constructor**, which will be invoked with `new` to create the service
 * instance.
 * This is short for registering a service where its provider's `$get` property is the service
 * constructor function that will be used to instantiate the service instance.
 *
 * You should use {@link auto.$provide#service $provide.service(class)} if you define your service
 * as a type/class.
 *
 * @param {string} name The name of the instance.
 * @param {Function} constructor A class (constructor function) that will be instantiated.
 * @returns {Object} registered provider instance
 *
 * @example
 * Here is an example of registering a service using
 * {@link auto.$provide#service $provide.service(class)}.
 * ```js
 *   var Ping = function($http) {
 *     this.$http = $http;
 *   };
 *
 *   Ping.$inject = ['$http'];
 *
 *   Ping.prototype.send = function() {
 *     return this.$http.get('/ping');
 *   };
 *   $provide.service('ping', Ping);
 * ```
 * You would then inject and use this service like this:
 * ```js
 *   someModule.controller('Ctrl', ['ping', function(ping) {
 *     ping.send();
 *   }]);
 * ```
 */


/**
 * @ngdoc method
 * @name $provide#value
 * @description
 *
 * Register a **value service** with the {@link auto.$injector $injector}, such as a string, a
 * number, an array, an object or a function.  This is short for registering a service where its
 * provider's `$get` property is a factory function that takes no arguments and returns the **value
 * service**.
 *
 * Value services are similar to constant services, except that they cannot be injected into a
 * module configuration function (see {@link angular.Module#config}) but they can be overridden by
 * an Angular
 * {@link auto.$provide#decorator decorator}.
 *
 * @param {string} name The name of the instance.
 * @param {*} value The value.
 * @returns {Object} registered provider instance
 *
 * @example
 * Here are some examples of creating value services.
 * ```js
 *   $provide.value('ADMIN_USER', 'admin');
 *
 *   $provide.value('RoleLookup', { admin: 0, writer: 1, reader: 2 });
 *
 *   $provide.value('halfOf', function(value) {
 *     return value / 2;
 *   });
 * ```
 */


/**
 * @ngdoc method
 * @name $provide#constant
 * @description
 *
 * Register a **constant service**, such as a string, a number, an array, an object or a function,
 * with the {@link auto.$injector $injector}. Unlike {@link auto.$provide#value value} it can be
 * injected into a module configuration function (see {@link angular.Module#config}) and it cannot
 * be overridden by an Angular {@link auto.$provide#decorator decorator}.
 *
 * @param {string} name The name of the constant.
 * @param {*} value The constant value.
 * @returns {Object} registered instance
 *
 * @example
 * Here a some examples of creating constants:
 * ```js
 *   $provide.constant('SHARD_HEIGHT', 306);
 *
 *   $provide.constant('MY_COLOURS', ['red', 'blue', 'grey']);
 *
 *   $provide.constant('double', function(value) {
 *     return value * 2;
 *   });
 * ```
 */


/**
 * @ngdoc method
 * @name $provide#decorator
 * @description
 *
 * Register a **service decorator** with the {@link auto.$injector $injector}. A service decorator
 * intercepts the creation of a service, allowing it to override or modify the behaviour of the
 * service. The object returned by the decorator may be the original service, or a new service
 * object which replaces or wraps and delegates to the original service.
 *
 * @param {string} name The name of the service to decorate.
 * @param {function()} decorator This function will be invoked when the service needs to be
 *    instantiated and should return the decorated service instance. The function is called using
 *    the {@link auto.$injector#invoke injector.invoke} method and is therefore fully injectable.
 *    Local injection arguments:
 *
 *    * `$delegate` - The original service instance, which can be monkey patched, configured,
 *      decorated or delegated to.
 *
 * @example
 * Here we decorate the {@link ng.$log $log} service to convert warnings to errors by intercepting
 * calls to {@link ng.$log#error $log.warn()}.
 * ```js
 *   $provide.decorator('$log', ['$delegate', function($delegate) {
 *     $delegate.warn = $delegate.error;
 *     return $delegate;
 *   }]);
 * ```
 */


function createInjector(modulesToLoad) {
  var INSTANTIATING = {},
      providerSuffix = 'Provider',
      path = [],
      loadedModules = new HashMap(),
      providerCache = {
        $provide: {
            provider: supportObject(provider),
            factory: supportObject(factory),
            service: supportObject(service),
            value: supportObject(value),
            constant: supportObject(constant),
            decorator: decorator
          }
      },
      providerInjector = (providerCache.$injector =
          createInternalInjector(providerCache, function() {
            throw $injectorMinErr('unpr', "Unknown provider: {0}", path.join(' <- '));
          })),
      instanceCache = {},
      instanceInjector = (instanceCache.$injector =
          createInternalInjector(instanceCache, function(servicename) {
            var provider = providerInjector.get(servicename + providerSuffix);
            return instanceInjector.invoke(provider.$get, provider);
          }));


  forEach(loadModules(modulesToLoad), function(fn) { instanceInjector.invoke(fn || noop); });

  return instanceInjector;

  ////////////////////////////////////
  // $provider
  ////////////////////////////////////

  function supportObject(delegate) {
    return function(key, value) {
      if (isObject(key)) {
        forEach(key, reverseParams(delegate));
      } else {
        return delegate(key, value);
      }
    };
  }

  function provider(name, provider_) {
    assertNotHasOwnProperty(name, 'service');
    if (isFunction(provider_) || isArray(provider_)) {
      provider_ = providerInjector.instantiate(provider_);
    }
    if (!provider_.$get) {
      throw $injectorMinErr('pget', "Provider '{0}' must define $get factory method.", name);
    }
    return providerCache[name + providerSuffix] = provider_;
  }

  function factory(name, factoryFn) { return provider(name, { $get: factoryFn }); }

  function service(name, constructor) {
    return factory(name, ['$injector', function($injector) {
      return $injector.instantiate(constructor);
    }]);
  }

  function value(name, val) { return factory(name, valueFn(val)); }

  function constant(name, value) {
    assertNotHasOwnProperty(name, 'constant');
    providerCache[name] = value;
    instanceCache[name] = value;
  }

  function decorator(serviceName, decorFn) {
    var origProvider = providerInjector.get(serviceName + providerSuffix),
        orig$get = origProvider.$get;

    origProvider.$get = function() {
      var origInstance = instanceInjector.invoke(orig$get, origProvider);
      return instanceInjector.invoke(decorFn, null, {$delegate: origInstance});
    };
  }

  ////////////////////////////////////
  // Module Loading
  ////////////////////////////////////
  function loadModules(modulesToLoad){
    var runBlocks = [], moduleFn, invokeQueue, i, ii;
    forEach(modulesToLoad, function(module) {
      if (loadedModules.get(module)) return;
      loadedModules.put(module, true);

      try {
        if (isString(module)) {
          moduleFn = angularModule(module);
          runBlocks = runBlocks.concat(loadModules(moduleFn.requires)).concat(moduleFn._runBlocks);

          for(invokeQueue = moduleFn._invokeQueue, i = 0, ii = invokeQueue.length; i < ii; i++) {
            var invokeArgs = invokeQueue[i],
                provider = providerInjector.get(invokeArgs[0]);

            provider[invokeArgs[1]].apply(provider, invokeArgs[2]);
          }
        } else if (isFunction(module)) {
            runBlocks.push(providerInjector.invoke(module));
        } else if (isArray(module)) {
            runBlocks.push(providerInjector.invoke(module));
        } else {
          assertArgFn(module, 'module');
        }
      } catch (e) {
        if (isArray(module)) {
          module = module[module.length - 1];
        }
        if (e.message && e.stack && e.stack.indexOf(e.message) == -1) {
          // Safari & FF's stack traces don't contain error.message content
          // unlike those of Chrome and IE
          // So if stack doesn't contain message, we create a new string that contains both.
          // Since error.stack is read-only in Safari, I'm overriding e and not e.stack here.
          /* jshint -W022 */
          e = e.message + '\n' + e.stack;
        }
        throw $injectorMinErr('modulerr', "Failed to instantiate module {0} due to:\n{1}",
                  module, e.stack || e.message || e);
      }
    });
    return runBlocks;
  }

  ////////////////////////////////////
  // internal Injector
  ////////////////////////////////////

  function createInternalInjector(cache, factory) {

    function getService(serviceName) {
      if (cache.hasOwnProperty(serviceName)) {
        if (cache[serviceName] === INSTANTIATING) {
          throw $injectorMinErr('cdep', 'Circular dependency found: {0}', path.join(' <- '));
        }
        return cache[serviceName];
      } else {
        try {
          path.unshift(serviceName);
          cache[serviceName] = INSTANTIATING;
          return cache[serviceName] = factory(serviceName);
        } catch (err) {
          if (cache[serviceName] === INSTANTIATING) {
            delete cache[serviceName];
          }
          throw err;
        } finally {
          path.shift();
        }
      }
    }

    function invoke(fn, self, locals){
      var args = [],
          $inject = annotate(fn),
          length, i,
          key;

      for(i = 0, length = $inject.length; i < length; i++) {
        key = $inject[i];
        if (typeof key !== 'string') {
          throw $injectorMinErr('itkn',
                  'Incorrect injection token! Expected service name as string, got {0}', key);
        }
        args.push(
          locals && locals.hasOwnProperty(key)
          ? locals[key]
          : getService(key)
        );
      }
      if (!fn.$inject) {
        // this means that we must be an array.
        fn = fn[length];
      }

      // http://jsperf.com/angularjs-invoke-apply-vs-switch
      // #5388
      return fn.apply(self, args);
    }

    function instantiate(Type, locals) {
      var Constructor = function() {},
          instance, returnedValue;

      // Check if Type is annotated and use just the given function at n-1 as parameter
      // e.g. someModule.factory('greeter', ['$window', function(renamed$window) {}]);
      Constructor.prototype = (isArray(Type) ? Type[Type.length - 1] : Type).prototype;
      instance = new Constructor();
      returnedValue = invoke(Type, instance, locals);

      return isObject(returnedValue) || isFunction(returnedValue) ? returnedValue : instance;
    }

    return {
      invoke: invoke,
      instantiate: instantiate,
      get: getService,
      annotate: annotate,
      has: function(name) {
        return providerCache.hasOwnProperty(name + providerSuffix) || cache.hasOwnProperty(name);
      }
    };
  }
}

/**
 * @ngdoc service
 * @name $anchorScroll
 * @kind function
 * @requires $window
 * @requires $location
 * @requires $rootScope
 *
 * @description
 * When called, it checks current value of `$location.hash()` and scroll to related element,
 * according to rules specified in
 * [Html5 spec](http://dev.w3.org/html5/spec/Overview.html#the-indicated-part-of-the-document).
 *
 * It also watches the `$location.hash()` and scrolls whenever it changes to match any anchor.
 * This can be disabled by calling `$anchorScrollProvider.disableAutoScrolling()`.
 *
 * @example
   <example>
     <file name="index.html">
       <div id="scrollArea" ng-controller="ScrollCtrl">
         <a ng-click="gotoBottom()">Go to bottom</a>
         <a id="bottom"></a> You're at the bottom!
       </div>
     </file>
     <file name="script.js">
       function ScrollCtrl($scope, $location, $anchorScroll) {
         $scope.gotoBottom = function (){
           // set the location.hash to the id of
           // the element you wish to scroll to.
           $location.hash('bottom');

           // call $anchorScroll()
           $anchorScroll();
         };
       }
     </file>
     <file name="style.css">
       #scrollArea {
         height: 350px;
         overflow: auto;
       }

       #bottom {
         display: block;
         margin-top: 2000px;
       }
     </file>
   </example>
 */
function $AnchorScrollProvider() {

  var autoScrollingEnabled = true;

  this.disableAutoScrolling = function() {
    autoScrollingEnabled = false;
  };

  this.$get = ['$window', '$location', '$rootScope', function($window, $location, $rootScope) {
    var document = $window.document;

    // helper function to get first anchor from a NodeList
    // can't use filter.filter, as it accepts only instances of Array
    // and IE can't convert NodeList to an array using [].slice
    // TODO(vojta): use filter if we change it to accept lists as well
    function getFirstAnchor(list) {
      var result = null;
      forEach(list, function(element) {
        if (!result && lowercase(element.nodeName) === 'a') result = element;
      });
      return result;
    }

    function scroll() {
      var hash = $location.hash(), elm;

      // empty hash, scroll to the top of the page
      if (!hash) $window.scrollTo(0, 0);

      // element with given id
      else if ((elm = document.getElementById(hash))) elm.scrollIntoView();

      // first anchor with given name :-D
      else if ((elm = getFirstAnchor(document.getElementsByName(hash)))) elm.scrollIntoView();

      // no element and hash == 'top', scroll to the top of the page
      else if (hash === 'top') $window.scrollTo(0, 0);
    }

    // does not scroll when user clicks on anchor link that is currently on
    // (no url change, no $location.hash() change), browser native does scroll
    if (autoScrollingEnabled) {
      $rootScope.$watch(function autoScrollWatch() {return $location.hash();},
        function autoScrollWatchAction() {
          $rootScope.$evalAsync(scroll);
        });
    }

    return scroll;
  }];
}

var $animateMinErr = minErr('$animate');

/**
 * @ngdoc provider
 * @name $animateProvider
 *
 * @description
 * Default implementation of $animate that doesn't perform any animations, instead just
 * synchronously performs DOM
 * updates and calls done() callbacks.
 *
 * In order to enable animations the ngAnimate module has to be loaded.
 *
 * To see the functional implementation check out src/ngAnimate/animate.js
 */
var $AnimateProvider = ['$provide', function($provide) {


  this.$$selectors = {};


  /**
   * @ngdoc method
   * @name $animateProvider#register
   *
   * @description
   * Registers a new injectable animation factory function. The factory function produces the
   * animation object which contains callback functions for each event that is expected to be
   * animated.
   *
   *   * `eventFn`: `function(Element, doneFunction)` The element to animate, the `doneFunction`
   *   must be called once the element animation is complete. If a function is returned then the
   *   animation service will use this function to cancel the animation whenever a cancel event is
   *   triggered.
   *
   *
   * ```js
   *   return {
     *     eventFn : function(element, done) {
     *       //code to run the animation
     *       //once complete, then run done()
     *       return function cancellationFunction() {
     *         //code to cancel the animation
     *       }
     *     }
     *   }
   * ```
   *
   * @param {string} name The name of the animation.
   * @param {Function} factory The factory function that will be executed to return the animation
   *                           object.
   */
  this.register = function(name, factory) {
    var key = name + '-animation';
    if (name && name.charAt(0) != '.') throw $animateMinErr('notcsel',
        "Expecting class selector starting with '.' got '{0}'.", name);
    this.$$selectors[name.substr(1)] = key;
    $provide.factory(key, factory);
  };

  /**
   * @ngdoc method
   * @name $animateProvider#classNameFilter
   *
   * @description
   * Sets and/or returns the CSS class regular expression that is checked when performing
   * an animation. Upon bootstrap the classNameFilter value is not set at all and will
   * therefore enable $animate to attempt to perform an animation on any element.
   * When setting the classNameFilter value, animations will only be performed on elements
   * that successfully match the filter expression. This in turn can boost performance
   * for low-powered devices as well as applications containing a lot of structural operations.
   * @param {RegExp=} expression The className expression which will be checked against all animations
   * @return {RegExp} The current CSS className expression value. If null then there is no expression value
   */
  this.classNameFilter = function(expression) {
    if(arguments.length === 1) {
      this.$$classNameFilter = (expression instanceof RegExp) ? expression : null;
    }
    return this.$$classNameFilter;
  };

  this.$get = ['$timeout', '$$asyncCallback', function($timeout, $$asyncCallback) {

    function async(fn) {
      fn && $$asyncCallback(fn);
    }

    /**
     *
     * @ngdoc service
     * @name $animate
     * @description The $animate service provides rudimentary DOM manipulation functions to
     * insert, remove and move elements within the DOM, as well as adding and removing classes.
     * This service is the core service used by the ngAnimate $animator service which provides
     * high-level animation hooks for CSS and JavaScript.
     *
     * $animate is available in the AngularJS core, however, the ngAnimate module must be included
     * to enable full out animation support. Otherwise, $animate will only perform simple DOM
     * manipulation operations.
     *
     * To learn more about enabling animation support, click here to visit the {@link ngAnimate
     * ngAnimate module page} as well as the {@link ngAnimate.$animate ngAnimate $animate service
     * page}.
     */
    return {

      /**
       *
       * @ngdoc method
       * @name $animate#enter
       * @function
       * @description Inserts the element into the DOM either after the `after` element or within
       *   the `parent` element. Once complete, the done() callback will be fired (if provided).
       * @param {DOMElement} element the element which will be inserted into the DOM
       * @param {DOMElement} parent the parent element which will append the element as
       *   a child (if the after element is not present)
       * @param {DOMElement} after the sibling element which will append the element
       *   after itself
       * @param {Function=} done callback function that will be called after the element has been
       *   inserted into the DOM
       */
      enter : function(element, parent, after, done) {
        if (after) {
          after.after(element);
        } else {
          if (!parent || !parent[0]) {
            parent = after.parent();
          }
          parent.append(element);
        }
        async(done);
      },

      /**
       *
       * @ngdoc method
       * @name $animate#leave
       * @function
       * @description Removes the element from the DOM. Once complete, the done() callback will be
       *   fired (if provided).
       * @param {DOMElement} element the element which will be removed from the DOM
       * @param {Function=} done callback function that will be called after the element has been
       *   removed from the DOM
       */
      leave : function(element, done) {
        element.remove();
        async(done);
      },

      /**
       *
       * @ngdoc method
       * @name $animate#move
       * @function
       * @description Moves the position of the provided element within the DOM to be placed
       * either after the `after` element or inside of the `parent` element. Once complete, the
       * done() callback will be fired (if provided).
       *
       * @param {DOMElement} element the element which will be moved around within the
       *   DOM
       * @param {DOMElement} parent the parent element where the element will be
       *   inserted into (if the after element is not present)
       * @param {DOMElement} after the sibling element where the element will be
       *   positioned next to
       * @param {Function=} done the callback function (if provided) that will be fired after the
       *   element has been moved to its new position
       */
      move : function(element, parent, after, done) {
        // Do not remove element before insert. Removing will cause data associated with the
        // element to be dropped. Insert will implicitly do the remove.
        this.enter(element, parent, after, done);
      },

      /**
       *
       * @ngdoc method
       * @name $animate#addClass
       * @function
       * @description Adds the provided className CSS class value to the provided element. Once
       * complete, the done() callback will be fired (if provided).
       * @param {DOMElement} element the element which will have the className value
       *   added to it
       * @param {string} className the CSS class which will be added to the element
       * @param {Function=} done the callback function (if provided) that will be fired after the
       *   className value has been added to the element
       */
      addClass : function(element, className, done) {
        className = isString(className) ?
                      className :
                      isArray(className) ? className.join(' ') : '';
        forEach(element, function (element) {
          jqLiteAddClass(element, className);
        });
        async(done);
      },

      /**
       *
       * @ngdoc method
       * @name $animate#removeClass
       * @function
       * @description Removes the provided className CSS class value from the provided element.
       * Once complete, the done() callback will be fired (if provided).
       * @param {DOMElement} element the element which will have the className value
       *   removed from it
       * @param {string} className the CSS class which will be removed from the element
       * @param {Function=} done the callback function (if provided) that will be fired after the
       *   className value has been removed from the element
       */
      removeClass : function(element, className, done) {
        className = isString(className) ?
                      className :
                      isArray(className) ? className.join(' ') : '';
        forEach(element, function (element) {
          jqLiteRemoveClass(element, className);
        });
        async(done);
      },

      /**
       *
       * @ngdoc method
       * @name $animate#setClass
       * @function
       * @description Adds and/or removes the given CSS classes to and from the element.
       * Once complete, the done() callback will be fired (if provided).
       * @param {DOMElement} element the element which will it's CSS classes changed
       *   removed from it
       * @param {string} add the CSS classes which will be added to the element
       * @param {string} remove the CSS class which will be removed from the element
       * @param {Function=} done the callback function (if provided) that will be fired after the
       *   CSS classes have been set on the element
       */
      setClass : function(element, add, remove, done) {
        forEach(element, function (element) {
          jqLiteAddClass(element, add);
          jqLiteRemoveClass(element, remove);
        });
        async(done);
      },

      enabled : noop
    };
  }];
}
Download .txt
gitextract_raduybzh/

├── README.md
└── maverix-theme/
    ├── app/
    │   ├── img/
    │   │   └── .gitkeep
    │   ├── js/
    │   │   ├── app.js
    │   │   ├── controllers.js
    │   │   ├── directives.js
    │   │   ├── filters.js
    │   │   └── services.js
    │   └── partials/
    │       ├── .gitkeep
    │       ├── charts.html
    │       ├── controls.html
    │       ├── forms.html
    │       ├── icons.html
    │       ├── maverix.html
    │       ├── modals.html
    │       ├── partial1.html
    │       ├── partial2.html
    │       ├── tables.html
    │       └── type.html
    ├── bower_components/
    │   ├── angular/
    │   │   ├── .bower.json
    │   │   ├── README.md
    │   │   ├── angular-csp.css
    │   │   ├── angular.js
    │   │   ├── angular.min.js.gzip
    │   │   └── bower.json
    │   ├── angular-route/
    │   │   ├── .bower.json
    │   │   ├── README.md
    │   │   ├── angular-route.js
    │   │   └── bower.json
    │   ├── bootstrap/
    │   │   ├── .bower.json
    │   │   ├── Gruntfile.js
    │   │   ├── LICENSE
    │   │   ├── README.md
    │   │   ├── bower.json
    │   │   ├── dist/
    │   │   │   ├── css/
    │   │   │   │   ├── bootstrap-theme.css
    │   │   │   │   └── bootstrap.css
    │   │   │   └── js/
    │   │   │       └── bootstrap.js
    │   │   ├── grunt/
    │   │   │   ├── bs-glyphicons-data-generator.js
    │   │   │   ├── bs-lessdoc-parser.js
    │   │   │   ├── bs-raw-files-generator.js
    │   │   │   └── shrinkwrap.js
    │   │   ├── js/
    │   │   │   ├── affix.js
    │   │   │   ├── alert.js
    │   │   │   ├── button.js
    │   │   │   ├── carousel.js
    │   │   │   ├── collapse.js
    │   │   │   ├── dropdown.js
    │   │   │   ├── modal.js
    │   │   │   ├── popover.js
    │   │   │   ├── scrollspy.js
    │   │   │   ├── tab.js
    │   │   │   ├── tooltip.js
    │   │   │   └── transition.js
    │   │   ├── less/
    │   │   │   ├── alerts.less
    │   │   │   ├── badges.less
    │   │   │   ├── bootstrap.css
    │   │   │   ├── bootstrap.less
    │   │   │   ├── breadcrumbs.less
    │   │   │   ├── button-groups.less
    │   │   │   ├── buttons.less
    │   │   │   ├── carousel.less
    │   │   │   ├── close.less
    │   │   │   ├── code.less
    │   │   │   ├── component-animations.less
    │   │   │   ├── dropdowns.less
    │   │   │   ├── forms.less
    │   │   │   ├── glyphicons.less
    │   │   │   ├── grid.less
    │   │   │   ├── input-groups.less
    │   │   │   ├── jumbotron.less
    │   │   │   ├── labels.less
    │   │   │   ├── list-group.less
    │   │   │   ├── media.css
    │   │   │   ├── media.less
    │   │   │   ├── mixins.css
    │   │   │   ├── mixins.less
    │   │   │   ├── modals.less
    │   │   │   ├── navbar.less
    │   │   │   ├── navs.less
    │   │   │   ├── normalize.css
    │   │   │   ├── normalize.less
    │   │   │   ├── pager.less
    │   │   │   ├── pagination.less
    │   │   │   ├── panels.less
    │   │   │   ├── popovers.less
    │   │   │   ├── print.css
    │   │   │   ├── print.less
    │   │   │   ├── progress-bars.less
    │   │   │   ├── responsive-utilities.less
    │   │   │   ├── scaffolding.less
    │   │   │   ├── tables.less
    │   │   │   ├── theme.css
    │   │   │   ├── theme.less
    │   │   │   ├── thumbnails.less
    │   │   │   ├── tooltip.less
    │   │   │   ├── type.less
    │   │   │   ├── utilities.less
    │   │   │   ├── variables-orig.css
    │   │   │   ├── variables-orig.less
    │   │   │   ├── variables.css
    │   │   │   ├── variables.less
    │   │   │   └── wells.less
    │   │   ├── package.json
    │   │   └── test-infra/
    │   │       ├── README.md
    │   │       ├── npm-shrinkwrap.canonical.json
    │   │       ├── requirements.txt
    │   │       ├── s3_cache.py
    │   │       ├── sauce_browsers.yml
    │   │       └── uncached-npm-install.sh
    │   ├── css-toggle-switch/
    │   │   ├── .bower.json
    │   │   ├── .bowerrc
    │   │   ├── .travis.yml
    │   │   ├── LICENSE.txt
    │   │   ├── README.md
    │   │   ├── bower.json
    │   │   ├── dist/
    │   │   │   └── toggle-switch.css
    │   │   ├── src/
    │   │   │   ├── toggle-switch.css
    │   │   │   ├── toggle-switch.less
    │   │   │   └── toggle-switch.scss
    │   │   └── test/
    │   │       └── tests.js
    │   ├── entypo/
    │   │   ├── .bower.json
    │   │   ├── .gitignore
    │   │   ├── .gitmodules
    │   │   ├── DEVELOPMENT.md
    │   │   ├── Makefile
    │   │   ├── README.md
    │   │   ├── config.yml
    │   │   ├── font/
    │   │   │   ├── demo.html
    │   │   │   └── entypo.css
    │   │   └── src/
    │   │       ├── demo/
    │   │       │   ├── README.md
    │   │       │   ├── bootstrap.styl
    │   │       │   ├── demo.codes.jade
    │   │       │   └── demo.jade
    │   │       └── original/
    │   │           └── README.md
    │   ├── flot/
    │   │   ├── .bower.json
    │   │   ├── .gitignore
    │   │   ├── .travis.yml
    │   │   ├── API.md
    │   │   ├── CONTRIBUTING.md
    │   │   ├── FAQ.md
    │   │   ├── LICENSE.txt
    │   │   ├── Makefile
    │   │   ├── NEWS.md
    │   │   ├── PLUGINS.md
    │   │   ├── README.md
    │   │   ├── component.json
    │   │   ├── examples/
    │   │   │   ├── ajax/
    │   │   │   │   ├── data-eu-gdp-growth-1.json
    │   │   │   │   ├── data-eu-gdp-growth-2.json
    │   │   │   │   ├── data-eu-gdp-growth-3.json
    │   │   │   │   ├── data-eu-gdp-growth-4.json
    │   │   │   │   ├── data-eu-gdp-growth-5.json
    │   │   │   │   ├── data-eu-gdp-growth.json
    │   │   │   │   ├── data-japan-gdp-growth.json
    │   │   │   │   ├── data-usa-gdp-growth.json
    │   │   │   │   └── index.html
    │   │   │   ├── annotating/
    │   │   │   │   └── index.html
    │   │   │   ├── axes-interacting/
    │   │   │   │   └── index.html
    │   │   │   ├── axes-multiple/
    │   │   │   │   └── index.html
    │   │   │   ├── axes-time/
    │   │   │   │   └── index.html
    │   │   │   ├── axes-time-zones/
    │   │   │   │   ├── date.js
    │   │   │   │   ├── index.html
    │   │   │   │   └── tz/
    │   │   │   │       ├── africa
    │   │   │   │       ├── antarctica
    │   │   │   │       ├── asia
    │   │   │   │       ├── australasia
    │   │   │   │       ├── backward
    │   │   │   │       ├── etcetera
    │   │   │   │       ├── europe
    │   │   │   │       ├── factory
    │   │   │   │       ├── iso3166.tab
    │   │   │   │       ├── leapseconds
    │   │   │   │       ├── northamerica
    │   │   │   │       ├── pacificnew
    │   │   │   │       ├── solar87
    │   │   │   │       ├── solar88
    │   │   │   │       ├── solar89
    │   │   │   │       ├── southamerica
    │   │   │   │       ├── systemv
    │   │   │   │       ├── yearistype.sh
    │   │   │   │       └── zone.tab
    │   │   │   ├── basic-options/
    │   │   │   │   └── index.html
    │   │   │   ├── basic-usage/
    │   │   │   │   └── index.html
    │   │   │   ├── canvas/
    │   │   │   │   └── index.html
    │   │   │   ├── categories/
    │   │   │   │   └── index.html
    │   │   │   ├── examples.css
    │   │   │   ├── image/
    │   │   │   │   └── index.html
    │   │   │   ├── index.html
    │   │   │   ├── interacting/
    │   │   │   │   └── index.html
    │   │   │   ├── navigate/
    │   │   │   │   └── index.html
    │   │   │   ├── percentiles/
    │   │   │   │   └── index.html
    │   │   │   ├── realtime/
    │   │   │   │   └── index.html
    │   │   │   ├── resize/
    │   │   │   │   └── index.html
    │   │   │   ├── selection/
    │   │   │   │   └── index.html
    │   │   │   ├── series-errorbars/
    │   │   │   │   └── index.html
    │   │   │   ├── series-pie/
    │   │   │   │   └── index.html
    │   │   │   ├── series-toggle/
    │   │   │   │   └── index.html
    │   │   │   ├── series-types/
    │   │   │   │   └── index.html
    │   │   │   ├── stacking/
    │   │   │   │   └── index.html
    │   │   │   ├── symbols/
    │   │   │   │   └── index.html
    │   │   │   ├── threshold/
    │   │   │   │   └── index.html
    │   │   │   ├── tracking/
    │   │   │   │   └── index.html
    │   │   │   ├── visitors/
    │   │   │   │   └── index.html
    │   │   │   └── zooming/
    │   │   │       └── index.html
    │   │   ├── excanvas.js
    │   │   ├── excanvas.min.js
    │   │   ├── flot.jquery.json
    │   │   ├── jquery.colorhelpers.js
    │   │   ├── jquery.flot.canvas.js
    │   │   ├── jquery.flot.categories.js
    │   │   ├── jquery.flot.crosshair.js
    │   │   ├── jquery.flot.errorbars.js
    │   │   ├── jquery.flot.fillbetween.js
    │   │   ├── jquery.flot.image.js
    │   │   ├── jquery.flot.js
    │   │   ├── jquery.flot.navigate.js
    │   │   ├── jquery.flot.pie.js
    │   │   ├── jquery.flot.resize.js
    │   │   ├── jquery.flot.selection.js
    │   │   ├── jquery.flot.stack.js
    │   │   ├── jquery.flot.symbol.js
    │   │   ├── jquery.flot.threshold.js
    │   │   ├── jquery.flot.time.js
    │   │   ├── jquery.js
    │   │   └── package.json
    │   ├── jquery/
    │   │   ├── .bower.json
    │   │   ├── MIT-LICENSE.txt
    │   │   ├── bower.json
    │   │   ├── dist/
    │   │   │   └── jquery.js
    │   │   └── src/
    │   │       ├── ajax/
    │   │       │   ├── jsonp.js
    │   │       │   ├── load.js
    │   │       │   ├── parseJSON.js
    │   │       │   ├── parseXML.js
    │   │       │   ├── script.js
    │   │       │   ├── var/
    │   │       │   │   ├── nonce.js
    │   │       │   │   └── rquery.js
    │   │       │   └── xhr.js
    │   │       ├── ajax.js
    │   │       ├── attributes/
    │   │       │   ├── attr.js
    │   │       │   ├── classes.js
    │   │       │   ├── prop.js
    │   │       │   ├── support.js
    │   │       │   └── val.js
    │   │       ├── attributes.js
    │   │       ├── callbacks.js
    │   │       ├── core/
    │   │       │   ├── access.js
    │   │       │   ├── init.js
    │   │       │   ├── parseHTML.js
    │   │       │   ├── ready.js
    │   │       │   └── var/
    │   │       │       └── rsingleTag.js
    │   │       ├── core.js
    │   │       ├── css/
    │   │       │   ├── addGetHookIf.js
    │   │       │   ├── curCSS.js
    │   │       │   ├── defaultDisplay.js
    │   │       │   ├── hiddenVisibleSelectors.js
    │   │       │   ├── support.js
    │   │       │   ├── swap.js
    │   │       │   └── var/
    │   │       │       ├── cssExpand.js
    │   │       │       ├── getStyles.js
    │   │       │       ├── isHidden.js
    │   │       │       ├── rmargin.js
    │   │       │       └── rnumnonpx.js
    │   │       ├── css.js
    │   │       ├── data/
    │   │       │   ├── Data.js
    │   │       │   ├── accepts.js
    │   │       │   └── var/
    │   │       │       ├── data_priv.js
    │   │       │       └── data_user.js
    │   │       ├── data.js
    │   │       ├── deferred.js
    │   │       ├── deprecated.js
    │   │       ├── dimensions.js
    │   │       ├── effects/
    │   │       │   ├── Tween.js
    │   │       │   └── animatedSelector.js
    │   │       ├── effects.js
    │   │       ├── event/
    │   │       │   ├── alias.js
    │   │       │   └── support.js
    │   │       ├── event.js
    │   │       ├── exports/
    │   │       │   ├── amd.js
    │   │       │   └── global.js
    │   │       ├── intro.js
    │   │       ├── jquery.js
    │   │       ├── manipulation/
    │   │       │   ├── _evalUrl.js
    │   │       │   ├── support.js
    │   │       │   └── var/
    │   │       │       └── rcheckableType.js
    │   │       ├── manipulation.js
    │   │       ├── offset.js
    │   │       ├── outro.js
    │   │       ├── queue/
    │   │       │   └── delay.js
    │   │       ├── queue.js
    │   │       ├── selector-native.js
    │   │       ├── selector-sizzle.js
    │   │       ├── selector.js
    │   │       ├── serialize.js
    │   │       ├── sizzle/
    │   │       │   └── dist/
    │   │       │       └── sizzle.js
    │   │       ├── traversing/
    │   │       │   ├── findFilter.js
    │   │       │   └── var/
    │   │       │       └── rneedsContext.js
    │   │       ├── traversing.js
    │   │       ├── var/
    │   │       │   ├── arr.js
    │   │       │   ├── class2type.js
    │   │       │   ├── concat.js
    │   │       │   ├── hasOwn.js
    │   │       │   ├── indexOf.js
    │   │       │   ├── pnum.js
    │   │       │   ├── push.js
    │   │       │   ├── rnotwhite.js
    │   │       │   ├── slice.js
    │   │       │   ├── strundefined.js
    │   │       │   ├── support.js
    │   │       │   └── toString.js
    │   │       └── wrap.js
    │   └── rangeslider.js/
    │       ├── .bower.json
    │       ├── LICENSE-MIT.txt
    │       ├── README.md
    │       └── dist/
    │           ├── rangeslider.css
    │           └── rangeslider.js
    ├── css/
    │   ├── maverix.css
    │   └── maverix.less
    ├── img/
    │   └── iconset-addictive-flavour-set/
    │       ├── motivation behind the design.txt
    │       └── readme.txt
    ├── index.html
    └── readme.md
Download .txt
SYMBOL INDEX (526 symbols across 56 files)

FILE: maverix-theme/bower_components/angular-route/angular-route.js
  function $RouteProvider (line 42) | function $RouteProvider(){
  function $RouteParamsProvider (line 638) | function $RouteParamsProvider() {
  function ngViewFactory (line 823) | function ngViewFactory(   $route,   $anchorScroll,   $animate) {
  function ngViewFillContentFactory (line 899) | function ngViewFillContentFactory($compile, $controller, $route) {

FILE: maverix-theme/bower_components/angular/angular.js
  function minErr (line 36) | function minErr(module) {
  function isArrayLike (line 267) | function isArrayLike(obj) {
  function forEach (line 311) | function forEach(obj, iterator, context) {
  function sortedKeys (line 338) | function sortedKeys(obj) {
  function forEachSorted (line 348) | function forEachSorted(obj, iterator, context) {
  function reverseParams (line 362) | function reverseParams(iteratorFn) {
  function nextUid (line 374) | function nextUid() {
  function setHashKey (line 402) | function setHashKey(obj, h) {
  function extend (line 425) | function extend(dst) {
  function int (line 439) | function int(str) {
  function inherit (line 444) | function inherit(parent, extra) {
  function noop (line 464) | function noop() {}
  function identity (line 484) | function identity($) {return $;}
  function valueFn (line 488) | function valueFn(value) {return function() {return value;};}
  function isUndefined (line 502) | function isUndefined(value){return typeof value === 'undefined';}
  function isDefined (line 517) | function isDefined(value){return typeof value !== 'undefined';}
  function isObject (line 533) | function isObject(value){return value != null && typeof value === 'objec...
  function isString (line 548) | function isString(value){return typeof value === 'string';}
  function isNumber (line 563) | function isNumber(value){return typeof value === 'number';}
  function isDate (line 578) | function isDate(value){
  function isArray (line 595) | function isArray(value) {
  function isFunction (line 612) | function isFunction(value){return typeof value === 'function';}
  function isRegExp (line 622) | function isRegExp(value) {
  function isWindow (line 634) | function isWindow(obj) {
  function isScope (line 639) | function isScope(obj) {
  function isFile (line 644) | function isFile(obj) {
  function isBlob (line 649) | function isBlob(obj) {
  function isBoolean (line 654) | function isBoolean(value) {
  function isElement (line 686) | function isElement(node) {
  function makeMap (line 696) | function makeMap(str){
  function map (line 717) | function map(obj, iterator, context) {
  function size (line 738) | function size(obj, ownPropsOnly) {
  function includes (line 753) | function includes(array, obj) {
  function indexOf (line 757) | function indexOf(array, obj) {
  function arrayRemove (line 766) | function arrayRemove(array, value) {
  function isLeafNode (line 773) | function isLeafNode (node) {
  function copy (line 842) | function copy(source, destination){
  function shallowCopy (line 886) | function shallowCopy(src, dst) {
  function equals (line 930) | function equals(o1, o2) {
  function csp (line 971) | function csp() {
  function concat (line 978) | function concat(array1, array2, index) {
  function sliceArgs (line 982) | function sliceArgs(args, startIndex) {
  function bind (line 1006) | function bind(self, fn) {
  function toJsonReplacer (line 1027) | function toJsonReplacer(key, value) {
  function toJson (line 1058) | function toJson(obj, pretty) {
  function fromJson (line 1076) | function fromJson(json) {
  function toBoolean (line 1083) | function toBoolean(value) {
  function startingTag (line 1098) | function startingTag(element) {
  function tryDecodeURIComponent (line 1130) | function tryDecodeURIComponent(value) {
  function parseKeyValue (line 1143) | function parseKeyValue(/**string*/keyValue) {
  function toKeyValue (line 1164) | function toKeyValue(obj) {
  function encodeUriSegment (line 1192) | function encodeUriSegment(val) {
  function encodeUriQuery (line 1211) | function encodeUriQuery(val, pctEncodeSpaces) {
  function angularInit (line 1267) | function angularInit(element, bootstrap) {
  function bootstrap (line 1365) | function bootstrap(element, modules) {
  function snake_case (line 1407) | function snake_case(name, separator){
  function bindJQuery (line 1414) | function bindJQuery() {
  function assertArg (line 1441) | function assertArg(arg, name, reason) {
  function assertArgFn (line 1448) | function assertArgFn(arg, name, acceptArrayAnnotation) {
  function assertNotHasOwnProperty (line 1463) | function assertNotHasOwnProperty(name, context) {
  function getter (line 1477) | function getter(obj, path, bindFnToScope) {
  function getBlockElements (line 1501) | function getBlockElements(nodes) {
  function setupModuleLoader (line 1529) | function setupModuleLoader(window) {
  function publishExternalAPI (line 1930) | function publishExternalAPI(angular){
  function jqNextId (line 2166) | function jqNextId() { return ++jqId; }
  function camelCase (line 2178) | function camelCase(name) {
  function jqLitePatchJQueryRemove (line 2194) | function jqLitePatchJQueryRemove(name, dispatchThis, filterElems, getter...
  function jqLiteIsTextNode (line 2248) | function jqLiteIsTextNode(html) {
  function jqLiteBuildFragment (line 2252) | function jqLiteBuildFragment(html, context) {
  function jqLiteParseHTML (line 2287) | function jqLiteParseHTML(html, context) {
  function JQLite (line 2299) | function JQLite(element) {
  function jqLiteClone (line 2322) | function jqLiteClone(element) {
  function jqLiteDealoc (line 2326) | function jqLiteDealoc(element){
  function jqLiteOff (line 2333) | function jqLiteOff(element, type, fn, unsupported) {
  function jqLiteRemoveData (line 2358) | function jqLiteRemoveData(element, name) {
  function jqLiteExpandoStore (line 2377) | function jqLiteExpandoStore(element, key, value) {
  function jqLiteData (line 2392) | function jqLiteData(element, key, value) {
  function jqLiteHasClass (line 2418) | function jqLiteHasClass(element, selector) {
  function jqLiteRemoveClass (line 2424) | function jqLiteRemoveClass(element, cssClasses) {
  function jqLiteAddClass (line 2436) | function jqLiteAddClass(element, cssClasses) {
  function jqLiteAddNodes (line 2452) | function jqLiteAddNodes(root, elements) {
  function jqLiteController (line 2463) | function jqLiteController(element, name) {
  function jqLiteInheritedData (line 2467) | function jqLiteInheritedData(element, name, value) {
  function jqLiteEmpty (line 2490) | function jqLiteEmpty(element) {
  function trigger (line 2506) | function trigger() {
  function getBooleanAttrName (line 2553) | function getBooleanAttrName(element, name) {
  function getText (line 2660) | function getText(element, value) {
  function createEventHandler (line 2745) | function createEventHandler(element, events) {
  function hashKey (line 3048) | function hashKey(obj) {
  function HashMap (line 3069) | function HashMap(array){
  function annotate (line 3167) | function annotate(fn) {
  function createInjector (line 3688) | function createInjector(modulesToLoad) {
  function $AnchorScrollProvider (line 3946) | function $AnchorScrollProvider() {
  function async (line 4081) | function async(fn) {
  function $$AsyncCallbackProvider (line 4244) | function $$AsyncCallbackProvider(){
  function Browser (line 4276) | function Browser(window, document, $log, $sniffer) {
  function $BrowserProvider (line 4630) | function $BrowserProvider(){
  function $CacheFactoryProvider (line 4716) | function $CacheFactoryProvider() {
  function $TemplateCacheProvider (line 5028) | function $TemplateCacheProvider() {
  function $CompileProvider (line 5543) | function $CompileProvider($provide, $$sanitizeUriProvider) {
  function directiveNormalize (line 6987) | function directiveNormalize(name) {
  function nodesetLinkingFn (line 7032) | function nodesetLinkingFn(
  function directiveLinkingFn (line 7039) | function directiveLinkingFn(
  function tokenDifference (line 7047) | function tokenDifference(str1, str2) {
  function $ControllerProvider (line 7073) | function $ControllerProvider() {
  function $DocumentProvider (line 7175) | function $DocumentProvider(){
  function $ExceptionHandlerProvider (line 7213) | function $ExceptionHandlerProvider() {
  function parseHeaders (line 7227) | function parseHeaders(headers) {
  function headersGetter (line 7262) | function headersGetter(headers) {
  function transformData (line 7287) | function transformData(data, headers, fns) {
  function isSuccess (line 7299) | function isSuccess(status) {
  function $HttpProvider (line 7304) | function $HttpProvider() {
  function createXhr (line 8257) | function createXhr(method) {
  function $HttpBackendProvider (line 8287) | function $HttpBackendProvider() {
  function createHttpBackend (line 8293) | function createHttpBackend($browser, createXhr, $browserDefer, callbacks...
  function $InterpolateProvider (line 8486) | function $InterpolateProvider() {
  function $IntervalProvider (line 8684) | function $IntervalProvider() {
  function $LocaleProvider (line 8878) | function $LocaleProvider(){
  function encodePath (line 8951) | function encodePath(path) {
  function parseAbsoluteUrl (line 8962) | function parseAbsoluteUrl(absoluteUrl, locationObj, appBase) {
  function parseAppUrl (line 8971) | function parseAppUrl(relativeUrl, locationObj, appBase) {
  function beginsWith (line 8996) | function beginsWith(begin, whole) {
  function stripHash (line 9003) | function stripHash(url) {
  function stripFile (line 9009) | function stripFile(url) {
  function serverBase (line 9014) | function serverBase(url) {
  function LocationHtml5Url (line 9027) | function LocationHtml5Url(appBase, basePrefix) {
  function LocationHashbangUrl (line 9095) | function LocationHashbangUrl(appBase, hashPrefix) {
  function LocationHashbangInHtml5Url (line 9191) | function LocationHashbangInHtml5Url(appBase, hashPrefix) {
  function locationGetter (line 9405) | function locationGetter(property) {
  function locationGetterSetter (line 9412) | function locationGetterSetter(property, preprocess) {
  function $LocationProvider (line 9457) | function $LocationProvider(){
  function $LogProvider (line 9672) | function $LogProvider(){
  function ensureSafeMemberName (line 9824) | function ensureSafeMemberName(name, fullExpression) {
  function ensureSafeObject (line 9833) | function ensureSafeObject(obj, fullExpression) {
  function setter (line 10645) | function setter(obj, path, setValue, fullExp, options) {
  function cspSafeGetterFn (line 10683) | function cspSafeGetterFn(key0, key1, key2, key3, key4, fullExp, options) {
  function simpleGetterFn1 (line 10787) | function simpleGetterFn1(key0, fullExp) {
  function simpleGetterFn2 (line 10796) | function simpleGetterFn2(key0, key1, fullExp) {
  function getterFn (line 10807) | function getterFn(path, options, fullExp) {
  function $ParseProvider (line 10935) | function $ParseProvider() {
  function $QProvider (line 11236) | function $QProvider() {
  function qFactory (line 11254) | function qFactory(nextTick, exceptionHandler) {
  function $$RAFProvider (line 11592) | function $$RAFProvider(){ //rAF
  function $RootScopeProvider (line 11691) | function $RootScopeProvider(){
  function $$SanitizeUriProvider (line 12758) | function $$SanitizeUriProvider() {
  function escapeForRegexp (line 12844) | function escapeForRegexp(s) {
  function adjustMatcher (line 12850) | function adjustMatcher(matcher) {
  function adjustMatchers (line 12878) | function adjustMatchers(matchers) {
  function $SceDelegateProvider (line 12954) | function $SceDelegateProvider() {
  function $SceProvider (line 13485) | function $SceProvider() {
  function $SnifferProvider (line 13898) | function $SnifferProvider() {
  function $TimeoutProvider (line 13975) | function $TimeoutProvider() {
  function urlResolve (line 14121) | function urlResolve(url, base) {
  function urlIsSameOrigin (line 14155) | function urlIsSameOrigin(requestUrl) {
  function $WindowProvider (line 14201) | function $WindowProvider(){
  function $FilterProvider (line 14280) | function $FilterProvider($provide) {
  function filterFilter (line 14448) | function filterFilter() {
  function currencyFilter (line 14602) | function currencyFilter($locale) {
  function numberFilter (line 14662) | function numberFilter($locale) {
  function formatNumber (line 14671) | function formatNumber(number, pattern, groupSep, decimalSep, fractionSiz...
  function padNumber (line 14745) | function padNumber(num, digits, trim) {
  function dateGetter (line 14759) | function dateGetter(name, size, offset, trim) {
  function dateStrGetter (line 14770) | function dateStrGetter(name, shortForm) {
  function timeZoneGetter (line 14779) | function timeZoneGetter(date) {
  function ampmGetter (line 14789) | function ampmGetter(date, formats) {
  function dateFilter (line 14905) | function dateFilter($locale) {
  function jsonFilter (line 15008) | function jsonFilter() {
  function limitToFilter (line 15105) | function limitToFilter(){
  function orderByFilter (line 15206) | function orderByFilter($parse){
  function ngDirective (line 15263) | function ngDirective(directive) {
  function FormController (line 15764) | function FormController(element, attrs, $scope, $animate) {
  function validate (line 16572) | function validate(ctrl, validatorName, validity, value){
  function addNativeHtml5Validators (line 16578) | function addNativeHtml5Validators(ctrl, validatorName, element) {
  function textInputType (line 16595) | function textInputType(scope, element, attr, ctrl, $sniffer, $browser) {
  function numberInputType (line 16734) | function numberInputType(scope, element, attr, ctrl, $sniffer, $browser) {
  function urlInputType (line 16779) | function urlInputType(scope, element, attr, ctrl, $sniffer, $browser) {
  function emailInputType (line 16790) | function emailInputType(scope, element, attr, ctrl, $sniffer, $browser) {
  function radioInputType (line 16801) | function radioInputType(scope, element, attr, ctrl) {
  function checkboxInputType (line 16823) | function checkboxInputType(scope, element, attr, ctrl) {
  function toggleValidCss (line 17207) | function toggleValidCss(isValid, validationErrorKey) {
  function getStringValue (line 17908) | function getStringValue() { return (parsed(scope) || '').toString(); }
  function classDirective (line 17916) | function classDirective(name, selector) {
  function getBlockStart (line 20102) | function getBlockStart(block) {
  function getBlockEnd (line 20106) | function getBlockEnd(block) {
  function setupAsSingle (line 21050) | function setupAsSingle(scope, selectElement, ngModelCtrl, selectCtrl) {
  function setupAsMultiple (line 21075) | function setupAsMultiple(scope, selectElement, ctrl) {
  function setupAsOptions (line 21106) | function setupAsOptions(scope, selectElement, ctrl) {

FILE: maverix-theme/bower_components/bootstrap/dist/js/bootstrap.js
  function transitionEnd (line 24) | function transitionEnd() {
  function removeElement (line 101) | function removeElement() {
  function clearMenus (line 716) | function clearMenus(e) {
  function getParent (line 728) | function getParent($this) {
  function complete (line 1296) | function complete() {
  function ScrollSpy (line 1550) | function ScrollSpy(element, options) {
  function next (line 1746) | function next() {

FILE: maverix-theme/bower_components/bootstrap/grunt/bs-lessdoc-parser.js
  function markdown2html (line 11) | function markdown2html(markdownString) {
  function Section (line 40) | function Section(heading, customizable) {
  function SubSection (line 52) | function SubSection(heading) {
  function VarDocstring (line 62) | function VarDocstring(markdownString) {
  function SectionDocstring (line 66) | function SectionDocstring(markdownString) {
  function Variable (line 70) | function Variable(name, defaultValue) {
  function Tokenizer (line 76) | function Tokenizer(fileContent) {
  function Parser (line 140) | function Parser(fileContent) {

FILE: maverix-theme/bower_components/bootstrap/grunt/bs-raw-files-generator.js
  function getFiles (line 12) | function getFiles(type) {

FILE: maverix-theme/bower_components/bootstrap/grunt/shrinkwrap.js
  function updateShrinkwrap (line 17) | function updateShrinkwrap(grunt) {

FILE: maverix-theme/bower_components/bootstrap/js/alert.js
  function removeElement (line 44) | function removeElement() {

FILE: maverix-theme/bower_components/bootstrap/js/dropdown.js
  function clearMenus (line 85) | function clearMenus(e) {
  function getParent (line 97) | function getParent($this) {

FILE: maverix-theme/bower_components/bootstrap/js/scrollspy.js
  function ScrollSpy (line 16) | function ScrollSpy(element, options) {

FILE: maverix-theme/bower_components/bootstrap/js/tab.js
  function next (line 58) | function next() {

FILE: maverix-theme/bower_components/bootstrap/js/tooltip.js
  function complete (line 273) | function complete() {

FILE: maverix-theme/bower_components/bootstrap/js/transition.js
  function transitionEnd (line 16) | function transitionEnd() {

FILE: maverix-theme/bower_components/bootstrap/test-infra/s3_cache.py
  function _sha256_of_file (line 23) | def _sha256_of_file(filename):
  function _delete_file_quietly (line 32) | def _delete_file_quietly(filename):
  function _tarball_size (line 39) | def _tarball_size(directory):
  function _tarball_filename_for (line 44) | def _tarball_filename_for(directory):
  function _create_tarball (line 48) | def _create_tarball(directory):
  function _extract_tarball (line 53) | def _extract_tarball(directory):
  function download (line 58) | def download(directory):
  function upload (line 72) | def upload(directory):

FILE: maverix-theme/bower_components/css-toggle-switch/test/tests.js
  function testSwitchTheme (line 1) | function testSwitchTheme(name, theme) {
  function testSwitchNumber (line 19) | function testSwitchNumber(name, number) {
  function triggerEventOnPage (line 28) | function triggerEventOnPage(element, eventName) {

FILE: maverix-theme/bower_components/flot/examples/axes-time-zones/date.js
  function invalidTZError (line 417) | function invalidTZError(t) { throw new Error('Timezone "' + t + '" is ei...
  function builtInLoadZoneFile (line 418) | function builtInLoadZoneFile(fileName, opts) {
  function getRegionForTimezone (line 436) | function getRegionForTimezone(tz) {
  function parseTimeString (line 457) | function parseTimeString(str) {
  function processZone (line 466) | function processZone(z) {
  function getZone (line 479) | function getZone(dt, tz) {
  function getBasicOffset (line 510) | function getBasicOffset(time) {
  function getRule (line 519) | function getRule(dt, zone, isUTC) {
  function getAdjustedOffset (line 702) | function getAdjustedOffset(off, rule) {
  function getAbbreviation (line 705) | function getAbbreviation(zone, rule) {

FILE: maverix-theme/bower_components/flot/excanvas.js
  function getContext (line 59) | function getContext() {
  function bind (line 82) | function bind(f, obj, var_args) {
  function encodeHtmlAttribute (line 89) | function encodeHtmlAttribute(s) {
  function addNamespace (line 93) | function addNamespace(doc, prefix, urn) {
  function addNamespacesAndStylesheet (line 99) | function addNamespacesAndStylesheet(doc) {
  function onPropertyChange (line 178) | function onPropertyChange(e) {
  function onResize (line 196) | function onResize(e) {
  function createMatrixIdentity (line 214) | function createMatrixIdentity() {
  function matrixMultiply (line 222) | function matrixMultiply(m1, m2) {
  function copyState (line 239) | function copyState(o1, o2) {
  function getRgbHslContent (line 394) | function getRgbHslContent(styleString) {
  function percent (line 405) | function percent(s) {
  function clamp (line 409) | function clamp(v, min, max) {
  function hslToRgb (line 413) | function hslToRgb(parts){
  function hueToRgb (line 435) | function hueToRgb(m1, m2, h) {
  function processStyle (line 453) | function processStyle(styleString) {
  function processFontStyle (line 496) | function processFontStyle(styleString) {
  function getComputedStyle (line 518) | function getComputedStyle(style, element) {
  function buildStyle (line 550) | function buildStyle(style) {
  function processLineCap (line 560) | function processLineCap(lineCap) {
  function CanvasRenderingContext2D_ (line 570) | function CanvasRenderingContext2D_(canvasElement) {
  function bezierCurveTo (line 649) | function bezierCurveTo(self, cp1, cp2, p) {
  function appendStroke (line 978) | function appendStroke(ctx, lineStr) {
  function appendFill (line 1001) | function appendFill(ctx, lineStr, min, max) {
  function getCoords (line 1112) | function getCoords(ctx, aX, aY) {
  function matrixIsFinite (line 1135) | function matrixIsFinite(m) {
  function setM (line 1141) | function setM(ctx, m, updateLineScale) {
  function CanvasGradient_ (line 1344) | function CanvasGradient_(aType) {
  function CanvasPattern_ (line 1362) | function CanvasPattern_(image, repetition) {
  function throwException (line 1384) | function throwException(s) {
  function assertImageIsValid (line 1388) | function assertImageIsValid(img) {
  function DOMException_ (line 1397) | function DOMException_(s) {

FILE: maverix-theme/bower_components/flot/excanvas.min.js
  function y (line 1) | function y(){return this.context_||(this.context_=new D(this))}
  function g (line 1) | function g(j,m,p){var i=t.call(arguments,2);return function(){return j.a...
  function af (line 1) | function af(i){return String(i).replace(/&/g,"&amp;").replace(/"/g,"&quo...
  function Y (line 1) | function Y(m,j,i){if(!m.namespaces[j]){m.namespaces.add(j,i,"#default#VM...
  function R (line 1) | function R(j){Y(j,"g_vml_","urn:schemas-microsoft-com:vml");Y(j,"g_o_","...
  function x (line 1) | function x(j){var i=j.srcElement;switch(j.propertyName){case"width":i.ge...
  function W (line 1) | function W(j){var i=j.srcElement;if(i.firstChild){i.firstChild.style.wid...
  function B (line 1) | function B(){return[[1,0,0],[0,1,0],[0,0,1]]}
  function J (line 1) | function J(p,m){var j=B();for(var i=0;i<3;i++){for(var ah=0;ah<3;ah++){v...
  function v (line 1) | function v(j,i){i.fillStyle=j.fillStyle;i.lineCap=j.lineCap;i.lineJoin=j...
  function M (line 1) | function M(j){var p=j.indexOf("(",3);var i=j.indexOf(")",p+1);var m=j.su...
  function c (line 1) | function c(i){return parseFloat(i)/100}
  function r (line 1) | function r(j,m,i){return Math.min(i,Math.max(m,j))}
  function I (line 1) | function I(ag){var i,ai,aj,ah,ak,Z;ah=parseFloat(ag[0])/360%360;if(ah<0)...
  function a (line 1) | function a(j,i,m){if(m<0){m++}if(m>1){m--}if(6*m<1){return j+(i-j)*6*m}e...
  function F (line 1) | function F(j){if(j in C){return C[j]}var ag,Z=1;j=String(j);if(j.charAt(...
  function E (line 1) | function E(i){if(L[i]){return L[i]}var p=document.createElement("div");v...
  function u (line 1) | function u(m,j){var i={};for(var ah in m){i[ah]=m[ah]}var ag=parseFloat(...
  function ac (line 1) | function ac(i){return i.style+" "+i.variant+" "+i.weight+" "+i.size+"px ...
  function S (line 1) | function S(i){return s[i]||"square"}
  function D (line 1) | function D(i){this.m_=B();this.mStack_=[];this.aStack_=[];this.currentPa...
  function K (line 1) | function K(i,Z,m,j){i.currentPath_.push({type:"bezierCurveTo",cp1x:Z.x,c...
  function w (line 1) | function w(m,ag){var j=F(m.strokeStyle);var p=j.color;var Z=j.alpha*m.gl...
  function G (line 1) | function G(aq,ai,aK,ar){var aj=aq.fillStyle;var aB=aq.arcScaleX_;var aA=...
  function V (line 1) | function V(j,Z,p){var i=j.m_;return{x:d*(Z*i[0][0]+p*i[1][0]+i[2][0])-f,...
  function h (line 1) | function h(i){return isFinite(i[0][0])&&isFinite(i[0][1])&&isFinite(i[1]...
  function aa (line 1) | function aa(j,i,p){if(!h(i)){return}j.m_=i;if(p){var Z=i[0][0]*i[1][1]-i...
  function U (line 1) | function U(i){this.type_=i;this.x0_=0;this.y0_=0;this.r0_=0;this.x1_=0;t...
  function T (line 1) | function T(j,i){Q(j);switch(i){case"repeat":case null:case"":this.repeti...
  function O (line 1) | function O(i){throw new P(i)}
  function Q (line 1) | function Q(i){if(!i||i.nodeType!=1||i.tagName!="IMG"){O("TYPE_MISMATCH_E...
  function P (line 1) | function P(i){this.code=this[i];this.message=i+": DOM Exception "+this.c...

FILE: maverix-theme/bower_components/flot/jquery.colorhelpers.js
  function clamp (line 55) | function clamp(min, value, max) {

FILE: maverix-theme/bower_components/flot/jquery.flot.canvas.js
  function init (line 42) | function init(plot, classes) {

FILE: maverix-theme/bower_components/flot/jquery.flot.categories.js
  function processRawData (line 56) | function processRawData(plot, series, data, datapoints) {
  function getNextIndex (line 97) | function getNextIndex(categories) {
  function categoriesTickGenerator (line 107) | function categoriesTickGenerator(axis) {
  function setupCategoriesForAxis (line 120) | function setupCategoriesForAxis(series, axis, datapoints) {
  function transformPointsOnAxis (line 146) | function transformPointsOnAxis(datapoints, axis, categories) {
  function processDatapoints (line 174) | function processDatapoints(plot, series, datapoints) {
  function init (line 179) | function init(plot) {

FILE: maverix-theme/bower_components/flot/jquery.flot.crosshair.js
  function init (line 70) | function init(plot) {

FILE: maverix-theme/bower_components/flot/jquery.flot.errorbars.js
  function processRawData (line 76) | function processRawData(plot, series, data, datapoints){
  function parseErrors (line 107) | function parseErrors(series, i){
  function drawSeriesErrors (line 162) | function drawSeriesErrors(plot, ctx, s){
  function drawError (line 275) | function drawError(ctx,err,x,y,upper,lower,drawUpper,drawLower,radius,of...
  function drawPath (line 322) | function drawPath(ctx, pts){
  function draw (line 330) | function draw(plot, ctx){
  function init (line 342) | function init(plot) {

FILE: maverix-theme/bower_components/flot/jquery.flot.fillbetween.js
  function init (line 40) | function init( plot ) {

FILE: maverix-theme/bower_components/flot/jquery.flot.image.js
  function drawSeries (line 118) | function drawSeries(plot, ctx, series) {
  function processRawData (line 216) | function processRawData(plot, series, data, datapoints) {
  function init (line 230) | function init(plot) {

FILE: maverix-theme/bower_components/flot/jquery.flot.js
  function clamp (line 32) | function clamp(min,value,max){return value<min?min:value>max?max:value}
  function Canvas (line 67) | function Canvas(cls, container) {
  function Plot (line 508) | function Plot(placeholder, data_, options_, plugins) {
  function floorInBase (line 3164) | function floorInBase(n, base) {

FILE: maverix-theme/bower_components/flot/jquery.flot.navigate.js
  function e (line 90) | function e(h){var k,j=this,l=h.data||{};if(l.elem)j=h.dragTarget=l.elem,...
  function f (line 90) | function f(b,c,d){b.type=c;var e=a.event.dispatch.call(d,b);return e===!...
  function g (line 90) | function g(a){return Math.pow(a,2)}
  function h (line 90) | function h(){return d.dragging===!1}
  function i (line 90) | function i(a,b){a&&(a.unselectable=b?"off":"on",a.onselectstart=function...
  function e (line 103) | function e(a){var b=a||window.event,c=[].slice.call(arguments,1),f=0,e=0...
  function init (line 126) | function init(plot) {

FILE: maverix-theme/bower_components/flot/jquery.flot.pie.js
  function init (line 68) | function init(plot) {

FILE: maverix-theme/bower_components/flot/jquery.flot.resize.js
  function a (line 22) | function a(e,n,a){var r=$(this),s=r.data(m)||{};s.w=n!==t?n:r.width();s....
  function h (line 22) | function h(t){if(r===true){r=t||1}for(var s=i.length-1;s>=0;s--){var l=$...
  function init (line 27) | function init(plot) {

FILE: maverix-theme/bower_components/flot/jquery.flot.selection.js
  function init (line 82) | function init(plot) {

FILE: maverix-theme/bower_components/flot/jquery.flot.stack.js
  function init (line 43) | function init(plot) {

FILE: maverix-theme/bower_components/flot/jquery.flot.symbol.js
  function processRawData (line 17) | function processRawData(plot, series, datapoints) {
  function init (line 62) | function init(plot) {

FILE: maverix-theme/bower_components/flot/jquery.flot.threshold.js
  function init (line 50) | function init(plot) {

FILE: maverix-theme/bower_components/flot/jquery.flot.time.js
  function floorInBase (line 24) | function floorInBase(n, base) {
  function formatDate (line 31) | function formatDate(d, fmt, monthNames, dayNames) {
  function makeUtcWrapper (line 111) | function makeUtcWrapper(d) {
  function dateGenerator (line 145) | function dateGenerator(ts, opts) {
  function init (line 197) | function init(plot) {

FILE: maverix-theme/bower_components/flot/jquery.js
  function createOptions (line 911) | function createOptions( options ) {
  function dataAttr (line 1801) | function dataAttr( elem, key, data ) {
  function isEmptyDataObject (line 1833) | function isEmptyDataObject( obj ) {
  function returnFalse (line 3274) | function returnFalse() {
  function returnTrue (line 3277) | function returnTrue() {
  function Sizzle (line 3880) | function Sizzle( selector, context, results, seed ) {
  function createInputPseudo (line 3949) | function createInputPseudo( type ) {
  function createButtonPseudo (line 3957) | function createButtonPseudo( type ) {
  function createPositionalPseudo (line 3965) | function createPositionalPseudo( fn ) {
  function siblingCheck (line 4560) | function siblingCheck( a, b, ret ) {
  function tokenize (line 4683) | function tokenize( selector, parseOnly ) {
  function addCombinator (line 4746) | function addCombinator( matcher, combinator, base ) {
  function elementMatcher (line 4798) | function elementMatcher( matchers ) {
  function condense (line 4812) | function condense( unmatched, map, filter, context, xml ) {
  function setMatcher (line 4833) | function setMatcher( preFilter, selector, matcher, postFilter, postFinde...
  function matcherFromTokens (line 4926) | function matcherFromTokens( tokens ) {
  function matcherFromGroupMatchers (line 4978) | function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
  function multipleContexts (line 5102) | function multipleContexts( selector, contexts, results ) {
  function select (line 5111) | function select( selector, context, results, seed, xml ) {
  function setFilters (line 5338) | function setFilters() {}
  function isDisconnected (line 5504) | function isDisconnected( node ) {
  function sibling (line 5508) | function sibling( cur, dir ) {
  function winnow (line 5616) | function winnow( elements, qualifier, keep ) {
  function createSafeFragment (line 5649) | function createSafeFragment( document ) {
  function findOrAppend (line 6033) | function findOrAppend( elem, tag ) {
  function cloneCopyEvent (line 6037) | function cloneCopyEvent( src, dest ) {
  function cloneFixAttributes (line 6065) | function cloneFixAttributes( src, dest ) {
  function getAll (line 6208) | function getAll( elem ) {
  function fixDefaultChecked (line 6221) | function fixDefaultChecked( elem ) {
  function jQuerySub (line 6517) | function jQuerySub( selector, context ) {
  function vendorPropName (line 6563) | function vendorPropName( style, name ) {
  function isHidden (line 6585) | function isHidden( elem, el ) {
  function showHide (line 6590) | function showHide( elements, show ) {
  function setPositiveNumber (line 6900) | function setPositiveNumber( elem, value, subtract ) {
  function augmentWidthOrHeight (line 6907) | function augmentWidthOrHeight( elem, name, extra, isBorderBox ) {
  function getWidthOrHeight (line 6949) | function getWidthOrHeight( elem, name, extra ) {
  function css_defaultDisplay (line 6992) | function css_defaultDisplay( nodeName ) {
  function buildParams (line 7246) | function buildParams( prefix, obj, traditional, add ) {
  function addToPrefiltersOrTransports (line 7335) | function addToPrefiltersOrTransports( structure ) {
  function inspectPrefiltersOrTransports (line 7369) | function inspectPrefiltersOrTransports( structure, options, originalOpti...
  function ajaxExtend (line 7411) | function ajaxExtend( target, src ) {
  function done (line 7722) | function done( status, nativeStatusText, responses, headers ) {
  function ajaxHandleResponses (line 8015) | function ajaxHandleResponses( s, jqXHR, responses ) {
  function ajaxConvert (line 8077) | function ajaxConvert( s, response ) {
  function createStandardXHR (line 8344) | function createStandardXHR() {
  function createActiveXHR (line 8350) | function createActiveXHR() {
  function createFxNow (line 8604) | function createFxNow() {
  function createTweens (line 8611) | function createTweens( animation, props ) {
  function Animation (line 8626) | function Animation( elem, properties, options ) {
  function propFilter (line 8724) | function propFilter( props, specialEasing ) {
  function defaultPrefilter (line 8791) | function defaultPrefilter( elem, props, opts ) {
  function Tween (line 8915) | function Tween( elem, options, prop, end, easing ) {
  function genFx (line 9099) | function genFx( type, includeWidth ) {
  function getWindow (line 9405) | function getWindow( elem ) {

FILE: maverix-theme/bower_components/jquery/dist/jquery.js
  function isArraylike (line 534) | function isArraylike( obj ) {
  function Sizzle (line 737) | function Sizzle( selector, context, results, seed ) {
  function createCache (line 852) | function createCache() {
  function markFunction (line 870) | function markFunction( fn ) {
  function assert (line 879) | function assert( fn ) {
  function addHandle (line 901) | function addHandle( attrs, handler ) {
  function siblingCheck (line 916) | function siblingCheck( a, b ) {
  function createInputPseudo (line 943) | function createInputPseudo( type ) {
  function createButtonPseudo (line 954) | function createButtonPseudo( type ) {
  function createPositionalPseudo (line 965) | function createPositionalPseudo( fn ) {
  function testContext (line 988) | function testContext( context ) {
  function setFilters (line 1985) | function setFilters() {}
  function toSelector (line 2056) | function toSelector( tokens ) {
  function addCombinator (line 2066) | function addCombinator( matcher, combinator, base ) {
  function elementMatcher (line 2119) | function elementMatcher( matchers ) {
  function multipleContexts (line 2133) | function multipleContexts( selector, contexts, results ) {
  function condense (line 2142) | function condense( unmatched, map, filter, context, xml ) {
  function setMatcher (line 2163) | function setMatcher( preFilter, selector, matcher, postFilter, postFinde...
  function matcherFromTokens (line 2256) | function matcherFromTokens( tokens ) {
  function matcherFromGroupMatchers (line 2311) | function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
  function winnow (line 2607) | function winnow( elements, qualifier, not ) {
  function sibling (line 2932) | function sibling( cur, dir ) {
  function createOptions (line 3010) | function createOptions( options ) {
  function completed (line 3404) | function completed() {
  function Data (line 3509) | function Data() {
  function dataAttr (line 3701) | function dataAttr( elem, key, data ) {
  function returnTrue (line 4040) | function returnTrue() {
  function returnFalse (line 4044) | function returnFalse() {
  function safeActiveElement (line 4048) | function safeActiveElement() {
  function manipulationTarget (line 4920) | function manipulationTarget( elem, content ) {
  function disableScript (line 4930) | function disableScript( elem ) {
  function restoreScript (line 4934) | function restoreScript( elem ) {
  function setGlobalEval (line 4947) | function setGlobalEval( elems, refElements ) {
  function cloneCopyEvent (line 4958) | function cloneCopyEvent( src, dest ) {
  function getAll (line 4992) | function getAll( context, tag ) {
  function fixInput (line 5003) | function fixInput( src, dest ) {
  function actualDisplay (line 5460) | function actualDisplay( name, doc ) {
  function defaultDisplay (line 5482) | function defaultDisplay( nodeName ) {
  function curCSS (line 5522) | function curCSS( elem, name, computed ) {
  function addGetHookIf (line 5570) | function addGetHookIf( conditionFn, hookFn ) {
  function computePixelPositionAndBoxSizingReliable (line 5610) | function computePixelPositionAndBoxSizingReliable() {
  function vendorPropName (line 5712) | function vendorPropName( style, name ) {
  function setPositiveNumber (line 5734) | function setPositiveNumber( elem, value, subtract ) {
  function augmentWidthOrHeight (line 5742) | function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
  function getWidthOrHeight (line 5781) | function getWidthOrHeight( elem, name, extra ) {
  function showHide (line 5825) | function showHide( elements, show ) {
  function Tween (line 6124) | function Tween( elem, options, prop, end, easing ) {
  function createFxNow (line 6293) | function createFxNow() {
  function genFx (line 6301) | function genFx( type, includeWidth ) {
  function createTween (line 6321) | function createTween( value, prop, animation ) {
  function defaultPrefilter (line 6335) | function defaultPrefilter( elem, props, opts ) {
  function propFilter (line 6469) | function propFilter( props, specialEasing ) {
  function Animation (line 6506) | function Animation( elem, properties, options ) {
  function addToPrefiltersOrTransports (line 7573) | function addToPrefiltersOrTransports( structure ) {
  function inspectPrefiltersOrTransports (line 7605) | function inspectPrefiltersOrTransports( structure, options, originalOpti...
  function ajaxExtend (line 7632) | function ajaxExtend( target, src ) {
  function ajaxHandleResponses (line 7652) | function ajaxHandleResponses( s, jqXHR, responses ) {
  function ajaxConvert (line 7708) | function ajaxConvert( s, response, jqXHR, isSuccess ) {
  function done (line 8165) | function done( status, nativeStatusText, responses, headers ) {
  function buildParams (line 8417) | function buildParams( prefix, obj, traditional, add ) {
  function getWindow (line 8900) | function getWindow( elem ) {

FILE: maverix-theme/bower_components/jquery/src/ajax.js
  function addToPrefiltersOrTransports (line 63) | function addToPrefiltersOrTransports( structure ) {
  function inspectPrefiltersOrTransports (line 95) | function inspectPrefiltersOrTransports( structure, options, originalOpti...
  function ajaxExtend (line 122) | function ajaxExtend( target, src ) {
  function ajaxHandleResponses (line 142) | function ajaxHandleResponses( s, jqXHR, responses ) {
  function ajaxConvert (line 198) | function ajaxConvert( s, response, jqXHR, isSuccess ) {
  function done (line 655) | function done( status, nativeStatusText, responses, headers ) {

FILE: maverix-theme/bower_components/jquery/src/callbacks.js
  function createOptions (line 10) | function createOptions( options ) {

FILE: maverix-theme/bower_components/jquery/src/core.js
  function isArraylike (line 481) | function isArraylike( obj ) {

FILE: maverix-theme/bower_components/jquery/src/core/ready.js
  function completed (line 64) | function completed() {

FILE: maverix-theme/bower_components/jquery/src/css.js
  function vendorPropName (line 39) | function vendorPropName( style, name ) {
  function setPositiveNumber (line 61) | function setPositiveNumber( elem, value, subtract ) {
  function augmentWidthOrHeight (line 69) | function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
  function getWidthOrHeight (line 108) | function getWidthOrHeight( elem, name, extra ) {
  function showHide (line 152) | function showHide( elements, show ) {

FILE: maverix-theme/bower_components/jquery/src/css/addGetHookIf.js
  function addGetHookIf (line 3) | function addGetHookIf( conditionFn, hookFn ) {

FILE: maverix-theme/bower_components/jquery/src/css/curCSS.js
  function curCSS (line 9) | function curCSS( elem, name, computed ) {

FILE: maverix-theme/bower_components/jquery/src/css/defaultDisplay.js
  function actualDisplay (line 15) | function actualDisplay( name, doc ) {
  function defaultDisplay (line 37) | function defaultDisplay( nodeName ) {

FILE: maverix-theme/bower_components/jquery/src/css/support.js
  function computePixelPositionAndBoxSizingReliable (line 26) | function computePixelPositionAndBoxSizingReliable() {

FILE: maverix-theme/bower_components/jquery/src/data.js
  function dataAttr (line 23) | function dataAttr( elem, key, data ) {

FILE: maverix-theme/bower_components/jquery/src/data/Data.js
  function Data (line 7) | function Data() {

FILE: maverix-theme/bower_components/jquery/src/effects.js
  function createFxNow (line 75) | function createFxNow() {
  function genFx (line 83) | function genFx( type, includeWidth ) {
  function createTween (line 103) | function createTween( value, prop, animation ) {
  function defaultPrefilter (line 117) | function defaultPrefilter( elem, props, opts ) {
  function propFilter (line 251) | function propFilter( props, specialEasing ) {
  function Animation (line 288) | function Animation( elem, properties, options ) {

FILE: maverix-theme/bower_components/jquery/src/effects/Tween.js
  function Tween (line 6) | function Tween( elem, options, prop, end, easing ) {

FILE: maverix-theme/bower_components/jquery/src/event.js
  function returnTrue (line 21) | function returnTrue() {
  function returnFalse (line 25) | function returnFalse() {
  function safeActiveElement (line 29) | function safeActiveElement() {

FILE: maverix-theme/bower_components/jquery/src/manipulation.js
  function manipulationTarget (line 51) | function manipulationTarget( elem, content ) {
  function disableScript (line 61) | function disableScript( elem ) {
  function restoreScript (line 65) | function restoreScript( elem ) {
  function setGlobalEval (line 78) | function setGlobalEval( elems, refElements ) {
  function cloneCopyEvent (line 89) | function cloneCopyEvent( src, dest ) {
  function getAll (line 123) | function getAll( context, tag ) {
  function fixInput (line 134) | function fixInput( src, dest ) {

FILE: maverix-theme/bower_components/jquery/src/offset.js
  function getWindow (line 20) | function getWindow( elem ) {

FILE: maverix-theme/bower_components/jquery/src/serialize.js
  function buildParams (line 15) | function buildParams( prefix, obj, traditional, add ) {

FILE: maverix-theme/bower_components/jquery/src/sizzle/dist/sizzle.js
  function Sizzle (line 188) | function Sizzle( selector, context, results, seed ) {
  function createCache (line 303) | function createCache() {
  function markFunction (line 321) | function markFunction( fn ) {
  function assert (line 330) | function assert( fn ) {
  function addHandle (line 352) | function addHandle( attrs, handler ) {
  function siblingCheck (line 367) | function siblingCheck( a, b ) {
  function createInputPseudo (line 394) | function createInputPseudo( type ) {
  function createButtonPseudo (line 405) | function createButtonPseudo( type ) {
  function createPositionalPseudo (line 416) | function createPositionalPseudo( fn ) {
  function testContext (line 439) | function testContext( context ) {
  function setFilters (line 1436) | function setFilters() {}
  function toSelector (line 1507) | function toSelector( tokens ) {
  function addCombinator (line 1517) | function addCombinator( matcher, combinator, base ) {
  function elementMatcher (line 1570) | function elementMatcher( matchers ) {
  function multipleContexts (line 1584) | function multipleContexts( selector, contexts, results ) {
  function condense (line 1593) | function condense( unmatched, map, filter, context, xml ) {
  function setMatcher (line 1614) | function setMatcher( preFilter, selector, matcher, postFilter, postFinde...
  function matcherFromTokens (line 1707) | function matcherFromTokens( tokens ) {
  function matcherFromGroupMatchers (line 1762) | function matcherFromGroupMatchers( elementMatchers, setMatchers ) {

FILE: maverix-theme/bower_components/jquery/src/traversing.js
  function sibling (line 128) | function sibling( cur, dir ) {

FILE: maverix-theme/bower_components/jquery/src/traversing/findFilter.js
  function winnow (line 11) | function winnow( elements, qualifier, not ) {

FILE: maverix-theme/bower_components/rangeslider.js/dist/rangeslider.js
  function supportsRange (line 18) | function supportsRange() {
  function delay (line 45) | function delay(fn, wait) {
  function debounce (line 58) | function debounce(fn, debounceDuration) {
  function Plugin (line 79) | function Plugin(element, options) {
Condensed preview — 319 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (4,207K chars).
[
  {
    "path": "README.md",
    "chars": 3475,
    "preview": "Maverix\n=======\n\n![Maverix](http://screenisland.com/maverix/maverix.png)\n\n### Demo (Use Webkit or Blink Rendering Engine"
  },
  {
    "path": "maverix-theme/app/img/.gitkeep",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "maverix-theme/app/js/app.js",
    "chars": 1426,
    "preview": "'use strict';\n\n\n// Declare app level module which depends on filters, and services\nangular.module('myApp', [\n    'ngRout"
  },
  {
    "path": "maverix-theme/app/js/controllers.js",
    "chars": 2932,
    "preview": "'use strict';\n\n/* Controllers */\n\nangular.module('myApp.controllers', [])\n    .controller('MaverixCtrl', ['$scope', func"
  },
  {
    "path": "maverix-theme/app/js/directives.js",
    "chars": 212,
    "preview": "'use strict';\n\n/* Directives */\n\n\nangular.module('myApp.directives', []).\n  directive('appVersion', ['version', function"
  },
  {
    "path": "maverix-theme/app/js/filters.js",
    "chars": 226,
    "preview": "'use strict';\n\n/* Filters */\n\nangular.module('myApp.filters', []).\n  filter('interpolate', ['version', function(version)"
  },
  {
    "path": "maverix-theme/app/js/services.js",
    "chars": 199,
    "preview": "'use strict';\n\n/* Services */\n\n\n// Demonstrate how to register services\n// In this case it is a simple value service.\nva"
  },
  {
    "path": "maverix-theme/app/partials/.gitkeep",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "maverix-theme/app/partials/charts.html",
    "chars": 2796,
    "preview": "<div class=\"row\">\n    <div class=\"col-md-12\">\n        <h2>Charts</h2>\n\n        <div id=\"placeholder\" class=\"demo-placeho"
  },
  {
    "path": "maverix-theme/app/partials/controls.html",
    "chars": 7298,
    "preview": "<div class=\"row\">\n    <div class=\"col-sm-12\">\n\n    <h2>Rangeslider</h2>\n\n    <p>\n        <input type=\"range\"/>\n        <"
  },
  {
    "path": "maverix-theme/app/partials/forms.html",
    "chars": 2228,
    "preview": "<div class=\"row\">\n    <div class=\"col-md-12\">\n        <form role=\"form\">\n            <div class=\"form-group\">\n          "
  },
  {
    "path": "maverix-theme/app/partials/icons.html",
    "chars": 17817,
    "preview": "<h2>PNG Icons</h2>\n<img src=\"img/iconset-addictive-flavour-set/preview_af_1.jpg\" width=\"600px\" alt=\"\"/>\n<p>These awesome"
  },
  {
    "path": "maverix-theme/app/partials/maverix.html",
    "chars": 3787,
    "preview": "<div class=\"row\">\n    <div class=\"col-sm-12\">\n        <h2>What is Maverix?</h2>\n\n        <p class=\"indent\">Maverix is a "
  },
  {
    "path": "maverix-theme/app/partials/modals.html",
    "chars": 3292,
    "preview": "<!-- Button trigger modal -->\n        <div class=\"text-center\">\n            <button class=\"btn btn-default\" data-toggle="
  },
  {
    "path": "maverix-theme/app/partials/partial1.html",
    "chars": 6051,
    "preview": "<div class=\"sub-nav\">\n    <ul>\n        <li ng-class=\"{selected : $parent.subNav1 === 0}\"><a href=\"\" ng-click=\"$parent.su"
  },
  {
    "path": "maverix-theme/app/partials/partial2.html",
    "chars": 3808,
    "preview": "<div class=\"row\">\n    <div class=\"col-sm-12\">\n        <div class=\"table-cell\" style=\"height: 500px\">\n            <table "
  },
  {
    "path": "maverix-theme/app/partials/tables.html",
    "chars": 6083,
    "preview": "<div class=\"row content-block\">\n    <div class=\"col-sm-12\">\n        <h2>Table Small</h2>\n\n        <div class=\"table-cell"
  },
  {
    "path": "maverix-theme/app/partials/type.html",
    "chars": 707,
    "preview": "<h1>Heading One</h1>\n<p>The Heading One style should be used rarely and only on specifically crafted pages. Make Sure it"
  },
  {
    "path": "maverix-theme/bower_components/angular/.bower.json",
    "chars": 436,
    "preview": "{\n  \"name\": \"angular\",\n  \"version\": \"1.2.16\",\n  \"main\": \"./angular.js\",\n  \"dependencies\": {},\n  \"homepage\": \"https://git"
  },
  {
    "path": "maverix-theme/bower_components/angular/README.md",
    "chars": 1615,
    "preview": "# bower-angular\n\nThis repo is for distribution on `bower`. The source for this module is in the\n[main AngularJS repo](ht"
  },
  {
    "path": "maverix-theme/bower_components/angular/angular-csp.css",
    "chars": 346,
    "preview": "/* Include this file in your html if you are using the CSP mode. */\n\n@charset \"UTF-8\";\n\n[ng\\:cloak], [ng-cloak], [data-n"
  },
  {
    "path": "maverix-theme/bower_components/angular/angular.js",
    "chars": 756251,
    "preview": "/**\n * @license AngularJS v1.2.16\n * (c) 2010-2014 Google, Inc. http://angularjs.org\n * License: MIT\n */\n(function(windo"
  },
  {
    "path": "maverix-theme/bower_components/angular/bower.json",
    "chars": 98,
    "preview": "{\n  \"name\": \"angular\",\n  \"version\": \"1.2.16\",\n  \"main\": \"./angular.js\",\n  \"dependencies\": {\n  }\n}\n"
  },
  {
    "path": "maverix-theme/bower_components/angular-route/.bower.json",
    "chars": 493,
    "preview": "{\n  \"name\": \"angular-route\",\n  \"version\": \"1.2.16\",\n  \"main\": \"./angular-route.js\",\n  \"dependencies\": {\n    \"angular\": \""
  },
  {
    "path": "maverix-theme/bower_components/angular-route/README.md",
    "chars": 1780,
    "preview": "# bower-angular-route\n\nThis repo is for distribution on `bower`. The source for this module is in the\n[main AngularJS re"
  },
  {
    "path": "maverix-theme/bower_components/angular-route/angular-route.js",
    "chars": 33104,
    "preview": "/**\n * @license AngularJS v1.2.16\n * (c) 2010-2014 Google, Inc. http://angularjs.org\n * License: MIT\n */\n(function(windo"
  },
  {
    "path": "maverix-theme/bower_components/angular-route/bower.json",
    "chars": 134,
    "preview": "{\n  \"name\": \"angular-route\",\n  \"version\": \"1.2.16\",\n  \"main\": \"./angular-route.js\",\n  \"dependencies\": {\n    \"angular\": \""
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/.bower.json",
    "chars": 850,
    "preview": "{\n  \"name\": \"bootstrap\",\n  \"version\": \"3.1.1\",\n  \"main\": [\n    \"./dist/css/bootstrap.css\",\n    \"./dist/js/bootstrap.js\","
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/Gruntfile.js",
    "chars": 11328,
    "preview": "/*!\n * Bootstrap's Gruntfile\n * http://getbootstrap.com\n * Copyright 2013-2014 Twitter, Inc.\n * Licensed under MIT (http"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/LICENSE",
    "chars": 1084,
    "preview": "The MIT License (MIT)\n\nCopyright (c) 2011-2014 Twitter, Inc\n\nPermission is hereby granted, free of charge, to any person"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/README.md",
    "chars": 8453,
    "preview": "# [Bootstrap](http://getbootstrap.com) [![Bower version](https://badge.fury.io/bo/bootstrap.png)](http://badge.fury.io/b"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/bower.json",
    "chars": 524,
    "preview": "{\n  \"name\": \"bootstrap\",\n  \"version\": \"3.1.1\",\n  \"main\": [\n    \"./dist/css/bootstrap.css\",\n    \"./dist/js/bootstrap.js\","
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/dist/css/bootstrap-theme.css",
    "chars": 14936,
    "preview": "/*!\n * Bootstrap v3.1.1 (http://getbootstrap.com)\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://gi"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/dist/css/bootstrap.css",
    "chars": 121220,
    "preview": "/*!\n * Bootstrap v3.1.1 (http://getbootstrap.com)\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://gi"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/dist/js/bootstrap.js",
    "chars": 55258,
    "preview": "/*!\n * Bootstrap v3.1.1 (http://getbootstrap.com)\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://gi"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/grunt/bs-glyphicons-data-generator.js",
    "chars": 1226,
    "preview": "/*!\n * Bootstrap Grunt task for Glyphicons data generation\n * http://getbootstrap.com\n * Copyright 2014 Twitter, Inc.\n *"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/grunt/bs-lessdoc-parser.js",
    "chars": 6066,
    "preview": "/*!\n * Bootstrap Grunt task for parsing Less docstrings\n * http://getbootstrap.com\n * Copyright 2014 Twitter, Inc.\n * Li"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/grunt/bs-raw-files-generator.js",
    "chars": 990,
    "preview": "/* global btoa: true */\n/*!\n * Bootstrap Grunt task for generating raw-files.min.js for the Customizer\n * http://getboot"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/grunt/shrinkwrap.js",
    "chars": 1149,
    "preview": "/*!\n * Bootstrap Grunt task for generating npm-shrinkwrap.canonical.json\n * http://getbootstrap.com\n * Copyright 2014 Tw"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/js/affix.js",
    "chars": 4039,
    "preview": "/* ========================================================================\n * Bootstrap: affix.js v3.1.1\n * http://getb"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/js/alert.js",
    "chars": 2113,
    "preview": "/* ========================================================================\n * Bootstrap: alert.js v3.1.1\n * http://getb"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/js/button.js",
    "chars": 2883,
    "preview": "/* ========================================================================\n * Bootstrap: button.js v3.1.1\n * http://get"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/js/carousel.js",
    "chars": 6018,
    "preview": "/* ========================================================================\n * Bootstrap: carousel.js v3.1.1\n * http://g"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/js/collapse.js",
    "chars": 4840,
    "preview": "/* ========================================================================\n * Bootstrap: collapse.js v3.1.1\n * http://g"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/js/dropdown.js",
    "chars": 4246,
    "preview": "/* ========================================================================\n * Bootstrap: dropdown.js v3.1.1\n * http://g"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/js/modal.js",
    "chars": 6687,
    "preview": "/* ========================================================================\n * Bootstrap: modal.js v3.1.1\n * http://getb"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/js/popover.js",
    "chars": 3178,
    "preview": "/* ========================================================================\n * Bootstrap: popover.js v3.1.1\n * http://ge"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/js/scrollspy.js",
    "chars": 4352,
    "preview": "/* ========================================================================\n * Bootstrap: scrollspy.js v3.1.1\n * http://"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/js/tab.js",
    "chars": 2945,
    "preview": "/* ========================================================================\n * Bootstrap: tab.js v3.1.1\n * http://getboo"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/js/tooltip.js",
    "chars": 12133,
    "preview": "/* ========================================================================\n * Bootstrap: tooltip.js v3.1.1\n * http://ge"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/js/transition.js",
    "chars": 1544,
    "preview": "/* ========================================================================\n * Bootstrap: transition.js v3.1.1\n * http:/"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/less/alerts.less",
    "chars": 1430,
    "preview": "//\n// Alerts\n// --------------------------------------------------\n\n\n// Base styles\n// -------------------------\n\n.alert"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/less/badges.less",
    "chars": 1057,
    "preview": "//\n// Badges\n// --------------------------------------------------\n\n\n// Base classes\n.badge {\n  display: inline-block;\n "
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/less/bootstrap.css",
    "chars": 121288,
    "preview": "/*! normalize.css v3.0.0 | MIT License | git.io/normalize */\nhtml {\n  font-family: sans-serif;\n  -ms-text-size-adjust: 1"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/less/bootstrap.less",
    "chars": 1071,
    "preview": "// Core variables and mixins\n@import \"variables.less\";\n@import \"mixins.less\";\n\n// Reset\n@import \"normalize.less\";\n@impor"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/less/breadcrumbs.less",
    "chars": 594,
    "preview": "//\n// Breadcrumbs\n// --------------------------------------------------\n\n\n.breadcrumb {\n  padding: @breadcrumb-padding-v"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/less/button-groups.less",
    "chars": 5014,
    "preview": "//\n// Button groups\n// --------------------------------------------------\n\n// Make the div behave like a button\n.btn-gro"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/less/buttons.less",
    "chars": 3539,
    "preview": "//\n// Buttons\n// --------------------------------------------------\n\n\n// Base styles\n// --------------------------------"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/less/carousel.less",
    "chars": 4598,
    "preview": "//\n// Carousel\n// --------------------------------------------------\n\n\n// Wrapper for the slide container and indicators"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/less/close.less",
    "chars": 683,
    "preview": "//\n// Close icons\n// --------------------------------------------------\n\n\n.close {\n  float: right;\n  font-size: (@font-s"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/less/code.less",
    "chars": 1329,
    "preview": "//\n// Code (inline and block)\n// --------------------------------------------------\n\n\n// Inline and block code styles\nco"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/less/component-animations.less",
    "chars": 509,
    "preview": "//\n// Component animations\n// --------------------------------------------------\n\n// Heads up!\n//\n// We don't use the `."
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/less/dropdowns.less",
    "chars": 4645,
    "preview": "//\n// Dropdown menus\n// --------------------------------------------------\n\n\n// Dropdown arrow/caret\n.caret {\n  display:"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/less/forms.less",
    "chars": 11022,
    "preview": "//\n// Forms\n// --------------------------------------------------\n\n\n// Normalize non-controls\n//\n// Restyle and baseline"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/less/glyphicons.less",
    "chars": 14877,
    "preview": "//\n// Glyphicons for Bootstrap\n//\n// Since icons are fonts, they can be placed anywhere text is placed and are\n// thus a"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/less/grid.less",
    "chars": 1387,
    "preview": "//\n// Grid system\n// --------------------------------------------------\n\n\n// Container widths\n//\n// Set the container wi"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/less/input-groups.less",
    "chars": 4211,
    "preview": "//\n// Input groups\n// --------------------------------------------------\n\n// Base styles\n// -------------------------\n.i"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/less/jumbotron.less",
    "chars": 901,
    "preview": "//\n// Jumbotron\n// --------------------------------------------------\n\n\n.jumbotron {\n  padding: @jumbotron-padding;\n  ma"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/less/labels.less",
    "chars": 1084,
    "preview": "//\n// Labels\n// --------------------------------------------------\n\n.label {\n  display: inline;\n  padding: .2em .6em .3e"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/less/list-group.less",
    "chars": 2619,
    "preview": "//\n// List groups\n// --------------------------------------------------\n\n\n// Base class\n//\n// Easily usable on <ul>, <ol"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/less/media.css",
    "chars": 362,
    "preview": ".media,\n.media-body {\n  overflow: hidden;\n  zoom: 1;\n}\n.media,\n.media .media {\n  margin-top: 15px;\n}\n.media:first-child "
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/less/media.less",
    "chars": 848,
    "preview": "// Media objects\n// Source: http://stubbornella.org/content/?p=497\n// --------------------------------------------------"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/less/mixins.css",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/less/mixins.less",
    "chars": 26570,
    "preview": "//\n// Mixins\n// --------------------------------------------------\n\n\n// Utilities\n// -------------------------\n\n// Clear"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/less/modals.less",
    "chars": 3404,
    "preview": "//\n// Modals\n// --------------------------------------------------\n\n// .modal-open      - body class for killing the scr"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/less/navbar.less",
    "chars": 13936,
    "preview": "//\n// Navbars\n// --------------------------------------------------\n\n\n// Wrapper and base class\n//\n// Provide a static n"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/less/navs.less",
    "chars": 4926,
    "preview": "//\n// Navs\n// --------------------------------------------------\n\n\n// Base class\n// ------------------------------------"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/less/normalize.css",
    "chars": 2452,
    "preview": "/*! normalize.css v3.0.0 | MIT License | git.io/normalize */\nhtml {\n  font-family: sans-serif;\n  -ms-text-size-adjust: 1"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/less/normalize.less",
    "chars": 7434,
    "preview": "/*! normalize.css v3.0.0 | MIT License | git.io/normalize */\n\n//\n// 1. Set default font family to sans-serif.\n// 2. Prev"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/less/pager.less",
    "chars": 857,
    "preview": "//\n// Pager pagination\n// --------------------------------------------------\n\n\n.pager {\n  padding-left: 0;\n  margin: @li"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/less/pagination.less",
    "chars": 1996,
    "preview": "//\n// Pagination (multiple pages)\n// --------------------------------------------------\n.pagination {\n  display: inline-"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/less/panels.less",
    "chars": 5548,
    "preview": "//\n// Panels\n// --------------------------------------------------\n\n\n// Base class\n.panel {\n  margin-bottom: @line-heigh"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/less/popovers.less",
    "chars": 3360,
    "preview": "//\n// Popovers\n// --------------------------------------------------\n\n\n.popover {\n  position: absolute;\n  top: 0;\n  left"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/less/print.css",
    "chars": 1161,
    "preview": "@media print {\n  * {\n    text-shadow: none !important;\n    color: #000 !important;\n    background: transparent !importan"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/less/print.less",
    "chars": 1613,
    "preview": "//\n// Basic print styles\n// --------------------------------------------------\n// Source: https://github.com/h5bp/html5-"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/less/progress-bars.less",
    "chars": 1589,
    "preview": "//\n// Progress bars\n// --------------------------------------------------\n\n\n// Bar animations\n// -----------------------"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/less/responsive-utilities.less",
    "chars": 2005,
    "preview": "//\n// Responsive: Utility classes\n// --------------------------------------------------\n\n\n// IE10 in Windows (Phone) 8\n/"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/less/scaffolding.less",
    "chars": 2268,
    "preview": "//\n// Scaffolding\n// --------------------------------------------------\n\n\n// Reset the box-sizing\n//\n// Heads up! This r"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/less/tables.less",
    "chars": 4470,
    "preview": "//\n// Tables\n// --------------------------------------------------\n\n\ntable {\n  max-width: 100%;\n  background-color: @tab"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/less/theme.css",
    "chars": 14454,
    "preview": ".btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/less/theme.less",
    "chars": 6854,
    "preview": "\n//\n// Load core variables and mixins\n// --------------------------------------------------\n\n@import \"variables.less\";\n@"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/less/thumbnails.less",
    "chars": 750,
    "preview": "//\n// Thumbnails\n// --------------------------------------------------\n\n\n// Mixin and adjust the regular image class\n.th"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/less/tooltip.less",
    "chars": 2590,
    "preview": "//\n// Tooltips\n// --------------------------------------------------\n\n\n// Base class\n.tooltip {\n  position: absolute;\n  "
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/less/type.less",
    "chars": 5734,
    "preview": "//\n// Typography\n// --------------------------------------------------\n\n\n// Headings\n// -------------------------\n\nh1, h"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/less/utilities.less",
    "chars": 780,
    "preview": "//\n// Utility classes\n// --------------------------------------------------\n\n\n// Floats\n// -------------------------\n\n.c"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/less/variables-orig.css",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/less/variables-orig.less",
    "chars": 25388,
    "preview": "//\n// Variables\n// --------------------------------------------------\n\n\n//== Colors\n//\n//## Gray and brand colors for us"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/less/variables.css",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/less/variables.less",
    "chars": 25388,
    "preview": "//\n// Variables\n// --------------------------------------------------\n\n\n//== Colors\n//\n//## Gray and brand colors for us"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/less/wells.less",
    "chars": 527,
    "preview": "//\n// Wells\n// --------------------------------------------------\n\n\n// Base class\n.well {\n  min-height: 20px;\n  padding:"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/package.json",
    "chars": 1807,
    "preview": "{\n  \"name\": \"bootstrap\",\n  \"description\": \"Sleek, intuitive, and powerful front-end framework for faster and easier web "
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/test-infra/README.md",
    "chars": 5456,
    "preview": "## What does `s3_cache.py` do?\n\n### In general\n`s3_cache.py` maintains a cache, stored in an Amazon S3 (Simple Storage S"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/test-infra/npm-shrinkwrap.canonical.json",
    "chars": 26776,
    "preview": "{\"dependencies\":{\"btoa\":{\"from\":\"btoa@~1.1.1\",\"version\":\"1.1.1\"},\"canonical-json\":{\"from\":\"canonical-json@~0.0.3\",\"versi"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/test-infra/requirements.txt",
    "chars": 13,
    "preview": "boto==2.20.0\n"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/test-infra/s3_cache.py",
    "chars": 3523,
    "preview": "#!/usr/bin/env python2.7\nfrom __future__ import absolute_import, unicode_literals, print_function, division\n\nfrom sys im"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/test-infra/sauce_browsers.yml",
    "chars": 1500,
    "preview": "[\n  # Docs: https://saucelabs.com/docs/platforms/webdriver\n\n  {\n    browserName: \"safari\",\n    platform: \"OS X 10.9\"\n  }"
  },
  {
    "path": "maverix-theme/bower_components/bootstrap/test-infra/uncached-npm-install.sh",
    "chars": 111,
    "preview": "#!/bin/bash\ncp test-infra/npm-shrinkwrap.canonical.json npm-shrinkwrap.json\nnpm install\nrm npm-shrinkwrap.json\n"
  },
  {
    "path": "maverix-theme/bower_components/css-toggle-switch/.bower.json",
    "chars": 878,
    "preview": "{\n  \"name\": \"css-toggle-switch\",\n  \"version\": \"2.1.5\",\n  \"main\": \"./dist/toggle-switch.css\",\n  \"author\": \"Ionut Colceriu"
  },
  {
    "path": "maverix-theme/bower_components/css-toggle-switch/.bowerrc",
    "chars": 37,
    "preview": "{\n\t\"directory\": \"bower_components\"\n}\n"
  },
  {
    "path": "maverix-theme/bower_components/css-toggle-switch/.travis.yml",
    "chars": 39,
    "preview": "language: node_js\nnode_js:\n    - \"0.8\"\n"
  },
  {
    "path": "maverix-theme/bower_components/css-toggle-switch/LICENSE.txt",
    "chars": 1210,
    "preview": "This is free and unencumbered software released into the public domain.\n\nAnyone is free to copy, modify, publish, use, c"
  },
  {
    "path": "maverix-theme/bower_components/css-toggle-switch/README.md",
    "chars": 1916,
    "preview": "# CSS Toggle Switch\n\n[![Build Status](https://travis-ci.org/ghinda/css-toggle-switch.png)](https://travis-ci.org/ghinda/"
  },
  {
    "path": "maverix-theme/bower_components/css-toggle-switch/bower.json",
    "chars": 482,
    "preview": "{\n\t\"name\": \"css-toggle-switch\",\n\t\"version\": \"2.1.4\",\n\t\"main\": \"./dist/toggle-switch.css\",\n\t\"author\": \"Ionut Colceriu\",\n\t"
  },
  {
    "path": "maverix-theme/bower_components/css-toggle-switch/dist/toggle-switch.css",
    "chars": 9674,
    "preview": "/*\n * CSS TOGGLE SWITCHES\n * Unlicense\n *\n * Ionuț Colceriu - ghinda.net\n * https://github.com/ghinda/css-toggle-switch\n"
  },
  {
    "path": "maverix-theme/bower_components/css-toggle-switch/src/toggle-switch.css",
    "chars": 11145,
    "preview": "/*\n * CSS TOGGLE SWITCHES\n * Unlicense\n *\n * Ionuț Colceriu - ghinda.net\n * https://github.com/ghinda/css-toggle-switch\n"
  },
  {
    "path": "maverix-theme/bower_components/css-toggle-switch/src/toggle-switch.less",
    "chars": 9594,
    "preview": "/*\n * CSS TOGGLE SWITCHES\n * Unlicense\n *\n * Ionuț Colceriu - ghinda.net\n * https://github.com/ghinda/css-toggle-switch\n"
  },
  {
    "path": "maverix-theme/bower_components/css-toggle-switch/src/toggle-switch.scss",
    "chars": 6947,
    "preview": "/*\n * CSS TOGGLE SWITCHES\n * Unlicense\n *\n * Ionuț Colceriu - ghinda.net\n * https://github.com/ghinda/css-toggle-switch\n"
  },
  {
    "path": "maverix-theme/bower_components/css-toggle-switch/test/tests.js",
    "chars": 2128,
    "preview": "function testSwitchTheme(name, theme) {\n\tvar $container = document.getElementsByClassName(theme)[0],\n\t\t$switchLightButto"
  },
  {
    "path": "maverix-theme/bower_components/entypo/.bower.json",
    "chars": 356,
    "preview": "{\n  \"name\": \"entypo\",\n  \"homepage\": \"https://github.com/danielbruce/entypo\",\n  \"_release\": \"f94e077449\",\n  \"_resolution\""
  },
  {
    "path": "maverix-theme/bower_components/entypo/.gitignore",
    "chars": 14,
    "preview": "node_modules/\n"
  },
  {
    "path": "maverix-theme/bower_components/entypo/.gitmodules",
    "chars": 114,
    "preview": "[submodule \"support/font-builder\"]\n\tpath = support/font-builder\n\turl = git://github.com/fontello/font-builder.git\n"
  },
  {
    "path": "maverix-theme/bower_components/entypo/DEVELOPMENT.md",
    "chars": 1472,
    "preview": "Development docs\n================\n\nSet if scripts to easily build webfonts from SVG images\n\nInstallation\n------------\n\n#"
  },
  {
    "path": "maverix-theme/bower_components/entypo/Makefile",
    "chars": 2923,
    "preview": "PROJECT     := $(notdir ${PWD})\nFONT_NAME   := entypo\n\n\n################################################################"
  },
  {
    "path": "maverix-theme/bower_components/entypo/README.md",
    "chars": 678,
    "preview": "Experimental scripts to automate Entypo font building.\n\nPlease, don't use until this work finished. Look now original at"
  },
  {
    "path": "maverix-theme/bower_components/entypo/config.yml",
    "chars": 34463,
    "preview": "---\n# This is configuration file for font builder and other support scripts.\n# Format is descriped below.\n#\n#\n# # metada"
  },
  {
    "path": "maverix-theme/bower_components/entypo/font/demo.html",
    "chars": 67246,
    "preview": "<!DOCTYPE html><html><head><!--[if lt IE 9]><script src=\"http://html5shim.googlecode.com/svn/trunk/html5.js\"></script><!"
  },
  {
    "path": "maverix-theme/bower_components/entypo/font/entypo.css",
    "chars": 16771,
    "preview": "@charset \"UTF-8\";\n\n@font-face {\n  font-family: 'entypo';\n  src: url('entypo.eot');\n  src: url('entypo.eot?#iefix') forma"
  },
  {
    "path": "maverix-theme/bower_components/entypo/src/demo/README.md",
    "chars": 316,
    "preview": "Font demo page templates. Generated code is e bit dirty, but it's done\nintentionally, for easy maintenance & single file"
  },
  {
    "path": "maverix-theme/bower_components/entypo/src/demo/bootstrap.styl",
    "chars": 11952,
    "preview": "/*!\n * Bootstrap v2.2.1\n *\n * Copyright 2012 Twitter, Inc\n * Licensed under the Apache License v2.0\n * http://www.apache"
  },
  {
    "path": "maverix-theme/bower_components/entypo/src/demo/demo.codes.jade",
    "chars": 1062,
    "preview": ":stylus\n  @font-face {\n    font-family: '#{font.fontname}';\n    src: url('#{font.fontname}.eot');\n    src: url('#{font.f"
  },
  {
    "path": "maverix-theme/bower_components/entypo/src/demo/demo.jade",
    "chars": 2022,
    "preview": "!!! 5\nhtml\n  head\n    //if lt IE 9\n      script(src='http://html5shim.googlecode.com/svn/trunk/html5.js')\n\n    meta(char"
  },
  {
    "path": "maverix-theme/bower_components/entypo/src/original/README.md",
    "chars": 233,
    "preview": "This files are taken from original entypo 2.0, with minor changes:\n\n1. TTF\n  - changed descent to 0, accent to 500, to f"
  },
  {
    "path": "maverix-theme/bower_components/flot/.bower.json",
    "chars": 432,
    "preview": "{\n  \"name\": \"Flot\",\n  \"version\": \"0.8.3\",\n  \"main\": \"jquery.flot.js\",\n  \"dependencies\": {\n    \"jquery\": \">= 1.2.6\"\n  },\n"
  },
  {
    "path": "maverix-theme/bower_components/flot/.gitignore",
    "chars": 40,
    "preview": "*.min.js\n!excanvas.min.js\nnode_modules/\n"
  },
  {
    "path": "maverix-theme/bower_components/flot/.travis.yml",
    "chars": 35,
    "preview": "language: node_js\nnode_js:\n  - 0.8\n"
  },
  {
    "path": "maverix-theme/bower_components/flot/API.md",
    "chars": 53572,
    "preview": "# Flot Reference #\n\n**Table of Contents**\n\n[Introduction](#introduction)\n| [Data Format](#data-format)\n| [Plot Options]("
  },
  {
    "path": "maverix-theme/bower_components/flot/CONTRIBUTING.md",
    "chars": 3242,
    "preview": "## Contributing to Flot ##\n\nWe welcome all contributions, but following these guidelines results in less\nwork for us, an"
  },
  {
    "path": "maverix-theme/bower_components/flot/FAQ.md",
    "chars": 3237,
    "preview": "## Frequently asked questions ##\n\n#### How much data can Flot cope with? ####\n\nFlot will happily draw everything you sen"
  },
  {
    "path": "maverix-theme/bower_components/flot/LICENSE.txt",
    "chars": 1069,
    "preview": "Copyright (c) 2007-2014 IOLA and Ole Laursen\n\nPermission is hereby granted, free of charge, to any person\nobtaining a co"
  },
  {
    "path": "maverix-theme/bower_components/flot/Makefile",
    "chars": 285,
    "preview": "# Makefile for generating minified files\n\n.PHONY: all\n\n# we cheat and process all .js files instead of an exhaustive lis"
  },
  {
    "path": "maverix-theme/bower_components/flot/NEWS.md",
    "chars": 40289,
    "preview": "## Flot 0.8.3 ##\n\n### Changes ###\n\n- Updated example code to avoid encouraging unnecessary re-plots.\n  (patch by soenter"
  },
  {
    "path": "maverix-theme/bower_components/flot/PLUGINS.md",
    "chars": 4340,
    "preview": "## Writing plugins ##\n\nAll you need to do to make a new plugin is creating an init function\nand a set of options (if nee"
  },
  {
    "path": "maverix-theme/bower_components/flot/README.md",
    "chars": 3782,
    "preview": "# Flot [![Build status](https://travis-ci.org/flot/flot.png)](https://travis-ci.org/flot/flot)\n\n## About ##\n\nFlot is a J"
  },
  {
    "path": "maverix-theme/bower_components/flot/component.json",
    "chars": 114,
    "preview": "{\n\t\"name\": \"Flot\",\n\t\"version\": \"0.8.3\",\n\t\"main\": \"jquery.flot.js\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">= 1.2.6\"\n\t}\n}\n"
  },
  {
    "path": "maverix-theme/bower_components/flot/examples/ajax/data-eu-gdp-growth-1.json",
    "chars": 73,
    "preview": "{\n    \"label\": \"Europe (EU27)\",\n    \"data\": [[1999, 3.0], [2000, 3.9]]\n}\n"
  },
  {
    "path": "maverix-theme/bower_components/flot/examples/ajax/data-eu-gdp-growth-2.json",
    "chars": 99,
    "preview": "{\n    \"label\": \"Europe (EU27)\",\n    \"data\": [[1999, 3.0], [2000, 3.9], [2001, 2.0], [2002, 1.2]]\n}\n"
  },
  {
    "path": "maverix-theme/bower_components/flot/examples/ajax/data-eu-gdp-growth-3.json",
    "chars": 125,
    "preview": "{\n    \"label\": \"Europe (EU27)\",\n    \"data\": [[1999, 3.0], [2000, 3.9], [2001, 2.0], [2002, 1.2], [2003, 1.3], [2004, 2.5"
  },
  {
    "path": "maverix-theme/bower_components/flot/examples/ajax/data-eu-gdp-growth-4.json",
    "chars": 151,
    "preview": "{\n    \"label\": \"Europe (EU27)\",\n    \"data\": [[1999, 3.0], [2000, 3.9], [2001, 2.0], [2002, 1.2], [2003, 1.3], [2004, 2.5"
  },
  {
    "path": "maverix-theme/bower_components/flot/examples/ajax/data-eu-gdp-growth-5.json",
    "chars": 177,
    "preview": "{\n    \"label\": \"Europe (EU27)\",\n    \"data\": [[1999, 3.0], [2000, 3.9], [2001, 2.0], [2002, 1.2], [2003, 1.3], [2004, 2.5"
  },
  {
    "path": "maverix-theme/bower_components/flot/examples/ajax/data-eu-gdp-growth.json",
    "chars": 177,
    "preview": "{\n    \"label\": \"Europe (EU27)\",\n    \"data\": [[1999, 3.0], [2000, 3.9], [2001, 2.0], [2002, 1.2], [2003, 1.3], [2004, 2.5"
  },
  {
    "path": "maverix-theme/bower_components/flot/examples/ajax/data-japan-gdp-growth.json",
    "chars": 171,
    "preview": "{\n    \"label\": \"Japan\",\n    \"data\": [[1999, -0.1], [2000, 2.9], [2001, 0.2], [2002, 0.3], [2003, 1.4], [2004, 2.7], [200"
  },
  {
    "path": "maverix-theme/bower_components/flot/examples/ajax/data-usa-gdp-growth.json",
    "chars": 167,
    "preview": "{\n    \"label\": \"USA\",\n    \"data\": [[1999, 4.4], [2000, 3.7], [2001, 0.8], [2002, 1.6], [2003, 2.5], [2004, 3.6], [2005, "
  },
  {
    "path": "maverix-theme/bower_components/flot/examples/ajax/index.html",
    "chars": 4333,
    "preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n<head>\n\t<meta http-equ"
  },
  {
    "path": "maverix-theme/bower_components/flot/examples/annotating/index.html",
    "chars": 2808,
    "preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n<head>\n\t<meta http-equ"
  },
  {
    "path": "maverix-theme/bower_components/flot/examples/axes-interacting/index.html",
    "chars": 2836,
    "preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n<head>\n\t<meta http-equ"
  },
  {
    "path": "maverix-theme/bower_components/flot/examples/axes-multiple/index.html",
    "chars": 25422,
    "preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n<head>\n\t<meta http-equ"
  },
  {
    "path": "maverix-theme/bower_components/flot/examples/axes-time/index.html",
    "chars": 18332,
    "preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n<head>\n\t<meta http-equ"
  },
  {
    "path": "maverix-theme/bower_components/flot/examples/axes-time-zones/date.js",
    "chars": 37400,
    "preview": "// -----\n// The `timezoneJS.Date` object gives you full-blown timezone support, independent from the timezone set on the"
  },
  {
    "path": "maverix-theme/bower_components/flot/examples/axes-time-zones/index.html",
    "chars": 3450,
    "preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n<head>\n\t<meta http-equ"
  },
  {
    "path": "maverix-theme/bower_components/flot/examples/axes-time-zones/tz/africa",
    "chars": 45770,
    "preview": "# <pre>\n# This file is in the public domain, so clarified as of\n# 2009-05-17 by Arthur David Olson.\n\n# This data is by n"
  },
  {
    "path": "maverix-theme/bower_components/flot/examples/axes-time-zones/tz/antarctica",
    "chars": 15827,
    "preview": "# <pre>\n# This file is in the public domain, so clarified as of\n# 2009-05-17 by Arthur David Olson.\n\n# From Paul Eggert "
  },
  {
    "path": "maverix-theme/bower_components/flot/examples/axes-time-zones/tz/asia",
    "chars": 113565,
    "preview": "# <pre>\n# This file is in the public domain, so clarified as of\n# 2009-05-17 by Arthur David Olson.\n\n# This data is by n"
  },
  {
    "path": "maverix-theme/bower_components/flot/examples/axes-time-zones/tz/australasia",
    "chars": 69499,
    "preview": "# <pre>\n# This file is in the public domain, so clarified as of\n# 2009-05-17 by Arthur David Olson.\n\n# This file also in"
  },
  {
    "path": "maverix-theme/bower_components/flot/examples/axes-time-zones/tz/backward",
    "chars": 4083,
    "preview": "# <pre>\n# This file is in the public domain, so clarified as of\n# 2009-05-17 by Arthur David Olson.\n\n# This file provide"
  },
  {
    "path": "maverix-theme/bower_components/flot/examples/axes-time-zones/tz/etcetera",
    "chars": 2955,
    "preview": "# <pre>\n# This file is in the public domain, so clarified as of\n# 2009-05-17 by Arthur David Olson.\n\n# These entries are"
  },
  {
    "path": "maverix-theme/bower_components/flot/examples/axes-time-zones/tz/europe",
    "chars": 121381,
    "preview": "# <pre>\n# This file is in the public domain, so clarified as of\n# 2009-05-17 by Arthur David Olson.\n\n# This data is by n"
  },
  {
    "path": "maverix-theme/bower_components/flot/examples/axes-time-zones/tz/factory",
    "chars": 393,
    "preview": "# <pre>\n# This file is in the public domain, so clarified as of\n# 2009-05-17 by Arthur David Olson.\n\n# For companies who"
  },
  {
    "path": "maverix-theme/bower_components/flot/examples/axes-time-zones/tz/iso3166.tab",
    "chars": 4326,
    "preview": "# <pre>\n# This file is in the public domain, so clarified as of\n# 2009-05-17 by Arthur David Olson.\n# ISO 3166 alpha-2 c"
  },
  {
    "path": "maverix-theme/bower_components/flot/examples/axes-time-zones/tz/leapseconds",
    "chars": 3186,
    "preview": "# <pre>\n# This file is in the public domain, so clarified as of\n# 2009-05-17 by Arthur David Olson.\n\n# Allowance for lea"
  },
  {
    "path": "maverix-theme/bower_components/flot/examples/axes-time-zones/tz/northamerica",
    "chars": 136129,
    "preview": "# <pre>\n# This file is in the public domain, so clarified as of\n# 2009-05-17 by Arthur David Olson.\n\n# also includes Cen"
  },
  {
    "path": "maverix-theme/bower_components/flot/examples/axes-time-zones/tz/pacificnew",
    "chars": 1190,
    "preview": "# <pre>\n# This file is in the public domain, so clarified as of\n# 2009-05-17 by Arthur David Olson.\n\n# From Arthur David"
  },
  {
    "path": "maverix-theme/bower_components/flot/examples/axes-time-zones/tz/solar87",
    "chars": 19306,
    "preview": "# <pre>\n# This file is in the public domain, so clarified as of\n# 2009-05-17 by Arthur David Olson.\n\n# So much for footn"
  },
  {
    "path": "maverix-theme/bower_components/flot/examples/axes-time-zones/tz/solar88",
    "chars": 19324,
    "preview": "# <pre>\n# This file is in the public domain, so clarified as of\n# 2009-05-17 by Arthur David Olson.\n\n# Apparent noon tim"
  },
  {
    "path": "maverix-theme/bower_components/flot/examples/axes-time-zones/tz/solar89",
    "chars": 19600,
    "preview": "# <pre>\n# This file is in the public domain, so clarified as of\n# 2009-05-17 by Arthur David Olson.\n\n# Apparent noon tim"
  },
  {
    "path": "maverix-theme/bower_components/flot/examples/axes-time-zones/tz/southamerica",
    "chars": 74385,
    "preview": "# <pre>\n# This file is in the public domain, so clarified as of\n# 2009-05-17 by Arthur David Olson.\n\n# This data is by n"
  },
  {
    "path": "maverix-theme/bower_components/flot/examples/axes-time-zones/tz/systemv",
    "chars": 1546,
    "preview": "# <pre>\n# This file is in the public domain, so clarified as of\n# 2009-05-17 by Arthur David Olson.\n\n# Old rules, should"
  },
  {
    "path": "maverix-theme/bower_components/flot/examples/axes-time-zones/tz/yearistype.sh",
    "chars": 680,
    "preview": "#! /bin/sh\n\n: 'This file is in the public domain, so clarified as of'\n: '2006-07-17 by Arthur David Olson.'\n\ncase $#-$1 "
  },
  {
    "path": "maverix-theme/bower_components/flot/examples/axes-time-zones/tz/zone.tab",
    "chars": 19913,
    "preview": "# <pre>\n# This file is in the public domain, so clarified as of\n# 2009-05-17 by Arthur David Olson.\n#\n# TZ zone descript"
  },
  {
    "path": "maverix-theme/bower_components/flot/examples/basic-options/index.html",
    "chars": 2251,
    "preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n<head>\n\t<meta http-equ"
  },
  {
    "path": "maverix-theme/bower_components/flot/examples/basic-usage/index.html",
    "chars": 1584,
    "preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n<head>\n\t<meta http-equ"
  },
  {
    "path": "maverix-theme/bower_components/flot/examples/canvas/index.html",
    "chars": 25390,
    "preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n<head>\n\t<meta http-equ"
  },
  {
    "path": "maverix-theme/bower_components/flot/examples/categories/index.html",
    "chars": 1543,
    "preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n<head>\n\t<meta http-equ"
  },
  {
    "path": "maverix-theme/bower_components/flot/examples/examples.css",
    "chars": 1738,
    "preview": "* {\tpadding: 0; margin: 0; vertical-align: top; }\n\nbody {\n\tbackground: url(background.png) repeat-x;\n\tfont: 18px/1.5em \""
  },
  {
    "path": "maverix-theme/bower_components/flot/examples/image/index.html",
    "chars": 2146,
    "preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n<head>\n\t<meta http-equ"
  },
  {
    "path": "maverix-theme/bower_components/flot/examples/index.html",
    "chars": 3382,
    "preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n<head>\n\t<meta http-equ"
  },
  {
    "path": "maverix-theme/bower_components/flot/examples/interacting/index.html",
    "chars": 3015,
    "preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n<head>\n\t<meta http-equ"
  },
  {
    "path": "maverix-theme/bower_components/flot/examples/navigate/index.html",
    "chars": 3947,
    "preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n<head>\n\t<meta http-equ"
  },
  {
    "path": "maverix-theme/bower_components/flot/examples/percentiles/index.html",
    "chars": 7221,
    "preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n<head>\n\t<meta http-equ"
  },
  {
    "path": "maverix-theme/bower_components/flot/examples/realtime/index.html",
    "chars": 2788,
    "preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n<head>\n\t<meta http-equ"
  },
  {
    "path": "maverix-theme/bower_components/flot/examples/resize/index.html",
    "chars": 2362,
    "preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n<head>\n\t<meta http-equ"
  },
  {
    "path": "maverix-theme/bower_components/flot/examples/selection/index.html",
    "chars": 5354,
    "preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n<head>\n\t<meta http-equ"
  },
  {
    "path": "maverix-theme/bower_components/flot/examples/series-errorbars/index.html",
    "chars": 3547,
    "preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n<head>\n\t<meta http-equ"
  },
  {
    "path": "maverix-theme/bower_components/flot/examples/series-pie/index.html",
    "chars": 28559,
    "preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n<head>\n\t<meta http-equ"
  },
  {
    "path": "maverix-theme/bower_components/flot/examples/series-toggle/index.html",
    "chars": 4781,
    "preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n<head>\n\t<meta http-equ"
  },
  {
    "path": "maverix-theme/bower_components/flot/examples/series-types/index.html",
    "chars": 2075,
    "preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n<head>\n\t<meta http-equ"
  },
  {
    "path": "maverix-theme/bower_components/flot/examples/stacking/index.html",
    "chars": 2671,
    "preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n<head>\n\t<meta http-equ"
  },
  {
    "path": "maverix-theme/bower_components/flot/examples/symbols/index.html",
    "chars": 2084,
    "preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n<head>\n\t<meta http-equ"
  },
  {
    "path": "maverix-theme/bower_components/flot/examples/threshold/index.html",
    "chars": 2037,
    "preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n<head>\n\t<meta http-equ"
  },
  {
    "path": "maverix-theme/bower_components/flot/examples/tracking/index.html",
    "chars": 3212,
    "preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n<head>\n\t<meta http-equ"
  },
  {
    "path": "maverix-theme/bower_components/flot/examples/visitors/index.html",
    "chars": 5467,
    "preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n<head>\n\t<meta http-equ"
  }
]

// ... and 119 more files (download for full content)

About this extraction

This page contains the full source code of the gobijan/maverix GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 319 files (3.7 MB), approximately 993.9k tokens, and a symbol index with 526 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!