summaryrefslogtreecommitdiffstats
path: root/ecomp-portal-FE/client/bower_components/angular-cache
diff options
context:
space:
mode:
Diffstat (limited to 'ecomp-portal-FE/client/bower_components/angular-cache')
-rw-r--r--ecomp-portal-FE/client/bower_components/angular-cache/.bower.json45
-rw-r--r--ecomp-portal-FE/client/bower_components/angular-cache/CHANGELOG.md353
-rw-r--r--ecomp-portal-FE/client/bower_components/angular-cache/LICENSE20
-rw-r--r--ecomp-portal-FE/client/bower_components/angular-cache/README.md671
-rw-r--r--ecomp-portal-FE/client/bower_components/angular-cache/TRANSITION.md98
-rw-r--r--ecomp-portal-FE/client/bower_components/angular-cache/bower.json35
-rw-r--r--ecomp-portal-FE/client/bower_components/angular-cache/build_examples/browserify/README.md1
-rw-r--r--ecomp-portal-FE/client/bower_components/angular-cache/build_examples/browserify/app.js11
-rw-r--r--ecomp-portal-FE/client/bower_components/angular-cache/build_examples/browserify/index.html11
-rw-r--r--ecomp-portal-FE/client/bower_components/angular-cache/build_examples/r.js/README.md3
-rw-r--r--ecomp-portal-FE/client/bower_components/angular-cache/build_examples/r.js/app.js9
-rw-r--r--ecomp-portal-FE/client/bower_components/angular-cache/build_examples/r.js/index.html14
-rw-r--r--ecomp-portal-FE/client/bower_components/angular-cache/build_examples/r.js/main.js22
-rw-r--r--ecomp-portal-FE/client/bower_components/angular-cache/build_examples/r.js/require.config.js6
-rw-r--r--ecomp-portal-FE/client/bower_components/angular-cache/build_examples/webpack/README.md1
-rw-r--r--ecomp-portal-FE/client/bower_components/angular-cache/build_examples/webpack/app.js8
-rw-r--r--ecomp-portal-FE/client/bower_components/angular-cache/build_examples/webpack/index.html11
-rw-r--r--ecomp-portal-FE/client/bower_components/angular-cache/build_examples/webpack/webpack.config.js11
-rw-r--r--ecomp-portal-FE/client/bower_components/angular-cache/build_examples/webpack_es6/README.md1
-rw-r--r--ecomp-portal-FE/client/bower_components/angular-cache/build_examples/webpack_es6/app.js8
-rw-r--r--ecomp-portal-FE/client/bower_components/angular-cache/build_examples/webpack_es6/index.html11
-rw-r--r--ecomp-portal-FE/client/bower_components/angular-cache/build_examples/webpack_es6/webpack.config.js16
-rw-r--r--ecomp-portal-FE/client/bower_components/angular-cache/build_examples/webpack_es6_2/README.md1
-rw-r--r--ecomp-portal-FE/client/bower_components/angular-cache/build_examples/webpack_es6_2/app.js8
-rw-r--r--ecomp-portal-FE/client/bower_components/angular-cache/build_examples/webpack_es6_2/index.html11
-rw-r--r--ecomp-portal-FE/client/bower_components/angular-cache/build_examples/webpack_es6_2/webpack.config.js16
-rw-r--r--ecomp-portal-FE/client/bower_components/angular-cache/circle.yml6
-rw-r--r--ecomp-portal-FE/client/bower_components/angular-cache/dist/angular-cache.js1111
-rw-r--r--ecomp-portal-FE/client/bower_components/angular-cache/dist/angular-cache.js.map1
-rw-r--r--ecomp-portal-FE/client/bower_components/angular-cache/dist/angular-cache.min.js2
-rw-r--r--ecomp-portal-FE/client/bower_components/angular-cache/dist/angular-cache.min.map1
-rw-r--r--ecomp-portal-FE/client/bower_components/angular-cache/rollup.config.js22
-rw-r--r--ecomp-portal-FE/client/bower_components/angular-cache/scripts/postbuild.js21
33 files changed, 2566 insertions, 0 deletions
diff --git a/ecomp-portal-FE/client/bower_components/angular-cache/.bower.json b/ecomp-portal-FE/client/bower_components/angular-cache/.bower.json
new file mode 100644
index 00000000..69505556
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/angular-cache/.bower.json
@@ -0,0 +1,45 @@
+{
+ "author": "Jason Dobry",
+ "name": "angular-cache",
+ "description": "angular-cache is a very useful replacement for Angular's $cacheFactory.",
+ "homepage": "https://github.com/jmdobry/angular-cache",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/jmdobry/angular-cache.git"
+ },
+ "main": "./dist/angular-cache.js",
+ "ignore": [
+ ".idea/",
+ ".*",
+ "*.iml",
+ "src/",
+ "bower_components/",
+ "coverage/",
+ "Gruntfile.js",
+ "package.json",
+ "CONTRIBUTING.md",
+ "node_modules/",
+ "test/",
+ "karma.conf.js",
+ "karma.start.js",
+ "libpeerconnection.log"
+ ],
+ "devDependencies": {
+ "angular-1.2.25": "angular#1.2.25",
+ "angular-resource": "angular-resource#1.2.25",
+ "angular-mocks-1.2.25": "angular-mocks#1.2.25"
+ },
+ "dependencies": {
+ "angular": ">=1.x"
+ },
+ "version": "4.6.0",
+ "_release": "4.6.0",
+ "_resolution": {
+ "type": "version",
+ "tag": "4.6.0",
+ "commit": "b491ed8361cd092dd82e59eab0031a2e202900a6"
+ },
+ "_source": "https://github.com/jmdobry/angular-cache.git",
+ "_target": "~4.6.0",
+ "_originalSource": "angular-cache"
+} \ No newline at end of file
diff --git a/ecomp-portal-FE/client/bower_components/angular-cache/CHANGELOG.md b/ecomp-portal-FE/client/bower_components/angular-cache/CHANGELOG.md
new file mode 100644
index 00000000..b5f917d9
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/angular-cache/CHANGELOG.md
@@ -0,0 +1,353 @@
+##### 4.6.0 29 April 2016
+
+###### Bug fixes
+- #215 - angular-cache.min.js tries to load the .map from dist/
+- #204 - Does not work with Angular 1.3 and browserify
+
+##### 4.5.0 12 January 2016
+
+###### Backwards compatible API changes
+- #205 - Feature request: Cache.getAllValues
+
+###### Backwards compatible bug fixes
+
+- #211 - Expires value gets sometimes automatically set to null
+- #212 - Internal Cache not reloaded on Reload
+
+###### Other
+
+- Upgraded to CacheFactory v1.4.0
+
+##### 4.4.3 30 December 2015
+
+- #179 - capacity does not work on often reload
+- #210 - Why does angular-cache ignore capacity configuration?
+
+##### 4.4.1 12 October 2015
+
+- #203 - trouble: bundle with r.js not works
+
+##### 4.4.0 12 October 2015
+
+- #200 - 4.3 storagePrefix is not backwards compatible
+- #201 - webpack minification error
+
+##### 4.3.2 10 July 2015
+
+- #191 - yabh issue with ie8
+
+##### 4.3.1 07 July 2015
+
+- #190 - 4.3 breaks phantomJS tests
+
+##### 4.3.0 06 July 2015
+
+- #189 - Extracted non-angular code.
+
+##### 4.2.2 01 July 2015
+
+###### Backwards compatible bug fixes
+- #165 - storageMode does not inherits from defaults
+
+##### 4.2.1 01 July 2015
+
+Upgraded dependencies
+Better CommonJS interop
+Added a number of build examples
+
+##### 4.2.0 27 April 2015
+
+###### Backwards compatible bug fixes
+- #174 - Cache not being fully emptied if using localStorage and multiple web pages
+
+##### 4.1.0 30 March 2015
+
+###### Backwards compatible API changes
+- #169 - Official support for ngResource
+
+##### 4.0.2 22 March 2015
+
+###### Backwards compatible bug fixes
+- #164 - onExpire is still called when cache is empty
+
+##### 4.0.1 20 March 2015
+
+###### Backwards compatible bug fixes
+- #163 - Configuring CacheOption storagePrefix results in "true.{key}"
+
+##### 4.0.0 15 March 2015
+
+###### Breaking API changes
+- Completely disassociated angular-cache from the deprecated angular-data (angular-data has been replaced by js-data + js-data-angular)
+- Angular module renamed to _angular-cache_
+- _DSCacheFactory_ renamed to _CacheFactory_
+- _DSBinaryHeap_ renamed to _BinaryHeap_
+- Removed `DSCacheFactoryProvider.setCacheDefaults`. You now do `angular.extend(CacheFactoryProvider.defaults, { ... });`
+- No longer exposing a `DSCache` constructor function (as it no longer exists)
+- `storageMode` can now be set dynamically, which will remove all items from current storage and insert them into the new storage
+
+###### Other
+- Fixes #161
+- Converted to ES6 and a webpack build with better umd support
+- Now exporting the module name _angular-cache_ (when you do `require('angular-cache')` you get `"angular-cache"`)
+- Deprecating angular-cache < 4.0.0
+
+##### 3.2.5 02 February 2015
+
+###### Backwards compatible bug fixes
+- #152 - Expired items sometimes only expire after double time.
+- #153 - Missing angular dependency in bower.json
+
+##### 3.2.4 17 December 2014
+
+###### Backwards compatible bug fixes
+- #149 - when removing an object from localStorage the key didn't get removed if the passed parameter is of number type.
+
+##### 3.2.3 13 December 2014
+
+###### Backwards compatible bug fixes
+- #112 - $resource cache and 3.0.0-beta-x
+- #122 - Error using DSCacheFactory with $http/ $resource and localStorage
+- #148 - Illegal operation when using local-/sessionStorage
+
+##### 3.2.2 24 November 2014
+
+###### Backwards compatible bug fixes
+- #147 - `storeOnResolve` and `storeOnReject` should default to `false`
+
+##### 3.2.1 10 November 2014
+
+###### Backwards compatible bug fixes
+- #142 - Use JSON.stringify instead of angular.toJson
+
+##### 3.2.0 07 November 2014
+
+###### Backwards compatible API changes
+- #135 - Closes #135. (Improved handling of promises.)
+
+##### 3.1.1 28 August 2014
+
+###### Backwards compatible bug fixes
+- #124 - DSCache.info does not work if the storageMode is localStorage.
+- #127 - requirejs conflict, require object overwritten
+
+##### 3.1.0 15 July 2014
+
+###### Backwards compatible API changes
+- #117 - call to DSCacheFactory(...) produces JSHint warning (Added DSCacheFactory.createCache method)
+
+###### Backwards compatible bug fixes
+- #118 - dist/angular-cache.js doesn't end with a semicolon (Upgraded dependencies)
+- #120 - How come the non minified version has minified code? (Upgraded dependencies)
+
+##### 3.0.3 16 June 2014
+
+###### Backwards compatible bug fixes
+- Angular 1.2.18 with $http/localStorage #116
+
+##### 3.0.2 15 June 2014
+
+###### Backwards compatible bug fixes
+- $http w/ cache is trying to store a promise, which dies on JSON.stringify #115
+
+##### 3.0.1 14 June 2014
+
+###### Backwards compatible bug fixes
+- Added polyfill for `$$minErr`.
+
+##### 3.0.0 14 June 2014
+
+3.0.0 Release
+
+##### 3.0.0-beta.4 22 April 2014
+
+###### Backwards compatible API changes
+- Add feature to 'touch' elements in the cache #103
+
+###### Backwards compatible bug fixes
+- `localstorage` and Safari Private Browsing #107
+
+##### 3.0.0-beta.3 03 March 2014
+
+###### Backwards compatible bug fixes
+- Fixed duplicate keys when using localStorage #106
+
+##### 3.0.0-beta.2 25 February 2014
+
+###### Backwards compatible bug fixes
+- Fixed missing reference to DSBinaryHeap #105
+
+##### 3.0.0-beta.1 24 February 2014
+
+###### Breaking API changes
+- `maxAge` and `deleteOnExpire` are no longer overridable for individual items
+- Renamed angular module to `angular-data.DSCacheFactory`. Angular-cache is now part of the `angular-data` namespace
+- The `verifyIntegrity` option has been completely removed due to a cache being exclusively in-memory OR in web storage #96
+- Supported values for the `storageMode` option are now: `"memory"`, `"localStorage"` or `"sessionStorage"` with the default being `"memory"`
+- `DSCache#put(key, value)` no longer accepts a third `options` argument
+- `DSCache#removeExpired()` no longer accepts an `options` argument and thus no longer supports returning removed expired items as an array
+- `DSCache#remove(key)` no longer accepts an `options` argument
+- `DSCache#setOptions(options[, strict])` no longer accepts `storageMode` and `storageImpl` as part of the `options` argument
+- `storageMode` is no longer dynamically configurable
+- `storageImpl` is no longer dynamically configurable
+
+###### Backwards compatible API changes
+- Added `DSCache#enable()`
+- Added `DSCache#disable()`
+- Added `DSCache#setCapacity(capacity)`
+- Added `DSCache#setMaxAge(maxAge)`
+- Added `DSCache#setCacheFlushInterval(cacheFlushInterval)`
+- Added `DSCache#setRecycleFreq(recycleFreq)`
+- Added `DSCache#setDeleteOnExpire(deleteOnExpire)`
+- Added `DSCache#setOnExpire(onExpire)`
+- Added option `storagePrefix` for customizing the prefix used in `localStorage`, etc. #98
+- Refactored to be in-memory OR webStorage, never both #96
+
+###### Other
+- I might have missed something...
+
+##### 2.3.3 - 24 February 2014
+
+###### Backwards compatible bug fixes
+- *sigh Fixed #102 (regression from #100)
+
+##### 2.3.2 - 23 February 2014
+
+###### Backwards compatible bug fixes
+- Fixed #100 (regression from #89)
+
+##### 2.3.1 - 19 February 2014
+
+###### Backwards compatible bug fixes
+- Fixed #89
+
+##### 2.3.0 - 09 January 2014
+- Caches can now be disabled #82
+- The `options` object (`$angularCacheFactory()`, `AngularCache#setOptions()`, and `$angularCacheFactoryProvider.setCacheDefaults()`) now accepts a `disabled` field, which can be set to `true` and defaults to `false`.
+- `$angularCacheFactory.enableAll()` will enable any disabled caches.
+- `$angularCacheFactory.disableAll()` will disable all caches.
+- A disabled cache will operate as normal, except `AngularCache#get()` and `AngularCache#put()` will both immediately return `undefined` instead of performing their normal functions.
+
+###### Backwards compatible API changes
+- `removeExpired()` now returns an object (or array) of the removed items.
+
+###### Backwards compatible bug fixes
+- `removeExpired()` now removes _all_ expired items.
+
+##### 2.2.0 - 15 December 2013
+
+###### Backwards compatible API changes
+- `removeExpired()` now returns an object (or array) of the removed items.
+
+###### Backwards compatible bug fixes
+- `removeExpired()` now removes _all_ expired items.
+
+##### 2.1.1 - 20 November 2013
+
+###### Backwards compatible bug fixes
+- Allow number keys, but stringify them #76
+- Fix "Uncaught TypeError: Cannot read property 'maxAge' of null" #77 (thanks @evngeny-o)
+
+##### 2.1.0 - 03 November 2013
+
+###### Backwards compatible API changes
+- Modify .get(key, options) to accept multiple keys #71 (thanks @roryf)
+
+###### Other
+- Run tests against multiple versions of Angular.js #72
+- Add banner to dist/angular-cache.min.js #68
+
+##### 2.0.0 - 30 October 2013
+- Not all methods of AngularCache and $angularCacheFactory are in README #61
+- Fix demo to work with 2.0.0-rc.1 #62
+- Using Bower to install this package, the dist filenames change per version? #63
+
+##### 2.0.0-rc.1 - 14 October 2013
+
+###### Breaking API changes
+- Swapped `aggressiveDelete` option for `deleteOnExpire` option. #30, #47
+- Changed `$angularCacheFactory.info()` to return an object similar to `AngularCache.info()` #45
+- Namespaced angular-cache module under `jmdobry` so it is now "jmdobry.angular-cache". #42
+- Substituted `storageImpl` and `sessionStorageImpl` options for just `storageImpl` option.
+
+###### Backwards compatible API changes
+- Added `recycleFreq` to specify how frequently to check for expired items (no more $timeout). #28, #57
+- Added ability to set global cache defaults in $angularCacheFactoryProvider. #55
+
+###### Backwards compatible bug fixes
+- cacheFlushInterval doesn't clear web storage when storageMode is used. #52
+- AngularCache#info(key) should return 'undefined' if the key isn't in the cache #53
+- Fixed timespan issues in README.md. #59
+
+###### Other
+- Refactored angular-cache `setOptions()` internals to be less convoluted and to have better validation. #46
+- Re-wrote documentation to be clearer and more organized. #56
+- Fixed documentation where time spans were incorrectly labeled. #59
+
+##### 1.2.0 - 20 September 2013
+
+###### Backwards compatible API changes
+- Added AngularCache#info(key) #43
+
+###### Backwards compatible bug fixes
+- Fixed #39, #44, #49, #50
+
+##### 1.1.0 - 03 September 2013
+
+###### Backwards compatible API changes
+- Added `onExpire` callback hook #27
+- Added `$angularCacheFactory.removeAll()` and `$angularCacheFactory.clearAll()` convenience methods #37, #38
+
+###### Backwards compatible bug fixes
+- Fixed #36
+
+##### 1.0.0 - 25 August 2013
+- Closed #31 (Improved documentation)
+- Closed #32
+
+##### 1.0.0-rc.1 - 21 August 2013
+- Added localStorage feature #26, #29
+
+##### 0.9.1 - 03 August 2013
+- Fixed #25
+
+##### 0.9.0 - 03 August 2013
+- Added a changelog #13
+- Added documentation for installing with bower
+- Added ability to set option `aggressiveDelete` when creating cache and when adding items
+- Cleaned up README.md
+- Switched the demo to use Bootstrap 3
+
+##### 0.8.2 - 09 July 2013
+- Added CONTRIBUTING.md #22
+- Cleaned up meta data in bower.json and package.json
+
+##### 0.8.1 - 09 July 2013
+- Added .jshintrc
+- Cleaned up the docs a bit
+- `bower.json` now uses `src/angular-cache.js` instead of the versioned output files #21
+- From now on the tags for the project will be named using [semver](http://semver.org/)
+
+##### 0.8.0 - 08 July 2013
+- Added `AngularCache.setOptions()`, the ability to dynamically change the configuration of a cache #20
+- Added `AngularCache.keys()`, which returns an array of the keys in a cache #19
+- Added `AngularCache.keySet()`, which returns a hash of the keys in a cache #19
+
+##### 0.7.2 - June 2013
+- Added `angular-cache` to bower registry #7
+- Created a working demo #9 #17
+- Fixed the size not being reset to 0 when the cache clears itself #14 #16
+- Added `$angularCacheFactory.keys()`, which returns an array of the keys (the names of the caches) in $angularCacheFactory #18
+- Added `$angularCacheFactory.keySet()`, which returns a hash of the keys (the names of the caches) in $angularCacheFactory #18
+
+##### 0.6.1 - June 2013
+- Got the project building on TravisCI
+- Renamed the project to `angular-cache` #5
+
+##### 0.5.0 - June 2013
+- Added a roadmap to README.md #4
+- Clarify usage documentation #3
+- Wrote unit tests #2
+
+##### 0.4.0 - May 2013
+- Added Grunt build tasks #1
diff --git a/ecomp-portal-FE/client/bower_components/angular-cache/LICENSE b/ecomp-portal-FE/client/bower_components/angular-cache/LICENSE
new file mode 100644
index 00000000..ab9faee3
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/angular-cache/LICENSE
@@ -0,0 +1,20 @@
+The MIT License
+
+Copyright (C) 2013-2016 angular-cache project authors
+
+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.
diff --git a/ecomp-portal-FE/client/bower_components/angular-cache/README.md b/ecomp-portal-FE/client/bower_components/angular-cache/README.md
new file mode 100644
index 00000000..a24a57b7
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/angular-cache/README.md
@@ -0,0 +1,671 @@
+# angular-cache
+
+[![bower version](https://img.shields.io/bower/v/angular-cache.svg?style=flat)](https://www.npmjs.org/package/angular-cache)
+[![npm version](https://img.shields.io/npm/v/angular-cache.svg?style=flat)](https://www.npmjs.org/package/angular-cache)
+[![Circle CI](https://img.shields.io/circleci/project/jmdobry/angular-cache/master.svg?style=flat)](https://circleci.com/gh/jmdobry/angular-cache/tree/master)
+[![npm downloads](https://img.shields.io/npm/dm/angular-cache.svg?style=flat)](https://www.npmjs.org/package/angular-cache)
+[![codecov](https://img.shields.io/codecov/c/github/jmdobry/angular-cache.svg)](https://codecov.io/gh/jmdobry/angular-cache)
+
+A very useful replacement for Angular's $cacheFactory.
+
+__versions of angular-cache below 4.0.0 have been deprecated, see the [breaking changes](https://github.com/jmdobry/angular-cache/blob/master/CHANGELOG.md) in 4.0.0__
+
+### Table of Contents
+- [Quick Start](#quick-start)
+- [The Basics](#the-basics)
+- [Working with a cache](#working-with-a-cache)
+- [Configuration Options](#configuration-options)
+- [Using angular-cache with $http](#using-angular-cache-with-http)
+- [Using angular-cache with localStorage](#using-angular-cache-with-localstorage)
+- [API Reference](#api-reference)
+
+### Quick Start
+`bower install --save angular-cache` or `npm install --save angular-cache`.
+
+```js
+angular.module('myApp', ['angular-cache'])
+ .config(function (CacheFactoryProvider) {
+ angular.extend(CacheFactoryProvider.defaults, { maxAge: 15 * 60 * 1000 });
+ })
+ .service('BookService', function (CacheFactory, $http) {
+ if (!CacheFactory.get('bookCache')) {
+ // or CacheFactory('bookCache', { ... });
+ CacheFactory.createCache('bookCache', {
+ deleteOnExpire: 'aggressive',
+ recycleFreq: 60000
+ });
+ }
+
+ var bookCache = CacheFactory.get('bookCache');
+
+ return {
+ findBookById: function (id) {
+ return $http.get('/api/books/' + id, { cache: bookCache });
+ }
+ };
+ });
+```
+
+#### Why would you want to replace $cacheFactory?
+
+| Feature | $cacheFactory | angular-cache |
+| ----------- | ------------------- | --------------- |
+| core implementation usable outside of Angular | no | [__yes__](https://github.com/jmdobry/CacheFactory) |
+| key/value store | __yes__ | __yes__ |
+| in-memory support | __yes__ | __yes__ |
+| localStorage support | no | __yes__ |
+| sessionStorage support | no | __yes__ |
+| custom storage support | no | __yes__ |
+| can set maximum capacity | __yes__ | __yes__ |
+| LRU support | __yes__ | __yes__ |
+| support for time-based expiration of items | no | __yes__ |
+| remove all expired items | n/a | __yes__ |
+| "touch" an item | n/a | __yes__ |
+| execute callback when an item expires | n/a | __yes__ |
+| get info about cache | __yes__ | __yes__ |
+| get info about single item | no | __yes__ |
+| get item by key | __yes__ | __yes__ |
+| remove item by key | __yes__ | __yes__ |
+| remove all items | __yes__ | __yes__ |
+| get keys of all caches | no | __yes__ |
+| clear all caches | no | __yes__ |
+| disable/enable a cache | no | __yes__ |
+| "touch" all items in all caches | n/a | __yes__ |
+| remove expired items from all caches | n/a | __yes__ |
+| get all keys in a cache | no | __yes__ |
+| clear a cache on a given interval | no | __yes__ |
+
+### The Basics
+
+First, inject `CacheFactory` then create a cache. Let's go:
+
+```js
+app.service('myService', function (CacheFactory) {
+ var profileCache;
+
+ // Check to make sure the cache doesn't already exist
+ if (!CacheFactory.get('profileCache')) {
+ profileCache = CacheFactory('profileCache');
+ }
+});
+```
+
+Let's add some items to the cache:
+
+```js
+profileCache.put('/profiles/34', {
+ name: 'John',
+ skills: ['programming', 'piano']
+});
+
+profileCache.put('/profiles/22', {
+ name: 'Sally',
+ skills: ['marketing', 'climbing', 'painting']
+});
+```
+
+Right now, these items will stay in the cache until a page refresh.
+
+Let's have items which are added to `profileCache` expire after an hour:
+
+```js
+profileCache = CacheFactory('profileCache', {
+ maxAge: 60 * 60 * 1000 // 1 hour
+});
+```
+
+Perfect. Say we also want the items removed from the cache when they expire:
+
+```js
+profileCache = CacheFactory('profileCache', {
+ maxAge: 60 * 60 * 1000 // 1 hour,
+ deleteOnExpire: 'aggressive'
+});
+```
+
+Let's say that when the items do expire, we want to refresh them with new values:
+
+```js
+profileCache = CacheFactory('profileCache', {
+ maxAge: 60 * 60 * 1000 // 1 hour,
+ deleteOnExpire: 'aggressive',
+ onExpire: function (key, value) {
+ $http.get(key).success(function (data) {
+ profileCache.put(key, data);
+ });
+ }
+});
+```
+
+Or say we want all of our caches to use that configuration as their default:
+
+```js
+angular.module('app', ['angular-cache']).config(function (CacheFactoryProvider) {
+ angular.extend(CacheFactoryProvider.defaults, {
+ maxAge: 3600000,
+ deleteOnExpire: 'aggressive',
+ onExpire: function (key, value) {
+ var _this = this; // "this" is the cache in which the item expired
+ angular.injector(['ng']).get('$http').get(key).success(function (data) {
+ _this.put(key, data);
+ });
+ }
+ });
+});
+```
+
+### Working with a cache
+
+We can retrieve items from a cache like so:
+
+```js
+var profile = profileCache.get('/profiles/34');
+
+profile.name; // 'John'
+```
+
+And get information about items in the cache:
+
+```js
+var info = profileCache.info('/profiles/34');
+
+info.isExpired; // false
+// etc.
+```
+
+and information about the cache itself:
+
+```
+var info = profileCache.info();
+
+info.size; // 2
+info.maxAge; // 3600000
+info.deleteOnExpire; // 'aggressive'
+// etc.
+```
+
+Items are easily removed, and we can destroy our cache when we're done with it:
+
+```js
+profileCache.remove('/profiles/34');
+
+profileCache.get('/profiles/34'); // undefined
+
+profileCache.destroy();
+
+CacheFactory.get('profileCache'); // undefined
+```
+
+### Configuration Options
+
+These options apply to:
+
+- `CacheFactory(cacheId[, options)`
+- `CacheFactory.createCache(cacheId[, options])`
+- `Cache#setOptions(options[, strict])`
+- `Cache#setMaxAge(maxAge)`, `Cache#setOnExpire(onExpire)`, etc.
+
+##### `cacheFlushInterval`
+
+If set, remove all items from a cache on an interval after the given number of milliseconds. Default: `null`.
+
+##### `capacity`
+
+Maximum number of items a cache can hold. Adding more items than the capacity will cause the cache to operate like an LRU cache, removing the least recently used items to stay under capacity. Default: `Number.MAX_VALUE`.
+
+##### `deleteOnExpire`
+
+Determines the behavior of a cache when an item expires. Default: `none`.
+
+Possible values:
+
+- `none` - Cache will do nothing when an item expires.
+- `passive` - Cache will do nothing when an item expires. Expired items will remain in the cache until requested, at which point they are removed, and `undefined` is returned.
+- `aggressive` - Cache will remove expired items as soon as they are discovered.
+
+##### `disabled`
+
+Determines whether a cache is disabled. Default: `false`.
+
+##### `onExpire`
+
+A callback function to be executed whenever an expired item is removed from a cache when the cache is in `passive` or `aggressive` mode. Will be passed the `key` and `value` of the expired item.
+
+Will be passed a third `done` argument if the cache is in `passive` mode. This allows you to synchronously access the `key` and `value` of the expired item when you make the `Cache#get(key[, options])` call that is the reason the expired item is being removed in the first place. Default: `null`.
+
+##### `maxAge`
+
+The number of milliseconds until a newly inserted item expires. Default: `Number.MAX_VALUE`.
+
+##### `recycleFreq`
+
+Determines how often a cache will scan for expired items when in `aggressive` mode. Default: `1000` (milliseconds).
+
+##### `storageImpl`
+
+Provide a custom storage medium, e.g. a polyfill for `localStorage`. Default: `null`.
+
+Must implement:
+
+- `setItem` - Same API as `localStorage.setItem(key, value)`
+- `getItem` - Same API as `localStorage.getItem(key)`
+- `removeItem` - Same API as `localStorage.removeItem(key)`
+
+##### `storageMode`
+
+Determines the storage medium used by a cache. Default: `memory`.
+
+Possible values:
+
+- `memory` - Cache will hold data in memory. Data is cleared when the page is refreshed.
+- `localStorage` - Cache will hold data in `localStorage` if available. Data is _not_ cleared when the page is refreshed.
+- `sessionStorage` - Cache will hold data in `sessionStorage` if available. Data is _not_ cleared when the page is refreshed.
+
+##### `storagePrefix`
+
+Determines the namespace of a cache when `storageMode` is set to `localStorage` or `sessionStorage`. Make it a shorter string to save space. Default: `angular-cache.caches.`.
+
+##### `storeOnReject`
+
+If inserting a promise into a cache, also insert the rejection value if the promise rejects. Default: `false`.
+
+##### storeOnResolve
+
+If inserting a promise into a cache, also insert the resolved value if the promise resolves. Default: `false`.
+
+### Using angular-cache with $http
+
+__Note:__ The downside of letting `$http` handle caching for you is that it caches the responses (in string form) to your requests–not the JavaScript Object parsed from the response body. This means you can't interact with the data in the cache used by `$http`. See below for how to handle the caching yourself, which gives you more control and the ability to interact with the cache (use it as a data store).
+
+Configure `$http` to use a cache created by `CacheFactory` by default:
+
+```js
+app.run(function ($http, CacheFactory) {
+ $http.defaults.cache = CacheFactory('defaultCache', {
+ maxAge: 15 * 60 * 1000, // Items added to this cache expire after 15 minutes
+ cacheFlushInterval: 60 * 60 * 1000, // This cache will clear itself every hour
+ deleteOnExpire: 'aggressive' // Items will be deleted from this cache when they expire
+ });
+});
+```
+
+```js
+app.service('MyService', function ($http, $q) {
+ return {
+ getDataById: function (id) {
+ var deferred = $q.defer();
+ var start = new Date().getTime();
+
+ $http.get('api/data/' + id, {
+ cache: true
+ }).success(function (data) {
+ console.log('time taken for request: ' + (new Date().getTime() - start) + 'ms');
+ deferred.resolve(data);
+ });
+ return deferred.promise;
+ }
+ };
+});
+```
+
+```js
+app.controller('myCtrl', function (MyService) {
+ MyService.getDataById(1).then(function (data) {
+ // e.g. "time taken for request: 2375ms"
+ // Data returned by this next call is already cached.
+ return MyService.getDataById(1).then(function (data) {
+ // e.g. "time taken for request: 1ms"
+ });
+ });
+});
+```
+
+Tell $http to use a cache created by CacheFactory for a specific request:
+
+```js
+app.service('MyService', function ($q, $http, CacheFactory) {
+
+ CacheFactory('dataCache', {
+ maxAge: 15 * 60 * 1000, // Items added to this cache expire after 15 minutes
+ cacheFlushInterval: 60 * 60 * 1000, // This cache will clear itself every hour
+ deleteOnExpire: 'aggressive' // Items will be deleted from this cache when they expire
+ });
+
+ return {
+ getDataById: function (id) {
+ var deferred = $q.defer();
+ var start = new Date().getTime();
+
+ $http.get('api/data/' + id, {
+ cache: CacheFactory.get('dataCache')
+ }).success(function (data) {
+ console.log('time taken for request: ' + (new Date().getTime() - start) + 'ms');
+ deferred.resolve(data);
+ });
+ return deferred.promise;
+ }
+ };
+});
+```
+
+```js
+app.controller('myCtrl', function (MyService) {
+ MyService.getDataById(1).then(function (data) {
+ // e.g. "time taken for request: 2375ms"
+ // Data returned by this next call is already cached.
+ return MyService.getDataById(1).then(function (data) {
+ // e.g. "time taken for request: 1ms"
+ });
+ });
+});
+```
+
+Do your own caching while using the $http service:
+
+```js
+app.service('MyService', function ($q, $http, CacheFactory) {
+
+ CacheFactory('dataCache', {
+ maxAge: 15 * 60 * 1000, // Items added to this cache expire after 15 minutes
+ cacheFlushInterval: 60 * 60 * 1000, // This cache will clear itself every hour
+ deleteOnExpire: 'aggressive' // Items will be deleted from this cache when they expire
+ });
+
+ return {
+ getDataById: function (id) {
+ var deferred = $q.defer();
+ var start = new Date().getTime();
+ var dataCache = CacheFactory.get('dataCache');
+
+ // Now that control of inserting/removing from the cache is in our hands,
+ // we can interact with the data in "dataCache" outside of this context,
+ // e.g. Modify the data after it has been returned from the server and
+ // save those modifications to the cache.
+ if (dataCache.get(id)) {
+ deferred.resolve(dataCache.get(id));
+ } else {
+ $http.get('api/data/' + id).success(function (data) {
+ console.log('time taken for request: ' + (new Date().getTime() - start) + 'ms');
+ dataCache.put(id, data);
+ deferred.resolve(data);
+ });
+ }
+ return deferred.promise;
+ }
+ };
+});
+```
+
+```js
+app.controller('myCtrl', function (MyService) {
+ MyService.getDataById(1).then(function (data) {
+ // e.g. "time taken for request: 2375ms"
+ // Data returned by this next call is already cached.
+ return MyService.getDataById(1).then(function (data) {
+ // e.g. "time taken for request: 1ms"
+ });
+ });
+});
+```
+
+### Using angular-cache with localStorage
+
+```js
+app.service('myService', function (CacheFactory) {
+
+ // This cache will sync itself with localStorage if it exists, otherwise it won't. Every time the
+ // browser loads this app, this cache will attempt to initialize itself with any data it had
+ // already saved to localStorage (or sessionStorage if you used that).
+ var myAwesomeCache = CacheFactory('myAwesomeCache', {
+ maxAge: 15 * 60 * 1000, // Items added to this cache expire after 15 minutes.
+ cacheFlushInterval: 60 * 60 * 1000, // This cache will clear itself every hour.
+ deleteOnExpire: 'aggressive', // Items will be deleted from this cache right when they expire.
+ storageMode: 'localStorage' // This cache will use `localStorage`.
+ });
+});
+```
+
+Using angular-cache in browsers that DON'T support localStorage:
+
+Option 1 - Do nothing (the cache will just store data in memory)
+
+Option 2 - Create/use a polyfill that provides the global `localStorage` and `sessionStorage` objects. angular-cache will attempt to use these if it finds them.
+
+Option 3 - Tell angular-cache exactly which polyfill to use (also useful if you just want to use your own implementation/wrapper for localStorage):
+
+```js
+app.service('myService', function (CacheFactory) {
+
+ var localStoragePolyfill = {
+ getItem: function (key) { ... },
+ setItem: function (key, value) { ... },
+ removeItem: function (key) { ... }
+ };
+
+ // Always use the polyfill
+ var myAwesomeCache = CacheFactory('myAwesomeCache', {
+ maxAge: 15 * 60 * 1000, // Items added to this cache expire after 15 minutes.
+ cacheFlushInterval: 60 * 60 * 1000, // This cache will clear itself every hour.
+ deleteOnExpire: 'aggressive', // Items will be deleted from this cache right when they expire.
+ storageMode: 'localStorage', // This cache will use `localStorage`.
+ storageImpl: localStoragePolyfill // angular-cache will use this polyfill instead of looking for localStorage
+ });
+
+ // Conditionally use the polyfill
+ var options = {
+ maxAge: 15 * 60 * 1000, // Items added to this cache expire after 15 minutes.
+ cacheFlushInterval: 60 * 60 * 1000, // This cache will clear itself every hour.
+ deleteOnExpire: 'aggressive', // Items will be deleted from this cache right when they expire.
+ storageMode: 'localStorage' // This cache will use `localStorage`.
+ };
+ if (!window.localStorage) {
+ options.storageImpl = localStoragePolyfill;
+ }
+ var myAwesomeCache = CacheFactory('myAwesomeCache', options);
+});
+```
+
+Documentation on the interface that must be implemented by any storageImpl polyfill used by angular-cache can be found on the W3C Recommendation page for webstorage. The interface itself looks like:
+
+```
+interface Storage {
+ readonly attribute unsigned long length;
+ DOMString? key(unsigned long index);
+ getter DOMString getItem(DOMString key);
+ setter creator void setItem(DOMString key, DOMString value);
+ deleter void removeItem(DOMString key);
+ void clear();
+};
+```
+
+angular-cache cares only about these three methods:
+
+- `setItem`
+- `getItem`
+- `removeItem`
+
+One developer suggested using store.js–a wrapper and polyfill for localStorage. However, store.js has its own API that doesn't match that of the webstorage spec, so if you want to use store.js or any other 3rd-party polyfill then you'll need to create a wrapper for it if it doesn't have the same API as localStorage . For example:
+
+```js
+var storeJsToStandard {
+ getItem: store.get,
+ setItem: store.set,
+ removeItem: store.remove
+};
+
+CacheFactory('myNewCache', {
+ storageMode: 'localStorage',
+ storageImpl: storeJsToStandard
+});
+```
+
+### API Reference
+
+##### `CacheFactory(cacheId[, options])` & `CacheFactory.createCache(cacheId[, options])`
+
+Create a cache. Cache must not already exist. `cacheId` must be a string. `options` is an optional argument and must be an object. Any options you pass here will override any default options.
+
+```js
+var cache = CacheFactory('cache');
+var cache2 = CacheFactory.createCache('cache2');
+var cache3 = CacheFactory('cache', { maxAge: 900000 });
+var cache4 = CacheFactory('cache'); // Error "cache already exists!"
+```
+
+##### `CacheFactory.get(cacheId)`
+
+Return the cache with the given `cacheId`.
+
+##### `CacheFactory.info()`
+
+Return an object of key-value pairs, the keys being cache ids and the values being the result of `.info()` being called on each cache.
+
+##### `CacheFactory.keySet()`
+
+Return the ids of all registered caches as an object.
+
+##### `CacheFactory.keys()`
+
+Return the ids of all registered caches as an array.
+
+##### `CacheFactory.destroy(cacheId)`
+
+Destroy the cache with the given `cacheId`.
+
+##### `CacheFactory.destroyAll()`
+
+Destroy all registered caches.
+
+##### `CacheFactory.clearAll()`
+
+Remove all data from all registered caches.
+
+##### `CacheFactory.enableAll()`
+
+Enable all registered caches.
+
+##### `CacheFactory.disableAll()`
+
+Disable all registered caches.
+
+##### `CacheFactory.touchAll()`
+
+Call `.touch()` on all registered caches.
+
+##### `CacheFactory.removeExpiredFromAll()`
+
+Call `.removeExpired()` on all registered caches. Returns a hash of any expired items, keyed by cache id.
+
+##### `Cache#get(key[, options])`
+
+Return the item with the given `key`. `options`, if provided, must be an object.
+
+If the cache is in `passive` mode, then `options.onExpire` can be a function that will be called with the `key` and `value` of the requested item if the requested item is expired, with the `get` call itself returning undefined.
+
+##### `Cache#put(key, value[, options])`
+
+Insert the item with the given `key` and `value` into the cache. `options`, if provided, must be an object.
+
+If inserting a promise, `options.storeOnReject` determines whether to insert the rejection value if the promise rejects (overriding the default `storeOnReject` setting for the cache).
+If inserting a promise, `options.storeOnResolve` determines whether to insert the resolved value if the promise resolves (overriding the default `storeOnResolve` setting for the cache).
+
+##### `Cache.remove(key)`
+
+Remove and return the item with the given `key`, if it is in the cache.
+
+##### `Cache.removeAll()`
+
+Remove all items in the cache.
+
+##### `Cache.removeExpired()`
+
+Remove and return all expired items in the cache.
+
+##### `Cache.destroy()`
+
+Completely destroy this cache and its data.
+
+##### `Cache#info([key])`
+
+`Cache#info()` returns an object containing information about the cache.
+
+`Cache#info(key)` returns an object containing information about the item with the given `key`, if the item is in the cache.
+
+##### `Cache#keySet()`
+
+Return the keys of all items in the cache as an object.
+
+##### `Cache#keys()`
+
+Return the keys of all items in the cache as an array.
+
+##### `Cache#enable()`
+
+Enable the cache.
+
+##### `Cache#disable()`
+
+Disable the cache.
+
+##### `Cache#values()`
+
+Return all values in the cache.
+
+##### `Cache#touch([key])`
+
+`Cache#touch()` will "touch" all items in the cache.
+`Cache#touch(key)` will "touch" the item with the given `key`.
+
+##### `Cache#setCacheFlushInterval(cacheFlushInterval)`
+
+Set the `cacheFlushInterval` for the cache.
+
+##### `Cache#setCapacity(capacity)`
+
+Set the `capacity` for the cache. Setting this lower than the current item count will result in those items being removed.
+
+##### `Cache#setDeleteOnExpire(deleteOnExpire)`
+
+Set the `deleteOnExpire` for the cache.
+
+##### `Cache#setMaxAge(maxAge)`
+
+Set the `maxAge` for the cache.
+
+##### `Cache#setOnExpire(onExpire)`
+
+Set the `onExpire` for the cache.
+
+##### `Cache#setRecycleFreq(recycleFreq)`
+
+Set the `recycleFreq` for the cache.
+
+##### `Cache#setStorageMode(storageMode)`
+
+Set the `storageMode` for the cache. This will move data from the current storage medium to the new one.
+
+##### `Cache#setOptions(options[, strict])`
+
+Set multiple options for the cache at a time. Setting `strict` to `true` will reset options for the cache that are not specifically set in the `options` hash to `CacheFactoryProvider.defaults`.
+
+### License
+[MIT License](https://github.com/jmdobry/angular-cache/blob/master/LICENSE)
+
+Copyright (C) 2013-2016 angular-cache project authors
+
+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.
diff --git a/ecomp-portal-FE/client/bower_components/angular-cache/TRANSITION.md b/ecomp-portal-FE/client/bower_components/angular-cache/TRANSITION.md
new file mode 100644
index 00000000..0c0920dc
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/angular-cache/TRANSITION.md
@@ -0,0 +1,98 @@
+### 2.x.x. ---> 3.x.x - xx April 2013
+TODO
+
+### 1.x.x. ---> 2.0.0 - 30 October 2013
+
+#### Breaking API changes
+##### Swapped `aggressiveDelete` option for `deleteOnExpire` option.
+
+###### 1.x.x
+Aggressively delete expiring items.
+```javascript
+$angularCacheFactory('myNewCache', {
+ maxAge: 90000, // Items added to this cache expire after 15 minutes
+ aggressiveDelete: true // Items will be actively deleted when they expire
+});
+```
+
+Passively delete items when they are requested after they have expired.
+```javascript
+$angularCacheFactory('myNewCache', {
+ maxAge: 90000, // Items added to this cache expire after 15 minutes
+ aggressiveDelete: false // Items will be actively deleted when they expire
+});
+```
+
+###### 2.0.0
+Aggressively delete expiring items.
+```javascript
+$angularCacheFactory('myNewCache', {
+ maxAge: 90000, // Items added to this cache expire after 15 minutes
+ deleteOnExpire: 'aggressive' // Items will be actively deleted when they expire
+});
+```
+
+Passively delete items when they are requested after they have expired.
+```javascript
+$angularCacheFactory('myNewCache', {
+ maxAge: 90000, // Items added to this cache expire after 15 minutes
+ deleteOnExpire: 'passive' // Items will be passively deleted when requested after expiration
+});
+```
+
+Do nothing with expired items (not in 1.x.x).
+```javascript
+$angularCacheFactory('myNewCache', {
+ maxAge: 90000, // Items added to this cache expire after 15 minutes
+ deleteOnExpire: 'none' // Items will expire but not be removed
+});
+```
+
+##### Substituted `localStorageImpl` and `sessionStorageImpl` options for just `storageImpl` option.
+
+###### 1.x.x
+```javascript
+$angularCacheFactory('myNewCache', {
+ storageMode: 'localStorage',
+ localStorageImpl: myLocalStoragePolyfill // Use custom localStorage implementation
+});
+
+$angularCacheFactory('myNewCache2', {
+ storageMode: 'sessionStorage',
+ sessionStorageImpl: mySessionStoragePolyfill // Use custom sessionStorage implementation
+});
+```
+
+###### 2.0.0
+```javascript
+$angularCacheFactory('myNewCache', {
+ storageMode: 'localStorage',
+ storageImpl: myLocalStoragePolyfill // Use custom localStorage implementation
+});
+
+$angularCacheFactory('myNewCache2', {
+ storageMode: 'sessionStorage',
+ storageImpl: mySessionStoragePolyfill // Use custom sessionStorage implementation
+});
+```
+
+##### Installation
+The Bower package now contains only `dist/angular-cache.js` and `dist/angular-cache.min.js`.
+
+##### onExpire
+
+###### 1.x.x
+```javascript
+cache.get('someKey', function (key, value) {
+ // do something with expired item
+});
+```
+
+###### 2.0.0
+```javascript
+cache.get('someKey', {
+ onExpire: function (key, value) {
+ // do something with expired item
+ }
+});
+```
diff --git a/ecomp-portal-FE/client/bower_components/angular-cache/bower.json b/ecomp-portal-FE/client/bower_components/angular-cache/bower.json
new file mode 100644
index 00000000..18882a7b
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/angular-cache/bower.json
@@ -0,0 +1,35 @@
+{
+ "author": "Jason Dobry",
+ "name": "angular-cache",
+ "description": "angular-cache is a very useful replacement for Angular's $cacheFactory.",
+ "homepage": "https://github.com/jmdobry/angular-cache",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/jmdobry/angular-cache.git"
+ },
+ "main": "./dist/angular-cache.js",
+ "ignore": [
+ ".idea/",
+ ".*",
+ "*.iml",
+ "src/",
+ "bower_components/",
+ "coverage/",
+ "Gruntfile.js",
+ "package.json",
+ "CONTRIBUTING.md",
+ "node_modules/",
+ "test/",
+ "karma.conf.js",
+ "karma.start.js",
+ "libpeerconnection.log"
+ ],
+ "devDependencies": {
+ "angular-1.2.25": "angular#1.2.25",
+ "angular-resource": "angular-resource#1.2.25",
+ "angular-mocks-1.2.25": "angular-mocks#1.2.25"
+ },
+ "dependencies": {
+ "angular": ">=1.x"
+ }
+}
diff --git a/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/browserify/README.md b/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/browserify/README.md
new file mode 100644
index 00000000..0d762e6d
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/browserify/README.md
@@ -0,0 +1 @@
+Running `browserify app.js > bundle.js` in this directory will produce `bundle.js`
diff --git a/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/browserify/app.js b/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/browserify/app.js
new file mode 100644
index 00000000..6f841e7f
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/browserify/app.js
@@ -0,0 +1,11 @@
+var angular = require('angular');
+
+angular.module('app', [
+ // this is what you would do in a real app
+ // require('angular-cache')
+
+ // for the example to work
+ require('../../dist/angular-cache.js')
+]).run(function ($rootScope, CacheFactory) {
+ $rootScope.test = 'It works! Using ' + (CacheFactory ? 'angular-cache' : 'undefined');
+});
diff --git a/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/browserify/index.html b/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/browserify/index.html
new file mode 100644
index 00000000..9769ccd3
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/browserify/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html ng-app="app">
+<head>
+ <title>My App</title>
+ <!-- load bundled scripts -->
+ <script src="bundle.js"></script>
+</head>
+<body>
+<h1>{{ test }}</h1>
+</body>
+</html>
diff --git a/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/r.js/README.md b/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/r.js/README.md
new file mode 100644
index 00000000..0632f376
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/r.js/README.md
@@ -0,0 +1,3 @@
+Running `r.js -o require.config.js` in this directory will produce `bundle.js`
+
+In `index.html` switch `script/main` between `main` (load scripts dynamically) and `bundle` (load bundled scripts)
diff --git a/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/r.js/app.js b/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/r.js/app.js
new file mode 100644
index 00000000..74cb9040
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/r.js/app.js
@@ -0,0 +1,9 @@
+define('app', [
+ 'angular',
+ 'angular-cache'
+], function (angular, angularCacheModuleName) {
+ return angular.module('app', ['angular-cache'])
+ .run(function ($rootScope) {
+ $rootScope.test = 'It works! Using ' + angularCacheModuleName;
+ });
+});
diff --git a/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/r.js/index.html b/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/r.js/index.html
new file mode 100644
index 00000000..781e49df
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/r.js/index.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>My App</title>
+ <!-- load scripts dynamically -->
+ <script data-main="main" src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.1.17/require.min.js"></script>
+
+ <!-- load bundled scripts -->
+ <!--<script data-main="bundle" src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.1.17/require.min.js"></script>-->
+</head>
+<body ng-cloak>
+<h1>{{ test }}</h1>
+</body>
+</html>
diff --git a/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/r.js/main.js b/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/r.js/main.js
new file mode 100644
index 00000000..0fb6e498
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/r.js/main.js
@@ -0,0 +1,22 @@
+require.config({
+ paths: {
+ angular: '../../bower_components/angular/angular',
+ 'angular-cache': '../../dist/angular-cache',
+ },
+ shim: {
+ 'angular': {
+ exports: 'angular'
+ }
+ }
+});
+
+require([
+ 'angular',
+ 'app'
+ ], function (angular, app) {
+ angular.element(document.getElementsByTagName('html')[0]).ready(function () {
+ // bootstrap the app manually
+ angular.bootstrap(document, ['app']);
+ });
+ }
+);
diff --git a/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/r.js/require.config.js b/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/r.js/require.config.js
new file mode 100644
index 00000000..a89ae0fb
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/r.js/require.config.js
@@ -0,0 +1,6 @@
+({
+ name: 'main',
+ mainConfigFile: 'main.js',
+ out: 'bundle.js',
+ optimize: 'none'
+})
diff --git a/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/webpack/README.md b/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/webpack/README.md
new file mode 100644
index 00000000..77d2d8f2
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/webpack/README.md
@@ -0,0 +1 @@
+Running `webpack` in this directory will produce `bundle.js`
diff --git a/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/webpack/app.js b/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/webpack/app.js
new file mode 100644
index 00000000..7b904ee5
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/webpack/app.js
@@ -0,0 +1,8 @@
+var angular = require('angular');
+var angularCacheModuleName = require('angular-cache');
+
+var app = angular.module('app', [
+ angularCacheModuleName
+]).run(function ($rootScope) {
+ $rootScope.test = 'It works, imported ' + angularCacheModuleName;
+});
diff --git a/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/webpack/index.html b/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/webpack/index.html
new file mode 100644
index 00000000..9769ccd3
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/webpack/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html ng-app="app">
+<head>
+ <title>My App</title>
+ <!-- load bundled scripts -->
+ <script src="bundle.js"></script>
+</head>
+<body>
+<h1>{{ test }}</h1>
+</body>
+</html>
diff --git a/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/webpack/webpack.config.js b/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/webpack/webpack.config.js
new file mode 100644
index 00000000..1b3a6dfb
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/webpack/webpack.config.js
@@ -0,0 +1,11 @@
+module.exports = {
+ entry: './app.js',
+ output: {
+ filename: 'bundle.js'
+ },
+ resolve: {
+ alias: {
+ 'angular-cache': '../../dist/angular-cache.js'
+ }
+ }
+};
diff --git a/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/webpack_es6/README.md b/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/webpack_es6/README.md
new file mode 100644
index 00000000..77d2d8f2
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/webpack_es6/README.md
@@ -0,0 +1 @@
+Running `webpack` in this directory will produce `bundle.js`
diff --git a/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/webpack_es6/app.js b/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/webpack_es6/app.js
new file mode 100644
index 00000000..78a3d254
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/webpack_es6/app.js
@@ -0,0 +1,8 @@
+import angular from 'angular';
+import angularCacheModuleName from 'angular-cache';
+
+let app = angular.module('app', [
+ angularCacheModuleName
+]).run($rootScope => {
+ $rootScope.test = 'It works, imported ' + angularCacheModuleName;
+});
diff --git a/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/webpack_es6/index.html b/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/webpack_es6/index.html
new file mode 100644
index 00000000..9769ccd3
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/webpack_es6/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html ng-app="app">
+<head>
+ <title>My App</title>
+ <!-- load bundled scripts -->
+ <script src="bundle.js"></script>
+</head>
+<body>
+<h1>{{ test }}</h1>
+</body>
+</html>
diff --git a/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/webpack_es6/webpack.config.js b/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/webpack_es6/webpack.config.js
new file mode 100644
index 00000000..3caf2bef
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/webpack_es6/webpack.config.js
@@ -0,0 +1,16 @@
+module.exports = {
+ entry: './app.js',
+ output: {
+ filename: 'bundle.js'
+ },
+ resolve: {
+ alias: {
+ 'angular-cache': '../../dist/angular-cache.js'
+ }
+ },
+ module: {
+ loaders: [
+ { test: /(.+)\.js$/, loader: 'babel-loader?blacklist=useStrict' }
+ ]
+ }
+};
diff --git a/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/webpack_es6_2/README.md b/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/webpack_es6_2/README.md
new file mode 100644
index 00000000..77d2d8f2
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/webpack_es6_2/README.md
@@ -0,0 +1 @@
+Running `webpack` in this directory will produce `bundle.js`
diff --git a/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/webpack_es6_2/app.js b/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/webpack_es6_2/app.js
new file mode 100644
index 00000000..c75a0b36
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/webpack_es6_2/app.js
@@ -0,0 +1,8 @@
+import 'angular';
+import 'angular-cache';
+
+let app = angular.module('app', [
+ 'angular-cache'
+]).run(($rootScope, CacheFactory) => {
+ $rootScope.test = 'It works, imported ' + (CacheFactory ? 'angular-cache' : 'undefined');
+});
diff --git a/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/webpack_es6_2/index.html b/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/webpack_es6_2/index.html
new file mode 100644
index 00000000..9769ccd3
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/webpack_es6_2/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html ng-app="app">
+<head>
+ <title>My App</title>
+ <!-- load bundled scripts -->
+ <script src="bundle.js"></script>
+</head>
+<body>
+<h1>{{ test }}</h1>
+</body>
+</html>
diff --git a/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/webpack_es6_2/webpack.config.js b/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/webpack_es6_2/webpack.config.js
new file mode 100644
index 00000000..3caf2bef
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/angular-cache/build_examples/webpack_es6_2/webpack.config.js
@@ -0,0 +1,16 @@
+module.exports = {
+ entry: './app.js',
+ output: {
+ filename: 'bundle.js'
+ },
+ resolve: {
+ alias: {
+ 'angular-cache': '../../dist/angular-cache.js'
+ }
+ },
+ module: {
+ loaders: [
+ { test: /(.+)\.js$/, loader: 'babel-loader?blacklist=useStrict' }
+ ]
+ }
+};
diff --git a/ecomp-portal-FE/client/bower_components/angular-cache/circle.yml b/ecomp-portal-FE/client/bower_components/angular-cache/circle.yml
new file mode 100644
index 00000000..cfe85771
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/angular-cache/circle.yml
@@ -0,0 +1,6 @@
+machine:
+ node:
+ version: 4.1.0
+test:
+ override:
+ - npm run ci
diff --git a/ecomp-portal-FE/client/bower_components/angular-cache/dist/angular-cache.js b/ecomp-portal-FE/client/bower_components/angular-cache/dist/angular-cache.js
new file mode 100644
index 00000000..6a62e9b7
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/angular-cache/dist/angular-cache.js
@@ -0,0 +1,1111 @@
+/**
+ * angular-cache
+ * @version 4.6.0 - Homepage <https://github.com/jmdobry/angular-cache>
+ * @copyright (c) 2013-2016 angular-cache project authors
+ * @license MIT <https://github.com/jmdobry/angular-cache/blob/master/LICENSE>
+ * @overview angular-cache is a very useful replacement for Angular's $cacheFactory.
+ */
+(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(typeof angular === 'undefined' ? require('angular') : angular) :
+ typeof define === 'function' && define.amd ? define('angular-cache', ['angular'], factory) :
+ (global.angularCacheModuleName = factory(global.angular));
+}(this, function (angular) { 'use strict';
+
+ angular = 'default' in angular ? angular['default'] : angular;
+
+ var babelHelpers = {};
+ babelHelpers.typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) {
+ return typeof obj;
+ } : function (obj) {
+ return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj;
+ };
+
+ /**
+ * @method bubbleUp
+ * @param {array} heap The heap.
+ * @param {function} weightFunc The weight function.
+ * @param {number} n The index of the element to bubble up.
+ */
+ var bubbleUp = function bubbleUp(heap, weightFunc, n) {
+ var element = heap[n];
+ var weight = weightFunc(element);
+ // When at 0, an element can not go up any further.
+ while (n > 0) {
+ // Compute the parent element's index, and fetch it.
+ var parentN = Math.floor((n + 1) / 2) - 1;
+ var parent = heap[parentN];
+ // If the parent has a lesser weight, things are in order and we
+ // are done.
+ if (weight >= weightFunc(parent)) {
+ break;
+ } else {
+ heap[parentN] = element;
+ heap[n] = parent;
+ n = parentN;
+ }
+ }
+ };
+
+ /**
+ * @method bubbleDown
+ * @param {array} heap The heap.
+ * @param {function} weightFunc The weight function.
+ * @param {number} n The index of the element to sink down.
+ */
+ var bubbleDown = function bubbleDown(heap, weightFunc, n) {
+ var length = heap.length;
+ var node = heap[n];
+ var nodeWeight = weightFunc(node);
+
+ while (true) {
+ var child2N = (n + 1) * 2;
+ var child1N = child2N - 1;
+ var swap = null;
+ if (child1N < length) {
+ var child1 = heap[child1N];
+ var child1Weight = weightFunc(child1);
+ // If the score is less than our node's, we need to swap.
+ if (child1Weight < nodeWeight) {
+ swap = child1N;
+ }
+ }
+ // Do the same checks for the other child.
+ if (child2N < length) {
+ var child2 = heap[child2N];
+ var child2Weight = weightFunc(child2);
+ if (child2Weight < (swap === null ? nodeWeight : weightFunc(heap[child1N]))) {
+ swap = child2N;
+ }
+ }
+
+ if (swap === null) {
+ break;
+ } else {
+ heap[n] = heap[swap];
+ heap[swap] = node;
+ n = swap;
+ }
+ }
+ };
+
+ function BinaryHeap(weightFunc, compareFunc) {
+ if (!weightFunc) {
+ weightFunc = function weightFunc(x) {
+ return x;
+ };
+ }
+ if (!compareFunc) {
+ compareFunc = function compareFunc(x, y) {
+ return x === y;
+ };
+ }
+ if (typeof weightFunc !== 'function') {
+ throw new Error('BinaryHeap([weightFunc][, compareFunc]): "weightFunc" must be a function!');
+ }
+ if (typeof compareFunc !== 'function') {
+ throw new Error('BinaryHeap([weightFunc][, compareFunc]): "compareFunc" must be a function!');
+ }
+ this.weightFunc = weightFunc;
+ this.compareFunc = compareFunc;
+ this.heap = [];
+ }
+
+ var BHProto = BinaryHeap.prototype;
+
+ BHProto.push = function (node) {
+ this.heap.push(node);
+ bubbleUp(this.heap, this.weightFunc, this.heap.length - 1);
+ };
+
+ BHProto.peek = function () {
+ return this.heap[0];
+ };
+
+ BHProto.pop = function () {
+ var front = this.heap[0];
+ var end = this.heap.pop();
+ if (this.heap.length > 0) {
+ this.heap[0] = end;
+ bubbleDown(this.heap, this.weightFunc, 0);
+ }
+ return front;
+ };
+
+ BHProto.remove = function (node) {
+ var length = this.heap.length;
+ for (var i = 0; i < length; i++) {
+ if (this.compareFunc(this.heap[i], node)) {
+ var removed = this.heap[i];
+ var end = this.heap.pop();
+ if (i !== length - 1) {
+ this.heap[i] = end;
+ bubbleUp(this.heap, this.weightFunc, i);
+ bubbleDown(this.heap, this.weightFunc, i);
+ }
+ return removed;
+ }
+ }
+ return null;
+ };
+
+ BHProto.removeAll = function () {
+ this.heap = [];
+ };
+
+ BHProto.size = function () {
+ return this.heap.length;
+ };
+
+ var _Promise = null;
+ try {
+ _Promise = window.Promise;
+ } catch (e) {}
+
+ var utils = {
+ isNumber: function isNumber(value) {
+ return typeof value === 'number';
+ },
+ isString: function isString(value) {
+ return typeof value === 'string';
+ },
+ isObject: function isObject(value) {
+ return value !== null && (typeof value === 'undefined' ? 'undefined' : babelHelpers.typeof(value)) === 'object';
+ },
+ isFunction: function isFunction(value) {
+ return typeof value === 'function';
+ },
+ fromJson: function fromJson(value) {
+ return JSON.parse(value);
+ },
+ equals: function equals(a, b) {
+ return a === b;
+ },
+
+ Promise: _Promise
+ };
+
+ function _keys(collection) {
+ var keys = [];
+ var key = void 0;
+ if (!utils.isObject(collection)) {
+ return keys;
+ }
+ for (key in collection) {
+ if (collection.hasOwnProperty(key)) {
+ keys.push(key);
+ }
+ }
+ return keys;
+ }
+
+ function _isPromiseLike(value) {
+ return value && typeof value.then === 'function';
+ }
+
+ function _stringifyNumber(number) {
+ if (utils.isNumber(number)) {
+ return number.toString();
+ }
+ return number;
+ }
+
+ function _keySet(collection) {
+ var keySet = {};
+ var key = void 0;
+ if (!utils.isObject(collection)) {
+ return keySet;
+ }
+ for (key in collection) {
+ if (collection.hasOwnProperty(key)) {
+ keySet[key] = key;
+ }
+ }
+ return keySet;
+ }
+
+ var defaults = {
+ capacity: Number.MAX_VALUE,
+ maxAge: Number.MAX_VALUE,
+ deleteOnExpire: 'none',
+ onExpire: null,
+ cacheFlushInterval: null,
+ recycleFreq: 1000,
+ storageMode: 'memory',
+ storageImpl: null,
+ disabled: false,
+ storagePrefix: 'cachefactory.caches.',
+ storeOnResolve: false,
+ storeOnReject: false
+ };
+
+ var caches = {};
+
+ function createCache(cacheId, options) {
+ if (cacheId in caches) {
+ throw new Error(cacheId + ' already exists!');
+ } else if (!utils.isString(cacheId)) {
+ throw new Error('cacheId must be a string!');
+ }
+
+ var $$data = {};
+ var $$promises = {};
+ var $$storage = null;
+ var $$expiresHeap = new BinaryHeap(function (x) {
+ return x.expires;
+ }, utils.equals);
+ var $$lruHeap = new BinaryHeap(function (x) {
+ return x.accessed;
+ }, utils.equals);
+
+ var cache = caches[cacheId] = {
+
+ $$id: cacheId,
+
+ destroy: function destroy() {
+ clearInterval(this.$$cacheFlushIntervalId);
+ clearInterval(this.$$recycleFreqId);
+ this.removeAll();
+ if ($$storage) {
+ $$storage().removeItem(this.$$prefix + '.keys');
+ $$storage().removeItem(this.$$prefix);
+ }
+ $$storage = null;
+ $$data = null;
+ $$lruHeap = null;
+ $$expiresHeap = null;
+ this.$$prefix = null;
+ delete caches[this.$$id];
+ },
+ disable: function disable() {
+ this.$$disabled = true;
+ },
+ enable: function enable() {
+ delete this.$$disabled;
+ },
+ get: function get(key, options) {
+ var _this2 = this;
+
+ if (Array.isArray(key)) {
+ var _ret = function () {
+ var keys = key;
+ var values = [];
+
+ keys.forEach(function (key) {
+ var value = _this2.get(key, options);
+ if (value !== null && value !== undefined) {
+ values.push(value);
+ }
+ });
+
+ return {
+ v: values
+ };
+ }();
+
+ if ((typeof _ret === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret)) === "object") return _ret.v;
+ } else {
+ key = _stringifyNumber(key);
+
+ if (this.$$disabled) {
+ return;
+ }
+ }
+
+ options = options || {};
+ if (!utils.isString(key)) {
+ throw new Error('key must be a string!');
+ } else if (options && !utils.isObject(options)) {
+ throw new Error('options must be an object!');
+ } else if (options.onExpire && !utils.isFunction(options.onExpire)) {
+ throw new Error('options.onExpire must be a function!');
+ }
+
+ var item = void 0;
+
+ if ($$storage) {
+ if ($$promises[key]) {
+ return $$promises[key];
+ }
+
+ var itemJson = $$storage().getItem(this.$$prefix + '.data.' + key);
+
+ if (itemJson) {
+ item = utils.fromJson(itemJson);
+ } else {
+ return;
+ }
+ } else if (utils.isObject($$data)) {
+ if (!(key in $$data)) {
+ return;
+ }
+
+ item = $$data[key];
+ }
+
+ var value = item.value;
+ var now = new Date().getTime();
+
+ if ($$storage) {
+ $$lruHeap.remove({
+ key: key,
+ accessed: item.accessed
+ });
+ item.accessed = now;
+ $$lruHeap.push({
+ key: key,
+ accessed: now
+ });
+ } else {
+ $$lruHeap.remove(item);
+ item.accessed = now;
+ $$lruHeap.push(item);
+ }
+
+ if (this.$$deleteOnExpire === 'passive' && 'expires' in item && item.expires < now) {
+ this.remove(key);
+
+ if (this.$$onExpire) {
+ this.$$onExpire(key, item.value, options.onExpire);
+ } else if (options.onExpire) {
+ options.onExpire.call(this, key, item.value);
+ }
+ value = undefined;
+ } else if ($$storage) {
+ $$storage().setItem(this.$$prefix + '.data.' + key, JSON.stringify(item));
+ }
+
+ return value;
+ },
+ info: function info(key) {
+ if (key) {
+ var item = void 0;
+ if ($$storage) {
+ var itemJson = $$storage().getItem(this.$$prefix + '.data.' + key);
+
+ if (itemJson) {
+ item = utils.fromJson(itemJson);
+ return {
+ created: item.created,
+ accessed: item.accessed,
+ expires: item.expires,
+ isExpired: new Date().getTime() - item.created > (item.maxAge || this.$$maxAge)
+ };
+ } else {
+ return undefined;
+ }
+ } else if (utils.isObject($$data) && key in $$data) {
+ item = $$data[key];
+
+ return {
+ created: item.created,
+ accessed: item.accessed,
+ expires: item.expires,
+ isExpired: new Date().getTime() - item.created > (item.maxAge || this.$$maxAge)
+ };
+ } else {
+ return undefined;
+ }
+ } else {
+ return {
+ id: this.$$id,
+ capacity: this.$$capacity,
+ maxAge: this.$$maxAge,
+ deleteOnExpire: this.$$deleteOnExpire,
+ onExpire: this.$$onExpire,
+ cacheFlushInterval: this.$$cacheFlushInterval,
+ recycleFreq: this.$$recycleFreq,
+ storageMode: this.$$storageMode,
+ storageImpl: $$storage ? $$storage() : undefined,
+ disabled: !!this.$$disabled,
+ size: $$lruHeap && $$lruHeap.size() || 0
+ };
+ }
+ },
+ keys: function keys() {
+ if ($$storage) {
+ var keysJson = $$storage().getItem(this.$$prefix + '.keys');
+
+ if (keysJson) {
+ return utils.fromJson(keysJson);
+ } else {
+ return [];
+ }
+ } else {
+ return _keys($$data);
+ }
+ },
+ keySet: function keySet() {
+ if ($$storage) {
+ var keysJson = $$storage().getItem(this.$$prefix + '.keys');
+ var kSet = {};
+
+ if (keysJson) {
+ var keys = utils.fromJson(keysJson);
+
+ for (var i = 0; i < keys.length; i++) {
+ kSet[keys[i]] = keys[i];
+ }
+ }
+ return kSet;
+ } else {
+ return _keySet($$data);
+ }
+ },
+ put: function put(key, value, options) {
+ var _this3 = this;
+
+ options || (options = {});
+
+ var storeOnResolve = 'storeOnResolve' in options ? !!options.storeOnResolve : this.$$storeOnResolve;
+ var storeOnReject = 'storeOnReject' in options ? !!options.storeOnReject : this.$$storeOnReject;
+
+ var getHandler = function getHandler(store, isError) {
+ return function (v) {
+ if (store) {
+ delete $$promises[key];
+ if (utils.isObject(v) && 'status' in v && 'data' in v) {
+ v = [v.status, v.data, v.headers(), v.statusText];
+ _this3.put(key, v);
+ } else {
+ _this3.put(key, v);
+ }
+ }
+ if (isError) {
+ if (utils.Promise) {
+ return utils.Promise.reject(v);
+ } else {
+ throw v;
+ }
+ } else {
+ return v;
+ }
+ };
+ };
+
+ if (this.$$disabled || !utils.isObject($$data) || value === null || value === undefined) {
+ return;
+ }
+ key = _stringifyNumber(key);
+
+ if (!utils.isString(key)) {
+ throw new Error('key must be a string!');
+ }
+
+ var now = new Date().getTime();
+ var item = {
+ key: key,
+ value: _isPromiseLike(value) ? value.then(getHandler(storeOnResolve, false), getHandler(storeOnReject, true)) : value,
+ created: options.created === undefined ? now : options.created,
+ accessed: options.accessed === undefined ? now : options.accessed
+ };
+ if (options.maxAge) {
+ item.maxAge = options.maxAge;
+ }
+
+ if (options.expires === undefined) {
+ item.expires = item.created + (item.maxAge || this.$$maxAge);
+ } else {
+ item.expires = options.expires;
+ }
+
+ if ($$storage) {
+ if (_isPromiseLike(item.value)) {
+ $$promises[key] = item.value;
+ return $$promises[key];
+ }
+ var keysJson = $$storage().getItem(this.$$prefix + '.keys');
+ var keys = keysJson ? utils.fromJson(keysJson) : [];
+ var itemJson = $$storage().getItem(this.$$prefix + '.data.' + key);
+
+ // Remove existing
+ if (itemJson) {
+ this.remove(key);
+ }
+ // Add to expires heap
+ $$expiresHeap.push({
+ key: key,
+ expires: item.expires
+ });
+ // Add to lru heap
+ $$lruHeap.push({
+ key: key,
+ accessed: item.accessed
+ });
+ // Set item
+ $$storage().setItem(this.$$prefix + '.data.' + key, JSON.stringify(item));
+ var exists = false;
+ for (var i = 0; i < keys.length; i++) {
+ if (keys[i] === key) {
+ exists = true;
+ break;
+ }
+ }
+ if (!exists) {
+ keys.push(key);
+ }
+ $$storage().setItem(this.$$prefix + '.keys', JSON.stringify(keys));
+ } else {
+ // Remove existing
+ if ($$data[key]) {
+ this.remove(key);
+ }
+ // Add to expires heap
+ $$expiresHeap.push(item);
+ // Add to lru heap
+ $$lruHeap.push(item);
+ // Set item
+ $$data[key] = item;
+ delete $$promises[key];
+ }
+
+ // Handle exceeded capacity
+ if ($$lruHeap.size() > this.$$capacity) {
+ this.remove($$lruHeap.peek().key);
+ }
+
+ return value;
+ },
+ remove: function remove(key) {
+ key += '';
+ delete $$promises[key];
+ if ($$storage) {
+ var itemJson = $$storage().getItem(this.$$prefix + '.data.' + key);
+
+ if (itemJson) {
+ var item = utils.fromJson(itemJson);
+ $$lruHeap.remove({
+ key: key,
+ accessed: item.accessed
+ });
+ $$expiresHeap.remove({
+ key: key,
+ expires: item.expires
+ });
+ $$storage().removeItem(this.$$prefix + '.data.' + key);
+ var keysJson = $$storage().getItem(this.$$prefix + '.keys');
+ var keys = keysJson ? utils.fromJson(keysJson) : [];
+ var index = keys.indexOf(key);
+
+ if (index >= 0) {
+ keys.splice(index, 1);
+ }
+ $$storage().setItem(this.$$prefix + '.keys', JSON.stringify(keys));
+ return item.value;
+ }
+ } else if (utils.isObject($$data)) {
+ var value = $$data[key] ? $$data[key].value : undefined;
+ $$lruHeap.remove($$data[key]);
+ $$expiresHeap.remove($$data[key]);
+ $$data[key] = null;
+ delete $$data[key];
+ return value;
+ }
+ },
+ removeAll: function removeAll() {
+ if ($$storage) {
+ $$lruHeap.removeAll();
+ $$expiresHeap.removeAll();
+ var keysJson = $$storage().getItem(this.$$prefix + '.keys');
+
+ if (keysJson) {
+ var keys = utils.fromJson(keysJson);
+
+ for (var i = 0; i < keys.length; i++) {
+ this.remove(keys[i]);
+ }
+ }
+ $$storage().setItem(this.$$prefix + '.keys', JSON.stringify([]));
+ } else if (utils.isObject($$data)) {
+ $$lruHeap.removeAll();
+ $$expiresHeap.removeAll();
+ for (var key in $$data) {
+ $$data[key] = null;
+ }
+ $$data = {};
+ } else {
+ $$lruHeap.removeAll();
+ $$expiresHeap.removeAll();
+ $$data = {};
+ }
+ $$promises = {};
+ },
+ removeExpired: function removeExpired() {
+ var now = new Date().getTime();
+ var expired = {};
+ var key = void 0;
+ var expiredItem = void 0;
+
+ while ((expiredItem = $$expiresHeap.peek()) && expiredItem.expires <= now) {
+ expired[expiredItem.key] = expiredItem.value ? expiredItem.value : null;
+ $$expiresHeap.pop();
+ }
+
+ if ($$storage) {
+ for (key in expired) {
+ var itemJson = $$storage().getItem(this.$$prefix + '.data.' + key);
+ if (itemJson) {
+ expired[key] = utils.fromJson(itemJson).value;
+ this.remove(key);
+ }
+ }
+ } else {
+ for (key in expired) {
+ this.remove(key);
+ }
+ }
+
+ if (this.$$onExpire) {
+ for (key in expired) {
+ this.$$onExpire(key, expired[key]);
+ }
+ }
+
+ return expired;
+ },
+ setCacheFlushInterval: function setCacheFlushInterval(cacheFlushInterval) {
+ var _this = this;
+ if (cacheFlushInterval === null) {
+ delete _this.$$cacheFlushInterval;
+ } else if (!utils.isNumber(cacheFlushInterval)) {
+ throw new Error('cacheFlushInterval must be a number!');
+ } else if (cacheFlushInterval < 0) {
+ throw new Error('cacheFlushInterval must be greater than zero!');
+ } else if (cacheFlushInterval !== _this.$$cacheFlushInterval) {
+ _this.$$cacheFlushInterval = cacheFlushInterval;
+
+ clearInterval(_this.$$cacheFlushIntervalId); // eslint-disable-line
+
+ _this.$$cacheFlushIntervalId = setInterval(function () {
+ _this.removeAll();
+ }, _this.$$cacheFlushInterval);
+ }
+ },
+ setCapacity: function setCapacity(capacity) {
+ if (capacity === null) {
+ delete this.$$capacity;
+ } else if (!utils.isNumber(capacity)) {
+ throw new Error('capacity must be a number!');
+ } else if (capacity < 0) {
+ throw new Error('capacity must be greater than zero!');
+ } else {
+ this.$$capacity = capacity;
+ }
+ var removed = {};
+ while ($$lruHeap.size() > this.$$capacity) {
+ removed[$$lruHeap.peek().key] = this.remove($$lruHeap.peek().key);
+ }
+ return removed;
+ },
+ setDeleteOnExpire: function setDeleteOnExpire(deleteOnExpire, setRecycleFreq) {
+ if (deleteOnExpire === null) {
+ delete this.$$deleteOnExpire;
+ } else if (!utils.isString(deleteOnExpire)) {
+ throw new Error('deleteOnExpire must be a string!');
+ } else if (deleteOnExpire !== 'none' && deleteOnExpire !== 'passive' && deleteOnExpire !== 'aggressive') {
+ throw new Error('deleteOnExpire must be "none", "passive" or "aggressive"!');
+ } else {
+ this.$$deleteOnExpire = deleteOnExpire;
+ }
+ if (setRecycleFreq !== false) {
+ this.setRecycleFreq(this.$$recycleFreq);
+ }
+ },
+ setMaxAge: function setMaxAge(maxAge) {
+ if (maxAge === null) {
+ this.$$maxAge = Number.MAX_VALUE;
+ } else if (!utils.isNumber(maxAge)) {
+ throw new Error('maxAge must be a number!');
+ } else if (maxAge < 0) {
+ throw new Error('maxAge must be greater than zero!');
+ } else {
+ this.$$maxAge = maxAge;
+ }
+ var i = void 0,
+ keys = void 0,
+ key = void 0;
+
+ $$expiresHeap.removeAll();
+
+ if ($$storage) {
+ var keysJson = $$storage().getItem(this.$$prefix + '.keys');
+
+ keys = keysJson ? utils.fromJson(keysJson) : [];
+
+ for (i = 0; i < keys.length; i++) {
+ key = keys[i];
+ var itemJson = $$storage().getItem(this.$$prefix + '.data.' + key);
+
+ if (itemJson) {
+ var item = utils.fromJson(itemJson);
+ if (this.$$maxAge === Number.MAX_VALUE) {
+ item.expires = Number.MAX_VALUE;
+ } else {
+ item.expires = item.created + (item.maxAge || this.$$maxAge);
+ }
+ $$expiresHeap.push({
+ key: key,
+ expires: item.expires
+ });
+ }
+ }
+ } else {
+ keys = _keys($$data);
+
+ for (i = 0; i < keys.length; i++) {
+ key = keys[i];
+ if (this.$$maxAge === Number.MAX_VALUE) {
+ $$data[key].expires = Number.MAX_VALUE;
+ } else {
+ $$data[key].expires = $$data[key].created + ($$data[key].maxAge || this.$$maxAge);
+ }
+ $$expiresHeap.push($$data[key]);
+ }
+ }
+ if (this.$$deleteOnExpire === 'aggressive') {
+ return this.removeExpired();
+ } else {
+ return {};
+ }
+ },
+ setOnExpire: function setOnExpire(onExpire) {
+ if (onExpire === null) {
+ delete this.$$onExpire;
+ } else if (!utils.isFunction(onExpire)) {
+ throw new Error('onExpire must be a function!');
+ } else {
+ this.$$onExpire = onExpire;
+ }
+ },
+ setOptions: function setOptions(cacheOptions, strict) {
+ cacheOptions = cacheOptions || {};
+ strict = !!strict;
+ if (!utils.isObject(cacheOptions)) {
+ throw new Error('cacheOptions must be an object!');
+ }
+
+ if ('storagePrefix' in cacheOptions) {
+ this.$$storagePrefix = cacheOptions.storagePrefix;
+ } else if (strict) {
+ this.$$storagePrefix = defaults.storagePrefix;
+ }
+
+ this.$$prefix = this.$$storagePrefix + this.$$id;
+
+ if ('disabled' in cacheOptions) {
+ this.$$disabled = !!cacheOptions.disabled;
+ } else if (strict) {
+ this.$$disabled = defaults.disabled;
+ }
+
+ if ('deleteOnExpire' in cacheOptions) {
+ this.setDeleteOnExpire(cacheOptions.deleteOnExpire, false);
+ } else if (strict) {
+ this.setDeleteOnExpire(defaults.deleteOnExpire, false);
+ }
+
+ if ('recycleFreq' in cacheOptions) {
+ this.setRecycleFreq(cacheOptions.recycleFreq);
+ } else if (strict) {
+ this.setRecycleFreq(defaults.recycleFreq);
+ }
+
+ if ('maxAge' in cacheOptions) {
+ this.setMaxAge(cacheOptions.maxAge);
+ } else if (strict) {
+ this.setMaxAge(defaults.maxAge);
+ }
+
+ if ('storeOnResolve' in cacheOptions) {
+ this.$$storeOnResolve = !!cacheOptions.storeOnResolve;
+ } else if (strict) {
+ this.$$storeOnResolve = defaults.storeOnResolve;
+ }
+
+ if ('storeOnReject' in cacheOptions) {
+ this.$$storeOnReject = !!cacheOptions.storeOnReject;
+ } else if (strict) {
+ this.$$storeOnReject = defaults.storeOnReject;
+ }
+
+ if ('capacity' in cacheOptions) {
+ this.setCapacity(cacheOptions.capacity);
+ } else if (strict) {
+ this.setCapacity(defaults.capacity);
+ }
+
+ if ('cacheFlushInterval' in cacheOptions) {
+ this.setCacheFlushInterval(cacheOptions.cacheFlushInterval);
+ } else if (strict) {
+ this.setCacheFlushInterval(defaults.cacheFlushInterval);
+ }
+
+ if ('onExpire' in cacheOptions) {
+ this.setOnExpire(cacheOptions.onExpire);
+ } else if (strict) {
+ this.setOnExpire(defaults.onExpire);
+ }
+
+ if ('storageMode' in cacheOptions || 'storageImpl' in cacheOptions) {
+ this.setStorageMode(cacheOptions.storageMode || defaults.storageMode, cacheOptions.storageImpl || defaults.storageImpl);
+ } else if (strict) {
+ this.setStorageMode(defaults.storageMode, defaults.storageImpl);
+ }
+ },
+ setRecycleFreq: function setRecycleFreq(recycleFreq) {
+ if (recycleFreq === null) {
+ delete this.$$recycleFreq;
+ } else if (!utils.isNumber(recycleFreq)) {
+ throw new Error('recycleFreq must be a number!');
+ } else if (recycleFreq < 0) {
+ throw new Error('recycleFreq must be greater than zero!');
+ } else {
+ this.$$recycleFreq = recycleFreq;
+ }
+ clearInterval(this.$$recycleFreqId);
+ if (this.$$deleteOnExpire === 'aggressive') {
+ (function (self) {
+ self.$$recycleFreqId = setInterval(function () {
+ self.removeExpired();
+ }, self.$$recycleFreq);
+ })(this);
+ } else {
+ delete this.$$recycleFreqId;
+ }
+ },
+ setStorageMode: function setStorageMode(storageMode, storageImpl) {
+ if (!utils.isString(storageMode)) {
+ throw new Error('storageMode must be a string!');
+ } else if (storageMode !== 'memory' && storageMode !== 'localStorage' && storageMode !== 'sessionStorage') {
+ throw new Error('storageMode must be "memory", "localStorage" or "sessionStorage"!');
+ }
+
+ var prevStorage = $$storage;
+ var prevData = $$data;
+ var shouldReInsert = false;
+ var items = {};
+
+ function load(prevStorage, prevData) {
+ var keys = this.keys();
+ var length = keys.length;
+ if (length) {
+ var _key = void 0;
+ var prevDataIsObject = utils.isObject(prevData);
+ for (var i = 0; i < length; i++) {
+ _key = keys[i];
+ if (prevStorage) {
+ var itemJson = prevStorage().getItem(this.$$prefix + '.data.' + _key);
+ if (itemJson) {
+ items[_key] = utils.fromJson(itemJson);
+ }
+ } else if (prevDataIsObject) {
+ items[_key] = prevData[_key];
+ }
+ this.remove(_key);
+ }
+ shouldReInsert = true;
+ }
+ }
+
+ if (!this.$$initializing) {
+ load.call(this, prevStorage, prevData);
+ }
+
+ this.$$storageMode = storageMode;
+
+ if (storageImpl) {
+ if (!utils.isObject(storageImpl)) {
+ throw new Error('storageImpl must be an object!');
+ } else if (!('setItem' in storageImpl) || typeof storageImpl.setItem !== 'function') {
+ throw new Error('storageImpl must implement "setItem(key, value)"!');
+ } else if (!('getItem' in storageImpl) || typeof storageImpl.getItem !== 'function') {
+ throw new Error('storageImpl must implement "getItem(key)"!');
+ } else if (!('removeItem' in storageImpl) || typeof storageImpl.removeItem !== 'function') {
+ throw new Error('storageImpl must implement "removeItem(key)"!');
+ }
+ $$storage = function $$storage() {
+ return storageImpl;
+ };
+ } else if (this.$$storageMode === 'localStorage') {
+ try {
+ localStorage.setItem('cachefactory', 'cachefactory');
+ localStorage.removeItem('cachefactory');
+ $$storage = function $$storage() {
+ return localStorage;
+ };
+ } catch (e) {
+ $$storage = null;
+ this.$$storageMode = 'memory';
+ }
+ } else if (this.$$storageMode === 'sessionStorage') {
+ try {
+ sessionStorage.setItem('cachefactory', 'cachefactory');
+ sessionStorage.removeItem('cachefactory');
+ $$storage = function $$storage() {
+ return sessionStorage;
+ };
+ } catch (e) {
+ $$storage = null;
+ this.$$storageMode = 'memory';
+ }
+ } else {
+ $$storage = null;
+ this.$$storageMode = 'memory';
+ }
+
+ if (this.$$initializing) {
+ load.call(this, $$storage, $$data);
+ }
+
+ if (shouldReInsert) {
+ var item = void 0;
+ for (var key in items) {
+ item = items[key];
+ this.put(key, item.value, {
+ created: item.created,
+ accessed: item.accessed,
+ expires: item.expires
+ });
+ }
+ }
+ },
+ touch: function touch(key, options) {
+ var _this4 = this;
+
+ if (key) {
+ var val = this.get(key, {
+ onExpire: function onExpire(k, v) {
+ return _this4.put(k, v);
+ }
+ });
+ if (val) {
+ this.put(key, val, options);
+ }
+ } else {
+ var keys = this.keys();
+ for (var i = 0; i < keys.length; i++) {
+ this.touch(keys[i], options);
+ }
+ }
+ },
+ values: function values() {
+ var keys = this.keys();
+ var items = [];
+ for (var i = 0; i < keys.length; i++) {
+ items.push(this.get(keys[i]));
+ }
+ return items;
+ }
+ };
+
+ cache.$$initializing = true;
+ cache.setOptions(options, true);
+ cache.$$initializing = false;
+
+ return cache;
+ }
+
+ function CacheFactory(cacheId, options) {
+ return createCache(cacheId, options);
+ }
+
+ CacheFactory.createCache = createCache;
+ CacheFactory.defaults = defaults;
+
+ CacheFactory.info = function () {
+ var keys = _keys(caches);
+ var info = {
+ size: keys.length,
+ caches: {}
+ };
+ for (var opt in defaults) {
+ if (defaults.hasOwnProperty(opt)) {
+ info[opt] = defaults[opt];
+ }
+ }
+ for (var i = 0; i < keys.length; i++) {
+ var key = keys[i];
+ info.caches[key] = caches[key].info();
+ }
+ return info;
+ };
+
+ CacheFactory.get = function (cacheId) {
+ return caches[cacheId];
+ };
+ CacheFactory.keySet = function () {
+ return _keySet(caches);
+ };
+ CacheFactory.keys = function () {
+ return _keys(caches);
+ };
+ CacheFactory.destroy = function (cacheId) {
+ if (caches[cacheId]) {
+ caches[cacheId].destroy();
+ delete caches[cacheId];
+ }
+ };
+ CacheFactory.destroyAll = function () {
+ for (var cacheId in caches) {
+ caches[cacheId].destroy();
+ }
+ caches = {};
+ };
+ CacheFactory.clearAll = function () {
+ for (var cacheId in caches) {
+ caches[cacheId].removeAll();
+ }
+ };
+ CacheFactory.removeExpiredFromAll = function () {
+ var expired = {};
+ for (var cacheId in caches) {
+ expired[cacheId] = caches[cacheId].removeExpired();
+ }
+ return expired;
+ };
+ CacheFactory.enableAll = function () {
+ for (var cacheId in caches) {
+ caches[cacheId].$$disabled = false;
+ }
+ };
+ CacheFactory.disableAll = function () {
+ for (var cacheId in caches) {
+ caches[cacheId].$$disabled = true;
+ }
+ };
+ CacheFactory.touchAll = function () {
+ for (var cacheId in caches) {
+ caches[cacheId].touch();
+ }
+ };
+
+ CacheFactory.utils = utils;
+ CacheFactory.BinaryHeap = BinaryHeap;
+
+ CacheFactory.utils.equals = angular.equals;
+ CacheFactory.utils.isObject = angular.isObject;
+ CacheFactory.utils.fromJson = angular.fromJson;
+
+ function BinaryHeapProvider() {
+ this.$get = function () {
+ return CacheFactory.BinaryHeap;
+ };
+ }
+
+ function CacheFactoryProvider() {
+ this.defaults = CacheFactory.defaults;
+ this.defaults.storagePrefix = 'angular-cache.caches.';
+
+ this.$get = ['$q', function ($q) {
+ CacheFactory.utils.Promise = $q;
+ return CacheFactory;
+ }];
+ }
+
+ angular.module('angular-cache', []).provider('BinaryHeap', BinaryHeapProvider).provider('CacheFactory', CacheFactoryProvider);
+
+ var index = 'angular-cache';
+
+ return index;
+
+}));
+//# sourceMappingURL=angular-cache.js.map \ No newline at end of file
diff --git a/ecomp-portal-FE/client/bower_components/angular-cache/dist/angular-cache.js.map b/ecomp-portal-FE/client/bower_components/angular-cache/dist/angular-cache.js.map
new file mode 100644
index 00000000..ca27a6fd
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/angular-cache/dist/angular-cache.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"angular-cache.js","sources":["../node_modules/cachefactory/dist/cachefactory.es2015.js","../src/index.js"],"sourcesContent":["/**\n * CacheFactory\n * @version 1.5.1 - Homepage <https://github.com/jmdobry/CacheFactory>\n * @copyright (c) 2013-2016 CacheFactory project authors\n * @license MIT <https://github.com/jmdobry/CacheFactory/blob/master/LICENSE>\n * @overview CacheFactory is a very simple and useful cache for the browser.\n */\nvar babelHelpers = {};\nbabelHelpers.typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n};\nbabelHelpers;\n\n/**\n * @method bubbleUp\n * @param {array} heap The heap.\n * @param {function} weightFunc The weight function.\n * @param {number} n The index of the element to bubble up.\n */\nvar bubbleUp = function bubbleUp(heap, weightFunc, n) {\n var element = heap[n];\n var weight = weightFunc(element);\n // When at 0, an element can not go up any further.\n while (n > 0) {\n // Compute the parent element's index, and fetch it.\n var parentN = Math.floor((n + 1) / 2) - 1;\n var parent = heap[parentN];\n // If the parent has a lesser weight, things are in order and we\n // are done.\n if (weight >= weightFunc(parent)) {\n break;\n } else {\n heap[parentN] = element;\n heap[n] = parent;\n n = parentN;\n }\n }\n};\n\n/**\n * @method bubbleDown\n * @param {array} heap The heap.\n * @param {function} weightFunc The weight function.\n * @param {number} n The index of the element to sink down.\n */\nvar bubbleDown = function bubbleDown(heap, weightFunc, n) {\n var length = heap.length;\n var node = heap[n];\n var nodeWeight = weightFunc(node);\n\n while (true) {\n var child2N = (n + 1) * 2;\n var child1N = child2N - 1;\n var swap = null;\n if (child1N < length) {\n var child1 = heap[child1N];\n var child1Weight = weightFunc(child1);\n // If the score is less than our node's, we need to swap.\n if (child1Weight < nodeWeight) {\n swap = child1N;\n }\n }\n // Do the same checks for the other child.\n if (child2N < length) {\n var child2 = heap[child2N];\n var child2Weight = weightFunc(child2);\n if (child2Weight < (swap === null ? nodeWeight : weightFunc(heap[child1N]))) {\n swap = child2N;\n }\n }\n\n if (swap === null) {\n break;\n } else {\n heap[n] = heap[swap];\n heap[swap] = node;\n n = swap;\n }\n }\n};\n\nfunction BinaryHeap(weightFunc, compareFunc) {\n if (!weightFunc) {\n weightFunc = function weightFunc(x) {\n return x;\n };\n }\n if (!compareFunc) {\n compareFunc = function compareFunc(x, y) {\n return x === y;\n };\n }\n if (typeof weightFunc !== 'function') {\n throw new Error('BinaryHeap([weightFunc][, compareFunc]): \"weightFunc\" must be a function!');\n }\n if (typeof compareFunc !== 'function') {\n throw new Error('BinaryHeap([weightFunc][, compareFunc]): \"compareFunc\" must be a function!');\n }\n this.weightFunc = weightFunc;\n this.compareFunc = compareFunc;\n this.heap = [];\n}\n\nvar BHProto = BinaryHeap.prototype;\n\nBHProto.push = function (node) {\n this.heap.push(node);\n bubbleUp(this.heap, this.weightFunc, this.heap.length - 1);\n};\n\nBHProto.peek = function () {\n return this.heap[0];\n};\n\nBHProto.pop = function () {\n var front = this.heap[0];\n var end = this.heap.pop();\n if (this.heap.length > 0) {\n this.heap[0] = end;\n bubbleDown(this.heap, this.weightFunc, 0);\n }\n return front;\n};\n\nBHProto.remove = function (node) {\n var length = this.heap.length;\n for (var i = 0; i < length; i++) {\n if (this.compareFunc(this.heap[i], node)) {\n var removed = this.heap[i];\n var end = this.heap.pop();\n if (i !== length - 1) {\n this.heap[i] = end;\n bubbleUp(this.heap, this.weightFunc, i);\n bubbleDown(this.heap, this.weightFunc, i);\n }\n return removed;\n }\n }\n return null;\n};\n\nBHProto.removeAll = function () {\n this.heap = [];\n};\n\nBHProto.size = function () {\n return this.heap.length;\n};\n\nvar _Promise = null;\ntry {\n _Promise = window.Promise;\n} catch (e) {}\n\nvar utils = {\n isNumber: function isNumber(value) {\n return typeof value === 'number';\n },\n isString: function isString(value) {\n return typeof value === 'string';\n },\n isObject: function isObject(value) {\n return value !== null && (typeof value === 'undefined' ? 'undefined' : babelHelpers.typeof(value)) === 'object';\n },\n isFunction: function isFunction(value) {\n return typeof value === 'function';\n },\n fromJson: function fromJson(value) {\n return JSON.parse(value);\n },\n equals: function equals(a, b) {\n return a === b;\n },\n\n\n Promise: _Promise\n};\n\nfunction _keys(collection) {\n var keys = [];\n var key = void 0;\n if (!utils.isObject(collection)) {\n return keys;\n }\n for (key in collection) {\n if (collection.hasOwnProperty(key)) {\n keys.push(key);\n }\n }\n return keys;\n}\n\nfunction _isPromiseLike(value) {\n return value && typeof value.then === 'function';\n}\n\nfunction _stringifyNumber(number) {\n if (utils.isNumber(number)) {\n return number.toString();\n }\n return number;\n}\n\nfunction _keySet(collection) {\n var keySet = {};\n var key = void 0;\n if (!utils.isObject(collection)) {\n return keySet;\n }\n for (key in collection) {\n if (collection.hasOwnProperty(key)) {\n keySet[key] = key;\n }\n }\n return keySet;\n}\n\nvar defaults = {\n capacity: Number.MAX_VALUE,\n maxAge: Number.MAX_VALUE,\n deleteOnExpire: 'none',\n onExpire: null,\n cacheFlushInterval: null,\n recycleFreq: 1000,\n storageMode: 'memory',\n storageImpl: null,\n disabled: false,\n storagePrefix: 'cachefactory.caches.',\n storeOnResolve: false,\n storeOnReject: false\n};\n\nvar caches = {};\n\nfunction createCache(cacheId, options) {\n if (cacheId in caches) {\n throw new Error(cacheId + ' already exists!');\n } else if (!utils.isString(cacheId)) {\n throw new Error('cacheId must be a string!');\n }\n\n var $$data = {};\n var $$promises = {};\n var $$storage = null;\n var $$expiresHeap = new BinaryHeap(function (x) {\n return x.expires;\n }, utils.equals);\n var $$lruHeap = new BinaryHeap(function (x) {\n return x.accessed;\n }, utils.equals);\n\n var cache = caches[cacheId] = {\n\n $$id: cacheId,\n\n destroy: function destroy() {\n clearInterval(this.$$cacheFlushIntervalId);\n clearInterval(this.$$recycleFreqId);\n this.removeAll();\n if ($$storage) {\n $$storage().removeItem(this.$$prefix + '.keys');\n $$storage().removeItem(this.$$prefix);\n }\n $$storage = null;\n $$data = null;\n $$lruHeap = null;\n $$expiresHeap = null;\n this.$$prefix = null;\n delete caches[this.$$id];\n },\n disable: function disable() {\n this.$$disabled = true;\n },\n enable: function enable() {\n delete this.$$disabled;\n },\n get: function get(key, options) {\n var _this2 = this;\n\n if (Array.isArray(key)) {\n var _ret = function () {\n var keys = key;\n var values = [];\n\n keys.forEach(function (key) {\n var value = _this2.get(key, options);\n if (value !== null && value !== undefined) {\n values.push(value);\n }\n });\n\n return {\n v: values\n };\n }();\n\n if ((typeof _ret === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret)) === \"object\") return _ret.v;\n } else {\n key = _stringifyNumber(key);\n\n if (this.$$disabled) {\n return;\n }\n }\n\n options = options || {};\n if (!utils.isString(key)) {\n throw new Error('key must be a string!');\n } else if (options && !utils.isObject(options)) {\n throw new Error('options must be an object!');\n } else if (options.onExpire && !utils.isFunction(options.onExpire)) {\n throw new Error('options.onExpire must be a function!');\n }\n\n var item = void 0;\n\n if ($$storage) {\n if ($$promises[key]) {\n return $$promises[key];\n }\n\n var itemJson = $$storage().getItem(this.$$prefix + '.data.' + key);\n\n if (itemJson) {\n item = utils.fromJson(itemJson);\n } else {\n return;\n }\n } else if (utils.isObject($$data)) {\n if (!(key in $$data)) {\n return;\n }\n\n item = $$data[key];\n }\n\n var value = item.value;\n var now = new Date().getTime();\n\n if ($$storage) {\n $$lruHeap.remove({\n key: key,\n accessed: item.accessed\n });\n item.accessed = now;\n $$lruHeap.push({\n key: key,\n accessed: now\n });\n } else {\n $$lruHeap.remove(item);\n item.accessed = now;\n $$lruHeap.push(item);\n }\n\n if (this.$$deleteOnExpire === 'passive' && 'expires' in item && item.expires < now) {\n this.remove(key);\n\n if (this.$$onExpire) {\n this.$$onExpire(key, item.value, options.onExpire);\n } else if (options.onExpire) {\n options.onExpire.call(this, key, item.value);\n }\n value = undefined;\n } else if ($$storage) {\n $$storage().setItem(this.$$prefix + '.data.' + key, JSON.stringify(item));\n }\n\n return value;\n },\n info: function info(key) {\n if (key) {\n var item = void 0;\n if ($$storage) {\n var itemJson = $$storage().getItem(this.$$prefix + '.data.' + key);\n\n if (itemJson) {\n item = utils.fromJson(itemJson);\n return {\n created: item.created,\n accessed: item.accessed,\n expires: item.expires,\n isExpired: new Date().getTime() - item.created > (item.maxAge || this.$$maxAge)\n };\n } else {\n return undefined;\n }\n } else if (utils.isObject($$data) && key in $$data) {\n item = $$data[key];\n\n return {\n created: item.created,\n accessed: item.accessed,\n expires: item.expires,\n isExpired: new Date().getTime() - item.created > (item.maxAge || this.$$maxAge)\n };\n } else {\n return undefined;\n }\n } else {\n return {\n id: this.$$id,\n capacity: this.$$capacity,\n maxAge: this.$$maxAge,\n deleteOnExpire: this.$$deleteOnExpire,\n onExpire: this.$$onExpire,\n cacheFlushInterval: this.$$cacheFlushInterval,\n recycleFreq: this.$$recycleFreq,\n storageMode: this.$$storageMode,\n storageImpl: $$storage ? $$storage() : undefined,\n disabled: !!this.$$disabled,\n size: $$lruHeap && $$lruHeap.size() || 0\n };\n }\n },\n keys: function keys() {\n if ($$storage) {\n var keysJson = $$storage().getItem(this.$$prefix + '.keys');\n\n if (keysJson) {\n return utils.fromJson(keysJson);\n } else {\n return [];\n }\n } else {\n return _keys($$data);\n }\n },\n keySet: function keySet() {\n if ($$storage) {\n var keysJson = $$storage().getItem(this.$$prefix + '.keys');\n var kSet = {};\n\n if (keysJson) {\n var keys = utils.fromJson(keysJson);\n\n for (var i = 0; i < keys.length; i++) {\n kSet[keys[i]] = keys[i];\n }\n }\n return kSet;\n } else {\n return _keySet($$data);\n }\n },\n put: function put(key, value, options) {\n var _this3 = this;\n\n options || (options = {});\n\n var storeOnResolve = 'storeOnResolve' in options ? !!options.storeOnResolve : this.$$storeOnResolve;\n var storeOnReject = 'storeOnReject' in options ? !!options.storeOnReject : this.$$storeOnReject;\n\n var getHandler = function getHandler(store, isError) {\n return function (v) {\n if (store) {\n delete $$promises[key];\n if (utils.isObject(v) && 'status' in v && 'data' in v) {\n v = [v.status, v.data, v.headers(), v.statusText];\n _this3.put(key, v);\n } else {\n _this3.put(key, v);\n }\n }\n if (isError) {\n if (utils.Promise) {\n return utils.Promise.reject(v);\n } else {\n throw v;\n }\n } else {\n return v;\n }\n };\n };\n\n if (this.$$disabled || !utils.isObject($$data) || value === null || value === undefined) {\n return;\n }\n key = _stringifyNumber(key);\n\n if (!utils.isString(key)) {\n throw new Error('key must be a string!');\n }\n\n var now = new Date().getTime();\n var item = {\n key: key,\n value: _isPromiseLike(value) ? value.then(getHandler(storeOnResolve, false), getHandler(storeOnReject, true)) : value,\n created: options.created === undefined ? now : options.created,\n accessed: options.accessed === undefined ? now : options.accessed\n };\n if (options.maxAge) {\n item.maxAge = options.maxAge;\n }\n\n if (options.expires === undefined) {\n item.expires = item.created + (item.maxAge || this.$$maxAge);\n } else {\n item.expires = options.expires;\n }\n\n if ($$storage) {\n if (_isPromiseLike(item.value)) {\n $$promises[key] = item.value;\n return $$promises[key];\n }\n var keysJson = $$storage().getItem(this.$$prefix + '.keys');\n var keys = keysJson ? utils.fromJson(keysJson) : [];\n var itemJson = $$storage().getItem(this.$$prefix + '.data.' + key);\n\n // Remove existing\n if (itemJson) {\n this.remove(key);\n }\n // Add to expires heap\n $$expiresHeap.push({\n key: key,\n expires: item.expires\n });\n // Add to lru heap\n $$lruHeap.push({\n key: key,\n accessed: item.accessed\n });\n // Set item\n $$storage().setItem(this.$$prefix + '.data.' + key, JSON.stringify(item));\n var exists = false;\n for (var i = 0; i < keys.length; i++) {\n if (keys[i] === key) {\n exists = true;\n break;\n }\n }\n if (!exists) {\n keys.push(key);\n }\n $$storage().setItem(this.$$prefix + '.keys', JSON.stringify(keys));\n } else {\n // Remove existing\n if ($$data[key]) {\n this.remove(key);\n }\n // Add to expires heap\n $$expiresHeap.push(item);\n // Add to lru heap\n $$lruHeap.push(item);\n // Set item\n $$data[key] = item;\n delete $$promises[key];\n }\n\n // Handle exceeded capacity\n if ($$lruHeap.size() > this.$$capacity) {\n this.remove($$lruHeap.peek().key);\n }\n\n return value;\n },\n remove: function remove(key) {\n key += '';\n delete $$promises[key];\n if ($$storage) {\n var itemJson = $$storage().getItem(this.$$prefix + '.data.' + key);\n\n if (itemJson) {\n var item = utils.fromJson(itemJson);\n $$lruHeap.remove({\n key: key,\n accessed: item.accessed\n });\n $$expiresHeap.remove({\n key: key,\n expires: item.expires\n });\n $$storage().removeItem(this.$$prefix + '.data.' + key);\n var keysJson = $$storage().getItem(this.$$prefix + '.keys');\n var keys = keysJson ? utils.fromJson(keysJson) : [];\n var index = keys.indexOf(key);\n\n if (index >= 0) {\n keys.splice(index, 1);\n }\n $$storage().setItem(this.$$prefix + '.keys', JSON.stringify(keys));\n return item.value;\n }\n } else if (utils.isObject($$data)) {\n var value = $$data[key] ? $$data[key].value : undefined;\n $$lruHeap.remove($$data[key]);\n $$expiresHeap.remove($$data[key]);\n $$data[key] = null;\n delete $$data[key];\n return value;\n }\n },\n removeAll: function removeAll() {\n if ($$storage) {\n $$lruHeap.removeAll();\n $$expiresHeap.removeAll();\n var keysJson = $$storage().getItem(this.$$prefix + '.keys');\n\n if (keysJson) {\n var keys = utils.fromJson(keysJson);\n\n for (var i = 0; i < keys.length; i++) {\n this.remove(keys[i]);\n }\n }\n $$storage().setItem(this.$$prefix + '.keys', JSON.stringify([]));\n } else if (utils.isObject($$data)) {\n $$lruHeap.removeAll();\n $$expiresHeap.removeAll();\n for (var key in $$data) {\n $$data[key] = null;\n }\n $$data = {};\n } else {\n $$lruHeap.removeAll();\n $$expiresHeap.removeAll();\n $$data = {};\n }\n $$promises = {};\n },\n removeExpired: function removeExpired() {\n var now = new Date().getTime();\n var expired = {};\n var key = void 0;\n var expiredItem = void 0;\n\n while ((expiredItem = $$expiresHeap.peek()) && expiredItem.expires <= now) {\n expired[expiredItem.key] = expiredItem.value ? expiredItem.value : null;\n $$expiresHeap.pop();\n }\n\n if ($$storage) {\n for (key in expired) {\n var itemJson = $$storage().getItem(this.$$prefix + '.data.' + key);\n if (itemJson) {\n expired[key] = utils.fromJson(itemJson).value;\n this.remove(key);\n }\n }\n } else {\n for (key in expired) {\n this.remove(key);\n }\n }\n\n if (this.$$onExpire) {\n for (key in expired) {\n this.$$onExpire(key, expired[key]);\n }\n }\n\n return expired;\n },\n setCacheFlushInterval: function setCacheFlushInterval(cacheFlushInterval) {\n var _this = this;\n if (cacheFlushInterval === null) {\n delete _this.$$cacheFlushInterval;\n } else if (!utils.isNumber(cacheFlushInterval)) {\n throw new Error('cacheFlushInterval must be a number!');\n } else if (cacheFlushInterval < 0) {\n throw new Error('cacheFlushInterval must be greater than zero!');\n } else if (cacheFlushInterval !== _this.$$cacheFlushInterval) {\n _this.$$cacheFlushInterval = cacheFlushInterval;\n\n clearInterval(_this.$$cacheFlushIntervalId); // eslint-disable-line\n\n _this.$$cacheFlushIntervalId = setInterval(function () {\n _this.removeAll();\n }, _this.$$cacheFlushInterval);\n }\n },\n setCapacity: function setCapacity(capacity) {\n if (capacity === null) {\n delete this.$$capacity;\n } else if (!utils.isNumber(capacity)) {\n throw new Error('capacity must be a number!');\n } else if (capacity < 0) {\n throw new Error('capacity must be greater than zero!');\n } else {\n this.$$capacity = capacity;\n }\n var removed = {};\n while ($$lruHeap.size() > this.$$capacity) {\n removed[$$lruHeap.peek().key] = this.remove($$lruHeap.peek().key);\n }\n return removed;\n },\n setDeleteOnExpire: function setDeleteOnExpire(deleteOnExpire, setRecycleFreq) {\n if (deleteOnExpire === null) {\n delete this.$$deleteOnExpire;\n } else if (!utils.isString(deleteOnExpire)) {\n throw new Error('deleteOnExpire must be a string!');\n } else if (deleteOnExpire !== 'none' && deleteOnExpire !== 'passive' && deleteOnExpire !== 'aggressive') {\n throw new Error('deleteOnExpire must be \"none\", \"passive\" or \"aggressive\"!');\n } else {\n this.$$deleteOnExpire = deleteOnExpire;\n }\n if (setRecycleFreq !== false) {\n this.setRecycleFreq(this.$$recycleFreq);\n }\n },\n setMaxAge: function setMaxAge(maxAge) {\n if (maxAge === null) {\n this.$$maxAge = Number.MAX_VALUE;\n } else if (!utils.isNumber(maxAge)) {\n throw new Error('maxAge must be a number!');\n } else if (maxAge < 0) {\n throw new Error('maxAge must be greater than zero!');\n } else {\n this.$$maxAge = maxAge;\n }\n var i = void 0,\n keys = void 0,\n key = void 0;\n\n $$expiresHeap.removeAll();\n\n if ($$storage) {\n var keysJson = $$storage().getItem(this.$$prefix + '.keys');\n\n keys = keysJson ? utils.fromJson(keysJson) : [];\n\n for (i = 0; i < keys.length; i++) {\n key = keys[i];\n var itemJson = $$storage().getItem(this.$$prefix + '.data.' + key);\n\n if (itemJson) {\n var item = utils.fromJson(itemJson);\n if (this.$$maxAge === Number.MAX_VALUE) {\n item.expires = Number.MAX_VALUE;\n } else {\n item.expires = item.created + (item.maxAge || this.$$maxAge);\n }\n $$expiresHeap.push({\n key: key,\n expires: item.expires\n });\n }\n }\n } else {\n keys = _keys($$data);\n\n for (i = 0; i < keys.length; i++) {\n key = keys[i];\n if (this.$$maxAge === Number.MAX_VALUE) {\n $$data[key].expires = Number.MAX_VALUE;\n } else {\n $$data[key].expires = $$data[key].created + ($$data[key].maxAge || this.$$maxAge);\n }\n $$expiresHeap.push($$data[key]);\n }\n }\n if (this.$$deleteOnExpire === 'aggressive') {\n return this.removeExpired();\n } else {\n return {};\n }\n },\n setOnExpire: function setOnExpire(onExpire) {\n if (onExpire === null) {\n delete this.$$onExpire;\n } else if (!utils.isFunction(onExpire)) {\n throw new Error('onExpire must be a function!');\n } else {\n this.$$onExpire = onExpire;\n }\n },\n setOptions: function setOptions(cacheOptions, strict) {\n cacheOptions = cacheOptions || {};\n strict = !!strict;\n if (!utils.isObject(cacheOptions)) {\n throw new Error('cacheOptions must be an object!');\n }\n\n if ('storagePrefix' in cacheOptions) {\n this.$$storagePrefix = cacheOptions.storagePrefix;\n } else if (strict) {\n this.$$storagePrefix = defaults.storagePrefix;\n }\n\n this.$$prefix = this.$$storagePrefix + this.$$id;\n\n if ('disabled' in cacheOptions) {\n this.$$disabled = !!cacheOptions.disabled;\n } else if (strict) {\n this.$$disabled = defaults.disabled;\n }\n\n if ('deleteOnExpire' in cacheOptions) {\n this.setDeleteOnExpire(cacheOptions.deleteOnExpire, false);\n } else if (strict) {\n this.setDeleteOnExpire(defaults.deleteOnExpire, false);\n }\n\n if ('recycleFreq' in cacheOptions) {\n this.setRecycleFreq(cacheOptions.recycleFreq);\n } else if (strict) {\n this.setRecycleFreq(defaults.recycleFreq);\n }\n\n if ('maxAge' in cacheOptions) {\n this.setMaxAge(cacheOptions.maxAge);\n } else if (strict) {\n this.setMaxAge(defaults.maxAge);\n }\n\n if ('storeOnResolve' in cacheOptions) {\n this.$$storeOnResolve = !!cacheOptions.storeOnResolve;\n } else if (strict) {\n this.$$storeOnResolve = defaults.storeOnResolve;\n }\n\n if ('storeOnReject' in cacheOptions) {\n this.$$storeOnReject = !!cacheOptions.storeOnReject;\n } else if (strict) {\n this.$$storeOnReject = defaults.storeOnReject;\n }\n\n if ('capacity' in cacheOptions) {\n this.setCapacity(cacheOptions.capacity);\n } else if (strict) {\n this.setCapacity(defaults.capacity);\n }\n\n if ('cacheFlushInterval' in cacheOptions) {\n this.setCacheFlushInterval(cacheOptions.cacheFlushInterval);\n } else if (strict) {\n this.setCacheFlushInterval(defaults.cacheFlushInterval);\n }\n\n if ('onExpire' in cacheOptions) {\n this.setOnExpire(cacheOptions.onExpire);\n } else if (strict) {\n this.setOnExpire(defaults.onExpire);\n }\n\n if ('storageMode' in cacheOptions || 'storageImpl' in cacheOptions) {\n this.setStorageMode(cacheOptions.storageMode || defaults.storageMode, cacheOptions.storageImpl || defaults.storageImpl);\n } else if (strict) {\n this.setStorageMode(defaults.storageMode, defaults.storageImpl);\n }\n },\n setRecycleFreq: function setRecycleFreq(recycleFreq) {\n if (recycleFreq === null) {\n delete this.$$recycleFreq;\n } else if (!utils.isNumber(recycleFreq)) {\n throw new Error('recycleFreq must be a number!');\n } else if (recycleFreq < 0) {\n throw new Error('recycleFreq must be greater than zero!');\n } else {\n this.$$recycleFreq = recycleFreq;\n }\n clearInterval(this.$$recycleFreqId);\n if (this.$$deleteOnExpire === 'aggressive') {\n (function (self) {\n self.$$recycleFreqId = setInterval(function () {\n self.removeExpired();\n }, self.$$recycleFreq);\n })(this);\n } else {\n delete this.$$recycleFreqId;\n }\n },\n setStorageMode: function setStorageMode(storageMode, storageImpl) {\n if (!utils.isString(storageMode)) {\n throw new Error('storageMode must be a string!');\n } else if (storageMode !== 'memory' && storageMode !== 'localStorage' && storageMode !== 'sessionStorage') {\n throw new Error('storageMode must be \"memory\", \"localStorage\" or \"sessionStorage\"!');\n }\n\n var prevStorage = $$storage;\n var prevData = $$data;\n var shouldReInsert = false;\n var items = {};\n\n function load(prevStorage, prevData) {\n var keys = this.keys();\n var length = keys.length;\n if (length) {\n var _key = void 0;\n var prevDataIsObject = utils.isObject(prevData);\n for (var i = 0; i < length; i++) {\n _key = keys[i];\n if (prevStorage) {\n var itemJson = prevStorage().getItem(this.$$prefix + '.data.' + _key);\n if (itemJson) {\n items[_key] = utils.fromJson(itemJson);\n }\n } else if (prevDataIsObject) {\n items[_key] = prevData[_key];\n }\n this.remove(_key);\n }\n shouldReInsert = true;\n }\n }\n\n if (!this.$$initializing) {\n load.call(this, prevStorage, prevData);\n }\n\n this.$$storageMode = storageMode;\n\n if (storageImpl) {\n if (!utils.isObject(storageImpl)) {\n throw new Error('storageImpl must be an object!');\n } else if (!('setItem' in storageImpl) || typeof storageImpl.setItem !== 'function') {\n throw new Error('storageImpl must implement \"setItem(key, value)\"!');\n } else if (!('getItem' in storageImpl) || typeof storageImpl.getItem !== 'function') {\n throw new Error('storageImpl must implement \"getItem(key)\"!');\n } else if (!('removeItem' in storageImpl) || typeof storageImpl.removeItem !== 'function') {\n throw new Error('storageImpl must implement \"removeItem(key)\"!');\n }\n $$storage = function $$storage() {\n return storageImpl;\n };\n } else if (this.$$storageMode === 'localStorage') {\n try {\n localStorage.setItem('cachefactory', 'cachefactory');\n localStorage.removeItem('cachefactory');\n $$storage = function $$storage() {\n return localStorage;\n };\n } catch (e) {\n $$storage = null;\n this.$$storageMode = 'memory';\n }\n } else if (this.$$storageMode === 'sessionStorage') {\n try {\n sessionStorage.setItem('cachefactory', 'cachefactory');\n sessionStorage.removeItem('cachefactory');\n $$storage = function $$storage() {\n return sessionStorage;\n };\n } catch (e) {\n $$storage = null;\n this.$$storageMode = 'memory';\n }\n } else {\n $$storage = null;\n this.$$storageMode = 'memory';\n }\n\n if (this.$$initializing) {\n load.call(this, $$storage, $$data);\n }\n\n if (shouldReInsert) {\n var item = void 0;\n for (var key in items) {\n item = items[key];\n this.put(key, item.value, {\n created: item.created,\n accessed: item.accessed,\n expires: item.expires\n });\n }\n }\n },\n touch: function touch(key, options) {\n var _this4 = this;\n\n if (key) {\n var val = this.get(key, {\n onExpire: function onExpire(k, v) {\n return _this4.put(k, v);\n }\n });\n if (val) {\n this.put(key, val, options);\n }\n } else {\n var keys = this.keys();\n for (var i = 0; i < keys.length; i++) {\n this.touch(keys[i], options);\n }\n }\n },\n values: function values() {\n var keys = this.keys();\n var items = [];\n for (var i = 0; i < keys.length; i++) {\n items.push(this.get(keys[i]));\n }\n return items;\n }\n };\n\n cache.$$initializing = true;\n cache.setOptions(options, true);\n cache.$$initializing = false;\n\n return cache;\n}\n\nfunction CacheFactory(cacheId, options) {\n return createCache(cacheId, options);\n}\n\nCacheFactory.createCache = createCache;\nCacheFactory.defaults = defaults;\n\nCacheFactory.info = function () {\n var keys = _keys(caches);\n var info = {\n size: keys.length,\n caches: {}\n };\n for (var opt in defaults) {\n if (defaults.hasOwnProperty(opt)) {\n info[opt] = defaults[opt];\n }\n }\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n info.caches[key] = caches[key].info();\n }\n return info;\n};\n\nCacheFactory.get = function (cacheId) {\n return caches[cacheId];\n};\nCacheFactory.keySet = function () {\n return _keySet(caches);\n};\nCacheFactory.keys = function () {\n return _keys(caches);\n};\nCacheFactory.destroy = function (cacheId) {\n if (caches[cacheId]) {\n caches[cacheId].destroy();\n delete caches[cacheId];\n }\n};\nCacheFactory.destroyAll = function () {\n for (var cacheId in caches) {\n caches[cacheId].destroy();\n }\n caches = {};\n};\nCacheFactory.clearAll = function () {\n for (var cacheId in caches) {\n caches[cacheId].removeAll();\n }\n};\nCacheFactory.removeExpiredFromAll = function () {\n var expired = {};\n for (var cacheId in caches) {\n expired[cacheId] = caches[cacheId].removeExpired();\n }\n return expired;\n};\nCacheFactory.enableAll = function () {\n for (var cacheId in caches) {\n caches[cacheId].$$disabled = false;\n }\n};\nCacheFactory.disableAll = function () {\n for (var cacheId in caches) {\n caches[cacheId].$$disabled = true;\n }\n};\nCacheFactory.touchAll = function () {\n for (var cacheId in caches) {\n caches[cacheId].touch();\n }\n};\n\nCacheFactory.utils = utils;\nCacheFactory.BinaryHeap = BinaryHeap;\n\nexport default CacheFactory;\n//# sourceMappingURL=cachefactory.es2015.js.map","import angular from 'angular'\nimport CacheFactory from '../node_modules/cachefactory/dist/cachefactory.es2015'\n\nCacheFactory.utils.equals = angular.equals\nCacheFactory.utils.isObject = angular.isObject\nCacheFactory.utils.fromJson = angular.fromJson\n\nfunction BinaryHeapProvider () {\n this.$get = function () { return CacheFactory.BinaryHeap }\n}\n\nfunction CacheFactoryProvider () {\n this.defaults = CacheFactory.defaults\n this.defaults.storagePrefix = 'angular-cache.caches.'\n\n this.$get = ['$q', function ($q) {\n CacheFactory.utils.Promise = $q\n return CacheFactory\n }]\n}\n\nangular.module('angular-cache', [])\n .provider('BinaryHeap', BinaryHeapProvider)\n .provider('CacheFactory', CacheFactoryProvider)\n\nexport default 'angular-cache'\n"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/ecomp-portal-FE/client/bower_components/angular-cache/dist/angular-cache.min.js b/ecomp-portal-FE/client/bower_components/angular-cache/dist/angular-cache.min.js
new file mode 100644
index 00000000..ae78ddcb
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/angular-cache/dist/angular-cache.min.js
@@ -0,0 +1,2 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t("undefined"==typeof angular?require("angular"):angular):"function"==typeof define&&define.amd?define("angular-cache",["angular"],t):e.angularCacheModuleName=t(e.angular)}(this,function(e){"use strict";function t(e,t){if(e||(e=function(e){return e}),t||(t=function(e,t){return e===t}),"function"!=typeof e)throw new Error('BinaryHeap([weightFunc][, compareFunc]): "weightFunc" must be a function!');if("function"!=typeof t)throw new Error('BinaryHeap([weightFunc][, compareFunc]): "compareFunc" must be a function!');this.weightFunc=e,this.compareFunc=t,this.heap=[]}function r(e){var t=[],r=void 0;if(!d.isObject(e))return t;for(r in e)e.hasOwnProperty(r)&&t.push(r);return t}function i(e){return e&&"function"==typeof e.then}function s(e){return d.isNumber(e)?e.toString():e}function n(e){var t={},r=void 0;if(!d.isObject(e))return t;for(r in e)e.hasOwnProperty(r)&&(t[r]=r);return t}function o(e,o){if(e in g)throw new Error(e+" already exists!");if(!d.isString(e))throw new Error("cacheId must be a string!");var a={},c={},l=null,h=new t(function(e){return e.expires},d.equals),f=new t(function(e){return e.accessed},d.equals),p=g[e]={$$id:e,destroy:function(){clearInterval(this.$$cacheFlushIntervalId),clearInterval(this.$$recycleFreqId),this.removeAll(),l&&(l().removeItem(this.$$prefix+".keys"),l().removeItem(this.$$prefix)),l=null,a=null,f=null,h=null,this.$$prefix=null,delete g[this.$$id]},disable:function(){this.$$disabled=!0},enable:function(){delete this.$$disabled},get:function(e,t){var r=this;if(Array.isArray(e)){var i=function(){var i=e,s=[];return i.forEach(function(e){var i=r.get(e,t);null!==i&&void 0!==i&&s.push(i)}),{v:s}}();if("object"===("undefined"==typeof i?"undefined":u["typeof"](i)))return i.v}else if(e=s(e),this.$$disabled)return;if(t=t||{},!d.isString(e))throw new Error("key must be a string!");if(t&&!d.isObject(t))throw new Error("options must be an object!");if(t.onExpire&&!d.isFunction(t.onExpire))throw new Error("options.onExpire must be a function!");var n=void 0;if(l){if(c[e])return c[e];var o=l().getItem(this.$$prefix+".data."+e);if(!o)return;n=d.fromJson(o)}else if(d.isObject(a)){if(!(e in a))return;n=a[e]}var h=n.value,p=(new Date).getTime();return l?(f.remove({key:e,accessed:n.accessed}),n.accessed=p,f.push({key:e,accessed:p})):(f.remove(n),n.accessed=p,f.push(n)),"passive"===this.$$deleteOnExpire&&"expires"in n&&n.expires<p?(this.remove(e),this.$$onExpire?this.$$onExpire(e,n.value,t.onExpire):t.onExpire&&t.onExpire.call(this,e,n.value),h=void 0):l&&l().setItem(this.$$prefix+".data."+e,JSON.stringify(n)),h},info:function(e){if(e){var t=void 0;if(l){var r=l().getItem(this.$$prefix+".data."+e);return r?(t=d.fromJson(r),{created:t.created,accessed:t.accessed,expires:t.expires,isExpired:(new Date).getTime()-t.created>(t.maxAge||this.$$maxAge)}):void 0}return d.isObject(a)&&e in a?(t=a[e],{created:t.created,accessed:t.accessed,expires:t.expires,isExpired:(new Date).getTime()-t.created>(t.maxAge||this.$$maxAge)}):void 0}return{id:this.$$id,capacity:this.$$capacity,maxAge:this.$$maxAge,deleteOnExpire:this.$$deleteOnExpire,onExpire:this.$$onExpire,cacheFlushInterval:this.$$cacheFlushInterval,recycleFreq:this.$$recycleFreq,storageMode:this.$$storageMode,storageImpl:l?l():void 0,disabled:!!this.$$disabled,size:f&&f.size()||0}},keys:function(){if(l){var e=l().getItem(this.$$prefix+".keys");return e?d.fromJson(e):[]}return r(a)},keySet:function(){if(l){var e=l().getItem(this.$$prefix+".keys"),t={};if(e)for(var r=d.fromJson(e),i=0;i<r.length;i++)t[r[i]]=r[i];return t}return n(a)},put:function(e,t,r){var n=this;r||(r={});var o="storeOnResolve"in r?!!r.storeOnResolve:this.$$storeOnResolve,u="storeOnReject"in r?!!r.storeOnReject:this.$$storeOnReject,p=function(t,r){return function(i){if(t&&(delete c[e],d.isObject(i)&&"status"in i&&"data"in i?(i=[i.status,i.data,i.headers(),i.statusText],n.put(e,i)):n.put(e,i)),r){if(d.Promise)return d.Promise.reject(i);throw i}return i}};if(!this.$$disabled&&d.isObject(a)&&null!==t&&void 0!==t){if(e=s(e),!d.isString(e))throw new Error("key must be a string!");var m=(new Date).getTime(),$={key:e,value:i(t)?t.then(p(o,!1),p(u,!0)):t,created:void 0===r.created?m:r.created,accessed:void 0===r.accessed?m:r.accessed};if(r.maxAge&&($.maxAge=r.maxAge),void 0===r.expires?$.expires=$.created+($.maxAge||this.$$maxAge):$.expires=r.expires,l){if(i($.value))return c[e]=$.value,c[e];var v=l().getItem(this.$$prefix+".keys"),g=v?d.fromJson(v):[],y=l().getItem(this.$$prefix+".data."+e);y&&this.remove(e),h.push({key:e,expires:$.expires}),f.push({key:e,accessed:$.accessed}),l().setItem(this.$$prefix+".data."+e,JSON.stringify($));for(var x=!1,b=0;b<g.length;b++)if(g[b]===e){x=!0;break}x||g.push(e),l().setItem(this.$$prefix+".keys",JSON.stringify(g))}else a[e]&&this.remove(e),h.push($),f.push($),a[e]=$,delete c[e];return f.size()>this.$$capacity&&this.remove(f.peek().key),t}},remove:function(e){if(e+="",delete c[e],l){var t=l().getItem(this.$$prefix+".data."+e);if(t){var r=d.fromJson(t);f.remove({key:e,accessed:r.accessed}),h.remove({key:e,expires:r.expires}),l().removeItem(this.$$prefix+".data."+e);var i=l().getItem(this.$$prefix+".keys"),s=i?d.fromJson(i):[],n=s.indexOf(e);return n>=0&&s.splice(n,1),l().setItem(this.$$prefix+".keys",JSON.stringify(s)),r.value}}else if(d.isObject(a)){var o=a[e]?a[e].value:void 0;return f.remove(a[e]),h.remove(a[e]),a[e]=null,delete a[e],o}},removeAll:function(){if(l){f.removeAll(),h.removeAll();var e=l().getItem(this.$$prefix+".keys");if(e)for(var t=d.fromJson(e),r=0;r<t.length;r++)this.remove(t[r]);l().setItem(this.$$prefix+".keys",JSON.stringify([]))}else if(d.isObject(a)){f.removeAll(),h.removeAll();for(var i in a)a[i]=null;a={}}else f.removeAll(),h.removeAll(),a={};c={}},removeExpired:function(){for(var e=(new Date).getTime(),t={},r=void 0,i=void 0;(i=h.peek())&&i.expires<=e;)t[i.key]=i.value?i.value:null,h.pop();if(l)for(r in t){var s=l().getItem(this.$$prefix+".data."+r);s&&(t[r]=d.fromJson(s).value,this.remove(r))}else for(r in t)this.remove(r);if(this.$$onExpire)for(r in t)this.$$onExpire(r,t[r]);return t},setCacheFlushInterval:function(e){var t=this;if(null===e)delete t.$$cacheFlushInterval;else{if(!d.isNumber(e))throw new Error("cacheFlushInterval must be a number!");if(0>e)throw new Error("cacheFlushInterval must be greater than zero!");e!==t.$$cacheFlushInterval&&(t.$$cacheFlushInterval=e,clearInterval(t.$$cacheFlushIntervalId),t.$$cacheFlushIntervalId=setInterval(function(){t.removeAll()},t.$$cacheFlushInterval))}},setCapacity:function(e){if(null===e)delete this.$$capacity;else{if(!d.isNumber(e))throw new Error("capacity must be a number!");if(0>e)throw new Error("capacity must be greater than zero!");this.$$capacity=e}for(var t={};f.size()>this.$$capacity;)t[f.peek().key]=this.remove(f.peek().key);return t},setDeleteOnExpire:function(e,t){if(null===e)delete this.$$deleteOnExpire;else{if(!d.isString(e))throw new Error("deleteOnExpire must be a string!");if("none"!==e&&"passive"!==e&&"aggressive"!==e)throw new Error('deleteOnExpire must be "none", "passive" or "aggressive"!');this.$$deleteOnExpire=e}t!==!1&&this.setRecycleFreq(this.$$recycleFreq)},setMaxAge:function(e){if(null===e)this.$$maxAge=Number.MAX_VALUE;else{if(!d.isNumber(e))throw new Error("maxAge must be a number!");if(0>e)throw new Error("maxAge must be greater than zero!");this.$$maxAge=e}var t=void 0,i=void 0,s=void 0;if(h.removeAll(),l){var n=l().getItem(this.$$prefix+".keys");for(i=n?d.fromJson(n):[],t=0;t<i.length;t++){s=i[t];var o=l().getItem(this.$$prefix+".data."+s);if(o){var c=d.fromJson(o);this.$$maxAge===Number.MAX_VALUE?c.expires=Number.MAX_VALUE:c.expires=c.created+(c.maxAge||this.$$maxAge),h.push({key:s,expires:c.expires})}}}else for(i=r(a),t=0;t<i.length;t++)s=i[t],this.$$maxAge===Number.MAX_VALUE?a[s].expires=Number.MAX_VALUE:a[s].expires=a[s].created+(a[s].maxAge||this.$$maxAge),h.push(a[s]);return"aggressive"===this.$$deleteOnExpire?this.removeExpired():{}},setOnExpire:function(e){if(null===e)delete this.$$onExpire;else{if(!d.isFunction(e))throw new Error("onExpire must be a function!");this.$$onExpire=e}},setOptions:function(e,t){if(e=e||{},t=!!t,!d.isObject(e))throw new Error("cacheOptions must be an object!");"storagePrefix"in e?this.$$storagePrefix=e.storagePrefix:t&&(this.$$storagePrefix=v.storagePrefix),this.$$prefix=this.$$storagePrefix+this.$$id,"disabled"in e?this.$$disabled=!!e.disabled:t&&(this.$$disabled=v.disabled),"deleteOnExpire"in e?this.setDeleteOnExpire(e.deleteOnExpire,!1):t&&this.setDeleteOnExpire(v.deleteOnExpire,!1),"recycleFreq"in e?this.setRecycleFreq(e.recycleFreq):t&&this.setRecycleFreq(v.recycleFreq),"maxAge"in e?this.setMaxAge(e.maxAge):t&&this.setMaxAge(v.maxAge),"storeOnResolve"in e?this.$$storeOnResolve=!!e.storeOnResolve:t&&(this.$$storeOnResolve=v.storeOnResolve),"storeOnReject"in e?this.$$storeOnReject=!!e.storeOnReject:t&&(this.$$storeOnReject=v.storeOnReject),"capacity"in e?this.setCapacity(e.capacity):t&&this.setCapacity(v.capacity),"cacheFlushInterval"in e?this.setCacheFlushInterval(e.cacheFlushInterval):t&&this.setCacheFlushInterval(v.cacheFlushInterval),"onExpire"in e?this.setOnExpire(e.onExpire):t&&this.setOnExpire(v.onExpire),"storageMode"in e||"storageImpl"in e?this.setStorageMode(e.storageMode||v.storageMode,e.storageImpl||v.storageImpl):t&&this.setStorageMode(v.storageMode,v.storageImpl)},setRecycleFreq:function(e){if(null===e)delete this.$$recycleFreq;else{if(!d.isNumber(e))throw new Error("recycleFreq must be a number!");if(0>e)throw new Error("recycleFreq must be greater than zero!");this.$$recycleFreq=e}clearInterval(this.$$recycleFreqId),"aggressive"===this.$$deleteOnExpire?!function(e){e.$$recycleFreqId=setInterval(function(){e.removeExpired()},e.$$recycleFreq)}(this):delete this.$$recycleFreqId},setStorageMode:function(e,t){function r(e,t){var r=this.keys(),i=r.length;if(i){for(var s=void 0,a=d.isObject(t),c=0;i>c;c++){if(s=r[c],e){var l=e().getItem(this.$$prefix+".data."+s);l&&(o[s]=d.fromJson(l))}else a&&(o[s]=t[s]);this.remove(s)}n=!0}}if(!d.isString(e))throw new Error("storageMode must be a string!");if("memory"!==e&&"localStorage"!==e&&"sessionStorage"!==e)throw new Error('storageMode must be "memory", "localStorage" or "sessionStorage"!');var i=l,s=a,n=!1,o={};if(this.$$initializing||r.call(this,i,s),this.$$storageMode=e,t){if(!d.isObject(t))throw new Error("storageImpl must be an object!");if(!("setItem"in t&&"function"==typeof t.setItem))throw new Error('storageImpl must implement "setItem(key, value)"!');if(!("getItem"in t&&"function"==typeof t.getItem))throw new Error('storageImpl must implement "getItem(key)"!');if(!("removeItem"in t)||"function"!=typeof t.removeItem)throw new Error('storageImpl must implement "removeItem(key)"!');l=function(){return t}}else if("localStorage"===this.$$storageMode)try{localStorage.setItem("cachefactory","cachefactory"),localStorage.removeItem("cachefactory"),l=function(){return localStorage}}catch(c){l=null,this.$$storageMode="memory"}else if("sessionStorage"===this.$$storageMode)try{sessionStorage.setItem("cachefactory","cachefactory"),sessionStorage.removeItem("cachefactory"),l=function(){return sessionStorage}}catch(c){l=null,this.$$storageMode="memory"}else l=null,this.$$storageMode="memory";if(this.$$initializing&&r.call(this,l,a),n){var u=void 0;for(var h in o)u=o[h],this.put(h,u.value,{created:u.created,accessed:u.accessed,expires:u.expires})}},touch:function(e,t){var r=this;if(e){var i=this.get(e,{onExpire:function(e,t){return r.put(e,t)}});i&&this.put(e,i,t)}else for(var s=this.keys(),n=0;n<s.length;n++)this.touch(s[n],t)},values:function(){for(var e=this.keys(),t=[],r=0;r<e.length;r++)t.push(this.get(e[r]));return t}};return p.$$initializing=!0,p.setOptions(o,!0),p.$$initializing=!1,p}function a(e,t){return o(e,t)}function c(){this.$get=function(){return a.BinaryHeap}}function l(){this.defaults=a.defaults,this.defaults.storagePrefix="angular-cache.caches.",this.$get=["$q",function(e){return a.utils.Promise=e,a}]}e="default"in e?e["default"]:e;var u={};u["typeof"]="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e};var h=function(e,t,r){for(var i=e[r],s=t(i);r>0;){var n=Math.floor((r+1)/2)-1,o=e[n];if(s>=t(o))break;e[n]=i,e[r]=o,r=n}},f=function(e,t,r){for(var i=e.length,s=e[r],n=t(s);;){var o=2*(r+1),a=o-1,c=null;if(i>a){var l=e[a],u=t(l);n>u&&(c=a)}if(i>o){var h=e[o],f=t(h);f<(null===c?n:t(e[a]))&&(c=o)}if(null===c)break;e[r]=e[c],e[c]=s,r=c}},p=t.prototype;p.push=function(e){this.heap.push(e),h(this.heap,this.weightFunc,this.heap.length-1)},p.peek=function(){return this.heap[0]},p.pop=function(){var e=this.heap[0],t=this.heap.pop();return this.heap.length>0&&(this.heap[0]=t,f(this.heap,this.weightFunc,0)),e},p.remove=function(e){for(var t=this.heap.length,r=0;t>r;r++)if(this.compareFunc(this.heap[r],e)){var i=this.heap[r],s=this.heap.pop();return r!==t-1&&(this.heap[r]=s,h(this.heap,this.weightFunc,r),f(this.heap,this.weightFunc,r)),i}return null},p.removeAll=function(){this.heap=[]},p.size=function(){return this.heap.length};var m=null;try{m=window.Promise}catch($){}var d={isNumber:function(e){return"number"==typeof e},isString:function(e){return"string"==typeof e},isObject:function(e){return null!==e&&"object"===("undefined"==typeof e?"undefined":u["typeof"](e))},isFunction:function(e){return"function"==typeof e},fromJson:function(e){return JSON.parse(e)},equals:function(e,t){return e===t},Promise:m},v={capacity:Number.MAX_VALUE,maxAge:Number.MAX_VALUE,deleteOnExpire:"none",onExpire:null,cacheFlushInterval:null,recycleFreq:1e3,storageMode:"memory",storageImpl:null,disabled:!1,storagePrefix:"cachefactory.caches.",storeOnResolve:!1,storeOnReject:!1},g={};a.createCache=o,a.defaults=v,a.info=function(){var e=r(g),t={size:e.length,caches:{}};for(var i in v)v.hasOwnProperty(i)&&(t[i]=v[i]);for(var s=0;s<e.length;s++){var n=e[s];t.caches[n]=g[n].info()}return t},a.get=function(e){return g[e]},a.keySet=function(){return n(g)},a.keys=function(){return r(g)},a.destroy=function(e){g[e]&&(g[e].destroy(),delete g[e])},a.destroyAll=function(){for(var e in g)g[e].destroy();g={}},a.clearAll=function(){for(var e in g)g[e].removeAll()},a.removeExpiredFromAll=function(){var e={};for(var t in g)e[t]=g[t].removeExpired();return e},a.enableAll=function(){for(var e in g)g[e].$$disabled=!1},a.disableAll=function(){for(var e in g)g[e].$$disabled=!0},a.touchAll=function(){for(var e in g)g[e].touch()},a.utils=d,a.BinaryHeap=t,a.utils.equals=e.equals,a.utils.isObject=e.isObject,a.utils.fromJson=e.fromJson,e.module("angular-cache",[]).provider("BinaryHeap",c).provider("CacheFactory",l);var y="angular-cache";return y});
+//# sourceMappingURL=angular-cache.min.map \ No newline at end of file
diff --git a/ecomp-portal-FE/client/bower_components/angular-cache/dist/angular-cache.min.map b/ecomp-portal-FE/client/bower_components/angular-cache/dist/angular-cache.min.map
new file mode 100644
index 00000000..cba11d79
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/angular-cache/dist/angular-cache.min.map
@@ -0,0 +1 @@
+{"version":3,"sources":["dist/angular-cache.js"],"names":["global","factory","exports","module","angular","require","define","amd","angularCacheModuleName","this","BinaryHeap","weightFunc","compareFunc","x","y","Error","heap","_keys","collection","keys","key","utils","isObject","hasOwnProperty","push","_isPromiseLike","value","then","_stringifyNumber","number","isNumber","toString","_keySet","keySet","createCache","cacheId","options","caches","isString","$$data","$$promises","$$storage","$$expiresHeap","expires","equals","$$lruHeap","accessed","cache","$$id","destroy","clearInterval","$$cacheFlushIntervalId","$$recycleFreqId","removeAll","removeItem","$$prefix","disable","$$disabled","enable","get","_this2","Array","isArray","_ret","values","forEach","undefined","v","babelHelpers","onExpire","isFunction","item","itemJson","getItem","fromJson","now","Date","getTime","remove","$$deleteOnExpire","$$onExpire","call","setItem","JSON","stringify","info","created","isExpired","maxAge","$$maxAge","id","capacity","$$capacity","deleteOnExpire","cacheFlushInterval","$$cacheFlushInterval","recycleFreq","$$recycleFreq","storageMode","$$storageMode","storageImpl","disabled","size","keysJson","kSet","i","length","put","_this3","storeOnResolve","$$storeOnResolve","storeOnReject","$$storeOnReject","getHandler","store","isError","status","data","headers","statusText","Promise","reject","exists","peek","index","indexOf","splice","removeExpired","expired","expiredItem","pop","setCacheFlushInterval","_this","setInterval","setCapacity","removed","setDeleteOnExpire","setRecycleFreq","setMaxAge","Number","MAX_VALUE","setOnExpire","setOptions","cacheOptions","strict","$$storagePrefix","storagePrefix","defaults","setStorageMode","self","load","prevStorage","prevData","_key","prevDataIsObject","items","shouldReInsert","$$initializing","localStorage","e","sessionStorage","touch","_this4","val","k","CacheFactory","BinaryHeapProvider","$get","CacheFactoryProvider","$q","Symbol","iterator","obj","constructor","bubbleUp","n","element","weight","parentN","Math","floor","parent","bubbleDown","node","nodeWeight","child2N","child1N","swap","child1","child1Weight","child2","child2Weight","BHProto","prototype","front","end","_Promise","window","parse","a","b","opt","destroyAll","clearAll","removeExpiredFromAll","enableAll","disableAll","touchAll","provider"],"mappings":"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","file":"dist/angular-cache.min.js"} \ No newline at end of file
diff --git a/ecomp-portal-FE/client/bower_components/angular-cache/rollup.config.js b/ecomp-portal-FE/client/bower_components/angular-cache/rollup.config.js
new file mode 100644
index 00000000..21abf98a
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/angular-cache/rollup.config.js
@@ -0,0 +1,22 @@
+var babel = require('rollup-plugin-babel')
+var pkg = require('./package.json')
+
+module.exports = {
+ moduleName: 'angularCacheModuleName',
+ moduleId: 'angular-cache',
+ banner: '/**\n' +
+ ' * angular-cache\n' +
+ ' * @version ' + pkg.version + ' - Homepage <https://github.com/jmdobry/angular-cache>\n' +
+ ' * @copyright (c) 2013-2016 angular-cache project authors\n' +
+ ' * @license MIT <https://github.com/jmdobry/angular-cache/blob/master/LICENSE>\n' +
+ ' * @overview angular-cache is a very useful replacement for Angular\'s $cacheFactory.\n' +
+ ' */',
+ plugins: [
+ babel({
+ babelrc: false,
+ presets: [
+ 'es2015-rollup'
+ ]
+ })
+ ]
+}
diff --git a/ecomp-portal-FE/client/bower_components/angular-cache/scripts/postbuild.js b/ecomp-portal-FE/client/bower_components/angular-cache/scripts/postbuild.js
new file mode 100644
index 00000000..20c3d9a5
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/angular-cache/scripts/postbuild.js
@@ -0,0 +1,21 @@
+var fs = require('fs')
+var path = __dirname + '/../dist/angular-cache.js'
+var file = fs.readFileSync(path, { encoding: 'utf8' })
+file = file.replace(
+ 'module.exports = factory(require(\'angular\'))',
+ 'module.exports = factory(typeof angular === \'undefined\' ? require(\'angular\') : angular)'
+)
+var index = file.indexOf('babelHelpers;')
+var str = 'var babelHelpers = {};\n' +
+' babelHelpers.typeof = typeof Symbol === "function" && babelHelpers.typeof(Symbol.iterator) === "symbol" ? function (obj) {\n' +
+' return typeof obj === "undefined" ? "undefined" : babelHelpers.typeof(obj);\n' +
+' } : function (obj) {\n' +
+' return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj === "undefined" ? "undefined" : babelHelpers.typeof(obj);\n' +
+' };'
+
+var index2 = file.indexOf(str)
+
+var file2 = file.substring(index2 + str.length)
+file = file.substring(0, index) + file2
+
+fs.writeFileSync(path, file)